Module ATDGenerated.Clang_ast_t
type access_specifier=[|`None|`Public|`Protected|`Private]type attribute_kind=type binary_operator_kind=[]type binary_operator_info={boi_kind : binary_operator_kind;}type builtin_type_kind=[]type cast_kind=[]type cxx_base_specifier={xbs_name : string;xbs_virtual : bool;}type cast_expr_info={cei_cast_kind : cast_kind;cei_base_path : cxx_base_specifier list;}type cxx_noexcept_expr_info={xnee_value : bool;}type decl_context_info={dci_has_external_lexical_storage : bool;dci_has_external_visible_storage : bool;}type decl_kind=[]type declaration_name_kind=[]type declaration_name={dn_kind : declaration_name_kind;dn_name : string;}type enum_decl_scope=[|`Class|`Struct]type enum_decl_info={edi_scope : enum_decl_scope option;edi_is_module_private : bool;}type input_kind=[|`IK_None|`IK_Asm|`IK_C|`IK_CXX|`IK_ObjC|`IK_ObjCXX|`IK_OpenCL|`IK_CUDA|`IK_HIP|`IK_RenderScript|`IK_LLVM_IR]type integer_literal_info={ili_is_signed : bool;ili_bitwidth : int;ili_value : string;}type integer_type_widths={itw_char_type : int;itw_short_type : int;itw_int_type : int;itw_long_type : int;itw_longlong_type : int;}type lambda_capture_kind=[|`LCK_This|`LCK_ByCopy|`LCK_ByRef|`LCK_VLAType|`LCK_StarThis]type named_decl_info={ni_name : string;ni_qual_name : string list;}type obj_c_access_control=[|`None|`Private|`Protected|`Public|`Package]type obj_c_availability_check_expr_info={oacei_version : string option;}type obj_c_bridge_cast_kind=[|`OBC_BridgeRetained|`OBC_Bridge|`OBC_BridgeTransfer]type obj_c_bridged_cast_expr_info={obcei_cast_kind : obj_c_bridge_cast_kind;}type obj_c_ivar_decl_info={ovdi_is_synthesize : bool;ovdi_access_control : obj_c_access_control;}type obj_c_property_control=[|`None|`Required|`Optional]type obj_c_subscript_kind=[|`ArraySubscript|`DictionarySubscript]type objc_lifetime_attr=[|`OCL_None|`OCL_ExplicitNone|`OCL_Strong|`OCL_Weak|`OCL_Autoreleasing]type attr_type_info={ati_attr_kind : attribute_kind;ati_lifetime : objc_lifetime_attr;}type object_kind=[|`Ordinary|`BitField|`ObjCProperty|`ObjCSubscript|`VectorComponent]type offset_of_expr_info={ooe_literal : integer_literal_info option;}type pointer= inttype addr_label_expr_info={alei_label : string;alei_pointer : pointer;}type cxx_new_expr_info={xnei_is_array : bool;xnei_array_size_expr : pointer option;xnei_initializer_expr : pointer option;xnei_placement_args : pointer list;}type cxx_temporary= pointertype cxx_bind_temporary_expr_info={xbtei_cxx_temporary : cxx_temporary;}type goto_stmt_info={gsi_label : string;gsi_pointer : pointer;}type obj_c_array_literal_expr_info={oalei_array_method : pointer option;}type obj_c_dictionary_literal_expr_info={odlei_dict_method : pointer option;}type predefined_expr_type=[|`Func|`Function|`LFunction|`FuncDName|`FuncSig|`LFuncSig|`PrettyFunction|`PrettyFunctionNoVirtual]type property_attribute=[|`Readonly|`Assign|`Readwrite|`Retain|`Copy|`Nonatomic|`Atomic|`Weak|`Strong|`Unsafe_unretained|`ExplicitGetter|`ExplicitSetter]type property_implementation=[|`Synthesize|`Dynamic]type record_decl_info={rdi_definition_ptr : pointer;rdi_is_module_private : bool;rdi_is_complete_definition : bool;rdi_is_dependent_type : bool;}type selector= stringtype obj_c_method_ref_info={mri_getter : selector option;mri_setter : selector option;}type obj_c_subscript_ref_expr_info={osrei_kind : obj_c_subscript_kind;osrei_getter : selector option;osrei_setter : selector option;}type objc_boxed_expr_info={obei_boxing_method : selector option;}type sentinel_attr_info={sai_sentinel : int;sai_null_pos : int;}type source_file= stringtype source_location={mutable sl_file : source_file option;mutable sl_line : int option;mutable sl_column : int option;}type source_range= source_location * source_locationtype attribute_info={ai_pointer : pointer;ai_source_range : source_range;}type attr_tuple= attribute_infotype comment_info={ci_parent_pointer : pointer;ci_source_range : source_range;}type specifier_kind=[|`Identifier|`Namespace|`NamespaceAlias|`TypeSpec|`TypeSpecWithTemplate|`Global|`Super]type stmt_info={si_pointer : pointer;si_source_range : source_range;}type tag_kind=[|`TTK_Struct|`TTK_Interface|`TTK_Union|`TTK_Class|`TTK_Enum]type type_ptr= Clang_ast_types.TypePtr.ttype qual_type={qt_type_ptr : type_ptr;qt_is_const : bool;qt_is_restrict : bool;qt_is_volatile : bool;}type array_type_info={arti_element_type : qual_type;arti_stride : int option;}type compound_assign_operator_info={caoi_lhs_type : qual_type;caoi_result_type : qual_type;}type cxx_delete_expr_info={xdei_is_array : bool;xdei_destroyed_type : qual_type;}type decl_ref={dr_kind : decl_kind;dr_decl_pointer : pointer;dr_name : named_decl_info option;dr_qual_type : qual_type option;}type cxx_construct_expr_info={xcei_decl_ref : decl_ref;xcei_is_elidable : bool;xcei_requires_zero_initialization : bool;xcei_is_copy_constructor : bool;}type cxx_ctor_initializer_subject=[|`Member of decl_ref|`Delegating of type_ptr|`BaseClass of type_ptr * bool]type decl_ref_expr_info={drti_decl_ref : decl_ref option;drti_found_decl_ref : decl_ref option;}type expr_with_cleanups_info={ewci_decl_refs : decl_ref list;}type function_type_info={fti_return_type : qual_type;}type materialize_temporary_expr_info={mtei_decl_ref : decl_ref option;}type member_expr_info={mei_is_arrow : bool;mei_performs_virtual_dispatch : bool;mei_name : named_decl_info;mei_decl_ref : decl_ref;}type namespace_decl_info={ndi_is_inline : bool;ndi_original_namespace : decl_ref option;}type nested_name_specifier_loc={nnsl_kind : specifier_kind;nnsl_ref : decl_ref option;}type namespace_alias_decl_info={nadi_namespace_loc : source_location;nadi_target_name_loc : source_location;nadi_nested_name_specifier_locs : nested_name_specifier_loc list;nadi_namespace : decl_ref;}type obj_c_category_decl_info={odi_class_interface : decl_ref option;odi_implementation : decl_ref option;odi_protocols : decl_ref list;}type obj_c_category_impl_decl_info={ocidi_class_interface : decl_ref option;ocidi_category_decl : decl_ref option;}type obj_c_compatible_alias_decl_info={ocadi_class_interface : decl_ref option;}type obj_c_interface_decl_info={otdi_super : decl_ref option;otdi_implementation : decl_ref option;otdi_protocols : decl_ref list;otdi_known_categories : decl_ref list;}type obj_c_ivar_ref_expr_info={ovrei_decl_ref : decl_ref;ovrei_pointer : pointer;ovrei_is_free_ivar : bool;}type obj_c_property_decl_info={opdi_qual_type : qual_type;opdi_getter_method : decl_ref option;opdi_setter_method : decl_ref option;opdi_ivar_decl : decl_ref option;opdi_property_control : obj_c_property_control;opdi_property_attributes : property_attribute list;}type obj_c_property_impl_decl_info={opidi_implementation : property_implementation;opidi_property_decl : decl_ref option;opidi_ivar_decl : decl_ref option;}type obj_c_protocol_decl_info={opcdi_protocols : decl_ref list;}type objc_encode_expr_info={oeei_qual_type : qual_type;oeei_raw : string;}type objc_object_type_info={ooti_base_type : type_ptr;ooti_protocol_decls_ptr : pointer list;ooti_type_args : qual_type list;}type overload_expr_info={oei_decls : decl_ref list;oei_name : declaration_name;}type params_type_info={pti_params_type : qual_type list;}type property_ref_kind=[|`MethodRef of obj_c_method_ref_info|`PropertyRef of decl_ref]type obj_c_property_ref_expr_info={oprei_kind : property_ref_kind;oprei_is_super_receiver : bool;oprei_is_messaging_getter : bool;oprei_is_messaging_setter : bool;}type receiver_kind=[|`Instance|`Class of qual_type|`SuperInstance|`SuperClass]type obj_c_message_expr_info={omei_selector : string;omei_is_definition_found : bool;omei_decl_pointer : pointer option;omei_receiver_kind : receiver_kind;}type type_info={ti_pointer : pointer;ti_desugared_type : type_ptr option;}type type_trait_info={xtti_value : bool;}type typedef_decl_info={tdi_is_module_private : bool;}type typedef_type_info={tti_child_type : qual_type;tti_decl_ptr : pointer;}type c_type=|NoneType of type_info|AdjustedType of type_info * qual_type|DecayedType of type_info * qual_type|ConstantArrayType of type_info * array_type_info * int|DependentSizedArrayType of type_info * array_type_info|IncompleteArrayType of type_info * array_type_info|VariableArrayType of type_info * array_type_info * pointer|AtomicType of type_info * qual_type|AttributedType of type_info * attr_type_info|BlockPointerType of type_info * qual_type|BuiltinType of type_info * builtin_type_kind|ComplexType of type_info|DecltypeType of type_info * qual_type|AutoType of type_info|DeducedTemplateSpecializationType of type_info|DependentAddressSpaceType of type_info|DependentExtIntType of type_info|DependentNameType of type_info|DependentSizedExtVectorType of type_info|DependentTemplateSpecializationType of type_info|DependentVectorType of type_info|ElaboratedType of type_info|ExtIntType of type_info|FunctionNoProtoType of type_info * function_type_info|FunctionProtoType of type_info * function_type_info * params_type_info|InjectedClassNameType of type_info|MacroQualifiedType of type_info|ConstantMatrixType of type_info|DependentSizedMatrixType of type_info|MemberPointerType of type_info * qual_type|ObjCObjectPointerType of type_info * qual_type|ObjCObjectType of type_info * objc_object_type_info|ObjCInterfaceType of type_info * pointer|ObjCTypeParamType of type_info|PackExpansionType of type_info|ParenType of type_info * qual_type|PipeType of type_info|PointerType of type_info * qual_type|LValueReferenceType of type_info * qual_type|RValueReferenceType of type_info * qual_type|SubstTemplateTypeParmPackType of type_info|SubstTemplateTypeParmType of type_info|EnumType of type_info * pointer|RecordType of type_info * pointer|TemplateSpecializationType of type_info|TemplateTypeParmType of type_info|TypeOfExprType of type_info|TypeOfType of type_info|TypedefType of type_info * typedef_type_info|UnaryTransformType of type_info|UnresolvedUsingType of type_info|VectorType of type_info|ExtVectorType of type_infotype translation_unit_decl_info={tudi_input_path : source_file;tudi_input_kind : input_kind;tudi_integer_type_widths : integer_type_widths;tudi_is_objc_arc_on : bool;tudi_types : c_type list;}type unary_expr_or_type_trait_kind=[|`AlignOf|`OpenMPRequiredSimdAlign|`PreferredAlignOf|`SizeOf|`SizeOfWithSize of int|`VecStep]type unary_expr_or_type_trait_expr_info={uttei_kind : unary_expr_or_type_trait_kind;uttei_qual_type : qual_type;}type unary_operator_kind=[|`PostInc|`PostDec|`PreInc|`PreDec|`AddrOf|`Deref|`Plus|`Minus|`Not|`LNot|`Real|`Imag|`Extension|`Coawait]type unary_operator_info={uoi_kind : unary_operator_kind;uoi_is_postfix : bool;}type unresolved_lookup_expr_info={ulei_requires_ADL : bool;ulei_is_overloaded : bool;ulei_naming_class : decl_ref option;}type using_directive_decl_info={uddi_using_location : source_location;uddi_namespace_key_location : source_location;uddi_nested_name_specifier_locs : nested_name_specifier_loc list;uddi_nominated_namespace : decl_ref option;}type value_kind=[|`RValue|`LValue|`XValue]type expr_info={ei_qual_type : qual_type;ei_value_kind : value_kind;ei_object_kind : object_kind;}type version_tuple={vt_major : int;vt_minor : int option;vt_subminor : int option;vt_build : int option;}type availability_attr_info={aai_platform : string option;aai_introduced : version_tuple;}type visibility_attr=|DefaultVisibility|HiddenVisibility|ProtectedVisibilitytype attribute=[|`AddressSpaceAttr of attribute_info|`ArmMveStrictPolymorphismAttr of attribute_info|`CmseNSCallAttr of attribute_info|`NoDerefAttr of attribute_info|`ObjCGCAttr of attribute_info|`ObjCInertUnsafeUnretainedAttr of attribute_info|`ObjCKindOfAttr of attribute_info|`OpenCLConstantAddressSpaceAttr of attribute_info|`OpenCLGenericAddressSpaceAttr of attribute_info|`OpenCLGlobalAddressSpaceAttr of attribute_info|`OpenCLLocalAddressSpaceAttr of attribute_info|`OpenCLPrivateAddressSpaceAttr of attribute_info|`Ptr32Attr of attribute_info|`Ptr64Attr of attribute_info|`SPtrAttr of attribute_info|`TypeNonNullAttr of attribute_info|`TypeNullUnspecifiedAttr of attribute_info|`TypeNullableAttr of attribute_info|`UPtrAttr of attribute_info|`FallThroughAttr of attribute_info|`NoMergeAttr of attribute_info|`SuppressAttr of attribute_info|`AArch64VectorPcsAttr of attribute_info|`AcquireHandleAttr of attribute_info|`AnyX86NoCfCheckAttr of attribute_info|`CDeclAttr of attribute_info|`FastCallAttr of attribute_info|`IntelOclBiccAttr of attribute_info|`LifetimeBoundAttr of attribute_info|`MSABIAttr of attribute_info|`NSReturnsRetainedAttr of attribute_info|`ObjCOwnershipAttr of attribute_info|`PascalAttr of attribute_info|`PcsAttr of attribute_info|`PreserveAllAttr of attribute_info|`PreserveMostAttr of attribute_info|`RegCallAttr of attribute_info|`StdCallAttr of attribute_info|`SwiftCallAttr of attribute_info|`SysVABIAttr of attribute_info|`ThisCallAttr of attribute_info|`VectorCallAttr of attribute_info|`SwiftContextAttr of attribute_info|`SwiftErrorResultAttr of attribute_info|`SwiftIndirectResultAttr of attribute_info|`AnnotateAttr of attr_tuple * string|`CFConsumedAttr of attribute_info|`CarriesDependencyAttr of attribute_info|`NSConsumedAttr of attribute_info|`NonNullAttr of attribute_info|`OSConsumedAttr of attribute_info|`PassObjectSizeAttr of attribute_info|`ReleaseHandleAttr of attribute_info|`UseHandleAttr of attribute_info|`AMDGPUFlatWorkGroupSizeAttr of attribute_info|`AMDGPUNumSGPRAttr of attribute_info|`AMDGPUNumVGPRAttr of attribute_info|`AMDGPUWavesPerEUAttr of attribute_info|`ARMInterruptAttr of attribute_info|`AVRInterruptAttr of attribute_info|`AVRSignalAttr of attribute_info|`AcquireCapabilityAttr of attribute_info|`AcquiredAfterAttr of attribute_info|`AcquiredBeforeAttr of attribute_info|`AlignMac68kAttr of attribute_info|`AlignedAttr of attribute_info|`AllocAlignAttr of attribute_info|`AllocSizeAttr of attribute_info|`AlwaysDestroyAttr of attribute_info|`AlwaysInlineAttr of attribute_info|`AnalyzerNoReturnAttr of attribute_info|`AnyX86InterruptAttr of attribute_info|`AnyX86NoCallerSavedRegistersAttr of attribute_info|`ArcWeakrefUnavailableAttr of attribute_info|`ArgumentWithTypeTagAttr of attribute_info|`ArmBuiltinAliasAttr of attribute_info|`ArtificialAttr of attribute_info|`AsmLabelAttr of attribute_info|`AssertCapabilityAttr of attribute_info|`AssertExclusiveLockAttr of attribute_info|`AssertSharedLockAttr of attribute_info|`AssumeAlignedAttr of attribute_info|`AvailabilityAttr of attr_tuple * availability_attr_info|`BPFPreserveAccessIndexAttr of attribute_info|`BlocksAttr of attribute_info|`BuiltinAttr of attribute_info|`C11NoReturnAttr of attribute_info|`CFAuditedTransferAttr of attribute_info|`CFGuardAttr of attribute_info|`CFICanonicalJumpTableAttr of attribute_info|`CFReturnsNotRetainedAttr of attribute_info|`CFReturnsRetainedAttr of attribute_info|`CFUnknownTransferAttr of attribute_info|`CPUDispatchAttr of attribute_info|`CPUSpecificAttr of attribute_info|`CUDAConstantAttr of attribute_info|`CUDADeviceAttr of attribute_info|`CUDADeviceBuiltinSurfaceTypeAttr of attribute_info|`CUDADeviceBuiltinTextureTypeAttr of attribute_info|`CUDAGlobalAttr of attribute_info|`CUDAHostAttr of attribute_info|`CUDAInvalidTargetAttr of attribute_info|`CUDALaunchBoundsAttr of attribute_info|`CUDASharedAttr of attribute_info|`CXX11NoReturnAttr of attribute_info|`CallableWhenAttr of attribute_info|`CallbackAttr of attribute_info|`CapabilityAttr of attribute_info|`CapturedRecordAttr of attribute_info|`CleanupAttr of attribute_info|`CmseNSEntryAttr of attribute_info|`CodeSegAttr of attribute_info|`ColdAttr of attribute_info|`CommonAttr of attribute_info|`ConstAttr of attribute_info|`ConstInitAttr of attribute_info|`ConstructorAttr of attribute_info|`ConsumableAttr of attribute_info|`ConsumableAutoCastAttr of attribute_info|`ConsumableSetOnReadAttr of attribute_info|`ConvergentAttr of attribute_info|`DLLExportAttr of attribute_info|`DLLExportStaticLocalAttr of attribute_info|`DLLImportAttr of attribute_info|`DLLImportStaticLocalAttr of attribute_info|`DeprecatedAttr of attribute_info|`DestructorAttr of attribute_info|`DiagnoseIfAttr of attribute_info|`DisableTailCallsAttr of attribute_info|`EmptyBasesAttr of attribute_info|`EnableIfAttr of attribute_info|`EnumExtensibilityAttr of attribute_info|`ExcludeFromExplicitInstantiationAttr of attribute_info|`ExclusiveTrylockFunctionAttr of attribute_info|`ExternalSourceSymbolAttr of attribute_info|`FinalAttr of attribute_info|`FlagEnumAttr of attribute_info|`FlattenAttr of attribute_info|`FormatAttr of attribute_info|`FormatArgAttr of attribute_info|`GNUInlineAttr of attribute_info|`GuardedByAttr of attribute_info|`GuardedVarAttr of attribute_info|`HotAttr of attribute_info|`IBActionAttr of attribute_info|`IBOutletAttr of attribute_info|`IBOutletCollectionAttr of attribute_info|`InitPriorityAttr of attribute_info|`InternalLinkageAttr of attribute_info|`LTOVisibilityPublicAttr of attribute_info|`LayoutVersionAttr of attribute_info|`LockReturnedAttr of attribute_info|`LocksExcludedAttr of attribute_info|`MIGServerRoutineAttr of attribute_info|`MSAllocatorAttr of attribute_info|`MSInheritanceAttr of attribute_info|`MSNoVTableAttr of attribute_info|`MSP430InterruptAttr of attribute_info|`MSStructAttr of attribute_info|`MSVtorDispAttr of attribute_info|`MaxFieldAlignmentAttr of attribute_info|`MayAliasAttr of attribute_info|`MicroMipsAttr of attribute_info|`MinSizeAttr of attribute_info|`MinVectorWidthAttr of attribute_info|`Mips16Attr of attribute_info|`MipsInterruptAttr of attribute_info|`MipsLongCallAttr of attribute_info|`MipsShortCallAttr of attribute_info|`NSConsumesSelfAttr of attribute_info|`NSReturnsAutoreleasedAttr of attribute_info|`NSReturnsNotRetainedAttr of attribute_info|`NakedAttr of attribute_info|`NoAliasAttr of attribute_info|`NoCommonAttr of attribute_info|`NoDebugAttr of attribute_info|`NoDestroyAttr of attribute_info|`NoDuplicateAttr of attribute_info|`NoInlineAttr of attribute_info|`NoInstrumentFunctionAttr of attribute_info|`NoMicroMipsAttr of attribute_info|`NoMips16Attr of attribute_info|`NoReturnAttr of attribute_info|`NoSanitizeAttr of attribute_info|`NoSpeculativeLoadHardeningAttr of attribute_info|`NoSplitStackAttr of attribute_info|`NoStackProtectorAttr of attribute_info|`NoThreadSafetyAnalysisAttr of attribute_info|`NoThrowAttr of attribute_info|`NoUniqueAddressAttr of attribute_info|`NotTailCalledAttr of attribute_info|`OMPAllocateDeclAttr of attribute_info|`OMPCaptureNoInitAttr of attribute_info|`OMPDeclareTargetDeclAttr of attribute_info|`OMPDeclareVariantAttr of attribute_info|`OMPThreadPrivateDeclAttr of attribute_info|`OSConsumesThisAttr of attribute_info|`OSReturnsNotRetainedAttr of attribute_info|`OSReturnsRetainedAttr of attribute_info|`OSReturnsRetainedOnNonZeroAttr of attribute_info|`OSReturnsRetainedOnZeroAttr of attribute_info|`ObjCBridgeAttr of attribute_info|`ObjCBridgeMutableAttr of attribute_info|`ObjCBridgeRelatedAttr of attribute_info|`ObjCExceptionAttr of attribute_info|`ObjCExplicitProtocolImplAttr of attribute_info|`ObjCExternallyRetainedAttr of attribute_info|`ObjCIndependentClassAttr of attribute_info|`ObjCMethodFamilyAttr of attribute_info|`ObjCNSObjectAttr of attribute_info|`ObjCPreciseLifetimeAttr of attribute_info|`ObjCRequiresPropertyDefsAttr of attribute_info|`ObjCRequiresSuperAttr of attribute_info|`ObjCReturnsInnerPointerAttr of attribute_info|`ObjCRootClassAttr of attribute_info|`ObjCSubclassingRestrictedAttr of attribute_info|`OpenCLIntelReqdSubGroupSizeAttr of attribute_info|`OpenCLKernelAttr of attribute_info|`OpenCLUnrollHintAttr of attribute_info|`OptimizeNoneAttr of attribute_info|`OverrideAttr of attribute_info|`OwnerAttr of attribute_info|`OwnershipAttr of attribute_info|`PackedAttr of attribute_info|`ParamTypestateAttr of attribute_info|`PatchableFunctionEntryAttr of attribute_info|`PointerAttr of attribute_info|`PragmaClangBSSSectionAttr of attribute_info|`PragmaClangDataSectionAttr of attribute_info|`PragmaClangRelroSectionAttr of attribute_info|`PragmaClangRodataSectionAttr of attribute_info|`PragmaClangTextSectionAttr of attribute_info|`PtGuardedByAttr of attribute_info|`PtGuardedVarAttr of attribute_info|`PureAttr of attribute_info|`RISCVInterruptAttr of attribute_info|`ReinitializesAttr of attribute_info|`ReleaseCapabilityAttr of attribute_info|`ReqdWorkGroupSizeAttr of attribute_info|`RequiresCapabilityAttr of attribute_info|`RestrictAttr of attribute_info|`ReturnTypestateAttr of attribute_info|`ReturnsNonNullAttr of attribute_info|`ReturnsTwiceAttr of attribute_info|`SYCLKernelAttr of attribute_info|`ScopedLockableAttr of attribute_info|`SectionAttr of attribute_info|`SelectAnyAttr of attribute_info|`SentinelAttr of attr_tuple * sentinel_attr_info|`SetTypestateAttr of attribute_info|`SharedTrylockFunctionAttr of attribute_info|`SpeculativeLoadHardeningAttr of attribute_info|`TLSModelAttr of attribute_info|`TargetAttr of attribute_info|`TestTypestateAttr of attribute_info|`TransparentUnionAttr of attribute_info|`TrivialABIAttr of attribute_info|`TryAcquireCapabilityAttr of attribute_info|`TypeTagForDatatypeAttr of attribute_info|`TypeVisibilityAttr of attribute_info|`UnavailableAttr of attribute_info|`UninitializedAttr of attribute_info|`UnusedAttr of attribute_info|`UsedAttr of attribute_info|`UuidAttr of attribute_info|`VecReturnAttr of attribute_info|`VecTypeHintAttr of attribute_info|`VisibilityAttr of attr_tuple * visibility_attr|`WarnUnusedAttr of attribute_info|`WarnUnusedResultAttr of attribute_info|`WeakAttr of attribute_info|`WeakImportAttr of attribute_info|`WeakRefAttr of attribute_info|`WebAssemblyExportNameAttr of attribute_info|`WebAssemblyImportModuleAttr of attribute_info|`WebAssemblyImportNameAttr of attribute_info|`WorkGroupSizeHintAttr of attribute_info|`X86ForceAlignArgPointerAttr of attribute_info|`XRayInstrumentAttr of attribute_info|`XRayLogArgsAttr of attribute_info|`AbiTagAttr of attribute_info|`AliasAttr of attribute_info|`AlignValueAttr of attribute_info|`IFuncAttr of attribute_info|`InitSegAttr of attribute_info|`LoaderUninitializedAttr of attribute_info|`LoopHintAttr of attribute_info|`ModeAttr of attribute_info|`NoBuiltinAttr of attribute_info|`NoEscapeAttr of attribute_info|`OMPCaptureKindAttr of attribute_info|`OMPDeclareSimdDeclAttr of attribute_info|`OMPReferencedVarAttr of attribute_info|`ObjCBoxableAttr of attribute_info|`ObjCClassStubAttr of attribute_info|`ObjCDesignatedInitializerAttr of attribute_info|`ObjCDirectAttr of attribute_info|`ObjCDirectMembersAttr of attribute_info|`ObjCNonLazyClassAttr of attribute_info|`ObjCRuntimeNameAttr of attribute_info|`ObjCRuntimeVisibleAttr of attribute_info|`OpenCLAccessAttr of attribute_info|`OverloadableAttr of attribute_info|`RenderScriptKernelAttr of attribute_info|`ThreadAttr of attribute_info]type template_instantiation_arg_info=[|`Null|`Type of qual_type|`Declaration of pointer|`NullPtr|`Integral of string|`Template|`TemplateExpansion|`Expression|`Pack of template_instantiation_arg_info list]type comment=|BlockCommandComment of comment_info * comment list|ParamCommandComment of comment_info * comment list|TParamCommandComment of comment_info * comment list|VerbatimBlockComment of comment_info * comment list|VerbatimLineComment of comment_info * comment list|ParagraphComment of comment_info * comment list|FullComment of comment_info * comment list|HTMLEndTagComment of comment_info * comment list|HTMLStartTagComment of comment_info * comment list|InlineCommandComment of comment_info * comment list|TextComment of comment_info * comment list|VerbatimBlockLineComment of comment_info * comment listtype template_specialization_info={tsi_template_decl : pointer;tsi_specialization_args : template_instantiation_arg_info list;}type decl_info={di_pointer : pointer;di_parent_pointer : pointer option;di_source_range : source_range;di_owning_module : string option;di_is_implicit : bool;di_is_used : bool;di_is_this_declaration_referenced : bool;di_is_invalid_decl : bool;di_attributes : attribute list;di_full_comment : comment option;di_access : access_specifier;}type block_captured_variable={bcv_is_by_ref : bool;bcv_is_nested : bool;bcv_variable : decl_ref option;bcv_copy_expr : stmt option;}and block_decl_info={bdi_parameters : decl list;bdi_is_variadic : bool;bdi_captures_cxx_this : bool;bdi_captured_variables : block_captured_variable list;bdi_body : stmt option;bdi_mangled_name : string;}and cxx_catch_stmt_info={xcsi_variable : decl option;}and cxx_ctor_initializer={xci_subject : cxx_ctor_initializer_subject;xci_source_range : source_range;xci_init_expr : stmt option;}and cxx_default_expr_info={xdaei_init_expr : stmt option;}and cxx_method_decl_info={xmdi_is_virtual : bool;xmdi_is_static : bool;xmdi_cxx_ctor_initializers : cxx_ctor_initializer list;xmdi_overriden_methods : decl_ref list;}and cxx_record_decl_info={xrdi_bases : type_ptr list;xrdi_vbases : type_ptr list;xrdi_transitive_vbases : type_ptr list;xrdi_is_pod : bool;xrdi_destructor : decl_ref option;xrdi_lambda_call_operator : decl_ref option;xrdi_lambda_captures : lambda_capture_info list;}and decl=and enum_constant_decl_info={ecdi_init_expr : stmt option;}and field_decl_info={fldi_is_mutable : bool;fldi_is_module_private : bool;fldi_init_expr : stmt option;fldi_bit_width_expr : stmt option;}and friend_info=[|`Type of type_ptr|`Decl of decl]and function_decl_info={fdi_mangled_name : string option;fdi_is_cpp : bool;fdi_is_inline : bool;fdi_is_module_private : bool;fdi_is_pure : bool;fdi_is_delete_as_written : bool;fdi_is_no_return : bool;fdi_is_constexpr : bool;fdi_is_variadic : bool;fdi_is_static : bool;fdi_parameters : decl list;fdi_decl_ptr_with_body : pointer option;fdi_body : stmt option;fdi_template_specialization : template_specialization_info option;}and generic_selection_info={gse_value : stmt option;}and if_stmt_info={isi_init : pointer option;isi_cond_var : stmt option;isi_cond : pointer;isi_then : pointer;isi_else : (pointer * source_location) option;}and lambda_capture_info={lci_capture_kind : lambda_capture_kind;lci_capture_this : bool;lci_capture_variable : bool;lci_capture_VLAtype : bool;lci_init_captured_vardecl : decl option;lci_captured_var : decl_ref option;lci_is_implicit : bool;lci_location : source_range;lci_is_pack_expansion : bool;}and lambda_expr_info={lei_lambda_decl : decl;}and obj_c_implementation_decl_info={oidi_super : decl_ref option;oidi_class_interface : decl_ref option;oidi_ivar_initializers : cxx_ctor_initializer list;}and obj_c_message_expr_kind=[|`CatchParam of decl|`CatchAll]and obj_c_method_decl_info={omdi_is_instance_method : bool;omdi_result_type : qual_type;omdi_is_property_accessor : bool;omdi_property_decl : decl_ref option;omdi_parameters : decl list;omdi_implicit_parameters : decl list;omdi_is_variadic : bool;omdi_is_overriding : bool;omdi_is_optional : bool;omdi_body : stmt option;omdi_mangled_name : string;}and opaque_value_expr_info={ovei_source_expr : stmt option;}and stmt=|GCCAsmStmt of stmt_info * stmt list|MSAsmStmt of stmt_info * stmt list|BreakStmt of stmt_info * stmt list|CXXCatchStmt of stmt_info * stmt list * cxx_catch_stmt_info|CXXForRangeStmt of stmt_info * stmt list|CXXTryStmt of stmt_info * stmt list|CapturedStmt of stmt_info * stmt list|CompoundStmt of stmt_info * stmt list|ContinueStmt of stmt_info * stmt list|CoreturnStmt of stmt_info * stmt list|CoroutineBodyStmt of stmt_info * stmt list|DeclStmt of stmt_info * stmt list * decl list|DoStmt of stmt_info * stmt list|ForStmt of stmt_info * stmt list|GotoStmt of stmt_info * stmt list * goto_stmt_info|IfStmt of stmt_info * stmt list * if_stmt_info|IndirectGotoStmt of stmt_info * stmt list|MSDependentExistsStmt of stmt_info * stmt list|NullStmt of stmt_info * stmt list|OMPAtomicDirective of stmt_info * stmt list|OMPBarrierDirective of stmt_info * stmt list|OMPCancelDirective of stmt_info * stmt list|OMPCancellationPointDirective of stmt_info * stmt list|OMPCriticalDirective of stmt_info * stmt list|OMPDepobjDirective of stmt_info * stmt list|OMPFlushDirective of stmt_info * stmt list|OMPDistributeDirective of stmt_info * stmt list|OMPDistributeParallelForDirective of stmt_info * stmt list|OMPDistributeParallelForSimdDirective of stmt_info * stmt list|OMPDistributeSimdDirective of stmt_info * stmt list|OMPForDirective of stmt_info * stmt list|OMPForSimdDirective of stmt_info * stmt list|OMPMasterTaskLoopDirective of stmt_info * stmt list|OMPMasterTaskLoopSimdDirective of stmt_info * stmt list|OMPParallelForDirective of stmt_info * stmt list|OMPParallelForSimdDirective of stmt_info * stmt list|OMPParallelMasterTaskLoopDirective of stmt_info * stmt list|OMPParallelMasterTaskLoopSimdDirective of stmt_info * stmt list|OMPSimdDirective of stmt_info * stmt list|OMPTargetParallelForSimdDirective of stmt_info * stmt list|OMPTargetSimdDirective of stmt_info * stmt list|OMPTargetTeamsDistributeDirective of stmt_info * stmt list|OMPTargetTeamsDistributeParallelForDirective of stmt_info * stmt list|OMPTargetTeamsDistributeParallelForSimdDirective of stmt_info * stmt list|OMPTargetTeamsDistributeSimdDirective of stmt_info * stmt list|OMPTaskLoopDirective of stmt_info * stmt list|OMPTaskLoopSimdDirective of stmt_info * stmt list|OMPTeamsDistributeDirective of stmt_info * stmt list|OMPTeamsDistributeParallelForDirective of stmt_info * stmt list|OMPTeamsDistributeParallelForSimdDirective of stmt_info * stmt list|OMPTeamsDistributeSimdDirective of stmt_info * stmt list|OMPMasterDirective of stmt_info * stmt list|OMPOrderedDirective of stmt_info * stmt list|OMPParallelDirective of stmt_info * stmt list|OMPParallelMasterDirective of stmt_info * stmt list|OMPParallelSectionsDirective of stmt_info * stmt list|OMPScanDirective of stmt_info * stmt list|OMPSectionDirective of stmt_info * stmt list|OMPSectionsDirective of stmt_info * stmt list|OMPSingleDirective of stmt_info * stmt list|OMPTargetDataDirective of stmt_info * stmt list|OMPTargetDirective of stmt_info * stmt list|OMPTargetEnterDataDirective of stmt_info * stmt list|OMPTargetExitDataDirective of stmt_info * stmt list|OMPTargetParallelDirective of stmt_info * stmt list|OMPTargetParallelForDirective of stmt_info * stmt list|OMPTargetTeamsDirective of stmt_info * stmt list|OMPTargetUpdateDirective of stmt_info * stmt list|OMPTaskDirective of stmt_info * stmt list|OMPTaskgroupDirective of stmt_info * stmt list|OMPTaskwaitDirective of stmt_info * stmt list|OMPTaskyieldDirective of stmt_info * stmt list|OMPTeamsDirective of stmt_info * stmt list|ObjCAtCatchStmt of stmt_info * stmt list * obj_c_message_expr_kind|ObjCAtFinallyStmt of stmt_info * stmt list|ObjCAtSynchronizedStmt of stmt_info * stmt list|ObjCAtThrowStmt of stmt_info * stmt list|ObjCAtTryStmt of stmt_info * stmt list|ObjCAutoreleasePoolStmt of stmt_info * stmt list|ObjCForCollectionStmt of stmt_info * stmt list|ReturnStmt of stmt_info * stmt list|SEHExceptStmt of stmt_info * stmt list|SEHFinallyStmt of stmt_info * stmt list|SEHLeaveStmt of stmt_info * stmt list|SEHTryStmt of stmt_info * stmt list|CaseStmt of stmt_info * stmt list|DefaultStmt of stmt_info * stmt list|SwitchStmt of stmt_info * stmt list * switch_stmt_info|AttributedStmt of stmt_info * stmt list * attribute list|BinaryConditionalOperator of stmt_info * stmt list * expr_info|ConditionalOperator of stmt_info * stmt list * expr_info|AddrLabelExpr of stmt_info * stmt list * expr_info * addr_label_expr_info|ArrayInitIndexExpr of stmt_info * stmt list * expr_info|ArrayInitLoopExpr of stmt_info * stmt list * expr_info|ArraySubscriptExpr of stmt_info * stmt list * expr_info|ArrayTypeTraitExpr of stmt_info * stmt list * expr_info|AsTypeExpr of stmt_info * stmt list * expr_info|AtomicExpr of stmt_info * stmt list * expr_info|BinaryOperator of stmt_info * stmt list * expr_info * binary_operator_info|CompoundAssignOperator of stmt_info * stmt list * expr_info * binary_operator_info * compound_assign_operator_info|BlockExpr of stmt_info * stmt list * expr_info * decl|CXXBindTemporaryExpr of stmt_info * stmt list * expr_info * cxx_bind_temporary_expr_info|CXXBoolLiteralExpr of stmt_info * stmt list * expr_info * int|CXXConstructExpr of stmt_info * stmt list * expr_info * cxx_construct_expr_info|CXXTemporaryObjectExpr of stmt_info * stmt list * expr_info * cxx_construct_expr_info|CXXDefaultArgExpr of stmt_info * stmt list * expr_info * cxx_default_expr_info|CXXDefaultInitExpr of stmt_info * stmt list * expr_info * cxx_default_expr_info|CXXDeleteExpr of stmt_info * stmt list * expr_info * cxx_delete_expr_info|CXXDependentScopeMemberExpr of stmt_info * stmt list * expr_info|CXXFoldExpr of stmt_info * stmt list * expr_info|CXXInheritedCtorInitExpr of stmt_info * stmt list * expr_info * cxx_construct_expr_info|CXXNewExpr of stmt_info * stmt list * expr_info * cxx_new_expr_info|CXXNoexceptExpr of stmt_info * stmt list * expr_info * cxx_noexcept_expr_info|CXXNullPtrLiteralExpr of stmt_info * stmt list * expr_info|CXXPseudoDestructorExpr of stmt_info * stmt list * expr_info|CXXRewrittenBinaryOperator of stmt_info * stmt list * expr_info|CXXScalarValueInitExpr of stmt_info * stmt list * expr_info|CXXStdInitializerListExpr of stmt_info * stmt list * expr_info|CXXThisExpr of stmt_info * stmt list * expr_info|CXXThrowExpr of stmt_info * stmt list * expr_info|CXXTypeidExpr of stmt_info * stmt list * expr_info|CXXUnresolvedConstructExpr of stmt_info * stmt list * expr_info|CXXUuidofExpr of stmt_info * stmt list * expr_info|CallExpr of stmt_info * stmt list * expr_info|CUDAKernelCallExpr of stmt_info * stmt list * expr_info|CXXMemberCallExpr of stmt_info * stmt list * expr_info|CXXOperatorCallExpr of stmt_info * stmt list * expr_info|UserDefinedLiteral of stmt_info * stmt list * expr_info|BuiltinBitCastExpr of stmt_info * stmt list * expr_info * cast_expr_info * qual_type|CStyleCastExpr of stmt_info * stmt list * expr_info * cast_expr_info * qual_type|CXXFunctionalCastExpr of stmt_info * stmt list * expr_info * cast_expr_info * qual_type|CXXAddrspaceCastExpr of stmt_info * stmt list * expr_info * cast_expr_info * qual_type * string|CXXConstCastExpr of stmt_info * stmt list * expr_info * cast_expr_info * qual_type * string|CXXDynamicCastExpr of stmt_info * stmt list * expr_info * cast_expr_info * qual_type * string|CXXReinterpretCastExpr of stmt_info * stmt list * expr_info * cast_expr_info * qual_type * string|CXXStaticCastExpr of stmt_info * stmt list * expr_info * cast_expr_info * qual_type * string|ObjCBridgedCastExpr of stmt_info * stmt list * expr_info * cast_expr_info * qual_type * obj_c_bridged_cast_expr_info|ImplicitCastExpr of stmt_info * stmt list * expr_info * cast_expr_info|CharacterLiteral of stmt_info * stmt list * expr_info * int|ChooseExpr of stmt_info * stmt list * expr_info|CompoundLiteralExpr of stmt_info * stmt list * expr_info|ConceptSpecializationExpr of stmt_info * stmt list * expr_info|ConvertVectorExpr of stmt_info * stmt list * expr_info|CoawaitExpr of stmt_info * stmt list * expr_info|CoyieldExpr of stmt_info * stmt list * expr_info|DeclRefExpr of stmt_info * stmt list * expr_info * decl_ref_expr_info|DependentCoawaitExpr of stmt_info * stmt list * expr_info|DependentScopeDeclRefExpr of stmt_info * stmt list * expr_info|DesignatedInitExpr of stmt_info * stmt list * expr_info|DesignatedInitUpdateExpr of stmt_info * stmt list * expr_info|ExpressionTraitExpr of stmt_info * stmt list * expr_info|ExtVectorElementExpr of stmt_info * stmt list * expr_info|FixedPointLiteral of stmt_info * stmt list * expr_info * string|FloatingLiteral of stmt_info * stmt list * expr_info * string|ConstantExpr of stmt_info * stmt list * expr_info|ExprWithCleanups of stmt_info * stmt list * expr_info * expr_with_cleanups_info|FunctionParmPackExpr of stmt_info * stmt list * expr_info|GNUNullExpr of stmt_info * stmt list * expr_info|GenericSelectionExpr of stmt_info * stmt list * expr_info * generic_selection_info|ImaginaryLiteral of stmt_info * stmt list * expr_info|ImplicitValueInitExpr of stmt_info * stmt list * expr_info|InitListExpr of stmt_info * stmt list * expr_info|IntegerLiteral of stmt_info * stmt list * expr_info * integer_literal_info|LambdaExpr of stmt_info * stmt list * expr_info * lambda_expr_info|MSPropertyRefExpr of stmt_info * stmt list * expr_info|MSPropertySubscriptExpr of stmt_info * stmt list * expr_info|MaterializeTemporaryExpr of stmt_info * stmt list * expr_info * materialize_temporary_expr_info|MatrixSubscriptExpr of stmt_info * stmt list * expr_info|MemberExpr of stmt_info * stmt list * expr_info * member_expr_info|NoInitExpr of stmt_info * stmt list * expr_info|OMPArraySectionExpr of stmt_info * stmt list * expr_info|OMPArrayShapingExpr of stmt_info * stmt list * expr_info|OMPIteratorExpr of stmt_info * stmt list * expr_info|ObjCArrayLiteral of stmt_info * stmt list * expr_info * obj_c_array_literal_expr_info|ObjCAvailabilityCheckExpr of stmt_info * stmt list * expr_info * obj_c_availability_check_expr_info|ObjCBoolLiteralExpr of stmt_info * stmt list * expr_info * int|ObjCBoxedExpr of stmt_info * stmt list * expr_info * objc_boxed_expr_info|ObjCDictionaryLiteral of stmt_info * stmt list * expr_info * obj_c_dictionary_literal_expr_info|ObjCEncodeExpr of stmt_info * stmt list * expr_info * objc_encode_expr_info|ObjCIndirectCopyRestoreExpr of stmt_info * stmt list * expr_info|ObjCIsaExpr of stmt_info * stmt list * expr_info|ObjCIvarRefExpr of stmt_info * stmt list * expr_info * obj_c_ivar_ref_expr_info|ObjCMessageExpr of stmt_info * stmt list * expr_info * obj_c_message_expr_info|ObjCPropertyRefExpr of stmt_info * stmt list * expr_info * obj_c_property_ref_expr_info|ObjCProtocolExpr of stmt_info * stmt list * expr_info * decl_ref|ObjCSelectorExpr of stmt_info * stmt list * expr_info * selector|ObjCStringLiteral of stmt_info * stmt list * expr_info|ObjCSubscriptRefExpr of stmt_info * stmt list * expr_info * obj_c_subscript_ref_expr_info|OffsetOfExpr of stmt_info * stmt list * expr_info * offset_of_expr_info|OpaqueValueExpr of stmt_info * stmt list * expr_info * opaque_value_expr_info|UnresolvedLookupExpr of stmt_info * stmt list * expr_info * overload_expr_info * unresolved_lookup_expr_info|UnresolvedMemberExpr of stmt_info * stmt list * expr_info * overload_expr_info|PackExpansionExpr of stmt_info * stmt list * expr_info|ParenExpr of stmt_info * stmt list * expr_info|ParenListExpr of stmt_info * stmt list * expr_info|PredefinedExpr of stmt_info * stmt list * expr_info * predefined_expr_type|PseudoObjectExpr of stmt_info * stmt list * expr_info|RecoveryExpr of stmt_info * stmt list * expr_info|RequiresExpr of stmt_info * stmt list * expr_info|ShuffleVectorExpr of stmt_info * stmt list * expr_info|SizeOfPackExpr of stmt_info * stmt list * expr_info|SourceLocExpr of stmt_info * stmt list * expr_info|StmtExpr of stmt_info * stmt list * expr_info|StringLiteral of stmt_info * stmt list * expr_info * string list|SubstNonTypeTemplateParmExpr of stmt_info * stmt list * expr_info|SubstNonTypeTemplateParmPackExpr of stmt_info * stmt list * expr_info|TypeTraitExpr of stmt_info * stmt list * expr_info * type_trait_info|TypoExpr of stmt_info * stmt list * expr_info|UnaryExprOrTypeTraitExpr of stmt_info * stmt list * expr_info * unary_expr_or_type_trait_expr_info|UnaryOperator of stmt_info * stmt list * expr_info * unary_operator_info|VAArgExpr of stmt_info * stmt list * expr_info|LabelStmt of stmt_info * stmt list * string|WhileStmt of stmt_info * stmt listand switch_stmt_info={ssi_init : pointer option;ssi_cond_var : stmt option;ssi_cond : pointer;ssi_body : pointer;}and template_decl_info={tdi_specializations : decl list;}and var_decl_info={vdi_is_global : bool;vdi_is_extern : bool;vdi_is_static : bool;vdi_is_static_local : bool;vdi_is_static_data_member : bool;vdi_is_constexpr : bool;vdi_is_init_ice : bool;vdi_init_expr : stmt option;vdi_is_init_expr_cxx11_constant : bool;vdi_parm_index_in_function : int option;}type lookup={lup_decl_name : string;lup_decl_refs : decl_ref list;}type lookups={lups_decl_ref : decl_ref;lups_primary_context_pointer : pointer option;lups_lookups : lookup list;lups_has_undeserialized_decls : bool;}