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