MCPcopy Create free account
hub / github.com/PyMesh/PyMesh / _GetClass

Method _GetClass

tests/external/gmock-1.7.0/scripts/generator/cpp/ast.py:1479–1549  ·  view source on GitHub ↗
(self, class_type, visibility, templated_types)

Source from the content-addressed store, hash-verified

1477 return bases, token
1478
1479 def _GetClass(self, class_type, visibility, templated_types):
1480 class_name = None
1481 class_token = self._GetNextToken()
1482 if class_token.token_type != tokenize.NAME:
1483 assert class_token.token_type == tokenize.SYNTAX, class_token
1484 token = class_token
1485 else:
1486 # Skip any macro (e.g. storage class specifiers) after the
1487 # 'class' keyword.
1488 next_token = self._GetNextToken()
1489 if next_token.token_type == tokenize.NAME:
1490 self._AddBackToken(next_token)
1491 else:
1492 self._AddBackTokens([class_token, next_token])
1493 name_tokens, token = self.GetName()
1494 class_name = ''.join([t.name for t in name_tokens])
1495 bases = None
1496 if token.token_type == tokenize.SYNTAX:
1497 if token.name == ';':
1498 # Forward declaration.
1499 return class_type(class_token.start, class_token.end,
1500 class_name, None, templated_types, None,
1501 self.namespace_stack)
1502 if token.name in '*&':
1503 # Inline forward declaration. Could be method or data.
1504 name_token = self._GetNextToken()
1505 next_token = self._GetNextToken()
1506 if next_token.name == ';':
1507 # Handle data
1508 modifiers = ['class']
1509 return self._CreateVariable(class_token, name_token.name,
1510 class_name,
1511 modifiers, token.name, None)
1512 else:
1513 # Assume this is a method.
1514 tokens = (class_token, token, name_token, next_token)
1515 self._AddBackTokens(tokens)
1516 return self.GetMethod(FUNCTION_NONE, None)
1517 if token.name == ':':
1518 bases, token = self._GetBases()
1519
1520 body = None
1521 if token.token_type == tokenize.SYNTAX and token.name == '{':
1522 assert token.token_type == tokenize.SYNTAX, token
1523 assert token.name == '{', token
1524
1525 ast = AstBuilder(self.GetScope(), self.filename, class_name,
1526 visibility, self.namespace_stack)
1527 body = list(ast.Generate())
1528
1529 if not self._handling_typedef:
1530 token = self._GetNextToken()
1531 if token.token_type != tokenize.NAME:
1532 assert token.token_type == tokenize.SYNTAX, token
1533 assert token.name == ';', token
1534 else:
1535 new_class = class_type(class_token.start, class_token.end,
1536 class_name, bases, None,

Callers 3

handle_structMethod · 0.95
handle_templateMethod · 0.95
handle_classMethod · 0.95

Calls 11

_GetNextTokenMethod · 0.95
_AddBackTokenMethod · 0.95
_AddBackTokensMethod · 0.95
GetNameMethod · 0.95
_CreateVariableMethod · 0.95
GetMethodMethod · 0.95
_GetBasesMethod · 0.95
GetScopeMethod · 0.95
GenerateMethod · 0.95
HandleErrorMethod · 0.95
AstBuilderClass · 0.85

Tested by

no test coverage detected