// ---------------------------------------------------------------------------- // // This is autogenerated code by CppSharp. // Do not edit this file or all your changes will be lost after re-generation. // // ---------------------------------------------------------------------------- using System; using System.Collections.Generic; namespace CppSharp.AST { public enum CastKind { Dependent = 0, BitCast = 1, LValueBitCast = 2, LValueToRValue = 3, NoOp = 4, BaseToDerived = 5, DerivedToBase = 6, UncheckedDerivedToBase = 7, Dynamic = 8, ToUnion = 9, ArrayToPointerDecay = 10, FunctionToPointerDecay = 11, NullToPointer = 12, NullToMemberPointer = 13, BaseToDerivedMemberPointer = 14, DerivedToBaseMemberPointer = 15, MemberPointerToBoolean = 16, ReinterpretMemberPointer = 17, UserDefinedConversion = 18, ConstructorConversion = 19, IntegralToPointer = 20, PointerToIntegral = 21, PointerToBoolean = 22, ToVoid = 23, VectorSplat = 24, IntegralCast = 25, IntegralToBoolean = 26, IntegralToFloating = 27, FixedPointCast = 28, FixedPointToBoolean = 29, FloatingToIntegral = 30, FloatingToBoolean = 31, BooleanToSignedIntegral = 32, FloatingCast = 33, CPointerToObjCPointerCast = 34, BlockPointerToObjCPointerCast = 35, AnyPointerToBlockPointerCast = 36, ObjCObjectLValueCast = 37, FloatingRealToComplex = 38, FloatingComplexToReal = 39, FloatingComplexToBoolean = 40, FloatingComplexCast = 41, FloatingComplexToIntegralComplex = 42, IntegralRealToComplex = 43, IntegralComplexToReal = 44, IntegralComplexToBoolean = 45, IntegralComplexCast = 46, IntegralComplexToFloatingComplex = 47, ARCProduceObject = 48, ARCConsumeObject = 49, ARCReclaimReturnedObject = 50, ARCExtendBlockObject = 51, AtomicToNonAtomic = 52, NonAtomicToAtomic = 53, CopyAndAutoreleaseBlockObject = 54, BuiltinFnToFnPtr = 55, ZeroToOCLOpaqueType = 56, AddressSpaceConversion = 57, IntToOCLSampler = 58 } public enum BinaryOperatorKind { PtrMemD = 0, PtrMemI = 1, Mul = 2, Div = 3, Rem = 4, Add = 5, Sub = 6, Shl = 7, Shr = 8, Cmp = 9, LT = 10, GT = 11, LE = 12, GE = 13, EQ = 14, NE = 15, And = 16, Xor = 17, Or = 18, LAnd = 19, LOr = 20, Assign = 21, MulAssign = 22, DivAssign = 23, RemAssign = 24, AddAssign = 25, SubAssign = 26, ShlAssign = 27, ShrAssign = 28, AndAssign = 29, XorAssign = 30, OrAssign = 31, Comma = 32 } public enum UnaryOperatorKind { PostInc = 0, PostDec = 1, PreInc = 2, PreDec = 3, AddrOf = 4, Deref = 5, Plus = 6, Minus = 7, Not = 8, LNot = 9, Real = 10, Imag = 11, Extension = 12, Coawait = 13 } public enum ObjCBridgeCastKind { /// /// Bridging via __bridge, which does nothing but reinterpret /// the bits. /// Bridge = 0, /// /// Bridging via __bridge_transfer, which transfers ownership of an /// Objective-C pointer into ARC. /// BridgeTransfer = 1, /// /// Bridging via __bridge_retain, which makes an ARC object available /// as a +1 C pointer. /// BridgeRetained = 2 } public enum OverloadedOperatorKind { /// Not an overloaded operator None = 0, New = 1, Delete = 2, ArrayNew = 3, ArrayDelete = 4, Plus = 5, Minus = 6, Star = 7, Slash = 8, Percent = 9, Caret = 10, Amp = 11, Pipe = 12, Tilde = 13, Exclaim = 14, Equal = 15, Less = 16, Greater = 17, PlusEqual = 18, MinusEqual = 19, StarEqual = 20, SlashEqual = 21, PercentEqual = 22, CaretEqual = 23, AmpEqual = 24, PipeEqual = 25, LessLess = 26, GreaterGreater = 27, LessLessEqual = 28, GreaterGreaterEqual = 29, EqualEqual = 30, ExclaimEqual = 31, LessEqual = 32, GreaterEqual = 33, Spaceship = 34, AmpAmp = 35, PipePipe = 36, PlusPlus = 37, MinusMinus = 38, Comma = 39, ArrowStar = 40, Arrow = 41, Call = 42, Subscript = 43, Conditional = 44, Coawait = 45, } public enum UnaryExprOrTypeTrait { SizeOf = 0, /// /// Used for C's _Alignof and C++'s alignof. /// _Alignof and alignof return the required ABI alignment. /// AlignOf = 1, /// /// Used for C's _Alignof and C++'s alignof. /// _Alignof and alignof return the required ABI alignment. /// VecStep = 2, /// /// Used for C's _Alignof and C++'s alignof. /// _Alignof and alignof return the required ABI alignment. /// OpenMPRequiredSimdAlign = 3, /// /// Used for GCC's __alignof. /// __alignof returns the preferred alignment of a type, the alignment /// clang will attempt to give an object of the type if allowed by ABI. /// PreferredAlignOf = 4 } public abstract partial class Expr : Stmt { public enum LValueClassification { Valid = 0, NotObjectType = 1, IncompleteVoidType = 2, DuplicateVectorComponents = 3, InvalidExpression = 4, InvalidMessageExpression = 5, MemberFunction = 6, SubObjCPropertySetting = 7, ClassTemporary = 8, ArrayTemporary = 9 } public enum isModifiableLvalueResult { Valid = 0, NotObjectType = 1, IncompleteVoidType = 2, DuplicateVectorComponents = 3, InvalidExpression = 4, LValueCast = 5, IncompleteType = 6, ConstQualified = 7, ConstQualifiedField = 8, ConstAddrSpace = 9, ArrayType = 10, NoSetterProperty = 11, MemberFunction = 12, SubObjCPropertySetting = 13, InvalidMessageExpression = 14, ClassTemporary = 15, ArrayTemporary = 16 } public enum SideEffectsKind { /// Strictly evaluate the expression. NoSideEffects = 0, /// /// Allow UB that we can give a value, but not /// arbitrary unmodeled side effects. /// AllowUndefinedBehavior = 1, /// Allow any unmodeled side effect. AllowSideEffects = 2 } public enum ConstExprUsage { EvaluateForCodeGen = 0, EvaluateForMangling = 1 } public enum NullPointerConstantKind { /// Expression is not a Null pointer constant. NotNull = 0, /// /// Expression is a Null pointer constant built from a zero integer /// expression that is not a simple, possibly parenthesized, zero literal. /// C++ Core Issue 903 will classify these expressions as "not pointers" /// once it is adopted. /// http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html#903 /// ZeroExpression = 1, /// Expression is a Null pointer constant built from a literal zero. ZeroLiteral = 2, /// Expression is a C++11 nullptr. CXX11_nullptr = 3, /// Expression is a GNU-style __null constant. GNUNull = 4 } public enum NullPointerConstantValueDependence { /// Specifies that the expression should never be value-dependent. NeverValueDependent = 0, /// /// Specifies that a value-dependent expression of integral or /// dependent type should be considered a null pointer constant. /// ValueDependentIsNull = 1, /// /// Specifies that a value-dependent expression should be considered /// to never be a null pointer constant. /// ValueDependentIsNotNull = 2 } public partial class Classification { public enum Kinds { LValue = 0, XValue = 1, Function = 2, Void = 3, AddressableVoid = 4, DuplicateVectorComponents = 5, MemberFunction = 6, SubObjCPropertySetting = 7, ClassTemporary = 8, ArrayTemporary = 9, ObjCMessageRValue = 10, PRValue = 11 } public enum ModifiableType { Untested = 0, Modifiable = 1, RValue = 2, Function = 3, LValueCast = 4, NoSetterProperty = 5, ConstQualified = 6, ConstQualifiedField = 7, ConstAddrSpace = 8, ArrayType = 9, IncompleteType = 10 } public Classification() { } public Expr.Classification.Kinds Kind { get; set; } public Expr.Classification.ModifiableType Modifiable { get; set; } public bool IsLValue { get; set; } public bool IsXValue { get; set; } public bool IsGLValue { get; set; } public bool IsPRValue { get; set; } public bool IsRValue { get; set; } public bool IsModifiable { get; set; } } public Expr() { } public QualifiedType Type { get; set; } public bool ValueDependent { get; set; } public bool TypeDependent { get; set; } public bool InstantiationDependent { get; set; } public bool ContainsUnexpandedParameterPack { get; set; } public SourceLocation ExprLoc { get; set; } public bool IsLValue { get; set; } public bool IsRValue { get; set; } public bool IsXValue { get; set; } public bool IsGLValue { get; set; } public bool IsOrdinaryOrBitFieldObject { get; set; } public Field SourceBitField { get; set; } public Declaration ReferencedDeclOfCallee { get; set; } public bool HasPlaceholderType { get; set; } } public abstract partial class FullExpr : Expr { public FullExpr() { } public Expr SubExpr { get; set; } } public partial class ConstantExpr : FullExpr { public ConstantExpr() { } public override T Visit(IStmtVisitor visitor) => visitor.VisitConstantExpr(this); } public partial class OpaqueValueExpr : Expr { public OpaqueValueExpr() { } public bool IsUnique { get; set; } public SourceLocation Location { get; set; } public Expr SourceExpr { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitOpaqueValueExpr(this); } public partial class DeclRefExpr : Expr { public DeclRefExpr() { } public SourceLocation Location { get; set; } public bool HadMultipleCandidates { get; set; } public bool HasQualifier { get; set; } public Declaration FoundDecl { get; set; } public bool HasTemplateKWAndArgsInfo { get; set; } public SourceLocation TemplateKeywordLoc { get; set; } public SourceLocation LAngleLoc { get; set; } public SourceLocation RAngleLoc { get; set; } public bool HasTemplateKeyword { get; set; } public bool HasExplicitTemplateArgs { get; set; } public uint NumTemplateArgs { get; set; } public bool RefersToEnclosingVariableOrCapture { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitDeclRefExpr(this); } public partial class IntegerLiteral : Expr { public IntegerLiteral() { } public SourceLocation Location { get; set; } public ulong Value { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitIntegerLiteral(this); } public partial class FixedPointLiteral : Expr { public FixedPointLiteral() { } public SourceLocation Location { get; set; } public ulong Value { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitFixedPointLiteral(this); } public partial class CharacterLiteral : Expr { public enum CharacterKind { Ascii = 0, Wide = 1, UTF8 = 2, UTF16 = 3, UTF32 = 4 } public CharacterLiteral() { } public SourceLocation Location { get; set; } public CharacterLiteral.CharacterKind Kind { get; set; } public uint Value { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitCharacterLiteral(this); } public partial class FloatingLiteral : Expr { public FloatingLiteral() { } public bool Exact { get; set; } public SourceLocation Location { get; set; } public double ValueAsApproximateDouble { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitFloatingLiteral(this); } public partial class ImaginaryLiteral : Expr { public ImaginaryLiteral() { } public Expr SubExpr { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitImaginaryLiteral(this); } public partial class StringLiteral : Expr { public enum StringKind { Ascii = 0, Wide = 1, UTF8 = 2, UTF16 = 3, UTF32 = 4 } public StringLiteral() { } public string String { get; set; } public string Bytes { get; set; } public uint ByteLength { get; set; } public uint Length { get; set; } public uint CharByteWidth { get; set; } public StringLiteral.StringKind Kind { get; set; } public bool IsAscii { get; set; } public bool IsWide { get; set; } public bool IsUTF8 { get; set; } public bool IsUTF16 { get; set; } public bool IsUTF32 { get; set; } public bool IsPascal { get; set; } public bool ContainsNonAscii { get; set; } public bool ContainsNonAsciiOrNull { get; set; } public uint NumConcatenated { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitStringLiteral(this); } public partial class PredefinedExpr : Expr { public enum IdentKind { Func = 0, Function = 1, LFunction = 2, FuncDName = 3, FuncSig = 4, LFuncSig = 5, PrettyFunction = 6, /// /// The same as PrettyFunction, except that the /// 'virtual' keyword is omitted for virtual member functions. /// PrettyFunctionNoVirtual = 7 } public PredefinedExpr() { } public SourceLocation Location { get; set; } public PredefinedExpr.IdentKind identKind { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitPredefinedExpr(this); } public partial class ParenExpr : Expr { public ParenExpr() { } public Expr SubExpr { get; set; } public SourceLocation LParen { get; set; } public SourceLocation RParen { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitParenExpr(this); } public partial class UnaryOperator : Expr { public UnaryOperator() { } public UnaryOperatorKind Opcode { get; set; } public Expr SubExpr { get; set; } public SourceLocation OperatorLoc { get; set; } public bool CanOverflow { get; set; } public bool IsPrefix { get; set; } public bool IsPostfix { get; set; } public bool IsIncrementOp { get; set; } public bool IsDecrementOp { get; set; } public bool IsIncrementDecrementOp { get; set; } public bool IsArithmeticOp { get; set; } public bool IsFPContractableWithinStatement { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitUnaryOperator(this); } public partial class OffsetOfExpr : Expr { public OffsetOfExpr() { } public SourceLocation OperatorLoc { get; set; } public SourceLocation RParenLoc { get; set; } public uint NumComponents { get; set; } public uint NumExpressions { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitOffsetOfExpr(this); } public partial class UnaryExprOrTypeTraitExpr : Expr { public UnaryExprOrTypeTraitExpr() { } public UnaryExprOrTypeTrait Kind { get; set; } public SourceLocation OperatorLoc { get; set; } public SourceLocation RParenLoc { get; set; } public bool IsArgumentType { get; set; } public QualifiedType ArgumentType { get; set; } public Expr ArgumentExpr { get; set; } public QualifiedType TypeOfArgument { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitUnaryExprOrTypeTraitExpr(this); } public partial class ArraySubscriptExpr : Expr { public ArraySubscriptExpr() { } public Expr LHS { get; set; } public Expr RHS { get; set; } public SourceLocation RBracketLoc { get; set; } public Expr Base { get; set; } public Expr Idx { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitArraySubscriptExpr(this); } public partial class CallExpr : Expr { public CallExpr() { } public List Arguments { get; private set; } = new List(); public Expr Callee { get; set; } public SourceLocation RParenLoc { get; set; } public Declaration CalleeDecl { get; set; } public Function DirectCallee { get; set; } public uint NumArgs { get; set; } public uint NumCommas { get; set; } public uint BuiltinCallee { get; set; } public bool IsCallToStdMove { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitCallExpr(this); } public partial class MemberExpr : Expr { public MemberExpr() { } public Expr Base { get; set; } public bool Arrow { get; set; } public SourceLocation MemberLoc { get; set; } public bool HadMultipleCandidates { get; set; } public bool HasQualifier { get; set; } public SourceLocation TemplateKeywordLoc { get; set; } public SourceLocation LAngleLoc { get; set; } public SourceLocation RAngleLoc { get; set; } public bool HasTemplateKeyword { get; set; } public bool HasExplicitTemplateArgs { get; set; } public uint NumTemplateArgs { get; set; } public SourceLocation OperatorLoc { get; set; } public bool IsImplicitAccess { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitMemberExpr(this); } public partial class CompoundLiteralExpr : Expr { public CompoundLiteralExpr() { } public Expr Initializer { get; set; } public bool FileScope { get; set; } public SourceLocation LParenLoc { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitCompoundLiteralExpr(this); } public abstract partial class CastExpr : Expr { public CastExpr() { } public CastKind CastKind { get; set; } public Expr SubExpr { get; set; } public string CastKindName { get; set; } public Expr SubExprAsWritten { get; set; } public Declaration ConversionFunction { get; set; } public bool PathEmpty { get; set; } public uint PathSize { get; set; } } public partial class ImplicitCastExpr : CastExpr { public enum OnStack_t { OnStack = 0 } public ImplicitCastExpr() { } public bool IsPartOfExplicitCast { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitImplicitCastExpr(this); } public abstract partial class ExplicitCastExpr : CastExpr { public ExplicitCastExpr() { } public QualifiedType TypeAsWritten { get; set; } } public partial class CStyleCastExpr : ExplicitCastExpr { public CStyleCastExpr() { } public SourceLocation LParenLoc { get; set; } public SourceLocation RParenLoc { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitCStyleCastExpr(this); } public partial class BinaryOperator : Expr { public BinaryOperator() { } public SourceLocation OperatorLoc { get; set; } public BinaryOperatorKind Opcode { get; set; } public Expr LHS { get; set; } public Expr RHS { get; set; } public string OpcodeStr { get; set; } public bool IsPtrMemOp { get; set; } public bool IsMultiplicativeOp { get; set; } public bool IsAdditiveOp { get; set; } public bool IsShiftOp { get; set; } public bool IsBitwiseOp { get; set; } public bool IsRelationalOp { get; set; } public bool IsEqualityOp { get; set; } public bool IsComparisonOp { get; set; } public bool IsLogicalOp { get; set; } public bool IsAssignmentOp { get; set; } public bool IsCompoundAssignmentOp { get; set; } public bool IsShiftAssignOp { get; set; } public bool IsFPContractableWithinStatement { get; set; } public bool IsFEnvAccessOn { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitBinaryOperator(this); } public partial class CompoundAssignOperator : BinaryOperator { public CompoundAssignOperator() { } public QualifiedType ComputationLHSType { get; set; } public QualifiedType ComputationResultType { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitCompoundAssignOperator(this); } public abstract partial class AbstractConditionalOperator : Expr { public AbstractConditionalOperator() { } public Expr Cond { get; set; } public Expr TrueExpr { get; set; } public Expr FalseExpr { get; set; } public SourceLocation QuestionLoc { get; set; } public SourceLocation ColonLoc { get; set; } } public partial class ConditionalOperator : AbstractConditionalOperator { public ConditionalOperator() { } public Expr LHS { get; set; } public Expr RHS { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitConditionalOperator(this); } public partial class BinaryConditionalOperator : AbstractConditionalOperator { public BinaryConditionalOperator() { } public Expr Common { get; set; } public OpaqueValueExpr OpaqueValue { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitBinaryConditionalOperator(this); } public partial class AddrLabelExpr : Expr { public AddrLabelExpr() { } public SourceLocation AmpAmpLoc { get; set; } public SourceLocation LabelLoc { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitAddrLabelExpr(this); } public partial class StmtExpr : Expr { public StmtExpr() { } public CompoundStmt SubStmt { get; set; } public SourceLocation LParenLoc { get; set; } public SourceLocation RParenLoc { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitStmtExpr(this); } public partial class ShuffleVectorExpr : Expr { public ShuffleVectorExpr() { } public SourceLocation BuiltinLoc { get; set; } public SourceLocation RParenLoc { get; set; } public uint NumSubExprs { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitShuffleVectorExpr(this); } public partial class ConvertVectorExpr : Expr { public ConvertVectorExpr() { } public Expr SrcExpr { get; set; } public SourceLocation BuiltinLoc { get; set; } public SourceLocation RParenLoc { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitConvertVectorExpr(this); } public partial class ChooseExpr : Expr { public ChooseExpr() { } public bool IsConditionTrue { get; set; } public Expr Cond { get; set; } public Expr LHS { get; set; } public Expr RHS { get; set; } public SourceLocation BuiltinLoc { get; set; } public SourceLocation RParenLoc { get; set; } public bool IsConditionDependent { get; set; } public Expr ChosenSubExpr { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitChooseExpr(this); } public partial class GNUNullExpr : Expr { public GNUNullExpr() { } public SourceLocation TokenLocation { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitGNUNullExpr(this); } public partial class VAArgExpr : Expr { public VAArgExpr() { } public Expr SubExpr { get; set; } public bool IsMicrosoftABI { get; set; } public SourceLocation BuiltinLoc { get; set; } public SourceLocation RParenLoc { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitVAArgExpr(this); } public partial class InitListExpr : Expr { public InitListExpr() { } public Expr ArrayFiller { get; set; } public SourceLocation LBraceLoc { get; set; } public SourceLocation RBraceLoc { get; set; } public InitListExpr SyntacticForm { get; set; } public uint NumInits { get; set; } public bool HasArrayFiller { get; set; } public bool IsExplicit { get; set; } public bool IsStringLiteralInit { get; set; } public bool IsTransparent { get; set; } public bool IsSemanticForm { get; set; } public InitListExpr SemanticForm { get; set; } public bool IsSyntacticForm { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitInitListExpr(this); } public partial class DesignatedInitExpr : Expr { public partial class Designator { public Designator() { } public Field Field { get; set; } public bool IsFieldDesignator { get; set; } public bool IsArrayDesignator { get; set; } public bool IsArrayRangeDesignator { get; set; } public SourceLocation DotLoc { get; set; } public SourceLocation FieldLoc { get; set; } public SourceLocation LBracketLoc { get; set; } public SourceLocation RBracketLoc { get; set; } public SourceLocation EllipsisLoc { get; set; } public uint FirstExprIndex { get; set; } public SourceRange SourceRange { get; set; } } public partial class FieldDesignator { public FieldDesignator() { } } public partial class ArrayOrRangeDesignator { public ArrayOrRangeDesignator() { } } public DesignatedInitExpr() { } public SourceLocation EqualOrColonLoc { get; set; } public Expr Init { get; set; } public uint Size { get; set; } public bool UsesGNUSyntax { get; set; } public uint NumSubExprs { get; set; } public SourceRange DesignatorsSourceRange { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitDesignatedInitExpr(this); } public partial class NoInitExpr : Expr { public NoInitExpr() { } public override T Visit(IStmtVisitor visitor) => visitor.VisitNoInitExpr(this); } public partial class DesignatedInitUpdateExpr : Expr { public DesignatedInitUpdateExpr() { } public Expr Base { get; set; } public InitListExpr Updater { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitDesignatedInitUpdateExpr(this); } public partial class ArrayInitLoopExpr : Expr { public ArrayInitLoopExpr() { } public OpaqueValueExpr CommonExpr { get; set; } public Expr SubExpr { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitArrayInitLoopExpr(this); } public partial class ArrayInitIndexExpr : Expr { public ArrayInitIndexExpr() { } public override T Visit(IStmtVisitor visitor) => visitor.VisitArrayInitIndexExpr(this); } public partial class ImplicitValueInitExpr : Expr { public ImplicitValueInitExpr() { } public override T Visit(IStmtVisitor visitor) => visitor.VisitImplicitValueInitExpr(this); } public partial class ParenListExpr : Expr { public ParenListExpr() { } public uint NumExprs { get; set; } public SourceLocation LParenLoc { get; set; } public SourceLocation RParenLoc { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitParenListExpr(this); } public partial class GenericSelectionExpr : Expr { public GenericSelectionExpr() { } public uint NumAssocs { get; set; } public SourceLocation GenericLoc { get; set; } public SourceLocation DefaultLoc { get; set; } public SourceLocation RParenLoc { get; set; } public Expr ControllingExpr { get; set; } public bool IsResultDependent { get; set; } public uint ResultIndex { get; set; } public Expr ResultExpr { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitGenericSelectionExpr(this); } public partial class ExtVectorElementExpr : Expr { public ExtVectorElementExpr() { } public Expr Base { get; set; } public SourceLocation AccessorLoc { get; set; } public uint NumElements { get; set; } public bool ContainsDuplicateElements { get; set; } public bool IsArrow { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitExtVectorElementExpr(this); } public partial class BlockExpr : Expr { public BlockExpr() { } public SourceLocation CaretLocation { get; set; } public Stmt Body { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitBlockExpr(this); } public partial class AsTypeExpr : Expr { public AsTypeExpr() { } public Expr SrcExpr { get; set; } public SourceLocation BuiltinLoc { get; set; } public SourceLocation RParenLoc { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitAsTypeExpr(this); } public partial class PseudoObjectExpr : Expr { public PseudoObjectExpr() { } public Expr SyntacticForm { get; set; } public uint ResultExprIndex { get; set; } public Expr ResultExpr { get; set; } public uint NumSemanticExprs { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitPseudoObjectExpr(this); } public partial class AtomicExpr : Expr { public enum AtomicOp { C11AtomicInit = 0, C11AtomicLoad = 1, C11AtomicStore = 2, C11AtomicExchange = 3, C11AtomicCompareExchangeStrong = 4, C11AtomicCompareExchangeWeak = 5, C11AtomicFetchAdd = 6, C11AtomicFetchSub = 7, C11AtomicFetchAnd = 8, C11AtomicFetchOr = 9, C11AtomicFetchXor = 10, AtomicLoad = 11, AtomicLoadN = 12, AtomicStore = 13, AtomicStoreN = 14, AtomicExchange = 15, AtomicExchangeN = 16, AtomicCompareExchange = 17, AtomicCompareExchangeN = 18, AtomicFetchAdd = 19, AtomicFetchSub = 20, AtomicFetchAnd = 21, AtomicFetchOr = 22, AtomicFetchXor = 23, AtomicFetchNand = 24, AtomicAddFetch = 25, AtomicSubFetch = 26, AtomicAndFetch = 27, AtomicOrFetch = 28, AtomicXorFetch = 29, AtomicNandFetch = 30, OpenclAtomicInit = 31, OpenclAtomicLoad = 32, OpenclAtomicStore = 33, OpenclAtomicExchange = 34, OpenclAtomicCompareExchangeStrong = 35, OpenclAtomicCompareExchangeWeak = 36, OpenclAtomicFetchAdd = 37, OpenclAtomicFetchSub = 38, OpenclAtomicFetchAnd = 39, OpenclAtomicFetchOr = 40, OpenclAtomicFetchXor = 41, OpenclAtomicFetchMin = 42, OpenclAtomicFetchMax = 43, AtomicFetchMin = 44, AtomicFetchMax = 45, } public AtomicExpr() { } public Expr Ptr { get; set; } public Expr Order { get; set; } public Expr Scope { get; set; } public Expr Val1 { get; set; } public Expr OrderFail { get; set; } public Expr Val2 { get; set; } public Expr Weak { get; set; } public QualifiedType ValueType { get; set; } public AtomicExpr.AtomicOp Op { get; set; } public uint NumSubExprs { get; set; } public bool IsVolatile { get; set; } public bool IsCmpXChg { get; set; } public bool IsOpenCL { get; set; } public SourceLocation BuiltinLoc { get; set; } public SourceLocation RParenLoc { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitAtomicExpr(this); } public partial class TypoExpr : Expr { public TypoExpr() { } public override T Visit(IStmtVisitor visitor) => visitor.VisitTypoExpr(this); } public partial class CXXOperatorCallExpr : CallExpr { public CXXOperatorCallExpr() { } public OverloadedOperatorKind Operator { get; set; } public bool IsAssignmentOp { get; set; } public bool IsInfixBinaryOp { get; set; } public SourceLocation OperatorLoc { get; set; } public bool IsFPContractableWithinStatement { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitCXXOperatorCallExpr(this); } public partial class CXXMemberCallExpr : CallExpr { public CXXMemberCallExpr() { } public Expr ImplicitObjectArgument { get; set; } public Method MethodDecl { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitCXXMemberCallExpr(this); } public partial class CUDAKernelCallExpr : CallExpr { public CUDAKernelCallExpr() { } public CallExpr Config { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitCUDAKernelCallExpr(this); } public abstract partial class CXXNamedCastExpr : ExplicitCastExpr { public CXXNamedCastExpr() { } public string CastName { get; set; } public SourceLocation OperatorLoc { get; set; } public SourceLocation RParenLoc { get; set; } public SourceRange AngleBrackets { get; set; } } public partial class CXXStaticCastExpr : CXXNamedCastExpr { public CXXStaticCastExpr() { } public override T Visit(IStmtVisitor visitor) => visitor.VisitCXXStaticCastExpr(this); } public partial class CXXDynamicCastExpr : CXXNamedCastExpr { public CXXDynamicCastExpr() { } public bool IsAlwaysNull { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitCXXDynamicCastExpr(this); } public partial class CXXReinterpretCastExpr : CXXNamedCastExpr { public CXXReinterpretCastExpr() { } public override T Visit(IStmtVisitor visitor) => visitor.VisitCXXReinterpretCastExpr(this); } public partial class CXXConstCastExpr : CXXNamedCastExpr { public CXXConstCastExpr() { } public override T Visit(IStmtVisitor visitor) => visitor.VisitCXXConstCastExpr(this); } public partial class UserDefinedLiteral : CallExpr { public enum LiteralOperatorKind { /// Raw form: operator "" X (const char *) Raw = 0, /// Raw form: operator "" X...> () Template = 1, /// operator "" X (unsigned long long) Integer = 2, /// operator "" X (long double) Floating = 3, /// operator "" X (const CharT *, size_t) String = 4, /// operator "" X (CharT) Character = 5 } public UserDefinedLiteral() { } public UserDefinedLiteral.LiteralOperatorKind literalOperatorKind { get; set; } public Expr CookedLiteral { get; set; } public SourceLocation UDSuffixLoc { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitUserDefinedLiteral(this); } public partial class CXXBoolLiteralExpr : Expr { public CXXBoolLiteralExpr() { } public bool Value { get; set; } public SourceLocation Location { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitCXXBoolLiteralExpr(this); } public partial class CXXNullPtrLiteralExpr : Expr { public CXXNullPtrLiteralExpr() { } public SourceLocation Location { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitCXXNullPtrLiteralExpr(this); } public partial class CXXStdInitializerListExpr : Expr { public CXXStdInitializerListExpr() { } public Expr SubExpr { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitCXXStdInitializerListExpr(this); } public partial class CXXTypeidExpr : Expr { public CXXTypeidExpr() { } public Expr ExprOperand { get; set; } public bool IsPotentiallyEvaluated { get; set; } public bool IsTypeOperand { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitCXXTypeidExpr(this); } public partial class MSPropertyRefExpr : Expr { public MSPropertyRefExpr() { } public bool IsImplicitAccess { get; set; } public Expr BaseExpr { get; set; } public bool IsArrow { get; set; } public SourceLocation MemberLoc { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitMSPropertyRefExpr(this); } public partial class MSPropertySubscriptExpr : Expr { public MSPropertySubscriptExpr() { } public SourceLocation RBracketLoc { get; set; } public Expr Base { get; set; } public Expr Idx { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitMSPropertySubscriptExpr(this); } public partial class CXXUuidofExpr : Expr { public CXXUuidofExpr() { } public Expr ExprOperand { get; set; } public string UuidStr { get; set; } public bool IsTypeOperand { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitCXXUuidofExpr(this); } public partial class CXXThisExpr : Expr { public CXXThisExpr() { } public SourceLocation Location { get; set; } public bool Implicit { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitCXXThisExpr(this); } public partial class CXXThrowExpr : Expr { public CXXThrowExpr() { } public Expr SubExpr { get; set; } public SourceLocation ThrowLoc { get; set; } public bool IsThrownVariableInScope { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitCXXThrowExpr(this); } public partial class CXXDefaultArgExpr : Expr { public CXXDefaultArgExpr() { } public Expr Expr { get; set; } public SourceLocation UsedLocation { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitCXXDefaultArgExpr(this); } public partial class CXXDefaultInitExpr : Expr { public CXXDefaultInitExpr() { } public Field Field { get; set; } public Expr Expr { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitCXXDefaultInitExpr(this); } public partial class CXXBindTemporaryExpr : Expr { public CXXBindTemporaryExpr() { } public Expr SubExpr { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitCXXBindTemporaryExpr(this); } public partial class CXXConstructExpr : Expr { public enum ConstructionKind { Complete = 0, NonVirtualBase = 1, VirtualBase = 2, Delegating = 3 } public CXXConstructExpr() { } public List Arguments { get; private set; } = new List(); public SourceLocation Location { get; set; } public bool Elidable { get; set; } public bool HadMultipleCandidates { get; set; } public bool ListInitialization { get; set; } public bool StdInitListInitialization { get; set; } public bool RequiresZeroInitialization { get; set; } public SourceRange ParenOrBraceRange { get; set; } public uint NumArgs { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitCXXConstructExpr(this); } public partial class CXXInheritedCtorInitExpr : Expr { public CXXInheritedCtorInitExpr() { } public bool ConstructsVBase { get; set; } public bool InheritedFromVBase { get; set; } public SourceLocation Location { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitCXXInheritedCtorInitExpr(this); } public partial class CXXFunctionalCastExpr : ExplicitCastExpr { public CXXFunctionalCastExpr() { } public SourceLocation LParenLoc { get; set; } public SourceLocation RParenLoc { get; set; } public bool IsListInitialization { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitCXXFunctionalCastExpr(this); } public partial class CXXTemporaryObjectExpr : CXXConstructExpr { public CXXTemporaryObjectExpr() { } public override T Visit(IStmtVisitor visitor) => visitor.VisitCXXTemporaryObjectExpr(this); } public partial class LambdaExpr : Expr { public LambdaExpr() { } public List CaptureInits { get; private set; } = new List(); public SourceLocation CaptureDefaultLoc { get; set; } public uint CaptureSize { get; set; } public SourceRange IntroducerRange { get; set; } public Method CallOperator { get; set; } public bool IsGenericLambda { get; set; } public CompoundStmt Body { get; set; } public bool IsMutable { get; set; } public bool HasExplicitParameters { get; set; } public bool HasExplicitResultType { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitLambdaExpr(this); } public partial class CXXScalarValueInitExpr : Expr { public CXXScalarValueInitExpr() { } public SourceLocation RParenLoc { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitCXXScalarValueInitExpr(this); } public partial class CXXNewExpr : Expr { public enum InitializationStyle { /// New-expression has no initializer as written. NoInit = 0, /// New-expression has a C++98 paren-delimited initializer. CallInit = 1, /// New-expression has a C++11 list-initializer. ListInit = 2 } public CXXNewExpr() { } public List PlacementArguments { get; private set; } = new List(); public Function OperatorNew { get; set; } public Function OperatorDelete { get; set; } public QualifiedType AllocatedType { get; set; } public bool IsArray { get; set; } public Expr ArraySize { get; set; } public uint NumPlacementArgs { get; set; } public bool IsParenTypeId { get; set; } public SourceRange TypeIdParens { get; set; } public bool IsGlobalNew { get; set; } public bool HasInitializer { get; set; } public CXXNewExpr.InitializationStyle initializationStyle { get; set; } public Expr Initializer { get; set; } public CXXConstructExpr ConstructExpr { get; set; } public SourceRange DirectInitRange { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitCXXNewExpr(this); } public partial class CXXDeleteExpr : Expr { public CXXDeleteExpr() { } public bool IsGlobalDelete { get; set; } public bool IsArrayForm { get; set; } public bool IsArrayFormAsWritten { get; set; } public Function OperatorDelete { get; set; } public Expr Argument { get; set; } public QualifiedType DestroyedType { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitCXXDeleteExpr(this); } public partial class CXXPseudoDestructorExpr : Expr { public CXXPseudoDestructorExpr() { } public Expr Base { get; set; } public bool HasQualifier { get; set; } public bool IsArrow { get; set; } public SourceLocation OperatorLoc { get; set; } public SourceLocation ColonColonLoc { get; set; } public SourceLocation TildeLoc { get; set; } public QualifiedType DestroyedType { get; set; } public SourceLocation DestroyedTypeLoc { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitCXXPseudoDestructorExpr(this); } public partial class TypeTraitExpr : Expr { public TypeTraitExpr() { } public bool Value { get; set; } public uint NumArgs { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitTypeTraitExpr(this); } public partial class ArrayTypeTraitExpr : Expr { public ArrayTypeTraitExpr() { } public QualifiedType QueriedType { get; set; } public ulong Value { get; set; } public Expr DimensionExpression { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitArrayTypeTraitExpr(this); } public partial class ExpressionTraitExpr : Expr { public ExpressionTraitExpr() { } public Expr QueriedExpression { get; set; } public bool Value { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitExpressionTraitExpr(this); } public abstract partial class OverloadExpr : Expr { public partial class FindResult { public FindResult() { } } public OverloadExpr() { } public uint NumDecls { get; set; } public SourceLocation NameLoc { get; set; } public SourceLocation TemplateKeywordLoc { get; set; } public SourceLocation LAngleLoc { get; set; } public SourceLocation RAngleLoc { get; set; } public bool HasTemplateKeyword { get; set; } public bool HasExplicitTemplateArgs { get; set; } public uint NumTemplateArgs { get; set; } } public partial class UnresolvedLookupExpr : OverloadExpr { public UnresolvedLookupExpr() { } public bool RequiresADL { get; set; } public bool IsOverloaded { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitUnresolvedLookupExpr(this); } public partial class DependentScopeDeclRefExpr : Expr { public DependentScopeDeclRefExpr() { } public SourceLocation Location { get; set; } public SourceLocation TemplateKeywordLoc { get; set; } public SourceLocation LAngleLoc { get; set; } public SourceLocation RAngleLoc { get; set; } public bool HasTemplateKeyword { get; set; } public bool HasExplicitTemplateArgs { get; set; } public uint NumTemplateArgs { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitDependentScopeDeclRefExpr(this); } public partial class ExprWithCleanups : FullExpr { public ExprWithCleanups() { } public uint NumObjects { get; set; } public bool CleanupsHaveSideEffects { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitExprWithCleanups(this); } public partial class CXXUnresolvedConstructExpr : Expr { public CXXUnresolvedConstructExpr() { } public List Arguments { get; private set; } = new List(); public SourceLocation LParenLoc { get; set; } public SourceLocation RParenLoc { get; set; } public QualifiedType TypeAsWritten { get; set; } public bool IsListInitialization { get; set; } public uint ArgSize { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitCXXUnresolvedConstructExpr(this); } public partial class CXXDependentScopeMemberExpr : Expr { public CXXDependentScopeMemberExpr() { } public bool IsImplicitAccess { get; set; } public Expr Base { get; set; } public QualifiedType BaseType { get; set; } public bool IsArrow { get; set; } public SourceLocation OperatorLoc { get; set; } public Declaration FirstQualifierFoundInScope { get; set; } public SourceLocation MemberLoc { get; set; } public SourceLocation TemplateKeywordLoc { get; set; } public SourceLocation LAngleLoc { get; set; } public SourceLocation RAngleLoc { get; set; } public bool HasTemplateKeyword { get; set; } public bool HasExplicitTemplateArgs { get; set; } public uint NumTemplateArgs { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitCXXDependentScopeMemberExpr(this); } public partial class UnresolvedMemberExpr : OverloadExpr { public UnresolvedMemberExpr() { } public bool IsImplicitAccess { get; set; } public Expr Base { get; set; } public QualifiedType BaseType { get; set; } public bool HasUnresolvedUsing { get; set; } public bool IsArrow { get; set; } public SourceLocation OperatorLoc { get; set; } public SourceLocation MemberLoc { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitUnresolvedMemberExpr(this); } public partial class CXXNoexceptExpr : Expr { public CXXNoexceptExpr() { } public Expr Operand { get; set; } public bool Value { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitCXXNoexceptExpr(this); } public partial class PackExpansionExpr : Expr { public PackExpansionExpr() { } public Expr Pattern { get; set; } public SourceLocation EllipsisLoc { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitPackExpansionExpr(this); } public partial class SizeOfPackExpr : Expr { public SizeOfPackExpr() { } public SourceLocation OperatorLoc { get; set; } public SourceLocation PackLoc { get; set; } public SourceLocation RParenLoc { get; set; } public Declaration Pack { get; set; } public uint PackLength { get; set; } public bool IsPartiallySubstituted { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitSizeOfPackExpr(this); } public partial class SubstNonTypeTemplateParmExpr : Expr { public SubstNonTypeTemplateParmExpr() { } public SourceLocation NameLoc { get; set; } public Expr Replacement { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitSubstNonTypeTemplateParmExpr(this); } public partial class SubstNonTypeTemplateParmPackExpr : Expr { public SubstNonTypeTemplateParmPackExpr() { } public SourceLocation ParameterPackLocation { get; set; } public TemplateArgument ArgumentPack { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitSubstNonTypeTemplateParmPackExpr(this); } public partial class FunctionParmPackExpr : Expr { public FunctionParmPackExpr() { } public SourceLocation ParameterPackLocation { get; set; } public uint NumExpansions { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitFunctionParmPackExpr(this); } public partial class MaterializeTemporaryExpr : Expr { public partial class ExtraState { public ExtraState() { } } public MaterializeTemporaryExpr() { } public Stmt Temporary { get; set; } public Expr TemporaryExpr { get; set; } public uint ManglingNumber { get; set; } public bool IsBoundToLvalueReference { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitMaterializeTemporaryExpr(this); } public partial class CXXFoldExpr : Expr { public CXXFoldExpr() { } public Expr LHS { get; set; } public Expr RHS { get; set; } public bool IsRightFold { get; set; } public bool IsLeftFold { get; set; } public Expr Pattern { get; set; } public Expr Init { get; set; } public SourceLocation EllipsisLoc { get; set; } public BinaryOperatorKind Operator { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitCXXFoldExpr(this); } public abstract partial class CoroutineSuspendExpr : Expr { internal enum SubExpr { Common = 0, Ready = 1, Suspend = 2, Resume = 3, Count = 4 } public CoroutineSuspendExpr() { } public SourceLocation KeywordLoc { get; set; } public Expr CommonExpr { get; set; } public OpaqueValueExpr OpaqueValue { get; set; } public Expr ReadyExpr { get; set; } public Expr SuspendExpr { get; set; } public Expr ResumeExpr { get; set; } } public partial class CoawaitExpr : CoroutineSuspendExpr { public CoawaitExpr() { } public bool IsImplicit { get; set; } public Expr Operand { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitCoawaitExpr(this); } public partial class DependentCoawaitExpr : Expr { public DependentCoawaitExpr() { } public Expr Operand { get; set; } public UnresolvedLookupExpr OperatorCoawaitLookup { get; set; } public SourceLocation KeywordLoc { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitDependentCoawaitExpr(this); } public partial class CoyieldExpr : CoroutineSuspendExpr { public CoyieldExpr() { } public Expr Operand { get; set; } public override T Visit(IStmtVisitor visitor) => visitor.VisitCoyieldExpr(this); } }