21#define DBG(NAME, PTR) \
22 std::cout << NAME << ":" << std::endl; \
23 std::cout << astToString(PTR) << std::endl; \
24 std::cout << "------------------------------------------"<< std::endl;
26# define DBG(NAME) void;
42 std::stringstream stm;
55 DBG(
"CppCompound", p);
60 DBG(
"CppUnRecogPrePro", p);
70 DBG(
"CppUsingDecl", p);
75 DBG(
"CppUsingNamespaceDecl", p);
90 DBG(
"CppCommonBlock<CppObjType::kIfBlock>", p);
95 DBG(
"CppCommonBlock<CppObjType::kWhileBlock>", p);
100 DBG(
"CppCommonBlock<CppObjType::kDoWhileBlock>", p);
105 DBG(
"CppAsmBlock", p);
120 DBG(
"CppDocComment", p);
135 DBG(
"CppForBlock", p);
145 DBG(
"CppDestructor", p);
150 DBG(
"CppConstructor", p);
155 DBG(
"CppFunction", p);
160 DBG(
"CppFunctionPointer", p);
165 DBG(
"CppTypeConverter", p);
170 DBG(
"CppFwdClsDecl", p);
175 DBG(
"CppHashError", p);
185 DBG(
"CppHashWarning", p);
195 DBG(
"CppInclude", p);
205 DBG(
"CppMacroCall", p);
210 DBG(
"CppNamespaceAlias", p);
220 DBG(
"CppRangeForBlock", p);
225 DBG(
"CppSwitchBlock", p);
230 DBG(
"CppTryBlock", p);
235 DBG(
"CppTypedefList", p);
240 DBG(
"CppTypedefName", p);
bool visit(CppInclude *p) override
bool visit(CppHashIf *p) override
bool visit(CppLabel *p) override
bool visit(CppTypeConverter *p) override
bool visit(CppCommonBlock< CppObjType::kWhileBlock > *p) override
bool visit(CppNamespaceAlias *p) override
bool visit(CppAsmBlock *p) override
bool visit(CppForBlock *p) override
bool visit(CppTypedefName *p) override
bool visit(CppDefine *p) override
bool visit(CppCompound *p) override
bool visit(CppVar *p) override
bool visit(CppMacroCall *p) override
bool visit(CppFunction *p) override
bool visit(CppLambda *p) override
bool visit(CppFunctionPointer *p) override
bool visit(CppVarType *p) override
The visitor pattern's visit methods for the given types.
bool visit(CppUnRecogPrePro *p) override
bool visit(CppPragma *p) override
bool visit(CppConstructor *p) override
bool visit(CppDocComment *p) override
bool visit(CppCommonBlock< CppObjType::kDoWhileBlock > *p) override
bool visit(CppHashError *p) override
bool visit(CppFwdClsDecl *p) override
bool visit(CppUsingNamespaceDecl *p) override
bool visit(CppVarList *p) override
bool visit(CppTypedefList *p) override
bool visit(CppHashWarning *p) override
bool visit(CppCommonBlock< CppObjType::kIfBlock > *p) override
bool visit(CppUsingDecl *p) override
bool visit(CppTryBlock *p) override
bool visit(CppDestructor *p) override
bool visit(CppImport *p) override
bool visit(CppExpr *p) override
bool visit(CppRangeForBlock *p) override
bool visit(CppSwitchBlock *p) override
bool visit(CppBlob *p) override
static std::string astToString(CppObj *p)
Converts the given pointer to an AST node to its equivalent string of code using CppWriter class.
bool visit(CppEnum *p) override
~CppVisitorPrinter() override=default
bool visit(CppUndef *p) override
Responsible for emitting C/C++ source from CppAst data structure.
virtual void emit(CppObj *cppObj, std::ostream &stm, CppIndent indentation=CppIndent()) const
A stream of text that represents some content in a C++ program.
Some blocks have common structure like if, while, and do-while.
All classes, structs, unions, and namespaces can be classified as a Compound object.
An expression in a C/C++ program.
Function pointer type definition using typedef, e.g.
Represents all variants of #if preprocessors.
An abstract class that is used as base class of all other classes.
Any other C/C++ preprocessor for which there is no class defined.
List of variables declared in a line without repeating its type, e.g.
Class to represent C++ variable definition.