1 /** 2 Copyright: Copyright (c) 2016, Joakim Brännström. All rights reserved. 3 License: MPL-2 4 Author: Joakim Brännström (joakim.brannstrom@gmx.com) 5 6 This Source Code Form is subject to the terms of the Mozilla Public License, 7 v.2.0. If a copy of the MPL was not distributed with this file, You can obtain 8 one at http://mozilla.org/MPL/2.0/. 9 */ 10 module cpptooling.analyzer.clang.ast.nodes; 11 12 string makeNodeClassName(string s) { 13 import std..string; 14 15 return s[0 .. 1].toUpper ~ s[1 .. $]; 16 } 17 18 // dfmt off 19 immutable string[] TranslationUnitSeq = [ 20 "translationUnit" 21 ]; 22 // dfmt on 23 24 // dfmt off 25 immutable string[] ExtraSeq = [ 26 "moduleImportDecl", 27 "typeAliasTemplateDecl", 28 "staticAssert", 29 "friendDecl", 30 ]; 31 // dfmt on 32 33 // dfmt off 34 immutable string[] AttributeSeq = [ 35 "unexposedAttr", 36 "ibActionAttr", 37 "ibOutletAttr", 38 "ibOutletCollectionAttr", 39 "cxxFinalAttr", 40 "cxxOverrideAttr", 41 "annotateAttr", 42 "asmLabelAttr", 43 "packedAttr", 44 "pureAttr", 45 "constAttr", 46 "noDuplicateAttr", 47 "cudaConstantAttr", 48 "cudaDeviceAttr", 49 "cudaGlobalAttr", 50 "cudaHostAttr", 51 "cudaSharedAttr", 52 "visibilityAttr", 53 "dllExport", 54 "dllImport", 55 ]; 56 57 // dfmt on 58 59 // dfmt off 60 immutable string[] DeclarationSeq = [ 61 "unexposedDecl", 62 "structDecl", 63 "unionDecl", 64 "classDecl", 65 "enumDecl", 66 "fieldDecl", 67 "enumConstantDecl", 68 "functionDecl", 69 "varDecl", 70 "parmDecl", 71 "objCInterfaceDecl", 72 "objCCategoryDecl", 73 "objCProtocolDecl", 74 "objCPropertyDecl", 75 "objCIvarDecl", 76 "objCInstanceMethodDecl", 77 "objCClassMethodDecl", 78 "objCImplementationDecl", 79 "objCCategoryImplDecl", 80 "typedefDecl", 81 "cxxMethod", 82 "namespace", 83 "linkageSpec", 84 "constructor", 85 "destructor", 86 "conversionFunction", 87 "templateTypeParameter", 88 "nonTypeTemplateParameter", 89 "templateTemplateParameter", 90 "functionTemplate", 91 "classTemplate", 92 "classTemplatePartialSpecialization", 93 "namespaceAlias", 94 "usingDirective", 95 "typeAliasDecl", 96 "objCSynthesizeDecl", 97 "objCDynamicDecl", 98 "cxxAccessSpecifier", 99 ]; 100 // dfmt on 101 102 // dfmt off 103 immutable string[] DirectiveSeq = [ 104 "ompParallelDirective", 105 "ompSimdDirective", 106 "ompForDirective", 107 "ompSectionsDirective", 108 "ompSectionDirective", 109 "ompSingleDirective", 110 "ompParallelForDirective", 111 "ompParallelSectionsDirective", 112 "ompTaskDirective", 113 "ompMasterDirective", 114 "ompCriticalDirective", 115 "ompTaskyieldDirective", 116 "ompBarrierDirective", 117 "ompTaskwaitDirective", 118 "ompFlushDirective", 119 "ompOrderedDirective", 120 "ompAtomicDirective", 121 "ompForSimdDirective", 122 "ompParallelForSimdDirective", 123 "ompTargetDirective", 124 "ompTeamsDirective", 125 "ompTaskgroupDirective", 126 "ompCancellationPointDirective", 127 "ompCancelDirective", 128 "ompTargetDataDirective", 129 "ompTaskLoopDirective", 130 "ompTaskLoopSimdDirective", 131 "ompDistributeDirective", 132 "ompTargetEnterDataDirective", 133 "ompTargetExitDataDirective", 134 "ompTargetParallelDirective", 135 "ompTargetParallelForDirective", 136 "ompTargetUpdateDirective", 137 "ompDistributeParallelForDirective", 138 "ompDistributeParallelForSimdDirective", 139 "ompDistributeSimdDirective", 140 "ompTargetParallelForSimdDirective", 141 "ompTargetSimdDirective", 142 "ompTeamsDistributeDirective", 143 "ompTeamsDistributeSimdDirective", 144 "ompTeamsDistributeParallelForSimdDirective", 145 "ompTeamsDistributeParallelForDirective", 146 "ompTargetTeamsDirective", 147 "ompTargetTeamsDistributeDirective", 148 "ompTargetTeamsDistributeParallelForDirective", 149 "ompTargetTeamsDistributeParallelForSimdDirective", 150 "ompTargetTeamsDistributeSimdDirective", 151 ]; 152 // dfmt on 153 154 // dfmt off 155 immutable string[] ExpressionSeq = [ 156 "unexposedExpr", 157 "declRefExpr", 158 "memberRefExpr", 159 "callExpr", 160 "objCMessageExpr", 161 "blockExpr", 162 "integerLiteral", 163 "floatingLiteral", 164 "imaginaryLiteral", 165 "stringLiteral", 166 "characterLiteral", 167 "parenExpr", 168 "unaryOperator", 169 "arraySubscriptExpr", 170 "binaryOperator", 171 "compoundAssignOperator", 172 "conditionalOperator", 173 "cStyleCastExpr", 174 "compoundLiteralExpr", 175 "initListExpr", 176 "addrLabelExpr", 177 "stmtExpr", 178 "genericSelectionExpr", 179 "gnuNullExpr", 180 "cxxStaticCastExpr", 181 "cxxDynamicCastExpr", 182 "cxxReinterpretCastExpr", 183 "cxxConstCastExpr", 184 "cxxFunctionalCastExpr", 185 "cxxTypeidExpr", 186 "cxxBoolLiteralExpr", 187 "cxxNullPtrLiteralExpr", 188 "cxxThisExpr", 189 "cxxThrowExpr", 190 "cxxNewExpr", 191 "cxxDeleteExpr", 192 "unaryExpr", 193 "objCStringLiteral", 194 "objCEncodeExpr", 195 "objCSelectorExpr", 196 "objCProtocolExpr", 197 "objCBridgedCastExpr", 198 "packExpansionExpr", 199 "sizeOfPackExpr", 200 "lambdaExpr", 201 "objCBoolLiteralExpr", 202 "objCSelfExpr", 203 "ompArraySectionExpr", 204 "objCAvailabilityCheckExpr", 205 ]; 206 // dfmt on 207 208 // dfmt off 209 immutable string[] PreprocessorSeq = [ 210 "preprocessingDirective", 211 "macroDefinition", 212 "macroExpansion", 213 // Overlaps with MacroExpansion 214 //CXCursor_MacroInstantiation, 215 "inclusionDirective", 216 ]; 217 // dfmt on 218 219 // dfmt off 220 immutable string[] ReferenceSeq = [ 221 "objCSuperClassRef", 222 "objCProtocolRef", 223 "objCClassRef", 224 "typeRef", 225 "cxxBaseSpecifier", 226 "templateRef", 227 "namespaceRef", 228 "memberRef", 229 "labelRef", 230 "overloadedDeclRef", 231 "variableRef", 232 ]; 233 // dfmt on 234 235 // dfmt off 236 immutable string[] StatementSeq = [ 237 "unexposedStmt", 238 "labelStmt", 239 "compoundStmt", 240 "caseStmt", 241 "defaultStmt", 242 "ifStmt", 243 "switchStmt", 244 "whileStmt", 245 "doStmt", 246 "forStmt", 247 "gotoStmt", 248 "indirectGotoStmt", 249 "continueStmt", 250 "breakStmt", 251 "returnStmt", 252 // overlaps with AsmStmt 253 //CXCursor_GCCAsmStmt, 254 "asmStmt", 255 "objCAtTryStmt", 256 "objCAtCatchStmt", 257 "objCAtFinallyStmt", 258 "objCAtThrowStmt", 259 "objCAtSynchronizedStmt", 260 "objCAutoreleasePoolStmt", 261 "objCForCollectionStmt", 262 "cxxCatchStmt", 263 "cxxTryStmt", 264 "cxxForRangeStmt", 265 "sehTryStmt", 266 "sehExceptStmt", 267 "sehFinallyStmt", 268 "msAsmStmt", 269 "nullStmt", 270 "declStmt", 271 "sehLeaveStmt", 272 ]; 273 // dfmt on