diff --git a/cpp/downgrades/34549c3b0937002f11037d01822ebe99442c1402/attribute_args.ql b/cpp/downgrades/34549c3b0937002f11037d01822ebe99442c1402/attribute_args.ql new file mode 100644 index 00000000000..bc7bf989aac --- /dev/null +++ b/cpp/downgrades/34549c3b0937002f11037d01822ebe99442c1402/attribute_args.ql @@ -0,0 +1,17 @@ +class AttributeArgument extends @attribute_arg { + string toString() { none() } +} + +class Attribute extends @attribute { + string toString() { none() } +} + +class LocationDefault extends @location_default { + string toString() { none() } +} + +from AttributeArgument arg, int kind, Attribute attr, int index, LocationDefault location +where + attribute_args(arg, kind, attr, index, location) and + not arg instanceof @attribute_arg_constant_expr +select arg, kind, attr, index, location diff --git a/cpp/downgrades/34549c3b0937002f11037d01822ebe99442c1402/old.dbscheme b/cpp/downgrades/34549c3b0937002f11037d01822ebe99442c1402/old.dbscheme new file mode 100644 index 00000000000..34549c3b093 --- /dev/null +++ b/cpp/downgrades/34549c3b0937002f11037d01822ebe99442c1402/old.dbscheme @@ -0,0 +1,2130 @@ + +/** + * 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 + */ + +@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 @macroinvocations.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 + | 2 = constructor + | 3 = destructor + | 4 = conversion + | 5 = operator + | 6 = builtin // GCC built-in functions, e.g. __builtin___memcpy_chk + ; +*/ +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, + int handle: @variable ref, + int promise: @variable 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); + +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 +); + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default 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: @functionorblock 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 +); + +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 = error + | 2 = unknown + | 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 = __int8 // Microsoft-specific + | 21 = __int16 // Microsoft-specific + | 22 = __int32 // Microsoft-specific + | 23 = __int64 // Microsoft-specific + | 24 = float + | 25 = double + | 26 = long_double + | 27 = _Complex_float // C99-specific + | 28 = _Complex_double // C99-specific + | 29 = _Complex_long double // C99-specific + | 30 = _Imaginary_float // C99-specific + | 31 = _Imaginary_double // C99-specific + | 32 = _Imaginary_long_double // C99-specific + | 33 = wchar_t // Microsoft-specific + | 34 = decltype_nullptr // C++11 + | 35 = __int128 + | 36 = unsigned___int128 + | 37 = signed___int128 + | 38 = __float128 + | 39 = _Complex___float128 + | 40 = _Decimal32 + | 41 = _Decimal64 + | 42 = _Decimal128 + | 43 = char16_t + | 44 = char32_t + | 45 = _Float32 + | 46 = _Float32x + | 47 = _Float64 + | 48 = _Float64x + | 49 = _Float128 + | 50 = _Float128x + | 51 = char8_t + ; +*/ +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 +); + +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 EDG frontend. See symbol_ref.h there. + 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 +); + +/* + Fixed point types + precision(1) = short, precision(2) = default, precision(3) = long + is_unsigned(1) = unsigned is_unsigned(2) = signed + is_fract_type(1) = declared with _Fract + saturating(1) = declared with _Sat +*/ +/* TODO +fixedpointtypes( + unique int id: @fixedpointtype, + int precision: int ref, + int is_unsigned: int ref, + int is_fract_type: int ref, + int saturating: int 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 +); + +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 +; + +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_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 + ; + +/* +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 + | @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr | @assign_bitwise_expr + +@assign_expr = @assignexpr | @assign_op_expr + +/* + 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 +); + +/* + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 3 = size_and_alignment + ; +*/ + +/** + * 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 +); + +/* + 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 // EDG 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 +; + +@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 + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + ; + +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. + */ +#keyset[aggregate, field] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. + */ +#keyset[aggregate, element_index] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: 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; + +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 +); + +for_initialization( + unique int for_stmt: @stmt_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 +); + +@functionorblock = @function | @stmt_block; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @functionorblock 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( + unique 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/34549c3b0937002f11037d01822ebe99442c1402/semmlecode.cpp.dbscheme b/cpp/downgrades/34549c3b0937002f11037d01822ebe99442c1402/semmlecode.cpp.dbscheme new file mode 100644 index 00000000000..23f7cbb88a4 --- /dev/null +++ b/cpp/downgrades/34549c3b0937002f11037d01822ebe99442c1402/semmlecode.cpp.dbscheme @@ -0,0 +1,2125 @@ + +/** + * 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 + */ + +@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 @macroinvocations.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 + | 2 = constructor + | 3 = destructor + | 4 = conversion + | 5 = operator + | 6 = builtin // GCC built-in functions, e.g. __builtin___memcpy_chk + ; +*/ +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, + int handle: @variable ref, + int promise: @variable 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); + +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 +); + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default 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: @functionorblock 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 +); + +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 = error + | 2 = unknown + | 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 = __int8 // Microsoft-specific + | 21 = __int16 // Microsoft-specific + | 22 = __int32 // Microsoft-specific + | 23 = __int64 // Microsoft-specific + | 24 = float + | 25 = double + | 26 = long_double + | 27 = _Complex_float // C99-specific + | 28 = _Complex_double // C99-specific + | 29 = _Complex_long double // C99-specific + | 30 = _Imaginary_float // C99-specific + | 31 = _Imaginary_double // C99-specific + | 32 = _Imaginary_long_double // C99-specific + | 33 = wchar_t // Microsoft-specific + | 34 = decltype_nullptr // C++11 + | 35 = __int128 + | 36 = unsigned___int128 + | 37 = signed___int128 + | 38 = __float128 + | 39 = _Complex___float128 + | 40 = _Decimal32 + | 41 = _Decimal64 + | 42 = _Decimal128 + | 43 = char16_t + | 44 = char32_t + | 45 = _Float32 + | 46 = _Float32x + | 47 = _Float64 + | 48 = _Float64x + | 49 = _Float128 + | 50 = _Float128x + | 51 = char8_t + ; +*/ +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 +); + +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 EDG frontend. See symbol_ref.h there. + 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 +); + +/* + Fixed point types + precision(1) = short, precision(2) = default, precision(3) = long + is_unsigned(1) = unsigned is_unsigned(2) = signed + is_fract_type(1) = declared with _Fract + saturating(1) = declared with _Sat +*/ +/* TODO +fixedpointtypes( + unique int id: @fixedpointtype, + int precision: int ref, + int is_unsigned: int ref, + int is_fract_type: int ref, + int saturating: int 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 +); + +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 +; + +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_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 + ; + +/* +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 + | @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr | @assign_bitwise_expr + +@assign_expr = @assignexpr | @assign_op_expr + +/* + 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 +); + +/* + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 3 = size_and_alignment + ; +*/ + +/** + * 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 +); + +/* + 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 // EDG 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 +; + +@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 + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + ; + +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. + */ +#keyset[aggregate, field] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. + */ +#keyset[aggregate, element_index] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: 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; + +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 +); + +for_initialization( + unique int for_stmt: @stmt_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 +); + +@functionorblock = @function | @stmt_block; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @functionorblock 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( + unique 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/34549c3b0937002f11037d01822ebe99442c1402/upgrade.properties b/cpp/downgrades/34549c3b0937002f11037d01822ebe99442c1402/upgrade.properties new file mode 100644 index 00000000000..b8154844dbd --- /dev/null +++ b/cpp/downgrades/34549c3b0937002f11037d01822ebe99442c1402/upgrade.properties @@ -0,0 +1,4 @@ +description: Support all constant attribute arguments +compatibility: backwards +attribute_arg_constant.rel: delete +attribute_args.rel: run attribute_args.qlo diff --git a/cpp/ql/lib/change-notes/2022-08-10-constant-attribute-argument-support.md b/cpp/ql/lib/change-notes/2022-08-10-constant-attribute-argument-support.md new file mode 100644 index 00000000000..056190026a8 --- /dev/null +++ b/cpp/ql/lib/change-notes/2022-08-10-constant-attribute-argument-support.md @@ -0,0 +1,4 @@ +--- +category: feature +--- +* Added a predicate `getValueConstant` to `AttributeArgument` that yields the argument value as an `Expr` when the value is a constant expression. diff --git a/cpp/ql/lib/semmle/code/cpp/Specifier.qll b/cpp/ql/lib/semmle/code/cpp/Specifier.qll index 7a13b13e8c2..a2d9c4b9388 100644 --- a/cpp/ql/lib/semmle/code/cpp/Specifier.qll +++ b/cpp/ql/lib/semmle/code/cpp/Specifier.qll @@ -12,7 +12,7 @@ private import semmle.code.cpp.internal.ResolveClass class Specifier extends Element, @specifier { /** Gets a dummy location for the specifier. */ override Location getLocation() { - suppressUnusedThis(this) and + exists(this) and result instanceof UnknownDefaultLocation } @@ -256,9 +256,13 @@ class AttributeArgument extends Element, @attribute_arg { /** * Gets the text for the value of this argument, if its value is - * a string or a number. + * a constant or token. */ - string getValueText() { attribute_arg_value(underlyingElement(this), result) } + string getValueText() { + if underlyingElement(this) instanceof @attribute_arg_constant_expr + then result = this.getValueConstant().getValue() + else attribute_arg_value(underlyingElement(this), result) + } /** * Gets the value of this argument, if its value is integral. @@ -270,6 +274,13 @@ class AttributeArgument extends Element, @attribute_arg { */ Type getValueType() { attribute_arg_type(underlyingElement(this), unresolveElement(result)) } + /** + * Gets the value of this argument, if its value is a constant. + */ + Expr getValueConstant() { + attribute_arg_constant(underlyingElement(this), unresolveElement(result)) + } + /** * Gets the attribute to which this is an argument. */ @@ -294,11 +305,12 @@ class AttributeArgument extends Element, @attribute_arg { ( if underlyingElement(this) instanceof @attribute_arg_type then tail = this.getValueType().getName() - else tail = this.getValueText() + else + if underlyingElement(this) instanceof @attribute_arg_constant_expr + then tail = this.getValueConstant().toString() + else tail = this.getValueText() ) and result = prefix + tail ) } } - -private predicate suppressUnusedThis(Specifier s) { any() } diff --git a/cpp/ql/lib/semmlecode.cpp.dbscheme b/cpp/ql/lib/semmlecode.cpp.dbscheme index 23f7cbb88a4..34549c3b093 100644 --- a/cpp/ql/lib/semmlecode.cpp.dbscheme +++ b/cpp/ql/lib/semmlecode.cpp.dbscheme @@ -899,6 +899,7 @@ case @attribute_arg.kind of | 1 = @attribute_arg_token | 2 = @attribute_arg_constant | 3 = @attribute_arg_type +| 4 = @attribute_arg_constant_expr ; attribute_arg_value( @@ -909,6 +910,10 @@ 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_name( unique int arg: @attribute_arg ref, string name: string ref diff --git a/cpp/ql/lib/semmlecode.cpp.dbscheme.stats b/cpp/ql/lib/semmlecode.cpp.dbscheme.stats index 35eb9c7e6de..6ab07086478 100644 --- a/cpp/ql/lib/semmlecode.cpp.dbscheme.stats +++ b/cpp/ql/lib/semmlecode.cpp.dbscheme.stats @@ -2,147 +2,147 @@ @compilation - 9978 - - - @externalDataElement - 65 + 9948 @external_package 4 + + @externalDataElement + 65 + @svnentry 575525 @location_stmt - 3805465 + 3813503 @diagnostic - 72312 + 72092 @file - 124196 + 122193 @folder - 15994 + 15274 @location_default - 30132211 + 29655056 @location_expr - 13128120 + 13165921 @macroinvocation - 33889080 + 33818017 @function - 4726519 + 4628077 @fun_decl - 5097227 + 4995583 @type_decl - 3284148 + 3240440 @namespace_decl - 306973 + 307432 @using - 374941 + 369357 @static_assert - 130418 + 130562 @var_decl - 8543677 + 8391080 @parameter - 6660502 + 6536424 @membervariable - 1050083 + 1052962 @globalvariable - 318724 + 300708 @localvariable - 581690 + 581169 @enumconstant - 240613 + 241273 @builtintype - 22110 + 21754 @derivedtype - 4413676 + 4324907 @decltype - 31049 + 28696 @usertype - 5343268 + 5230250 @mangledname - 1975901 + 2114402 @type_mention - 4011511 + 4022510 @routinetype - 546661 + 547156 @ptrtomember - 38105 + 37491 @specifier - 24933 + 24531 @gnuattribute - 664262 + 653549 @stdattribute - 469081 + 468565 @alignas - 8938 + 8794 @declspec - 238545 + 239199 @msattribute @@ -150,135 +150,139 @@ @attribute_arg_token - 25403 - - - @attribute_arg_constant - 326486 + 24994 @attribute_arg_type - 470 + 462 + + + @attribute_arg_constant_expr + 322609 @attribute_arg_empty 1 + + @attribute_arg_constant + 1 + @derivation - 402152 + 368264 @frienddecl - 714656 + 716133 @comment - 8783134 + 8773472 @namespace - 12701 + 12497 @specialnamequalifyingelement - 470 + 462 @namequalifier - 1618866 + 1536058 @value - 10646153 + 10759270 @initialiser - 1732353 + 1733596 @lambdacapture - 28226 + 27771 @stmt_expr - 1480415 + 1483542 @stmt_if - 723174 + 724702 @stmt_while - 30201 + 30109 @stmt_label - 53044 + 53054 @stmt_return - 1306414 + 1285345 @stmt_block - 1446605 + 1423276 @stmt_end_test_while - 148599 + 148628 @stmt_for - 61324 + 61453 @stmt_switch_case - 191399 + 209699 @stmt_switch - 20901 + 20747 @stmt_try_block - 42699 + 46934 @stmt_decl - 608387 + 606536 @stmt_empty - 193484 + 193311 @stmt_continue - 22507 + 22525 @stmt_break - 102232 + 102345 @stmt_range_based_for - 8467 + 8331 @stmt_handler - 59429 + 65331 @stmt_constexpr_if - 52562 + 52504 @stmt_goto - 110487 + 110508 @stmt_asm - 110589 + 109773 @stmt_microsoft_try @@ -290,11 +294,11 @@ @stmt_vla_decl - 21 + 22 @stmt_assigned_goto - 9059 + 9060 @stmt_co_return @@ -302,55 +306,55 @@ @delete_array_expr - 1410 + 1406 @new_array_expr - 5099 + 5104 @ctordirectinit - 112747 + 112980 @ctorvirtualinit - 6532 + 6512 @ctorfieldinit - 200671 + 201086 @ctordelegatinginit - 3345 + 3352 @dtordirectdestruct - 41690 + 41776 @dtorvirtualdestruct - 4119 + 4128 @dtorfielddestruct - 41620 + 41706 @static_cast - 211675 + 210928 @reinterpret_cast - 30783 + 30749 @const_cast - 35285 + 35247 @dynamic_cast - 1040 + 1037 @c_style_cast @@ -358,15 +362,15 @@ @lambdaexpr - 21640 + 21291 @param_ref - 375271 + 244969 @errorexpr - 46796 + 46893 @address_of @@ -374,27 +378,27 @@ @reference_to - 1596067 + 1592318 @indirect - 292106 + 292162 @ref_indirect - 1938685 + 1938635 @array_to_pointer - 1424884 + 1428562 @vacuous_destructor_call - 8133 + 8150 @parexpr - 3572549 + 3581771 @arithnegexpr @@ -402,111 +406,111 @@ @complementexpr - 27786 + 27791 @notexpr - 277993 + 275941 @postincrexpr - 61774 + 61943 @postdecrexpr - 41860 + 41968 @preincrexpr - 70307 + 70456 @predecrexpr - 26108 + 26164 @conditionalexpr - 654502 + 656192 @addexpr - 400358 + 397789 @subexpr - 339340 + 340216 @mulexpr - 305891 + 305921 @divexpr - 133731 + 132913 @remexpr - 15810 + 15842 @paddexpr - 86502 + 86519 @psubexpr - 49681 + 49818 @pdiffexpr - 35495 + 35456 @lshiftexpr - 562988 + 565473 @rshiftexpr - 141617 + 140572 @andexpr - 491818 + 488189 @orexpr - 146267 + 145188 @xorexpr - 53938 + 54086 @eqexpr - 468873 + 469864 @neexpr - 300411 + 301187 @gtexpr - 100674 + 99050 @ltexpr - 106319 + 104605 @geexpr - 58989 + 59151 @leexpr - 212134 + 212175 @assignexpr - 933420 + 935391 @assignaddexpr @@ -514,15 +518,15 @@ @assignsubexpr - 11157 + 11180 @assignmulexpr - 7168 + 7146 @assigndivexpr - 4972 + 4985 @assignremexpr @@ -530,7 +534,7 @@ @assignlshiftexpr - 2704 + 2712 @assignrshiftexpr @@ -538,119 +542,119 @@ @assignandexpr - 4852 + 4817 @assignorexpr - 23850 + 23829 @assignxorexpr - 21803 + 21807 @assignpaddexpr - 13577 + 13606 @andlogicalexpr - 249009 + 249535 @orlogicalexpr - 864018 + 864675 @commaexpr - 181530 + 124044 @subscriptexpr - 367910 + 367580 @callexpr - 309079 + 304095 @vastartexpr - 3703 + 3707 @vaendexpr - 2822 + 2777 @vacopyexpr - 140 + 141 @varaccess - 6006368 + 6019055 @thisaccess - 1125919 + 1127165 @new_expr - 47571 + 47669 @delete_expr - 11725 + 11749 @throw_expr - 21760 + 21694 @condition_decl - 38593 + 42438 @braced_init_list - 1008 + 1108 @type_id - 36408 + 36484 @runtime_sizeof - 289268 + 295484 @runtime_alignof - 48521 + 49892 @sizeof_pack - 5645 + 5554 @routineexpr - 3047738 + 2917668 @type_operand - 1126029 + 1126886 @isemptyexpr - 2303 + 1481 @ispodexpr - 635 + 634 @hastrivialdestructor - 470 + 462 @literal - 4350894 + 4406598 @aggregateliteral @@ -658,39 +662,39 @@ @istrivialexpr - 940 + 925 @istriviallycopyableexpr - 3763 + 3702 @isconstructibleexpr - 2722 + 462 @isfinalexpr - 2094 + 1693 @noexceptexpr - 23573 + 25724 @builtinaddressof - 13274 + 13302 @temp_init - 760646 + 826875 @assume - 3200 + 3203 @unaryplusexpr - 2903 + 2911 @conjugation @@ -738,7 +742,7 @@ @assignpsubexpr - 1148 + 1150 @virtfunptrexpr @@ -750,11 +754,11 @@ @expr_stmt - 94929 + 94228 @offsetofexpr - 20103 + 19954 @hasassignexpr @@ -798,7 +802,7 @@ @isabstractexpr - 18 + 19 @isbaseofexpr @@ -806,15 +810,15 @@ @isclassexpr - 1835 + 1837 @isconvtoexpr - 1151 + 104 @isenumexpr - 1256 + 522 @ispolyexpr @@ -826,7 +830,7 @@ @typescompexpr - 562416 + 562843 @intaddrexpr @@ -834,7 +838,7 @@ @uuidof - 19993 + 20022 @foldexpr @@ -846,7 +850,7 @@ @istriviallyconstructibleexpr - 2827 + 732 @isdestructibleexpr @@ -858,19 +862,19 @@ @istriviallydestructibleexpr - 5 + 836 @istriviallyassignableexpr - 523 + 3 @isnothrowassignableexpr - 2094 + 4183 @isstandardlayoutexpr - 837 + 2 @isliteraltypeexpr @@ -890,7 +894,7 @@ @isnothrowconstructibleexpr - 4816 + 14433 @hasfinalizerexpr @@ -930,7 +934,7 @@ @builtinchooseexpr - 9136 + 9069 @vec_fill @@ -958,7 +962,7 @@ @isassignable - 2617 + 3 @isaggregate @@ -974,55 +978,55 @@ @builtinshuffle - 1965 + 1959 @ppd_if - 672260 + 661418 @ppd_ifdef - 265328 + 261049 @ppd_ifndef - 268621 + 264289 @ppd_elif - 25403 + 24994 @ppd_else - 210757 + 207358 @ppd_endif - 1206210 + 1186757 @ppd_plain_include - 313784 + 308723 @ppd_define - 2435769 + 2433089 @ppd_undef - 262035 + 257809 @ppd_pragma - 312337 + 311993 @ppd_include_next - 1881 + 1851 @ppd_line - 27780 + 27755 @ppd_error @@ -1038,7 +1042,7 @@ @link_target - 1471 + 1475 @xmldtd @@ -1068,11 +1072,11 @@ compilations - 9978 + 9948 id - 9978 + 9948 cwd @@ -1090,7 +1094,7 @@ 1 2 - 9978 + 9948 @@ -1116,19 +1120,19 @@ compilation_args - 656151 + 651309 id - 5544 + 5503 num - 713 + 707 arg - 34651 + 34395 @@ -1142,17 +1146,17 @@ 23 69 - 489 + 485 71 102 - 276 + 274 126 127 - 3889 + 3861 127 @@ -1162,7 +1166,7 @@ 131 132 - 819 + 813 134 @@ -1183,17 +1187,17 @@ 23 57 - 489 + 485 57 106 - 292 + 290 106 107 - 3852 + 3824 107 @@ -1203,7 +1207,7 @@ 109 110 - 819 + 813 111 @@ -1229,7 +1233,7 @@ 898 899 - 133 + 132 911 @@ -1249,12 +1253,12 @@ 970 989 - 37 + 36 999 1000 - 74 + 73 1001 @@ -1274,7 +1278,7 @@ 1042 1043 - 122 + 121 @@ -1305,7 +1309,7 @@ 8 13 - 53 + 52 13 @@ -1350,7 +1354,7 @@ 169 819 - 53 + 52 @@ -1366,12 +1370,12 @@ 1 2 - 32576 + 32335 2 1043 - 2075 + 2059 @@ -1387,12 +1391,12 @@ 1 2 - 33438 + 33191 2 56 - 1213 + 1204 @@ -1402,19 +1406,19 @@ compilation_compiling_files - 11495 + 11527 id - 1988 + 1994 num - 3301 + 3310 file - 9984 + 10011 @@ -1428,7 +1432,7 @@ 1 2 - 994 + 997 2 @@ -1443,7 +1447,7 @@ 4 5 - 238 + 239 5 @@ -1479,7 +1483,7 @@ 1 2 - 994 + 997 2 @@ -1494,7 +1498,7 @@ 4 5 - 238 + 239 5 @@ -1530,27 +1534,27 @@ 1 2 - 1750 + 1755 2 3 - 715 + 717 3 4 - 357 + 358 4 13 - 278 + 279 13 51 - 198 + 199 @@ -1566,27 +1570,27 @@ 1 2 - 1750 + 1755 2 3 - 715 + 717 3 4 - 357 + 358 4 13 - 278 + 279 13 49 - 198 + 199 @@ -1602,12 +1606,12 @@ 1 2 - 8989 + 9014 2 4 - 835 + 837 4 @@ -1628,12 +1632,12 @@ 1 2 - 9148 + 9173 2 4 - 795 + 797 4 @@ -1648,15 +1652,15 @@ compilation_time - 45982 + 46108 id - 1988 + 1994 num - 3301 + 3310 kind @@ -1664,7 +1668,7 @@ seconds - 9586 + 14239 @@ -1678,7 +1682,7 @@ 1 2 - 994 + 997 2 @@ -1693,7 +1697,7 @@ 4 5 - 238 + 239 5 @@ -1729,7 +1733,7 @@ 4 5 - 1988 + 1994 @@ -1745,27 +1749,27 @@ 3 4 - 715 + 279 4 5 - 278 + 717 6 - 8 + 9 159 - 8 + 9 10 - 159 + 79 10 11 - 79 + 119 11 @@ -1773,19 +1777,19 @@ 159 - 17 - 19 + 14 + 18 159 - 20 - 27 + 18 + 22 159 - 40 - 77 - 119 + 24 + 124 + 159 @@ -1801,27 +1805,27 @@ 1 2 - 1750 + 1755 2 3 - 715 + 717 3 4 - 357 + 358 4 13 - 278 + 279 13 51 - 198 + 199 @@ -1837,7 +1841,7 @@ 4 5 - 3301 + 3310 @@ -1853,42 +1857,47 @@ 3 4 - 835 + 598 4 5 - 914 + 1156 5 6 - 238 + 199 6 7 - 437 + 319 7 8 - 79 + 199 8 9 - 278 + 159 9 - 26 - 278 + 12 + 279 - 26 - 92 - 238 + 13 + 41 + 279 + + + 41 + 96 + 119 @@ -1933,24 +1942,19 @@ 12 - - 3 - 4 - 39 - 4 5 + 79 + + + 177 + 178 39 - 112 - 113 - 39 - - - 129 - 130 + 179 + 180 39 @@ -1967,27 +1971,22 @@ 1 2 - 5449 + 9373 2 3 - 1670 + 3510 3 - 4 - 1272 - - - 4 5 - 676 + 1196 5 - 42 - 517 + 46 + 159 @@ -2003,32 +2002,22 @@ 1 2 - 5091 + 8735 2 3 - 1392 + 3589 3 4 - 954 + 1116 4 - 5 - 875 - - - 5 - 7 - 795 - - - 7 - 67 - 477 + 74 + 797 @@ -2044,12 +2033,12 @@ 1 2 - 9307 + 14000 2 - 3 - 278 + 4 + 239 @@ -2059,15 +2048,15 @@ diagnostic_for - 891808 + 889095 diagnostic - 72312 + 72092 compilation - 9585 + 9556 file_number @@ -2075,7 +2064,7 @@ file_number_diagnostic_number - 6856 + 6835 @@ -2089,17 +2078,17 @@ 1 2 - 9631 + 9602 2 3 - 59836 + 59654 254 825 - 2844 + 2835 @@ -2115,7 +2104,7 @@ 1 2 - 72312 + 72092 @@ -2131,7 +2120,7 @@ 1 2 - 72312 + 72092 @@ -2152,27 +2141,27 @@ 7 8 - 6093 + 6074 8 9 - 497 + 495 247 248 - 1965 + 1959 263 444 - 763 + 760 446 594 - 208 + 207 @@ -2188,7 +2177,7 @@ 1 2 - 9585 + 9556 @@ -2209,27 +2198,27 @@ 7 8 - 6093 + 6074 8 9 - 497 + 495 247 248 - 1965 + 1959 263 444 - 763 + 760 446 594 - 208 + 207 @@ -2293,22 +2282,22 @@ 1 2 - 2821 + 2812 2 5 - 601 + 599 5 6 - 1017 + 1014 7 14 - 543 + 541 15 @@ -2318,22 +2307,22 @@ 17 18 - 601 + 599 18 23 - 462 + 461 26 40 - 555 + 553 42 830 - 196 + 195 @@ -2349,17 +2338,17 @@ 4 9 - 589 + 587 10 11 - 1005 + 1002 14 27 - 543 + 541 30 @@ -2369,27 +2358,27 @@ 34 35 - 601 + 599 36 45 - 462 + 461 52 79 - 555 + 553 84 85 - 185 + 184 254 255 - 2763 + 2755 297 @@ -2410,7 +2399,7 @@ 1 2 - 6856 + 6835 @@ -2420,15 +2409,15 @@ compilation_finished - 9978 + 9948 id - 9978 + 9948 cpu_seconds - 7850 + 7688 elapsed_seconds @@ -2446,7 +2435,7 @@ 1 2 - 9978 + 9948 @@ -2462,7 +2451,7 @@ 1 2 - 9978 + 9948 @@ -2478,17 +2467,17 @@ 1 2 - 6498 + 6363 2 3 - 1005 + 853 3 15 - 346 + 472 @@ -2504,12 +2493,12 @@ 1 2 - 7423 + 7123 2 3 - 427 + 564 @@ -2530,51 +2519,51 @@ 2 3 - 11 + 34 - 3 - 4 - 23 + 6 + 7 + 11 8 9 - 23 - - - 11 - 12 11 - 24 - 25 + 12 + 13 11 - 49 - 50 + 21 + 22 11 - 104 - 105 + 46 + 47 11 - 155 - 156 + 135 + 136 11 - 239 - 240 + 158 + 159 11 - 255 - 256 + 232 + 233 + 11 + + + 237 + 238 11 @@ -2596,51 +2585,51 @@ 2 3 - 11 + 34 - 3 - 4 - 23 + 6 + 7 + 11 8 9 - 23 - - - 11 - 12 11 - 24 - 25 + 12 + 13 11 - 49 - 50 + 21 + 22 11 - 104 - 105 + 45 + 46 11 - 111 - 112 + 110 + 111 11 - 174 - 175 + 122 + 123 11 - 217 - 218 + 162 + 163 + 11 + + + 222 + 223 11 @@ -2867,11 +2856,11 @@ sourceLocationPrefix - 470 + 462 prefix - 470 + 462 @@ -4365,31 +4354,31 @@ locations_default - 30132211 + 29655056 id - 30132211 + 29655056 container - 140191 + 137467 startLine - 2115102 + 2080991 startColumn - 37164 + 36565 endLine - 2117925 + 2083768 endColumn - 48455 + 47673 @@ -4403,7 +4392,7 @@ 1 2 - 30132211 + 29655056 @@ -4419,7 +4408,7 @@ 1 2 - 30132211 + 29655056 @@ -4435,7 +4424,7 @@ 1 2 - 30132211 + 29655056 @@ -4451,7 +4440,7 @@ 1 2 - 30132211 + 29655056 @@ -4467,7 +4456,7 @@ 1 2 - 30132211 + 29655056 @@ -4483,67 +4472,67 @@ 1 2 - 16465 + 15737 2 12 - 10820 + 10645 13 20 - 11761 + 11571 21 36 - 11290 + 11108 36 55 - 11290 + 11108 55 77 - 10820 + 10645 77 102 - 10820 + 10645 102 149 - 10820 + 10645 149 227 - 11290 + 11108 228 350 - 10820 + 10645 351 604 - 10820 + 10645 - 627 + 630 1479 - 10820 + 10645 1925 2380 - 2352 + 2314 @@ -4559,67 +4548,67 @@ 1 2 - 16465 + 15737 2 9 - 10820 + 10645 9 16 - 11761 + 11571 16 25 - 11290 + 11108 25 40 - 10820 + 10645 40 57 - 10820 + 10645 58 72 - 10820 + 10645 73 103 - 11290 + 11108 106 141 - 11761 + 11571 148 226 - 11290 + 11108 226 373 - 10820 + 10645 381 1456 - 10820 + 10645 1464 - 1613 - 1411 + 1614 + 1388 @@ -4635,67 +4624,67 @@ 1 2 - 16465 + 15737 2 4 - 8938 + 8794 4 5 - 7527 + 7405 5 6 - 7527 + 7405 6 8 - 11761 + 11571 8 13 - 12231 + 12034 13 17 - 10820 + 10645 17 25 - 11290 + 11108 25 31 - 11761 + 11571 31 38 - 10820 + 10645 38 52 - 10820 + 10645 52 64 - 10820 + 10645 65 77 - 9408 + 9257 @@ -4711,67 +4700,67 @@ 1 2 - 16465 + 15737 2 9 - 10820 + 10645 9 16 - 11761 + 11571 16 25 - 11290 + 11108 25 40 - 10820 + 10645 40 57 - 10820 + 10645 58 71 - 10820 + 10645 72 98 - 10820 + 10645 101 140 - 11761 + 11571 140 224 - 10820 + 10645 224 360 - 10820 + 10645 364 1185 - 10820 + 10645 1254 - 1610 - 2352 + 1611 + 2314 @@ -4787,62 +4776,62 @@ 1 2 - 16465 + 15737 2 10 - 11290 + 11108 10 14 - 10820 + 10645 14 21 - 11290 + 11108 22 31 - 11290 + 11108 31 39 - 12701 + 12497 39 48 - 12231 + 12034 48 56 - 11761 + 11571 56 64 - 11761 + 11571 64 72 - 10820 + 10645 72 77 - 11290 + 11108 77 90 - 8467 + 8331 @@ -4858,52 +4847,52 @@ 1 2 - 581935 + 572087 2 3 - 318018 + 312426 3 4 - 199466 + 196250 4 6 - 160890 + 159221 6 10 - 190058 + 186993 10 16 - 166065 + 163387 16 25 - 168888 + 166164 25 46 - 163713 + 161073 46 169 - 159009 + 156444 170 - 299 - 7056 + 298 + 6942 @@ -4919,42 +4908,42 @@ 1 2 - 869845 + 855354 2 3 - 280853 + 275860 3 5 - 191469 + 189307 5 8 - 181119 + 178198 8 12 - 162302 + 159684 12 18 - 166536 + 163850 18 39 - 159949 + 157370 39 - 299 - 103026 + 298 + 101365 @@ -4970,47 +4959,47 @@ 1 2 - 612514 + 601710 2 3 - 313313 + 308260 3 4 - 202760 + 199952 4 6 - 184412 + 181901 6 9 - 180649 + 177735 9 13 - 167006 + 164313 13 19 - 173592 + 170793 19 29 - 167476 + 164776 29 52 - 113376 + 111547 @@ -5026,22 +5015,22 @@ 1 2 - 1545868 + 1520938 2 3 - 351419 + 345751 3 5 - 164654 + 161998 5 16 - 53159 + 52302 @@ -5057,52 +5046,52 @@ 1 2 - 586639 + 576716 2 3 - 318958 + 313352 3 4 - 201819 + 198564 4 6 - 167476 + 165701 6 9 - 160420 + 157833 9 14 - 178297 + 175421 14 21 - 176415 + 173570 21 32 - 163243 + 160610 32 61 - 159009 + 156444 61 66 - 2822 + 2777 @@ -5118,72 +5107,72 @@ 1 31 - 2822 + 2777 42 85 - 2822 + 2777 86 128 - 2822 + 2777 129 229 - 2822 + 2777 248 292 - 2822 + 2777 - 292 + 293 360 - 2822 + 2777 376 459 - 2822 + 2777 - 476 - 558 - 2822 + 475 + 559 + 2777 565 - 620 - 2822 + 623 + 2777 626 699 - 2822 + 2777 699 796 - 2822 + 2777 819 1548 - 2822 + 2777 1705 - 5645 - 2822 + 5646 + 2777 15306 15307 - 470 + 462 @@ -5199,67 +5188,67 @@ 1 18 - 2822 + 2777 23 35 - 3293 + 3239 38 43 - 2822 + 2777 44 61 - 2822 + 2777 65 73 - 2822 + 2777 73 84 - 3293 + 3239 84 97 - 3293 + 3239 98 101 - 2352 + 2314 101 105 - 3293 + 3239 106 111 - 2822 + 2777 111 123 - 2822 + 2777 127 153 - 2822 + 2777 169 - 299 - 1881 + 298 + 1851 @@ -5275,72 +5264,72 @@ 1 19 - 2822 + 2777 30 72 - 2822 + 2777 83 122 - 2822 + 2777 122 205 - 2822 + 2777 214 261 - 2822 + 2777 264 322 - 2822 + 2777 325 380 - 2822 + 2777 403 436 - 2822 + 2777 454 474 - 2822 + 2777 - 477 + 478 514 - 2822 + 2777 517 586 - 2822 + 2777 587 832 - 2822 + 2777 1116 2197 - 2822 + 2777 2387 2388 - 470 + 462 @@ -5356,72 +5345,72 @@ 1 19 - 2822 + 2777 30 72 - 2822 + 2777 83 122 - 2822 + 2777 122 205 - 2822 + 2777 214 261 - 2822 + 2777 264 322 - 2822 + 2777 325 380 - 2822 + 2777 403 435 - 2822 + 2777 454 474 - 2822 + 2777 - 476 + 477 513 - 2822 + 2777 520 585 - 2822 + 2777 587 831 - 2822 + 2777 1121 2205 - 2822 + 2777 2383 2384 - 470 + 462 @@ -5437,67 +5426,67 @@ 1 7 - 2822 + 2777 7 11 - 3293 + 3239 11 16 - 3293 + 3239 16 22 - 2822 + 2777 22 24 - 2352 + 2314 24 27 - 3293 + 3239 28 33 - 2822 + 2777 33 40 - 3293 + 3239 40 43 - 2822 + 2777 43 49 - 2822 + 2777 49 54 - 2822 + 2777 54 74 - 2822 + 2777 75 86 - 1881 + 1851 @@ -5513,52 +5502,52 @@ 1 2 - 589932 + 579956 2 3 - 312372 + 306872 3 4 - 198996 + 196250 4 6 - 161361 + 159221 6 10 - 189587 + 186530 10 16 - 163713 + 161073 16 25 - 170770 + 168016 25 45 - 159949 + 157370 45 160 - 159949 + 157370 160 - 299 - 11290 + 298 + 11108 @@ -5574,47 +5563,47 @@ 1 2 - 881606 + 866925 2 3 - 270033 + 265215 3 4 - 123255 + 122193 4 6 - 142073 + 139781 6 10 - 195703 + 192547 10 15 - 168417 + 165238 15 26 - 165595 + 163387 26 120 - 159479 + 156907 121 - 299 - 11761 + 298 + 11571 @@ -5630,22 +5619,22 @@ 1 2 - 1538812 + 1513995 2 3 - 349067 + 343437 3 5 - 172181 + 169404 5 10 - 57864 + 56931 @@ -5661,47 +5650,47 @@ 1 2 - 621922 + 610967 2 3 - 304375 + 299466 3 4 - 204641 + 201804 4 6 - 186765 + 184215 6 9 - 177826 + 174958 9 13 - 169358 + 166627 13 19 - 174533 + 171718 19 29 - 162772 + 160147 29 52 - 115728 + 113862 @@ -5717,52 +5706,52 @@ 1 2 - 596519 + 586436 2 3 - 311431 + 305946 3 4 - 198996 + 196250 4 6 - 171710 + 169404 6 9 - 157597 + 155056 9 14 - 173592 + 170793 14 21 - 180178 + 177273 21 32 - 165124 + 162461 32 60 - 159009 + 156444 60 65 - 3763 + 3702 @@ -5778,67 +5767,67 @@ 1 2 - 5174 + 5091 2 8 - 3763 + 3702 9 186 - 3763 + 3702 196 295 - 3763 + 3702 - 298 + 297 498 - 3763 + 3702 503 - 553 - 3763 + 554 + 3702 563 634 - 3763 + 3702 - 639 + 640 762 - 3763 + 3702 - 763 + 765 871 - 3763 + 3702 879 1082 - 3763 + 3702 1083 - 1286 - 3763 + 1283 + 3702 1310 - 1590 - 3763 + 1591 + 3702 1682 2419 - 1881 + 1851 @@ -5854,67 +5843,67 @@ 1 2 - 5645 + 5554 2 6 - 3763 + 3702 6 65 - 3763 + 3702 70 100 - 3763 + 3702 100 111 - 3763 + 3702 112 122 - 3763 + 3702 122 134 - 3763 + 3702 139 152 - 3763 + 3702 152 160 - 4233 + 4165 160 172 - 3763 + 3702 172 176 - 3763 + 3702 176 208 - 3763 + 3702 240 - 299 - 940 + 298 + 925 @@ -5930,67 +5919,67 @@ 1 2 - 5645 + 5554 2 8 - 3763 + 3702 9 106 - 3763 + 3702 155 241 - 3763 + 3702 253 335 - 3763 + 3702 340 426 - 3763 + 3702 437 488 - 3763 + 3702 - 488 + 489 574 - 3763 + 3702 575 627 - 3763 + 3702 630 698 - 4233 + 4165 701 817 - 3763 + 3702 - 843 + 841 1107 - 3763 + 3702 - 1160 + 1163 1174 - 940 + 925 @@ -6006,67 +5995,67 @@ 1 2 - 6115 + 6017 2 4 - 3763 + 3702 4 8 - 4233 + 4165 8 15 - 3763 + 3702 15 23 - 3763 + 3702 23 29 - 3763 + 3702 29 35 - 4233 + 4165 35 39 - 3293 + 3239 39 42 - 3763 + 3702 42 44 - 2822 + 2777 44 46 - 3763 + 3702 46 49 - 3763 + 3702 49 53 - 1411 + 1388 @@ -6082,67 +6071,67 @@ 1 2 - 5645 + 5554 2 8 - 3763 + 3702 9 156 - 3763 + 3702 159 240 - 3763 + 3702 251 334 - 3763 + 3702 342 430 - 3763 + 3702 435 490 - 4233 + 3702 - 504 - 576 - 3763 + 490 + 575 + 3702 - 576 - 631 - 3763 + 575 + 626 + 3702 - 635 - 702 - 3763 + 630 + 700 + 3702 - 702 - 813 - 3763 + 701 + 811 + 3702 - 838 - 1109 - 3763 + 812 + 992 + 3702 - 1161 + 1108 1181 - 940 + 1388 @@ -6152,31 +6141,31 @@ locations_stmt - 3805465 + 3813503 id - 3805465 + 3813503 container - 3076 + 3082 startLine - 199416 + 199837 startColumn - 1866 + 1870 endLine - 193694 + 194103 endColumn - 2358 + 2363 @@ -6190,7 +6179,7 @@ 1 2 - 3805465 + 3813503 @@ -6206,7 +6195,7 @@ 1 2 - 3805465 + 3813503 @@ -6222,7 +6211,7 @@ 1 2 - 3805465 + 3813503 @@ -6238,7 +6227,7 @@ 1 2 - 3805465 + 3813503 @@ -6254,7 +6243,7 @@ 1 2 - 3805465 + 3813503 @@ -6361,7 +6350,7 @@ 169 371 - 266 + 267 393 @@ -6422,12 +6411,12 @@ 1 3 - 225 + 226 3 7 - 266 + 267 7 @@ -6442,12 +6431,12 @@ 11 13 - 225 + 226 13 14 - 225 + 226 14 @@ -6599,7 +6588,7 @@ 56 63 - 266 + 267 63 @@ -6614,7 +6603,7 @@ 69 71 - 225 + 226 71 @@ -6655,67 +6644,67 @@ 1 2 - 21494 + 21539 2 3 - 15259 + 15291 3 4 - 12449 + 12475 4 6 - 14418 + 14448 6 8 - 12490 + 12516 8 11 - 16674 + 16709 11 16 - 17228 + 17264 16 22 - 15320 + 15353 22 29 - 16941 + 16976 29 37 - 17330 + 17367 37 45 - 15054 + 15085 45 56 - 16141 + 16175 56 73 - 8614 + 8632 @@ -6731,67 +6720,67 @@ 1 2 - 22253 + 22300 2 3 - 15689 + 15723 3 4 - 12654 + 12681 4 6 - 14356 + 14387 6 8 - 12695 + 12722 8 11 - 17535 + 17572 11 16 - 16325 + 16360 16 22 - 16182 + 16216 22 29 - 16920 + 16956 29 36 - 15956 + 15990 36 44 - 16284 + 16319 44 54 - 15607 + 15640 54 69 - 6952 + 6967 @@ -6807,57 +6796,57 @@ 1 2 - 26765 + 26821 2 3 - 20796 + 20840 3 4 - 16776 + 16812 4 5 - 16038 + 16072 5 6 - 17392 + 17429 6 7 - 19812 + 19854 7 8 - 22704 + 22752 8 9 - 20345 + 20388 9 10 - 14972 + 15003 10 12 - 16612 + 16648 12 18 - 7198 + 7214 @@ -6873,67 +6862,67 @@ 1 2 - 34517 + 34590 2 3 - 25739 + 25794 3 4 - 18397 + 18436 4 5 - 16182 + 16216 5 6 - 12757 + 12784 6 7 - 11998 + 12023 7 8 - 10152 + 10173 8 9 - 10952 + 10975 9 10 - 10706 + 10728 10 11 - 10501 + 10523 11 12 - 10152 + 10173 12 14 - 15751 + 15784 14 24 - 11608 + 11633 @@ -6949,67 +6938,67 @@ 1 2 - 22089 + 22135 2 3 - 16161 + 16195 3 4 - 12921 + 12948 4 6 - 16038 + 16072 6 8 - 14664 + 14695 8 10 - 13167 + 13195 10 14 - 18253 + 18292 14 18 - 16982 + 17017 18 22 - 17535 + 17572 22 26 - 18458 + 18497 26 30 - 16346 + 16380 30 36 - 15197 + 15229 36 42 - 1599 + 1603 @@ -7025,7 +7014,7 @@ 1 2 - 225 + 226 2 @@ -7172,7 +7161,7 @@ 1 2 - 225 + 226 2 @@ -7248,7 +7237,7 @@ 1 2 - 225 + 226 2 @@ -7395,67 +7384,67 @@ 1 2 - 17371 + 17408 2 3 - 14377 + 14407 3 4 - 11464 + 11489 4 6 - 15566 + 15599 6 8 - 12469 + 12496 8 11 - 15423 + 15455 11 15 - 14602 + 14633 15 21 - 16059 + 16093 21 27 - 15382 + 15414 27 34 - 14910 + 14942 34 42 - 15710 + 15743 42 52 - 15977 + 16010 52 130 - 14377 + 14407 @@ -7471,62 +7460,62 @@ 1 2 - 24898 + 24951 2 3 - 16100 + 16134 3 4 - 12736 + 12763 4 6 - 15628 + 15661 6 8 - 14972 + 15003 8 11 - 15854 + 15887 11 16 - 17412 + 17449 16 20 - 14561 + 14592 20 26 - 17125 + 17161 26 32 - 16223 + 16257 32 39 - 14828 + 14859 39 59 - 13351 + 13380 @@ -7542,62 +7531,62 @@ 1 2 - 32405 + 32473 2 3 - 23709 + 23759 3 4 - 18417 + 18456 4 5 - 15115 + 15147 5 6 - 13844 + 13873 6 7 - 11649 + 11674 7 8 - 11711 + 11735 8 9 - 10890 + 10913 9 10 - 10152 + 10173 10 12 - 17925 + 17963 12 15 - 17679 + 17716 15 100 - 10193 + 10214 @@ -7613,57 +7602,57 @@ 1 2 - 24898 + 24951 2 3 - 20345 + 20388 3 4 - 16797 + 16832 4 5 - 17761 + 17798 5 6 - 18540 + 18579 6 7 - 20386 + 20429 7 8 - 22376 + 22423 8 9 - 18704 + 18744 9 10 - 12900 + 12927 10 12 - 14992 + 15024 12 18 - 5988 + 6001 @@ -7679,67 +7668,67 @@ 1 2 - 24652 + 24704 2 3 - 16592 + 16627 3 4 - 12510 + 12537 4 6 - 17781 + 17819 6 8 - 15300 + 15332 8 10 - 12798 + 12825 10 13 - 14377 + 14407 13 16 - 14992 + 15024 16 19 - 14623 + 14654 19 22 - 14008 + 14037 22 26 - 17084 + 17120 26 31 - 15300 + 15332 31 39 - 3671 + 3679 @@ -8134,31 +8123,31 @@ locations_expr - 13128120 + 13165921 id - 13128120 + 13165921 container - 4348 + 4644 startLine - 191499 + 191904 startColumn - 2461 + 2466 endLine - 191479 + 191883 endColumn - 2789 + 2795 @@ -8172,7 +8161,7 @@ 1 2 - 13128120 + 13165921 @@ -8188,7 +8177,7 @@ 1 2 - 13128120 + 13165921 @@ -8204,7 +8193,7 @@ 1 2 - 13128120 + 13165921 @@ -8220,7 +8209,7 @@ 1 2 - 13128120 + 13165921 @@ -8236,7 +8225,7 @@ 1 2 - 13128120 + 13165921 @@ -8252,72 +8241,72 @@ 1 2 - 369 + 411 2 6 - 266 + 328 6 - 10 - 348 + 11 + 369 - 10 - 34 - 328 + 12 + 26 + 369 - 46 - 136 - 328 + 27 + 96 + 349 - 166 - 594 - 328 + 100 + 514 + 349 - 677 - 1614 - 328 + 525 + 1401 + 349 - 1623 - 2416 - 328 + 1526 + 2343 + 349 - 2490 - 3669 - 328 + 2404 + 3615 + 349 - 3705 - 5161 - 328 + 3668 + 5162 + 349 5341 - 6838 - 328 + 7345 + 349 - 7344 - 9012 - 328 + 7399 + 9307 + 349 - 9073 - 13259 - 328 + 9382 + 16759 + 349 - 13617 + 18811 18812 - 82 + 20 @@ -8333,67 +8322,67 @@ 1 2 - 451 + 493 2 - 5 - 348 + 4 + 369 - 5 + 4 10 - 328 + 369 10 - 22 - 328 + 20 + 349 - 24 - 87 - 328 + 20 + 51 + 349 - 97 - 207 - 328 + 65 + 151 + 349 - 213 - 437 - 328 + 161 + 360 + 349 - 454 - 689 - 328 + 361 + 577 + 349 - 719 - 977 - 328 + 590 + 923 + 349 - 997 - 1292 - 328 + 928 + 1265 + 349 - 1332 - 1781 - 328 + 1268 + 1742 + 349 - 1851 + 1781 2320 - 328 + 349 2491 4241 - 266 + 267 @@ -8409,47 +8398,52 @@ 1 2 - 451 + 493 2 - 5 - 389 + 4 + 349 - 5 - 10 + 4 + 7 + 390 + + + 7 + 16 + 349 + + + 16 + 37 + 349 + + + 37 + 59 + 390 + + + 59 + 66 369 - 10 - 27 - 328 + 66 + 68 + 267 - 27 - 55 - 369 - - - 55 - 64 - 348 - - - 64 - 67 - 246 - - - 67 + 68 69 - 369 + 205 69 70 - 307 + 308 70 @@ -8459,22 +8453,22 @@ 71 72 - 307 + 308 72 74 - 266 + 267 74 - 83 - 328 + 92 + 369 - 90 - 108 - 82 + 94 + 109 + 41 @@ -8490,67 +8484,67 @@ 1 2 - 451 + 493 2 - 5 - 348 + 4 + 369 - 5 + 4 10 - 328 + 369 10 - 22 - 328 + 20 + 349 - 24 - 87 - 328 + 20 + 51 + 349 - 97 - 207 - 328 + 65 + 151 + 349 - 214 - 437 - 328 + 162 + 360 + 349 - 454 - 691 - 328 + 361 + 578 + 349 - 719 - 978 - 328 + 591 + 926 + 349 - 998 - 1293 - 328 + 930 + 1266 + 349 - 1332 - 1785 - 328 + 1272 + 1742 + 349 - 1855 + 1785 2324 - 328 + 349 2500 4416 - 266 + 267 @@ -8566,37 +8560,42 @@ 1 2 - 410 + 452 2 - 5 - 389 - - - 5 - 9 + 4 328 - 9 - 29 - 328 + 4 + 7 + 369 - 30 - 55 - 328 + 7 + 15 + 349 - 55 - 69 - 389 + 15 + 36 + 349 - 69 + 36 + 61 + 349 + + + 61 + 70 + 349 + + + 70 73 - 348 + 267 73 @@ -8611,22 +8610,22 @@ 76 77 - 410 + 411 77 79 - 348 + 349 79 - 83 - 328 + 84 + 349 - 83 + 84 116 - 287 + 267 @@ -8642,67 +8641,67 @@ 1 5 - 16079 + 16113 5 9 - 16448 + 16483 9 15 - 15997 + 16031 15 23 - 15074 + 15106 23 32 - 15115 + 15147 32 44 - 14972 + 15003 44 60 - 14726 + 14757 60 80 - 14808 + 14818 80 103 - 14582 + 14633 103 130 - 14787 + 14777 130 159 - 14561 + 14531 159 194 - 14561 + 14613 194 302 - 9783 + 9886 @@ -8718,62 +8717,62 @@ 1 2 - 23463 + 23512 2 3 - 15587 + 15620 3 4 - 11321 + 11345 4 6 - 16325 + 16360 6 8 - 13597 + 13626 8 11 - 16407 + 16442 11 16 - 17330 + 17346 16 21 - 16407 + 16442 21 28 - 16612 + 16648 28 35 - 15956 + 15805 35 43 - 15936 + 15846 43 60 - 12551 + 12907 @@ -8789,62 +8788,62 @@ 1 4 - 15936 + 15969 4 7 - 17494 + 17531 7 11 - 16653 + 16689 11 16 - 17371 + 17408 16 21 - 17474 + 17511 21 26 - 15033 + 15065 26 31 - 16141 + 16175 31 36 - 17699 + 17716 36 40 - 15792 + 15702 40 44 - 16530 + 16298 44 49 - 16592 + 16894 49 63 - 8778 + 8940 @@ -8860,27 +8859,27 @@ 1 2 - 101769 + 101943 2 3 - 44567 + 44620 3 4 - 27503 + 27643 4 6 - 14541 + 14572 6 23 - 3117 + 3124 @@ -8896,67 +8895,67 @@ 1 4 - 16920 + 16956 4 7 - 16612 + 16648 7 11 - 16387 + 16421 11 16 - 16182 + 16216 16 21 - 16407 + 16442 21 27 - 16735 + 16771 27 33 - 16407 + 16442 33 38 - 14459 + 14469 38 43 - 15505 + 15538 43 47 - 14746 + 14695 47 52 - 16715 + 16771 52 65 - 14377 + 14448 - 66 + 65 70 - 41 + 82 @@ -8972,7 +8971,7 @@ 1 2 - 307 + 308 2 @@ -8991,41 +8990,41 @@ 43 - 251 + 253 184 - 279 - 840 + 280 + 849 184 - 951 - 1889 + 956 + 1895 184 - 2097 - 4180 + 2100 + 4183 184 - 4240 - 7018 + 4242 + 7021 184 - 7166 - 11389 + 7174 + 11394 184 - 12326 - 15119 + 12337 + 15120 184 - 15349 + 15374 30165 184 @@ -9067,48 +9066,53 @@ 7 - 28 + 32 184 - 41 - 98 + 43 + 99 184 - 103 - 122 + 104 + 123 184 - 123 - 130 - 205 - - - 132 - 138 + 124 + 133 184 - 138 + 133 + 139 + 164 + + + 139 142 - 205 + 164 142 144 - 184 + 143 144 - 148 - 184 + 147 + 226 - 149 + 148 155 - 164 + 205 + + + 155 + 158 + 41 @@ -9124,7 +9128,7 @@ 1 2 - 307 + 308 2 @@ -9143,36 +9147,36 @@ 20 - 151 + 152 184 - 196 - 585 + 199 + 589 184 - 622 - 1287 + 633 + 1290 184 - 1368 - 2342 + 1370 + 2344 184 - 2570 + 2574 3505 184 - 3522 + 3527 4711 184 - 4732 + 4734 5298 184 @@ -9200,7 +9204,7 @@ 1 2 - 307 + 308 2 @@ -9219,36 +9223,36 @@ 20 - 151 + 152 184 - 196 - 585 + 199 + 589 184 - 647 - 1289 + 651 + 1292 184 - 1368 - 2346 + 1370 + 2348 184 - 2573 + 2575 3511 184 - 3528 + 3533 4712 184 - 4735 + 4737 5324 184 @@ -9330,13 +9334,13 @@ 74 - 83 - 184 + 84 + 226 - 83 + 84 96 - 143 + 102 @@ -9352,67 +9356,67 @@ 1 5 - 16100 + 16134 5 9 - 16448 + 16483 9 15 - 15772 + 15805 15 23 - 15054 + 15085 23 32 - 15607 + 15640 32 44 - 14705 + 14736 44 60 - 14459 + 14489 60 80 - 15238 + 15250 80 103 - 14479 + 14531 103 130 - 14787 + 14757 130 - 159 - 14459 + 160 + 14880 - 159 - 193 - 14377 + 160 + 195 + 14551 - 193 + 195 299 - 9988 + 9536 @@ -9428,67 +9432,67 @@ 1 2 - 23463 + 23512 2 3 - 15525 + 15558 3 4 - 11321 + 11345 4 6 - 16018 + 16051 6 8 - 13454 + 13482 8 11 - 16469 + 16504 11 15 - 14459 + 14428 15 20 - 16674 + 16771 20 26 - 14972 + 14983 26 33 - 16120 + 16051 33 40 - 14726 + 14633 40 49 - 14726 + 14592 49 60 - 3548 + 3966 @@ -9504,27 +9508,27 @@ 1 2 - 95349 + 95469 2 3 - 49838 + 50005 3 4 - 29308 + 29370 4 6 - 15566 + 15599 6 11 - 1415 + 1438 @@ -9540,62 +9544,62 @@ 1 4 - 15792 + 15825 4 7 - 17412 + 17449 7 11 - 16448 + 16483 11 16 - 17310 + 17346 16 21 - 17269 + 17305 21 26 - 15115 + 15147 26 31 - 16264 + 16298 31 36 - 17679 + 17675 36 40 - 15341 + 15291 40 44 - 16592 + 16442 44 49 - 16735 + 16976 49 63 - 9516 + 9639 @@ -9611,67 +9615,62 @@ 1 4 - 17146 + 17182 4 7 - 16756 + 16791 7 11 - 16387 + 16421 11 16 - 16838 + 16874 16 21 - 15977 + 16010 21 26 - 14479 + 14510 26 32 - 16120 + 16154 32 - 37 - 14377 + 38 + 17490 - 37 - 42 - 15833 + 38 + 43 + 16134 - 42 - 46 - 14233 + 43 + 47 + 14469 - 46 - 51 - 17248 + 47 + 52 + 16565 - 51 - 59 - 14459 - - - 59 + 52 69 - 1620 + 13277 @@ -9687,12 +9686,12 @@ 1 2 - 225 + 226 2 4 - 225 + 226 4 @@ -9707,45 +9706,45 @@ 16 51 - 225 + 226 56 - 615 - 225 + 617 + 226 - 834 - 2288 - 225 + 835 + 2297 + 226 2328 - 4150 - 225 + 4152 + 226 4177 - 7135 - 225 + 7139 + 226 - 8237 - 11757 - 225 + 8241 + 11758 + 226 - 12358 + 12367 15463 - 225 + 226 - 15685 - 18241 - 225 + 15690 + 18245 + 226 - 18731 + 18733 19130 82 @@ -9778,52 +9777,52 @@ 6 12 - 225 + 226 12 41 - 225 + 226 50 - 113 - 225 + 114 + 226 - 113 + 115 128 - 225 + 226 128 - 135 + 137 205 - 135 - 139 + 137 + 142 246 - 139 - 146 - 205 + 142 + 147 + 143 - 146 + 147 148 - 205 + 123 148 - 152 + 151 246 - 152 - 153 - 41 + 151 + 163 + 184 @@ -9839,7 +9838,7 @@ 1 2 - 307 + 308 2 @@ -9854,47 +9853,47 @@ 8 15 - 225 + 226 18 - 53 - 225 + 54 + 226 74 491 - 225 + 226 - 512 - 1332 - 225 + 514 + 1335 + 226 - 1392 - 2419 - 225 + 1397 + 2422 + 226 - 2763 + 2764 3740 - 225 + 226 3801 - 4530 - 225 + 4533 + 226 - 4641 - 5303 - 225 + 4642 + 5304 + 226 5377 5735 - 225 + 226 5747 @@ -9915,7 +9914,7 @@ 1 2 - 266 + 267 2 @@ -9934,43 +9933,43 @@ 14 - 21 - 225 + 22 + 246 - 21 + 23 28 - 246 + 226 28 36 - 246 + 226 36 - 42 - 246 + 41 + 226 - 42 - 49 - 246 + 41 + 47 + 226 - 49 - 59 - 225 + 47 + 56 + 226 - 59 - 65 - 184 + 56 + 64 + 226 - 66 - 71 - 205 + 64 + 72 + 226 @@ -9986,7 +9985,7 @@ 1 2 - 307 + 308 2 @@ -10001,47 +10000,47 @@ 8 15 - 225 + 226 17 - 53 - 225 + 54 + 226 74 473 - 225 + 226 - 500 - 1302 - 225 + 502 + 1306 + 226 - 1356 + 1361 2389 - 225 + 226 - 2626 + 2627 3666 - 225 + 226 3731 - 4489 - 225 + 4491 + 226 - 4638 - 5281 - 225 + 4639 + 5282 + 226 - 5366 + 5367 5729 - 225 + 226 5734 @@ -10056,23 +10055,23 @@ numlines - 1406618 + 1383933 element_id - 1399561 + 1376990 num_lines - 102556 + 100902 num_code - 85620 + 84239 num_comment - 60216 + 59245 @@ -10086,12 +10085,12 @@ 1 2 - 1392505 + 1370047 2 3 - 7056 + 6942 @@ -10107,12 +10106,12 @@ 1 2 - 1393446 + 1370973 2 3 - 6115 + 6017 @@ -10128,7 +10127,7 @@ 1 2 - 1399561 + 1376990 @@ -10144,27 +10143,27 @@ 1 2 - 68684 + 67576 2 3 - 12231 + 12034 3 4 - 7527 + 7405 4 21 - 7997 + 7868 29 926 - 6115 + 6017 @@ -10180,27 +10179,27 @@ 1 2 - 71036 + 69890 2 3 - 12231 + 12034 3 4 - 8467 + 8331 4 6 - 9408 + 9257 6 7 - 1411 + 1388 @@ -10216,22 +10215,22 @@ 1 2 - 70095 + 68965 2 3 - 15054 + 14811 3 4 - 10820 + 10645 4 7 - 6586 + 6479 @@ -10247,27 +10246,27 @@ 1 2 - 53159 + 52302 2 3 - 14583 + 14348 3 5 - 6586 + 6479 5 42 - 6586 + 6479 44 927 - 4704 + 4628 @@ -10283,27 +10282,27 @@ 1 2 - 53159 + 52302 2 3 - 16935 + 16662 3 5 - 6115 + 6017 5 8 - 6586 + 6479 8 12 - 2822 + 2777 @@ -10319,27 +10318,27 @@ 1 2 - 53630 + 52765 2 3 - 15994 + 15737 3 5 - 7527 + 7405 5 7 - 5174 + 5091 7 10 - 3293 + 3239 @@ -10355,32 +10354,32 @@ 1 2 - 34812 + 34251 2 3 - 9408 + 9257 3 4 - 4233 + 4165 4 6 - 4704 + 4628 6 11 - 5174 + 5091 17 2622 - 1881 + 1851 @@ -10396,32 +10395,32 @@ 1 2 - 34812 + 34251 2 3 - 9408 + 9257 3 4 - 4233 + 4165 4 6 - 4704 + 4628 6 8 - 4704 + 4628 10 38 - 2352 + 2314 @@ -10437,32 +10436,32 @@ 1 2 - 34812 + 34251 2 3 - 9408 + 9257 3 4 - 4233 + 4165 4 6 - 4704 + 4628 6 10 - 4704 + 4628 10 37 - 2352 + 2314 @@ -10472,11 +10471,11 @@ diagnostics - 72312 + 72092 id - 72312 + 72092 severity @@ -10488,15 +10487,15 @@ error_message - 127 + 126 full_error_message - 62738 + 62547 location - 150 + 149 @@ -10510,7 +10509,7 @@ 1 2 - 72312 + 72092 @@ -10526,7 +10525,7 @@ 1 2 - 72312 + 72092 @@ -10542,7 +10541,7 @@ 1 2 - 72312 + 72092 @@ -10558,7 +10557,7 @@ 1 2 - 72312 + 72092 @@ -10574,7 +10573,7 @@ 1 2 - 72312 + 72092 @@ -10901,7 +10900,7 @@ 1 2 - 127 + 126 @@ -10917,7 +10916,7 @@ 1 2 - 127 + 126 @@ -11005,7 +11004,7 @@ 1 2 - 62726 + 62536 829 @@ -11026,7 +11025,7 @@ 1 2 - 62738 + 62547 @@ -11042,7 +11041,7 @@ 1 2 - 62738 + 62547 @@ -11058,7 +11057,7 @@ 1 2 - 62738 + 62547 @@ -11074,7 +11073,7 @@ 1 2 - 62738 + 62547 @@ -11111,7 +11110,7 @@ 1 2 - 150 + 149 @@ -11184,15 +11183,15 @@ files - 124196 + 122193 id - 124196 + 122193 name - 124196 + 122193 @@ -11206,7 +11205,7 @@ 1 2 - 124196 + 122193 @@ -11222,7 +11221,7 @@ 1 2 - 124196 + 122193 @@ -11232,15 +11231,15 @@ folders - 15994 + 15274 id - 15994 + 15274 name - 15994 + 15274 @@ -11254,7 +11253,7 @@ 1 2 - 15994 + 15274 @@ -11270,7 +11269,7 @@ 1 2 - 15994 + 15274 @@ -11280,15 +11279,15 @@ containerparent - 139250 + 136541 parent - 15994 + 15274 child - 139250 + 136541 @@ -11302,32 +11301,32 @@ 1 2 - 7056 + 6479 2 3 - 3293 + 3239 3 5 - 1411 + 1388 5 12 - 1411 + 1388 23 28 - 1411 + 1388 40 67 - 1411 + 1388 @@ -11343,7 +11342,7 @@ 1 2 - 139250 + 136541 @@ -11353,11 +11352,11 @@ fileannotations - 5253841 + 5237857 id - 5018 + 5002 kind @@ -11365,11 +11364,11 @@ name - 56101 + 55930 value - 47163 + 47020 @@ -11383,12 +11382,12 @@ 1 2 - 173 + 172 2 3 - 4844 + 4829 @@ -11404,42 +11403,42 @@ 1 102 - 393 + 391 102 225 - 381 + 380 227 299 - 381 + 380 301 452 - 404 + 403 452 555 - 381 + 380 559 626 - 381 + 380 626 716 - 381 + 380 729 904 - 381 + 380 904 @@ -11449,12 +11448,12 @@ 936 937 - 1456 + 1452 1083 2036 - 381 + 380 2293 @@ -11475,52 +11474,52 @@ 1 114 - 393 + 391 114 275 - 381 + 380 275 363 - 381 + 380 393 638 - 381 + 380 643 744 - 381 + 380 751 955 - 381 + 380 955 1087 - 381 + 380 1088 1501 - 254 + 253 1501 1502 - 1456 + 1452 1504 1874 - 381 + 380 1972 @@ -11604,62 +11603,62 @@ 1 2 - 9076 + 9048 2 3 - 6370 + 6351 3 5 - 4278 + 4265 5 9 - 4370 + 4357 9 14 - 4081 + 4069 14 18 - 4278 + 4265 18 20 - 4833 + 4818 20 34 - 4324 + 4311 34 128 - 4613 + 4599 128 229 - 4220 + 4207 229 387 - 4347 + 4334 387 434 - 1306 + 1302 @@ -11675,7 +11674,7 @@ 1 2 - 56101 + 55930 @@ -11691,62 +11690,62 @@ 1 2 - 9088 + 9060 2 3 - 8255 + 8230 3 4 - 2624 + 2616 4 6 - 4625 + 4610 6 9 - 4231 + 4219 9 14 - 4312 + 4299 14 17 - 4231 + 4219 17 22 - 4705 + 4691 22 41 - 4312 + 4299 41 82 - 4266 + 4253 82 157 - 4208 + 4195 158 1895 - 1237 + 1233 @@ -11762,67 +11761,67 @@ 1 2 - 7330 + 7308 2 5 - 2289 + 2282 5 8 - 3410 + 3400 8 15 - 3619 + 3608 15 17 - 2601 + 2593 17 19 - 4243 + 4230 19 34 - 3410 + 3400 34 189 - 3711 + 3700 189 201 - 3700 + 3688 201 266 - 3642 + 3631 266 321 - 3769 + 3757 322 399 - 4046 + 4034 399 435 - 1387 + 1383 @@ -11838,7 +11837,7 @@ 1 2 - 47152 + 47008 2 @@ -11859,67 +11858,67 @@ 1 2 - 7353 + 7331 2 5 - 2647 + 2639 5 8 - 3595 + 3585 8 15 - 3642 + 3631 15 17 - 2902 + 2893 17 19 - 3676 + 3665 19 29 - 3595 + 3585 29 39 - 3757 + 3746 39 48 - 3700 + 3688 48 74 - 3653 + 3642 74 102 - 3538 + 3527 102 119 - 3688 + 3677 119 146 - 1410 + 1406 @@ -11929,15 +11928,15 @@ inmacroexpansion - 109313388 + 109604497 id - 17941927 + 17996941 inv - 2682069 + 2695871 @@ -11951,37 +11950,37 @@ 1 3 - 1566019 + 1578646 3 5 - 1071345 + 1074226 5 6 - 1179815 + 1182860 6 7 - 4800003 + 4812393 7 8 - 6359384 + 6375799 8 9 - 2595250 + 2601948 9 150 - 370109 + 371065 @@ -11997,57 +11996,57 @@ 1 2 - 371856 + 377822 2 3 - 540113 + 543235 3 4 - 349917 + 350956 4 7 - 199815 + 200339 7 8 - 206290 + 206822 8 9 - 240882 + 241503 9 10 - 2201 + 2206 10 11 - 324132 + 324968 11 337 - 223913 + 224493 339 - 422 - 201383 + 423 + 206025 - 422 + 423 7616 - 21563 + 17496 @@ -12057,15 +12056,15 @@ affectedbymacroexpansion - 35540555 + 35632294 id - 5135280 + 5148536 inv - 2773183 + 2780342 @@ -12079,37 +12078,37 @@ 1 2 - 2804214 + 2811452 2 3 - 557797 + 559237 3 4 - 263804 + 264485 4 5 - 563439 + 564894 5 12 - 390272 + 391280 12 50 - 405706 + 406753 50 9900 - 150045 + 150433 @@ -12125,67 +12124,67 @@ 1 4 - 228162 + 228751 4 7 - 230824 + 231419 7 9 - 219560 + 220127 9 12 - 250043 + 250688 12 13 - 332588 + 333446 13 14 - 164899 + 165325 14 15 - 297600 + 298368 15 16 - 121336 + 121649 16 17 - 275457 + 276168 17 18 - 146329 + 146706 18 20 - 251085 + 251734 20 25 - 208109 + 208646 25 109 - 47186 + 47308 @@ -12195,19 +12194,19 @@ macroinvocations - 33889080 + 33818017 id - 33889080 + 33818017 macro_id - 81423 + 81175 location - 778830 + 776461 kind @@ -12225,7 +12224,7 @@ 1 2 - 33889080 + 33818017 @@ -12241,7 +12240,7 @@ 1 2 - 33889080 + 33818017 @@ -12257,7 +12256,7 @@ 1 2 - 33889080 + 33818017 @@ -12273,57 +12272,57 @@ 1 2 - 17575 + 17521 2 3 - 16973 + 16922 3 4 - 3700 + 3688 4 5 - 4879 + 4853 5 8 - 6047 + 6005 8 14 - 6440 + 6432 14 29 - 6313 + 6305 29 73 - 6220 + 6201 73 257 - 6139 + 6097 257 - 5769 - 6116 + 5161 + 6097 - 6272 + 5432 168296 - 1017 + 1048 @@ -12339,37 +12338,37 @@ 1 2 - 43498 + 43366 2 3 - 10649 + 10616 3 4 - 5284 + 5268 4 6 - 7018 + 6997 6 13 - 6636 + 6616 13 66 - 6151 + 6132 66 3614 - 2185 + 2178 @@ -12385,12 +12384,12 @@ 1 2 - 75538 + 75308 2 3 - 5885 + 5867 @@ -12406,37 +12405,37 @@ 1 2 - 321115 + 320046 2 3 - 177878 + 170824 3 4 - 47313 + 50732 4 5 - 59616 + 61717 5 9 - 68542 + 68887 9 23 - 58414 + 58340 23 244365 - 45949 + 45913 @@ -12452,12 +12451,12 @@ 1 2 - 731563 + 729337 2 350 - 47267 + 47123 @@ -12473,7 +12472,7 @@ 1 2 - 778830 + 776461 @@ -12492,8 +12491,8 @@ 11 - 2910469 - 2910470 + 2913248 + 2913249 11 @@ -12546,15 +12545,15 @@ macroparent - 30449647 + 30368148 id - 30449647 + 30368148 parent_id - 23693599 + 23632653 @@ -12568,7 +12567,7 @@ 1 2 - 30449647 + 30368148 @@ -12584,17 +12583,17 @@ 1 2 - 18303643 + 18259095 2 3 - 4539159 + 4525350 3 88 - 850796 + 848207 @@ -12604,15 +12603,15 @@ macrolocationbind - 3984515 + 4036896 id - 2778799 + 2826220 location - 1988392 + 2017729 @@ -12626,22 +12625,22 @@ 1 2 - 2183036 + 2225956 2 3 - 336432 + 340592 3 7 - 229808 + 230144 7 57 - 29522 + 29528 @@ -12657,22 +12656,22 @@ 1 2 - 1589539 + 1608672 2 3 - 169641 + 177047 3 8 - 154228 + 156640 8 723 - 74982 + 75368 @@ -12682,19 +12681,19 @@ macro_argument_unexpanded - 86159621 + 85909146 invocation - 26563044 + 26486648 argument_index - 763 + 760 text - 326029 + 325037 @@ -12708,22 +12707,22 @@ 1 2 - 7435302 + 7413109 2 3 - 10859530 + 10827242 3 4 - 6255563 + 6239771 4 67 - 2012648 + 2006525 @@ -12739,22 +12738,22 @@ 1 2 - 7506504 + 7484094 2 3 - 11009369 + 10976626 3 4 - 6086021 + 6070745 4 67 - 1961148 + 1955182 @@ -12770,7 +12769,7 @@ 41230 41231 - 670 + 668 41432 @@ -12778,8 +12777,8 @@ 57 - 715085 - 2297334 + 715366 + 2297717 34 @@ -12796,7 +12795,7 @@ 2 3 - 670 + 668 13 @@ -12822,57 +12821,57 @@ 1 2 - 40850 + 40726 2 3 - 65594 + 65394 3 4 - 15181 + 15135 4 5 - 45093 + 44945 5 8 - 25576 + 25510 8 12 - 16060 + 16000 12 16 - 22292 + 22213 16 23 - 26512 + 26420 23 43 - 24743 + 24691 43 - 164 - 24454 + 165 + 24391 - 164 + 165 521384 - 19667 + 19608 @@ -12888,17 +12887,17 @@ 1 2 - 235783 + 235066 2 3 - 79712 + 79469 3 9 - 10533 + 10501 @@ -12908,19 +12907,19 @@ macro_argument_expanded - 86159621 + 85909146 invocation - 26563044 + 26486648 argument_index - 763 + 760 text - 197580 + 196979 @@ -12934,22 +12933,22 @@ 1 2 - 7435302 + 7413109 2 3 - 10859530 + 10827242 3 4 - 6255563 + 6239771 4 67 - 2012648 + 2006525 @@ -12965,22 +12964,22 @@ 1 2 - 10745593 + 10713329 2 3 - 9372273 + 9344510 3 4 - 5305941 + 5293039 4 9 - 1139235 + 1135769 @@ -12996,7 +12995,7 @@ 41230 41231 - 670 + 668 41432 @@ -13004,8 +13003,8 @@ 57 - 715085 - 2297334 + 715366 + 2297717 34 @@ -13022,7 +13021,7 @@ 1 2 - 659 + 657 2 @@ -13048,62 +13047,62 @@ 1 2 - 24547 + 24472 2 3 - 41151 + 41025 3 4 - 6925 + 6904 4 5 - 16361 + 16311 5 6 - 2994 + 2985 6 7 - 23286 + 23204 7 9 - 15991 + 15953 9 15 - 16696 + 16622 15 31 - 15586 + 15527 31 97 - 15077 + 15054 97 775 - 15482 + 15446 775 - 1052906 - 3480 + 1052972 + 3469 @@ -13119,17 +13118,17 @@ 1 2 - 99992 + 99688 2 3 - 82834 + 82582 3 66 - 14753 + 14708 @@ -13139,19 +13138,19 @@ functions - 4726519 + 4628077 id - 4726519 + 4628077 name - 1934453 + 1902792 kind - 3293 + 3239 @@ -13165,7 +13164,7 @@ 1 2 - 4726519 + 4628077 @@ -13181,7 +13180,7 @@ 1 2 - 4726519 + 4628077 @@ -13197,22 +13196,22 @@ 1 2 - 1516701 + 1492704 2 3 - 154304 + 151816 3 5 - 151011 + 149038 5 - 1724 - 112435 + 1692 + 109233 @@ -13228,12 +13227,12 @@ 1 2 - 1933982 + 1902329 2 3 - 470 + 462 @@ -13249,37 +13248,37 @@ 6 7 - 470 + 462 64 65 - 470 + 462 173 174 - 470 + 462 195 196 - 470 + 462 - 1358 - 1359 - 470 + 1348 + 1349 + 462 - 2432 - 2433 - 470 + 2400 + 2401 + 462 - 5819 - 5820 - 470 + 5813 + 5814 + 462 @@ -13295,37 +13294,37 @@ 3 4 - 470 + 462 33 34 - 470 + 462 39 40 - 470 + 462 94 95 - 470 + 462 195 196 - 470 + 462 - 244 - 245 - 470 + 243 + 244 + 462 3505 3506 - 470 + 462 @@ -13335,15 +13334,15 @@ function_entry_point - 1177043 + 1158060 id - 1167163 + 1148340 entry_point - 1177043 + 1158060 @@ -13357,12 +13356,12 @@ 1 2 - 1157284 + 1138620 2 3 - 9879 + 9719 @@ -13378,7 +13377,7 @@ 1 2 - 1177043 + 1158060 @@ -13388,15 +13387,15 @@ function_return_type - 4734987 + 4636408 id - 4726519 + 4628077 return_type - 1016622 + 990970 @@ -13410,12 +13409,12 @@ 1 2 - 4719463 + 4621134 2 5 - 7056 + 6942 @@ -13431,22 +13430,22 @@ 1 2 - 523130 + 512842 2 3 - 390465 + 376763 3 - 11 - 78563 + 10 + 74519 - 11 - 2516 - 24462 + 10 + 2506 + 26845 @@ -13768,48 +13767,48 @@ purefunctions - 99447 + 99575 id - 99447 + 99575 function_deleted - 140661 + 138393 id - 140661 + 138393 function_defaulted - 74329 + 73130 id - 74329 + 73130 member_function_this_type - 553316 + 554460 id - 553316 + 554460 this_type - 189579 + 189971 @@ -13823,7 +13822,7 @@ 1 2 - 553316 + 554460 @@ -13839,32 +13838,32 @@ 1 2 - 68486 + 68628 2 3 - 45387 + 45481 3 4 - 30458 + 30521 4 5 - 15528 + 15560 5 7 - 15598 + 15631 7 66 - 14119 + 14149 @@ -13874,27 +13873,27 @@ fun_decls - 5102402 + 5000674 id - 5097227 + 4995583 function - 4578801 + 4485518 type_id - 1013329 + 989581 name - 1836130 + 1806056 location - 3461504 + 3404291 @@ -13908,7 +13907,7 @@ 1 2 - 5097227 + 4995583 @@ -13924,12 +13923,12 @@ 1 2 - 5092052 + 4990491 2 3 - 5174 + 5091 @@ -13945,7 +13944,7 @@ 1 2 - 5097227 + 4995583 @@ -13961,7 +13960,7 @@ 1 2 - 5097227 + 4995583 @@ -13977,17 +13976,17 @@ 1 2 - 4141291 + 4055063 2 3 - 363180 + 357323 3 7 - 74329 + 73130 @@ -14003,12 +14002,12 @@ 1 2 - 4536932 + 4444324 2 5 - 41869 + 41194 @@ -14024,7 +14023,7 @@ 1 2 - 4578801 + 4485518 @@ -14040,17 +14039,17 @@ 1 2 - 4198214 + 4111069 2 4 - 379175 + 373060 4 6 - 1411 + 1388 @@ -14066,22 +14065,22 @@ 1 2 - 445977 + 438785 2 3 - 453505 + 438785 3 - 9 - 79504 + 8 + 74519 - 9 - 2768 - 34342 + 8 + 2758 + 37491 @@ -14097,22 +14096,22 @@ 1 2 - 530657 + 522099 2 3 - 381998 + 368431 3 11 - 77152 + 75908 11 - 2477 - 23522 + 2467 + 23142 @@ -14128,17 +14127,17 @@ 1 2 - 883958 + 862297 2 5 - 90324 + 88867 5 - 822 - 39046 + 821 + 38416 @@ -14154,22 +14153,22 @@ 1 2 - 779520 + 759543 2 3 - 133134 + 130987 3 11 - 78093 + 76833 11 - 2030 - 22581 + 2029 + 22216 @@ -14185,27 +14184,27 @@ 1 2 - 1245257 + 1225174 2 3 - 269562 + 265215 3 4 - 80445 + 79148 4 6 - 138780 + 136541 6 - 1758 - 102085 + 1726 + 99976 @@ -14221,22 +14220,22 @@ 1 2 - 1425906 + 1402910 2 3 - 153363 + 150890 3 5 - 145366 + 143021 5 - 1708 - 111494 + 1676 + 109233 @@ -14252,17 +14251,17 @@ 1 2 - 1615964 + 1589440 2 4 - 135016 + 132839 4 - 954 - 85149 + 938 + 83776 @@ -14278,27 +14277,27 @@ 1 2 - 1266897 + 1246002 2 3 - 296377 + 291598 3 4 - 79504 + 78222 4 8 - 139250 + 137004 8 - 664 - 54100 + 661 + 53228 @@ -14314,17 +14313,17 @@ 1 2 - 2995767 + 2947454 2 4 - 302023 + 297152 4 55 - 163713 + 159684 @@ -14340,17 +14339,17 @@ 1 2 - 3063511 + 3014105 2 6 - 268621 + 264289 6 55 - 129371 + 125896 @@ -14366,12 +14365,12 @@ 1 2 - 3246042 + 3193692 2 27 - 215461 + 210598 @@ -14387,12 +14386,12 @@ 1 2 - 3285559 + 3231646 2 13 - 175944 + 172644 @@ -14402,48 +14401,48 @@ fun_def - 1964090 + 1932415 id - 1964090 + 1932415 fun_specialized - 26344 + 25919 id - 26344 + 25919 fun_implicit - 198 + 199 id - 198 + 199 fun_decl_specifiers - 2937433 + 2890060 id - 1710993 + 1683400 name - 2822 + 2777 @@ -14457,17 +14456,17 @@ 1 2 - 503371 + 495253 2 3 - 1188804 + 1169632 3 4 - 18817 + 18514 @@ -14483,32 +14482,32 @@ 50 51 - 470 + 462 203 204 - 470 + 462 209 210 - 470 + 462 657 658 - 470 + 462 2561 2562 - 470 + 462 2564 2565 - 470 + 462 @@ -14639,26 +14638,26 @@ fun_decl_empty_throws - 1978204 + 1926861 fun_decl - 1978204 + 1926861 fun_decl_noexcept - 61252 + 61185 fun_decl - 61252 + 61185 constant - 61148 + 61080 @@ -14672,7 +14671,7 @@ 1 2 - 61252 + 61185 @@ -14688,7 +14687,7 @@ 1 2 - 61043 + 60976 2 @@ -14703,22 +14702,22 @@ fun_decl_empty_noexcept - 888192 + 873868 fun_decl - 888192 + 873868 fun_decl_typedef_type - 2891 + 2888 fun_decl - 2891 + 2888 typedeftype_id @@ -14736,7 +14735,7 @@ 1 2 - 2891 + 2888 @@ -14752,7 +14751,7 @@ 1 2 - 42 + 41 2 @@ -14812,19 +14811,19 @@ param_decl_bind - 7472483 + 7337161 id - 7472483 + 7337161 index - 7997 + 7868 fun_decl - 4286657 + 4202714 @@ -14838,7 +14837,7 @@ 1 2 - 7472483 + 7337161 @@ -14854,7 +14853,7 @@ 1 2 - 7472483 + 7337161 @@ -14870,72 +14869,72 @@ 2 3 - 940 + 925 5 6 - 470 + 462 7 8 - 470 + 462 10 11 - 940 + 925 11 12 - 470 + 462 12 13 - 940 + 925 13 14 - 470 + 462 25 26 - 470 + 462 78 79 - 470 + 462 245 246 - 470 + 462 636 637 - 470 + 462 1713 1714 - 470 + 462 3991 3992 - 470 + 462 - 9112 - 9113 - 470 + 9080 + 9081 + 462 @@ -14951,72 +14950,72 @@ 2 3 - 940 + 925 5 6 - 470 + 462 7 8 - 470 + 462 10 11 - 940 + 925 11 12 - 470 + 462 12 13 - 940 + 925 13 14 - 470 + 462 25 26 - 470 + 462 78 79 - 470 + 462 245 246 - 470 + 462 636 637 - 470 + 462 1713 1714 - 470 + 462 3991 3992 - 470 + 462 - 9112 - 9113 - 470 + 9080 + 9081 + 462 @@ -15032,22 +15031,22 @@ 1 2 - 2409127 + 2355464 2 3 - 1071664 + 1054381 3 4 - 506664 + 498493 4 18 - 299200 + 294375 @@ -15063,22 +15062,22 @@ 1 2 - 2409127 + 2355464 2 3 - 1071664 + 1054381 3 4 - 506664 + 498493 4 18 - 299200 + 294375 @@ -15088,27 +15087,27 @@ var_decls - 8612362 + 8458657 id - 8543677 + 8391080 variable - 7520468 + 7384372 type_id - 2430768 + 2376755 name - 672730 + 661881 location - 5365378 + 5278849 @@ -15122,7 +15121,7 @@ 1 2 - 8543677 + 8391080 @@ -15138,12 +15137,12 @@ 1 2 - 8474993 + 8323503 2 3 - 68684 + 67576 @@ -15159,7 +15158,7 @@ 1 2 - 8543677 + 8391080 @@ -15175,7 +15174,7 @@ 1 2 - 8543677 + 8391080 @@ -15191,17 +15190,17 @@ 1 2 - 6658620 + 6536424 2 3 - 707072 + 695669 3 7 - 154775 + 152278 @@ -15217,12 +15216,12 @@ 1 2 - 7347346 + 7214042 2 4 - 173122 + 170330 @@ -15238,12 +15237,12 @@ 1 2 - 7403328 + 7269122 2 3 - 117139 + 115250 @@ -15259,12 +15258,12 @@ 1 2 - 6967700 + 6840519 2 4 - 552768 + 543853 @@ -15280,27 +15279,27 @@ 1 2 - 1505881 + 1466784 2 3 - 516073 + 507750 3 4 - 98792 + 97199 4 7 - 188646 + 185604 7 780 - 121373 + 119416 @@ -15316,22 +15315,22 @@ 1 2 - 1640427 + 1599160 2 3 - 491140 + 483219 3 7 - 188176 + 185141 7 742 - 111024 + 109233 @@ -15347,17 +15346,17 @@ 1 2 - 1918928 + 1873170 2 3 - 388584 + 382317 3 128 - 123255 + 121267 @@ -15373,22 +15372,22 @@ 1 2 - 1743924 + 1700988 2 3 - 406931 + 400368 3 8 - 190058 + 186993 8 595 - 89854 + 88405 @@ -15404,37 +15403,37 @@ 1 2 - 343892 + 338346 2 3 - 87502 + 86090 3 4 - 48925 + 48136 4 6 - 52218 + 51376 6 12 - 52689 + 51839 12 33 - 50807 + 49988 34 - 3281 - 36694 + 3249 + 36102 @@ -15450,37 +15449,37 @@ 1 2 - 371648 + 365654 2 3 - 78563 + 77296 3 4 - 45632 + 44896 4 6 - 49866 + 49062 6 14 - 53630 + 52765 14 56 - 51278 + 50451 56 - 3198 - 22110 + 3166 + 21754 @@ -15496,27 +15495,27 @@ 1 2 - 460561 + 453134 2 3 - 94558 + 93033 3 5 - 47044 + 46285 5 19 - 51278 + 50451 19 - 1979 - 19288 + 1947 + 18977 @@ -15532,32 +15531,32 @@ 1 2 - 381998 + 375837 2 3 - 91265 + 89793 3 5 - 60216 + 59245 5 9 - 51748 + 50913 9 21 - 50807 + 49988 21 1020 - 36694 + 36102 @@ -15573,17 +15572,17 @@ 1 2 - 4535991 + 4462838 2 3 - 550415 + 541539 3 - 1783 - 278971 + 1751 + 274472 @@ -15599,17 +15598,17 @@ 1 2 - 4940100 + 4860429 2 17 - 414458 + 407774 17 - 1779 - 10820 + 1747 + 10645 @@ -15625,12 +15624,12 @@ 1 2 - 5016782 + 4935875 2 - 1561 - 348596 + 1529 + 342974 @@ -15646,12 +15645,12 @@ 1 2 - 5361144 + 5274684 2 24 - 4233 + 4165 @@ -15661,26 +15660,26 @@ var_def - 4083897 + 4018035 id - 4083897 + 4018035 var_decl_specifiers - 334953 + 329552 id - 334953 + 329552 name - 1411 + 1388 @@ -15694,7 +15693,7 @@ 1 2 - 334953 + 329552 @@ -15710,17 +15709,17 @@ 15 16 - 470 + 462 66 67 - 470 + 462 631 632 - 470 + 462 @@ -15741,19 +15740,19 @@ type_decls - 3284148 + 3240440 id - 3284148 + 3240440 type_id - 3233340 + 3190452 location - 3204173 + 3161755 @@ -15767,7 +15766,7 @@ 1 2 - 3284148 + 3240440 @@ -15783,7 +15782,7 @@ 1 2 - 3284148 + 3240440 @@ -15799,12 +15798,12 @@ 1 2 - 3191471 + 3149258 2 5 - 41869 + 41194 @@ -15820,12 +15819,12 @@ 1 2 - 3191471 + 3149258 2 5 - 41869 + 41194 @@ -15841,12 +15840,12 @@ 1 2 - 3163244 + 3121487 2 20 - 40928 + 40268 @@ -15862,12 +15861,12 @@ 1 2 - 3163244 + 3121487 2 20 - 40928 + 40268 @@ -15877,45 +15876,45 @@ type_def - 2660813 + 2627159 id - 2660813 + 2627159 type_decl_top - 755998 + 743806 type_decl - 755998 + 743806 namespace_decls - 306973 + 307432 id - 306973 + 307432 namespace_id - 1414 + 1416 location - 306973 + 307432 bodylocation - 306973 + 307432 @@ -15929,7 +15928,7 @@ 1 2 - 306973 + 307432 @@ -15945,7 +15944,7 @@ 1 2 - 306973 + 307432 @@ -15961,7 +15960,7 @@ 1 2 - 306973 + 307432 @@ -15992,12 +15991,12 @@ 6 14 - 106 + 107 14 30 - 106 + 107 30 @@ -16012,21 +16011,21 @@ 80 127 - 106 + 107 129 199 - 106 + 107 201 504 - 106 + 107 512 - 12128 + 12133 69 @@ -16058,12 +16057,12 @@ 6 14 - 106 + 107 14 30 - 106 + 107 30 @@ -16078,21 +16077,21 @@ 80 127 - 106 + 107 129 199 - 106 + 107 201 504 - 106 + 107 512 - 12128 + 12133 69 @@ -16124,12 +16123,12 @@ 6 14 - 106 + 107 14 30 - 106 + 107 30 @@ -16144,21 +16143,21 @@ 80 127 - 106 + 107 129 199 - 106 + 107 201 504 - 106 + 107 512 - 12128 + 12133 69 @@ -16175,7 +16174,7 @@ 1 2 - 306973 + 307432 @@ -16191,7 +16190,7 @@ 1 2 - 306973 + 307432 @@ -16207,7 +16206,7 @@ 1 2 - 306973 + 307432 @@ -16223,7 +16222,7 @@ 1 2 - 306973 + 307432 @@ -16239,7 +16238,7 @@ 1 2 - 306973 + 307432 @@ -16255,7 +16254,7 @@ 1 2 - 306973 + 307432 @@ -16265,19 +16264,19 @@ usings - 374941 + 369357 id - 374941 + 369357 element_id - 318488 + 313815 location - 249804 + 246238 @@ -16291,7 +16290,7 @@ 1 2 - 374941 + 369357 @@ -16307,7 +16306,7 @@ 1 2 - 374941 + 369357 @@ -16323,17 +16322,17 @@ 1 2 - 263917 + 260123 2 3 - 53159 + 52302 3 5 - 1411 + 1388 @@ -16349,17 +16348,17 @@ 1 2 - 263917 + 260123 2 3 - 53159 + 52302 3 5 - 1411 + 1388 @@ -16375,22 +16374,22 @@ 1 2 - 203700 + 200878 2 4 - 11290 + 11108 4 5 - 31519 + 31011 5 11 - 3293 + 3239 @@ -16406,22 +16405,22 @@ 1 2 - 203700 + 200878 2 4 - 11290 + 11108 4 5 - 31519 + 31011 5 11 - 3293 + 3239 @@ -16431,15 +16430,15 @@ using_container - 478100 + 476668 parent - 11296 + 11285 child - 303147 + 302247 @@ -16453,42 +16452,42 @@ 1 2 - 3353 + 3365 2 4 - 959 + 956 4 6 - 427 + 426 6 7 - 2555 + 2547 7 17 - 925 + 922 19 143 - 786 + 783 178 179 - 1329 + 1325 179 183 - 878 + 876 201 @@ -16509,22 +16508,22 @@ 1 2 - 223585 + 222928 2 3 - 52979 + 52818 3 11 - 24396 + 24322 13 41 - 2185 + 2178 @@ -16534,27 +16533,27 @@ static_asserts - 130418 + 130562 id - 130418 + 130562 condition - 130418 + 130562 message - 29456 + 29488 location - 16774 + 16793 enclosing - 1942 + 1944 @@ -16568,7 +16567,7 @@ 1 2 - 130418 + 130562 @@ -16584,7 +16583,7 @@ 1 2 - 130418 + 130562 @@ -16600,7 +16599,7 @@ 1 2 - 130418 + 130562 @@ -16616,7 +16615,7 @@ 1 2 - 130418 + 130562 @@ -16632,7 +16631,7 @@ 1 2 - 130418 + 130562 @@ -16648,7 +16647,7 @@ 1 2 - 130418 + 130562 @@ -16664,7 +16663,7 @@ 1 2 - 130418 + 130562 @@ -16680,7 +16679,7 @@ 1 2 - 130418 + 130562 @@ -16696,7 +16695,7 @@ 1 2 - 21949 + 21973 2 @@ -16706,22 +16705,22 @@ 3 4 - 2766 + 2769 4 11 - 1420 + 1422 12 17 - 2376 + 2379 17 513 - 540 + 541 @@ -16737,7 +16736,7 @@ 1 2 - 21949 + 21973 2 @@ -16747,22 +16746,22 @@ 3 4 - 2766 + 2769 4 11 - 1420 + 1422 12 17 - 2376 + 2379 17 513 - 540 + 541 @@ -16778,12 +16777,12 @@ 1 2 - 27343 + 27373 2 33 - 2112 + 2114 @@ -16799,7 +16798,7 @@ 1 2 - 23363 + 23389 2 @@ -16809,17 +16808,17 @@ 3 4 - 2565 + 2568 4 11 - 1263 + 1265 12 21 - 2074 + 2077 @@ -16835,22 +16834,22 @@ 1 2 - 3131 + 3134 2 3 - 2697 + 2700 3 4 - 1307 + 1309 5 6 - 3621 + 3625 6 @@ -16860,7 +16859,7 @@ 14 15 - 2049 + 2051 16 @@ -16870,12 +16869,12 @@ 17 18 - 3401 + 3405 19 52 - 345 + 346 @@ -16891,22 +16890,22 @@ 1 2 - 3131 + 3134 2 3 - 2697 + 2700 3 4 - 1307 + 1309 5 6 - 3621 + 3625 6 @@ -16916,7 +16915,7 @@ 14 15 - 2049 + 2051 16 @@ -16926,12 +16925,12 @@ 17 18 - 3401 + 3405 19 52 - 345 + 346 @@ -16947,17 +16946,17 @@ 1 2 - 4627 + 4632 2 3 - 5941 + 5948 3 4 - 6023 + 6029 4 @@ -16978,22 +16977,22 @@ 1 2 - 3734 + 3738 2 3 - 6111 + 6118 3 4 - 1081 + 1082 4 5 - 3590 + 3594 5 @@ -17003,7 +17002,7 @@ 13 14 - 2049 + 2051 16 @@ -17024,7 +17023,7 @@ 1 2 - 1370 + 1372 2 @@ -17060,7 +17059,7 @@ 1 2 - 1370 + 1372 2 @@ -17096,12 +17095,12 @@ 1 2 - 1540 + 1542 2 5 - 150 + 151 5 @@ -17127,7 +17126,7 @@ 1 2 - 1527 + 1529 2 @@ -17152,23 +17151,23 @@ params - 6826097 + 6699348 id - 6660502 + 6536424 function - 3940413 + 3860202 index - 7997 + 7868 type_id - 2234594 + 2182819 @@ -17182,7 +17181,7 @@ 1 2 - 6660502 + 6536424 @@ -17198,7 +17197,7 @@ 1 2 - 6660502 + 6536424 @@ -17214,12 +17213,12 @@ 1 2 - 6535365 + 6413305 2 4 - 125137 + 123119 @@ -17235,22 +17234,22 @@ 1 2 - 2303278 + 2249470 2 3 - 960640 + 945147 3 4 - 433276 + 426288 4 18 - 243217 + 239295 @@ -17266,22 +17265,22 @@ 1 2 - 2303278 + 2249470 2 3 - 960640 + 945147 3 4 - 433276 + 426288 4 18 - 243217 + 239295 @@ -17297,22 +17296,22 @@ 1 2 - 2605772 + 2547085 2 3 - 831269 + 817863 3 4 - 349537 + 343900 4 12 - 153834 + 151353 @@ -17328,72 +17327,72 @@ 2 3 - 940 + 925 4 5 - 470 + 462 6 7 - 470 + 462 8 9 - 940 + 925 9 10 - 470 + 462 10 11 - 940 + 925 11 12 - 470 + 462 19 20 - 470 + 462 64 65 - 470 + 462 194 195 - 470 + 462 517 518 - 470 + 462 1438 1439 - 470 + 462 3480 3481 - 470 + 462 - 8376 - 8377 - 470 + 8340 + 8341 + 462 @@ -17409,72 +17408,72 @@ 2 3 - 940 + 925 4 5 - 470 + 462 6 7 - 470 + 462 8 9 - 940 + 925 9 10 - 470 + 462 10 11 - 940 + 925 11 12 - 470 + 462 19 20 - 470 + 462 64 65 - 470 + 462 194 195 - 470 + 462 517 518 - 470 + 462 1438 1439 - 470 + 462 3480 3481 - 470 + 462 - 8376 - 8377 - 470 + 8340 + 8341 + 462 @@ -17490,67 +17489,67 @@ 1 2 - 940 + 925 3 4 - 470 + 462 4 5 - 470 + 462 5 6 - 470 + 462 6 7 - 1411 + 1388 7 8 - 940 + 925 11 12 - 470 + 462 42 43 - 470 + 462 106 107 - 470 + 462 228 229 - 470 + 462 582 583 - 470 + 462 1275 1276 - 470 + 462 - 3666 - 3667 - 470 + 3632 + 3633 + 462 @@ -17566,22 +17565,22 @@ 1 2 - 1525639 + 1485298 2 3 - 446448 + 439248 3 8 - 171710 + 168941 8 - 522 - 90795 + 520 + 89330 @@ -17597,22 +17596,22 @@ 1 2 - 1749099 + 1705154 2 3 - 250745 + 246701 3 9 - 169829 + 167090 9 - 506 - 64920 + 504 + 63873 @@ -17628,17 +17627,17 @@ 1 2 - 1801788 + 1756993 2 3 - 353301 + 347603 3 13 - 79504 + 78222 @@ -17648,15 +17647,15 @@ overrides - 159824 + 160001 new - 125023 + 125162 old - 15095 + 15112 @@ -17670,12 +17669,12 @@ 1 2 - 90229 + 90329 2 3 - 34787 + 34826 3 @@ -17696,37 +17695,37 @@ 1 2 - 7922 + 7930 2 3 - 1905 + 1907 3 4 - 987 + 988 4 5 - 1320 + 1321 5 11 - 1213 + 1214 11 60 - 1163 + 1164 61 231 - 584 + 585 @@ -17736,19 +17735,19 @@ membervariables - 1051873 + 1054757 id - 1050083 + 1052962 type_id - 326294 + 327188 name - 449643 + 450876 @@ -17762,12 +17761,12 @@ 1 2 - 1048373 + 1051247 2 4 - 1710 + 1715 @@ -17783,7 +17782,7 @@ 1 2 - 1050083 + 1052962 @@ -17799,22 +17798,22 @@ 1 2 - 241965 + 242629 2 3 - 51670 + 51812 3 10 - 25417 + 25487 10 4152 - 7239 + 7259 @@ -17830,22 +17829,22 @@ 1 2 - 254137 + 254834 2 3 - 46261 + 46387 3 40 - 24502 + 24570 41 2031 - 1392 + 1396 @@ -17861,22 +17860,22 @@ 1 2 - 294034 + 294840 2 3 - 86157 + 86394 3 5 - 41010 + 41122 5 646 - 28440 + 28518 @@ -17892,17 +17891,17 @@ 1 2 - 366230 + 367234 2 3 - 51511 + 51652 3 650 - 31901 + 31988 @@ -17912,19 +17911,19 @@ globalvariables - 318724 + 300716 id - 318724 + 300708 type_id - 7852 + 1405 name - 86905 + 294738 @@ -17938,7 +17937,12 @@ 1 2 - 318724 + 300700 + + + 2 + 3 + 8 @@ -17954,7 +17958,7 @@ 1 2 - 318724 + 300708 @@ -17970,32 +17974,27 @@ 1 2 - 5130 + 977 2 3 - 209 + 159 3 - 4 - 628 + 7 + 114 - 4 - 9 - 628 + 7 + 77 + 106 - 18 - 31 - 628 - - - 35 - 1226 - 628 + 83 + 169397 + 49 @@ -18011,32 +18010,27 @@ 1 2 - 5130 + 1010 2 3 - 209 + 135 3 - 4 - 628 + 7 + 112 - 4 - 9 - 628 + 7 + 105 + 106 - 14 - 25 - 628 - - - 35 - 209 - 628 + 106 + 168448 + 42 @@ -18052,17 +18046,12 @@ 1 2 - 75911 + 290989 2 - 11 - 6596 - - - 11 - 449 - 4397 + 33 + 3749 @@ -18078,12 +18067,12 @@ 1 2 - 76644 + 294142 2 - 3 - 10261 + 12 + 596 @@ -18093,19 +18082,19 @@ localvariables - 581690 + 581169 id - 581690 + 581169 type_id - 37909 + 37871 name - 91402 + 91320 @@ -18119,7 +18108,7 @@ 1 2 - 581690 + 581169 @@ -18135,7 +18124,7 @@ 1 2 - 581690 + 581169 @@ -18151,32 +18140,32 @@ 1 2 - 21207 + 21188 2 3 - 5413 + 5408 3 4 - 2483 + 2477 4 7 - 3412 + 3409 7 18 - 2874 + 2876 18 15847 - 2517 + 2511 @@ -18192,22 +18181,22 @@ 1 2 - 26994 + 26970 2 3 - 4606 + 4602 3 5 - 2950 + 2943 5 31 - 2845 + 2842 31 @@ -18228,27 +18217,27 @@ 1 2 - 57570 + 57518 2 3 - 14419 + 14406 3 5 - 8388 + 8381 5 15 - 7048 + 7041 15 5176 - 3975 + 3972 @@ -18264,17 +18253,17 @@ 1 2 - 77214 + 77144 2 3 - 7481 + 7474 3 1486 - 6707 + 6701 @@ -18284,15 +18273,15 @@ autoderivation - 149519 + 149355 var - 149519 + 149355 derivation_type - 523 + 522 @@ -18306,7 +18295,7 @@ 1 2 - 149519 + 149355 @@ -18352,19 +18341,19 @@ enumconstants - 240613 + 241273 id - 240613 + 241273 parent - 28401 + 28478 index - 10183 + 10210 type_id @@ -18372,11 +18361,11 @@ name - 240335 + 240994 location - 220605 + 221210 @@ -18390,7 +18379,7 @@ 1 2 - 240613 + 241273 @@ -18406,7 +18395,7 @@ 1 2 - 240613 + 241273 @@ -18422,7 +18411,7 @@ 1 2 - 240613 + 241273 @@ -18438,7 +18427,7 @@ 1 2 - 240613 + 241273 @@ -18454,7 +18443,7 @@ 1 2 - 240613 + 241273 @@ -18470,57 +18459,57 @@ 1 2 - 994 + 997 2 3 - 4017 + 4028 3 4 - 5767 + 5783 4 5 - 3898 + 3908 5 6 - 3062 + 3071 6 7 - 1829 + 1834 7 8 - 1471 + 1475 8 11 - 2585 + 2592 11 17 - 2346 + 2353 17 84 - 2147 + 2153 94 257 - 278 + 279 @@ -18536,57 +18525,57 @@ 1 2 - 994 + 997 2 3 - 4017 + 4028 3 4 - 5767 + 5783 4 5 - 3898 + 3908 5 6 - 3062 + 3071 6 7 - 1829 + 1834 7 8 - 1471 + 1475 8 11 - 2585 + 2592 11 17 - 2346 + 2353 17 84 - 2147 + 2153 94 257 - 278 + 279 @@ -18602,7 +18591,7 @@ 1 2 - 28401 + 28478 @@ -18618,57 +18607,57 @@ 1 2 - 994 + 997 2 3 - 4017 + 4028 3 4 - 5767 + 5783 4 5 - 3898 + 3908 5 6 - 3062 + 3071 6 7 - 1829 + 1834 7 8 - 1471 + 1475 8 11 - 2585 + 2592 11 17 - 2346 + 2353 17 84 - 2147 + 2153 94 257 - 278 + 279 @@ -18684,52 +18673,52 @@ 1 2 - 1431 + 1435 2 3 - 4176 + 4188 3 4 - 5807 + 5823 4 5 - 3858 + 3868 5 6 - 3062 + 3071 6 7 - 1789 + 1794 7 8 - 1392 + 1396 8 11 - 2505 + 2512 11 17 - 2227 + 2233 17 257 - 2147 + 2153 @@ -18745,47 +18734,47 @@ 1 2 - 2028 + 2034 2 3 - 1630 + 1635 3 4 - 1750 + 1755 4 5 - 875 + 877 5 9 - 795 + 797 9 12 - 835 + 837 12 20 - 875 + 877 20 69 - 795 + 797 77 715 - 596 + 598 @@ -18801,47 +18790,47 @@ 1 2 - 2028 + 2034 2 3 - 1630 + 1635 3 4 - 1750 + 1755 4 5 - 875 + 877 5 9 - 795 + 797 9 12 - 835 + 837 12 20 - 875 + 877 20 69 - 795 + 797 77 715 - 596 + 598 @@ -18857,7 +18846,7 @@ 1 2 - 10183 + 10210 @@ -18873,47 +18862,47 @@ 1 2 - 2028 + 2034 2 3 - 1630 + 1635 3 4 - 1750 + 1755 4 5 - 875 + 877 5 9 - 795 + 797 9 12 - 835 + 837 12 20 - 875 + 877 20 69 - 795 + 797 77 712 - 596 + 598 @@ -18929,47 +18918,47 @@ 1 2 - 2028 + 2034 2 3 - 1630 + 1635 3 4 - 1750 + 1755 4 5 - 875 + 877 5 9 - 795 + 797 9 12 - 835 + 837 12 20 - 875 + 877 20 69 - 795 + 797 77 715 - 596 + 598 @@ -19065,12 +19054,12 @@ 1 2 - 240056 + 240714 2 3 - 278 + 279 @@ -19086,12 +19075,12 @@ 1 2 - 240056 + 240714 2 3 - 278 + 279 @@ -19107,7 +19096,7 @@ 1 2 - 240335 + 240994 @@ -19123,7 +19112,7 @@ 1 2 - 240335 + 240994 @@ -19139,12 +19128,12 @@ 1 2 - 240056 + 240714 2 3 - 278 + 279 @@ -19160,12 +19149,12 @@ 1 2 - 219849 + 220452 2 205 - 755 + 757 @@ -19181,7 +19170,7 @@ 1 2 - 220605 + 221210 @@ -19197,12 +19186,12 @@ 1 2 - 219849 + 220452 2 205 - 755 + 757 @@ -19218,7 +19207,7 @@ 1 2 - 220605 + 221210 @@ -19234,12 +19223,12 @@ 1 2 - 219849 + 220452 2 205 - 755 + 757 @@ -19249,31 +19238,31 @@ builtintypes - 22110 + 21754 id - 22110 + 21754 name - 22110 + 21754 kind - 22110 + 21754 size - 3293 + 3239 sign - 1411 + 1388 alignment - 2352 + 2314 @@ -19287,7 +19276,7 @@ 1 2 - 22110 + 21754 @@ -19303,7 +19292,7 @@ 1 2 - 22110 + 21754 @@ -19319,7 +19308,7 @@ 1 2 - 22110 + 21754 @@ -19335,7 +19324,7 @@ 1 2 - 22110 + 21754 @@ -19351,7 +19340,7 @@ 1 2 - 22110 + 21754 @@ -19367,7 +19356,7 @@ 1 2 - 22110 + 21754 @@ -19383,7 +19372,7 @@ 1 2 - 22110 + 21754 @@ -19399,7 +19388,7 @@ 1 2 - 22110 + 21754 @@ -19415,7 +19404,7 @@ 1 2 - 22110 + 21754 @@ -19431,7 +19420,7 @@ 1 2 - 22110 + 21754 @@ -19447,7 +19436,7 @@ 1 2 - 22110 + 21754 @@ -19463,7 +19452,7 @@ 1 2 - 22110 + 21754 @@ -19479,7 +19468,7 @@ 1 2 - 22110 + 21754 @@ -19495,7 +19484,7 @@ 1 2 - 22110 + 21754 @@ -19511,7 +19500,7 @@ 1 2 - 22110 + 21754 @@ -19527,37 +19516,37 @@ 1 2 - 470 + 462 2 3 - 470 + 462 4 5 - 470 + 462 7 8 - 470 + 462 9 10 - 470 + 462 11 12 - 470 + 462 13 14 - 470 + 462 @@ -19573,37 +19562,37 @@ 1 2 - 470 + 462 2 3 - 470 + 462 4 5 - 470 + 462 7 8 - 470 + 462 9 10 - 470 + 462 11 12 - 470 + 462 13 14 - 470 + 462 @@ -19619,37 +19608,37 @@ 1 2 - 470 + 462 2 3 - 470 + 462 4 5 - 470 + 462 7 8 - 470 + 462 9 10 - 470 + 462 11 12 - 470 + 462 13 14 - 470 + 462 @@ -19665,12 +19654,12 @@ 1 2 - 940 + 925 3 4 - 2352 + 2314 @@ -19686,12 +19675,12 @@ 1 2 - 2352 + 2314 2 3 - 940 + 925 @@ -19707,17 +19696,17 @@ 6 7 - 470 + 462 12 13 - 470 + 462 29 30 - 470 + 462 @@ -19733,17 +19722,17 @@ 6 7 - 470 + 462 12 13 - 470 + 462 29 30 - 470 + 462 @@ -19759,17 +19748,17 @@ 6 7 - 470 + 462 12 13 - 470 + 462 29 30 - 470 + 462 @@ -19785,12 +19774,12 @@ 5 6 - 940 + 925 7 8 - 470 + 462 @@ -19806,7 +19795,7 @@ 5 6 - 1411 + 1388 @@ -19822,27 +19811,27 @@ 4 5 - 470 + 462 8 9 - 470 + 462 10 11 - 470 + 462 12 13 - 470 + 462 13 14 - 470 + 462 @@ -19858,27 +19847,27 @@ 4 5 - 470 + 462 8 9 - 470 + 462 10 11 - 470 + 462 12 13 - 470 + 462 13 14 - 470 + 462 @@ -19894,27 +19883,27 @@ 4 5 - 470 + 462 8 9 - 470 + 462 10 11 - 470 + 462 12 13 - 470 + 462 13 14 - 470 + 462 @@ -19930,12 +19919,12 @@ 1 2 - 470 + 462 2 3 - 1881 + 1851 @@ -19951,7 +19940,7 @@ 3 4 - 2352 + 2314 @@ -19961,23 +19950,23 @@ derivedtypes - 4413676 + 4324907 id - 4413676 + 4324907 name - 2205427 + 2161065 kind - 2822 + 2777 type_id - 2729498 + 2666964 @@ -19991,7 +19980,7 @@ 1 2 - 4413676 + 4324907 @@ -20007,7 +19996,7 @@ 1 2 - 4413676 + 4324907 @@ -20023,7 +20012,7 @@ 1 2 - 4413676 + 4324907 @@ -20039,17 +20028,17 @@ 1 2 - 1935864 + 1901404 2 5 - 171240 + 162924 5 - 1173 - 98322 + 1167 + 96736 @@ -20065,12 +20054,12 @@ 1 2 - 2204486 + 2160139 2 3 - 940 + 925 @@ -20086,17 +20075,17 @@ 1 2 - 1935864 + 1901404 2 5 - 171240 + 162924 5 - 1155 - 98322 + 1149 + 96736 @@ -20110,34 +20099,34 @@ 12 - 199 - 200 - 470 + 236 + 237 + 462 - 1103 - 1104 - 470 + 1085 + 1086 + 462 - 1154 - 1155 - 470 + 1148 + 1149 + 462 - 1223 - 1224 - 470 + 1220 + 1221 + 462 - 2193 - 2194 - 470 + 2177 + 2178 + 462 - 3510 - 3511 - 470 + 3478 + 3479 + 462 @@ -20153,32 +20142,32 @@ 1 2 - 470 + 462 - 164 - 165 - 470 + 201 + 202 + 462 - 611 - 612 - 470 + 609 + 610 + 462 - 783 - 784 - 470 + 768 + 769 + 462 - 1149 - 1150 - 470 + 1136 + 1137 + 462 - 1982 - 1983 - 470 + 1956 + 1957 + 462 @@ -20194,32 +20183,32 @@ 84 85 - 470 + 462 - 1103 - 1104 - 470 + 1085 + 1086 + 462 - 1154 - 1155 - 470 + 1148 + 1149 + 462 - 1223 - 1224 - 470 + 1220 + 1221 + 462 - 2148 - 2149 - 470 + 2132 + 2133 + 462 - 3510 - 3511 - 470 + 3478 + 3479 + 462 @@ -20235,22 +20224,22 @@ 1 2 - 1686060 + 1649148 2 3 - 568763 + 558201 3 4 - 367414 + 354083 4 - 54 - 107260 + 72 + 105530 @@ -20266,22 +20255,22 @@ 1 2 - 1697350 + 1660257 2 3 - 561236 + 550796 3 4 - 364591 + 351306 4 - 54 - 106319 + 72 + 104605 @@ -20297,22 +20286,22 @@ 1 2 - 1690294 + 1653314 2 3 - 572526 + 561904 3 4 - 366473 + 353157 4 6 - 100203 + 98587 @@ -20322,19 +20311,19 @@ pointerishsize - 3312399 + 3208041 id - 3312399 + 3208041 size - 35 + 462 alignment - 35 + 462 @@ -20348,7 +20337,7 @@ 1 2 - 3312399 + 3208041 @@ -20364,7 +20353,7 @@ 1 2 - 3312399 + 3208041 @@ -20378,9 +20367,9 @@ 12 - 94071 - 94072 - 35 + 6931 + 6932 + 462 @@ -20396,7 +20385,7 @@ 1 2 - 35 + 462 @@ -20410,9 +20399,9 @@ 12 - 94071 - 94072 - 35 + 6931 + 6932 + 462 @@ -20428,7 +20417,7 @@ 1 2 - 35 + 462 @@ -20438,23 +20427,23 @@ arraysizes - 71507 + 87479 id - 71507 + 87479 num_elements - 23522 + 31474 bytesize - 26344 + 32862 alignment - 1881 + 1851 @@ -20468,7 +20457,7 @@ 1 2 - 71507 + 87479 @@ -20484,7 +20473,7 @@ 1 2 - 71507 + 87479 @@ -20500,7 +20489,7 @@ 1 2 - 71507 + 87479 @@ -20516,32 +20505,27 @@ 1 2 - 2352 + 1851 2 3 - 15054 + 23605 3 - 4 - 1411 + 5 + 2777 - 4 - 6 - 1881 + 5 + 13 + 2777 - 6 - 11 - 1881 - - - 12 + 13 14 - 940 + 462 @@ -20557,22 +20541,17 @@ 1 2 - 18347 + 26382 2 3 - 2352 + 2314 3 - 4 - 1881 - - - 4 7 - 940 + 2777 @@ -20588,22 +20567,17 @@ 1 2 - 18347 + 26382 2 3 - 2822 + 2777 3 - 4 - 1411 - - - 4 5 - 940 + 2314 @@ -20619,27 +20593,27 @@ 1 2 - 2822 + 1851 2 3 - 16935 + 23605 3 4 - 3293 + 3239 4 - 8 - 2352 + 6 + 2314 - 11 + 7 16 - 940 + 1851 @@ -20655,17 +20629,17 @@ 1 2 - 21640 + 27308 2 3 - 3293 + 3702 3 5 - 1411 + 1851 @@ -20681,17 +20655,17 @@ 1 2 - 22110 + 27308 2 3 - 3293 + 4628 4 5 - 940 + 925 @@ -20707,22 +20681,22 @@ 5 6 - 470 + 462 16 17 - 470 + 462 31 32 - 470 + 462 - 100 - 101 - 470 + 137 + 138 + 462 @@ -20738,17 +20712,17 @@ 4 5 - 470 + 462 7 8 - 940 + 925 - 50 - 51 - 470 + 68 + 69 + 462 @@ -20764,22 +20738,22 @@ 4 5 - 470 + 462 7 8 - 470 + 462 8 9 - 470 + 462 - 50 - 51 - 470 + 68 + 69 + 462 @@ -20789,15 +20763,15 @@ typedefbase - 1736730 + 1722225 id - 1736730 + 1722225 type_id - 810523 + 809049 @@ -20811,7 +20785,7 @@ 1 2 - 1736730 + 1722225 @@ -20827,22 +20801,22 @@ 1 2 - 629130 + 629268 2 3 - 85019 + 85025 3 6 - 64576 + 63319 6 - 5443 - 31797 + 5437 + 31435 @@ -20852,23 +20826,23 @@ decltypes - 355894 + 172290 id - 23951 + 17347 expr - 355894 + 172290 base_type - 17180 + 10357 parentheses_would_change_meaning - 18 + 19 @@ -20882,37 +20856,37 @@ 1 2 - 5960 + 5307 2 3 - 7491 + 6436 3 - 4 - 3259 + 5 + 1128 - 4 - 7 - 1999 + 5 + 12 + 1346 - 7 + 12 18 - 1980 + 1406 18 - 42 - 2035 + 46 + 1307 - 42 - 1767 - 1224 + 51 + 740 + 415 @@ -20928,7 +20902,7 @@ 1 2 - 23951 + 17347 @@ -20944,7 +20918,7 @@ 1 2 - 23951 + 17347 @@ -20960,7 +20934,7 @@ 1 2 - 355894 + 172290 @@ -20976,7 +20950,7 @@ 1 2 - 355894 + 172290 @@ -20992,7 +20966,7 @@ 1 2 - 355894 + 172290 @@ -21008,17 +20982,17 @@ 1 2 - 14479 + 7525 2 3 - 2215 + 2356 - 3 + 4 149 - 486 + 475 @@ -21034,37 +21008,37 @@ 1 2 - 1800 + 752 2 3 - 7347 + 6376 3 4 - 3079 + 356 4 5 - 1422 + 1009 5 - 11 - 1368 + 7 + 792 - 11 - 43 - 1566 + 7 + 31 + 792 - 43 - 6569 - 594 + 31 + 3872 + 277 @@ -21080,7 +21054,7 @@ 1 2 - 17180 + 10357 @@ -21094,9 +21068,9 @@ 12 - 1330 - 1331 - 18 + 876 + 877 + 19 @@ -21110,9 +21084,9 @@ 12 - 19762 - 19763 - 18 + 8700 + 8701 + 19 @@ -21126,9 +21100,9 @@ 12 - 954 - 955 - 18 + 523 + 524 + 19 @@ -21138,19 +21112,19 @@ usertypes - 5343268 + 5230250 id - 5343268 + 5230250 name - 1383096 + 1349682 kind - 5174 + 5091 @@ -21164,7 +21138,7 @@ 1 2 - 5343268 + 5230250 @@ -21180,7 +21154,7 @@ 1 2 - 5343268 + 5230250 @@ -21196,27 +21170,27 @@ 1 2 - 1002039 + 980787 2 3 - 161361 + 154593 3 7 - 107730 + 104605 7 - 80 - 104437 + 66 + 101365 - 80 - 885 - 7527 + 79 + 886 + 8331 @@ -21232,17 +21206,17 @@ 1 2 - 1240552 + 1209437 2 3 - 127019 + 124970 3 7 - 15524 + 15274 @@ -21258,57 +21232,57 @@ 6 7 - 470 + 462 10 11 - 470 + 462 26 27 - 470 + 462 124 125 - 470 + 462 - 139 - 140 - 470 + 136 + 137 + 462 - 700 - 701 - 470 + 664 + 665 + 462 861 862 - 470 + 462 963 964 - 470 + 462 - 1762 - 1763 - 470 + 1756 + 1757 + 462 - 1899 - 1900 - 470 + 1868 + 1869 + 462 - 4868 - 4869 - 470 + 4886 + 4887 + 462 @@ -21324,57 +21298,57 @@ 5 6 - 470 + 462 6 7 - 470 + 462 14 15 - 470 + 462 30 31 - 470 + 462 44 45 - 470 + 462 126 127 - 470 + 462 - 269 - 270 - 470 + 268 + 269 + 462 373 374 - 470 + 462 433 434 - 470 + 462 748 749 - 470 + 462 - 1236 - 1237 - 470 + 1212 + 1213 + 462 @@ -21384,19 +21358,19 @@ usertypesize - 1755685 + 1711634 id - 1755685 + 1711634 size - 13642 + 13422 alignment - 2352 + 2314 @@ -21410,7 +21384,7 @@ 1 2 - 1755685 + 1711634 @@ -21426,7 +21400,7 @@ 1 2 - 1755685 + 1711634 @@ -21442,47 +21416,47 @@ 1 2 - 3293 + 3239 2 3 - 4233 + 4165 3 4 - 470 + 462 4 5 - 940 + 925 6 8 - 940 + 925 9 15 - 940 + 925 37 84 - 940 + 925 92 163 - 940 + 925 748 - 2539 - 940 + 2505 + 925 @@ -21498,17 +21472,17 @@ 1 2 - 10349 + 10182 2 3 - 2822 + 2777 3 4 - 470 + 462 @@ -21524,27 +21498,27 @@ 2 3 - 470 + 462 6 7 - 470 + 462 184 185 - 470 + 462 254 255 - 470 + 462 - 3286 - 3287 - 470 + 3252 + 3253 + 462 @@ -21560,27 +21534,27 @@ 1 2 - 470 + 462 2 3 - 470 + 462 3 4 - 470 + 462 9 10 - 470 + 462 22 23 - 470 + 462 @@ -21590,26 +21564,26 @@ usertype_final - 9528 + 9517 id - 9528 + 9517 usertype_uuid - 36101 + 36167 id - 36101 + 36167 uuid - 35737 + 35795 @@ -21623,7 +21597,7 @@ 1 2 - 36101 + 36167 @@ -21639,12 +21613,12 @@ 1 2 - 35372 + 35424 2 3 - 364 + 371 @@ -21654,15 +21628,15 @@ mangled_name - 5301398 + 5184427 id - 5301398 + 5184427 mangled_name - 1272072 + 1244614 @@ -21676,7 +21650,7 @@ 1 2 - 5301398 + 5184427 @@ -21692,32 +21666,32 @@ 1 2 - 767759 + 754452 2 3 - 178297 + 174495 3 4 - 84679 + 81925 4 7 - 114787 + 110622 7 - 25 - 95499 + 26 + 97662 - 25 - 885 - 31049 + 26 + 886 + 25456 @@ -21727,59 +21701,59 @@ is_pod_class - 554216 + 534132 id - 554216 + 534132 is_standard_layout_class - 1296064 + 1259425 id - 1296064 + 1259425 is_complete - 1694528 + 1651463 id - 1694528 + 1651463 is_class_template - 405049 + 398517 id - 405049 + 398517 class_instantiation - 1122001 + 1092104 to - 1122001 + 1090870 from - 170770 + 70259 @@ -21793,7 +21767,12 @@ 1 2 - 1122001 + 1089729 + + + 2 + 4 + 1141 @@ -21809,42 +21788,47 @@ 1 2 - 58805 + 20818 2 3 - 30108 + 12772 3 4 - 16465 + 7089 4 5 - 14583 + 4887 5 7 - 15524 + 5717 7 - 13 - 13172 + 10 + 5175 - 13 - 29 - 13172 + 10 + 17 + 5475 - 30 - 84 - 8938 + 17 + 66 + 5279 + + + 66 + 3994 + 3043 @@ -21854,19 +21838,19 @@ class_template_argument - 2977520 + 2918536 type_id - 1355443 + 1329545 index - 1295 + 1291 arg_type - 863214 + 856542 @@ -21880,27 +21864,27 @@ 1 2 - 551453 + 544138 2 3 - 411511 + 404518 3 4 - 245970 + 235642 4 7 - 122331 + 121141 7 113 - 24177 + 24103 @@ -21916,22 +21900,22 @@ 1 2 - 577306 + 569833 2 3 - 424854 + 416288 3 4 - 257833 + 248830 4 113 - 95448 + 94593 @@ -21952,31 +21936,31 @@ 2 3 - 820 + 818 3 26 - 104 + 103 29 64 - 104 + 103 69 411 - 104 + 103 592 - 8835 - 104 + 8747 + 103 - 13776 - 114840 + 12910 + 113008 46 @@ -21998,7 +21982,7 @@ 2 3 - 820 + 818 3 @@ -22008,21 +21992,21 @@ 14 26 - 104 + 103 28 145 - 104 + 103 195 - 4197 - 104 + 3442 + 103 - 10467 - 39739 + 10455 + 39609 34 @@ -22039,27 +22023,27 @@ 1 2 - 535542 + 533452 2 3 - 181034 + 179089 3 4 - 52563 + 51746 4 10 - 65675 + 64334 10 - 11334 - 28397 + 10167 + 27919 @@ -22075,17 +22059,17 @@ 1 2 - 755532 + 755723 2 3 - 85724 + 82570 3 22 - 21957 + 18247 @@ -22095,19 +22079,19 @@ class_template_argument_value - 508546 + 494790 type_id - 316606 + 305946 index - 1881 + 1851 arg_value - 508546 + 494790 @@ -22121,17 +22105,17 @@ 1 2 - 261094 + 251329 2 3 - 53630 + 52765 3 4 - 1881 + 1851 @@ -22147,22 +22131,22 @@ 1 2 - 200407 + 191621 2 3 - 81856 + 80536 3 - 5 - 29167 + 4 + 12034 - 5 + 4 9 - 5174 + 21754 @@ -22178,22 +22162,22 @@ 18 19 - 470 + 462 92 93 - 470 + 462 - 309 - 310 - 470 + 297 + 298 + 462 376 377 - 470 + 462 @@ -22209,22 +22193,22 @@ 19 20 - 470 + 462 124 125 - 470 + 462 - 425 - 426 - 470 + 413 + 414 + 462 513 514 - 470 + 462 @@ -22240,7 +22224,7 @@ 1 2 - 508546 + 494790 @@ -22256,7 +22240,7 @@ 1 2 - 508546 + 494790 @@ -22266,15 +22250,15 @@ is_proxy_class_for - 65391 + 62948 id - 65391 + 62948 templ_param_id - 65391 + 62948 @@ -22288,7 +22272,7 @@ 1 2 - 65391 + 62948 @@ -22304,7 +22288,7 @@ 1 2 - 65391 + 62948 @@ -22314,19 +22298,19 @@ type_mentions - 4011511 + 4022510 id - 4011511 + 4022510 type_id - 197335 + 197876 location - 3978138 + 3989045 kind @@ -22344,7 +22328,7 @@ 1 2 - 4011511 + 4022510 @@ -22360,7 +22344,7 @@ 1 2 - 4011511 + 4022510 @@ -22376,7 +22360,7 @@ 1 2 - 4011511 + 4022510 @@ -22392,42 +22376,42 @@ 1 2 - 97176 + 97442 2 3 - 21638 + 21698 3 4 - 8194 + 8216 4 5 - 10739 + 10769 5 7 - 14319 + 14359 7 12 - 15791 + 15834 12 27 - 15115 + 15156 27 8555 - 14359 + 14399 @@ -22443,42 +22427,42 @@ 1 2 - 97176 + 97442 2 3 - 21638 + 21698 3 4 - 8194 + 8216 4 5 - 10739 + 10769 5 7 - 14319 + 14359 7 12 - 15791 + 15834 12 27 - 15115 + 15156 27 8555 - 14359 + 14399 @@ -22494,7 +22478,7 @@ 1 2 - 197335 + 197876 @@ -22510,12 +22494,12 @@ 1 2 - 3944765 + 3955580 2 3 - 33373 + 33464 @@ -22531,12 +22515,12 @@ 1 2 - 3944765 + 3955580 2 3 - 33373 + 33464 @@ -22552,7 +22536,7 @@ 1 2 - 3978138 + 3989045 @@ -22610,26 +22594,26 @@ is_function_template - 1413674 + 1390876 id - 1413674 + 1390876 function_instantiation - 905891 + 907164 to - 905891 + 907164 from - 145917 + 146148 @@ -22643,7 +22627,7 @@ 1 2 - 905891 + 907164 @@ -22659,27 +22643,27 @@ 1 2 - 101092 + 101266 2 3 - 14472 + 14466 3 6 - 12007 + 12032 6 21 - 12042 + 12067 22 869 - 6302 + 6315 @@ -22689,19 +22673,19 @@ function_template_argument - 2338443 + 2342325 function_id - 1317621 + 1319745 index - 563 + 564 arg_type - 304862 + 304999 @@ -22715,22 +22699,22 @@ 1 2 - 679268 + 680426 2 3 - 387856 + 388305 3 4 - 179861 + 180233 4 15 - 70634 + 70780 @@ -22746,22 +22730,22 @@ 1 2 - 694445 + 695633 2 3 - 393173 + 393633 3 4 - 150882 + 151194 4 9 - 79120 + 79284 @@ -22820,13 +22804,13 @@ 35 - 17489 - 17490 + 17479 + 17480 35 - 34459 - 34460 + 34442 + 34443 35 @@ -22886,13 +22870,13 @@ 35 - 2404 - 2405 + 2397 + 2398 35 - 5842 - 5843 + 5835 + 5836 35 @@ -22909,32 +22893,32 @@ 1 2 - 186868 + 187007 2 3 - 44824 + 44670 3 5 - 23204 + 23287 5 16 - 23521 + 23534 16 107 - 22993 + 23040 108 955 - 3450 + 3457 @@ -22950,17 +22934,17 @@ 1 2 - 274756 + 274830 2 4 - 25986 + 26039 4 17 - 4119 + 4128 @@ -22970,19 +22954,19 @@ function_template_argument_value - 362786 + 363536 function_id - 181234 + 181609 index - 563 + 564 arg_value - 360145 + 360889 @@ -22996,12 +22980,12 @@ 1 2 - 171868 + 172223 2 8 - 9366 + 9385 @@ -23017,17 +23001,17 @@ 1 2 - 151339 + 151652 2 3 - 20669 + 20711 3 97 - 9225 + 9244 @@ -23165,12 +23149,12 @@ 1 2 - 357504 + 358243 2 3 - 2640 + 2646 @@ -23186,7 +23170,7 @@ 1 2 - 360145 + 360889 @@ -23196,26 +23180,26 @@ is_variable_template - 47326 + 47274 id - 47326 + 47274 variable_instantiation - 258309 + 168076 to - 258309 + 168076 from - 26281 + 25729 @@ -23229,7 +23213,7 @@ 1 2 - 258309 + 168076 @@ -23245,42 +23229,37 @@ 1 2 - 11203 + 14015 2 3 - 3559 + 2719 3 4 - 1675 + 1359 4 - 6 - 1884 + 7 + 1987 - 6 - 8 - 1884 + 7 + 10 + 2196 - 8 - 14 - 2408 + 10 + 22 + 1987 - 15 - 26 - 1989 - - - 32 - 371 - 1675 + 26 + 277 + 1464 @@ -23290,19 +23269,19 @@ variable_template_argument - 448035 + 295468 variable_id - 247943 + 159709 index - 1779 + 1778 arg_type - 217578 + 165462 @@ -23316,22 +23295,22 @@ 1 2 - 119469 + 81894 2 3 - 99889 + 49575 3 4 - 18218 + 18826 4 17 - 10365 + 9413 @@ -23347,273 +23326,22 @@ 1 2 - 129206 + 85555 2 3 - 91408 + 51876 3 - 5 - 22825 - - - 5 - 17 - 4502 - - - - - - - index - variable_id - - - 12 - - - 11 - 12 - 104 - - - 22 - 23 - 628 - - - 29 - 30 - 104 - - - 30 - 31 - 314 - - - 44 - 45 - 104 - - - 93 - 94 - 104 - - - 222 - 223 - 104 - - - 588 - 589 - 104 - - - 1090 - 1091 - 104 - - - 1974 - 1975 - 104 - - - - - - - index - arg_type - - - 12 - - - 1 - 2 - 104 - - - 12 - 13 - 628 - - - 13 - 14 - 104 - - - 14 - 15 - 314 - - - 24 - 25 - 104 - - - 32 - 33 - 104 - - - 128 - 129 - 104 - - - 437 - 438 - 104 - - - 640 - 641 - 104 - - - 897 - 898 - 104 - - - - - - - arg_type - variable_id - - - 12 - - - 1 - 2 - 171403 - - - 2 - 3 - 25024 - - - 3 - 8 - 17067 - - - 8 - 94 - 4083 - - - - - - - arg_type - index - - - 12 - - - 1 - 2 - 200302 - - - 2 - 5 - 16857 - - - 5 - 6 - 418 - - - - - - - - - variable_template_argument_value - 15810 - - - variable_id - 6596 - - - index - 418 - - - arg_value - 12041 - - - - - variable_id - index - - - 12 - - - 1 - 2 - 5968 - - - 2 - 3 - 628 - - - - - - - variable_id - arg_value - - - 12 - - - 1 - 2 - 314 - - - 2 - 3 - 5235 + 4 + 13701 4 - 5 - 837 - - - 8 - 9 - 209 + 17 + 8576 @@ -23631,19 +23359,255 @@ 7 104 + + 12 + 13 + 627 + 19 20 + 418 + + + 40 + 41 104 - 20 - 21 + 86 + 87 104 - 24 - 25 + 178 + 179 + 104 + + + 540 + 541 + 104 + + + 609 + 610 + 104 + + + 1218 + 1219 + 104 + + + + + + + index + arg_type + + + 12 + + + 1 + 2 + 104 + + + 7 + 8 + 627 + + + 9 + 10 + 418 + + + 26 + 27 + 104 + + + 45 + 46 + 104 + + + 127 + 128 + 104 + + + 372 + 373 + 104 + + + 388 + 389 + 104 + + + 729 + 730 + 104 + + + + + + + arg_type + variable_id + + + 12 + + + 1 + 2 + 133352 + + + 2 + 3 + 18094 + + + 3 + 15 + 12446 + + + 17 + 109 + 1568 + + + + + + + arg_type + index + + + 12 + + + 1 + 2 + 149564 + + + 2 + 3 + 13805 + + + 3 + 6 + 2091 + + + + + + + + + variable_template_argument_value + 11818 + + + variable_id + 7739 + + + index + 418 + + + arg_value + 11818 + + + + + variable_id + index + + + 12 + + + 1 + 2 + 7321 + + + 2 + 3 + 418 + + + + + + + variable_id + arg_value + + + 12 + + + 1 + 2 + 4288 + + + 2 + 3 + 3137 + + + 4 + 5 + 313 + + + + + + + index + variable_id + + + 12 + + + 4 + 5 + 104 + + + 18 + 19 + 104 + + + 26 + 27 + 104 + + + 30 + 31 104 @@ -23658,23 +23622,23 @@ 12 - 12 - 13 + 7 + 8 104 - 30 - 31 + 27 + 28 104 - 33 - 34 + 38 + 39 104 - 40 - 41 + 41 + 42 104 @@ -23691,12 +23655,7 @@ 1 2 - 8271 - - - 2 - 3 - 3769 + 11818 @@ -23712,7 +23671,7 @@ 1 2 - 12041 + 11818 @@ -23722,15 +23681,15 @@ routinetypes - 546661 + 547156 id - 546661 + 547156 return_type - 285778 + 285769 @@ -23744,7 +23703,7 @@ 1 2 - 546661 + 547156 @@ -23760,17 +23719,17 @@ 1 2 - 249087 + 249002 2 3 - 21303 + 21347 3 3594 - 15387 + 15419 @@ -23780,19 +23739,19 @@ routinetypeargs - 993571 + 975696 routine - 429042 + 420271 index - 7997 + 7868 type_id - 229575 + 224947 @@ -23806,27 +23765,27 @@ 1 2 - 155715 + 151353 2 3 - 135486 + 133301 3 4 - 63979 + 62948 4 5 - 46103 + 45359 5 18 - 27756 + 27308 @@ -23842,27 +23801,27 @@ 1 2 - 185824 + 180975 2 3 - 135016 + 132839 3 4 - 59275 + 58319 4 5 - 33871 + 33325 5 11 - 15054 + 14811 @@ -23878,67 +23837,67 @@ 2 3 - 940 + 925 4 5 - 470 + 462 6 7 - 470 + 462 8 9 - 940 + 925 9 10 - 470 + 462 10 11 - 1411 + 1388 13 14 - 470 + 462 28 29 - 470 + 462 59 60 - 470 + 462 157 158 - 470 + 462 293 294 - 470 + 462 581 582 - 470 + 462 - 912 - 913 - 470 + 908 + 909 + 462 @@ -23954,57 +23913,57 @@ 1 2 - 940 + 925 3 4 - 940 + 925 4 5 - 1411 + 1388 5 6 - 940 + 925 6 7 - 940 + 925 10 11 - 470 + 462 14 15 - 470 + 462 47 48 - 470 + 462 90 91 - 470 + 462 176 177 - 470 + 462 - 349 - 350 - 470 + 347 + 348 + 462 @@ -24020,27 +23979,27 @@ 1 2 - 148659 + 145336 2 3 - 31049 + 30548 3 5 - 16935 + 16662 5 12 - 18347 + 18051 12 - 113 - 14583 + 111 + 14348 @@ -24056,22 +24015,22 @@ 1 2 - 175004 + 171255 2 3 - 31049 + 30548 3 6 - 18817 + 18514 6 14 - 4704 + 4628 @@ -24081,19 +24040,19 @@ ptrtomembers - 38105 + 37491 id - 38105 + 37491 type_id - 38105 + 37491 class_id - 15524 + 15274 @@ -24107,7 +24066,7 @@ 1 2 - 38105 + 37491 @@ -24123,7 +24082,7 @@ 1 2 - 38105 + 37491 @@ -24139,7 +24098,7 @@ 1 2 - 38105 + 37491 @@ -24155,7 +24114,7 @@ 1 2 - 38105 + 37491 @@ -24171,17 +24130,17 @@ 1 2 - 13642 + 13422 8 9 - 1411 + 1388 28 29 - 470 + 462 @@ -24197,17 +24156,17 @@ 1 2 - 13642 + 13422 8 9 - 1411 + 1388 28 29 - 470 + 462 @@ -24217,15 +24176,15 @@ specifiers - 24933 + 24531 id - 24933 + 24531 str - 24933 + 24531 @@ -24239,7 +24198,7 @@ 1 2 - 24933 + 24531 @@ -24255,7 +24214,7 @@ 1 2 - 24933 + 24531 @@ -24265,15 +24224,15 @@ typespecifiers - 1317234 + 1287196 type_id - 1298887 + 1269145 spec_id - 3763 + 3702 @@ -24287,12 +24246,12 @@ 1 2 - 1280540 + 1251094 2 3 - 18347 + 18051 @@ -24308,42 +24267,42 @@ 8 9 - 470 + 462 36 37 - 470 + 462 51 52 - 470 + 462 86 87 - 470 + 462 105 106 - 470 + 462 219 220 - 470 + 462 - 226 - 227 - 470 + 223 + 224 + 462 - 2069 - 2070 - 470 + 2053 + 2054 + 462 @@ -24353,15 +24312,15 @@ funspecifiers - 13041848 + 12354933 func_id - 3972829 + 3802185 spec_id - 704 + 705 @@ -24375,27 +24334,27 @@ 1 2 - 314792 + 315090 2 3 - 544231 + 545110 3 4 - 1144767 + 1147133 4 5 - 1731112 + 1556434 5 8 - 237925 + 238417 @@ -24439,8 +24398,8 @@ 35 - 716 - 717 + 709 + 710 35 @@ -24484,23 +24443,23 @@ 35 - 52896 - 52897 + 47844 + 47845 35 - 79931 - 79932 + 74862 + 74863 35 - 91328 - 91329 + 86276 + 86277 35 - 99658 - 99659 + 94606 + 94607 35 @@ -24511,15 +24470,15 @@ varspecifiers - 2347970 + 2310104 var_id - 1255136 + 1234894 spec_id - 3763 + 3702 @@ -24533,22 +24492,22 @@ 1 2 - 735769 + 723903 2 3 - 203230 + 199952 3 4 - 58805 + 57856 4 5 - 257331 + 253181 @@ -24564,42 +24523,42 @@ 112 113 - 470 + 462 315 316 - 470 + 462 414 415 - 470 + 462 560 561 - 470 + 462 692 693 - 470 + 462 700 701 - 470 + 462 732 733 - 470 + 462 1466 1467 - 470 + 462 @@ -24609,19 +24568,19 @@ attributes - 696502 + 695736 id - 696502 + 695736 kind - 314 + 313 name - 1675 + 1673 name_space @@ -24629,7 +24588,7 @@ location - 483949 + 483417 @@ -24643,7 +24602,7 @@ 1 2 - 696502 + 695736 @@ -24659,7 +24618,7 @@ 1 2 - 696502 + 695736 @@ -24675,7 +24634,7 @@ 1 2 - 696502 + 695736 @@ -24691,7 +24650,7 @@ 1 2 - 696502 + 695736 @@ -24887,7 +24846,7 @@ 1 2 - 1465 + 1464 2 @@ -24908,7 +24867,7 @@ 1 2 - 1675 + 1673 @@ -24924,7 +24883,7 @@ 1 2 - 314 + 313 2 @@ -25084,17 +25043,17 @@ 1 2 - 442591 + 442104 2 9 - 36856 + 36815 9 201 - 4502 + 4497 @@ -25110,7 +25069,7 @@ 1 2 - 483949 + 483417 @@ -25126,12 +25085,12 @@ 1 2 - 479656 + 479129 2 3 - 4292 + 4288 @@ -25147,7 +25106,7 @@ 1 2 - 483949 + 483417 @@ -25157,27 +25116,27 @@ attribute_args - 352360 + 348066 id - 352360 + 348066 kind - 1411 + 1388 attribute - 270503 + 267529 index - 1411 + 1388 location - 329308 + 324923 @@ -25191,7 +25150,7 @@ 1 2 - 352360 + 348066 @@ -25207,7 +25166,7 @@ 1 2 - 352360 + 348066 @@ -25223,7 +25182,7 @@ 1 2 - 352360 + 348066 @@ -25239,7 +25198,7 @@ 1 2 - 352360 + 348066 @@ -25255,17 +25214,17 @@ 1 2 - 470 + 462 54 55 - 470 + 462 - 694 - 695 - 470 + 697 + 698 + 462 @@ -25281,17 +25240,17 @@ 1 2 - 470 + 462 54 55 - 470 + 462 - 542 - 543 - 470 + 545 + 546 + 462 @@ -25307,12 +25266,12 @@ 1 2 - 940 + 925 3 4 - 470 + 462 @@ -25328,17 +25287,17 @@ 1 2 - 470 + 462 54 55 - 470 + 462 - 672 - 673 - 470 + 674 + 675 + 462 @@ -25354,17 +25313,17 @@ 1 2 - 204641 + 202730 2 3 - 49866 + 49062 3 4 - 15994 + 15737 @@ -25380,12 +25339,12 @@ 1 2 - 260153 + 257346 2 3 - 10349 + 10182 @@ -25401,17 +25360,17 @@ 1 2 - 204641 + 202730 2 3 - 49866 + 49062 3 4 - 15994 + 15737 @@ -25427,17 +25386,17 @@ 1 2 - 204641 + 202730 2 3 - 49866 + 49062 3 4 - 15994 + 15737 @@ -25453,17 +25412,17 @@ 34 35 - 470 + 462 140 141 - 470 + 462 - 575 - 576 - 470 + 578 + 579 + 462 @@ -25479,12 +25438,12 @@ 1 2 - 940 + 925 3 4 - 470 + 462 @@ -25500,17 +25459,17 @@ 34 35 - 470 + 462 140 141 - 470 + 462 - 575 - 576 - 470 + 578 + 579 + 462 @@ -25526,17 +25485,17 @@ 34 35 - 470 + 462 140 141 - 470 + 462 - 526 - 527 - 470 + 528 + 529 + 462 @@ -25552,12 +25511,12 @@ 1 2 - 315195 + 311037 2 - 16 - 14113 + 17 + 13885 @@ -25573,12 +25532,12 @@ 1 2 - 316606 + 312426 2 3 - 12701 + 12497 @@ -25594,12 +25553,12 @@ 1 2 - 315195 + 311037 2 - 16 - 14113 + 17 + 13885 @@ -25615,7 +25574,7 @@ 1 2 - 329308 + 324923 @@ -25625,15 +25584,15 @@ attribute_arg_value - 351889 + 24994 arg - 351889 + 24994 value - 34812 + 15737 @@ -25647,7 +25606,7 @@ 1 2 - 351889 + 24994 @@ -25663,22 +25622,12 @@ 1 2 - 16935 + 14348 2 - 3 - 12231 - - - 3 - 14 - 2822 - - - 15 - 247 - 2822 + 16 + 1388 @@ -25688,15 +25637,15 @@ attribute_arg_type - 470 + 462 arg - 470 + 462 type_id - 470 + 462 @@ -25710,7 +25659,7 @@ 1 2 - 470 + 462 @@ -25726,7 +25675,55 @@ 1 2 - 470 + 462 + + + + + + + + + attribute_arg_constant + 367506 + + + arg + 367506 + + + constant + 367506 + + + + + arg + constant + + + 12 + + + 1 + 2 + 367506 + + + + + + + constant + arg + + + 12 + + + 1 + 2 + 367506 @@ -25789,15 +25786,15 @@ typeattributes - 62509 + 62440 type_id - 62090 + 62022 spec_id - 62509 + 62440 @@ -25811,7 +25808,7 @@ 1 2 - 61671 + 61603 2 @@ -25832,7 +25829,7 @@ 1 2 - 62509 + 62440 @@ -25842,15 +25839,15 @@ funcattributes - 635565 + 629948 func_id - 447389 + 592296 spec_id - 635565 + 629948 @@ -25864,22 +25861,12 @@ 1 2 - 341540 + 558408 2 - 3 - 64920 - - - 3 - 6 - 39987 - - - 6 7 - 940 + 33887 @@ -25895,7 +25882,7 @@ 1 2 - 635565 + 629948 @@ -25963,15 +25950,15 @@ stmtattributes - 1005 + 1002 stmt_id - 1005 + 1002 spec_id - 1005 + 1002 @@ -25985,7 +25972,7 @@ 1 2 - 1005 + 1002 @@ -26001,7 +25988,7 @@ 1 2 - 1005 + 1002 @@ -26011,15 +25998,15 @@ unspecifiedtype - 10353463 + 10137428 type_id - 10353463 + 10137428 unspecified_type_id - 6956409 + 6822468 @@ -26033,7 +26020,7 @@ 1 2 - 10353463 + 10137428 @@ -26049,17 +26036,17 @@ 1 2 - 4676182 + 4591048 2 3 - 2037950 + 1996752 3 147 - 242277 + 234666 @@ -26069,19 +26056,19 @@ member - 5131470 + 4925926 parent - 689163 + 618819 index - 8802 + 8821 child - 5067737 + 4862061 @@ -26095,42 +26082,42 @@ 1 3 - 18873 + 18912 3 4 - 390462 + 320347 4 5 - 39049 + 38283 5 7 - 53028 + 53138 7 10 - 52817 + 52926 10 - 16 - 57535 + 15 + 50315 - 16 - 30 - 52923 + 15 + 24 + 49609 - 30 + 24 251 - 24472 + 35284 @@ -26146,42 +26133,42 @@ 1 3 - 18873 + 18912 3 4 - 390427 + 320312 4 5 - 39084 + 38318 5 7 - 53134 + 53244 7 10 - 53134 + 53244 10 - 16 - 57289 + 15 + 49998 - 16 - 29 - 52711 + 15 + 24 + 49962 - 29 + 24 253 - 24507 + 34825 @@ -26197,62 +26184,62 @@ 1 2 - 1408 + 1411 2 3 - 809 + 811 3 4 - 950 + 952 5 22 - 669 + 670 22 42 - 669 + 670 42 56 - 669 + 670 56 100 - 669 + 670 104 164 - 669 + 670 181 299 - 669 + 670 300 727 - 669 + 670 845 4002 - 669 + 670 4606 - 19241 - 281 + 17207 + 282 @@ -26268,62 +26255,62 @@ 1 2 - 809 + 811 2 3 - 880 + 882 3 4 - 1161 + 1164 4 15 - 669 + 670 16 35 - 739 + 740 36 55 - 669 + 670 57 93 - 739 + 740 97 135 - 669 + 670 140 256 - 669 + 670 268 612 - 669 + 670 619 2611 - 669 + 670 2770 - 19253 - 457 + 17219 + 458 @@ -26339,7 +26326,7 @@ 1 2 - 5067737 + 4862061 @@ -26355,12 +26342,12 @@ 1 2 - 5005483 + 4799678 2 8 - 62254 + 62382 @@ -26370,15 +26357,15 @@ enclosingfunction - 121719 + 121348 child - 121719 + 121348 parent - 69490 + 69279 @@ -26392,7 +26379,7 @@ 1 2 - 121719 + 121348 @@ -26408,22 +26395,22 @@ 1 2 - 36687 + 36576 2 3 - 21587 + 21521 3 4 - 6105 + 6086 4 45 - 5110 + 5095 @@ -26433,15 +26420,15 @@ derivations - 402152 + 368264 derivation - 402152 + 368264 sub - 381659 + 347728 index @@ -26449,11 +26436,11 @@ super - 206340 + 203873 location - 38134 + 38213 @@ -26467,7 +26454,7 @@ 1 2 - 402152 + 368264 @@ -26483,7 +26470,7 @@ 1 2 - 402152 + 368264 @@ -26499,7 +26486,7 @@ 1 2 - 402152 + 368264 @@ -26515,7 +26502,7 @@ 1 2 - 402152 + 368264 @@ -26531,12 +26518,12 @@ 1 2 - 366518 + 332556 2 7 - 15141 + 15172 @@ -26552,12 +26539,12 @@ 1 2 - 366518 + 332556 2 7 - 15141 + 15172 @@ -26573,12 +26560,12 @@ 1 2 - 366518 + 332556 2 7 - 15141 + 15172 @@ -26594,12 +26581,12 @@ 1 2 - 366518 + 332556 2 7 - 15141 + 15172 @@ -26628,8 +26615,8 @@ 35 - 10839 - 10840 + 9855 + 9856 35 @@ -26659,8 +26646,8 @@ 35 - 10839 - 10840 + 9855 + 9856 35 @@ -26695,8 +26682,8 @@ 35 - 5505 - 5506 + 5423 + 5424 35 @@ -26744,12 +26731,12 @@ 1 2 - 199016 + 196534 2 - 1225 - 7324 + 1216 + 7339 @@ -26765,12 +26752,12 @@ 1 2 - 199016 + 196534 2 - 1225 - 7324 + 1216 + 7339 @@ -26786,12 +26773,12 @@ 1 2 - 205882 + 203415 2 4 - 457 + 458 @@ -26807,12 +26794,12 @@ 1 2 - 202748 + 200274 2 108 - 3591 + 3599 @@ -26828,27 +26815,27 @@ 1 2 - 28310 + 28827 2 5 - 3133 + 3140 5 16 - 2992 + 2928 17 - 133 - 2992 + 178 + 2928 - 142 + 192 474 - 704 + 388 @@ -26864,27 +26851,27 @@ 1 2 - 28310 + 28827 2 5 - 3133 + 3140 5 16 - 2992 + 2928 17 - 133 - 2992 + 178 + 2928 - 142 + 192 474 - 704 + 388 @@ -26900,7 +26887,7 @@ 1 2 - 38134 + 38213 @@ -26916,22 +26903,22 @@ 1 2 - 30739 + 31120 2 5 - 3415 + 3210 5 - 55 - 2887 + 63 + 2893 - 60 - 420 - 1091 + 63 + 415 + 987 @@ -26941,15 +26928,15 @@ derspecifiers - 404054 + 370169 der_id - 401765 + 367876 spec_id - 140 + 141 @@ -26963,12 +26950,12 @@ 1 2 - 399476 + 365582 2 3 - 2288 + 2293 @@ -26992,13 +26979,13 @@ 35 - 1132 - 1133 + 1127 + 1128 35 - 10185 - 10186 + 9206 + 9207 35 @@ -27009,11 +26996,11 @@ direct_base_offsets - 372891 + 338942 der_id - 372891 + 338942 offset @@ -27031,7 +27018,7 @@ 1 2 - 372891 + 338942 @@ -27070,8 +27057,8 @@ 35 - 10484 - 10485 + 9500 + 9501 35 @@ -27082,19 +27069,19 @@ virtual_base_offsets - 6660 + 6639 sub - 3676 + 3665 super - 508 + 507 offset - 254 + 253 @@ -27108,12 +27095,12 @@ 1 2 - 2890 + 2881 2 4 - 323 + 322 4 @@ -27123,7 +27110,7 @@ 7 11 - 196 + 195 @@ -27139,12 +27126,12 @@ 1 2 - 3098 + 3089 2 4 - 312 + 311 4 @@ -27226,7 +27213,7 @@ 1 2 - 289 + 288 2 @@ -27373,23 +27360,23 @@ frienddecls - 714656 + 716133 id - 714656 + 716133 type_id - 42359 + 42447 decl_id - 70141 + 70286 location - 6338 + 6351 @@ -27403,7 +27390,7 @@ 1 2 - 714656 + 716133 @@ -27419,7 +27406,7 @@ 1 2 - 714656 + 716133 @@ -27435,7 +27422,7 @@ 1 2 - 714656 + 716133 @@ -27451,47 +27438,47 @@ 1 2 - 6197 + 6210 2 3 - 13204 + 13231 3 6 - 2957 + 2963 6 10 - 3204 + 3210 10 17 - 3274 + 3281 17 24 - 3345 + 3352 25 36 - 3309 + 3316 37 55 - 3239 + 3246 55 103 - 3626 + 3634 @@ -27507,47 +27494,47 @@ 1 2 - 6197 + 6210 2 3 - 13204 + 13231 3 6 - 2957 + 2963 6 10 - 3204 + 3210 10 17 - 3274 + 3281 17 24 - 3345 + 3352 25 36 - 3309 + 3316 37 55 - 3239 + 3246 55 103 - 3626 + 3634 @@ -27563,12 +27550,12 @@ 1 2 - 40915 + 41000 2 13 - 1443 + 1446 @@ -27584,37 +27571,37 @@ 1 2 - 40458 + 40541 2 3 - 5880 + 5892 3 8 - 6021 + 6033 8 15 - 5422 + 5433 15 32 - 5281 + 5292 32 71 - 5281 + 5292 72 160 - 1795 + 1799 @@ -27630,37 +27617,37 @@ 1 2 - 40458 + 40541 2 3 - 5880 + 5892 3 8 - 6021 + 6033 8 15 - 5422 + 5433 15 32 - 5281 + 5292 32 71 - 5281 + 5292 72 160 - 1795 + 1799 @@ -27676,12 +27663,12 @@ 1 2 - 69472 + 69616 2 5 - 669 + 670 @@ -27697,12 +27684,12 @@ 1 2 - 5950 + 5963 2 20106 - 387 + 388 @@ -27718,12 +27705,12 @@ 1 2 - 6197 + 6210 2 1105 - 140 + 141 @@ -27739,7 +27726,7 @@ 1 2 - 5985 + 5998 2 @@ -27754,19 +27741,19 @@ comments - 8783134 + 8773472 id - 8783134 + 8773472 contents - 3343672 + 3339994 location - 8783134 + 8773472 @@ -27780,7 +27767,7 @@ 1 2 - 8783134 + 8773472 @@ -27796,7 +27783,7 @@ 1 2 - 8783134 + 8773472 @@ -27812,17 +27799,17 @@ 1 2 - 3058872 + 3055507 2 7 - 251189 + 250912 7 32784 - 33610 + 33573 @@ -27838,17 +27825,17 @@ 1 2 - 3058872 + 3055507 2 7 - 251189 + 250912 7 32784 - 33610 + 33573 @@ -27864,7 +27851,7 @@ 1 2 - 8783134 + 8773472 @@ -27880,7 +27867,7 @@ 1 2 - 8783134 + 8773472 @@ -27890,15 +27877,15 @@ commentbinding - 3145838 + 3095104 id - 2490514 + 2450349 element - 3068686 + 3019196 @@ -27912,12 +27899,12 @@ 1 2 - 2408187 + 2369349 2 97 - 82327 + 80999 @@ -27933,12 +27920,12 @@ 1 2 - 2991533 + 2943288 2 3 - 77152 + 75908 @@ -27948,15 +27935,15 @@ exprconv - 7003755 + 7021832 converted - 7003755 + 7021832 conversion - 7003755 + 7021832 @@ -27970,7 +27957,7 @@ 1 2 - 7003755 + 7021832 @@ -27986,7 +27973,7 @@ 1 2 - 7003755 + 7021832 @@ -27996,30 +27983,30 @@ compgenerated - 8493976 + 8328197 id - 8493976 + 8328197 synthetic_destructor_call - 133104 + 144327 element - 103479 + 111770 i - 306 + 336 destructor_call - 117760 + 129098 @@ -28033,17 +28020,17 @@ 1 2 - 85542 + 92066 2 3 - 11831 + 12991 3 18 - 6105 + 6713 @@ -28059,17 +28046,17 @@ 1 2 - 85542 + 92066 2 3 - 11831 + 12991 3 18 - 6105 + 6713 @@ -28085,67 +28072,67 @@ 1 2 - 18 + 19 2 3 - 54 + 59 3 4 - 18 + 19 4 5 - 54 + 59 6 7 - 18 + 19 11 12 - 18 + 19 20 21 - 18 + 19 34 35 - 18 + 19 65 66 - 18 + 19 152 153 - 18 + 19 339 340 - 18 + 19 - 996 - 997 - 18 + 995 + 996 + 19 - 5746 - 5747 - 18 + 5644 + 5645 + 19 @@ -28161,67 +28148,67 @@ 1 2 - 18 + 19 2 3 - 54 + 59 3 4 - 18 + 19 4 5 - 54 + 59 6 7 - 18 + 19 11 12 - 18 + 19 20 21 - 18 + 19 34 35 - 18 + 19 65 66 - 18 + 19 151 152 - 18 + 19 338 339 - 18 + 19 - 995 - 996 - 18 + 994 + 995 + 19 - 4897 - 4898 - 18 + 4878 + 4879 + 19 @@ -28237,12 +28224,12 @@ 1 2 - 115743 + 127059 2 26 - 2017 + 2039 @@ -28258,7 +28245,7 @@ 1 2 - 117760 + 129098 @@ -28268,15 +28255,15 @@ namespaces - 12701 + 12497 id - 12701 + 12497 name - 10349 + 10182 @@ -28290,7 +28277,7 @@ 1 2 - 12701 + 12497 @@ -28306,17 +28293,17 @@ 1 2 - 8938 + 8794 2 3 - 470 + 462 3 4 - 940 + 925 @@ -28326,26 +28313,26 @@ namespace_inline - 1411 + 1388 id - 1411 + 1388 namespacembrs - 2463228 + 2389715 parentid - 10820 + 10645 memberid - 2463228 + 2389715 @@ -28359,57 +28346,57 @@ 1 2 - 1881 + 1851 2 3 - 940 + 925 3 4 - 470 + 462 4 5 - 940 + 925 5 7 - 940 + 925 7 8 - 940 + 925 8 12 - 940 + 925 17 30 - 940 + 925 43 47 - 940 + 925 52 143 - 940 + 925 253 - 4592 - 940 + 4519 + 925 @@ -28425,7 +28412,7 @@ 1 2 - 2463228 + 2389715 @@ -28435,19 +28422,19 @@ exprparents - 14152891 + 14182785 expr_id - 14152891 + 14182785 child_index - 14602 + 14633 parent_id - 9418005 + 9437898 @@ -28461,7 +28448,7 @@ 1 2 - 14152891 + 14182785 @@ -28477,7 +28464,7 @@ 1 2 - 14152891 + 14182785 @@ -28493,37 +28480,37 @@ 1 2 - 2809 + 2815 2 3 - 1107 + 1109 3 4 - 266 + 267 4 5 - 6542 + 6556 5 8 - 1210 + 1212 8 11 - 1189 + 1192 11 53 - 1107 + 1109 56 @@ -28544,37 +28531,37 @@ 1 2 - 2809 + 2815 2 3 - 1107 + 1109 3 4 - 266 + 267 4 5 - 6542 + 6556 5 8 - 1210 + 1212 8 11 - 1189 + 1192 11 53 - 1107 + 1109 56 @@ -28595,17 +28582,17 @@ 1 2 - 5388942 + 5400325 2 3 - 3692599 + 3700399 3 712 - 336462 + 337173 @@ -28621,17 +28608,17 @@ 1 2 - 5388942 + 5400325 2 3 - 3692599 + 3700399 3 712 - 336462 + 337173 @@ -28641,11 +28628,11 @@ expr_isload - 4981688 + 4982130 expr_id - 4981688 + 4982130 @@ -28725,15 +28712,15 @@ iscall - 3078281 + 2951156 caller - 3078281 + 2951156 kind - 54 + 59 @@ -28747,7 +28734,7 @@ 1 2 - 3078281 + 2951156 @@ -28761,19 +28748,19 @@ 12 - 1378 - 1379 - 18 + 1318 + 1319 + 19 - 2512 - 2513 - 18 + 2470 + 2471 + 19 - 167040 - 167041 - 18 + 145234 + 145235 + 19 @@ -28783,15 +28770,15 @@ numtemplatearguments - 543548 + 396244 expr_id - 543548 + 396244 num - 72 + 317 @@ -28805,7 +28792,7 @@ 1 2 - 543548 + 396244 @@ -28819,24 +28806,39 @@ 12 - 26 - 27 - 18 + 1 + 2 + 105 - 28 - 29 - 18 + 4 + 5 + 35 - 220 - 221 - 18 + 20 + 21 + 35 - 29908 - 29909 - 18 + 101 + 102 + 35 + + + 179 + 180 + 35 + + + 227 + 228 + 35 + + + 10696 + 10697 + 35 @@ -28846,15 +28848,15 @@ specialnamequalifyingelements - 470 + 462 id - 470 + 462 name - 470 + 462 @@ -28868,7 +28870,7 @@ 1 2 - 470 + 462 @@ -28884,7 +28886,7 @@ 1 2 - 470 + 462 @@ -28894,23 +28896,23 @@ namequalifiers - 1618866 + 1536058 id - 1618866 + 1536058 qualifiableelement - 1618866 + 1536058 qualifyingelement - 79653 + 83412 location - 282705 + 306003 @@ -28924,7 +28926,7 @@ 1 2 - 1618866 + 1536058 @@ -28940,7 +28942,7 @@ 1 2 - 1618866 + 1536058 @@ -28956,7 +28958,7 @@ 1 2 - 1618866 + 1536058 @@ -28972,7 +28974,7 @@ 1 2 - 1618866 + 1536058 @@ -28988,7 +28990,7 @@ 1 2 - 1618866 + 1536058 @@ -29004,7 +29006,7 @@ 1 2 - 1618866 + 1536058 @@ -29020,27 +29022,27 @@ 1 2 - 45526 + 46617 2 3 - 17162 + 20615 3 4 - 6195 + 5049 4 - 8 - 6087 + 7 + 6396 - 8 - 31227 - 4682 + 7 + 21072 + 4733 @@ -29056,27 +29058,27 @@ 1 2 - 45526 + 46617 2 3 - 17162 + 20615 3 4 - 6195 + 5049 4 - 8 - 6087 + 7 + 6396 - 8 - 31227 - 4682 + 7 + 21072 + 4733 @@ -29092,27 +29094,27 @@ 1 2 - 49704 + 50954 2 3 - 15992 + 19526 3 4 - 6411 + 4851 4 - 9 - 6123 + 8 + 6257 - 9 + 8 7095 - 1422 + 1821 @@ -29128,32 +29130,32 @@ 1 2 - 91737 + 98304 2 3 - 25644 + 27408 3 4 - 42177 + 45884 4 6 - 12894 + 14080 6 7 - 89865 + 98878 7 - 2135 - 20386 + 782 + 21447 @@ -29169,32 +29171,32 @@ 1 2 - 91737 + 98304 2 3 - 25644 + 27408 3 4 - 42177 + 45884 4 6 - 12894 + 14080 6 7 - 89865 + 98878 7 - 2135 - 20386 + 782 + 21447 @@ -29210,22 +29212,22 @@ 1 2 - 125162 + 134426 2 3 - 52352 + 56796 3 4 - 96618 + 105968 4 - 152 - 8572 + 143 + 8812 @@ -29235,15 +29237,15 @@ varbind - 6006368 + 6019055 expr - 6006368 + 6019055 var - 765629 + 767246 @@ -29257,7 +29259,7 @@ 1 2 - 6006368 + 6019055 @@ -29273,52 +29275,52 @@ 1 2 - 125745 + 126011 2 3 - 137353 + 137644 3 4 - 105891 + 106115 4 5 - 84889 + 85069 5 6 - 61057 + 61186 6 7 - 47931 + 48032 7 9 - 59396 + 59521 9 13 - 59047 + 59172 13 28 - 58657 + 58781 28 5137 - 25657 + 25711 @@ -29328,15 +29330,15 @@ funbind - 3080676 + 2954265 expr - 3077056 + 2951453 fun - 514013 + 533842 @@ -29350,12 +29352,12 @@ 1 2 - 3073437 + 2948641 2 3 - 3619 + 2812 @@ -29371,32 +29373,32 @@ 1 2 - 306531 + 329787 2 3 - 78789 + 82184 3 4 - 37224 + 31883 4 7 - 43473 + 48043 7 - 38 - 38701 + 158 + 40042 - 38 + 159 4943 - 9292 + 1901 @@ -29406,11 +29408,11 @@ expr_allocator - 46514 + 46610 expr - 46514 + 46610 func @@ -29432,7 +29434,7 @@ 1 2 - 46514 + 46610 @@ -29448,7 +29450,7 @@ 1 2 - 46514 + 46610 @@ -29532,11 +29534,11 @@ expr_deallocator - 55282 + 55396 expr - 55282 + 55396 func @@ -29558,7 +29560,7 @@ 1 2 - 55282 + 55396 @@ -29574,7 +29576,7 @@ 1 2 - 55282 + 55396 @@ -29668,26 +29670,26 @@ expr_cond_two_operand - 484 + 480 cond - 484 + 480 expr_cond_guard - 654502 + 656192 cond - 654502 + 656192 guard - 654502 + 656192 @@ -29701,7 +29703,7 @@ 1 2 - 654502 + 656192 @@ -29717,7 +29719,7 @@ 1 2 - 654502 + 656192 @@ -29727,15 +29729,15 @@ expr_cond_true - 654500 + 656189 cond - 654500 + 656189 true - 654500 + 656189 @@ -29749,7 +29751,7 @@ 1 2 - 654500 + 656189 @@ -29765,7 +29767,7 @@ 1 2 - 654500 + 656189 @@ -29775,15 +29777,15 @@ expr_cond_false - 654502 + 656192 cond - 654502 + 656192 false - 654502 + 656192 @@ -29797,7 +29799,7 @@ 1 2 - 654502 + 656192 @@ -29813,7 +29815,7 @@ 1 2 - 654502 + 656192 @@ -29823,15 +29825,15 @@ values - 10646153 + 10759270 id - 10646153 + 10759270 str - 86639 + 87848 @@ -29845,7 +29847,7 @@ 1 2 - 10646153 + 10759270 @@ -29861,27 +29863,27 @@ 1 2 - 58708 + 59389 2 3 - 12259 + 12364 3 6 - 6747 + 6924 6 - 62 - 6513 + 56 + 6612 - 62 - 451065 - 2410 + 57 + 452050 + 2556 @@ -29891,15 +29893,15 @@ valuetext - 4756702 + 4757155 id - 4756702 + 4757155 text - 703921 + 703935 @@ -29913,7 +29915,7 @@ 1 2 - 4756702 + 4757155 @@ -29929,22 +29931,22 @@ 1 2 - 527529 + 527534 2 3 - 102490 + 102488 3 7 - 56757 + 56764 7 425881 - 17145 + 17149 @@ -29954,15 +29956,15 @@ valuebind - 11083057 + 11192950 val - 10646153 + 10759270 expr - 11083057 + 11192950 @@ -29976,12 +29978,12 @@ 1 2 - 10232029 + 10348201 2 7 - 414124 + 411068 @@ -29997,7 +29999,7 @@ 1 2 - 11083057 + 11192950 @@ -30007,19 +30009,19 @@ fieldoffsets - 1050083 + 1052962 id - 1050083 + 1052962 byteoffset - 22593 + 22655 bitoffset - 318 + 319 @@ -30033,7 +30035,7 @@ 1 2 - 1050083 + 1052962 @@ -30049,7 +30051,7 @@ 1 2 - 1050083 + 1052962 @@ -30065,37 +30067,37 @@ 1 2 - 12967 + 13002 2 3 - 1710 + 1715 3 5 - 1789 + 1794 5 12 - 1909 + 1914 12 35 - 1710 + 1715 35 205 - 1710 + 1715 244 5638 - 795 + 797 @@ -30111,12 +30113,12 @@ 1 2 - 21917 + 21977 2 9 - 676 + 678 @@ -30208,19 +30210,19 @@ bitfield - 20941 + 20918 id - 20941 + 20918 bits - 2617 + 2614 declared_bits - 2617 + 2614 @@ -30234,7 +30236,7 @@ 1 2 - 20941 + 20918 @@ -30250,7 +30252,7 @@ 1 2 - 20941 + 20918 @@ -30271,7 +30273,7 @@ 2 3 - 628 + 627 3 @@ -30317,7 +30319,7 @@ 1 2 - 2617 + 2614 @@ -30338,7 +30340,7 @@ 2 3 - 628 + 627 3 @@ -30384,7 +30386,7 @@ 1 2 - 2617 + 2614 @@ -30394,23 +30396,23 @@ initialisers - 1732353 + 1733596 init - 1732353 + 1733596 var - 721222 + 722038 expr - 1732353 + 1733596 location - 390438 + 390813 @@ -30424,7 +30426,7 @@ 1 2 - 1732353 + 1733596 @@ -30440,7 +30442,7 @@ 1 2 - 1732353 + 1733596 @@ -30456,7 +30458,7 @@ 1 2 - 1732353 + 1733596 @@ -30472,17 +30474,17 @@ 1 2 - 632463 + 633767 2 16 - 32109 + 31559 16 25 - 56649 + 56711 @@ -30498,17 +30500,17 @@ 1 2 - 632463 + 633767 2 16 - 32109 + 31559 16 25 - 56649 + 56711 @@ -30524,7 +30526,7 @@ 1 2 - 721215 + 722032 2 @@ -30545,7 +30547,7 @@ 1 2 - 1732353 + 1733596 @@ -30561,7 +30563,7 @@ 1 2 - 1732353 + 1733596 @@ -30577,7 +30579,7 @@ 1 2 - 1732353 + 1733596 @@ -30593,22 +30595,22 @@ 1 2 - 317957 + 318365 2 3 - 23835 + 23842 3 15 - 30789 + 30753 15 - 111459 - 17856 + 111523 + 17850 @@ -30624,17 +30626,17 @@ 1 2 - 340698 + 341138 2 4 - 35642 + 35619 4 - 12738 - 14096 + 12802 + 14055 @@ -30650,22 +30652,22 @@ 1 2 - 317957 + 318365 2 3 - 23835 + 23842 3 15 - 30789 + 30753 15 - 111459 - 17856 + 111523 + 17850 @@ -30675,26 +30677,26 @@ braced_initialisers - 41525 + 41632 init - 41525 + 41632 expr_ancestor - 121668 + 133396 exp - 121668 + 133396 ancestor - 84876 + 92957 @@ -30708,7 +30710,7 @@ 1 2 - 121668 + 133396 @@ -30724,22 +30726,22 @@ 1 2 - 61374 + 67133 2 3 - 16784 + 18437 3 8 - 6483 + 7129 8 18 - 234 + 257 @@ -30749,19 +30751,19 @@ exprs - 18300152 + 18356790 id - 18300152 + 18356790 kind - 3380 + 3387 location - 3559831 + 3591749 @@ -30775,7 +30777,7 @@ 1 2 - 18300152 + 18356790 @@ -30791,7 +30793,7 @@ 1 2 - 18300152 + 18356790 @@ -30806,68 +30808,68 @@ 1 - 5 - 281 + 3 + 246 - 5 + 4 14 - 211 + 282 14 38 - 281 + 282 42 - 66 - 281 + 83 + 282 - 82 - 135 - 281 + 85 + 142 + 282 - 141 - 334 - 281 + 145 + 339 + 282 - 338 - 509 - 281 + 364 + 564 + 282 - 563 + 653 830 - 281 + 282 - 831 - 1183 - 281 + 973 + 1185 + 282 - 1184 - 2071 - 281 + 1329 + 2628 + 282 - 2627 - 5700 - 281 + 3015 + 6254 + 282 - 6528 - 63599 - 281 + 6592 + 78899 + 282 - 79044 - 109592 - 70 + 109462 + 109463 + 35 @@ -30883,7 +30885,7 @@ 1 2 - 281 + 282 2 @@ -30893,17 +30895,17 @@ 3 6 - 281 + 282 6 13 - 281 + 282 14 26 - 281 + 282 28 @@ -30913,37 +30915,37 @@ 63 83 - 281 + 282 91 183 - 281 + 282 206 342 - 281 + 282 353 448 - 281 + 282 468 - 1018 - 281 + 1019 + 282 1051 14618 - 281 + 282 - 16981 - 32757 - 140 + 16977 + 32762 + 141 @@ -30959,32 +30961,32 @@ 1 2 - 1935551 + 1941352 2 3 - 816946 + 837336 3 4 - 247397 + 248367 4 8 - 280461 + 284181 8 - 137 - 267010 + 155 + 269397 - 137 - 54140 - 12464 + 155 + 53476 + 11114 @@ -31000,22 +31002,22 @@ 1 2 - 2362352 + 2391758 2 3 - 873426 + 875231 3 6 - 307151 + 307821 6 25 - 16901 + 16936 @@ -31025,19 +31027,19 @@ expr_types - 18357798 + 18411724 id - 18300152 + 18356790 typeid - 829243 + 881136 value_category - 54 + 59 @@ -31051,12 +31053,12 @@ 1 2 - 18242577 + 18301855 2 - 5 - 57574 + 3 + 54934 @@ -31072,7 +31074,7 @@ 1 2 - 18300152 + 18356790 @@ -31088,42 +31090,42 @@ 1 2 - 292376 + 316816 2 3 - 161054 + 172230 3 4 - 70343 + 69450 4 5 - 60978 + 68262 5 7 - 66993 + 69728 7 12 - 65336 + 69886 12 35 - 62653 + 66916 35 - 78689 - 49506 + 73116 + 47845 @@ -31139,17 +31141,17 @@ 1 2 - 715462 + 758038 2 3 - 102993 + 111869 3 4 - 10787 + 11228 @@ -31163,19 +31165,19 @@ 12 - 11826 - 11827 - 18 + 7159 + 7160 + 19 - 253755 - 253756 - 18 + 235315 + 235316 + 19 - 750585 - 750586 - 18 + 684473 + 684474 + 19 @@ -31189,19 +31191,19 @@ 12 - 1484 - 1485 - 18 + 1406 + 1407 + 19 - 11980 - 11981 - 18 + 11860 + 11861 + 19 - 39499 - 39500 - 18 + 38011 + 38012 + 19 @@ -31211,15 +31213,15 @@ new_allocated_type - 47571 + 47669 expr - 47571 + 47669 type_id - 28134 + 28192 @@ -31233,7 +31235,7 @@ 1 2 - 47571 + 47669 @@ -31249,17 +31251,17 @@ 1 2 - 11760 + 11785 2 3 - 14894 + 14925 3 19 - 1478 + 1481 @@ -31269,15 +31271,15 @@ new_array_allocated_type - 5099 + 5104 expr - 5099 + 5104 type_id - 2194 + 2196 @@ -31291,7 +31293,7 @@ 1 2 - 5099 + 5104 @@ -31312,7 +31314,7 @@ 2 3 - 1942 + 1944 3 @@ -31879,15 +31881,15 @@ condition_decl_bind - 38593 + 42438 expr - 38593 + 42438 decl - 38593 + 42438 @@ -31901,7 +31903,7 @@ 1 2 - 38593 + 42438 @@ -31917,7 +31919,7 @@ 1 2 - 38593 + 42438 @@ -31927,15 +31929,15 @@ typeid_bind - 36408 + 36484 expr - 36408 + 36484 type_id - 16373 + 16407 @@ -31949,7 +31951,7 @@ 1 2 - 36408 + 36484 @@ -31965,12 +31967,12 @@ 1 2 - 15950 + 15983 3 328 - 422 + 423 @@ -31980,15 +31982,15 @@ uuidof_bind - 19993 + 20022 expr - 19993 + 20022 type_id - 19798 + 19827 @@ -32002,7 +32004,7 @@ 1 2 - 19993 + 20022 @@ -32018,7 +32020,7 @@ 1 2 - 19635 + 19663 2 @@ -32033,15 +32035,15 @@ sizeof_bind - 191854 + 198889 expr - 191854 + 198889 type_id - 8194 + 8165 @@ -32055,7 +32057,7 @@ 1 2 - 191854 + 198889 @@ -32071,12 +32073,12 @@ 1 2 - 2697 + 2683 2 3 - 2330 + 2329 3 @@ -32086,27 +32088,27 @@ 4 5 - 750 + 739 5 6 - 212 + 211 6 9 - 723 + 713 9 133 - 649 + 654 164 18023 - 53 + 58 @@ -32164,19 +32166,19 @@ lambdas - 21640 + 21291 expr - 21640 + 21291 default_capture - 470 + 462 has_explicit_return_type - 470 + 462 @@ -32190,7 +32192,7 @@ 1 2 - 21640 + 21291 @@ -32206,7 +32208,7 @@ 1 2 - 21640 + 21291 @@ -32222,7 +32224,7 @@ 46 47 - 470 + 462 @@ -32238,7 +32240,7 @@ 1 2 - 470 + 462 @@ -32254,7 +32256,7 @@ 46 47 - 470 + 462 @@ -32270,7 +32272,7 @@ 1 2 - 470 + 462 @@ -32280,35 +32282,35 @@ lambda_capture - 28226 + 27771 id - 28226 + 27771 lambda - 20699 + 20365 index - 940 + 925 field - 28226 + 27771 captured_by_reference - 470 + 462 is_implicit - 470 + 462 location - 2822 + 2777 @@ -32322,7 +32324,7 @@ 1 2 - 28226 + 27771 @@ -32338,7 +32340,7 @@ 1 2 - 28226 + 27771 @@ -32354,7 +32356,7 @@ 1 2 - 28226 + 27771 @@ -32370,7 +32372,7 @@ 1 2 - 28226 + 27771 @@ -32386,7 +32388,7 @@ 1 2 - 28226 + 27771 @@ -32402,7 +32404,7 @@ 1 2 - 28226 + 27771 @@ -32418,12 +32420,12 @@ 1 2 - 13172 + 12959 2 3 - 7527 + 7405 @@ -32439,12 +32441,12 @@ 1 2 - 13172 + 12959 2 3 - 7527 + 7405 @@ -32460,12 +32462,12 @@ 1 2 - 13172 + 12959 2 3 - 7527 + 7405 @@ -32481,7 +32483,7 @@ 1 2 - 20699 + 20365 @@ -32497,7 +32499,7 @@ 1 2 - 20699 + 20365 @@ -32513,12 +32515,12 @@ 1 2 - 13172 + 12959 2 3 - 7527 + 7405 @@ -32534,12 +32536,12 @@ 16 17 - 470 + 462 44 45 - 470 + 462 @@ -32555,12 +32557,12 @@ 16 17 - 470 + 462 44 45 - 470 + 462 @@ -32576,12 +32578,12 @@ 16 17 - 470 + 462 44 45 - 470 + 462 @@ -32597,7 +32599,7 @@ 1 2 - 940 + 925 @@ -32613,7 +32615,7 @@ 1 2 - 940 + 925 @@ -32629,12 +32631,12 @@ 2 3 - 470 + 462 4 5 - 470 + 462 @@ -32650,7 +32652,7 @@ 1 2 - 28226 + 27771 @@ -32666,7 +32668,7 @@ 1 2 - 28226 + 27771 @@ -32682,7 +32684,7 @@ 1 2 - 28226 + 27771 @@ -32698,7 +32700,7 @@ 1 2 - 28226 + 27771 @@ -32714,7 +32716,7 @@ 1 2 - 28226 + 27771 @@ -32730,7 +32732,7 @@ 1 2 - 28226 + 27771 @@ -32746,7 +32748,7 @@ 60 61 - 470 + 462 @@ -32762,7 +32764,7 @@ 44 45 - 470 + 462 @@ -32778,7 +32780,7 @@ 2 3 - 470 + 462 @@ -32794,7 +32796,7 @@ 60 61 - 470 + 462 @@ -32810,7 +32812,7 @@ 1 2 - 470 + 462 @@ -32826,7 +32828,7 @@ 6 7 - 470 + 462 @@ -32842,7 +32844,7 @@ 60 61 - 470 + 462 @@ -32858,7 +32860,7 @@ 44 45 - 470 + 462 @@ -32874,7 +32876,7 @@ 2 3 - 470 + 462 @@ -32890,7 +32892,7 @@ 60 61 - 470 + 462 @@ -32906,7 +32908,7 @@ 1 2 - 470 + 462 @@ -32922,7 +32924,7 @@ 6 7 - 470 + 462 @@ -32938,12 +32940,12 @@ 8 9 - 1881 + 1851 14 15 - 940 + 925 @@ -32959,12 +32961,12 @@ 8 9 - 1881 + 1851 14 15 - 940 + 925 @@ -32980,7 +32982,7 @@ 1 2 - 2822 + 2777 @@ -32996,12 +32998,12 @@ 8 9 - 1881 + 1851 14 15 - 940 + 925 @@ -33017,7 +33019,7 @@ 1 2 - 2822 + 2777 @@ -33033,7 +33035,7 @@ 1 2 - 2822 + 2777 @@ -33159,19 +33161,19 @@ stmts - 4661289 + 4653233 id - 4661289 + 4653233 kind - 1989 + 1987 location - 2287401 + 2284884 @@ -33185,7 +33187,7 @@ 1 2 - 4661289 + 4653233 @@ -33201,7 +33203,7 @@ 1 2 - 4661289 + 4653233 @@ -33295,8 +33297,8 @@ 104 - 8770 - 8771 + 8756 + 8757 104 @@ -33305,8 +33307,8 @@ 104 - 13297 - 13298 + 13283 + 13284 104 @@ -33429,22 +33431,22 @@ 1 2 - 1892555 + 1890473 2 4 - 176010 + 175816 4 12 - 176219 + 176025 12 - 699 - 42615 + 687 + 42568 @@ -33460,12 +33462,12 @@ 1 2 - 2230127 + 2227673 2 8 - 57274 + 57211 @@ -33523,15 +33525,15 @@ variable_vla - 21 + 22 var - 21 + 22 decl - 21 + 22 @@ -33545,7 +33547,7 @@ 1 2 - 21 + 22 @@ -33561,7 +33563,7 @@ 1 2 - 21 + 22 @@ -33571,15 +33573,15 @@ if_initialization - 314 + 313 if_stmt - 314 + 313 init_id - 314 + 313 @@ -33593,7 +33595,7 @@ 1 2 - 314 + 313 @@ -33609,7 +33611,7 @@ 1 2 - 314 + 313 @@ -33619,15 +33621,15 @@ if_then - 723174 + 724702 if_stmt - 723174 + 724702 then_id - 723174 + 724702 @@ -33641,7 +33643,7 @@ 1 2 - 723174 + 724702 @@ -33657,7 +33659,7 @@ 1 2 - 723174 + 724702 @@ -33667,15 +33669,15 @@ if_else - 183972 + 184361 if_stmt - 183972 + 184361 else_id - 183972 + 184361 @@ -33689,7 +33691,7 @@ 1 2 - 183972 + 184361 @@ -33705,7 +33707,7 @@ 1 2 - 183972 + 184361 @@ -33763,15 +33765,15 @@ constexpr_if_then - 52562 + 52504 constexpr_if_stmt - 52562 + 52504 then_id - 52562 + 52504 @@ -33785,7 +33787,7 @@ 1 2 - 52562 + 52504 @@ -33801,7 +33803,7 @@ 1 2 - 52562 + 52504 @@ -33811,15 +33813,15 @@ constexpr_if_else - 30888 + 30854 constexpr_if_stmt - 30888 + 30854 else_id - 30888 + 30854 @@ -33833,7 +33835,7 @@ 1 2 - 30888 + 30854 @@ -33849,7 +33851,7 @@ 1 2 - 30888 + 30854 @@ -33859,15 +33861,15 @@ while_body - 30201 + 30109 while_stmt - 30201 + 30109 body_id - 30201 + 30109 @@ -33881,7 +33883,7 @@ 1 2 - 30201 + 30109 @@ -33897,7 +33899,7 @@ 1 2 - 30201 + 30109 @@ -33907,15 +33909,15 @@ do_body - 148599 + 148628 do_stmt - 148599 + 148628 body_id - 148599 + 148628 @@ -33929,7 +33931,7 @@ 1 2 - 148599 + 148628 @@ -33945,7 +33947,7 @@ 1 2 - 148599 + 148628 @@ -34003,19 +34005,19 @@ switch_case - 191399 + 209699 switch_stmt - 10301 + 11228 index - 4430 + 4871 case_id - 191399 + 209699 @@ -34029,57 +34031,57 @@ 2 3 - 54 + 59 3 4 - 2269 + 2495 4 5 - 1656 + 1821 5 6 - 1008 + 1089 6 - 7 - 756 + 8 + 1029 - 7 + 8 9 - 720 + 554 9 10 - 972 + 1069 10 - 11 - 324 + 12 + 1029 - 11 - 14 - 864 + 12 + 25 + 871 - 14 - 31 - 828 + 30 + 152 + 851 - 36 + 181 247 - 846 + 356 @@ -34095,57 +34097,57 @@ 2 3 - 54 + 59 3 4 - 2269 + 2495 4 5 - 1656 + 1821 5 6 - 1008 + 1089 6 - 7 - 756 + 8 + 1029 - 7 + 8 9 - 720 + 554 9 10 - 972 + 1069 10 - 11 - 324 + 12 + 1029 - 11 - 14 - 864 + 12 + 25 + 871 - 14 - 31 - 828 + 30 + 152 + 851 - 36 + 181 247 - 846 + 356 @@ -34161,32 +34163,32 @@ 14 15 - 1170 + 1287 18 19 - 540 + 594 32 33 - 1908 + 2099 33 62 - 378 + 415 66 - 296 - 342 + 292 + 376 - 351 - 573 - 90 + 346 + 568 + 99 @@ -34202,32 +34204,32 @@ 14 15 - 1170 + 1287 18 19 - 540 + 594 32 33 - 1908 + 2099 33 62 - 378 + 415 66 - 296 - 342 + 292 + 376 - 351 - 573 - 90 + 346 + 568 + 99 @@ -34243,7 +34245,7 @@ 1 2 - 191399 + 209699 @@ -34259,7 +34261,7 @@ 1 2 - 191399 + 209699 @@ -34269,15 +34271,15 @@ switch_body - 20901 + 20747 switch_stmt - 20901 + 20747 body_id - 20901 + 20747 @@ -34291,7 +34293,7 @@ 1 2 - 20901 + 20747 @@ -34307,7 +34309,7 @@ 1 2 - 20901 + 20747 @@ -34317,15 +34319,15 @@ for_initialization - 53202 + 53314 for_stmt - 53202 + 53314 init_id - 53202 + 53314 @@ -34339,7 +34341,7 @@ 1 2 - 53202 + 53314 @@ -34355,7 +34357,7 @@ 1 2 - 53202 + 53314 @@ -34365,15 +34367,15 @@ for_condition - 55458 + 55575 for_stmt - 55458 + 55575 condition_id - 55458 + 55575 @@ -34387,7 +34389,7 @@ 1 2 - 55458 + 55575 @@ -34403,7 +34405,7 @@ 1 2 - 55458 + 55575 @@ -34413,15 +34415,15 @@ for_update - 53304 + 53417 for_stmt - 53304 + 53417 update_id - 53304 + 53417 @@ -34435,7 +34437,7 @@ 1 2 - 53304 + 53417 @@ -34451,7 +34453,7 @@ 1 2 - 53304 + 53417 @@ -34461,15 +34463,15 @@ for_body - 61324 + 61453 for_stmt - 61324 + 61453 body_id - 61324 + 61453 @@ -34483,7 +34485,7 @@ 1 2 - 61324 + 61453 @@ -34499,7 +34501,7 @@ 1 2 - 61324 + 61453 @@ -34509,19 +34511,19 @@ stmtparents - 4052323 + 4056811 id - 4052323 + 4056811 index - 12210 + 12223 parent - 1719470 + 1721378 @@ -34535,7 +34537,7 @@ 1 2 - 4052323 + 4056811 @@ -34551,7 +34553,7 @@ 1 2 - 4052323 + 4056811 @@ -34567,12 +34569,12 @@ 1 2 - 4011 + 4015 2 3 - 999 + 1000 3 @@ -34582,37 +34584,37 @@ 4 5 - 1552 + 1554 7 8 - 1018 + 1019 8 12 - 792 + 793 12 29 - 1075 + 1076 29 38 - 917 + 918 41 77 - 924 + 925 77 - 196940 - 697 + 196941 + 698 @@ -34628,12 +34630,12 @@ 1 2 - 4011 + 4015 2 3 - 999 + 1000 3 @@ -34643,37 +34645,37 @@ 4 5 - 1552 + 1554 7 8 - 1018 + 1019 8 12 - 792 + 793 12 29 - 1075 + 1076 29 38 - 917 + 918 41 77 - 924 + 925 77 - 196940 - 697 + 196941 + 698 @@ -34689,32 +34691,32 @@ 1 2 - 987321 + 988419 2 3 - 372965 + 373378 3 4 - 105746 + 105863 4 6 - 111242 + 111365 6 17 - 129833 + 129977 17 1943 - 12360 + 12374 @@ -34730,32 +34732,32 @@ 1 2 - 987321 + 988419 2 3 - 372965 + 373378 3 4 - 105746 + 105863 4 6 - 111242 + 111365 6 17 - 129833 + 129977 17 1943 - 12360 + 12374 @@ -34765,22 +34767,22 @@ ishandler - 59429 + 65331 block - 59429 + 65331 stmt_decl_bind - 585624 + 585099 stmt - 545474 + 544986 num @@ -34788,7 +34790,7 @@ decl - 585519 + 584994 @@ -34802,12 +34804,12 @@ 1 2 - 524595 + 524125 2 19 - 20879 + 20860 @@ -34823,12 +34825,12 @@ 1 2 - 524595 + 524125 2 19 - 20879 + 20860 @@ -35026,7 +35028,7 @@ 1 2 - 585481 + 584956 2 @@ -35047,7 +35049,7 @@ 1 2 - 585519 + 584994 @@ -35057,11 +35059,11 @@ stmt_decl_entry_bind - 528033 + 527560 stmt - 488186 + 487748 num @@ -35069,7 +35071,7 @@ decl_entry - 527974 + 527501 @@ -35083,12 +35085,12 @@ 1 2 - 467571 + 467152 2 19 - 20614 + 20596 @@ -35104,12 +35106,12 @@ 1 2 - 467571 + 467152 2 19 - 20614 + 20596 @@ -35307,12 +35309,12 @@ 1 2 - 527953 + 527480 3 6 - 21 + 20 @@ -35328,7 +35330,7 @@ 1 2 - 527974 + 527501 @@ -35338,15 +35340,15 @@ blockscope - 1438137 + 1414944 block - 1438137 + 1414944 enclosing - 1321939 + 1300619 @@ -35360,7 +35362,7 @@ 1 2 - 1438137 + 1414944 @@ -35376,12 +35378,12 @@ 1 2 - 1256077 + 1235820 2 13 - 65861 + 64799 @@ -35391,19 +35393,19 @@ jumpinfo - 253987 + 254036 id - 253987 + 254036 str - 21151 + 21155 target - 53044 + 53054 @@ -35417,7 +35419,7 @@ 1 2 - 253987 + 254036 @@ -35433,7 +35435,7 @@ 1 2 - 253987 + 254036 @@ -35449,12 +35451,12 @@ 2 3 - 9875 + 9877 3 4 - 4246 + 4247 4 @@ -35469,7 +35471,7 @@ 6 10 - 1699 + 1700 10 @@ -35495,12 +35497,12 @@ 1 2 - 16716 + 16720 2 3 - 2631 + 2632 3 @@ -35531,27 +35533,27 @@ 2 3 - 26427 + 26432 3 4 - 12897 + 12899 4 5 - 5342 + 5343 5 8 - 4690 + 4691 8 2124 - 3661 + 3662 @@ -35567,7 +35569,7 @@ 1 2 - 53044 + 53054 @@ -35577,19 +35579,19 @@ preprocdirects - 4432193 + 4427317 id - 4432193 + 4427317 kind - 1047 + 1045 location - 4429680 + 4424807 @@ -35603,7 +35605,7 @@ 1 2 - 4432193 + 4427317 @@ -35619,7 +35621,7 @@ 1 2 - 4432193 + 4427317 @@ -35757,7 +35759,7 @@ 1 2 - 4429575 + 4424702 25 @@ -35778,7 +35780,7 @@ 1 2 - 4429680 + 4424807 @@ -35788,15 +35790,15 @@ preprocpair - 1442371 + 1419110 begin - 1206210 + 1186757 elseelifend - 1442371 + 1419110 @@ -35810,17 +35812,17 @@ 1 2 - 986044 + 970142 2 3 - 209816 + 206432 3 11 - 10349 + 10182 @@ -35836,7 +35838,7 @@ 1 2 - 1442371 + 1419110 @@ -35846,41 +35848,41 @@ preproctrue - 783284 + 770651 branch - 783284 + 770651 preprocfalse - 326956 + 321683 branch - 326956 + 321683 preproctext - 3573396 + 3569465 id - 3573396 + 3569465 head - 2592094 + 2589243 body - 1516138 + 1514470 @@ -35894,7 +35896,7 @@ 1 2 - 3573396 + 3569465 @@ -35910,7 +35912,7 @@ 1 2 - 3573396 + 3569465 @@ -35926,12 +35928,12 @@ 1 2 - 2444983 + 2442293 2 740 - 147111 + 146949 @@ -35947,12 +35949,12 @@ 1 2 - 2529899 + 2527116 2 5 - 62195 + 62126 @@ -35968,17 +35970,17 @@ 1 2 - 1372482 + 1370972 2 6 - 113710 + 113585 6 11572 - 29945 + 29912 @@ -35994,17 +35996,17 @@ 1 2 - 1375519 + 1374005 2 7 - 114024 + 113899 7 2959 - 26595 + 26565 @@ -36014,15 +36016,15 @@ includes - 315665 + 310575 id - 315665 + 310575 included - 118080 + 116176 @@ -36036,7 +36038,7 @@ 1 2 - 315665 + 310575 @@ -36052,32 +36054,32 @@ 1 2 - 61627 + 60633 2 3 - 22110 + 21754 3 4 - 12701 + 12497 4 6 - 10349 + 10182 6 14 - 8938 + 8794 14 47 - 2352 + 2314 @@ -36087,15 +36089,15 @@ link_targets - 1471 + 1475 id - 1471 + 1475 binary - 1471 + 1475 @@ -36109,7 +36111,7 @@ 1 2 - 1471 + 1475 @@ -36125,7 +36127,7 @@ 1 2 - 1471 + 1475 @@ -36135,11 +36137,11 @@ link_parent - 40119536 + 38279611 element - 5112984 + 4843995 link_target @@ -36157,17 +36159,17 @@ 1 2 - 701522 + 645317 2 9 - 44120 + 25334 9 10 - 4367341 + 4173343 @@ -36186,48 +36188,48 @@ 35 - 124207 - 124208 + 118453 + 118454 35 - 124311 - 124312 + 118557 + 118558 35 - 124409 - 124410 + 118652 + 118653 35 - 124447 - 124448 + 118687 + 118688 35 - 124454 - 124455 + 118693 + 118694 35 - 124463 - 124464 + 118709 + 118710 35 - 126339 - 126340 + 120575 + 120576 35 - 132460 - 132461 + 125080 + 125081 35 - 134288 - 134289 + 127476 + 127477 35 diff --git a/cpp/ql/lib/upgrades/23f7cbb88a4eb29f30c3490363dc201bc054c5ff/old.dbscheme b/cpp/ql/lib/upgrades/23f7cbb88a4eb29f30c3490363dc201bc054c5ff/old.dbscheme new file mode 100644 index 00000000000..23f7cbb88a4 --- /dev/null +++ b/cpp/ql/lib/upgrades/23f7cbb88a4eb29f30c3490363dc201bc054c5ff/old.dbscheme @@ -0,0 +1,2125 @@ + +/** + * 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 + */ + +@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 @macroinvocations.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 + | 2 = constructor + | 3 = destructor + | 4 = conversion + | 5 = operator + | 6 = builtin // GCC built-in functions, e.g. __builtin___memcpy_chk + ; +*/ +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, + int handle: @variable ref, + int promise: @variable 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); + +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 +); + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default 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: @functionorblock 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 +); + +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 = error + | 2 = unknown + | 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 = __int8 // Microsoft-specific + | 21 = __int16 // Microsoft-specific + | 22 = __int32 // Microsoft-specific + | 23 = __int64 // Microsoft-specific + | 24 = float + | 25 = double + | 26 = long_double + | 27 = _Complex_float // C99-specific + | 28 = _Complex_double // C99-specific + | 29 = _Complex_long double // C99-specific + | 30 = _Imaginary_float // C99-specific + | 31 = _Imaginary_double // C99-specific + | 32 = _Imaginary_long_double // C99-specific + | 33 = wchar_t // Microsoft-specific + | 34 = decltype_nullptr // C++11 + | 35 = __int128 + | 36 = unsigned___int128 + | 37 = signed___int128 + | 38 = __float128 + | 39 = _Complex___float128 + | 40 = _Decimal32 + | 41 = _Decimal64 + | 42 = _Decimal128 + | 43 = char16_t + | 44 = char32_t + | 45 = _Float32 + | 46 = _Float32x + | 47 = _Float64 + | 48 = _Float64x + | 49 = _Float128 + | 50 = _Float128x + | 51 = char8_t + ; +*/ +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 +); + +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 EDG frontend. See symbol_ref.h there. + 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 +); + +/* + Fixed point types + precision(1) = short, precision(2) = default, precision(3) = long + is_unsigned(1) = unsigned is_unsigned(2) = signed + is_fract_type(1) = declared with _Fract + saturating(1) = declared with _Sat +*/ +/* TODO +fixedpointtypes( + unique int id: @fixedpointtype, + int precision: int ref, + int is_unsigned: int ref, + int is_fract_type: int ref, + int saturating: int 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 +); + +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 +; + +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_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 + ; + +/* +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 + | @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr | @assign_bitwise_expr + +@assign_expr = @assignexpr | @assign_op_expr + +/* + 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 +); + +/* + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 3 = size_and_alignment + ; +*/ + +/** + * 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 +); + +/* + 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 // EDG 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 +; + +@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 + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + ; + +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. + */ +#keyset[aggregate, field] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. + */ +#keyset[aggregate, element_index] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: 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; + +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 +); + +for_initialization( + unique int for_stmt: @stmt_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 +); + +@functionorblock = @function | @stmt_block; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @functionorblock 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( + unique 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/23f7cbb88a4eb29f30c3490363dc201bc054c5ff/semmlecode.cpp.dbscheme b/cpp/ql/lib/upgrades/23f7cbb88a4eb29f30c3490363dc201bc054c5ff/semmlecode.cpp.dbscheme new file mode 100644 index 00000000000..34549c3b093 --- /dev/null +++ b/cpp/ql/lib/upgrades/23f7cbb88a4eb29f30c3490363dc201bc054c5ff/semmlecode.cpp.dbscheme @@ -0,0 +1,2130 @@ + +/** + * 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 + */ + +@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 @macroinvocations.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 + | 2 = constructor + | 3 = destructor + | 4 = conversion + | 5 = operator + | 6 = builtin // GCC built-in functions, e.g. __builtin___memcpy_chk + ; +*/ +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, + int handle: @variable ref, + int promise: @variable 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); + +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 +); + +usings( + unique int id: @using, + int element_id: @element ref, + int location: @location_default 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: @functionorblock 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 +); + +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 = error + | 2 = unknown + | 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 = __int8 // Microsoft-specific + | 21 = __int16 // Microsoft-specific + | 22 = __int32 // Microsoft-specific + | 23 = __int64 // Microsoft-specific + | 24 = float + | 25 = double + | 26 = long_double + | 27 = _Complex_float // C99-specific + | 28 = _Complex_double // C99-specific + | 29 = _Complex_long double // C99-specific + | 30 = _Imaginary_float // C99-specific + | 31 = _Imaginary_double // C99-specific + | 32 = _Imaginary_long_double // C99-specific + | 33 = wchar_t // Microsoft-specific + | 34 = decltype_nullptr // C++11 + | 35 = __int128 + | 36 = unsigned___int128 + | 37 = signed___int128 + | 38 = __float128 + | 39 = _Complex___float128 + | 40 = _Decimal32 + | 41 = _Decimal64 + | 42 = _Decimal128 + | 43 = char16_t + | 44 = char32_t + | 45 = _Float32 + | 46 = _Float32x + | 47 = _Float64 + | 48 = _Float64x + | 49 = _Float128 + | 50 = _Float128x + | 51 = char8_t + ; +*/ +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 +); + +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 EDG frontend. See symbol_ref.h there. + 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 +); + +/* + Fixed point types + precision(1) = short, precision(2) = default, precision(3) = long + is_unsigned(1) = unsigned is_unsigned(2) = signed + is_fract_type(1) = declared with _Fract + saturating(1) = declared with _Sat +*/ +/* TODO +fixedpointtypes( + unique int id: @fixedpointtype, + int precision: int ref, + int is_unsigned: int ref, + int is_fract_type: int ref, + int saturating: int 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 +); + +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 +; + +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_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 + ; + +/* +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 + | @assignpaddexpr + | @assignpsubexpr + ; + +@assign_op_expr = @assign_arith_expr | @assign_bitwise_expr + +@assign_expr = @assignexpr | @assign_op_expr + +/* + 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 +); + +/* + case @deallocator.form of + 0 = plain + | 1 = size + | 2 = alignment + | 3 = size_and_alignment + ; +*/ + +/** + * 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 +); + +/* + 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 // EDG 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 +; + +@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 + | @isstandardlayoutexpr + | @istriviallycopyableexpr + | @isliteraltypeexpr + | @hastrivialmoveconstructorexpr + | @hastrivialmoveassignexpr + | @hasnothrowmoveassignexpr + | @isconstructibleexpr + | @isnothrowconstructibleexpr + | @hasfinalizerexpr + | @isdelegateexpr + | @isinterfaceclassexpr + | @isrefarrayexpr + | @isrefclassexpr + | @issealedexpr + | @issimplevalueclassexpr + | @isvalueclassexpr + | @isfinalexpr + | @builtinchooseexpr + | @builtincomplex + | @isassignable + | @isaggregate + | @hasuniqueobjectrepresentations + | @builtinbitcast + | @builtinshuffle + ; + +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. + */ +#keyset[aggregate, field] +aggregate_field_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int field: @membervariable ref +); + +/** + * The index of the element being initialized by an initializer expression + * within an aggregate initializer for an array. + */ +#keyset[aggregate, element_index] +aggregate_array_init( + int aggregate: @aggregateliteral ref, + int initializer: @expr ref, + int element_index: 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; + +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 +); + +for_initialization( + unique int for_stmt: @stmt_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 +); + +@functionorblock = @function | @stmt_block; + +blockscope( + unique int block: @stmt_block ref, + int enclosing: @functionorblock 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( + unique 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/23f7cbb88a4eb29f30c3490363dc201bc054c5ff/upgrade.properties b/cpp/ql/lib/upgrades/23f7cbb88a4eb29f30c3490363dc201bc054c5ff/upgrade.properties new file mode 100644 index 00000000000..1b45a2696ee --- /dev/null +++ b/cpp/ql/lib/upgrades/23f7cbb88a4eb29f30c3490363dc201bc054c5ff/upgrade.properties @@ -0,0 +1,2 @@ +description: Support all constant attribute arguments +compatibility: partial diff --git a/cpp/ql/test/library-tests/constants/strlen/expr.expected b/cpp/ql/test/library-tests/constants/strlen/expr.expected index 570ac1317f4..3564cedca30 100644 --- a/cpp/ql/test/library-tests/constants/strlen/expr.expected +++ b/cpp/ql/test/library-tests/constants/strlen/expr.expected @@ -1,3 +1,4 @@ +| strlen.cpp:7:49:7:49 | 1 | | strlen.cpp:11:39:11:48 | array to pointer conversion | | strlen.cpp:11:39:11:48 | file.ext | | strlen.cpp:12:35:12:40 | call to strlen |