def InTemplateArgumentList()

in cpplint.py [0:0]


    def InTemplateArgumentList(self, clean_lines, linenum, pos):
        """Check if current position is inside template argument list.

    Args:
      clean_lines: A CleansedLines instance containing the file.
      linenum: The number of the line to check.
      pos: position just after the suspected template argument.
    Returns:
      True if (linenum, pos) is inside template arguments.
    """
        while linenum < clean_lines.NumLines():
            # Find the earliest character that might indicate a template argument
            line = clean_lines.elided[linenum]
            match = Match(r'^[^{};=\[\]\.<>]*(.)', line[pos:])
            if not match:
                linenum += 1
                pos = 0
                continue
            token = match.group(1)
            pos += len(match.group(0))

            # These things do not look like template argument list:
            #   class Suspect {
            #   class Suspect x; }
            if token in ('{', '}', ';'): return False

            # These things look like template argument list:
            #   template <class Suspect>
            #   template <class Suspect = default_value>
            #   template <class Suspect[]>
            #   template <class Suspect...>
            if token in ('>', '=', '[', ']', '.'): return True

            # Check if token is an unmatched '<'.
            # If not, move on to the next character.
            if token != '<':
                pos += 1
                if pos >= len(line):
                    linenum += 1
                    pos = 0
                continue

            # We can't be sure if we just find a single '<', and need to
            # find the matching '>'.
            (_, end_line, end_pos) = CloseExpression(clean_lines, linenum, pos - 1)
            if end_pos < 0:
                # Not sure if template argument list or syntax error in file
                return False
            linenum = end_line
            pos = end_pos
        return False