diff --git a/src/CppParser/Expr.h b/src/CppParser/Expr.h
new file mode 100644
index 00000000..d3bdd334
--- /dev/null
+++ b/src/CppParser/Expr.h
@@ -0,0 +1,441 @@
+// ----------------------------------------------------------------------------
+//
+// This is autogenerated code by CppSharp.
+// Do not edit this file or all your changes will be lost after re-generation.
+//
+// ----------------------------------------------------------------------------
+
+#pragma once
+
+#include "Stmt.h"
+
+namespace CppSharp { namespace CppParser { namespace AST {
+
+class Expr : public Stmt
+{
+ enum class LValueClassification
+ {
+ LV_Valid = 0,
+ LV_NotObjectType = 1,
+ LV_IncompleteVoidType = 2,
+ LV_DuplicateVectorComponents = 3,
+ LV_InvalidExpression = 4,
+ LV_InvalidMessageExpression = 5,
+ LV_MemberFunction = 6,
+ LV_SubObjCPropertySetting = 7,
+ LV_ClassTemporary = 8,
+ LV_ArrayTemporary = 9
+ };
+
+ enum class isModifiableLvalueResult
+ {
+ MLV_Valid = 0,
+ MLV_NotObjectType = 1,
+ MLV_IncompleteVoidType = 2,
+ MLV_DuplicateVectorComponents = 3,
+ MLV_InvalidExpression = 4,
+ MLV_LValueCast = 5,
+ MLV_IncompleteType = 6,
+ MLV_ConstQualified = 7,
+ MLV_ConstQualifiedField = 8,
+ MLV_ConstAddrSpace = 9,
+ MLV_ArrayType = 10,
+ MLV_NoSetterProperty = 11,
+ MLV_MemberFunction = 12,
+ MLV_SubObjCPropertySetting = 13,
+ MLV_InvalidMessageExpression = 14,
+ MLV_ClassTemporary = 15,
+ MLV_ArrayTemporary = 16
+ };
+
+ enum class SideEffectsKind
+ {
+ SE_NoSideEffects = 0,
+ SE_AllowUndefinedBehavior = 1,
+ SE_AllowSideEffects = 2
+ };
+
+ enum class ConstExprUsage
+ {
+ EvaluateForCodeGen = 0,
+ EvaluateForMangling = 1
+ };
+
+ enum class NullPointerConstantKind
+ {
+ NPCK_NotNull = 0,
+ NPCK_ZeroExpression = 1,
+ NPCK_ZeroLiteral = 2,
+ NPCK_CXX11_nullptr = 3,
+ NPCK_GNUNull = 4
+ };
+
+ enum class NullPointerConstantValueDependence
+ {
+ NPC_NeverValueDependent = 0,
+ NPC_ValueDependentIsNull = 1,
+ NPC_ValueDependentIsNotNull = 2
+ };
+
+ class Classification
+ {
+ enum class Kinds
+ {
+ CL_LValue = 0,
+ CL_XValue = 1,
+ CL_Function = 2,
+ CL_Void = 3,
+ CL_AddressableVoid = 4,
+ CL_DuplicateVectorComponents = 5,
+ CL_MemberFunction = 6,
+ CL_SubObjCPropertySetting = 7,
+ CL_ClassTemporary = 8,
+ CL_ArrayTemporary = 9,
+ CL_ObjCMessageRValue = 10,
+ CL_PRValue = 11
+ };
+
+ enum class ModifiableType
+ {
+ CM_Untested = 0,
+ CM_Modifiable = 1,
+ CM_RValue = 2,
+ CM_Function = 3,
+ CM_LValueCast = 4,
+ CM_NoSetterProperty = 5,
+ CM_ConstQualified = 6,
+ CM_ConstQualifiedField = 7,
+ CM_ConstAddrSpace = 8,
+ CM_ArrayType = 9,
+ CM_IncompleteType = 10
+ };
+ };
+
+ class EvalStatus
+ {
+ };
+
+ class EvalResult : public EvalStatus
+ {
+ };
+};
+
+class FullExpr : public Expr
+{
+};
+
+class ConstantExpr : public FullExpr
+{
+};
+
+class OpaqueValueExpr : public Expr
+{
+};
+
+class DeclRefExpr : public Expr
+{
+};
+
+class IntegerLiteral : public Expr
+{
+};
+
+class FixedPointLiteral : public Expr
+{
+};
+
+class CharacterLiteral : public Expr
+{
+ enum class CharacterKind
+ {
+ Ascii = 0,
+ Wide = 1,
+ UTF8 = 2,
+ UTF16 = 3,
+ UTF32 = 4
+ };
+};
+
+class FloatingLiteral : public Expr
+{
+};
+
+class ImaginaryLiteral : public Expr
+{
+};
+
+class StringLiteral : public Expr
+{
+ enum class StringKind
+ {
+ Ascii = 0,
+ Wide = 1,
+ UTF8 = 2,
+ UTF16 = 3,
+ UTF32 = 4
+ };
+
+ typedef const SourceLocation* tokloc_iterator;
+};
+
+class PredefinedExpr : public Expr
+{
+ enum class IdentKind
+ {
+ Func = 0,
+ Function = 1,
+ LFunction = 2,
+ FuncDName = 3,
+ FuncSig = 4,
+ LFuncSig = 5,
+ PrettyFunction = 6,
+ PrettyFunctionNoVirtual = 7
+ };
+};
+
+class ParenExpr : public Expr
+{
+};
+
+class UnaryOperator : public Expr
+{
+ typedef UnaryOperatorKind Opcode;
+};
+
+class OffsetOfExpr : public Expr
+{
+};
+
+class UnaryExprOrTypeTraitExpr : public Expr
+{
+};
+
+class ArraySubscriptExpr : public Expr
+{
+};
+
+class CallExpr : public Expr
+{
+ typedef ExprIterator arg_iterator;
+
+ typedef ConstExprIterator const_arg_iterator;
+
+ typedef iterator_range arg_range;
+
+ typedef iterator_range const_arg_range;
+};
+
+class MemberExpr : public Expr
+{
+};
+
+class CompoundLiteralExpr : public Expr
+{
+};
+
+class CastExpr : public Expr
+{
+ typedef CXXBaseSpecifier** path_iterator;
+
+ typedef const CXXBaseSpecifier* const* path_const_iterator;
+};
+
+class ImplicitCastExpr : public CastExpr
+{
+ enum class OnStack_t
+ {
+ OnStack = 0
+ };
+};
+
+class ExplicitCastExpr : public CastExpr
+{
+};
+
+class CStyleCastExpr : public ExplicitCastExpr
+{
+};
+
+class BinaryOperator : public Expr
+{
+ typedef BinaryOperatorKind Opcode;
+};
+
+class CompoundAssignOperator : public BinaryOperator
+{
+};
+
+class AbstractConditionalOperator : public Expr
+{
+};
+
+class ConditionalOperator : public AbstractConditionalOperator
+{
+};
+
+class BinaryConditionalOperator : public AbstractConditionalOperator
+{
+};
+
+class AddrLabelExpr : public Expr
+{
+};
+
+class StmtExpr : public Expr
+{
+};
+
+class ShuffleVectorExpr : public Expr
+{
+};
+
+class ConvertVectorExpr : public Expr
+{
+};
+
+class ChooseExpr : public Expr
+{
+};
+
+class GNUNullExpr : public Expr
+{
+};
+
+class VAArgExpr : public Expr
+{
+};
+
+class InitListExpr : public Expr
+{
+ typedef ASTVector InitExprsTy;
+
+ typedef iterator iterator;
+
+ typedef const_iterator const_iterator;
+
+ typedef reverse_iterator reverse_iterator;
+
+ typedef const_reverse_iterator const_reverse_iterator;
+};
+
+class DesignatedInitExpr : public Expr
+{
+ class Designator
+ {
+ };
+
+ class FieldDesignator
+ {
+ };
+
+ class ArrayOrRangeDesignator
+ {
+ };
+};
+
+class NoInitExpr : public Expr
+{
+};
+
+class DesignatedInitUpdateExpr : public Expr
+{
+};
+
+class ArrayInitLoopExpr : public Expr
+{
+};
+
+class ArrayInitIndexExpr : public Expr
+{
+};
+
+class ImplicitValueInitExpr : public Expr
+{
+};
+
+class ParenListExpr : public Expr
+{
+};
+
+class GenericSelectionExpr : public Expr
+{
+};
+
+class ExtVectorElementExpr : public Expr
+{
+};
+
+class BlockExpr : public Expr
+{
+};
+
+class AsTypeExpr : public Expr
+{
+};
+
+class PseudoObjectExpr : public Expr
+{
+ typedef Expr* const* semantics_iterator;
+
+ typedef const Expr* const* const_semantics_iterator;
+};
+
+class AtomicExpr : public Expr
+{
+ enum class AtomicOp
+ {
+ AO__c11_atomic_init = 0,
+ AO__c11_atomic_load = 1,
+ AO__c11_atomic_store = 2,
+ AO__c11_atomic_exchange = 3,
+ AO__c11_atomic_compare_exchange_strong = 4,
+ AO__c11_atomic_compare_exchange_weak = 5,
+ AO__c11_atomic_fetch_add = 6,
+ AO__c11_atomic_fetch_sub = 7,
+ AO__c11_atomic_fetch_and = 8,
+ AO__c11_atomic_fetch_or = 9,
+ AO__c11_atomic_fetch_xor = 10,
+ AO__atomic_load = 11,
+ AO__atomic_load_n = 12,
+ AO__atomic_store = 13,
+ AO__atomic_store_n = 14,
+ AO__atomic_exchange = 15,
+ AO__atomic_exchange_n = 16,
+ AO__atomic_compare_exchange = 17,
+ AO__atomic_compare_exchange_n = 18,
+ AO__atomic_fetch_add = 19,
+ AO__atomic_fetch_sub = 20,
+ AO__atomic_fetch_and = 21,
+ AO__atomic_fetch_or = 22,
+ AO__atomic_fetch_xor = 23,
+ AO__atomic_fetch_nand = 24,
+ AO__atomic_add_fetch = 25,
+ AO__atomic_sub_fetch = 26,
+ AO__atomic_and_fetch = 27,
+ AO__atomic_or_fetch = 28,
+ AO__atomic_xor_fetch = 29,
+ AO__atomic_nand_fetch = 30,
+ AO__opencl_atomic_init = 31,
+ AO__opencl_atomic_load = 32,
+ AO__opencl_atomic_store = 33,
+ AO__opencl_atomic_exchange = 34,
+ AO__opencl_atomic_compare_exchange_strong = 35,
+ AO__opencl_atomic_compare_exchange_weak = 36,
+ AO__opencl_atomic_fetch_add = 37,
+ AO__opencl_atomic_fetch_sub = 38,
+ AO__opencl_atomic_fetch_and = 39,
+ AO__opencl_atomic_fetch_or = 40,
+ AO__opencl_atomic_fetch_xor = 41,
+ AO__opencl_atomic_fetch_min = 42,
+ AO__opencl_atomic_fetch_max = 43,
+ AO__atomic_fetch_min = 44,
+ AO__atomic_fetch_max = 45,
+ BI_First = 0
+ };
+};
+
+class TypoExpr : public Expr
+{
+};
+
+} } }
diff --git a/src/CppParser/Stmt.h b/src/CppParser/Stmt.h
new file mode 100644
index 00000000..4f9aed09
--- /dev/null
+++ b/src/CppParser/Stmt.h
@@ -0,0 +1,372 @@
+// ----------------------------------------------------------------------------
+//
+// This is autogenerated code by CppSharp.
+// Do not edit this file or all your changes will be lost after re-generation.
+//
+// ----------------------------------------------------------------------------
+
+#pragma once
+
+namespace CppSharp { namespace CppParser { namespace AST {
+
+enum class StmtKind
+{
+ NoStmt = 0,
+ GCCAsmStmt = 1,
+ MSAsmStmt = 2,
+ firstAsmStmtConstant = 1,
+ lastAsmStmtConstant = 2,
+ AttributedStmt = 3,
+ BreakStmt = 4,
+ CXXCatchStmt = 5,
+ CXXForRangeStmt = 6,
+ CXXTryStmt = 7,
+ CapturedStmt = 8,
+ CompoundStmt = 9,
+ ContinueStmt = 10,
+ CoreturnStmt = 11,
+ CoroutineBodyStmt = 12,
+ DeclStmt = 13,
+ DoStmt = 14,
+ BinaryConditionalOperator = 15,
+ ConditionalOperator = 16,
+ firstAbstractConditionalOperatorConstant = 15,
+ lastAbstractConditionalOperatorConstant = 16,
+ AddrLabelExpr = 17,
+ ArrayInitIndexExpr = 18,
+ ArrayInitLoopExpr = 19,
+ ArraySubscriptExpr = 20,
+ ArrayTypeTraitExpr = 21,
+ AsTypeExpr = 22,
+ AtomicExpr = 23,
+ BinaryOperator = 24,
+ CompoundAssignOperator = 25,
+ firstBinaryOperatorConstant = 24,
+ lastBinaryOperatorConstant = 25,
+ BlockExpr = 26,
+ CXXBindTemporaryExpr = 27,
+ CXXBoolLiteralExpr = 28,
+ CXXConstructExpr = 29,
+ CXXTemporaryObjectExpr = 30,
+ firstCXXConstructExprConstant = 29,
+ lastCXXConstructExprConstant = 30,
+ CXXDefaultArgExpr = 31,
+ CXXDefaultInitExpr = 32,
+ CXXDeleteExpr = 33,
+ CXXDependentScopeMemberExpr = 34,
+ CXXFoldExpr = 35,
+ CXXInheritedCtorInitExpr = 36,
+ CXXNewExpr = 37,
+ CXXNoexceptExpr = 38,
+ CXXNullPtrLiteralExpr = 39,
+ CXXPseudoDestructorExpr = 40,
+ CXXScalarValueInitExpr = 41,
+ CXXStdInitializerListExpr = 42,
+ CXXThisExpr = 43,
+ CXXThrowExpr = 44,
+ CXXTypeidExpr = 45,
+ CXXUnresolvedConstructExpr = 46,
+ CXXUuidofExpr = 47,
+ CallExpr = 48,
+ CUDAKernelCallExpr = 49,
+ CXXMemberCallExpr = 50,
+ CXXOperatorCallExpr = 51,
+ UserDefinedLiteral = 52,
+ firstCallExprConstant = 48,
+ lastCallExprConstant = 52,
+ CStyleCastExpr = 53,
+ CXXFunctionalCastExpr = 54,
+ CXXConstCastExpr = 55,
+ CXXDynamicCastExpr = 56,
+ CXXReinterpretCastExpr = 57,
+ CXXStaticCastExpr = 58,
+ firstCXXNamedCastExprConstant = 55,
+ lastCXXNamedCastExprConstant = 58,
+ ObjCBridgedCastExpr = 59,
+ firstExplicitCastExprConstant = 53,
+ lastExplicitCastExprConstant = 59,
+ ImplicitCastExpr = 60,
+ firstCastExprConstant = 53,
+ lastCastExprConstant = 60,
+ CharacterLiteral = 61,
+ ChooseExpr = 62,
+ CompoundLiteralExpr = 63,
+ ConvertVectorExpr = 64,
+ CoawaitExpr = 65,
+ CoyieldExpr = 66,
+ firstCoroutineSuspendExprConstant = 65,
+ lastCoroutineSuspendExprConstant = 66,
+ DeclRefExpr = 67,
+ DependentCoawaitExpr = 68,
+ DependentScopeDeclRefExpr = 69,
+ DesignatedInitExpr = 70,
+ DesignatedInitUpdateExpr = 71,
+ ExpressionTraitExpr = 72,
+ ExtVectorElementExpr = 73,
+ FixedPointLiteral = 74,
+ FloatingLiteral = 75,
+ ConstantExpr = 76,
+ ExprWithCleanups = 77,
+ firstFullExprConstant = 76,
+ lastFullExprConstant = 77,
+ FunctionParmPackExpr = 78,
+ GNUNullExpr = 79,
+ GenericSelectionExpr = 80,
+ ImaginaryLiteral = 81,
+ ImplicitValueInitExpr = 82,
+ InitListExpr = 83,
+ IntegerLiteral = 84,
+ LambdaExpr = 85,
+ MSPropertyRefExpr = 86,
+ MSPropertySubscriptExpr = 87,
+ MaterializeTemporaryExpr = 88,
+ MemberExpr = 89,
+ NoInitExpr = 90,
+ OMPArraySectionExpr = 91,
+ ObjCArrayLiteral = 92,
+ ObjCAvailabilityCheckExpr = 93,
+ ObjCBoolLiteralExpr = 94,
+ ObjCBoxedExpr = 95,
+ ObjCDictionaryLiteral = 96,
+ ObjCEncodeExpr = 97,
+ ObjCIndirectCopyRestoreExpr = 98,
+ ObjCIsaExpr = 99,
+ ObjCIvarRefExpr = 100,
+ ObjCMessageExpr = 101,
+ ObjCPropertyRefExpr = 102,
+ ObjCProtocolExpr = 103,
+ ObjCSelectorExpr = 104,
+ ObjCStringLiteral = 105,
+ ObjCSubscriptRefExpr = 106,
+ OffsetOfExpr = 107,
+ OpaqueValueExpr = 108,
+ UnresolvedLookupExpr = 109,
+ UnresolvedMemberExpr = 110,
+ firstOverloadExprConstant = 109,
+ lastOverloadExprConstant = 110,
+ PackExpansionExpr = 111,
+ ParenExpr = 112,
+ ParenListExpr = 113,
+ PredefinedExpr = 114,
+ PseudoObjectExpr = 115,
+ ShuffleVectorExpr = 116,
+ SizeOfPackExpr = 117,
+ StmtExpr = 118,
+ StringLiteral = 119,
+ SubstNonTypeTemplateParmExpr = 120,
+ SubstNonTypeTemplateParmPackExpr = 121,
+ TypeTraitExpr = 122,
+ TypoExpr = 123,
+ UnaryExprOrTypeTraitExpr = 124,
+ UnaryOperator = 125,
+ VAArgExpr = 126,
+ firstExprConstant = 15,
+ lastExprConstant = 126,
+ ForStmt = 127,
+ GotoStmt = 128,
+ IfStmt = 129,
+ IndirectGotoStmt = 130,
+ LabelStmt = 131,
+ MSDependentExistsStmt = 132,
+ NullStmt = 133,
+ OMPAtomicDirective = 134,
+ OMPBarrierDirective = 135,
+ OMPCancelDirective = 136,
+ OMPCancellationPointDirective = 137,
+ OMPCriticalDirective = 138,
+ OMPFlushDirective = 139,
+ OMPDistributeDirective = 140,
+ OMPDistributeParallelForDirective = 141,
+ OMPDistributeParallelForSimdDirective = 142,
+ OMPDistributeSimdDirective = 143,
+ OMPForDirective = 144,
+ OMPForSimdDirective = 145,
+ OMPParallelForDirective = 146,
+ OMPParallelForSimdDirective = 147,
+ OMPSimdDirective = 148,
+ OMPTargetParallelForSimdDirective = 149,
+ OMPTargetSimdDirective = 150,
+ OMPTargetTeamsDistributeDirective = 151,
+ OMPTargetTeamsDistributeParallelForDirective = 152,
+ OMPTargetTeamsDistributeParallelForSimdDirective = 153,
+ OMPTargetTeamsDistributeSimdDirective = 154,
+ OMPTaskLoopDirective = 155,
+ OMPTaskLoopSimdDirective = 156,
+ OMPTeamsDistributeDirective = 157,
+ OMPTeamsDistributeParallelForDirective = 158,
+ OMPTeamsDistributeParallelForSimdDirective = 159,
+ OMPTeamsDistributeSimdDirective = 160,
+ firstOMPLoopDirectiveConstant = 140,
+ lastOMPLoopDirectiveConstant = 160,
+ OMPMasterDirective = 161,
+ OMPOrderedDirective = 162,
+ OMPParallelDirective = 163,
+ OMPParallelSectionsDirective = 164,
+ OMPSectionDirective = 165,
+ OMPSectionsDirective = 166,
+ OMPSingleDirective = 167,
+ OMPTargetDataDirective = 168,
+ OMPTargetDirective = 169,
+ OMPTargetEnterDataDirective = 170,
+ OMPTargetExitDataDirective = 171,
+ OMPTargetParallelDirective = 172,
+ OMPTargetParallelForDirective = 173,
+ OMPTargetTeamsDirective = 174,
+ OMPTargetUpdateDirective = 175,
+ OMPTaskDirective = 176,
+ OMPTaskgroupDirective = 177,
+ OMPTaskwaitDirective = 178,
+ OMPTaskyieldDirective = 179,
+ OMPTeamsDirective = 180,
+ firstOMPExecutableDirectiveConstant = 134,
+ lastOMPExecutableDirectiveConstant = 180,
+ ObjCAtCatchStmt = 181,
+ ObjCAtFinallyStmt = 182,
+ ObjCAtSynchronizedStmt = 183,
+ ObjCAtThrowStmt = 184,
+ ObjCAtTryStmt = 185,
+ ObjCAutoreleasePoolStmt = 186,
+ ObjCForCollectionStmt = 187,
+ ReturnStmt = 188,
+ SEHExceptStmt = 189,
+ SEHFinallyStmt = 190,
+ SEHLeaveStmt = 191,
+ SEHTryStmt = 192,
+ CaseStmt = 193,
+ DefaultStmt = 194,
+ firstSwitchCaseConstant = 193,
+ lastSwitchCaseConstant = 194,
+ SwitchStmt = 195,
+ WhileStmt = 196,
+ firstStmtConstant = 1,
+ lastStmtConstant = 196
+};
+
+class Stmt
+{
+};
+
+class DeclStmt : public Stmt
+{
+};
+
+class NullStmt : public Stmt
+{
+};
+
+class CompoundStmt : public Stmt
+{
+};
+
+class SwitchCase : public Stmt
+{
+};
+
+class CaseStmt : public SwitchCase
+{
+};
+
+class DefaultStmt : public SwitchCase
+{
+};
+
+class LabelStmt : public Stmt
+{
+};
+
+class AttributedStmt : public Stmt
+{
+};
+
+class IfStmt : public Stmt
+{
+};
+
+class SwitchStmt : public Stmt
+{
+};
+
+class WhileStmt : public Stmt
+{
+};
+
+class DoStmt : public Stmt
+{
+};
+
+class ForStmt : public Stmt
+{
+};
+
+class GotoStmt : public Stmt
+{
+};
+
+class IndirectGotoStmt : public Stmt
+{
+};
+
+class ContinueStmt : public Stmt
+{
+};
+
+class BreakStmt : public Stmt
+{
+};
+
+class ReturnStmt : public Stmt
+{
+};
+
+class AsmStmt : public Stmt
+{
+};
+
+class GCCAsmStmt : public AsmStmt
+{
+ class AsmStringPiece
+ {
+ enum class Kind
+ {
+ String = 0,
+ Operand = 1
+ };
+ };
+};
+
+class MSAsmStmt : public AsmStmt
+{
+};
+
+class SEHExceptStmt : public Stmt
+{
+};
+
+class SEHFinallyStmt : public Stmt
+{
+};
+
+class SEHTryStmt : public Stmt
+{
+};
+
+class SEHLeaveStmt : public Stmt
+{
+};
+
+class CapturedStmt : public Stmt
+{
+ enum class VariableCaptureKind
+ {
+ VCK_This = 0,
+ VCK_ByRef = 1,
+ VCK_ByCopy = 2,
+ VCK_VLAType = 3
+ };
+
+ class Capture
+ {
+ };
+};
+
+} } }