From 169671ad937023b7aa0fee226335ba65eb4c0e3b Mon Sep 17 00:00:00 2001 From: Calum Grant <42069085+calumgrant@users.noreply.github.com> Date: Fri, 22 Nov 2024 11:42:39 +0000 Subject: [PATCH] Revert "C++: Implement compilation_build_mode" --- .../old.dbscheme | 2339 --------------- .../semmlecode.cpp.dbscheme | 2323 --------------- .../upgrade.properties | 3 - cpp/ql/lib/semmle/code/cpp/Compilation.qll | 3 - cpp/ql/lib/semmlecode.cpp.dbscheme | 16 - cpp/ql/lib/semmlecode.cpp.dbscheme.stats | 2635 ++++++++--------- .../old.dbscheme | 2323 --------------- .../semmlecode.cpp.dbscheme | 2339 --------------- .../upgrade.properties | 2 - 9 files changed, 1286 insertions(+), 10697 deletions(-) delete mode 100644 cpp/downgrades/f0156f5f88ab5967c79162012c20f30600ca5ebf/old.dbscheme delete mode 100644 cpp/downgrades/f0156f5f88ab5967c79162012c20f30600ca5ebf/semmlecode.cpp.dbscheme delete mode 100644 cpp/downgrades/f0156f5f88ab5967c79162012c20f30600ca5ebf/upgrade.properties delete mode 100644 cpp/ql/lib/upgrades/e51fad7a2436caefab0c6bd52f05e28e7cce4d92/old.dbscheme delete mode 100644 cpp/ql/lib/upgrades/e51fad7a2436caefab0c6bd52f05e28e7cce4d92/semmlecode.cpp.dbscheme delete mode 100644 cpp/ql/lib/upgrades/e51fad7a2436caefab0c6bd52f05e28e7cce4d92/upgrade.properties diff --git a/cpp/downgrades/f0156f5f88ab5967c79162012c20f30600ca5ebf/old.dbscheme b/cpp/downgrades/f0156f5f88ab5967c79162012c20f30600ca5ebf/old.dbscheme deleted file mode 100644 index f0156f5f88ab..000000000000 --- a/cpp/downgrades/f0156f5f88ab5967c79162012c20f30600ca5ebf/old.dbscheme +++ /dev/null @@ -1,2339 +0,0 @@ - -/** - * An invocation of the compiler. Note that more than one file may be - * compiled per invocation. For example, this command compiles three - * source files: - * - * gcc -c f1.c f2.c f3.c - * - * The `id` simply identifies the invocation, while `cwd` is the working - * directory from which the compiler was invoked. - */ -compilations( - /** - * An invocation of the compiler. Note that more than one file may - * be compiled per invocation. For example, this command compiles - * three source files: - * - * gcc -c f1.c f2.c f3.c - */ - unique int id : @compilation, - string cwd : string ref -); - -/** - * The arguments that were passed to the extractor for a compiler - * invocation. If `id` is for the compiler invocation - * - * gcc -c f1.c f2.c f3.c - * - * then typically there will be rows for - * - * num | arg - * --- | --- - * 0 | *path to extractor* - * 1 | `--mimic` - * 2 | `/usr/bin/gcc` - * 3 | `-c` - * 4 | f1.c - * 5 | f2.c - * 6 | f3.c - */ -#keyset[id, num] -compilation_args( - int id : @compilation ref, - int num : int ref, - string arg : string ref -); - -/** - * Optionally, record the build mode for each compilation. - */ -compilation_build_mode( - unique int id : @compilation ref, - int mode : int ref -); - -/* -case @compilation_build_mode.mode of - 0 = @build_mode_none -| 1 = @build_mode_manual -| 2 = @build_mode_auto -; -*/ - -/** - * The source files that are compiled by a compiler invocation. - * If `id` is for the compiler invocation - * - * gcc -c f1.c f2.c f3.c - * - * then there will be rows for - * - * num | arg - * --- | --- - * 0 | f1.c - * 1 | f2.c - * 2 | f3.c - * - * Note that even if those files `#include` headers, those headers - * do not appear as rows. - */ -#keyset[id, num] -compilation_compiling_files( - int id : @compilation ref, - int num : int ref, - int file : @file ref -); - -/** - * The time taken by the extractor for a compiler invocation. - * - * For each file `num`, there will be rows for - * - * kind | seconds - * ---- | --- - * 1 | CPU seconds used by the extractor frontend - * 2 | Elapsed seconds during the extractor frontend - * 3 | CPU seconds used by the extractor backend - * 4 | Elapsed seconds during the extractor backend - */ -#keyset[id, num, kind] -compilation_time( - int id : @compilation ref, - int num : int ref, - /* kind: - 1 = frontend_cpu_seconds - 2 = frontend_elapsed_seconds - 3 = extractor_cpu_seconds - 4 = extractor_elapsed_seconds - */ - int kind : int ref, - float seconds : float ref -); - -/** - * An error or warning generated by the extractor. - * The diagnostic message `diagnostic` was generated during compiler - * invocation `compilation`, and is the `file_number_diagnostic_number`th - * message generated while extracting the `file_number`th file of that - * invocation. - */ -#keyset[compilation, file_number, file_number_diagnostic_number] -diagnostic_for( - int diagnostic : @diagnostic ref, - int compilation : @compilation ref, - int file_number : int ref, - int file_number_diagnostic_number : int ref -); - -/** - * If extraction was successful, then `cpu_seconds` and - * `elapsed_seconds` are the CPU time and elapsed time (respectively) - * that extraction took for compiler invocation `id`. - */ -compilation_finished( - unique int id : @compilation ref, - float cpu_seconds : float ref, - float elapsed_seconds : float ref -); - - -/** - * External data, loaded from CSV files during snapshot creation. See - * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) - * for more information. - */ -externalData( - int id : @externalDataElement, - string path : string ref, - int column: int ref, - string value : string ref -); - -/** - * The source location of the snapshot. - */ -sourceLocationPrefix(string prefix : string ref); - -/** - * Information about packages that provide code used during compilation. - * The `id` is just a unique identifier. - * The `namespace` is typically the name of the package manager that - * provided the package (e.g. "dpkg" or "yum"). - * The `package_name` is the name of the package, and `version` is its - * version (as a string). - */ -external_packages( - unique int id: @external_package, - string namespace : string ref, - string package_name : string ref, - string version : string ref -); - -/** - * Holds if File `fileid` was provided by package `package`. - */ -header_to_external_package( - int fileid : @file ref, - int package : @external_package ref -); - -/* - * Version history - */ - -svnentries( - unique int id : @svnentry, - string revision : string ref, - string author : string ref, - date revisionDate : date ref, - int changeSize : int ref -) - -svnaffectedfiles( - int id : @svnentry ref, - int file : @file ref, - string action : string ref -) - -svnentrymsg( - unique int id : @svnentry ref, - string message : string ref -) - -svnchurn( - int commit : @svnentry ref, - int file : @file ref, - int addedLines : int ref, - int deletedLines : int ref -) - -/* - * C++ dbscheme - */ - -extractor_version( - string codeql_version: string ref, - string frontend_version: string ref -) - -@location = @location_stmt | @location_expr | @location_default ; - -/** - * The location of an element that is not an expression or a statement. - * The location spans column `startcolumn` of line `startline` to - * column `endcolumn` of line `endline` in file `file`. - * For more information, see - * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). - */ -locations_default( - /** The location of an element that is not an expression or a statement. */ - unique int id: @location_default, - int container: @container ref, - int startLine: int ref, - int startColumn: int ref, - int endLine: int ref, - int endColumn: int ref -); - -/** - * The location of a statement. - * The location spans column `startcolumn` of line `startline` to - * column `endcolumn` of line `endline` in file `file`. - * For more information, see - * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). - */ -locations_stmt( - /** The location of a statement. */ - unique int id: @location_stmt, - int container: @container ref, - int startLine: int ref, - int startColumn: int ref, - int endLine: int ref, - int endColumn: int ref -); - -/** - * The location of an expression. - * The location spans column `startcolumn` of line `startline` to - * column `endcolumn` of line `endline` in file `file`. - * For more information, see - * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). - */ -locations_expr( - /** The location of an expression. */ - unique int id: @location_expr, - int container: @container ref, - int startLine: int ref, - int startColumn: int ref, - int endLine: int ref, - int endColumn: int ref -); - -/** An element for which line-count information is available. */ -@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; - -numlines( - int element_id: @sourceline ref, - int num_lines: int ref, - int num_code: int ref, - int num_comment: int ref -); - -diagnostics( - unique int id: @diagnostic, - int severity: int ref, - string error_tag: string ref, - string error_message: string ref, - string full_error_message: string ref, - int location: @location_default ref -); - -files( - unique int id: @file, - string name: string ref -); - -folders( - unique int id: @folder, - string name: string ref -); - -@container = @folder | @file - -containerparent( - int parent: @container ref, - unique int child: @container ref -); - -fileannotations( - int id: @file ref, - int kind: int ref, - string name: string ref, - string value: string ref -); - -inmacroexpansion( - int id: @element ref, - int inv: @macroinvocation ref -); - -affectedbymacroexpansion( - int id: @element ref, - int inv: @macroinvocation ref -); - -case @macroinvocation.kind of - 1 = @macro_expansion -| 2 = @other_macro_reference -; - -macroinvocations( - unique int id: @macroinvocation, - int macro_id: @ppd_define ref, - int location: @location_default ref, - int kind: int ref -); - -macroparent( - unique int id: @macroinvocation ref, - int parent_id: @macroinvocation ref -); - -// a macroinvocation may be part of another location -// the way to find a constant expression that uses a macro -// is thus to find a constant expression that has a location -// to which a macro invocation is bound -macrolocationbind( - int id: @macroinvocation ref, - int location: @location ref -); - -#keyset[invocation, argument_index] -macro_argument_unexpanded( - int invocation: @macroinvocation ref, - int argument_index: int ref, - string text: string ref -); - -#keyset[invocation, argument_index] -macro_argument_expanded( - int invocation: @macroinvocation ref, - int argument_index: int ref, - string text: string ref -); - -/* -case @function.kind of - 1 = @normal_function -| 2 = @constructor -| 3 = @destructor -| 4 = @conversion_function -| 5 = @operator -| 6 = @builtin_function // GCC built-in functions, e.g. __builtin___memcpy_chk -| 7 = @user_defined_literal -| 8 = @deduction_guide -; -*/ - -functions( - unique int id: @function, - string name: string ref, - int kind: int ref -); - -function_entry_point( - int id: @function ref, - unique int entry_point: @stmt ref -); - -function_return_type( - int id: @function ref, - int return_type: @type ref -); - -/** - * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits` - * instance associated with it, and the variables representing the `handle` and `promise` - * for it. - */ -coroutine( - unique int function: @function ref, - int traits: @type ref -); - -/* -case @coroutine_placeholder_variable.kind of - 1 = @handle -| 2 = @promise -| 3 = @init_await_resume -; -*/ - -coroutine_placeholder_variable( - unique int placeholder_variable: @variable ref, - int kind: int ref, - int function: @function ref -) - -/** The `new` function used for allocating the coroutine state, if any. */ -coroutine_new( - unique int function: @function ref, - int new: @function ref -); - -/** The `delete` function used for deallocating the coroutine state, if any. */ -coroutine_delete( - unique int function: @function ref, - int delete: @function ref -); - -purefunctions(unique int id: @function ref); - -function_deleted(unique int id: @function ref); - -function_defaulted(unique int id: @function ref); - -function_prototyped(unique int id: @function ref) - -deduction_guide_for_class( - int id: @function ref, - int class_template: @usertype ref -) - -member_function_this_type( - unique int id: @function ref, - int this_type: @type ref -); - -#keyset[id, type_id] -fun_decls( - int id: @fun_decl, - int function: @function ref, - int type_id: @type ref, - string name: string ref, - int location: @location_default ref -); -fun_def(unique int id: @fun_decl ref); -fun_specialized(unique int id: @fun_decl ref); -fun_implicit(unique int id: @fun_decl ref); -fun_decl_specifiers( - int id: @fun_decl ref, - string name: string ref -) -#keyset[fun_decl, index] -fun_decl_throws( - int fun_decl: @fun_decl ref, - int index: int ref, - int type_id: @type ref -); -/* an empty throw specification is different from none */ -fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); -fun_decl_noexcept( - int fun_decl: @fun_decl ref, - int constant: @expr ref -); -fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); -fun_decl_typedef_type( - unique int fun_decl: @fun_decl ref, - int typedeftype_id: @usertype ref -); - -param_decl_bind( - unique int id: @var_decl ref, - int index: int ref, - int fun_decl: @fun_decl ref -); - -#keyset[id, type_id] -var_decls( - int id: @var_decl, - int variable: @variable ref, - int type_id: @type ref, - string name: string ref, - int location: @location_default ref -); -var_def(unique int id: @var_decl ref); -var_decl_specifiers( - int id: @var_decl ref, - string name: string ref -) -is_structured_binding(unique int id: @variable ref); - -type_decls( - unique int id: @type_decl, - int type_id: @type ref, - int location: @location_default ref -); -type_def(unique int id: @type_decl ref); -type_decl_top( - unique int type_decl: @type_decl ref -); - -namespace_decls( - unique int id: @namespace_decl, - int namespace_id: @namespace ref, - int location: @location_default ref, - int bodylocation: @location_default ref -); - -case @using.kind of - 1 = @using_declaration -| 2 = @using_directive -| 3 = @using_enum_declaration -; - -usings( - unique int id: @using, - int element_id: @element ref, - int location: @location_default ref, - int kind: int ref -); - -/** The element which contains the `using` declaration. */ -using_container( - int parent: @element ref, - int child: @using ref -); - -static_asserts( - unique int id: @static_assert, - int condition : @expr ref, - string message : string ref, - int location: @location_default ref, - int enclosing : @element ref -); - -// each function has an ordered list of parameters -#keyset[id, type_id] -#keyset[function, index, type_id] -params( - int id: @parameter, - int function: @parameterized_element ref, - int index: int ref, - int type_id: @type ref -); - -overrides( - int new: @function ref, - int old: @function ref -); - -#keyset[id, type_id] -membervariables( - int id: @membervariable, - int type_id: @type ref, - string name: string ref -); - -#keyset[id, type_id] -globalvariables( - int id: @globalvariable, - int type_id: @type ref, - string name: string ref -); - -#keyset[id, type_id] -localvariables( - int id: @localvariable, - int type_id: @type ref, - string name: string ref -); - -autoderivation( - unique int var: @variable ref, - int derivation_type: @type ref -); - -orphaned_variables( - int var: @localvariable ref, - int function: @function ref -) - -enumconstants( - unique int id: @enumconstant, - int parent: @usertype ref, - int index: int ref, - int type_id: @type ref, - string name: string ref, - int location: @location_default ref -); - -@variable = @localscopevariable | @globalvariable | @membervariable; - -@localscopevariable = @localvariable | @parameter; - -/** - * Built-in types are the fundamental types, e.g., integral, floating, and void. - */ -case @builtintype.kind of - 1 = @errortype -| 2 = @unknowntype -| 3 = @void -| 4 = @boolean -| 5 = @char -| 6 = @unsigned_char -| 7 = @signed_char -| 8 = @short -| 9 = @unsigned_short -| 10 = @signed_short -| 11 = @int -| 12 = @unsigned_int -| 13 = @signed_int -| 14 = @long -| 15 = @unsigned_long -| 16 = @signed_long -| 17 = @long_long -| 18 = @unsigned_long_long -| 19 = @signed_long_long -// ... 20 Microsoft-specific __int8 -// ... 21 Microsoft-specific __int16 -// ... 22 Microsoft-specific __int32 -// ... 23 Microsoft-specific __int64 -| 24 = @float -| 25 = @double -| 26 = @long_double -| 27 = @complex_float // C99-specific _Complex float -| 28 = @complex_double // C99-specific _Complex double -| 29 = @complex_long_double // C99-specific _Complex long double -| 30 = @imaginary_float // C99-specific _Imaginary float -| 31 = @imaginary_double // C99-specific _Imaginary double -| 32 = @imaginary_long_double // C99-specific _Imaginary long double -| 33 = @wchar_t // Microsoft-specific -| 34 = @decltype_nullptr // C++11 -| 35 = @int128 // __int128 -| 36 = @unsigned_int128 // unsigned __int128 -| 37 = @signed_int128 // signed __int128 -| 38 = @float128 // __float128 -| 39 = @complex_float128 // _Complex __float128 -| 40 = @decimal32 // _Decimal32 -| 41 = @decimal64 // _Decimal64 -| 42 = @decimal128 // _Decimal128 -| 43 = @char16_t -| 44 = @char32_t -| 45 = @std_float32 // _Float32 -| 46 = @float32x // _Float32x -| 47 = @std_float64 // _Float64 -| 48 = @float64x // _Float64x -| 49 = @std_float128 // _Float128 -// ... 50 _Float128x -| 51 = @char8_t -| 52 = @float16 // _Float16 -| 53 = @complex_float16 // _Complex _Float16 -| 54 = @fp16 // __fp16 -| 55 = @std_bfloat16 // __bf16 -| 56 = @std_float16 // std::float16_t -| 57 = @complex_std_float32 // _Complex _Float32 -| 58 = @complex_float32x // _Complex _Float32x -| 59 = @complex_std_float64 // _Complex _Float64 -| 60 = @complex_float64x // _Complex _Float64x -| 61 = @complex_std_float128 // _Complex _Float128 -; - -builtintypes( - unique int id: @builtintype, - string name: string ref, - int kind: int ref, - int size: int ref, - int sign: int ref, - int alignment: int ref -); - -/** - * Derived types are types that are directly derived from existing types and - * point to, refer to, transform type data to return a new type. - */ -case @derivedtype.kind of - 1 = @pointer -| 2 = @reference -| 3 = @type_with_specifiers -| 4 = @array -| 5 = @gnu_vector -| 6 = @routineptr -| 7 = @routinereference -| 8 = @rvalue_reference // C++11 -// ... 9 type_conforming_to_protocols deprecated -| 10 = @block -; - -derivedtypes( - unique int id: @derivedtype, - string name: string ref, - int kind: int ref, - int type_id: @type ref -); - -pointerishsize(unique int id: @derivedtype ref, - int size: int ref, - int alignment: int ref); - -arraysizes( - unique int id: @derivedtype ref, - int num_elements: int ref, - int bytesize: int ref, - int alignment: int ref -); - -typedefbase( - unique int id: @usertype ref, - int type_id: @type ref -); - -/** - * An instance of the C++11 `decltype` operator. For example: - * ``` - * int a; - * decltype(1+a) b; - * ``` - * Here `expr` is `1+a`. - * - * Sometimes an additional pair of parentheses around the expression - * would change the semantics of this decltype, e.g. - * ``` - * struct A { double x; }; - * const A* a = new A(); - * decltype( a->x ); // type is double - * decltype((a->x)); // type is const double& - * ``` - * (Please consult the C++11 standard for more details). - * `parentheses_would_change_meaning` is `true` iff that is the case. - */ -#keyset[id, expr] -decltypes( - int id: @decltype, - int expr: @expr ref, - int base_type: @type ref, - boolean parentheses_would_change_meaning: boolean ref -); - -/* -case @usertype.kind of - 1 = @struct -| 2 = @class -| 3 = @union -| 4 = @enum -| 5 = @typedef // classic C: typedef typedef type name -| 6 = @template -| 7 = @template_parameter -| 8 = @template_template_parameter -| 9 = @proxy_class // a proxy class associated with a template parameter -// ... 10 objc_class deprecated -// ... 11 objc_protocol deprecated -// ... 12 objc_category deprecated -| 13 = @scoped_enum -| 14 = @using_alias // a using name = type style typedef -; -*/ - -usertypes( - unique int id: @usertype, - string name: string ref, - int kind: int ref -); - -usertypesize( - unique int id: @usertype ref, - int size: int ref, - int alignment: int ref -); - -usertype_final(unique int id: @usertype ref); - -usertype_uuid( - unique int id: @usertype ref, - string uuid: string ref -); - -mangled_name( - unique int id: @declaration ref, - int mangled_name : @mangledname, - boolean is_complete: boolean ref -); - -is_pod_class(unique int id: @usertype ref); -is_standard_layout_class(unique int id: @usertype ref); - -is_complete(unique int id: @usertype ref); - -is_class_template(unique int id: @usertype ref); -class_instantiation( - int to: @usertype ref, - int from: @usertype ref -); -class_template_argument( - int type_id: @usertype ref, - int index: int ref, - int arg_type: @type ref -); -class_template_argument_value( - int type_id: @usertype ref, - int index: int ref, - int arg_value: @expr ref -); - -is_proxy_class_for( - unique int id: @usertype ref, - unique int templ_param_id: @usertype ref -); - -type_mentions( - unique int id: @type_mention, - int type_id: @type ref, - int location: @location ref, - // a_symbol_reference_kind from the frontend. - int kind: int ref -); - -is_function_template(unique int id: @function ref); -function_instantiation( - unique int to: @function ref, - int from: @function ref -); -function_template_argument( - int function_id: @function ref, - int index: int ref, - int arg_type: @type ref -); -function_template_argument_value( - int function_id: @function ref, - int index: int ref, - int arg_value: @expr ref -); - -is_variable_template(unique int id: @variable ref); -variable_instantiation( - unique int to: @variable ref, - int from: @variable ref -); -variable_template_argument( - int variable_id: @variable ref, - int index: int ref, - int arg_type: @type ref -); -variable_template_argument_value( - int variable_id: @variable ref, - int index: int ref, - int arg_value: @expr ref -); - -routinetypes( - unique int id: @routinetype, - int return_type: @type ref -); - -routinetypeargs( - int routine: @routinetype ref, - int index: int ref, - int type_id: @type ref -); - -ptrtomembers( - unique int id: @ptrtomember, - int type_id: @type ref, - int class_id: @type ref -); - -/* - specifiers for types, functions, and variables - - "public", - "protected", - "private", - - "const", - "volatile", - "static", - - "pure", - "virtual", - "sealed", // Microsoft - "__interface", // Microsoft - "inline", - "explicit", - - "near", // near far extension - "far", // near far extension - "__ptr32", // Microsoft - "__ptr64", // Microsoft - "__sptr", // Microsoft - "__uptr", // Microsoft - "dllimport", // Microsoft - "dllexport", // Microsoft - "thread", // Microsoft - "naked", // Microsoft - "microsoft_inline", // Microsoft - "forceinline", // Microsoft - "selectany", // Microsoft - "nothrow", // Microsoft - "novtable", // Microsoft - "noreturn", // Microsoft - "noinline", // Microsoft - "noalias", // Microsoft - "restrict", // Microsoft -*/ - -specifiers( - unique int id: @specifier, - unique string str: string ref -); - -typespecifiers( - int type_id: @type ref, - int spec_id: @specifier ref -); - -funspecifiers( - int func_id: @function ref, - int spec_id: @specifier ref -); - -varspecifiers( - int var_id: @accessible ref, - int spec_id: @specifier ref -); - -explicit_specifier_exprs( - unique int func_id: @function ref, - int constant: @expr ref -) - -attributes( - unique int id: @attribute, - int kind: int ref, - string name: string ref, - string name_space: string ref, - int location: @location_default ref -); - -case @attribute.kind of - 0 = @gnuattribute -| 1 = @stdattribute -| 2 = @declspec -| 3 = @msattribute -| 4 = @alignas -// ... 5 @objc_propertyattribute deprecated -; - -attribute_args( - unique int id: @attribute_arg, - int kind: int ref, - int attribute: @attribute ref, - int index: int ref, - int location: @location_default ref -); - -case @attribute_arg.kind of - 0 = @attribute_arg_empty -| 1 = @attribute_arg_token -| 2 = @attribute_arg_constant -| 3 = @attribute_arg_type -| 4 = @attribute_arg_constant_expr -| 5 = @attribute_arg_expr -; - -attribute_arg_value( - unique int arg: @attribute_arg ref, - string value: string ref -); -attribute_arg_type( - unique int arg: @attribute_arg ref, - int type_id: @type ref -); -attribute_arg_constant( - unique int arg: @attribute_arg ref, - int constant: @expr ref -) -attribute_arg_expr( - unique int arg: @attribute_arg ref, - int expr: @expr ref -) -attribute_arg_name( - unique int arg: @attribute_arg ref, - string name: string ref -); - -typeattributes( - int type_id: @type ref, - int spec_id: @attribute ref -); - -funcattributes( - int func_id: @function ref, - int spec_id: @attribute ref -); - -varattributes( - int var_id: @accessible ref, - int spec_id: @attribute ref -); - -stmtattributes( - int stmt_id: @stmt ref, - int spec_id: @attribute ref -); - -@type = @builtintype - | @derivedtype - | @usertype - /* TODO | @fixedpointtype */ - | @routinetype - | @ptrtomember - | @decltype; - -unspecifiedtype( - unique int type_id: @type ref, - int unspecified_type_id: @type ref -); - -member( - int parent: @type ref, - int index: int ref, - int child: @member ref -); - -@enclosingfunction_child = @usertype | @variable | @namespace - -enclosingfunction( - unique int child: @enclosingfunction_child ref, - int parent: @function ref -); - -derivations( - unique int derivation: @derivation, - int sub: @type ref, - int index: int ref, - int super: @type ref, - int location: @location_default ref -); - -derspecifiers( - int der_id: @derivation ref, - int spec_id: @specifier ref -); - -/** - * Contains the byte offset of the base class subobject within the derived - * class. Only holds for non-virtual base classes, but see table - * `virtual_base_offsets` for offsets of virtual base class subobjects. - */ -direct_base_offsets( - unique int der_id: @derivation ref, - int offset: int ref -); - -/** - * Contains the byte offset of the virtual base class subobject for class - * `super` within a most-derived object of class `sub`. `super` can be either a - * direct or indirect base class. - */ -#keyset[sub, super] -virtual_base_offsets( - int sub: @usertype ref, - int super: @usertype ref, - int offset: int ref -); - -frienddecls( - unique int id: @frienddecl, - int type_id: @type ref, - int decl_id: @declaration ref, - int location: @location_default ref -); - -@declaredtype = @usertype ; - -@declaration = @function - | @declaredtype - | @variable - | @enumconstant - | @frienddecl; - -@member = @membervariable - | @function - | @declaredtype - | @enumconstant; - -@locatable = @diagnostic - | @declaration - | @ppd_include - | @ppd_define - | @macroinvocation - /*| @funcall*/ - | @xmllocatable - | @attribute - | @attribute_arg; - -@namedscope = @namespace | @usertype; - -@element = @locatable - | @file - | @folder - | @specifier - | @type - | @expr - | @namespace - | @initialiser - | @stmt - | @derivation - | @comment - | @preprocdirect - | @fun_decl - | @var_decl - | @type_decl - | @namespace_decl - | @using - | @namequalifier - | @specialnamequalifyingelement - | @static_assert - | @type_mention - | @lambdacapture; - -@exprparent = @element; - -comments( - unique int id: @comment, - string contents: string ref, - int location: @location_default ref -); - -commentbinding( - int id: @comment ref, - int element: @element ref -); - -exprconv( - int converted: @expr ref, - unique int conversion: @expr ref -); - -compgenerated(unique int id: @element ref); - -/** - * `destructor_call` destructs the `i`'th entity that should be - * destructed following `element`. Note that entities should be - * destructed in reverse construction order, so for a given `element` - * these should be called from highest to lowest `i`. - */ -#keyset[element, destructor_call] -#keyset[element, i] -synthetic_destructor_call( - int element: @element ref, - int i: int ref, - int destructor_call: @routineexpr ref -); - -namespaces( - unique int id: @namespace, - string name: string ref -); - -namespace_inline( - unique int id: @namespace ref -); - -namespacembrs( - int parentid: @namespace ref, - unique int memberid: @namespacembr ref -); - -@namespacembr = @declaration | @namespace; - -exprparents( - int expr_id: @expr ref, - int child_index: int ref, - int parent_id: @exprparent ref -); - -expr_isload(unique int expr_id: @expr ref); - -@cast = @c_style_cast - | @const_cast - | @dynamic_cast - | @reinterpret_cast - | @static_cast - ; - -/* -case @conversion.kind of - 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast -| 1 = @bool_conversion // conversion to 'bool' -| 2 = @base_class_conversion // a derived-to-base conversion -| 3 = @derived_class_conversion // a base-to-derived conversion -| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member -| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member -| 6 = @glvalue_adjust // an adjustment of the type of a glvalue -| 7 = @prvalue_adjust // an adjustment of the type of a prvalue -; -*/ -/** - * Describes the semantics represented by a cast expression. This is largely - * independent of the source syntax of the cast, so it is separate from the - * regular expression kind. - */ -conversionkinds( - unique int expr_id: @cast ref, - int kind: int ref -); - -@conversion = @cast - | @array_to_pointer - | @parexpr - | @reference_to - | @ref_indirect - | @temp_init - | @c11_generic - ; - -/* -case @funbindexpr.kind of - 0 = @normal_call // a normal call -| 1 = @virtual_call // a virtual call -| 2 = @adl_call // a call whose target is only found by ADL -; -*/ -iscall( - unique int caller: @funbindexpr ref, - int kind: int ref -); - -numtemplatearguments( - unique int expr_id: @expr ref, - int num: int ref -); - -specialnamequalifyingelements( - unique int id: @specialnamequalifyingelement, - unique string name: string ref -); - -@namequalifiableelement = @expr | @namequalifier; -@namequalifyingelement = @namespace - | @specialnamequalifyingelement - | @usertype; - -namequalifiers( - unique int id: @namequalifier, - unique int qualifiableelement: @namequalifiableelement ref, - int qualifyingelement: @namequalifyingelement ref, - int location: @location_default ref -); - -varbind( - int expr: @varbindexpr ref, - int var: @accessible ref -); - -funbind( - int expr: @funbindexpr ref, - int fun: @function ref -); - -@any_new_expr = @new_expr - | @new_array_expr; - -@new_or_delete_expr = @any_new_expr - | @delete_expr - | @delete_array_expr; - -@prefix_crement_expr = @preincrexpr | @predecrexpr; - -@postfix_crement_expr = @postincrexpr | @postdecrexpr; - -@increment_expr = @preincrexpr | @postincrexpr; - -@decrement_expr = @predecrexpr | @postdecrexpr; - -@crement_expr = @increment_expr | @decrement_expr; - -@un_arith_op_expr = @arithnegexpr - | @unaryplusexpr - | @conjugation - | @realpartexpr - | @imagpartexpr - | @crement_expr - ; - -@un_bitwise_op_expr = @complementexpr; - -@un_log_op_expr = @notexpr; - -@un_op_expr = @address_of - | @indirect - | @un_arith_op_expr - | @un_bitwise_op_expr - | @builtinaddressof - | @vec_fill - | @un_log_op_expr - | @co_await - | @co_yield - ; - -@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; - -@cmp_op_expr = @eq_op_expr | @rel_op_expr; - -@eq_op_expr = @eqexpr | @neexpr; - -@rel_op_expr = @gtexpr - | @ltexpr - | @geexpr - | @leexpr - | @spaceshipexpr - ; - -@bin_bitwise_op_expr = @lshiftexpr - | @rshiftexpr - | @andexpr - | @orexpr - | @xorexpr - ; - -@p_arith_op_expr = @paddexpr - | @psubexpr - | @pdiffexpr - ; - -@bin_arith_op_expr = @addexpr - | @subexpr - | @mulexpr - | @divexpr - | @remexpr - | @jmulexpr - | @jdivexpr - | @fjaddexpr - | @jfaddexpr - | @fjsubexpr - | @jfsubexpr - | @minexpr - | @maxexpr - | @p_arith_op_expr - ; - -@bin_op_expr = @bin_arith_op_expr - | @bin_bitwise_op_expr - | @cmp_op_expr - | @bin_log_op_expr - ; - -@op_expr = @un_op_expr - | @bin_op_expr - | @assign_expr - | @conditionalexpr - ; - -@assign_arith_expr = @assignaddexpr - | @assignsubexpr - | @assignmulexpr - | @assigndivexpr - | @assignremexpr - ; - -@assign_bitwise_expr = @assignandexpr - | @assignorexpr - | @assignxorexpr - | @assignlshiftexpr - | @assignrshiftexpr - ; - -@assign_pointer_expr = @assignpaddexpr - | @assignpsubexpr - ; - -@assign_op_expr = @assign_arith_expr - | @assign_bitwise_expr - | @assign_pointer_expr - ; - -@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr - -/* - Binary encoding of the allocator form. - - case @allocator.form of - 0 = plain - | 1 = alignment - ; -*/ - -/** - * The allocator function associated with a `new` or `new[]` expression. - * The `form` column specified whether the allocation call contains an alignment - * argument. - */ -expr_allocator( - unique int expr: @any_new_expr ref, - int func: @function ref, - int form: int ref -); - -/* - Binary encoding of the deallocator form. - - case @deallocator.form of - 0 = plain - | 1 = size - | 2 = alignment - | 4 = destroying_delete - ; -*/ - -/** - * The deallocator function associated with a `delete`, `delete[]`, `new`, or - * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the - * one used to free memory if the initialization throws an exception. - * The `form` column specifies whether the deallocation call contains a size - * argument, and alignment argument, or both. - */ -expr_deallocator( - unique int expr: @new_or_delete_expr ref, - int func: @function ref, - int form: int ref -); - -/** - * Holds if the `@conditionalexpr` is of the two operand form - * `guard ? : false`. - */ -expr_cond_two_operand( - unique int cond: @conditionalexpr ref -); - -/** - * The guard of `@conditionalexpr` `guard ? true : false` - */ -expr_cond_guard( - unique int cond: @conditionalexpr ref, - int guard: @expr ref -); - -/** - * The expression used when the guard of `@conditionalexpr` - * `guard ? true : false` holds. For the two operand form - * `guard ?: false` consider using `expr_cond_guard` instead. - */ -expr_cond_true( - unique int cond: @conditionalexpr ref, - int true: @expr ref -); - -/** - * The expression used when the guard of `@conditionalexpr` - * `guard ? true : false` does not hold. - */ -expr_cond_false( - unique int cond: @conditionalexpr ref, - int false: @expr ref -); - -/** A string representation of the value. */ -values( - unique int id: @value, - string str: string ref -); - -/** The actual text in the source code for the value, if any. */ -valuetext( - unique int id: @value ref, - string text: string ref -); - -valuebind( - int val: @value ref, - unique int expr: @expr ref -); - -fieldoffsets( - unique int id: @variable ref, - int byteoffset: int ref, - int bitoffset: int ref -); - -bitfield( - unique int id: @variable ref, - int bits: int ref, - int declared_bits: int ref -); - -/* TODO -memberprefix( - int member: @expr ref, - int prefix: @expr ref -); -*/ - -/* - kind(1) = mbrcallexpr - kind(2) = mbrptrcallexpr - kind(3) = mbrptrmbrcallexpr - kind(4) = ptrmbrptrmbrcallexpr - kind(5) = mbrreadexpr // x.y - kind(6) = mbrptrreadexpr // p->y - kind(7) = mbrptrmbrreadexpr // x.*pm - kind(8) = mbrptrmbrptrreadexpr // x->*pm - kind(9) = staticmbrreadexpr // static x.y - kind(10) = staticmbrptrreadexpr // static p->y -*/ -/* TODO -memberaccess( - int member: @expr ref, - int kind: int ref -); -*/ - -initialisers( - unique int init: @initialiser, - int var: @accessible ref, - unique int expr: @expr ref, - int location: @location_expr ref -); - -braced_initialisers( - int init: @initialiser ref -); - -/** - * An ancestor for the expression, for cases in which we cannot - * otherwise find the expression's parent. - */ -expr_ancestor( - int exp: @expr ref, - int ancestor: @element ref -); - -exprs( - unique int id: @expr, - int kind: int ref, - int location: @location_expr ref -); - -expr_reuse( - int reuse: @expr ref, - int original: @expr ref, - int value_category: int ref -) - -/* - case @value.category of - 1 = prval - | 2 = xval - | 3 = lval - ; -*/ -expr_types( - int id: @expr ref, - int typeid: @type ref, - int value_category: int ref -); - -case @expr.kind of - 1 = @errorexpr -| 2 = @address_of // & AddressOfExpr -| 3 = @reference_to // ReferenceToExpr (implicit?) -| 4 = @indirect // * PointerDereferenceExpr -| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) -// ... -| 8 = @array_to_pointer // (???) -| 9 = @vacuous_destructor_call // VacuousDestructorCall -// ... -| 11 = @assume // Microsoft -| 12 = @parexpr -| 13 = @arithnegexpr -| 14 = @unaryplusexpr -| 15 = @complementexpr -| 16 = @notexpr -| 17 = @conjugation // GNU ~ operator -| 18 = @realpartexpr // GNU __real -| 19 = @imagpartexpr // GNU __imag -| 20 = @postincrexpr -| 21 = @postdecrexpr -| 22 = @preincrexpr -| 23 = @predecrexpr -| 24 = @conditionalexpr -| 25 = @addexpr -| 26 = @subexpr -| 27 = @mulexpr -| 28 = @divexpr -| 29 = @remexpr -| 30 = @jmulexpr // C99 mul imaginary -| 31 = @jdivexpr // C99 div imaginary -| 32 = @fjaddexpr // C99 add real + imaginary -| 33 = @jfaddexpr // C99 add imaginary + real -| 34 = @fjsubexpr // C99 sub real - imaginary -| 35 = @jfsubexpr // C99 sub imaginary - real -| 36 = @paddexpr // pointer add (pointer + int or int + pointer) -| 37 = @psubexpr // pointer sub (pointer - integer) -| 38 = @pdiffexpr // difference between two pointers -| 39 = @lshiftexpr -| 40 = @rshiftexpr -| 41 = @andexpr -| 42 = @orexpr -| 43 = @xorexpr -| 44 = @eqexpr -| 45 = @neexpr -| 46 = @gtexpr -| 47 = @ltexpr -| 48 = @geexpr -| 49 = @leexpr -| 50 = @minexpr // GNU minimum -| 51 = @maxexpr // GNU maximum -| 52 = @assignexpr -| 53 = @assignaddexpr -| 54 = @assignsubexpr -| 55 = @assignmulexpr -| 56 = @assigndivexpr -| 57 = @assignremexpr -| 58 = @assignlshiftexpr -| 59 = @assignrshiftexpr -| 60 = @assignandexpr -| 61 = @assignorexpr -| 62 = @assignxorexpr -| 63 = @assignpaddexpr // assign pointer add -| 64 = @assignpsubexpr // assign pointer sub -| 65 = @andlogicalexpr -| 66 = @orlogicalexpr -| 67 = @commaexpr -| 68 = @subscriptexpr // access to member of an array, e.g., a[5] -// ... 69 @objc_subscriptexpr deprecated -// ... 70 @cmdaccess deprecated -// ... -| 73 = @virtfunptrexpr -| 74 = @callexpr -// ... 75 @msgexpr_normal deprecated -// ... 76 @msgexpr_super deprecated -// ... 77 @atselectorexpr deprecated -// ... 78 @atprotocolexpr deprecated -| 79 = @vastartexpr -| 80 = @vaargexpr -| 81 = @vaendexpr -| 82 = @vacopyexpr -// ... 83 @atencodeexpr deprecated -| 84 = @varaccess -| 85 = @thisaccess -// ... 86 @objc_box_expr deprecated -| 87 = @new_expr -| 88 = @delete_expr -| 89 = @throw_expr -| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) -| 91 = @braced_init_list -| 92 = @type_id -| 93 = @runtime_sizeof -| 94 = @runtime_alignof -| 95 = @sizeof_pack -| 96 = @expr_stmt // GNU extension -| 97 = @routineexpr -| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) -| 99 = @offsetofexpr // offsetof ::= type and field -| 100 = @hasassignexpr // __has_assign ::= type -| 101 = @hascopyexpr // __has_copy ::= type -| 102 = @hasnothrowassign // __has_nothrow_assign ::= type -| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type -| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type -| 105 = @hastrivialassign // __has_trivial_assign ::= type -| 106 = @hastrivialconstr // __has_trivial_constructor ::= type -| 107 = @hastrivialcopy // __has_trivial_copy ::= type -| 108 = @hasuserdestr // __has_user_destructor ::= type -| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type -| 110 = @isabstractexpr // __is_abstract ::= type -| 111 = @isbaseofexpr // __is_base_of ::= type type -| 112 = @isclassexpr // __is_class ::= type -| 113 = @isconvtoexpr // __is_convertible_to ::= type type -| 114 = @isemptyexpr // __is_empty ::= type -| 115 = @isenumexpr // __is_enum ::= type -| 116 = @ispodexpr // __is_pod ::= type -| 117 = @ispolyexpr // __is_polymorphic ::= type -| 118 = @isunionexpr // __is_union ::= type -| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type -| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof -// ... -| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type -| 123 = @literal -| 124 = @uuidof -| 127 = @aggregateliteral -| 128 = @delete_array_expr -| 129 = @new_array_expr -// ... 130 @objc_array_literal deprecated -// ... 131 @objc_dictionary_literal deprecated -| 132 = @foldexpr -// ... -| 200 = @ctordirectinit -| 201 = @ctorvirtualinit -| 202 = @ctorfieldinit -| 203 = @ctordelegatinginit -| 204 = @dtordirectdestruct -| 205 = @dtorvirtualdestruct -| 206 = @dtorfielddestruct -// ... -| 210 = @static_cast -| 211 = @reinterpret_cast -| 212 = @const_cast -| 213 = @dynamic_cast -| 214 = @c_style_cast -| 215 = @lambdaexpr -| 216 = @param_ref -| 217 = @noopexpr -// ... -| 294 = @istriviallyconstructibleexpr -| 295 = @isdestructibleexpr -| 296 = @isnothrowdestructibleexpr -| 297 = @istriviallydestructibleexpr -| 298 = @istriviallyassignableexpr -| 299 = @isnothrowassignableexpr -| 300 = @istrivialexpr -| 301 = @isstandardlayoutexpr -| 302 = @istriviallycopyableexpr -| 303 = @isliteraltypeexpr -| 304 = @hastrivialmoveconstructorexpr -| 305 = @hastrivialmoveassignexpr -| 306 = @hasnothrowmoveassignexpr -| 307 = @isconstructibleexpr -| 308 = @isnothrowconstructibleexpr -| 309 = @hasfinalizerexpr -| 310 = @isdelegateexpr -| 311 = @isinterfaceclassexpr -| 312 = @isrefarrayexpr -| 313 = @isrefclassexpr -| 314 = @issealedexpr -| 315 = @issimplevalueclassexpr -| 316 = @isvalueclassexpr -| 317 = @isfinalexpr -| 319 = @noexceptexpr -| 320 = @builtinshufflevector -| 321 = @builtinchooseexpr -| 322 = @builtinaddressof -| 323 = @vec_fill -| 324 = @builtinconvertvector -| 325 = @builtincomplex -| 326 = @spaceshipexpr -| 327 = @co_await -| 328 = @co_yield -| 329 = @temp_init -| 330 = @isassignable -| 331 = @isaggregate -| 332 = @hasuniqueobjectrepresentations -| 333 = @builtinbitcast -| 334 = @builtinshuffle -| 335 = @blockassignexpr -| 336 = @issame -| 337 = @isfunction -| 338 = @islayoutcompatible -| 339 = @ispointerinterconvertiblebaseof -| 340 = @isarray -| 341 = @arrayrank -| 342 = @arrayextent -| 343 = @isarithmetic -| 344 = @iscompletetype -| 345 = @iscompound -| 346 = @isconst -| 347 = @isfloatingpoint -| 348 = @isfundamental -| 349 = @isintegral -| 350 = @islvaluereference -| 351 = @ismemberfunctionpointer -| 352 = @ismemberobjectpointer -| 353 = @ismemberpointer -| 354 = @isobject -| 355 = @ispointer -| 356 = @isreference -| 357 = @isrvaluereference -| 358 = @isscalar -| 359 = @issigned -| 360 = @isunsigned -| 361 = @isvoid -| 362 = @isvolatile -| 363 = @reuseexpr -| 364 = @istriviallycopyassignable -| 365 = @isassignablenopreconditioncheck -| 366 = @referencebindstotemporary -| 367 = @issameas -| 368 = @builtinhasattribute -| 369 = @ispointerinterconvertiblewithclass -| 370 = @builtinispointerinterconvertiblewithclass -| 371 = @iscorrespondingmember -| 372 = @builtiniscorrespondingmember -| 373 = @isboundedarray -| 374 = @isunboundedarray -| 375 = @isreferenceable -| 378 = @isnothrowconvertible -| 379 = @referenceconstructsfromtemporary -| 380 = @referenceconvertsfromtemporary -| 381 = @isconvertible -| 382 = @isvalidwinrttype -| 383 = @iswinclass -| 384 = @iswininterface -| 385 = @istriviallyequalitycomparable -| 386 = @isscopedenum -| 387 = @istriviallyrelocatable -| 388 = @datasizeof -| 389 = @c11_generic -| 390 = @requires_expr -| 391 = @nested_requirement -| 392 = @compound_requirement -| 393 = @concept_id -; - -@var_args_expr = @vastartexpr - | @vaendexpr - | @vaargexpr - | @vacopyexpr - ; - -@builtin_op = @var_args_expr - | @noopexpr - | @offsetofexpr - | @intaddrexpr - | @hasassignexpr - | @hascopyexpr - | @hasnothrowassign - | @hasnothrowconstr - | @hasnothrowcopy - | @hastrivialassign - | @hastrivialconstr - | @hastrivialcopy - | @hastrivialdestructor - | @hasuserdestr - | @hasvirtualdestr - | @isabstractexpr - | @isbaseofexpr - | @isclassexpr - | @isconvtoexpr - | @isemptyexpr - | @isenumexpr - | @ispodexpr - | @ispolyexpr - | @isunionexpr - | @typescompexpr - | @builtinshufflevector - | @builtinconvertvector - | @builtinaddressof - | @istriviallyconstructibleexpr - | @isdestructibleexpr - | @isnothrowdestructibleexpr - | @istriviallydestructibleexpr - | @istriviallyassignableexpr - | @isnothrowassignableexpr - | @istrivialexpr - | @isstandardlayoutexpr - | @istriviallycopyableexpr - | @isliteraltypeexpr - | @hastrivialmoveconstructorexpr - | @hastrivialmoveassignexpr - | @hasnothrowmoveassignexpr - | @isconstructibleexpr - | @isnothrowconstructibleexpr - | @hasfinalizerexpr - | @isdelegateexpr - | @isinterfaceclassexpr - | @isrefarrayexpr - | @isrefclassexpr - | @issealedexpr - | @issimplevalueclassexpr - | @isvalueclassexpr - | @isfinalexpr - | @builtinchooseexpr - | @builtincomplex - | @isassignable - | @isaggregate - | @hasuniqueobjectrepresentations - | @builtinbitcast - | @builtinshuffle - | @issame - | @isfunction - | @islayoutcompatible - | @ispointerinterconvertiblebaseof - | @isarray - | @arrayrank - | @arrayextent - | @isarithmetic - | @iscompletetype - | @iscompound - | @isconst - | @isfloatingpoint - | @isfundamental - | @isintegral - | @islvaluereference - | @ismemberfunctionpointer - | @ismemberobjectpointer - | @ismemberpointer - | @isobject - | @ispointer - | @isreference - | @isrvaluereference - | @isscalar - | @issigned - | @isunsigned - | @isvoid - | @isvolatile - | @istriviallycopyassignable - | @isassignablenopreconditioncheck - | @referencebindstotemporary - | @issameas - | @builtinhasattribute - | @ispointerinterconvertiblewithclass - | @builtinispointerinterconvertiblewithclass - | @iscorrespondingmember - | @builtiniscorrespondingmember - | @isboundedarray - | @isunboundedarray - | @isreferenceable - | @isnothrowconvertible - | @referenceconstructsfromtemporary - | @referenceconvertsfromtemporary - | @isconvertible - | @isvalidwinrttype - | @iswinclass - | @iswininterface - | @istriviallyequalitycomparable - | @isscopedenum - | @istriviallyrelocatable - ; - -compound_requirement_is_noexcept( - int expr: @compound_requirement ref -); - -new_allocated_type( - unique int expr: @new_expr ref, - int type_id: @type ref -); - -new_array_allocated_type( - unique int expr: @new_array_expr ref, - int type_id: @type ref -); - -/** - * The field being initialized by an initializer expression within an aggregate - * initializer for a class/struct/union. Position is used to sort repeated initializers. - */ -#keyset[aggregate, position] -aggregate_field_init( - int aggregate: @aggregateliteral ref, - int initializer: @expr ref, - int field: @membervariable ref, - int position: int ref -); - -/** - * The index of the element being initialized by an initializer expression - * within an aggregate initializer for an array. Position is used to sort repeated initializers. - */ -#keyset[aggregate, position] -aggregate_array_init( - int aggregate: @aggregateliteral ref, - int initializer: @expr ref, - int element_index: int ref, - int position: int ref -); - -@ctorinit = @ctordirectinit - | @ctorvirtualinit - | @ctorfieldinit - | @ctordelegatinginit; -@dtordestruct = @dtordirectdestruct - | @dtorvirtualdestruct - | @dtorfielddestruct; - - -condition_decl_bind( - unique int expr: @condition_decl ref, - unique int decl: @declaration ref -); - -typeid_bind( - unique int expr: @type_id ref, - int type_id: @type ref -); - -uuidof_bind( - unique int expr: @uuidof ref, - int type_id: @type ref -); - -@runtime_sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof; - -sizeof_bind( - unique int expr: @runtime_sizeof_or_alignof ref, - int type_id: @type ref -); - -code_block( - unique int block: @literal ref, - unique int routine: @function ref -); - -lambdas( - unique int expr: @lambdaexpr ref, - string default_capture: string ref, - boolean has_explicit_return_type: boolean ref -); - -lambda_capture( - unique int id: @lambdacapture, - int lambda: @lambdaexpr ref, - int index: int ref, - int field: @membervariable ref, - boolean captured_by_reference: boolean ref, - boolean is_implicit: boolean ref, - int location: @location_default ref -); - -@funbindexpr = @routineexpr - | @new_expr - | @delete_expr - | @delete_array_expr - | @ctordirectinit - | @ctorvirtualinit - | @ctordelegatinginit - | @dtordirectdestruct - | @dtorvirtualdestruct; - -@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; -@addressable = @function | @variable ; -@accessible = @addressable | @enumconstant ; - -@access = @varaccess | @routineexpr ; - -fold( - int expr: @foldexpr ref, - string operator: string ref, - boolean is_left_fold: boolean ref -); - -stmts( - unique int id: @stmt, - int kind: int ref, - int location: @location_stmt ref -); - -case @stmt.kind of - 1 = @stmt_expr -| 2 = @stmt_if -| 3 = @stmt_while -| 4 = @stmt_goto -| 5 = @stmt_label -| 6 = @stmt_return -| 7 = @stmt_block -| 8 = @stmt_end_test_while // do { ... } while ( ... ) -| 9 = @stmt_for -| 10 = @stmt_switch_case -| 11 = @stmt_switch -| 13 = @stmt_asm // "asm" statement or the body of an asm function -| 15 = @stmt_try_block -| 16 = @stmt_microsoft_try // Microsoft -| 17 = @stmt_decl -| 18 = @stmt_set_vla_size // C99 -| 19 = @stmt_vla_decl // C99 -| 25 = @stmt_assigned_goto // GNU -| 26 = @stmt_empty -| 27 = @stmt_continue -| 28 = @stmt_break -| 29 = @stmt_range_based_for // C++11 -// ... 30 @stmt_at_autoreleasepool_block deprecated -// ... 31 @stmt_objc_for_in deprecated -// ... 32 @stmt_at_synchronized deprecated -| 33 = @stmt_handler -// ... 34 @stmt_finally_end deprecated -| 35 = @stmt_constexpr_if -| 37 = @stmt_co_return -; - -type_vla( - int type_id: @type ref, - int decl: @stmt_vla_decl ref -); - -variable_vla( - int var: @variable ref, - int decl: @stmt_vla_decl ref -); - -if_initialization( - unique int if_stmt: @stmt_if ref, - int init_id: @stmt ref -); - -if_then( - unique int if_stmt: @stmt_if ref, - int then_id: @stmt ref -); - -if_else( - unique int if_stmt: @stmt_if ref, - int else_id: @stmt ref -); - -constexpr_if_initialization( - unique int constexpr_if_stmt: @stmt_constexpr_if ref, - int init_id: @stmt ref -); - -constexpr_if_then( - unique int constexpr_if_stmt: @stmt_constexpr_if ref, - int then_id: @stmt ref -); - -constexpr_if_else( - unique int constexpr_if_stmt: @stmt_constexpr_if ref, - int else_id: @stmt ref -); - -while_body( - unique int while_stmt: @stmt_while ref, - int body_id: @stmt ref -); - -do_body( - unique int do_stmt: @stmt_end_test_while ref, - int body_id: @stmt ref -); - -switch_initialization( - unique int switch_stmt: @stmt_switch ref, - int init_id: @stmt ref -); - -#keyset[switch_stmt, index] -switch_case( - int switch_stmt: @stmt_switch ref, - int index: int ref, - int case_id: @stmt_switch_case ref -); - -switch_body( - unique int switch_stmt: @stmt_switch ref, - int body_id: @stmt ref -); - -@stmt_for_or_range_based_for = @stmt_for - | @stmt_range_based_for; - -for_initialization( - unique int for_stmt: @stmt_for_or_range_based_for ref, - int init_id: @stmt ref -); - -for_condition( - unique int for_stmt: @stmt_for ref, - int condition_id: @expr ref -); - -for_update( - unique int for_stmt: @stmt_for ref, - int update_id: @expr ref -); - -for_body( - unique int for_stmt: @stmt_for ref, - int body_id: @stmt ref -); - -@stmtparent = @stmt | @expr_stmt ; -stmtparents( - unique int id: @stmt ref, - int index: int ref, - int parent: @stmtparent ref -); - -ishandler(unique int block: @stmt_block ref); - -@cfgnode = @stmt | @expr | @function | @initialiser ; - -stmt_decl_bind( - int stmt: @stmt_decl ref, - int num: int ref, - int decl: @declaration ref -); - -stmt_decl_entry_bind( - int stmt: @stmt_decl ref, - int num: int ref, - int decl_entry: @element ref -); - -@parameterized_element = @function | @stmt_block | @requires_expr; - -blockscope( - unique int block: @stmt_block ref, - int enclosing: @parameterized_element ref -); - -@jump = @stmt_goto | @stmt_break | @stmt_continue; - -@jumporlabel = @jump | @stmt_label | @literal; - -jumpinfo( - unique int id: @jumporlabel ref, - string str: string ref, - int target: @stmt ref -); - -preprocdirects( - unique int id: @preprocdirect, - int kind: int ref, - int location: @location_default ref -); -case @preprocdirect.kind of - 0 = @ppd_if -| 1 = @ppd_ifdef -| 2 = @ppd_ifndef -| 3 = @ppd_elif -| 4 = @ppd_else -| 5 = @ppd_endif -| 6 = @ppd_plain_include -| 7 = @ppd_define -| 8 = @ppd_undef -| 9 = @ppd_line -| 10 = @ppd_error -| 11 = @ppd_pragma -| 12 = @ppd_objc_import -| 13 = @ppd_include_next -| 18 = @ppd_warning -; - -@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next; - -@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif; - -preprocpair( - int begin : @ppd_branch ref, - int elseelifend : @preprocdirect ref -); - -preproctrue(int branch : @ppd_branch ref); -preprocfalse(int branch : @ppd_branch ref); - -preproctext( - unique int id: @preprocdirect ref, - string head: string ref, - string body: string ref -); - -includes( - unique int id: @ppd_include ref, - int included: @file ref -); - -link_targets( - int id: @link_target, - int binary: @file ref -); - -link_parent( - int element : @element ref, - int link_target : @link_target ref -); - -/* XML Files */ - -xmlEncoding(unique int id: @file ref, string encoding: string ref); - -xmlDTDs( - unique int id: @xmldtd, - string root: string ref, - string publicId: string ref, - string systemId: string ref, - int fileid: @file ref -); - -xmlElements( - unique int id: @xmlelement, - string name: string ref, - int parentid: @xmlparent ref, - int idx: int ref, - int fileid: @file ref -); - -xmlAttrs( - unique int id: @xmlattribute, - int elementid: @xmlelement ref, - string name: string ref, - string value: string ref, - int idx: int ref, - int fileid: @file ref -); - -xmlNs( - int id: @xmlnamespace, - string prefixName: string ref, - string URI: string ref, - int fileid: @file ref -); - -xmlHasNs( - int elementId: @xmlnamespaceable ref, - int nsId: @xmlnamespace ref, - int fileid: @file ref -); - -xmlComments( - unique int id: @xmlcomment, - string text: string ref, - int parentid: @xmlparent ref, - int fileid: @file ref -); - -xmlChars( - unique int id: @xmlcharacters, - string text: string ref, - int parentid: @xmlparent ref, - int idx: int ref, - int isCDATA: int ref, - int fileid: @file ref -); - -@xmlparent = @file | @xmlelement; -@xmlnamespaceable = @xmlelement | @xmlattribute; - -xmllocations( - int xmlElement: @xmllocatable ref, - int location: @location_default ref -); - -@xmllocatable = @xmlcharacters - | @xmlelement - | @xmlcomment - | @xmlattribute - | @xmldtd - | @file - | @xmlnamespace; diff --git a/cpp/downgrades/f0156f5f88ab5967c79162012c20f30600ca5ebf/semmlecode.cpp.dbscheme b/cpp/downgrades/f0156f5f88ab5967c79162012c20f30600ca5ebf/semmlecode.cpp.dbscheme deleted file mode 100644 index e51fad7a2436..000000000000 --- a/cpp/downgrades/f0156f5f88ab5967c79162012c20f30600ca5ebf/semmlecode.cpp.dbscheme +++ /dev/null @@ -1,2323 +0,0 @@ - -/** - * An invocation of the compiler. Note that more than one file may be - * compiled per invocation. For example, this command compiles three - * source files: - * - * gcc -c f1.c f2.c f3.c - * - * The `id` simply identifies the invocation, while `cwd` is the working - * directory from which the compiler was invoked. - */ -compilations( - /** - * An invocation of the compiler. Note that more than one file may - * be compiled per invocation. For example, this command compiles - * three source files: - * - * gcc -c f1.c f2.c f3.c - */ - unique int id : @compilation, - string cwd : string ref -); - -/** - * The arguments that were passed to the extractor for a compiler - * invocation. If `id` is for the compiler invocation - * - * gcc -c f1.c f2.c f3.c - * - * then typically there will be rows for - * - * num | arg - * --- | --- - * 0 | *path to extractor* - * 1 | `--mimic` - * 2 | `/usr/bin/gcc` - * 3 | `-c` - * 4 | f1.c - * 5 | f2.c - * 6 | f3.c - */ -#keyset[id, num] -compilation_args( - int id : @compilation ref, - int num : int ref, - string arg : string ref -); - -/** - * The source files that are compiled by a compiler invocation. - * If `id` is for the compiler invocation - * - * gcc -c f1.c f2.c f3.c - * - * then there will be rows for - * - * num | arg - * --- | --- - * 0 | f1.c - * 1 | f2.c - * 2 | f3.c - * - * Note that even if those files `#include` headers, those headers - * do not appear as rows. - */ -#keyset[id, num] -compilation_compiling_files( - int id : @compilation ref, - int num : int ref, - int file : @file ref -); - -/** - * The time taken by the extractor for a compiler invocation. - * - * For each file `num`, there will be rows for - * - * kind | seconds - * ---- | --- - * 1 | CPU seconds used by the extractor frontend - * 2 | Elapsed seconds during the extractor frontend - * 3 | CPU seconds used by the extractor backend - * 4 | Elapsed seconds during the extractor backend - */ -#keyset[id, num, kind] -compilation_time( - int id : @compilation ref, - int num : int ref, - /* kind: - 1 = frontend_cpu_seconds - 2 = frontend_elapsed_seconds - 3 = extractor_cpu_seconds - 4 = extractor_elapsed_seconds - */ - int kind : int ref, - float seconds : float ref -); - -/** - * An error or warning generated by the extractor. - * The diagnostic message `diagnostic` was generated during compiler - * invocation `compilation`, and is the `file_number_diagnostic_number`th - * message generated while extracting the `file_number`th file of that - * invocation. - */ -#keyset[compilation, file_number, file_number_diagnostic_number] -diagnostic_for( - int diagnostic : @diagnostic ref, - int compilation : @compilation ref, - int file_number : int ref, - int file_number_diagnostic_number : int ref -); - -/** - * If extraction was successful, then `cpu_seconds` and - * `elapsed_seconds` are the CPU time and elapsed time (respectively) - * that extraction took for compiler invocation `id`. - */ -compilation_finished( - unique int id : @compilation ref, - float cpu_seconds : float ref, - float elapsed_seconds : float ref -); - - -/** - * External data, loaded from CSV files during snapshot creation. See - * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) - * for more information. - */ -externalData( - int id : @externalDataElement, - string path : string ref, - int column: int ref, - string value : string ref -); - -/** - * The source location of the snapshot. - */ -sourceLocationPrefix(string prefix : string ref); - -/** - * Information about packages that provide code used during compilation. - * The `id` is just a unique identifier. - * The `namespace` is typically the name of the package manager that - * provided the package (e.g. "dpkg" or "yum"). - * The `package_name` is the name of the package, and `version` is its - * version (as a string). - */ -external_packages( - unique int id: @external_package, - string namespace : string ref, - string package_name : string ref, - string version : string ref -); - -/** - * Holds if File `fileid` was provided by package `package`. - */ -header_to_external_package( - int fileid : @file ref, - int package : @external_package ref -); - -/* - * Version history - */ - -svnentries( - unique int id : @svnentry, - string revision : string ref, - string author : string ref, - date revisionDate : date ref, - int changeSize : int ref -) - -svnaffectedfiles( - int id : @svnentry ref, - int file : @file ref, - string action : string ref -) - -svnentrymsg( - unique int id : @svnentry ref, - string message : string ref -) - -svnchurn( - int commit : @svnentry ref, - int file : @file ref, - int addedLines : int ref, - int deletedLines : int ref -) - -/* - * C++ dbscheme - */ - -extractor_version( - string codeql_version: string ref, - string frontend_version: string ref -) - -@location = @location_stmt | @location_expr | @location_default ; - -/** - * The location of an element that is not an expression or a statement. - * The location spans column `startcolumn` of line `startline` to - * column `endcolumn` of line `endline` in file `file`. - * For more information, see - * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). - */ -locations_default( - /** The location of an element that is not an expression or a statement. */ - unique int id: @location_default, - int container: @container ref, - int startLine: int ref, - int startColumn: int ref, - int endLine: int ref, - int endColumn: int ref -); - -/** - * The location of a statement. - * The location spans column `startcolumn` of line `startline` to - * column `endcolumn` of line `endline` in file `file`. - * For more information, see - * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). - */ -locations_stmt( - /** The location of a statement. */ - unique int id: @location_stmt, - int container: @container ref, - int startLine: int ref, - int startColumn: int ref, - int endLine: int ref, - int endColumn: int ref -); - -/** - * The location of an expression. - * The location spans column `startcolumn` of line `startline` to - * column `endcolumn` of line `endline` in file `file`. - * For more information, see - * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). - */ -locations_expr( - /** The location of an expression. */ - unique int id: @location_expr, - int container: @container ref, - int startLine: int ref, - int startColumn: int ref, - int endLine: int ref, - int endColumn: int ref -); - -/** An element for which line-count information is available. */ -@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; - -numlines( - int element_id: @sourceline ref, - int num_lines: int ref, - int num_code: int ref, - int num_comment: int ref -); - -diagnostics( - unique int id: @diagnostic, - int severity: int ref, - string error_tag: string ref, - string error_message: string ref, - string full_error_message: string ref, - int location: @location_default ref -); - -files( - unique int id: @file, - string name: string ref -); - -folders( - unique int id: @folder, - string name: string ref -); - -@container = @folder | @file - -containerparent( - int parent: @container ref, - unique int child: @container ref -); - -fileannotations( - int id: @file ref, - int kind: int ref, - string name: string ref, - string value: string ref -); - -inmacroexpansion( - int id: @element ref, - int inv: @macroinvocation ref -); - -affectedbymacroexpansion( - int id: @element ref, - int inv: @macroinvocation ref -); - -case @macroinvocation.kind of - 1 = @macro_expansion -| 2 = @other_macro_reference -; - -macroinvocations( - unique int id: @macroinvocation, - int macro_id: @ppd_define ref, - int location: @location_default ref, - int kind: int ref -); - -macroparent( - unique int id: @macroinvocation ref, - int parent_id: @macroinvocation ref -); - -// a macroinvocation may be part of another location -// the way to find a constant expression that uses a macro -// is thus to find a constant expression that has a location -// to which a macro invocation is bound -macrolocationbind( - int id: @macroinvocation ref, - int location: @location ref -); - -#keyset[invocation, argument_index] -macro_argument_unexpanded( - int invocation: @macroinvocation ref, - int argument_index: int ref, - string text: string ref -); - -#keyset[invocation, argument_index] -macro_argument_expanded( - int invocation: @macroinvocation ref, - int argument_index: int ref, - string text: string ref -); - -/* -case @function.kind of - 1 = @normal_function -| 2 = @constructor -| 3 = @destructor -| 4 = @conversion_function -| 5 = @operator -| 6 = @builtin_function // GCC built-in functions, e.g. __builtin___memcpy_chk -| 7 = @user_defined_literal -| 8 = @deduction_guide -; -*/ - -functions( - unique int id: @function, - string name: string ref, - int kind: int ref -); - -function_entry_point( - int id: @function ref, - unique int entry_point: @stmt ref -); - -function_return_type( - int id: @function ref, - int return_type: @type ref -); - -/** - * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits` - * instance associated with it, and the variables representing the `handle` and `promise` - * for it. - */ -coroutine( - unique int function: @function ref, - int traits: @type ref -); - -/* -case @coroutine_placeholder_variable.kind of - 1 = @handle -| 2 = @promise -| 3 = @init_await_resume -; -*/ - -coroutine_placeholder_variable( - unique int placeholder_variable: @variable ref, - int kind: int ref, - int function: @function ref -) - -/** The `new` function used for allocating the coroutine state, if any. */ -coroutine_new( - unique int function: @function ref, - int new: @function ref -); - -/** The `delete` function used for deallocating the coroutine state, if any. */ -coroutine_delete( - unique int function: @function ref, - int delete: @function ref -); - -purefunctions(unique int id: @function ref); - -function_deleted(unique int id: @function ref); - -function_defaulted(unique int id: @function ref); - -function_prototyped(unique int id: @function ref) - -deduction_guide_for_class( - int id: @function ref, - int class_template: @usertype ref -) - -member_function_this_type( - unique int id: @function ref, - int this_type: @type ref -); - -#keyset[id, type_id] -fun_decls( - int id: @fun_decl, - int function: @function ref, - int type_id: @type ref, - string name: string ref, - int location: @location_default ref -); -fun_def(unique int id: @fun_decl ref); -fun_specialized(unique int id: @fun_decl ref); -fun_implicit(unique int id: @fun_decl ref); -fun_decl_specifiers( - int id: @fun_decl ref, - string name: string ref -) -#keyset[fun_decl, index] -fun_decl_throws( - int fun_decl: @fun_decl ref, - int index: int ref, - int type_id: @type ref -); -/* an empty throw specification is different from none */ -fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); -fun_decl_noexcept( - int fun_decl: @fun_decl ref, - int constant: @expr ref -); -fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); -fun_decl_typedef_type( - unique int fun_decl: @fun_decl ref, - int typedeftype_id: @usertype ref -); - -param_decl_bind( - unique int id: @var_decl ref, - int index: int ref, - int fun_decl: @fun_decl ref -); - -#keyset[id, type_id] -var_decls( - int id: @var_decl, - int variable: @variable ref, - int type_id: @type ref, - string name: string ref, - int location: @location_default ref -); -var_def(unique int id: @var_decl ref); -var_decl_specifiers( - int id: @var_decl ref, - string name: string ref -) -is_structured_binding(unique int id: @variable ref); - -type_decls( - unique int id: @type_decl, - int type_id: @type ref, - int location: @location_default ref -); -type_def(unique int id: @type_decl ref); -type_decl_top( - unique int type_decl: @type_decl ref -); - -namespace_decls( - unique int id: @namespace_decl, - int namespace_id: @namespace ref, - int location: @location_default ref, - int bodylocation: @location_default ref -); - -case @using.kind of - 1 = @using_declaration -| 2 = @using_directive -| 3 = @using_enum_declaration -; - -usings( - unique int id: @using, - int element_id: @element ref, - int location: @location_default ref, - int kind: int ref -); - -/** The element which contains the `using` declaration. */ -using_container( - int parent: @element ref, - int child: @using ref -); - -static_asserts( - unique int id: @static_assert, - int condition : @expr ref, - string message : string ref, - int location: @location_default ref, - int enclosing : @element ref -); - -// each function has an ordered list of parameters -#keyset[id, type_id] -#keyset[function, index, type_id] -params( - int id: @parameter, - int function: @parameterized_element ref, - int index: int ref, - int type_id: @type ref -); - -overrides( - int new: @function ref, - int old: @function ref -); - -#keyset[id, type_id] -membervariables( - int id: @membervariable, - int type_id: @type ref, - string name: string ref -); - -#keyset[id, type_id] -globalvariables( - int id: @globalvariable, - int type_id: @type ref, - string name: string ref -); - -#keyset[id, type_id] -localvariables( - int id: @localvariable, - int type_id: @type ref, - string name: string ref -); - -autoderivation( - unique int var: @variable ref, - int derivation_type: @type ref -); - -orphaned_variables( - int var: @localvariable ref, - int function: @function ref -) - -enumconstants( - unique int id: @enumconstant, - int parent: @usertype ref, - int index: int ref, - int type_id: @type ref, - string name: string ref, - int location: @location_default ref -); - -@variable = @localscopevariable | @globalvariable | @membervariable; - -@localscopevariable = @localvariable | @parameter; - -/** - * Built-in types are the fundamental types, e.g., integral, floating, and void. - */ -case @builtintype.kind of - 1 = @errortype -| 2 = @unknowntype -| 3 = @void -| 4 = @boolean -| 5 = @char -| 6 = @unsigned_char -| 7 = @signed_char -| 8 = @short -| 9 = @unsigned_short -| 10 = @signed_short -| 11 = @int -| 12 = @unsigned_int -| 13 = @signed_int -| 14 = @long -| 15 = @unsigned_long -| 16 = @signed_long -| 17 = @long_long -| 18 = @unsigned_long_long -| 19 = @signed_long_long -// ... 20 Microsoft-specific __int8 -// ... 21 Microsoft-specific __int16 -// ... 22 Microsoft-specific __int32 -// ... 23 Microsoft-specific __int64 -| 24 = @float -| 25 = @double -| 26 = @long_double -| 27 = @complex_float // C99-specific _Complex float -| 28 = @complex_double // C99-specific _Complex double -| 29 = @complex_long_double // C99-specific _Complex long double -| 30 = @imaginary_float // C99-specific _Imaginary float -| 31 = @imaginary_double // C99-specific _Imaginary double -| 32 = @imaginary_long_double // C99-specific _Imaginary long double -| 33 = @wchar_t // Microsoft-specific -| 34 = @decltype_nullptr // C++11 -| 35 = @int128 // __int128 -| 36 = @unsigned_int128 // unsigned __int128 -| 37 = @signed_int128 // signed __int128 -| 38 = @float128 // __float128 -| 39 = @complex_float128 // _Complex __float128 -| 40 = @decimal32 // _Decimal32 -| 41 = @decimal64 // _Decimal64 -| 42 = @decimal128 // _Decimal128 -| 43 = @char16_t -| 44 = @char32_t -| 45 = @std_float32 // _Float32 -| 46 = @float32x // _Float32x -| 47 = @std_float64 // _Float64 -| 48 = @float64x // _Float64x -| 49 = @std_float128 // _Float128 -// ... 50 _Float128x -| 51 = @char8_t -| 52 = @float16 // _Float16 -| 53 = @complex_float16 // _Complex _Float16 -| 54 = @fp16 // __fp16 -| 55 = @std_bfloat16 // __bf16 -| 56 = @std_float16 // std::float16_t -| 57 = @complex_std_float32 // _Complex _Float32 -| 58 = @complex_float32x // _Complex _Float32x -| 59 = @complex_std_float64 // _Complex _Float64 -| 60 = @complex_float64x // _Complex _Float64x -| 61 = @complex_std_float128 // _Complex _Float128 -; - -builtintypes( - unique int id: @builtintype, - string name: string ref, - int kind: int ref, - int size: int ref, - int sign: int ref, - int alignment: int ref -); - -/** - * Derived types are types that are directly derived from existing types and - * point to, refer to, transform type data to return a new type. - */ -case @derivedtype.kind of - 1 = @pointer -| 2 = @reference -| 3 = @type_with_specifiers -| 4 = @array -| 5 = @gnu_vector -| 6 = @routineptr -| 7 = @routinereference -| 8 = @rvalue_reference // C++11 -// ... 9 type_conforming_to_protocols deprecated -| 10 = @block -; - -derivedtypes( - unique int id: @derivedtype, - string name: string ref, - int kind: int ref, - int type_id: @type ref -); - -pointerishsize(unique int id: @derivedtype ref, - int size: int ref, - int alignment: int ref); - -arraysizes( - unique int id: @derivedtype ref, - int num_elements: int ref, - int bytesize: int ref, - int alignment: int ref -); - -typedefbase( - unique int id: @usertype ref, - int type_id: @type ref -); - -/** - * An instance of the C++11 `decltype` operator. For example: - * ``` - * int a; - * decltype(1+a) b; - * ``` - * Here `expr` is `1+a`. - * - * Sometimes an additional pair of parentheses around the expression - * would change the semantics of this decltype, e.g. - * ``` - * struct A { double x; }; - * const A* a = new A(); - * decltype( a->x ); // type is double - * decltype((a->x)); // type is const double& - * ``` - * (Please consult the C++11 standard for more details). - * `parentheses_would_change_meaning` is `true` iff that is the case. - */ -#keyset[id, expr] -decltypes( - int id: @decltype, - int expr: @expr ref, - int base_type: @type ref, - boolean parentheses_would_change_meaning: boolean ref -); - -/* -case @usertype.kind of - 1 = @struct -| 2 = @class -| 3 = @union -| 4 = @enum -| 5 = @typedef // classic C: typedef typedef type name -| 6 = @template -| 7 = @template_parameter -| 8 = @template_template_parameter -| 9 = @proxy_class // a proxy class associated with a template parameter -// ... 10 objc_class deprecated -// ... 11 objc_protocol deprecated -// ... 12 objc_category deprecated -| 13 = @scoped_enum -| 14 = @using_alias // a using name = type style typedef -; -*/ - -usertypes( - unique int id: @usertype, - string name: string ref, - int kind: int ref -); - -usertypesize( - unique int id: @usertype ref, - int size: int ref, - int alignment: int ref -); - -usertype_final(unique int id: @usertype ref); - -usertype_uuid( - unique int id: @usertype ref, - string uuid: string ref -); - -mangled_name( - unique int id: @declaration ref, - int mangled_name : @mangledname, - boolean is_complete: boolean ref -); - -is_pod_class(unique int id: @usertype ref); -is_standard_layout_class(unique int id: @usertype ref); - -is_complete(unique int id: @usertype ref); - -is_class_template(unique int id: @usertype ref); -class_instantiation( - int to: @usertype ref, - int from: @usertype ref -); -class_template_argument( - int type_id: @usertype ref, - int index: int ref, - int arg_type: @type ref -); -class_template_argument_value( - int type_id: @usertype ref, - int index: int ref, - int arg_value: @expr ref -); - -is_proxy_class_for( - unique int id: @usertype ref, - unique int templ_param_id: @usertype ref -); - -type_mentions( - unique int id: @type_mention, - int type_id: @type ref, - int location: @location ref, - // a_symbol_reference_kind from the frontend. - int kind: int ref -); - -is_function_template(unique int id: @function ref); -function_instantiation( - unique int to: @function ref, - int from: @function ref -); -function_template_argument( - int function_id: @function ref, - int index: int ref, - int arg_type: @type ref -); -function_template_argument_value( - int function_id: @function ref, - int index: int ref, - int arg_value: @expr ref -); - -is_variable_template(unique int id: @variable ref); -variable_instantiation( - unique int to: @variable ref, - int from: @variable ref -); -variable_template_argument( - int variable_id: @variable ref, - int index: int ref, - int arg_type: @type ref -); -variable_template_argument_value( - int variable_id: @variable ref, - int index: int ref, - int arg_value: @expr ref -); - -routinetypes( - unique int id: @routinetype, - int return_type: @type ref -); - -routinetypeargs( - int routine: @routinetype ref, - int index: int ref, - int type_id: @type ref -); - -ptrtomembers( - unique int id: @ptrtomember, - int type_id: @type ref, - int class_id: @type ref -); - -/* - specifiers for types, functions, and variables - - "public", - "protected", - "private", - - "const", - "volatile", - "static", - - "pure", - "virtual", - "sealed", // Microsoft - "__interface", // Microsoft - "inline", - "explicit", - - "near", // near far extension - "far", // near far extension - "__ptr32", // Microsoft - "__ptr64", // Microsoft - "__sptr", // Microsoft - "__uptr", // Microsoft - "dllimport", // Microsoft - "dllexport", // Microsoft - "thread", // Microsoft - "naked", // Microsoft - "microsoft_inline", // Microsoft - "forceinline", // Microsoft - "selectany", // Microsoft - "nothrow", // Microsoft - "novtable", // Microsoft - "noreturn", // Microsoft - "noinline", // Microsoft - "noalias", // Microsoft - "restrict", // Microsoft -*/ - -specifiers( - unique int id: @specifier, - unique string str: string ref -); - -typespecifiers( - int type_id: @type ref, - int spec_id: @specifier ref -); - -funspecifiers( - int func_id: @function ref, - int spec_id: @specifier ref -); - -varspecifiers( - int var_id: @accessible ref, - int spec_id: @specifier ref -); - -explicit_specifier_exprs( - unique int func_id: @function ref, - int constant: @expr ref -) - -attributes( - unique int id: @attribute, - int kind: int ref, - string name: string ref, - string name_space: string ref, - int location: @location_default ref -); - -case @attribute.kind of - 0 = @gnuattribute -| 1 = @stdattribute -| 2 = @declspec -| 3 = @msattribute -| 4 = @alignas -// ... 5 @objc_propertyattribute deprecated -; - -attribute_args( - unique int id: @attribute_arg, - int kind: int ref, - int attribute: @attribute ref, - int index: int ref, - int location: @location_default ref -); - -case @attribute_arg.kind of - 0 = @attribute_arg_empty -| 1 = @attribute_arg_token -| 2 = @attribute_arg_constant -| 3 = @attribute_arg_type -| 4 = @attribute_arg_constant_expr -| 5 = @attribute_arg_expr -; - -attribute_arg_value( - unique int arg: @attribute_arg ref, - string value: string ref -); -attribute_arg_type( - unique int arg: @attribute_arg ref, - int type_id: @type ref -); -attribute_arg_constant( - unique int arg: @attribute_arg ref, - int constant: @expr ref -) -attribute_arg_expr( - unique int arg: @attribute_arg ref, - int expr: @expr ref -) -attribute_arg_name( - unique int arg: @attribute_arg ref, - string name: string ref -); - -typeattributes( - int type_id: @type ref, - int spec_id: @attribute ref -); - -funcattributes( - int func_id: @function ref, - int spec_id: @attribute ref -); - -varattributes( - int var_id: @accessible ref, - int spec_id: @attribute ref -); - -stmtattributes( - int stmt_id: @stmt ref, - int spec_id: @attribute ref -); - -@type = @builtintype - | @derivedtype - | @usertype - /* TODO | @fixedpointtype */ - | @routinetype - | @ptrtomember - | @decltype; - -unspecifiedtype( - unique int type_id: @type ref, - int unspecified_type_id: @type ref -); - -member( - int parent: @type ref, - int index: int ref, - int child: @member ref -); - -@enclosingfunction_child = @usertype | @variable | @namespace - -enclosingfunction( - unique int child: @enclosingfunction_child ref, - int parent: @function ref -); - -derivations( - unique int derivation: @derivation, - int sub: @type ref, - int index: int ref, - int super: @type ref, - int location: @location_default ref -); - -derspecifiers( - int der_id: @derivation ref, - int spec_id: @specifier ref -); - -/** - * Contains the byte offset of the base class subobject within the derived - * class. Only holds for non-virtual base classes, but see table - * `virtual_base_offsets` for offsets of virtual base class subobjects. - */ -direct_base_offsets( - unique int der_id: @derivation ref, - int offset: int ref -); - -/** - * Contains the byte offset of the virtual base class subobject for class - * `super` within a most-derived object of class `sub`. `super` can be either a - * direct or indirect base class. - */ -#keyset[sub, super] -virtual_base_offsets( - int sub: @usertype ref, - int super: @usertype ref, - int offset: int ref -); - -frienddecls( - unique int id: @frienddecl, - int type_id: @type ref, - int decl_id: @declaration ref, - int location: @location_default ref -); - -@declaredtype = @usertype ; - -@declaration = @function - | @declaredtype - | @variable - | @enumconstant - | @frienddecl; - -@member = @membervariable - | @function - | @declaredtype - | @enumconstant; - -@locatable = @diagnostic - | @declaration - | @ppd_include - | @ppd_define - | @macroinvocation - /*| @funcall*/ - | @xmllocatable - | @attribute - | @attribute_arg; - -@namedscope = @namespace | @usertype; - -@element = @locatable - | @file - | @folder - | @specifier - | @type - | @expr - | @namespace - | @initialiser - | @stmt - | @derivation - | @comment - | @preprocdirect - | @fun_decl - | @var_decl - | @type_decl - | @namespace_decl - | @using - | @namequalifier - | @specialnamequalifyingelement - | @static_assert - | @type_mention - | @lambdacapture; - -@exprparent = @element; - -comments( - unique int id: @comment, - string contents: string ref, - int location: @location_default ref -); - -commentbinding( - int id: @comment ref, - int element: @element ref -); - -exprconv( - int converted: @expr ref, - unique int conversion: @expr ref -); - -compgenerated(unique int id: @element ref); - -/** - * `destructor_call` destructs the `i`'th entity that should be - * destructed following `element`. Note that entities should be - * destructed in reverse construction order, so for a given `element` - * these should be called from highest to lowest `i`. - */ -#keyset[element, destructor_call] -#keyset[element, i] -synthetic_destructor_call( - int element: @element ref, - int i: int ref, - int destructor_call: @routineexpr ref -); - -namespaces( - unique int id: @namespace, - string name: string ref -); - -namespace_inline( - unique int id: @namespace ref -); - -namespacembrs( - int parentid: @namespace ref, - unique int memberid: @namespacembr ref -); - -@namespacembr = @declaration | @namespace; - -exprparents( - int expr_id: @expr ref, - int child_index: int ref, - int parent_id: @exprparent ref -); - -expr_isload(unique int expr_id: @expr ref); - -@cast = @c_style_cast - | @const_cast - | @dynamic_cast - | @reinterpret_cast - | @static_cast - ; - -/* -case @conversion.kind of - 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast -| 1 = @bool_conversion // conversion to 'bool' -| 2 = @base_class_conversion // a derived-to-base conversion -| 3 = @derived_class_conversion // a base-to-derived conversion -| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member -| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member -| 6 = @glvalue_adjust // an adjustment of the type of a glvalue -| 7 = @prvalue_adjust // an adjustment of the type of a prvalue -; -*/ -/** - * Describes the semantics represented by a cast expression. This is largely - * independent of the source syntax of the cast, so it is separate from the - * regular expression kind. - */ -conversionkinds( - unique int expr_id: @cast ref, - int kind: int ref -); - -@conversion = @cast - | @array_to_pointer - | @parexpr - | @reference_to - | @ref_indirect - | @temp_init - | @c11_generic - ; - -/* -case @funbindexpr.kind of - 0 = @normal_call // a normal call -| 1 = @virtual_call // a virtual call -| 2 = @adl_call // a call whose target is only found by ADL -; -*/ -iscall( - unique int caller: @funbindexpr ref, - int kind: int ref -); - -numtemplatearguments( - unique int expr_id: @expr ref, - int num: int ref -); - -specialnamequalifyingelements( - unique int id: @specialnamequalifyingelement, - unique string name: string ref -); - -@namequalifiableelement = @expr | @namequalifier; -@namequalifyingelement = @namespace - | @specialnamequalifyingelement - | @usertype; - -namequalifiers( - unique int id: @namequalifier, - unique int qualifiableelement: @namequalifiableelement ref, - int qualifyingelement: @namequalifyingelement ref, - int location: @location_default ref -); - -varbind( - int expr: @varbindexpr ref, - int var: @accessible ref -); - -funbind( - int expr: @funbindexpr ref, - int fun: @function ref -); - -@any_new_expr = @new_expr - | @new_array_expr; - -@new_or_delete_expr = @any_new_expr - | @delete_expr - | @delete_array_expr; - -@prefix_crement_expr = @preincrexpr | @predecrexpr; - -@postfix_crement_expr = @postincrexpr | @postdecrexpr; - -@increment_expr = @preincrexpr | @postincrexpr; - -@decrement_expr = @predecrexpr | @postdecrexpr; - -@crement_expr = @increment_expr | @decrement_expr; - -@un_arith_op_expr = @arithnegexpr - | @unaryplusexpr - | @conjugation - | @realpartexpr - | @imagpartexpr - | @crement_expr - ; - -@un_bitwise_op_expr = @complementexpr; - -@un_log_op_expr = @notexpr; - -@un_op_expr = @address_of - | @indirect - | @un_arith_op_expr - | @un_bitwise_op_expr - | @builtinaddressof - | @vec_fill - | @un_log_op_expr - | @co_await - | @co_yield - ; - -@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; - -@cmp_op_expr = @eq_op_expr | @rel_op_expr; - -@eq_op_expr = @eqexpr | @neexpr; - -@rel_op_expr = @gtexpr - | @ltexpr - | @geexpr - | @leexpr - | @spaceshipexpr - ; - -@bin_bitwise_op_expr = @lshiftexpr - | @rshiftexpr - | @andexpr - | @orexpr - | @xorexpr - ; - -@p_arith_op_expr = @paddexpr - | @psubexpr - | @pdiffexpr - ; - -@bin_arith_op_expr = @addexpr - | @subexpr - | @mulexpr - | @divexpr - | @remexpr - | @jmulexpr - | @jdivexpr - | @fjaddexpr - | @jfaddexpr - | @fjsubexpr - | @jfsubexpr - | @minexpr - | @maxexpr - | @p_arith_op_expr - ; - -@bin_op_expr = @bin_arith_op_expr - | @bin_bitwise_op_expr - | @cmp_op_expr - | @bin_log_op_expr - ; - -@op_expr = @un_op_expr - | @bin_op_expr - | @assign_expr - | @conditionalexpr - ; - -@assign_arith_expr = @assignaddexpr - | @assignsubexpr - | @assignmulexpr - | @assigndivexpr - | @assignremexpr - ; - -@assign_bitwise_expr = @assignandexpr - | @assignorexpr - | @assignxorexpr - | @assignlshiftexpr - | @assignrshiftexpr - ; - -@assign_pointer_expr = @assignpaddexpr - | @assignpsubexpr - ; - -@assign_op_expr = @assign_arith_expr - | @assign_bitwise_expr - | @assign_pointer_expr - ; - -@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr - -/* - Binary encoding of the allocator form. - - case @allocator.form of - 0 = plain - | 1 = alignment - ; -*/ - -/** - * The allocator function associated with a `new` or `new[]` expression. - * The `form` column specified whether the allocation call contains an alignment - * argument. - */ -expr_allocator( - unique int expr: @any_new_expr ref, - int func: @function ref, - int form: int ref -); - -/* - Binary encoding of the deallocator form. - - case @deallocator.form of - 0 = plain - | 1 = size - | 2 = alignment - | 4 = destroying_delete - ; -*/ - -/** - * The deallocator function associated with a `delete`, `delete[]`, `new`, or - * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the - * one used to free memory if the initialization throws an exception. - * The `form` column specifies whether the deallocation call contains a size - * argument, and alignment argument, or both. - */ -expr_deallocator( - unique int expr: @new_or_delete_expr ref, - int func: @function ref, - int form: int ref -); - -/** - * Holds if the `@conditionalexpr` is of the two operand form - * `guard ? : false`. - */ -expr_cond_two_operand( - unique int cond: @conditionalexpr ref -); - -/** - * The guard of `@conditionalexpr` `guard ? true : false` - */ -expr_cond_guard( - unique int cond: @conditionalexpr ref, - int guard: @expr ref -); - -/** - * The expression used when the guard of `@conditionalexpr` - * `guard ? true : false` holds. For the two operand form - * `guard ?: false` consider using `expr_cond_guard` instead. - */ -expr_cond_true( - unique int cond: @conditionalexpr ref, - int true: @expr ref -); - -/** - * The expression used when the guard of `@conditionalexpr` - * `guard ? true : false` does not hold. - */ -expr_cond_false( - unique int cond: @conditionalexpr ref, - int false: @expr ref -); - -/** A string representation of the value. */ -values( - unique int id: @value, - string str: string ref -); - -/** The actual text in the source code for the value, if any. */ -valuetext( - unique int id: @value ref, - string text: string ref -); - -valuebind( - int val: @value ref, - unique int expr: @expr ref -); - -fieldoffsets( - unique int id: @variable ref, - int byteoffset: int ref, - int bitoffset: int ref -); - -bitfield( - unique int id: @variable ref, - int bits: int ref, - int declared_bits: int ref -); - -/* TODO -memberprefix( - int member: @expr ref, - int prefix: @expr ref -); -*/ - -/* - kind(1) = mbrcallexpr - kind(2) = mbrptrcallexpr - kind(3) = mbrptrmbrcallexpr - kind(4) = ptrmbrptrmbrcallexpr - kind(5) = mbrreadexpr // x.y - kind(6) = mbrptrreadexpr // p->y - kind(7) = mbrptrmbrreadexpr // x.*pm - kind(8) = mbrptrmbrptrreadexpr // x->*pm - kind(9) = staticmbrreadexpr // static x.y - kind(10) = staticmbrptrreadexpr // static p->y -*/ -/* TODO -memberaccess( - int member: @expr ref, - int kind: int ref -); -*/ - -initialisers( - unique int init: @initialiser, - int var: @accessible ref, - unique int expr: @expr ref, - int location: @location_expr ref -); - -braced_initialisers( - int init: @initialiser ref -); - -/** - * An ancestor for the expression, for cases in which we cannot - * otherwise find the expression's parent. - */ -expr_ancestor( - int exp: @expr ref, - int ancestor: @element ref -); - -exprs( - unique int id: @expr, - int kind: int ref, - int location: @location_expr ref -); - -expr_reuse( - int reuse: @expr ref, - int original: @expr ref, - int value_category: int ref -) - -/* - case @value.category of - 1 = prval - | 2 = xval - | 3 = lval - ; -*/ -expr_types( - int id: @expr ref, - int typeid: @type ref, - int value_category: int ref -); - -case @expr.kind of - 1 = @errorexpr -| 2 = @address_of // & AddressOfExpr -| 3 = @reference_to // ReferenceToExpr (implicit?) -| 4 = @indirect // * PointerDereferenceExpr -| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) -// ... -| 8 = @array_to_pointer // (???) -| 9 = @vacuous_destructor_call // VacuousDestructorCall -// ... -| 11 = @assume // Microsoft -| 12 = @parexpr -| 13 = @arithnegexpr -| 14 = @unaryplusexpr -| 15 = @complementexpr -| 16 = @notexpr -| 17 = @conjugation // GNU ~ operator -| 18 = @realpartexpr // GNU __real -| 19 = @imagpartexpr // GNU __imag -| 20 = @postincrexpr -| 21 = @postdecrexpr -| 22 = @preincrexpr -| 23 = @predecrexpr -| 24 = @conditionalexpr -| 25 = @addexpr -| 26 = @subexpr -| 27 = @mulexpr -| 28 = @divexpr -| 29 = @remexpr -| 30 = @jmulexpr // C99 mul imaginary -| 31 = @jdivexpr // C99 div imaginary -| 32 = @fjaddexpr // C99 add real + imaginary -| 33 = @jfaddexpr // C99 add imaginary + real -| 34 = @fjsubexpr // C99 sub real - imaginary -| 35 = @jfsubexpr // C99 sub imaginary - real -| 36 = @paddexpr // pointer add (pointer + int or int + pointer) -| 37 = @psubexpr // pointer sub (pointer - integer) -| 38 = @pdiffexpr // difference between two pointers -| 39 = @lshiftexpr -| 40 = @rshiftexpr -| 41 = @andexpr -| 42 = @orexpr -| 43 = @xorexpr -| 44 = @eqexpr -| 45 = @neexpr -| 46 = @gtexpr -| 47 = @ltexpr -| 48 = @geexpr -| 49 = @leexpr -| 50 = @minexpr // GNU minimum -| 51 = @maxexpr // GNU maximum -| 52 = @assignexpr -| 53 = @assignaddexpr -| 54 = @assignsubexpr -| 55 = @assignmulexpr -| 56 = @assigndivexpr -| 57 = @assignremexpr -| 58 = @assignlshiftexpr -| 59 = @assignrshiftexpr -| 60 = @assignandexpr -| 61 = @assignorexpr -| 62 = @assignxorexpr -| 63 = @assignpaddexpr // assign pointer add -| 64 = @assignpsubexpr // assign pointer sub -| 65 = @andlogicalexpr -| 66 = @orlogicalexpr -| 67 = @commaexpr -| 68 = @subscriptexpr // access to member of an array, e.g., a[5] -// ... 69 @objc_subscriptexpr deprecated -// ... 70 @cmdaccess deprecated -// ... -| 73 = @virtfunptrexpr -| 74 = @callexpr -// ... 75 @msgexpr_normal deprecated -// ... 76 @msgexpr_super deprecated -// ... 77 @atselectorexpr deprecated -// ... 78 @atprotocolexpr deprecated -| 79 = @vastartexpr -| 80 = @vaargexpr -| 81 = @vaendexpr -| 82 = @vacopyexpr -// ... 83 @atencodeexpr deprecated -| 84 = @varaccess -| 85 = @thisaccess -// ... 86 @objc_box_expr deprecated -| 87 = @new_expr -| 88 = @delete_expr -| 89 = @throw_expr -| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) -| 91 = @braced_init_list -| 92 = @type_id -| 93 = @runtime_sizeof -| 94 = @runtime_alignof -| 95 = @sizeof_pack -| 96 = @expr_stmt // GNU extension -| 97 = @routineexpr -| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) -| 99 = @offsetofexpr // offsetof ::= type and field -| 100 = @hasassignexpr // __has_assign ::= type -| 101 = @hascopyexpr // __has_copy ::= type -| 102 = @hasnothrowassign // __has_nothrow_assign ::= type -| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type -| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type -| 105 = @hastrivialassign // __has_trivial_assign ::= type -| 106 = @hastrivialconstr // __has_trivial_constructor ::= type -| 107 = @hastrivialcopy // __has_trivial_copy ::= type -| 108 = @hasuserdestr // __has_user_destructor ::= type -| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type -| 110 = @isabstractexpr // __is_abstract ::= type -| 111 = @isbaseofexpr // __is_base_of ::= type type -| 112 = @isclassexpr // __is_class ::= type -| 113 = @isconvtoexpr // __is_convertible_to ::= type type -| 114 = @isemptyexpr // __is_empty ::= type -| 115 = @isenumexpr // __is_enum ::= type -| 116 = @ispodexpr // __is_pod ::= type -| 117 = @ispolyexpr // __is_polymorphic ::= type -| 118 = @isunionexpr // __is_union ::= type -| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type -| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof -// ... -| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type -| 123 = @literal -| 124 = @uuidof -| 127 = @aggregateliteral -| 128 = @delete_array_expr -| 129 = @new_array_expr -// ... 130 @objc_array_literal deprecated -// ... 131 @objc_dictionary_literal deprecated -| 132 = @foldexpr -// ... -| 200 = @ctordirectinit -| 201 = @ctorvirtualinit -| 202 = @ctorfieldinit -| 203 = @ctordelegatinginit -| 204 = @dtordirectdestruct -| 205 = @dtorvirtualdestruct -| 206 = @dtorfielddestruct -// ... -| 210 = @static_cast -| 211 = @reinterpret_cast -| 212 = @const_cast -| 213 = @dynamic_cast -| 214 = @c_style_cast -| 215 = @lambdaexpr -| 216 = @param_ref -| 217 = @noopexpr -// ... -| 294 = @istriviallyconstructibleexpr -| 295 = @isdestructibleexpr -| 296 = @isnothrowdestructibleexpr -| 297 = @istriviallydestructibleexpr -| 298 = @istriviallyassignableexpr -| 299 = @isnothrowassignableexpr -| 300 = @istrivialexpr -| 301 = @isstandardlayoutexpr -| 302 = @istriviallycopyableexpr -| 303 = @isliteraltypeexpr -| 304 = @hastrivialmoveconstructorexpr -| 305 = @hastrivialmoveassignexpr -| 306 = @hasnothrowmoveassignexpr -| 307 = @isconstructibleexpr -| 308 = @isnothrowconstructibleexpr -| 309 = @hasfinalizerexpr -| 310 = @isdelegateexpr -| 311 = @isinterfaceclassexpr -| 312 = @isrefarrayexpr -| 313 = @isrefclassexpr -| 314 = @issealedexpr -| 315 = @issimplevalueclassexpr -| 316 = @isvalueclassexpr -| 317 = @isfinalexpr -| 319 = @noexceptexpr -| 320 = @builtinshufflevector -| 321 = @builtinchooseexpr -| 322 = @builtinaddressof -| 323 = @vec_fill -| 324 = @builtinconvertvector -| 325 = @builtincomplex -| 326 = @spaceshipexpr -| 327 = @co_await -| 328 = @co_yield -| 329 = @temp_init -| 330 = @isassignable -| 331 = @isaggregate -| 332 = @hasuniqueobjectrepresentations -| 333 = @builtinbitcast -| 334 = @builtinshuffle -| 335 = @blockassignexpr -| 336 = @issame -| 337 = @isfunction -| 338 = @islayoutcompatible -| 339 = @ispointerinterconvertiblebaseof -| 340 = @isarray -| 341 = @arrayrank -| 342 = @arrayextent -| 343 = @isarithmetic -| 344 = @iscompletetype -| 345 = @iscompound -| 346 = @isconst -| 347 = @isfloatingpoint -| 348 = @isfundamental -| 349 = @isintegral -| 350 = @islvaluereference -| 351 = @ismemberfunctionpointer -| 352 = @ismemberobjectpointer -| 353 = @ismemberpointer -| 354 = @isobject -| 355 = @ispointer -| 356 = @isreference -| 357 = @isrvaluereference -| 358 = @isscalar -| 359 = @issigned -| 360 = @isunsigned -| 361 = @isvoid -| 362 = @isvolatile -| 363 = @reuseexpr -| 364 = @istriviallycopyassignable -| 365 = @isassignablenopreconditioncheck -| 366 = @referencebindstotemporary -| 367 = @issameas -| 368 = @builtinhasattribute -| 369 = @ispointerinterconvertiblewithclass -| 370 = @builtinispointerinterconvertiblewithclass -| 371 = @iscorrespondingmember -| 372 = @builtiniscorrespondingmember -| 373 = @isboundedarray -| 374 = @isunboundedarray -| 375 = @isreferenceable -| 378 = @isnothrowconvertible -| 379 = @referenceconstructsfromtemporary -| 380 = @referenceconvertsfromtemporary -| 381 = @isconvertible -| 382 = @isvalidwinrttype -| 383 = @iswinclass -| 384 = @iswininterface -| 385 = @istriviallyequalitycomparable -| 386 = @isscopedenum -| 387 = @istriviallyrelocatable -| 388 = @datasizeof -| 389 = @c11_generic -| 390 = @requires_expr -| 391 = @nested_requirement -| 392 = @compound_requirement -| 393 = @concept_id -; - -@var_args_expr = @vastartexpr - | @vaendexpr - | @vaargexpr - | @vacopyexpr - ; - -@builtin_op = @var_args_expr - | @noopexpr - | @offsetofexpr - | @intaddrexpr - | @hasassignexpr - | @hascopyexpr - | @hasnothrowassign - | @hasnothrowconstr - | @hasnothrowcopy - | @hastrivialassign - | @hastrivialconstr - | @hastrivialcopy - | @hastrivialdestructor - | @hasuserdestr - | @hasvirtualdestr - | @isabstractexpr - | @isbaseofexpr - | @isclassexpr - | @isconvtoexpr - | @isemptyexpr - | @isenumexpr - | @ispodexpr - | @ispolyexpr - | @isunionexpr - | @typescompexpr - | @builtinshufflevector - | @builtinconvertvector - | @builtinaddressof - | @istriviallyconstructibleexpr - | @isdestructibleexpr - | @isnothrowdestructibleexpr - | @istriviallydestructibleexpr - | @istriviallyassignableexpr - | @isnothrowassignableexpr - | @istrivialexpr - | @isstandardlayoutexpr - | @istriviallycopyableexpr - | @isliteraltypeexpr - | @hastrivialmoveconstructorexpr - | @hastrivialmoveassignexpr - | @hasnothrowmoveassignexpr - | @isconstructibleexpr - | @isnothrowconstructibleexpr - | @hasfinalizerexpr - | @isdelegateexpr - | @isinterfaceclassexpr - | @isrefarrayexpr - | @isrefclassexpr - | @issealedexpr - | @issimplevalueclassexpr - | @isvalueclassexpr - | @isfinalexpr - | @builtinchooseexpr - | @builtincomplex - | @isassignable - | @isaggregate - | @hasuniqueobjectrepresentations - | @builtinbitcast - | @builtinshuffle - | @issame - | @isfunction - | @islayoutcompatible - | @ispointerinterconvertiblebaseof - | @isarray - | @arrayrank - | @arrayextent - | @isarithmetic - | @iscompletetype - | @iscompound - | @isconst - | @isfloatingpoint - | @isfundamental - | @isintegral - | @islvaluereference - | @ismemberfunctionpointer - | @ismemberobjectpointer - | @ismemberpointer - | @isobject - | @ispointer - | @isreference - | @isrvaluereference - | @isscalar - | @issigned - | @isunsigned - | @isvoid - | @isvolatile - | @istriviallycopyassignable - | @isassignablenopreconditioncheck - | @referencebindstotemporary - | @issameas - | @builtinhasattribute - | @ispointerinterconvertiblewithclass - | @builtinispointerinterconvertiblewithclass - | @iscorrespondingmember - | @builtiniscorrespondingmember - | @isboundedarray - | @isunboundedarray - | @isreferenceable - | @isnothrowconvertible - | @referenceconstructsfromtemporary - | @referenceconvertsfromtemporary - | @isconvertible - | @isvalidwinrttype - | @iswinclass - | @iswininterface - | @istriviallyequalitycomparable - | @isscopedenum - | @istriviallyrelocatable - ; - -compound_requirement_is_noexcept( - int expr: @compound_requirement ref -); - -new_allocated_type( - unique int expr: @new_expr ref, - int type_id: @type ref -); - -new_array_allocated_type( - unique int expr: @new_array_expr ref, - int type_id: @type ref -); - -/** - * The field being initialized by an initializer expression within an aggregate - * initializer for a class/struct/union. Position is used to sort repeated initializers. - */ -#keyset[aggregate, position] -aggregate_field_init( - int aggregate: @aggregateliteral ref, - int initializer: @expr ref, - int field: @membervariable ref, - int position: int ref -); - -/** - * The index of the element being initialized by an initializer expression - * within an aggregate initializer for an array. Position is used to sort repeated initializers. - */ -#keyset[aggregate, position] -aggregate_array_init( - int aggregate: @aggregateliteral ref, - int initializer: @expr ref, - int element_index: int ref, - int position: int ref -); - -@ctorinit = @ctordirectinit - | @ctorvirtualinit - | @ctorfieldinit - | @ctordelegatinginit; -@dtordestruct = @dtordirectdestruct - | @dtorvirtualdestruct - | @dtorfielddestruct; - - -condition_decl_bind( - unique int expr: @condition_decl ref, - unique int decl: @declaration ref -); - -typeid_bind( - unique int expr: @type_id ref, - int type_id: @type ref -); - -uuidof_bind( - unique int expr: @uuidof ref, - int type_id: @type ref -); - -@runtime_sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof; - -sizeof_bind( - unique int expr: @runtime_sizeof_or_alignof ref, - int type_id: @type ref -); - -code_block( - unique int block: @literal ref, - unique int routine: @function ref -); - -lambdas( - unique int expr: @lambdaexpr ref, - string default_capture: string ref, - boolean has_explicit_return_type: boolean ref -); - -lambda_capture( - unique int id: @lambdacapture, - int lambda: @lambdaexpr ref, - int index: int ref, - int field: @membervariable ref, - boolean captured_by_reference: boolean ref, - boolean is_implicit: boolean ref, - int location: @location_default ref -); - -@funbindexpr = @routineexpr - | @new_expr - | @delete_expr - | @delete_array_expr - | @ctordirectinit - | @ctorvirtualinit - | @ctordelegatinginit - | @dtordirectdestruct - | @dtorvirtualdestruct; - -@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; -@addressable = @function | @variable ; -@accessible = @addressable | @enumconstant ; - -@access = @varaccess | @routineexpr ; - -fold( - int expr: @foldexpr ref, - string operator: string ref, - boolean is_left_fold: boolean ref -); - -stmts( - unique int id: @stmt, - int kind: int ref, - int location: @location_stmt ref -); - -case @stmt.kind of - 1 = @stmt_expr -| 2 = @stmt_if -| 3 = @stmt_while -| 4 = @stmt_goto -| 5 = @stmt_label -| 6 = @stmt_return -| 7 = @stmt_block -| 8 = @stmt_end_test_while // do { ... } while ( ... ) -| 9 = @stmt_for -| 10 = @stmt_switch_case -| 11 = @stmt_switch -| 13 = @stmt_asm // "asm" statement or the body of an asm function -| 15 = @stmt_try_block -| 16 = @stmt_microsoft_try // Microsoft -| 17 = @stmt_decl -| 18 = @stmt_set_vla_size // C99 -| 19 = @stmt_vla_decl // C99 -| 25 = @stmt_assigned_goto // GNU -| 26 = @stmt_empty -| 27 = @stmt_continue -| 28 = @stmt_break -| 29 = @stmt_range_based_for // C++11 -// ... 30 @stmt_at_autoreleasepool_block deprecated -// ... 31 @stmt_objc_for_in deprecated -// ... 32 @stmt_at_synchronized deprecated -| 33 = @stmt_handler -// ... 34 @stmt_finally_end deprecated -| 35 = @stmt_constexpr_if -| 37 = @stmt_co_return -; - -type_vla( - int type_id: @type ref, - int decl: @stmt_vla_decl ref -); - -variable_vla( - int var: @variable ref, - int decl: @stmt_vla_decl ref -); - -if_initialization( - unique int if_stmt: @stmt_if ref, - int init_id: @stmt ref -); - -if_then( - unique int if_stmt: @stmt_if ref, - int then_id: @stmt ref -); - -if_else( - unique int if_stmt: @stmt_if ref, - int else_id: @stmt ref -); - -constexpr_if_initialization( - unique int constexpr_if_stmt: @stmt_constexpr_if ref, - int init_id: @stmt ref -); - -constexpr_if_then( - unique int constexpr_if_stmt: @stmt_constexpr_if ref, - int then_id: @stmt ref -); - -constexpr_if_else( - unique int constexpr_if_stmt: @stmt_constexpr_if ref, - int else_id: @stmt ref -); - -while_body( - unique int while_stmt: @stmt_while ref, - int body_id: @stmt ref -); - -do_body( - unique int do_stmt: @stmt_end_test_while ref, - int body_id: @stmt ref -); - -switch_initialization( - unique int switch_stmt: @stmt_switch ref, - int init_id: @stmt ref -); - -#keyset[switch_stmt, index] -switch_case( - int switch_stmt: @stmt_switch ref, - int index: int ref, - int case_id: @stmt_switch_case ref -); - -switch_body( - unique int switch_stmt: @stmt_switch ref, - int body_id: @stmt ref -); - -@stmt_for_or_range_based_for = @stmt_for - | @stmt_range_based_for; - -for_initialization( - unique int for_stmt: @stmt_for_or_range_based_for ref, - int init_id: @stmt ref -); - -for_condition( - unique int for_stmt: @stmt_for ref, - int condition_id: @expr ref -); - -for_update( - unique int for_stmt: @stmt_for ref, - int update_id: @expr ref -); - -for_body( - unique int for_stmt: @stmt_for ref, - int body_id: @stmt ref -); - -@stmtparent = @stmt | @expr_stmt ; -stmtparents( - unique int id: @stmt ref, - int index: int ref, - int parent: @stmtparent ref -); - -ishandler(unique int block: @stmt_block ref); - -@cfgnode = @stmt | @expr | @function | @initialiser ; - -stmt_decl_bind( - int stmt: @stmt_decl ref, - int num: int ref, - int decl: @declaration ref -); - -stmt_decl_entry_bind( - int stmt: @stmt_decl ref, - int num: int ref, - int decl_entry: @element ref -); - -@parameterized_element = @function | @stmt_block | @requires_expr; - -blockscope( - unique int block: @stmt_block ref, - int enclosing: @parameterized_element ref -); - -@jump = @stmt_goto | @stmt_break | @stmt_continue; - -@jumporlabel = @jump | @stmt_label | @literal; - -jumpinfo( - unique int id: @jumporlabel ref, - string str: string ref, - int target: @stmt ref -); - -preprocdirects( - unique int id: @preprocdirect, - int kind: int ref, - int location: @location_default ref -); -case @preprocdirect.kind of - 0 = @ppd_if -| 1 = @ppd_ifdef -| 2 = @ppd_ifndef -| 3 = @ppd_elif -| 4 = @ppd_else -| 5 = @ppd_endif -| 6 = @ppd_plain_include -| 7 = @ppd_define -| 8 = @ppd_undef -| 9 = @ppd_line -| 10 = @ppd_error -| 11 = @ppd_pragma -| 12 = @ppd_objc_import -| 13 = @ppd_include_next -| 18 = @ppd_warning -; - -@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next; - -@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif; - -preprocpair( - int begin : @ppd_branch ref, - int elseelifend : @preprocdirect ref -); - -preproctrue(int branch : @ppd_branch ref); -preprocfalse(int branch : @ppd_branch ref); - -preproctext( - unique int id: @preprocdirect ref, - string head: string ref, - string body: string ref -); - -includes( - unique int id: @ppd_include ref, - int included: @file ref -); - -link_targets( - int id: @link_target, - int binary: @file ref -); - -link_parent( - int element : @element ref, - int link_target : @link_target ref -); - -/* XML Files */ - -xmlEncoding(unique int id: @file ref, string encoding: string ref); - -xmlDTDs( - unique int id: @xmldtd, - string root: string ref, - string publicId: string ref, - string systemId: string ref, - int fileid: @file ref -); - -xmlElements( - unique int id: @xmlelement, - string name: string ref, - int parentid: @xmlparent ref, - int idx: int ref, - int fileid: @file ref -); - -xmlAttrs( - unique int id: @xmlattribute, - int elementid: @xmlelement ref, - string name: string ref, - string value: string ref, - int idx: int ref, - int fileid: @file ref -); - -xmlNs( - int id: @xmlnamespace, - string prefixName: string ref, - string URI: string ref, - int fileid: @file ref -); - -xmlHasNs( - int elementId: @xmlnamespaceable ref, - int nsId: @xmlnamespace ref, - int fileid: @file ref -); - -xmlComments( - unique int id: @xmlcomment, - string text: string ref, - int parentid: @xmlparent ref, - int fileid: @file ref -); - -xmlChars( - unique int id: @xmlcharacters, - string text: string ref, - int parentid: @xmlparent ref, - int idx: int ref, - int isCDATA: int ref, - int fileid: @file ref -); - -@xmlparent = @file | @xmlelement; -@xmlnamespaceable = @xmlelement | @xmlattribute; - -xmllocations( - int xmlElement: @xmllocatable ref, - int location: @location_default ref -); - -@xmllocatable = @xmlcharacters - | @xmlelement - | @xmlcomment - | @xmlattribute - | @xmldtd - | @file - | @xmlnamespace; diff --git a/cpp/downgrades/f0156f5f88ab5967c79162012c20f30600ca5ebf/upgrade.properties b/cpp/downgrades/f0156f5f88ab5967c79162012c20f30600ca5ebf/upgrade.properties deleted file mode 100644 index cf362f384dae..000000000000 --- a/cpp/downgrades/f0156f5f88ab5967c79162012c20f30600ca5ebf/upgrade.properties +++ /dev/null @@ -1,3 +0,0 @@ -description: Implement compilation_build_mode/2 -compatibility: full -compilation_build_mode.rel: delete diff --git a/cpp/ql/lib/semmle/code/cpp/Compilation.qll b/cpp/ql/lib/semmle/code/cpp/Compilation.qll index 407dc31e05f1..1a8d90f991c1 100644 --- a/cpp/ql/lib/semmle/code/cpp/Compilation.qll +++ b/cpp/ql/lib/semmle/code/cpp/Compilation.qll @@ -112,7 +112,4 @@ class Compilation extends @compilation { * termination, but crashing due to something like a segfault is not. */ predicate normalTermination() { compilation_finished(this, _, _) } - - /** Holds if this compilation was compiled using the "none" build mode. */ - predicate buildModeNone() { compilation_build_mode(this, 0) } } diff --git a/cpp/ql/lib/semmlecode.cpp.dbscheme b/cpp/ql/lib/semmlecode.cpp.dbscheme index f0156f5f88ab..e51fad7a2436 100644 --- a/cpp/ql/lib/semmlecode.cpp.dbscheme +++ b/cpp/ql/lib/semmlecode.cpp.dbscheme @@ -46,22 +46,6 @@ compilation_args( string arg : string ref ); -/** - * Optionally, record the build mode for each compilation. - */ -compilation_build_mode( - unique int id : @compilation ref, - int mode : int ref -); - -/* -case @compilation_build_mode.mode of - 0 = @build_mode_none -| 1 = @build_mode_manual -| 2 = @build_mode_auto -; -*/ - /** * The source files that are compiled by a compiler invocation. * If `id` is for the compiler invocation diff --git a/cpp/ql/lib/semmlecode.cpp.dbscheme.stats b/cpp/ql/lib/semmlecode.cpp.dbscheme.stats index 758aba346080..7f0d99272e7e 100644 --- a/cpp/ql/lib/semmlecode.cpp.dbscheme.stats +++ b/cpp/ql/lib/semmlecode.cpp.dbscheme.stats @@ -18,7 +18,7 @@ @location_default - 29746763 + 29764890 @location_stmt @@ -34,11 +34,11 @@ @file - 123176 + 123251 @folder - 16330 + 16340 @macro_expansion @@ -46,23 +46,23 @@ @other_macro_reference - 858505 + 859029 @function - 4176817 + 4179363 @fun_decl - 4541216 + 4543516 @var_decl - 8034962 + 8039391 @type_decl - 3281452 + 3283451 @namespace_decl @@ -70,11 +70,11 @@ @using_declaration - 362998 + 363219 @using_directive - 6532 + 6536 @using_enum_declaration @@ -86,7 +86,7 @@ @parameter - 6186841 + 6190611 @membervariable @@ -98,7 +98,7 @@ @localvariable - 576952 + 576945 @enumconstant @@ -330,15 +330,15 @@ @pointer - 567827 + 568173 @type_with_specifiers - 851507 + 852026 @array - 110112 + 110179 @routineptr @@ -346,7 +346,7 @@ @reference - 1275627 + 1276405 @gnu_vector @@ -358,7 +358,7 @@ @rvalue_reference - 333137 + 333340 @block @@ -366,15 +366,15 @@ @decltype - 27061 + 27078 @usertype - 5230820 + 5234008 @mangledname - 6058065 + 6061757 @type_mention @@ -386,15 +386,15 @@ @ptrtomember - 37792 + 37815 @specifier - 24728 + 24743 @gnuattribute - 553363 + 553700 @stdattribute @@ -410,15 +410,15 @@ @alignas - 4665 + 4668 @attribute_arg_token - 25195 + 25210 @attribute_arg_constant_expr - 318207 + 318400 @attribute_arg_empty @@ -450,7 +450,7 @@ @namespace - 12131 + 12138 @specialnamequalifyingelement @@ -482,7 +482,7 @@ @parexpr - 3587464 + 3587463 @arithnegexpr @@ -582,11 +582,11 @@ @gtexpr - 104047 + 104110 @ltexpr - 101714 + 101776 @geexpr @@ -634,7 +634,7 @@ @assignorexpr - 23628 + 23627 @assignxorexpr @@ -662,11 +662,11 @@ @subscriptexpr - 364481 + 364477 @callexpr - 316340 + 316533 @vastartexpr @@ -678,7 +678,7 @@ @vaendexpr - 2799 + 2801 @vacopyexpr @@ -830,7 +830,7 @@ @sizeof_pack - 5598 + 5602 @hasassignexpr @@ -978,7 +978,7 @@ @lambdaexpr - 21462 + 21475 @param_ref @@ -1022,7 +1022,7 @@ @istriviallycopyableexpr - 3732 + 3734 @isliteraltypeexpr @@ -1374,7 +1374,7 @@ @lambdacapture - 27994 + 28011 @stmt_expr @@ -1398,11 +1398,11 @@ @stmt_return - 1279827 + 1280140 @stmt_block - 1418867 + 1419265 @stmt_end_test_while @@ -1430,7 +1430,7 @@ @stmt_empty - 192685 + 192682 @stmt_continue @@ -1462,7 +1462,7 @@ @stmt_range_based_for - 8398 + 8403 @stmt_handler @@ -1478,31 +1478,31 @@ @ppd_if - 666741 + 667148 @ppd_ifdef - 263150 + 263311 @ppd_ifndef - 266416 + 266579 @ppd_elif - 25195 + 25210 @ppd_else - 209027 + 209154 @ppd_endif - 1196309 + 1197038 @ppd_plain_include - 311208 + 311398 @ppd_define @@ -1510,15 +1510,15 @@ @ppd_undef - 258484 + 258642 @ppd_include_next - 1866 + 1867 @ppd_line - 27521 + 27520 @ppd_error @@ -1900,54 +1900,6 @@ - - compilation_build_mode - 9742 - - - id - 9742 - - - mode - 11 - - - - - id - mode - - - 12 - - - 1 - 2 - 9742 - - - - - - - mode - id - - - 12 - - - 863 - 864 - 11 - - - - - - - compilation_compiling_files 11546 @@ -2212,7 +2164,7 @@ seconds - 8030 + 8429 @@ -2293,52 +2245,47 @@ 3 4 - 799 + 639 4 5 - 199 + 359 - 5 + 6 7 119 8 - 9 - 79 - - - 9 10 - 119 + 159 10 - 12 - 159 + 11 + 119 - 12 - 16 - 119 + 11 + 15 + 159 - 17 - 20 + 16 + 19 159 - 21 - 42 + 19 + 24 159 - 55 - 90 - 79 + 40 + 89 + 119 @@ -2421,7 +2368,7 @@ 6 7 - 399 + 439 7 @@ -2430,18 +2377,18 @@ 8 - 9 - 239 + 10 + 279 - 9 - 24 + 10 + 26 279 - 25 - 85 - 279 + 28 + 81 + 199 @@ -2492,8 +2439,8 @@ 79 - 124 - 125 + 125 + 126 39 @@ -2515,37 +2462,27 @@ 1 2 - 3755 + 3635 2 3 - 1398 + 1917 3 4 - 998 + 1558 4 - 5 - 759 - - - 5 6 - 439 + 719 6 - 25 - 639 - - - 46 - 47 - 39 + 48 + 599 @@ -2561,27 +2498,27 @@ 1 2 - 3515 + 3595 2 3 - 1278 + 1438 3 4 - 599 + 1358 4 5 - 878 + 639 5 6 - 759 + 479 6 @@ -2590,8 +2527,8 @@ 8 - 76 - 319 + 73 + 239 @@ -2607,12 +2544,12 @@ 1 2 - 5753 + 6512 2 3 - 2277 + 1917 @@ -2956,7 +2893,7 @@ cpu_seconds - 7292 + 7507 elapsed_seconds @@ -3006,17 +2943,17 @@ 1 2 - 5937 + 6242 2 3 - 846 + 835 3 - 16 - 507 + 15 + 428 @@ -3032,12 +2969,12 @@ 1 2 - 6682 + 6976 2 3 - 609 + 530 @@ -3066,48 +3003,48 @@ 11 - 7 - 8 + 6 + 7 11 - 8 - 9 + 9 + 10 11 - 12 - 13 + 11 + 12 11 - 13 - 14 + 16 + 17 11 - 51 - 52 + 49 + 50 11 - 163 - 164 + 154 + 155 11 - 167 - 168 + 160 + 161 11 - 187 - 188 + 204 + 205 11 - 249 - 250 + 248 + 249 11 @@ -3137,48 +3074,48 @@ 11 - 7 - 8 + 6 + 7 11 - 8 - 9 + 9 + 10 11 - 12 - 13 + 11 + 12 11 - 13 - 14 + 16 + 17 11 - 49 - 50 + 47 + 48 11 - 120 - 121 + 118 + 119 11 - 123 - 124 + 128 + 129 11 - 138 - 139 + 149 + 150 11 - 224 - 225 + 222 + 223 11 @@ -4951,31 +4888,31 @@ locations_default - 29746763 + 29764890 id - 29746763 + 29764890 container - 123176 + 123251 startLine - 2094007 + 2095283 startColumn - 36859 + 36882 endLine - 2098207 + 2099485 endColumn - 48057 + 48086 @@ -4989,7 +4926,7 @@ 1 2 - 29746763 + 29764890 @@ -5005,7 +4942,7 @@ 1 2 - 29746763 + 29764890 @@ -5021,7 +4958,7 @@ 1 2 - 29746763 + 29764890 @@ -5037,7 +4974,7 @@ 1 2 - 29746763 + 29764890 @@ -5053,7 +4990,7 @@ 1 2 - 29746763 + 29764890 @@ -5069,67 +5006,67 @@ 1 11 - 9798 + 9804 11 18 - 10264 + 10270 18 30 - 9331 + 9337 30 42 - 9798 + 9804 43 61 - 9798 + 9804 61 79 - 9331 + 9337 80 106 - 9798 + 9804 108 149 - 9331 + 9337 149 199 - 9331 + 9337 206 291 - 9331 + 9337 304 469 - 9331 + 9337 482 850 - 9331 + 9337 936 2380 - 8398 + 8403 @@ -5145,67 +5082,67 @@ 1 8 - 9331 + 9337 8 13 - 9331 + 9337 13 20 - 9798 + 9804 20 32 - 9331 + 9337 32 43 - 9798 + 9804 44 61 - 9331 + 9337 62 72 - 9331 + 9337 73 93 - 9331 + 9337 97 128 - 9331 + 9337 128 180 - 9331 + 9337 180 267 - 9331 + 9337 277 414 - 9331 + 9337 439 1465 - 9331 + 9337 1557 @@ -5226,67 +5163,67 @@ 1 4 - 8865 + 8870 4 5 - 7931 + 7936 5 6 - 7465 + 7469 6 8 - 11197 + 11204 8 10 - 9331 + 9337 10 15 - 10731 + 10737 15 23 - 9798 + 9804 23 28 - 11197 + 11204 28 34 - 9798 + 9804 34 44 - 9331 + 9337 44 55 - 9331 + 9337 55 66 - 9798 + 9804 66 77 - 8398 + 8403 @@ -5302,67 +5239,67 @@ 1 8 - 9331 + 9337 8 13 - 9331 + 9337 13 20 - 9798 + 9804 20 32 - 9331 + 9337 32 43 - 9798 + 9804 43 60 - 9331 + 9337 61 71 - 9331 + 9337 72 93 - 9331 + 9337 94 127 - 9331 + 9337 128 179 - 9331 + 9337 180 268 - 9331 + 9337 278 413 - 9331 + 9337 437 1465 - 9331 + 9337 1554 @@ -5383,67 +5320,67 @@ 1 9 - 9798 + 9804 9 13 - 9331 + 9337 13 18 - 9331 + 9337 18 26 - 10264 + 10270 27 33 - 9331 + 9337 33 39 - 9331 + 9337 39 47 - 10264 + 10270 47 53 - 9331 + 9337 53 60 - 10264 + 10270 60 66 - 9331 + 9337 66 74 - 9798 + 9804 74 78 - 9798 + 9804 78 90 - 6998 + 7002 @@ -5459,52 +5396,52 @@ 1 2 - 582757 + 583112 2 3 - 314007 + 314199 3 4 - 195496 + 195615 4 6 - 161903 + 162001 6 10 - 182899 + 183010 10 16 - 162836 + 162935 16 25 - 168901 + 169004 25 46 - 160969 + 161067 46 169 - 157237 + 157333 169 265 - 6998 + 7002 @@ -5520,42 +5457,42 @@ 1 2 - 870636 + 871167 2 3 - 273415 + 273582 3 5 - 193630 + 193748 5 8 - 173567 + 173673 8 13 - 188031 + 188146 13 20 - 160969 + 161067 20 51 - 159570 + 159667 51 265 - 74186 + 74231 @@ -5571,47 +5508,47 @@ 1 2 - 611685 + 612058 2 3 - 313074 + 313265 3 4 - 198296 + 198417 4 6 - 182899 + 183010 6 9 - 173100 + 173206 9 13 - 163302 + 163402 13 19 - 174500 + 174606 19 29 - 164702 + 164802 29 52 - 112445 + 112514 @@ -5627,22 +5564,22 @@ 1 2 - 1530846 + 1531779 2 3 - 348534 + 348747 3 5 - 161903 + 162001 5 16 - 52723 + 52755 @@ -5658,47 +5595,47 @@ 1 2 - 587423 + 587781 2 3 - 315874 + 316066 3 4 - 197363 + 197483 4 6 - 168435 + 168537 6 9 - 158170 + 158266 9 14 - 170768 + 170872 14 21 - 174967 + 175073 21 32 - 162369 + 162468 32 63 - 157703 + 157799 64 @@ -5719,67 +5656,67 @@ 1 31 - 2799 + 2801 42 85 - 2799 + 2801 86 128 - 2799 + 2801 129 229 - 2799 + 2801 247 286 - 2799 + 2801 291 360 - 2799 + 2801 373 457 - 2799 + 2801 473 565 - 2799 + 2801 566 619 - 2799 + 2801 619 689 - 2799 + 2801 696 807 - 2799 + 2801 819 1563 - 2799 + 2801 1634 5631 - 2799 + 2801 15295 @@ -5800,67 +5737,67 @@ 1 18 - 2799 + 2801 23 35 - 3266 + 3268 38 43 - 2799 + 2801 44 61 - 2799 + 2801 65 73 - 2799 + 2801 73 84 - 3266 + 3268 84 96 - 2799 + 2801 96 101 - 3266 + 3268 101 105 - 3266 + 3268 107 112 - 2799 + 2801 112 126 - 2799 + 2801 137 170 - 2799 + 2801 195 265 - 1399 + 1400 @@ -5876,67 +5813,67 @@ 1 19 - 2799 + 2801 30 72 - 2799 + 2801 83 122 - 2799 + 2801 122 205 - 2799 + 2801 214 261 - 2799 + 2801 265 322 - 2799 + 2801 322 379 - 2799 + 2801 404 430 - 2799 + 2801 453 474 - 2799 + 2801 478 505 - 2799 + 2801 511 583 - 2799 + 2801 585 836 - 2799 + 2801 1104 2196 - 2799 + 2801 2387 @@ -5957,67 +5894,67 @@ 1 19 - 2799 + 2801 30 72 - 2799 + 2801 83 122 - 2799 + 2801 122 205 - 2799 + 2801 214 261 - 2799 + 2801 265 322 - 2799 + 2801 322 380 - 2799 + 2801 404 430 - 2799 + 2801 453 474 - 2799 + 2801 477 504 - 2799 + 2801 514 582 - 2799 + 2801 585 835 - 2799 + 2801 1109 2203 - 2799 + 2801 2382 @@ -6038,67 +5975,67 @@ 1 7 - 2799 + 2801 7 11 - 3266 + 3268 11 16 - 3266 + 3268 16 22 - 2799 + 2801 22 24 - 3266 + 3268 24 28 - 2799 + 2801 29 34 - 3266 + 3268 34 41 - 3266 + 3268 41 46 - 2799 + 2801 47 49 - 1866 + 1867 49 54 - 2799 + 2801 54 74 - 2799 + 2801 75 86 - 1866 + 1867 @@ -6114,52 +6051,52 @@ 1 2 - 593022 + 593383 2 3 - 306076 + 306262 3 4 - 198296 + 198417 4 6 - 159570 + 159667 6 10 - 182432 + 182543 10 16 - 161903 + 162001 16 25 - 171234 + 171338 25 46 - 158636 + 158733 46 161 - 158170 + 158266 162 265 - 8865 + 8870 @@ -6175,47 +6112,47 @@ 1 2 - 886034 + 886574 2 3 - 259884 + 260043 3 4 - 125043 + 125119 4 6 - 140906 + 140992 6 10 - 184765 + 184877 10 15 - 168435 + 168537 15 26 - 163302 + 163402 26 120 - 158170 + 158266 121 265 - 11664 + 11671 @@ -6231,22 +6168,22 @@ 1 2 - 1528513 + 1529445 2 3 - 341536 + 341744 3 5 - 170768 + 170872 5 10 - 57389 + 57424 @@ -6262,47 +6199,47 @@ 1 2 - 622883 + 623262 2 3 - 303276 + 303461 3 4 - 201562 + 201685 4 6 - 183832 + 183944 6 9 - 169834 + 169938 9 13 - 166568 + 166670 13 19 - 174967 + 175073 19 29 - 160969 + 161067 29 52 - 114311 + 114381 @@ -6318,52 +6255,52 @@ 1 2 - 599554 + 599919 2 3 - 306076 + 306262 3 4 - 196896 + 197016 4 6 - 168901 + 169004 6 9 - 156304 + 156399 9 14 - 168901 + 169004 14 21 - 177766 + 177875 21 32 - 161903 + 162001 32 60 - 158170 + 158266 60 65 - 3732 + 3734 @@ -6379,67 +6316,67 @@ 1 2 - 5132 + 5135 2 8 - 3732 + 3734 9 186 - 3732 + 3734 193 288 - 3732 + 3734 294 495 - 3732 + 3734 503 555 - 3732 + 3734 561 633 - 3732 + 3734 640 758 - 3732 + 3734 758 869 - 3732 + 3734 875 1074 - 3732 + 3734 1074 1281 - 3732 + 3734 1289 1590 - 3732 + 3734 1685 2418 - 1866 + 1867 @@ -6455,62 +6392,62 @@ 1 2 - 5598 + 5602 2 5 - 3732 + 3734 5 65 - 3732 + 3734 70 100 - 3732 + 3734 100 111 - 3732 + 3734 112 122 - 4199 + 4201 122 140 - 3732 + 3734 143 153 - 3732 + 3734 153 161 - 4199 + 4201 161 173 - 4199 + 4201 173 178 - 3732 + 3734 188 265 - 3732 + 3734 @@ -6526,62 +6463,62 @@ 1 2 - 5598 + 5602 2 8 - 3732 + 3734 9 105 - 3732 + 3734 155 241 - 3732 + 3734 253 336 - 3732 + 3734 340 426 - 3732 + 3734 434 488 - 3732 + 3734 489 572 - 3732 + 3734 573 623 - 3732 + 3734 626 696 - 4199 + 4201 701 813 - 3732 + 3734 818 1095 - 3732 + 3734 1172 @@ -6602,67 +6539,67 @@ 1 2 - 6065 + 6069 2 4 - 3732 + 3734 4 8 - 4199 + 4201 8 15 - 3732 + 3734 15 23 - 3732 + 3734 23 29 - 3732 + 3734 29 35 - 4199 + 4201 35 39 - 3266 + 3268 39 42 - 3266 + 3268 42 44 - 3266 + 3268 44 46 - 3732 + 3734 46 49 - 3732 + 3734 49 53 - 1399 + 1400 @@ -6678,67 +6615,67 @@ 1 2 - 5598 + 5602 2 8 - 3732 + 3734 9 156 - 3732 + 3734 159 240 - 3732 + 3734 251 335 - 3732 + 3734 342 430 - 3732 + 3734 432 490 - 3732 + 3734 490 573 - 3732 + 3734 574 622 - 3732 + 3734 626 698 - 3732 + 3734 700 798 - 3732 + 3734 811 987 - 3732 + 3734 1096 1180 - 1399 + 1400 @@ -10662,23 +10599,23 @@ numlines - 1382941 + 1383783 element_id - 1375942 + 1376780 num_lines - 101714 + 101776 num_code - 84917 + 84969 num_comment - 59722 + 59758 @@ -10692,12 +10629,12 @@ 1 2 - 1368943 + 1369777 2 3 - 6998 + 7002 @@ -10713,12 +10650,12 @@ 1 2 - 1369876 + 1370711 2 3 - 6065 + 6069 @@ -10734,7 +10671,7 @@ 1 2 - 1375942 + 1376780 @@ -10750,27 +10687,27 @@ 1 2 - 68120 + 68162 2 3 - 12131 + 12138 3 4 - 7465 + 7469 4 21 - 7931 + 7936 29 921 - 6065 + 6069 @@ -10786,27 +10723,27 @@ 1 2 - 70453 + 70496 2 3 - 12131 + 12138 3 4 - 8398 + 8403 4 6 - 9331 + 9337 6 7 - 1399 + 1400 @@ -10822,22 +10759,22 @@ 1 2 - 69520 + 69562 2 3 - 14930 + 14939 3 4 - 10731 + 10737 4 7 - 6532 + 6536 @@ -10853,27 +10790,27 @@ 1 2 - 52723 + 52755 2 3 - 14463 + 14472 3 5 - 6532 + 6536 5 42 - 6532 + 6536 44 922 - 4665 + 4668 @@ -10889,27 +10826,27 @@ 1 2 - 52723 + 52755 2 3 - 16796 + 16807 3 5 - 6065 + 6069 5 8 - 6532 + 6536 8 12 - 2799 + 2801 @@ -10925,27 +10862,27 @@ 1 2 - 53190 + 53222 2 3 - 15863 + 15873 3 5 - 7465 + 7469 5 7 - 5132 + 5135 7 10 - 3266 + 3268 @@ -10961,32 +10898,32 @@ 1 2 - 34526 + 34547 2 3 - 9331 + 9337 3 4 - 4199 + 4201 4 6 - 4665 + 4668 6 11 - 5132 + 5135 17 2596 - 1866 + 1867 @@ -11002,32 +10939,32 @@ 1 2 - 34526 + 34547 2 3 - 9331 + 9337 3 4 - 4199 + 4201 4 6 - 4665 + 4668 6 8 - 4665 + 4668 10 38 - 2332 + 2334 @@ -11043,32 +10980,32 @@ 1 2 - 34526 + 34547 2 3 - 9331 + 9337 3 4 - 4199 + 4201 4 6 - 4665 + 4668 6 10 - 4665 + 4668 10 37 - 2332 + 2334 @@ -11710,15 +11647,15 @@ files - 123176 + 123251 id - 123176 + 123251 name - 123176 + 123251 @@ -11732,7 +11669,7 @@ 1 2 - 123176 + 123251 @@ -11748,7 +11685,7 @@ 1 2 - 123176 + 123251 @@ -11758,15 +11695,15 @@ folders - 16330 + 16340 id - 16330 + 16340 name - 16330 + 16340 @@ -11780,7 +11717,7 @@ 1 2 - 16330 + 16340 @@ -11796,7 +11733,7 @@ 1 2 - 16330 + 16340 @@ -11806,15 +11743,15 @@ containerparent - 138574 + 138658 parent - 16330 + 16340 child - 138574 + 138658 @@ -11828,32 +11765,32 @@ 1 2 - 7465 + 7469 2 3 - 3266 + 3268 3 4 - 1399 + 1400 4 12 - 1399 + 1400 23 28 - 1399 + 1400 40 67 - 1399 + 1400 @@ -11869,7 +11806,7 @@ 1 2 - 138574 + 138658 @@ -12455,15 +12392,15 @@ inmacroexpansion - 109779103 + 109779080 id - 18027697 + 18027694 inv - 2700159 + 2700160 @@ -12477,12 +12414,12 @@ 1 3 - 1582360 + 1582361 3 5 - 1077794 + 1077793 5 @@ -12492,17 +12429,17 @@ 6 7 - 4819904 + 4819903 7 8 - 6385934 + 6385932 8 9 - 2605243 + 2605242 9 @@ -12523,12 +12460,12 @@ 1 2 - 378422 + 378424 2 3 - 544105 + 544104 3 @@ -12563,7 +12500,7 @@ 11 337 - 224845 + 224847 339 @@ -12583,15 +12520,15 @@ affectedbymacroexpansion - 35689257 + 35689251 id - 5156948 + 5156949 inv - 2784761 + 2784762 @@ -12605,7 +12542,7 @@ 1 2 - 2816078 + 2816079 2 @@ -12651,7 +12588,7 @@ 1 4 - 229115 + 229116 4 @@ -12666,12 +12603,12 @@ 9 12 - 251120 + 251119 12 13 - 333985 + 333984 13 @@ -12691,7 +12628,7 @@ 16 17 - 276609 + 276608 17 @@ -13670,19 +13607,19 @@ functions - 4176817 + 4179363 id - 4176817 + 4179363 name - 1894311 + 1895466 kind - 3266 + 3268 @@ -13696,7 +13633,7 @@ 1 2 - 4176817 + 4179363 @@ -13712,7 +13649,7 @@ 1 2 - 4176817 + 4179363 @@ -13728,22 +13665,22 @@ 1 2 - 1497253 + 1498165 2 3 - 153038 + 153131 3 5 - 142773 + 142860 5 952 - 101247 + 101309 @@ -13759,7 +13696,7 @@ 1 2 - 1893845 + 1894999 2 @@ -13861,15 +13798,15 @@ function_entry_point - 1151517 + 1151752 id - 1141719 + 1141948 entry_point - 1151517 + 1151752 @@ -13883,12 +13820,12 @@ 1 2 - 1131921 + 1132144 2 3 - 9798 + 9804 @@ -13904,7 +13841,7 @@ 1 2 - 1151517 + 1151752 @@ -13914,15 +13851,15 @@ function_return_type - 4181950 + 4184498 id - 4176817 + 4179363 return_type - 817446 + 817945 @@ -13936,12 +13873,12 @@ 1 2 - 4171685 + 4174227 2 3 - 5132 + 5135 @@ -13957,22 +13894,22 @@ 1 2 - 505771 + 506080 2 3 - 211360 + 211489 3 7 - 66254 + 66294 7 2231 - 34060 + 34081 @@ -14263,33 +14200,33 @@ function_deleted - 96115 + 96173 id - 96115 + 96173 function_defaulted - 73719 + 73764 id - 73719 + 73764 function_prototyped - 4084901 + 4087391 id - 4084901 + 4087391 @@ -14442,27 +14379,27 @@ fun_decls - 4546348 + 4548652 id - 4541216 + 4543516 function - 4033111 + 4035569 type_id - 816047 + 816544 name - 1796796 + 1797891 location - 3368702 + 3370755 @@ -14476,7 +14413,7 @@ 1 2 - 4541216 + 4543516 @@ -14492,12 +14429,12 @@ 1 2 - 4536084 + 4538381 2 3 - 5132 + 5135 @@ -14513,7 +14450,7 @@ 1 2 - 4541216 + 4543516 @@ -14529,7 +14466,7 @@ 1 2 - 4541216 + 4543516 @@ -14545,17 +14482,17 @@ 1 2 - 3603858 + 3606521 2 3 - 356466 + 356216 3 7 - 72786 + 72830 @@ -14571,12 +14508,12 @@ 1 2 - 3993452 + 3995885 2 3 - 39659 + 39683 @@ -14592,7 +14529,7 @@ 1 2 - 4033111 + 4035569 @@ -14608,17 +14545,17 @@ 1 2 - 3660781 + 3663012 2 3 - 311674 + 311864 3 6 - 60655 + 60692 @@ -14634,22 +14571,22 @@ 1 2 - 431119 + 431381 2 3 - 273882 + 274048 3 6 - 63454 + 63493 6 - 2477 - 47591 + 2476 + 47620 @@ -14665,22 +14602,22 @@ 1 2 - 515103 + 515417 2 3 - 202961 + 203085 3 7 - 62988 + 63026 7 2192 - 34993 + 35014 @@ -14696,17 +14633,17 @@ 1 2 - 689604 + 690024 2 4 - 67187 + 67228 4 773 - 59255 + 59291 @@ -14722,22 +14659,22 @@ 1 2 - 594888 + 595251 2 3 - 121310 + 121384 3 7 - 63454 + 63493 7 1959 - 36393 + 36415 @@ -14753,27 +14690,27 @@ 1 2 - 1227570 + 1228318 2 3 - 266883 + 267045 3 4 - 77918 + 77966 4 7 - 146039 + 146128 7 986 - 78385 + 78433 @@ -14789,22 +14726,22 @@ 1 2 - 1406736 + 1407593 2 3 - 152104 + 152197 3 5 - 136707 + 136791 5 936 - 101247 + 101309 @@ -14820,17 +14757,17 @@ 1 2 - 1578437 + 1579399 2 4 - 134841 + 134923 4 562 - 83517 + 83568 @@ -14846,27 +14783,27 @@ 1 2 - 1235502 + 1236254 2 3 - 293011 + 293190 3 4 - 78851 + 78899 4 8 - 137174 + 137257 8 542 - 52256 + 52288 @@ -14882,17 +14819,17 @@ 1 2 - 2964644 + 2966451 2 4 - 277614 + 277783 4 55 - 126442 + 126520 @@ -14908,17 +14845,17 @@ 1 2 - 3031832 + 3033679 2 7 - 244020 + 244169 7 55 - 92849 + 92905 @@ -14934,12 +14871,12 @@ 1 2 - 3205399 + 3207353 2 18 - 163302 + 163402 @@ -14955,12 +14892,12 @@ 1 2 - 3230595 + 3232563 2 13 - 138107 + 138191 @@ -14970,22 +14907,22 @@ fun_def - 1888246 + 1888930 id - 1888246 + 1888930 fun_specialized - 26128 + 26144 id - 26128 + 26144 @@ -15003,15 +14940,15 @@ fun_decl_specifiers - 2904922 + 2906692 id - 1688550 + 1689579 name - 2799 + 2801 @@ -15025,17 +14962,17 @@ 1 2 - 490841 + 491140 2 3 - 1179045 + 1179764 3 4 - 18663 + 18674 @@ -15207,11 +15144,11 @@ fun_decl_empty_throws - 1471124 + 1472021 fun_decl - 1471124 + 1472021 @@ -15271,11 +15208,11 @@ fun_decl_empty_noexcept - 863171 + 863230 fun_decl - 863171 + 863230 @@ -15380,19 +15317,19 @@ param_decl_bind - 6991224 + 6995017 id - 6991224 + 6995017 index - 7931 + 7936 fun_decl - 3833415 + 3835284 @@ -15406,7 +15343,7 @@ 1 2 - 6991224 + 6995017 @@ -15422,7 +15359,7 @@ 1 2 - 6991224 + 6995017 @@ -15501,8 +15438,8 @@ 466 - 8216 - 8217 + 8215 + 8216 466 @@ -15582,8 +15519,8 @@ 466 - 8216 - 8217 + 8215 + 8216 466 @@ -15600,27 +15537,27 @@ 1 2 - 1973163 + 1973899 2 3 - 1061001 + 1061647 3 4 - 502505 + 502812 4 8 - 290678 + 290856 8 18 - 6065 + 6069 @@ -15636,27 +15573,27 @@ 1 2 - 1973163 + 1973899 2 3 - 1061001 + 1061647 3 4 - 502505 + 502812 4 8 - 290678 + 290856 8 18 - 6065 + 6069 @@ -15666,27 +15603,27 @@ var_decls - 8105882 + 8110354 id - 8034962 + 8039391 variable - 7022951 + 7027231 type_id - 2042217 + 2043462 name - 667208 + 667614 location - 5308739 + 5311974 @@ -15700,7 +15637,7 @@ 1 2 - 8034962 + 8039391 @@ -15716,12 +15653,12 @@ 1 2 - 7966841 + 7971229 2 3 - 68120 + 68162 @@ -15737,7 +15674,7 @@ 1 2 - 8034962 + 8039391 @@ -15753,12 +15690,12 @@ 1 2 - 8032162 + 8036590 2 3 - 2799 + 2801 @@ -15774,17 +15711,17 @@ 1 2 - 6170977 + 6175205 2 3 - 698469 + 698427 3 7 - 153504 + 153598 @@ -15800,12 +15737,12 @@ 1 2 - 6851717 + 6855892 2 4 - 171234 + 171338 @@ -15821,12 +15758,12 @@ 1 2 - 6907706 + 6911916 2 3 - 115245 + 115315 @@ -15842,17 +15779,17 @@ 1 2 - 6477987 + 6481934 2 3 - 542631 + 542962 3 4 - 2332 + 2334 @@ -15868,27 +15805,27 @@ 1 2 - 1165048 + 1165758 2 3 - 476377 + 477134 3 4 - 95182 + 94773 4 7 - 184765 + 184877 7 762 - 120844 + 120917 @@ -15904,22 +15841,22 @@ 1 2 - 1298490 + 1299281 2 3 - 452115 + 452390 3 6 - 155837 + 155932 6 724 - 135774 + 135857 @@ -15935,17 +15872,17 @@ 1 2 - 1538311 + 1539249 2 3 - 383061 + 383295 3 128 - 120844 + 120917 @@ -15961,22 +15898,22 @@ 1 2 - 1364744 + 1365576 2 3 - 404057 + 404303 3 7 - 173100 + 173206 7 592 - 100314 + 100375 @@ -15992,37 +15929,37 @@ 1 2 - 341069 + 341277 2 3 - 86783 + 86836 3 4 - 48524 + 48553 4 6 - 51790 + 51821 6 12 - 52256 + 52288 12 33 - 50390 + 50421 34 - 2385 - 36393 + 2384 + 36415 @@ -16038,37 +15975,37 @@ 1 2 - 368597 + 368822 2 3 - 77918 + 77966 3 4 - 45258 + 45285 4 6 - 49457 + 49487 6 14 - 53190 + 53222 14 56 - 50857 + 50888 56 2301 - 21929 + 21942 @@ -16084,27 +16021,27 @@ 1 2 - 456781 + 457059 2 3 - 93782 + 93839 3 5 - 46657 + 46686 5 19 - 50857 + 50888 19 1182 - 19129 + 19141 @@ -16120,32 +16057,32 @@ 1 2 - 378862 + 379093 2 3 - 90516 + 90571 3 5 - 59722 + 59758 5 9 - 51323 + 51354 9 21 - 50390 + 50421 21 1010 - 36393 + 36415 @@ -16161,17 +16098,17 @@ 1 2 - 4493625 + 4496363 2 3 - 531433 + 531757 3 - 897 - 283680 + 896 + 283853 @@ -16187,17 +16124,17 @@ 1 2 - 4882752 + 4885727 2 17 - 415255 + 415508 17 892 - 10731 + 10737 @@ -16213,12 +16150,12 @@ 1 2 - 4958804 + 4961826 2 759 - 349934 + 350147 @@ -16234,12 +16171,12 @@ 1 2 - 5299407 + 5302637 2 6 - 9331 + 9337 @@ -16249,26 +16186,26 @@ var_def - 3992985 + 3994952 id - 3992985 + 3994952 var_decl_specifiers - 378395 + 378626 id - 378395 + 378626 name - 1866 + 1867 @@ -16282,7 +16219,7 @@ 1 2 - 378395 + 378626 @@ -16334,19 +16271,19 @@ type_decls - 3281452 + 3283451 id - 3281452 + 3283451 type_id - 3231061 + 3233030 location - 3164340 + 3166269 @@ -16360,7 +16297,7 @@ 1 2 - 3281452 + 3283451 @@ -16376,7 +16313,7 @@ 1 2 - 3281452 + 3283451 @@ -16392,12 +16329,12 @@ 1 2 - 3189536 + 3191479 2 5 - 41525 + 41550 @@ -16413,12 +16350,12 @@ 1 2 - 3189536 + 3191479 2 5 - 41525 + 41550 @@ -16434,12 +16371,12 @@ 1 2 - 3112083 + 3113980 2 20 - 52256 + 52288 @@ -16455,12 +16392,12 @@ 1 2 - 3112083 + 3113980 2 20 - 52256 + 52288 @@ -16470,22 +16407,22 @@ type_def - 2640372 + 2641981 id - 2640372 + 2641981 type_decl_top - 743260 + 743713 type_decl - 743260 + 743713 @@ -16858,19 +16795,19 @@ usings - 369530 + 369755 id - 369530 + 369755 element_id - 315407 + 315599 location - 247753 + 247904 kind @@ -16888,7 +16825,7 @@ 1 2 - 369530 + 369755 @@ -16904,7 +16841,7 @@ 1 2 - 369530 + 369755 @@ -16920,7 +16857,7 @@ 1 2 - 369530 + 369755 @@ -16936,17 +16873,17 @@ 1 2 - 263150 + 263311 2 3 - 50857 + 50888 3 5 - 1399 + 1400 @@ -16962,17 +16899,17 @@ 1 2 - 263150 + 263311 2 3 - 50857 + 50888 3 5 - 1399 + 1400 @@ -16988,7 +16925,7 @@ 1 2 - 315407 + 315599 @@ -17004,22 +16941,22 @@ 1 2 - 202495 + 202618 2 4 - 10731 + 10737 4 5 - 31260 + 31279 5 11 - 3266 + 3268 @@ -17035,22 +16972,22 @@ 1 2 - 202495 + 202618 2 4 - 10731 + 10737 4 5 - 31260 + 31279 5 11 - 3266 + 3268 @@ -17066,7 +17003,7 @@ 1 2 - 247753 + 247904 @@ -17850,23 +17787,23 @@ params - 6350610 + 6354480 id - 6186841 + 6190611 function - 3489546 + 3491673 index - 7931 + 7936 type_id - 1845321 + 1846445 @@ -17880,7 +17817,7 @@ 1 2 - 6186841 + 6190611 @@ -17896,7 +17833,7 @@ 1 2 - 6186841 + 6190611 @@ -17912,12 +17849,12 @@ 1 2 - 6063198 + 6066892 2 4 - 123643 + 123718 @@ -17933,22 +17870,22 @@ 1 2 - 1866317 + 1867454 2 3 - 952288 + 952868 3 4 - 429719 + 429981 4 18 - 241221 + 241368 @@ -17964,22 +17901,22 @@ 1 2 - 1866317 + 1867454 2 3 - 952288 + 952868 3 4 - 429719 + 429981 4 18 - 241221 + 241368 @@ -17995,22 +17932,22 @@ 1 2 - 2164461 + 2165780 2 3 - 826311 + 826815 3 4 - 346201 + 346412 4 12 - 152571 + 152664 @@ -18208,7 +18145,7 @@ 6 7 - 1399 + 1400 7 @@ -18264,22 +18201,22 @@ 1 2 - 1183245 + 1183966 2 3 - 405923 + 406171 3 7 - 153971 + 154064 7 518 - 102180 + 102243 @@ -18295,22 +18232,22 @@ 1 2 - 1403937 + 1404792 2 3 - 212293 + 212422 3 7 - 147439 + 147528 7 502 - 81651 + 81701 @@ -18326,17 +18263,17 @@ 1 2 - 1419334 + 1420199 2 3 - 347135 + 347346 3 13 - 78851 + 78899 @@ -18346,11 +18283,11 @@ overrides - 125735 + 125725 new - 122762 + 122752 old @@ -18368,7 +18305,7 @@ 1 2 - 119797 + 119788 2 @@ -18776,11 +18713,11 @@ localvariables - 576952 + 576945 id - 576952 + 576945 type_id @@ -18788,7 +18725,7 @@ name - 90549 + 90547 @@ -18802,7 +18739,7 @@ 1 2 - 576952 + 576945 @@ -18818,7 +18755,7 @@ 1 2 - 576952 + 576945 @@ -18875,7 +18812,7 @@ 1 2 - 26913 + 26912 2 @@ -18911,12 +18848,12 @@ 1 2 - 57032 + 57031 2 3 - 14285 + 14284 3 @@ -18947,7 +18884,7 @@ 1 2 - 76492 + 76491 2 @@ -18957,7 +18894,7 @@ 3 1486 - 6645 + 6644 @@ -19985,31 +19922,31 @@ builtintypes - 26128 + 26144 id - 26128 + 26144 name - 26128 + 26144 kind - 26128 + 26144 size - 3266 + 3268 sign - 1399 + 1400 alignment - 2332 + 2334 @@ -20023,7 +19960,7 @@ 1 2 - 26128 + 26144 @@ -20039,7 +19976,7 @@ 1 2 - 26128 + 26144 @@ -20055,7 +19992,7 @@ 1 2 - 26128 + 26144 @@ -20071,7 +20008,7 @@ 1 2 - 26128 + 26144 @@ -20087,7 +20024,7 @@ 1 2 - 26128 + 26144 @@ -20103,7 +20040,7 @@ 1 2 - 26128 + 26144 @@ -20119,7 +20056,7 @@ 1 2 - 26128 + 26144 @@ -20135,7 +20072,7 @@ 1 2 - 26128 + 26144 @@ -20151,7 +20088,7 @@ 1 2 - 26128 + 26144 @@ -20167,7 +20104,7 @@ 1 2 - 26128 + 26144 @@ -20183,7 +20120,7 @@ 1 2 - 26128 + 26144 @@ -20199,7 +20136,7 @@ 1 2 - 26128 + 26144 @@ -20215,7 +20152,7 @@ 1 2 - 26128 + 26144 @@ -20231,7 +20168,7 @@ 1 2 - 26128 + 26144 @@ -20247,7 +20184,7 @@ 1 2 - 26128 + 26144 @@ -20406,7 +20343,7 @@ 3 4 - 2332 + 2334 @@ -20422,12 +20359,12 @@ 1 2 - 1866 + 1867 2 3 - 1399 + 1400 @@ -20542,7 +20479,7 @@ 5 6 - 1399 + 1400 @@ -20666,7 +20603,7 @@ 2 3 - 2332 + 2334 @@ -20682,7 +20619,7 @@ 3 4 - 2332 + 2334 @@ -20692,23 +20629,23 @@ derivedtypes - 3667313 + 3669548 id - 3667313 + 3669548 name - 1551842 + 1552788 kind - 2799 + 2801 type_id - 2361357 + 2362796 @@ -20722,7 +20659,7 @@ 1 2 - 3667313 + 3669548 @@ -20738,7 +20675,7 @@ 1 2 - 3667313 + 3669548 @@ -20754,7 +20691,7 @@ 1 2 - 3667313 + 3669548 @@ -20770,17 +20707,17 @@ 1 2 - 1323218 + 1324025 2 4 - 120377 + 120450 4 1153 - 108246 + 108312 @@ -20796,7 +20733,7 @@ 1 2 - 1550909 + 1551854 2 @@ -20817,17 +20754,17 @@ 1 2 - 1323218 + 1324025 2 4 - 120377 + 120450 4 1135 - 108246 + 108312 @@ -20966,22 +20903,22 @@ 1 2 - 1514516 + 1515439 2 3 - 545897 + 546230 3 4 - 218359 + 218492 4 72 - 82584 + 82634 @@ -20997,22 +20934,22 @@ 1 2 - 1525714 + 1526644 2 3 - 538432 + 538760 3 4 - 215559 + 215690 4 72 - 81651 + 81701 @@ -21028,22 +20965,22 @@ 1 2 - 1518715 + 1519641 2 3 - 549630 + 549965 3 4 - 217425 + 217558 4 6 - 75585 + 75631 @@ -21053,11 +20990,11 @@ pointerishsize - 2705693 + 2707342 id - 2705693 + 2707342 size @@ -21079,7 +21016,7 @@ 1 2 - 2705693 + 2707342 @@ -21095,7 +21032,7 @@ 1 2 - 2705693 + 2707342 @@ -21169,23 +21106,23 @@ arraysizes - 88183 + 88237 id - 88183 + 88237 num_elements - 31727 + 31746 bytesize - 33127 + 33147 alignment - 1866 + 1867 @@ -21199,7 +21136,7 @@ 1 2 - 88183 + 88237 @@ -21215,7 +21152,7 @@ 1 2 - 88183 + 88237 @@ -21231,7 +21168,7 @@ 1 2 - 88183 + 88237 @@ -21247,22 +21184,22 @@ 1 2 - 1866 + 1867 2 3 - 23795 + 23810 3 5 - 2799 + 2801 5 13 - 2799 + 2801 13 @@ -21283,17 +21220,17 @@ 1 2 - 26595 + 26611 2 3 - 2332 + 2334 3 7 - 2799 + 2801 @@ -21309,17 +21246,17 @@ 1 2 - 26595 + 26611 2 3 - 2799 + 2801 3 5 - 2332 + 2334 @@ -21335,27 +21272,27 @@ 1 2 - 1866 + 1867 2 3 - 23795 + 23810 3 4 - 3266 + 3268 4 6 - 2332 + 2334 7 16 - 1866 + 1867 @@ -21371,17 +21308,17 @@ 1 2 - 27528 + 27544 2 3 - 3732 + 3734 3 5 - 1866 + 1867 @@ -21397,12 +21334,12 @@ 1 2 - 27528 + 27544 2 3 - 4665 + 4668 4 @@ -21854,19 +21791,19 @@ usertypes - 5230820 + 5234008 id - 5230820 + 5234008 name - 1351680 + 1352503 kind - 5132 + 5135 @@ -21880,7 +21817,7 @@ 1 2 - 5230820 + 5234008 @@ -21896,7 +21833,7 @@ 1 2 - 5230820 + 5234008 @@ -21912,27 +21849,27 @@ 1 2 - 983082 + 983681 2 3 - 153504 + 153598 3 7 - 104513 + 104577 7 61 - 101714 + 101776 65 874 - 8865 + 8870 @@ -21948,17 +21885,17 @@ 1 2 - 1211239 + 1211977 2 3 - 125509 + 125586 3 7 - 14930 + 14939 @@ -22100,19 +22037,19 @@ usertypesize - 1705347 + 1706386 id - 1705347 + 1706386 size - 13530 + 13539 alignment - 2332 + 2334 @@ -22126,7 +22063,7 @@ 1 2 - 1705347 + 1706386 @@ -22142,7 +22079,7 @@ 1 2 - 1705347 + 1706386 @@ -22158,12 +22095,12 @@ 1 2 - 3266 + 3268 2 3 - 4199 + 4201 3 @@ -22214,12 +22151,12 @@ 1 2 - 10264 + 10270 2 3 - 2799 + 2801 3 @@ -22370,15 +22307,15 @@ mangled_name - 9013845 + 9019338 id - 9013845 + 9019338 mangled_name - 6058065 + 6061757 is_complete @@ -22396,7 +22333,7 @@ 1 2 - 9013845 + 9019338 @@ -22412,7 +22349,7 @@ 1 2 - 9013845 + 9019338 @@ -22428,12 +22365,12 @@ 1 2 - 5785583 + 5789108 2 874 - 272482 + 272648 @@ -22449,7 +22386,7 @@ 1 2 - 6058065 + 6061757 @@ -22502,48 +22439,48 @@ is_standard_layout_class - 1253232 + 1253995 id - 1253232 + 1253995 is_complete - 1644692 + 1645694 id - 1644692 + 1645694 is_class_template - 397992 + 398234 id - 397992 + 398234 class_instantiation - 1088996 + 1089659 to - 1088996 + 1089659 from - 168435 + 168537 @@ -22557,7 +22494,7 @@ 1 2 - 1088996 + 1089659 @@ -22573,47 +22510,47 @@ 1 2 - 59722 + 59758 2 3 - 29394 + 29412 3 4 - 15863 + 15873 4 5 - 13064 + 13072 5 6 - 9798 + 9804 6 10 - 12597 + 12605 10 16 - 13064 + 13072 16 70 - 13530 + 13539 70 84 - 1399 + 1400 @@ -22864,19 +22801,19 @@ class_template_argument_value - 495040 + 495342 type_id - 304676 + 304861 index - 1866 + 1867 arg_value - 495040 + 495342 @@ -22890,17 +22827,17 @@ 1 2 - 249619 + 249772 2 3 - 53190 + 53222 3 4 - 1866 + 1867 @@ -22916,22 +22853,22 @@ 1 2 - 189431 + 189546 2 3 - 81184 + 81234 3 4 - 12131 + 12138 4 9 - 21929 + 21942 @@ -23009,7 +22946,7 @@ 1 2 - 495040 + 495342 @@ -23025,7 +22962,7 @@ 1 2 - 495040 + 495342 @@ -23035,15 +22972,15 @@ is_proxy_class_for - 62055 + 62092 id - 62055 + 62092 templ_param_id - 62055 + 62092 @@ -23057,7 +22994,7 @@ 1 2 - 62055 + 62092 @@ -23073,7 +23010,7 @@ 1 2 - 62055 + 62092 @@ -23379,11 +23316,11 @@ is_function_template - 1402070 + 1402925 id - 1402070 + 1402925 @@ -24514,19 +24451,19 @@ routinetypeargs - 982616 + 983214 routine - 423187 + 423445 index - 7931 + 7936 type_id - 226757 + 226895 @@ -24540,27 +24477,27 @@ 1 2 - 152571 + 152664 2 3 - 133908 + 133989 3 4 - 63454 + 63493 4 5 - 45724 + 45752 5 18 - 27528 + 27544 @@ -24576,27 +24513,27 @@ 1 2 - 182432 + 182543 2 3 - 133441 + 133522 3 4 - 58788 + 58824 4 5 - 33593 + 33614 5 11 - 14930 + 14939 @@ -24637,7 +24574,7 @@ 10 11 - 1399 + 1400 13 @@ -24698,7 +24635,7 @@ 4 5 - 1399 + 1400 5 @@ -24754,27 +24691,27 @@ 1 2 - 146505 + 146595 2 3 - 30794 + 30812 3 5 - 16796 + 16807 5 12 - 18196 + 18207 12 110 - 14463 + 14472 @@ -24790,22 +24727,22 @@ 1 2 - 172634 + 172739 2 3 - 30794 + 30812 3 6 - 18663 + 18674 6 14 - 4665 + 4668 @@ -24815,19 +24752,19 @@ ptrtomembers - 37792 + 37815 id - 37792 + 37815 type_id - 37792 + 37815 class_id - 15397 + 15406 @@ -24841,7 +24778,7 @@ 1 2 - 37792 + 37815 @@ -24857,7 +24794,7 @@ 1 2 - 37792 + 37815 @@ -24873,7 +24810,7 @@ 1 2 - 37792 + 37815 @@ -24889,7 +24826,7 @@ 1 2 - 37792 + 37815 @@ -24905,12 +24842,12 @@ 1 2 - 13530 + 13539 8 9 - 1399 + 1400 28 @@ -24931,12 +24868,12 @@ 1 2 - 13530 + 13539 8 9 - 1399 + 1400 28 @@ -24951,15 +24888,15 @@ specifiers - 24728 + 24743 id - 24728 + 24743 str - 24728 + 24743 @@ -24973,7 +24910,7 @@ 1 2 - 24728 + 24743 @@ -24989,7 +24926,7 @@ 1 2 - 24728 + 24743 @@ -24999,15 +24936,15 @@ typespecifiers - 1131454 + 1132144 type_id - 1113258 + 1113936 spec_id - 3732 + 3734 @@ -25021,12 +24958,12 @@ 1 2 - 1095061 + 1095728 2 3 - 18196 + 18207 @@ -25082,15 +25019,15 @@ funspecifiers - 10298338 + 10305080 func_id - 4065772 + 4068249 spec_id - 8398 + 8403 @@ -25104,27 +25041,27 @@ 1 2 - 1356812 + 1357639 2 3 - 640613 + 640536 3 4 - 984482 + 985549 4 5 - 779654 + 780129 5 8 - 304209 + 304395 @@ -25223,8 +25160,8 @@ 466 - 6434 - 6435 + 6435 + 6436 466 @@ -25235,15 +25172,15 @@ varspecifiers - 2244713 + 2246080 var_id - 1224304 + 1225050 spec_id - 3732 + 3734 @@ -25257,22 +25194,22 @@ 1 2 - 729730 + 730174 2 3 - 202495 + 202618 3 4 - 58322 + 58357 4 5 - 233756 + 233898 @@ -25381,19 +25318,19 @@ attributes - 561294 + 561636 id - 561294 + 561636 kind - 1399 + 1400 name - 11197 + 11204 name_space @@ -25401,7 +25338,7 @@ location - 481043 + 481336 @@ -25415,7 +25352,7 @@ 1 2 - 561294 + 561636 @@ -25431,7 +25368,7 @@ 1 2 - 561294 + 561636 @@ -25447,7 +25384,7 @@ 1 2 - 561294 + 561636 @@ -25463,7 +25400,7 @@ 1 2 - 561294 + 561636 @@ -25654,7 +25591,7 @@ 1 2 - 10264 + 10270 2 @@ -25675,7 +25612,7 @@ 1 2 - 11197 + 11204 @@ -25846,17 +25783,17 @@ 1 2 - 431585 + 431848 2 3 - 20062 + 20075 3 7 - 29394 + 29412 @@ -25872,7 +25809,7 @@ 1 2 - 481043 + 481336 @@ -25888,17 +25825,17 @@ 1 2 - 432985 + 433249 2 3 - 19596 + 19608 3 4 - 28461 + 28478 @@ -25914,7 +25851,7 @@ 1 2 - 481043 + 481336 @@ -25924,27 +25861,27 @@ attribute_args - 343868 + 344078 id - 343868 + 344078 kind - 1399 + 1400 attribute - 262684 + 262844 index - 1399 + 1400 location - 327538 + 327738 @@ -25958,7 +25895,7 @@ 1 2 - 343868 + 344078 @@ -25974,7 +25911,7 @@ 1 2 - 343868 + 344078 @@ -25990,7 +25927,7 @@ 1 2 - 343868 + 344078 @@ -26006,7 +25943,7 @@ 1 2 - 343868 + 344078 @@ -26121,17 +26058,17 @@ 1 2 - 197363 + 197483 2 3 - 49457 + 49487 3 4 - 15863 + 15873 @@ -26147,12 +26084,12 @@ 1 2 - 252419 + 252573 2 3 - 10264 + 10270 @@ -26168,17 +26105,17 @@ 1 2 - 197363 + 197483 2 3 - 49457 + 49487 3 4 - 15863 + 15873 @@ -26194,17 +26131,17 @@ 1 2 - 197363 + 197483 2 3 - 49457 + 49487 3 4 - 15863 + 15873 @@ -26319,12 +26256,12 @@ 1 2 - 313541 + 313732 2 7 - 13997 + 14005 @@ -26340,12 +26277,12 @@ 1 2 - 314941 + 315132 2 3 - 12597 + 12605 @@ -26361,12 +26298,12 @@ 1 2 - 313541 + 313732 2 7 - 13997 + 14005 @@ -26382,7 +26319,7 @@ 1 2 - 327538 + 327738 @@ -26392,15 +26329,15 @@ attribute_arg_value - 25195 + 25210 arg - 25195 + 25210 value - 15863 + 15873 @@ -26414,7 +26351,7 @@ 1 2 - 25195 + 25210 @@ -26430,12 +26367,12 @@ 1 2 - 14463 + 14472 2 16 - 1399 + 1400 @@ -26493,15 +26430,15 @@ attribute_arg_constant - 318207 + 318400 arg - 318207 + 318400 constant - 318207 + 318400 @@ -26515,7 +26452,7 @@ 1 2 - 318207 + 318400 @@ -26531,7 +26468,7 @@ 1 2 - 318207 + 318400 @@ -26710,15 +26647,15 @@ funcattributes - 629882 + 630265 func_id - 443250 + 443520 spec_id - 524435 + 524754 @@ -26732,17 +26669,17 @@ 1 2 - 338269 + 338476 2 3 - 64387 + 64427 3 6 - 39659 + 39683 6 @@ -26763,12 +26700,12 @@ 1 2 - 505771 + 506080 2 17 - 18663 + 18674 @@ -26904,15 +26841,15 @@ unspecifiedtype - 9482291 + 9488069 type_id - 9482291 + 9488069 unspecified_type_id - 6486385 + 6490338 @@ -26926,7 +26863,7 @@ 1 2 - 9482291 + 9488069 @@ -26942,17 +26879,17 @@ 1 2 - 4556146 + 4558923 2 3 - 1714678 + 1715723 3 145 - 215559 + 215690 @@ -26962,19 +26899,19 @@ member - 3878673 + 3881037 parent - 545431 + 545763 index - 92849 + 92905 child - 3807287 + 3809607 @@ -26988,47 +26925,47 @@ 1 2 - 129709 + 129788 2 3 - 64854 + 64894 3 4 - 73252 + 73297 4 5 - 75119 + 75165 5 6 - 40592 + 40617 6 8 - 46657 + 46686 8 14 - 45724 + 45752 14 30 - 41525 + 41550 30 200 - 27994 + 28011 @@ -27044,52 +26981,52 @@ 1 2 - 129709 + 129788 2 3 - 64854 + 64894 3 4 - 73252 + 73297 4 5 - 76052 + 76098 5 6 - 39659 + 39683 6 7 - 24262 + 24276 7 9 - 41992 + 42017 9 17 - 43858 + 43885 17 41 - 41525 + 41550 41 200 - 10264 + 10270 @@ -27105,62 +27042,62 @@ 1 2 - 26128 + 26144 2 3 - 6998 + 7002 3 4 - 3732 + 3734 4 5 - 7931 + 7936 5 6 - 5598 + 5602 6 7 - 5598 + 5602 7 9 - 7465 + 7469 9 16 - 6998 + 7002 16 52 - 6998 + 7002 52 107 - 6998 + 7002 108 577 - 6998 + 7002 737 1162 - 1399 + 1400 @@ -27176,62 +27113,62 @@ 1 2 - 26128 + 26144 2 3 - 6998 + 7002 3 4 - 3732 + 3734 4 5 - 7931 + 7936 5 6 - 5598 + 5602 6 7 - 5598 + 5602 7 9 - 7465 + 7469 9 16 - 6998 + 7002 16 52 - 6998 + 7002 52 107 - 6998 + 7002 108 577 - 6998 + 7002 738 1163 - 1399 + 1400 @@ -27247,7 +27184,7 @@ 1 2 - 3807287 + 3809607 @@ -27263,12 +27200,12 @@ 1 2 - 3735900 + 3738177 2 3 - 71386 + 71430 @@ -28798,15 +28735,15 @@ commentbinding - 3089221 + 3091104 id - 2443942 + 2445431 element - 3012702 + 3014538 @@ -28820,12 +28757,12 @@ 1 2 - 2366956 + 2368399 2 97 - 76985 + 77032 @@ -28841,12 +28778,12 @@ 1 2 - 2936183 + 2937972 2 3 - 76519 + 76565 @@ -28856,15 +28793,15 @@ exprconv - 7032993 + 7032991 converted - 7032993 + 7032991 conversion - 7032993 + 7032991 @@ -28878,7 +28815,7 @@ 1 2 - 7032993 + 7032991 @@ -28894,7 +28831,7 @@ 1 2 - 7032993 + 7032991 @@ -29251,15 +29188,15 @@ namespaces - 12131 + 12138 id - 12131 + 12138 name - 9798 + 9804 @@ -29273,7 +29210,7 @@ 1 2 - 12131 + 12138 @@ -29289,7 +29226,7 @@ 1 2 - 8398 + 8403 2 @@ -29309,26 +29246,26 @@ namespace_inline - 1399 + 1400 id - 1399 + 1400 namespacembrs - 2386553 + 2388007 parentid - 10264 + 10270 memberid - 2386553 + 2388007 @@ -29342,7 +29279,7 @@ 1 2 - 1866 + 1867 2 @@ -29403,7 +29340,7 @@ 1 2 - 2386553 + 2388007 @@ -29899,7 +29836,7 @@ qualifyingelement - 97537 + 97518 location @@ -30013,7 +29950,7 @@ 1 2 - 58420 + 58401 2 @@ -30049,7 +29986,7 @@ 1 2 - 58420 + 58401 2 @@ -30085,7 +30022,7 @@ 1 2 - 63834 + 63815 2 @@ -30198,12 +30135,12 @@ 1 2 - 137054 + 137073 2 3 - 55703 + 55684 3 @@ -32144,7 +32081,7 @@ expr_types - 18451397 + 18451442 id @@ -32170,12 +32107,12 @@ 1 2 - 18188166 + 18188121 2 3 - 131615 + 131660 @@ -32212,17 +32149,17 @@ 2 3 - 249345 + 249334 3 4 - 102817 + 102840 4 5 - 81877 + 81865 5 @@ -32237,12 +32174,12 @@ 14 41 - 91653 + 91664 41 125325 - 44590 + 44579 @@ -33769,11 +33706,11 @@ lambdas - 21462 + 21475 expr - 21462 + 21475 default_capture @@ -33795,7 +33732,7 @@ 1 2 - 21462 + 21475 @@ -33811,7 +33748,7 @@ 1 2 - 21462 + 21475 @@ -33885,15 +33822,15 @@ lambda_capture - 27994 + 28011 id - 27994 + 28011 lambda - 20529 + 20541 index @@ -33901,7 +33838,7 @@ field - 27994 + 28011 captured_by_reference @@ -33913,7 +33850,7 @@ location - 2799 + 2801 @@ -33927,7 +33864,7 @@ 1 2 - 27994 + 28011 @@ -33943,7 +33880,7 @@ 1 2 - 27994 + 28011 @@ -33959,7 +33896,7 @@ 1 2 - 27994 + 28011 @@ -33975,7 +33912,7 @@ 1 2 - 27994 + 28011 @@ -33991,7 +33928,7 @@ 1 2 - 27994 + 28011 @@ -34007,7 +33944,7 @@ 1 2 - 27994 + 28011 @@ -34023,12 +33960,12 @@ 1 2 - 13064 + 13072 2 3 - 7465 + 7469 @@ -34044,12 +33981,12 @@ 1 2 - 13064 + 13072 2 3 - 7465 + 7469 @@ -34065,12 +34002,12 @@ 1 2 - 13064 + 13072 2 3 - 7465 + 7469 @@ -34086,7 +34023,7 @@ 1 2 - 20529 + 20541 @@ -34102,7 +34039,7 @@ 1 2 - 20529 + 20541 @@ -34118,12 +34055,12 @@ 1 2 - 13064 + 13072 2 3 - 7465 + 7469 @@ -34255,7 +34192,7 @@ 1 2 - 27994 + 28011 @@ -34271,7 +34208,7 @@ 1 2 - 27994 + 28011 @@ -34287,7 +34224,7 @@ 1 2 - 27994 + 28011 @@ -34303,7 +34240,7 @@ 1 2 - 27994 + 28011 @@ -34319,7 +34256,7 @@ 1 2 - 27994 + 28011 @@ -34335,7 +34272,7 @@ 1 2 - 27994 + 28011 @@ -34543,7 +34480,7 @@ 8 9 - 1866 + 1867 14 @@ -34564,7 +34501,7 @@ 8 9 - 1866 + 1867 14 @@ -34585,7 +34522,7 @@ 1 2 - 2799 + 2801 @@ -34601,7 +34538,7 @@ 8 9 - 1866 + 1867 14 @@ -34622,7 +34559,7 @@ 1 2 - 2799 + 2801 @@ -34638,7 +34575,7 @@ 1 2 - 2799 + 2801 @@ -36381,11 +36318,11 @@ stmt_decl_bind - 580849 + 580842 stmt - 541066 + 541060 num @@ -36393,7 +36330,7 @@ decl - 580745 + 580738 @@ -36407,7 +36344,7 @@ 1 2 - 520377 + 520371 2 @@ -36428,7 +36365,7 @@ 1 2 - 520377 + 520371 2 @@ -36631,7 +36568,7 @@ 1 2 - 580707 + 580700 2 @@ -36652,7 +36589,7 @@ 1 2 - 580745 + 580738 @@ -36662,11 +36599,11 @@ stmt_decl_entry_bind - 580849 + 580842 stmt - 541066 + 541060 num @@ -36674,7 +36611,7 @@ decl_entry - 580791 + 580784 @@ -36688,7 +36625,7 @@ 1 2 - 520377 + 520371 2 @@ -36709,7 +36646,7 @@ 1 2 - 520377 + 520371 2 @@ -36912,7 +36849,7 @@ 1 2 - 580770 + 580763 3 @@ -36933,7 +36870,7 @@ 1 2 - 580791 + 580784 @@ -36943,15 +36880,15 @@ blockscope - 1410469 + 1410861 block - 1410469 + 1410861 enclosing - 1295224 + 1295546 @@ -36965,7 +36902,7 @@ 1 2 - 1410469 + 1410861 @@ -36981,12 +36918,12 @@ 1 2 - 1229903 + 1230185 2 13 - 65321 + 65360 @@ -37182,19 +37119,19 @@ preprocdirects - 4188015 + 4190567 id - 4188015 + 4190567 kind - 5132 + 5135 location - 4147423 + 4149950 @@ -37208,7 +37145,7 @@ 1 2 - 4188015 + 4190567 @@ -37224,7 +37161,7 @@ 1 2 - 4188015 + 4190567 @@ -37372,7 +37309,7 @@ 1 2 - 4146956 + 4149483 88 @@ -37393,7 +37330,7 @@ 1 2 - 4147423 + 4149950 @@ -37403,15 +37340,15 @@ preprocpair - 1430532 + 1431403 begin - 1196309 + 1197038 elseelifend - 1430532 + 1431403 @@ -37425,17 +37362,17 @@ 1 2 - 977950 + 978546 2 3 - 208094 + 208221 3 11 - 10264 + 10270 @@ -37451,7 +37388,7 @@ 1 2 - 1430532 + 1431403 @@ -37461,22 +37398,22 @@ preproctrue - 766589 + 767056 branch - 766589 + 767056 preprocfalse - 331271 + 331473 branch - 331271 + 331473 @@ -37629,15 +37566,15 @@ includes - 313074 + 313265 id - 313074 + 313265 included - 117111 + 117182 @@ -37651,7 +37588,7 @@ 1 2 - 313074 + 313265 @@ -37667,32 +37604,32 @@ 1 2 - 61121 + 61159 2 3 - 21929 + 21942 3 4 - 12597 + 12605 4 6 - 10264 + 10270 6 14 - 8865 + 8870 14 47 - 2332 + 2334 diff --git a/cpp/ql/lib/upgrades/e51fad7a2436caefab0c6bd52f05e28e7cce4d92/old.dbscheme b/cpp/ql/lib/upgrades/e51fad7a2436caefab0c6bd52f05e28e7cce4d92/old.dbscheme deleted file mode 100644 index e51fad7a2436..000000000000 --- a/cpp/ql/lib/upgrades/e51fad7a2436caefab0c6bd52f05e28e7cce4d92/old.dbscheme +++ /dev/null @@ -1,2323 +0,0 @@ - -/** - * An invocation of the compiler. Note that more than one file may be - * compiled per invocation. For example, this command compiles three - * source files: - * - * gcc -c f1.c f2.c f3.c - * - * The `id` simply identifies the invocation, while `cwd` is the working - * directory from which the compiler was invoked. - */ -compilations( - /** - * An invocation of the compiler. Note that more than one file may - * be compiled per invocation. For example, this command compiles - * three source files: - * - * gcc -c f1.c f2.c f3.c - */ - unique int id : @compilation, - string cwd : string ref -); - -/** - * The arguments that were passed to the extractor for a compiler - * invocation. If `id` is for the compiler invocation - * - * gcc -c f1.c f2.c f3.c - * - * then typically there will be rows for - * - * num | arg - * --- | --- - * 0 | *path to extractor* - * 1 | `--mimic` - * 2 | `/usr/bin/gcc` - * 3 | `-c` - * 4 | f1.c - * 5 | f2.c - * 6 | f3.c - */ -#keyset[id, num] -compilation_args( - int id : @compilation ref, - int num : int ref, - string arg : string ref -); - -/** - * The source files that are compiled by a compiler invocation. - * If `id` is for the compiler invocation - * - * gcc -c f1.c f2.c f3.c - * - * then there will be rows for - * - * num | arg - * --- | --- - * 0 | f1.c - * 1 | f2.c - * 2 | f3.c - * - * Note that even if those files `#include` headers, those headers - * do not appear as rows. - */ -#keyset[id, num] -compilation_compiling_files( - int id : @compilation ref, - int num : int ref, - int file : @file ref -); - -/** - * The time taken by the extractor for a compiler invocation. - * - * For each file `num`, there will be rows for - * - * kind | seconds - * ---- | --- - * 1 | CPU seconds used by the extractor frontend - * 2 | Elapsed seconds during the extractor frontend - * 3 | CPU seconds used by the extractor backend - * 4 | Elapsed seconds during the extractor backend - */ -#keyset[id, num, kind] -compilation_time( - int id : @compilation ref, - int num : int ref, - /* kind: - 1 = frontend_cpu_seconds - 2 = frontend_elapsed_seconds - 3 = extractor_cpu_seconds - 4 = extractor_elapsed_seconds - */ - int kind : int ref, - float seconds : float ref -); - -/** - * An error or warning generated by the extractor. - * The diagnostic message `diagnostic` was generated during compiler - * invocation `compilation`, and is the `file_number_diagnostic_number`th - * message generated while extracting the `file_number`th file of that - * invocation. - */ -#keyset[compilation, file_number, file_number_diagnostic_number] -diagnostic_for( - int diagnostic : @diagnostic ref, - int compilation : @compilation ref, - int file_number : int ref, - int file_number_diagnostic_number : int ref -); - -/** - * If extraction was successful, then `cpu_seconds` and - * `elapsed_seconds` are the CPU time and elapsed time (respectively) - * that extraction took for compiler invocation `id`. - */ -compilation_finished( - unique int id : @compilation ref, - float cpu_seconds : float ref, - float elapsed_seconds : float ref -); - - -/** - * External data, loaded from CSV files during snapshot creation. See - * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) - * for more information. - */ -externalData( - int id : @externalDataElement, - string path : string ref, - int column: int ref, - string value : string ref -); - -/** - * The source location of the snapshot. - */ -sourceLocationPrefix(string prefix : string ref); - -/** - * Information about packages that provide code used during compilation. - * The `id` is just a unique identifier. - * The `namespace` is typically the name of the package manager that - * provided the package (e.g. "dpkg" or "yum"). - * The `package_name` is the name of the package, and `version` is its - * version (as a string). - */ -external_packages( - unique int id: @external_package, - string namespace : string ref, - string package_name : string ref, - string version : string ref -); - -/** - * Holds if File `fileid` was provided by package `package`. - */ -header_to_external_package( - int fileid : @file ref, - int package : @external_package ref -); - -/* - * Version history - */ - -svnentries( - unique int id : @svnentry, - string revision : string ref, - string author : string ref, - date revisionDate : date ref, - int changeSize : int ref -) - -svnaffectedfiles( - int id : @svnentry ref, - int file : @file ref, - string action : string ref -) - -svnentrymsg( - unique int id : @svnentry ref, - string message : string ref -) - -svnchurn( - int commit : @svnentry ref, - int file : @file ref, - int addedLines : int ref, - int deletedLines : int ref -) - -/* - * C++ dbscheme - */ - -extractor_version( - string codeql_version: string ref, - string frontend_version: string ref -) - -@location = @location_stmt | @location_expr | @location_default ; - -/** - * The location of an element that is not an expression or a statement. - * The location spans column `startcolumn` of line `startline` to - * column `endcolumn` of line `endline` in file `file`. - * For more information, see - * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). - */ -locations_default( - /** The location of an element that is not an expression or a statement. */ - unique int id: @location_default, - int container: @container ref, - int startLine: int ref, - int startColumn: int ref, - int endLine: int ref, - int endColumn: int ref -); - -/** - * The location of a statement. - * The location spans column `startcolumn` of line `startline` to - * column `endcolumn` of line `endline` in file `file`. - * For more information, see - * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). - */ -locations_stmt( - /** The location of a statement. */ - unique int id: @location_stmt, - int container: @container ref, - int startLine: int ref, - int startColumn: int ref, - int endLine: int ref, - int endColumn: int ref -); - -/** - * The location of an expression. - * The location spans column `startcolumn` of line `startline` to - * column `endcolumn` of line `endline` in file `file`. - * For more information, see - * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). - */ -locations_expr( - /** The location of an expression. */ - unique int id: @location_expr, - int container: @container ref, - int startLine: int ref, - int startColumn: int ref, - int endLine: int ref, - int endColumn: int ref -); - -/** An element for which line-count information is available. */ -@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; - -numlines( - int element_id: @sourceline ref, - int num_lines: int ref, - int num_code: int ref, - int num_comment: int ref -); - -diagnostics( - unique int id: @diagnostic, - int severity: int ref, - string error_tag: string ref, - string error_message: string ref, - string full_error_message: string ref, - int location: @location_default ref -); - -files( - unique int id: @file, - string name: string ref -); - -folders( - unique int id: @folder, - string name: string ref -); - -@container = @folder | @file - -containerparent( - int parent: @container ref, - unique int child: @container ref -); - -fileannotations( - int id: @file ref, - int kind: int ref, - string name: string ref, - string value: string ref -); - -inmacroexpansion( - int id: @element ref, - int inv: @macroinvocation ref -); - -affectedbymacroexpansion( - int id: @element ref, - int inv: @macroinvocation ref -); - -case @macroinvocation.kind of - 1 = @macro_expansion -| 2 = @other_macro_reference -; - -macroinvocations( - unique int id: @macroinvocation, - int macro_id: @ppd_define ref, - int location: @location_default ref, - int kind: int ref -); - -macroparent( - unique int id: @macroinvocation ref, - int parent_id: @macroinvocation ref -); - -// a macroinvocation may be part of another location -// the way to find a constant expression that uses a macro -// is thus to find a constant expression that has a location -// to which a macro invocation is bound -macrolocationbind( - int id: @macroinvocation ref, - int location: @location ref -); - -#keyset[invocation, argument_index] -macro_argument_unexpanded( - int invocation: @macroinvocation ref, - int argument_index: int ref, - string text: string ref -); - -#keyset[invocation, argument_index] -macro_argument_expanded( - int invocation: @macroinvocation ref, - int argument_index: int ref, - string text: string ref -); - -/* -case @function.kind of - 1 = @normal_function -| 2 = @constructor -| 3 = @destructor -| 4 = @conversion_function -| 5 = @operator -| 6 = @builtin_function // GCC built-in functions, e.g. __builtin___memcpy_chk -| 7 = @user_defined_literal -| 8 = @deduction_guide -; -*/ - -functions( - unique int id: @function, - string name: string ref, - int kind: int ref -); - -function_entry_point( - int id: @function ref, - unique int entry_point: @stmt ref -); - -function_return_type( - int id: @function ref, - int return_type: @type ref -); - -/** - * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits` - * instance associated with it, and the variables representing the `handle` and `promise` - * for it. - */ -coroutine( - unique int function: @function ref, - int traits: @type ref -); - -/* -case @coroutine_placeholder_variable.kind of - 1 = @handle -| 2 = @promise -| 3 = @init_await_resume -; -*/ - -coroutine_placeholder_variable( - unique int placeholder_variable: @variable ref, - int kind: int ref, - int function: @function ref -) - -/** The `new` function used for allocating the coroutine state, if any. */ -coroutine_new( - unique int function: @function ref, - int new: @function ref -); - -/** The `delete` function used for deallocating the coroutine state, if any. */ -coroutine_delete( - unique int function: @function ref, - int delete: @function ref -); - -purefunctions(unique int id: @function ref); - -function_deleted(unique int id: @function ref); - -function_defaulted(unique int id: @function ref); - -function_prototyped(unique int id: @function ref) - -deduction_guide_for_class( - int id: @function ref, - int class_template: @usertype ref -) - -member_function_this_type( - unique int id: @function ref, - int this_type: @type ref -); - -#keyset[id, type_id] -fun_decls( - int id: @fun_decl, - int function: @function ref, - int type_id: @type ref, - string name: string ref, - int location: @location_default ref -); -fun_def(unique int id: @fun_decl ref); -fun_specialized(unique int id: @fun_decl ref); -fun_implicit(unique int id: @fun_decl ref); -fun_decl_specifiers( - int id: @fun_decl ref, - string name: string ref -) -#keyset[fun_decl, index] -fun_decl_throws( - int fun_decl: @fun_decl ref, - int index: int ref, - int type_id: @type ref -); -/* an empty throw specification is different from none */ -fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); -fun_decl_noexcept( - int fun_decl: @fun_decl ref, - int constant: @expr ref -); -fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); -fun_decl_typedef_type( - unique int fun_decl: @fun_decl ref, - int typedeftype_id: @usertype ref -); - -param_decl_bind( - unique int id: @var_decl ref, - int index: int ref, - int fun_decl: @fun_decl ref -); - -#keyset[id, type_id] -var_decls( - int id: @var_decl, - int variable: @variable ref, - int type_id: @type ref, - string name: string ref, - int location: @location_default ref -); -var_def(unique int id: @var_decl ref); -var_decl_specifiers( - int id: @var_decl ref, - string name: string ref -) -is_structured_binding(unique int id: @variable ref); - -type_decls( - unique int id: @type_decl, - int type_id: @type ref, - int location: @location_default ref -); -type_def(unique int id: @type_decl ref); -type_decl_top( - unique int type_decl: @type_decl ref -); - -namespace_decls( - unique int id: @namespace_decl, - int namespace_id: @namespace ref, - int location: @location_default ref, - int bodylocation: @location_default ref -); - -case @using.kind of - 1 = @using_declaration -| 2 = @using_directive -| 3 = @using_enum_declaration -; - -usings( - unique int id: @using, - int element_id: @element ref, - int location: @location_default ref, - int kind: int ref -); - -/** The element which contains the `using` declaration. */ -using_container( - int parent: @element ref, - int child: @using ref -); - -static_asserts( - unique int id: @static_assert, - int condition : @expr ref, - string message : string ref, - int location: @location_default ref, - int enclosing : @element ref -); - -// each function has an ordered list of parameters -#keyset[id, type_id] -#keyset[function, index, type_id] -params( - int id: @parameter, - int function: @parameterized_element ref, - int index: int ref, - int type_id: @type ref -); - -overrides( - int new: @function ref, - int old: @function ref -); - -#keyset[id, type_id] -membervariables( - int id: @membervariable, - int type_id: @type ref, - string name: string ref -); - -#keyset[id, type_id] -globalvariables( - int id: @globalvariable, - int type_id: @type ref, - string name: string ref -); - -#keyset[id, type_id] -localvariables( - int id: @localvariable, - int type_id: @type ref, - string name: string ref -); - -autoderivation( - unique int var: @variable ref, - int derivation_type: @type ref -); - -orphaned_variables( - int var: @localvariable ref, - int function: @function ref -) - -enumconstants( - unique int id: @enumconstant, - int parent: @usertype ref, - int index: int ref, - int type_id: @type ref, - string name: string ref, - int location: @location_default ref -); - -@variable = @localscopevariable | @globalvariable | @membervariable; - -@localscopevariable = @localvariable | @parameter; - -/** - * Built-in types are the fundamental types, e.g., integral, floating, and void. - */ -case @builtintype.kind of - 1 = @errortype -| 2 = @unknowntype -| 3 = @void -| 4 = @boolean -| 5 = @char -| 6 = @unsigned_char -| 7 = @signed_char -| 8 = @short -| 9 = @unsigned_short -| 10 = @signed_short -| 11 = @int -| 12 = @unsigned_int -| 13 = @signed_int -| 14 = @long -| 15 = @unsigned_long -| 16 = @signed_long -| 17 = @long_long -| 18 = @unsigned_long_long -| 19 = @signed_long_long -// ... 20 Microsoft-specific __int8 -// ... 21 Microsoft-specific __int16 -// ... 22 Microsoft-specific __int32 -// ... 23 Microsoft-specific __int64 -| 24 = @float -| 25 = @double -| 26 = @long_double -| 27 = @complex_float // C99-specific _Complex float -| 28 = @complex_double // C99-specific _Complex double -| 29 = @complex_long_double // C99-specific _Complex long double -| 30 = @imaginary_float // C99-specific _Imaginary float -| 31 = @imaginary_double // C99-specific _Imaginary double -| 32 = @imaginary_long_double // C99-specific _Imaginary long double -| 33 = @wchar_t // Microsoft-specific -| 34 = @decltype_nullptr // C++11 -| 35 = @int128 // __int128 -| 36 = @unsigned_int128 // unsigned __int128 -| 37 = @signed_int128 // signed __int128 -| 38 = @float128 // __float128 -| 39 = @complex_float128 // _Complex __float128 -| 40 = @decimal32 // _Decimal32 -| 41 = @decimal64 // _Decimal64 -| 42 = @decimal128 // _Decimal128 -| 43 = @char16_t -| 44 = @char32_t -| 45 = @std_float32 // _Float32 -| 46 = @float32x // _Float32x -| 47 = @std_float64 // _Float64 -| 48 = @float64x // _Float64x -| 49 = @std_float128 // _Float128 -// ... 50 _Float128x -| 51 = @char8_t -| 52 = @float16 // _Float16 -| 53 = @complex_float16 // _Complex _Float16 -| 54 = @fp16 // __fp16 -| 55 = @std_bfloat16 // __bf16 -| 56 = @std_float16 // std::float16_t -| 57 = @complex_std_float32 // _Complex _Float32 -| 58 = @complex_float32x // _Complex _Float32x -| 59 = @complex_std_float64 // _Complex _Float64 -| 60 = @complex_float64x // _Complex _Float64x -| 61 = @complex_std_float128 // _Complex _Float128 -; - -builtintypes( - unique int id: @builtintype, - string name: string ref, - int kind: int ref, - int size: int ref, - int sign: int ref, - int alignment: int ref -); - -/** - * Derived types are types that are directly derived from existing types and - * point to, refer to, transform type data to return a new type. - */ -case @derivedtype.kind of - 1 = @pointer -| 2 = @reference -| 3 = @type_with_specifiers -| 4 = @array -| 5 = @gnu_vector -| 6 = @routineptr -| 7 = @routinereference -| 8 = @rvalue_reference // C++11 -// ... 9 type_conforming_to_protocols deprecated -| 10 = @block -; - -derivedtypes( - unique int id: @derivedtype, - string name: string ref, - int kind: int ref, - int type_id: @type ref -); - -pointerishsize(unique int id: @derivedtype ref, - int size: int ref, - int alignment: int ref); - -arraysizes( - unique int id: @derivedtype ref, - int num_elements: int ref, - int bytesize: int ref, - int alignment: int ref -); - -typedefbase( - unique int id: @usertype ref, - int type_id: @type ref -); - -/** - * An instance of the C++11 `decltype` operator. For example: - * ``` - * int a; - * decltype(1+a) b; - * ``` - * Here `expr` is `1+a`. - * - * Sometimes an additional pair of parentheses around the expression - * would change the semantics of this decltype, e.g. - * ``` - * struct A { double x; }; - * const A* a = new A(); - * decltype( a->x ); // type is double - * decltype((a->x)); // type is const double& - * ``` - * (Please consult the C++11 standard for more details). - * `parentheses_would_change_meaning` is `true` iff that is the case. - */ -#keyset[id, expr] -decltypes( - int id: @decltype, - int expr: @expr ref, - int base_type: @type ref, - boolean parentheses_would_change_meaning: boolean ref -); - -/* -case @usertype.kind of - 1 = @struct -| 2 = @class -| 3 = @union -| 4 = @enum -| 5 = @typedef // classic C: typedef typedef type name -| 6 = @template -| 7 = @template_parameter -| 8 = @template_template_parameter -| 9 = @proxy_class // a proxy class associated with a template parameter -// ... 10 objc_class deprecated -// ... 11 objc_protocol deprecated -// ... 12 objc_category deprecated -| 13 = @scoped_enum -| 14 = @using_alias // a using name = type style typedef -; -*/ - -usertypes( - unique int id: @usertype, - string name: string ref, - int kind: int ref -); - -usertypesize( - unique int id: @usertype ref, - int size: int ref, - int alignment: int ref -); - -usertype_final(unique int id: @usertype ref); - -usertype_uuid( - unique int id: @usertype ref, - string uuid: string ref -); - -mangled_name( - unique int id: @declaration ref, - int mangled_name : @mangledname, - boolean is_complete: boolean ref -); - -is_pod_class(unique int id: @usertype ref); -is_standard_layout_class(unique int id: @usertype ref); - -is_complete(unique int id: @usertype ref); - -is_class_template(unique int id: @usertype ref); -class_instantiation( - int to: @usertype ref, - int from: @usertype ref -); -class_template_argument( - int type_id: @usertype ref, - int index: int ref, - int arg_type: @type ref -); -class_template_argument_value( - int type_id: @usertype ref, - int index: int ref, - int arg_value: @expr ref -); - -is_proxy_class_for( - unique int id: @usertype ref, - unique int templ_param_id: @usertype ref -); - -type_mentions( - unique int id: @type_mention, - int type_id: @type ref, - int location: @location ref, - // a_symbol_reference_kind from the frontend. - int kind: int ref -); - -is_function_template(unique int id: @function ref); -function_instantiation( - unique int to: @function ref, - int from: @function ref -); -function_template_argument( - int function_id: @function ref, - int index: int ref, - int arg_type: @type ref -); -function_template_argument_value( - int function_id: @function ref, - int index: int ref, - int arg_value: @expr ref -); - -is_variable_template(unique int id: @variable ref); -variable_instantiation( - unique int to: @variable ref, - int from: @variable ref -); -variable_template_argument( - int variable_id: @variable ref, - int index: int ref, - int arg_type: @type ref -); -variable_template_argument_value( - int variable_id: @variable ref, - int index: int ref, - int arg_value: @expr ref -); - -routinetypes( - unique int id: @routinetype, - int return_type: @type ref -); - -routinetypeargs( - int routine: @routinetype ref, - int index: int ref, - int type_id: @type ref -); - -ptrtomembers( - unique int id: @ptrtomember, - int type_id: @type ref, - int class_id: @type ref -); - -/* - specifiers for types, functions, and variables - - "public", - "protected", - "private", - - "const", - "volatile", - "static", - - "pure", - "virtual", - "sealed", // Microsoft - "__interface", // Microsoft - "inline", - "explicit", - - "near", // near far extension - "far", // near far extension - "__ptr32", // Microsoft - "__ptr64", // Microsoft - "__sptr", // Microsoft - "__uptr", // Microsoft - "dllimport", // Microsoft - "dllexport", // Microsoft - "thread", // Microsoft - "naked", // Microsoft - "microsoft_inline", // Microsoft - "forceinline", // Microsoft - "selectany", // Microsoft - "nothrow", // Microsoft - "novtable", // Microsoft - "noreturn", // Microsoft - "noinline", // Microsoft - "noalias", // Microsoft - "restrict", // Microsoft -*/ - -specifiers( - unique int id: @specifier, - unique string str: string ref -); - -typespecifiers( - int type_id: @type ref, - int spec_id: @specifier ref -); - -funspecifiers( - int func_id: @function ref, - int spec_id: @specifier ref -); - -varspecifiers( - int var_id: @accessible ref, - int spec_id: @specifier ref -); - -explicit_specifier_exprs( - unique int func_id: @function ref, - int constant: @expr ref -) - -attributes( - unique int id: @attribute, - int kind: int ref, - string name: string ref, - string name_space: string ref, - int location: @location_default ref -); - -case @attribute.kind of - 0 = @gnuattribute -| 1 = @stdattribute -| 2 = @declspec -| 3 = @msattribute -| 4 = @alignas -// ... 5 @objc_propertyattribute deprecated -; - -attribute_args( - unique int id: @attribute_arg, - int kind: int ref, - int attribute: @attribute ref, - int index: int ref, - int location: @location_default ref -); - -case @attribute_arg.kind of - 0 = @attribute_arg_empty -| 1 = @attribute_arg_token -| 2 = @attribute_arg_constant -| 3 = @attribute_arg_type -| 4 = @attribute_arg_constant_expr -| 5 = @attribute_arg_expr -; - -attribute_arg_value( - unique int arg: @attribute_arg ref, - string value: string ref -); -attribute_arg_type( - unique int arg: @attribute_arg ref, - int type_id: @type ref -); -attribute_arg_constant( - unique int arg: @attribute_arg ref, - int constant: @expr ref -) -attribute_arg_expr( - unique int arg: @attribute_arg ref, - int expr: @expr ref -) -attribute_arg_name( - unique int arg: @attribute_arg ref, - string name: string ref -); - -typeattributes( - int type_id: @type ref, - int spec_id: @attribute ref -); - -funcattributes( - int func_id: @function ref, - int spec_id: @attribute ref -); - -varattributes( - int var_id: @accessible ref, - int spec_id: @attribute ref -); - -stmtattributes( - int stmt_id: @stmt ref, - int spec_id: @attribute ref -); - -@type = @builtintype - | @derivedtype - | @usertype - /* TODO | @fixedpointtype */ - | @routinetype - | @ptrtomember - | @decltype; - -unspecifiedtype( - unique int type_id: @type ref, - int unspecified_type_id: @type ref -); - -member( - int parent: @type ref, - int index: int ref, - int child: @member ref -); - -@enclosingfunction_child = @usertype | @variable | @namespace - -enclosingfunction( - unique int child: @enclosingfunction_child ref, - int parent: @function ref -); - -derivations( - unique int derivation: @derivation, - int sub: @type ref, - int index: int ref, - int super: @type ref, - int location: @location_default ref -); - -derspecifiers( - int der_id: @derivation ref, - int spec_id: @specifier ref -); - -/** - * Contains the byte offset of the base class subobject within the derived - * class. Only holds for non-virtual base classes, but see table - * `virtual_base_offsets` for offsets of virtual base class subobjects. - */ -direct_base_offsets( - unique int der_id: @derivation ref, - int offset: int ref -); - -/** - * Contains the byte offset of the virtual base class subobject for class - * `super` within a most-derived object of class `sub`. `super` can be either a - * direct or indirect base class. - */ -#keyset[sub, super] -virtual_base_offsets( - int sub: @usertype ref, - int super: @usertype ref, - int offset: int ref -); - -frienddecls( - unique int id: @frienddecl, - int type_id: @type ref, - int decl_id: @declaration ref, - int location: @location_default ref -); - -@declaredtype = @usertype ; - -@declaration = @function - | @declaredtype - | @variable - | @enumconstant - | @frienddecl; - -@member = @membervariable - | @function - | @declaredtype - | @enumconstant; - -@locatable = @diagnostic - | @declaration - | @ppd_include - | @ppd_define - | @macroinvocation - /*| @funcall*/ - | @xmllocatable - | @attribute - | @attribute_arg; - -@namedscope = @namespace | @usertype; - -@element = @locatable - | @file - | @folder - | @specifier - | @type - | @expr - | @namespace - | @initialiser - | @stmt - | @derivation - | @comment - | @preprocdirect - | @fun_decl - | @var_decl - | @type_decl - | @namespace_decl - | @using - | @namequalifier - | @specialnamequalifyingelement - | @static_assert - | @type_mention - | @lambdacapture; - -@exprparent = @element; - -comments( - unique int id: @comment, - string contents: string ref, - int location: @location_default ref -); - -commentbinding( - int id: @comment ref, - int element: @element ref -); - -exprconv( - int converted: @expr ref, - unique int conversion: @expr ref -); - -compgenerated(unique int id: @element ref); - -/** - * `destructor_call` destructs the `i`'th entity that should be - * destructed following `element`. Note that entities should be - * destructed in reverse construction order, so for a given `element` - * these should be called from highest to lowest `i`. - */ -#keyset[element, destructor_call] -#keyset[element, i] -synthetic_destructor_call( - int element: @element ref, - int i: int ref, - int destructor_call: @routineexpr ref -); - -namespaces( - unique int id: @namespace, - string name: string ref -); - -namespace_inline( - unique int id: @namespace ref -); - -namespacembrs( - int parentid: @namespace ref, - unique int memberid: @namespacembr ref -); - -@namespacembr = @declaration | @namespace; - -exprparents( - int expr_id: @expr ref, - int child_index: int ref, - int parent_id: @exprparent ref -); - -expr_isload(unique int expr_id: @expr ref); - -@cast = @c_style_cast - | @const_cast - | @dynamic_cast - | @reinterpret_cast - | @static_cast - ; - -/* -case @conversion.kind of - 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast -| 1 = @bool_conversion // conversion to 'bool' -| 2 = @base_class_conversion // a derived-to-base conversion -| 3 = @derived_class_conversion // a base-to-derived conversion -| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member -| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member -| 6 = @glvalue_adjust // an adjustment of the type of a glvalue -| 7 = @prvalue_adjust // an adjustment of the type of a prvalue -; -*/ -/** - * Describes the semantics represented by a cast expression. This is largely - * independent of the source syntax of the cast, so it is separate from the - * regular expression kind. - */ -conversionkinds( - unique int expr_id: @cast ref, - int kind: int ref -); - -@conversion = @cast - | @array_to_pointer - | @parexpr - | @reference_to - | @ref_indirect - | @temp_init - | @c11_generic - ; - -/* -case @funbindexpr.kind of - 0 = @normal_call // a normal call -| 1 = @virtual_call // a virtual call -| 2 = @adl_call // a call whose target is only found by ADL -; -*/ -iscall( - unique int caller: @funbindexpr ref, - int kind: int ref -); - -numtemplatearguments( - unique int expr_id: @expr ref, - int num: int ref -); - -specialnamequalifyingelements( - unique int id: @specialnamequalifyingelement, - unique string name: string ref -); - -@namequalifiableelement = @expr | @namequalifier; -@namequalifyingelement = @namespace - | @specialnamequalifyingelement - | @usertype; - -namequalifiers( - unique int id: @namequalifier, - unique int qualifiableelement: @namequalifiableelement ref, - int qualifyingelement: @namequalifyingelement ref, - int location: @location_default ref -); - -varbind( - int expr: @varbindexpr ref, - int var: @accessible ref -); - -funbind( - int expr: @funbindexpr ref, - int fun: @function ref -); - -@any_new_expr = @new_expr - | @new_array_expr; - -@new_or_delete_expr = @any_new_expr - | @delete_expr - | @delete_array_expr; - -@prefix_crement_expr = @preincrexpr | @predecrexpr; - -@postfix_crement_expr = @postincrexpr | @postdecrexpr; - -@increment_expr = @preincrexpr | @postincrexpr; - -@decrement_expr = @predecrexpr | @postdecrexpr; - -@crement_expr = @increment_expr | @decrement_expr; - -@un_arith_op_expr = @arithnegexpr - | @unaryplusexpr - | @conjugation - | @realpartexpr - | @imagpartexpr - | @crement_expr - ; - -@un_bitwise_op_expr = @complementexpr; - -@un_log_op_expr = @notexpr; - -@un_op_expr = @address_of - | @indirect - | @un_arith_op_expr - | @un_bitwise_op_expr - | @builtinaddressof - | @vec_fill - | @un_log_op_expr - | @co_await - | @co_yield - ; - -@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; - -@cmp_op_expr = @eq_op_expr | @rel_op_expr; - -@eq_op_expr = @eqexpr | @neexpr; - -@rel_op_expr = @gtexpr - | @ltexpr - | @geexpr - | @leexpr - | @spaceshipexpr - ; - -@bin_bitwise_op_expr = @lshiftexpr - | @rshiftexpr - | @andexpr - | @orexpr - | @xorexpr - ; - -@p_arith_op_expr = @paddexpr - | @psubexpr - | @pdiffexpr - ; - -@bin_arith_op_expr = @addexpr - | @subexpr - | @mulexpr - | @divexpr - | @remexpr - | @jmulexpr - | @jdivexpr - | @fjaddexpr - | @jfaddexpr - | @fjsubexpr - | @jfsubexpr - | @minexpr - | @maxexpr - | @p_arith_op_expr - ; - -@bin_op_expr = @bin_arith_op_expr - | @bin_bitwise_op_expr - | @cmp_op_expr - | @bin_log_op_expr - ; - -@op_expr = @un_op_expr - | @bin_op_expr - | @assign_expr - | @conditionalexpr - ; - -@assign_arith_expr = @assignaddexpr - | @assignsubexpr - | @assignmulexpr - | @assigndivexpr - | @assignremexpr - ; - -@assign_bitwise_expr = @assignandexpr - | @assignorexpr - | @assignxorexpr - | @assignlshiftexpr - | @assignrshiftexpr - ; - -@assign_pointer_expr = @assignpaddexpr - | @assignpsubexpr - ; - -@assign_op_expr = @assign_arith_expr - | @assign_bitwise_expr - | @assign_pointer_expr - ; - -@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr - -/* - Binary encoding of the allocator form. - - case @allocator.form of - 0 = plain - | 1 = alignment - ; -*/ - -/** - * The allocator function associated with a `new` or `new[]` expression. - * The `form` column specified whether the allocation call contains an alignment - * argument. - */ -expr_allocator( - unique int expr: @any_new_expr ref, - int func: @function ref, - int form: int ref -); - -/* - Binary encoding of the deallocator form. - - case @deallocator.form of - 0 = plain - | 1 = size - | 2 = alignment - | 4 = destroying_delete - ; -*/ - -/** - * The deallocator function associated with a `delete`, `delete[]`, `new`, or - * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the - * one used to free memory if the initialization throws an exception. - * The `form` column specifies whether the deallocation call contains a size - * argument, and alignment argument, or both. - */ -expr_deallocator( - unique int expr: @new_or_delete_expr ref, - int func: @function ref, - int form: int ref -); - -/** - * Holds if the `@conditionalexpr` is of the two operand form - * `guard ? : false`. - */ -expr_cond_two_operand( - unique int cond: @conditionalexpr ref -); - -/** - * The guard of `@conditionalexpr` `guard ? true : false` - */ -expr_cond_guard( - unique int cond: @conditionalexpr ref, - int guard: @expr ref -); - -/** - * The expression used when the guard of `@conditionalexpr` - * `guard ? true : false` holds. For the two operand form - * `guard ?: false` consider using `expr_cond_guard` instead. - */ -expr_cond_true( - unique int cond: @conditionalexpr ref, - int true: @expr ref -); - -/** - * The expression used when the guard of `@conditionalexpr` - * `guard ? true : false` does not hold. - */ -expr_cond_false( - unique int cond: @conditionalexpr ref, - int false: @expr ref -); - -/** A string representation of the value. */ -values( - unique int id: @value, - string str: string ref -); - -/** The actual text in the source code for the value, if any. */ -valuetext( - unique int id: @value ref, - string text: string ref -); - -valuebind( - int val: @value ref, - unique int expr: @expr ref -); - -fieldoffsets( - unique int id: @variable ref, - int byteoffset: int ref, - int bitoffset: int ref -); - -bitfield( - unique int id: @variable ref, - int bits: int ref, - int declared_bits: int ref -); - -/* TODO -memberprefix( - int member: @expr ref, - int prefix: @expr ref -); -*/ - -/* - kind(1) = mbrcallexpr - kind(2) = mbrptrcallexpr - kind(3) = mbrptrmbrcallexpr - kind(4) = ptrmbrptrmbrcallexpr - kind(5) = mbrreadexpr // x.y - kind(6) = mbrptrreadexpr // p->y - kind(7) = mbrptrmbrreadexpr // x.*pm - kind(8) = mbrptrmbrptrreadexpr // x->*pm - kind(9) = staticmbrreadexpr // static x.y - kind(10) = staticmbrptrreadexpr // static p->y -*/ -/* TODO -memberaccess( - int member: @expr ref, - int kind: int ref -); -*/ - -initialisers( - unique int init: @initialiser, - int var: @accessible ref, - unique int expr: @expr ref, - int location: @location_expr ref -); - -braced_initialisers( - int init: @initialiser ref -); - -/** - * An ancestor for the expression, for cases in which we cannot - * otherwise find the expression's parent. - */ -expr_ancestor( - int exp: @expr ref, - int ancestor: @element ref -); - -exprs( - unique int id: @expr, - int kind: int ref, - int location: @location_expr ref -); - -expr_reuse( - int reuse: @expr ref, - int original: @expr ref, - int value_category: int ref -) - -/* - case @value.category of - 1 = prval - | 2 = xval - | 3 = lval - ; -*/ -expr_types( - int id: @expr ref, - int typeid: @type ref, - int value_category: int ref -); - -case @expr.kind of - 1 = @errorexpr -| 2 = @address_of // & AddressOfExpr -| 3 = @reference_to // ReferenceToExpr (implicit?) -| 4 = @indirect // * PointerDereferenceExpr -| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) -// ... -| 8 = @array_to_pointer // (???) -| 9 = @vacuous_destructor_call // VacuousDestructorCall -// ... -| 11 = @assume // Microsoft -| 12 = @parexpr -| 13 = @arithnegexpr -| 14 = @unaryplusexpr -| 15 = @complementexpr -| 16 = @notexpr -| 17 = @conjugation // GNU ~ operator -| 18 = @realpartexpr // GNU __real -| 19 = @imagpartexpr // GNU __imag -| 20 = @postincrexpr -| 21 = @postdecrexpr -| 22 = @preincrexpr -| 23 = @predecrexpr -| 24 = @conditionalexpr -| 25 = @addexpr -| 26 = @subexpr -| 27 = @mulexpr -| 28 = @divexpr -| 29 = @remexpr -| 30 = @jmulexpr // C99 mul imaginary -| 31 = @jdivexpr // C99 div imaginary -| 32 = @fjaddexpr // C99 add real + imaginary -| 33 = @jfaddexpr // C99 add imaginary + real -| 34 = @fjsubexpr // C99 sub real - imaginary -| 35 = @jfsubexpr // C99 sub imaginary - real -| 36 = @paddexpr // pointer add (pointer + int or int + pointer) -| 37 = @psubexpr // pointer sub (pointer - integer) -| 38 = @pdiffexpr // difference between two pointers -| 39 = @lshiftexpr -| 40 = @rshiftexpr -| 41 = @andexpr -| 42 = @orexpr -| 43 = @xorexpr -| 44 = @eqexpr -| 45 = @neexpr -| 46 = @gtexpr -| 47 = @ltexpr -| 48 = @geexpr -| 49 = @leexpr -| 50 = @minexpr // GNU minimum -| 51 = @maxexpr // GNU maximum -| 52 = @assignexpr -| 53 = @assignaddexpr -| 54 = @assignsubexpr -| 55 = @assignmulexpr -| 56 = @assigndivexpr -| 57 = @assignremexpr -| 58 = @assignlshiftexpr -| 59 = @assignrshiftexpr -| 60 = @assignandexpr -| 61 = @assignorexpr -| 62 = @assignxorexpr -| 63 = @assignpaddexpr // assign pointer add -| 64 = @assignpsubexpr // assign pointer sub -| 65 = @andlogicalexpr -| 66 = @orlogicalexpr -| 67 = @commaexpr -| 68 = @subscriptexpr // access to member of an array, e.g., a[5] -// ... 69 @objc_subscriptexpr deprecated -// ... 70 @cmdaccess deprecated -// ... -| 73 = @virtfunptrexpr -| 74 = @callexpr -// ... 75 @msgexpr_normal deprecated -// ... 76 @msgexpr_super deprecated -// ... 77 @atselectorexpr deprecated -// ... 78 @atprotocolexpr deprecated -| 79 = @vastartexpr -| 80 = @vaargexpr -| 81 = @vaendexpr -| 82 = @vacopyexpr -// ... 83 @atencodeexpr deprecated -| 84 = @varaccess -| 85 = @thisaccess -// ... 86 @objc_box_expr deprecated -| 87 = @new_expr -| 88 = @delete_expr -| 89 = @throw_expr -| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) -| 91 = @braced_init_list -| 92 = @type_id -| 93 = @runtime_sizeof -| 94 = @runtime_alignof -| 95 = @sizeof_pack -| 96 = @expr_stmt // GNU extension -| 97 = @routineexpr -| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) -| 99 = @offsetofexpr // offsetof ::= type and field -| 100 = @hasassignexpr // __has_assign ::= type -| 101 = @hascopyexpr // __has_copy ::= type -| 102 = @hasnothrowassign // __has_nothrow_assign ::= type -| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type -| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type -| 105 = @hastrivialassign // __has_trivial_assign ::= type -| 106 = @hastrivialconstr // __has_trivial_constructor ::= type -| 107 = @hastrivialcopy // __has_trivial_copy ::= type -| 108 = @hasuserdestr // __has_user_destructor ::= type -| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type -| 110 = @isabstractexpr // __is_abstract ::= type -| 111 = @isbaseofexpr // __is_base_of ::= type type -| 112 = @isclassexpr // __is_class ::= type -| 113 = @isconvtoexpr // __is_convertible_to ::= type type -| 114 = @isemptyexpr // __is_empty ::= type -| 115 = @isenumexpr // __is_enum ::= type -| 116 = @ispodexpr // __is_pod ::= type -| 117 = @ispolyexpr // __is_polymorphic ::= type -| 118 = @isunionexpr // __is_union ::= type -| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type -| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof -// ... -| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type -| 123 = @literal -| 124 = @uuidof -| 127 = @aggregateliteral -| 128 = @delete_array_expr -| 129 = @new_array_expr -// ... 130 @objc_array_literal deprecated -// ... 131 @objc_dictionary_literal deprecated -| 132 = @foldexpr -// ... -| 200 = @ctordirectinit -| 201 = @ctorvirtualinit -| 202 = @ctorfieldinit -| 203 = @ctordelegatinginit -| 204 = @dtordirectdestruct -| 205 = @dtorvirtualdestruct -| 206 = @dtorfielddestruct -// ... -| 210 = @static_cast -| 211 = @reinterpret_cast -| 212 = @const_cast -| 213 = @dynamic_cast -| 214 = @c_style_cast -| 215 = @lambdaexpr -| 216 = @param_ref -| 217 = @noopexpr -// ... -| 294 = @istriviallyconstructibleexpr -| 295 = @isdestructibleexpr -| 296 = @isnothrowdestructibleexpr -| 297 = @istriviallydestructibleexpr -| 298 = @istriviallyassignableexpr -| 299 = @isnothrowassignableexpr -| 300 = @istrivialexpr -| 301 = @isstandardlayoutexpr -| 302 = @istriviallycopyableexpr -| 303 = @isliteraltypeexpr -| 304 = @hastrivialmoveconstructorexpr -| 305 = @hastrivialmoveassignexpr -| 306 = @hasnothrowmoveassignexpr -| 307 = @isconstructibleexpr -| 308 = @isnothrowconstructibleexpr -| 309 = @hasfinalizerexpr -| 310 = @isdelegateexpr -| 311 = @isinterfaceclassexpr -| 312 = @isrefarrayexpr -| 313 = @isrefclassexpr -| 314 = @issealedexpr -| 315 = @issimplevalueclassexpr -| 316 = @isvalueclassexpr -| 317 = @isfinalexpr -| 319 = @noexceptexpr -| 320 = @builtinshufflevector -| 321 = @builtinchooseexpr -| 322 = @builtinaddressof -| 323 = @vec_fill -| 324 = @builtinconvertvector -| 325 = @builtincomplex -| 326 = @spaceshipexpr -| 327 = @co_await -| 328 = @co_yield -| 329 = @temp_init -| 330 = @isassignable -| 331 = @isaggregate -| 332 = @hasuniqueobjectrepresentations -| 333 = @builtinbitcast -| 334 = @builtinshuffle -| 335 = @blockassignexpr -| 336 = @issame -| 337 = @isfunction -| 338 = @islayoutcompatible -| 339 = @ispointerinterconvertiblebaseof -| 340 = @isarray -| 341 = @arrayrank -| 342 = @arrayextent -| 343 = @isarithmetic -| 344 = @iscompletetype -| 345 = @iscompound -| 346 = @isconst -| 347 = @isfloatingpoint -| 348 = @isfundamental -| 349 = @isintegral -| 350 = @islvaluereference -| 351 = @ismemberfunctionpointer -| 352 = @ismemberobjectpointer -| 353 = @ismemberpointer -| 354 = @isobject -| 355 = @ispointer -| 356 = @isreference -| 357 = @isrvaluereference -| 358 = @isscalar -| 359 = @issigned -| 360 = @isunsigned -| 361 = @isvoid -| 362 = @isvolatile -| 363 = @reuseexpr -| 364 = @istriviallycopyassignable -| 365 = @isassignablenopreconditioncheck -| 366 = @referencebindstotemporary -| 367 = @issameas -| 368 = @builtinhasattribute -| 369 = @ispointerinterconvertiblewithclass -| 370 = @builtinispointerinterconvertiblewithclass -| 371 = @iscorrespondingmember -| 372 = @builtiniscorrespondingmember -| 373 = @isboundedarray -| 374 = @isunboundedarray -| 375 = @isreferenceable -| 378 = @isnothrowconvertible -| 379 = @referenceconstructsfromtemporary -| 380 = @referenceconvertsfromtemporary -| 381 = @isconvertible -| 382 = @isvalidwinrttype -| 383 = @iswinclass -| 384 = @iswininterface -| 385 = @istriviallyequalitycomparable -| 386 = @isscopedenum -| 387 = @istriviallyrelocatable -| 388 = @datasizeof -| 389 = @c11_generic -| 390 = @requires_expr -| 391 = @nested_requirement -| 392 = @compound_requirement -| 393 = @concept_id -; - -@var_args_expr = @vastartexpr - | @vaendexpr - | @vaargexpr - | @vacopyexpr - ; - -@builtin_op = @var_args_expr - | @noopexpr - | @offsetofexpr - | @intaddrexpr - | @hasassignexpr - | @hascopyexpr - | @hasnothrowassign - | @hasnothrowconstr - | @hasnothrowcopy - | @hastrivialassign - | @hastrivialconstr - | @hastrivialcopy - | @hastrivialdestructor - | @hasuserdestr - | @hasvirtualdestr - | @isabstractexpr - | @isbaseofexpr - | @isclassexpr - | @isconvtoexpr - | @isemptyexpr - | @isenumexpr - | @ispodexpr - | @ispolyexpr - | @isunionexpr - | @typescompexpr - | @builtinshufflevector - | @builtinconvertvector - | @builtinaddressof - | @istriviallyconstructibleexpr - | @isdestructibleexpr - | @isnothrowdestructibleexpr - | @istriviallydestructibleexpr - | @istriviallyassignableexpr - | @isnothrowassignableexpr - | @istrivialexpr - | @isstandardlayoutexpr - | @istriviallycopyableexpr - | @isliteraltypeexpr - | @hastrivialmoveconstructorexpr - | @hastrivialmoveassignexpr - | @hasnothrowmoveassignexpr - | @isconstructibleexpr - | @isnothrowconstructibleexpr - | @hasfinalizerexpr - | @isdelegateexpr - | @isinterfaceclassexpr - | @isrefarrayexpr - | @isrefclassexpr - | @issealedexpr - | @issimplevalueclassexpr - | @isvalueclassexpr - | @isfinalexpr - | @builtinchooseexpr - | @builtincomplex - | @isassignable - | @isaggregate - | @hasuniqueobjectrepresentations - | @builtinbitcast - | @builtinshuffle - | @issame - | @isfunction - | @islayoutcompatible - | @ispointerinterconvertiblebaseof - | @isarray - | @arrayrank - | @arrayextent - | @isarithmetic - | @iscompletetype - | @iscompound - | @isconst - | @isfloatingpoint - | @isfundamental - | @isintegral - | @islvaluereference - | @ismemberfunctionpointer - | @ismemberobjectpointer - | @ismemberpointer - | @isobject - | @ispointer - | @isreference - | @isrvaluereference - | @isscalar - | @issigned - | @isunsigned - | @isvoid - | @isvolatile - | @istriviallycopyassignable - | @isassignablenopreconditioncheck - | @referencebindstotemporary - | @issameas - | @builtinhasattribute - | @ispointerinterconvertiblewithclass - | @builtinispointerinterconvertiblewithclass - | @iscorrespondingmember - | @builtiniscorrespondingmember - | @isboundedarray - | @isunboundedarray - | @isreferenceable - | @isnothrowconvertible - | @referenceconstructsfromtemporary - | @referenceconvertsfromtemporary - | @isconvertible - | @isvalidwinrttype - | @iswinclass - | @iswininterface - | @istriviallyequalitycomparable - | @isscopedenum - | @istriviallyrelocatable - ; - -compound_requirement_is_noexcept( - int expr: @compound_requirement ref -); - -new_allocated_type( - unique int expr: @new_expr ref, - int type_id: @type ref -); - -new_array_allocated_type( - unique int expr: @new_array_expr ref, - int type_id: @type ref -); - -/** - * The field being initialized by an initializer expression within an aggregate - * initializer for a class/struct/union. Position is used to sort repeated initializers. - */ -#keyset[aggregate, position] -aggregate_field_init( - int aggregate: @aggregateliteral ref, - int initializer: @expr ref, - int field: @membervariable ref, - int position: int ref -); - -/** - * The index of the element being initialized by an initializer expression - * within an aggregate initializer for an array. Position is used to sort repeated initializers. - */ -#keyset[aggregate, position] -aggregate_array_init( - int aggregate: @aggregateliteral ref, - int initializer: @expr ref, - int element_index: int ref, - int position: int ref -); - -@ctorinit = @ctordirectinit - | @ctorvirtualinit - | @ctorfieldinit - | @ctordelegatinginit; -@dtordestruct = @dtordirectdestruct - | @dtorvirtualdestruct - | @dtorfielddestruct; - - -condition_decl_bind( - unique int expr: @condition_decl ref, - unique int decl: @declaration ref -); - -typeid_bind( - unique int expr: @type_id ref, - int type_id: @type ref -); - -uuidof_bind( - unique int expr: @uuidof ref, - int type_id: @type ref -); - -@runtime_sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof; - -sizeof_bind( - unique int expr: @runtime_sizeof_or_alignof ref, - int type_id: @type ref -); - -code_block( - unique int block: @literal ref, - unique int routine: @function ref -); - -lambdas( - unique int expr: @lambdaexpr ref, - string default_capture: string ref, - boolean has_explicit_return_type: boolean ref -); - -lambda_capture( - unique int id: @lambdacapture, - int lambda: @lambdaexpr ref, - int index: int ref, - int field: @membervariable ref, - boolean captured_by_reference: boolean ref, - boolean is_implicit: boolean ref, - int location: @location_default ref -); - -@funbindexpr = @routineexpr - | @new_expr - | @delete_expr - | @delete_array_expr - | @ctordirectinit - | @ctorvirtualinit - | @ctordelegatinginit - | @dtordirectdestruct - | @dtorvirtualdestruct; - -@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; -@addressable = @function | @variable ; -@accessible = @addressable | @enumconstant ; - -@access = @varaccess | @routineexpr ; - -fold( - int expr: @foldexpr ref, - string operator: string ref, - boolean is_left_fold: boolean ref -); - -stmts( - unique int id: @stmt, - int kind: int ref, - int location: @location_stmt ref -); - -case @stmt.kind of - 1 = @stmt_expr -| 2 = @stmt_if -| 3 = @stmt_while -| 4 = @stmt_goto -| 5 = @stmt_label -| 6 = @stmt_return -| 7 = @stmt_block -| 8 = @stmt_end_test_while // do { ... } while ( ... ) -| 9 = @stmt_for -| 10 = @stmt_switch_case -| 11 = @stmt_switch -| 13 = @stmt_asm // "asm" statement or the body of an asm function -| 15 = @stmt_try_block -| 16 = @stmt_microsoft_try // Microsoft -| 17 = @stmt_decl -| 18 = @stmt_set_vla_size // C99 -| 19 = @stmt_vla_decl // C99 -| 25 = @stmt_assigned_goto // GNU -| 26 = @stmt_empty -| 27 = @stmt_continue -| 28 = @stmt_break -| 29 = @stmt_range_based_for // C++11 -// ... 30 @stmt_at_autoreleasepool_block deprecated -// ... 31 @stmt_objc_for_in deprecated -// ... 32 @stmt_at_synchronized deprecated -| 33 = @stmt_handler -// ... 34 @stmt_finally_end deprecated -| 35 = @stmt_constexpr_if -| 37 = @stmt_co_return -; - -type_vla( - int type_id: @type ref, - int decl: @stmt_vla_decl ref -); - -variable_vla( - int var: @variable ref, - int decl: @stmt_vla_decl ref -); - -if_initialization( - unique int if_stmt: @stmt_if ref, - int init_id: @stmt ref -); - -if_then( - unique int if_stmt: @stmt_if ref, - int then_id: @stmt ref -); - -if_else( - unique int if_stmt: @stmt_if ref, - int else_id: @stmt ref -); - -constexpr_if_initialization( - unique int constexpr_if_stmt: @stmt_constexpr_if ref, - int init_id: @stmt ref -); - -constexpr_if_then( - unique int constexpr_if_stmt: @stmt_constexpr_if ref, - int then_id: @stmt ref -); - -constexpr_if_else( - unique int constexpr_if_stmt: @stmt_constexpr_if ref, - int else_id: @stmt ref -); - -while_body( - unique int while_stmt: @stmt_while ref, - int body_id: @stmt ref -); - -do_body( - unique int do_stmt: @stmt_end_test_while ref, - int body_id: @stmt ref -); - -switch_initialization( - unique int switch_stmt: @stmt_switch ref, - int init_id: @stmt ref -); - -#keyset[switch_stmt, index] -switch_case( - int switch_stmt: @stmt_switch ref, - int index: int ref, - int case_id: @stmt_switch_case ref -); - -switch_body( - unique int switch_stmt: @stmt_switch ref, - int body_id: @stmt ref -); - -@stmt_for_or_range_based_for = @stmt_for - | @stmt_range_based_for; - -for_initialization( - unique int for_stmt: @stmt_for_or_range_based_for ref, - int init_id: @stmt ref -); - -for_condition( - unique int for_stmt: @stmt_for ref, - int condition_id: @expr ref -); - -for_update( - unique int for_stmt: @stmt_for ref, - int update_id: @expr ref -); - -for_body( - unique int for_stmt: @stmt_for ref, - int body_id: @stmt ref -); - -@stmtparent = @stmt | @expr_stmt ; -stmtparents( - unique int id: @stmt ref, - int index: int ref, - int parent: @stmtparent ref -); - -ishandler(unique int block: @stmt_block ref); - -@cfgnode = @stmt | @expr | @function | @initialiser ; - -stmt_decl_bind( - int stmt: @stmt_decl ref, - int num: int ref, - int decl: @declaration ref -); - -stmt_decl_entry_bind( - int stmt: @stmt_decl ref, - int num: int ref, - int decl_entry: @element ref -); - -@parameterized_element = @function | @stmt_block | @requires_expr; - -blockscope( - unique int block: @stmt_block ref, - int enclosing: @parameterized_element ref -); - -@jump = @stmt_goto | @stmt_break | @stmt_continue; - -@jumporlabel = @jump | @stmt_label | @literal; - -jumpinfo( - unique int id: @jumporlabel ref, - string str: string ref, - int target: @stmt ref -); - -preprocdirects( - unique int id: @preprocdirect, - int kind: int ref, - int location: @location_default ref -); -case @preprocdirect.kind of - 0 = @ppd_if -| 1 = @ppd_ifdef -| 2 = @ppd_ifndef -| 3 = @ppd_elif -| 4 = @ppd_else -| 5 = @ppd_endif -| 6 = @ppd_plain_include -| 7 = @ppd_define -| 8 = @ppd_undef -| 9 = @ppd_line -| 10 = @ppd_error -| 11 = @ppd_pragma -| 12 = @ppd_objc_import -| 13 = @ppd_include_next -| 18 = @ppd_warning -; - -@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next; - -@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif; - -preprocpair( - int begin : @ppd_branch ref, - int elseelifend : @preprocdirect ref -); - -preproctrue(int branch : @ppd_branch ref); -preprocfalse(int branch : @ppd_branch ref); - -preproctext( - unique int id: @preprocdirect ref, - string head: string ref, - string body: string ref -); - -includes( - unique int id: @ppd_include ref, - int included: @file ref -); - -link_targets( - int id: @link_target, - int binary: @file ref -); - -link_parent( - int element : @element ref, - int link_target : @link_target ref -); - -/* XML Files */ - -xmlEncoding(unique int id: @file ref, string encoding: string ref); - -xmlDTDs( - unique int id: @xmldtd, - string root: string ref, - string publicId: string ref, - string systemId: string ref, - int fileid: @file ref -); - -xmlElements( - unique int id: @xmlelement, - string name: string ref, - int parentid: @xmlparent ref, - int idx: int ref, - int fileid: @file ref -); - -xmlAttrs( - unique int id: @xmlattribute, - int elementid: @xmlelement ref, - string name: string ref, - string value: string ref, - int idx: int ref, - int fileid: @file ref -); - -xmlNs( - int id: @xmlnamespace, - string prefixName: string ref, - string URI: string ref, - int fileid: @file ref -); - -xmlHasNs( - int elementId: @xmlnamespaceable ref, - int nsId: @xmlnamespace ref, - int fileid: @file ref -); - -xmlComments( - unique int id: @xmlcomment, - string text: string ref, - int parentid: @xmlparent ref, - int fileid: @file ref -); - -xmlChars( - unique int id: @xmlcharacters, - string text: string ref, - int parentid: @xmlparent ref, - int idx: int ref, - int isCDATA: int ref, - int fileid: @file ref -); - -@xmlparent = @file | @xmlelement; -@xmlnamespaceable = @xmlelement | @xmlattribute; - -xmllocations( - int xmlElement: @xmllocatable ref, - int location: @location_default ref -); - -@xmllocatable = @xmlcharacters - | @xmlelement - | @xmlcomment - | @xmlattribute - | @xmldtd - | @file - | @xmlnamespace; diff --git a/cpp/ql/lib/upgrades/e51fad7a2436caefab0c6bd52f05e28e7cce4d92/semmlecode.cpp.dbscheme b/cpp/ql/lib/upgrades/e51fad7a2436caefab0c6bd52f05e28e7cce4d92/semmlecode.cpp.dbscheme deleted file mode 100644 index f0156f5f88ab..000000000000 --- a/cpp/ql/lib/upgrades/e51fad7a2436caefab0c6bd52f05e28e7cce4d92/semmlecode.cpp.dbscheme +++ /dev/null @@ -1,2339 +0,0 @@ - -/** - * An invocation of the compiler. Note that more than one file may be - * compiled per invocation. For example, this command compiles three - * source files: - * - * gcc -c f1.c f2.c f3.c - * - * The `id` simply identifies the invocation, while `cwd` is the working - * directory from which the compiler was invoked. - */ -compilations( - /** - * An invocation of the compiler. Note that more than one file may - * be compiled per invocation. For example, this command compiles - * three source files: - * - * gcc -c f1.c f2.c f3.c - */ - unique int id : @compilation, - string cwd : string ref -); - -/** - * The arguments that were passed to the extractor for a compiler - * invocation. If `id` is for the compiler invocation - * - * gcc -c f1.c f2.c f3.c - * - * then typically there will be rows for - * - * num | arg - * --- | --- - * 0 | *path to extractor* - * 1 | `--mimic` - * 2 | `/usr/bin/gcc` - * 3 | `-c` - * 4 | f1.c - * 5 | f2.c - * 6 | f3.c - */ -#keyset[id, num] -compilation_args( - int id : @compilation ref, - int num : int ref, - string arg : string ref -); - -/** - * Optionally, record the build mode for each compilation. - */ -compilation_build_mode( - unique int id : @compilation ref, - int mode : int ref -); - -/* -case @compilation_build_mode.mode of - 0 = @build_mode_none -| 1 = @build_mode_manual -| 2 = @build_mode_auto -; -*/ - -/** - * The source files that are compiled by a compiler invocation. - * If `id` is for the compiler invocation - * - * gcc -c f1.c f2.c f3.c - * - * then there will be rows for - * - * num | arg - * --- | --- - * 0 | f1.c - * 1 | f2.c - * 2 | f3.c - * - * Note that even if those files `#include` headers, those headers - * do not appear as rows. - */ -#keyset[id, num] -compilation_compiling_files( - int id : @compilation ref, - int num : int ref, - int file : @file ref -); - -/** - * The time taken by the extractor for a compiler invocation. - * - * For each file `num`, there will be rows for - * - * kind | seconds - * ---- | --- - * 1 | CPU seconds used by the extractor frontend - * 2 | Elapsed seconds during the extractor frontend - * 3 | CPU seconds used by the extractor backend - * 4 | Elapsed seconds during the extractor backend - */ -#keyset[id, num, kind] -compilation_time( - int id : @compilation ref, - int num : int ref, - /* kind: - 1 = frontend_cpu_seconds - 2 = frontend_elapsed_seconds - 3 = extractor_cpu_seconds - 4 = extractor_elapsed_seconds - */ - int kind : int ref, - float seconds : float ref -); - -/** - * An error or warning generated by the extractor. - * The diagnostic message `diagnostic` was generated during compiler - * invocation `compilation`, and is the `file_number_diagnostic_number`th - * message generated while extracting the `file_number`th file of that - * invocation. - */ -#keyset[compilation, file_number, file_number_diagnostic_number] -diagnostic_for( - int diagnostic : @diagnostic ref, - int compilation : @compilation ref, - int file_number : int ref, - int file_number_diagnostic_number : int ref -); - -/** - * If extraction was successful, then `cpu_seconds` and - * `elapsed_seconds` are the CPU time and elapsed time (respectively) - * that extraction took for compiler invocation `id`. - */ -compilation_finished( - unique int id : @compilation ref, - float cpu_seconds : float ref, - float elapsed_seconds : float ref -); - - -/** - * External data, loaded from CSV files during snapshot creation. See - * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data) - * for more information. - */ -externalData( - int id : @externalDataElement, - string path : string ref, - int column: int ref, - string value : string ref -); - -/** - * The source location of the snapshot. - */ -sourceLocationPrefix(string prefix : string ref); - -/** - * Information about packages that provide code used during compilation. - * The `id` is just a unique identifier. - * The `namespace` is typically the name of the package manager that - * provided the package (e.g. "dpkg" or "yum"). - * The `package_name` is the name of the package, and `version` is its - * version (as a string). - */ -external_packages( - unique int id: @external_package, - string namespace : string ref, - string package_name : string ref, - string version : string ref -); - -/** - * Holds if File `fileid` was provided by package `package`. - */ -header_to_external_package( - int fileid : @file ref, - int package : @external_package ref -); - -/* - * Version history - */ - -svnentries( - unique int id : @svnentry, - string revision : string ref, - string author : string ref, - date revisionDate : date ref, - int changeSize : int ref -) - -svnaffectedfiles( - int id : @svnentry ref, - int file : @file ref, - string action : string ref -) - -svnentrymsg( - unique int id : @svnentry ref, - string message : string ref -) - -svnchurn( - int commit : @svnentry ref, - int file : @file ref, - int addedLines : int ref, - int deletedLines : int ref -) - -/* - * C++ dbscheme - */ - -extractor_version( - string codeql_version: string ref, - string frontend_version: string ref -) - -@location = @location_stmt | @location_expr | @location_default ; - -/** - * The location of an element that is not an expression or a statement. - * The location spans column `startcolumn` of line `startline` to - * column `endcolumn` of line `endline` in file `file`. - * For more information, see - * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). - */ -locations_default( - /** The location of an element that is not an expression or a statement. */ - unique int id: @location_default, - int container: @container ref, - int startLine: int ref, - int startColumn: int ref, - int endLine: int ref, - int endColumn: int ref -); - -/** - * The location of a statement. - * The location spans column `startcolumn` of line `startline` to - * column `endcolumn` of line `endline` in file `file`. - * For more information, see - * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). - */ -locations_stmt( - /** The location of a statement. */ - unique int id: @location_stmt, - int container: @container ref, - int startLine: int ref, - int startColumn: int ref, - int endLine: int ref, - int endColumn: int ref -); - -/** - * The location of an expression. - * The location spans column `startcolumn` of line `startline` to - * column `endcolumn` of line `endline` in file `file`. - * For more information, see - * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). - */ -locations_expr( - /** The location of an expression. */ - unique int id: @location_expr, - int container: @container ref, - int startLine: int ref, - int startColumn: int ref, - int endLine: int ref, - int endColumn: int ref -); - -/** An element for which line-count information is available. */ -@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable; - -numlines( - int element_id: @sourceline ref, - int num_lines: int ref, - int num_code: int ref, - int num_comment: int ref -); - -diagnostics( - unique int id: @diagnostic, - int severity: int ref, - string error_tag: string ref, - string error_message: string ref, - string full_error_message: string ref, - int location: @location_default ref -); - -files( - unique int id: @file, - string name: string ref -); - -folders( - unique int id: @folder, - string name: string ref -); - -@container = @folder | @file - -containerparent( - int parent: @container ref, - unique int child: @container ref -); - -fileannotations( - int id: @file ref, - int kind: int ref, - string name: string ref, - string value: string ref -); - -inmacroexpansion( - int id: @element ref, - int inv: @macroinvocation ref -); - -affectedbymacroexpansion( - int id: @element ref, - int inv: @macroinvocation ref -); - -case @macroinvocation.kind of - 1 = @macro_expansion -| 2 = @other_macro_reference -; - -macroinvocations( - unique int id: @macroinvocation, - int macro_id: @ppd_define ref, - int location: @location_default ref, - int kind: int ref -); - -macroparent( - unique int id: @macroinvocation ref, - int parent_id: @macroinvocation ref -); - -// a macroinvocation may be part of another location -// the way to find a constant expression that uses a macro -// is thus to find a constant expression that has a location -// to which a macro invocation is bound -macrolocationbind( - int id: @macroinvocation ref, - int location: @location ref -); - -#keyset[invocation, argument_index] -macro_argument_unexpanded( - int invocation: @macroinvocation ref, - int argument_index: int ref, - string text: string ref -); - -#keyset[invocation, argument_index] -macro_argument_expanded( - int invocation: @macroinvocation ref, - int argument_index: int ref, - string text: string ref -); - -/* -case @function.kind of - 1 = @normal_function -| 2 = @constructor -| 3 = @destructor -| 4 = @conversion_function -| 5 = @operator -| 6 = @builtin_function // GCC built-in functions, e.g. __builtin___memcpy_chk -| 7 = @user_defined_literal -| 8 = @deduction_guide -; -*/ - -functions( - unique int id: @function, - string name: string ref, - int kind: int ref -); - -function_entry_point( - int id: @function ref, - unique int entry_point: @stmt ref -); - -function_return_type( - int id: @function ref, - int return_type: @type ref -); - -/** - * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits` - * instance associated with it, and the variables representing the `handle` and `promise` - * for it. - */ -coroutine( - unique int function: @function ref, - int traits: @type ref -); - -/* -case @coroutine_placeholder_variable.kind of - 1 = @handle -| 2 = @promise -| 3 = @init_await_resume -; -*/ - -coroutine_placeholder_variable( - unique int placeholder_variable: @variable ref, - int kind: int ref, - int function: @function ref -) - -/** The `new` function used for allocating the coroutine state, if any. */ -coroutine_new( - unique int function: @function ref, - int new: @function ref -); - -/** The `delete` function used for deallocating the coroutine state, if any. */ -coroutine_delete( - unique int function: @function ref, - int delete: @function ref -); - -purefunctions(unique int id: @function ref); - -function_deleted(unique int id: @function ref); - -function_defaulted(unique int id: @function ref); - -function_prototyped(unique int id: @function ref) - -deduction_guide_for_class( - int id: @function ref, - int class_template: @usertype ref -) - -member_function_this_type( - unique int id: @function ref, - int this_type: @type ref -); - -#keyset[id, type_id] -fun_decls( - int id: @fun_decl, - int function: @function ref, - int type_id: @type ref, - string name: string ref, - int location: @location_default ref -); -fun_def(unique int id: @fun_decl ref); -fun_specialized(unique int id: @fun_decl ref); -fun_implicit(unique int id: @fun_decl ref); -fun_decl_specifiers( - int id: @fun_decl ref, - string name: string ref -) -#keyset[fun_decl, index] -fun_decl_throws( - int fun_decl: @fun_decl ref, - int index: int ref, - int type_id: @type ref -); -/* an empty throw specification is different from none */ -fun_decl_empty_throws(unique int fun_decl: @fun_decl ref); -fun_decl_noexcept( - int fun_decl: @fun_decl ref, - int constant: @expr ref -); -fun_decl_empty_noexcept(int fun_decl: @fun_decl ref); -fun_decl_typedef_type( - unique int fun_decl: @fun_decl ref, - int typedeftype_id: @usertype ref -); - -param_decl_bind( - unique int id: @var_decl ref, - int index: int ref, - int fun_decl: @fun_decl ref -); - -#keyset[id, type_id] -var_decls( - int id: @var_decl, - int variable: @variable ref, - int type_id: @type ref, - string name: string ref, - int location: @location_default ref -); -var_def(unique int id: @var_decl ref); -var_decl_specifiers( - int id: @var_decl ref, - string name: string ref -) -is_structured_binding(unique int id: @variable ref); - -type_decls( - unique int id: @type_decl, - int type_id: @type ref, - int location: @location_default ref -); -type_def(unique int id: @type_decl ref); -type_decl_top( - unique int type_decl: @type_decl ref -); - -namespace_decls( - unique int id: @namespace_decl, - int namespace_id: @namespace ref, - int location: @location_default ref, - int bodylocation: @location_default ref -); - -case @using.kind of - 1 = @using_declaration -| 2 = @using_directive -| 3 = @using_enum_declaration -; - -usings( - unique int id: @using, - int element_id: @element ref, - int location: @location_default ref, - int kind: int ref -); - -/** The element which contains the `using` declaration. */ -using_container( - int parent: @element ref, - int child: @using ref -); - -static_asserts( - unique int id: @static_assert, - int condition : @expr ref, - string message : string ref, - int location: @location_default ref, - int enclosing : @element ref -); - -// each function has an ordered list of parameters -#keyset[id, type_id] -#keyset[function, index, type_id] -params( - int id: @parameter, - int function: @parameterized_element ref, - int index: int ref, - int type_id: @type ref -); - -overrides( - int new: @function ref, - int old: @function ref -); - -#keyset[id, type_id] -membervariables( - int id: @membervariable, - int type_id: @type ref, - string name: string ref -); - -#keyset[id, type_id] -globalvariables( - int id: @globalvariable, - int type_id: @type ref, - string name: string ref -); - -#keyset[id, type_id] -localvariables( - int id: @localvariable, - int type_id: @type ref, - string name: string ref -); - -autoderivation( - unique int var: @variable ref, - int derivation_type: @type ref -); - -orphaned_variables( - int var: @localvariable ref, - int function: @function ref -) - -enumconstants( - unique int id: @enumconstant, - int parent: @usertype ref, - int index: int ref, - int type_id: @type ref, - string name: string ref, - int location: @location_default ref -); - -@variable = @localscopevariable | @globalvariable | @membervariable; - -@localscopevariable = @localvariable | @parameter; - -/** - * Built-in types are the fundamental types, e.g., integral, floating, and void. - */ -case @builtintype.kind of - 1 = @errortype -| 2 = @unknowntype -| 3 = @void -| 4 = @boolean -| 5 = @char -| 6 = @unsigned_char -| 7 = @signed_char -| 8 = @short -| 9 = @unsigned_short -| 10 = @signed_short -| 11 = @int -| 12 = @unsigned_int -| 13 = @signed_int -| 14 = @long -| 15 = @unsigned_long -| 16 = @signed_long -| 17 = @long_long -| 18 = @unsigned_long_long -| 19 = @signed_long_long -// ... 20 Microsoft-specific __int8 -// ... 21 Microsoft-specific __int16 -// ... 22 Microsoft-specific __int32 -// ... 23 Microsoft-specific __int64 -| 24 = @float -| 25 = @double -| 26 = @long_double -| 27 = @complex_float // C99-specific _Complex float -| 28 = @complex_double // C99-specific _Complex double -| 29 = @complex_long_double // C99-specific _Complex long double -| 30 = @imaginary_float // C99-specific _Imaginary float -| 31 = @imaginary_double // C99-specific _Imaginary double -| 32 = @imaginary_long_double // C99-specific _Imaginary long double -| 33 = @wchar_t // Microsoft-specific -| 34 = @decltype_nullptr // C++11 -| 35 = @int128 // __int128 -| 36 = @unsigned_int128 // unsigned __int128 -| 37 = @signed_int128 // signed __int128 -| 38 = @float128 // __float128 -| 39 = @complex_float128 // _Complex __float128 -| 40 = @decimal32 // _Decimal32 -| 41 = @decimal64 // _Decimal64 -| 42 = @decimal128 // _Decimal128 -| 43 = @char16_t -| 44 = @char32_t -| 45 = @std_float32 // _Float32 -| 46 = @float32x // _Float32x -| 47 = @std_float64 // _Float64 -| 48 = @float64x // _Float64x -| 49 = @std_float128 // _Float128 -// ... 50 _Float128x -| 51 = @char8_t -| 52 = @float16 // _Float16 -| 53 = @complex_float16 // _Complex _Float16 -| 54 = @fp16 // __fp16 -| 55 = @std_bfloat16 // __bf16 -| 56 = @std_float16 // std::float16_t -| 57 = @complex_std_float32 // _Complex _Float32 -| 58 = @complex_float32x // _Complex _Float32x -| 59 = @complex_std_float64 // _Complex _Float64 -| 60 = @complex_float64x // _Complex _Float64x -| 61 = @complex_std_float128 // _Complex _Float128 -; - -builtintypes( - unique int id: @builtintype, - string name: string ref, - int kind: int ref, - int size: int ref, - int sign: int ref, - int alignment: int ref -); - -/** - * Derived types are types that are directly derived from existing types and - * point to, refer to, transform type data to return a new type. - */ -case @derivedtype.kind of - 1 = @pointer -| 2 = @reference -| 3 = @type_with_specifiers -| 4 = @array -| 5 = @gnu_vector -| 6 = @routineptr -| 7 = @routinereference -| 8 = @rvalue_reference // C++11 -// ... 9 type_conforming_to_protocols deprecated -| 10 = @block -; - -derivedtypes( - unique int id: @derivedtype, - string name: string ref, - int kind: int ref, - int type_id: @type ref -); - -pointerishsize(unique int id: @derivedtype ref, - int size: int ref, - int alignment: int ref); - -arraysizes( - unique int id: @derivedtype ref, - int num_elements: int ref, - int bytesize: int ref, - int alignment: int ref -); - -typedefbase( - unique int id: @usertype ref, - int type_id: @type ref -); - -/** - * An instance of the C++11 `decltype` operator. For example: - * ``` - * int a; - * decltype(1+a) b; - * ``` - * Here `expr` is `1+a`. - * - * Sometimes an additional pair of parentheses around the expression - * would change the semantics of this decltype, e.g. - * ``` - * struct A { double x; }; - * const A* a = new A(); - * decltype( a->x ); // type is double - * decltype((a->x)); // type is const double& - * ``` - * (Please consult the C++11 standard for more details). - * `parentheses_would_change_meaning` is `true` iff that is the case. - */ -#keyset[id, expr] -decltypes( - int id: @decltype, - int expr: @expr ref, - int base_type: @type ref, - boolean parentheses_would_change_meaning: boolean ref -); - -/* -case @usertype.kind of - 1 = @struct -| 2 = @class -| 3 = @union -| 4 = @enum -| 5 = @typedef // classic C: typedef typedef type name -| 6 = @template -| 7 = @template_parameter -| 8 = @template_template_parameter -| 9 = @proxy_class // a proxy class associated with a template parameter -// ... 10 objc_class deprecated -// ... 11 objc_protocol deprecated -// ... 12 objc_category deprecated -| 13 = @scoped_enum -| 14 = @using_alias // a using name = type style typedef -; -*/ - -usertypes( - unique int id: @usertype, - string name: string ref, - int kind: int ref -); - -usertypesize( - unique int id: @usertype ref, - int size: int ref, - int alignment: int ref -); - -usertype_final(unique int id: @usertype ref); - -usertype_uuid( - unique int id: @usertype ref, - string uuid: string ref -); - -mangled_name( - unique int id: @declaration ref, - int mangled_name : @mangledname, - boolean is_complete: boolean ref -); - -is_pod_class(unique int id: @usertype ref); -is_standard_layout_class(unique int id: @usertype ref); - -is_complete(unique int id: @usertype ref); - -is_class_template(unique int id: @usertype ref); -class_instantiation( - int to: @usertype ref, - int from: @usertype ref -); -class_template_argument( - int type_id: @usertype ref, - int index: int ref, - int arg_type: @type ref -); -class_template_argument_value( - int type_id: @usertype ref, - int index: int ref, - int arg_value: @expr ref -); - -is_proxy_class_for( - unique int id: @usertype ref, - unique int templ_param_id: @usertype ref -); - -type_mentions( - unique int id: @type_mention, - int type_id: @type ref, - int location: @location ref, - // a_symbol_reference_kind from the frontend. - int kind: int ref -); - -is_function_template(unique int id: @function ref); -function_instantiation( - unique int to: @function ref, - int from: @function ref -); -function_template_argument( - int function_id: @function ref, - int index: int ref, - int arg_type: @type ref -); -function_template_argument_value( - int function_id: @function ref, - int index: int ref, - int arg_value: @expr ref -); - -is_variable_template(unique int id: @variable ref); -variable_instantiation( - unique int to: @variable ref, - int from: @variable ref -); -variable_template_argument( - int variable_id: @variable ref, - int index: int ref, - int arg_type: @type ref -); -variable_template_argument_value( - int variable_id: @variable ref, - int index: int ref, - int arg_value: @expr ref -); - -routinetypes( - unique int id: @routinetype, - int return_type: @type ref -); - -routinetypeargs( - int routine: @routinetype ref, - int index: int ref, - int type_id: @type ref -); - -ptrtomembers( - unique int id: @ptrtomember, - int type_id: @type ref, - int class_id: @type ref -); - -/* - specifiers for types, functions, and variables - - "public", - "protected", - "private", - - "const", - "volatile", - "static", - - "pure", - "virtual", - "sealed", // Microsoft - "__interface", // Microsoft - "inline", - "explicit", - - "near", // near far extension - "far", // near far extension - "__ptr32", // Microsoft - "__ptr64", // Microsoft - "__sptr", // Microsoft - "__uptr", // Microsoft - "dllimport", // Microsoft - "dllexport", // Microsoft - "thread", // Microsoft - "naked", // Microsoft - "microsoft_inline", // Microsoft - "forceinline", // Microsoft - "selectany", // Microsoft - "nothrow", // Microsoft - "novtable", // Microsoft - "noreturn", // Microsoft - "noinline", // Microsoft - "noalias", // Microsoft - "restrict", // Microsoft -*/ - -specifiers( - unique int id: @specifier, - unique string str: string ref -); - -typespecifiers( - int type_id: @type ref, - int spec_id: @specifier ref -); - -funspecifiers( - int func_id: @function ref, - int spec_id: @specifier ref -); - -varspecifiers( - int var_id: @accessible ref, - int spec_id: @specifier ref -); - -explicit_specifier_exprs( - unique int func_id: @function ref, - int constant: @expr ref -) - -attributes( - unique int id: @attribute, - int kind: int ref, - string name: string ref, - string name_space: string ref, - int location: @location_default ref -); - -case @attribute.kind of - 0 = @gnuattribute -| 1 = @stdattribute -| 2 = @declspec -| 3 = @msattribute -| 4 = @alignas -// ... 5 @objc_propertyattribute deprecated -; - -attribute_args( - unique int id: @attribute_arg, - int kind: int ref, - int attribute: @attribute ref, - int index: int ref, - int location: @location_default ref -); - -case @attribute_arg.kind of - 0 = @attribute_arg_empty -| 1 = @attribute_arg_token -| 2 = @attribute_arg_constant -| 3 = @attribute_arg_type -| 4 = @attribute_arg_constant_expr -| 5 = @attribute_arg_expr -; - -attribute_arg_value( - unique int arg: @attribute_arg ref, - string value: string ref -); -attribute_arg_type( - unique int arg: @attribute_arg ref, - int type_id: @type ref -); -attribute_arg_constant( - unique int arg: @attribute_arg ref, - int constant: @expr ref -) -attribute_arg_expr( - unique int arg: @attribute_arg ref, - int expr: @expr ref -) -attribute_arg_name( - unique int arg: @attribute_arg ref, - string name: string ref -); - -typeattributes( - int type_id: @type ref, - int spec_id: @attribute ref -); - -funcattributes( - int func_id: @function ref, - int spec_id: @attribute ref -); - -varattributes( - int var_id: @accessible ref, - int spec_id: @attribute ref -); - -stmtattributes( - int stmt_id: @stmt ref, - int spec_id: @attribute ref -); - -@type = @builtintype - | @derivedtype - | @usertype - /* TODO | @fixedpointtype */ - | @routinetype - | @ptrtomember - | @decltype; - -unspecifiedtype( - unique int type_id: @type ref, - int unspecified_type_id: @type ref -); - -member( - int parent: @type ref, - int index: int ref, - int child: @member ref -); - -@enclosingfunction_child = @usertype | @variable | @namespace - -enclosingfunction( - unique int child: @enclosingfunction_child ref, - int parent: @function ref -); - -derivations( - unique int derivation: @derivation, - int sub: @type ref, - int index: int ref, - int super: @type ref, - int location: @location_default ref -); - -derspecifiers( - int der_id: @derivation ref, - int spec_id: @specifier ref -); - -/** - * Contains the byte offset of the base class subobject within the derived - * class. Only holds for non-virtual base classes, but see table - * `virtual_base_offsets` for offsets of virtual base class subobjects. - */ -direct_base_offsets( - unique int der_id: @derivation ref, - int offset: int ref -); - -/** - * Contains the byte offset of the virtual base class subobject for class - * `super` within a most-derived object of class `sub`. `super` can be either a - * direct or indirect base class. - */ -#keyset[sub, super] -virtual_base_offsets( - int sub: @usertype ref, - int super: @usertype ref, - int offset: int ref -); - -frienddecls( - unique int id: @frienddecl, - int type_id: @type ref, - int decl_id: @declaration ref, - int location: @location_default ref -); - -@declaredtype = @usertype ; - -@declaration = @function - | @declaredtype - | @variable - | @enumconstant - | @frienddecl; - -@member = @membervariable - | @function - | @declaredtype - | @enumconstant; - -@locatable = @diagnostic - | @declaration - | @ppd_include - | @ppd_define - | @macroinvocation - /*| @funcall*/ - | @xmllocatable - | @attribute - | @attribute_arg; - -@namedscope = @namespace | @usertype; - -@element = @locatable - | @file - | @folder - | @specifier - | @type - | @expr - | @namespace - | @initialiser - | @stmt - | @derivation - | @comment - | @preprocdirect - | @fun_decl - | @var_decl - | @type_decl - | @namespace_decl - | @using - | @namequalifier - | @specialnamequalifyingelement - | @static_assert - | @type_mention - | @lambdacapture; - -@exprparent = @element; - -comments( - unique int id: @comment, - string contents: string ref, - int location: @location_default ref -); - -commentbinding( - int id: @comment ref, - int element: @element ref -); - -exprconv( - int converted: @expr ref, - unique int conversion: @expr ref -); - -compgenerated(unique int id: @element ref); - -/** - * `destructor_call` destructs the `i`'th entity that should be - * destructed following `element`. Note that entities should be - * destructed in reverse construction order, so for a given `element` - * these should be called from highest to lowest `i`. - */ -#keyset[element, destructor_call] -#keyset[element, i] -synthetic_destructor_call( - int element: @element ref, - int i: int ref, - int destructor_call: @routineexpr ref -); - -namespaces( - unique int id: @namespace, - string name: string ref -); - -namespace_inline( - unique int id: @namespace ref -); - -namespacembrs( - int parentid: @namespace ref, - unique int memberid: @namespacembr ref -); - -@namespacembr = @declaration | @namespace; - -exprparents( - int expr_id: @expr ref, - int child_index: int ref, - int parent_id: @exprparent ref -); - -expr_isload(unique int expr_id: @expr ref); - -@cast = @c_style_cast - | @const_cast - | @dynamic_cast - | @reinterpret_cast - | @static_cast - ; - -/* -case @conversion.kind of - 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast -| 1 = @bool_conversion // conversion to 'bool' -| 2 = @base_class_conversion // a derived-to-base conversion -| 3 = @derived_class_conversion // a base-to-derived conversion -| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member -| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member -| 6 = @glvalue_adjust // an adjustment of the type of a glvalue -| 7 = @prvalue_adjust // an adjustment of the type of a prvalue -; -*/ -/** - * Describes the semantics represented by a cast expression. This is largely - * independent of the source syntax of the cast, so it is separate from the - * regular expression kind. - */ -conversionkinds( - unique int expr_id: @cast ref, - int kind: int ref -); - -@conversion = @cast - | @array_to_pointer - | @parexpr - | @reference_to - | @ref_indirect - | @temp_init - | @c11_generic - ; - -/* -case @funbindexpr.kind of - 0 = @normal_call // a normal call -| 1 = @virtual_call // a virtual call -| 2 = @adl_call // a call whose target is only found by ADL -; -*/ -iscall( - unique int caller: @funbindexpr ref, - int kind: int ref -); - -numtemplatearguments( - unique int expr_id: @expr ref, - int num: int ref -); - -specialnamequalifyingelements( - unique int id: @specialnamequalifyingelement, - unique string name: string ref -); - -@namequalifiableelement = @expr | @namequalifier; -@namequalifyingelement = @namespace - | @specialnamequalifyingelement - | @usertype; - -namequalifiers( - unique int id: @namequalifier, - unique int qualifiableelement: @namequalifiableelement ref, - int qualifyingelement: @namequalifyingelement ref, - int location: @location_default ref -); - -varbind( - int expr: @varbindexpr ref, - int var: @accessible ref -); - -funbind( - int expr: @funbindexpr ref, - int fun: @function ref -); - -@any_new_expr = @new_expr - | @new_array_expr; - -@new_or_delete_expr = @any_new_expr - | @delete_expr - | @delete_array_expr; - -@prefix_crement_expr = @preincrexpr | @predecrexpr; - -@postfix_crement_expr = @postincrexpr | @postdecrexpr; - -@increment_expr = @preincrexpr | @postincrexpr; - -@decrement_expr = @predecrexpr | @postdecrexpr; - -@crement_expr = @increment_expr | @decrement_expr; - -@un_arith_op_expr = @arithnegexpr - | @unaryplusexpr - | @conjugation - | @realpartexpr - | @imagpartexpr - | @crement_expr - ; - -@un_bitwise_op_expr = @complementexpr; - -@un_log_op_expr = @notexpr; - -@un_op_expr = @address_of - | @indirect - | @un_arith_op_expr - | @un_bitwise_op_expr - | @builtinaddressof - | @vec_fill - | @un_log_op_expr - | @co_await - | @co_yield - ; - -@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr; - -@cmp_op_expr = @eq_op_expr | @rel_op_expr; - -@eq_op_expr = @eqexpr | @neexpr; - -@rel_op_expr = @gtexpr - | @ltexpr - | @geexpr - | @leexpr - | @spaceshipexpr - ; - -@bin_bitwise_op_expr = @lshiftexpr - | @rshiftexpr - | @andexpr - | @orexpr - | @xorexpr - ; - -@p_arith_op_expr = @paddexpr - | @psubexpr - | @pdiffexpr - ; - -@bin_arith_op_expr = @addexpr - | @subexpr - | @mulexpr - | @divexpr - | @remexpr - | @jmulexpr - | @jdivexpr - | @fjaddexpr - | @jfaddexpr - | @fjsubexpr - | @jfsubexpr - | @minexpr - | @maxexpr - | @p_arith_op_expr - ; - -@bin_op_expr = @bin_arith_op_expr - | @bin_bitwise_op_expr - | @cmp_op_expr - | @bin_log_op_expr - ; - -@op_expr = @un_op_expr - | @bin_op_expr - | @assign_expr - | @conditionalexpr - ; - -@assign_arith_expr = @assignaddexpr - | @assignsubexpr - | @assignmulexpr - | @assigndivexpr - | @assignremexpr - ; - -@assign_bitwise_expr = @assignandexpr - | @assignorexpr - | @assignxorexpr - | @assignlshiftexpr - | @assignrshiftexpr - ; - -@assign_pointer_expr = @assignpaddexpr - | @assignpsubexpr - ; - -@assign_op_expr = @assign_arith_expr - | @assign_bitwise_expr - | @assign_pointer_expr - ; - -@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr - -/* - Binary encoding of the allocator form. - - case @allocator.form of - 0 = plain - | 1 = alignment - ; -*/ - -/** - * The allocator function associated with a `new` or `new[]` expression. - * The `form` column specified whether the allocation call contains an alignment - * argument. - */ -expr_allocator( - unique int expr: @any_new_expr ref, - int func: @function ref, - int form: int ref -); - -/* - Binary encoding of the deallocator form. - - case @deallocator.form of - 0 = plain - | 1 = size - | 2 = alignment - | 4 = destroying_delete - ; -*/ - -/** - * The deallocator function associated with a `delete`, `delete[]`, `new`, or - * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the - * one used to free memory if the initialization throws an exception. - * The `form` column specifies whether the deallocation call contains a size - * argument, and alignment argument, or both. - */ -expr_deallocator( - unique int expr: @new_or_delete_expr ref, - int func: @function ref, - int form: int ref -); - -/** - * Holds if the `@conditionalexpr` is of the two operand form - * `guard ? : false`. - */ -expr_cond_two_operand( - unique int cond: @conditionalexpr ref -); - -/** - * The guard of `@conditionalexpr` `guard ? true : false` - */ -expr_cond_guard( - unique int cond: @conditionalexpr ref, - int guard: @expr ref -); - -/** - * The expression used when the guard of `@conditionalexpr` - * `guard ? true : false` holds. For the two operand form - * `guard ?: false` consider using `expr_cond_guard` instead. - */ -expr_cond_true( - unique int cond: @conditionalexpr ref, - int true: @expr ref -); - -/** - * The expression used when the guard of `@conditionalexpr` - * `guard ? true : false` does not hold. - */ -expr_cond_false( - unique int cond: @conditionalexpr ref, - int false: @expr ref -); - -/** A string representation of the value. */ -values( - unique int id: @value, - string str: string ref -); - -/** The actual text in the source code for the value, if any. */ -valuetext( - unique int id: @value ref, - string text: string ref -); - -valuebind( - int val: @value ref, - unique int expr: @expr ref -); - -fieldoffsets( - unique int id: @variable ref, - int byteoffset: int ref, - int bitoffset: int ref -); - -bitfield( - unique int id: @variable ref, - int bits: int ref, - int declared_bits: int ref -); - -/* TODO -memberprefix( - int member: @expr ref, - int prefix: @expr ref -); -*/ - -/* - kind(1) = mbrcallexpr - kind(2) = mbrptrcallexpr - kind(3) = mbrptrmbrcallexpr - kind(4) = ptrmbrptrmbrcallexpr - kind(5) = mbrreadexpr // x.y - kind(6) = mbrptrreadexpr // p->y - kind(7) = mbrptrmbrreadexpr // x.*pm - kind(8) = mbrptrmbrptrreadexpr // x->*pm - kind(9) = staticmbrreadexpr // static x.y - kind(10) = staticmbrptrreadexpr // static p->y -*/ -/* TODO -memberaccess( - int member: @expr ref, - int kind: int ref -); -*/ - -initialisers( - unique int init: @initialiser, - int var: @accessible ref, - unique int expr: @expr ref, - int location: @location_expr ref -); - -braced_initialisers( - int init: @initialiser ref -); - -/** - * An ancestor for the expression, for cases in which we cannot - * otherwise find the expression's parent. - */ -expr_ancestor( - int exp: @expr ref, - int ancestor: @element ref -); - -exprs( - unique int id: @expr, - int kind: int ref, - int location: @location_expr ref -); - -expr_reuse( - int reuse: @expr ref, - int original: @expr ref, - int value_category: int ref -) - -/* - case @value.category of - 1 = prval - | 2 = xval - | 3 = lval - ; -*/ -expr_types( - int id: @expr ref, - int typeid: @type ref, - int value_category: int ref -); - -case @expr.kind of - 1 = @errorexpr -| 2 = @address_of // & AddressOfExpr -| 3 = @reference_to // ReferenceToExpr (implicit?) -| 4 = @indirect // * PointerDereferenceExpr -| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?) -// ... -| 8 = @array_to_pointer // (???) -| 9 = @vacuous_destructor_call // VacuousDestructorCall -// ... -| 11 = @assume // Microsoft -| 12 = @parexpr -| 13 = @arithnegexpr -| 14 = @unaryplusexpr -| 15 = @complementexpr -| 16 = @notexpr -| 17 = @conjugation // GNU ~ operator -| 18 = @realpartexpr // GNU __real -| 19 = @imagpartexpr // GNU __imag -| 20 = @postincrexpr -| 21 = @postdecrexpr -| 22 = @preincrexpr -| 23 = @predecrexpr -| 24 = @conditionalexpr -| 25 = @addexpr -| 26 = @subexpr -| 27 = @mulexpr -| 28 = @divexpr -| 29 = @remexpr -| 30 = @jmulexpr // C99 mul imaginary -| 31 = @jdivexpr // C99 div imaginary -| 32 = @fjaddexpr // C99 add real + imaginary -| 33 = @jfaddexpr // C99 add imaginary + real -| 34 = @fjsubexpr // C99 sub real - imaginary -| 35 = @jfsubexpr // C99 sub imaginary - real -| 36 = @paddexpr // pointer add (pointer + int or int + pointer) -| 37 = @psubexpr // pointer sub (pointer - integer) -| 38 = @pdiffexpr // difference between two pointers -| 39 = @lshiftexpr -| 40 = @rshiftexpr -| 41 = @andexpr -| 42 = @orexpr -| 43 = @xorexpr -| 44 = @eqexpr -| 45 = @neexpr -| 46 = @gtexpr -| 47 = @ltexpr -| 48 = @geexpr -| 49 = @leexpr -| 50 = @minexpr // GNU minimum -| 51 = @maxexpr // GNU maximum -| 52 = @assignexpr -| 53 = @assignaddexpr -| 54 = @assignsubexpr -| 55 = @assignmulexpr -| 56 = @assigndivexpr -| 57 = @assignremexpr -| 58 = @assignlshiftexpr -| 59 = @assignrshiftexpr -| 60 = @assignandexpr -| 61 = @assignorexpr -| 62 = @assignxorexpr -| 63 = @assignpaddexpr // assign pointer add -| 64 = @assignpsubexpr // assign pointer sub -| 65 = @andlogicalexpr -| 66 = @orlogicalexpr -| 67 = @commaexpr -| 68 = @subscriptexpr // access to member of an array, e.g., a[5] -// ... 69 @objc_subscriptexpr deprecated -// ... 70 @cmdaccess deprecated -// ... -| 73 = @virtfunptrexpr -| 74 = @callexpr -// ... 75 @msgexpr_normal deprecated -// ... 76 @msgexpr_super deprecated -// ... 77 @atselectorexpr deprecated -// ... 78 @atprotocolexpr deprecated -| 79 = @vastartexpr -| 80 = @vaargexpr -| 81 = @vaendexpr -| 82 = @vacopyexpr -// ... 83 @atencodeexpr deprecated -| 84 = @varaccess -| 85 = @thisaccess -// ... 86 @objc_box_expr deprecated -| 87 = @new_expr -| 88 = @delete_expr -| 89 = @throw_expr -| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2) -| 91 = @braced_init_list -| 92 = @type_id -| 93 = @runtime_sizeof -| 94 = @runtime_alignof -| 95 = @sizeof_pack -| 96 = @expr_stmt // GNU extension -| 97 = @routineexpr -| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....) -| 99 = @offsetofexpr // offsetof ::= type and field -| 100 = @hasassignexpr // __has_assign ::= type -| 101 = @hascopyexpr // __has_copy ::= type -| 102 = @hasnothrowassign // __has_nothrow_assign ::= type -| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type -| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type -| 105 = @hastrivialassign // __has_trivial_assign ::= type -| 106 = @hastrivialconstr // __has_trivial_constructor ::= type -| 107 = @hastrivialcopy // __has_trivial_copy ::= type -| 108 = @hasuserdestr // __has_user_destructor ::= type -| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type -| 110 = @isabstractexpr // __is_abstract ::= type -| 111 = @isbaseofexpr // __is_base_of ::= type type -| 112 = @isclassexpr // __is_class ::= type -| 113 = @isconvtoexpr // __is_convertible_to ::= type type -| 114 = @isemptyexpr // __is_empty ::= type -| 115 = @isenumexpr // __is_enum ::= type -| 116 = @ispodexpr // __is_pod ::= type -| 117 = @ispolyexpr // __is_polymorphic ::= type -| 118 = @isunionexpr // __is_union ::= type -| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type -| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof -// ... -| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type -| 123 = @literal -| 124 = @uuidof -| 127 = @aggregateliteral -| 128 = @delete_array_expr -| 129 = @new_array_expr -// ... 130 @objc_array_literal deprecated -// ... 131 @objc_dictionary_literal deprecated -| 132 = @foldexpr -// ... -| 200 = @ctordirectinit -| 201 = @ctorvirtualinit -| 202 = @ctorfieldinit -| 203 = @ctordelegatinginit -| 204 = @dtordirectdestruct -| 205 = @dtorvirtualdestruct -| 206 = @dtorfielddestruct -// ... -| 210 = @static_cast -| 211 = @reinterpret_cast -| 212 = @const_cast -| 213 = @dynamic_cast -| 214 = @c_style_cast -| 215 = @lambdaexpr -| 216 = @param_ref -| 217 = @noopexpr -// ... -| 294 = @istriviallyconstructibleexpr -| 295 = @isdestructibleexpr -| 296 = @isnothrowdestructibleexpr -| 297 = @istriviallydestructibleexpr -| 298 = @istriviallyassignableexpr -| 299 = @isnothrowassignableexpr -| 300 = @istrivialexpr -| 301 = @isstandardlayoutexpr -| 302 = @istriviallycopyableexpr -| 303 = @isliteraltypeexpr -| 304 = @hastrivialmoveconstructorexpr -| 305 = @hastrivialmoveassignexpr -| 306 = @hasnothrowmoveassignexpr -| 307 = @isconstructibleexpr -| 308 = @isnothrowconstructibleexpr -| 309 = @hasfinalizerexpr -| 310 = @isdelegateexpr -| 311 = @isinterfaceclassexpr -| 312 = @isrefarrayexpr -| 313 = @isrefclassexpr -| 314 = @issealedexpr -| 315 = @issimplevalueclassexpr -| 316 = @isvalueclassexpr -| 317 = @isfinalexpr -| 319 = @noexceptexpr -| 320 = @builtinshufflevector -| 321 = @builtinchooseexpr -| 322 = @builtinaddressof -| 323 = @vec_fill -| 324 = @builtinconvertvector -| 325 = @builtincomplex -| 326 = @spaceshipexpr -| 327 = @co_await -| 328 = @co_yield -| 329 = @temp_init -| 330 = @isassignable -| 331 = @isaggregate -| 332 = @hasuniqueobjectrepresentations -| 333 = @builtinbitcast -| 334 = @builtinshuffle -| 335 = @blockassignexpr -| 336 = @issame -| 337 = @isfunction -| 338 = @islayoutcompatible -| 339 = @ispointerinterconvertiblebaseof -| 340 = @isarray -| 341 = @arrayrank -| 342 = @arrayextent -| 343 = @isarithmetic -| 344 = @iscompletetype -| 345 = @iscompound -| 346 = @isconst -| 347 = @isfloatingpoint -| 348 = @isfundamental -| 349 = @isintegral -| 350 = @islvaluereference -| 351 = @ismemberfunctionpointer -| 352 = @ismemberobjectpointer -| 353 = @ismemberpointer -| 354 = @isobject -| 355 = @ispointer -| 356 = @isreference -| 357 = @isrvaluereference -| 358 = @isscalar -| 359 = @issigned -| 360 = @isunsigned -| 361 = @isvoid -| 362 = @isvolatile -| 363 = @reuseexpr -| 364 = @istriviallycopyassignable -| 365 = @isassignablenopreconditioncheck -| 366 = @referencebindstotemporary -| 367 = @issameas -| 368 = @builtinhasattribute -| 369 = @ispointerinterconvertiblewithclass -| 370 = @builtinispointerinterconvertiblewithclass -| 371 = @iscorrespondingmember -| 372 = @builtiniscorrespondingmember -| 373 = @isboundedarray -| 374 = @isunboundedarray -| 375 = @isreferenceable -| 378 = @isnothrowconvertible -| 379 = @referenceconstructsfromtemporary -| 380 = @referenceconvertsfromtemporary -| 381 = @isconvertible -| 382 = @isvalidwinrttype -| 383 = @iswinclass -| 384 = @iswininterface -| 385 = @istriviallyequalitycomparable -| 386 = @isscopedenum -| 387 = @istriviallyrelocatable -| 388 = @datasizeof -| 389 = @c11_generic -| 390 = @requires_expr -| 391 = @nested_requirement -| 392 = @compound_requirement -| 393 = @concept_id -; - -@var_args_expr = @vastartexpr - | @vaendexpr - | @vaargexpr - | @vacopyexpr - ; - -@builtin_op = @var_args_expr - | @noopexpr - | @offsetofexpr - | @intaddrexpr - | @hasassignexpr - | @hascopyexpr - | @hasnothrowassign - | @hasnothrowconstr - | @hasnothrowcopy - | @hastrivialassign - | @hastrivialconstr - | @hastrivialcopy - | @hastrivialdestructor - | @hasuserdestr - | @hasvirtualdestr - | @isabstractexpr - | @isbaseofexpr - | @isclassexpr - | @isconvtoexpr - | @isemptyexpr - | @isenumexpr - | @ispodexpr - | @ispolyexpr - | @isunionexpr - | @typescompexpr - | @builtinshufflevector - | @builtinconvertvector - | @builtinaddressof - | @istriviallyconstructibleexpr - | @isdestructibleexpr - | @isnothrowdestructibleexpr - | @istriviallydestructibleexpr - | @istriviallyassignableexpr - | @isnothrowassignableexpr - | @istrivialexpr - | @isstandardlayoutexpr - | @istriviallycopyableexpr - | @isliteraltypeexpr - | @hastrivialmoveconstructorexpr - | @hastrivialmoveassignexpr - | @hasnothrowmoveassignexpr - | @isconstructibleexpr - | @isnothrowconstructibleexpr - | @hasfinalizerexpr - | @isdelegateexpr - | @isinterfaceclassexpr - | @isrefarrayexpr - | @isrefclassexpr - | @issealedexpr - | @issimplevalueclassexpr - | @isvalueclassexpr - | @isfinalexpr - | @builtinchooseexpr - | @builtincomplex - | @isassignable - | @isaggregate - | @hasuniqueobjectrepresentations - | @builtinbitcast - | @builtinshuffle - | @issame - | @isfunction - | @islayoutcompatible - | @ispointerinterconvertiblebaseof - | @isarray - | @arrayrank - | @arrayextent - | @isarithmetic - | @iscompletetype - | @iscompound - | @isconst - | @isfloatingpoint - | @isfundamental - | @isintegral - | @islvaluereference - | @ismemberfunctionpointer - | @ismemberobjectpointer - | @ismemberpointer - | @isobject - | @ispointer - | @isreference - | @isrvaluereference - | @isscalar - | @issigned - | @isunsigned - | @isvoid - | @isvolatile - | @istriviallycopyassignable - | @isassignablenopreconditioncheck - | @referencebindstotemporary - | @issameas - | @builtinhasattribute - | @ispointerinterconvertiblewithclass - | @builtinispointerinterconvertiblewithclass - | @iscorrespondingmember - | @builtiniscorrespondingmember - | @isboundedarray - | @isunboundedarray - | @isreferenceable - | @isnothrowconvertible - | @referenceconstructsfromtemporary - | @referenceconvertsfromtemporary - | @isconvertible - | @isvalidwinrttype - | @iswinclass - | @iswininterface - | @istriviallyequalitycomparable - | @isscopedenum - | @istriviallyrelocatable - ; - -compound_requirement_is_noexcept( - int expr: @compound_requirement ref -); - -new_allocated_type( - unique int expr: @new_expr ref, - int type_id: @type ref -); - -new_array_allocated_type( - unique int expr: @new_array_expr ref, - int type_id: @type ref -); - -/** - * The field being initialized by an initializer expression within an aggregate - * initializer for a class/struct/union. Position is used to sort repeated initializers. - */ -#keyset[aggregate, position] -aggregate_field_init( - int aggregate: @aggregateliteral ref, - int initializer: @expr ref, - int field: @membervariable ref, - int position: int ref -); - -/** - * The index of the element being initialized by an initializer expression - * within an aggregate initializer for an array. Position is used to sort repeated initializers. - */ -#keyset[aggregate, position] -aggregate_array_init( - int aggregate: @aggregateliteral ref, - int initializer: @expr ref, - int element_index: int ref, - int position: int ref -); - -@ctorinit = @ctordirectinit - | @ctorvirtualinit - | @ctorfieldinit - | @ctordelegatinginit; -@dtordestruct = @dtordirectdestruct - | @dtorvirtualdestruct - | @dtorfielddestruct; - - -condition_decl_bind( - unique int expr: @condition_decl ref, - unique int decl: @declaration ref -); - -typeid_bind( - unique int expr: @type_id ref, - int type_id: @type ref -); - -uuidof_bind( - unique int expr: @uuidof ref, - int type_id: @type ref -); - -@runtime_sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof; - -sizeof_bind( - unique int expr: @runtime_sizeof_or_alignof ref, - int type_id: @type ref -); - -code_block( - unique int block: @literal ref, - unique int routine: @function ref -); - -lambdas( - unique int expr: @lambdaexpr ref, - string default_capture: string ref, - boolean has_explicit_return_type: boolean ref -); - -lambda_capture( - unique int id: @lambdacapture, - int lambda: @lambdaexpr ref, - int index: int ref, - int field: @membervariable ref, - boolean captured_by_reference: boolean ref, - boolean is_implicit: boolean ref, - int location: @location_default ref -); - -@funbindexpr = @routineexpr - | @new_expr - | @delete_expr - | @delete_array_expr - | @ctordirectinit - | @ctorvirtualinit - | @ctordelegatinginit - | @dtordirectdestruct - | @dtorvirtualdestruct; - -@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct; -@addressable = @function | @variable ; -@accessible = @addressable | @enumconstant ; - -@access = @varaccess | @routineexpr ; - -fold( - int expr: @foldexpr ref, - string operator: string ref, - boolean is_left_fold: boolean ref -); - -stmts( - unique int id: @stmt, - int kind: int ref, - int location: @location_stmt ref -); - -case @stmt.kind of - 1 = @stmt_expr -| 2 = @stmt_if -| 3 = @stmt_while -| 4 = @stmt_goto -| 5 = @stmt_label -| 6 = @stmt_return -| 7 = @stmt_block -| 8 = @stmt_end_test_while // do { ... } while ( ... ) -| 9 = @stmt_for -| 10 = @stmt_switch_case -| 11 = @stmt_switch -| 13 = @stmt_asm // "asm" statement or the body of an asm function -| 15 = @stmt_try_block -| 16 = @stmt_microsoft_try // Microsoft -| 17 = @stmt_decl -| 18 = @stmt_set_vla_size // C99 -| 19 = @stmt_vla_decl // C99 -| 25 = @stmt_assigned_goto // GNU -| 26 = @stmt_empty -| 27 = @stmt_continue -| 28 = @stmt_break -| 29 = @stmt_range_based_for // C++11 -// ... 30 @stmt_at_autoreleasepool_block deprecated -// ... 31 @stmt_objc_for_in deprecated -// ... 32 @stmt_at_synchronized deprecated -| 33 = @stmt_handler -// ... 34 @stmt_finally_end deprecated -| 35 = @stmt_constexpr_if -| 37 = @stmt_co_return -; - -type_vla( - int type_id: @type ref, - int decl: @stmt_vla_decl ref -); - -variable_vla( - int var: @variable ref, - int decl: @stmt_vla_decl ref -); - -if_initialization( - unique int if_stmt: @stmt_if ref, - int init_id: @stmt ref -); - -if_then( - unique int if_stmt: @stmt_if ref, - int then_id: @stmt ref -); - -if_else( - unique int if_stmt: @stmt_if ref, - int else_id: @stmt ref -); - -constexpr_if_initialization( - unique int constexpr_if_stmt: @stmt_constexpr_if ref, - int init_id: @stmt ref -); - -constexpr_if_then( - unique int constexpr_if_stmt: @stmt_constexpr_if ref, - int then_id: @stmt ref -); - -constexpr_if_else( - unique int constexpr_if_stmt: @stmt_constexpr_if ref, - int else_id: @stmt ref -); - -while_body( - unique int while_stmt: @stmt_while ref, - int body_id: @stmt ref -); - -do_body( - unique int do_stmt: @stmt_end_test_while ref, - int body_id: @stmt ref -); - -switch_initialization( - unique int switch_stmt: @stmt_switch ref, - int init_id: @stmt ref -); - -#keyset[switch_stmt, index] -switch_case( - int switch_stmt: @stmt_switch ref, - int index: int ref, - int case_id: @stmt_switch_case ref -); - -switch_body( - unique int switch_stmt: @stmt_switch ref, - int body_id: @stmt ref -); - -@stmt_for_or_range_based_for = @stmt_for - | @stmt_range_based_for; - -for_initialization( - unique int for_stmt: @stmt_for_or_range_based_for ref, - int init_id: @stmt ref -); - -for_condition( - unique int for_stmt: @stmt_for ref, - int condition_id: @expr ref -); - -for_update( - unique int for_stmt: @stmt_for ref, - int update_id: @expr ref -); - -for_body( - unique int for_stmt: @stmt_for ref, - int body_id: @stmt ref -); - -@stmtparent = @stmt | @expr_stmt ; -stmtparents( - unique int id: @stmt ref, - int index: int ref, - int parent: @stmtparent ref -); - -ishandler(unique int block: @stmt_block ref); - -@cfgnode = @stmt | @expr | @function | @initialiser ; - -stmt_decl_bind( - int stmt: @stmt_decl ref, - int num: int ref, - int decl: @declaration ref -); - -stmt_decl_entry_bind( - int stmt: @stmt_decl ref, - int num: int ref, - int decl_entry: @element ref -); - -@parameterized_element = @function | @stmt_block | @requires_expr; - -blockscope( - unique int block: @stmt_block ref, - int enclosing: @parameterized_element ref -); - -@jump = @stmt_goto | @stmt_break | @stmt_continue; - -@jumporlabel = @jump | @stmt_label | @literal; - -jumpinfo( - unique int id: @jumporlabel ref, - string str: string ref, - int target: @stmt ref -); - -preprocdirects( - unique int id: @preprocdirect, - int kind: int ref, - int location: @location_default ref -); -case @preprocdirect.kind of - 0 = @ppd_if -| 1 = @ppd_ifdef -| 2 = @ppd_ifndef -| 3 = @ppd_elif -| 4 = @ppd_else -| 5 = @ppd_endif -| 6 = @ppd_plain_include -| 7 = @ppd_define -| 8 = @ppd_undef -| 9 = @ppd_line -| 10 = @ppd_error -| 11 = @ppd_pragma -| 12 = @ppd_objc_import -| 13 = @ppd_include_next -| 18 = @ppd_warning -; - -@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next; - -@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif; - -preprocpair( - int begin : @ppd_branch ref, - int elseelifend : @preprocdirect ref -); - -preproctrue(int branch : @ppd_branch ref); -preprocfalse(int branch : @ppd_branch ref); - -preproctext( - unique int id: @preprocdirect ref, - string head: string ref, - string body: string ref -); - -includes( - unique int id: @ppd_include ref, - int included: @file ref -); - -link_targets( - int id: @link_target, - int binary: @file ref -); - -link_parent( - int element : @element ref, - int link_target : @link_target ref -); - -/* XML Files */ - -xmlEncoding(unique int id: @file ref, string encoding: string ref); - -xmlDTDs( - unique int id: @xmldtd, - string root: string ref, - string publicId: string ref, - string systemId: string ref, - int fileid: @file ref -); - -xmlElements( - unique int id: @xmlelement, - string name: string ref, - int parentid: @xmlparent ref, - int idx: int ref, - int fileid: @file ref -); - -xmlAttrs( - unique int id: @xmlattribute, - int elementid: @xmlelement ref, - string name: string ref, - string value: string ref, - int idx: int ref, - int fileid: @file ref -); - -xmlNs( - int id: @xmlnamespace, - string prefixName: string ref, - string URI: string ref, - int fileid: @file ref -); - -xmlHasNs( - int elementId: @xmlnamespaceable ref, - int nsId: @xmlnamespace ref, - int fileid: @file ref -); - -xmlComments( - unique int id: @xmlcomment, - string text: string ref, - int parentid: @xmlparent ref, - int fileid: @file ref -); - -xmlChars( - unique int id: @xmlcharacters, - string text: string ref, - int parentid: @xmlparent ref, - int idx: int ref, - int isCDATA: int ref, - int fileid: @file ref -); - -@xmlparent = @file | @xmlelement; -@xmlnamespaceable = @xmlelement | @xmlattribute; - -xmllocations( - int xmlElement: @xmllocatable ref, - int location: @location_default ref -); - -@xmllocatable = @xmlcharacters - | @xmlelement - | @xmlcomment - | @xmlattribute - | @xmldtd - | @file - | @xmlnamespace; diff --git a/cpp/ql/lib/upgrades/e51fad7a2436caefab0c6bd52f05e28e7cce4d92/upgrade.properties b/cpp/ql/lib/upgrades/e51fad7a2436caefab0c6bd52f05e28e7cce4d92/upgrade.properties deleted file mode 100644 index 08e1dc42eb29..000000000000 --- a/cpp/ql/lib/upgrades/e51fad7a2436caefab0c6bd52f05e28e7cce4d92/upgrade.properties +++ /dev/null @@ -1,2 +0,0 @@ -description: Implement compilation_build_mode/2 -compatibility: backwards