ASTVisitor.h 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382
  1. // Copyright (c) 2008 Roberto Raggi <[email protected]>
  2. //
  3. // Permission is hereby granted, free of charge, to any person obtaining a copy
  4. // of this software and associated documentation files (the "Software"), to deal
  5. // in the Software without restriction, including without limitation the rights
  6. // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  7. // copies of the Software, and to permit persons to whom the Software is
  8. // furnished to do so, subject to the following conditions:
  9. //
  10. // The above copyright notice and this permission notice shall be included in
  11. // all copies or substantial portions of the Software.
  12. //
  13. // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  14. // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  15. // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  16. // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  17. // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  18. // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  19. // THE SOFTWARE.
  20. #ifndef CPLUSPLUS_ASTVISITOR_H
  21. #define CPLUSPLUS_ASTVISITOR_H
  22. #include "CPlusPlusForwardDeclarations.h"
  23. #include "ASTfwd.h"
  24. namespace CPlusPlus {
  25. class CPLUSPLUS_EXPORT ASTVisitor
  26. {
  27. ASTVisitor(const ASTVisitor &other);
  28. void operator =(const ASTVisitor &other);
  29. public:
  30. ASTVisitor(TranslationUnit *unit);
  31. virtual ~ASTVisitor();
  32. TranslationUnit *translationUnit() const;
  33. void setTranslationUnit(TranslationUnit *translationUnit);
  34. Control *control() const;
  35. unsigned tokenCount() const;
  36. const Token &tokenAt(unsigned index) const;
  37. int tokenKind(unsigned index) const;
  38. const char *spell(unsigned index) const;
  39. const Identifier *identifier(unsigned index) const;
  40. const Literal *literal(unsigned index) const;
  41. const NumericLiteral *numericLiteral(unsigned index) const;
  42. const StringLiteral *stringLiteral(unsigned index) const;
  43. void getPosition(unsigned offset,
  44. unsigned *line,
  45. unsigned *column = 0,
  46. const StringLiteral **fileName = 0) const;
  47. void getTokenPosition(unsigned index,
  48. unsigned *line,
  49. unsigned *column = 0,
  50. const StringLiteral **fileName = 0) const;
  51. void getTokenStartPosition(unsigned index, unsigned *line, unsigned *column) const;
  52. void getTokenEndPosition(unsigned index, unsigned *line, unsigned *column) const;
  53. void accept(AST *ast);
  54. template <typename Tptr>
  55. void accept(List<Tptr> *it)
  56. {
  57. for (; it; it = it->next)
  58. accept(it->value);
  59. }
  60. virtual bool preVisit(AST *) { return true; }
  61. virtual void postVisit(AST *) {}
  62. virtual bool visit(AccessDeclarationAST *) { return true; }
  63. virtual bool visit(AliasDeclarationAST *) { return true; }
  64. virtual bool visit(AlignmentSpecifierAST *) { return true; }
  65. virtual bool visit(AlignofExpressionAST *) { return true; }
  66. virtual bool visit(AnonymousNameAST *) { return true; }
  67. virtual bool visit(ArrayAccessAST *) { return true; }
  68. virtual bool visit(ArrayDeclaratorAST *) { return true; }
  69. virtual bool visit(ArrayInitializerAST *) { return true; }
  70. virtual bool visit(AsmDefinitionAST *) { return true; }
  71. virtual bool visit(BaseSpecifierAST *) { return true; }
  72. virtual bool visit(BinaryExpressionAST *) { return true; }
  73. virtual bool visit(BoolLiteralAST *) { return true; }
  74. virtual bool visit(BracedInitializerAST *) { return true; }
  75. virtual bool visit(BracketDesignatorAST *) { return true; }
  76. virtual bool visit(BreakStatementAST *) { return true; }
  77. virtual bool visit(CallAST *) { return true; }
  78. virtual bool visit(CaptureAST *) { return true; }
  79. virtual bool visit(CaseStatementAST *) { return true; }
  80. virtual bool visit(CastExpressionAST *) { return true; }
  81. virtual bool visit(CatchClauseAST *) { return true; }
  82. virtual bool visit(ClassSpecifierAST *) { return true; }
  83. virtual bool visit(CompoundExpressionAST *) { return true; }
  84. virtual bool visit(CompoundLiteralAST *) { return true; }
  85. virtual bool visit(CompoundStatementAST *) { return true; }
  86. virtual bool visit(ConditionAST *) { return true; }
  87. virtual bool visit(ConditionalExpressionAST *) { return true; }
  88. virtual bool visit(ContinueStatementAST *) { return true; }
  89. virtual bool visit(ConversionFunctionIdAST *) { return true; }
  90. virtual bool visit(CppCastExpressionAST *) { return true; }
  91. virtual bool visit(CtorInitializerAST *) { return true; }
  92. virtual bool visit(DeclarationStatementAST *) { return true; }
  93. virtual bool visit(DeclaratorAST *) { return true; }
  94. virtual bool visit(DeclaratorIdAST *) { return true; }
  95. virtual bool visit(DecltypeSpecifierAST *) { return true; }
  96. virtual bool visit(DeleteExpressionAST *) { return true; }
  97. virtual bool visit(DesignatedInitializerAST *) { return true; }
  98. virtual bool visit(DestructorNameAST *) { return true; }
  99. virtual bool visit(DoStatementAST *) { return true; }
  100. virtual bool visit(DotDesignatorAST *) { return true; }
  101. virtual bool visit(DynamicExceptionSpecificationAST *) { return true; }
  102. virtual bool visit(ElaboratedTypeSpecifierAST *) { return true; }
  103. virtual bool visit(EmptyDeclarationAST *) { return true; }
  104. virtual bool visit(EnumSpecifierAST *) { return true; }
  105. virtual bool visit(EnumeratorAST *) { return true; }
  106. virtual bool visit(ExceptionDeclarationAST *) { return true; }
  107. virtual bool visit(ExpressionListParenAST *) { return true; }
  108. virtual bool visit(ExpressionOrDeclarationStatementAST *) { return true; }
  109. virtual bool visit(ExpressionStatementAST *) { return true; }
  110. virtual bool visit(ForStatementAST *) { return true; }
  111. virtual bool visit(ForeachStatementAST *) { return true; }
  112. virtual bool visit(FunctionDeclaratorAST *) { return true; }
  113. virtual bool visit(FunctionDefinitionAST *) { return true; }
  114. virtual bool visit(GnuAttributeAST *) { return true; }
  115. virtual bool visit(GnuAttributeSpecifierAST *) { return true; }
  116. virtual bool visit(GotoStatementAST *) { return true; }
  117. virtual bool visit(IdExpressionAST *) { return true; }
  118. virtual bool visit(IfStatementAST *) { return true; }
  119. virtual bool visit(LabeledStatementAST *) { return true; }
  120. virtual bool visit(LambdaCaptureAST *) { return true; }
  121. virtual bool visit(LambdaDeclaratorAST *) { return true; }
  122. virtual bool visit(LambdaExpressionAST *) { return true; }
  123. virtual bool visit(LambdaIntroducerAST *) { return true; }
  124. virtual bool visit(LinkageBodyAST *) { return true; }
  125. virtual bool visit(LinkageSpecificationAST *) { return true; }
  126. virtual bool visit(MemInitializerAST *) { return true; }
  127. virtual bool visit(MemberAccessAST *) { return true; }
  128. virtual bool visit(NamedTypeSpecifierAST *) { return true; }
  129. virtual bool visit(NamespaceAST *) { return true; }
  130. virtual bool visit(NamespaceAliasDefinitionAST *) { return true; }
  131. virtual bool visit(NestedDeclaratorAST *) { return true; }
  132. virtual bool visit(NestedExpressionAST *) { return true; }
  133. virtual bool visit(NestedNameSpecifierAST *) { return true; }
  134. virtual bool visit(NewArrayDeclaratorAST *) { return true; }
  135. virtual bool visit(NewExpressionAST *) { return true; }
  136. virtual bool visit(NewTypeIdAST *) { return true; }
  137. virtual bool visit(NoExceptSpecificationAST *) { return true; }
  138. virtual bool visit(NumericLiteralAST *) { return true; }
  139. virtual bool visit(ObjCClassDeclarationAST *) { return true; }
  140. virtual bool visit(ObjCClassForwardDeclarationAST *) { return true; }
  141. virtual bool visit(ObjCDynamicPropertiesDeclarationAST *) { return true; }
  142. virtual bool visit(ObjCEncodeExpressionAST *) { return true; }
  143. virtual bool visit(ObjCFastEnumerationAST *) { return true; }
  144. virtual bool visit(ObjCInstanceVariablesDeclarationAST *) { return true; }
  145. virtual bool visit(ObjCMessageArgumentAST *) { return true; }
  146. virtual bool visit(ObjCMessageArgumentDeclarationAST *) { return true; }
  147. virtual bool visit(ObjCMessageExpressionAST *) { return true; }
  148. virtual bool visit(ObjCMethodDeclarationAST *) { return true; }
  149. virtual bool visit(ObjCMethodPrototypeAST *) { return true; }
  150. virtual bool visit(ObjCPropertyAttributeAST *) { return true; }
  151. virtual bool visit(ObjCPropertyDeclarationAST *) { return true; }
  152. virtual bool visit(ObjCProtocolDeclarationAST *) { return true; }
  153. virtual bool visit(ObjCProtocolExpressionAST *) { return true; }
  154. virtual bool visit(ObjCProtocolForwardDeclarationAST *) { return true; }
  155. virtual bool visit(ObjCProtocolRefsAST *) { return true; }
  156. virtual bool visit(ObjCSelectorAST *) { return true; }
  157. virtual bool visit(ObjCSelectorArgumentAST *) { return true; }
  158. virtual bool visit(ObjCSelectorExpressionAST *) { return true; }
  159. virtual bool visit(ObjCSynchronizedStatementAST *) { return true; }
  160. virtual bool visit(ObjCSynthesizedPropertiesDeclarationAST *) { return true; }
  161. virtual bool visit(ObjCSynthesizedPropertyAST *) { return true; }
  162. virtual bool visit(ObjCTypeNameAST *) { return true; }
  163. virtual bool visit(ObjCVisibilityDeclarationAST *) { return true; }
  164. virtual bool visit(OperatorAST *) { return true; }
  165. virtual bool visit(OperatorFunctionIdAST *) { return true; }
  166. virtual bool visit(ParameterDeclarationAST *) { return true; }
  167. virtual bool visit(ParameterDeclarationClauseAST *) { return true; }
  168. virtual bool visit(PointerAST *) { return true; }
  169. virtual bool visit(PointerLiteralAST *) { return true; }
  170. virtual bool visit(PointerToMemberAST *) { return true; }
  171. virtual bool visit(PostIncrDecrAST *) { return true; }
  172. virtual bool visit(QtEnumDeclarationAST *) { return true; }
  173. virtual bool visit(QtFlagsDeclarationAST *) { return true; }
  174. virtual bool visit(QtInterfaceNameAST *) { return true; }
  175. virtual bool visit(QtInterfacesDeclarationAST *) { return true; }
  176. virtual bool visit(QtMemberDeclarationAST *) { return true; }
  177. virtual bool visit(QtMethodAST *) { return true; }
  178. virtual bool visit(QtObjectTagAST *) { return true; }
  179. virtual bool visit(QtPrivateSlotAST *) { return true; }
  180. virtual bool visit(QtPropertyDeclarationAST *) { return true; }
  181. virtual bool visit(QtPropertyDeclarationItemAST *) { return true; }
  182. virtual bool visit(QualifiedNameAST *) { return true; }
  183. virtual bool visit(RangeBasedForStatementAST *) { return true; }
  184. virtual bool visit(ReferenceAST *) { return true; }
  185. virtual bool visit(ReturnStatementAST *) { return true; }
  186. virtual bool visit(SimpleDeclarationAST *) { return true; }
  187. virtual bool visit(SimpleNameAST *) { return true; }
  188. virtual bool visit(SimpleSpecifierAST *) { return true; }
  189. virtual bool visit(SizeofExpressionAST *) { return true; }
  190. virtual bool visit(StaticAssertDeclarationAST *) { return true; }
  191. virtual bool visit(StringLiteralAST *) { return true; }
  192. virtual bool visit(SwitchStatementAST *) { return true; }
  193. virtual bool visit(TemplateDeclarationAST *) { return true; }
  194. virtual bool visit(TemplateIdAST *) { return true; }
  195. virtual bool visit(TemplateTypeParameterAST *) { return true; }
  196. virtual bool visit(ThisExpressionAST *) { return true; }
  197. virtual bool visit(ThrowExpressionAST *) { return true; }
  198. virtual bool visit(TrailingReturnTypeAST *) { return true; }
  199. virtual bool visit(TranslationUnitAST *) { return true; }
  200. virtual bool visit(TryBlockStatementAST *) { return true; }
  201. virtual bool visit(TypeConstructorCallAST *) { return true; }
  202. virtual bool visit(TypeIdAST *) { return true; }
  203. virtual bool visit(TypeidExpressionAST *) { return true; }
  204. virtual bool visit(TypenameCallExpressionAST *) { return true; }
  205. virtual bool visit(TypenameTypeParameterAST *) { return true; }
  206. virtual bool visit(TypeofSpecifierAST *) { return true; }
  207. virtual bool visit(UnaryExpressionAST *) { return true; }
  208. virtual bool visit(UsingAST *) { return true; }
  209. virtual bool visit(UsingDirectiveAST *) { return true; }
  210. virtual bool visit(WhileStatementAST *) { return true; }
  211. virtual void endVisit(AccessDeclarationAST *) {}
  212. virtual void endVisit(AliasDeclarationAST *) {}
  213. virtual void endVisit(AlignmentSpecifierAST *) {}
  214. virtual void endVisit(AlignofExpressionAST *) {}
  215. virtual void endVisit(AnonymousNameAST *) {}
  216. virtual void endVisit(ArrayAccessAST *) {}
  217. virtual void endVisit(ArrayDeclaratorAST *) {}
  218. virtual void endVisit(ArrayInitializerAST *) {}
  219. virtual void endVisit(AsmDefinitionAST *) {}
  220. virtual void endVisit(BaseSpecifierAST *) {}
  221. virtual void endVisit(BinaryExpressionAST *) {}
  222. virtual void endVisit(BoolLiteralAST *) {}
  223. virtual void endVisit(BracedInitializerAST *) {}
  224. virtual void endVisit(BracketDesignatorAST *) {}
  225. virtual void endVisit(BreakStatementAST *) {}
  226. virtual void endVisit(CallAST *) {}
  227. virtual void endVisit(CaptureAST *) {}
  228. virtual void endVisit(CaseStatementAST *) {}
  229. virtual void endVisit(CastExpressionAST *) {}
  230. virtual void endVisit(CatchClauseAST *) {}
  231. virtual void endVisit(ClassSpecifierAST *) {}
  232. virtual void endVisit(CompoundExpressionAST *) {}
  233. virtual void endVisit(CompoundLiteralAST *) {}
  234. virtual void endVisit(CompoundStatementAST *) {}
  235. virtual void endVisit(ConditionAST *) {}
  236. virtual void endVisit(ConditionalExpressionAST *) {}
  237. virtual void endVisit(ContinueStatementAST *) {}
  238. virtual void endVisit(ConversionFunctionIdAST *) {}
  239. virtual void endVisit(CppCastExpressionAST *) {}
  240. virtual void endVisit(CtorInitializerAST *) {}
  241. virtual void endVisit(DeclarationStatementAST *) {}
  242. virtual void endVisit(DeclaratorAST *) {}
  243. virtual void endVisit(DeclaratorIdAST *) {}
  244. virtual void endVisit(DecltypeSpecifierAST *) {}
  245. virtual void endVisit(DeleteExpressionAST *) {}
  246. virtual void endVisit(DesignatedInitializerAST *) {}
  247. virtual void endVisit(DestructorNameAST *) {}
  248. virtual void endVisit(DoStatementAST *) {}
  249. virtual void endVisit(DotDesignatorAST *) {}
  250. virtual void endVisit(DynamicExceptionSpecificationAST *) {}
  251. virtual void endVisit(ElaboratedTypeSpecifierAST *) {}
  252. virtual void endVisit(EmptyDeclarationAST *) {}
  253. virtual void endVisit(EnumSpecifierAST *) {}
  254. virtual void endVisit(EnumeratorAST *) {}
  255. virtual void endVisit(ExceptionDeclarationAST *) {}
  256. virtual void endVisit(ExpressionListParenAST *) {}
  257. virtual void endVisit(ExpressionOrDeclarationStatementAST *) {}
  258. virtual void endVisit(ExpressionStatementAST *) {}
  259. virtual void endVisit(ForStatementAST *) {}
  260. virtual void endVisit(ForeachStatementAST *) {}
  261. virtual void endVisit(FunctionDeclaratorAST *) {}
  262. virtual void endVisit(FunctionDefinitionAST *) {}
  263. virtual void endVisit(GnuAttributeAST *) {}
  264. virtual void endVisit(GnuAttributeSpecifierAST *) {}
  265. virtual void endVisit(GotoStatementAST *) {}
  266. virtual void endVisit(IdExpressionAST *) {}
  267. virtual void endVisit(IfStatementAST *) {}
  268. virtual void endVisit(LabeledStatementAST *) {}
  269. virtual void endVisit(LambdaCaptureAST *) {}
  270. virtual void endVisit(LambdaDeclaratorAST *) {}
  271. virtual void endVisit(LambdaExpressionAST *) {}
  272. virtual void endVisit(LambdaIntroducerAST *) {}
  273. virtual void endVisit(LinkageBodyAST *) {}
  274. virtual void endVisit(LinkageSpecificationAST *) {}
  275. virtual void endVisit(MemInitializerAST *) {}
  276. virtual void endVisit(MemberAccessAST *) {}
  277. virtual void endVisit(NamedTypeSpecifierAST *) {}
  278. virtual void endVisit(NamespaceAST *) {}
  279. virtual void endVisit(NamespaceAliasDefinitionAST *) {}
  280. virtual void endVisit(NestedDeclaratorAST *) {}
  281. virtual void endVisit(NestedExpressionAST *) {}
  282. virtual void endVisit(NestedNameSpecifierAST *) {}
  283. virtual void endVisit(NewArrayDeclaratorAST *) {}
  284. virtual void endVisit(NewExpressionAST *) {}
  285. virtual void endVisit(NewTypeIdAST *) {}
  286. virtual void endVisit(NoExceptSpecificationAST *) {}
  287. virtual void endVisit(NumericLiteralAST *) {}
  288. virtual void endVisit(ObjCClassDeclarationAST *) {}
  289. virtual void endVisit(ObjCClassForwardDeclarationAST *) {}
  290. virtual void endVisit(ObjCDynamicPropertiesDeclarationAST *) {}
  291. virtual void endVisit(ObjCEncodeExpressionAST *) {}
  292. virtual void endVisit(ObjCFastEnumerationAST *) {}
  293. virtual void endVisit(ObjCInstanceVariablesDeclarationAST *) {}
  294. virtual void endVisit(ObjCMessageArgumentAST *) {}
  295. virtual void endVisit(ObjCMessageArgumentDeclarationAST *) {}
  296. virtual void endVisit(ObjCMessageExpressionAST *) {}
  297. virtual void endVisit(ObjCMethodDeclarationAST *) {}
  298. virtual void endVisit(ObjCMethodPrototypeAST *) {}
  299. virtual void endVisit(ObjCPropertyAttributeAST *) {}
  300. virtual void endVisit(ObjCPropertyDeclarationAST *) {}
  301. virtual void endVisit(ObjCProtocolDeclarationAST *) {}
  302. virtual void endVisit(ObjCProtocolExpressionAST *) {}
  303. virtual void endVisit(ObjCProtocolForwardDeclarationAST *) {}
  304. virtual void endVisit(ObjCProtocolRefsAST *) {}
  305. virtual void endVisit(ObjCSelectorAST *) {}
  306. virtual void endVisit(ObjCSelectorArgumentAST *) {}
  307. virtual void endVisit(ObjCSelectorExpressionAST *) {}
  308. virtual void endVisit(ObjCSynchronizedStatementAST *) {}
  309. virtual void endVisit(ObjCSynthesizedPropertiesDeclarationAST *) {}
  310. virtual void endVisit(ObjCSynthesizedPropertyAST *) {}
  311. virtual void endVisit(ObjCTypeNameAST *) {}
  312. virtual void endVisit(ObjCVisibilityDeclarationAST *) {}
  313. virtual void endVisit(OperatorAST *) {}
  314. virtual void endVisit(OperatorFunctionIdAST *) {}
  315. virtual void endVisit(ParameterDeclarationAST *) {}
  316. virtual void endVisit(ParameterDeclarationClauseAST *) {}
  317. virtual void endVisit(PointerAST *) {}
  318. virtual void endVisit(PointerLiteralAST *) {}
  319. virtual void endVisit(PointerToMemberAST *) {}
  320. virtual void endVisit(PostIncrDecrAST *) {}
  321. virtual void endVisit(QtEnumDeclarationAST *) {}
  322. virtual void endVisit(QtFlagsDeclarationAST *) {}
  323. virtual void endVisit(QtInterfaceNameAST *) {}
  324. virtual void endVisit(QtInterfacesDeclarationAST *) {}
  325. virtual void endVisit(QtMemberDeclarationAST *) {}
  326. virtual void endVisit(QtMethodAST *) {}
  327. virtual void endVisit(QtObjectTagAST *) {}
  328. virtual void endVisit(QtPrivateSlotAST *) {}
  329. virtual void endVisit(QtPropertyDeclarationAST *) {}
  330. virtual void endVisit(QtPropertyDeclarationItemAST *) {}
  331. virtual void endVisit(QualifiedNameAST *) {}
  332. virtual void endVisit(RangeBasedForStatementAST *) {}
  333. virtual void endVisit(ReferenceAST *) {}
  334. virtual void endVisit(ReturnStatementAST *) {}
  335. virtual void endVisit(SimpleDeclarationAST *) {}
  336. virtual void endVisit(SimpleNameAST *) {}
  337. virtual void endVisit(SimpleSpecifierAST *) {}
  338. virtual void endVisit(SizeofExpressionAST *) {}
  339. virtual void endVisit(StaticAssertDeclarationAST *) {}
  340. virtual void endVisit(StringLiteralAST *) {}
  341. virtual void endVisit(SwitchStatementAST *) {}
  342. virtual void endVisit(TemplateDeclarationAST *) {}
  343. virtual void endVisit(TemplateIdAST *) {}
  344. virtual void endVisit(TemplateTypeParameterAST *) {}
  345. virtual void endVisit(ThisExpressionAST *) {}
  346. virtual void endVisit(ThrowExpressionAST *) {}
  347. virtual void endVisit(TrailingReturnTypeAST *) {}
  348. virtual void endVisit(TranslationUnitAST *) {}
  349. virtual void endVisit(TryBlockStatementAST *) {}
  350. virtual void endVisit(TypeConstructorCallAST *) {}
  351. virtual void endVisit(TypeIdAST *) {}
  352. virtual void endVisit(TypeidExpressionAST *) {}
  353. virtual void endVisit(TypenameCallExpressionAST *) {}
  354. virtual void endVisit(TypenameTypeParameterAST *) {}
  355. virtual void endVisit(TypeofSpecifierAST *) {}
  356. virtual void endVisit(UnaryExpressionAST *) {}
  357. virtual void endVisit(UsingAST *) {}
  358. virtual void endVisit(UsingDirectiveAST *) {}
  359. virtual void endVisit(WhileStatementAST *) {}
  360. private:
  361. TranslationUnit *_translationUnit;
  362. };
  363. } // namespace CPlusPlus
  364. #endif // CPLUSPLUS_ASTVISITOR_H