#pragma once #include "BfAst.h" NS_BF_BEGIN class BfElementVisitor : public BfStructuralVisitor { public: BfElementVisitor(); virtual void Visit(BfAstNode* bfAstNode) {} virtual void Visit(BfErrorNode* bfErrorNode); virtual void Visit(BfScopeNode* scopeNode); virtual void Visit(BfNewNode* newNode); virtual void Visit(BfLabeledBlock* labeledBlock); virtual void Visit(BfExpression* expr); virtual void Visit(BfExpressionStatement* exprStmt); virtual void Visit(BfNamedExpression* namedExpr); virtual void Visit(BfAttributedExpression* attribExpr); virtual void Visit(BfStatement* stmt); virtual void Visit(BfAttributedStatement* attribStmt); virtual void Visit(BfLabelableStatement* labelableStmt); virtual void Visit(BfTypedValueExpression* typedValueExpr); virtual void Visit(BfCommentNode* commentNode); virtual void Visit(BfPreprocesorIgnoredSectionNode* preprocesorIgnoredSection); virtual void Visit(BfPreprocessorNode* preprocessorNode); virtual void Visit(BfPreprocessorDefinedExpression* definedExpr); virtual void Visit(BfAttributeDirective* attributeDirective); virtual void Visit(BfGenericParamsDeclaration* genericParams); virtual void Visit(BfGenericOperatorConstraint* genericConstraints); virtual void Visit(BfGenericConstraintsDeclaration* genericConstraints); virtual void Visit(BfGenericArgumentsNode* genericArgumentsNode); virtual void Visit(BfEmptyStatement* emptyStmt); virtual void Visit(BfTokenNode* tokenNode); virtual void Visit(BfTokenPairNode* tokenPairNode); virtual void Visit(BfUsingSpecifierNode* usingSpecifier); virtual void Visit(BfLiteralExpression* literalExpr); virtual void Visit(BfStringInterpolationExpression* stringInterpolationExpression); virtual void Visit(BfIdentifierNode* identifierNode); virtual void Visit(BfAttributedIdentifierNode* attrIdentifierNode); virtual void Visit(BfQualifiedNameNode* nameNode); virtual void Visit(BfThisExpression* thisExpr); virtual void Visit(BfBaseExpression* baseExpr); virtual void Visit(BfMixinExpression* thisExpr); virtual void Visit(BfSizedArrayCreateExpression* createExpr); virtual void Visit(BfInitializerExpression* initExpr); virtual void Visit(BfCollectionInitializerExpression* collectionInitExpr); virtual void Visit(BfTypeReference* typeRef); virtual void Visit(BfNamedTypeReference* typeRef); virtual void Visit(BfQualifiedTypeReference* qualifiedType); virtual void Visit(BfDotTypeReference* typeRef); virtual void Visit(BfVarTypeReference* typeRef); virtual void Visit(BfVarRefTypeReference* typeRef); virtual void Visit(BfLetTypeReference* typeRef); virtual void Visit(BfConstTypeRef* typeRef); virtual void Visit(BfConstExprTypeRef* typeRef); virtual void Visit(BfRefTypeRef* typeRef); virtual void Visit(BfModifiedTypeRef* typeRef); virtual void Visit(BfArrayTypeRef* typeRef); virtual void Visit(BfGenericInstanceTypeRef* typeRef); virtual void Visit(BfTupleTypeRef* typeRef); virtual void Visit(BfExprModTypeRef* typeRef); virtual void Visit(BfDelegateTypeRef* typeRef); virtual void Visit(BfPointerTypeRef* typeRef); virtual void Visit(BfNullableTypeRef* typeRef); virtual void Visit(BfVariableDeclaration* varDecl); virtual void Visit(BfLocalMethodDeclaration* methodDecl); virtual void Visit(BfParameterDeclaration* paramDecl); virtual void Visit(BfTypeAttrExpression* typeAttrExpr); virtual void Visit(BfOffsetOfExpression* offsetOfExpr); virtual void Visit(BfNameOfExpression* nameOfExpr); virtual void Visit(BfDefaultExpression* defaultExpr); virtual void Visit(BfIsConstExpression* isConstExpr); virtual void Visit(BfUninitializedExpression* uninitializedExpr); virtual void Visit(BfCheckTypeExpression* checkTypeExpr); virtual void Visit(BfDynamicCastExpression* dynCastExpr); virtual void Visit(BfCastExpression* castExpr); virtual void Visit(BfDelegateBindExpression* delegateBindExpr); virtual void Visit(BfLambdaBindExpression* lambdaBindExpr); virtual void Visit(BfObjectCreateExpression* objCreateExpr); virtual void Visit(BfBoxExpression* boxExpr); virtual void Visit(BfScopedInvocationTarget* scopedTarget); virtual void Visit(BfInvocationExpression* invocationExpr); virtual void Visit(BfDeferStatement* deferStmt); virtual void Visit(BfEnumCaseBindExpression* caseBindExpr); virtual void Visit(BfCaseExpression* caseExpr); virtual void Visit(BfSwitchCase* switchCase); virtual void Visit(BfWhenExpression* whenExpr); virtual void Visit(BfSwitchStatement* switchStmt); virtual void Visit(BfTryStatement* tryStmt); virtual void Visit(BfCatchStatement* catchStmt); virtual void Visit(BfFinallyStatement* finallyStmt); virtual void Visit(BfCheckedStatement* checkedStmt); virtual void Visit(BfUncheckedStatement* uncheckedStmt); virtual void Visit(BfIfStatement* ifStmt); virtual void Visit(BfThrowStatement* throwStmt); virtual void Visit(BfDeleteStatement* deleteStmt); virtual void Visit(BfReturnStatement* returnStmt); virtual void Visit(BfYieldStatement* returnStmt); virtual void Visit(BfBreakStatement* breakStmt); virtual void Visit(BfContinueStatement* continueStmt); virtual void Visit(BfFallthroughStatement* fallthroughStmt); virtual void Visit(BfUsingStatement* whileStmt); virtual void Visit(BfDoStatement* whileStmt); virtual void Visit(BfRepeatStatement* repeatStmt); virtual void Visit(BfWhileStatement* whileStmt); virtual void Visit(BfForStatement* forStmt); virtual void Visit(BfForEachStatement* forEachStmt); virtual void Visit(BfConditionalExpression* condExpr); virtual void Visit(BfAssignmentExpression* assignExpr); virtual void Visit(BfParenthesizedExpression* parenExpr); virtual void Visit(BfTupleExpression* parenExpr); virtual void Visit(BfMemberReferenceExpression* memberRefExpr); virtual void Visit(BfIndexerExpression* indexerExpr); virtual void Visit(BfUnaryOperatorExpression* binOpExpr); virtual void Visit(BfBinaryOperatorExpression* binOpExpr); virtual void Visit(BfConstructorDeclaration* ctorDeclaration); virtual void Visit(BfDestructorDeclaration* dtorDeclaration); virtual void Visit(BfMethodDeclaration* methodDeclaration); virtual void Visit(BfOperatorDeclaration* operatorDeclaration); virtual void Visit(BfPropertyMethodDeclaration* propertyDeclaration); virtual void Visit(BfPropertyBodyExpression* propertyBodyExpression); virtual void Visit(BfPropertyDeclaration* propertyDeclaration); virtual void Visit(BfIndexerDeclaration* indexerDeclaration); virtual void Visit(BfFieldDeclaration* fieldDeclaration); virtual void Visit(BfEnumCaseDeclaration* enumCaseDeclaration); virtual void Visit(BfFieldDtorDeclaration* fieldDtorDeclaration); virtual void Visit(BfTypeDeclaration* typeDeclaration); virtual void Visit(BfTypeAliasDeclaration* typeDeclaration); virtual void Visit(BfUsingDirective* usingDirective); virtual void Visit(BfUsingModDirective* usingDirective); virtual void Visit(BfNamespaceDeclaration* namespaceDeclaration); virtual void Visit(BfBlock* block); virtual void Visit(BfRootNode* rootNode); virtual void Visit(BfInlineAsmStatement* asmStmt); virtual void Visit(BfInlineAsmInstruction* asmInst); }; NS_BF_END