diff --git a/src/shared/cplusplus/AST.h b/src/shared/cplusplus/AST.h index 6dced425a735871183e06aa5a701605f9c8eaffd..1ea7defec0f4ff32a5cd5ed7a1eab6663f64870e 100644 --- a/src/shared/cplusplus/AST.h +++ b/src/shared/cplusplus/AST.h @@ -96,7 +96,6 @@ public: virtual AttributeAST *asAttribute() { return 0; } virtual AttributeSpecifierAST *asAttributeSpecifier() { return 0; } virtual BaseSpecifierAST *asBaseSpecifier() { return 0; } - virtual QtMethodAST *asQtMethod() { return 0; } virtual BinaryExpressionAST *asBinaryExpression() { return 0; } virtual BoolLiteralAST *asBoolLiteral() { return 0; } virtual BreakStatementAST *asBreakStatement() { return 0; } @@ -115,6 +114,7 @@ public: virtual CppCastExpressionAST *asCppCastExpression() { return 0; } virtual CtorInitializerAST *asCtorInitializer() { return 0; } virtual DeclarationAST *asDeclaration() { return 0; } + virtual DeclarationListAST *asDeclarationList() { return 0; } virtual DeclarationStatementAST *asDeclarationStatement() { return 0; } virtual DeclaratorAST *asDeclarator() { return 0; } virtual DeclaratorIdAST *asDeclaratorId() { return 0; } @@ -132,11 +132,12 @@ public: virtual ExpressionListAST *asExpressionList() { return 0; } virtual ExpressionOrDeclarationStatementAST *asExpressionOrDeclarationStatement() { return 0; } virtual ExpressionStatementAST *asExpressionStatement() { return 0; } - virtual ForeachStatementAST *asForeachStatement() { return 0; } virtual ForStatementAST *asForStatement() { return 0; } + virtual ForeachStatementAST *asForeachStatement() { return 0; } virtual FunctionDeclaratorAST *asFunctionDeclarator() { return 0; } virtual FunctionDefinitionAST *asFunctionDefinition() { return 0; } virtual GotoStatementAST *asGotoStatement() { return 0; } + virtual IdentifierListAST *asIdentifierList() { return 0; } virtual IfStatementAST *asIfStatement() { return 0; } virtual LabeledStatementAST *asLabeledStatement() { return 0; } virtual LinkageBodyAST *asLinkageBody() { return 0; } @@ -150,12 +151,44 @@ public: virtual NestedDeclaratorAST *asNestedDeclarator() { return 0; } virtual NestedExpressionAST *asNestedExpression() { return 0; } virtual NestedNameSpecifierAST *asNestedNameSpecifier() { return 0; } - virtual NewPlacementAST *asNewPlacement() { return 0; } virtual NewArrayDeclaratorAST *asNewArrayDeclarator() { return 0; } virtual NewExpressionAST *asNewExpression() { return 0; } virtual NewInitializerAST *asNewInitializer() { return 0; } + virtual NewPlacementAST *asNewPlacement() { return 0; } virtual NewTypeIdAST *asNewTypeId() { return 0; } virtual NumericLiteralAST *asNumericLiteral() { return 0; } + virtual ObjCClassDeclarationAST *asObjCClassDeclaration() { return 0; } + virtual ObjCClassForwardDeclarationAST *asObjCClassForwardDeclaration() { return 0; } + virtual ObjCDynamicPropertiesDeclarationAST *asObjCDynamicPropertiesDeclaration() { return 0; } + virtual ObjCEncodeExpressionAST *asObjCEncodeExpression() { return 0; } + virtual ObjCFastEnumerationAST *asObjCFastEnumeration() { return 0; } + virtual ObjCInstanceVariablesDeclarationAST *asObjCInstanceVariablesDeclaration() { return 0; } + virtual ObjCMessageArgumentAST *asObjCMessageArgument() { return 0; } + virtual ObjCMessageArgumentDeclarationAST *asObjCMessageArgumentDeclaration() { return 0; } + virtual ObjCMessageArgumentDeclarationListAST *asObjCMessageArgumentDeclarationList() { return 0; } + virtual ObjCMessageArgumentListAST *asObjCMessageArgumentList() { return 0; } + virtual ObjCMessageExpressionAST *asObjCMessageExpression() { return 0; } + virtual ObjCMethodDeclarationAST *asObjCMethodDeclaration() { return 0; } + virtual ObjCMethodPrototypeAST *asObjCMethodPrototype() { return 0; } + virtual ObjCPropertyAttributeAST *asObjCPropertyAttribute() { return 0; } + virtual ObjCPropertyAttributeListAST *asObjCPropertyAttributeList() { return 0; } + virtual ObjCPropertyDeclarationAST *asObjCPropertyDeclaration() { return 0; } + virtual ObjCProtocolDeclarationAST *asObjCProtocolDeclaration() { return 0; } + virtual ObjCProtocolExpressionAST *asObjCProtocolExpression() { return 0; } + virtual ObjCProtocolForwardDeclarationAST *asObjCProtocolForwardDeclaration() { return 0; } + virtual ObjCProtocolRefsAST *asObjCProtocolRefs() { return 0; } + virtual ObjCSelectorAST *asObjCSelector() { return 0; } + virtual ObjCSelectorArgumentAST *asObjCSelectorArgument() { return 0; } + virtual ObjCSelectorArgumentListAST *asObjCSelectorArgumentList() { return 0; } + virtual ObjCSelectorExpressionAST *asObjCSelectorExpression() { return 0; } + virtual ObjCSelectorWithArgumentsAST *asObjCSelectorWithArguments() { return 0; } + virtual ObjCSelectorWithoutArgumentsAST *asObjCSelectorWithoutArguments() { return 0; } + virtual ObjCSynchronizedStatementAST *asObjCSynchronizedStatement() { return 0; } + virtual ObjCSynthesizedPropertiesDeclarationAST *asObjCSynthesizedPropertiesDeclaration() { return 0; } + virtual ObjCSynthesizedPropertyAST *asObjCSynthesizedProperty() { return 0; } + virtual ObjCSynthesizedPropertyListAST *asObjCSynthesizedPropertyList() { return 0; } + virtual ObjCTypeNameAST *asObjCTypeName() { return 0; } + virtual ObjCVisibilityDeclarationAST *asObjCVisibilityDeclaration() { return 0; } virtual OperatorAST *asOperator() { return 0; } virtual OperatorFunctionIdAST *asOperatorFunctionId() { return 0; } virtual ParameterDeclarationAST *asParameterDeclaration() { return 0; } @@ -167,6 +200,7 @@ public: virtual PostfixDeclaratorAST *asPostfixDeclarator() { return 0; } virtual PostfixExpressionAST *asPostfixExpression() { return 0; } virtual PtrOperatorAST *asPtrOperator() { return 0; } + virtual QtMethodAST *asQtMethod() { return 0; } virtual QualifiedNameAST *asQualifiedName() { return 0; } virtual ReferenceAST *asReference() { return 0; } virtual ReturnStatementAST *asReturnStatement() { return 0; } @@ -176,6 +210,7 @@ public: virtual SizeofExpressionAST *asSizeofExpression() { return 0; } virtual SpecifierAST *asSpecifier() { return 0; } virtual StatementAST *asStatement() { return 0; } + virtual StatementListAST *asStatementList() { return 0; } virtual StringLiteralAST *asStringLiteral() { return 0; } virtual SwitchStatementAST *asSwitchStatement() { return 0; } virtual TemplateArgumentListAST *asTemplateArgumentList() { return 0; } @@ -196,39 +231,6 @@ public: virtual UsingAST *asUsing() { return 0; } virtual UsingDirectiveAST *asUsingDirective() { return 0; } virtual WhileStatementAST *asWhileStatement() { return 0; } - virtual IdentifierListAST *asIdentifierList() { return 0; } - - virtual ObjCClassForwardDeclarationAST *asObjCClassForwarDeclaration() { return 0; } - virtual ObjCClassDeclarationAST *asObjCClassDeclaration() { return 0; } - virtual ObjCProtocolForwardDeclarationAST *asObjCProtocolForwardDeclaration() { return 0; } - virtual ObjCProtocolDeclarationAST *asObjCProtocolDeclaration() { return 0; } - virtual ObjCProtocolRefsAST *asObjCProtocolRefs() { return 0; } - virtual ObjCMessageArgumentAST *asObjCMessageArgument() { return 0; } - virtual ObjCMessageArgumentListAST *asObjCMessageArgumentList() { return 0; } - virtual ObjCMessageExpressionAST *asObjCMessageExpression() { return 0; } - virtual ObjCProtocolExpressionAST *asObjCProtocolExpression() { return 0; } - virtual ObjCTypeNameAST *asObjCTypeName() { return 0; } - virtual ObjCEncodeExpressionAST *asObjCEncodeExpression() { return 0; } - virtual ObjCSelectorAST *asObjCSelector() { return 0; } - virtual ObjCSelectorWithoutArgumentsAST *asObjCSelectorWithoutArguments() { return 0; } - virtual ObjCSelectorArgumentAST *asObjCSelectorArgument() { return 0; } - virtual ObjCSelectorArgumentListAST *asObjCSelectorArgumentList() { return 0; } - virtual ObjCSelectorWithArgumentsAST *asObjCSelectorWithArguments() { return 0; } - virtual ObjCSelectorExpressionAST *asObjCSelectorExpression() { return 0; } - virtual ObjCInstanceVariablesDeclarationAST *asObjCInstanceVariablesDeclaration() { return 0; } - virtual ObjCVisibilityDeclarationAST *asObjCVisibilityDeclaration() { return 0; } - virtual ObjCPropertyAttributeAST *asObjCPropertyAttribute() { return 0; } - virtual ObjCPropertyAttributeListAST *asObjCPropertyAttributeList() { return 0; } - virtual ObjCPropertyDeclarationAST *asObjCPropertyDeclaration() { return 0; } - virtual ObjCMessageArgumentDeclarationAST *asObjCMessageArgumentDeclaration() { return 0; } - virtual ObjCMessageArgumentDeclarationListAST *asObjCMessageArgumentDeclarationList() { return 0; } - virtual ObjCMethodPrototypeAST *asObjCMethodPrototype() { return 0; } - virtual ObjCMethodDeclarationAST *asObjCMethodDeclaration() { return 0; } - virtual ObjCSynthesizedPropertyAST *asObjCSynthesizedProperty() { return 0; } - virtual ObjCSynthesizedPropertyListAST *asObjCSynthesizedPropertyList() { return 0; } - virtual ObjCSynthesizedPropertiesDeclarationAST *asObjCSynthesizedPropertiesDeclaration() { return 0; } - virtual ObjCDynamicPropertiesDeclarationAST *asObjCDynamicPropertiesDeclaration() { return 0; } - virtual ObjCFastEnumerationAST *asObjCFastEnumeration() { return 0; } virtual AST *clone(MemoryPool *pool) const = 0; @@ -242,8 +244,7 @@ public: SpecifierAST *next; public: - virtual SpecifierAST *asSpecifier() - { return this; } + virtual SpecifierAST *asSpecifier() { return this; } virtual SpecifierAST *clone(MemoryPool *pool) const = 0; }; @@ -254,8 +255,7 @@ public: unsigned specifier_token; public: - virtual SimpleSpecifierAST *asSimpleSpecifier() - { return this; } + virtual SimpleSpecifierAST *asSimpleSpecifier() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -277,8 +277,7 @@ public: unsigned second_rparen_token; public: - virtual AttributeSpecifierAST *asAttributeSpecifier() - { return this; } + virtual AttributeSpecifierAST *asAttributeSpecifier() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -301,8 +300,7 @@ public: unsigned comma_token; public: - virtual AttributeAST *asAttribute() - { return this; } + virtual AttributeAST *asAttribute() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -322,8 +320,7 @@ public: unsigned rparen_token; public: - virtual TypeofSpecifierAST *asTypeofSpecifier() - { return this; } + virtual TypeofSpecifierAST *asTypeofSpecifier() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -337,8 +334,7 @@ protected: class CPLUSPLUS_EXPORT StatementAST: public AST { public: - virtual StatementAST *asStatement() - { return this; } + virtual StatementAST *asStatement() { return this; } virtual StatementAST *clone(MemoryPool *pool) const = 0; }; @@ -346,8 +342,7 @@ public: class CPLUSPLUS_EXPORT ExpressionAST: public AST { public: - virtual ExpressionAST *asExpression() - { return this; } + virtual ExpressionAST *asExpression() { return this; } virtual ExpressionAST *clone(MemoryPool *pool) const = 0; }; @@ -355,8 +350,7 @@ public: class CPLUSPLUS_EXPORT DeclarationAST: public AST { public: - virtual DeclarationAST *asDeclaration() - { return this; } + virtual DeclarationAST *asDeclaration() { return this; } virtual DeclarationAST *clone(MemoryPool *pool) const = 0; }; @@ -368,8 +362,7 @@ public: DeclarationListAST *next; public: - virtual DeclarationListAST *asDeclarationList() - { return this; } + virtual DeclarationListAST *asDeclarationList() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -383,8 +376,7 @@ protected: class CPLUSPLUS_EXPORT CoreDeclaratorAST: public AST { public: - virtual CoreDeclaratorAST *asCoreDeclarator() - { return this; } + virtual CoreDeclaratorAST *asCoreDeclarator() { return this; } virtual CoreDeclaratorAST *clone(MemoryPool *pool) const = 0; }; @@ -395,8 +387,7 @@ public: PostfixDeclaratorAST *next; public: - virtual PostfixDeclaratorAST *asPostfixDeclarator() - { return this; } + virtual PostfixDeclaratorAST *asPostfixDeclarator() { return this; } virtual PostfixDeclaratorAST *clone(MemoryPool *pool) const = 0; }; @@ -413,8 +404,7 @@ public: ExpressionAST *initializer; public: - virtual DeclaratorAST *asDeclarator() - { return this; } + virtual DeclaratorAST *asDeclarator() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -433,8 +423,7 @@ public: ExpressionListAST *next; public: - virtual ExpressionListAST *asExpressionList() - { return this; } + virtual ExpressionListAST *asExpressionList() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -457,8 +446,7 @@ public: List<Declaration *> *symbols; public: - virtual SimpleDeclarationAST *asSimpleDeclaration() - { return this; } + virtual SimpleDeclarationAST *asSimpleDeclaration() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -475,8 +463,7 @@ public: unsigned semicolon_token; public: - virtual EmptyDeclarationAST *asEmptyDeclaration() - { return this; } + virtual EmptyDeclarationAST *asEmptyDeclaration() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -495,8 +482,7 @@ public: unsigned colon_token; public: - virtual AccessDeclarationAST *asAccessDeclaration() - { return this; } + virtual AccessDeclarationAST *asAccessDeclaration() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -519,8 +505,7 @@ public: unsigned semicolon_token; public: - virtual AsmDefinitionAST *asAsmDefinition() - { return this; } + virtual AsmDefinitionAST *asAsmDefinition() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -544,8 +529,7 @@ public: // annotations BaseClass *symbol; public: - virtual BaseSpecifierAST *asBaseSpecifier() - { return this; } + virtual BaseSpecifierAST *asBaseSpecifier() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -565,8 +549,7 @@ public: ExpressionAST *initializer; public: - virtual CompoundLiteralAST *asCompoundLiteral() - { return this; } + virtual CompoundLiteralAST *asCompoundLiteral() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -586,8 +569,7 @@ public: unsigned rparen_token; public: - virtual QtMethodAST *asQtMethod() - { return this; } + virtual QtMethodAST *asQtMethod() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -606,8 +588,7 @@ public: ExpressionAST *right_expression; public: - virtual BinaryExpressionAST *asBinaryExpression() - { return this; } + virtual BinaryExpressionAST *asBinaryExpression() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -627,8 +608,7 @@ public: ExpressionAST *expression; public: - virtual CastExpressionAST *asCastExpression() - { return this; } + virtual CastExpressionAST *asCastExpression() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -655,8 +635,7 @@ public: // annotations Class *symbol; public: - virtual ClassSpecifierAST *asClassSpecifier() - { return this; } + virtual ClassSpecifierAST *asClassSpecifier() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -676,8 +655,7 @@ public: StatementAST *statement; public: - virtual CaseStatementAST *asCaseStatement() - { return this; } + virtual CaseStatementAST *asCaseStatement() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -695,8 +673,7 @@ public: StatementListAST *next; public: - virtual StatementListAST *asStatementList() - { return this; } + virtual StatementListAST *asStatementList() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -718,8 +695,7 @@ public: // annotations Block *symbol; public: - virtual CompoundStatementAST *asCompoundStatement() - { return this; } + virtual CompoundStatementAST *asCompoundStatement() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -737,8 +713,7 @@ public: DeclaratorAST *declarator; public: - virtual ConditionAST *asCondition() - { return this; } + virtual ConditionAST *asCondition() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -759,8 +734,7 @@ public: ExpressionAST *right_expression; public: - virtual ConditionalExpressionAST *asConditionalExpression() - { return this; } + virtual ConditionalExpressionAST *asConditionalExpression() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -783,8 +757,7 @@ public: unsigned rparen_token; public: - virtual CppCastExpressionAST *asCppCastExpression() - { return this; } + virtual CppCastExpressionAST *asCppCastExpression() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -802,8 +775,7 @@ public: MemInitializerAST *member_initializers; public: - virtual CtorInitializerAST *asCtorInitializer() - { return this; } + virtual CtorInitializerAST *asCtorInitializer() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -820,8 +792,7 @@ public: DeclarationAST *declaration; public: - virtual DeclarationStatementAST *asDeclarationStatement() - { return this; } + virtual DeclarationStatementAST *asDeclarationStatement() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -838,8 +809,7 @@ public: NameAST *name; public: - virtual DeclaratorIdAST *asDeclaratorId() - { return this; } + virtual DeclaratorIdAST *asDeclaratorId() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -858,8 +828,7 @@ public: unsigned rparen_token; public: - virtual NestedDeclaratorAST *asNestedDeclarator() - { return this; } + virtual NestedDeclaratorAST *asNestedDeclarator() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -884,8 +853,7 @@ public: // annotations Function *symbol; public: - virtual FunctionDeclaratorAST *asFunctionDeclarator() - { return this; } + virtual FunctionDeclaratorAST *asFunctionDeclarator() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -904,8 +872,7 @@ public: unsigned rbracket_token; public: - virtual ArrayDeclaratorAST *asArrayDeclarator() - { return this; } + virtual ArrayDeclaratorAST *asArrayDeclarator() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -924,8 +891,7 @@ public: DeclaratorListAST *next; public: - virtual DeclaratorListAST *asDeclaratorList() - { return this; } + virtual DeclaratorListAST *asDeclaratorList() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -946,8 +912,7 @@ public: ExpressionAST *expression; public: - virtual DeleteExpressionAST *asDeleteExpression() - { return this; } + virtual DeleteExpressionAST *asDeleteExpression() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -970,8 +935,7 @@ public: unsigned semicolon_token; public: - virtual DoStatementAST *asDoStatement() - { return this; } + virtual DoStatementAST *asDoStatement() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -988,8 +952,7 @@ public: NameAST *name; public: - virtual NamedTypeSpecifierAST *asNamedTypeSpecifier() - { return this; } + virtual NamedTypeSpecifierAST *asNamedTypeSpecifier() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -1007,8 +970,7 @@ public: NameAST *name; public: - virtual ElaboratedTypeSpecifierAST *asElaboratedTypeSpecifier() - { return this; } + virtual ElaboratedTypeSpecifierAST *asElaboratedTypeSpecifier() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -1029,8 +991,7 @@ public: unsigned rbrace_token; public: - virtual EnumSpecifierAST *asEnumSpecifier() - { return this; } + virtual EnumSpecifierAST *asEnumSpecifier() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -1051,8 +1012,7 @@ public: EnumeratorAST *next; public: - virtual EnumeratorAST *asEnumerator() - { return this; } + virtual EnumeratorAST *asEnumerator() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -1071,8 +1031,7 @@ public: unsigned dot_dot_dot_token; public: - virtual ExceptionDeclarationAST *asExceptionDeclaration() - { return this; } + virtual ExceptionDeclarationAST *asExceptionDeclaration() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -1093,8 +1052,7 @@ public: unsigned rparen_token; public: - virtual ExceptionSpecificationAST *asExceptionSpecification() - { return this; } + virtual ExceptionSpecificationAST *asExceptionSpecification() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -1112,8 +1070,7 @@ public: StatementAST *declaration; public: - virtual ExpressionOrDeclarationStatementAST *asExpressionOrDeclarationStatement() - { return this; } + virtual ExpressionOrDeclarationStatementAST *asExpressionOrDeclarationStatement() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -1131,8 +1088,7 @@ public: unsigned semicolon_token; public: - virtual ExpressionStatementAST *asExpressionStatement() - { return this; } + virtual ExpressionStatementAST *asExpressionStatement() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -1156,8 +1112,7 @@ public: // annotations Function *symbol; public: - virtual FunctionDefinitionAST *asFunctionDefinition() - { return this; } + virtual FunctionDefinitionAST *asFunctionDefinition() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -1187,8 +1142,7 @@ public: // annotations Block *symbol; public: - virtual ForeachStatementAST *asForeachStatement() - { return this; } + virtual ForeachStatementAST *asForeachStatement() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -1215,8 +1169,7 @@ public: // annotations Block *symbol; public: - virtual ForStatementAST *asForStatement() - { return this; } + virtual ForStatementAST *asForStatement() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -1242,8 +1195,7 @@ public: // annotations Block *symbol; public: - virtual IfStatementAST *asIfStatement() - { return this; } + virtual IfStatementAST *asIfStatement() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -1262,8 +1214,7 @@ public: unsigned rbrace_token; public: - virtual ArrayInitializerAST *asArrayInitializer() - { return this; } + virtual ArrayInitializerAST *asArrayInitializer() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -1282,8 +1233,7 @@ public: StatementAST *statement; public: - virtual LabeledStatementAST *asLabeledStatement() - { return this; } + virtual LabeledStatementAST *asLabeledStatement() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -1302,6 +1252,7 @@ public: unsigned rbrace_token; public: + virtual LinkageBodyAST *asLinkageBody() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -1319,8 +1270,7 @@ public: DeclarationAST *declaration; public: - virtual LinkageSpecificationAST *asLinkageSpecification() - { return this; } + virtual LinkageSpecificationAST *asLinkageSpecification() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -1342,8 +1292,7 @@ public: MemInitializerAST *next; public: - virtual MemInitializerAST *asMemInitializer() - { return this; } + virtual MemInitializerAST *asMemInitializer() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -1359,9 +1308,9 @@ class CPLUSPLUS_EXPORT NameAST: public ExpressionAST public: // annotations Name *name; - virtual NameAST *asName() { return this; } public: + virtual NameAST *asName() { return this; } virtual NameAST *clone(MemoryPool *pool) const = 0; }; @@ -1373,8 +1322,7 @@ public: NestedNameSpecifierAST *next; public: - virtual NestedNameSpecifierAST *asNestedNameSpecifier() - { return this; } + virtual NestedNameSpecifierAST *asNestedNameSpecifier() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -1393,8 +1341,7 @@ public: NameAST *unqualified_name; public: - virtual QualifiedNameAST *asQualifiedName() - { return this; } + virtual QualifiedNameAST *asQualifiedName() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -1412,8 +1359,7 @@ public: OperatorAST *op; public: - virtual OperatorFunctionIdAST *asOperatorFunctionId() - { return this; } + virtual OperatorFunctionIdAST *asOperatorFunctionId() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -1432,8 +1378,7 @@ public: PtrOperatorAST *ptr_operators; public: - virtual ConversionFunctionIdAST *asConversionFunctionId() - { return this; } + virtual ConversionFunctionIdAST *asConversionFunctionId() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -1450,8 +1395,7 @@ public: unsigned identifier_token; public: - virtual SimpleNameAST *asSimpleName() - { return this; } + virtual SimpleNameAST *asSimpleName() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -1469,8 +1413,7 @@ public: unsigned identifier_token; public: - virtual DestructorNameAST *asDestructorName() - { return this; } + virtual DestructorNameAST *asDestructorName() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -1490,8 +1433,7 @@ public: unsigned greater_token; public: - virtual TemplateIdAST *asTemplateId() - { return this; } + virtual TemplateIdAST *asTemplateId() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -1514,8 +1456,7 @@ public: // annotations Namespace *symbol; public: - virtual NamespaceAST *asNamespace() - { return this; } + virtual NamespaceAST *asNamespace() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -1536,8 +1477,7 @@ public: unsigned semicolon_token; public: - virtual NamespaceAliasDefinitionAST *asNamespaceAliasDefinition() - { return this; } + virtual NamespaceAliasDefinitionAST *asNamespaceAliasDefinition() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -1556,8 +1496,7 @@ public: unsigned rparen_token; public: - virtual NewPlacementAST *asNewPlacement() - { return this; } + virtual NewPlacementAST *asNewPlacement() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -1577,8 +1516,7 @@ public: NewArrayDeclaratorAST *next; public: - virtual NewArrayDeclaratorAST *asNewArrayDeclarator() - { return this; } + virtual NewArrayDeclaratorAST *asNewArrayDeclarator() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -1605,8 +1543,7 @@ public: NewInitializerAST *new_initializer; public: - virtual NewExpressionAST *asNewExpression() - { return this; } + virtual NewExpressionAST *asNewExpression() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -1625,8 +1562,7 @@ public: unsigned rparen_token; public: - virtual NewInitializerAST *asNewInitializer() - { return this; } + virtual NewInitializerAST *asNewInitializer() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -1645,8 +1581,7 @@ public: NewArrayDeclaratorAST *new_array_declarators; public: - virtual NewTypeIdAST *asNewTypeId() - { return this; } + virtual NewTypeIdAST *asNewTypeId() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -1665,8 +1600,7 @@ public: unsigned close_token; public: - virtual OperatorAST *asOperator() - { return this; } + virtual OperatorAST *asOperator() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -1689,8 +1623,7 @@ public: // annotations Argument *symbol; public: - virtual ParameterDeclarationAST *asParameterDeclaration() - { return this; } + virtual ParameterDeclarationAST *asParameterDeclaration() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -1708,8 +1641,7 @@ public: unsigned dot_dot_dot_token; public: - virtual ParameterDeclarationClauseAST *asParameterDeclarationClause() - { return this; } + virtual ParameterDeclarationClauseAST *asParameterDeclarationClause() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -1726,8 +1658,7 @@ public: PostfixAST *next; public: - virtual PostfixAST *asPostfix() - { return this; } + virtual PostfixAST *asPostfix() { return this; } virtual PostfixAST *clone(MemoryPool *pool) const = 0; }; @@ -1740,8 +1671,7 @@ public: unsigned rparen_token; public: - virtual CallAST *asCall() - { return this; } + virtual CallAST *asCall() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -1760,8 +1690,7 @@ public: unsigned rbracket_token; public: - virtual ArrayAccessAST *asArrayAccess() - { return this; } + virtual ArrayAccessAST *asArrayAccess() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -1778,8 +1707,7 @@ public: unsigned incr_decr_token; public: - virtual PostIncrDecrAST *asPostIncrDecr() - { return this; } + virtual PostIncrDecrAST *asPostIncrDecr() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -1798,8 +1726,7 @@ public: NameAST *member_name; public: - virtual MemberAccessAST *asMemberAccess() - { return this; } + virtual MemberAccessAST *asMemberAccess() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -1819,8 +1746,7 @@ public: unsigned rparen_token; public: - virtual TypeidExpressionAST *asTypeidExpression() - { return this; } + virtual TypeidExpressionAST *asTypeidExpression() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -1841,8 +1767,7 @@ public: unsigned rparen_token; public: - virtual TypenameCallExpressionAST *asTypenameCallExpression() - { return this; } + virtual TypenameCallExpressionAST *asTypenameCallExpression() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -1862,8 +1787,7 @@ public: unsigned rparen_token; public: - virtual TypeConstructorCallAST *asTypeConstructorCall() - { return this; } + virtual TypeConstructorCallAST *asTypeConstructorCall() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -1881,8 +1805,7 @@ public: PostfixAST *postfix_expressions; public: - virtual PostfixExpressionAST *asPostfixExpression() - { return this; } + virtual PostfixExpressionAST *asPostfixExpression() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -1899,8 +1822,7 @@ public: PtrOperatorAST *next; public: - virtual PtrOperatorAST *asPtrOperator() - { return this; } + virtual PtrOperatorAST *asPtrOperator() { return this; } virtual PtrOperatorAST *clone(MemoryPool *pool) const = 0; }; @@ -1914,8 +1836,7 @@ public: SpecifierAST *cv_qualifier_seq; public: - virtual PointerToMemberAST *asPointerToMember() - { return this; } + virtual PointerToMemberAST *asPointerToMember() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -1933,8 +1854,7 @@ public: SpecifierAST *cv_qualifier_seq; public: - virtual PointerAST *asPointer() - { return this; } + virtual PointerAST *asPointer() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -1951,8 +1871,7 @@ public: unsigned amp_token; public: - virtual ReferenceAST *asReference() - { return this; } + virtual ReferenceAST *asReference() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -1970,8 +1889,7 @@ public: unsigned semicolon_token; public: - virtual BreakStatementAST *asBreakStatement() - { return this; } + virtual BreakStatementAST *asBreakStatement() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -1989,8 +1907,7 @@ public: unsigned semicolon_token; public: - virtual ContinueStatementAST *asContinueStatement() - { return this; } + virtual ContinueStatementAST *asContinueStatement() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -2009,8 +1926,7 @@ public: unsigned semicolon_token; public: - virtual GotoStatementAST *asGotoStatement() - { return this; } + virtual GotoStatementAST *asGotoStatement() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -2029,8 +1945,7 @@ public: unsigned semicolon_token; public: - virtual ReturnStatementAST *asReturnStatement() - { return this; } + virtual ReturnStatementAST *asReturnStatement() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -2050,8 +1965,7 @@ public: unsigned rparen_token; public: - virtual SizeofExpressionAST *asSizeofExpression() - { return this; } + virtual SizeofExpressionAST *asSizeofExpression() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -2068,8 +1982,7 @@ public: unsigned literal_token; public: - virtual NumericLiteralAST *asNumericLiteral() - { return this; } + virtual NumericLiteralAST *asNumericLiteral() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -2086,8 +1999,7 @@ public: unsigned literal_token; public: - virtual BoolLiteralAST *asBoolLiteral() - { return this; } + virtual BoolLiteralAST *asBoolLiteral() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -2104,8 +2016,7 @@ public: unsigned this_token; public: - virtual ThisExpressionAST *asThisExpression() - { return this; } + virtual ThisExpressionAST *asThisExpression() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -2124,8 +2035,7 @@ public: unsigned rparen_token; public: - virtual NestedExpressionAST *asNestedExpression() - { return this; } + virtual NestedExpressionAST *asNestedExpression() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -2143,8 +2053,7 @@ public: StringLiteralAST *next; public: - virtual StringLiteralAST *asStringLiteral() - { return this; } + virtual StringLiteralAST *asStringLiteral() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -2168,8 +2077,7 @@ public: // annotations Block *symbol; public: - virtual SwitchStatementAST *asSwitchStatement() - { return this; } + virtual SwitchStatementAST *asSwitchStatement() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -2188,8 +2096,7 @@ public: TemplateArgumentListAST *next; public: - virtual TemplateArgumentListAST *asTemplateArgumentList() - { return this; } + virtual TemplateArgumentListAST *asTemplateArgumentList() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -2211,8 +2118,7 @@ public: DeclarationAST *declaration; public: - virtual TemplateDeclarationAST *asTemplateDeclaration() - { return this; } + virtual TemplateDeclarationAST *asTemplateDeclaration() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -2230,8 +2136,7 @@ public: ExpressionAST *expression; public: - virtual ThrowExpressionAST *asThrowExpression() - { return this; } + virtual ThrowExpressionAST *asThrowExpression() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -2248,8 +2153,7 @@ public: DeclarationListAST *declarations; public: - virtual TranslationUnitAST *asTranslationUnit() - { return this; } + virtual TranslationUnitAST *asTranslationUnit() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -2268,8 +2172,7 @@ public: CatchClauseAST *catch_clause_seq; public: - virtual TryBlockStatementAST *asTryBlockStatement() - { return this; } + virtual TryBlockStatementAST *asTryBlockStatement() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -2294,8 +2197,7 @@ public: // annotations Block *symbol; public: - virtual CatchClauseAST *asCatchClause() - { return this; } + virtual CatchClauseAST *asCatchClause() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -2313,8 +2215,7 @@ public: DeclaratorAST *declarator; public: - virtual TypeIdAST *asTypeId() - { return this; } + virtual TypeIdAST *asTypeId() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -2337,8 +2238,7 @@ public: // annotations Argument *symbol; public: - virtual TypenameTypeParameterAST *asTypenameTypeParameter() - { return this; } + virtual TypenameTypeParameterAST *asTypenameTypeParameter() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -2365,8 +2265,7 @@ public: Argument *symbol; public: - virtual TemplateTypeParameterAST *asTemplateTypeParameter() - { return this; } + virtual TemplateTypeParameterAST *asTemplateTypeParameter() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -2384,8 +2283,7 @@ public: ExpressionAST *expression; public: - virtual UnaryExpressionAST *asUnaryExpression() - { return this; } + virtual UnaryExpressionAST *asUnaryExpression() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -2408,8 +2306,7 @@ public: // annotations UsingDeclaration *symbol; public: - virtual UsingAST *asUsing() - { return this; } + virtual UsingAST *asUsing() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -2432,8 +2329,7 @@ public: UsingNamespaceDirective *symbol; public: - virtual UsingDirectiveAST *asUsingDirective() - { return this; } + virtual UsingDirectiveAST *asUsingDirective() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -2457,8 +2353,7 @@ public: // annotations Block *symbol; public: - virtual WhileStatementAST *asWhileStatement() - { return this; } + virtual WhileStatementAST *asWhileStatement() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -2479,8 +2374,7 @@ public: IdentifierListAST *next; public: - virtual IdentifierListAST *asIdentifierList() - { return this; } + virtual IdentifierListAST *asIdentifierList() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -2503,8 +2397,7 @@ public: // annotations List<ObjCForwardClassDeclaration *> *symbols; public: - virtual ObjCClassForwardDeclarationAST *asObjCClassForwardDeclaration() - { return this; } + virtual ObjCClassForwardDeclarationAST *asObjCClassForwardDeclaration() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -2536,8 +2429,7 @@ public: // annotations ObjCClass *symbol; public: - virtual ObjCClassDeclarationAST *asObjCClassDeclaration() - { return this; } + virtual ObjCClassDeclarationAST *asObjCClassDeclaration() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -2560,8 +2452,7 @@ public: // annotations List<ObjCForwardProtocolDeclaration *> *symbols; public: - virtual ObjCProtocolForwardDeclarationAST *asObjCProtocolForwardDeclaration() - { return this; } + virtual ObjCProtocolForwardDeclarationAST *asObjCProtocolForwardDeclaration() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -2586,8 +2477,7 @@ public: // annotations ObjCProtocol *symbol; public: - virtual ObjCProtocolDeclarationAST *asObjCProtocolDeclaration() - { return this; } + virtual ObjCProtocolDeclarationAST *asObjCProtocolDeclaration() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -2606,8 +2496,7 @@ public: unsigned greater_token; public: - virtual ObjCProtocolRefsAST *asObjCProtocolRefs() - { return this; } + virtual ObjCProtocolRefsAST *asObjCProtocolRefs() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -2624,8 +2513,7 @@ public: ExpressionAST *parameter_value_expression; public: - virtual ObjCMessageArgumentAST *asObjCMessageArgument() - { return this; } + virtual ObjCMessageArgumentAST *asObjCMessageArgument() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -2643,8 +2531,7 @@ public: ObjCMessageArgumentListAST *next; public: - virtual ObjCMessageArgumentListAST *asObjCMessageArgumentList() - { return this; } + virtual ObjCMessageArgumentListAST *asObjCMessageArgumentList() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -2665,8 +2552,7 @@ public: unsigned rbracket_token; public: - virtual ObjCMessageExpressionAST *asObjCMessageExpression() - { return this; } + virtual ObjCMessageExpressionAST *asObjCMessageExpression() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -2686,8 +2572,7 @@ public: unsigned rparen_token; public: - virtual ObjCProtocolExpressionAST *asObjCProtocolExpression() - { return this; } + virtual ObjCProtocolExpressionAST *asObjCProtocolExpression() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -2707,8 +2592,7 @@ public: unsigned rparen_token; public: - virtual ObjCTypeNameAST *asObjCTypeName() - { return this; } + virtual ObjCTypeNameAST *asObjCTypeName() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -2726,8 +2610,7 @@ public: ObjCTypeNameAST *type_name; public: - virtual ObjCEncodeExpressionAST *asObjCEncodeExpression() - { return this; } + virtual ObjCEncodeExpressionAST *asObjCEncodeExpression() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -2744,8 +2627,7 @@ public: // annotation Name *selector_name; public: - virtual ObjCSelectorAST *asObjCSelector() - { return this; } + virtual ObjCSelectorAST *asObjCSelector() { return this; } virtual ObjCSelectorAST *clone(MemoryPool *pool) const = 0; }; @@ -2756,8 +2638,7 @@ public: unsigned name_token; public: - virtual ObjCSelectorWithoutArgumentsAST *asObjCSelectorWithoutArguments() - { return this; } + virtual ObjCSelectorWithoutArgumentsAST *asObjCSelectorWithoutArguments() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -2775,8 +2656,7 @@ public: unsigned colon_token; public: - virtual ObjCSelectorArgumentAST *asObjCSelectorArgument() - { return this; } + virtual ObjCSelectorArgumentAST *asObjCSelectorArgument() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -2794,8 +2674,7 @@ public: ObjCSelectorArgumentListAST *next; public: - virtual ObjCSelectorArgumentListAST *asObjCSelectorArgumentList() - { return this; } + virtual ObjCSelectorArgumentListAST *asObjCSelectorArgumentList() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -2812,8 +2691,7 @@ public: ObjCSelectorArgumentListAST *selector_arguments; public: - virtual ObjCSelectorWithArgumentsAST *asObjCSelectorWithArguments() - { return this; } + virtual ObjCSelectorWithArgumentsAST *asObjCSelectorWithArguments() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -2833,8 +2711,7 @@ public: unsigned rparen_token; public: - virtual ObjCSelectorExpressionAST *asObjCSelectorExpression() - { return this; } + virtual ObjCSelectorExpressionAST *asObjCSelectorExpression() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -2853,8 +2730,7 @@ public: unsigned rbrace_token; public: - virtual ObjCInstanceVariablesDeclarationAST *asObjCInstanceVariablesDeclaration() - { return this; } + virtual ObjCInstanceVariablesDeclarationAST *asObjCInstanceVariablesDeclaration() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -2871,8 +2747,7 @@ public: unsigned visibility_token; public: - virtual ObjCVisibilityDeclarationAST *asObjCVisibilityDeclaration() - { return this; } + virtual ObjCVisibilityDeclarationAST *asObjCVisibilityDeclaration() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -2891,8 +2766,7 @@ public: ObjCSelectorAST *method_selector; public: - virtual ObjCPropertyAttributeAST *asObjCPropertyAttribute() - { return this; } + virtual ObjCPropertyAttributeAST *asObjCPropertyAttribute() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -2911,8 +2785,7 @@ public: ObjCPropertyAttributeListAST *next; public: - virtual ObjCPropertyAttributeListAST *asObjCPropertyAttributeList() - { return this; } + virtual ObjCPropertyAttributeListAST *asObjCPropertyAttributeList() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -2934,8 +2807,7 @@ public: DeclarationAST *simple_declaration; public: - virtual ObjCPropertyDeclarationAST *asObjCPropertyDeclaration() - { return this; } + virtual ObjCPropertyDeclarationAST *asObjCPropertyDeclaration() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -2957,8 +2829,7 @@ public: // annotations Argument *argument; public: - virtual ObjCMessageArgumentDeclarationAST *asObjCMessageArgumentDeclaration() - { return this; } + virtual ObjCMessageArgumentDeclarationAST *asObjCMessageArgumentDeclaration() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -2976,8 +2847,7 @@ public: ObjCMessageArgumentDeclarationListAST *next; public: - virtual ObjCMessageArgumentDeclarationListAST *asObjCMessageArgumentDeclarationList() - { return this; } + virtual ObjCMessageArgumentDeclarationListAST *asObjCMessageArgumentDeclarationList() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -3002,8 +2872,7 @@ public: // annotations ObjCMethod *symbol; public: - virtual ObjCMethodPrototypeAST *asObjCMethodPrototype() - { return this; } + virtual ObjCMethodPrototypeAST *asObjCMethodPrototype() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -3022,8 +2891,7 @@ public: unsigned semicolon_token; public: - virtual ObjCMethodDeclarationAST *asObjCMethodDeclaration() - { return this; } + virtual ObjCMethodDeclarationAST *asObjCMethodDeclaration() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -3042,8 +2910,7 @@ public: unsigned property_alias_identifier; public: - virtual ObjCSynthesizedPropertyAST *asObjCSynthesizedProperty() - { return this; } + virtual ObjCSynthesizedPropertyAST *asObjCSynthesizedProperty() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -3062,8 +2929,7 @@ public: ObjCSynthesizedPropertyListAST *next; public: - virtual ObjCSynthesizedPropertyListAST *asObjCSynthesizedPropertyList() - { return this; } + virtual ObjCSynthesizedPropertyListAST *asObjCSynthesizedPropertyList() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -3082,8 +2948,7 @@ public: unsigned semicolon_token; public: - virtual ObjCSynthesizedPropertiesDeclarationAST *asObjCSynthesizedPropertiesDeclaration() - { return this; } + virtual ObjCSynthesizedPropertiesDeclarationAST *asObjCSynthesizedPropertiesDeclaration() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -3102,8 +2967,7 @@ public: unsigned semicolon_token; public: - virtual ObjCDynamicPropertiesDeclarationAST *asObjCDynamicPropertiesDeclaration() - { return this; } + virtual ObjCDynamicPropertiesDeclarationAST *asObjCDynamicPropertiesDeclaration() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -3135,8 +2999,7 @@ public: // annotations Block *symbol; public: - virtual ObjCFastEnumerationAST *asObjCFastEnumeration() - { return this; } + virtual ObjCFastEnumerationAST *asObjCFastEnumeration() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; @@ -3157,8 +3020,7 @@ public: StatementAST *statement; public: - virtual ObjCSynchronizedStatementAST *asObjCSynchronizedStatement() - { return this; } + virtual ObjCSynchronizedStatementAST *asObjCSynchronizedStatement() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; diff --git a/src/tools/cplusplus/Main.cpp b/src/tools/cplusplus/Main.cpp new file mode 100644 index 0000000000000000000000000000000000000000..ec11bfba7cb189be62da8f4874d3a25548c40062 --- /dev/null +++ b/src/tools/cplusplus/Main.cpp @@ -0,0 +1,239 @@ + +#include <QCoreApplication> +#include <QStringList> +#include <QTextDocument> +#include <QTextCursor> +#include <QTextBlock> +#include <QDebug> + +#include <Control.h> +#include <Parser.h> +#include <AST.h> +#include <ASTVisitor.h> +#include <Symbols.h> +#include <CoreTypes.h> +#include <Literals.h> +#include <CppDocument.h> +#include <Overview.h> + +#include <iostream> +#include <cstdlib> + +using namespace CPlusPlus; + +class ASTNodes +{ +public: + ASTNodes(): base(0) {} + + ClassSpecifierAST *base; // points to "class AST" + QList<ClassSpecifierAST *> deriveds; // n where n extends AST + QList<QTextCursor> endOfPublicClassSpecifiers; +}; + +class FindASTNodes: protected ASTVisitor +{ +public: + FindASTNodes(Document::Ptr doc, QTextDocument *document) + : ASTVisitor(doc->control()), document(document) + { + } + + ASTNodes operator()(AST *ast) + { + accept(ast); + return _nodes; + } + +protected: + virtual bool visit(ClassSpecifierAST *ast) + { + Class *klass = ast->symbol; + Q_ASSERT(klass != 0); + + const QString className = oo(klass->name()); + + if (className.endsWith("AST")) { + if (className == QLatin1String("AST")) + _nodes.base = ast; + else { + _nodes.deriveds.append(ast); + + AccessDeclarationAST *accessDeclaration = 0; + for (DeclarationListAST *it = ast->member_specifiers; it; it = it->next) { + if (AccessDeclarationAST *decl = it->declaration->asAccessDeclaration()) { + if (tokenKind(decl->access_specifier_token) == T_PUBLIC) + accessDeclaration = decl; + } + } + + if (! accessDeclaration) + qDebug() << "no access declaration for class:" << className; + + Q_ASSERT(accessDeclaration != 0); + + unsigned endLine, endColumn; + getTokenEndPosition(accessDeclaration->lastToken() - 1, &endLine, &endColumn); + + QTextCursor tc(document); + tc.setPosition(document->findBlockByNumber(endLine - 1).position() + endColumn - 1); + + int charsToSkip = 0; + forever { + QChar ch = document->characterAt(tc.position() + charsToSkip); + if (! ch.isSpace()) + break; + + ++charsToSkip; + + if (ch == QChar::ParagraphSeparator) + break; + } + + tc.setPosition(tc.position() + charsToSkip); + + _nodes.endOfPublicClassSpecifiers.append(tc); + } + } + + return true; + } + +private: + QTextDocument *document; + ASTNodes _nodes; + Overview oo; +}; + +class RemoveCastMethods: protected ASTVisitor +{ +public: + RemoveCastMethods(Document::Ptr doc, QTextDocument *document) + : ASTVisitor(doc->control()), document(document) {} + + QList<QTextCursor> operator()(AST *ast) + { + _cursors.clear(); + accept(ast); + return _cursors; + } + +protected: + virtual bool visit(FunctionDefinitionAST *ast) + { + Function *fun = ast->symbol; + const QString functionName = oo(fun->name()); + + if (functionName.length() > 3 && functionName.startsWith(QLatin1String("as")) + && functionName.at(2).isUpper()) { + unsigned startLine, startColumn, endLine, endColumn; + getTokenStartPosition(ast->firstToken(), &startLine, &startColumn); + getTokenEndPosition(ast->lastToken() - 1, &endLine, &endColumn); + + QTextCursor tc(document); + tc.setPosition(document->findBlockByNumber(startLine - 1).position()); + tc.setPosition(document->findBlockByNumber(endLine - 1).position() + endColumn - 1, + QTextCursor::KeepAnchor); + + int charsToSkip = 0; + forever { + QChar ch = document->characterAt(tc.position() + charsToSkip); + + if (! ch.isSpace()) + break; + + ++charsToSkip; + + if (ch == QChar::ParagraphSeparator) + break; + } + + tc.setPosition(tc.position() + charsToSkip, QTextCursor::KeepAnchor); + + //qDebug() << qPrintable(tc.selectedText()); + _cursors.append(tc); + } + + return true; + } + +private: + QTextDocument *document; + QList<QTextCursor> _cursors; + Overview oo; +}; + +int main(int argc, char *argv[]) +{ + QCoreApplication app(argc, argv); + QStringList files = app.arguments(); + files.removeFirst(); + + if (files.isEmpty()) { + std::cerr << "Usage: cplusplus AST.h" << std::endl; + return EXIT_FAILURE; + } + + Snapshot snapshot; + + //const QString configuration = QLatin1String("#define CPLUSPLUS_EXPORT\n"); + + foreach (const QString &fileName, files) { + QFile file(fileName); + if (! file.open(QFile::ReadOnly)) + continue; + + const QString source = QTextStream(&file).readAll(); + QTextDocument document; + document.setPlainText(source); + + Document::Ptr doc = Document::create(fileName); + //doc->control()->setDiagnosticClient(0); + const QByteArray preprocessedCode = snapshot.preprocessedCode(source, fileName); + doc->setSource(preprocessedCode); + doc->check(); + + FindASTNodes process(doc, &document); + ASTNodes astNodes = process(doc->translationUnit()->ast()); + + RemoveCastMethods removeCastMethods(doc, &document); + + QList<QTextCursor> baseCastMethodCursors = removeCastMethods(astNodes.base); + QMap<ClassSpecifierAST *, QList<QTextCursor> > cursors; + QMap<ClassSpecifierAST *, QString> replacementCastMethods; + + Overview oo; + + QStringList castMethods; + foreach (ClassSpecifierAST *classAST, astNodes.deriveds) { + cursors[classAST] = removeCastMethods(classAST); + const QString className = oo(classAST->symbol->name()); + const QString methodName = QLatin1String("as") + className.mid(0, className.length() - 3); + replacementCastMethods[classAST] = QString(" virtual %1 *%2() { return this; }\n").arg(className, methodName); + castMethods.append(QString(" virtual %1 *%2() { return 0; }").arg(className, methodName)); + } + + if (! baseCastMethodCursors.isEmpty()) { + castMethods.sort(); + for (int i = 0; i < baseCastMethodCursors.length(); ++i) { + baseCastMethodCursors[i].removeSelectedText(); + } + + baseCastMethodCursors.first().insertText(castMethods.join(QLatin1String("\n"))); + } + + for (int classIndex = 0; classIndex < astNodes.deriveds.size(); ++classIndex) { + ClassSpecifierAST *classAST = astNodes.deriveds.at(classIndex); + + // remove the cast methods. + QList<QTextCursor> c = cursors.value(classAST); + for (int i = 0; i < c.length(); ++i) { + c[i].removeSelectedText(); + } + + astNodes.endOfPublicClassSpecifiers[classIndex].insertText(replacementCastMethods.value(classAST)); + } + + std::cout << qPrintable(document.toPlainText()); + } +} diff --git a/src/tools/cplusplus/cplusplus.pro b/src/tools/cplusplus/cplusplus.pro new file mode 100644 index 0000000000000000000000000000000000000000..fe3bba5c7367127ba46ebef851cec37bf61ea2a7 --- /dev/null +++ b/src/tools/cplusplus/cplusplus.pro @@ -0,0 +1,15 @@ +###################################################################### +# Automatically generated by qmake (2.01a) Mon Nov 9 11:48:58 2009 +###################################################################### + +QT = core gui +macx:CONFIG -= app_bundle +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +include(../../libs/cplusplus/cplusplus-lib.pri) + +# Input +SOURCES += Main.cpp