diff --git a/.github/workflows/codegen.yml b/.github/workflows/python-tooling.yml
similarity index 73%
rename from .github/workflows/codegen.yml
rename to .github/workflows/python-tooling.yml
index 24422eba10f8..19059070878f 100644
--- a/.github/workflows/codegen.yml
+++ b/.github/workflows/python-tooling.yml
@@ -1,10 +1,11 @@
-name: Codegen
+name: Python tooling
on:
pull_request:
paths:
- "misc/bazel/**"
- "misc/codegen/**"
+ - "misc/scripts/models-as-data/bulk_generate_mad.py"
- "*.bazel*"
- .github/workflows/codegen.yml
- .pre-commit-config.yaml
@@ -17,17 +18,17 @@ permissions:
contents: read
jobs:
- codegen:
+ check-python-tooling:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- - uses: actions/setup-python@v4
+ - uses: actions/setup-python@v5
with:
- python-version-file: 'misc/codegen/.python-version'
+ python-version: '3.12'
- uses: pre-commit/action@646c83fcd040023954eafda54b4db0192ce70507
name: Check that python code is properly formatted
with:
- extra_args: autopep8 --all-files
+ extra_args: black --all-files
- name: Run codegen tests
shell: bash
run: |
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 42333e91289e..ced5d5021ca9 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -1,5 +1,7 @@
# See https://pre-commit.com for more information
# See https://pre-commit.com/hooks.html for more hooks
+default_language_version:
+ python: python3.12
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v3.2.0
@@ -14,11 +16,11 @@ repos:
hooks:
- id: clang-format
- - repo: https://github.com/pre-commit/mirrors-autopep8
- rev: v2.0.4
+ - repo: https://github.com/psf/black
+ rev: 25.1.0
hooks:
- - id: autopep8
- files: ^misc/codegen/.*\.py
+ - id: black
+ files: ^(misc/codegen/.*|misc/scripts/models-as-data/bulk_generate_mad)\.py$
- repo: local
hooks:
diff --git a/actions/ql/lib/change-notes/2025-06-09-bash-parsing-performance.md b/actions/ql/lib/change-notes/2025-06-09-bash-parsing-performance.md
new file mode 100644
index 000000000000..5ee29557c85e
--- /dev/null
+++ b/actions/ql/lib/change-notes/2025-06-09-bash-parsing-performance.md
@@ -0,0 +1,6 @@
+---
+category: minorAnalysis
+---
+* Fixed performance issues in the parsing of Bash scripts in workflow files,
+ which led to out-of-disk errors when analysing certain workflow files with
+ complex interpolations of shell commands or quoted strings.
\ No newline at end of file
diff --git a/actions/ql/lib/codeql/actions/Bash.qll b/actions/ql/lib/codeql/actions/Bash.qll
index 4519a8949d7c..4975ce6f4cc5 100644
--- a/actions/ql/lib/codeql/actions/Bash.qll
+++ b/actions/ql/lib/codeql/actions/Bash.qll
@@ -8,35 +8,64 @@ class BashShellScript extends ShellScript {
)
}
- private string lineProducer(int i) {
- result = this.getRawScript().regexpReplaceAll("\\\\\\s*\n", "").splitAt("\n", i)
- }
-
- private predicate cmdSubstitutionReplacement(string cmdSubs, string id, int k) {
- exists(string line | line = this.lineProducer(k) |
- exists(int i, int j |
- cmdSubs =
- // $() cmd substitution
- line.regexpFind("\\$\\((?:[^()]+|\\((?:[^()]+|\\([^()]*\\))*\\))*\\)", i, j)
- .regexpReplaceAll("^\\$\\(", "")
- .regexpReplaceAll("\\)$", "") and
- id = "cmdsubs:" + k + ":" + i + ":" + j
- )
- or
- exists(int i, int j |
- // `...` cmd substitution
- cmdSubs =
- line.regexpFind("\\`[^\\`]+\\`", i, j)
- .regexpReplaceAll("^\\`", "")
- .regexpReplaceAll("\\`$", "") and
- id = "cmd:" + k + ":" + i + ":" + j
- )
+ /**
+ * Gets the line at 0-based index `lineIndex` within this shell script,
+ * assuming newlines as separators.
+ */
+ private string lineProducer(int lineIndex) {
+ result = this.getRawScript().regexpReplaceAll("\\\\\\s*\n", "").splitAt("\n", lineIndex)
+ }
+
+ private predicate cmdSubstitutionReplacement(string command, string id, int lineIndex) {
+ this.commandInSubstitution(lineIndex, command, id)
+ or
+ this.commandInBackticks(lineIndex, command, id)
+ }
+
+ /**
+ * Holds if there is a command substitution `$(command)` in
+ * the line at `lineIndex` in the shell script,
+ * and `id` is a unique identifier for this command.
+ */
+ private predicate commandInSubstitution(int lineIndex, string command, string id) {
+ exists(int occurrenceIndex, int occurrenceOffset |
+ command =
+ // Look for the command inside a $(...) command substitution
+ this.lineProducer(lineIndex)
+ .regexpFind("\\$\\((?:[^()]+|\\((?:[^()]+|\\([^()]*\\))*\\))*\\)", occurrenceIndex,
+ occurrenceOffset)
+ // trim starting $( - TODO do this in first regex
+ .regexpReplaceAll("^\\$\\(", "")
+ // trim ending ) - TODO do this in first regex
+ .regexpReplaceAll("\\)$", "") and
+ id = "cmdsubs:" + lineIndex + ":" + occurrenceIndex + ":" + occurrenceOffset
)
}
- private predicate rankedCmdSubstitutionReplacements(int i, string old, string new) {
- old = rank[i](string old2 | this.cmdSubstitutionReplacement(old2, _, _) | old2) and
- this.cmdSubstitutionReplacement(old, new, _)
+ /**
+ * Holds if `command` is a command in backticks `` `...` `` in
+ * the line at `lineIndex` in the shell script,
+ * and `id` is a unique identifier for this command.
+ */
+ private predicate commandInBackticks(int lineIndex, string command, string id) {
+ exists(int occurrenceIndex, int occurrenceOffset |
+ command =
+ this.lineProducer(lineIndex)
+ .regexpFind("\\`[^\\`]+\\`", occurrenceIndex, occurrenceOffset)
+ // trim leading backtick - TODO do this in first regex
+ .regexpReplaceAll("^\\`", "")
+ // trim trailing backtick - TODO do this in first regex
+ .regexpReplaceAll("\\`$", "") and
+ id = "cmd:" + lineIndex + ":" + occurrenceIndex + ":" + occurrenceOffset
+ )
+ }
+
+ private predicate rankedCmdSubstitutionReplacements(int i, string command, string commandId) {
+ // rank commands by their unique IDs
+ commandId = rank[i](string c, string id | this.cmdSubstitutionReplacement(c, id, _) | id) and
+ // since we cannot output (command, ID) tuples from the rank operation,
+ // we need to work out the specific command associated with the resulting ID
+ this.cmdSubstitutionReplacement(command, commandId, _)
}
private predicate doReplaceCmdSubstitutions(int line, int round, string old, string new) {
@@ -64,31 +93,56 @@ class BashShellScript extends ShellScript {
this.cmdSubstitutionReplacement(result, _, i)
}
+ /**
+ * Holds if `quotedStr` is a string in double quotes in
+ * the line at `lineIndex` in the shell script,
+ * and `id` is a unique identifier for this quoted string.
+ */
+ private predicate doubleQuotedString(int lineIndex, string quotedStr, string id) {
+ exists(int occurrenceIndex, int occurrenceOffset |
+ // double quoted string
+ quotedStr =
+ this.cmdSubstitutedLineProducer(lineIndex)
+ .regexpFind("\"((?:[^\"\\\\]|\\\\.)*)\"", occurrenceIndex, occurrenceOffset) and
+ id =
+ "qstr:" + lineIndex + ":" + occurrenceIndex + ":" + occurrenceOffset + ":" +
+ quotedStr.length() + ":" + quotedStr.regexpReplaceAll("[^a-zA-Z0-9]", "")
+ )
+ }
+
+ /**
+ * Holds if `quotedStr` is a string in single quotes in
+ * the line at `lineIndex` in the shell script,
+ * and `id` is a unique identifier for this quoted string.
+ */
+ private predicate singleQuotedString(int lineIndex, string quotedStr, string id) {
+ exists(int occurrenceIndex, int occurrenceOffset |
+ // single quoted string
+ quotedStr =
+ this.cmdSubstitutedLineProducer(lineIndex)
+ .regexpFind("'((?:\\\\.|[^'\\\\])*)'", occurrenceIndex, occurrenceOffset) and
+ id =
+ "qstr:" + lineIndex + ":" + occurrenceIndex + ":" + occurrenceOffset + ":" +
+ quotedStr.length() + ":" + quotedStr.regexpReplaceAll("[^a-zA-Z0-9]", "")
+ )
+ }
+
private predicate quotedStringReplacement(string quotedStr, string id) {
- exists(string line, int k | line = this.cmdSubstitutedLineProducer(k) |
- exists(int i, int j |
- // double quoted string
- quotedStr = line.regexpFind("\"((?:[^\"\\\\]|\\\\.)*)\"", i, j) and
- id =
- "qstr:" + k + ":" + i + ":" + j + ":" + quotedStr.length() + ":" +
- quotedStr.regexpReplaceAll("[^a-zA-Z0-9]", "")
- )
+ exists(int lineIndex |
+ this.doubleQuotedString(lineIndex, quotedStr, id)
or
- exists(int i, int j |
- // single quoted string
- quotedStr = line.regexpFind("'((?:\\\\.|[^'\\\\])*)'", i, j) and
- id =
- "qstr:" + k + ":" + i + ":" + j + ":" + quotedStr.length() + ":" +
- quotedStr.regexpReplaceAll("[^a-zA-Z0-9]", "")
- )
+ this.singleQuotedString(lineIndex, quotedStr, id)
) and
// Only do this for strings that might otherwise disrupt subsequent parsing
quotedStr.regexpMatch("[\"'].*[$\n\r'\"" + Bash::separator() + "].*[\"']")
}
- private predicate rankedQuotedStringReplacements(int i, string old, string new) {
- old = rank[i](string old2 | this.quotedStringReplacement(old2, _) | old2) and
- this.quotedStringReplacement(old, new)
+ private predicate rankedQuotedStringReplacements(int i, string quotedString, string quotedStringId) {
+ // rank quoted strings by their nearly-unique IDs
+ quotedStringId = rank[i](string s, string id | this.quotedStringReplacement(s, id) | id) and
+ // since we cannot output (string, ID) tuples from the rank operation,
+ // we need to work out the specific string associated with the resulting ID
+ this.quotedStringReplacement(quotedString, quotedStringId)
}
private predicate doReplaceQuotedStrings(int line, int round, string old, string new) {
diff --git a/actions/ql/lib/qlpack.yml b/actions/ql/lib/qlpack.yml
index 5919efe3b678..596bf4a14f0a 100644
--- a/actions/ql/lib/qlpack.yml
+++ b/actions/ql/lib/qlpack.yml
@@ -1,5 +1,5 @@
name: codeql/actions-all
-version: 0.4.11
+version: 0.4.12-dev
library: true
warnOnImplicitThis: true
dependencies:
diff --git a/actions/ql/src/qlpack.yml b/actions/ql/src/qlpack.yml
index 9e45e764edef..99c4fd8d02c1 100644
--- a/actions/ql/src/qlpack.yml
+++ b/actions/ql/src/qlpack.yml
@@ -1,5 +1,5 @@
name: codeql/actions-queries
-version: 0.6.3
+version: 0.6.4-dev
library: false
warnOnImplicitThis: true
groups: [actions, queries]
diff --git a/actions/ql/test/query-tests/Security/CWE-094/.github/workflows/interpolation.yml b/actions/ql/test/query-tests/Security/CWE-094/.github/workflows/interpolation.yml
new file mode 100644
index 000000000000..2b719a3a38ab
--- /dev/null
+++ b/actions/ql/test/query-tests/Security/CWE-094/.github/workflows/interpolation.yml
@@ -0,0 +1,81 @@
+name: Workflow with complex interpolation
+on:
+ workflow_dispatch:
+ inputs:
+ choice-a:
+ required: true
+ type: choice
+ description: choice-a
+ default: a1
+ options:
+ - a1
+ - a2
+ - a3
+ string-b:
+ required: false
+ type: string
+ description: string-b
+ string-c:
+ required: false
+ type: string
+ description: string-c
+ list-d:
+ required: true
+ type: string
+ default: d1 d2
+ description: list-d whitespace separated
+ list-e:
+ required: false
+ type: string
+ description: list-e whitespace separated
+ choice-f:
+ required: true
+ type: choice
+ description: choice-f
+ options:
+ - false
+ - true
+
+env:
+ DRY_TEST: false
+ B: ${{ github.event.inputs.string-b }}
+
+jobs:
+ job:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Produce values
+ id: produce-values
+ run: |
+ echo "region=region" >> $GITHUB_OUTPUT
+ echo "zone=zone" >> $GITHUB_OUTPUT
+
+ - name: Step with complex interpolation
+ id: complex
+ env:
+ CHOICE_A: ${{ github.event.inputs.choice-a }}
+ STRING_B: ${{ github.event.inputs.string-b }}
+ STRING_C: ${{ github.event.inputs.string-c }}
+ LIST_D: ${{ github.event.inputs.list-d }}
+ LIST_E: ${{ github.event.inputs.list-e }}
+ CHOICE_F: ${{ github.event.inputs.choice-f }}
+ REGION: ${{ steps.produce-values.outputs.region }}
+ ZONE: ${{ steps.produce-values.outputs.zone }}
+ DRY_TEST_JSON: ${{ fromJSON(env.DRY_TEST) }}
+ FUNCTION_NAME: my-function
+ USER_EMAIL: 'example@example.com'
+ TYPE: type
+ RANGE: '0-100'
+
+ run: |
+ comma_separated_list_d=$(echo "${LIST_D}" | sed "s/ /\",\"/g")
+ comma_separated_list_e=$(echo "${LIST_E}" | sed "s/ /\",\"/g")
+ c1=$(echo "${STRING_C}" | cut -d "-" -f 1)
+ c2=$(echo "${STRING_C}" | cut -d "-" -f 2)
+ # Similar commands that use JSON payloads with string interpolation.
+ response=$(aws lambda invoke --invocation-type RequestResponse --function-name "${FUNCTION_NAME}" --region "${REGION}" --cli-read-timeout 0 --cli-binary-format raw-in-base64-out --payload '{"appName":"my-app","chA":"'"${CHOICE_A}"'","c1":"'"${c1}"'","c2":"'"${c2}"'","a":"${CHOICE_A}","bValue":"${B}","zone":"${ZONE}","userEmail":"'"${USER_EMAIL}"'","region":"${REGION}","range":"${RANGE}","type":"${TYPE}","b":"${STRING_B}","listD":"","listE":"","dryTest":'"${DRY_TEST_JSON}"',"f":"${CHOICE_F}"}' ./config.json --log-type Tail)
+ response=$(aws lambda invoke --invocation-type RequestResponse --function-name "${FUNCTION_NAME}" --region "${REGION}" --cli-read-timeout 0 --cli-binary-format raw-in-base64-out --payload '{"appName":"my-app","chA":"'"${CHOICE_A}"'","c1":"'"${c1}"'","c2":"'"${c2}"'","a":"${CHOICE_A}","bValue":"${B}","zone":"${ZONE}","userEmail":"'"${USER_EMAIL}"'","region":"${REGION}","range":"${RANGE}","type":"${TYPE}","b":"${STRING_B}","listD":["'"${comma_separated_list_d}"'"],"listE":"","dryTest":'"${DRY_TEST_JSON}"',"f":"${CHOICE_F}"}' ./config.json --log-type Tail)
+ response=$(aws lambda invoke --invocation-type RequestResponse --function-name "${FUNCTION_NAME}" --region "${REGION}" --cli-read-timeout 0 --cli-binary-format raw-in-base64-out --payload '{"appName":"my-app","chA":"'"${CHOICE_A}"'","c1":"'"${c1}"'","c2":"'"${c2}"'","a":"${CHOICE_A}","bValue":"${B}","zone":"${ZONE}","userEmail":"'"${USER_EMAIL}"'","region":"${REGION}","range":"${RANGE}","type":"${TYPE}","b":"${STRING_B}","listD":["'"${comma_separated_list_d}"'"],"listE":"","dryTest":'"${DRY_TEST_JSON}"',"f":"${CHOICE_F}"}' ./config.json --log-type Tail)
+ response=$(aws lambda invoke --invocation-type RequestResponse --function-name "${FUNCTION_NAME}" --region "${REGION}" --cli-read-timeout 0 --cli-binary-format raw-in-base64-out --payload '{"appName":"my-app","chA":"'"${CHOICE_A}"'","c1":"'"${c1}"'","c2":"'"${c2}"'","a":"${CHOICE_A}","bValue":"${B}","zone":"${ZONE}","userEmail":"'"${USER_EMAIL}"'","region":"${REGION}","range":"${RANGE}","type":"${TYPE}","b":"${STRING_B}","listD":["'"${comma_separated_list_d}"'"],"listE":"","dryTest":'"${DRY_TEST_JSON}"',"f":"${CHOICE_F}"}' ./config.json --log-type Tail)
+ response=$(aws lambda invoke --invocation-type RequestResponse --function-name "${FUNCTION_NAME}" --region "${REGION}" --cli-read-timeout 0 --cli-binary-format raw-in-base64-out --payload '{"appName":"my-app","chA":"'"${CHOICE_A}"'","c1":"'"${c1}"'","c2":"'"${c2}"'","a":"${CHOICE_A}","bValue":"${B}","zone":"${ZONE}","userEmail":"'"${USER_EMAIL}"'","region":"${REGION}","range":"${RANGE}","type":"${TYPE}","b":"${STRING_B}","listD":"","listE":["'"${comma_separated_list_e}"'"],"dryTest":'"${DRY_TEST_JSON}"',"f":"${CHOICE_F}"}' ./config.json --log-type Tail)
+ shell: bash
diff --git a/cpp/bulk_generation_targets.yml b/cpp/bulk_generation_targets.yml
new file mode 100644
index 000000000000..dbcec7bf9ddf
--- /dev/null
+++ b/cpp/bulk_generation_targets.yml
@@ -0,0 +1,31 @@
+language: cpp
+strategy: dca
+destination: cpp/ql/lib/ext/generated
+targets:
+- name: zlib
+ with-sinks: false
+ with-sources: false
+- name: brotli
+ with-sinks: false
+ with-sources: false
+- name: libidn2
+ with-sinks: false
+ with-sources: false
+- name: libssh2
+ with-sinks: false
+ with-sources: false
+- name: sqlite
+ with-sinks: false
+ with-sources: false
+- name: openssl
+ with-sinks: false
+ with-sources: false
+- name: nghttp2
+ with-sinks: false
+ with-sources: false
+- name: libuv
+ with-sinks: false
+ with-sources: false
+- name: curl
+ with-sinks: false
+ with-sources: false
diff --git a/cpp/downgrades/3c45f8b9e71ec723bf50c40581e1f18f4f25e290/lambdas.ql b/cpp/downgrades/3c45f8b9e71ec723bf50c40581e1f18f4f25e290/lambdas.ql
new file mode 100644
index 000000000000..cb35a2cc5329
--- /dev/null
+++ b/cpp/downgrades/3c45f8b9e71ec723bf50c40581e1f18f4f25e290/lambdas.ql
@@ -0,0 +1,7 @@
+class LambdaExpr extends @lambdaexpr {
+ string toString() { none() }
+}
+
+from LambdaExpr lambda, string default_capture, boolean has_explicit_return_type
+where lambdas(lambda, default_capture, has_explicit_return_type, _)
+select lambda, default_capture, has_explicit_return_type
diff --git a/cpp/downgrades/3c45f8b9e71ec723bf50c40581e1f18f4f25e290/old.dbscheme b/cpp/downgrades/3c45f8b9e71ec723bf50c40581e1f18f4f25e290/old.dbscheme
new file mode 100644
index 000000000000..3c45f8b9e71e
--- /dev/null
+++ b/cpp/downgrades/3c45f8b9e71ec723bf50c40581e1f18f4f25e290/old.dbscheme
@@ -0,0 +1,2493 @@
+
+/**
+ * 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
+);
+
+/*
+case @fun_requires.kind of
+ 1 = @template_attached
+| 2 = @function_attached
+;
+*/
+
+fun_requires(
+ int id: @fun_decl ref,
+ int kind: int ref,
+ int constraint: @expr 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_specialized(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);
+var_requires(
+ int id: @var_decl ref,
+ int constraint: @expr 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
+);
+type_requires(
+ int id: @type_decl ref,
+ int constraint: @expr 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
+| 62 = @mfp8 // __mfp8
+;
+
+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 or C23 `typeof`/`typeof_unqual`
+ * operator taking an expression as its argument. For example:
+ * ```
+ * int a;
+ * decltype(1+a) b;
+ * typeof(1+a) c;
+ * ```
+ * Here `expr` is `1+a`.
+ *
+ * Sometimes an additional pair of parentheses around the expression
+ * changes the semantics of the 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.
+ */
+
+/*
+case @decltype.kind of
+| 0 = @decltype
+| 1 = @typeof // The frontend does not differentiate between typeof and typeof_unqual
+;
+*/
+
+#keyset[id, expr]
+decltypes(
+ int id: @decltype,
+ int expr: @expr ref,
+ int kind: int ref,
+ int base_type: @type ref,
+ boolean parentheses_would_change_meaning: boolean ref
+);
+
+/*
+case @type_operator.kind of
+| 0 = @typeof // The frontend does not differentiate between typeof and typeof_unqual
+| 1 = @underlying_type
+| 2 = @bases
+| 3 = @direct_bases
+| 4 = @add_lvalue_reference
+| 5 = @add_pointer
+| 6 = @add_rvalue_reference
+| 7 = @decay
+| 8 = @make_signed
+| 9 = @make_unsigned
+| 10 = @remove_all_extents
+| 11 = @remove_const
+| 12 = @remove_cv
+| 13 = @remove_cvref
+| 14 = @remove_extent
+| 15 = @remove_pointer
+| 16 = @remove_reference_t
+| 17 = @remove_restrict
+| 18 = @remove_volatile
+| 19 = @remove_reference
+;
+*/
+
+type_operators(
+ unique int id: @type_operator,
+ int arg_type: @type ref,
+ int kind: int ref,
+ int base_type: @type ref
+)
+
+/*
+case @usertype.kind of
+| 0 = @unknown_usertype
+| 1 = @struct
+| 2 = @class
+| 3 = @union
+| 4 = @enum
+// ... 5 = @typedef deprecated // classic C: typedef typedef type name
+// ... 6 = @template deprecated
+| 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 deprecated // a using name = type style typedef
+| 15 = @template_struct
+| 16 = @template_class
+| 17 = @template_union
+| 18 = @alias
+;
+*/
+
+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
+);
+
+/*
+case @usertype.alias_kind of
+| 0 = @typedef
+| 1 = @alias
+*/
+
+usertype_alias_kind(
+ int id: @usertype ref,
+ int alias_kind: int ref
+)
+
+nontype_template_parameters(
+ int id: @expr ref
+);
+
+type_template_type_constraint(
+ int id: @usertype ref,
+ int constraint: @expr 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
+);
+
+@user_or_decltype = @usertype | @decltype;
+
+is_proxy_class_for(
+ unique int id: @usertype ref,
+ int templ_param_id: @user_or_decltype 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
+);
+
+template_template_instantiation(
+ int to: @usertype ref,
+ int from: @usertype ref
+);
+template_template_argument(
+ int type_id: @usertype ref,
+ int index: int ref,
+ int arg_type: @type ref
+);
+template_template_argument_value(
+ int type_id: @usertype ref,
+ int index: int ref,
+ int arg_value: @expr ref
+);
+
+@concept = @concept_template | @concept_id;
+
+concept_templates(
+ unique int concept_id: @concept_template,
+ string name: string ref,
+ int location: @location_default ref
+);
+concept_instantiation(
+ unique int to: @concept_id ref,
+ int from: @concept_template ref
+);
+is_type_constraint(int concept_id: @concept_id ref);
+concept_template_argument(
+ int concept_id: @concept ref,
+ int index: int ref,
+ int arg_type: @type ref
+);
+concept_template_argument_value(
+ int concept_id: @concept 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
+ | @routinetype
+ | @ptrtomember
+ | @decltype
+ | @type_operator;
+
+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
+ | @concept_template;
+
+@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,
+ boolean is_designated: boolean 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,
+ boolean is_designated: boolean 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
+);
+
+@sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof | @sizeof_pack;
+
+sizeof_bind(
+ unique int expr: @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,
+ boolean has_explicit_parameter_list: 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
+| 38 = @stmt_consteval_if
+| 39 = @stmt_not_consteval_if
+;
+
+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
+);
+
+type_is_vla(unique int type_id: @derivedtype 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
+);
+
+@stmt_consteval_or_not_consteval_if = @stmt_consteval_if | @stmt_not_consteval_if;
+
+consteval_if_then(
+ unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref,
+ int then_id: @stmt ref
+);
+
+consteval_if_else(
+ unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_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
+| 14 = @ppd_ms_import
+| 15 = @ppd_elifdef
+| 16 = @ppd_elifndef
+| 18 = @ppd_warning
+;
+
+@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next | @ppd_ms_import;
+
+@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif | @ppd_elifdef | @ppd_elifndef;
+
+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/3c45f8b9e71ec723bf50c40581e1f18f4f25e290/semmlecode.cpp.dbscheme b/cpp/downgrades/3c45f8b9e71ec723bf50c40581e1f18f4f25e290/semmlecode.cpp.dbscheme
new file mode 100644
index 000000000000..af887e83a815
--- /dev/null
+++ b/cpp/downgrades/3c45f8b9e71ec723bf50c40581e1f18f4f25e290/semmlecode.cpp.dbscheme
@@ -0,0 +1,2492 @@
+
+/**
+ * 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
+);
+
+/*
+case @fun_requires.kind of
+ 1 = @template_attached
+| 2 = @function_attached
+;
+*/
+
+fun_requires(
+ int id: @fun_decl ref,
+ int kind: int ref,
+ int constraint: @expr 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_specialized(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);
+var_requires(
+ int id: @var_decl ref,
+ int constraint: @expr 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
+);
+type_requires(
+ int id: @type_decl ref,
+ int constraint: @expr 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
+| 62 = @mfp8 // __mfp8
+;
+
+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 or C23 `typeof`/`typeof_unqual`
+ * operator taking an expression as its argument. For example:
+ * ```
+ * int a;
+ * decltype(1+a) b;
+ * typeof(1+a) c;
+ * ```
+ * Here `expr` is `1+a`.
+ *
+ * Sometimes an additional pair of parentheses around the expression
+ * changes the semantics of the 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.
+ */
+
+/*
+case @decltype.kind of
+| 0 = @decltype
+| 1 = @typeof // The frontend does not differentiate between typeof and typeof_unqual
+;
+*/
+
+#keyset[id, expr]
+decltypes(
+ int id: @decltype,
+ int expr: @expr ref,
+ int kind: int ref,
+ int base_type: @type ref,
+ boolean parentheses_would_change_meaning: boolean ref
+);
+
+/*
+case @type_operator.kind of
+| 0 = @typeof // The frontend does not differentiate between typeof and typeof_unqual
+| 1 = @underlying_type
+| 2 = @bases
+| 3 = @direct_bases
+| 4 = @add_lvalue_reference
+| 5 = @add_pointer
+| 6 = @add_rvalue_reference
+| 7 = @decay
+| 8 = @make_signed
+| 9 = @make_unsigned
+| 10 = @remove_all_extents
+| 11 = @remove_const
+| 12 = @remove_cv
+| 13 = @remove_cvref
+| 14 = @remove_extent
+| 15 = @remove_pointer
+| 16 = @remove_reference_t
+| 17 = @remove_restrict
+| 18 = @remove_volatile
+| 19 = @remove_reference
+;
+*/
+
+type_operators(
+ unique int id: @type_operator,
+ int arg_type: @type ref,
+ int kind: int ref,
+ int base_type: @type ref
+)
+
+/*
+case @usertype.kind of
+| 0 = @unknown_usertype
+| 1 = @struct
+| 2 = @class
+| 3 = @union
+| 4 = @enum
+// ... 5 = @typedef deprecated // classic C: typedef typedef type name
+// ... 6 = @template deprecated
+| 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 deprecated // a using name = type style typedef
+| 15 = @template_struct
+| 16 = @template_class
+| 17 = @template_union
+| 18 = @alias
+;
+*/
+
+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
+);
+
+/*
+case @usertype.alias_kind of
+| 0 = @typedef
+| 1 = @alias
+*/
+
+usertype_alias_kind(
+ int id: @usertype ref,
+ int alias_kind: int ref
+)
+
+nontype_template_parameters(
+ int id: @expr ref
+);
+
+type_template_type_constraint(
+ int id: @usertype ref,
+ int constraint: @expr 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
+);
+
+@user_or_decltype = @usertype | @decltype;
+
+is_proxy_class_for(
+ unique int id: @usertype ref,
+ int templ_param_id: @user_or_decltype 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
+);
+
+template_template_instantiation(
+ int to: @usertype ref,
+ int from: @usertype ref
+);
+template_template_argument(
+ int type_id: @usertype ref,
+ int index: int ref,
+ int arg_type: @type ref
+);
+template_template_argument_value(
+ int type_id: @usertype ref,
+ int index: int ref,
+ int arg_value: @expr ref
+);
+
+@concept = @concept_template | @concept_id;
+
+concept_templates(
+ unique int concept_id: @concept_template,
+ string name: string ref,
+ int location: @location_default ref
+);
+concept_instantiation(
+ unique int to: @concept_id ref,
+ int from: @concept_template ref
+);
+is_type_constraint(int concept_id: @concept_id ref);
+concept_template_argument(
+ int concept_id: @concept ref,
+ int index: int ref,
+ int arg_type: @type ref
+);
+concept_template_argument_value(
+ int concept_id: @concept 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
+ | @routinetype
+ | @ptrtomember
+ | @decltype
+ | @type_operator;
+
+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
+ | @concept_template;
+
+@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,
+ boolean is_designated: boolean 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,
+ boolean is_designated: boolean 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
+);
+
+@sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof | @sizeof_pack;
+
+sizeof_bind(
+ unique int expr: @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
+| 38 = @stmt_consteval_if
+| 39 = @stmt_not_consteval_if
+;
+
+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
+);
+
+type_is_vla(unique int type_id: @derivedtype 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
+);
+
+@stmt_consteval_or_not_consteval_if = @stmt_consteval_if | @stmt_not_consteval_if;
+
+consteval_if_then(
+ unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref,
+ int then_id: @stmt ref
+);
+
+consteval_if_else(
+ unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_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
+| 14 = @ppd_ms_import
+| 15 = @ppd_elifdef
+| 16 = @ppd_elifndef
+| 18 = @ppd_warning
+;
+
+@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next | @ppd_ms_import;
+
+@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif | @ppd_elifdef | @ppd_elifndef;
+
+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/3c45f8b9e71ec723bf50c40581e1f18f4f25e290/upgrade.properties b/cpp/downgrades/3c45f8b9e71ec723bf50c40581e1f18f4f25e290/upgrade.properties
new file mode 100644
index 000000000000..9299dcb085a6
--- /dev/null
+++ b/cpp/downgrades/3c45f8b9e71ec723bf50c40581e1f18f4f25e290/upgrade.properties
@@ -0,0 +1,3 @@
+description: capture whether a lambda has an explicitly specified parameter list.
+compatibility: full
+lambdas.rel: run lambdas.qlo
diff --git a/cpp/downgrades/a8c2176e9a5cf9be8d17053a4c8e7e56b5aced6d/old.dbscheme b/cpp/downgrades/a8c2176e9a5cf9be8d17053a4c8e7e56b5aced6d/old.dbscheme
new file mode 100644
index 000000000000..a8c2176e9a5c
--- /dev/null
+++ b/cpp/downgrades/a8c2176e9a5cf9be8d17053a4c8e7e56b5aced6d/old.dbscheme
@@ -0,0 +1,2494 @@
+
+/**
+ * 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
+);
+
+/*
+case @fun_requires.kind of
+ 1 = @template_attached
+| 2 = @function_attached
+;
+*/
+
+fun_requires(
+ int id: @fun_decl ref,
+ int kind: int ref,
+ int constraint: @expr 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_specialized(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);
+var_requires(
+ int id: @var_decl ref,
+ int constraint: @expr 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
+);
+type_requires(
+ int id: @type_decl ref,
+ int constraint: @expr 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
+| 62 = @mfp8 // __mfp8
+;
+
+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 or C23 `typeof`/`typeof_unqual`
+ * operator taking an expression as its argument. For example:
+ * ```
+ * int a;
+ * decltype(1+a) b;
+ * typeof(1+a) c;
+ * ```
+ * Here `expr` is `1+a`.
+ *
+ * Sometimes an additional pair of parentheses around the expression
+ * changes the semantics of the 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.
+ */
+
+/*
+case @decltype.kind of
+| 0 = @decltype
+| 1 = @typeof // The frontend does not differentiate between typeof and typeof_unqual
+;
+*/
+
+#keyset[id, expr]
+decltypes(
+ int id: @decltype,
+ int expr: @expr ref,
+ int kind: int ref,
+ int base_type: @type ref,
+ boolean parentheses_would_change_meaning: boolean ref
+);
+
+/*
+case @type_operator.kind of
+| 0 = @typeof // The frontend does not differentiate between typeof and typeof_unqual
+| 1 = @underlying_type
+| 2 = @bases
+| 3 = @direct_bases
+| 4 = @add_lvalue_reference
+| 5 = @add_pointer
+| 6 = @add_rvalue_reference
+| 7 = @decay
+| 8 = @make_signed
+| 9 = @make_unsigned
+| 10 = @remove_all_extents
+| 11 = @remove_const
+| 12 = @remove_cv
+| 13 = @remove_cvref
+| 14 = @remove_extent
+| 15 = @remove_pointer
+| 16 = @remove_reference_t
+| 17 = @remove_restrict
+| 18 = @remove_volatile
+| 19 = @remove_reference
+;
+*/
+
+type_operators(
+ unique int id: @type_operator,
+ int arg_type: @type ref,
+ int kind: int ref,
+ int base_type: @type ref
+)
+
+/*
+case @usertype.kind of
+| 0 = @unknown_usertype
+| 1 = @struct
+| 2 = @class
+| 3 = @union
+| 4 = @enum
+// ... 5 = @typedef deprecated // classic C: typedef typedef type name
+// ... 6 = @template deprecated
+| 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 deprecated // a using name = type style typedef
+| 15 = @template_struct
+| 16 = @template_class
+| 17 = @template_union
+| 18 = @alias
+;
+*/
+
+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
+);
+
+/*
+case @usertype.alias_kind of
+| 0 = @typedef
+| 1 = @alias
+*/
+
+usertype_alias_kind(
+ int id: @usertype ref,
+ int alias_kind: int ref
+)
+
+nontype_template_parameters(
+ int id: @expr ref
+);
+
+type_template_type_constraint(
+ int id: @usertype ref,
+ int constraint: @expr 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
+);
+
+@user_or_decltype = @usertype | @decltype;
+
+is_proxy_class_for(
+ unique int id: @usertype ref,
+ int templ_param_id: @user_or_decltype 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
+);
+
+template_template_instantiation(
+ int to: @usertype ref,
+ int from: @usertype ref
+);
+template_template_argument(
+ int type_id: @usertype ref,
+ int index: int ref,
+ int arg_type: @type ref
+);
+template_template_argument_value(
+ int type_id: @usertype ref,
+ int index: int ref,
+ int arg_value: @expr ref
+);
+
+@concept = @concept_template | @concept_id;
+
+concept_templates(
+ unique int concept_id: @concept_template,
+ string name: string ref,
+ int location: @location_default ref
+);
+concept_instantiation(
+ unique int to: @concept_id ref,
+ int from: @concept_template ref
+);
+is_type_constraint(int concept_id: @concept_id ref);
+concept_template_argument(
+ int concept_id: @concept ref,
+ int index: int ref,
+ int arg_type: @type ref
+);
+concept_template_argument_value(
+ int concept_id: @concept 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
+ | @routinetype
+ | @ptrtomember
+ | @decltype
+ | @type_operator;
+
+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
+ | @concept_template;
+
+@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,
+ boolean is_designated: boolean 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,
+ boolean is_designated: boolean 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
+);
+
+@sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof | @sizeof_pack;
+
+sizeof_bind(
+ unique int expr: @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,
+ boolean has_explicit_parameter_list: 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
+| 38 = @stmt_consteval_if
+| 39 = @stmt_not_consteval_if
+| 40 = @stmt_leave
+;
+
+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
+);
+
+type_is_vla(unique int type_id: @derivedtype 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
+);
+
+@stmt_consteval_or_not_consteval_if = @stmt_consteval_if | @stmt_not_consteval_if;
+
+consteval_if_then(
+ unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref,
+ int then_id: @stmt ref
+);
+
+consteval_if_else(
+ unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_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 | @stmt_leave;
+
+@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
+| 14 = @ppd_ms_import
+| 15 = @ppd_elifdef
+| 16 = @ppd_elifndef
+| 18 = @ppd_warning
+;
+
+@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next | @ppd_ms_import;
+
+@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif | @ppd_elifdef | @ppd_elifndef;
+
+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/a8c2176e9a5cf9be8d17053a4c8e7e56b5aced6d/semmlecode.cpp.dbscheme b/cpp/downgrades/a8c2176e9a5cf9be8d17053a4c8e7e56b5aced6d/semmlecode.cpp.dbscheme
new file mode 100644
index 000000000000..3c45f8b9e71e
--- /dev/null
+++ b/cpp/downgrades/a8c2176e9a5cf9be8d17053a4c8e7e56b5aced6d/semmlecode.cpp.dbscheme
@@ -0,0 +1,2493 @@
+
+/**
+ * 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
+);
+
+/*
+case @fun_requires.kind of
+ 1 = @template_attached
+| 2 = @function_attached
+;
+*/
+
+fun_requires(
+ int id: @fun_decl ref,
+ int kind: int ref,
+ int constraint: @expr 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_specialized(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);
+var_requires(
+ int id: @var_decl ref,
+ int constraint: @expr 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
+);
+type_requires(
+ int id: @type_decl ref,
+ int constraint: @expr 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
+| 62 = @mfp8 // __mfp8
+;
+
+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 or C23 `typeof`/`typeof_unqual`
+ * operator taking an expression as its argument. For example:
+ * ```
+ * int a;
+ * decltype(1+a) b;
+ * typeof(1+a) c;
+ * ```
+ * Here `expr` is `1+a`.
+ *
+ * Sometimes an additional pair of parentheses around the expression
+ * changes the semantics of the 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.
+ */
+
+/*
+case @decltype.kind of
+| 0 = @decltype
+| 1 = @typeof // The frontend does not differentiate between typeof and typeof_unqual
+;
+*/
+
+#keyset[id, expr]
+decltypes(
+ int id: @decltype,
+ int expr: @expr ref,
+ int kind: int ref,
+ int base_type: @type ref,
+ boolean parentheses_would_change_meaning: boolean ref
+);
+
+/*
+case @type_operator.kind of
+| 0 = @typeof // The frontend does not differentiate between typeof and typeof_unqual
+| 1 = @underlying_type
+| 2 = @bases
+| 3 = @direct_bases
+| 4 = @add_lvalue_reference
+| 5 = @add_pointer
+| 6 = @add_rvalue_reference
+| 7 = @decay
+| 8 = @make_signed
+| 9 = @make_unsigned
+| 10 = @remove_all_extents
+| 11 = @remove_const
+| 12 = @remove_cv
+| 13 = @remove_cvref
+| 14 = @remove_extent
+| 15 = @remove_pointer
+| 16 = @remove_reference_t
+| 17 = @remove_restrict
+| 18 = @remove_volatile
+| 19 = @remove_reference
+;
+*/
+
+type_operators(
+ unique int id: @type_operator,
+ int arg_type: @type ref,
+ int kind: int ref,
+ int base_type: @type ref
+)
+
+/*
+case @usertype.kind of
+| 0 = @unknown_usertype
+| 1 = @struct
+| 2 = @class
+| 3 = @union
+| 4 = @enum
+// ... 5 = @typedef deprecated // classic C: typedef typedef type name
+// ... 6 = @template deprecated
+| 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 deprecated // a using name = type style typedef
+| 15 = @template_struct
+| 16 = @template_class
+| 17 = @template_union
+| 18 = @alias
+;
+*/
+
+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
+);
+
+/*
+case @usertype.alias_kind of
+| 0 = @typedef
+| 1 = @alias
+*/
+
+usertype_alias_kind(
+ int id: @usertype ref,
+ int alias_kind: int ref
+)
+
+nontype_template_parameters(
+ int id: @expr ref
+);
+
+type_template_type_constraint(
+ int id: @usertype ref,
+ int constraint: @expr 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
+);
+
+@user_or_decltype = @usertype | @decltype;
+
+is_proxy_class_for(
+ unique int id: @usertype ref,
+ int templ_param_id: @user_or_decltype 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
+);
+
+template_template_instantiation(
+ int to: @usertype ref,
+ int from: @usertype ref
+);
+template_template_argument(
+ int type_id: @usertype ref,
+ int index: int ref,
+ int arg_type: @type ref
+);
+template_template_argument_value(
+ int type_id: @usertype ref,
+ int index: int ref,
+ int arg_value: @expr ref
+);
+
+@concept = @concept_template | @concept_id;
+
+concept_templates(
+ unique int concept_id: @concept_template,
+ string name: string ref,
+ int location: @location_default ref
+);
+concept_instantiation(
+ unique int to: @concept_id ref,
+ int from: @concept_template ref
+);
+is_type_constraint(int concept_id: @concept_id ref);
+concept_template_argument(
+ int concept_id: @concept ref,
+ int index: int ref,
+ int arg_type: @type ref
+);
+concept_template_argument_value(
+ int concept_id: @concept 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
+ | @routinetype
+ | @ptrtomember
+ | @decltype
+ | @type_operator;
+
+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
+ | @concept_template;
+
+@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,
+ boolean is_designated: boolean 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,
+ boolean is_designated: boolean 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
+);
+
+@sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof | @sizeof_pack;
+
+sizeof_bind(
+ unique int expr: @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,
+ boolean has_explicit_parameter_list: 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
+| 38 = @stmt_consteval_if
+| 39 = @stmt_not_consteval_if
+;
+
+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
+);
+
+type_is_vla(unique int type_id: @derivedtype 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
+);
+
+@stmt_consteval_or_not_consteval_if = @stmt_consteval_if | @stmt_not_consteval_if;
+
+consteval_if_then(
+ unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref,
+ int then_id: @stmt ref
+);
+
+consteval_if_else(
+ unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_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
+| 14 = @ppd_ms_import
+| 15 = @ppd_elifdef
+| 16 = @ppd_elifndef
+| 18 = @ppd_warning
+;
+
+@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next | @ppd_ms_import;
+
+@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif | @ppd_elifdef | @ppd_elifndef;
+
+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/a8c2176e9a5cf9be8d17053a4c8e7e56b5aced6d/stmts.ql b/cpp/downgrades/a8c2176e9a5cf9be8d17053a4c8e7e56b5aced6d/stmts.ql
new file mode 100644
index 000000000000..41c2ac1b7704
--- /dev/null
+++ b/cpp/downgrades/a8c2176e9a5cf9be8d17053a4c8e7e56b5aced6d/stmts.ql
@@ -0,0 +1,13 @@
+class Stmt extends @stmt {
+ string toString() { none() }
+}
+
+class Location extends @location_stmt {
+ string toString() { none() }
+}
+
+from Stmt id, int kind, Location loc, int new_kind
+where
+ stmts(id, kind, loc) and
+ if kind = 40 then new_kind = 4 else new_kind = kind
+select id, new_kind, loc
diff --git a/cpp/downgrades/a8c2176e9a5cf9be8d17053a4c8e7e56b5aced6d/upgrade.properties b/cpp/downgrades/a8c2176e9a5cf9be8d17053a4c8e7e56b5aced6d/upgrade.properties
new file mode 100644
index 000000000000..beabef86257c
--- /dev/null
+++ b/cpp/downgrades/a8c2176e9a5cf9be8d17053a4c8e7e56b5aced6d/upgrade.properties
@@ -0,0 +1,3 @@
+description: Support `__leave` statement
+compatibility: full
+stmts.rel: run stmts.qlo
diff --git a/cpp/downgrades/af887e83a815a9cefe774ffa80e2493a1365b9e2/builtintypes.ql b/cpp/downgrades/af887e83a815a9cefe774ffa80e2493a1365b9e2/builtintypes.ql
new file mode 100644
index 000000000000..73b715fd71f0
--- /dev/null
+++ b/cpp/downgrades/af887e83a815a9cefe774ffa80e2493a1365b9e2/builtintypes.ql
@@ -0,0 +1,9 @@
+class BuiltinType extends @builtintype {
+ string toString() { none() }
+}
+
+from BuiltinType id, string name, int kind, int new_kind, int size, int sign, int alignment
+where
+ builtintypes(id, name, kind, size, sign, alignment) and
+ if kind = 62 then new_kind = 1 else new_kind = kind
+select id, name, new_kind, size, sign, alignment
diff --git a/cpp/downgrades/af887e83a815a9cefe774ffa80e2493a1365b9e2/old.dbscheme b/cpp/downgrades/af887e83a815a9cefe774ffa80e2493a1365b9e2/old.dbscheme
new file mode 100644
index 000000000000..af887e83a815
--- /dev/null
+++ b/cpp/downgrades/af887e83a815a9cefe774ffa80e2493a1365b9e2/old.dbscheme
@@ -0,0 +1,2492 @@
+
+/**
+ * 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
+);
+
+/*
+case @fun_requires.kind of
+ 1 = @template_attached
+| 2 = @function_attached
+;
+*/
+
+fun_requires(
+ int id: @fun_decl ref,
+ int kind: int ref,
+ int constraint: @expr 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_specialized(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);
+var_requires(
+ int id: @var_decl ref,
+ int constraint: @expr 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
+);
+type_requires(
+ int id: @type_decl ref,
+ int constraint: @expr 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
+| 62 = @mfp8 // __mfp8
+;
+
+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 or C23 `typeof`/`typeof_unqual`
+ * operator taking an expression as its argument. For example:
+ * ```
+ * int a;
+ * decltype(1+a) b;
+ * typeof(1+a) c;
+ * ```
+ * Here `expr` is `1+a`.
+ *
+ * Sometimes an additional pair of parentheses around the expression
+ * changes the semantics of the 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.
+ */
+
+/*
+case @decltype.kind of
+| 0 = @decltype
+| 1 = @typeof // The frontend does not differentiate between typeof and typeof_unqual
+;
+*/
+
+#keyset[id, expr]
+decltypes(
+ int id: @decltype,
+ int expr: @expr ref,
+ int kind: int ref,
+ int base_type: @type ref,
+ boolean parentheses_would_change_meaning: boolean ref
+);
+
+/*
+case @type_operator.kind of
+| 0 = @typeof // The frontend does not differentiate between typeof and typeof_unqual
+| 1 = @underlying_type
+| 2 = @bases
+| 3 = @direct_bases
+| 4 = @add_lvalue_reference
+| 5 = @add_pointer
+| 6 = @add_rvalue_reference
+| 7 = @decay
+| 8 = @make_signed
+| 9 = @make_unsigned
+| 10 = @remove_all_extents
+| 11 = @remove_const
+| 12 = @remove_cv
+| 13 = @remove_cvref
+| 14 = @remove_extent
+| 15 = @remove_pointer
+| 16 = @remove_reference_t
+| 17 = @remove_restrict
+| 18 = @remove_volatile
+| 19 = @remove_reference
+;
+*/
+
+type_operators(
+ unique int id: @type_operator,
+ int arg_type: @type ref,
+ int kind: int ref,
+ int base_type: @type ref
+)
+
+/*
+case @usertype.kind of
+| 0 = @unknown_usertype
+| 1 = @struct
+| 2 = @class
+| 3 = @union
+| 4 = @enum
+// ... 5 = @typedef deprecated // classic C: typedef typedef type name
+// ... 6 = @template deprecated
+| 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 deprecated // a using name = type style typedef
+| 15 = @template_struct
+| 16 = @template_class
+| 17 = @template_union
+| 18 = @alias
+;
+*/
+
+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
+);
+
+/*
+case @usertype.alias_kind of
+| 0 = @typedef
+| 1 = @alias
+*/
+
+usertype_alias_kind(
+ int id: @usertype ref,
+ int alias_kind: int ref
+)
+
+nontype_template_parameters(
+ int id: @expr ref
+);
+
+type_template_type_constraint(
+ int id: @usertype ref,
+ int constraint: @expr 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
+);
+
+@user_or_decltype = @usertype | @decltype;
+
+is_proxy_class_for(
+ unique int id: @usertype ref,
+ int templ_param_id: @user_or_decltype 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
+);
+
+template_template_instantiation(
+ int to: @usertype ref,
+ int from: @usertype ref
+);
+template_template_argument(
+ int type_id: @usertype ref,
+ int index: int ref,
+ int arg_type: @type ref
+);
+template_template_argument_value(
+ int type_id: @usertype ref,
+ int index: int ref,
+ int arg_value: @expr ref
+);
+
+@concept = @concept_template | @concept_id;
+
+concept_templates(
+ unique int concept_id: @concept_template,
+ string name: string ref,
+ int location: @location_default ref
+);
+concept_instantiation(
+ unique int to: @concept_id ref,
+ int from: @concept_template ref
+);
+is_type_constraint(int concept_id: @concept_id ref);
+concept_template_argument(
+ int concept_id: @concept ref,
+ int index: int ref,
+ int arg_type: @type ref
+);
+concept_template_argument_value(
+ int concept_id: @concept 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
+ | @routinetype
+ | @ptrtomember
+ | @decltype
+ | @type_operator;
+
+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
+ | @concept_template;
+
+@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,
+ boolean is_designated: boolean 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,
+ boolean is_designated: boolean 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
+);
+
+@sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof | @sizeof_pack;
+
+sizeof_bind(
+ unique int expr: @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
+| 38 = @stmt_consteval_if
+| 39 = @stmt_not_consteval_if
+;
+
+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
+);
+
+type_is_vla(unique int type_id: @derivedtype 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
+);
+
+@stmt_consteval_or_not_consteval_if = @stmt_consteval_if | @stmt_not_consteval_if;
+
+consteval_if_then(
+ unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref,
+ int then_id: @stmt ref
+);
+
+consteval_if_else(
+ unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_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
+| 14 = @ppd_ms_import
+| 15 = @ppd_elifdef
+| 16 = @ppd_elifndef
+| 18 = @ppd_warning
+;
+
+@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next | @ppd_ms_import;
+
+@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif | @ppd_elifdef | @ppd_elifndef;
+
+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/af887e83a815a9cefe774ffa80e2493a1365b9e2/semmlecode.cpp.dbscheme b/cpp/downgrades/af887e83a815a9cefe774ffa80e2493a1365b9e2/semmlecode.cpp.dbscheme
new file mode 100644
index 000000000000..9a7c3c14c107
--- /dev/null
+++ b/cpp/downgrades/af887e83a815a9cefe774ffa80e2493a1365b9e2/semmlecode.cpp.dbscheme
@@ -0,0 +1,2491 @@
+
+/**
+ * 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
+);
+
+/*
+case @fun_requires.kind of
+ 1 = @template_attached
+| 2 = @function_attached
+;
+*/
+
+fun_requires(
+ int id: @fun_decl ref,
+ int kind: int ref,
+ int constraint: @expr 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_specialized(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);
+var_requires(
+ int id: @var_decl ref,
+ int constraint: @expr 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
+);
+type_requires(
+ int id: @type_decl ref,
+ int constraint: @expr 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 or C23 `typeof`/`typeof_unqual`
+ * operator taking an expression as its argument. For example:
+ * ```
+ * int a;
+ * decltype(1+a) b;
+ * typeof(1+a) c;
+ * ```
+ * Here `expr` is `1+a`.
+ *
+ * Sometimes an additional pair of parentheses around the expression
+ * changes the semantics of the 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.
+ */
+
+/*
+case @decltype.kind of
+| 0 = @decltype
+| 1 = @typeof // The frontend does not differentiate between typeof and typeof_unqual
+;
+*/
+
+#keyset[id, expr]
+decltypes(
+ int id: @decltype,
+ int expr: @expr ref,
+ int kind: int ref,
+ int base_type: @type ref,
+ boolean parentheses_would_change_meaning: boolean ref
+);
+
+/*
+case @type_operator.kind of
+| 0 = @typeof // The frontend does not differentiate between typeof and typeof_unqual
+| 1 = @underlying_type
+| 2 = @bases
+| 3 = @direct_bases
+| 4 = @add_lvalue_reference
+| 5 = @add_pointer
+| 6 = @add_rvalue_reference
+| 7 = @decay
+| 8 = @make_signed
+| 9 = @make_unsigned
+| 10 = @remove_all_extents
+| 11 = @remove_const
+| 12 = @remove_cv
+| 13 = @remove_cvref
+| 14 = @remove_extent
+| 15 = @remove_pointer
+| 16 = @remove_reference_t
+| 17 = @remove_restrict
+| 18 = @remove_volatile
+| 19 = @remove_reference
+;
+*/
+
+type_operators(
+ unique int id: @type_operator,
+ int arg_type: @type ref,
+ int kind: int ref,
+ int base_type: @type ref
+)
+
+/*
+case @usertype.kind of
+| 0 = @unknown_usertype
+| 1 = @struct
+| 2 = @class
+| 3 = @union
+| 4 = @enum
+// ... 5 = @typedef deprecated // classic C: typedef typedef type name
+// ... 6 = @template deprecated
+| 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 deprecated // a using name = type style typedef
+| 15 = @template_struct
+| 16 = @template_class
+| 17 = @template_union
+| 18 = @alias
+;
+*/
+
+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
+);
+
+/*
+case @usertype.alias_kind of
+| 0 = @typedef
+| 1 = @alias
+*/
+
+usertype_alias_kind(
+ int id: @usertype ref,
+ int alias_kind: int ref
+)
+
+nontype_template_parameters(
+ int id: @expr ref
+);
+
+type_template_type_constraint(
+ int id: @usertype ref,
+ int constraint: @expr 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
+);
+
+@user_or_decltype = @usertype | @decltype;
+
+is_proxy_class_for(
+ unique int id: @usertype ref,
+ int templ_param_id: @user_or_decltype 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
+);
+
+template_template_instantiation(
+ int to: @usertype ref,
+ int from: @usertype ref
+);
+template_template_argument(
+ int type_id: @usertype ref,
+ int index: int ref,
+ int arg_type: @type ref
+);
+template_template_argument_value(
+ int type_id: @usertype ref,
+ int index: int ref,
+ int arg_value: @expr ref
+);
+
+@concept = @concept_template | @concept_id;
+
+concept_templates(
+ unique int concept_id: @concept_template,
+ string name: string ref,
+ int location: @location_default ref
+);
+concept_instantiation(
+ unique int to: @concept_id ref,
+ int from: @concept_template ref
+);
+is_type_constraint(int concept_id: @concept_id ref);
+concept_template_argument(
+ int concept_id: @concept ref,
+ int index: int ref,
+ int arg_type: @type ref
+);
+concept_template_argument_value(
+ int concept_id: @concept 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
+ | @routinetype
+ | @ptrtomember
+ | @decltype
+ | @type_operator;
+
+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
+ | @concept_template;
+
+@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,
+ boolean is_designated: boolean 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,
+ boolean is_designated: boolean 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
+);
+
+@sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof | @sizeof_pack;
+
+sizeof_bind(
+ unique int expr: @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
+| 38 = @stmt_consteval_if
+| 39 = @stmt_not_consteval_if
+;
+
+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
+);
+
+type_is_vla(unique int type_id: @derivedtype 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
+);
+
+@stmt_consteval_or_not_consteval_if = @stmt_consteval_if | @stmt_not_consteval_if;
+
+consteval_if_then(
+ unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref,
+ int then_id: @stmt ref
+);
+
+consteval_if_else(
+ unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_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
+| 14 = @ppd_ms_import
+| 15 = @ppd_elifdef
+| 16 = @ppd_elifndef
+| 18 = @ppd_warning
+;
+
+@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next | @ppd_ms_import;
+
+@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif | @ppd_elifdef | @ppd_elifndef;
+
+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/af887e83a815a9cefe774ffa80e2493a1365b9e2/upgrade.properties b/cpp/downgrades/af887e83a815a9cefe774ffa80e2493a1365b9e2/upgrade.properties
new file mode 100644
index 000000000000..bc85f01c52e3
--- /dev/null
+++ b/cpp/downgrades/af887e83a815a9cefe774ffa80e2493a1365b9e2/upgrade.properties
@@ -0,0 +1,3 @@
+description: Support __mfp8 type
+compatibility: backwards
+builtintypes.rel: run builtintypes.qlo
diff --git a/cpp/misc/bulk_generation_targets.json b/cpp/misc/bulk_generation_targets.json
deleted file mode 100644
index 4cddef005b2f..000000000000
--- a/cpp/misc/bulk_generation_targets.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "strategy": "dca",
- "language": "cpp",
- "targets": [
- { "name": "openssl", "with-sources": false, "with-sinks": false },
- { "name": "sqlite", "with-sources": false, "with-sinks": false }
- ],
- "destination": "cpp/ql/lib/ext/generated"
-}
\ No newline at end of file
diff --git a/cpp/ql/lib/change-notes/2025-06-06-lambda-parameters.md b/cpp/ql/lib/change-notes/2025-06-06-lambda-parameters.md
new file mode 100644
index 000000000000..44f9b12968d9
--- /dev/null
+++ b/cpp/ql/lib/change-notes/2025-06-06-lambda-parameters.md
@@ -0,0 +1,4 @@
+---
+category: feature
+---
+* Added a predicate `hasParameterList` to `LambdaExpression` to capture whether a lambda has an explicitly specified parameter list.
diff --git a/cpp/ql/lib/change-notes/2025-06-11-leave-stmt.md b/cpp/ql/lib/change-notes/2025-06-11-leave-stmt.md
new file mode 100644
index 000000000000..d06be5b77a9c
--- /dev/null
+++ b/cpp/ql/lib/change-notes/2025-06-11-leave-stmt.md
@@ -0,0 +1,5 @@
+---
+category: feature
+---
+* The Microsoft-specific `__leave` statement is now supported.
+* A new class `LeaveStmt` extending `JumpStmt` was added to represent `__leave` statements.
\ No newline at end of file
diff --git a/cpp/ql/lib/ext/generated/brotli/brotli.model.yml b/cpp/ql/lib/ext/generated/brotli/brotli.model.yml
new file mode 100644
index 000000000000..49a1f947af00
--- /dev/null
+++ b/cpp/ql/lib/ext/generated/brotli/brotli.model.yml
@@ -0,0 +1,480 @@
+# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT.
+extensions:
+ - addsTo:
+ pack: codeql/cpp-all
+ extensible: summaryModel
+ data:
+ - ["", "", True, "AttachPreparedDictionary", "(CompoundDictionary *,const PreparedDictionary *)", "", "Argument[1]", "Argument[*0].Field[**chunk_source]", "taint", "dfc-generated"]
+ - ["", "", True, "AttachPreparedDictionary", "(CompoundDictionary *,const PreparedDictionary *)", "", "Argument[1]", "Argument[*0].Field[*chunk_source]", "taint", "dfc-generated"]
+ - ["", "", True, "AttachPreparedDictionary", "(CompoundDictionary *,const PreparedDictionary *)", "", "Argument[1]", "Argument[*0].Field[*chunks]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliBuildAndStoreHuffmanTreeFast", "(HuffmanTree *,const uint32_t *,const size_t,const size_t,uint8_t *,uint16_t *,size_t *,uint8_t *)", "", "Argument[*1]", "Argument[*0].Field[*total_count_]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliBuildAndStoreHuffmanTreeFast", "(HuffmanTree *,const uint32_t *,const size_t,const size_t,uint8_t *,uint16_t *,size_t *,uint8_t *)", "", "Argument[*4]", "Argument[*5]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliBuildAndStoreHuffmanTreeFast", "(HuffmanTree *,const uint32_t *,const size_t,const size_t,uint8_t *,uint16_t *,size_t *,uint8_t *)", "", "Argument[*4]", "Argument[*7]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliBuildAndStoreHuffmanTreeFast", "(HuffmanTree *,const uint32_t *,const size_t,const size_t,uint8_t *,uint16_t *,size_t *,uint8_t *)", "", "Argument[*6]", "Argument[*7]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliBuildAndStoreHuffmanTreeFast", "(HuffmanTree *,const uint32_t *,const size_t,const size_t,uint8_t *,uint16_t *,size_t *,uint8_t *)", "", "Argument[0]", "Argument[*0].Field[*index_left_]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliBuildAndStoreHuffmanTreeFast", "(HuffmanTree *,const uint32_t *,const size_t,const size_t,uint8_t *,uint16_t *,size_t *,uint8_t *)", "", "Argument[0]", "Argument[*0].Field[*index_right_or_value_]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliBuildAndStoreHuffmanTreeFast", "(HuffmanTree *,const uint32_t *,const size_t,const size_t,uint8_t *,uint16_t *,size_t *,uint8_t *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliBuildAndStoreHuffmanTreeFast", "(HuffmanTree *,const uint32_t *,const size_t,const size_t,uint8_t *,uint16_t *,size_t *,uint8_t *)", "", "Argument[1]", "Argument[*0].Field[*total_count_]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliBuildAndStoreHuffmanTreeFast", "(HuffmanTree *,const uint32_t *,const size_t,const size_t,uint8_t *,uint16_t *,size_t *,uint8_t *)", "", "Argument[4]", "Argument[*5]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliBuildAndStoreHuffmanTreeFast", "(HuffmanTree *,const uint32_t *,const size_t,const size_t,uint8_t *,uint16_t *,size_t *,uint8_t *)", "", "Argument[4]", "Argument[*7]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliBuildAndStoreHuffmanTreeFast", "(HuffmanTree *,const uint32_t *,const size_t,const size_t,uint8_t *,uint16_t *,size_t *,uint8_t *)", "", "Argument[6]", "Argument[*7]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliBuildAndStoreHuffmanTreeFast", "(HuffmanTree *,const uint32_t *,const size_t,const size_t,uint8_t *,uint16_t *,size_t *,uint8_t *)", "", "Argument[7]", "Argument[*7]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliBuildCodeLengthsHuffmanTable", "(HuffmanCode *,const uint8_t *const,uint16_t *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliBuildHistogramsWithContext", "(const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *)", "", "Argument[*10]", "Argument[*11]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliBuildHistogramsWithContext", "(const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *)", "", "Argument[*2].Field[**types]", "Argument[*11]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliBuildHistogramsWithContext", "(const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *)", "", "Argument[*2].Field[*types]", "Argument[*11]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliBuildHistogramsWithContext", "(const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *)", "", "Argument[*3].Field[**types]", "Argument[*12]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliBuildHistogramsWithContext", "(const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *)", "", "Argument[*3].Field[*types]", "Argument[*12]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliBuildHistogramsWithContext", "(const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *)", "", "Argument[*4].Field[**types]", "Argument[*13]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliBuildHistogramsWithContext", "(const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *)", "", "Argument[*4].Field[*types]", "Argument[*13]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliBuildHistogramsWithContext", "(const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *)", "", "Argument[*5]", "Argument[*11].Field[*data_]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliBuildHistogramsWithContext", "(const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *)", "", "Argument[*5]", "Argument[*11]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliBuildHistogramsWithContext", "(const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliBuildHistogramsWithContext", "(const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *)", "", "Argument[10]", "Argument[*11]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliBuildHistogramsWithContext", "(const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *)", "", "Argument[11]", "Argument[*11]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliBuildHistogramsWithContext", "(const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *)", "", "Argument[12]", "Argument[*12]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliBuildHistogramsWithContext", "(const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *)", "", "Argument[13]", "Argument[*13]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliBuildHistogramsWithContext", "(const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *)", "", "Argument[5]", "Argument[*11].Field[*data_]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliBuildHistogramsWithContext", "(const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *)", "", "Argument[5]", "Argument[*11]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliBuildHistogramsWithContext", "(const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *)", "", "Argument[6]", "Argument[*11].Field[*data_]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliBuildHistogramsWithContext", "(const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *)", "", "Argument[6]", "Argument[*11]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliBuildHistogramsWithContext", "(const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *)", "", "Argument[7]", "Argument[*11].Field[*data_]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliBuildHistogramsWithContext", "(const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *)", "", "Argument[7]", "Argument[*11]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliBuildHistogramsWithContext", "(const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *)", "", "Argument[8]", "Argument[*11]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliBuildHistogramsWithContext", "(const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *)", "", "Argument[9]", "Argument[*11]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliBuildHuffmanTable", "(HuffmanCode *,int,const uint16_t *const,uint16_t *)", "", "Argument[*2]", "Argument[*0].Field[*value]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliBuildHuffmanTable", "(HuffmanCode *,int,const uint16_t *const,uint16_t *)", "", "Argument[0]", "Argument[*0].Field[*value]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliBuildHuffmanTable", "(HuffmanCode *,int,const uint16_t *const,uint16_t *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliBuildHuffmanTable", "(HuffmanCode *,int,const uint16_t *const,uint16_t *)", "", "Argument[2]", "Argument[*0].Field[*value]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliBuildHuffmanTable", "(HuffmanCode *,int,const uint16_t *const,uint16_t *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliBuildMetaBlock", "(MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *)", "", "Argument[*1]", "Argument[*10].Field[**literal_histograms].Field[*bit_cost_]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliBuildMetaBlock", "(MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *)", "", "Argument[*1]", "Argument[*10].Field[**literal_histograms].Field[*data_]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliBuildMetaBlock", "(MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *)", "", "Argument[*1]", "Argument[*10].Field[**literal_histograms]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliBuildMetaBlock", "(MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *)", "", "Argument[1]", "Argument[*10].Field[**literal_histograms].Field[*bit_cost_]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliBuildMetaBlock", "(MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *)", "", "Argument[1]", "Argument[*10].Field[**literal_histograms].Field[*data_]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliBuildMetaBlock", "(MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *)", "", "Argument[1]", "Argument[*10].Field[**literal_histograms]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliBuildMetaBlock", "(MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *)", "", "Argument[2]", "Argument[*10].Field[**literal_histograms].Field[*bit_cost_]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliBuildMetaBlock", "(MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *)", "", "Argument[2]", "Argument[*10].Field[**literal_histograms].Field[*data_]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliBuildMetaBlock", "(MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *)", "", "Argument[2]", "Argument[*10].Field[**literal_histograms]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliBuildMetaBlock", "(MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *)", "", "Argument[3]", "Argument[*10].Field[**literal_histograms].Field[*bit_cost_]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliBuildMetaBlock", "(MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *)", "", "Argument[3]", "Argument[*10].Field[**literal_histograms].Field[*data_]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliBuildMetaBlock", "(MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *)", "", "Argument[3]", "Argument[*10].Field[**literal_histograms]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliBuildMetaBlock", "(MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *)", "", "Argument[5]", "Argument[*10].Field[**literal_histograms]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliBuildMetaBlock", "(MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *)", "", "Argument[6]", "Argument[*10].Field[**literal_histograms]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliBuildMetaBlock", "(MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *)", "", "Argument[7]", "Argument[*7]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliBuildMetaBlock", "(MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *)", "", "Argument[8]", "Argument[*10].Field[*command_split].Field[**lengths]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliBuildMetaBlock", "(MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *)", "", "Argument[9]", "Argument[*10].Field[**literal_histograms]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliBuildMetaBlockGreedy", "(MemoryManager *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,ContextLut,size_t,const uint32_t *,const Command *,size_t,MetaBlockSplit *)", "", "Argument[*8]", "Argument[*11].Field[**literal_context_map]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliBuildMetaBlockGreedy", "(MemoryManager *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,ContextLut,size_t,const uint32_t *,const Command *,size_t,MetaBlockSplit *)", "", "Argument[7]", "Argument[*11].Field[**literal_context_map]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliBuildMetaBlockGreedy", "(MemoryManager *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,ContextLut,size_t,const uint32_t *,const Command *,size_t,MetaBlockSplit *)", "", "Argument[7]", "Argument[*11].Field[*literal_histograms_size]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliBuildMetaBlockGreedy", "(MemoryManager *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,ContextLut,size_t,const uint32_t *,const Command *,size_t,MetaBlockSplit *)", "", "Argument[8]", "Argument[*11].Field[**literal_context_map]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliBuildSimpleHuffmanTable", "(HuffmanCode *,int,uint16_t *,uint32_t)", "", "Argument[*2]", "Argument[*0].Field[*value]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliBuildSimpleHuffmanTable", "(HuffmanCode *,int,uint16_t *,uint32_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliBuildSimpleHuffmanTable", "(HuffmanCode *,int,uint16_t *,uint32_t)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliBuildSimpleHuffmanTable", "(HuffmanCode *,int,uint16_t *,uint32_t)", "", "Argument[2]", "Argument[*0].Field[*value]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliBuildSimpleHuffmanTable", "(HuffmanCode *,int,uint16_t *,uint32_t)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliClusterHistogramsCommand", "(MemoryManager *,const HistogramCommand *,const size_t,size_t,HistogramCommand *,size_t *,uint32_t *)", "", "Argument[*1]", "Argument[*4]", "value", "df-generated"]
+ - ["", "", True, "BrotliClusterHistogramsCommand", "(MemoryManager *,const HistogramCommand *,const size_t,size_t,HistogramCommand *,size_t *,uint32_t *)", "", "Argument[*6]", "Argument[*4]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliClusterHistogramsCommand", "(MemoryManager *,const HistogramCommand *,const size_t,size_t,HistogramCommand *,size_t *,uint32_t *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliClusterHistogramsCommand", "(MemoryManager *,const HistogramCommand *,const size_t,size_t,HistogramCommand *,size_t *,uint32_t *)", "", "Argument[1]", "Argument[*4]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliClusterHistogramsCommand", "(MemoryManager *,const HistogramCommand *,const size_t,size_t,HistogramCommand *,size_t *,uint32_t *)", "", "Argument[2]", "Argument[*4]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliClusterHistogramsCommand", "(MemoryManager *,const HistogramCommand *,const size_t,size_t,HistogramCommand *,size_t *,uint32_t *)", "", "Argument[2]", "Argument[*6]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliClusterHistogramsCommand", "(MemoryManager *,const HistogramCommand *,const size_t,size_t,HistogramCommand *,size_t *,uint32_t *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliClusterHistogramsCommand", "(MemoryManager *,const HistogramCommand *,const size_t,size_t,HistogramCommand *,size_t *,uint32_t *)", "", "Argument[6]", "Argument[*4]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliClusterHistogramsCommand", "(MemoryManager *,const HistogramCommand *,const size_t,size_t,HistogramCommand *,size_t *,uint32_t *)", "", "Argument[6]", "Argument[*6]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliClusterHistogramsDistance", "(MemoryManager *,const HistogramDistance *,const size_t,size_t,HistogramDistance *,size_t *,uint32_t *)", "", "Argument[*1]", "Argument[*4]", "value", "df-generated"]
+ - ["", "", True, "BrotliClusterHistogramsDistance", "(MemoryManager *,const HistogramDistance *,const size_t,size_t,HistogramDistance *,size_t *,uint32_t *)", "", "Argument[*6]", "Argument[*4]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliClusterHistogramsDistance", "(MemoryManager *,const HistogramDistance *,const size_t,size_t,HistogramDistance *,size_t *,uint32_t *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliClusterHistogramsDistance", "(MemoryManager *,const HistogramDistance *,const size_t,size_t,HistogramDistance *,size_t *,uint32_t *)", "", "Argument[1]", "Argument[*4]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliClusterHistogramsDistance", "(MemoryManager *,const HistogramDistance *,const size_t,size_t,HistogramDistance *,size_t *,uint32_t *)", "", "Argument[2]", "Argument[*4]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliClusterHistogramsDistance", "(MemoryManager *,const HistogramDistance *,const size_t,size_t,HistogramDistance *,size_t *,uint32_t *)", "", "Argument[2]", "Argument[*6]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliClusterHistogramsDistance", "(MemoryManager *,const HistogramDistance *,const size_t,size_t,HistogramDistance *,size_t *,uint32_t *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliClusterHistogramsDistance", "(MemoryManager *,const HistogramDistance *,const size_t,size_t,HistogramDistance *,size_t *,uint32_t *)", "", "Argument[6]", "Argument[*4]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliClusterHistogramsDistance", "(MemoryManager *,const HistogramDistance *,const size_t,size_t,HistogramDistance *,size_t *,uint32_t *)", "", "Argument[6]", "Argument[*6]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliClusterHistogramsLiteral", "(MemoryManager *,const HistogramLiteral *,const size_t,size_t,HistogramLiteral *,size_t *,uint32_t *)", "", "Argument[*1]", "Argument[*4]", "value", "df-generated"]
+ - ["", "", True, "BrotliClusterHistogramsLiteral", "(MemoryManager *,const HistogramLiteral *,const size_t,size_t,HistogramLiteral *,size_t *,uint32_t *)", "", "Argument[*6]", "Argument[*4]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliClusterHistogramsLiteral", "(MemoryManager *,const HistogramLiteral *,const size_t,size_t,HistogramLiteral *,size_t *,uint32_t *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliClusterHistogramsLiteral", "(MemoryManager *,const HistogramLiteral *,const size_t,size_t,HistogramLiteral *,size_t *,uint32_t *)", "", "Argument[1]", "Argument[*4]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliClusterHistogramsLiteral", "(MemoryManager *,const HistogramLiteral *,const size_t,size_t,HistogramLiteral *,size_t *,uint32_t *)", "", "Argument[2]", "Argument[*4]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliClusterHistogramsLiteral", "(MemoryManager *,const HistogramLiteral *,const size_t,size_t,HistogramLiteral *,size_t *,uint32_t *)", "", "Argument[2]", "Argument[*6]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliClusterHistogramsLiteral", "(MemoryManager *,const HistogramLiteral *,const size_t,size_t,HistogramLiteral *,size_t *,uint32_t *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliClusterHistogramsLiteral", "(MemoryManager *,const HistogramLiteral *,const size_t,size_t,HistogramLiteral *,size_t *,uint32_t *)", "", "Argument[6]", "Argument[*4]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliClusterHistogramsLiteral", "(MemoryManager *,const HistogramLiteral *,const size_t,size_t,HistogramLiteral *,size_t *,uint32_t *)", "", "Argument[6]", "Argument[*6]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliCompareAndPushToQueueCommand", "(const HistogramCommand *,HistogramCommand *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *)", "", "Argument[*0]", "Argument[*1]", "value", "df-generated"]
+ - ["", "", True, "BrotliCompareAndPushToQueueCommand", "(const HistogramCommand *,HistogramCommand *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *)", "", "Argument[*2]", "Argument[*6].Field[*cost_diff]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliCompareAndPushToQueueCommand", "(const HistogramCommand *,HistogramCommand *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliCompareAndPushToQueueCommand", "(const HistogramCommand *,HistogramCommand *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *)", "", "Argument[0]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliCompareAndPushToQueueCommand", "(const HistogramCommand *,HistogramCommand *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *)", "", "Argument[2]", "Argument[*6].Field[*cost_diff]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliCompareAndPushToQueueCommand", "(const HistogramCommand *,HistogramCommand *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *)", "", "Argument[6]", "Argument[*6]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliCompareAndPushToQueueCommand", "(const HistogramCommand *,HistogramCommand *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *)", "", "Argument[7]", "Argument[*7]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliCompareAndPushToQueueDistance", "(const HistogramDistance *,HistogramDistance *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *)", "", "Argument[*0]", "Argument[*1]", "value", "df-generated"]
+ - ["", "", True, "BrotliCompareAndPushToQueueDistance", "(const HistogramDistance *,HistogramDistance *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *)", "", "Argument[*2]", "Argument[*6].Field[*cost_diff]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliCompareAndPushToQueueDistance", "(const HistogramDistance *,HistogramDistance *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliCompareAndPushToQueueDistance", "(const HistogramDistance *,HistogramDistance *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *)", "", "Argument[0]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliCompareAndPushToQueueDistance", "(const HistogramDistance *,HistogramDistance *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *)", "", "Argument[2]", "Argument[*6].Field[*cost_diff]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliCompareAndPushToQueueDistance", "(const HistogramDistance *,HistogramDistance *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *)", "", "Argument[6]", "Argument[*6]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliCompareAndPushToQueueDistance", "(const HistogramDistance *,HistogramDistance *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *)", "", "Argument[7]", "Argument[*7]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliCompareAndPushToQueueLiteral", "(const HistogramLiteral *,HistogramLiteral *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *)", "", "Argument[*0]", "Argument[*1]", "value", "df-generated"]
+ - ["", "", True, "BrotliCompareAndPushToQueueLiteral", "(const HistogramLiteral *,HistogramLiteral *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *)", "", "Argument[*2]", "Argument[*6].Field[*cost_diff]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliCompareAndPushToQueueLiteral", "(const HistogramLiteral *,HistogramLiteral *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliCompareAndPushToQueueLiteral", "(const HistogramLiteral *,HistogramLiteral *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *)", "", "Argument[0]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliCompareAndPushToQueueLiteral", "(const HistogramLiteral *,HistogramLiteral *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *)", "", "Argument[2]", "Argument[*6].Field[*cost_diff]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliCompareAndPushToQueueLiteral", "(const HistogramLiteral *,HistogramLiteral *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *)", "", "Argument[6]", "Argument[*6]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliCompareAndPushToQueueLiteral", "(const HistogramLiteral *,HistogramLiteral *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *)", "", "Argument[7]", "Argument[*7]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliCompressFragmentFast", "(BrotliOnePassArena *,const uint8_t *,size_t,int,int *,size_t,size_t *,uint8_t *)", "", "Argument[*1]", "Argument[*7]", "value", "df-generated"]
+ - ["", "", True, "BrotliCompressFragmentFast", "(BrotliOnePassArena *,const uint8_t *,size_t,int,int *,size_t,size_t *,uint8_t *)", "", "Argument[*6]", "Argument[*7]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliCompressFragmentFast", "(BrotliOnePassArena *,const uint8_t *,size_t,int,int *,size_t,size_t *,uint8_t *)", "", "Argument[6]", "Argument[*6]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliCompressFragmentFast", "(BrotliOnePassArena *,const uint8_t *,size_t,int,int *,size_t,size_t *,uint8_t *)", "", "Argument[6]", "Argument[*7]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliCompressFragmentFast", "(BrotliOnePassArena *,const uint8_t *,size_t,int,int *,size_t,size_t *,uint8_t *)", "", "Argument[7]", "Argument[*7]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliCompressFragmentTwoPass", "(BrotliTwoPassArena *,const uint8_t *,size_t,int,uint32_t *,uint8_t *,int *,size_t,size_t *,uint8_t *)", "", "Argument[*1]", "Argument[*5]", "value", "df-generated"]
+ - ["", "", True, "BrotliCompressFragmentTwoPass", "(BrotliTwoPassArena *,const uint8_t *,size_t,int,uint32_t *,uint8_t *,int *,size_t,size_t *,uint8_t *)", "", "Argument[*1]", "Argument[*9]", "value", "df-generated"]
+ - ["", "", True, "BrotliCompressFragmentTwoPass", "(BrotliTwoPassArena *,const uint8_t *,size_t,int,uint32_t *,uint8_t *,int *,size_t,size_t *,uint8_t *)", "", "Argument[*6]", "Argument[*4]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliCompressFragmentTwoPass", "(BrotliTwoPassArena *,const uint8_t *,size_t,int,uint32_t *,uint8_t *,int *,size_t,size_t *,uint8_t *)", "", "Argument[*6]", "Argument[*5]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliCompressFragmentTwoPass", "(BrotliTwoPassArena *,const uint8_t *,size_t,int,uint32_t *,uint8_t *,int *,size_t,size_t *,uint8_t *)", "", "Argument[*8]", "Argument[*9]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliCompressFragmentTwoPass", "(BrotliTwoPassArena *,const uint8_t *,size_t,int,uint32_t *,uint8_t *,int *,size_t,size_t *,uint8_t *)", "", "Argument[6]", "Argument[*4]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliCompressFragmentTwoPass", "(BrotliTwoPassArena *,const uint8_t *,size_t,int,uint32_t *,uint8_t *,int *,size_t,size_t *,uint8_t *)", "", "Argument[6]", "Argument[*5]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliCompressFragmentTwoPass", "(BrotliTwoPassArena *,const uint8_t *,size_t,int,uint32_t *,uint8_t *,int *,size_t,size_t *,uint8_t *)", "", "Argument[6]", "Argument[*6]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliCompressFragmentTwoPass", "(BrotliTwoPassArena *,const uint8_t *,size_t,int,uint32_t *,uint8_t *,int *,size_t,size_t *,uint8_t *)", "", "Argument[8]", "Argument[*8]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliCompressFragmentTwoPass", "(BrotliTwoPassArena *,const uint8_t *,size_t,int,uint32_t *,uint8_t *,int *,size_t,size_t *,uint8_t *)", "", "Argument[8]", "Argument[*9]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliCompressFragmentTwoPass", "(BrotliTwoPassArena *,const uint8_t *,size_t,int,uint32_t *,uint8_t *,int *,size_t,size_t *,uint8_t *)", "", "Argument[9]", "Argument[*9]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliConvertBitDepthsToSymbols", "(const uint8_t *,size_t,uint16_t *)", "", "Argument[*0]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliConvertBitDepthsToSymbols", "(const uint8_t *,size_t,uint16_t *)", "", "Argument[0]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliCreateBackwardReferences", "(size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)", "", "Argument[*7]", "Argument[*9].Field[*dist_extra_]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliCreateBackwardReferences", "(size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)", "", "Argument[*7]", "Argument[*9].Field[*dist_prefix_]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliCreateBackwardReferences", "(size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)", "", "Argument[0]", "Argument[*8]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliCreateBackwardReferences", "(size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)", "", "Argument[0]", "Argument[*9].Field[*cmd_prefix_]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliCreateBackwardReferences", "(size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)", "", "Argument[0]", "Argument[*9].Field[*copy_len_]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliCreateBackwardReferences", "(size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)", "", "Argument[10]", "Argument[*10]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliCreateBackwardReferences", "(size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)", "", "Argument[11]", "Argument[*11]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliCreateBackwardReferences", "(size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)", "", "Argument[1]", "Argument[*8]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliCreateBackwardReferences", "(size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)", "", "Argument[1]", "Argument[*9].Field[*cmd_prefix_]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliCreateBackwardReferences", "(size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)", "", "Argument[1]", "Argument[*9].Field[*copy_len_]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliCreateBackwardReferences", "(size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)", "", "Argument[7]", "Argument[*7]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliCreateBackwardReferences", "(size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)", "", "Argument[7]", "Argument[*9].Field[*dist_extra_]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliCreateBackwardReferences", "(size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)", "", "Argument[7]", "Argument[*9].Field[*dist_prefix_]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliCreateBackwardReferences", "(size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)", "", "Argument[9]", "Argument[*10]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliCreateBackwardReferences", "(size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)", "", "Argument[9]", "Argument[*9]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliCreateHqZopfliBackwardReferences", "(MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)", "", "Argument[10]", "Argument[*10]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliCreateHqZopfliBackwardReferences", "(MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)", "", "Argument[11]", "Argument[*11]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliCreateHqZopfliBackwardReferences", "(MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)", "", "Argument[12]", "Argument[*12]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliCreateHqZopfliBackwardReferences", "(MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)", "", "Argument[8]", "Argument[*8]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliCreateHuffmanTree", "(const uint32_t *,const size_t,const int,HuffmanTree *,uint8_t *)", "", "Argument[*0]", "Argument[*3].Field[*total_count_]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliCreateHuffmanTree", "(const uint32_t *,const size_t,const int,HuffmanTree *,uint8_t *)", "", "Argument[0]", "Argument[*3].Field[*total_count_]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliCreateHuffmanTree", "(const uint32_t *,const size_t,const int,HuffmanTree *,uint8_t *)", "", "Argument[1]", "Argument[*3].Field[*index_right_or_value_]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliCreateHuffmanTree", "(const uint32_t *,const size_t,const int,HuffmanTree *,uint8_t *)", "", "Argument[1]", "Argument[*3].Field[*total_count_]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliCreateHuffmanTree", "(const uint32_t *,const size_t,const int,HuffmanTree *,uint8_t *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliCreateManagedDictionary", "(brotli_alloc_func,brotli_free_func,void *)", "", "Argument[**2]", "ReturnValue[*].Field[*memory_manager_].Field[***opaque]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliCreateManagedDictionary", "(brotli_alloc_func,brotli_free_func,void *)", "", "Argument[*2]", "ReturnValue[*].Field[*memory_manager_].Field[**opaque]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliCreateManagedDictionary", "(brotli_alloc_func,brotli_free_func,void *)", "", "Argument[0]", "ReturnValue[*].Field[*memory_manager_].Field[*alloc_func]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliCreateManagedDictionary", "(brotli_alloc_func,brotli_free_func,void *)", "", "Argument[1]", "ReturnValue[*].Field[*memory_manager_].Field[*free_func]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliCreateManagedDictionary", "(brotli_alloc_func,brotli_free_func,void *)", "", "Argument[2]", "ReturnValue[*].Field[*memory_manager_].Field[*opaque]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliCreateZopfliBackwardReferences", "(MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)", "", "Argument[10]", "Argument[*10]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliCreateZopfliBackwardReferences", "(MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)", "", "Argument[11]", "Argument[*11]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliCreateZopfliBackwardReferences", "(MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)", "", "Argument[12]", "Argument[*12]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliCreateZopfliBackwardReferences", "(MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)", "", "Argument[1]", "Argument[*9]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliCreateZopfliBackwardReferences", "(MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)", "", "Argument[8]", "Argument[*8]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliDecoderAttachDictionary", "(BrotliDecoderState *,BrotliDecoderStateInternal *,BrotliSharedDictionaryType,size_t,const uint8_t[])", "", "Argument[*3]", "Argument[*0].Field[**dictionary].Field[**prefix]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliDecoderAttachDictionary", "(BrotliDecoderState *,BrotliDecoderStateInternal *,BrotliSharedDictionaryType,size_t,const uint8_t[])", "", "Argument[2]", "Argument[*0].Field[**dictionary].Field[*prefix_size]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliDecoderAttachDictionary", "(BrotliDecoderState *,BrotliDecoderStateInternal *,BrotliSharedDictionaryType,size_t,const uint8_t[])", "", "Argument[3]", "Argument[*0].Field[**dictionary].Field[*prefix]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliDecoderCreateInstance", "(brotli_alloc_func,brotli_free_func,void *)", "", "Argument[**2]", "ReturnValue[*].Field[***memory_manager_opaque]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliDecoderCreateInstance", "(brotli_alloc_func,brotli_free_func,void *)", "", "Argument[**2]", "ReturnValue[*].Field[**dictionary].Field[***memory_manager_opaque]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliDecoderCreateInstance", "(brotli_alloc_func,brotli_free_func,void *)", "", "Argument[*2]", "ReturnValue[*].Field[**dictionary].Field[**memory_manager_opaque]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliDecoderCreateInstance", "(brotli_alloc_func,brotli_free_func,void *)", "", "Argument[*2]", "ReturnValue[*].Field[**memory_manager_opaque]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliDecoderCreateInstance", "(brotli_alloc_func,brotli_free_func,void *)", "", "Argument[0]", "ReturnValue[*].Field[**dictionary].Field[*alloc_func]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliDecoderCreateInstance", "(brotli_alloc_func,brotli_free_func,void *)", "", "Argument[0]", "ReturnValue[*].Field[*alloc_func]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliDecoderCreateInstance", "(brotli_alloc_func,brotli_free_func,void *)", "", "Argument[1]", "ReturnValue[*].Field[**dictionary].Field[*free_func]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliDecoderCreateInstance", "(brotli_alloc_func,brotli_free_func,void *)", "", "Argument[1]", "ReturnValue[*].Field[*free_func]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliDecoderCreateInstance", "(brotli_alloc_func,brotli_free_func,void *)", "", "Argument[2]", "ReturnValue[*].Field[**dictionary].Field[*memory_manager_opaque]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliDecoderCreateInstance", "(brotli_alloc_func,brotli_free_func,void *)", "", "Argument[2]", "ReturnValue[*].Field[*memory_manager_opaque]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliDecoderDecompress", "(size_t,const uint8_t[],size_t *,uint8_t[])", "", "Argument[*1]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliDecoderDecompress", "(size_t,const uint8_t[],size_t *,uint8_t[])", "", "Argument[*1]", "Argument[*3]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliDecoderDecompress", "(size_t,const uint8_t[],size_t *,uint8_t[])", "", "Argument[*2]", "Argument[*3]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliDecoderDecompress", "(size_t,const uint8_t[],size_t *,uint8_t[])", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliDecoderDecompress", "(size_t,const uint8_t[],size_t *,uint8_t[])", "", "Argument[1]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliDecoderDecompress", "(size_t,const uint8_t[],size_t *,uint8_t[])", "", "Argument[1]", "Argument[*3]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliDecoderDecompress", "(size_t,const uint8_t[],size_t *,uint8_t[])", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliDecoderDecompress", "(size_t,const uint8_t[],size_t *,uint8_t[])", "", "Argument[2]", "Argument[*3]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliDecoderDecompress", "(size_t,const uint8_t[],size_t *,uint8_t[])", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliDecoderDecompressStream", "(BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *)", "", "Argument[*1]", "Argument[*0].Field[*used_input]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliDecoderDecompressStream", "(BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *)", "", "Argument[*2]", "Argument[*1]", "value", "df-generated"]
+ - ["", "", True, "BrotliDecoderDecompressStream", "(BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *)", "", "Argument[*4]", "Argument[**4]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliDecoderDecompressStream", "(BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *)", "", "Argument[1]", "Argument[*0].Field[*used_input]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliDecoderDecompressStream", "(BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliDecoderDecompressStream", "(BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *)", "", "Argument[4]", "Argument[**4]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliDecoderDecompressStream", "(BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliDecoderGetErrorCode", "(const BrotliDecoderState *,const BrotliDecoderStateInternal *)", "", "Argument[*0].Field[*error_code]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "BrotliDecoderHuffmanTreeGroupInit", "(BrotliDecoderStateInternal *,HuffmanTreeGroup *,uint64_t,uint64_t,uint64_t)", "", "Argument[2]", "Argument[*1].Field[*alphabet_size_max]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliDecoderHuffmanTreeGroupInit", "(BrotliDecoderStateInternal *,HuffmanTreeGroup *,uint64_t,uint64_t,uint64_t)", "", "Argument[3]", "Argument[*1].Field[*alphabet_size_limit]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliDecoderHuffmanTreeGroupInit", "(BrotliDecoderStateInternal *,HuffmanTreeGroup *,uint64_t,uint64_t,uint64_t)", "", "Argument[4]", "Argument[*1].Field[**codes]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliDecoderHuffmanTreeGroupInit", "(BrotliDecoderStateInternal *,HuffmanTreeGroup *,uint64_t,uint64_t,uint64_t)", "", "Argument[4]", "Argument[*1].Field[*codes]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliDecoderHuffmanTreeGroupInit", "(BrotliDecoderStateInternal *,HuffmanTreeGroup *,uint64_t,uint64_t,uint64_t)", "", "Argument[4]", "Argument[*1].Field[*num_htrees]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliDecoderSetMetadataCallbacks", "(BrotliDecoderState *,BrotliDecoderStateInternal *,brotli_decoder_metadata_start_func,brotli_decoder_metadata_chunk_func,void *)", "", "Argument[**3]", "Argument[*0].Field[***metadata_callback_opaque]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliDecoderSetMetadataCallbacks", "(BrotliDecoderState *,BrotliDecoderStateInternal *,brotli_decoder_metadata_start_func,brotli_decoder_metadata_chunk_func,void *)", "", "Argument[*3]", "Argument[*0].Field[**metadata_callback_opaque]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliDecoderSetMetadataCallbacks", "(BrotliDecoderState *,BrotliDecoderStateInternal *,brotli_decoder_metadata_start_func,brotli_decoder_metadata_chunk_func,void *)", "", "Argument[1]", "Argument[*0].Field[*metadata_start_func]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliDecoderSetMetadataCallbacks", "(BrotliDecoderState *,BrotliDecoderStateInternal *,brotli_decoder_metadata_start_func,brotli_decoder_metadata_chunk_func,void *)", "", "Argument[2]", "Argument[*0].Field[*metadata_chunk_func]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliDecoderSetMetadataCallbacks", "(BrotliDecoderState *,BrotliDecoderStateInternal *,brotli_decoder_metadata_start_func,brotli_decoder_metadata_chunk_func,void *)", "", "Argument[3]", "Argument[*0].Field[*metadata_callback_opaque]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliDecoderStateInit", "(BrotliDecoderStateInternal *,brotli_alloc_func,brotli_free_func,void *)", "", "Argument[**3]", "Argument[*0].Field[***memory_manager_opaque]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliDecoderStateInit", "(BrotliDecoderStateInternal *,brotli_alloc_func,brotli_free_func,void *)", "", "Argument[**3]", "Argument[*0].Field[**dictionary].Field[***memory_manager_opaque]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliDecoderStateInit", "(BrotliDecoderStateInternal *,brotli_alloc_func,brotli_free_func,void *)", "", "Argument[*3]", "Argument[*0].Field[**dictionary].Field[**memory_manager_opaque]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliDecoderStateInit", "(BrotliDecoderStateInternal *,brotli_alloc_func,brotli_free_func,void *)", "", "Argument[*3]", "Argument[*0].Field[**memory_manager_opaque]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliDecoderStateInit", "(BrotliDecoderStateInternal *,brotli_alloc_func,brotli_free_func,void *)", "", "Argument[1]", "Argument[*0].Field[**dictionary].Field[*alloc_func]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliDecoderStateInit", "(BrotliDecoderStateInternal *,brotli_alloc_func,brotli_free_func,void *)", "", "Argument[1]", "Argument[*0].Field[*alloc_func]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliDecoderStateInit", "(BrotliDecoderStateInternal *,brotli_alloc_func,brotli_free_func,void *)", "", "Argument[2]", "Argument[*0].Field[**dictionary].Field[*free_func]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliDecoderStateInit", "(BrotliDecoderStateInternal *,brotli_alloc_func,brotli_free_func,void *)", "", "Argument[2]", "Argument[*0].Field[*free_func]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliDecoderStateInit", "(BrotliDecoderStateInternal *,brotli_alloc_func,brotli_free_func,void *)", "", "Argument[3]", "Argument[*0].Field[**dictionary].Field[*memory_manager_opaque]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliDecoderStateInit", "(BrotliDecoderStateInternal *,brotli_alloc_func,brotli_free_func,void *)", "", "Argument[3]", "Argument[*0].Field[*memory_manager_opaque]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliDecoderTakeOutput", "(BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"]
+ - ["", "", True, "BrotliDecoderTakeOutput", "(BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "BrotliDecoderTakeOutput", "(BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"]
+ - ["", "", True, "BrotliDecoderTakeOutput", "(BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *)", "", "Argument[*1]", "Argument[*0]", "taint", "df-generated"]
+ - ["", "", True, "BrotliDecoderTakeOutput", "(BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *)", "", "Argument[*1]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "BrotliDecoderTakeOutput", "(BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *)", "", "Argument[*1]", "ReturnValue[*]", "taint", "df-generated"]
+ - ["", "", True, "BrotliDecoderTakeOutput", "(BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *)", "", "Argument[1]", "Argument[*0]", "taint", "df-generated"]
+ - ["", "", True, "BrotliDecoderTakeOutput", "(BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *)", "", "Argument[1]", "Argument[*1]", "taint", "df-generated"]
+ - ["", "", True, "BrotliDecoderTakeOutput", "(BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "BrotliDecoderTakeOutput", "(BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *)", "", "Argument[1]", "ReturnValue[*]", "taint", "df-generated"]
+ - ["", "", True, "BrotliEncoderAttachPreparedDictionary", "(BrotliEncoderState *,BrotliEncoderStateInternal *,const BrotliEncoderPreparedDictionary *)", "", "Argument[*1].Field[**dictionary]", "Argument[*1]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliEncoderAttachPreparedDictionary", "(BrotliEncoderState *,BrotliEncoderStateInternal *,const BrotliEncoderPreparedDictionary *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliEncoderCompress", "(int,int,BrotliEncoderMode,size_t,const uint8_t[],size_t *,uint8_t[])", "", "Argument[*4]", "Argument[*5]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliEncoderCompress", "(int,int,BrotliEncoderMode,size_t,const uint8_t[],size_t *,uint8_t[])", "", "Argument[*4]", "Argument[*6]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliEncoderCompress", "(int,int,BrotliEncoderMode,size_t,const uint8_t[],size_t *,uint8_t[])", "", "Argument[*5]", "Argument[*4]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliEncoderCompress", "(int,int,BrotliEncoderMode,size_t,const uint8_t[],size_t *,uint8_t[])", "", "Argument[*5]", "Argument[*6]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliEncoderCompress", "(int,int,BrotliEncoderMode,size_t,const uint8_t[],size_t *,uint8_t[])", "", "Argument[3]", "Argument[*4]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliEncoderCompress", "(int,int,BrotliEncoderMode,size_t,const uint8_t[],size_t *,uint8_t[])", "", "Argument[3]", "Argument[*5]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliEncoderCompress", "(int,int,BrotliEncoderMode,size_t,const uint8_t[],size_t *,uint8_t[])", "", "Argument[3]", "Argument[*6]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliEncoderCompress", "(int,int,BrotliEncoderMode,size_t,const uint8_t[],size_t *,uint8_t[])", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliEncoderCompress", "(int,int,BrotliEncoderMode,size_t,const uint8_t[],size_t *,uint8_t[])", "", "Argument[4]", "Argument[*5]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliEncoderCompress", "(int,int,BrotliEncoderMode,size_t,const uint8_t[],size_t *,uint8_t[])", "", "Argument[4]", "Argument[*6]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliEncoderCompress", "(int,int,BrotliEncoderMode,size_t,const uint8_t[],size_t *,uint8_t[])", "", "Argument[5]", "Argument[*4]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliEncoderCompress", "(int,int,BrotliEncoderMode,size_t,const uint8_t[],size_t *,uint8_t[])", "", "Argument[5]", "Argument[*5]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliEncoderCompress", "(int,int,BrotliEncoderMode,size_t,const uint8_t[],size_t *,uint8_t[])", "", "Argument[5]", "Argument[*6]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliEncoderCompress", "(int,int,BrotliEncoderMode,size_t,const uint8_t[],size_t *,uint8_t[])", "", "Argument[6]", "Argument[*6]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliEncoderCompressStream", "(BrotliEncoderState *,BrotliEncoderStateInternal *,BrotliEncoderOperation,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *)", "", "Argument[**3]", "Argument[**5]", "value", "df-generated"]
+ - ["", "", True, "BrotliEncoderCompressStream", "(BrotliEncoderState *,BrotliEncoderStateInternal *,BrotliEncoderOperation,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *)", "", "Argument[**5]", "Argument[*0].Field[**next_out_]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliEncoderCompressStream", "(BrotliEncoderState *,BrotliEncoderStateInternal *,BrotliEncoderOperation,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *)", "", "Argument[**5]", "Argument[*0].Field[*last_bytes_]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliEncoderCreateInstance", "(brotli_alloc_func,brotli_free_func,void *)", "", "Argument[**2]", "ReturnValue[*].Field[*memory_manager_].Field[***opaque]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliEncoderCreateInstance", "(brotli_alloc_func,brotli_free_func,void *)", "", "Argument[*2]", "ReturnValue[*].Field[*memory_manager_].Field[**opaque]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliEncoderCreateInstance", "(brotli_alloc_func,brotli_free_func,void *)", "", "Argument[0]", "ReturnValue[*].Field[*memory_manager_].Field[*alloc_func]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliEncoderCreateInstance", "(brotli_alloc_func,brotli_free_func,void *)", "", "Argument[1]", "ReturnValue[*].Field[*memory_manager_].Field[*free_func]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliEncoderCreateInstance", "(brotli_alloc_func,brotli_free_func,void *)", "", "Argument[2]", "ReturnValue[*].Field[*memory_manager_].Field[*opaque]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliEncoderEstimatePeakMemoryUsage", "(int,int,size_t)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliEncoderEstimatePeakMemoryUsage", "(int,int,size_t)", "", "Argument[2]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliEncoderGetPreparedDictionarySize", "(const BrotliEncoderPreparedDictionary *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "BrotliEncoderGetPreparedDictionarySize", "(const BrotliEncoderPreparedDictionary *)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "BrotliEncoderMaxCompressedSize", "(size_t)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliEncoderPrepareDictionary", "(BrotliSharedDictionaryType,size_t,const uint8_t[],int,brotli_alloc_func,brotli_free_func,void *)", "", "Argument[**6]", "ReturnValue[*].Field[*memory_manager_].Field[***opaque]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliEncoderPrepareDictionary", "(BrotliSharedDictionaryType,size_t,const uint8_t[],int,brotli_alloc_func,brotli_free_func,void *)", "", "Argument[*2]", "ReturnValue[*].Field[**dictionary].Field[*num_items]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliEncoderPrepareDictionary", "(BrotliSharedDictionaryType,size_t,const uint8_t[],int,brotli_alloc_func,brotli_free_func,void *)", "", "Argument[*6]", "ReturnValue[*].Field[*memory_manager_].Field[**opaque]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliEncoderPrepareDictionary", "(BrotliSharedDictionaryType,size_t,const uint8_t[],int,brotli_alloc_func,brotli_free_func,void *)", "", "Argument[1]", "ReturnValue[*].Field[**dictionary].Field[*source_size]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliEncoderPrepareDictionary", "(BrotliSharedDictionaryType,size_t,const uint8_t[],int,brotli_alloc_func,brotli_free_func,void *)", "", "Argument[2]", "ReturnValue[*].Field[**dictionary].Field[*num_items]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliEncoderPrepareDictionary", "(BrotliSharedDictionaryType,size_t,const uint8_t[],int,brotli_alloc_func,brotli_free_func,void *)", "", "Argument[4]", "ReturnValue[*].Field[*memory_manager_].Field[*alloc_func]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliEncoderPrepareDictionary", "(BrotliSharedDictionaryType,size_t,const uint8_t[],int,brotli_alloc_func,brotli_free_func,void *)", "", "Argument[5]", "ReturnValue[*].Field[*memory_manager_].Field[*free_func]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliEncoderPrepareDictionary", "(BrotliSharedDictionaryType,size_t,const uint8_t[],int,brotli_alloc_func,brotli_free_func,void *)", "", "Argument[6]", "ReturnValue[*].Field[*memory_manager_].Field[*opaque]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliEncoderSetParameter", "(BrotliEncoderState *,BrotliEncoderStateInternal *,BrotliEncoderParameter,uint32_t)", "", "Argument[2]", "Argument[*0]", "taint", "df-generated"]
+ - ["", "", True, "BrotliEncoderTakeOutput", "(BrotliEncoderState *,BrotliEncoderStateInternal *,size_t *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"]
+ - ["", "", True, "BrotliEncoderTakeOutput", "(BrotliEncoderState *,BrotliEncoderStateInternal *,size_t *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "BrotliEncoderTakeOutput", "(BrotliEncoderState *,BrotliEncoderStateInternal *,size_t *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"]
+ - ["", "", True, "BrotliEncoderTakeOutput", "(BrotliEncoderState *,BrotliEncoderStateInternal *,size_t *)", "", "Argument[*1]", "Argument[*0]", "taint", "df-generated"]
+ - ["", "", True, "BrotliEncoderTakeOutput", "(BrotliEncoderState *,BrotliEncoderStateInternal *,size_t *)", "", "Argument[1]", "Argument[*0]", "taint", "df-generated"]
+ - ["", "", True, "BrotliEncoderTakeOutput", "(BrotliEncoderState *,BrotliEncoderStateInternal *,size_t *)", "", "Argument[1]", "Argument[*1]", "taint", "df-generated"]
+ - ["", "", True, "BrotliEstimateBitCostsForLiterals", "(size_t,size_t,size_t,const uint8_t *,size_t *,float *)", "", "Argument[*3]", "Argument[*4]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliEstimateBitCostsForLiterals", "(size_t,size_t,size_t,const uint8_t *,size_t *,float *)", "", "Argument[*3]", "Argument[*5]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliEstimateBitCostsForLiterals", "(size_t,size_t,size_t,const uint8_t *,size_t *,float *)", "", "Argument[*4]", "Argument[*5]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliEstimateBitCostsForLiterals", "(size_t,size_t,size_t,const uint8_t *,size_t *,float *)", "", "Argument[0]", "Argument[*4]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliEstimateBitCostsForLiterals", "(size_t,size_t,size_t,const uint8_t *,size_t *,float *)", "", "Argument[0]", "Argument[*5]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliEstimateBitCostsForLiterals", "(size_t,size_t,size_t,const uint8_t *,size_t *,float *)", "", "Argument[1]", "Argument[*5]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliEstimateBitCostsForLiterals", "(size_t,size_t,size_t,const uint8_t *,size_t *,float *)", "", "Argument[2]", "Argument[*4]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliEstimateBitCostsForLiterals", "(size_t,size_t,size_t,const uint8_t *,size_t *,float *)", "", "Argument[2]", "Argument[*5]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliEstimateBitCostsForLiterals", "(size_t,size_t,size_t,const uint8_t *,size_t *,float *)", "", "Argument[3]", "Argument[*4]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliEstimateBitCostsForLiterals", "(size_t,size_t,size_t,const uint8_t *,size_t *,float *)", "", "Argument[3]", "Argument[*5]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliEstimateBitCostsForLiterals", "(size_t,size_t,size_t,const uint8_t *,size_t *,float *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliEstimateBitCostsForLiterals", "(size_t,size_t,size_t,const uint8_t *,size_t *,float *)", "", "Argument[4]", "Argument[*5]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliFindAllStaticDictionaryMatches", "(const BrotliEncoderDictionary *,const uint8_t *,size_t,size_t,uint32_t *)", "", "Argument[2]", "Argument[*4]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliFindAllStaticDictionaryMatches", "(const BrotliEncoderDictionary *,const uint8_t *,size_t,size_t,uint32_t *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliHistogramBitCostDistanceCommand", "(const HistogramCommand *,const HistogramCommand *,HistogramCommand *)", "", "Argument[*0]", "Argument[*2]", "value", "df-generated"]
+ - ["", "", True, "BrotliHistogramBitCostDistanceCommand", "(const HistogramCommand *,const HistogramCommand *,HistogramCommand *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliHistogramBitCostDistanceCommand", "(const HistogramCommand *,const HistogramCommand *,HistogramCommand *)", "", "Argument[0]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliHistogramBitCostDistanceDistance", "(const HistogramDistance *,const HistogramDistance *,HistogramDistance *)", "", "Argument[*0]", "Argument[*2]", "value", "df-generated"]
+ - ["", "", True, "BrotliHistogramBitCostDistanceDistance", "(const HistogramDistance *,const HistogramDistance *,HistogramDistance *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliHistogramBitCostDistanceDistance", "(const HistogramDistance *,const HistogramDistance *,HistogramDistance *)", "", "Argument[0]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliHistogramBitCostDistanceLiteral", "(const HistogramLiteral *,const HistogramLiteral *,HistogramLiteral *)", "", "Argument[*0]", "Argument[*2]", "value", "df-generated"]
+ - ["", "", True, "BrotliHistogramBitCostDistanceLiteral", "(const HistogramLiteral *,const HistogramLiteral *,HistogramLiteral *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliHistogramBitCostDistanceLiteral", "(const HistogramLiteral *,const HistogramLiteral *,HistogramLiteral *)", "", "Argument[0]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliHistogramCombineCommand", "(HistogramCommand *,HistogramCommand *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[*0]", "Argument[*1]", "value", "df-generated"]
+ - ["", "", True, "BrotliHistogramCombineCommand", "(HistogramCommand *,HistogramCommand *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[*2]", "Argument[*5].Field[*cost_diff]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliHistogramCombineCommand", "(HistogramCommand *,HistogramCommand *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[*4]", "Argument[*3]", "value", "df-generated"]
+ - ["", "", True, "BrotliHistogramCombineCommand", "(HistogramCommand *,HistogramCommand *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliHistogramCombineCommand", "(HistogramCommand *,HistogramCommand *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[0]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliHistogramCombineCommand", "(HistogramCommand *,HistogramCommand *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliHistogramCombineCommand", "(HistogramCommand *,HistogramCommand *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[2]", "Argument[*5].Field[*cost_diff]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliHistogramCombineCommand", "(HistogramCommand *,HistogramCommand *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[5]", "Argument[*5]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliHistogramCombineCommand", "(HistogramCommand *,HistogramCommand *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[6]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "BrotliHistogramCombineDistance", "(HistogramDistance *,HistogramDistance *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[*0]", "Argument[*1]", "value", "df-generated"]
+ - ["", "", True, "BrotliHistogramCombineDistance", "(HistogramDistance *,HistogramDistance *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[*2]", "Argument[*5].Field[*cost_diff]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliHistogramCombineDistance", "(HistogramDistance *,HistogramDistance *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[*4]", "Argument[*3]", "value", "df-generated"]
+ - ["", "", True, "BrotliHistogramCombineDistance", "(HistogramDistance *,HistogramDistance *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliHistogramCombineDistance", "(HistogramDistance *,HistogramDistance *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[0]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliHistogramCombineDistance", "(HistogramDistance *,HistogramDistance *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliHistogramCombineDistance", "(HistogramDistance *,HistogramDistance *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[2]", "Argument[*5].Field[*cost_diff]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliHistogramCombineDistance", "(HistogramDistance *,HistogramDistance *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[5]", "Argument[*5]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliHistogramCombineDistance", "(HistogramDistance *,HistogramDistance *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[6]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "BrotliHistogramCombineLiteral", "(HistogramLiteral *,HistogramLiteral *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[*0]", "Argument[*1]", "value", "df-generated"]
+ - ["", "", True, "BrotliHistogramCombineLiteral", "(HistogramLiteral *,HistogramLiteral *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[*2]", "Argument[*5].Field[*cost_diff]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliHistogramCombineLiteral", "(HistogramLiteral *,HistogramLiteral *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[*4]", "Argument[*3]", "value", "df-generated"]
+ - ["", "", True, "BrotliHistogramCombineLiteral", "(HistogramLiteral *,HistogramLiteral *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliHistogramCombineLiteral", "(HistogramLiteral *,HistogramLiteral *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[0]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliHistogramCombineLiteral", "(HistogramLiteral *,HistogramLiteral *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliHistogramCombineLiteral", "(HistogramLiteral *,HistogramLiteral *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[2]", "Argument[*5].Field[*cost_diff]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliHistogramCombineLiteral", "(HistogramLiteral *,HistogramLiteral *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[5]", "Argument[*5]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliHistogramCombineLiteral", "(HistogramLiteral *,HistogramLiteral *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)", "", "Argument[6]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "BrotliHistogramReindexCommand", "(MemoryManager *,HistogramCommand *,uint32_t *,size_t)", "", "Argument[*2]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliHistogramReindexCommand", "(MemoryManager *,HistogramCommand *,uint32_t *,size_t)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliHistogramReindexCommand", "(MemoryManager *,HistogramCommand *,uint32_t *,size_t)", "", "Argument[2]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliHistogramReindexCommand", "(MemoryManager *,HistogramCommand *,uint32_t *,size_t)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliHistogramReindexDistance", "(MemoryManager *,HistogramDistance *,uint32_t *,size_t)", "", "Argument[*2]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliHistogramReindexDistance", "(MemoryManager *,HistogramDistance *,uint32_t *,size_t)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliHistogramReindexDistance", "(MemoryManager *,HistogramDistance *,uint32_t *,size_t)", "", "Argument[2]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliHistogramReindexDistance", "(MemoryManager *,HistogramDistance *,uint32_t *,size_t)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliHistogramReindexLiteral", "(MemoryManager *,HistogramLiteral *,uint32_t *,size_t)", "", "Argument[*2]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliHistogramReindexLiteral", "(MemoryManager *,HistogramLiteral *,uint32_t *,size_t)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliHistogramReindexLiteral", "(MemoryManager *,HistogramLiteral *,uint32_t *,size_t)", "", "Argument[2]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliHistogramReindexLiteral", "(MemoryManager *,HistogramLiteral *,uint32_t *,size_t)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliHistogramRemapCommand", "(const HistogramCommand *,size_t,const uint32_t *,size_t,HistogramCommand *,HistogramCommand *,uint32_t *)", "", "Argument[*0]", "Argument[*5]", "value", "df-generated"]
+ - ["", "", True, "BrotliHistogramRemapCommand", "(const HistogramCommand *,size_t,const uint32_t *,size_t,HistogramCommand *,HistogramCommand *,uint32_t *)", "", "Argument[*2]", "Argument[*4]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliHistogramRemapCommand", "(const HistogramCommand *,size_t,const uint32_t *,size_t,HistogramCommand *,HistogramCommand *,uint32_t *)", "", "Argument[*2]", "Argument[*6]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliHistogramRemapCommand", "(const HistogramCommand *,size_t,const uint32_t *,size_t,HistogramCommand *,HistogramCommand *,uint32_t *)", "", "Argument[*6]", "Argument[*4]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliHistogramRemapCommand", "(const HistogramCommand *,size_t,const uint32_t *,size_t,HistogramCommand *,HistogramCommand *,uint32_t *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliHistogramRemapCommand", "(const HistogramCommand *,size_t,const uint32_t *,size_t,HistogramCommand *,HistogramCommand *,uint32_t *)", "", "Argument[0]", "Argument[*5]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliHistogramRemapCommand", "(const HistogramCommand *,size_t,const uint32_t *,size_t,HistogramCommand *,HistogramCommand *,uint32_t *)", "", "Argument[2]", "Argument[*4]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliHistogramRemapCommand", "(const HistogramCommand *,size_t,const uint32_t *,size_t,HistogramCommand *,HistogramCommand *,uint32_t *)", "", "Argument[2]", "Argument[*6]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliHistogramRemapCommand", "(const HistogramCommand *,size_t,const uint32_t *,size_t,HistogramCommand *,HistogramCommand *,uint32_t *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliHistogramRemapCommand", "(const HistogramCommand *,size_t,const uint32_t *,size_t,HistogramCommand *,HistogramCommand *,uint32_t *)", "", "Argument[6]", "Argument[*4]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliHistogramRemapCommand", "(const HistogramCommand *,size_t,const uint32_t *,size_t,HistogramCommand *,HistogramCommand *,uint32_t *)", "", "Argument[6]", "Argument[*6]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliHistogramRemapDistance", "(const HistogramDistance *,size_t,const uint32_t *,size_t,HistogramDistance *,HistogramDistance *,uint32_t *)", "", "Argument[*0]", "Argument[*5]", "value", "df-generated"]
+ - ["", "", True, "BrotliHistogramRemapDistance", "(const HistogramDistance *,size_t,const uint32_t *,size_t,HistogramDistance *,HistogramDistance *,uint32_t *)", "", "Argument[*2]", "Argument[*4]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliHistogramRemapDistance", "(const HistogramDistance *,size_t,const uint32_t *,size_t,HistogramDistance *,HistogramDistance *,uint32_t *)", "", "Argument[*2]", "Argument[*6]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliHistogramRemapDistance", "(const HistogramDistance *,size_t,const uint32_t *,size_t,HistogramDistance *,HistogramDistance *,uint32_t *)", "", "Argument[*6]", "Argument[*4]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliHistogramRemapDistance", "(const HistogramDistance *,size_t,const uint32_t *,size_t,HistogramDistance *,HistogramDistance *,uint32_t *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliHistogramRemapDistance", "(const HistogramDistance *,size_t,const uint32_t *,size_t,HistogramDistance *,HistogramDistance *,uint32_t *)", "", "Argument[0]", "Argument[*5]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliHistogramRemapDistance", "(const HistogramDistance *,size_t,const uint32_t *,size_t,HistogramDistance *,HistogramDistance *,uint32_t *)", "", "Argument[2]", "Argument[*4]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliHistogramRemapDistance", "(const HistogramDistance *,size_t,const uint32_t *,size_t,HistogramDistance *,HistogramDistance *,uint32_t *)", "", "Argument[2]", "Argument[*6]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliHistogramRemapDistance", "(const HistogramDistance *,size_t,const uint32_t *,size_t,HistogramDistance *,HistogramDistance *,uint32_t *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliHistogramRemapDistance", "(const HistogramDistance *,size_t,const uint32_t *,size_t,HistogramDistance *,HistogramDistance *,uint32_t *)", "", "Argument[6]", "Argument[*4]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliHistogramRemapDistance", "(const HistogramDistance *,size_t,const uint32_t *,size_t,HistogramDistance *,HistogramDistance *,uint32_t *)", "", "Argument[6]", "Argument[*6]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliHistogramRemapLiteral", "(const HistogramLiteral *,size_t,const uint32_t *,size_t,HistogramLiteral *,HistogramLiteral *,uint32_t *)", "", "Argument[*0]", "Argument[*5]", "value", "df-generated"]
+ - ["", "", True, "BrotliHistogramRemapLiteral", "(const HistogramLiteral *,size_t,const uint32_t *,size_t,HistogramLiteral *,HistogramLiteral *,uint32_t *)", "", "Argument[*2]", "Argument[*4]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliHistogramRemapLiteral", "(const HistogramLiteral *,size_t,const uint32_t *,size_t,HistogramLiteral *,HistogramLiteral *,uint32_t *)", "", "Argument[*2]", "Argument[*6]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliHistogramRemapLiteral", "(const HistogramLiteral *,size_t,const uint32_t *,size_t,HistogramLiteral *,HistogramLiteral *,uint32_t *)", "", "Argument[*6]", "Argument[*4]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliHistogramRemapLiteral", "(const HistogramLiteral *,size_t,const uint32_t *,size_t,HistogramLiteral *,HistogramLiteral *,uint32_t *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliHistogramRemapLiteral", "(const HistogramLiteral *,size_t,const uint32_t *,size_t,HistogramLiteral *,HistogramLiteral *,uint32_t *)", "", "Argument[0]", "Argument[*5]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliHistogramRemapLiteral", "(const HistogramLiteral *,size_t,const uint32_t *,size_t,HistogramLiteral *,HistogramLiteral *,uint32_t *)", "", "Argument[2]", "Argument[*4]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliHistogramRemapLiteral", "(const HistogramLiteral *,size_t,const uint32_t *,size_t,HistogramLiteral *,HistogramLiteral *,uint32_t *)", "", "Argument[2]", "Argument[*6]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliHistogramRemapLiteral", "(const HistogramLiteral *,size_t,const uint32_t *,size_t,HistogramLiteral *,HistogramLiteral *,uint32_t *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliHistogramRemapLiteral", "(const HistogramLiteral *,size_t,const uint32_t *,size_t,HistogramLiteral *,HistogramLiteral *,uint32_t *)", "", "Argument[6]", "Argument[*4]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliHistogramRemapLiteral", "(const HistogramLiteral *,size_t,const uint32_t *,size_t,HistogramLiteral *,HistogramLiteral *,uint32_t *)", "", "Argument[6]", "Argument[*6]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliInitDistanceParams", "(BrotliDistanceParams *,uint32_t,uint32_t,int)", "", "Argument[1]", "Argument[*0]", "taint", "df-generated"]
+ - ["", "", True, "BrotliInitDistanceParams", "(BrotliDistanceParams *,uint32_t,uint32_t,int)", "", "Argument[2]", "Argument[*0]", "taint", "df-generated"]
+ - ["", "", True, "BrotliInitMemoryManager", "(MemoryManager *,brotli_alloc_func,brotli_free_func,void *)", "", "Argument[**3]", "Argument[*0].Field[***opaque]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliInitMemoryManager", "(MemoryManager *,brotli_alloc_func,brotli_free_func,void *)", "", "Argument[*3]", "Argument[*0].Field[**opaque]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliInitMemoryManager", "(MemoryManager *,brotli_alloc_func,brotli_free_func,void *)", "", "Argument[1]", "Argument[*0].Field[*alloc_func]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliInitMemoryManager", "(MemoryManager *,brotli_alloc_func,brotli_free_func,void *)", "", "Argument[2]", "Argument[*0].Field[*free_func]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliInitMemoryManager", "(MemoryManager *,brotli_alloc_func,brotli_free_func,void *)", "", "Argument[3]", "Argument[*0].Field[*opaque]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliInitSharedEncoderDictionary", "(SharedEncoderDictionary *)", "", "Argument[*0].Field[*contextual].Field[*instance_]", "Argument[*0].Field[*contextual].Field[**dict]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliOptimizeHuffmanCountsForRle", "(size_t,uint32_t *,uint8_t *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliPopulationCostCommand", "(const HistogramCommand *)", "", "Argument[*0].Field[*data_]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliPopulationCostCommand", "(const HistogramCommand *)", "", "Argument[*0].Field[*total_count_]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliPopulationCostDistance", "(const HistogramDistance *)", "", "Argument[*0].Field[*data_]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliPopulationCostDistance", "(const HistogramDistance *)", "", "Argument[*0].Field[*total_count_]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliPopulationCostLiteral", "(const HistogramLiteral *)", "", "Argument[*0].Field[*data_]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliPopulationCostLiteral", "(const HistogramLiteral *)", "", "Argument[*0].Field[*total_count_]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliSafeReadBits32Slow", "(BrotliBitReader *const,uint64_t,uint64_t *)", "", "Argument[1]", "Argument[*0].Field[*bit_pos_]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliSafeReadBits32Slow", "(BrotliBitReader *const,uint64_t,uint64_t *)", "", "Argument[1]", "Argument[*0].Field[*val_]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliSafeReadBits32Slow", "(BrotliBitReader *const,uint64_t,uint64_t *)", "", "Argument[1]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliSharedDictionaryAttach", "(BrotliSharedDictionaryInternal *,BrotliSharedDictionaryType,size_t,const uint8_t[])", "", "Argument[*3]", "Argument[*0].Field[**prefix]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliSharedDictionaryAttach", "(BrotliSharedDictionaryInternal *,BrotliSharedDictionaryType,size_t,const uint8_t[])", "", "Argument[2]", "Argument[*0].Field[*prefix_size]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliSharedDictionaryAttach", "(BrotliSharedDictionaryInternal *,BrotliSharedDictionaryType,size_t,const uint8_t[])", "", "Argument[3]", "Argument[*0].Field[*prefix]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliSharedDictionaryCreateInstance", "(brotli_alloc_func,brotli_free_func,void *)", "", "Argument[**2]", "ReturnValue[*].Field[***memory_manager_opaque]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliSharedDictionaryCreateInstance", "(brotli_alloc_func,brotli_free_func,void *)", "", "Argument[*2]", "ReturnValue[*].Field[**memory_manager_opaque]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliSharedDictionaryCreateInstance", "(brotli_alloc_func,brotli_free_func,void *)", "", "Argument[0]", "ReturnValue[*].Field[*alloc_func]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliSharedDictionaryCreateInstance", "(brotli_alloc_func,brotli_free_func,void *)", "", "Argument[1]", "ReturnValue[*].Field[*free_func]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliSharedDictionaryCreateInstance", "(brotli_alloc_func,brotli_free_func,void *)", "", "Argument[2]", "ReturnValue[*].Field[*memory_manager_opaque]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliSplitBlock", "(MemoryManager *,const Command *,const size_t,const uint8_t *,const size_t,const size_t,const BrotliEncoderParams *,BlockSplit *,BlockSplit *,BlockSplit *)", "", "Argument[*1].Field[*insert_len_]", "Argument[*7].Field[**lengths]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliSplitBlock", "(MemoryManager *,const Command *,const size_t,const uint8_t *,const size_t,const size_t,const BrotliEncoderParams *,BlockSplit *,BlockSplit *,BlockSplit *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliSplitBlock", "(MemoryManager *,const Command *,const size_t,const uint8_t *,const size_t,const size_t,const BrotliEncoderParams *,BlockSplit *,BlockSplit *,BlockSplit *)", "", "Argument[2]", "Argument[*8].Field[**lengths]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliStoreHuffmanTree", "(const uint8_t *,size_t,HuffmanTree *,size_t *,uint8_t *)", "", "Argument[*0]", "Argument[*2].Field[*total_count_]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliStoreHuffmanTree", "(const uint8_t *,size_t,HuffmanTree *,size_t *,uint8_t *)", "", "Argument[*0]", "Argument[*4]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliStoreHuffmanTree", "(const uint8_t *,size_t,HuffmanTree *,size_t *,uint8_t *)", "", "Argument[*3]", "Argument[*4]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliStoreHuffmanTree", "(const uint8_t *,size_t,HuffmanTree *,size_t *,uint8_t *)", "", "Argument[0]", "Argument[*2].Field[*total_count_]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliStoreHuffmanTree", "(const uint8_t *,size_t,HuffmanTree *,size_t *,uint8_t *)", "", "Argument[0]", "Argument[*4]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliStoreHuffmanTree", "(const uint8_t *,size_t,HuffmanTree *,size_t *,uint8_t *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliStoreHuffmanTree", "(const uint8_t *,size_t,HuffmanTree *,size_t *,uint8_t *)", "", "Argument[3]", "Argument[*4]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliStoreHuffmanTree", "(const uint8_t *,size_t,HuffmanTree *,size_t *,uint8_t *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliStoreMetaBlock", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *)", "", "Argument[*13]", "Argument[*14]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliStoreMetaBlock", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *)", "", "Argument[*1]", "Argument[*14]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliStoreMetaBlock", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *)", "", "Argument[13]", "Argument[*13]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliStoreMetaBlock", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *)", "", "Argument[13]", "Argument[*14]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliStoreMetaBlock", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *)", "", "Argument[14]", "Argument[*14]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliStoreMetaBlock", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *)", "", "Argument[1]", "Argument[*14]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliStoreMetaBlock", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *)", "", "Argument[2]", "Argument[*14]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliStoreMetaBlock", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *)", "", "Argument[3]", "Argument[*14]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliStoreMetaBlock", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *)", "", "Argument[4]", "Argument[*14]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliStoreMetaBlock", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *)", "", "Argument[5]", "Argument[*14]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliStoreMetaBlock", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *)", "", "Argument[6]", "Argument[*14]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliStoreMetaBlock", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *)", "", "Argument[7]", "Argument[*14]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliStoreMetaBlock", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *)", "", "Argument[9]", "Argument[*14]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliStoreMetaBlockFast", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *)", "", "Argument[*1]", "Argument[*10]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliStoreMetaBlockFast", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *)", "", "Argument[*9]", "Argument[*10]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliStoreMetaBlockFast", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *)", "", "Argument[10]", "Argument[*10]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliStoreMetaBlockFast", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *)", "", "Argument[1]", "Argument[*10]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliStoreMetaBlockFast", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *)", "", "Argument[2]", "Argument[*10]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliStoreMetaBlockFast", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *)", "", "Argument[3]", "Argument[*10]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliStoreMetaBlockFast", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *)", "", "Argument[4]", "Argument[*10]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliStoreMetaBlockFast", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *)", "", "Argument[5]", "Argument[*10]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliStoreMetaBlockFast", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *)", "", "Argument[9]", "Argument[*10]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliStoreMetaBlockFast", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *)", "", "Argument[9]", "Argument[*9]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliStoreMetaBlockTrivial", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *)", "", "Argument[*1]", "Argument[*10]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliStoreMetaBlockTrivial", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *)", "", "Argument[*9]", "Argument[*10]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliStoreMetaBlockTrivial", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *)", "", "Argument[10]", "Argument[*10]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliStoreMetaBlockTrivial", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *)", "", "Argument[1]", "Argument[*10]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliStoreMetaBlockTrivial", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *)", "", "Argument[2]", "Argument[*10]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliStoreMetaBlockTrivial", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *)", "", "Argument[3]", "Argument[*10]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliStoreMetaBlockTrivial", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *)", "", "Argument[4]", "Argument[*10]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliStoreMetaBlockTrivial", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *)", "", "Argument[5]", "Argument[*10]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliStoreMetaBlockTrivial", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *)", "", "Argument[9]", "Argument[*10]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliStoreMetaBlockTrivial", "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *)", "", "Argument[9]", "Argument[*9]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliStoreUncompressedMetaBlock", "(int,const uint8_t *__restrict__,size_t,size_t,size_t,size_t *__restrict__,uint8_t *__restrict__)", "", "Argument[*1]", "Argument[*6]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliStoreUncompressedMetaBlock", "(int,const uint8_t *__restrict__,size_t,size_t,size_t,size_t *__restrict__,uint8_t *__restrict__)", "", "Argument[*5]", "Argument[*6]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliStoreUncompressedMetaBlock", "(int,const uint8_t *__restrict__,size_t,size_t,size_t,size_t *__restrict__,uint8_t *__restrict__)", "", "Argument[1]", "Argument[*6]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliStoreUncompressedMetaBlock", "(int,const uint8_t *__restrict__,size_t,size_t,size_t,size_t *__restrict__,uint8_t *__restrict__)", "", "Argument[2]", "Argument[*5]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliStoreUncompressedMetaBlock", "(int,const uint8_t *__restrict__,size_t,size_t,size_t,size_t *__restrict__,uint8_t *__restrict__)", "", "Argument[2]", "Argument[*6]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliStoreUncompressedMetaBlock", "(int,const uint8_t *__restrict__,size_t,size_t,size_t,size_t *__restrict__,uint8_t *__restrict__)", "", "Argument[3]", "Argument[*5]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliStoreUncompressedMetaBlock", "(int,const uint8_t *__restrict__,size_t,size_t,size_t,size_t *__restrict__,uint8_t *__restrict__)", "", "Argument[3]", "Argument[*6]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliStoreUncompressedMetaBlock", "(int,const uint8_t *__restrict__,size_t,size_t,size_t,size_t *__restrict__,uint8_t *__restrict__)", "", "Argument[4]", "Argument[*5]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliStoreUncompressedMetaBlock", "(int,const uint8_t *__restrict__,size_t,size_t,size_t,size_t *__restrict__,uint8_t *__restrict__)", "", "Argument[4]", "Argument[*6]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliStoreUncompressedMetaBlock", "(int,const uint8_t *__restrict__,size_t,size_t,size_t,size_t *__restrict__,uint8_t *__restrict__)", "", "Argument[5]", "Argument[*5]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliStoreUncompressedMetaBlock", "(int,const uint8_t *__restrict__,size_t,size_t,size_t,size_t *__restrict__,uint8_t *__restrict__)", "", "Argument[5]", "Argument[*6]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliStoreUncompressedMetaBlock", "(int,const uint8_t *__restrict__,size_t,size_t,size_t,size_t *__restrict__,uint8_t *__restrict__)", "", "Argument[6]", "Argument[*6]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliTransformDictionaryWord", "(uint8_t *,const uint8_t *,int,const BrotliTransforms *,int)", "", "Argument[*1]", "Argument[*0]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliTransformDictionaryWord", "(uint8_t *,const uint8_t *,int,const BrotliTransforms *,int)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliTransformDictionaryWord", "(uint8_t *,const uint8_t *,int,const BrotliTransforms *,int)", "", "Argument[1]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliTransformDictionaryWord", "(uint8_t *,const uint8_t *,int,const BrotliTransforms *,int)", "", "Argument[2]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliTransformDictionaryWord", "(uint8_t *,const uint8_t *,int,const BrotliTransforms *,int)", "", "Argument[4]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliWriteHuffmanTree", "(const uint8_t *,size_t,size_t *,uint8_t *,uint8_t *)", "", "Argument[*0]", "Argument[*3]", "value", "dfc-generated"]
+ - ["", "", True, "BrotliWriteHuffmanTree", "(const uint8_t *,size_t,size_t *,uint8_t *,uint8_t *)", "", "Argument[*2]", "Argument[*3]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliWriteHuffmanTree", "(const uint8_t *,size_t,size_t *,uint8_t *,uint8_t *)", "", "Argument[*2]", "Argument[*4]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliWriteHuffmanTree", "(const uint8_t *,size_t,size_t *,uint8_t *,uint8_t *)", "", "Argument[0]", "Argument[*3]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliWriteHuffmanTree", "(const uint8_t *,size_t,size_t *,uint8_t *,uint8_t *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliWriteHuffmanTree", "(const uint8_t *,size_t,size_t *,uint8_t *,uint8_t *)", "", "Argument[2]", "Argument[*3]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliWriteHuffmanTree", "(const uint8_t *,size_t,size_t *,uint8_t *,uint8_t *)", "", "Argument[2]", "Argument[*4]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliWriteHuffmanTree", "(const uint8_t *,size_t,size_t *,uint8_t *,uint8_t *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliWriteHuffmanTree", "(const uint8_t *,size_t,size_t *,uint8_t *,uint8_t *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliZopfliComputeShortestPath", "(MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,const int *,Hasher *,ZopfliNode *)", "", "Argument[1]", "Argument[*9]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliZopfliComputeShortestPath", "(MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,const int *,Hasher *,ZopfliNode *)", "", "Argument[9]", "Argument[*9]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliZopfliCreateCommands", "(const size_t,const size_t,const ZopfliNode *,int *,size_t *,const BrotliEncoderParams *,Command *,size_t *)", "", "Argument[0]", "Argument[*4]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliZopfliCreateCommands", "(const size_t,const size_t,const ZopfliNode *,int *,size_t *,const BrotliEncoderParams *,Command *,size_t *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliZopfliCreateCommands", "(const size_t,const size_t,const ZopfliNode *,int *,size_t *,const BrotliEncoderParams *,Command *,size_t *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliZopfliCreateCommands", "(const size_t,const size_t,const ZopfliNode *,int *,size_t *,const BrotliEncoderParams *,Command *,size_t *)", "", "Argument[6]", "Argument[*6]", "taint", "dfc-generated"]
+ - ["", "", True, "BrotliZopfliCreateCommands", "(const size_t,const size_t,const ZopfliNode *,int *,size_t *,const BrotliEncoderParams *,Command *,size_t *)", "", "Argument[7]", "Argument[*7]", "taint", "dfc-generated"]
+ - ["", "", True, "CreatePreparedDictionary", "(MemoryManager *,const uint8_t *,size_t)", "", "Argument[*1]", "ReturnValue[*].Field[*num_items]", "taint", "dfc-generated"]
+ - ["", "", True, "CreatePreparedDictionary", "(MemoryManager *,const uint8_t *,size_t)", "", "Argument[1]", "ReturnValue[*].Field[*num_items]", "taint", "dfc-generated"]
+ - ["", "", True, "CreatePreparedDictionary", "(MemoryManager *,const uint8_t *,size_t)", "", "Argument[2]", "ReturnValue[*].Field[*source_size]", "value", "dfc-generated"]
diff --git a/cpp/ql/lib/ext/generated/curl/curl.model.yml b/cpp/ql/lib/ext/generated/curl/curl.model.yml
new file mode 100644
index 000000000000..847b0a10e46b
--- /dev/null
+++ b/cpp/ql/lib/ext/generated/curl/curl.model.yml
@@ -0,0 +1,959 @@
+# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT.
+extensions:
+ - addsTo:
+ pack: codeql/cpp-all
+ extensible: summaryModel
+ data:
+ - ["", "", True, "Curl_GetFTPResponse", "(Curl_easy *,ssize_t *,int *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_GetFTPResponse", "(Curl_easy *,ssize_t *,int *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_HMAC_final", "(HMAC_context *,unsigned char *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"]
+ - ["", "", True, "Curl_HMAC_init", "(const HMAC_params *,const unsigned char *,unsigned int)", "", "Argument[0]", "ReturnValue[*].Field[**hashctxt1].Field[*hash]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_HMAC_init", "(const HMAC_params *,const unsigned char *,unsigned int)", "", "Argument[0]", "ReturnValue[*].Field[**hashctxt2].Field[*hash]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_HMAC_init", "(const HMAC_params *,const unsigned char *,unsigned int)", "", "Argument[0]", "ReturnValue[*].Field[*hash]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_MD5_init", "(const MD5_params *)", "", "Argument[*0]", "ReturnValue[*].Field[**md5_hash]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_MD5_init", "(const MD5_params *)", "", "Argument[0]", "ReturnValue[*].Field[*md5_hash]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_add_custom_headers", "(Curl_easy *,bool,dynbuf *)", "", "Argument[*2].Field[*allc]", "Argument[*2].Field[*leng]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_addrinfo_callback", "(Curl_easy *,int,Curl_addrinfo *)", "", "Argument[*2]", "Argument[2]", "taint", "df-generated"]
+ - ["", "", True, "Curl_addrinfo_callback", "(Curl_easy *,int,Curl_addrinfo *)", "", "Argument[2]", "Argument[*2]", "taint", "df-generated"]
+ - ["", "", True, "Curl_alpn_set_negotiated", "(Curl_cfilter *,Curl_easy *,ssl_connect_data *,const unsigned char *,size_t)", "", "Argument[*3]", "Argument[*2].Field[*negotiated].Field[**alpn]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_alpn_set_negotiated", "(Curl_cfilter *,Curl_easy *,ssl_connect_data *,const unsigned char *,size_t)", "", "Argument[3]", "Argument[*2].Field[*negotiated].Field[**alpn]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_alpn_to_proto_buf", "(alpn_proto_buf *,const alpn_spec *)", "", "Argument[*1]", "Argument[*0]", "taint", "df-generated"]
+ - ["", "", True, "Curl_alpn_to_proto_str", "(alpn_proto_buf *,const alpn_spec *)", "", "Argument[*1]", "Argument[*0]", "taint", "df-generated"]
+ - ["", "", True, "Curl_altsvc_cleanup", "(altsvcinfo **)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_altsvc_ctrl", "(altsvcinfo *,const long)", "", "Argument[1]", "Argument[*0].Field[*flags]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_altsvc_parse", "(Curl_easy *,altsvcinfo *,const char *,alpnid,const char *,unsigned short)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_attach_connection", "(Curl_easy *,connectdata *)", "", "Argument[0]", "Argument[*0].Field[*conn_queue].Field[*_ptr]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_attach_connection", "(Curl_easy *,connectdata *)", "", "Argument[1]", "Argument[*0].Field[*conn]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_auth_create_external_message", "(const char *,bufref *)", "", "Argument[*0]", "Argument[*1].Field[**ptr]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_auth_create_external_message", "(const char *,bufref *)", "", "Argument[0]", "Argument[*1].Field[*ptr]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_auth_create_login_message", "(const char *,bufref *)", "", "Argument[*0]", "Argument[*1].Field[**ptr]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_auth_create_login_message", "(const char *,bufref *)", "", "Argument[0]", "Argument[*1].Field[*ptr]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_auth_create_ntlm_type3_message", "(Curl_easy *,const char *,const char *,ntlmdata *,bufref *)", "", "Argument[*1]", "Argument[*4].Field[**ptr]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_auth_create_ntlm_type3_message", "(Curl_easy *,const char *,const char *,ntlmdata *,bufref *)", "", "Argument[1]", "Argument[*4].Field[**ptr]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_auth_create_ntlm_type3_message", "(Curl_easy *,const char *,const char *,ntlmdata *,bufref *)", "", "Argument[1]", "Argument[*4].Field[*len]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_auth_create_plain_message", "(const char *,const char *,const char *,bufref *)", "", "Argument[*0]", "Argument[*3].Field[**ptr]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_auth_create_plain_message", "(const char *,const char *,const char *,bufref *)", "", "Argument[*1]", "Argument[*3].Field[**ptr]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_auth_create_plain_message", "(const char *,const char *,const char *,bufref *)", "", "Argument[*2]", "Argument[*3].Field[**ptr]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_auth_create_plain_message", "(const char *,const char *,const char *,bufref *)", "", "Argument[0]", "Argument[*3].Field[**ptr]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_auth_create_plain_message", "(const char *,const char *,const char *,bufref *)", "", "Argument[1]", "Argument[*3].Field[**ptr]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_auth_create_plain_message", "(const char *,const char *,const char *,bufref *)", "", "Argument[2]", "Argument[*3].Field[**ptr]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_auth_decode_digest_http_message", "(const char *,digestdata *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_auth_decode_ntlm_type2_message", "(Curl_easy *,const bufref *,ntlmdata *)", "", "Argument[*1]", "Argument[*2]", "taint", "df-generated"]
+ - ["", "", True, "Curl_auth_digest_get_pair", "(const char *,char *,char *,const char **)", "", "Argument[*0]", "Argument[**3]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_auth_digest_get_pair", "(const char *,char *,char *,const char **)", "", "Argument[*0]", "Argument[*1]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_auth_digest_get_pair", "(const char *,char *,char *,const char **)", "", "Argument[*0]", "Argument[*2]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_auth_digest_get_pair", "(const char *,char *,char *,const char **)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_auth_digest_get_pair", "(const char *,char *,char *,const char **)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_bufcp_init", "(bufc_pool *,size_t,size_t)", "", "Argument[1]", "Argument[*0].Field[*chunk_size]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_bufcp_init", "(bufc_pool *,size_t,size_t)", "", "Argument[2]", "Argument[*0].Field[*spare_max]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_bufq_cread", "(bufq *,char *,size_t,size_t *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_bufq_cread", "(bufq *,char *,size_t,size_t *)", "", "Argument[2]", "Argument[*0].Field[**head].Field[*r_offset]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_bufq_cread", "(bufq *,char *,size_t,size_t *)", "", "Argument[2]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_bufq_cread", "(bufq *,char *,size_t,size_t *)", "", "Argument[2]", "Argument[*3]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_bufq_cwrite", "(bufq *,const char *,size_t,size_t *)", "", "Argument[2]", "Argument[*3]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_bufq_init2", "(bufq *,size_t,size_t,int)", "", "Argument[1]", "Argument[*0].Field[*chunk_size]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_bufq_init2", "(bufq *,size_t,size_t,int)", "", "Argument[2]", "Argument[*0].Field[*max_chunks]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_bufq_init2", "(bufq *,size_t,size_t,int)", "", "Argument[3]", "Argument[*0].Field[*opts]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_bufq_init", "(bufq *,size_t,size_t)", "", "Argument[1]", "Argument[*0].Field[*chunk_size]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_bufq_init", "(bufq *,size_t,size_t)", "", "Argument[2]", "Argument[*0].Field[*max_chunks]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_bufq_initp", "(bufq *,bufc_pool *,size_t,int)", "", "Argument[*1].Field[*chunk_size]", "Argument[*0].Field[*chunk_size]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_bufq_initp", "(bufq *,bufc_pool *,size_t,int)", "", "Argument[*1]", "Argument[*0].Field[**pool]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_bufq_initp", "(bufq *,bufc_pool *,size_t,int)", "", "Argument[1]", "Argument[*0].Field[*pool]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_bufq_initp", "(bufq *,bufc_pool *,size_t,int)", "", "Argument[2]", "Argument[*0].Field[*max_chunks]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_bufq_initp", "(bufq *,bufc_pool *,size_t,int)", "", "Argument[3]", "Argument[*0].Field[*opts]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_bufq_len", "(const bufq *)", "", "Argument[*0].Field[**head].Field[*r_offset]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_bufq_len", "(const bufq *)", "", "Argument[*0].Field[**head].Field[*w_offset]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_bufq_pass", "(bufq *,Curl_bufq_writer *,void *,CURLcode *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_bufq_peek", "(bufq *,const unsigned char **,size_t *)", "", "Argument[*0]", "Argument[**1]", "taint", "df-generated"]
+ - ["", "", True, "Curl_bufq_peek", "(bufq *,const unsigned char **,size_t *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"]
+ - ["", "", True, "Curl_bufq_peek", "(bufq *,const unsigned char **,size_t *)", "", "Argument[*0]", "Argument[*2]", "taint", "df-generated"]
+ - ["", "", True, "Curl_bufq_peek_at", "(bufq *,size_t,const unsigned char **,size_t *)", "", "Argument[1]", "Argument[**2]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_bufq_peek_at", "(bufq *,size_t,const unsigned char **,size_t *)", "", "Argument[1]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_bufq_peek_at", "(bufq *,size_t,const unsigned char **,size_t *)", "", "Argument[1]", "Argument[*3]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_bufq_read", "(bufq *,unsigned char *,size_t,CURLcode *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_bufq_read", "(bufq *,unsigned char *,size_t,CURLcode *)", "", "Argument[2]", "Argument[*0].Field[**head].Field[*r_offset]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_bufq_read", "(bufq *,unsigned char *,size_t,CURLcode *)", "", "Argument[2]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_bufq_read", "(bufq *,unsigned char *,size_t,CURLcode *)", "", "Argument[2]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_bufq_sipn", "(bufq *,size_t,Curl_bufq_reader *,void *,CURLcode *)", "", "Argument[3]", "Argument[*3].Field[*conn_queue].Field[*_ptr]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_bufq_sipn", "(bufq *,size_t,Curl_bufq_reader *,void *,CURLcode *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_bufq_skip", "(bufq *,size_t)", "", "Argument[1]", "Argument[*0].Field[**head].Field[*r_offset]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_bufq_slurp", "(bufq *,Curl_bufq_reader *,void *,CURLcode *)", "", "Argument[2]", "Argument[*2].Field[*conn_queue].Field[*_ptr]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_bufq_slurp", "(bufq *,Curl_bufq_reader *,void *,CURLcode *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_bufq_unwrite", "(bufq *,size_t)", "", "Argument[1]", "Argument[*0].Field[**tail].Field[*w_offset]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_bufq_write", "(bufq *,const unsigned char *,size_t,CURLcode *)", "", "Argument[2]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_bufq_write_pass", "(bufq *,const unsigned char *,size_t,Curl_bufq_writer *,void *,CURLcode *)", "", "Argument[2]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_bufq_write_pass", "(bufq *,const unsigned char *,size_t,Curl_bufq_writer *,void *,CURLcode *)", "", "Argument[5]", "Argument[*5]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_bufref_len", "(const bufref *)", "", "Argument[*0].Field[*len]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "Curl_bufref_memdup", "(bufref *,const void *,size_t)", "", "Argument[*1]", "Argument[*0].Field[**ptr]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_bufref_memdup", "(bufref *,const void *,size_t)", "", "Argument[1]", "Argument[*0].Field[**ptr]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_bufref_memdup", "(bufref *,const void *,size_t)", "", "Argument[2]", "Argument[*0].Field[*len]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_bufref_ptr", "(const bufref *)", "", "Argument[*0].Field[**ptr]", "ReturnValue[*]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_bufref_ptr", "(const bufref *)", "", "Argument[*0].Field[*ptr]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "Curl_bufref_set", "(bufref *,const void *,size_t,..(*)(..))", "", "Argument[*1]", "Argument[*0].Field[**ptr]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_bufref_set", "(bufref *,const void *,size_t,..(*)(..))", "", "Argument[1]", "Argument[*0].Field[*ptr]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_bufref_set", "(bufref *,const void *,size_t,..(*)(..))", "", "Argument[2]", "Argument[*0].Field[*len]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_bufref_set", "(bufref *,const void *,size_t,..(*)(..))", "", "Argument[3]", "Argument[*0].Field[*dtor]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_bump_headersize", "(Curl_easy *,size_t,bool)", "", "Argument[1]", "Argument[*0].Field[*info].Field[*header_size]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_bump_headersize", "(Curl_easy *,size_t,bool)", "", "Argument[1]", "Argument[*0].Field[*req].Field[*allheadercount]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_bump_headersize", "(Curl_easy *,size_t,bool)", "", "Argument[1]", "Argument[*0].Field[*req].Field[*headerbytecount]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_cache_addr", "(Curl_easy *,Curl_addrinfo *,const char *,size_t,int,bool)", "", "Argument[*2]", "ReturnValue[*].Field[*hostname]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_cache_addr", "(Curl_easy *,Curl_addrinfo *,const char *,size_t,int,bool)", "", "Argument[2]", "ReturnValue[*].Field[*hostname]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_cache_addr", "(Curl_easy *,Curl_addrinfo *,const char *,size_t,int,bool)", "", "Argument[4]", "ReturnValue[*].Field[*hostport]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_cf_create", "(Curl_cfilter **,const Curl_cftype *,void *)", "", "Argument[**2]", "Argument[**0].Field[***ctx]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_cf_create", "(Curl_cfilter **,const Curl_cftype *,void *)", "", "Argument[*1]", "Argument[**0].Field[**cft]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_cf_create", "(Curl_cfilter **,const Curl_cftype *,void *)", "", "Argument[*2]", "Argument[**0].Field[**ctx]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_cf_create", "(Curl_cfilter **,const Curl_cftype *,void *)", "", "Argument[1]", "Argument[**0].Field[*cft]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_cf_create", "(Curl_cfilter **,const Curl_cftype *,void *)", "", "Argument[2]", "Argument[**0].Field[*ctx]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_cf_https_setup", "(Curl_easy *,connectdata *,int,const Curl_dns_entry *)", "", "Argument[1]", "Argument[*1].Field[**cfilter].Field[*conn]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_cf_https_setup", "(Curl_easy *,connectdata *,int,const Curl_dns_entry *)", "", "Argument[2]", "Argument[*1].Field[**cfilter].Field[*next]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_cf_https_setup", "(Curl_easy *,connectdata *,int,const Curl_dns_entry *)", "", "Argument[2]", "Argument[*1].Field[**cfilter].Field[*sockindex]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_cf_socket_peek", "(Curl_cfilter *,Curl_easy *,curl_socket_t *,const Curl_sockaddr_ex **,ip_quadruple *)", "", "Argument[*0]", "Argument[**3]", "taint", "df-generated"]
+ - ["", "", True, "Curl_cf_socket_peek", "(Curl_cfilter *,Curl_easy *,curl_socket_t *,const Curl_sockaddr_ex **,ip_quadruple *)", "", "Argument[*0]", "Argument[*2]", "taint", "df-generated"]
+ - ["", "", True, "Curl_cf_socket_peek", "(Curl_cfilter *,Curl_easy *,curl_socket_t *,const Curl_sockaddr_ex **,ip_quadruple *)", "", "Argument[*0]", "Argument[*4]", "taint", "df-generated"]
+ - ["", "", True, "Curl_cf_tcp_create", "(Curl_cfilter **,Curl_easy *,connectdata *,const Curl_addrinfo *,int)", "", "Argument[4]", "Argument[**0].Field[**ctx].Field[*transport]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_cf_udp_create", "(Curl_cfilter **,Curl_easy *,connectdata *,const Curl_addrinfo *,int)", "", "Argument[4]", "Argument[**0].Field[**ctx].Field[*transport]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_cf_unix_create", "(Curl_cfilter **,Curl_easy *,connectdata *,const Curl_addrinfo *,int)", "", "Argument[4]", "Argument[**0].Field[**ctx].Field[*transport]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_client_read", "(Curl_easy *,char *,size_t,size_t *,bool *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_client_read", "(Curl_easy *,char *,size_t,size_t *,bool *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_close", "(Curl_easy **)", "", "Argument[*0]", "Argument[**0]", "value", "df-generated"]
+ - ["", "", True, "Curl_close", "(Curl_easy **)", "", "Argument[0]", "Argument[**0]", "taint", "df-generated"]
+ - ["", "", True, "Curl_close", "(Curl_easy **)", "", "Argument[0]", "Argument[*0]", "taint", "df-generated"]
+ - ["", "", True, "Curl_conn_cf_add", "(Curl_easy *,connectdata *,int,Curl_cfilter *)", "", "Argument[*3]", "Argument[*1].Field[**cfilter]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_conn_cf_add", "(Curl_easy *,connectdata *,int,Curl_cfilter *)", "", "Argument[1]", "Argument[*1].Field[**cfilter].Field[*conn]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_conn_cf_add", "(Curl_easy *,connectdata *,int,Curl_cfilter *)", "", "Argument[1]", "Argument[*3].Field[*conn]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_conn_cf_add", "(Curl_easy *,connectdata *,int,Curl_cfilter *)", "", "Argument[3]", "Argument[*1].Field[*cfilter]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_conn_cf_adjust_pollset", "(Curl_cfilter *,Curl_easy *,easy_pollset *)", "", "Argument[*0].Field[**next].Field[**next]", "Argument[*0]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_conn_cf_adjust_pollset", "(Curl_cfilter *,Curl_easy *,easy_pollset *)", "", "Argument[*0].Field[**next]", "Argument[*0]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_conn_cf_cntrl", "(Curl_cfilter *,Curl_easy *,bool,int,int,void *)", "", "Argument[*0].Field[**next].Field[**next]", "Argument[*0]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_conn_cf_cntrl", "(Curl_cfilter *,Curl_easy *,bool,int,int,void *)", "", "Argument[*0].Field[**next]", "Argument[*0]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_conn_cf_discard_all", "(Curl_easy *,connectdata *,int)", "", "Argument[2]", "Argument[*1].Field[*cfilter]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_conn_cf_discard_chain", "(Curl_cfilter **,Curl_easy *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_conn_cf_insert_after", "(Curl_cfilter *,Curl_cfilter *)", "", "Argument[1]", "Argument[*0].Field[*next]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_conn_cf_is_ssl", "(Curl_cfilter *)", "", "Argument[*0].Field[**next].Field[**next]", "Argument[*0]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_conn_cf_is_ssl", "(Curl_cfilter *)", "", "Argument[*0].Field[**next]", "Argument[*0]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_conn_cf_poll", "(Curl_cfilter *,Curl_easy *,timediff_t)", "", "Argument[*0].Field[**next].Field[**next]", "Argument[*0]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_conn_cf_poll", "(Curl_cfilter *,Curl_easy *,timediff_t)", "", "Argument[*0].Field[**next]", "Argument[*0]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_conn_connect", "(Curl_easy *,int,bool,bool *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_conn_get_host", "(Curl_easy *,int,const char **,const char **,int *)", "", "Argument[*0].Field[**conn].Field[*remote_port]", "Argument[*4]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_conn_get_socket", "(Curl_easy *,int)", "", "Argument[*0].Field[**conn].Field[*sock]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "Curl_conn_get_socket", "(Curl_easy *,int)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_conn_is_http2", "(const Curl_easy *,const connectdata *,int)", "", "Argument[*1].Field[**cfilter].Field[**next]", "Argument[*1].Field[**cfilter]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_conn_is_ssl", "(connectdata *,int)", "", "Argument[*0].Field[**cfilter].Field[**next]", "Argument[*0].Field[**cfilter]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_conn_seems_dead", "(connectdata *,Curl_easy *,curltime *)", "", "Argument[0]", "Argument[*1].Field[*conn]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_conn_seems_dead", "(connectdata *,Curl_easy *,curltime *)", "", "Argument[1]", "Argument[*1].Field[*conn_queue].Field[*_ptr]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_conn_seems_dead", "(connectdata *,Curl_easy *,curltime *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_conn_setup", "(Curl_easy *,connectdata *,int,const Curl_dns_entry *,int)", "", "Argument[1]", "Argument[*1].Field[**cfilter].Field[*conn]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_conn_setup", "(Curl_easy *,connectdata *,int,const Curl_dns_entry *,int)", "", "Argument[2]", "Argument[*1].Field[**cfilter].Field[*next]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_conn_setup", "(Curl_easy *,connectdata *,int,const Curl_dns_entry *,int)", "", "Argument[2]", "Argument[*1].Field[**cfilter].Field[*sockindex]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_conn_shutdown_timeleft", "(connectdata *,curltime *)", "", "Argument[*0].Field[*shutdown].Field[*timeout_ms]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_conn_shutdown_timeleft", "(connectdata *,curltime *)", "", "Argument[*1].Field[*tv_sec]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_conn_shutdown_timeleft", "(connectdata *,curltime *)", "", "Argument[*1].Field[*tv_usec]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_conn_shutdown_timeleft", "(connectdata *,curltime *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_conn_tcp_listen_set", "(Curl_easy *,connectdata *,int,curl_socket_t *)", "", "Argument[*3]", "Argument[*1].Field[*sock]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_conn_tcp_listen_set", "(Curl_easy *,connectdata *,int,curl_socket_t *)", "", "Argument[1]", "Argument[*1].Field[**cfilter].Field[*conn]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_conn_tcp_listen_set", "(Curl_easy *,connectdata *,int,curl_socket_t *)", "", "Argument[2]", "Argument[*1].Field[**cfilter].Field[*next]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_conn_tcp_listen_set", "(Curl_easy *,connectdata *,int,curl_socket_t *)", "", "Argument[2]", "Argument[*1].Field[**cfilter].Field[*sockindex]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_conn_tcp_listen_set", "(Curl_easy *,connectdata *,int,curl_socket_t *)", "", "Argument[2]", "Argument[*1].Field[*cfilter]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_conn_tcp_listen_set", "(Curl_easy *,connectdata *,int,curl_socket_t *)", "", "Argument[3]", "Argument[*1].Field[*sock]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_conn_tcp_listen_set", "(Curl_easy *,connectdata *,int,curl_socket_t *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_conn_upkeep", "(Curl_easy *,connectdata *,curltime *)", "", "Argument[*2]", "Argument[*1].Field[*keepalive]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_conn_upkeep", "(Curl_easy *,connectdata *,curltime *)", "", "Argument[0]", "Argument[*0].Field[*conn_queue].Field[*_ptr]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_conn_upkeep", "(Curl_easy *,connectdata *,curltime *)", "", "Argument[1]", "Argument[*0].Field[*conn]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_conn_upkeep", "(Curl_easy *,connectdata *,curltime *)", "", "Argument[2]", "Argument[*1].Field[*keepalive]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_conn_upkeep", "(Curl_easy *,connectdata *,curltime *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_connect", "(Curl_easy *,bool *,bool *)", "", "Argument[0]", "Argument[*0].Field[*conn_queue].Field[*_ptr]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_connect", "(Curl_easy *,bool *,bool *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_connect_only_attach", "(Curl_easy *)", "", "Argument[*0]", "Argument[*0].Field[*conn_queue].Field[**_ptr]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_connect_only_attach", "(Curl_easy *)", "", "Argument[0]", "Argument[*0].Field[*conn_queue].Field[*_ptr]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_cookie_add", "(Curl_easy *,CookieInfo *,bool,bool,const char *,const char *,const char *,bool)", "", "Argument[*6]", "ReturnValue[*].Field[**path]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_cookie_add", "(Curl_easy *,CookieInfo *,bool,bool,const char *,const char *,const char *,bool)", "", "Argument[6]", "ReturnValue[*].Field[**path]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_cookie_getlist", "(Curl_easy *,CookieInfo *,const char *,const char *,bool,Curl_llist *)", "", "Argument[*2]", "Argument[*1].Field[*cookielist]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_cookie_getlist", "(Curl_easy *,CookieInfo *,const char *,const char *,bool,Curl_llist *)", "", "Argument[2]", "Argument[*1].Field[*cookielist]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_cookie_getlist", "(Curl_easy *,CookieInfo *,const char *,const char *,bool,Curl_llist *)", "", "Argument[5]", "Argument[*5].Field[**_head].Field[*_list]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_cookie_getlist", "(Curl_easy *,CookieInfo *,const char *,const char *,bool,Curl_llist *)", "", "Argument[5]", "Argument[*5].Field[**_tail].Field[*_list]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_cookie_init", "(Curl_easy *,const char *,CookieInfo *,bool)", "", "Argument[*2]", "ReturnValue[*]", "value", "df-generated"]
+ - ["", "", True, "Curl_cookie_init", "(Curl_easy *,const char *,CookieInfo *,bool)", "", "Argument[2]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "Curl_cookie_init", "(Curl_easy *,const char *,CookieInfo *,bool)", "", "Argument[3]", "Argument[*2].Field[*newsession]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_cookie_init", "(Curl_easy *,const char *,CookieInfo *,bool)", "", "Argument[3]", "ReturnValue[*].Field[*newsession]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_copy_header_value", "(const char *)", "", "Argument[*0]", "ReturnValue[*]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_copy_header_value", "(const char *)", "", "Argument[0]", "ReturnValue[*]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_cpool_add_conn", "(Curl_easy *,connectdata *)", "", "Argument[1]", "Argument[*1].Field[*cpool_node].Field[*_ptr]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_cpool_check_limits", "(Curl_easy *,connectdata *)", "", "Argument[0]", "Argument[*0].Field[*conn_queue].Field[*_ptr]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_cpool_disconnect", "(Curl_easy *,connectdata *,bool)", "", "Argument[0]", "Argument[*0].Field[*conn_queue].Field[*_ptr]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_cpool_disconnect", "(Curl_easy *,connectdata *,bool)", "", "Argument[1]", "Argument[*0].Field[*conn]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_cpool_disconnect", "(Curl_easy *,connectdata *,bool)", "", "Argument[1]", "Argument[*1].Field[*cpool_node].Field[*_ptr]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_cpool_do_locked", "(Curl_easy *,connectdata *,Curl_cpool_conn_do_cb *,void *)", "", "Argument[0]", "Argument[*0].Field[*conn_queue].Field[*_ptr]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_cpool_do_locked", "(Curl_easy *,connectdata *,Curl_cpool_conn_do_cb *,void *)", "", "Argument[1]", "Argument[*0].Field[*conn]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_cpool_do_locked", "(Curl_easy *,connectdata *,Curl_cpool_conn_do_cb *,void *)", "", "Argument[1]", "Argument[*1].Field[*cpool_node].Field[*_ptr]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_cpool_init", "(cpool *,Curl_cpool_disconnect_cb *,Curl_multi *,Curl_share *,size_t)", "", "Argument[*2]", "Argument[*0].Field[**idata].Field[**multi]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_cpool_init", "(cpool *,Curl_cpool_disconnect_cb *,Curl_multi *,Curl_share *,size_t)", "", "Argument[*2]", "Argument[*0].Field[**multi]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_cpool_init", "(cpool *,Curl_cpool_disconnect_cb *,Curl_multi *,Curl_share *,size_t)", "", "Argument[*3]", "Argument[*0].Field[**share]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_cpool_init", "(cpool *,Curl_cpool_disconnect_cb *,Curl_multi *,Curl_share *,size_t)", "", "Argument[1]", "Argument[*0].Field[*disconnect_cb]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_cpool_init", "(cpool *,Curl_cpool_disconnect_cb *,Curl_multi *,Curl_share *,size_t)", "", "Argument[2]", "Argument[*0].Field[**idata].Field[*multi]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_cpool_init", "(cpool *,Curl_cpool_disconnect_cb *,Curl_multi *,Curl_share *,size_t)", "", "Argument[2]", "Argument[*0].Field[*multi]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_cpool_init", "(cpool *,Curl_cpool_disconnect_cb *,Curl_multi *,Curl_share *,size_t)", "", "Argument[3]", "Argument[*0].Field[*share]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_cpool_init", "(cpool *,Curl_cpool_disconnect_cb *,Curl_multi *,Curl_share *,size_t)", "", "Argument[4]", "Argument[*0].Field[*dest2bundle].Field[*slots]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_cpool_prune_dead", "(Curl_easy *)", "", "Argument[0]", "Argument[*0].Field[*conn_queue].Field[*_ptr]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_cpool_setfds", "(cpool *,fd_set *,fd_set *,int *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_cpool_upkeep", "(void *)", "", "Argument[*0]", "Argument[*0].Field[*conn_queue].Field[**_ptr]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_cpool_upkeep", "(void *)", "", "Argument[0]", "Argument[*0].Field[*conn_queue].Field[*_ptr]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_creader_add", "(Curl_easy *,Curl_creader *)", "", "Argument[*0].Field[*req].Field[**reader_stack]", "Argument[*1].Field[**next]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_creader_add", "(Curl_easy *,Curl_creader *)", "", "Argument[*0].Field[*req].Field[*reader_stack]", "Argument[*1].Field[*next]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_creader_create", "(Curl_creader **,Curl_easy *,const Curl_crtype *,Curl_creader_phase)", "", "Argument[*2]", "Argument[**0].Field[**crt]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_creader_create", "(Curl_creader **,Curl_easy *,const Curl_crtype *,Curl_creader_phase)", "", "Argument[2]", "Argument[**0].Field[*crt]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_creader_create", "(Curl_creader **,Curl_easy *,const Curl_crtype *,Curl_creader_phase)", "", "Argument[3]", "Argument[**0].Field[*phase]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_creader_get_by_type", "(Curl_easy *,const Curl_crtype *)", "", "Argument[*0].Field[*req].Field[**reader_stack]", "ReturnValue[*]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_creader_get_by_type", "(Curl_easy *,const Curl_crtype *)", "", "Argument[*0].Field[*req].Field[*reader_stack]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "Curl_creader_set", "(Curl_easy *,Curl_creader *)", "", "Argument[1]", "Argument[*0].Field[*req].Field[*reader_stack]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_creader_set_rewind", "(Curl_easy *,bool)", "", "Argument[1]", "Argument[*0].Field[*req].Field[*rewind_read]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_creader_will_rewind", "(Curl_easy *)", "", "Argument[*0].Field[*req].Field[*rewind_read]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_cwriter_add", "(Curl_easy *,Curl_cwriter *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"]
+ - ["", "", True, "Curl_cwriter_create", "(Curl_cwriter **,Curl_easy *,const Curl_cwtype *,Curl_cwriter_phase)", "", "Argument[*2]", "Argument[**0].Field[**cwt]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_cwriter_create", "(Curl_cwriter **,Curl_easy *,const Curl_cwtype *,Curl_cwriter_phase)", "", "Argument[2]", "Argument[**0].Field[*cwt]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_cwriter_create", "(Curl_cwriter **,Curl_easy *,const Curl_cwtype *,Curl_cwriter_phase)", "", "Argument[3]", "Argument[**0].Field[*phase]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_cwriter_get_by_name", "(Curl_easy *,const char *)", "", "Argument[*0].Field[*req].Field[**writer_stack]", "ReturnValue[*]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_cwriter_get_by_name", "(Curl_easy *,const char *)", "", "Argument[*0].Field[*req].Field[*writer_stack]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "Curl_cwriter_get_by_type", "(Curl_easy *,const Curl_cwtype *)", "", "Argument[*0].Field[*req].Field[**writer_stack]", "ReturnValue[*]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_cwriter_get_by_type", "(Curl_easy *,const Curl_cwtype *)", "", "Argument[*0].Field[*req].Field[*writer_stack]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "Curl_dyn_add", "(dynbuf *,const char *)", "", "Argument[*1]", "Argument[*0].Field[**bufr]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_dyn_add", "(dynbuf *,const char *)", "", "Argument[1]", "Argument[*0].Field[**bufr]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_dyn_addn", "(dynbuf *,const void *,size_t)", "", "Argument[*1]", "Argument[*0].Field[**bufr]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_dyn_addn", "(dynbuf *,const void *,size_t)", "", "Argument[1]", "Argument[*0].Field[**bufr]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_dyn_addn", "(dynbuf *,const void *,size_t)", "", "Argument[2]", "Argument[*0].Field[*allc]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_dyn_addn", "(dynbuf *,const void *,size_t)", "", "Argument[2]", "Argument[*0].Field[*leng]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_dyn_free", "(dynbuf *)", "", "Argument[*0].Field[*allc]", "Argument[*0].Field[*leng]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_dyn_init", "(dynbuf *,size_t)", "", "Argument[1]", "Argument[*0].Field[*toobig]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_dyn_len", "(const dynbuf *)", "", "Argument[*0].Field[*leng]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "Curl_dyn_ptr", "(const dynbuf *)", "", "Argument[*0].Field[**bufr]", "ReturnValue[*]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_dyn_ptr", "(const dynbuf *)", "", "Argument[*0].Field[*bufr]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "Curl_dyn_setlen", "(dynbuf *,size_t)", "", "Argument[1]", "Argument[*0].Field[*leng]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_dyn_tail", "(dynbuf *,size_t)", "", "Argument[1]", "Argument[*0].Field[**bufr]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_dyn_tail", "(dynbuf *,size_t)", "", "Argument[1]", "Argument[*0].Field[*leng]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_dyn_take", "(dynbuf *,size_t *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"]
+ - ["", "", True, "Curl_dyn_take", "(dynbuf *,size_t *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "Curl_dyn_take", "(dynbuf *,size_t *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"]
+ - ["", "", True, "Curl_dyn_uptr", "(const dynbuf *)", "", "Argument[*0].Field[**bufr]", "ReturnValue[*]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_dyn_uptr", "(const dynbuf *)", "", "Argument[*0].Field[*bufr]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "Curl_dyn_vaddf", "(dynbuf *,const char *,va_list)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_dyn_vprintf", "(dynbuf *,const char *,va_list)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_dynhds_add", "(dynhds *,const char *,size_t,const char *,size_t)", "", "Argument[*1]", "Argument[*0].Field[***hds].Field[**value]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_dynhds_add", "(dynhds *,const char *,size_t,const char *,size_t)", "", "Argument[1]", "Argument[*0].Field[***hds].Field[**value]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_dynhds_add", "(dynhds *,const char *,size_t,const char *,size_t)", "", "Argument[4]", "Argument[*0].Field[***hds].Field[*valuelen]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_dynhds_add", "(dynhds *,const char *,size_t,const char *,size_t)", "", "Argument[4]", "Argument[*0].Field[*strs_len]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_dynhds_cadd", "(dynhds *,const char *,const char *)", "", "Argument[*1]", "Argument[*0].Field[***hds].Field[**value]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_dynhds_cadd", "(dynhds *,const char *,const char *)", "", "Argument[1]", "Argument[*0].Field[***hds].Field[**value]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_dynhds_cget", "(dynhds *,const char *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "Curl_dynhds_cget", "(dynhds *,const char *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"]
+ - ["", "", True, "Curl_dynhds_count", "(dynhds *)", "", "Argument[*0].Field[*hds_len]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "Curl_dynhds_get", "(dynhds *,const char *,size_t)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "Curl_dynhds_get", "(dynhds *,const char *,size_t)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"]
+ - ["", "", True, "Curl_dynhds_getn", "(dynhds *,size_t)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_dynhds_h1_add_line", "(dynhds *,const char *,size_t)", "", "Argument[*1]", "Argument[*0]", "taint", "df-generated"]
+ - ["", "", True, "Curl_dynhds_h1_add_line", "(dynhds *,const char *,size_t)", "", "Argument[1]", "Argument[*0]", "taint", "df-generated"]
+ - ["", "", True, "Curl_dynhds_h1_add_line", "(dynhds *,const char *,size_t)", "", "Argument[2]", "Argument[*0]", "taint", "df-generated"]
+ - ["", "", True, "Curl_dynhds_h1_cadd_line", "(dynhds *,const char *)", "", "Argument[*1]", "Argument[*0]", "taint", "df-generated"]
+ - ["", "", True, "Curl_dynhds_h1_cadd_line", "(dynhds *,const char *)", "", "Argument[1]", "Argument[*0]", "taint", "df-generated"]
+ - ["", "", True, "Curl_dynhds_init", "(dynhds *,size_t,size_t)", "", "Argument[*0].Field[*hds_allc]", "Argument[*0].Field[*hds_len]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_dynhds_init", "(dynhds *,size_t,size_t)", "", "Argument[*0].Field[*strs_len]", "Argument[*0].Field[*hds_allc]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_dynhds_init", "(dynhds *,size_t,size_t)", "", "Argument[1]", "Argument[*0].Field[*max_entries]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_dynhds_init", "(dynhds *,size_t,size_t)", "", "Argument[2]", "Argument[*0].Field[*max_strs_size]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_dynhds_set_opts", "(dynhds *,int)", "", "Argument[1]", "Argument[*0].Field[*opts]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_dynhds_to_nva", "(dynhds *,size_t *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"]
+ - ["", "", True, "Curl_dynhds_to_nva", "(dynhds *,size_t *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"]
+ - ["", "", True, "Curl_eventfd", "(curl_socket_t[2],bool)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_fileinfo_cleanup", "(fileinfo *)", "", "Argument[*0].Field[*buf].Field[*allc]", "Argument[*0].Field[*buf].Field[*leng]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_fopen", "(Curl_easy *,const char *,FILE **,char **)", "", "Argument[*1]", "Argument[**2]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_fopen", "(Curl_easy *,const char *,FILE **,char **)", "", "Argument[1]", "Argument[**2]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_fopen", "(Curl_easy *,const char *,FILE **,char **)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_ftp_parselist", "(char *,size_t,size_t,void *)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_ftp_parselist", "(char *,size_t,size_t,void *)", "", "Argument[2]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_ftp_parselist_data_free", "(ftp_parselist_data **)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_ftp_parselist_geterror", "(ftp_parselist_data *)", "", "Argument[*0].Field[*error]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "Curl_get_line", "(dynbuf *,FILE *)", "", "Argument[1]", "Argument[*0].Field[**bufr]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_get_pathname", "(const char **,char **,const char *)", "", "Argument[**0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_get_pathname", "(const char **,char **,const char *)", "", "Argument[*0]", "Argument[**0]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_get_pathname", "(const char **,char **,const char *)", "", "Argument[0]", "Argument[**0]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_get_pathname", "(const char **,char **,const char *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_get_scheme_handler", "(const char *)", "", "Argument[*0]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_get_scheme_handler", "(const char *)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_getdate_capped", "(const char *)", "", "Argument[*0]", "Argument[0]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_getdate_capped", "(const char *)", "", "Argument[*0]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_getdate_capped", "(const char *)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_getformdata", "(CURL *,curl_mimepart *,curl_httppost *,curl_read_callback)", "", "Argument[1]", "Argument[*1].Field[**arg].Field[*arg]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_getformdata", "(CURL *,curl_mimepart *,curl_httppost *,curl_read_callback)", "", "Argument[1]", "Argument[*1].Field[**arg].Field[*parent]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_getformdata", "(CURL *,curl_mimepart *,curl_httppost *,curl_read_callback)", "", "Argument[1]", "Argument[*1].Field[*arg]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_getn_scheme_handler", "(const char *,size_t)", "", "Argument[*0]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_getn_scheme_handler", "(const char *,size_t)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_h1_req_parse_init", "(h1_req_parser *,size_t)", "", "Argument[1]", "Argument[*0].Field[*max_line_len]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_h1_req_parse_init", "(h1_req_parser *,size_t)", "", "Argument[1]", "Argument[*0].Field[*scratch].Field[*toobig]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_h1_req_parse_read", "(h1_req_parser *,const char *,size_t,const char *,int,CURLcode *)", "", "Argument[*3]", "Argument[*0].Field[**req].Field[**scheme]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_h1_req_parse_read", "(h1_req_parser *,const char *,size_t,const char *,int,CURLcode *)", "", "Argument[3]", "Argument[*0].Field[**req].Field[**scheme]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_h1_req_parse_read", "(h1_req_parser *,const char *,size_t,const char *,int,CURLcode *)", "", "Argument[5]", "Argument[*5]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_hash_add2", "(Curl_hash *,void *,size_t,void *,Curl_hash_elem_dtor)", "", "Argument[**3]", "ReturnValue[**]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_hash_add2", "(Curl_hash *,void *,size_t,void *,Curl_hash_elem_dtor)", "", "Argument[*1]", "Argument[**1]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_hash_add2", "(Curl_hash *,void *,size_t,void *,Curl_hash_elem_dtor)", "", "Argument[*3]", "ReturnValue[*]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_hash_add2", "(Curl_hash *,void *,size_t,void *,Curl_hash_elem_dtor)", "", "Argument[1]", "Argument[**1]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_hash_add2", "(Curl_hash *,void *,size_t,void *,Curl_hash_elem_dtor)", "", "Argument[3]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "Curl_hash_add", "(Curl_hash *,void *,size_t,void *)", "", "Argument[**3]", "ReturnValue[**]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_hash_add", "(Curl_hash *,void *,size_t,void *)", "", "Argument[*1]", "Argument[**1]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_hash_add", "(Curl_hash *,void *,size_t,void *)", "", "Argument[*3]", "ReturnValue[*]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_hash_add", "(Curl_hash *,void *,size_t,void *)", "", "Argument[1]", "Argument[**1]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_hash_add", "(Curl_hash *,void *,size_t,void *)", "", "Argument[3]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "Curl_hash_clean_with_criterium", "(Curl_hash *,void *,..(*)(..))", "", "Argument[*1].Field[*now]", "Argument[*1].Field[*oldest]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_hash_count", "(Curl_hash *)", "", "Argument[*0].Field[*size]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "Curl_hash_init", "(Curl_hash *,size_t,hash_function,comp_function,Curl_hash_dtor)", "", "Argument[1]", "Argument[*0].Field[*slots]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_hash_init", "(Curl_hash *,size_t,hash_function,comp_function,Curl_hash_dtor)", "", "Argument[2]", "Argument[*0].Field[*hash_func]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_hash_init", "(Curl_hash *,size_t,hash_function,comp_function,Curl_hash_dtor)", "", "Argument[3]", "Argument[*0].Field[*comp_func]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_hash_init", "(Curl_hash *,size_t,hash_function,comp_function,Curl_hash_dtor)", "", "Argument[4]", "Argument[*0].Field[*dtor]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_hash_next_element", "(Curl_hash_iterator *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "Curl_hash_next_element", "(Curl_hash_iterator *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"]
+ - ["", "", True, "Curl_hash_offt_init", "(Curl_hash *,size_t,Curl_hash_dtor)", "", "Argument[1]", "Argument[*0].Field[*slots]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_hash_offt_init", "(Curl_hash *,size_t,Curl_hash_dtor)", "", "Argument[2]", "Argument[*0].Field[*dtor]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_hash_offt_set", "(Curl_hash *,curl_off_t,void *)", "", "Argument[**2]", "ReturnValue[**]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_hash_offt_set", "(Curl_hash *,curl_off_t,void *)", "", "Argument[*2]", "ReturnValue[*]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_hash_offt_set", "(Curl_hash *,curl_off_t,void *)", "", "Argument[2]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "Curl_hash_start_iterate", "(Curl_hash *,Curl_hash_iterator *)", "", "Argument[*0]", "Argument[*1].Field[**hash]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_hash_start_iterate", "(Curl_hash *,Curl_hash_iterator *)", "", "Argument[0]", "Argument[*1].Field[*hash]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_hash_str", "(void *,size_t,size_t)", "", "Argument[*0]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_hash_str", "(void *,size_t,size_t)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_hash_str", "(void *,size_t,size_t)", "", "Argument[2]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_hexencode", "(const unsigned char *,size_t,unsigned char *,size_t)", "", "Argument[*0]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_hexencode", "(const unsigned char *,size_t,unsigned char *,size_t)", "", "Argument[0]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_hexencode", "(const unsigned char *,size_t,unsigned char *,size_t)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_hmacit", "(const HMAC_params *,const unsigned char *,const size_t,const unsigned char *,const size_t,unsigned char *)", "", "Argument[*0].Field[*ctxtsize]", "Argument[*5]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_hmacit", "(const HMAC_params *,const unsigned char *,const size_t,const unsigned char *,const size_t,unsigned char *)", "", "Argument[*0]", "Argument[*5].Field[**hash]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_hmacit", "(const HMAC_params *,const unsigned char *,const size_t,const unsigned char *,const size_t,unsigned char *)", "", "Argument[0]", "Argument[*5].Field[*hash]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_hsts_cleanup", "(hsts **)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_http2_may_switch", "(Curl_easy *,connectdata *,int)", "", "Argument[*1].Field[**cfilter].Field[**next]", "Argument[*1].Field[**cfilter]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_http2_request_upgrade", "(dynbuf *,Curl_easy *)", "", "Argument[*0].Field[*allc]", "Argument[*0].Field[*leng]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_http2_switch", "(Curl_easy *,connectdata *,int)", "", "Argument[1]", "Argument[*1].Field[**cfilter].Field[*conn]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_http2_switch", "(Curl_easy *,connectdata *,int)", "", "Argument[2]", "Argument[*1].Field[**cfilter].Field[*next]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_http2_switch", "(Curl_easy *,connectdata *,int)", "", "Argument[2]", "Argument[*1].Field[**cfilter].Field[*sockindex]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_http2_upgrade", "(Curl_easy *,connectdata *,int,const char *,size_t)", "", "Argument[1]", "Argument[*1].Field[**cfilter].Field[*conn]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_http2_upgrade", "(Curl_easy *,connectdata *,int,const char *,size_t)", "", "Argument[2]", "Argument[*1].Field[**cfilter].Field[*next]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_http2_upgrade", "(Curl_easy *,connectdata *,int,const char *,size_t)", "", "Argument[2]", "Argument[*1].Field[**cfilter].Field[*sockindex]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_http", "(Curl_easy *,bool *)", "", "Argument[0]", "Argument[*0].Field[*conn_queue].Field[*_ptr]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_http_connect", "(Curl_easy *,bool *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_http_decode_status", "(int *,const char *,size_t)", "", "Argument[*1]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_http_decode_status", "(int *,const char *,size_t)", "", "Argument[1]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_http_done", "(Curl_easy *,CURLcode,bool)", "", "Argument[1]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "Curl_http_getsock_do", "(Curl_easy *,connectdata *,curl_socket_t *)", "", "Argument[*0].Field[**conn].Field[*sock]", "Argument[*2]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_http_method", "(Curl_easy *,connectdata *,const char **,Curl_HttpReq *)", "", "Argument[*0]", "Argument[**2]", "taint", "df-generated"]
+ - ["", "", True, "Curl_http_method", "(Curl_easy *,connectdata *,const char **,Curl_HttpReq *)", "", "Argument[*0]", "Argument[*2]", "taint", "df-generated"]
+ - ["", "", True, "Curl_http_method", "(Curl_easy *,connectdata *,const char **,Curl_HttpReq *)", "", "Argument[*0]", "Argument[*3]", "taint", "df-generated"]
+ - ["", "", True, "Curl_http_proxy_get_destination", "(Curl_cfilter *,const char **,int *,bool *)", "", "Argument[*1]", "Argument[*3]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_http_proxy_get_destination", "(Curl_cfilter *,const char **,int *,bool *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_http_proxy_get_destination", "(Curl_cfilter *,const char **,int *,bool *)", "", "Argument[1]", "Argument[*3]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_http_req_make2", "(httpreq **,const char *,size_t,CURLU *,const char *)", "", "Argument[*1]", "Argument[**0].Field[*method]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_http_req_make2", "(httpreq **,const char *,size_t,CURLU *,const char *)", "", "Argument[1]", "Argument[**0].Field[*method]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_http_req_make", "(httpreq **,const char *,size_t,const char *,size_t,const char *,size_t,const char *,size_t)", "", "Argument[*1]", "Argument[**0].Field[*method]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_http_req_make", "(httpreq **,const char *,size_t,const char *,size_t,const char *,size_t,const char *,size_t)", "", "Argument[*3]", "Argument[**0].Field[**scheme]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_http_req_make", "(httpreq **,const char *,size_t,const char *,size_t,const char *,size_t,const char *,size_t)", "", "Argument[*5]", "Argument[**0].Field[**authority]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_http_req_make", "(httpreq **,const char *,size_t,const char *,size_t,const char *,size_t,const char *,size_t)", "", "Argument[*7]", "Argument[**0].Field[**path]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_http_req_make", "(httpreq **,const char *,size_t,const char *,size_t,const char *,size_t,const char *,size_t)", "", "Argument[1]", "Argument[**0].Field[*method]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_http_req_make", "(httpreq **,const char *,size_t,const char *,size_t,const char *,size_t,const char *,size_t)", "", "Argument[3]", "Argument[**0].Field[**scheme]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_http_req_make", "(httpreq **,const char *,size_t,const char *,size_t,const char *,size_t,const char *,size_t)", "", "Argument[5]", "Argument[**0].Field[**authority]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_http_req_make", "(httpreq **,const char *,size_t,const char *,size_t,const char *,size_t,const char *,size_t)", "", "Argument[7]", "Argument[**0].Field[**path]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_http_resp_make", "(http_resp **,int,const char *)", "", "Argument[1]", "Argument[**0].Field[*status]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_http_write_resp_hd", "(Curl_easy *,const char *,size_t,bool)", "", "Argument[2]", "Argument[*0].Field[*info].Field[*header_size]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_http_write_resp_hd", "(Curl_easy *,const char *,size_t,bool)", "", "Argument[2]", "Argument[*0].Field[*req].Field[*allheadercount]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_http_write_resp_hd", "(Curl_easy *,const char *,size_t,bool)", "", "Argument[2]", "Argument[*0].Field[*req].Field[*headerbytecount]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_http_write_resp_hds", "(Curl_easy *,const char *,size_t,size_t *)", "", "Argument[*1]", "Argument[*3]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_http_write_resp_hds", "(Curl_easy *,const char *,size_t,size_t *)", "", "Argument[1]", "Argument[*3]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_http_write_resp_hds", "(Curl_easy *,const char *,size_t,size_t *)", "", "Argument[2]", "Argument[*3]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_http_write_resp_hds", "(Curl_easy *,const char *,size_t,size_t *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_httpchunk_free", "(Curl_easy *,Curl_chunker *)", "", "Argument[*1].Field[*trailer].Field[*allc]", "Argument[*1].Field[*trailer].Field[*leng]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_httpchunk_init", "(Curl_easy *,Curl_chunker *,bool)", "", "Argument[2]", "Argument[*1].Field[*ignore_body]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_httpchunk_read", "(Curl_easy *,Curl_chunker *,char *,size_t,size_t *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_httpchunk_reset", "(Curl_easy *,Curl_chunker *,bool)", "", "Argument[2]", "Argument[*1].Field[*ignore_body]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_init_dnscache", "(Curl_hash *,size_t)", "", "Argument[1]", "Argument[*0].Field[*slots]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_init_userdefined", "(Curl_easy *)", "", "Argument[*0].Field[*set].Field[*ssl]", "Argument[*0].Field[*set].Field[*proxy_ssl]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_ip2addr", "(int,const void *,const char *,int)", "", "Argument[*1]", "Argument[**1]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_ip2addr", "(int,const void *,const char *,int)", "", "Argument[*2]", "ReturnValue[*].Field[**ai_canonname]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_ip2addr", "(int,const void *,const char *,int)", "", "Argument[0]", "ReturnValue[*].Field[*ai_family]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_ip2addr", "(int,const void *,const char *,int)", "", "Argument[1]", "Argument[**1]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_ip2addr", "(int,const void *,const char *,int)", "", "Argument[2]", "ReturnValue[*].Field[**ai_canonname]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_is_absolute_url", "(const char *,char *,size_t,bool)", "", "Argument[*0]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_is_absolute_url", "(const char *,char *,size_t,bool)", "", "Argument[0]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_is_absolute_url", "(const char *,char *,size_t,bool)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_llist_append", "(Curl_llist *,const void *,Curl_llist_node *)", "", "Argument[**1]", "Argument[*0].Field[**_head].Field[***_ptr]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_llist_append", "(Curl_llist *,const void *,Curl_llist_node *)", "", "Argument[**1]", "Argument[*0].Field[**_tail].Field[***_ptr]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_llist_append", "(Curl_llist *,const void *,Curl_llist_node *)", "", "Argument[**1]", "Argument[*2].Field[***_ptr]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_llist_append", "(Curl_llist *,const void *,Curl_llist_node *)", "", "Argument[*1]", "Argument[*0].Field[**_head].Field[**_ptr]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_llist_append", "(Curl_llist *,const void *,Curl_llist_node *)", "", "Argument[*1]", "Argument[*0].Field[**_tail].Field[**_ptr]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_llist_append", "(Curl_llist *,const void *,Curl_llist_node *)", "", "Argument[*1]", "Argument[*2].Field[**_ptr]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_llist_append", "(Curl_llist *,const void *,Curl_llist_node *)", "", "Argument[0]", "Argument[*0].Field[**_head].Field[*_list]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_llist_append", "(Curl_llist *,const void *,Curl_llist_node *)", "", "Argument[0]", "Argument[*0].Field[**_tail].Field[*_list]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_llist_append", "(Curl_llist *,const void *,Curl_llist_node *)", "", "Argument[0]", "Argument[*2].Field[*_list]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_llist_append", "(Curl_llist *,const void *,Curl_llist_node *)", "", "Argument[1]", "Argument[*0].Field[**_head].Field[*_ptr]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_llist_append", "(Curl_llist *,const void *,Curl_llist_node *)", "", "Argument[1]", "Argument[*0].Field[**_tail].Field[*_ptr]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_llist_append", "(Curl_llist *,const void *,Curl_llist_node *)", "", "Argument[1]", "Argument[*2].Field[*_ptr]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_llist_count", "(Curl_llist *)", "", "Argument[*0].Field[*_size]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "Curl_llist_head", "(Curl_llist *)", "", "Argument[*0].Field[**_head]", "ReturnValue[*]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_llist_head", "(Curl_llist *)", "", "Argument[*0].Field[*_head]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "Curl_llist_init", "(Curl_llist *,Curl_llist_dtor)", "", "Argument[1]", "Argument[*0].Field[*_dtor]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_llist_insert_next", "(Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *)", "", "Argument[**2]", "Argument[*0]", "taint", "df-generated"]
+ - ["", "", True, "Curl_llist_insert_next", "(Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *)", "", "Argument[**2]", "Argument[*1]", "taint", "df-generated"]
+ - ["", "", True, "Curl_llist_insert_next", "(Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *)", "", "Argument[**2]", "Argument[*3]", "taint", "df-generated"]
+ - ["", "", True, "Curl_llist_insert_next", "(Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"]
+ - ["", "", True, "Curl_llist_insert_next", "(Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *)", "", "Argument[*0]", "Argument[*3]", "taint", "df-generated"]
+ - ["", "", True, "Curl_llist_insert_next", "(Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *)", "", "Argument[*1]", "Argument[*0]", "taint", "df-generated"]
+ - ["", "", True, "Curl_llist_insert_next", "(Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *)", "", "Argument[*1]", "Argument[*3]", "taint", "df-generated"]
+ - ["", "", True, "Curl_llist_insert_next", "(Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *)", "", "Argument[*2]", "Argument[*0]", "taint", "df-generated"]
+ - ["", "", True, "Curl_llist_insert_next", "(Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *)", "", "Argument[*2]", "Argument[*1]", "taint", "df-generated"]
+ - ["", "", True, "Curl_llist_insert_next", "(Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *)", "", "Argument[*2]", "Argument[*3]", "taint", "df-generated"]
+ - ["", "", True, "Curl_llist_insert_next", "(Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *)", "", "Argument[*3]", "Argument[*0]", "taint", "df-generated"]
+ - ["", "", True, "Curl_llist_insert_next", "(Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *)", "", "Argument[*3]", "Argument[*1]", "taint", "df-generated"]
+ - ["", "", True, "Curl_llist_insert_next", "(Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *)", "", "Argument[0]", "Argument[*0]", "taint", "df-generated"]
+ - ["", "", True, "Curl_llist_insert_next", "(Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *)", "", "Argument[0]", "Argument[*1]", "taint", "df-generated"]
+ - ["", "", True, "Curl_llist_insert_next", "(Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *)", "", "Argument[0]", "Argument[*3]", "taint", "df-generated"]
+ - ["", "", True, "Curl_llist_insert_next", "(Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *)", "", "Argument[1]", "Argument[*0]", "taint", "df-generated"]
+ - ["", "", True, "Curl_llist_insert_next", "(Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *)", "", "Argument[1]", "Argument[*1]", "taint", "df-generated"]
+ - ["", "", True, "Curl_llist_insert_next", "(Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *)", "", "Argument[1]", "Argument[*3]", "taint", "df-generated"]
+ - ["", "", True, "Curl_llist_insert_next", "(Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *)", "", "Argument[2]", "Argument[*0]", "taint", "df-generated"]
+ - ["", "", True, "Curl_llist_insert_next", "(Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *)", "", "Argument[2]", "Argument[*1]", "taint", "df-generated"]
+ - ["", "", True, "Curl_llist_insert_next", "(Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *)", "", "Argument[2]", "Argument[*3]", "taint", "df-generated"]
+ - ["", "", True, "Curl_llist_insert_next", "(Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *)", "", "Argument[3]", "Argument[*0]", "taint", "df-generated"]
+ - ["", "", True, "Curl_llist_insert_next", "(Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *)", "", "Argument[3]", "Argument[*1]", "taint", "df-generated"]
+ - ["", "", True, "Curl_memdup0", "(const char *,size_t)", "", "Argument[*0]", "ReturnValue[*]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_memdup0", "(const char *,size_t)", "", "Argument[0]", "ReturnValue[*]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_memdup", "(const void *,size_t)", "", "Argument[**0]", "ReturnValue[*]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_memdup", "(const void *,size_t)", "", "Argument[*0]", "Argument[**0]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_memdup", "(const void *,size_t)", "", "Argument[*0]", "ReturnValue[*]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_memdup", "(const void *,size_t)", "", "Argument[0]", "Argument[**0]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_memdup", "(const void *,size_t)", "", "Argument[0]", "ReturnValue[*]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_mime_cleanpart", "(curl_mimepart *)", "", "Argument[0]", "Argument[*0].Field[**arg].Field[*arg]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_mime_cleanpart", "(curl_mimepart *)", "", "Argument[0]", "Argument[*0].Field[*arg]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_mime_duppart", "(Curl_easy *,curl_mimepart *,const curl_mimepart *)", "", "Argument[1]", "Argument[*1].Field[**arg].Field[*arg]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_mime_duppart", "(Curl_easy *,curl_mimepart *,const curl_mimepart *)", "", "Argument[1]", "Argument[*1].Field[**arg].Field[*parent]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_mime_duppart", "(Curl_easy *,curl_mimepart *,const curl_mimepart *)", "", "Argument[1]", "Argument[*1].Field[*arg]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_mime_read", "(char *,size_t,size_t,void *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_mime_set_subparts", "(curl_mimepart *,curl_mime *,int)", "", "Argument[1]", "Argument[*0].Field[*arg]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_multi_add_perform", "(Curl_multi *,Curl_easy *,connectdata *)", "", "Argument[0]", "Argument[*1].Field[*multi]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_multi_add_perform", "(Curl_multi *,Curl_easy *,connectdata *)", "", "Argument[1]", "Argument[*1].Field[*conn_queue].Field[*_ptr]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_multi_add_perform", "(Curl_multi *,Curl_easy *,connectdata *)", "", "Argument[1]", "Argument[*1].Field[*multi_queue].Field[*_ptr]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_multi_add_perform", "(Curl_multi *,Curl_easy *,connectdata *)", "", "Argument[2]", "Argument[*1].Field[*conn]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_multi_handle", "(size_t,size_t,size_t,size_t)", "", "Argument[0]", "ReturnValue[*].Field[*sockhash].Field[*slots]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_multi_handle", "(size_t,size_t,size_t,size_t)", "", "Argument[2]", "ReturnValue[*].Field[*hostcache].Field[*slots]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_multi_handle", "(size_t,size_t,size_t,size_t)", "", "Argument[3]", "ReturnValue[*].Field[**ssl_scache].Field[*peer_count]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_multi_max_concurrent_streams", "(Curl_multi *)", "", "Argument[*0].Field[*max_concurrent_streams]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "Curl_multi_pollset_ev", "(Curl_multi *,Curl_easy *,easy_pollset *,easy_pollset *)", "", "Argument[1]", "Argument[*1]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_multi_xfer_buf_borrow", "(Curl_easy *,char **,size_t *)", "", "Argument[*0]", "Argument[**1]", "taint", "df-generated"]
+ - ["", "", True, "Curl_multi_xfer_buf_borrow", "(Curl_easy *,char **,size_t *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"]
+ - ["", "", True, "Curl_multi_xfer_buf_borrow", "(Curl_easy *,char **,size_t *)", "", "Argument[*0]", "Argument[*2]", "taint", "df-generated"]
+ - ["", "", True, "Curl_multi_xfer_sockbuf_borrow", "(Curl_easy *,size_t,char **)", "", "Argument[*0].Field[**multi].Field[**xfer_sockbuf]", "Argument[**2]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_multi_xfer_sockbuf_borrow", "(Curl_easy *,size_t,char **)", "", "Argument[*0].Field[**multi].Field[*xfer_sockbuf]", "Argument[*2]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_multi_xfer_sockbuf_borrow", "(Curl_easy *,size_t,char **)", "", "Argument[1]", "Argument[*0].Field[**multi].Field[*xfer_sockbuf_len]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_multi_xfer_ulbuf_borrow", "(Curl_easy *,char **,size_t *)", "", "Argument[*0]", "Argument[**1]", "taint", "df-generated"]
+ - ["", "", True, "Curl_multi_xfer_ulbuf_borrow", "(Curl_easy *,char **,size_t *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"]
+ - ["", "", True, "Curl_multi_xfer_ulbuf_borrow", "(Curl_easy *,char **,size_t *)", "", "Argument[*0]", "Argument[*2]", "taint", "df-generated"]
+ - ["", "", True, "Curl_netrc_cleanup", "(store_netrc *)", "", "Argument[*0].Field[*filebuf].Field[*allc]", "Argument[*0].Field[*filebuf].Field[*leng]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_node_elem", "(Curl_llist_node *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "Curl_node_elem", "(Curl_llist_node *)", "", "Argument[*0]", "ReturnValue[**]", "taint", "df-generated"]
+ - ["", "", True, "Curl_node_elem", "(Curl_llist_node *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"]
+ - ["", "", True, "Curl_node_llist", "(Curl_llist_node *)", "", "Argument[*0].Field[**_list]", "ReturnValue[*]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_node_llist", "(Curl_llist_node *)", "", "Argument[*0].Field[*_list]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "Curl_node_next", "(Curl_llist_node *)", "", "Argument[*0].Field[**_next]", "ReturnValue[*]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_node_next", "(Curl_llist_node *)", "", "Argument[*0].Field[*_next]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "Curl_node_take_elem", "(Curl_llist_node *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "Curl_node_take_elem", "(Curl_llist_node *)", "", "Argument[*0]", "ReturnValue[**]", "taint", "df-generated"]
+ - ["", "", True, "Curl_node_take_elem", "(Curl_llist_node *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"]
+ - ["", "", True, "Curl_ntlm_core_mk_lm_hash", "(const char *,unsigned char *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_ntlm_core_mk_lmv2_resp", "(unsigned char *,unsigned char *,unsigned char *,unsigned char *)", "", "Argument[*1]", "Argument[*3]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_ntlm_core_mk_lmv2_resp", "(unsigned char *,unsigned char *,unsigned char *,unsigned char *)", "", "Argument[1]", "Argument[*3]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_ntlm_core_mk_nt_hash", "(const char *,unsigned char *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_ntlm_core_mk_ntlmv2_resp", "(unsigned char *,unsigned char *,ntlmdata *,unsigned char **,unsigned int *)", "", "Argument[*2]", "Argument[*4]", "taint", "df-generated"]
+ - ["", "", True, "Curl_on_disconnect", "(Curl_easy *,connectdata *,bool)", "", "Argument[2]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "Curl_once_resolved", "(Curl_easy *,bool *)", "", "Argument[0]", "Argument[*0].Field[*conn_queue].Field[*_ptr]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_parse_interface", "(const char *,char **,char **,char **)", "", "Argument[*0]", "Argument[**1]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_parse_interface", "(const char *,char **,char **,char **)", "", "Argument[*0]", "Argument[**2]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_parse_interface", "(const char *,char **,char **,char **)", "", "Argument[*0]", "Argument[**3]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_parse_interface", "(const char *,char **,char **,char **)", "", "Argument[0]", "Argument[**1]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_parse_interface", "(const char *,char **,char **,char **)", "", "Argument[0]", "Argument[**2]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_parse_interface", "(const char *,char **,char **,char **)", "", "Argument[0]", "Argument[**3]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_parse_interface", "(const char *,char **,char **,char **)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_parse_interface", "(const char *,char **,char **,char **)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_parse_interface", "(const char *,char **,char **,char **)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_parse_login_details", "(const char *,const size_t,char **,char **,char **)", "", "Argument[*0]", "Argument[**2]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_parse_login_details", "(const char *,const size_t,char **,char **,char **)", "", "Argument[*0]", "Argument[**3]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_parse_login_details", "(const char *,const size_t,char **,char **,char **)", "", "Argument[*0]", "Argument[**4]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_parse_login_details", "(const char *,const size_t,char **,char **,char **)", "", "Argument[0]", "Argument[**2]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_parse_login_details", "(const char *,const size_t,char **,char **,char **)", "", "Argument[0]", "Argument[**3]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_parse_login_details", "(const char *,const size_t,char **,char **,char **)", "", "Argument[0]", "Argument[**4]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_parse_login_details", "(const char *,const size_t,char **,char **,char **)", "", "Argument[1]", "Argument[**3]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_parse_login_details", "(const char *,const size_t,char **,char **,char **)", "", "Argument[1]", "Argument[**4]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_parsenetrc", "(store_netrc *,const char *,char **,char **,char *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_pgrsEarlyData", "(Curl_easy *,curl_off_t)", "", "Argument[1]", "Argument[*0].Field[*progress].Field[*earlydata_sent]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_pgrsLimitWaitTime", "(pgrs_dir *,curl_off_t,curltime)", "", "Argument[*0].Field[*cur_size]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_pgrsLimitWaitTime", "(pgrs_dir *,curl_off_t,curltime)", "", "Argument[*0].Field[*limit].Field[*start_size]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_pgrsLimitWaitTime", "(pgrs_dir *,curl_off_t,curltime)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_pgrsLimitWaitTime", "(pgrs_dir *,curl_off_t,curltime)", "", "Argument[2].Field[*tv_sec]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_pgrsLimitWaitTime", "(pgrs_dir *,curl_off_t,curltime)", "", "Argument[2].Field[*tv_usec]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_pgrsTimeWas", "(Curl_easy *,timerid,curltime)", "", "Argument[2]", "Argument[*0]", "taint", "df-generated"]
+ - ["", "", True, "Curl_poll", "(pollfd[],unsigned int,timediff_t)", "", "Argument[0]", "Argument[*0]", "taint", "df-generated"]
+ - ["", "", True, "Curl_pollfds_add_ps", "(curl_pollfds *,easy_pollset *)", "", "Argument[*1].Field[*sockets]", "Argument[*0].Field[**pfds].Field[*fd]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_pollfds_add_sock", "(curl_pollfds *,curl_socket_t,short)", "", "Argument[1]", "Argument[*0].Field[**pfds].Field[*fd]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_pollfds_add_sock", "(curl_pollfds *,curl_socket_t,short)", "", "Argument[2]", "Argument[*0].Field[**pfds].Field[*events]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_pollfds_init", "(curl_pollfds *,pollfd *,unsigned int)", "", "Argument[*1]", "Argument[*0].Field[**pfds]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_pollfds_init", "(curl_pollfds *,pollfd *,unsigned int)", "", "Argument[1]", "Argument[*0].Field[*pfds]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_pollfds_init", "(curl_pollfds *,pollfd *,unsigned int)", "", "Argument[2]", "Argument[*0].Field[*count]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_pollset_add_socks", "(Curl_easy *,easy_pollset *,..(*)(..))", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"]
+ - ["", "", True, "Curl_pollset_change", "(Curl_easy *,easy_pollset *,curl_socket_t,int,int)", "", "Argument[2]", "Argument[*1].Field[*sockets]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_pollset_change", "(Curl_easy *,easy_pollset *,curl_socket_t,int,int)", "", "Argument[3]", "Argument[*1].Field[*actions]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_pollset_change", "(Curl_easy *,easy_pollset *,curl_socket_t,int,int)", "", "Argument[4]", "Argument[*1].Field[*actions]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_pollset_check", "(Curl_easy *,easy_pollset *,curl_socket_t,bool *,bool *)", "", "Argument[*4]", "Argument[*3]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_pollset_check", "(Curl_easy *,easy_pollset *,curl_socket_t,bool *,bool *)", "", "Argument[4]", "Argument[*3]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_pollset_check", "(Curl_easy *,easy_pollset *,curl_socket_t,bool *,bool *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_pollset_set", "(Curl_easy *,easy_pollset *,curl_socket_t,bool,bool)", "", "Argument[2]", "Argument[*1].Field[*sockets]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_pp_flushsend", "(Curl_easy *,pingpong *)", "", "Argument[*1].Field[*sendsize]", "Argument[*1].Field[*sendleft]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_pp_getsock", "(Curl_easy *,pingpong *,curl_socket_t *)", "", "Argument[*0].Field[**conn].Field[*sock]", "Argument[*2]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_pp_readresp", "(Curl_easy *,int,pingpong *,int *,size_t *)", "", "Argument[*2]", "Argument[*4]", "taint", "df-generated"]
+ - ["", "", True, "Curl_pp_state_timeout", "(Curl_easy *,pingpong *,bool)", "", "Argument[*0].Field[*set].Field[*server_response_timeout]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_pp_state_timeout", "(Curl_easy *,pingpong *,bool)", "", "Argument[*0].Field[*set].Field[*timeout]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_pp_vsendf", "(Curl_easy *,pingpong *,const char *,va_list)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_psl_use", "(Curl_easy *)", "", "Argument[*0].Field[**psl].Field[**psl]", "ReturnValue[*]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_psl_use", "(Curl_easy *)", "", "Argument[*0].Field[**psl].Field[*psl]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "Curl_rand_alnum", "(Curl_easy *,unsigned char *,size_t)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_rand_bytes", "(Curl_easy *,unsigned char *,size_t)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_rand_hex", "(Curl_easy *,unsigned char *,size_t)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_raw_tolower", "(char)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_raw_toupper", "(char)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_read16_be", "(const unsigned char *)", "", "Argument[*0]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_read16_be", "(const unsigned char *)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_read16_le", "(const unsigned char *)", "", "Argument[*0]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_read16_le", "(const unsigned char *)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_read32_le", "(const unsigned char *)", "", "Argument[*0]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_read32_le", "(const unsigned char *)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_req_hard_reset", "(SingleRequest *,Curl_easy *)", "", "Argument[*1]", "Argument[*0]", "taint", "df-generated"]
+ - ["", "", True, "Curl_req_send", "(Curl_easy *,dynbuf *)", "", "Argument[*1].Field[*leng]", "Argument[*0].Field[*req].Field[*sendbuf_hds_len]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_req_send", "(Curl_easy *,dynbuf *)", "", "Argument[*1].Field[*leng]", "Argument[*0].Field[*req].Field[*writebytecount]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_req_send", "(Curl_easy *,dynbuf *)", "", "Argument[0]", "Argument[*0].Field[*conn_queue].Field[*_ptr]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_req_send_more", "(Curl_easy *)", "", "Argument[0]", "Argument[*0].Field[*conn_queue].Field[*_ptr]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_req_soft_reset", "(SingleRequest *,Curl_easy *)", "", "Argument[*1].Field[*set].Field[*upload_buffer_size]", "Argument[*0].Field[*sendbuf].Field[*chunk_size]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_req_start", "(SingleRequest *,Curl_easy *)", "", "Argument[*1].Field[*set].Field[*upload_buffer_size]", "Argument[*0].Field[*sendbuf].Field[*chunk_size]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_resolv", "(Curl_easy *,const char *,int,bool,Curl_dns_entry **)", "", "Argument[*1]", "Argument[**4].Field[**addr].Field[**ai_canonname]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_resolv", "(Curl_easy *,const char *,int,bool,Curl_dns_entry **)", "", "Argument[*1]", "Argument[**4].Field[*hostname]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_resolv", "(Curl_easy *,const char *,int,bool,Curl_dns_entry **)", "", "Argument[1]", "Argument[**4].Field[**addr].Field[**ai_canonname]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_resolv", "(Curl_easy *,const char *,int,bool,Curl_dns_entry **)", "", "Argument[1]", "Argument[**4].Field[*hostname]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_resolv", "(Curl_easy *,const char *,int,bool,Curl_dns_entry **)", "", "Argument[2]", "Argument[**4].Field[*hostport]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_resolv_check", "(Curl_easy *,Curl_dns_entry **)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_resolv_timeout", "(Curl_easy *,const char *,int,Curl_dns_entry **,timediff_t)", "", "Argument[*1]", "Argument[**3].Field[**addr].Field[**ai_canonname]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_resolv_timeout", "(Curl_easy *,const char *,int,Curl_dns_entry **,timediff_t)", "", "Argument[*1]", "Argument[**3].Field[*hostname]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_resolv_timeout", "(Curl_easy *,const char *,int,Curl_dns_entry **,timediff_t)", "", "Argument[1]", "Argument[**3].Field[**addr].Field[**ai_canonname]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_resolv_timeout", "(Curl_easy *,const char *,int,Curl_dns_entry **,timediff_t)", "", "Argument[1]", "Argument[**3].Field[*hostname]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_resolv_timeout", "(Curl_easy *,const char *,int,Curl_dns_entry **,timediff_t)", "", "Argument[2]", "Argument[**3].Field[*hostport]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_resolv_unlink", "(Curl_easy *,Curl_dns_entry **)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_resolver_duphandle", "(Curl_easy *,void **,void *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_resolver_init", "(Curl_easy *,void **)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_retry_request", "(Curl_easy *,char **)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_rtsp_parseheader", "(Curl_easy *,const char *)", "", "Argument[*1]", "Argument[*0].Field[*set].Field[**str]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_rtsp_parseheader", "(Curl_easy *,const char *)", "", "Argument[*1]", "Argument[*0].Field[*state].Field[*rtsp_CSeq_recv]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_rtsp_parseheader", "(Curl_easy *,const char *)", "", "Argument[1]", "Argument[*0].Field[*set].Field[**str]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_rtsp_parseheader", "(Curl_easy *,const char *)", "", "Argument[1]", "Argument[*0].Field[*state].Field[*rtsp_CSeq_recv]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_sasl_init", "(SASL *,Curl_easy *,const SASLproto *)", "", "Argument[*2].Field[*defmechs]", "Argument[*0].Field[*prefmech]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_sasl_init", "(SASL *,Curl_easy *,const SASLproto *)", "", "Argument[*2]", "Argument[*0].Field[**params]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_sasl_init", "(SASL *,Curl_easy *,const SASLproto *)", "", "Argument[2]", "Argument[*0].Field[*params]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_sasl_start", "(SASL *,Curl_easy *,bool,saslprogress *)", "", "Argument[2]", "Argument[*0].Field[*force_ir]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_senddata", "(Curl_easy *,const void *,size_t,size_t *)", "", "Argument[*0]", "Argument[*0].Field[*conn_queue].Field[**_ptr]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_senddata", "(Curl_easy *,const void *,size_t,size_t *)", "", "Argument[0]", "Argument[*0].Field[*conn_queue].Field[*_ptr]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_sendrecv", "(Curl_easy *,curltime *)", "", "Argument[*1]", "Argument[*0].Field[*state].Field[*keeps_speed]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_sendrecv", "(Curl_easy *,curltime *)", "", "Argument[0]", "Argument[*0].Field[*conn_queue].Field[*_ptr]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_sendrecv", "(Curl_easy *,curltime *)", "", "Argument[1]", "Argument[*0].Field[*state].Field[*keeps_speed]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_sendrecv", "(Curl_easy *,curltime *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_set_in_callback", "(Curl_easy *,bool)", "", "Argument[1]", "Argument[*0].Field[**multi].Field[*in_callback]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_setblobopt", "(curl_blob **,const curl_blob *)", "", "Argument[*1]", "Argument[**0]", "value", "df-generated"]
+ - ["", "", True, "Curl_setblobopt", "(curl_blob **,const curl_blob *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_setblobopt", "(curl_blob **,const curl_blob *)", "", "Argument[1]", "Argument[**0].Field[**data]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_setblobopt", "(curl_blob **,const curl_blob *)", "", "Argument[1]", "Argument[**0]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_setblobopt", "(curl_blob **,const curl_blob *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_setstropt", "(char **,const char *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_shutdown_start", "(Curl_easy *,int,curltime *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_shutdown_timeleft", "(connectdata *,int,curltime *)", "", "Argument[*0].Field[*shutdown].Field[*timeout_ms]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_shutdown_timeleft", "(connectdata *,int,curltime *)", "", "Argument[*2].Field[*tv_sec]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_shutdown_timeleft", "(connectdata *,int,curltime *)", "", "Argument[*2].Field[*tv_usec]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_shutdown_timeleft", "(connectdata *,int,curltime *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_slist_append_nodup", "(curl_slist *,char *)", "", "Argument[*0]", "ReturnValue[*]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_slist_append_nodup", "(curl_slist *,char *)", "", "Argument[*1]", "Argument[*0].Field[**next].Field[**data]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_slist_append_nodup", "(curl_slist *,char *)", "", "Argument[*1]", "ReturnValue[*].Field[**data]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_slist_append_nodup", "(curl_slist *,char *)", "", "Argument[0]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "Curl_slist_append_nodup", "(curl_slist *,char *)", "", "Argument[1]", "Argument[*0].Field[**next].Field[*data]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_slist_append_nodup", "(curl_slist *,char *)", "", "Argument[1]", "ReturnValue[*].Field[*data]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_slist_duplicate", "(curl_slist *)", "", "Argument[*0].Field[**next].Field[**next]", "Argument[*0]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_slist_duplicate", "(curl_slist *)", "", "Argument[*0].Field[**next]", "Argument[*0]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_sock_assign_addr", "(Curl_sockaddr_ex *,const Curl_addrinfo *,int)", "", "Argument[*1]", "Argument[*0]", "taint", "df-generated"]
+ - ["", "", True, "Curl_socket_open", "(Curl_easy *,const Curl_addrinfo *,Curl_sockaddr_ex *,int,curl_socket_t *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_speedcheck", "(Curl_easy *,curltime)", "", "Argument[1]", "Argument[*0].Field[*state].Field[*keeps_speed]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_splay", "(curltime,Curl_tree *)", "", "Argument[*1]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "Curl_splay", "(curltime,Curl_tree *)", "", "Argument[*1]", "ReturnValue[*]", "value", "df-generated"]
+ - ["", "", True, "Curl_splay", "(curltime,Curl_tree *)", "", "Argument[1]", "Argument[*1]", "taint", "df-generated"]
+ - ["", "", True, "Curl_splay", "(curltime,Curl_tree *)", "", "Argument[1]", "ReturnValue", "value", "df-generated"]
+ - ["", "", True, "Curl_splay", "(curltime,Curl_tree *)", "", "Argument[1]", "ReturnValue[*]", "taint", "df-generated"]
+ - ["", "", True, "Curl_splayget", "(Curl_tree *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "Curl_splayget", "(Curl_tree *)", "", "Argument[*0]", "ReturnValue[**]", "taint", "df-generated"]
+ - ["", "", True, "Curl_splayget", "(Curl_tree *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"]
+ - ["", "", True, "Curl_splaygetbest", "(curltime,Curl_tree *,Curl_tree **)", "", "Argument[*1]", "Argument[**2]", "value", "df-generated"]
+ - ["", "", True, "Curl_splaygetbest", "(curltime,Curl_tree *,Curl_tree **)", "", "Argument[*1]", "Argument[*2]", "taint", "df-generated"]
+ - ["", "", True, "Curl_splaygetbest", "(curltime,Curl_tree *,Curl_tree **)", "", "Argument[*1]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "Curl_splaygetbest", "(curltime,Curl_tree *,Curl_tree **)", "", "Argument[*1]", "ReturnValue[*]", "value", "df-generated"]
+ - ["", "", True, "Curl_splaygetbest", "(curltime,Curl_tree *,Curl_tree **)", "", "Argument[1]", "Argument[**2]", "taint", "df-generated"]
+ - ["", "", True, "Curl_splaygetbest", "(curltime,Curl_tree *,Curl_tree **)", "", "Argument[1]", "Argument[*1]", "taint", "df-generated"]
+ - ["", "", True, "Curl_splaygetbest", "(curltime,Curl_tree *,Curl_tree **)", "", "Argument[1]", "Argument[*2]", "value", "df-generated"]
+ - ["", "", True, "Curl_splaygetbest", "(curltime,Curl_tree *,Curl_tree **)", "", "Argument[1]", "ReturnValue", "value", "df-generated"]
+ - ["", "", True, "Curl_splaygetbest", "(curltime,Curl_tree *,Curl_tree **)", "", "Argument[1]", "ReturnValue[*]", "taint", "df-generated"]
+ - ["", "", True, "Curl_splayinsert", "(curltime,Curl_tree *,Curl_tree *)", "", "Argument[*1]", "Argument[*2]", "taint", "df-generated"]
+ - ["", "", True, "Curl_splayinsert", "(curltime,Curl_tree *,Curl_tree *)", "", "Argument[*1]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "Curl_splayinsert", "(curltime,Curl_tree *,Curl_tree *)", "", "Argument[*1]", "ReturnValue[*]", "value", "df-generated"]
+ - ["", "", True, "Curl_splayinsert", "(curltime,Curl_tree *,Curl_tree *)", "", "Argument[*2]", "Argument[*1]", "taint", "df-generated"]
+ - ["", "", True, "Curl_splayinsert", "(curltime,Curl_tree *,Curl_tree *)", "", "Argument[*2]", "ReturnValue[*]", "value", "df-generated"]
+ - ["", "", True, "Curl_splayinsert", "(curltime,Curl_tree *,Curl_tree *)", "", "Argument[0]", "Argument[*2]", "taint", "df-generated"]
+ - ["", "", True, "Curl_splayinsert", "(curltime,Curl_tree *,Curl_tree *)", "", "Argument[0]", "ReturnValue[*]", "taint", "df-generated"]
+ - ["", "", True, "Curl_splayinsert", "(curltime,Curl_tree *,Curl_tree *)", "", "Argument[1]", "Argument[*1]", "taint", "df-generated"]
+ - ["", "", True, "Curl_splayinsert", "(curltime,Curl_tree *,Curl_tree *)", "", "Argument[1]", "Argument[*2]", "taint", "df-generated"]
+ - ["", "", True, "Curl_splayinsert", "(curltime,Curl_tree *,Curl_tree *)", "", "Argument[1]", "ReturnValue", "value", "df-generated"]
+ - ["", "", True, "Curl_splayinsert", "(curltime,Curl_tree *,Curl_tree *)", "", "Argument[1]", "ReturnValue[*]", "taint", "df-generated"]
+ - ["", "", True, "Curl_splayinsert", "(curltime,Curl_tree *,Curl_tree *)", "", "Argument[2]", "Argument[*1]", "taint", "df-generated"]
+ - ["", "", True, "Curl_splayinsert", "(curltime,Curl_tree *,Curl_tree *)", "", "Argument[2]", "Argument[*2]", "taint", "df-generated"]
+ - ["", "", True, "Curl_splayinsert", "(curltime,Curl_tree *,Curl_tree *)", "", "Argument[2]", "ReturnValue", "value", "df-generated"]
+ - ["", "", True, "Curl_splayinsert", "(curltime,Curl_tree *,Curl_tree *)", "", "Argument[2]", "ReturnValue[*]", "taint", "df-generated"]
+ - ["", "", True, "Curl_splayremove", "(Curl_tree *,Curl_tree *,Curl_tree **)", "", "Argument[*0]", "Argument[**2]", "value", "df-generated"]
+ - ["", "", True, "Curl_splayremove", "(Curl_tree *,Curl_tree *,Curl_tree **)", "", "Argument[0]", "Argument[*2]", "value", "df-generated"]
+ - ["", "", True, "Curl_splayremove", "(Curl_tree *,Curl_tree *,Curl_tree **)", "", "Argument[1]", "Argument[*1].Field[**samen].Field[*samen]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_splayremove", "(Curl_tree *,Curl_tree *,Curl_tree **)", "", "Argument[1]", "Argument[*1].Field[*samen]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_splayset", "(Curl_tree *,void *)", "", "Argument[**1]", "Argument[*0].Field[***ptr]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_splayset", "(Curl_tree *,void *)", "", "Argument[*1]", "Argument[*0].Field[**ptr]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_splayset", "(Curl_tree *,void *)", "", "Argument[1]", "Argument[*0].Field[*ptr]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_ssl_cf_get_config", "(Curl_cfilter *,Curl_easy *)", "", "Argument[*1].Field[*set].Field[*proxy_ssl]", "ReturnValue[*]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_ssl_cf_get_config", "(Curl_cfilter *,Curl_easy *)", "", "Argument[*1].Field[*set].Field[*ssl]", "ReturnValue[*]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_ssl_cf_get_primary_config", "(Curl_cfilter *)", "", "Argument[*0].Field[**conn].Field[*proxy_ssl_config]", "ReturnValue[*]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_ssl_cf_get_primary_config", "(Curl_cfilter *)", "", "Argument[*0].Field[**conn].Field[*ssl_config]", "ReturnValue[*]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_ssl_cfilter_add", "(Curl_easy *,connectdata *,int)", "", "Argument[1]", "Argument[*1].Field[**cfilter].Field[*conn]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_ssl_cfilter_add", "(Curl_easy *,connectdata *,int)", "", "Argument[2]", "Argument[*1].Field[**cfilter].Field[*next]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_ssl_cfilter_add", "(Curl_easy *,connectdata *,int)", "", "Argument[2]", "Argument[*1].Field[**cfilter].Field[*sockindex]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_ssl_easy_config_init", "(Curl_easy *)", "", "Argument[*0].Field[*set].Field[*ssl]", "Argument[*0].Field[*set].Field[*proxy_ssl]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_ssl_peer_init", "(ssl_peer *,Curl_cfilter *,const char *,int)", "", "Argument[*1].Field[**conn].Field[*remote_port]", "Argument[*0].Field[*port]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_ssl_peer_init", "(ssl_peer *,Curl_cfilter *,const char *,int)", "", "Argument[3]", "Argument[*0].Field[*transport]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_ssl_scache_create", "(size_t,size_t,Curl_ssl_scache **)", "", "Argument[0]", "Argument[**2].Field[*peer_count]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_ssl_scache_create", "(size_t,size_t,Curl_ssl_scache **)", "", "Argument[1]", "Argument[**2].Field[**peers].Field[*max_sessions]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_ssl_scache_get_obj", "(Curl_cfilter *,Curl_easy *,const char *,void **)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_ssl_scache_put", "(Curl_cfilter *,Curl_easy *,const char *,Curl_ssl_session *)", "", "Argument[*3]", "Argument[*3].Field[*list].Field[**_ptr]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_ssl_scache_put", "(Curl_cfilter *,Curl_easy *,const char *,Curl_ssl_session *)", "", "Argument[3]", "Argument[*3].Field[*list].Field[*_ptr]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_ssl_scache_return", "(Curl_cfilter *,Curl_easy *,const char *,Curl_ssl_session *)", "", "Argument[*3]", "Argument[*3].Field[*list].Field[**_ptr]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_ssl_scache_return", "(Curl_cfilter *,Curl_easy *,const char *,Curl_ssl_session *)", "", "Argument[3]", "Argument[*3].Field[*list].Field[*_ptr]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_ssl_session_create2", "(unsigned char *,size_t,int,const char *,curl_off_t,size_t,unsigned char *,size_t,Curl_ssl_session **)", "", "Argument[*0]", "Argument[**8].Field[**sdata]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_ssl_session_create2", "(unsigned char *,size_t,int,const char *,curl_off_t,size_t,unsigned char *,size_t,Curl_ssl_session **)", "", "Argument[*6]", "Argument[**8].Field[**quic_tp]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_ssl_session_create2", "(unsigned char *,size_t,int,const char *,curl_off_t,size_t,unsigned char *,size_t,Curl_ssl_session **)", "", "Argument[0]", "Argument[**8].Field[*sdata]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_ssl_session_create2", "(unsigned char *,size_t,int,const char *,curl_off_t,size_t,unsigned char *,size_t,Curl_ssl_session **)", "", "Argument[1]", "Argument[**8].Field[*sdata_len]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_ssl_session_create2", "(unsigned char *,size_t,int,const char *,curl_off_t,size_t,unsigned char *,size_t,Curl_ssl_session **)", "", "Argument[2]", "Argument[**8].Field[*ietf_tls_id]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_ssl_session_create2", "(unsigned char *,size_t,int,const char *,curl_off_t,size_t,unsigned char *,size_t,Curl_ssl_session **)", "", "Argument[4]", "Argument[**8].Field[*valid_until]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_ssl_session_create2", "(unsigned char *,size_t,int,const char *,curl_off_t,size_t,unsigned char *,size_t,Curl_ssl_session **)", "", "Argument[5]", "Argument[**8].Field[*earlydata_max]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_ssl_session_create2", "(unsigned char *,size_t,int,const char *,curl_off_t,size_t,unsigned char *,size_t,Curl_ssl_session **)", "", "Argument[6]", "Argument[**8].Field[*quic_tp]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_ssl_session_create2", "(unsigned char *,size_t,int,const char *,curl_off_t,size_t,unsigned char *,size_t,Curl_ssl_session **)", "", "Argument[7]", "Argument[**8].Field[*quic_tp_len]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_ssl_session_create", "(unsigned char *,size_t,int,const char *,curl_off_t,size_t,Curl_ssl_session **)", "", "Argument[*0]", "Argument[**6].Field[**sdata]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_ssl_session_create", "(unsigned char *,size_t,int,const char *,curl_off_t,size_t,Curl_ssl_session **)", "", "Argument[0]", "Argument[**6].Field[*sdata]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_ssl_session_create", "(unsigned char *,size_t,int,const char *,curl_off_t,size_t,Curl_ssl_session **)", "", "Argument[1]", "Argument[**6].Field[*sdata_len]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_ssl_session_create", "(unsigned char *,size_t,int,const char *,curl_off_t,size_t,Curl_ssl_session **)", "", "Argument[2]", "Argument[**6].Field[*ietf_tls_id]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_ssl_session_create", "(unsigned char *,size_t,int,const char *,curl_off_t,size_t,Curl_ssl_session **)", "", "Argument[4]", "Argument[**6].Field[*valid_until]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_ssl_session_create", "(unsigned char *,size_t,int,const char *,curl_off_t,size_t,Curl_ssl_session **)", "", "Argument[5]", "Argument[**6].Field[*earlydata_max]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_ssl_supports", "(Curl_easy *,unsigned int)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_str2addr", "(char *,int)", "", "Argument[*0]", "ReturnValue[*].Field[**ai_canonname]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_str2addr", "(char *,int)", "", "Argument[0]", "ReturnValue[*].Field[**ai_canonname]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_str_newline", "(char **)", "", "Argument[*0]", "Argument[**0]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_str_newline", "(char **)", "", "Argument[0]", "Argument[**0]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_str_newline", "(char **)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_str_number", "(char **,size_t *,size_t)", "", "Argument[**0]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_str_number", "(char **,size_t *,size_t)", "", "Argument[*0]", "Argument[**0]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_str_number", "(char **,size_t *,size_t)", "", "Argument[*0]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_str_number", "(char **,size_t *,size_t)", "", "Argument[0]", "Argument[**0]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_str_number", "(char **,size_t *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_str_number", "(char **,size_t *,size_t)", "", "Argument[0]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_str_quotedword", "(char **,Curl_str *,const size_t)", "", "Argument[**0]", "Argument[*1].Field[**str]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_str_single", "(char **,char)", "", "Argument[*0]", "Argument[**0]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_str_single", "(char **,char)", "", "Argument[0]", "Argument[**0]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_str_single", "(char **,char)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_str_singlespace", "(char **)", "", "Argument[*0]", "Argument[**0]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_str_singlespace", "(char **)", "", "Argument[0]", "Argument[**0]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_str_singlespace", "(char **)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_str_until", "(char **,Curl_str *,const size_t,char)", "", "Argument[**0]", "Argument[*1].Field[**str]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_str_until", "(char **,Curl_str *,const size_t,char)", "", "Argument[*0]", "Argument[**0]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_str_until", "(char **,Curl_str *,const size_t,char)", "", "Argument[*0]", "Argument[*1].Field[*str]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_str_until", "(char **,Curl_str *,const size_t,char)", "", "Argument[0]", "Argument[**0]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_str_until", "(char **,Curl_str *,const size_t,char)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_str_until", "(char **,Curl_str *,const size_t,char)", "", "Argument[0]", "Argument[*1].Field[*str]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_str_word", "(char **,Curl_str *,const size_t)", "", "Argument[**0]", "Argument[*1].Field[**str]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_str_word", "(char **,Curl_str *,const size_t)", "", "Argument[*0]", "Argument[**0]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_str_word", "(char **,Curl_str *,const size_t)", "", "Argument[*0]", "Argument[*1].Field[*str]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_str_word", "(char **,Curl_str *,const size_t)", "", "Argument[0]", "Argument[**0]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_str_word", "(char **,Curl_str *,const size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_str_word", "(char **,Curl_str *,const size_t)", "", "Argument[0]", "Argument[*1].Field[*str]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_strerror", "(int,char *,size_t)", "", "Argument[*1]", "ReturnValue[*]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_strerror", "(int,char *,size_t)", "", "Argument[1]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "Curl_strntolower", "(char *,const char *,size_t)", "", "Argument[*1]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_strntolower", "(char *,const char *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_strntolower", "(char *,const char *,size_t)", "", "Argument[1]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_strntoupper", "(char *,const char *,size_t)", "", "Argument[*1]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_strntoupper", "(char *,const char *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_strntoupper", "(char *,const char *,size_t)", "", "Argument[1]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_thread_destroy", "(pthread_t *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_thread_join", "(pthread_t **)", "", "Argument[*0]", "Argument[**0]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_thread_join", "(pthread_t **)", "", "Argument[0]", "Argument[**0]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_thread_join", "(pthread_t **)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_timediff", "(curltime,curltime)", "", "Argument[0].Field[*tv_sec]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_timediff", "(curltime,curltime)", "", "Argument[0].Field[*tv_usec]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_timediff", "(curltime,curltime)", "", "Argument[1].Field[*tv_sec]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_timediff", "(curltime,curltime)", "", "Argument[1].Field[*tv_usec]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_timediff_ceil", "(curltime,curltime)", "", "Argument[0].Field[*tv_sec]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_timediff_ceil", "(curltime,curltime)", "", "Argument[0].Field[*tv_usec]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_timediff_ceil", "(curltime,curltime)", "", "Argument[1].Field[*tv_sec]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_timediff_ceil", "(curltime,curltime)", "", "Argument[1].Field[*tv_usec]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_timediff_us", "(curltime,curltime)", "", "Argument[0].Field[*tv_sec]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_timediff_us", "(curltime,curltime)", "", "Argument[0].Field[*tv_usec]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_timediff_us", "(curltime,curltime)", "", "Argument[1].Field[*tv_sec]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_timediff_us", "(curltime,curltime)", "", "Argument[1].Field[*tv_usec]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_timeleft", "(Curl_easy *,curltime *,bool)", "", "Argument[*0].Field[*set].Field[*connecttimeout]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_timeleft", "(Curl_easy *,curltime *,bool)", "", "Argument[*0].Field[*set].Field[*timeout]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_timeleft", "(Curl_easy *,curltime *,bool)", "", "Argument[*1].Field[*tv_sec]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_timeleft", "(Curl_easy *,curltime *,bool)", "", "Argument[*1].Field[*tv_usec]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_timeleft", "(Curl_easy *,curltime *,bool)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_timestrcmp", "(const char *,const char *)", "", "Argument[*0]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_timestrcmp", "(const char *,const char *)", "", "Argument[*1]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_timestrcmp", "(const char *,const char *)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_timestrcmp", "(const char *,const char *)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_updatesocket", "(Curl_easy *)", "", "Argument[0]", "Argument[*0]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_url_set_authority", "(CURLU *,const char *)", "", "Argument[*1]", "Argument[*0].Field[**password]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_url_set_authority", "(CURLU *,const char *)", "", "Argument[*1]", "Argument[*0].Field[**user]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_url_set_authority", "(CURLU *,const char *)", "", "Argument[1]", "Argument[*0].Field[**password]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_url_set_authority", "(CURLU *,const char *)", "", "Argument[1]", "Argument[*0].Field[**user]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_urldecode", "(const char *,size_t,char **,size_t *,urlreject)", "", "Argument[*2]", "Argument[*3]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_urldecode", "(const char *,size_t,char **,size_t *,urlreject)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_urldecode", "(const char *,size_t,char **,size_t *,urlreject)", "", "Argument[2]", "Argument[*3]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_vsetopt", "(Curl_easy *,CURLoption,va_list)", "", "Argument[*2]", "Argument[*0]", "taint", "df-generated"]
+ - ["", "", True, "Curl_vsetopt", "(Curl_easy *,CURLoption,va_list)", "", "Argument[2]", "Argument[*0]", "taint", "df-generated"]
+ - ["", "", True, "Curl_vsetopt", "(Curl_easy *,CURLoption,va_list)", "", "Argument[2]", "Argument[*2]", "taint", "df-generated"]
+ - ["", "", True, "Curl_waitfds_add_ps", "(Curl_waitfds *,easy_pollset *)", "", "Argument[*1].Field[*sockets]", "Argument[*0].Field[**wfds].Field[*fd]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_waitfds_init", "(Curl_waitfds *,curl_waitfd *,unsigned int)", "", "Argument[*1]", "Argument[*0].Field[**wfds]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_waitfds_init", "(Curl_waitfds *,curl_waitfd *,unsigned int)", "", "Argument[1]", "Argument[*0].Field[*wfds]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_waitfds_init", "(Curl_waitfds *,curl_waitfd *,unsigned int)", "", "Argument[2]", "Argument[*0].Field[*count]", "value", "dfc-generated"]
+ - ["", "", True, "Curl_wildcard_dtor", "(WildcardData **)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_xfer_send", "(Curl_easy *,const void *,size_t,bool,size_t *)", "", "Argument[*4]", "Argument[*0].Field[*info].Field[*request_size]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_xfer_send", "(Curl_easy *,const void *,size_t,bool,size_t *)", "", "Argument[4]", "Argument[*0].Field[*info].Field[*request_size]", "taint", "dfc-generated"]
+ - ["", "", True, "Curl_xfer_send", "(Curl_easy *,const void *,size_t,bool,size_t *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"]
+ - ["", "", True, "SetHTTPrequest", "(OperationConfig *,HttpReq,HttpReq *)", "", "Argument[1]", "Argument[*2]", "value", "dfc-generated"]
+ - ["", "", True, "SetHTTPrequest", "(OperationConfig *,HttpReq,HttpReq *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "add2list", "(curl_slist **,const char *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "add_file_name_to_url", "(CURL *,char **,const char *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "curl_easy_cleanup", "(CURL *)", "", "Argument[0]", "Argument[*0]", "value", "df-generated"]
+ - ["", "", True, "curl_easy_duphandle", "(CURL *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"]
+ - ["", "", True, "curl_easy_header", "(CURL *,const char *,size_t,unsigned int,int,curl_header **)", "", "Argument[2]", "Argument[**5].Field[*index]", "value", "dfc-generated"]
+ - ["", "", True, "curl_easy_nextheader", "(CURL *,unsigned int,int,curl_header *)", "", "Argument[*3].Field[**anchor].Field[**_next]", "ReturnValue[*].Field[**anchor]", "value", "dfc-generated"]
+ - ["", "", True, "curl_easy_nextheader", "(CURL *,unsigned int,int,curl_header *)", "", "Argument[*3].Field[**anchor].Field[*_next]", "ReturnValue[*].Field[*anchor]", "value", "dfc-generated"]
+ - ["", "", True, "curl_easy_option_next", "(const curl_easyoption *)", "", "Argument[*0]", "ReturnValue[*]", "value", "dfc-generated"]
+ - ["", "", True, "curl_easy_option_next", "(const curl_easyoption *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "curl_easy_option_next", "(const curl_easyoption *)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "curl_easy_option_next", "(const curl_easyoption *)", "", "Argument[0]", "ReturnValue[*]", "taint", "dfc-generated"]
+ - ["", "", True, "curl_easy_pause", "(CURL *,int)", "", "Argument[0]", "Argument[*0]", "value", "dfc-generated"]
+ - ["", "", True, "curl_easy_perform", "(CURL *)", "", "Argument[0]", "Argument[*0]", "value", "df-generated"]
+ - ["", "", True, "curl_easy_recv", "(CURL *,void *,size_t,size_t *)", "", "Argument[*0]", "Argument[*0].Field[*conn_queue].Field[**_ptr]", "value", "dfc-generated"]
+ - ["", "", True, "curl_easy_recv", "(CURL *,void *,size_t,size_t *)", "", "Argument[0]", "Argument[*0].Field[*conn_queue].Field[*_ptr]", "value", "dfc-generated"]
+ - ["", "", True, "curl_easy_send", "(CURL *,const void *,size_t,size_t *)", "", "Argument[*0]", "Argument[*0].Field[*conn_queue].Field[**_ptr]", "value", "dfc-generated"]
+ - ["", "", True, "curl_easy_send", "(CURL *,const void *,size_t,size_t *)", "", "Argument[0]", "Argument[*0].Field[*conn_queue].Field[*_ptr]", "value", "dfc-generated"]
+ - ["", "", True, "curl_easy_upkeep", "(CURL *)", "", "Argument[*0]", "Argument[*0].Field[*conn_queue].Field[**_ptr]", "value", "dfc-generated"]
+ - ["", "", True, "curl_easy_upkeep", "(CURL *)", "", "Argument[0]", "Argument[*0].Field[*conn_queue].Field[*_ptr]", "value", "dfc-generated"]
+ - ["", "", True, "curl_formadd", "(curl_httppost **,curl_httppost **,...)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "curl_getdate", "(const char *,const time_t *)", "", "Argument[*0]", "Argument[0]", "taint", "dfc-generated"]
+ - ["", "", True, "curl_getdate", "(const char *,const time_t *)", "", "Argument[*0]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "curl_getdate", "(const char *,const time_t *)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "curl_mime_addpart", "(curl_mime *)", "", "Argument[0]", "Argument[*0].Field[**firstpart].Field[*parent]", "value", "dfc-generated"]
+ - ["", "", True, "curl_mime_addpart", "(curl_mime *)", "", "Argument[0]", "Argument[*0].Field[**lastpart].Field[*parent]", "value", "dfc-generated"]
+ - ["", "", True, "curl_mime_addpart", "(curl_mime *)", "", "Argument[0]", "ReturnValue[*].Field[*parent]", "value", "dfc-generated"]
+ - ["", "", True, "curl_mime_data", "(curl_mimepart *,const char *,size_t)", "", "Argument[*1]", "Argument[*0].Field[**data]", "value", "dfc-generated"]
+ - ["", "", True, "curl_mime_data", "(curl_mimepart *,const char *,size_t)", "", "Argument[0]", "Argument[*0].Field[**arg].Field[*arg]", "value", "dfc-generated"]
+ - ["", "", True, "curl_mime_data", "(curl_mimepart *,const char *,size_t)", "", "Argument[0]", "Argument[*0].Field[*arg]", "value", "dfc-generated"]
+ - ["", "", True, "curl_mime_data", "(curl_mimepart *,const char *,size_t)", "", "Argument[1]", "Argument[*0].Field[**data]", "taint", "dfc-generated"]
+ - ["", "", True, "curl_mime_data", "(curl_mimepart *,const char *,size_t)", "", "Argument[2]", "Argument[*0].Field[*datasize]", "value", "dfc-generated"]
+ - ["", "", True, "curl_mime_data_cb", "(curl_mimepart *,curl_off_t,curl_read_callback,curl_seek_callback,curl_free_callback,void *)", "", "Argument[**5]", "Argument[*0].Field[***arg]", "value", "dfc-generated"]
+ - ["", "", True, "curl_mime_data_cb", "(curl_mimepart *,curl_off_t,curl_read_callback,curl_seek_callback,curl_free_callback,void *)", "", "Argument[*5]", "Argument[*0].Field[**arg]", "value", "dfc-generated"]
+ - ["", "", True, "curl_mime_data_cb", "(curl_mimepart *,curl_off_t,curl_read_callback,curl_seek_callback,curl_free_callback,void *)", "", "Argument[0]", "Argument[*0].Field[**arg].Field[*arg]", "value", "dfc-generated"]
+ - ["", "", True, "curl_mime_data_cb", "(curl_mimepart *,curl_off_t,curl_read_callback,curl_seek_callback,curl_free_callback,void *)", "", "Argument[0]", "Argument[*0].Field[*arg]", "value", "dfc-generated"]
+ - ["", "", True, "curl_mime_data_cb", "(curl_mimepart *,curl_off_t,curl_read_callback,curl_seek_callback,curl_free_callback,void *)", "", "Argument[1]", "Argument[*0].Field[*datasize]", "value", "dfc-generated"]
+ - ["", "", True, "curl_mime_data_cb", "(curl_mimepart *,curl_off_t,curl_read_callback,curl_seek_callback,curl_free_callback,void *)", "", "Argument[2]", "Argument[*0].Field[*readfunc]", "value", "dfc-generated"]
+ - ["", "", True, "curl_mime_data_cb", "(curl_mimepart *,curl_off_t,curl_read_callback,curl_seek_callback,curl_free_callback,void *)", "", "Argument[3]", "Argument[*0].Field[*seekfunc]", "value", "dfc-generated"]
+ - ["", "", True, "curl_mime_data_cb", "(curl_mimepart *,curl_off_t,curl_read_callback,curl_seek_callback,curl_free_callback,void *)", "", "Argument[4]", "Argument[*0].Field[*freefunc]", "value", "dfc-generated"]
+ - ["", "", True, "curl_mime_data_cb", "(curl_mimepart *,curl_off_t,curl_read_callback,curl_seek_callback,curl_free_callback,void *)", "", "Argument[5]", "Argument[*0].Field[*arg]", "value", "dfc-generated"]
+ - ["", "", True, "curl_mime_filedata", "(curl_mimepart *,const char *)", "", "Argument[0]", "Argument[*0].Field[**arg].Field[*arg]", "value", "dfc-generated"]
+ - ["", "", True, "curl_mime_filedata", "(curl_mimepart *,const char *)", "", "Argument[0]", "Argument[*0].Field[*arg]", "value", "dfc-generated"]
+ - ["", "", True, "curl_mime_headers", "(curl_mimepart *,curl_slist *,int)", "", "Argument[*1]", "Argument[*0].Field[**userheaders]", "value", "dfc-generated"]
+ - ["", "", True, "curl_mime_headers", "(curl_mimepart *,curl_slist *,int)", "", "Argument[1]", "Argument[*0].Field[*userheaders]", "value", "dfc-generated"]
+ - ["", "", True, "curl_mime_subparts", "(curl_mimepart *,curl_mime *)", "", "Argument[1]", "Argument[*0].Field[*arg]", "value", "dfc-generated"]
+ - ["", "", True, "curl_multi_add_handle", "(CURLM *,CURL *)", "", "Argument[0]", "Argument[*1].Field[*multi]", "value", "dfc-generated"]
+ - ["", "", True, "curl_multi_add_handle", "(CURLM *,CURL *)", "", "Argument[1]", "Argument[*1].Field[*multi_queue].Field[*_ptr]", "value", "dfc-generated"]
+ - ["", "", True, "curl_multi_info_read", "(CURLM *,int *)", "", "Argument[*0].Field[*msglist].Field[*_size]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "curl_multi_perform", "(CURLM *,int *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"]
+ - ["", "", True, "curl_multi_remove_handle", "(CURLM *,CURL *)", "", "Argument[1]", "Argument[*1]", "value", "df-generated"]
+ - ["", "", True, "curl_multi_socket", "(CURLM *,curl_socket_t,int *)", "", "Argument[*0]", "Argument[*2]", "taint", "df-generated"]
+ - ["", "", True, "curl_multi_socket_action", "(CURLM *,curl_socket_t,int,int *)", "", "Argument[*0]", "Argument[*3]", "taint", "df-generated"]
+ - ["", "", True, "curl_multi_socket_all", "(CURLM *,int *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"]
+ - ["", "", True, "curl_mvaprintf", "(const char *,va_list)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "curl_mvfprintf", "(FILE *,const char *,va_list)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "curl_mvprintf", "(const char *,va_list)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "curl_mvsnprintf", "(char *,size_t,const char *,va_list)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"]
+ - ["", "", True, "curl_mvsprintf", "(char *,const char *,va_list)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "curl_pushheader_byname", "(curl_pushheaders *,const char *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "curl_pushheader_byname", "(curl_pushheaders *,const char *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"]
+ - ["", "", True, "curl_pushheader_bynum", "(curl_pushheaders *,size_t)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "curl_share_setopt", "(CURLSH *,CURLSHoption,...)", "", "Argument[0]", "Argument[*0].Field[*cpool].Field[*share]", "value", "dfc-generated"]
+ - ["", "", True, "curl_slist_append", "(curl_slist *,const char *)", "", "Argument[*0]", "ReturnValue[*]", "value", "dfc-generated"]
+ - ["", "", True, "curl_slist_append", "(curl_slist *,const char *)", "", "Argument[0]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "curl_url_dup", "(const CURLU *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"]
+ - ["", "", True, "curl_url_get", "(const CURLU *,CURLUPart,char **,unsigned int)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "curl_url_set", "(CURLU *,CURLUPart,const char *,unsigned int)", "", "Argument[*2]", "Argument[*0]", "taint", "df-generated"]
+ - ["", "", True, "curl_url_set", "(CURLU *,CURLUPart,const char *,unsigned int)", "", "Argument[2]", "Argument[*0]", "taint", "df-generated"]
+ - ["", "", True, "curl_ws_recv", "(CURL *,void *,size_t,size_t *,const curl_ws_frame **)", "", "Argument[0]", "Argument[*0].Field[*conn_queue].Field[*_ptr]", "value", "dfc-generated"]
+ - ["", "", True, "curl_ws_recv", "(CURL *,void *,size_t,size_t *,const curl_ws_frame **)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"]
+ - ["", "", True, "curl_ws_send", "(CURL *,const void *,size_t,size_t *,curl_off_t,unsigned int)", "", "Argument[0]", "Argument[*0].Field[*conn_queue].Field[*_ptr]", "value", "dfc-generated"]
+ - ["", "", True, "curl_ws_send", "(CURL *,const void *,size_t,size_t *,curl_off_t,unsigned int)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"]
+ - ["", "", True, "curlx_dyn_add", "(dynbuf *,const char *)", "", "Argument[*1]", "Argument[*0].Field[**bufr]", "value", "dfc-generated"]
+ - ["", "", True, "curlx_dyn_add", "(dynbuf *,const char *)", "", "Argument[1]", "Argument[*0].Field[**bufr]", "taint", "dfc-generated"]
+ - ["", "", True, "curlx_dyn_addn", "(dynbuf *,const void *,size_t)", "", "Argument[*1]", "Argument[*0].Field[**bufr]", "value", "dfc-generated"]
+ - ["", "", True, "curlx_dyn_addn", "(dynbuf *,const void *,size_t)", "", "Argument[1]", "Argument[*0].Field[**bufr]", "taint", "dfc-generated"]
+ - ["", "", True, "curlx_dyn_addn", "(dynbuf *,const void *,size_t)", "", "Argument[2]", "Argument[*0].Field[*allc]", "taint", "dfc-generated"]
+ - ["", "", True, "curlx_dyn_addn", "(dynbuf *,const void *,size_t)", "", "Argument[2]", "Argument[*0].Field[*leng]", "taint", "dfc-generated"]
+ - ["", "", True, "curlx_dyn_free", "(dynbuf *)", "", "Argument[*0].Field[*allc]", "Argument[*0].Field[*leng]", "value", "dfc-generated"]
+ - ["", "", True, "curlx_dyn_init", "(dynbuf *,size_t)", "", "Argument[1]", "Argument[*0].Field[*toobig]", "value", "dfc-generated"]
+ - ["", "", True, "curlx_dyn_len", "(const dynbuf *)", "", "Argument[*0].Field[*leng]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "curlx_dyn_ptr", "(const dynbuf *)", "", "Argument[*0].Field[**bufr]", "ReturnValue[*]", "value", "dfc-generated"]
+ - ["", "", True, "curlx_dyn_ptr", "(const dynbuf *)", "", "Argument[*0].Field[*bufr]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "curlx_dyn_setlen", "(dynbuf *,size_t)", "", "Argument[1]", "Argument[*0].Field[*leng]", "value", "dfc-generated"]
+ - ["", "", True, "curlx_dyn_tail", "(dynbuf *,size_t)", "", "Argument[1]", "Argument[*0].Field[**bufr]", "taint", "dfc-generated"]
+ - ["", "", True, "curlx_dyn_tail", "(dynbuf *,size_t)", "", "Argument[1]", "Argument[*0].Field[*leng]", "value", "dfc-generated"]
+ - ["", "", True, "curlx_dyn_take", "(dynbuf *,size_t *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"]
+ - ["", "", True, "curlx_dyn_take", "(dynbuf *,size_t *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "curlx_dyn_take", "(dynbuf *,size_t *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"]
+ - ["", "", True, "curlx_dyn_uptr", "(const dynbuf *)", "", "Argument[*0].Field[**bufr]", "ReturnValue[*]", "value", "dfc-generated"]
+ - ["", "", True, "curlx_dyn_uptr", "(const dynbuf *)", "", "Argument[*0].Field[*bufr]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "curlx_dyn_vaddf", "(dynbuf *,const char *,va_list)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "curlx_get_line", "(dynbuf *,FILE *)", "", "Argument[1]", "Argument[*0].Field[**bufr]", "taint", "dfc-generated"]
+ - ["", "", True, "curlx_mstotv", "(timeval *,timediff_t)", "", "Argument[*0]", "ReturnValue[*]", "value", "dfc-generated"]
+ - ["", "", True, "curlx_mstotv", "(timeval *,timediff_t)", "", "Argument[0]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "curlx_sitouz", "(int)", "", "Argument[0]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "curlx_sltosi", "(long)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "curlx_sltoui", "(long)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "curlx_sltous", "(long)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "curlx_sotouz", "(curl_off_t)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "curlx_strtoofft", "(const char *,char **,int,curl_off_t *)", "", "Argument[*0]", "Argument[**1]", "value", "dfc-generated"]
+ - ["", "", True, "curlx_strtoofft", "(const char *,char **,int,curl_off_t *)", "", "Argument[*0]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "curlx_strtoofft", "(const char *,char **,int,curl_off_t *)", "", "Argument[*0]", "Argument[*3]", "taint", "dfc-generated"]
+ - ["", "", True, "curlx_strtoofft", "(const char *,char **,int,curl_off_t *)", "", "Argument[0]", "Argument[**1]", "taint", "dfc-generated"]
+ - ["", "", True, "curlx_strtoofft", "(const char *,char **,int,curl_off_t *)", "", "Argument[0]", "Argument[*1]", "value", "dfc-generated"]
+ - ["", "", True, "curlx_strtoofft", "(const char *,char **,int,curl_off_t *)", "", "Argument[0]", "Argument[*3]", "taint", "dfc-generated"]
+ - ["", "", True, "curlx_sztosi", "(ssize_t)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "curlx_tvtoms", "(timeval *)", "", "Argument[*0].Field[*tv_sec]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "curlx_tvtoms", "(timeval *)", "", "Argument[*0].Field[*tv_usec]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "curlx_uitous", "(unsigned int)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "curlx_ultouc", "(unsigned long)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "curlx_ultous", "(unsigned long)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "curlx_uztosi", "(size_t)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "curlx_uztosz", "(size_t)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "curlx_uztoui", "(size_t)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "curlx_uztoul", "(size_t)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "easysrc_add", "(slist_wc **,const char *)", "", "Argument[**0].Field[**last].Field[**next]", "Argument[**0].Field[**last]", "value", "dfc-generated"]
+ - ["", "", True, "easysrc_add", "(slist_wc **,const char *)", "", "Argument[**0].Field[**last].Field[*next]", "Argument[**0].Field[*last]", "value", "dfc-generated"]
+ - ["", "", True, "easysrc_add", "(slist_wc **,const char *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "findshortopt", "(char)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "formparse", "(OperationConfig *,const char *,tool_mime **,tool_mime **,bool)", "", "Argument[**2]", "Argument[**3]", "value", "df-generated"]
+ - ["", "", True, "formparse", "(OperationConfig *,const char *,tool_mime **,tool_mime **,bool)", "", "Argument[**2]", "Argument[*3]", "taint", "df-generated"]
+ - ["", "", True, "formparse", "(OperationConfig *,const char *,tool_mime **,tool_mime **,bool)", "", "Argument[**3]", "Argument[**2]", "value", "df-generated"]
+ - ["", "", True, "formparse", "(OperationConfig *,const char *,tool_mime **,tool_mime **,bool)", "", "Argument[**3]", "Argument[*3]", "taint", "df-generated"]
+ - ["", "", True, "formparse", "(OperationConfig *,const char *,tool_mime **,tool_mime **,bool)", "", "Argument[*2]", "Argument[**2]", "taint", "df-generated"]
+ - ["", "", True, "formparse", "(OperationConfig *,const char *,tool_mime **,tool_mime **,bool)", "", "Argument[*2]", "Argument[**3]", "taint", "df-generated"]
+ - ["", "", True, "formparse", "(OperationConfig *,const char *,tool_mime **,tool_mime **,bool)", "", "Argument[*2]", "Argument[*3]", "value", "df-generated"]
+ - ["", "", True, "formparse", "(OperationConfig *,const char *,tool_mime **,tool_mime **,bool)", "", "Argument[*3]", "Argument[**2]", "taint", "df-generated"]
+ - ["", "", True, "formparse", "(OperationConfig *,const char *,tool_mime **,tool_mime **,bool)", "", "Argument[*3]", "Argument[**3]", "taint", "df-generated"]
+ - ["", "", True, "formparse", "(OperationConfig *,const char *,tool_mime **,tool_mime **,bool)", "", "Argument[2]", "Argument[**2]", "taint", "df-generated"]
+ - ["", "", True, "formparse", "(OperationConfig *,const char *,tool_mime **,tool_mime **,bool)", "", "Argument[2]", "Argument[**3]", "taint", "df-generated"]
+ - ["", "", True, "formparse", "(OperationConfig *,const char *,tool_mime **,tool_mime **,bool)", "", "Argument[2]", "Argument[*2]", "taint", "df-generated"]
+ - ["", "", True, "formparse", "(OperationConfig *,const char *,tool_mime **,tool_mime **,bool)", "", "Argument[2]", "Argument[*3]", "taint", "df-generated"]
+ - ["", "", True, "formparse", "(OperationConfig *,const char *,tool_mime **,tool_mime **,bool)", "", "Argument[3]", "Argument[**2]", "taint", "df-generated"]
+ - ["", "", True, "formparse", "(OperationConfig *,const char *,tool_mime **,tool_mime **,bool)", "", "Argument[3]", "Argument[**3]", "taint", "df-generated"]
+ - ["", "", True, "formparse", "(OperationConfig *,const char *,tool_mime **,tool_mime **,bool)", "", "Argument[3]", "Argument[*3]", "taint", "df-generated"]
+ - ["", "", True, "get_url_file_name", "(GlobalConfig *,char **,const char *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "getparameter", "(const char *,char *,char *,bool *,GlobalConfig *,OperationConfig *)", "", "Argument[*0]", "Argument[*1]", "value", "df-generated"]
+ - ["", "", True, "getparameter", "(const char *,char *,char *,bool *,GlobalConfig *,OperationConfig *)", "", "Argument[*1]", "Argument[*0]", "value", "df-generated"]
+ - ["", "", True, "getparameter", "(const char *,char *,char *,bool *,GlobalConfig *,OperationConfig *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"]
+ - ["", "", True, "getparameter", "(const char *,char *,char *,bool *,GlobalConfig *,OperationConfig *)", "", "Argument[4]", "Argument[*4].Field[**last].Field[*global]", "value", "dfc-generated"]
+ - ["", "", True, "getpass_r", "(const char *,char *,size_t)", "", "Argument[*1]", "ReturnValue[*]", "value", "dfc-generated"]
+ - ["", "", True, "getpass_r", "(const char *,char *,size_t)", "", "Argument[1]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "glob_cleanup", "(URLGlob **)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "glob_match_url", "(char **,char *,URLGlob *)", "", "Argument[*1]", "Argument[1]", "taint", "dfc-generated"]
+ - ["", "", True, "glob_match_url", "(char **,char *,URLGlob *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "glob_next_url", "(char **,URLGlob *)", "", "Argument[*1].Field[**glob_buffer]", "Argument[**0]", "value", "dfc-generated"]
+ - ["", "", True, "glob_next_url", "(char **,URLGlob *)", "", "Argument[*1].Field[*glob_buffer]", "Argument[**0]", "taint", "dfc-generated"]
+ - ["", "", True, "glob_next_url", "(char **,URLGlob *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "glob_url", "(URLGlob **,char *,curl_off_t *,FILE *)", "", "Argument[*1]", "Argument[**0].Field[*pos]", "taint", "dfc-generated"]
+ - ["", "", True, "glob_url", "(URLGlob **,char *,curl_off_t *,FILE *)", "", "Argument[1]", "Argument[**0].Field[*pos]", "taint", "dfc-generated"]
+ - ["", "", True, "glob_url", "(URLGlob **,char *,curl_off_t *,FILE *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "helpscan", "(unsigned char *,size_t,scan_ctx *)", "", "Argument[*0]", "Argument[*2].Field[*obuf]", "value", "dfc-generated"]
+ - ["", "", True, "helpscan", "(unsigned char *,size_t,scan_ctx *)", "", "Argument[*0]", "Argument[*2].Field[*rbuf]", "value", "dfc-generated"]
+ - ["", "", True, "helpscan", "(unsigned char *,size_t,scan_ctx *)", "", "Argument[0]", "Argument[*2].Field[*obuf]", "taint", "dfc-generated"]
+ - ["", "", True, "helpscan", "(unsigned char *,size_t,scan_ctx *)", "", "Argument[0]", "Argument[*2].Field[*rbuf]", "taint", "dfc-generated"]
+ - ["", "", True, "inithelpscan", "(scan_ctx *,const char *,const char *,const char *)", "", "Argument[*1]", "Argument[*0].Field[**trigger]", "value", "dfc-generated"]
+ - ["", "", True, "inithelpscan", "(scan_ctx *,const char *,const char *,const char *)", "", "Argument[*2]", "Argument[*0].Field[**arg]", "value", "dfc-generated"]
+ - ["", "", True, "inithelpscan", "(scan_ctx *,const char *,const char *,const char *)", "", "Argument[*3]", "Argument[*0].Field[**endarg]", "value", "dfc-generated"]
+ - ["", "", True, "inithelpscan", "(scan_ctx *,const char *,const char *,const char *)", "", "Argument[1]", "Argument[*0].Field[*trigger]", "value", "dfc-generated"]
+ - ["", "", True, "inithelpscan", "(scan_ctx *,const char *,const char *,const char *)", "", "Argument[2]", "Argument[*0].Field[*arg]", "value", "dfc-generated"]
+ - ["", "", True, "inithelpscan", "(scan_ctx *,const char *,const char *,const char *)", "", "Argument[3]", "Argument[*0].Field[*endarg]", "value", "dfc-generated"]
+ - ["", "", True, "ipfs_url_rewrite", "(CURLU *,const char *,char **,OperationConfig *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "jsonquoted", "(const char *,size_t,dynbuf *,bool)", "", "Argument[*0]", "Argument[*2].Field[**bufr]", "value", "dfc-generated"]
+ - ["", "", True, "jsonquoted", "(const char *,size_t,dynbuf *,bool)", "", "Argument[0]", "Argument[*2].Field[**bufr]", "taint", "dfc-generated"]
+ - ["", "", True, "new_getout", "(OperationConfig *)", "", "Argument[*0].Field[*default_node_flags]", "ReturnValue[*].Field[*flags]", "value", "dfc-generated"]
+ - ["", "", True, "oct2nummax", "(long *,const char *,long)", "", "Argument[*1]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "oct2nummax", "(long *,const char *,long)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "oct2nummax", "(long *,const char *,long)", "", "Argument[1]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "operate", "(GlobalConfig *,int,char *[])", "", "Argument[0]", "Argument[*0].Field[**last].Field[*global]", "value", "dfc-generated"]
+ - ["", "", True, "parse_args", "(GlobalConfig *,int,char *[])", "", "Argument[0]", "Argument[*0].Field[**last].Field[*global]", "value", "dfc-generated"]
+ - ["", "", True, "parseconfig", "(const char *,GlobalConfig *)", "", "Argument[1]", "Argument[*1].Field[**last].Field[*global]", "value", "dfc-generated"]
+ - ["", "", True, "progress_meter", "(GlobalConfig *,timeval *,bool)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "progressbarinit", "(ProgressData *,OperationConfig *)", "", "Argument[*1].Field[*resume_from]", "Argument[*0].Field[*initial_size]", "value", "dfc-generated"]
+ - ["", "", True, "proto2num", "(OperationConfig *,const char *const *,char **,const char *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "secs2ms", "(long *,const char *)", "", "Argument[*1]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "secs2ms", "(long *,const char *)", "", "Argument[1]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "setvariable", "(GlobalConfig *,const char *)", "", "Argument[*0].Field[**variables]", "Argument[*0].Field[**variables].Field[**next]", "value", "dfc-generated"]
+ - ["", "", True, "setvariable", "(GlobalConfig *,const char *)", "", "Argument[*0].Field[*variables]", "Argument[*0].Field[**variables].Field[*next]", "value", "dfc-generated"]
+ - ["", "", True, "slist_wc_append", "(slist_wc *,const char *)", "", "Argument[*0]", "ReturnValue[*]", "value", "df-generated"]
+ - ["", "", True, "slist_wc_append", "(slist_wc *,const char *)", "", "Argument[0]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "str2num", "(long *,const char *)", "", "Argument[*1]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "str2num", "(long *,const char *)", "", "Argument[1]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "str2offset", "(curl_off_t *,const char *)", "", "Argument[*1]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "str2offset", "(curl_off_t *,const char *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "str2offset", "(curl_off_t *,const char *)", "", "Argument[1]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "str2unum", "(long *,const char *)", "", "Argument[*1]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "str2unum", "(long *,const char *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "str2unum", "(long *,const char *)", "", "Argument[1]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "str2unummax", "(long *,const char *,long)", "", "Argument[*1]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "str2unummax", "(long *,const char *,long)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "str2unummax", "(long *,const char *,long)", "", "Argument[1]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "tool2curlmime", "(CURL *,tool_mime *,curl_mime **)", "", "Argument[*2]", "Argument[**2].Field[**firstpart].Field[*parent]", "value", "dfc-generated"]
+ - ["", "", True, "tool2curlmime", "(CURL *,tool_mime *,curl_mime **)", "", "Argument[*2]", "Argument[**2].Field[**lastpart].Field[*parent]", "value", "dfc-generated"]
+ - ["", "", True, "tool2curlmime", "(CURL *,tool_mime *,curl_mime **)", "", "Argument[2]", "Argument[**2].Field[**firstpart].Field[*parent]", "taint", "dfc-generated"]
+ - ["", "", True, "tool2curlmime", "(CURL *,tool_mime *,curl_mime **)", "", "Argument[2]", "Argument[**2].Field[**lastpart].Field[*parent]", "taint", "dfc-generated"]
+ - ["", "", True, "tool2curlmime", "(CURL *,tool_mime *,curl_mime **)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "tool_header_cb", "(char *,size_t,size_t,void *)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "tool_header_cb", "(char *,size_t,size_t,void *)", "", "Argument[2]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "tool_mime_stdin_read", "(char *,size_t,size_t,void *)", "", "Argument[2]", "Argument[*3].Field[*curpos]", "taint", "dfc-generated"]
+ - ["", "", True, "tool_mime_stdin_read", "(char *,size_t,size_t,void *)", "", "Argument[2]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "tool_mime_stdin_seek", "(void *,curl_off_t,int)", "", "Argument[*0].Field[*size]", "Argument[*0].Field[*curpos]", "taint", "dfc-generated"]
+ - ["", "", True, "tool_mime_stdin_seek", "(void *,curl_off_t,int)", "", "Argument[1]", "Argument[*0].Field[*curpos]", "value", "dfc-generated"]
+ - ["", "", True, "tool_read_cb", "(char *,size_t,size_t,void *)", "", "Argument[*3]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "tool_setopt_slist", "(CURL *,GlobalConfig *,const char *,CURLoption,curl_slist *)", "", "Argument[*4].Field[**next].Field[**next]", "Argument[*4]", "value", "dfc-generated"]
+ - ["", "", True, "tool_setopt_slist", "(CURL *,GlobalConfig *,const char *,CURLoption,curl_slist *)", "", "Argument[*4].Field[**next]", "Argument[*4]", "value", "dfc-generated"]
+ - ["", "", True, "tvdiff", "(timeval,timeval)", "", "Argument[0].Field[*tv_sec]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "tvdiff", "(timeval,timeval)", "", "Argument[0].Field[*tv_usec]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "tvdiff", "(timeval,timeval)", "", "Argument[1].Field[*tv_sec]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "tvdiff", "(timeval,timeval)", "", "Argument[1].Field[*tv_usec]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "varexpand", "(GlobalConfig *,const char *,dynbuf *,bool *)", "", "Argument[*1]", "Argument[*2].Field[**bufr]", "value", "dfc-generated"]
+ - ["", "", True, "varexpand", "(GlobalConfig *,const char *,dynbuf *,bool *)", "", "Argument[1]", "Argument[*2].Field[**bufr]", "taint", "dfc-generated"]
+ - ["", "", True, "varexpand", "(GlobalConfig *,const char *,dynbuf *,bool *)", "", "Argument[1]", "Argument[*2].Field[*allc]", "taint", "dfc-generated"]
+ - ["", "", True, "varexpand", "(GlobalConfig *,const char *,dynbuf *,bool *)", "", "Argument[1]", "Argument[*2].Field[*leng]", "taint", "dfc-generated"]
+ - ["", "", True, "xferinfo_cb", "(void *,curl_off_t,curl_off_t,curl_off_t,curl_off_t)", "", "Argument[1]", "Argument[*0].Field[*dltotal]", "value", "dfc-generated"]
+ - ["", "", True, "xferinfo_cb", "(void *,curl_off_t,curl_off_t,curl_off_t,curl_off_t)", "", "Argument[2]", "Argument[*0].Field[*dlnow]", "value", "dfc-generated"]
+ - ["", "", True, "xferinfo_cb", "(void *,curl_off_t,curl_off_t,curl_off_t,curl_off_t)", "", "Argument[3]", "Argument[*0].Field[*ultotal]", "value", "dfc-generated"]
+ - ["", "", True, "xferinfo_cb", "(void *,curl_off_t,curl_off_t,curl_off_t,curl_off_t)", "", "Argument[4]", "Argument[*0].Field[*ulnow]", "value", "dfc-generated"]
diff --git a/cpp/ql/lib/ext/generated/libidn2/libidn2.model.yml b/cpp/ql/lib/ext/generated/libidn2/libidn2.model.yml
new file mode 100644
index 000000000000..2c6b88ed7143
--- /dev/null
+++ b/cpp/ql/lib/ext/generated/libidn2/libidn2.model.yml
@@ -0,0 +1,148 @@
+# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT.
+extensions:
+ - addsTo:
+ pack: codeql/cpp-all
+ extensible: summaryModel
+ data:
+ - ["", "", True, "_idn2_punycode_decode", "(size_t,const char[],size_t *,uint32_t[])", "", "Argument[*1]", "Argument[*3]", "value", "dfc-generated"]
+ - ["", "", True, "_idn2_punycode_decode", "(size_t,const char[],size_t *,uint32_t[])", "", "Argument[1]", "Argument[*3]", "taint", "dfc-generated"]
+ - ["", "", True, "_idn2_punycode_decode", "(size_t,const char[],size_t *,uint32_t[])", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "_idn2_punycode_decode", "(size_t,const char[],size_t *,uint32_t[])", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"]
+ - ["", "", True, "_idn2_punycode_encode", "(size_t,const uint32_t[],size_t *,char[])", "", "Argument[*1]", "Argument[*3]", "value", "dfc-generated"]
+ - ["", "", True, "_idn2_punycode_encode", "(size_t,const uint32_t[],size_t *,char[])", "", "Argument[1]", "Argument[*3]", "taint", "dfc-generated"]
+ - ["", "", True, "_idn2_punycode_encode", "(size_t,const uint32_t[],size_t *,char[])", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "c_strcasecmp", "(const char *,const char *)", "", "Argument[*0]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "c_strcasecmp", "(const char *,const char *)", "", "Argument[*1]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "c_strcasecmp", "(const char *,const char *)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "c_strcasecmp", "(const char *,const char *)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "c_strncasecmp", "(const char *,const char *,size_t)", "", "Argument[*0]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "c_strncasecmp", "(const char *,const char *,size_t)", "", "Argument[*1]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "c_strncasecmp", "(const char *,const char *,size_t)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "c_strncasecmp", "(const char *,const char *,size_t)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "c_tolower", "(int)", "", "Argument[0]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "c_toupper", "(int)", "", "Argument[0]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "cmdline_parser2", "(int,char **,gengetopt_args_info *,int,int,int)", "", "Argument[**1]", "Argument[*2].Field[***inputs]", "value", "dfc-generated"]
+ - ["", "", True, "cmdline_parser2", "(int,char **,gengetopt_args_info *,int,int,int)", "", "Argument[*1]", "Argument[*2].Field[***inputs]", "taint", "dfc-generated"]
+ - ["", "", True, "cmdline_parser2", "(int,char **,gengetopt_args_info *,int,int,int)", "", "Argument[0]", "Argument[*2].Field[*inputs_num]", "taint", "dfc-generated"]
+ - ["", "", True, "cmdline_parser2", "(int,char **,gengetopt_args_info *,int,int,int)", "", "Argument[1]", "Argument[*2].Field[***inputs]", "taint", "dfc-generated"]
+ - ["", "", True, "cmdline_parser", "(int,char **,gengetopt_args_info *)", "", "Argument[**1]", "Argument[*2].Field[***inputs]", "value", "dfc-generated"]
+ - ["", "", True, "cmdline_parser", "(int,char **,gengetopt_args_info *)", "", "Argument[*1]", "Argument[*2].Field[***inputs]", "taint", "dfc-generated"]
+ - ["", "", True, "cmdline_parser", "(int,char **,gengetopt_args_info *)", "", "Argument[0]", "Argument[*2].Field[*inputs_num]", "taint", "dfc-generated"]
+ - ["", "", True, "cmdline_parser", "(int,char **,gengetopt_args_info *)", "", "Argument[1]", "Argument[*2].Field[***inputs]", "taint", "dfc-generated"]
+ - ["", "", True, "cmdline_parser_ext", "(int,char **,gengetopt_args_info *,cmdline_parser_params *)", "", "Argument[**1]", "Argument[*2].Field[***inputs]", "value", "dfc-generated"]
+ - ["", "", True, "cmdline_parser_ext", "(int,char **,gengetopt_args_info *,cmdline_parser_params *)", "", "Argument[*1]", "Argument[*2].Field[***inputs]", "taint", "dfc-generated"]
+ - ["", "", True, "cmdline_parser_ext", "(int,char **,gengetopt_args_info *,cmdline_parser_params *)", "", "Argument[0]", "Argument[*2].Field[*inputs_num]", "taint", "dfc-generated"]
+ - ["", "", True, "cmdline_parser_ext", "(int,char **,gengetopt_args_info *,cmdline_parser_params *)", "", "Argument[1]", "Argument[*2].Field[***inputs]", "taint", "dfc-generated"]
+ - ["", "", True, "get_map_data", "(uint32_t *,const IDNAMap *)", "", "Argument[*1].Field[*nmappings]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "get_map_data", "(uint32_t *,const IDNAMap *)", "", "Argument[*1].Field[*offset]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "get_map_data", "(uint32_t *,const IDNAMap *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "get_stat_atime", "(const stat *)", "", "Argument[*0].Field[*st_atim]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "get_stat_atime_ns", "(const stat *)", "", "Argument[*0].Field[*st_atim].Field[*tv_nsec]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "get_stat_ctime", "(const stat *)", "", "Argument[*0].Field[*st_ctim]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "get_stat_ctime_ns", "(const stat *)", "", "Argument[*0].Field[*st_ctim].Field[*tv_nsec]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "get_stat_mtime", "(const stat *)", "", "Argument[*0].Field[*st_mtim]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "get_stat_mtime_ns", "(const stat *)", "", "Argument[*0].Field[*st_mtim].Field[*tv_nsec]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "gl_uninorm_decompose_merge_sort_inplace", "(ucs4_with_ccc *,size_t,ucs4_with_ccc *)", "", "Argument[*0]", "Argument[*2]", "value", "dfc-generated"]
+ - ["", "", True, "gl_uninorm_decompose_merge_sort_inplace", "(ucs4_with_ccc *,size_t,ucs4_with_ccc *)", "", "Argument[*2]", "Argument[*0]", "value", "dfc-generated"]
+ - ["", "", True, "gl_uninorm_decompose_merge_sort_inplace", "(ucs4_with_ccc *,size_t,ucs4_with_ccc *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "gl_uninorm_decompose_merge_sort_inplace", "(ucs4_with_ccc *,size_t,ucs4_with_ccc *)", "", "Argument[0]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "gl_uninorm_decompose_merge_sort_inplace", "(ucs4_with_ccc *,size_t,ucs4_with_ccc *)", "", "Argument[1]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "gl_uninorm_decompose_merge_sort_inplace", "(ucs4_with_ccc *,size_t,ucs4_with_ccc *)", "", "Argument[1]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "gl_uninorm_decompose_merge_sort_inplace", "(ucs4_with_ccc *,size_t,ucs4_with_ccc *)", "", "Argument[2]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "gl_uninorm_decompose_merge_sort_inplace", "(ucs4_with_ccc *,size_t,ucs4_with_ccc *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "idn2_lookup_u8", "(const uint8_t *,uint8_t **,int)", "", "Argument[*0]", "Argument[**1]", "value", "dfc-generated"]
+ - ["", "", True, "idn2_lookup_u8", "(const uint8_t *,uint8_t **,int)", "", "Argument[0]", "Argument[**1]", "taint", "dfc-generated"]
+ - ["", "", True, "idn2_punycode_decode", "(const char *,size_t,uint32_t *,size_t *)", "", "Argument[*0]", "Argument[*2]", "value", "dfc-generated"]
+ - ["", "", True, "idn2_punycode_decode", "(const char *,size_t,uint32_t *,size_t *)", "", "Argument[0]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "idn2_punycode_decode", "(const char *,size_t,uint32_t *,size_t *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "idn2_punycode_decode", "(const char *,size_t,uint32_t *,size_t *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"]
+ - ["", "", True, "idn2_punycode_encode", "(const uint32_t *,size_t,char *,size_t *)", "", "Argument[*0]", "Argument[*2]", "value", "dfc-generated"]
+ - ["", "", True, "idn2_punycode_encode", "(const uint32_t *,size_t,char *,size_t *)", "", "Argument[0]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "idn2_punycode_encode", "(const uint32_t *,size_t,char *,size_t *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"]
+ - ["", "", True, "idn2_register_u8", "(const uint8_t *,const uint8_t *,uint8_t **,int)", "", "Argument[*0]", "Argument[**2]", "value", "dfc-generated"]
+ - ["", "", True, "idn2_register_u8", "(const uint8_t *,const uint8_t *,uint8_t **,int)", "", "Argument[*1]", "Argument[**2]", "value", "dfc-generated"]
+ - ["", "", True, "idn2_register_u8", "(const uint8_t *,const uint8_t *,uint8_t **,int)", "", "Argument[0]", "Argument[**2]", "taint", "dfc-generated"]
+ - ["", "", True, "idn2_register_u8", "(const uint8_t *,const uint8_t *,uint8_t **,int)", "", "Argument[1]", "Argument[**2]", "taint", "dfc-generated"]
+ - ["", "", True, "idn2_register_ul", "(const char *,const char *,char **,int)", "", "Argument[*1]", "Argument[**2]", "value", "dfc-generated"]
+ - ["", "", True, "idn2_register_ul", "(const char *,const char *,char **,int)", "", "Argument[1]", "Argument[**2]", "taint", "dfc-generated"]
+ - ["", "", True, "idn2_to_ascii_8z", "(const char *,char **,int)", "", "Argument[*0]", "Argument[**1]", "value", "dfc-generated"]
+ - ["", "", True, "idn2_to_ascii_8z", "(const char *,char **,int)", "", "Argument[0]", "Argument[**1]", "taint", "dfc-generated"]
+ - ["", "", True, "idn2_to_unicode_44i", "(const uint32_t *,size_t,uint32_t *,size_t *,int)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"]
+ - ["", "", True, "last_component", "(const char *)", "", "Argument[*0]", "ReturnValue[*]", "value", "dfc-generated"]
+ - ["", "", True, "last_component", "(const char *)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "last_component", "(const char *)", "", "Argument[0]", "ReturnValue[*]", "taint", "dfc-generated"]
+ - ["", "", True, "mem_cd_iconveh", "(const char *,size_t,const iconveh_t *,iconv_ilseq_handler,size_t *,char **,size_t *)", "", "Argument[6]", "Argument[*6]", "taint", "dfc-generated"]
+ - ["", "", True, "mem_iconveh", "(const char *,size_t,const char *,const char *,iconv_ilseq_handler,size_t *,char **,size_t *)", "", "Argument[*0]", "Argument[**6]", "value", "dfc-generated"]
+ - ["", "", True, "mem_iconveh", "(const char *,size_t,const char *,const char *,iconv_ilseq_handler,size_t *,char **,size_t *)", "", "Argument[0]", "Argument[**6]", "taint", "dfc-generated"]
+ - ["", "", True, "mem_iconveh", "(const char *,size_t,const char *,const char *,iconv_ilseq_handler,size_t *,char **,size_t *)", "", "Argument[1]", "Argument[*7]", "value", "dfc-generated"]
+ - ["", "", True, "mem_iconveh", "(const char *,size_t,const char *,const char *,iconv_ilseq_handler,size_t *,char **,size_t *)", "", "Argument[7]", "Argument[*7]", "taint", "dfc-generated"]
+ - ["", "", True, "mem_iconveha", "(const char *,size_t,const char *,const char *,bool,iconv_ilseq_handler,size_t *,char **,size_t *)", "", "Argument[*0]", "Argument[**7]", "value", "dfc-generated"]
+ - ["", "", True, "mem_iconveha", "(const char *,size_t,const char *,const char *,bool,iconv_ilseq_handler,size_t *,char **,size_t *)", "", "Argument[0]", "Argument[**7]", "taint", "dfc-generated"]
+ - ["", "", True, "mem_iconveha", "(const char *,size_t,const char *,const char *,bool,iconv_ilseq_handler,size_t *,char **,size_t *)", "", "Argument[1]", "Argument[*8]", "value", "dfc-generated"]
+ - ["", "", True, "mem_iconveha", "(const char *,size_t,const char *,const char *,bool,iconv_ilseq_handler,size_t *,char **,size_t *)", "", "Argument[8]", "Argument[*8]", "taint", "dfc-generated"]
+ - ["", "", True, "stat_time_normalize", "(int,stat *)", "", "Argument[0]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "str_iconveh", "(const char *,const char *,const char *,iconv_ilseq_handler)", "", "Argument[*0]", "ReturnValue[*]", "value", "dfc-generated"]
+ - ["", "", True, "str_iconveh", "(const char *,const char *,const char *,iconv_ilseq_handler)", "", "Argument[0]", "ReturnValue[*]", "taint", "dfc-generated"]
+ - ["", "", True, "str_iconveha", "(const char *,const char *,const char *,bool,iconv_ilseq_handler)", "", "Argument[*0]", "ReturnValue[*]", "value", "dfc-generated"]
+ - ["", "", True, "str_iconveha", "(const char *,const char *,const char *,bool,iconv_ilseq_handler)", "", "Argument[0]", "ReturnValue[*]", "taint", "dfc-generated"]
+ - ["", "", True, "u32_normalize", "(uninorm_t,const uint32_t *,size_t,uint32_t *,uint32_t *__restrict__,size_t *)", "", "Argument[*1]", "Argument[*3]", "value", "dfc-generated"]
+ - ["", "", True, "u32_normalize", "(uninorm_t,const uint32_t *,size_t,uint32_t *,uint32_t *__restrict__,size_t *)", "", "Argument[*1]", "ReturnValue[*]", "value", "dfc-generated"]
+ - ["", "", True, "u32_normalize", "(uninorm_t,const uint32_t *,size_t,uint32_t *,uint32_t *__restrict__,size_t *)", "", "Argument[*3]", "ReturnValue[*]", "value", "dfc-generated"]
+ - ["", "", True, "u32_normalize", "(uninorm_t,const uint32_t *,size_t,uint32_t *,uint32_t *__restrict__,size_t *)", "", "Argument[1]", "Argument[*3]", "taint", "dfc-generated"]
+ - ["", "", True, "u32_normalize", "(uninorm_t,const uint32_t *,size_t,uint32_t *,uint32_t *__restrict__,size_t *)", "", "Argument[1]", "ReturnValue[*]", "taint", "dfc-generated"]
+ - ["", "", True, "u32_normalize", "(uninorm_t,const uint32_t *,size_t,uint32_t *,uint32_t *__restrict__,size_t *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"]
+ - ["", "", True, "u32_normalize", "(uninorm_t,const uint32_t *,size_t,uint32_t *,uint32_t *__restrict__,size_t *)", "", "Argument[3]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "u32_normalize", "(uninorm_t,const uint32_t *,size_t,uint32_t *,uint32_t *__restrict__,size_t *)", "", "Argument[3]", "ReturnValue[*]", "taint", "dfc-generated"]
+ - ["", "", True, "u32_normalize", "(uninorm_t,const uint32_t *,size_t,uint32_t *,uint32_t *__restrict__,size_t *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"]
+ - ["", "", True, "u8_mbtouc_aux", "(ucs4_t *,const uint8_t *,size_t)", "", "Argument[*1]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "u8_mbtouc_aux", "(ucs4_t *,const uint8_t *,size_t)", "", "Argument[1]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "uc_bidi_category", "(ucs4_t)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "uc_bidi_class", "(ucs4_t)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "uc_canonical_decomposition", "(ucs4_t,ucs4_t *)", "", "Argument[0]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "uc_canonical_decomposition", "(ucs4_t,ucs4_t *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "uc_combining_class", "(ucs4_t)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "uc_composition", "(ucs4_t,ucs4_t)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "uc_composition", "(ucs4_t,ucs4_t)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "uc_general_category", "(ucs4_t)", "", "Argument[0]", "ReturnValue.Field[*bitmask]", "taint", "dfc-generated"]
+ - ["", "", True, "uc_is_general_category_withtable", "(ucs4_t,uint32_t)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "uc_is_general_category_withtable", "(ucs4_t,uint32_t)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "uc_joining_type", "(ucs4_t)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "uc_script", "(ucs4_t)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "uc_script", "(ucs4_t)", "", "Argument[0]", "ReturnValue[*]", "taint", "dfc-generated"]
+ - ["", "", True, "uc_script_byname", "(const char *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "uc_script_byname", "(const char *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"]
+ - ["", "", True, "uc_script_byname", "(const char *)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "uc_script_byname", "(const char *)", "", "Argument[0]", "ReturnValue[*]", "taint", "df-generated"]
+ - ["", "", True, "version_etc", "(FILE *,const char *,const char *,const char *,...)", "", "Argument[*1]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "version_etc", "(FILE *,const char *,const char *,const char *,...)", "", "Argument[*2]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "version_etc", "(FILE *,const char *,const char *,const char *,...)", "", "Argument[*3]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "version_etc", "(FILE *,const char *,const char *,const char *,...)", "", "Argument[1]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "version_etc", "(FILE *,const char *,const char *,const char *,...)", "", "Argument[2]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "version_etc", "(FILE *,const char *,const char *,const char *,...)", "", "Argument[3]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "version_etc_ar", "(FILE *,const char *,const char *,const char *,const char *const *)", "", "Argument[**4]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "version_etc_ar", "(FILE *,const char *,const char *,const char *,const char *const *)", "", "Argument[*1]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "version_etc_ar", "(FILE *,const char *,const char *,const char *,const char *const *)", "", "Argument[*2]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "version_etc_ar", "(FILE *,const char *,const char *,const char *,const char *const *)", "", "Argument[*3]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "version_etc_ar", "(FILE *,const char *,const char *,const char *,const char *const *)", "", "Argument[*4]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "version_etc_ar", "(FILE *,const char *,const char *,const char *,const char *const *)", "", "Argument[1]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "version_etc_ar", "(FILE *,const char *,const char *,const char *,const char *const *)", "", "Argument[2]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "version_etc_ar", "(FILE *,const char *,const char *,const char *,const char *const *)", "", "Argument[3]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "version_etc_ar", "(FILE *,const char *,const char *,const char *,const char *const *)", "", "Argument[4]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "version_etc_arn", "(FILE *,const char *,const char *,const char *,const char *const *,size_t)", "", "Argument[**4]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "version_etc_arn", "(FILE *,const char *,const char *,const char *,const char *const *,size_t)", "", "Argument[*1]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "version_etc_arn", "(FILE *,const char *,const char *,const char *,const char *const *,size_t)", "", "Argument[*2]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "version_etc_arn", "(FILE *,const char *,const char *,const char *,const char *const *,size_t)", "", "Argument[*3]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "version_etc_arn", "(FILE *,const char *,const char *,const char *,const char *const *,size_t)", "", "Argument[*4]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "version_etc_arn", "(FILE *,const char *,const char *,const char *,const char *const *,size_t)", "", "Argument[1]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "version_etc_arn", "(FILE *,const char *,const char *,const char *,const char *const *,size_t)", "", "Argument[2]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "version_etc_arn", "(FILE *,const char *,const char *,const char *,const char *const *,size_t)", "", "Argument[3]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "version_etc_arn", "(FILE *,const char *,const char *,const char *,const char *const *,size_t)", "", "Argument[4]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "version_etc_va", "(FILE *,const char *,const char *,const char *,va_list)", "", "Argument[*1]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "version_etc_va", "(FILE *,const char *,const char *,const char *,va_list)", "", "Argument[*2]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "version_etc_va", "(FILE *,const char *,const char *,const char *,va_list)", "", "Argument[*3]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "version_etc_va", "(FILE *,const char *,const char *,const char *,va_list)", "", "Argument[*4]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "version_etc_va", "(FILE *,const char *,const char *,const char *,va_list)", "", "Argument[1]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "version_etc_va", "(FILE *,const char *,const char *,const char *,va_list)", "", "Argument[2]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "version_etc_va", "(FILE *,const char *,const char *,const char *,va_list)", "", "Argument[3]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "version_etc_va", "(FILE *,const char *,const char *,const char *,va_list)", "", "Argument[4]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "version_etc_va", "(FILE *,const char *,const char *,const char *,va_list)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"]
diff --git a/cpp/ql/lib/ext/generated/libssh2/libssh2.model.yml b/cpp/ql/lib/ext/generated/libssh2/libssh2.model.yml
new file mode 100644
index 000000000000..f531e19099b5
--- /dev/null
+++ b/cpp/ql/lib/ext/generated/libssh2/libssh2.model.yml
@@ -0,0 +1,517 @@
+# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT.
+extensions:
+ - addsTo:
+ pack: codeql/cpp-all
+ extensible: summaryModel
+ data:
+ - ["", "", True, "_libssh2_base64_decode", "(LIBSSH2_SESSION *,char **,size_t *,const char *,size_t)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_channel_close", "(LIBSSH2_CHANNEL *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "_libssh2_channel_extended_data", "(LIBSSH2_CHANNEL *,int)", "", "Argument[1]", "Argument[*0].Field[*remote].Field[*extended_data_ignore_mode]", "value", "dfc-generated"]
+ - ["", "", True, "_libssh2_channel_flush", "(LIBSSH2_CHANNEL *,int)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "_libssh2_channel_forward_cancel", "(LIBSSH2_LISTENER *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "_libssh2_channel_free", "(LIBSSH2_CHANNEL *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "_libssh2_channel_locate", "(LIBSSH2_SESSION *,uint32_t)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "_libssh2_channel_locate", "(LIBSSH2_SESSION *,uint32_t)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"]
+ - ["", "", True, "_libssh2_channel_nextid", "(LIBSSH2_SESSION *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "_libssh2_channel_open", "(LIBSSH2_SESSION *,const char *,uint32_t,uint32_t,uint32_t,const unsigned char *,size_t)", "", "Argument[*1]", "Argument[*0].Field[**open_channel].Field[**channel_type]", "value", "dfc-generated"]
+ - ["", "", True, "_libssh2_channel_open", "(LIBSSH2_SESSION *,const char *,uint32_t,uint32_t,uint32_t,const unsigned char *,size_t)", "", "Argument[*1]", "ReturnValue[*].Field[**channel_type]", "value", "dfc-generated"]
+ - ["", "", True, "_libssh2_channel_open", "(LIBSSH2_SESSION *,const char *,uint32_t,uint32_t,uint32_t,const unsigned char *,size_t)", "", "Argument[0]", "Argument[*0].Field[**open_channel].Field[*session]", "value", "dfc-generated"]
+ - ["", "", True, "_libssh2_channel_open", "(LIBSSH2_SESSION *,const char *,uint32_t,uint32_t,uint32_t,const unsigned char *,size_t)", "", "Argument[0]", "ReturnValue[*].Field[*session]", "value", "dfc-generated"]
+ - ["", "", True, "_libssh2_channel_open", "(LIBSSH2_SESSION *,const char *,uint32_t,uint32_t,uint32_t,const unsigned char *,size_t)", "", "Argument[1]", "Argument[*0].Field[**open_channel].Field[**channel_type]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_channel_open", "(LIBSSH2_SESSION *,const char *,uint32_t,uint32_t,uint32_t,const unsigned char *,size_t)", "", "Argument[1]", "ReturnValue[*].Field[**channel_type]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_channel_open", "(LIBSSH2_SESSION *,const char *,uint32_t,uint32_t,uint32_t,const unsigned char *,size_t)", "", "Argument[3]", "ReturnValue[*].Field[*remote].Field[*window_size]", "value", "dfc-generated"]
+ - ["", "", True, "_libssh2_channel_open", "(LIBSSH2_SESSION *,const char *,uint32_t,uint32_t,uint32_t,const unsigned char *,size_t)", "", "Argument[3]", "ReturnValue[*].Field[*remote].Field[*window_size_initial]", "value", "dfc-generated"]
+ - ["", "", True, "_libssh2_channel_open", "(LIBSSH2_SESSION *,const char *,uint32_t,uint32_t,uint32_t,const unsigned char *,size_t)", "", "Argument[4]", "ReturnValue[*].Field[*remote].Field[*packet_size]", "value", "dfc-generated"]
+ - ["", "", True, "_libssh2_channel_process_startup", "(LIBSSH2_CHANNEL *,const char *,size_t,const char *,size_t)", "", "Argument[2]", "Argument[*0].Field[*process_packet_len]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_channel_read", "(LIBSSH2_CHANNEL *,int,char *,size_t)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "_libssh2_channel_read", "(LIBSSH2_CHANNEL *,int,char *,size_t)", "", "Argument[3]", "Argument[*0]", "taint", "df-generated"]
+ - ["", "", True, "_libssh2_channel_read", "(LIBSSH2_CHANNEL *,int,char *,size_t)", "", "Argument[3]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "_libssh2_channel_receive_window_adjust", "(LIBSSH2_CHANNEL *,uint32_t,unsigned char,unsigned int *)", "", "Argument[1]", "Argument[*0].Field[*adjust_adjust]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_channel_receive_window_adjust", "(LIBSSH2_CHANNEL *,uint32_t,unsigned char,unsigned int *)", "", "Argument[1]", "Argument[*0].Field[*adjust_queue]", "value", "dfc-generated"]
+ - ["", "", True, "_libssh2_channel_receive_window_adjust", "(LIBSSH2_CHANNEL *,uint32_t,unsigned char,unsigned int *)", "", "Argument[1]", "Argument[*0].Field[*remote].Field[*window_size]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_channel_write", "(LIBSSH2_CHANNEL *,int,const unsigned char *,size_t)", "", "Argument[3]", "Argument[*0].Field[*local].Field[*window_size]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_channel_write", "(LIBSSH2_CHANNEL *,int,const unsigned char *,size_t)", "", "Argument[3]", "Argument[*0].Field[*write_bufwrite]", "value", "dfc-generated"]
+ - ["", "", True, "_libssh2_channel_write", "(LIBSSH2_CHANNEL *,int,const unsigned char *,size_t)", "", "Argument[3]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_cipher_crypt", "(EVP_CIPHER_CTX **,..(*)(..),int,unsigned char *,size_t,int)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_cipher_init", "(EVP_CIPHER_CTX **,..(*)(..),unsigned char *,unsigned char *,int)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_copy_string", "(LIBSSH2_SESSION *,string_buf *,unsigned char **,size_t *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_curve25519_gen_k", "(BIGNUM **,uint8_t[32],uint8_t[32])", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_dh_dtor", "(BIGNUM **)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_dh_key_pair", "(BIGNUM **,BIGNUM *,BIGNUM *,BIGNUM *,int,BN_CTX *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_dh_secret", "(BIGNUM **,BIGNUM *,BIGNUM *,BIGNUM *,BN_CTX *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_ecdh_gen_k", "(BIGNUM **,EVP_PKEY *,const unsigned char *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_ecdsa_create_key", "(LIBSSH2_SESSION *,EVP_PKEY **,unsigned char **,size_t *,libssh2_curve_type)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_ecdsa_new_private", "(EVP_PKEY **,LIBSSH2_SESSION *,const char *,const unsigned char *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_ecdsa_new_private_frommemory", "(EVP_PKEY **,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_ecdsa_new_private_frommemory_sk", "(EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_ecdsa_new_private_frommemory_sk", "(EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_ecdsa_new_private_frommemory_sk", "(EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_ecdsa_new_private_sk", "(EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,const unsigned char *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_ecdsa_new_private_sk", "(EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,const unsigned char *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_ecdsa_new_private_sk", "(EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,const unsigned char *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_ecdsa_new_private_sk", "(EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,const unsigned char *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_ed25519_new_private_frommemory_sk", "(EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_ed25519_new_private_frommemory_sk", "(EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_ed25519_new_private_frommemory_sk", "(EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_ed25519_new_private_sk", "(EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,const uint8_t *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_ed25519_new_private_sk", "(EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,const uint8_t *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_ed25519_new_private_sk", "(EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,const uint8_t *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_error", "(LIBSSH2_SESSION *,int,const char *)", "", "Argument[*2]", "Argument[*0].Field[**err_msg]", "value", "dfc-generated"]
+ - ["", "", True, "_libssh2_error", "(LIBSSH2_SESSION *,int,const char *)", "", "Argument[1]", "Argument[*0].Field[*err_code]", "value", "dfc-generated"]
+ - ["", "", True, "_libssh2_error", "(LIBSSH2_SESSION *,int,const char *)", "", "Argument[1]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "_libssh2_error", "(LIBSSH2_SESSION *,int,const char *)", "", "Argument[2]", "Argument[*0].Field[**err_msg]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_error", "(LIBSSH2_SESSION *,int,const char *)", "", "Argument[2]", "Argument[*0].Field[*err_msg]", "value", "dfc-generated"]
+ - ["", "", True, "_libssh2_error_flags", "(LIBSSH2_SESSION *,int,const char *,int)", "", "Argument[*2]", "Argument[*0].Field[**err_msg]", "value", "dfc-generated"]
+ - ["", "", True, "_libssh2_error_flags", "(LIBSSH2_SESSION *,int,const char *,int)", "", "Argument[1]", "Argument[*0].Field[*err_code]", "value", "dfc-generated"]
+ - ["", "", True, "_libssh2_error_flags", "(LIBSSH2_SESSION *,int,const char *,int)", "", "Argument[1]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "_libssh2_error_flags", "(LIBSSH2_SESSION *,int,const char *,int)", "", "Argument[2]", "Argument[*0].Field[**err_msg]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_error_flags", "(LIBSSH2_SESSION *,int,const char *,int)", "", "Argument[2]", "Argument[*0].Field[*err_msg]", "value", "dfc-generated"]
+ - ["", "", True, "_libssh2_get_bignum_bytes", "(string_buf *,unsigned char **,size_t *)", "", "Argument[*0]", "Argument[**1]", "taint", "df-generated"]
+ - ["", "", True, "_libssh2_get_bignum_bytes", "(string_buf *,unsigned char **,size_t *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"]
+ - ["", "", True, "_libssh2_get_bignum_bytes", "(string_buf *,unsigned char **,size_t *)", "", "Argument[*0]", "Argument[*2]", "taint", "df-generated"]
+ - ["", "", True, "_libssh2_get_byte", "(string_buf *,unsigned char *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"]
+ - ["", "", True, "_libssh2_get_string", "(string_buf *,unsigned char **,size_t *)", "", "Argument[*0]", "Argument[**1]", "taint", "df-generated"]
+ - ["", "", True, "_libssh2_get_string", "(string_buf *,unsigned char **,size_t *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"]
+ - ["", "", True, "_libssh2_get_string", "(string_buf *,unsigned char **,size_t *)", "", "Argument[*0]", "Argument[*2]", "taint", "df-generated"]
+ - ["", "", True, "_libssh2_get_u32", "(string_buf *,uint32_t *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"]
+ - ["", "", True, "_libssh2_get_u64", "(string_buf *,libssh2_uint64_t *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"]
+ - ["", "", True, "_libssh2_hmac_cleanup", "(EVP_MAC_CTX **)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_hmac_final", "(EVP_MAC_CTX **,void *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_hmac_sha1_init", "(EVP_MAC_CTX **,void *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_hmac_sha256_init", "(EVP_MAC_CTX **,void *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_hmac_sha512_init", "(EVP_MAC_CTX **,void *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_hmac_update", "(EVP_MAC_CTX **,const void *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_htonu32", "(unsigned char *,uint32_t)", "", "Argument[1]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_kex_agree_instr", "(unsigned char *,size_t,const unsigned char *,size_t)", "", "Argument[*0]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_kex_agree_instr", "(unsigned char *,size_t,const unsigned char *,size_t)", "", "Argument[*0]", "ReturnValue[*]", "value", "dfc-generated"]
+ - ["", "", True, "_libssh2_kex_agree_instr", "(unsigned char *,size_t,const unsigned char *,size_t)", "", "Argument[0]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "_libssh2_kex_agree_instr", "(unsigned char *,size_t,const unsigned char *,size_t)", "", "Argument[0]", "ReturnValue[*]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_kex_agree_instr", "(unsigned char *,size_t,const unsigned char *,size_t)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_kex_agree_instr", "(unsigned char *,size_t,const unsigned char *,size_t)", "", "Argument[1]", "ReturnValue[*]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_kex_exchange", "(LIBSSH2_SESSION *,int,key_exchange_state_t *)", "", "Argument[*0]", "Argument[*2]", "taint", "df-generated"]
+ - ["", "", True, "_libssh2_kex_exchange", "(LIBSSH2_SESSION *,int,key_exchange_state_t *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "_libssh2_kex_exchange", "(LIBSSH2_SESSION *,int,key_exchange_state_t *)", "", "Argument[*2]", "Argument[*0]", "taint", "df-generated"]
+ - ["", "", True, "_libssh2_list_add", "(list_head *,list_node *)", "", "Argument[0]", "Argument[*0].Field[**first].Field[*head]", "value", "dfc-generated"]
+ - ["", "", True, "_libssh2_list_add", "(list_head *,list_node *)", "", "Argument[0]", "Argument[*0].Field[**last].Field[*head]", "value", "dfc-generated"]
+ - ["", "", True, "_libssh2_list_add", "(list_head *,list_node *)", "", "Argument[0]", "Argument[*1].Field[*head]", "value", "dfc-generated"]
+ - ["", "", True, "_libssh2_list_add", "(list_head *,list_node *)", "", "Argument[1]", "Argument[*0].Field[*first]", "value", "dfc-generated"]
+ - ["", "", True, "_libssh2_list_add", "(list_head *,list_node *)", "", "Argument[1]", "Argument[*0].Field[*last]", "value", "dfc-generated"]
+ - ["", "", True, "_libssh2_list_add", "(list_head *,list_node *)", "", "Argument[1]", "Argument[*1].Field[**prev].Field[*next]", "value", "dfc-generated"]
+ - ["", "", True, "_libssh2_list_first", "(list_head *)", "", "Argument[*0].Field[**first]", "ReturnValue[*]", "value", "dfc-generated"]
+ - ["", "", True, "_libssh2_list_first", "(list_head *)", "", "Argument[*0].Field[*first]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "_libssh2_list_init", "(list_head *)", "", "Argument[*0].Field[**last]", "Argument[*0].Field[**first]", "value", "dfc-generated"]
+ - ["", "", True, "_libssh2_list_init", "(list_head *)", "", "Argument[*0].Field[*last]", "Argument[*0].Field[*first]", "value", "dfc-generated"]
+ - ["", "", True, "_libssh2_list_next", "(list_node *)", "", "Argument[*0].Field[**next]", "ReturnValue[*]", "value", "dfc-generated"]
+ - ["", "", True, "_libssh2_list_next", "(list_node *)", "", "Argument[*0].Field[*next]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "_libssh2_list_prev", "(list_node *)", "", "Argument[*0].Field[**prev]", "ReturnValue[*]", "value", "dfc-generated"]
+ - ["", "", True, "_libssh2_list_prev", "(list_node *)", "", "Argument[*0].Field[*prev]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "_libssh2_ntohu32", "(const unsigned char *)", "", "Argument[*0]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_ntohu32", "(const unsigned char *)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_ntohu64", "(const unsigned char *)", "", "Argument[*0]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_ntohu64", "(const unsigned char *)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_packet_add", "(LIBSSH2_SESSION *,unsigned char *,size_t,int,uint32_t)", "", "Argument[2]", "Argument[*0].Field[**packAdd_channelp].Field[*adjust_adjust]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_packet_add", "(LIBSSH2_SESSION *,unsigned char *,size_t,int,uint32_t)", "", "Argument[2]", "Argument[*0].Field[**packAdd_channelp].Field[*adjust_queue]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_packet_burn", "(LIBSSH2_SESSION *,libssh2_nonblocking_states *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_packet_require", "(LIBSSH2_SESSION *,unsigned char,unsigned char **,size_t *,int,const unsigned char *,size_t,packet_require_state_t *)", "", "Argument[1]", "Argument[*0].Field[*fullpacket_required_type]", "value", "dfc-generated"]
+ - ["", "", True, "_libssh2_packet_requirev", "(LIBSSH2_SESSION *,const unsigned char *,unsigned char **,size_t *,int,const unsigned char *,size_t,packet_requirev_state_t *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "_libssh2_pem_decode_integer", "(unsigned char **,size_t *,unsigned char **,unsigned int *)", "", "Argument[**0]", "Argument[**2]", "value", "df-generated"]
+ - ["", "", True, "_libssh2_pem_decode_integer", "(unsigned char **,size_t *,unsigned char **,unsigned int *)", "", "Argument[**0]", "Argument[*3]", "value", "df-generated"]
+ - ["", "", True, "_libssh2_pem_decode_integer", "(unsigned char **,size_t *,unsigned char **,unsigned int *)", "", "Argument[*0]", "Argument[*2]", "value", "df-generated"]
+ - ["", "", True, "_libssh2_pem_decode_integer", "(unsigned char **,size_t *,unsigned char **,unsigned int *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_pem_decode_sequence", "(unsigned char **,size_t *)", "", "Argument[**0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_pem_decode_sequence", "(unsigned char **,size_t *)", "", "Argument[**0]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_pem_decode_sequence", "(unsigned char **,size_t *)", "", "Argument[*0]", "Argument[**0]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_pem_decode_sequence", "(unsigned char **,size_t *)", "", "Argument[*0]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_pem_decode_sequence", "(unsigned char **,size_t *)", "", "Argument[0]", "Argument[**0]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_pem_decode_sequence", "(unsigned char **,size_t *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_pem_decode_sequence", "(unsigned char **,size_t *)", "", "Argument[0]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_pem_decode_sequence", "(unsigned char **,size_t *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_pem_parse", "(LIBSSH2_SESSION *,const char *,const char *,const unsigned char *,FILE *,unsigned char **,size_t *)", "", "Argument[5]", "Argument[*5]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_pem_parse_memory", "(LIBSSH2_SESSION *,const char *,const char *,const char *,size_t,unsigned char **,size_t *)", "", "Argument[5]", "Argument[*5]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_pub_priv_keyfilememory", "(LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,const char *,size_t,const char *)", "", "Argument[*3]", "Argument[**3]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_pub_priv_keyfilememory", "(LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,const char *,size_t,const char *)", "", "Argument[3]", "Argument[**3]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_pub_priv_keyfilememory", "(LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,const char *,size_t,const char *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_pub_priv_keyfilememory", "(LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,const char *,size_t,const char *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_rsa_new_private", "(EVP_PKEY **,LIBSSH2_SESSION *,const char *,const unsigned char *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_rsa_new_private_frommemory", "(EVP_PKEY **,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_session_set_blocking", "(LIBSSH2_SESSION *,int)", "", "Argument[*0].Field[*api_block_mode]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "_libssh2_session_set_blocking", "(LIBSSH2_SESSION *,int)", "", "Argument[1]", "Argument[*0].Field[*api_block_mode]", "value", "dfc-generated"]
+ - ["", "", True, "_libssh2_sha1_final", "(EVP_MD_CTX **,unsigned char *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_sha1_init", "(EVP_MD_CTX **)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_sha1_update", "(EVP_MD_CTX **,const void *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_sha256_final", "(EVP_MD_CTX **,unsigned char *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_sha256_init", "(EVP_MD_CTX **)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_sha256_update", "(EVP_MD_CTX **,const void *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_sha384_final", "(EVP_MD_CTX **,unsigned char *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_sha384_init", "(EVP_MD_CTX **)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_sha384_update", "(EVP_MD_CTX **,const void *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_sha512_final", "(EVP_MD_CTX **,unsigned char *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_sha512_init", "(EVP_MD_CTX **)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_sha512_update", "(EVP_MD_CTX **,const void *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_sk_pub_keyfilememory", "(LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,int *,unsigned char *,const char **,const unsigned char **,size_t *,const char *,size_t,const char *)", "", "Argument[*3]", "Argument[**3]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_sk_pub_keyfilememory", "(LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,int *,unsigned char *,const char **,const unsigned char **,size_t *,const char *,size_t,const char *)", "", "Argument[3]", "Argument[**3]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_sk_pub_keyfilememory", "(LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,int *,unsigned char *,const char **,const unsigned char **,size_t *,const char *,size_t,const char *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_sk_pub_keyfilememory", "(LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,int *,unsigned char *,const char **,const unsigned char **,size_t *,const char *,size_t,const char *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_sk_pub_keyfilememory", "(LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,int *,unsigned char *,const char **,const unsigned char **,size_t *,const char *,size_t,const char *)", "", "Argument[7]", "Argument[*7]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_sk_pub_keyfilememory", "(LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,int *,unsigned char *,const char **,const unsigned char **,size_t *,const char *,size_t,const char *)", "", "Argument[8]", "Argument[*8]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_sk_pub_keyfilememory", "(LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,int *,unsigned char *,const char **,const unsigned char **,size_t *,const char *,size_t,const char *)", "", "Argument[9]", "Argument[*9]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_store_bignum2_bytes", "(unsigned char **,const unsigned char *,size_t)", "", "Argument[*0]", "Argument[**0]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_store_bignum2_bytes", "(unsigned char **,const unsigned char *,size_t)", "", "Argument[*1]", "Argument[**0]", "value", "dfc-generated"]
+ - ["", "", True, "_libssh2_store_bignum2_bytes", "(unsigned char **,const unsigned char *,size_t)", "", "Argument[0]", "Argument[**0]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_store_bignum2_bytes", "(unsigned char **,const unsigned char *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_store_bignum2_bytes", "(unsigned char **,const unsigned char *,size_t)", "", "Argument[1]", "Argument[**0]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_store_bignum2_bytes", "(unsigned char **,const unsigned char *,size_t)", "", "Argument[2]", "Argument[**0]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_store_bignum2_bytes", "(unsigned char **,const unsigned char *,size_t)", "", "Argument[2]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_store_str", "(unsigned char **,const char *,size_t)", "", "Argument[*0]", "Argument[**0]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_store_str", "(unsigned char **,const char *,size_t)", "", "Argument[*1]", "Argument[**0]", "value", "dfc-generated"]
+ - ["", "", True, "_libssh2_store_str", "(unsigned char **,const char *,size_t)", "", "Argument[0]", "Argument[**0]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_store_str", "(unsigned char **,const char *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_store_str", "(unsigned char **,const char *,size_t)", "", "Argument[1]", "Argument[**0]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_store_str", "(unsigned char **,const char *,size_t)", "", "Argument[2]", "Argument[**0]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_store_str", "(unsigned char **,const char *,size_t)", "", "Argument[2]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_store_u32", "(unsigned char **,uint32_t)", "", "Argument[*0]", "Argument[**0]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_store_u32", "(unsigned char **,uint32_t)", "", "Argument[0]", "Argument[**0]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_store_u32", "(unsigned char **,uint32_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_store_u32", "(unsigned char **,uint32_t)", "", "Argument[1]", "Argument[**0]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_store_u64", "(unsigned char **,libssh2_uint64_t)", "", "Argument[*0]", "Argument[**0]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_store_u64", "(unsigned char **,libssh2_uint64_t)", "", "Argument[0]", "Argument[**0]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_store_u64", "(unsigned char **,libssh2_uint64_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_transport_read", "(LIBSSH2_SESSION *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "_libssh2_transport_send", "(LIBSSH2_SESSION *,const unsigned char *,size_t,const unsigned char *,size_t)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "_libssh2_userauth_publickey", "(LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,..(*)(..),void *)", "", "Argument[*1]", "Argument[*0].Field[**userauth_pblc_b]", "value", "dfc-generated"]
+ - ["", "", True, "_libssh2_userauth_publickey", "(LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,..(*)(..),void *)", "", "Argument[1]", "Argument[*0].Field[**userauth_pblc_b]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_userauth_publickey", "(LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,..(*)(..),void *)", "", "Argument[4]", "Argument[*0].Field[**userauth_pblc_s]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_userauth_publickey", "(LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,..(*)(..),void *)", "", "Argument[4]", "Argument[*0].Field[*userauth_pblc_packet_len]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_userauth_publickey", "(LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,..(*)(..),void *)", "", "Argument[4]", "Argument[*0].Field[*userauth_pblc_s]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_userauth_publickey", "(LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,..(*)(..),void *)", "", "Argument[6]", "Argument[*6]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_wait_socket", "(LIBSSH2_SESSION *,time_t)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "_libssh2_xor_data", "(unsigned char *,const unsigned char *,const unsigned char *,size_t)", "", "Argument[*1]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_xor_data", "(unsigned char *,const unsigned char *,const unsigned char *,size_t)", "", "Argument[*2]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_xor_data", "(unsigned char *,const unsigned char *,const unsigned char *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_xor_data", "(unsigned char *,const unsigned char *,const unsigned char *,size_t)", "", "Argument[1]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "_libssh2_xor_data", "(unsigned char *,const unsigned char *,const unsigned char *,size_t)", "", "Argument[2]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "chacha_encrypt_bytes", "(chacha_ctx *,const u8 *,u8 *,u32)", "", "Argument[*0].Field[*input]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "chacha_encrypt_bytes", "(chacha_ctx *,const u8 *,u8 *,u32)", "", "Argument[*1]", "Argument[*2]", "value", "dfc-generated"]
+ - ["", "", True, "chacha_encrypt_bytes", "(chacha_ctx *,const u8 *,u8 *,u32)", "", "Argument[1]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "chacha_encrypt_bytes", "(chacha_ctx *,const u8 *,u8 *,u32)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "chacha_ivsetup", "(chacha_ctx *,const u8 *,const u8 *)", "", "Argument[*1]", "Argument[*0].Field[*input]", "taint", "dfc-generated"]
+ - ["", "", True, "chacha_ivsetup", "(chacha_ctx *,const u8 *,const u8 *)", "", "Argument[*2]", "Argument[*0].Field[*input]", "taint", "dfc-generated"]
+ - ["", "", True, "chacha_ivsetup", "(chacha_ctx *,const u8 *,const u8 *)", "", "Argument[1]", "Argument[*0].Field[*input]", "taint", "dfc-generated"]
+ - ["", "", True, "chacha_ivsetup", "(chacha_ctx *,const u8 *,const u8 *)", "", "Argument[2]", "Argument[*0].Field[*input]", "taint", "dfc-generated"]
+ - ["", "", True, "chacha_keysetup", "(chacha_ctx *,const u8 *,u32)", "", "Argument[*1]", "Argument[*0].Field[*input]", "taint", "dfc-generated"]
+ - ["", "", True, "chacha_keysetup", "(chacha_ctx *,const u8 *,u32)", "", "Argument[1]", "Argument[*0].Field[*input]", "taint", "dfc-generated"]
+ - ["", "", True, "chachapoly_crypt", "(chachapoly_ctx *,u_int,u_char *,const u_char *,u_int,u_int,int)", "", "Argument[*3]", "Argument[*2]", "value", "dfc-generated"]
+ - ["", "", True, "chachapoly_crypt", "(chachapoly_ctx *,u_int,u_char *,const u_char *,u_int,u_int,int)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "chachapoly_crypt", "(chachapoly_ctx *,u_int,u_char *,const u_char *,u_int,u_int,int)", "", "Argument[3]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "chachapoly_crypt", "(chachapoly_ctx *,u_int,u_char *,const u_char *,u_int,u_int,int)", "", "Argument[4]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "chachapoly_crypt", "(chachapoly_ctx *,u_int,u_char *,const u_char *,u_int,u_int,int)", "", "Argument[5]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "chachapoly_get_length", "(chachapoly_ctx *,unsigned int *,unsigned int,const unsigned char *,unsigned int)", "", "Argument[*3]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "chachapoly_get_length", "(chachapoly_ctx *,unsigned int *,unsigned int,const unsigned char *,unsigned int)", "", "Argument[3]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "chachapoly_init", "(chachapoly_ctx *,const u_char *,u_int)", "", "Argument[*1]", "Argument[*0].Field[*header_ctx].Field[*input]", "taint", "dfc-generated"]
+ - ["", "", True, "chachapoly_init", "(chachapoly_ctx *,const u_char *,u_int)", "", "Argument[*1]", "Argument[*0].Field[*main_ctx].Field[*input]", "taint", "dfc-generated"]
+ - ["", "", True, "chachapoly_init", "(chachapoly_ctx *,const u_char *,u_int)", "", "Argument[1]", "Argument[*0].Field[*header_ctx].Field[*input]", "taint", "dfc-generated"]
+ - ["", "", True, "chachapoly_init", "(chachapoly_ctx *,const u_char *,u_int)", "", "Argument[1]", "Argument[*0].Field[*main_ctx].Field[*input]", "taint", "dfc-generated"]
+ - ["", "", True, "chachapoly_timingsafe_bcmp", "(const void *,const void *,size_t)", "", "Argument[*0]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "chachapoly_timingsafe_bcmp", "(const void *,const void *,size_t)", "", "Argument[*1]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "chachapoly_timingsafe_bcmp", "(const void *,const void *,size_t)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "chachapoly_timingsafe_bcmp", "(const void *,const void *,size_t)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_agent_get_identity", "(LIBSSH2_AGENT *,libssh2_agent_publickey **,libssh2_agent_publickey *)", "", "Argument[*0]", "Argument[**1]", "taint", "df-generated"]
+ - ["", "", True, "libssh2_agent_get_identity_path", "(LIBSSH2_AGENT *)", "", "Argument[*0].Field[**identity_agent_path]", "ReturnValue[*]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_agent_get_identity_path", "(LIBSSH2_AGENT *)", "", "Argument[*0].Field[*identity_agent_path]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_agent_init", "(LIBSSH2_SESSION *)", "", "Argument[*0]", "ReturnValue[*].Field[**session]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_agent_init", "(LIBSSH2_SESSION *)", "", "Argument[0]", "ReturnValue[*].Field[*session]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_agent_set_identity_path", "(LIBSSH2_AGENT *,const char *)", "", "Argument[*1]", "Argument[*0].Field[**identity_agent_path]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_agent_set_identity_path", "(LIBSSH2_AGENT *,const char *)", "", "Argument[1]", "Argument[*0].Field[**identity_agent_path]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_agent_sign", "(LIBSSH2_AGENT *,libssh2_agent_publickey *,unsigned char **,size_t *,const unsigned char *,size_t,const char *,unsigned int)", "", "Argument[*1].Field[**node]", "Argument[*0].Field[**identity]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_agent_sign", "(LIBSSH2_AGENT *,libssh2_agent_publickey *,unsigned char **,size_t *,const unsigned char *,size_t,const char *,unsigned int)", "", "Argument[*1].Field[*node]", "Argument[*0].Field[*identity]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_agent_sign", "(LIBSSH2_AGENT *,libssh2_agent_publickey *,unsigned char **,size_t *,const unsigned char *,size_t,const char *,unsigned int)", "", "Argument[*6]", "Argument[*0].Field[**session].Field[**userauth_pblc_method]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_agent_sign", "(LIBSSH2_AGENT *,libssh2_agent_publickey *,unsigned char **,size_t *,const unsigned char *,size_t,const char *,unsigned int)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_agent_sign", "(LIBSSH2_AGENT *,libssh2_agent_publickey *,unsigned char **,size_t *,const unsigned char *,size_t,const char *,unsigned int)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_agent_sign", "(LIBSSH2_AGENT *,libssh2_agent_publickey *,unsigned char **,size_t *,const unsigned char *,size_t,const char *,unsigned int)", "", "Argument[6]", "Argument[*0].Field[**session].Field[**userauth_pblc_method]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_agent_sign", "(LIBSSH2_AGENT *,libssh2_agent_publickey *,unsigned char **,size_t *,const unsigned char *,size_t,const char *,unsigned int)", "", "Argument[7]", "Argument[*0].Field[**session].Field[*userauth_pblc_method_len]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_agent_userauth", "(LIBSSH2_AGENT *,const char *,libssh2_agent_publickey *)", "", "Argument[*1]", "Argument[*0].Field[**session].Field[**userauth_pblc_b]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_agent_userauth", "(LIBSSH2_AGENT *,const char *,libssh2_agent_publickey *)", "", "Argument[1]", "Argument[*0].Field[**session].Field[**userauth_pblc_b]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_banner_set", "(LIBSSH2_SESSION *,const char *)", "", "Argument[*1]", "Argument[*0].Field[*local].Field[**banner]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_banner_set", "(LIBSSH2_SESSION *,const char *)", "", "Argument[1]", "Argument[*0].Field[*local].Field[**banner]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_base64_decode", "(LIBSSH2_SESSION *,char **,unsigned int *,const char *,unsigned int)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_channel_close", "(LIBSSH2_CHANNEL *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "libssh2_channel_direct_streamlocal_ex", "(LIBSSH2_SESSION *,const char *,const char *,int)", "", "Argument[0]", "Argument[*0].Field[**open_channel].Field[*session]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_channel_direct_streamlocal_ex", "(LIBSSH2_SESSION *,const char *,const char *,int)", "", "Argument[0]", "ReturnValue[*].Field[*session]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_channel_direct_tcpip_ex", "(LIBSSH2_SESSION *,const char *,int,const char *,int)", "", "Argument[0]", "Argument[*0].Field[**open_channel].Field[*session]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_channel_direct_tcpip_ex", "(LIBSSH2_SESSION *,const char *,int,const char *,int)", "", "Argument[0]", "ReturnValue[*].Field[*session]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_channel_eof", "(LIBSSH2_CHANNEL *)", "", "Argument[*0].Field[*remote].Field[*eof]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_channel_flush_ex", "(LIBSSH2_CHANNEL *,int)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "libssh2_channel_forward_accept", "(LIBSSH2_LISTENER *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "libssh2_channel_forward_accept", "(LIBSSH2_LISTENER *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"]
+ - ["", "", True, "libssh2_channel_forward_cancel", "(LIBSSH2_LISTENER *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "libssh2_channel_forward_listen_ex", "(LIBSSH2_SESSION *,const char *,int,int *,int)", "", "Argument[*1]", "ReturnValue[*].Field[**host]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_channel_forward_listen_ex", "(LIBSSH2_SESSION *,const char *,int,int *,int)", "", "Argument[0]", "ReturnValue[*].Field[*session]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_channel_forward_listen_ex", "(LIBSSH2_SESSION *,const char *,int,int *,int)", "", "Argument[1]", "ReturnValue[*].Field[**host]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_channel_forward_listen_ex", "(LIBSSH2_SESSION *,const char *,int,int *,int)", "", "Argument[2]", "Argument[*3]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_channel_forward_listen_ex", "(LIBSSH2_SESSION *,const char *,int,int *,int)", "", "Argument[2]", "ReturnValue[*].Field[*port]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_channel_forward_listen_ex", "(LIBSSH2_SESSION *,const char *,int,int *,int)", "", "Argument[4]", "ReturnValue[*].Field[*queue_maxsize]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_channel_free", "(LIBSSH2_CHANNEL *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "libssh2_channel_get_exit_signal", "(LIBSSH2_CHANNEL *,char **,size_t *,char **,size_t *,char **,size_t *)", "", "Argument[*0].Field[**exit_signal]", "Argument[**1]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_channel_get_exit_signal", "(LIBSSH2_CHANNEL *,char **,size_t *,char **,size_t *,char **,size_t *)", "", "Argument[*0].Field[*exit_signal]", "Argument[**1]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_channel_get_exit_signal", "(LIBSSH2_CHANNEL *,char **,size_t *,char **,size_t *,char **,size_t *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_channel_get_exit_status", "(LIBSSH2_CHANNEL *)", "", "Argument[*0].Field[*exit_status]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_channel_handle_extended_data2", "(LIBSSH2_CHANNEL *,int)", "", "Argument[1]", "Argument[*0].Field[*remote].Field[*extended_data_ignore_mode]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_channel_handle_extended_data", "(LIBSSH2_CHANNEL *,int)", "", "Argument[1]", "Argument[*0].Field[*remote].Field[*extended_data_ignore_mode]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_channel_open_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,unsigned int,unsigned int,const char *,unsigned int)", "", "Argument[*1]", "Argument[*0].Field[**open_channel].Field[**channel_type]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_channel_open_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,unsigned int,unsigned int,const char *,unsigned int)", "", "Argument[*1]", "ReturnValue[*].Field[**channel_type]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_channel_open_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,unsigned int,unsigned int,const char *,unsigned int)", "", "Argument[0]", "Argument[*0].Field[**open_channel].Field[*session]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_channel_open_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,unsigned int,unsigned int,const char *,unsigned int)", "", "Argument[0]", "ReturnValue[*].Field[*session]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_channel_open_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,unsigned int,unsigned int,const char *,unsigned int)", "", "Argument[1]", "Argument[*0].Field[**open_channel].Field[**channel_type]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_channel_open_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,unsigned int,unsigned int,const char *,unsigned int)", "", "Argument[1]", "ReturnValue[*].Field[**channel_type]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_channel_open_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,unsigned int,unsigned int,const char *,unsigned int)", "", "Argument[3]", "ReturnValue[*].Field[*remote].Field[*window_size]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_channel_open_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,unsigned int,unsigned int,const char *,unsigned int)", "", "Argument[3]", "ReturnValue[*].Field[*remote].Field[*window_size_initial]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_channel_open_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,unsigned int,unsigned int,const char *,unsigned int)", "", "Argument[4]", "ReturnValue[*].Field[*remote].Field[*packet_size]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_channel_process_startup", "(LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int)", "", "Argument[2]", "Argument[*0].Field[*process_packet_len]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_channel_read_ex", "(LIBSSH2_CHANNEL *,int,char *,size_t)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "libssh2_channel_read_ex", "(LIBSSH2_CHANNEL *,int,char *,size_t)", "", "Argument[3]", "Argument[*0]", "taint", "df-generated"]
+ - ["", "", True, "libssh2_channel_read_ex", "(LIBSSH2_CHANNEL *,int,char *,size_t)", "", "Argument[3]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "libssh2_channel_receive_window_adjust2", "(LIBSSH2_CHANNEL *,unsigned long,unsigned char,unsigned int *)", "", "Argument[1]", "Argument[*0].Field[*adjust_adjust]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_channel_receive_window_adjust2", "(LIBSSH2_CHANNEL *,unsigned long,unsigned char,unsigned int *)", "", "Argument[1]", "Argument[*0].Field[*adjust_queue]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_channel_receive_window_adjust2", "(LIBSSH2_CHANNEL *,unsigned long,unsigned char,unsigned int *)", "", "Argument[1]", "Argument[*0].Field[*remote].Field[*window_size]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_channel_receive_window_adjust", "(LIBSSH2_CHANNEL *,unsigned long,unsigned char)", "", "Argument[1]", "Argument[*0].Field[*adjust_adjust]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_channel_receive_window_adjust", "(LIBSSH2_CHANNEL *,unsigned long,unsigned char)", "", "Argument[1]", "Argument[*0].Field[*adjust_queue]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_channel_receive_window_adjust", "(LIBSSH2_CHANNEL *,unsigned long,unsigned char)", "", "Argument[1]", "Argument[*0].Field[*remote].Field[*window_size]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_channel_request_auth_agent", "(LIBSSH2_CHANNEL *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "libssh2_channel_request_pty_ex", "(LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int,int,int,int,int)", "", "Argument[2]", "Argument[*0].Field[*reqPTY_packet_len]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_channel_request_pty_ex", "(LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int,int,int,int,int)", "", "Argument[4]", "Argument[*0].Field[*reqPTY_packet_len]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_channel_request_pty_size_ex", "(LIBSSH2_CHANNEL *,int,int,int,int)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "libssh2_channel_send_eof", "(LIBSSH2_CHANNEL *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "libssh2_channel_set_blocking", "(LIBSSH2_CHANNEL *,int)", "", "Argument[1]", "Argument[*0].Field[**session].Field[*api_block_mode]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_channel_setenv_ex", "(LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int)", "", "Argument[2]", "Argument[*0].Field[*setenv_packet_len]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_channel_setenv_ex", "(LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int)", "", "Argument[4]", "Argument[*0].Field[*setenv_packet_len]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_channel_signal_ex", "(LIBSSH2_CHANNEL *,const char *,size_t)", "", "Argument[2]", "Argument[*0].Field[*sendsignal_packet_len]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_channel_wait_closed", "(LIBSSH2_CHANNEL *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "libssh2_channel_wait_eof", "(LIBSSH2_CHANNEL *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "libssh2_channel_window_read_ex", "(LIBSSH2_CHANNEL *,unsigned long *,unsigned long *)", "", "Argument[*0]", "Argument[*2]", "taint", "df-generated"]
+ - ["", "", True, "libssh2_channel_window_read_ex", "(LIBSSH2_CHANNEL *,unsigned long *,unsigned long *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "libssh2_channel_window_write_ex", "(LIBSSH2_CHANNEL *,unsigned long *)", "", "Argument[*0].Field[*local].Field[*window_size]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_channel_window_write_ex", "(LIBSSH2_CHANNEL *,unsigned long *)", "", "Argument[*0].Field[*local].Field[*window_size_initial]", "Argument[*1]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_channel_write_ex", "(LIBSSH2_CHANNEL *,int,const char *,size_t)", "", "Argument[3]", "Argument[*0].Field[*local].Field[*window_size]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_channel_write_ex", "(LIBSSH2_CHANNEL *,int,const char *,size_t)", "", "Argument[3]", "Argument[*0].Field[*write_bufwrite]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_channel_write_ex", "(LIBSSH2_CHANNEL *,int,const char *,size_t)", "", "Argument[3]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_channel_x11_req_ex", "(LIBSSH2_CHANNEL *,int,const char *,const char *,int)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "libssh2_hostkey_hash", "(LIBSSH2_SESSION *,int)", "", "Argument[*0].Field[*server_hostkey_sha1]", "ReturnValue[*]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_hostkey_hash", "(LIBSSH2_SESSION *,int)", "", "Argument[*0].Field[*server_hostkey_sha256]", "ReturnValue[*]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_keepalive_config", "(LIBSSH2_SESSION *,int,unsigned int)", "", "Argument[2]", "Argument[*0].Field[*keepalive_interval]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_keepalive_send", "(LIBSSH2_SESSION *,int *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"]
+ - ["", "", True, "libssh2_keepalive_send", "(LIBSSH2_SESSION *,int *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "libssh2_knownhost_add", "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,int,libssh2_knownhost **)", "", "Argument[*1]", "Argument[**6].Field[**name]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_knownhost_add", "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,int,libssh2_knownhost **)", "", "Argument[*1]", "Argument[**6].Field[**node].Field[**name]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_knownhost_add", "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,int,libssh2_knownhost **)", "", "Argument[*3]", "Argument[**6].Field[**key]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_knownhost_add", "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,int,libssh2_knownhost **)", "", "Argument[*3]", "Argument[**6].Field[**node].Field[**key]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_knownhost_add", "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,int,libssh2_knownhost **)", "", "Argument[1]", "Argument[**6].Field[**name]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_knownhost_add", "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,int,libssh2_knownhost **)", "", "Argument[1]", "Argument[**6].Field[**node].Field[**name]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_knownhost_add", "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,int,libssh2_knownhost **)", "", "Argument[3]", "Argument[**6].Field[**key]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_knownhost_add", "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,int,libssh2_knownhost **)", "", "Argument[3]", "Argument[**6].Field[**node].Field[**key]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_knownhost_add", "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,int,libssh2_knownhost **)", "", "Argument[5]", "Argument[**6].Field[**node].Field[*typemask]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_knownhost_add", "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,int,libssh2_knownhost **)", "", "Argument[5]", "Argument[**6].Field[*typemask]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_knownhost_addc", "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,const char *,size_t,int,libssh2_knownhost **)", "", "Argument[*1]", "Argument[**8].Field[**name]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_knownhost_addc", "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,const char *,size_t,int,libssh2_knownhost **)", "", "Argument[*1]", "Argument[**8].Field[**node].Field[**name]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_knownhost_addc", "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,const char *,size_t,int,libssh2_knownhost **)", "", "Argument[*3]", "Argument[**8].Field[**key]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_knownhost_addc", "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,const char *,size_t,int,libssh2_knownhost **)", "", "Argument[*3]", "Argument[**8].Field[**node].Field[**key]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_knownhost_addc", "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,const char *,size_t,int,libssh2_knownhost **)", "", "Argument[*5]", "Argument[**8].Field[**node].Field[**comment]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_knownhost_addc", "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,const char *,size_t,int,libssh2_knownhost **)", "", "Argument[1]", "Argument[**8].Field[**name]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_knownhost_addc", "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,const char *,size_t,int,libssh2_knownhost **)", "", "Argument[1]", "Argument[**8].Field[**node].Field[**name]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_knownhost_addc", "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,const char *,size_t,int,libssh2_knownhost **)", "", "Argument[3]", "Argument[**8].Field[**key]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_knownhost_addc", "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,const char *,size_t,int,libssh2_knownhost **)", "", "Argument[3]", "Argument[**8].Field[**node].Field[**key]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_knownhost_addc", "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,const char *,size_t,int,libssh2_knownhost **)", "", "Argument[5]", "Argument[**8].Field[**node].Field[**comment]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_knownhost_addc", "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,const char *,size_t,int,libssh2_knownhost **)", "", "Argument[6]", "Argument[**8].Field[**node].Field[*comment_len]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_knownhost_addc", "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,const char *,size_t,int,libssh2_knownhost **)", "", "Argument[7]", "Argument[**8].Field[**node].Field[*typemask]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_knownhost_addc", "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,const char *,size_t,int,libssh2_knownhost **)", "", "Argument[7]", "Argument[**8].Field[*typemask]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_knownhost_check", "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,size_t,int,libssh2_knownhost **)", "", "Argument[*0]", "Argument[**5]", "taint", "df-generated"]
+ - ["", "", True, "libssh2_knownhost_checkp", "(LIBSSH2_KNOWNHOSTS *,const char *,int,const char *,size_t,int,libssh2_knownhost **)", "", "Argument[*0]", "Argument[**6]", "taint", "df-generated"]
+ - ["", "", True, "libssh2_knownhost_get", "(LIBSSH2_KNOWNHOSTS *,libssh2_knownhost **,libssh2_knownhost *)", "", "Argument[*0]", "Argument[**1]", "taint", "df-generated"]
+ - ["", "", True, "libssh2_knownhost_init", "(LIBSSH2_SESSION *)", "", "Argument[*0]", "ReturnValue[*].Field[**session]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_knownhost_init", "(LIBSSH2_SESSION *)", "", "Argument[0]", "ReturnValue[*].Field[*session]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_knownhost_writeline", "(LIBSSH2_KNOWNHOSTS *,libssh2_knownhost *,char *,size_t,size_t *,int)", "", "Argument[*1]", "Argument[*2]", "taint", "df-generated"]
+ - ["", "", True, "libssh2_knownhost_writeline", "(LIBSSH2_KNOWNHOSTS *,libssh2_knownhost *,char *,size_t,size_t *,int)", "", "Argument[*1]", "Argument[*4]", "taint", "df-generated"]
+ - ["", "", True, "libssh2_poll", "(LIBSSH2_POLLFD *,unsigned int,long)", "", "Argument[0]", "Argument[*0]", "taint", "df-generated"]
+ - ["", "", True, "libssh2_publickey_add_ex", "(LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long,char,unsigned long,const libssh2_publickey_attribute[])", "", "Argument[*1]", "Argument[*0].Field[**add_s]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_publickey_add_ex", "(LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long,char,unsigned long,const libssh2_publickey_attribute[])", "", "Argument[*3]", "Argument[*0].Field[**add_s]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_publickey_add_ex", "(LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long,char,unsigned long,const libssh2_publickey_attribute[])", "", "Argument[1]", "Argument[*0].Field[**add_s]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_publickey_add_ex", "(LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long,char,unsigned long,const libssh2_publickey_attribute[])", "", "Argument[2]", "Argument[*0].Field[**add_s]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_publickey_add_ex", "(LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long,char,unsigned long,const libssh2_publickey_attribute[])", "", "Argument[2]", "Argument[*0].Field[*add_s]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_publickey_add_ex", "(LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long,char,unsigned long,const libssh2_publickey_attribute[])", "", "Argument[3]", "Argument[*0].Field[**add_s]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_publickey_add_ex", "(LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long,char,unsigned long,const libssh2_publickey_attribute[])", "", "Argument[4]", "Argument[*0].Field[**add_s]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_publickey_add_ex", "(LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long,char,unsigned long,const libssh2_publickey_attribute[])", "", "Argument[4]", "Argument[*0].Field[*add_s]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_publickey_add_ex", "(LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long,char,unsigned long,const libssh2_publickey_attribute[])", "", "Argument[4]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_publickey_add_ex", "(LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long,char,unsigned long,const libssh2_publickey_attribute[])", "", "Argument[6]", "Argument[*0].Field[**add_s]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_publickey_init", "(LIBSSH2_SESSION *)", "", "Argument[0]", "Argument[*0].Field[**open_channel].Field[*session]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_publickey_init", "(LIBSSH2_SESSION *)", "", "Argument[0]", "Argument[*0].Field[**pkeyInit_channel].Field[*session]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_publickey_init", "(LIBSSH2_SESSION *)", "", "Argument[0]", "ReturnValue[*].Field[**channel].Field[*session]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_publickey_list_fetch", "(LIBSSH2_PUBLICKEY *,unsigned long *,libssh2_publickey_list **)", "", "Argument[*0]", "Argument[**2]", "taint", "df-generated"]
+ - ["", "", True, "libssh2_publickey_list_fetch", "(LIBSSH2_PUBLICKEY *,unsigned long *,libssh2_publickey_list **)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "libssh2_publickey_remove_ex", "(LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long)", "", "Argument[*1]", "Argument[*0].Field[**remove_s]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_publickey_remove_ex", "(LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long)", "", "Argument[*3]", "Argument[*0].Field[**remove_s]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_publickey_remove_ex", "(LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long)", "", "Argument[1]", "Argument[*0].Field[**remove_s]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_publickey_remove_ex", "(LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long)", "", "Argument[2]", "Argument[*0].Field[**remove_s]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_publickey_remove_ex", "(LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long)", "", "Argument[2]", "Argument[*0].Field[*remove_s]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_publickey_remove_ex", "(LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long)", "", "Argument[3]", "Argument[*0].Field[**remove_s]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_publickey_remove_ex", "(LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long)", "", "Argument[4]", "Argument[*0].Field[**remove_s]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_publickey_remove_ex", "(LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long)", "", "Argument[4]", "Argument[*0].Field[*remove_s]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_publickey_remove_ex", "(LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long)", "", "Argument[4]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_scp_recv2", "(LIBSSH2_SESSION *,const char *,libssh2_struct_stat *)", "", "Argument[*1]", "Argument[*0].Field[**scpRecv_command]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_scp_recv2", "(LIBSSH2_SESSION *,const char *,libssh2_struct_stat *)", "", "Argument[*1]", "ReturnValue[*].Field[**session].Field[**scpRecv_command]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_scp_recv2", "(LIBSSH2_SESSION *,const char *,libssh2_struct_stat *)", "", "Argument[0]", "Argument[*0].Field[**open_channel].Field[*session]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_scp_recv2", "(LIBSSH2_SESSION *,const char *,libssh2_struct_stat *)", "", "Argument[0]", "Argument[*0].Field[**scpRecv_channel].Field[*session]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_scp_recv2", "(LIBSSH2_SESSION *,const char *,libssh2_struct_stat *)", "", "Argument[0]", "ReturnValue[*].Field[*session]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_scp_recv2", "(LIBSSH2_SESSION *,const char *,libssh2_struct_stat *)", "", "Argument[1]", "Argument[*0].Field[**scpRecv_command]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_scp_recv2", "(LIBSSH2_SESSION *,const char *,libssh2_struct_stat *)", "", "Argument[1]", "ReturnValue[*].Field[**session].Field[**scpRecv_command]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_scp_recv", "(LIBSSH2_SESSION *,const char *,stat *)", "", "Argument[*1]", "Argument[*0].Field[**scpRecv_command]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_scp_recv", "(LIBSSH2_SESSION *,const char *,stat *)", "", "Argument[*1]", "ReturnValue[*].Field[**session].Field[**scpRecv_command]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_scp_recv", "(LIBSSH2_SESSION *,const char *,stat *)", "", "Argument[0]", "Argument[*0].Field[**open_channel].Field[*session]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_scp_recv", "(LIBSSH2_SESSION *,const char *,stat *)", "", "Argument[0]", "Argument[*0].Field[**scpRecv_channel].Field[*session]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_scp_recv", "(LIBSSH2_SESSION *,const char *,stat *)", "", "Argument[0]", "ReturnValue[*].Field[*session]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_scp_recv", "(LIBSSH2_SESSION *,const char *,stat *)", "", "Argument[1]", "Argument[*0].Field[**scpRecv_command]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_scp_recv", "(LIBSSH2_SESSION *,const char *,stat *)", "", "Argument[1]", "ReturnValue[*].Field[**session].Field[**scpRecv_command]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_scp_send64", "(LIBSSH2_SESSION *,const char *,int,libssh2_int64_t,time_t,time_t)", "", "Argument[0]", "Argument[*0].Field[**open_channel].Field[*session]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_scp_send64", "(LIBSSH2_SESSION *,const char *,int,libssh2_int64_t,time_t,time_t)", "", "Argument[0]", "Argument[*0].Field[**scpSend_channel].Field[*session]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_scp_send64", "(LIBSSH2_SESSION *,const char *,int,libssh2_int64_t,time_t,time_t)", "", "Argument[0]", "ReturnValue[*].Field[*session]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_scp_send64", "(LIBSSH2_SESSION *,const char *,int,libssh2_int64_t,time_t,time_t)", "", "Argument[2]", "Argument[*0].Field[*scpSend_response]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_scp_send64", "(LIBSSH2_SESSION *,const char *,int,libssh2_int64_t,time_t,time_t)", "", "Argument[2]", "ReturnValue[*].Field[**session].Field[*scpSend_response]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_scp_send64", "(LIBSSH2_SESSION *,const char *,int,libssh2_int64_t,time_t,time_t)", "", "Argument[3]", "Argument[*0].Field[*scpSend_response]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_scp_send64", "(LIBSSH2_SESSION *,const char *,int,libssh2_int64_t,time_t,time_t)", "", "Argument[3]", "ReturnValue[*].Field[**session].Field[*scpSend_response]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_scp_send64", "(LIBSSH2_SESSION *,const char *,int,libssh2_int64_t,time_t,time_t)", "", "Argument[4]", "Argument[*0].Field[*scpSend_response]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_scp_send64", "(LIBSSH2_SESSION *,const char *,int,libssh2_int64_t,time_t,time_t)", "", "Argument[4]", "ReturnValue[*].Field[**session].Field[*scpSend_response]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_scp_send64", "(LIBSSH2_SESSION *,const char *,int,libssh2_int64_t,time_t,time_t)", "", "Argument[5]", "Argument[*0].Field[*scpSend_response]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_scp_send64", "(LIBSSH2_SESSION *,const char *,int,libssh2_int64_t,time_t,time_t)", "", "Argument[5]", "ReturnValue[*].Field[**session].Field[*scpSend_response]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_scp_send_ex", "(LIBSSH2_SESSION *,const char *,int,size_t,long,long)", "", "Argument[0]", "Argument[*0].Field[**open_channel].Field[*session]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_scp_send_ex", "(LIBSSH2_SESSION *,const char *,int,size_t,long,long)", "", "Argument[0]", "Argument[*0].Field[**scpSend_channel].Field[*session]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_scp_send_ex", "(LIBSSH2_SESSION *,const char *,int,size_t,long,long)", "", "Argument[0]", "ReturnValue[*].Field[*session]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_scp_send_ex", "(LIBSSH2_SESSION *,const char *,int,size_t,long,long)", "", "Argument[2]", "Argument[*0].Field[*scpSend_response]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_scp_send_ex", "(LIBSSH2_SESSION *,const char *,int,size_t,long,long)", "", "Argument[2]", "ReturnValue[*].Field[**session].Field[*scpSend_response]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_scp_send_ex", "(LIBSSH2_SESSION *,const char *,int,size_t,long,long)", "", "Argument[3]", "Argument[*0].Field[*scpSend_response]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_scp_send_ex", "(LIBSSH2_SESSION *,const char *,int,size_t,long,long)", "", "Argument[3]", "ReturnValue[*].Field[**session].Field[*scpSend_response]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_scp_send_ex", "(LIBSSH2_SESSION *,const char *,int,size_t,long,long)", "", "Argument[4]", "Argument[*0].Field[*scpSend_response]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_scp_send_ex", "(LIBSSH2_SESSION *,const char *,int,size_t,long,long)", "", "Argument[4]", "ReturnValue[*].Field[**session].Field[*scpSend_response]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_scp_send_ex", "(LIBSSH2_SESSION *,const char *,int,size_t,long,long)", "", "Argument[5]", "Argument[*0].Field[*scpSend_response]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_scp_send_ex", "(LIBSSH2_SESSION *,const char *,int,size_t,long,long)", "", "Argument[5]", "ReturnValue[*].Field[**session].Field[*scpSend_response]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_session_abstract", "(LIBSSH2_SESSION *)", "", "Argument[*0].Field[**abstract]", "ReturnValue[**]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_session_abstract", "(LIBSSH2_SESSION *)", "", "Argument[*0].Field[*abstract]", "ReturnValue[*]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_session_banner_get", "(LIBSSH2_SESSION *)", "", "Argument[*0].Field[*remote].Field[**banner]", "ReturnValue[*]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_session_banner_get", "(LIBSSH2_SESSION *)", "", "Argument[*0].Field[*remote].Field[*banner]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_session_banner_set", "(LIBSSH2_SESSION *,const char *)", "", "Argument[*1]", "Argument[*0].Field[*local].Field[**banner]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_session_banner_set", "(LIBSSH2_SESSION *,const char *)", "", "Argument[1]", "Argument[*0].Field[*local].Field[**banner]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_session_block_directions", "(LIBSSH2_SESSION *)", "", "Argument[*0].Field[*socket_block_directions]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_session_callback_set2", "(LIBSSH2_SESSION *,int,libssh2_cb_generic *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "libssh2_session_callback_set2", "(LIBSSH2_SESSION *,int,libssh2_cb_generic *)", "", "Argument[2]", "Argument[*0]", "taint", "df-generated"]
+ - ["", "", True, "libssh2_session_callback_set", "(LIBSSH2_SESSION *,int,void *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "libssh2_session_callback_set", "(LIBSSH2_SESSION *,int,void *)", "", "Argument[2]", "Argument[*0]", "taint", "df-generated"]
+ - ["", "", True, "libssh2_session_disconnect_ex", "(LIBSSH2_SESSION *,int,const char *,const char *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "libssh2_session_flag", "(LIBSSH2_SESSION *,int,int)", "", "Argument[2]", "Argument[*0].Field[*flag].Field[*compress]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_session_flag", "(LIBSSH2_SESSION *,int,int)", "", "Argument[2]", "Argument[*0].Field[*flag].Field[*quote_paths]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_session_flag", "(LIBSSH2_SESSION *,int,int)", "", "Argument[2]", "Argument[*0].Field[*flag].Field[*sigpipe]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_session_free", "(LIBSSH2_SESSION *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "libssh2_session_get_blocking", "(LIBSSH2_SESSION *)", "", "Argument[*0].Field[*api_block_mode]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_session_get_read_timeout", "(LIBSSH2_SESSION *)", "", "Argument[*0].Field[*packet_read_timeout]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_session_get_timeout", "(LIBSSH2_SESSION *)", "", "Argument[*0].Field[*api_timeout]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_session_handshake", "(LIBSSH2_SESSION *,libssh2_socket_t)", "", "Argument[1]", "Argument[*0].Field[*socket_fd]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_session_hostkey", "(LIBSSH2_SESSION *,size_t *,int *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"]
+ - ["", "", True, "libssh2_session_hostkey", "(LIBSSH2_SESSION *,size_t *,int *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "libssh2_session_hostkey", "(LIBSSH2_SESSION *,size_t *,int *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"]
+ - ["", "", True, "libssh2_session_init_ex", "(..(*)(..),..(*)(..),..(*)(..),void *)", "", "Argument[**3]", "ReturnValue[*].Field[***abstract]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_session_init_ex", "(..(*)(..),..(*)(..),..(*)(..),void *)", "", "Argument[*3]", "ReturnValue[*].Field[**abstract]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_session_init_ex", "(..(*)(..),..(*)(..),..(*)(..),void *)", "", "Argument[0]", "ReturnValue[*].Field[*alloc]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_session_init_ex", "(..(*)(..),..(*)(..),..(*)(..),void *)", "", "Argument[1]", "ReturnValue[*].Field[*free]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_session_init_ex", "(..(*)(..),..(*)(..),..(*)(..),void *)", "", "Argument[2]", "ReturnValue[*].Field[*realloc]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_session_init_ex", "(..(*)(..),..(*)(..),..(*)(..),void *)", "", "Argument[3]", "ReturnValue[*].Field[*abstract]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_session_last_errno", "(LIBSSH2_SESSION *)", "", "Argument[*0].Field[*err_code]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_session_last_error", "(LIBSSH2_SESSION *,char **,int *,int)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_session_methods", "(LIBSSH2_SESSION *,int)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "libssh2_session_methods", "(LIBSSH2_SESSION *,int)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"]
+ - ["", "", True, "libssh2_session_set_blocking", "(LIBSSH2_SESSION *,int)", "", "Argument[1]", "Argument[*0].Field[*api_block_mode]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_session_set_last_error", "(LIBSSH2_SESSION *,int,const char *)", "", "Argument[*2]", "Argument[*0].Field[**err_msg]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_session_set_last_error", "(LIBSSH2_SESSION *,int,const char *)", "", "Argument[1]", "Argument[*0].Field[*err_code]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_session_set_last_error", "(LIBSSH2_SESSION *,int,const char *)", "", "Argument[1]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_session_set_last_error", "(LIBSSH2_SESSION *,int,const char *)", "", "Argument[2]", "Argument[*0].Field[**err_msg]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_session_set_last_error", "(LIBSSH2_SESSION *,int,const char *)", "", "Argument[2]", "Argument[*0].Field[*err_msg]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_session_set_read_timeout", "(LIBSSH2_SESSION *,long)", "", "Argument[1]", "Argument[*0].Field[*packet_read_timeout]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_session_set_timeout", "(LIBSSH2_SESSION *,long)", "", "Argument[1]", "Argument[*0].Field[*api_timeout]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_session_startup", "(LIBSSH2_SESSION *,int)", "", "Argument[1]", "Argument[*0].Field[*socket_fd]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_session_supported_algs", "(LIBSSH2_SESSION *,int,const char ***)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_sftp_close_handle", "(LIBSSH2_SFTP_HANDLE *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "libssh2_sftp_dtor", "(LIBSSH2_SESSION *,void **,LIBSSH2_CHANNEL *,void **)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_sftp_fstat_ex", "(LIBSSH2_SFTP_HANDLE *,LIBSSH2_SFTP_ATTRIBUTES *,int)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "libssh2_sftp_fstatvfs", "(LIBSSH2_SFTP_HANDLE *,LIBSSH2_SFTP_STATVFS *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "libssh2_sftp_fsync", "(LIBSSH2_SFTP_HANDLE *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "libssh2_sftp_get_channel", "(LIBSSH2_SFTP *)", "", "Argument[*0].Field[**channel]", "ReturnValue[*]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_sftp_get_channel", "(LIBSSH2_SFTP *)", "", "Argument[*0].Field[*channel]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_sftp_init", "(LIBSSH2_SESSION *)", "", "Argument[0]", "Argument[*0].Field[**open_channel].Field[*session]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_sftp_init", "(LIBSSH2_SESSION *)", "", "Argument[0]", "Argument[*0].Field[**sftpInit_channel].Field[*session]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_sftp_init", "(LIBSSH2_SESSION *)", "", "Argument[0]", "ReturnValue[*].Field[**channel].Field[*session]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_sftp_last_error", "(LIBSSH2_SFTP *)", "", "Argument[*0].Field[*last_errno]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_sftp_mkdir_ex", "(LIBSSH2_SFTP *,const char *,unsigned int,long)", "", "Argument[2]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_sftp_open_ex", "(LIBSSH2_SFTP *,const char *,unsigned int,unsigned long,long,int)", "", "Argument[0]", "ReturnValue[*].Field[*sftp]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_sftp_open_ex_r", "(LIBSSH2_SFTP *,const char *,size_t,unsigned long,long,int,LIBSSH2_SFTP_ATTRIBUTES *)", "", "Argument[0]", "ReturnValue[*].Field[*sftp]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_sftp_posix_rename_ex", "(LIBSSH2_SFTP *,const char *,size_t,const char *,size_t)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "libssh2_sftp_read", "(LIBSSH2_SFTP_HANDLE *,char *,size_t)", "", "Argument[2]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_sftp_readdir_ex", "(LIBSSH2_SFTP_HANDLE *,char *,size_t,char *,size_t,LIBSSH2_SFTP_ATTRIBUTES *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "libssh2_sftp_rename_ex", "(LIBSSH2_SFTP *,const char *,unsigned int,const char *,unsigned int,long)", "", "Argument[*1]", "Argument[*0].Field[**rename_s]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_sftp_rename_ex", "(LIBSSH2_SFTP *,const char *,unsigned int,const char *,unsigned int,long)", "", "Argument[*3]", "Argument[*0].Field[**rename_s]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_sftp_rename_ex", "(LIBSSH2_SFTP *,const char *,unsigned int,const char *,unsigned int,long)", "", "Argument[1]", "Argument[*0].Field[**rename_s]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_sftp_rename_ex", "(LIBSSH2_SFTP *,const char *,unsigned int,const char *,unsigned int,long)", "", "Argument[2]", "Argument[*0].Field[**rename_s]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_sftp_rename_ex", "(LIBSSH2_SFTP *,const char *,unsigned int,const char *,unsigned int,long)", "", "Argument[2]", "Argument[*0].Field[*rename_s]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_sftp_rename_ex", "(LIBSSH2_SFTP *,const char *,unsigned int,const char *,unsigned int,long)", "", "Argument[2]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_sftp_rename_ex", "(LIBSSH2_SFTP *,const char *,unsigned int,const char *,unsigned int,long)", "", "Argument[3]", "Argument[*0].Field[**rename_s]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_sftp_rename_ex", "(LIBSSH2_SFTP *,const char *,unsigned int,const char *,unsigned int,long)", "", "Argument[4]", "Argument[*0].Field[**rename_s]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_sftp_rename_ex", "(LIBSSH2_SFTP *,const char *,unsigned int,const char *,unsigned int,long)", "", "Argument[4]", "Argument[*0].Field[*rename_s]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_sftp_rename_ex", "(LIBSSH2_SFTP *,const char *,unsigned int,const char *,unsigned int,long)", "", "Argument[4]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_sftp_rename_ex", "(LIBSSH2_SFTP *,const char *,unsigned int,const char *,unsigned int,long)", "", "Argument[5]", "Argument[*0].Field[**rename_s]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_sftp_rmdir_ex", "(LIBSSH2_SFTP *,const char *,unsigned int)", "", "Argument[2]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_sftp_stat_ex", "(LIBSSH2_SFTP *,const char *,unsigned int,int,LIBSSH2_SFTP_ATTRIBUTES *)", "", "Argument[2]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_sftp_statvfs", "(LIBSSH2_SFTP *,const char *,size_t,LIBSSH2_SFTP_STATVFS *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "libssh2_sftp_symlink_ex", "(LIBSSH2_SFTP *,const char *,unsigned int,char *,unsigned int,int)", "", "Argument[2]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_sftp_symlink_ex", "(LIBSSH2_SFTP *,const char *,unsigned int,char *,unsigned int,int)", "", "Argument[4]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_sftp_unlink_ex", "(LIBSSH2_SFTP *,const char *,unsigned int)", "", "Argument[2]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_sftp_write", "(LIBSSH2_SFTP_HANDLE *,const char *,size_t)", "", "Argument[2]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_sign_sk", "(LIBSSH2_SESSION *,unsigned char **,size_t *,const unsigned char *,size_t,void **)", "", "Argument[*1]", "Argument[**1]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_sign_sk", "(LIBSSH2_SESSION *,unsigned char **,size_t *,const unsigned char *,size_t,void **)", "", "Argument[*1]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_sign_sk", "(LIBSSH2_SESSION *,unsigned char **,size_t *,const unsigned char *,size_t,void **)", "", "Argument[*2]", "Argument[**1]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_sign_sk", "(LIBSSH2_SESSION *,unsigned char **,size_t *,const unsigned char *,size_t,void **)", "", "Argument[1]", "Argument[**1]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_sign_sk", "(LIBSSH2_SESSION *,unsigned char **,size_t *,const unsigned char *,size_t,void **)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_sign_sk", "(LIBSSH2_SESSION *,unsigned char **,size_t *,const unsigned char *,size_t,void **)", "", "Argument[1]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_sign_sk", "(LIBSSH2_SESSION *,unsigned char **,size_t *,const unsigned char *,size_t,void **)", "", "Argument[2]", "Argument[**1]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_sign_sk", "(LIBSSH2_SESSION *,unsigned char **,size_t *,const unsigned char *,size_t,void **)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_sign_sk", "(LIBSSH2_SESSION *,unsigned char **,size_t *,const unsigned char *,size_t,void **)", "", "Argument[5]", "Argument[*5]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_userauth_banner", "(LIBSSH2_SESSION *,char **)", "", "Argument[*0].Field[**userauth_banner]", "Argument[**1]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_userauth_banner", "(LIBSSH2_SESSION *,char **)", "", "Argument[*0].Field[*userauth_banner]", "Argument[*1]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_userauth_hostbased_fromfile_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int)", "", "Argument[*1]", "Argument[*0].Field[**userauth_host_s]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_userauth_hostbased_fromfile_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int)", "", "Argument[*6]", "Argument[*0].Field[**userauth_host_s]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_userauth_hostbased_fromfile_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int)", "", "Argument[*8]", "Argument[*0].Field[**userauth_host_s]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_userauth_hostbased_fromfile_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int)", "", "Argument[1]", "Argument[*0].Field[**userauth_host_s]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_userauth_hostbased_fromfile_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int)", "", "Argument[2]", "Argument[*0].Field[**userauth_host_s]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_userauth_hostbased_fromfile_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int)", "", "Argument[2]", "Argument[*0].Field[*userauth_host_packet_len]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_userauth_hostbased_fromfile_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int)", "", "Argument[2]", "Argument[*0].Field[*userauth_host_s]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_userauth_hostbased_fromfile_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int)", "", "Argument[6]", "Argument[*0].Field[**userauth_host_s]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_userauth_hostbased_fromfile_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int)", "", "Argument[7]", "Argument[*0].Field[**userauth_host_s]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_userauth_hostbased_fromfile_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int)", "", "Argument[7]", "Argument[*0].Field[*userauth_host_packet_len]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_userauth_hostbased_fromfile_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int)", "", "Argument[7]", "Argument[*0].Field[*userauth_host_s]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_userauth_hostbased_fromfile_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int)", "", "Argument[8]", "Argument[*0].Field[**userauth_host_s]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_userauth_hostbased_fromfile_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int)", "", "Argument[9]", "Argument[*0].Field[**userauth_host_s]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_userauth_hostbased_fromfile_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int)", "", "Argument[9]", "Argument[*0].Field[*userauth_host_packet_len]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_userauth_hostbased_fromfile_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int)", "", "Argument[9]", "Argument[*0].Field[*userauth_host_s]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_userauth_keyboard_interactive_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,..(*)(..))", "", "Argument[2]", "Argument[*0].Field[*userauth_kybd_packet_len]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_userauth_list", "(LIBSSH2_SESSION *,const char *,unsigned int)", "", "Argument[2]", "Argument[*0].Field[*userauth_list_data_len]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_userauth_password_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,const char *,unsigned int,..(*)(..))", "", "Argument[2]", "Argument[*0].Field[*userauth_pswd_data_len]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_userauth_password_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,const char *,unsigned int,..(*)(..))", "", "Argument[4]", "Argument[*0].Field[*userauth_pswd_data_len]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_userauth_publickey", "(LIBSSH2_SESSION *,const char *,const unsigned char *,size_t,..(*)(..),void **)", "", "Argument[*1]", "Argument[*0].Field[**userauth_pblc_b]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_userauth_publickey", "(LIBSSH2_SESSION *,const char *,const unsigned char *,size_t,..(*)(..),void **)", "", "Argument[1]", "Argument[*0].Field[**userauth_pblc_b]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_userauth_publickey", "(LIBSSH2_SESSION *,const char *,const unsigned char *,size_t,..(*)(..),void **)", "", "Argument[3]", "Argument[*0].Field[**userauth_pblc_s]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_userauth_publickey", "(LIBSSH2_SESSION *,const char *,const unsigned char *,size_t,..(*)(..),void **)", "", "Argument[3]", "Argument[*0].Field[*userauth_pblc_packet_len]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_userauth_publickey", "(LIBSSH2_SESSION *,const char *,const unsigned char *,size_t,..(*)(..),void **)", "", "Argument[3]", "Argument[*0].Field[*userauth_pblc_s]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_userauth_publickey_fromfile_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *)", "", "Argument[*1]", "Argument[*0].Field[**userauth_pblc_b]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_userauth_publickey_fromfile_ex", "(LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *)", "", "Argument[1]", "Argument[*0].Field[**userauth_pblc_b]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_userauth_publickey_frommemory", "(LIBSSH2_SESSION *,const char *,size_t,const char *,size_t,const char *,size_t,const char *)", "", "Argument[*1]", "Argument[*0].Field[**userauth_pblc_b]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_userauth_publickey_frommemory", "(LIBSSH2_SESSION *,const char *,size_t,const char *,size_t,const char *,size_t,const char *)", "", "Argument[1]", "Argument[*0].Field[**userauth_pblc_b]", "taint", "dfc-generated"]
+ - ["", "", True, "libssh2_userauth_publickey_sk", "(LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,const char *,size_t,const char *,..(*)(..),void **)", "", "Argument[*1]", "Argument[*0].Field[**userauth_pblc_b]", "value", "dfc-generated"]
+ - ["", "", True, "libssh2_userauth_publickey_sk", "(LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,const char *,size_t,const char *,..(*)(..),void **)", "", "Argument[1]", "Argument[*0].Field[**userauth_pblc_b]", "taint", "dfc-generated"]
+ - ["", "", True, "plain_method", "(char *,size_t)", "", "Argument[1]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "poly1305_auth", "(u_char[16],unsigned char[16],const u_char *,const unsigned char *,size_t,const u_char[32],const unsigned char[32])", "", "Argument[*1]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "poly1305_auth", "(u_char[16],unsigned char[16],const u_char *,const unsigned char *,size_t,const u_char[32],const unsigned char[32])", "", "Argument[*3]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "poly1305_auth", "(u_char[16],unsigned char[16],const u_char *,const unsigned char *,size_t,const u_char[32],const unsigned char[32])", "", "Argument[1]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "poly1305_auth", "(u_char[16],unsigned char[16],const u_char *,const unsigned char *,size_t,const u_char[32],const unsigned char[32])", "", "Argument[3]", "Argument[*0]", "taint", "dfc-generated"]
diff --git a/cpp/ql/lib/ext/generated/libuv/libuv.model.yml b/cpp/ql/lib/ext/generated/libuv/libuv.model.yml
new file mode 100644
index 000000000000..e9621474db8f
--- /dev/null
+++ b/cpp/ql/lib/ext/generated/libuv/libuv.model.yml
@@ -0,0 +1,646 @@
+# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT.
+extensions:
+ - addsTo:
+ pack: codeql/cpp-all
+ extensible: summaryModel
+ data:
+ - ["", "", True, "uv__accept", "(int)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "uv__count_bufs", "(const uv_buf_t[],unsigned int)", "", "Argument[*0].Field[*len]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "uv__fs_poll_close", "(uv_fs_poll_t *)", "", "Argument[0]", "Argument[*0].Field[**loop].Field[*closing_handles]", "value", "dfc-generated"]
+ - ["", "", True, "uv__fs_post", "(uv_loop_t *,uv_fs_t *)", "", "Argument[*0]", "Argument[*1].Field[*work_req].Field[**loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv__fs_post", "(uv_loop_t *,uv_fs_t *)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv__get_constrained_cpu", "(long long *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "uv__getsockpeername", "(const uv_handle_t *,uv__peersockfunc,sockaddr *,int *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"]
+ - ["", "", True, "uv__idna_toascii", "(const char *,const char *,char *,char *)", "", "Argument[*0]", "Argument[*2]", "value", "dfc-generated"]
+ - ["", "", True, "uv__idna_toascii", "(const char *,const char *,char *,char *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "uv__idna_toascii", "(const char *,const char *,char *,char *)", "", "Argument[0]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "uv__idna_toascii", "(const char *,const char *,char *,char *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "uv__idna_toascii", "(const char *,const char *,char *,char *)", "", "Argument[2]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "uv__io_active", "(const uv__io_t *,unsigned int)", "", "Argument[*0].Field[*pevents]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "uv__io_active", "(const uv__io_t *,unsigned int)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "uv__io_close", "(uv_loop_t *,uv__io_t *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"]
+ - ["", "", True, "uv__io_close", "(uv_loop_t *,uv__io_t *)", "", "Argument[*1]", "Argument[*0]", "taint", "df-generated"]
+ - ["", "", True, "uv__io_feed", "(uv_loop_t *,uv__io_t *)", "", "Argument[*1].Field[*pending_queue]", "Argument[*0].Field[*pending_queue].Field[**prev]", "value", "dfc-generated"]
+ - ["", "", True, "uv__io_init", "(uv__io_t *,uv__io_cb,int)", "", "Argument[1]", "Argument[*0].Field[*cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv__io_init", "(uv__io_t *,uv__io_cb,int)", "", "Argument[2]", "Argument[*0].Field[*fd]", "value", "dfc-generated"]
+ - ["", "", True, "uv__io_init_start", "(uv_loop_t *,uv__io_t *,uv__io_cb,int,unsigned int)", "", "Argument[1]", "Argument[*0].Field[**watchers]", "value", "dfc-generated"]
+ - ["", "", True, "uv__io_init_start", "(uv_loop_t *,uv__io_t *,uv__io_cb,int,unsigned int)", "", "Argument[2]", "Argument[*0].Field[***watchers].Field[*cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv__io_init_start", "(uv_loop_t *,uv__io_t *,uv__io_cb,int,unsigned int)", "", "Argument[2]", "Argument[*1].Field[*cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv__io_init_start", "(uv_loop_t *,uv__io_t *,uv__io_cb,int,unsigned int)", "", "Argument[3]", "Argument[*0].Field[***watchers].Field[*fd]", "value", "dfc-generated"]
+ - ["", "", True, "uv__io_init_start", "(uv_loop_t *,uv__io_t *,uv__io_cb,int,unsigned int)", "", "Argument[3]", "Argument[*0].Field[*nwatchers]", "taint", "dfc-generated"]
+ - ["", "", True, "uv__io_init_start", "(uv_loop_t *,uv__io_t *,uv__io_cb,int,unsigned int)", "", "Argument[3]", "Argument[*1].Field[*fd]", "value", "dfc-generated"]
+ - ["", "", True, "uv__io_init_start", "(uv_loop_t *,uv__io_t *,uv__io_cb,int,unsigned int)", "", "Argument[4]", "Argument[*0].Field[***watchers].Field[*pevents]", "taint", "dfc-generated"]
+ - ["", "", True, "uv__io_init_start", "(uv_loop_t *,uv__io_t *,uv__io_cb,int,unsigned int)", "", "Argument[4]", "Argument[*1].Field[*pevents]", "taint", "dfc-generated"]
+ - ["", "", True, "uv__io_start", "(uv_loop_t *,uv__io_t *,unsigned int)", "", "Argument[1]", "Argument[*0].Field[**watchers]", "value", "dfc-generated"]
+ - ["", "", True, "uv__io_start", "(uv_loop_t *,uv__io_t *,unsigned int)", "", "Argument[2]", "Argument[*0].Field[***watchers].Field[*pevents]", "taint", "dfc-generated"]
+ - ["", "", True, "uv__io_start", "(uv_loop_t *,uv__io_t *,unsigned int)", "", "Argument[2]", "Argument[*1].Field[*pevents]", "taint", "dfc-generated"]
+ - ["", "", True, "uv__io_stop", "(uv_loop_t *,uv__io_t *,unsigned int)", "", "Argument[2]", "Argument[*1].Field[*pevents]", "taint", "dfc-generated"]
+ - ["", "", True, "uv__iou_fs_close", "(uv_loop_t *,uv_fs_t *)", "", "Argument[*0]", "Argument[*1].Field[*work_req].Field[**loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv__iou_fs_close", "(uv_loop_t *,uv_fs_t *)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv__iou_fs_fsync_or_fdatasync", "(uv_loop_t *,uv_fs_t *,uint32_t)", "", "Argument[*0]", "Argument[*1].Field[*work_req].Field[**loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv__iou_fs_fsync_or_fdatasync", "(uv_loop_t *,uv_fs_t *,uint32_t)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv__iou_fs_ftruncate", "(uv_loop_t *,uv_fs_t *)", "", "Argument[*0]", "Argument[*1].Field[*work_req].Field[**loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv__iou_fs_ftruncate", "(uv_loop_t *,uv_fs_t *)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv__iou_fs_link", "(uv_loop_t *,uv_fs_t *)", "", "Argument[*0]", "Argument[*1].Field[*work_req].Field[**loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv__iou_fs_link", "(uv_loop_t *,uv_fs_t *)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv__iou_fs_mkdir", "(uv_loop_t *,uv_fs_t *)", "", "Argument[*0]", "Argument[*1].Field[*work_req].Field[**loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv__iou_fs_mkdir", "(uv_loop_t *,uv_fs_t *)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv__iou_fs_open", "(uv_loop_t *,uv_fs_t *)", "", "Argument[*0]", "Argument[*1].Field[*work_req].Field[**loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv__iou_fs_open", "(uv_loop_t *,uv_fs_t *)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv__iou_fs_read_or_write", "(uv_loop_t *,uv_fs_t *,int)", "", "Argument[*0]", "Argument[*1].Field[*work_req].Field[**loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv__iou_fs_read_or_write", "(uv_loop_t *,uv_fs_t *,int)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv__iou_fs_rename", "(uv_loop_t *,uv_fs_t *)", "", "Argument[*0]", "Argument[*1].Field[*work_req].Field[**loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv__iou_fs_rename", "(uv_loop_t *,uv_fs_t *)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv__iou_fs_statx", "(uv_loop_t *,uv_fs_t *,int,int)", "", "Argument[*0]", "Argument[*1].Field[*work_req].Field[**loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv__iou_fs_statx", "(uv_loop_t *,uv_fs_t *,int,int)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv__iou_fs_symlink", "(uv_loop_t *,uv_fs_t *)", "", "Argument[*0]", "Argument[*1].Field[*work_req].Field[**loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv__iou_fs_symlink", "(uv_loop_t *,uv_fs_t *)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv__iou_fs_unlink", "(uv_loop_t *,uv_fs_t *)", "", "Argument[*0]", "Argument[*1].Field[*work_req].Field[**loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv__iou_fs_unlink", "(uv_loop_t *,uv_fs_t *)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv__loop_configure", "(uv_loop_t *,uv_loop_option,va_list)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "uv__make_close_pending", "(uv_handle_t *)", "", "Argument[0]", "Argument[*0].Field[**loop].Field[*closing_handles]", "value", "dfc-generated"]
+ - ["", "", True, "uv__next_timeout", "(const uv_loop_t *)", "", "Argument[*0].Field[*time]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "uv__pipe_listen", "(uv_pipe_t *,int,uv_connection_cb)", "", "Argument[2]", "Argument[*0].Field[*connection_cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv__process_init", "(uv_loop_t *)", "", "Argument[0]", "Argument[*0].Field[*child_watcher].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv__random_devurandom", "(void *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "uv__random_getrandom", "(void *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "uv__random_readpath", "(const char *,void *,size_t)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "uv__read_start", "(uv_stream_t *,uv_alloc_cb,uv_read_cb)", "", "Argument[1]", "Argument[*0].Field[*alloc_cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv__read_start", "(uv_stream_t *,uv_alloc_cb,uv_read_cb)", "", "Argument[2]", "Argument[*0].Field[*read_cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv__search_path", "(const char *,char *,size_t *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "uv__server_io", "(uv_loop_t *,uv__io_t *,unsigned int)", "", "Argument[*1]", "Argument[*0]", "taint", "df-generated"]
+ - ["", "", True, "uv__server_io", "(uv_loop_t *,uv__io_t *,unsigned int)", "", "Argument[1]", "Argument[*0]", "taint", "df-generated"]
+ - ["", "", True, "uv__server_io", "(uv_loop_t *,uv__io_t *,unsigned int)", "", "Argument[1]", "Argument[*1]", "taint", "df-generated"]
+ - ["", "", True, "uv__socket_sockopt", "(uv_handle_t *,int,int *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "uv__statx_to_stat", "(const uv__statx *,uv_stat_t *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"]
+ - ["", "", True, "uv__strdup", "(const char *)", "", "Argument[*0]", "ReturnValue[*]", "value", "dfc-generated"]
+ - ["", "", True, "uv__strdup", "(const char *)", "", "Argument[0]", "ReturnValue[*]", "taint", "dfc-generated"]
+ - ["", "", True, "uv__stream_init", "(uv_loop_t *,uv_stream_t *,uv_handle_type)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv__stream_init", "(uv_loop_t *,uv_stream_t *,uv_handle_type)", "", "Argument[2]", "Argument[*1].Field[*type]", "value", "dfc-generated"]
+ - ["", "", True, "uv__stream_open", "(uv_stream_t *,int,int)", "", "Argument[1]", "Argument[*0].Field[*io_watcher].Field[*fd]", "value", "dfc-generated"]
+ - ["", "", True, "uv__stream_open", "(uv_stream_t *,int,int)", "", "Argument[2]", "Argument[*0].Field[*flags]", "taint", "dfc-generated"]
+ - ["", "", True, "uv__strndup", "(const char *,size_t)", "", "Argument[*0]", "ReturnValue[*]", "value", "dfc-generated"]
+ - ["", "", True, "uv__strndup", "(const char *,size_t)", "", "Argument[0]", "ReturnValue[*]", "taint", "dfc-generated"]
+ - ["", "", True, "uv__strscpy", "(char *,const char *,size_t)", "", "Argument[*1]", "Argument[*0]", "value", "dfc-generated"]
+ - ["", "", True, "uv__strscpy", "(char *,const char *,size_t)", "", "Argument[1]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "uv__strtok", "(char *,const char *,char **)", "", "Argument[**2]", "ReturnValue[*]", "value", "dfc-generated"]
+ - ["", "", True, "uv__strtok", "(char *,const char *,char **)", "", "Argument[*0]", "Argument[**2]", "value", "dfc-generated"]
+ - ["", "", True, "uv__strtok", "(char *,const char *,char **)", "", "Argument[*0]", "ReturnValue[*]", "value", "dfc-generated"]
+ - ["", "", True, "uv__strtok", "(char *,const char *,char **)", "", "Argument[*2]", "Argument[**2]", "taint", "dfc-generated"]
+ - ["", "", True, "uv__strtok", "(char *,const char *,char **)", "", "Argument[*2]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "uv__strtok", "(char *,const char *,char **)", "", "Argument[0]", "Argument[**2]", "taint", "dfc-generated"]
+ - ["", "", True, "uv__strtok", "(char *,const char *,char **)", "", "Argument[0]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "uv__strtok", "(char *,const char *,char **)", "", "Argument[0]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "uv__strtok", "(char *,const char *,char **)", "", "Argument[2]", "Argument[**2]", "taint", "dfc-generated"]
+ - ["", "", True, "uv__strtok", "(char *,const char *,char **)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "uv__strtok", "(char *,const char *,char **)", "", "Argument[2]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "uv__tcp_connect", "(uv_connect_t *,uv_tcp_t *,const sockaddr *,unsigned int,uv_connect_cb)", "", "Argument[0]", "Argument[*1].Field[*connect_req]", "value", "dfc-generated"]
+ - ["", "", True, "uv__tcp_connect", "(uv_connect_t *,uv_tcp_t *,const sockaddr *,unsigned int,uv_connect_cb)", "", "Argument[1]", "Argument[*0].Field[*handle]", "value", "dfc-generated"]
+ - ["", "", True, "uv__tcp_connect", "(uv_connect_t *,uv_tcp_t *,const sockaddr *,unsigned int,uv_connect_cb)", "", "Argument[1]", "Argument[*1].Field[**connect_req].Field[*handle]", "value", "dfc-generated"]
+ - ["", "", True, "uv__tcp_connect", "(uv_connect_t *,uv_tcp_t *,const sockaddr *,unsigned int,uv_connect_cb)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "uv__tcp_connect", "(uv_connect_t *,uv_tcp_t *,const sockaddr *,unsigned int,uv_connect_cb)", "", "Argument[4]", "Argument[*0].Field[*cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv__tcp_connect", "(uv_connect_t *,uv_tcp_t *,const sockaddr *,unsigned int,uv_connect_cb)", "", "Argument[4]", "Argument[*1].Field[**connect_req].Field[*cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv__tcp_listen", "(uv_tcp_t *,int,uv_connection_cb)", "", "Argument[2]", "Argument[*0].Field[*connection_cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv__thread_getname", "(uv_thread_t *,char *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "uv__udp_init_ex", "(uv_loop_t *,uv_udp_t *,unsigned int,int)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv__udp_recv_start", "(uv_udp_t *,uv_alloc_cb,uv_udp_recv_cb)", "", "Argument[1]", "Argument[*0].Field[*alloc_cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv__udp_recv_start", "(uv_udp_t *,uv_alloc_cb,uv_udp_recv_cb)", "", "Argument[2]", "Argument[*0].Field[*recv_cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv__udp_send", "(uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,unsigned int,uv_udp_send_cb)", "", "Argument[*2].Field[*len]", "Argument[*1].Field[*send_queue_size]", "taint", "dfc-generated"]
+ - ["", "", True, "uv__udp_send", "(uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,unsigned int,uv_udp_send_cb)", "", "Argument[*2]", "Argument[*0].Field[**bufs]", "value", "dfc-generated"]
+ - ["", "", True, "uv__udp_send", "(uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,unsigned int,uv_udp_send_cb)", "", "Argument[*4]", "Argument[*0].Field[*u].Union[*(unnamed class/struct/union)]", "value", "dfc-generated"]
+ - ["", "", True, "uv__udp_send", "(uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,unsigned int,uv_udp_send_cb)", "", "Argument[1]", "Argument[*0].Field[*handle]", "value", "dfc-generated"]
+ - ["", "", True, "uv__udp_send", "(uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,unsigned int,uv_udp_send_cb)", "", "Argument[2]", "Argument[*0].Field[**bufs]", "taint", "dfc-generated"]
+ - ["", "", True, "uv__udp_send", "(uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,unsigned int,uv_udp_send_cb)", "", "Argument[3]", "Argument[*0].Field[*nbufs]", "value", "dfc-generated"]
+ - ["", "", True, "uv__udp_send", "(uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,unsigned int,uv_udp_send_cb)", "", "Argument[4]", "Argument[*0].Field[*u].Union[*(unnamed class/struct/union)]", "taint", "dfc-generated"]
+ - ["", "", True, "uv__udp_send", "(uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,unsigned int,uv_udp_send_cb)", "", "Argument[6]", "Argument[*0].Field[*send_cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv__udp_try_send2", "(uv_udp_t *,unsigned int,uv_buf_t *[],unsigned int[],sockaddr *[])", "", "Argument[*2]", "Argument[**2]", "taint", "dfc-generated"]
+ - ["", "", True, "uv__udp_try_send2", "(uv_udp_t *,unsigned int,uv_buf_t *[],unsigned int[],sockaddr *[])", "", "Argument[*4]", "Argument[**4]", "taint", "dfc-generated"]
+ - ["", "", True, "uv__udp_try_send", "(uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,unsigned int)", "", "Argument[*1].Field[*len]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "uv__utf8_decode1", "(const char **,const char *)", "", "Argument[**0]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "uv__utf8_decode1", "(const char **,const char *)", "", "Argument[*0]", "Argument[**0]", "taint", "dfc-generated"]
+ - ["", "", True, "uv__utf8_decode1", "(const char **,const char *)", "", "Argument[*0]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "uv__utf8_decode1", "(const char **,const char *)", "", "Argument[0]", "Argument[**0]", "taint", "dfc-generated"]
+ - ["", "", True, "uv__utf8_decode1", "(const char **,const char *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "uv__utf8_decode1", "(const char **,const char *)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "uv__work_done", "(uv_async_t *)", "", "Argument[0]", "Argument[*0]", "taint", "df-generated"]
+ - ["", "", True, "uv__work_submit", "(uv_loop_t *,uv__work *,uv__work_kind,..(*)(..),..(*)(..))", "", "Argument[*0]", "Argument[*1].Field[**loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv__work_submit", "(uv_loop_t *,uv__work *,uv__work_kind,..(*)(..),..(*)(..))", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv__work_submit", "(uv_loop_t *,uv__work *,uv__work_kind,..(*)(..),..(*)(..))", "", "Argument[3]", "Argument[*1].Field[*work]", "value", "dfc-generated"]
+ - ["", "", True, "uv__work_submit", "(uv_loop_t *,uv__work *,uv__work_kind,..(*)(..),..(*)(..))", "", "Argument[4]", "Argument[*1].Field[*done]", "value", "dfc-generated"]
+ - ["", "", True, "uv_accept", "(uv_stream_t *,uv_stream_t *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"]
+ - ["", "", True, "uv_async_init", "(uv_loop_t *,uv_async_t *,uv_async_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_async_init", "(uv_loop_t *,uv_async_t *,uv_async_cb)", "", "Argument[2]", "Argument[*1].Field[*async_cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv_backend_fd", "(const uv_loop_t *)", "", "Argument[*0].Field[*backend_fd]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "uv_backend_timeout", "(const uv_loop_t *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "uv_buf_init", "(char *,unsigned int)", "", "Argument[*0]", "ReturnValue.Field[**base]", "value", "dfc-generated"]
+ - ["", "", True, "uv_buf_init", "(char *,unsigned int)", "", "Argument[0]", "ReturnValue.Field[*base]", "value", "dfc-generated"]
+ - ["", "", True, "uv_buf_init", "(char *,unsigned int)", "", "Argument[1]", "ReturnValue.Field[*len]", "value", "dfc-generated"]
+ - ["", "", True, "uv_check_init", "(uv_loop_t *,uv_check_t *)", "", "Argument[*1].Field[*handle_queue]", "Argument[*0].Field[*handle_queue].Field[**prev]", "value", "dfc-generated"]
+ - ["", "", True, "uv_check_init", "(uv_loop_t *,uv_check_t *)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_check_start", "(uv_check_t *,uv_check_cb)", "", "Argument[1]", "Argument[*0].Field[*check_cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv_close", "(uv_handle_t *,uv_close_cb)", "", "Argument[0]", "Argument[*0].Field[**loop].Field[*closing_handles]", "value", "dfc-generated"]
+ - ["", "", True, "uv_close", "(uv_handle_t *,uv_close_cb)", "", "Argument[1]", "Argument[*0].Field[*close_cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv_cpu_info", "(uv_cpu_info_t **,int *)", "", "Argument[*0]", "Argument[**0].Field[**model]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_cpu_info", "(uv_cpu_info_t **,int *)", "", "Argument[*0]", "Argument[**0].Field[*model]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_cpu_info", "(uv_cpu_info_t **,int *)", "", "Argument[0]", "Argument[**0].Field[**model]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_cpu_info", "(uv_cpu_info_t **,int *)", "", "Argument[0]", "Argument[**0].Field[*model]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_cpu_info", "(uv_cpu_info_t **,int *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_cwd", "(char *,size_t *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_dlerror", "(const uv_lib_t *)", "", "Argument[*0].Field[**errmsg]", "ReturnValue[*]", "value", "dfc-generated"]
+ - ["", "", True, "uv_dlerror", "(const uv_lib_t *)", "", "Argument[*0].Field[*errmsg]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "uv_dlsym", "(uv_lib_t *,const char *,void **)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_err_name", "(int)", "", "Argument[0]", "ReturnValue[*]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_err_name_r", "(int,char *,size_t)", "", "Argument[*1]", "ReturnValue[*]", "value", "dfc-generated"]
+ - ["", "", True, "uv_err_name_r", "(int,char *,size_t)", "", "Argument[0]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_err_name_r", "(int,char *,size_t)", "", "Argument[0]", "ReturnValue[*]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_err_name_r", "(int,char *,size_t)", "", "Argument[1]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "uv_exepath", "(char *,size_t *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_fileno", "(const uv_handle_t *,uv_os_fd_t *)", "", "Argument[*0].Field[*io_watcher].Field[*fd]", "Argument[*1]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_access", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[*2]", "Argument[*1].Field[**path]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_access", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_access", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_access", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[**path]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_fs_access", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*path]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_access", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*flags]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_access", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[4]", "Argument[*1].Field[*cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_chmod", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[*2]", "Argument[*1].Field[**path]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_chmod", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_chmod", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_chmod", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[**path]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_fs_chmod", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*path]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_chmod", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*mode]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_chmod", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[4]", "Argument[*1].Field[*cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_chown", "(uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb)", "", "Argument[*2]", "Argument[*1].Field[**path]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_chown", "(uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_chown", "(uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_chown", "(uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[**path]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_fs_chown", "(uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*path]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_chown", "(uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*uid]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_chown", "(uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb)", "", "Argument[4]", "Argument[*1].Field[*gid]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_chown", "(uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb)", "", "Argument[5]", "Argument[*1].Field[*cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_close", "(uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_close", "(uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_close", "(uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*file]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_close", "(uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_closedir", "(uv_loop_t *,uv_fs_t *,uv_dir_t *,uv_fs_cb)", "", "Argument[*2]", "Argument[*1].Field[**ptr]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_closedir", "(uv_loop_t *,uv_fs_t *,uv_dir_t *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_closedir", "(uv_loop_t *,uv_fs_t *,uv_dir_t *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_closedir", "(uv_loop_t *,uv_fs_t *,uv_dir_t *,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*ptr]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_closedir", "(uv_loop_t *,uv_fs_t *,uv_dir_t *,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_copyfile", "(uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb)", "", "Argument[*2]", "Argument[*1].Field[**path]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_copyfile", "(uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb)", "", "Argument[*3]", "Argument[*1].Field[**new_path]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_copyfile", "(uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_copyfile", "(uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_copyfile", "(uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[**path]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_fs_copyfile", "(uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*path]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_copyfile", "(uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[**new_path]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_fs_copyfile", "(uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*new_path]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_copyfile", "(uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb)", "", "Argument[4]", "Argument[*1].Field[*flags]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_copyfile", "(uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb)", "", "Argument[5]", "Argument[*1].Field[*cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_event_getpath", "(uv_fs_event_t *,char *,size_t *)", "", "Argument[*0].Field[**path]", "Argument[*1]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_event_getpath", "(uv_fs_event_t *,char *,size_t *)", "", "Argument[*0].Field[*path]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_fs_event_getpath", "(uv_fs_event_t *,char *,size_t *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_fs_event_init", "(uv_loop_t *,uv_fs_event_t *)", "", "Argument[*1].Field[*handle_queue]", "Argument[*0].Field[*handle_queue].Field[**prev]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_event_init", "(uv_loop_t *,uv_fs_event_t *)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_event_start", "(uv_fs_event_t *,uv_fs_event_cb,const char *,unsigned int)", "", "Argument[1]", "Argument[*0].Field[*cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_event_start", "(uv_fs_event_t *,uv_fs_event_cb,const char *,unsigned int)", "", "Argument[2]", "Argument[*0].Field[**path]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_fs_fchmod", "(uv_loop_t *,uv_fs_t *,uv_file,int,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_fchmod", "(uv_loop_t *,uv_fs_t *,uv_file,int,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_fchmod", "(uv_loop_t *,uv_fs_t *,uv_file,int,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*file]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_fchmod", "(uv_loop_t *,uv_fs_t *,uv_file,int,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*mode]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_fchmod", "(uv_loop_t *,uv_fs_t *,uv_file,int,uv_fs_cb)", "", "Argument[4]", "Argument[*1].Field[*cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_fchown", "(uv_loop_t *,uv_fs_t *,uv_file,uv_uid_t,uv_gid_t,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_fchown", "(uv_loop_t *,uv_fs_t *,uv_file,uv_uid_t,uv_gid_t,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_fchown", "(uv_loop_t *,uv_fs_t *,uv_file,uv_uid_t,uv_gid_t,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*file]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_fchown", "(uv_loop_t *,uv_fs_t *,uv_file,uv_uid_t,uv_gid_t,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*uid]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_fchown", "(uv_loop_t *,uv_fs_t *,uv_file,uv_uid_t,uv_gid_t,uv_fs_cb)", "", "Argument[4]", "Argument[*1].Field[*gid]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_fchown", "(uv_loop_t *,uv_fs_t *,uv_file,uv_uid_t,uv_gid_t,uv_fs_cb)", "", "Argument[5]", "Argument[*1].Field[*cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_fdatasync", "(uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_fdatasync", "(uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_fdatasync", "(uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*file]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_fdatasync", "(uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_fstat", "(uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_fstat", "(uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_fstat", "(uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*file]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_fstat", "(uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_fsync", "(uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_fsync", "(uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_fsync", "(uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*file]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_fsync", "(uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_ftruncate", "(uv_loop_t *,uv_fs_t *,uv_file,int64_t,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_ftruncate", "(uv_loop_t *,uv_fs_t *,uv_file,int64_t,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_ftruncate", "(uv_loop_t *,uv_fs_t *,uv_file,int64_t,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*file]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_ftruncate", "(uv_loop_t *,uv_fs_t *,uv_file,int64_t,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*off]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_ftruncate", "(uv_loop_t *,uv_fs_t *,uv_file,int64_t,uv_fs_cb)", "", "Argument[4]", "Argument[*1].Field[*cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_futime", "(uv_loop_t *,uv_fs_t *,uv_file,double,double,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_futime", "(uv_loop_t *,uv_fs_t *,uv_file,double,double,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_futime", "(uv_loop_t *,uv_fs_t *,uv_file,double,double,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*file]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_futime", "(uv_loop_t *,uv_fs_t *,uv_file,double,double,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*atime]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_futime", "(uv_loop_t *,uv_fs_t *,uv_file,double,double,uv_fs_cb)", "", "Argument[4]", "Argument[*1].Field[*mtime]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_futime", "(uv_loop_t *,uv_fs_t *,uv_file,double,double,uv_fs_cb)", "", "Argument[5]", "Argument[*1].Field[*cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_get_path", "(const uv_fs_t *)", "", "Argument[*0].Field[**path]", "ReturnValue[*]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_get_path", "(const uv_fs_t *)", "", "Argument[*0].Field[*path]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_get_ptr", "(const uv_fs_t *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "uv_fs_get_ptr", "(const uv_fs_t *)", "", "Argument[*0]", "ReturnValue[**]", "taint", "df-generated"]
+ - ["", "", True, "uv_fs_get_ptr", "(const uv_fs_t *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"]
+ - ["", "", True, "uv_fs_get_result", "(const uv_fs_t *)", "", "Argument[*0].Field[*result]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_get_statbuf", "(uv_fs_t *)", "", "Argument[*0].Field[*statbuf]", "ReturnValue[*]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_get_system_error", "(const uv_fs_t *)", "", "Argument[*0].Field[*result]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "uv_fs_get_type", "(const uv_fs_t *)", "", "Argument[*0].Field[*fs_type]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_lchown", "(uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb)", "", "Argument[*2]", "Argument[*1].Field[**path]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_lchown", "(uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_lchown", "(uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_lchown", "(uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[**path]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_fs_lchown", "(uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*path]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_lchown", "(uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*uid]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_lchown", "(uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb)", "", "Argument[4]", "Argument[*1].Field[*gid]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_lchown", "(uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb)", "", "Argument[5]", "Argument[*1].Field[*cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_link", "(uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb)", "", "Argument[*2]", "Argument[*1].Field[**path]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_link", "(uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb)", "", "Argument[*3]", "Argument[*1].Field[**new_path]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_link", "(uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_link", "(uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_link", "(uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[**path]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_fs_link", "(uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*path]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_link", "(uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[**new_path]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_fs_link", "(uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*new_path]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_link", "(uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb)", "", "Argument[4]", "Argument[*1].Field[*cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_lstat", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[*2]", "Argument[*1].Field[**path]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_lstat", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_lstat", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_lstat", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[**path]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_fs_lstat", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*path]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_lstat", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_lutime", "(uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb)", "", "Argument[*2]", "Argument[*1].Field[**path]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_lutime", "(uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_lutime", "(uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_lutime", "(uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[**path]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_fs_lutime", "(uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*path]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_lutime", "(uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*atime]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_lutime", "(uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb)", "", "Argument[4]", "Argument[*1].Field[*mtime]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_lutime", "(uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb)", "", "Argument[5]", "Argument[*1].Field[*cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_mkdir", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[*2]", "Argument[*1].Field[**path]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_mkdir", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_mkdir", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_mkdir", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[**path]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_fs_mkdir", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*path]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_mkdir", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*mode]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_mkdir", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[4]", "Argument[*1].Field[*cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_mkdtemp", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[*2]", "Argument[*1].Field[**path]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_mkdtemp", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_mkdtemp", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_mkdtemp", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[**path]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_fs_mkdtemp", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_mkstemp", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[*2]", "Argument[*1].Field[**path]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_mkstemp", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_mkstemp", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_mkstemp", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[**path]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_fs_mkstemp", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_open", "(uv_loop_t *,uv_fs_t *,const char *,int,int,uv_fs_cb)", "", "Argument[*2]", "Argument[*1].Field[**path]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_open", "(uv_loop_t *,uv_fs_t *,const char *,int,int,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_open", "(uv_loop_t *,uv_fs_t *,const char *,int,int,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_open", "(uv_loop_t *,uv_fs_t *,const char *,int,int,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[**path]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_fs_open", "(uv_loop_t *,uv_fs_t *,const char *,int,int,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*path]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_open", "(uv_loop_t *,uv_fs_t *,const char *,int,int,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*flags]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_open", "(uv_loop_t *,uv_fs_t *,const char *,int,int,uv_fs_cb)", "", "Argument[4]", "Argument[*1].Field[*mode]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_open", "(uv_loop_t *,uv_fs_t *,const char *,int,int,uv_fs_cb)", "", "Argument[5]", "Argument[*1].Field[*cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_opendir", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[*2]", "Argument[*1].Field[**path]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_opendir", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_opendir", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_opendir", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[**path]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_fs_opendir", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*path]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_opendir", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_poll_getpath", "(uv_fs_poll_t *,char *,size_t *)", "", "Argument[*0].Field[**poll_ctx].Field[**path]", "Argument[*1]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_poll_getpath", "(uv_fs_poll_t *,char *,size_t *)", "", "Argument[*0].Field[**poll_ctx].Field[*path]", "Argument[*1]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_poll_getpath", "(uv_fs_poll_t *,char *,size_t *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_fs_poll_init", "(uv_loop_t *,uv_fs_poll_t *)", "", "Argument[*1].Field[*handle_queue]", "Argument[*0].Field[*handle_queue].Field[**prev]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_poll_init", "(uv_loop_t *,uv_fs_poll_t *)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_poll_start", "(uv_fs_poll_t *,uv_fs_poll_cb,const char *,unsigned int)", "", "Argument[*2]", "Argument[*0].Field[**poll_ctx].Field[*path]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_poll_start", "(uv_fs_poll_t *,uv_fs_poll_cb,const char *,unsigned int)", "", "Argument[0]", "Argument[*0].Field[**poll_ctx].Field[*parent_handle]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_poll_start", "(uv_fs_poll_t *,uv_fs_poll_cb,const char *,unsigned int)", "", "Argument[1]", "Argument[*0].Field[**poll_ctx].Field[*poll_cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_poll_start", "(uv_fs_poll_t *,uv_fs_poll_cb,const char *,unsigned int)", "", "Argument[2]", "Argument[*0].Field[**poll_ctx].Field[*path]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_fs_poll_start", "(uv_fs_poll_t *,uv_fs_poll_cb,const char *,unsigned int)", "", "Argument[3]", "Argument[*0].Field[**poll_ctx].Field[*interval]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_read", "(uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb)", "", "Argument[*3]", "Argument[*1].Field[**bufs]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_read", "(uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_read", "(uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_read", "(uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*file]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_read", "(uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[**bufs]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_fs_read", "(uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*bufs]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_read", "(uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb)", "", "Argument[4]", "Argument[*1].Field[*nbufs]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_read", "(uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb)", "", "Argument[5]", "Argument[*1].Field[*off]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_read", "(uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb)", "", "Argument[6]", "Argument[*1].Field[*cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_readdir", "(uv_loop_t *,uv_fs_t *,uv_dir_t *,uv_fs_cb)", "", "Argument[*2]", "Argument[*1].Field[**ptr]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_readdir", "(uv_loop_t *,uv_fs_t *,uv_dir_t *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_readdir", "(uv_loop_t *,uv_fs_t *,uv_dir_t *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_readdir", "(uv_loop_t *,uv_fs_t *,uv_dir_t *,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*ptr]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_readdir", "(uv_loop_t *,uv_fs_t *,uv_dir_t *,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_readlink", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[*2]", "Argument[*1].Field[**path]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_readlink", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_readlink", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_readlink", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[**path]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_fs_readlink", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*path]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_readlink", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_realpath", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[*2]", "Argument[*1].Field[**path]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_realpath", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_realpath", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_realpath", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[**path]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_fs_realpath", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*path]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_realpath", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_rename", "(uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb)", "", "Argument[*2]", "Argument[*1].Field[**path]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_rename", "(uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb)", "", "Argument[*3]", "Argument[*1].Field[**new_path]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_rename", "(uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_rename", "(uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_rename", "(uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[**path]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_fs_rename", "(uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*path]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_rename", "(uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[**new_path]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_fs_rename", "(uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*new_path]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_rename", "(uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb)", "", "Argument[4]", "Argument[*1].Field[*cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_rmdir", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[*2]", "Argument[*1].Field[**path]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_rmdir", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_rmdir", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_rmdir", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[**path]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_fs_rmdir", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*path]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_rmdir", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_scandir", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[*2]", "Argument[*1].Field[**path]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_scandir", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_scandir", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_scandir", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[**path]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_fs_scandir", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*path]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_scandir", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*flags]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_scandir", "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)", "", "Argument[4]", "Argument[*1].Field[*cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_scandir_next", "(uv_fs_t *,uv_dirent_t *)", "", "Argument[*0].Field[***ptr].Field[*d_name]", "Argument[*1].Field[**name]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_scandir_next", "(uv_fs_t *,uv_dirent_t *)", "", "Argument[*0].Field[*result]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_sendfile", "(uv_loop_t *,uv_fs_t *,uv_file,uv_file,int64_t,size_t,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_sendfile", "(uv_loop_t *,uv_fs_t *,uv_file,uv_file,int64_t,size_t,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_sendfile", "(uv_loop_t *,uv_fs_t *,uv_file,uv_file,int64_t,size_t,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*file]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_sendfile", "(uv_loop_t *,uv_fs_t *,uv_file,uv_file,int64_t,size_t,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*flags]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_sendfile", "(uv_loop_t *,uv_fs_t *,uv_file,uv_file,int64_t,size_t,uv_fs_cb)", "", "Argument[4]", "Argument[*1].Field[*off]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_sendfile", "(uv_loop_t *,uv_fs_t *,uv_file,uv_file,int64_t,size_t,uv_fs_cb)", "", "Argument[5]", "Argument[*1].Field[*bufsml].Field[*len]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_sendfile", "(uv_loop_t *,uv_fs_t *,uv_file,uv_file,int64_t,size_t,uv_fs_cb)", "", "Argument[6]", "Argument[*1].Field[*cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_stat", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[*2]", "Argument[*1].Field[**path]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_stat", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_stat", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_stat", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[**path]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_fs_stat", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*path]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_stat", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_statfs", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[*2]", "Argument[*1].Field[**path]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_statfs", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_statfs", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_statfs", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[**path]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_fs_statfs", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*path]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_statfs", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_symlink", "(uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb)", "", "Argument[*2]", "Argument[*1].Field[**path]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_symlink", "(uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb)", "", "Argument[*3]", "Argument[*1].Field[**new_path]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_symlink", "(uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_symlink", "(uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_symlink", "(uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[**path]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_fs_symlink", "(uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*path]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_symlink", "(uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[**new_path]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_fs_symlink", "(uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*new_path]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_symlink", "(uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb)", "", "Argument[4]", "Argument[*1].Field[*flags]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_symlink", "(uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb)", "", "Argument[5]", "Argument[*1].Field[*cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_unlink", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[*2]", "Argument[*1].Field[**path]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_unlink", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_unlink", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_unlink", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[**path]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_fs_unlink", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*path]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_unlink", "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_utime", "(uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb)", "", "Argument[*2]", "Argument[*1].Field[**path]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_utime", "(uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_utime", "(uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_utime", "(uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[**path]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_fs_utime", "(uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*path]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_utime", "(uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[*atime]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_utime", "(uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb)", "", "Argument[4]", "Argument[*1].Field[*mtime]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_utime", "(uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb)", "", "Argument[5]", "Argument[*1].Field[*cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_write", "(uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb)", "", "Argument[*3]", "Argument[*1].Field[**bufs]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_write", "(uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_write", "(uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_write", "(uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb)", "", "Argument[2]", "Argument[*1].Field[*file]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_write", "(uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb)", "", "Argument[3]", "Argument[*1].Field[**bufs]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_fs_write", "(uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb)", "", "Argument[4]", "Argument[*1].Field[*nbufs]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_write", "(uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb)", "", "Argument[5]", "Argument[*1].Field[*off]", "value", "dfc-generated"]
+ - ["", "", True, "uv_fs_write", "(uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb)", "", "Argument[6]", "Argument[*1].Field[*cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv_get_osfhandle", "(int)", "", "Argument[0]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "uv_getaddrinfo", "(uv_loop_t *,uv_getaddrinfo_t *,uv_getaddrinfo_cb,const char *,const char *,const addrinfo *)", "", "Argument[*3]", "Argument[*1].Field[**hostname]", "value", "dfc-generated"]
+ - ["", "", True, "uv_getaddrinfo", "(uv_loop_t *,uv_getaddrinfo_t *,uv_getaddrinfo_cb,const char *,const char *,const addrinfo *)", "", "Argument[*4]", "Argument[*1].Field[**service]", "value", "dfc-generated"]
+ - ["", "", True, "uv_getaddrinfo", "(uv_loop_t *,uv_getaddrinfo_t *,uv_getaddrinfo_cb,const char *,const char *,const addrinfo *)", "", "Argument[*5]", "Argument[*1].Field[**hints]", "value", "dfc-generated"]
+ - ["", "", True, "uv_getaddrinfo", "(uv_loop_t *,uv_getaddrinfo_t *,uv_getaddrinfo_cb,const char *,const char *,const addrinfo *)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_getaddrinfo", "(uv_loop_t *,uv_getaddrinfo_t *,uv_getaddrinfo_cb,const char *,const char *,const addrinfo *)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_getaddrinfo", "(uv_loop_t *,uv_getaddrinfo_t *,uv_getaddrinfo_cb,const char *,const char *,const addrinfo *)", "", "Argument[2]", "Argument[*1].Field[*cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv_getaddrinfo", "(uv_loop_t *,uv_getaddrinfo_t *,uv_getaddrinfo_cb,const char *,const char *,const addrinfo *)", "", "Argument[3]", "Argument[*1].Field[**hostname]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_getaddrinfo", "(uv_loop_t *,uv_getaddrinfo_t *,uv_getaddrinfo_cb,const char *,const char *,const addrinfo *)", "", "Argument[4]", "Argument[*1].Field[**service]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_getaddrinfo", "(uv_loop_t *,uv_getaddrinfo_t *,uv_getaddrinfo_cb,const char *,const char *,const addrinfo *)", "", "Argument[5]", "Argument[*1].Field[**hints]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_getnameinfo", "(uv_loop_t *,uv_getnameinfo_t *,uv_getnameinfo_cb,const sockaddr *,int)", "", "Argument[*3]", "Argument[*1].Field[*storage]", "value", "dfc-generated"]
+ - ["", "", True, "uv_getnameinfo", "(uv_loop_t *,uv_getnameinfo_t *,uv_getnameinfo_cb,const sockaddr *,int)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_getnameinfo", "(uv_loop_t *,uv_getnameinfo_t *,uv_getnameinfo_cb,const sockaddr *,int)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_getnameinfo", "(uv_loop_t *,uv_getnameinfo_t *,uv_getnameinfo_cb,const sockaddr *,int)", "", "Argument[2]", "Argument[*1].Field[*getnameinfo_cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv_getnameinfo", "(uv_loop_t *,uv_getnameinfo_t *,uv_getnameinfo_cb,const sockaddr *,int)", "", "Argument[3]", "Argument[*1].Field[*storage]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_getnameinfo", "(uv_loop_t *,uv_getnameinfo_t *,uv_getnameinfo_cb,const sockaddr *,int)", "", "Argument[4]", "Argument[*1].Field[*flags]", "value", "dfc-generated"]
+ - ["", "", True, "uv_handle_get_data", "(const uv_handle_t *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "uv_handle_get_data", "(const uv_handle_t *)", "", "Argument[*0]", "ReturnValue[**]", "taint", "df-generated"]
+ - ["", "", True, "uv_handle_get_data", "(const uv_handle_t *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"]
+ - ["", "", True, "uv_handle_get_loop", "(const uv_handle_t *)", "", "Argument[*0].Field[**loop]", "ReturnValue[*]", "value", "dfc-generated"]
+ - ["", "", True, "uv_handle_get_loop", "(const uv_handle_t *)", "", "Argument[*0].Field[*loop]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "uv_handle_get_type", "(const uv_handle_t *)", "", "Argument[*0].Field[*type]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "uv_handle_set_data", "(uv_handle_t *,void *)", "", "Argument[**1]", "Argument[*0].Field[***data]", "value", "dfc-generated"]
+ - ["", "", True, "uv_handle_set_data", "(uv_handle_t *,void *)", "", "Argument[*1]", "Argument[*0].Field[**data]", "value", "dfc-generated"]
+ - ["", "", True, "uv_handle_set_data", "(uv_handle_t *,void *)", "", "Argument[1]", "Argument[*0].Field[*data]", "value", "dfc-generated"]
+ - ["", "", True, "uv_has_ref", "(const uv_handle_t *)", "", "Argument[*0].Field[*flags]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "uv_idle_init", "(uv_loop_t *,uv_idle_t *)", "", "Argument[*1].Field[*handle_queue]", "Argument[*0].Field[*handle_queue].Field[**prev]", "value", "dfc-generated"]
+ - ["", "", True, "uv_idle_init", "(uv_loop_t *,uv_idle_t *)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_idle_start", "(uv_idle_t *,uv_idle_cb)", "", "Argument[1]", "Argument[*0].Field[*idle_cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv_if_indextoiid", "(unsigned int,char *,size_t *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_if_indextoname", "(unsigned int,char *,size_t *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_inet_ntop", "(int,const void *,char *,size_t)", "", "Argument[*1]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_inet_ntop", "(int,const void *,char *,size_t)", "", "Argument[1]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_interface_addresses", "(uv_interface_address_t **,int *)", "", "Argument[*0]", "Argument[**0].Field[*name]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_interface_addresses", "(uv_interface_address_t **,int *)", "", "Argument[*1]", "Argument[**0].Field[*name]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_interface_addresses", "(uv_interface_address_t **,int *)", "", "Argument[0]", "Argument[**0].Field[*name]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_interface_addresses", "(uv_interface_address_t **,int *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_interface_addresses", "(uv_interface_address_t **,int *)", "", "Argument[1]", "Argument[**0].Field[*name]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_interface_addresses", "(uv_interface_address_t **,int *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_ip4_name", "(const sockaddr_in *,char *,size_t)", "", "Argument[*0].Field[*sin_addr]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_ip6_name", "(const sockaddr_in6 *,char *,size_t)", "", "Argument[*0].Field[*sin6_addr]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_ip_name", "(const sockaddr *,char *,size_t)", "", "Argument[*0].Field[*sin6_addr]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_ip_name", "(const sockaddr *,char *,size_t)", "", "Argument[*0].Field[*sin_addr]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_is_active", "(const uv_handle_t *)", "", "Argument[*0].Field[*flags]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "uv_is_closing", "(const uv_handle_t *)", "", "Argument[*0].Field[*flags]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "uv_key_delete", "(uv_key_t *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_key_get", "(uv_key_t *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_key_set", "(uv_key_t *,void *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_listen", "(uv_stream_t *,int,uv_connection_cb)", "", "Argument[2]", "Argument[*0].Field[*connection_cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv_loop_get_data", "(const uv_loop_t *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "uv_loop_get_data", "(const uv_loop_t *)", "", "Argument[*0]", "ReturnValue[**]", "taint", "df-generated"]
+ - ["", "", True, "uv_loop_get_data", "(const uv_loop_t *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"]
+ - ["", "", True, "uv_loop_init", "(uv_loop_t *)", "", "Argument[0]", "Argument[*0].Field[*child_watcher].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_loop_init", "(uv_loop_t *)", "", "Argument[0]", "Argument[*0].Field[*wq_async].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_loop_set_data", "(uv_loop_t *,void *)", "", "Argument[**1]", "Argument[*0].Field[***data]", "value", "dfc-generated"]
+ - ["", "", True, "uv_loop_set_data", "(uv_loop_t *,void *)", "", "Argument[*1]", "Argument[*0].Field[**data]", "value", "dfc-generated"]
+ - ["", "", True, "uv_loop_set_data", "(uv_loop_t *,void *)", "", "Argument[1]", "Argument[*0].Field[*data]", "value", "dfc-generated"]
+ - ["", "", True, "uv_now", "(const uv_loop_t *)", "", "Argument[*0].Field[*time]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "uv_open_osfhandle", "(uv_os_fd_t)", "", "Argument[0]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "uv_os_environ", "(uv_env_item_t **,int *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_os_free_environ", "(uv_env_item_t *,int)", "", "Argument[0]", "Argument[*0]", "taint", "df-generated"]
+ - ["", "", True, "uv_os_getenv", "(const char *,char *,size_t *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_os_gethostname", "(char *,size_t *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_os_homedir", "(char *,size_t *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_os_tmpdir", "(char *,size_t *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_pipe_bind2", "(uv_pipe_t *,const char *,size_t,unsigned int)", "", "Argument[*1]", "Argument[*0].Field[**pipe_fname]", "value", "dfc-generated"]
+ - ["", "", True, "uv_pipe_bind2", "(uv_pipe_t *,const char *,size_t,unsigned int)", "", "Argument[1]", "Argument[*0].Field[**pipe_fname]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_pipe_bind", "(uv_pipe_t *,const char *)", "", "Argument[*1]", "Argument[*0].Field[**pipe_fname]", "value", "dfc-generated"]
+ - ["", "", True, "uv_pipe_bind", "(uv_pipe_t *,const char *)", "", "Argument[1]", "Argument[*0].Field[**pipe_fname]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_pipe_connect2", "(uv_connect_t *,uv_pipe_t *,const char *,size_t,unsigned int,uv_connect_cb)", "", "Argument[0]", "Argument[*0].Field[**handle].Field[*connect_req]", "value", "dfc-generated"]
+ - ["", "", True, "uv_pipe_connect2", "(uv_connect_t *,uv_pipe_t *,const char *,size_t,unsigned int,uv_connect_cb)", "", "Argument[0]", "Argument[*1].Field[*connect_req]", "value", "dfc-generated"]
+ - ["", "", True, "uv_pipe_connect2", "(uv_connect_t *,uv_pipe_t *,const char *,size_t,unsigned int,uv_connect_cb)", "", "Argument[1]", "Argument[*0].Field[*handle]", "value", "dfc-generated"]
+ - ["", "", True, "uv_pipe_connect2", "(uv_connect_t *,uv_pipe_t *,const char *,size_t,unsigned int,uv_connect_cb)", "", "Argument[5]", "Argument[*0].Field[*cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv_pipe_connect", "(uv_connect_t *,uv_pipe_t *,const char *,uv_connect_cb)", "", "Argument[0]", "Argument[*0].Field[**handle].Field[*connect_req]", "value", "dfc-generated"]
+ - ["", "", True, "uv_pipe_connect", "(uv_connect_t *,uv_pipe_t *,const char *,uv_connect_cb)", "", "Argument[0]", "Argument[*1].Field[*connect_req]", "value", "dfc-generated"]
+ - ["", "", True, "uv_pipe_connect", "(uv_connect_t *,uv_pipe_t *,const char *,uv_connect_cb)", "", "Argument[1]", "Argument[*0].Field[*handle]", "value", "dfc-generated"]
+ - ["", "", True, "uv_pipe_connect", "(uv_connect_t *,uv_pipe_t *,const char *,uv_connect_cb)", "", "Argument[1]", "Argument[*1].Field[**connect_req].Field[*handle]", "value", "dfc-generated"]
+ - ["", "", True, "uv_pipe_connect", "(uv_connect_t *,uv_pipe_t *,const char *,uv_connect_cb)", "", "Argument[3]", "Argument[*0].Field[*cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv_pipe_connect", "(uv_connect_t *,uv_pipe_t *,const char *,uv_connect_cb)", "", "Argument[3]", "Argument[*1].Field[**connect_req].Field[*cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv_pipe_getpeername", "(const uv_pipe_t *,char *,size_t *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_pipe_getsockname", "(const uv_pipe_t *,char *,size_t *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_pipe_init", "(uv_loop_t *,uv_pipe_t *,int)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_pipe_init", "(uv_loop_t *,uv_pipe_t *,int)", "", "Argument[2]", "Argument[*1].Field[*ipc]", "value", "dfc-generated"]
+ - ["", "", True, "uv_pipe_open", "(uv_pipe_t *,uv_file)", "", "Argument[1]", "Argument[*0].Field[*io_watcher].Field[*fd]", "value", "dfc-generated"]
+ - ["", "", True, "uv_pipe_pending_count", "(uv_pipe_t *)", "", "Argument[*0].Field[**queued_fds].Field[*offset]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "uv_poll_init", "(uv_loop_t *,uv_poll_t *,int)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_poll_init", "(uv_loop_t *,uv_poll_t *,int)", "", "Argument[2]", "Argument[*1].Field[*io_watcher].Field[*fd]", "value", "dfc-generated"]
+ - ["", "", True, "uv_poll_init_socket", "(uv_loop_t *,uv_poll_t *,uv_os_sock_t)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_poll_init_socket", "(uv_loop_t *,uv_poll_t *,uv_os_sock_t)", "", "Argument[2]", "Argument[*1].Field[*io_watcher].Field[*fd]", "value", "dfc-generated"]
+ - ["", "", True, "uv_poll_start", "(uv_poll_t *,int,uv_poll_cb)", "", "Argument[2]", "Argument[*0].Field[*poll_cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv_prepare_init", "(uv_loop_t *,uv_prepare_t *)", "", "Argument[*1].Field[*handle_queue]", "Argument[*0].Field[*handle_queue].Field[**prev]", "value", "dfc-generated"]
+ - ["", "", True, "uv_prepare_init", "(uv_loop_t *,uv_prepare_t *)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_prepare_start", "(uv_prepare_t *,uv_prepare_cb)", "", "Argument[1]", "Argument[*0].Field[*prepare_cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv_print_active_handles", "(uv_loop_t *,FILE *)", "", "Argument[*0].Field[*handle_queue].Field[**next]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_print_active_handles", "(uv_loop_t *,FILE *)", "", "Argument[*0].Field[*handle_queue].Field[*next]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_print_all_handles", "(uv_loop_t *,FILE *)", "", "Argument[*0].Field[*handle_queue].Field[**next]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_print_all_handles", "(uv_loop_t *,FILE *)", "", "Argument[*0].Field[*handle_queue].Field[*next]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_process_get_pid", "(const uv_process_t *)", "", "Argument[*0].Field[*pid]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "uv_queue_work", "(uv_loop_t *,uv_work_t *,uv_work_cb,uv_after_work_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_queue_work", "(uv_loop_t *,uv_work_t *,uv_work_cb,uv_after_work_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_queue_work", "(uv_loop_t *,uv_work_t *,uv_work_cb,uv_after_work_cb)", "", "Argument[2]", "Argument[*1].Field[*work_cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv_queue_work", "(uv_loop_t *,uv_work_t *,uv_work_cb,uv_after_work_cb)", "", "Argument[3]", "Argument[*1].Field[*after_work_cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv_random", "(uv_loop_t *,uv_random_t *,void *,size_t,unsigned int,uv_random_cb)", "", "Argument[**2]", "Argument[*1].Field[***buf]", "value", "dfc-generated"]
+ - ["", "", True, "uv_random", "(uv_loop_t *,uv_random_t *,void *,size_t,unsigned int,uv_random_cb)", "", "Argument[*2]", "Argument[*1].Field[**buf]", "value", "dfc-generated"]
+ - ["", "", True, "uv_random", "(uv_loop_t *,uv_random_t *,void *,size_t,unsigned int,uv_random_cb)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_random", "(uv_loop_t *,uv_random_t *,void *,size_t,unsigned int,uv_random_cb)", "", "Argument[0]", "Argument[*1].Field[*work_req].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_random", "(uv_loop_t *,uv_random_t *,void *,size_t,unsigned int,uv_random_cb)", "", "Argument[2]", "Argument[*1].Field[*buf]", "value", "dfc-generated"]
+ - ["", "", True, "uv_random", "(uv_loop_t *,uv_random_t *,void *,size_t,unsigned int,uv_random_cb)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_random", "(uv_loop_t *,uv_random_t *,void *,size_t,unsigned int,uv_random_cb)", "", "Argument[3]", "Argument[*1].Field[*buflen]", "value", "dfc-generated"]
+ - ["", "", True, "uv_random", "(uv_loop_t *,uv_random_t *,void *,size_t,unsigned int,uv_random_cb)", "", "Argument[5]", "Argument[*1].Field[*cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv_read_start", "(uv_stream_t *,uv_alloc_cb,uv_read_cb)", "", "Argument[1]", "Argument[*0].Field[*alloc_cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv_read_start", "(uv_stream_t *,uv_alloc_cb,uv_read_cb)", "", "Argument[2]", "Argument[*0].Field[*read_cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv_recv_buffer_size", "(uv_handle_t *,int *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_req_get_data", "(const uv_req_t *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "uv_req_get_data", "(const uv_req_t *)", "", "Argument[*0]", "ReturnValue[**]", "taint", "df-generated"]
+ - ["", "", True, "uv_req_get_data", "(const uv_req_t *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"]
+ - ["", "", True, "uv_req_get_type", "(const uv_req_t *)", "", "Argument[*0].Field[*type]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "uv_req_set_data", "(uv_req_t *,void *)", "", "Argument[**1]", "Argument[*0].Field[***data]", "value", "dfc-generated"]
+ - ["", "", True, "uv_req_set_data", "(uv_req_t *,void *)", "", "Argument[*1]", "Argument[*0].Field[**data]", "value", "dfc-generated"]
+ - ["", "", True, "uv_req_set_data", "(uv_req_t *,void *)", "", "Argument[1]", "Argument[*0].Field[*data]", "value", "dfc-generated"]
+ - ["", "", True, "uv_sem_destroy", "(uv_sem_t *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_sem_post", "(uv_sem_t *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_sem_trywait", "(uv_sem_t *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_sem_wait", "(uv_sem_t *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_send_buffer_size", "(uv_handle_t *,int *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_setup_args", "(int,char **)", "", "Argument[**1]", "ReturnValue[**]", "value", "dfc-generated"]
+ - ["", "", True, "uv_setup_args", "(int,char **)", "", "Argument[*1]", "ReturnValue[**]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_setup_args", "(int,char **)", "", "Argument[*1]", "ReturnValue[*]", "value", "dfc-generated"]
+ - ["", "", True, "uv_setup_args", "(int,char **)", "", "Argument[0]", "ReturnValue[*]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_setup_args", "(int,char **)", "", "Argument[1]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "uv_setup_args", "(int,char **)", "", "Argument[1]", "ReturnValue[**]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_shutdown", "(uv_shutdown_t *,uv_stream_t *,uv_shutdown_cb)", "", "Argument[*0]", "Argument[*1].Field[**shutdown_req]", "value", "dfc-generated"]
+ - ["", "", True, "uv_shutdown", "(uv_shutdown_t *,uv_stream_t *,uv_shutdown_cb)", "", "Argument[0]", "Argument[*1].Field[*shutdown_req]", "value", "dfc-generated"]
+ - ["", "", True, "uv_shutdown", "(uv_shutdown_t *,uv_stream_t *,uv_shutdown_cb)", "", "Argument[1]", "Argument[*0].Field[*handle]", "value", "dfc-generated"]
+ - ["", "", True, "uv_shutdown", "(uv_shutdown_t *,uv_stream_t *,uv_shutdown_cb)", "", "Argument[1]", "Argument[*1].Field[**shutdown_req].Field[*handle]", "value", "dfc-generated"]
+ - ["", "", True, "uv_shutdown", "(uv_shutdown_t *,uv_stream_t *,uv_shutdown_cb)", "", "Argument[2]", "Argument[*0].Field[*cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv_shutdown", "(uv_shutdown_t *,uv_stream_t *,uv_shutdown_cb)", "", "Argument[2]", "Argument[*1].Field[**shutdown_req].Field[*cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv_signal_init", "(uv_loop_t *,uv_signal_t *)", "", "Argument[*1].Field[*handle_queue]", "Argument[*0].Field[*handle_queue].Field[**prev]", "value", "dfc-generated"]
+ - ["", "", True, "uv_signal_init", "(uv_loop_t *,uv_signal_t *)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_signal_start", "(uv_signal_t *,uv_signal_cb,int)", "", "Argument[1]", "Argument[*0].Field[*signal_cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv_signal_start", "(uv_signal_t *,uv_signal_cb,int)", "", "Argument[2]", "Argument[*0].Field[*signum]", "value", "dfc-generated"]
+ - ["", "", True, "uv_signal_start_oneshot", "(uv_signal_t *,uv_signal_cb,int)", "", "Argument[1]", "Argument[*0].Field[*signal_cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv_signal_start_oneshot", "(uv_signal_t *,uv_signal_cb,int)", "", "Argument[2]", "Argument[*0].Field[*signum]", "value", "dfc-generated"]
+ - ["", "", True, "uv_spawn", "(uv_loop_t *,uv_process_t *,const uv_process_options_t *)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_stream_get_write_queue_size", "(const uv_stream_t *)", "", "Argument[*0].Field[*write_queue_size]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "uv_strerror", "(int)", "", "Argument[0]", "ReturnValue[*]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_strerror_r", "(int,char *,size_t)", "", "Argument[0]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_strerror_r", "(int,char *,size_t)", "", "Argument[0]", "ReturnValue[*]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_strerror_r", "(int,char *,size_t)", "", "Argument[1]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "uv_tcp_close_reset", "(uv_tcp_t *,uv_close_cb)", "", "Argument[0]", "Argument[*0].Field[**loop].Field[*closing_handles]", "value", "dfc-generated"]
+ - ["", "", True, "uv_tcp_close_reset", "(uv_tcp_t *,uv_close_cb)", "", "Argument[1]", "Argument[*0].Field[*close_cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv_tcp_connect", "(uv_connect_t *,uv_tcp_t *,const sockaddr *,uv_connect_cb)", "", "Argument[0]", "Argument[*1].Field[*connect_req]", "value", "dfc-generated"]
+ - ["", "", True, "uv_tcp_connect", "(uv_connect_t *,uv_tcp_t *,const sockaddr *,uv_connect_cb)", "", "Argument[1]", "Argument[*0].Field[*handle]", "value", "dfc-generated"]
+ - ["", "", True, "uv_tcp_connect", "(uv_connect_t *,uv_tcp_t *,const sockaddr *,uv_connect_cb)", "", "Argument[1]", "Argument[*1].Field[**connect_req].Field[*handle]", "value", "dfc-generated"]
+ - ["", "", True, "uv_tcp_connect", "(uv_connect_t *,uv_tcp_t *,const sockaddr *,uv_connect_cb)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_tcp_connect", "(uv_connect_t *,uv_tcp_t *,const sockaddr *,uv_connect_cb)", "", "Argument[3]", "Argument[*0].Field[*cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv_tcp_connect", "(uv_connect_t *,uv_tcp_t *,const sockaddr *,uv_connect_cb)", "", "Argument[3]", "Argument[*1].Field[**connect_req].Field[*cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv_tcp_getpeername", "(const uv_tcp_t *,sockaddr *,int *)", "", "Argument[*0].Field[*delayed_error]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "uv_tcp_getpeername", "(const uv_tcp_t *,sockaddr *,int *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_tcp_getsockname", "(const uv_tcp_t *,sockaddr *,int *)", "", "Argument[*0].Field[*delayed_error]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "uv_tcp_getsockname", "(const uv_tcp_t *,sockaddr *,int *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_tcp_init", "(uv_loop_t *,uv_tcp_t *)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_tcp_init_ex", "(uv_loop_t *,uv_tcp_t *,unsigned int)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_tcp_open", "(uv_tcp_t *,uv_os_sock_t)", "", "Argument[1]", "Argument[*0].Field[*io_watcher].Field[*fd]", "value", "dfc-generated"]
+ - ["", "", True, "uv_thread_detach", "(uv_thread_t *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_thread_getaffinity", "(uv_thread_t *,char *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_thread_getname", "(uv_thread_t *,char *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_thread_join", "(uv_thread_t *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_thread_setaffinity", "(uv_thread_t *,char *,char *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_timer_get_due_in", "(const uv_timer_t *)", "", "Argument[*0].Field[**loop].Field[*time]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "uv_timer_get_due_in", "(const uv_timer_t *)", "", "Argument[*0].Field[*timeout]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "uv_timer_get_repeat", "(const uv_timer_t *)", "", "Argument[*0].Field[*repeat]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "uv_timer_init", "(uv_loop_t *,uv_timer_t *)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_timer_set_repeat", "(uv_timer_t *,uint64_t)", "", "Argument[1]", "Argument[*0].Field[*repeat]", "value", "dfc-generated"]
+ - ["", "", True, "uv_timer_start", "(uv_timer_t *,uv_timer_cb,uint64_t,uint64_t)", "", "Argument[1]", "Argument[*0].Field[*timer_cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv_timer_start", "(uv_timer_t *,uv_timer_cb,uint64_t,uint64_t)", "", "Argument[2]", "Argument[*0].Field[*timeout]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_timer_start", "(uv_timer_t *,uv_timer_cb,uint64_t,uint64_t)", "", "Argument[3]", "Argument[*0].Field[*repeat]", "value", "dfc-generated"]
+ - ["", "", True, "uv_translate_sys_error", "(int)", "", "Argument[0]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "uv_tty_init", "(uv_loop_t *,uv_tty_t *,int,uv_file,int)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_tty_init", "(uv_loop_t *,uv_tty_t *,int,uv_file,int)", "", "Argument[2]", "Argument[*1].Field[*io_watcher].Field[*fd]", "value", "dfc-generated"]
+ - ["", "", True, "uv_tty_set_mode", "(uv_tty_t *,uv_tty_mode_t)", "", "Argument[1]", "Argument[*0].Field[*mode]", "value", "dfc-generated"]
+ - ["", "", True, "uv_udp_get_send_queue_count", "(const uv_udp_t *)", "", "Argument[*0].Field[*send_queue_count]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "uv_udp_get_send_queue_size", "(const uv_udp_t *)", "", "Argument[*0].Field[*send_queue_size]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "uv_udp_getpeername", "(const uv_udp_t *,sockaddr *,int *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_udp_getsockname", "(const uv_udp_t *,sockaddr *,int *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_udp_init", "(uv_loop_t *,uv_udp_t *)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_udp_init_ex", "(uv_loop_t *,uv_udp_t *,unsigned int)", "", "Argument[0]", "Argument[*1].Field[*loop]", "value", "dfc-generated"]
+ - ["", "", True, "uv_udp_open", "(uv_udp_t *,uv_os_sock_t)", "", "Argument[1]", "Argument[*0].Field[*io_watcher].Field[*fd]", "value", "dfc-generated"]
+ - ["", "", True, "uv_udp_recv_start", "(uv_udp_t *,uv_alloc_cb,uv_udp_recv_cb)", "", "Argument[1]", "Argument[*0].Field[*alloc_cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv_udp_recv_start", "(uv_udp_t *,uv_alloc_cb,uv_udp_recv_cb)", "", "Argument[2]", "Argument[*0].Field[*recv_cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv_udp_send", "(uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,uv_udp_send_cb)", "", "Argument[*2].Field[*len]", "Argument[*1].Field[*send_queue_size]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_udp_send", "(uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,uv_udp_send_cb)", "", "Argument[*2]", "Argument[*0].Field[**bufs]", "value", "dfc-generated"]
+ - ["", "", True, "uv_udp_send", "(uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,uv_udp_send_cb)", "", "Argument[*4]", "Argument[*0].Field[*u].Union[*(unnamed class/struct/union)]", "value", "dfc-generated"]
+ - ["", "", True, "uv_udp_send", "(uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,uv_udp_send_cb)", "", "Argument[1]", "Argument[*0].Field[*handle]", "value", "dfc-generated"]
+ - ["", "", True, "uv_udp_send", "(uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,uv_udp_send_cb)", "", "Argument[2]", "Argument[*0].Field[**bufs]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_udp_send", "(uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,uv_udp_send_cb)", "", "Argument[3]", "Argument[*0].Field[*nbufs]", "value", "dfc-generated"]
+ - ["", "", True, "uv_udp_send", "(uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,uv_udp_send_cb)", "", "Argument[4]", "Argument[*0].Field[*u].Union[*(unnamed class/struct/union)]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_udp_send", "(uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,uv_udp_send_cb)", "", "Argument[5]", "Argument[*0].Field[*send_cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv_udp_try_send2", "(uv_udp_t *,unsigned int,uv_buf_t *[],unsigned int[],sockaddr *[],unsigned int)", "", "Argument[*2]", "Argument[**2]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_udp_try_send2", "(uv_udp_t *,unsigned int,uv_buf_t *[],unsigned int[],sockaddr *[],unsigned int)", "", "Argument[*4]", "Argument[**4]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_udp_try_send", "(uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *)", "", "Argument[*1].Field[*len]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "uv_utf16_to_wtf8", "(const uint16_t *,ssize_t,char **,size_t *)", "", "Argument[*2]", "Argument[*3]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_utf16_to_wtf8", "(const uint16_t *,ssize_t,char **,size_t *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_utf16_to_wtf8", "(const uint16_t *,ssize_t,char **,size_t *)", "", "Argument[2]", "Argument[*3]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_utf16_to_wtf8", "(const uint16_t *,ssize_t,char **,size_t *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_write2", "(uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_stream_t *,uv_write_cb)", "", "Argument[*2].Field[*len]", "Argument[*1].Field[*write_queue_size]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_write2", "(uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_stream_t *,uv_write_cb)", "", "Argument[*2]", "Argument[*0].Field[**bufs]", "value", "dfc-generated"]
+ - ["", "", True, "uv_write2", "(uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_stream_t *,uv_write_cb)", "", "Argument[*4]", "Argument[*0].Field[**send_handle]", "value", "dfc-generated"]
+ - ["", "", True, "uv_write2", "(uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_stream_t *,uv_write_cb)", "", "Argument[1]", "Argument[*0].Field[*handle]", "value", "dfc-generated"]
+ - ["", "", True, "uv_write2", "(uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_stream_t *,uv_write_cb)", "", "Argument[2]", "Argument[*0].Field[**bufs]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_write2", "(uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_stream_t *,uv_write_cb)", "", "Argument[3]", "Argument[*0].Field[*nbufs]", "value", "dfc-generated"]
+ - ["", "", True, "uv_write2", "(uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_stream_t *,uv_write_cb)", "", "Argument[4]", "Argument[*0].Field[*send_handle]", "value", "dfc-generated"]
+ - ["", "", True, "uv_write2", "(uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_stream_t *,uv_write_cb)", "", "Argument[5]", "Argument[*0].Field[*cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv_write", "(uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_write_cb)", "", "Argument[*2].Field[*len]", "Argument[*1].Field[*write_queue_size]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_write", "(uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_write_cb)", "", "Argument[*2]", "Argument[*0].Field[**bufs]", "value", "dfc-generated"]
+ - ["", "", True, "uv_write", "(uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_write_cb)", "", "Argument[1]", "Argument[*0].Field[*handle]", "value", "dfc-generated"]
+ - ["", "", True, "uv_write", "(uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_write_cb)", "", "Argument[2]", "Argument[*0].Field[**bufs]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_write", "(uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_write_cb)", "", "Argument[3]", "Argument[*0].Field[*nbufs]", "value", "dfc-generated"]
+ - ["", "", True, "uv_write", "(uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_write_cb)", "", "Argument[4]", "Argument[*0].Field[*cb]", "value", "dfc-generated"]
+ - ["", "", True, "uv_wtf8_length_as_utf16", "(const char *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_wtf8_to_utf16", "(const char *,uint16_t *,size_t)", "", "Argument[*0]", "Argument[*1]", "value", "dfc-generated"]
+ - ["", "", True, "uv_wtf8_to_utf16", "(const char *,uint16_t *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_wtf8_to_utf16", "(const char *,uint16_t *,size_t)", "", "Argument[0]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "uv_wtf8_to_utf16", "(const char *,uint16_t *,size_t)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
diff --git a/cpp/ql/lib/ext/generated/nghttp2/nghttp2.model.yml b/cpp/ql/lib/ext/generated/nghttp2/nghttp2.model.yml
new file mode 100644
index 000000000000..f48d7e3b232f
--- /dev/null
+++ b/cpp/ql/lib/ext/generated/nghttp2/nghttp2.model.yml
@@ -0,0 +1,571 @@
+# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT.
+extensions:
+ - addsTo:
+ pack: codeql/cpp-all
+ extensible: summaryModel
+ data:
+ - ["", "", True, "nghttp2_adjust_local_window_size", "(int32_t *,int32_t *,int32_t *,int32_t *)", "", "Argument[*2]", "Argument[*1]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_adjust_local_window_size", "(int32_t *,int32_t *,int32_t *,int32_t *)", "", "Argument[*2]", "Argument[*3]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_adjust_local_window_size", "(int32_t *,int32_t *,int32_t *,int32_t *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_adjust_local_window_size", "(int32_t *,int32_t *,int32_t *,int32_t *)", "", "Argument[2]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_adjust_local_window_size", "(int32_t *,int32_t *,int32_t *,int32_t *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_adjust_local_window_size", "(int32_t *,int32_t *,int32_t *,int32_t *)", "", "Argument[2]", "Argument[*3]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_buf_init2", "(nghttp2_buf *,size_t,nghttp2_mem *)", "", "Argument[1]", "Argument[*0].Field[**end]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_buf_init2", "(nghttp2_buf *,size_t,nghttp2_mem *)", "", "Argument[1]", "Argument[*0].Field[*end]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_buf_reserve", "(nghttp2_buf *,size_t,nghttp2_mem *)", "", "Argument[1]", "Argument[*0].Field[**end]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_buf_reserve", "(nghttp2_buf *,size_t,nghttp2_mem *)", "", "Argument[1]", "Argument[*0].Field[*end]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_buf_wrap_init", "(nghttp2_buf *,uint8_t *,size_t)", "", "Argument[*1]", "Argument[*0].Field[**end]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_buf_wrap_init", "(nghttp2_buf *,uint8_t *,size_t)", "", "Argument[1]", "Argument[*0].Field[*end]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_buf_wrap_init", "(nghttp2_buf *,uint8_t *,size_t)", "", "Argument[2]", "Argument[*0].Field[**end]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_buf_wrap_init", "(nghttp2_buf *,uint8_t *,size_t)", "", "Argument[2]", "Argument[*0].Field[*end]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_bufs_init2", "(nghttp2_bufs *,size_t,size_t,size_t,nghttp2_mem *)", "", "Argument[*0].Field[**head]", "Argument[*0].Field[**cur]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_bufs_init2", "(nghttp2_bufs *,size_t,size_t,size_t,nghttp2_mem *)", "", "Argument[*0].Field[*head]", "Argument[*0].Field[*cur]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_bufs_init2", "(nghttp2_bufs *,size_t,size_t,size_t,nghttp2_mem *)", "", "Argument[*4]", "Argument[*0].Field[**mem]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_bufs_init2", "(nghttp2_bufs *,size_t,size_t,size_t,nghttp2_mem *)", "", "Argument[1]", "Argument[*0].Field[*chunk_length]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_bufs_init2", "(nghttp2_bufs *,size_t,size_t,size_t,nghttp2_mem *)", "", "Argument[2]", "Argument[*0].Field[*chunk_keep]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_bufs_init2", "(nghttp2_bufs *,size_t,size_t,size_t,nghttp2_mem *)", "", "Argument[2]", "Argument[*0].Field[*max_chunk]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_bufs_init2", "(nghttp2_bufs *,size_t,size_t,size_t,nghttp2_mem *)", "", "Argument[3]", "Argument[*0].Field[*offset]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_bufs_init2", "(nghttp2_bufs *,size_t,size_t,size_t,nghttp2_mem *)", "", "Argument[4]", "Argument[*0].Field[*mem]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_bufs_init3", "(nghttp2_bufs *,size_t,size_t,size_t,size_t,nghttp2_mem *)", "", "Argument[*0].Field[**head]", "Argument[*0].Field[**cur]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_bufs_init3", "(nghttp2_bufs *,size_t,size_t,size_t,size_t,nghttp2_mem *)", "", "Argument[*0].Field[*head]", "Argument[*0].Field[*cur]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_bufs_init3", "(nghttp2_bufs *,size_t,size_t,size_t,size_t,nghttp2_mem *)", "", "Argument[*5]", "Argument[*0].Field[**mem]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_bufs_init3", "(nghttp2_bufs *,size_t,size_t,size_t,size_t,nghttp2_mem *)", "", "Argument[1]", "Argument[*0].Field[*chunk_length]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_bufs_init3", "(nghttp2_bufs *,size_t,size_t,size_t,size_t,nghttp2_mem *)", "", "Argument[2]", "Argument[*0].Field[*max_chunk]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_bufs_init3", "(nghttp2_bufs *,size_t,size_t,size_t,size_t,nghttp2_mem *)", "", "Argument[3]", "Argument[*0].Field[*chunk_keep]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_bufs_init3", "(nghttp2_bufs *,size_t,size_t,size_t,size_t,nghttp2_mem *)", "", "Argument[4]", "Argument[*0].Field[*offset]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_bufs_init3", "(nghttp2_bufs *,size_t,size_t,size_t,size_t,nghttp2_mem *)", "", "Argument[5]", "Argument[*0].Field[*mem]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_bufs_init", "(nghttp2_bufs *,size_t,size_t,nghttp2_mem *)", "", "Argument[*0].Field[**head]", "Argument[*0].Field[**cur]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_bufs_init", "(nghttp2_bufs *,size_t,size_t,nghttp2_mem *)", "", "Argument[*0].Field[*head]", "Argument[*0].Field[*cur]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_bufs_init", "(nghttp2_bufs *,size_t,size_t,nghttp2_mem *)", "", "Argument[*3]", "Argument[*0].Field[**mem]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_bufs_init", "(nghttp2_bufs *,size_t,size_t,nghttp2_mem *)", "", "Argument[1]", "Argument[*0].Field[*chunk_length]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_bufs_init", "(nghttp2_bufs *,size_t,size_t,nghttp2_mem *)", "", "Argument[2]", "Argument[*0].Field[*chunk_keep]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_bufs_init", "(nghttp2_bufs *,size_t,size_t,nghttp2_mem *)", "", "Argument[2]", "Argument[*0].Field[*max_chunk]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_bufs_init", "(nghttp2_bufs *,size_t,size_t,nghttp2_mem *)", "", "Argument[3]", "Argument[*0].Field[*mem]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_bufs_realloc", "(nghttp2_bufs *,size_t)", "", "Argument[1]", "Argument[*0].Field[*chunk_length]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_bufs_wrap_init2", "(nghttp2_bufs *,const nghttp2_vec *,size_t,nghttp2_mem *)", "", "Argument[*0].Field[**head]", "Argument[*0].Field[**cur]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_bufs_wrap_init2", "(nghttp2_bufs *,const nghttp2_vec *,size_t,nghttp2_mem *)", "", "Argument[*0].Field[*head]", "Argument[*0].Field[*cur]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_bufs_wrap_init2", "(nghttp2_bufs *,const nghttp2_vec *,size_t,nghttp2_mem *)", "", "Argument[*3]", "Argument[*0].Field[**mem]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_bufs_wrap_init2", "(nghttp2_bufs *,const nghttp2_vec *,size_t,nghttp2_mem *)", "", "Argument[2]", "Argument[*0].Field[*chunk_keep]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_bufs_wrap_init2", "(nghttp2_bufs *,const nghttp2_vec *,size_t,nghttp2_mem *)", "", "Argument[2]", "Argument[*0].Field[*chunk_used]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_bufs_wrap_init2", "(nghttp2_bufs *,const nghttp2_vec *,size_t,nghttp2_mem *)", "", "Argument[2]", "Argument[*0].Field[*max_chunk]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_bufs_wrap_init2", "(nghttp2_bufs *,const nghttp2_vec *,size_t,nghttp2_mem *)", "", "Argument[3]", "Argument[*0].Field[*mem]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_bufs_wrap_init", "(nghttp2_bufs *,uint8_t *,size_t,nghttp2_mem *)", "", "Argument[*0].Field[**head]", "Argument[*0].Field[**cur]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_bufs_wrap_init", "(nghttp2_bufs *,uint8_t *,size_t,nghttp2_mem *)", "", "Argument[*0].Field[*head]", "Argument[*0].Field[*cur]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_bufs_wrap_init", "(nghttp2_bufs *,uint8_t *,size_t,nghttp2_mem *)", "", "Argument[*3]", "Argument[*0].Field[**mem]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_bufs_wrap_init", "(nghttp2_bufs *,uint8_t *,size_t,nghttp2_mem *)", "", "Argument[2]", "Argument[*0].Field[*chunk_length]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_bufs_wrap_init", "(nghttp2_bufs *,uint8_t *,size_t,nghttp2_mem *)", "", "Argument[3]", "Argument[*0].Field[*mem]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_cpymem", "(uint8_t *,const void *,size_t)", "", "Argument[**1]", "Argument[*0]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_cpymem", "(uint8_t *,const void *,size_t)", "", "Argument[**1]", "ReturnValue[*]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_cpymem", "(uint8_t *,const void *,size_t)", "", "Argument[*0]", "ReturnValue[*]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_cpymem", "(uint8_t *,const void *,size_t)", "", "Argument[*1]", "Argument[**1]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_cpymem", "(uint8_t *,const void *,size_t)", "", "Argument[*1]", "Argument[*0]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_cpymem", "(uint8_t *,const void *,size_t)", "", "Argument[*1]", "ReturnValue[*]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_cpymem", "(uint8_t *,const void *,size_t)", "", "Argument[0]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_cpymem", "(uint8_t *,const void *,size_t)", "", "Argument[0]", "ReturnValue[*]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_cpymem", "(uint8_t *,const void *,size_t)", "", "Argument[1]", "Argument[**1]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_cpymem", "(uint8_t *,const void *,size_t)", "", "Argument[1]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_cpymem", "(uint8_t *,const void *,size_t)", "", "Argument[1]", "ReturnValue[*]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_cpymem", "(uint8_t *,const void *,size_t)", "", "Argument[2]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_cpymem", "(uint8_t *,const void *,size_t)", "", "Argument[2]", "ReturnValue[*]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_data_provider_wrap_v1", "(nghttp2_data_provider_wrap *,const nghttp2_data_provider *)", "", "Argument[*0]", "ReturnValue[*]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_data_provider_wrap_v1", "(nghttp2_data_provider_wrap *,const nghttp2_data_provider *)", "", "Argument[*1]", "Argument[*0].Field[*data_prd].Union[*(unnamed class/struct/union)]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_data_provider_wrap_v1", "(nghttp2_data_provider_wrap *,const nghttp2_data_provider *)", "", "Argument[*1]", "ReturnValue[*].Field[*data_prd].Union[*(unnamed class/struct/union)]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_data_provider_wrap_v1", "(nghttp2_data_provider_wrap *,const nghttp2_data_provider *)", "", "Argument[0]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_data_provider_wrap_v1", "(nghttp2_data_provider_wrap *,const nghttp2_data_provider *)", "", "Argument[1]", "Argument[*0].Field[*data_prd].Union[*(unnamed class/struct/union)]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_data_provider_wrap_v1", "(nghttp2_data_provider_wrap *,const nghttp2_data_provider *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_data_provider_wrap_v1", "(nghttp2_data_provider_wrap *,const nghttp2_data_provider *)", "", "Argument[1]", "ReturnValue[*].Field[*data_prd].Union[*(unnamed class/struct/union)]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_data_provider_wrap_v2", "(nghttp2_data_provider_wrap *,const nghttp2_data_provider2 *)", "", "Argument[*0]", "ReturnValue[*]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_data_provider_wrap_v2", "(nghttp2_data_provider_wrap *,const nghttp2_data_provider2 *)", "", "Argument[*1]", "Argument[*0].Field[*data_prd].Union[*(unnamed class/struct/union)]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_data_provider_wrap_v2", "(nghttp2_data_provider_wrap *,const nghttp2_data_provider2 *)", "", "Argument[*1]", "ReturnValue[*].Field[*data_prd].Union[*(unnamed class/struct/union)]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_data_provider_wrap_v2", "(nghttp2_data_provider_wrap *,const nghttp2_data_provider2 *)", "", "Argument[0]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_data_provider_wrap_v2", "(nghttp2_data_provider_wrap *,const nghttp2_data_provider2 *)", "", "Argument[1]", "Argument[*0].Field[*data_prd].Union[*(unnamed class/struct/union)]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_data_provider_wrap_v2", "(nghttp2_data_provider_wrap *,const nghttp2_data_provider2 *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_data_provider_wrap_v2", "(nghttp2_data_provider_wrap *,const nghttp2_data_provider2 *)", "", "Argument[1]", "ReturnValue[*].Field[*data_prd].Union[*(unnamed class/struct/union)]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_downcase", "(uint8_t *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_extpri_from_uint8", "(nghttp2_extpri *,uint8_t)", "", "Argument[1]", "Argument[*0].Field[*inc]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_extpri_from_uint8", "(nghttp2_extpri *,uint8_t)", "", "Argument[1]", "Argument[*0].Field[*urgency]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_extpri_parse_priority", "(nghttp2_extpri *,const uint8_t *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_extpri_to_uint8", "(const nghttp2_extpri *)", "", "Argument[*0].Field[*inc]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_extpri_to_uint8", "(const nghttp2_extpri *)", "", "Argument[*0].Field[*urgency]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_add_pad", "(nghttp2_bufs *,nghttp2_frame_hd *,size_t,int)", "", "Argument[2]", "Argument[*1].Field[*length]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_altsvc_init", "(nghttp2_extension *,int32_t,uint8_t *,size_t,uint8_t *,size_t)", "", "Argument[1]", "Argument[*0].Field[*hd].Field[*stream_id]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_altsvc_init", "(nghttp2_extension *,int32_t,uint8_t *,size_t,uint8_t *,size_t)", "", "Argument[3]", "Argument[*0].Field[*hd].Field[*length]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_altsvc_init", "(nghttp2_extension *,int32_t,uint8_t *,size_t,uint8_t *,size_t)", "", "Argument[5]", "Argument[*0].Field[*hd].Field[*length]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_data_init", "(nghttp2_data *,uint8_t,int32_t)", "", "Argument[1]", "Argument[*0].Field[*hd].Field[*flags]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_data_init", "(nghttp2_data *,uint8_t,int32_t)", "", "Argument[2]", "Argument[*0].Field[*hd].Field[*stream_id]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_extension_init", "(nghttp2_extension *,uint8_t,uint8_t,int32_t,void *)", "", "Argument[**4]", "Argument[*0].Field[***payload]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_extension_init", "(nghttp2_extension *,uint8_t,uint8_t,int32_t,void *)", "", "Argument[*4]", "Argument[*0].Field[**payload]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_extension_init", "(nghttp2_extension *,uint8_t,uint8_t,int32_t,void *)", "", "Argument[1]", "Argument[*0].Field[*hd].Field[*type]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_extension_init", "(nghttp2_extension *,uint8_t,uint8_t,int32_t,void *)", "", "Argument[2]", "Argument[*0].Field[*hd].Field[*flags]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_extension_init", "(nghttp2_extension *,uint8_t,uint8_t,int32_t,void *)", "", "Argument[3]", "Argument[*0].Field[*hd].Field[*stream_id]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_extension_init", "(nghttp2_extension *,uint8_t,uint8_t,int32_t,void *)", "", "Argument[4]", "Argument[*0].Field[*payload]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_goaway_init", "(nghttp2_goaway *,int32_t,uint32_t,uint8_t *,size_t)", "", "Argument[*3]", "Argument[*0].Field[**opaque_data]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_goaway_init", "(nghttp2_goaway *,int32_t,uint32_t,uint8_t *,size_t)", "", "Argument[1]", "Argument[*0].Field[*last_stream_id]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_goaway_init", "(nghttp2_goaway *,int32_t,uint32_t,uint8_t *,size_t)", "", "Argument[2]", "Argument[*0].Field[*error_code]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_goaway_init", "(nghttp2_goaway *,int32_t,uint32_t,uint8_t *,size_t)", "", "Argument[3]", "Argument[*0].Field[*opaque_data]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_goaway_init", "(nghttp2_goaway *,int32_t,uint32_t,uint8_t *,size_t)", "", "Argument[4]", "Argument[*0].Field[*hd].Field[*length]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_goaway_init", "(nghttp2_goaway *,int32_t,uint32_t,uint8_t *,size_t)", "", "Argument[4]", "Argument[*0].Field[*opaque_data_len]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_hd_init", "(nghttp2_frame_hd *,size_t,uint8_t,uint8_t,int32_t)", "", "Argument[1]", "Argument[*0].Field[*length]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_hd_init", "(nghttp2_frame_hd *,size_t,uint8_t,uint8_t,int32_t)", "", "Argument[2]", "Argument[*0].Field[*type]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_hd_init", "(nghttp2_frame_hd *,size_t,uint8_t,uint8_t,int32_t)", "", "Argument[3]", "Argument[*0].Field[*flags]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_hd_init", "(nghttp2_frame_hd *,size_t,uint8_t,uint8_t,int32_t)", "", "Argument[4]", "Argument[*0].Field[*stream_id]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_headers_init", "(nghttp2_headers *,uint8_t,int32_t,nghttp2_headers_category,const nghttp2_priority_spec *,nghttp2_nv *,size_t)", "", "Argument[*4]", "Argument[*0].Field[*pri_spec]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_headers_init", "(nghttp2_headers *,uint8_t,int32_t,nghttp2_headers_category,const nghttp2_priority_spec *,nghttp2_nv *,size_t)", "", "Argument[*5]", "Argument[*0].Field[**nva]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_headers_init", "(nghttp2_headers *,uint8_t,int32_t,nghttp2_headers_category,const nghttp2_priority_spec *,nghttp2_nv *,size_t)", "", "Argument[1]", "Argument[*0].Field[*hd].Field[*flags]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_headers_init", "(nghttp2_headers *,uint8_t,int32_t,nghttp2_headers_category,const nghttp2_priority_spec *,nghttp2_nv *,size_t)", "", "Argument[2]", "Argument[*0].Field[*hd].Field[*stream_id]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_headers_init", "(nghttp2_headers *,uint8_t,int32_t,nghttp2_headers_category,const nghttp2_priority_spec *,nghttp2_nv *,size_t)", "", "Argument[3]", "Argument[*0].Field[*cat]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_headers_init", "(nghttp2_headers *,uint8_t,int32_t,nghttp2_headers_category,const nghttp2_priority_spec *,nghttp2_nv *,size_t)", "", "Argument[4]", "Argument[*0].Field[*pri_spec]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_headers_init", "(nghttp2_headers *,uint8_t,int32_t,nghttp2_headers_category,const nghttp2_priority_spec *,nghttp2_nv *,size_t)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_headers_init", "(nghttp2_headers *,uint8_t,int32_t,nghttp2_headers_category,const nghttp2_priority_spec *,nghttp2_nv *,size_t)", "", "Argument[5]", "Argument[*0].Field[*nva]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_headers_init", "(nghttp2_headers *,uint8_t,int32_t,nghttp2_headers_category,const nghttp2_priority_spec *,nghttp2_nv *,size_t)", "", "Argument[6]", "Argument[*0].Field[*nvlen]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_iv_copy", "(const nghttp2_settings_entry *,size_t,nghttp2_mem *)", "", "Argument[*0]", "ReturnValue[*]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_iv_copy", "(const nghttp2_settings_entry *,size_t,nghttp2_mem *)", "", "Argument[0]", "ReturnValue[*]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_origin_init", "(nghttp2_extension *,nghttp2_origin_entry *,size_t)", "", "Argument[*1].Field[*origin_len]", "Argument[*0].Field[*hd].Field[*length]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_pack_frame_hd", "(uint8_t *,const nghttp2_frame_hd *)", "", "Argument[*1].Field[*flags]", "Argument[*0]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_pack_frame_hd", "(uint8_t *,const nghttp2_frame_hd *)", "", "Argument[*1].Field[*type]", "Argument[*0]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_pack_headers", "(nghttp2_bufs *,nghttp2_headers *,nghttp2_hd_deflater *)", "", "Argument[*1]", "Argument[*2]", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_frame_pack_priority_spec", "(uint8_t *,const nghttp2_priority_spec *)", "", "Argument[*1].Field[*weight]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_pack_priority_spec", "(uint8_t *,const nghttp2_priority_spec *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_pack_push_promise", "(nghttp2_bufs *,nghttp2_push_promise *,nghttp2_hd_deflater *)", "", "Argument[*1]", "Argument[*2]", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_frame_pack_settings_payload", "(uint8_t *,const nghttp2_settings_entry *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_pack_settings_payload", "(uint8_t *,const nghttp2_settings_entry *,size_t)", "", "Argument[2]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_ping_init", "(nghttp2_ping *,uint8_t,const uint8_t *)", "", "Argument[*2]", "Argument[*0].Field[*opaque_data]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_ping_init", "(nghttp2_ping *,uint8_t,const uint8_t *)", "", "Argument[1]", "Argument[*0].Field[*hd].Field[*flags]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_ping_init", "(nghttp2_ping *,uint8_t,const uint8_t *)", "", "Argument[2]", "Argument[*0].Field[*opaque_data]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_priority_init", "(nghttp2_priority *,int32_t,const nghttp2_priority_spec *)", "", "Argument[*2]", "Argument[*0].Field[*pri_spec]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_priority_init", "(nghttp2_priority *,int32_t,const nghttp2_priority_spec *)", "", "Argument[1]", "Argument[*0].Field[*hd].Field[*stream_id]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_priority_init", "(nghttp2_priority *,int32_t,const nghttp2_priority_spec *)", "", "Argument[2]", "Argument[*0].Field[*pri_spec]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_priority_init", "(nghttp2_priority *,int32_t,const nghttp2_priority_spec *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_priority_update_init", "(nghttp2_extension *,int32_t,uint8_t *,size_t)", "", "Argument[3]", "Argument[*0].Field[*hd].Field[*length]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_push_promise_init", "(nghttp2_push_promise *,uint8_t,int32_t,int32_t,nghttp2_nv *,size_t)", "", "Argument[*4]", "Argument[*0].Field[**nva]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_push_promise_init", "(nghttp2_push_promise *,uint8_t,int32_t,int32_t,nghttp2_nv *,size_t)", "", "Argument[1]", "Argument[*0].Field[*hd].Field[*flags]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_push_promise_init", "(nghttp2_push_promise *,uint8_t,int32_t,int32_t,nghttp2_nv *,size_t)", "", "Argument[2]", "Argument[*0].Field[*hd].Field[*stream_id]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_push_promise_init", "(nghttp2_push_promise *,uint8_t,int32_t,int32_t,nghttp2_nv *,size_t)", "", "Argument[3]", "Argument[*0].Field[*promised_stream_id]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_push_promise_init", "(nghttp2_push_promise *,uint8_t,int32_t,int32_t,nghttp2_nv *,size_t)", "", "Argument[4]", "Argument[*0].Field[*nva]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_push_promise_init", "(nghttp2_push_promise *,uint8_t,int32_t,int32_t,nghttp2_nv *,size_t)", "", "Argument[5]", "Argument[*0].Field[*nvlen]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_rst_stream_init", "(nghttp2_rst_stream *,int32_t,uint32_t)", "", "Argument[1]", "Argument[*0].Field[*hd].Field[*stream_id]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_rst_stream_init", "(nghttp2_rst_stream *,int32_t,uint32_t)", "", "Argument[2]", "Argument[*0].Field[*error_code]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_settings_init", "(nghttp2_settings *,uint8_t,nghttp2_settings_entry *,size_t)", "", "Argument[*2]", "Argument[*0].Field[**iv]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_settings_init", "(nghttp2_settings *,uint8_t,nghttp2_settings_entry *,size_t)", "", "Argument[1]", "Argument[*0].Field[*hd].Field[*flags]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_settings_init", "(nghttp2_settings *,uint8_t,nghttp2_settings_entry *,size_t)", "", "Argument[2]", "Argument[*0].Field[*iv]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_settings_init", "(nghttp2_settings *,uint8_t,nghttp2_settings_entry *,size_t)", "", "Argument[3]", "Argument[*0].Field[*hd].Field[*length]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_settings_init", "(nghttp2_settings *,uint8_t,nghttp2_settings_entry *,size_t)", "", "Argument[3]", "Argument[*0].Field[*niv]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_trail_padlen", "(nghttp2_frame *,size_t)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_unpack_frame_hd", "(nghttp2_frame_hd *,const uint8_t *)", "", "Argument[*1]", "Argument[*0].Field[*flags]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_unpack_frame_hd", "(nghttp2_frame_hd *,const uint8_t *)", "", "Argument[*1]", "Argument[*0].Field[*type]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_unpack_frame_hd", "(nghttp2_frame_hd *,const uint8_t *)", "", "Argument[1]", "Argument[*0].Field[*flags]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_unpack_frame_hd", "(nghttp2_frame_hd *,const uint8_t *)", "", "Argument[1]", "Argument[*0].Field[*type]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_unpack_goaway_payload2", "(nghttp2_goaway *,const uint8_t *,size_t,nghttp2_mem *)", "", "Argument[*1]", "Argument[*0].Field[**opaque_data]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_unpack_goaway_payload2", "(nghttp2_goaway *,const uint8_t *,size_t,nghttp2_mem *)", "", "Argument[1]", "Argument[*0].Field[**opaque_data]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_unpack_goaway_payload2", "(nghttp2_goaway *,const uint8_t *,size_t,nghttp2_mem *)", "", "Argument[2]", "Argument[*0].Field[*opaque_data_len]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_unpack_goaway_payload", "(nghttp2_goaway *,const uint8_t *,uint8_t *,size_t)", "", "Argument[*2]", "Argument[*0].Field[**opaque_data]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_unpack_goaway_payload", "(nghttp2_goaway *,const uint8_t *,uint8_t *,size_t)", "", "Argument[2]", "Argument[*0].Field[*opaque_data]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_unpack_goaway_payload", "(nghttp2_goaway *,const uint8_t *,uint8_t *,size_t)", "", "Argument[3]", "Argument[*0].Field[*opaque_data_len]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_unpack_headers_payload", "(nghttp2_headers *,const uint8_t *)", "", "Argument[*1]", "Argument[*0].Field[*pri_spec].Field[*weight]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_unpack_headers_payload", "(nghttp2_headers *,const uint8_t *)", "", "Argument[1]", "Argument[*0].Field[*pri_spec].Field[*weight]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_unpack_ping_payload", "(nghttp2_ping *,const uint8_t *)", "", "Argument[*1]", "Argument[*0].Field[*opaque_data]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_unpack_ping_payload", "(nghttp2_ping *,const uint8_t *)", "", "Argument[1]", "Argument[*0].Field[*opaque_data]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_unpack_priority_payload", "(nghttp2_priority *,const uint8_t *)", "", "Argument[*1]", "Argument[*0].Field[*pri_spec].Field[*weight]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_unpack_priority_payload", "(nghttp2_priority *,const uint8_t *)", "", "Argument[1]", "Argument[*0].Field[*pri_spec].Field[*weight]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_unpack_priority_spec", "(nghttp2_priority_spec *,const uint8_t *)", "", "Argument[*1]", "Argument[*0].Field[*weight]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_unpack_priority_spec", "(nghttp2_priority_spec *,const uint8_t *)", "", "Argument[1]", "Argument[*0].Field[*weight]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_unpack_settings_payload2", "(nghttp2_settings_entry **,size_t *,const uint8_t *,size_t,nghttp2_mem *)", "", "Argument[*0]", "Argument[**0]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_unpack_settings_payload2", "(nghttp2_settings_entry **,size_t *,const uint8_t *,size_t,nghttp2_mem *)", "", "Argument[0]", "Argument[**0]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_unpack_settings_payload2", "(nghttp2_settings_entry **,size_t *,const uint8_t *,size_t,nghttp2_mem *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_unpack_settings_payload2", "(nghttp2_settings_entry **,size_t *,const uint8_t *,size_t,nghttp2_mem *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_unpack_settings_payload2", "(nghttp2_settings_entry **,size_t *,const uint8_t *,size_t,nghttp2_mem *)", "", "Argument[3]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_unpack_settings_payload", "(nghttp2_settings *,nghttp2_settings_entry *,size_t)", "", "Argument[*1]", "Argument[*0].Field[**iv]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_unpack_settings_payload", "(nghttp2_settings *,nghttp2_settings_entry *,size_t)", "", "Argument[1]", "Argument[*0].Field[*iv]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_unpack_settings_payload", "(nghttp2_settings *,nghttp2_settings_entry *,size_t)", "", "Argument[2]", "Argument[*0].Field[*niv]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_window_update_init", "(nghttp2_window_update *,uint8_t,int32_t,int32_t)", "", "Argument[1]", "Argument[*0].Field[*hd].Field[*flags]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_window_update_init", "(nghttp2_window_update *,uint8_t,int32_t,int32_t)", "", "Argument[2]", "Argument[*0].Field[*hd].Field[*stream_id]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_frame_window_update_init", "(nghttp2_window_update *,uint8_t,int32_t,int32_t)", "", "Argument[3]", "Argument[*0].Field[*window_size_increment]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_hd_decode_length", "(uint32_t *,size_t *,int *,uint32_t,size_t,uint8_t *,uint8_t *,size_t)", "", "Argument[*5]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_hd_decode_length", "(uint32_t *,size_t *,int *,uint32_t,size_t,uint8_t *,uint8_t *,size_t)", "", "Argument[3]", "Argument[*0]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_hd_decode_length", "(uint32_t *,size_t *,int *,uint32_t,size_t,uint8_t *,uint8_t *,size_t)", "", "Argument[4]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_hd_decode_length", "(uint32_t *,size_t *,int *,uint32_t,size_t,uint8_t *,uint8_t *,size_t)", "", "Argument[4]", "Argument[*1]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_hd_decode_length", "(uint32_t *,size_t *,int *,uint32_t,size_t,uint8_t *,uint8_t *,size_t)", "", "Argument[5]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_hd_decode_length", "(uint32_t *,size_t *,int *,uint32_t,size_t,uint8_t *,uint8_t *,size_t)", "", "Argument[5]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_hd_decode_length", "(uint32_t *,size_t *,int *,uint32_t,size_t,uint8_t *,uint8_t *,size_t)", "", "Argument[7]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_hd_deflate_bound", "(nghttp2_hd_deflater *,const nghttp2_nv *,size_t)", "", "Argument[*1].Field[*namelen]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_hd_deflate_bound", "(nghttp2_hd_deflater *,const nghttp2_nv *,size_t)", "", "Argument[*1].Field[*valuelen]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_hd_deflate_bound", "(nghttp2_hd_deflater *,const nghttp2_nv *,size_t)", "", "Argument[2]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_hd_deflate_change_table_size", "(nghttp2_hd_deflater *,size_t)", "", "Argument[1]", "Argument[*0].Field[*ctx].Field[*hd_table_bufsize_max]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_hd_deflate_change_table_size", "(nghttp2_hd_deflater *,size_t)", "", "Argument[1]", "Argument[*0].Field[*min_hd_table_bufsize_max]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_hd_deflate_get_dynamic_table_size", "(nghttp2_hd_deflater *)", "", "Argument[*0].Field[*ctx].Field[*hd_table_bufsize]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_hd_deflate_get_max_dynamic_table_size", "(nghttp2_hd_deflater *)", "", "Argument[*0].Field[*ctx].Field[*hd_table_bufsize_max]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_hd_deflate_get_table_entry", "(nghttp2_hd_deflater *,size_t)", "", "Argument[1]", "ReturnValue[*]", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_hd_deflate_hd2", "(nghttp2_hd_deflater *,uint8_t *,size_t,const nghttp2_nv *,size_t)", "", "Argument[*3].Field[*namelen]", "Argument[*0].Field[*ctx].Field[*hd_table_bufsize]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_hd_deflate_hd2", "(nghttp2_hd_deflater *,uint8_t *,size_t,const nghttp2_nv *,size_t)", "", "Argument[*3].Field[*valuelen]", "Argument[*0].Field[*ctx].Field[*hd_table_bufsize]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_hd_deflate_hd2", "(nghttp2_hd_deflater *,uint8_t *,size_t,const nghttp2_nv *,size_t)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_hd_deflate_hd", "(nghttp2_hd_deflater *,uint8_t *,size_t,const nghttp2_nv *,size_t)", "", "Argument[*3].Field[*namelen]", "Argument[*0].Field[*ctx].Field[*hd_table_bufsize]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_hd_deflate_hd", "(nghttp2_hd_deflater *,uint8_t *,size_t,const nghttp2_nv *,size_t)", "", "Argument[*3].Field[*valuelen]", "Argument[*0].Field[*ctx].Field[*hd_table_bufsize]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_hd_deflate_hd", "(nghttp2_hd_deflater *,uint8_t *,size_t,const nghttp2_nv *,size_t)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_hd_deflate_hd_bufs", "(nghttp2_hd_deflater *,nghttp2_bufs *,const nghttp2_nv *,size_t)", "", "Argument[*2].Field[*namelen]", "Argument[*0].Field[*ctx].Field[*hd_table_bufsize]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_hd_deflate_hd_bufs", "(nghttp2_hd_deflater *,nghttp2_bufs *,const nghttp2_nv *,size_t)", "", "Argument[*2].Field[*valuelen]", "Argument[*0].Field[*ctx].Field[*hd_table_bufsize]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_hd_deflate_hd_bufs", "(nghttp2_hd_deflater *,nghttp2_bufs *,const nghttp2_nv *,size_t)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_hd_deflate_hd_vec2", "(nghttp2_hd_deflater *,const nghttp2_vec *,size_t,const nghttp2_nv *,size_t)", "", "Argument[*3].Field[*namelen]", "Argument[*0].Field[*ctx].Field[*hd_table_bufsize]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_hd_deflate_hd_vec2", "(nghttp2_hd_deflater *,const nghttp2_vec *,size_t,const nghttp2_nv *,size_t)", "", "Argument[*3].Field[*valuelen]", "Argument[*0].Field[*ctx].Field[*hd_table_bufsize]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_hd_deflate_hd_vec2", "(nghttp2_hd_deflater *,const nghttp2_vec *,size_t,const nghttp2_nv *,size_t)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_hd_deflate_hd_vec", "(nghttp2_hd_deflater *,const nghttp2_vec *,size_t,const nghttp2_nv *,size_t)", "", "Argument[*3].Field[*namelen]", "Argument[*0].Field[*ctx].Field[*hd_table_bufsize]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_hd_deflate_hd_vec", "(nghttp2_hd_deflater *,const nghttp2_vec *,size_t,const nghttp2_nv *,size_t)", "", "Argument[*3].Field[*valuelen]", "Argument[*0].Field[*ctx].Field[*hd_table_bufsize]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_hd_deflate_hd_vec", "(nghttp2_hd_deflater *,const nghttp2_vec *,size_t,const nghttp2_nv *,size_t)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_hd_deflate_init2", "(nghttp2_hd_deflater *,size_t,nghttp2_mem *)", "", "Argument[*2]", "Argument[*0].Field[*ctx].Field[**mem]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_hd_deflate_init2", "(nghttp2_hd_deflater *,size_t,nghttp2_mem *)", "", "Argument[1]", "Argument[*0].Field[*ctx].Field[*hd_table_bufsize_max]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_hd_deflate_init2", "(nghttp2_hd_deflater *,size_t,nghttp2_mem *)", "", "Argument[1]", "Argument[*0].Field[*deflate_hd_table_bufsize_max]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_hd_deflate_init2", "(nghttp2_hd_deflater *,size_t,nghttp2_mem *)", "", "Argument[2]", "Argument[*0].Field[*ctx].Field[*mem]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_hd_deflate_init", "(nghttp2_hd_deflater *,nghttp2_mem *)", "", "Argument[*1]", "Argument[*0].Field[*ctx].Field[**mem]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_hd_deflate_init", "(nghttp2_hd_deflater *,nghttp2_mem *)", "", "Argument[1]", "Argument[*0].Field[*ctx].Field[*mem]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_hd_deflate_new2", "(nghttp2_hd_deflater **,size_t,nghttp2_mem *)", "", "Argument[*2]", "Argument[**0].Field[*ctx].Field[**mem]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_hd_deflate_new2", "(nghttp2_hd_deflater **,size_t,nghttp2_mem *)", "", "Argument[1]", "Argument[**0].Field[*ctx].Field[*hd_table_bufsize_max]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_hd_deflate_new2", "(nghttp2_hd_deflater **,size_t,nghttp2_mem *)", "", "Argument[1]", "Argument[**0].Field[*deflate_hd_table_bufsize_max]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_hd_deflate_new2", "(nghttp2_hd_deflater **,size_t,nghttp2_mem *)", "", "Argument[2]", "Argument[**0].Field[*ctx].Field[*mem]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_hd_deflate_new", "(nghttp2_hd_deflater **,size_t)", "", "Argument[1]", "Argument[**0].Field[*ctx].Field[*hd_table_bufsize_max]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_hd_deflate_new", "(nghttp2_hd_deflater **,size_t)", "", "Argument[1]", "Argument[**0].Field[*deflate_hd_table_bufsize_max]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_hd_entry_init", "(nghttp2_hd_entry *,nghttp2_hd_nv *)", "", "Argument[1]", "Argument[*0].Field[*nv]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_hd_entry_init", "(nghttp2_hd_entry *,nghttp2_hd_nv *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_hd_huff_decode", "(nghttp2_hd_huff_decode_context *,nghttp2_buf *,const uint8_t *,size_t,int)", "", "Argument[3]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_hd_huff_encode_count", "(const uint8_t *,size_t)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_hd_huff_encode_count", "(const uint8_t *,size_t)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_hd_inflate_change_table_size", "(nghttp2_hd_inflater *,size_t)", "", "Argument[1]", "Argument[*0].Field[*ctx].Field[*hd_table_bufsize_max]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_hd_inflate_change_table_size", "(nghttp2_hd_inflater *,size_t)", "", "Argument[1]", "Argument[*0].Field[*min_hd_table_bufsize_max]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_hd_inflate_change_table_size", "(nghttp2_hd_inflater *,size_t)", "", "Argument[1]", "Argument[*0].Field[*settings_hd_table_bufsize_max]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_hd_inflate_get_dynamic_table_size", "(nghttp2_hd_inflater *)", "", "Argument[*0].Field[*ctx].Field[*hd_table_bufsize]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_hd_inflate_get_max_dynamic_table_size", "(nghttp2_hd_inflater *)", "", "Argument[*0].Field[*ctx].Field[*hd_table_bufsize_max]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_hd_inflate_get_table_entry", "(nghttp2_hd_inflater *,size_t)", "", "Argument[1]", "ReturnValue[*]", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_hd_inflate_hd2", "(nghttp2_hd_inflater *,nghttp2_nv *,int *,const uint8_t *,size_t,int)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_hd_inflate_hd3", "(nghttp2_hd_inflater *,nghttp2_nv *,int *,const uint8_t *,size_t,int)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_hd_inflate_hd", "(nghttp2_hd_inflater *,nghttp2_nv *,int *,uint8_t *,size_t,int)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_hd_inflate_hd_nv", "(nghttp2_hd_inflater *,nghttp2_hd_nv *,int *,const uint8_t *,size_t,int)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_hd_inflate_init", "(nghttp2_hd_inflater *,nghttp2_mem *)", "", "Argument[*1]", "Argument[*0].Field[*ctx].Field[**mem]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_hd_inflate_init", "(nghttp2_hd_inflater *,nghttp2_mem *)", "", "Argument[1]", "Argument[*0].Field[*ctx].Field[*mem]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_hd_inflate_new2", "(nghttp2_hd_inflater **,nghttp2_mem *)", "", "Argument[*1]", "Argument[**0].Field[*ctx].Field[**mem]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_hd_inflate_new2", "(nghttp2_hd_inflater **,nghttp2_mem *)", "", "Argument[1]", "Argument[**0].Field[*ctx].Field[*mem]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_hd_table_get", "(nghttp2_hd_context *,size_t)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_http_on_data_chunk", "(nghttp2_stream *,size_t)", "", "Argument[1]", "Argument[*0].Field[*recv_content_length]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_http_on_header", "(nghttp2_session *,nghttp2_stream *,nghttp2_frame *,nghttp2_hd_nv *,int)", "", "Argument[*3]", "Argument[*1]", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_http_parse_priority", "(nghttp2_extpri *,const uint8_t *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_increase_local_window_size", "(int32_t *,int32_t *,int32_t *,int32_t *)", "", "Argument[*2]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_increase_local_window_size", "(int32_t *,int32_t *,int32_t *,int32_t *)", "", "Argument[*2]", "Argument[*3]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_increase_local_window_size", "(int32_t *,int32_t *,int32_t *,int32_t *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_increase_local_window_size", "(int32_t *,int32_t *,int32_t *,int32_t *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_increase_local_window_size", "(int32_t *,int32_t *,int32_t *,int32_t *)", "", "Argument[2]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_increase_local_window_size", "(int32_t *,int32_t *,int32_t *,int32_t *)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_increase_local_window_size", "(int32_t *,int32_t *,int32_t *,int32_t *)", "", "Argument[2]", "Argument[*3]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_map_each", "(const nghttp2_map *,..(*)(..),void *)", "", "Argument[*0].Field[**table].Field[**data]", "Argument[*2].Field[**head]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_map_each", "(const nghttp2_map *,..(*)(..),void *)", "", "Argument[*0].Field[**table].Field[*data]", "Argument[*2].Field[*head]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_map_find", "(const nghttp2_map *,nghttp2_map_key_type)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_map_find", "(const nghttp2_map *,nghttp2_map_key_type)", "", "Argument[*0]", "ReturnValue[**]", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_map_find", "(const nghttp2_map *,nghttp2_map_key_type)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_map_find", "(const nghttp2_map *,nghttp2_map_key_type)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_map_find", "(const nghttp2_map *,nghttp2_map_key_type)", "", "Argument[1]", "ReturnValue[**]", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_map_find", "(const nghttp2_map *,nghttp2_map_key_type)", "", "Argument[1]", "ReturnValue[*]", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_map_init", "(nghttp2_map *,nghttp2_mem *)", "", "Argument[*1]", "Argument[*0].Field[**mem]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_map_init", "(nghttp2_map *,nghttp2_mem *)", "", "Argument[1]", "Argument[*0].Field[*mem]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_map_insert", "(nghttp2_map *,nghttp2_map_key_type,void *)", "", "Argument[**2]", "Argument[*0].Field[**table].Field[***data]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_map_insert", "(nghttp2_map *,nghttp2_map_key_type,void *)", "", "Argument[*2]", "Argument[*0].Field[**table].Field[**data]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_map_insert", "(nghttp2_map *,nghttp2_map_key_type,void *)", "", "Argument[1]", "Argument[*0].Field[**table].Field[*key]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_map_insert", "(nghttp2_map *,nghttp2_map_key_type,void *)", "", "Argument[1]", "Argument[*0].Field[**table]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_map_insert", "(nghttp2_map *,nghttp2_map_key_type,void *)", "", "Argument[2]", "Argument[*0].Field[**table].Field[*data]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_map_size", "(const nghttp2_map *)", "", "Argument[*0].Field[*size]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_nv_array_copy", "(nghttp2_nv **,const nghttp2_nv *,size_t,nghttp2_mem *)", "", "Argument[*0]", "Argument[**0]", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_nv_array_copy", "(nghttp2_nv **,const nghttp2_nv *,size_t,nghttp2_mem *)", "", "Argument[*1]", "Argument[**0]", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_nv_array_copy", "(nghttp2_nv **,const nghttp2_nv *,size_t,nghttp2_mem *)", "", "Argument[0]", "Argument[**0]", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_nv_array_copy", "(nghttp2_nv **,const nghttp2_nv *,size_t,nghttp2_mem *)", "", "Argument[0]", "Argument[*0]", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_nv_array_copy", "(nghttp2_nv **,const nghttp2_nv *,size_t,nghttp2_mem *)", "", "Argument[1]", "Argument[**0]", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_nv_array_copy", "(nghttp2_nv **,const nghttp2_nv *,size_t,nghttp2_mem *)", "", "Argument[2]", "Argument[**0]", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_nv_compare_name", "(const nghttp2_nv *,const nghttp2_nv *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_nv_compare_name", "(const nghttp2_nv *,const nghttp2_nv *)", "", "Argument[*1]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_option_new", "(nghttp2_option **)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_option_set_max_continuations", "(nghttp2_option *,size_t)", "", "Argument[1]", "Argument[*0].Field[*max_continuations]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_option_set_max_deflate_dynamic_table_size", "(nghttp2_option *,size_t)", "", "Argument[1]", "Argument[*0].Field[*max_deflate_dynamic_table_size]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_option_set_max_outbound_ack", "(nghttp2_option *,size_t)", "", "Argument[1]", "Argument[*0].Field[*max_outbound_ack]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_option_set_max_reserved_remote_streams", "(nghttp2_option *,uint32_t)", "", "Argument[1]", "Argument[*0].Field[*max_reserved_remote_streams]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_option_set_max_send_header_block_length", "(nghttp2_option *,size_t)", "", "Argument[1]", "Argument[*0].Field[*max_send_header_block_length]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_option_set_max_settings", "(nghttp2_option *,size_t)", "", "Argument[1]", "Argument[*0].Field[*max_settings]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_option_set_no_auto_ping_ack", "(nghttp2_option *,int)", "", "Argument[1]", "Argument[*0].Field[*no_auto_ping_ack]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_option_set_no_auto_window_update", "(nghttp2_option *,int)", "", "Argument[1]", "Argument[*0].Field[*no_auto_window_update]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_option_set_no_closed_streams", "(nghttp2_option *,int)", "", "Argument[1]", "Argument[*0].Field[*no_closed_streams]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_option_set_no_http_messaging", "(nghttp2_option *,int)", "", "Argument[1]", "Argument[*0].Field[*no_http_messaging]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_option_set_no_recv_client_magic", "(nghttp2_option *,int)", "", "Argument[1]", "Argument[*0].Field[*no_recv_client_magic]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation", "(nghttp2_option *,int)", "", "Argument[1]", "Argument[*0].Field[*no_rfc9113_leading_and_trailing_ws_validation]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_option_set_peer_max_concurrent_streams", "(nghttp2_option *,uint32_t)", "", "Argument[1]", "Argument[*0].Field[*peer_max_concurrent_streams]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_option_set_server_fallback_rfc7540_priorities", "(nghttp2_option *,int)", "", "Argument[1]", "Argument[*0].Field[*server_fallback_rfc7540_priorities]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_option_set_stream_reset_rate_limit", "(nghttp2_option *,uint64_t,uint64_t)", "", "Argument[1]", "Argument[*0].Field[*stream_reset_burst]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_option_set_stream_reset_rate_limit", "(nghttp2_option *,uint64_t,uint64_t)", "", "Argument[2]", "Argument[*0].Field[*stream_reset_rate]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_option_set_user_recv_extension_type", "(nghttp2_option *,uint8_t)", "", "Argument[1]", "Argument[*0].Field[*user_recv_ext_types]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_outbound_queue_init", "(nghttp2_outbound_queue *)", "", "Argument[*0].Field[**tail]", "Argument[*0].Field[**head]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_outbound_queue_init", "(nghttp2_outbound_queue *)", "", "Argument[*0].Field[*tail]", "Argument[*0].Field[*head]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_outbound_queue_push", "(nghttp2_outbound_queue *,nghttp2_outbound_item *)", "", "Argument[*1]", "Argument[*0].Field[**tail].Field[**qnext]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_outbound_queue_push", "(nghttp2_outbound_queue *,nghttp2_outbound_item *)", "", "Argument[*1]", "Argument[*0].Field[**tail]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_outbound_queue_push", "(nghttp2_outbound_queue *,nghttp2_outbound_item *)", "", "Argument[1]", "Argument[*0].Field[**tail].Field[*qnext]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_outbound_queue_push", "(nghttp2_outbound_queue *,nghttp2_outbound_item *)", "", "Argument[1]", "Argument[*0].Field[*tail]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_pack_settings_payload2", "(uint8_t *,size_t,const nghttp2_settings_entry *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_pack_settings_payload2", "(uint8_t *,size_t,const nghttp2_settings_entry *,size_t)", "", "Argument[3]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_pack_settings_payload", "(uint8_t *,size_t,const nghttp2_settings_entry *,size_t)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_pack_settings_payload", "(uint8_t *,size_t,const nghttp2_settings_entry *,size_t)", "", "Argument[3]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_pq_init", "(nghttp2_pq *,nghttp2_less,nghttp2_mem *)", "", "Argument[*2]", "Argument[*0].Field[**mem]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_pq_init", "(nghttp2_pq *,nghttp2_less,nghttp2_mem *)", "", "Argument[1]", "Argument[*0].Field[*less]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_pq_init", "(nghttp2_pq *,nghttp2_less,nghttp2_mem *)", "", "Argument[2]", "Argument[*0].Field[*mem]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_pq_push", "(nghttp2_pq *,nghttp2_pq_entry *)", "", "Argument[*1]", "Argument[*0].Field[***q]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_pq_push", "(nghttp2_pq *,nghttp2_pq_entry *)", "", "Argument[1]", "Argument[*0].Field[***q]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_pq_push", "(nghttp2_pq *,nghttp2_pq_entry *)", "", "Argument[1]", "Argument[*0].Field[**q]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_pq_remove", "(nghttp2_pq *,nghttp2_pq_entry *)", "", "Argument[*1]", "Argument[*0]", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_pq_size", "(nghttp2_pq *)", "", "Argument[*0].Field[*length]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_pq_top", "(nghttp2_pq *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_pq_top", "(nghttp2_pq *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_priority_spec_init", "(nghttp2_priority_spec *,int32_t,int32_t,int)", "", "Argument[1]", "Argument[*0].Field[*stream_id]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_priority_spec_init", "(nghttp2_priority_spec *,int32_t,int32_t,int)", "", "Argument[2]", "Argument[*0].Field[*weight]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_priority_spec_init", "(nghttp2_priority_spec *,int32_t,int32_t,int)", "", "Argument[3]", "Argument[*0].Field[*exclusive]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_queue_back", "(nghttp2_queue *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_queue_back", "(nghttp2_queue *)", "", "Argument[*0]", "ReturnValue[**]", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_queue_back", "(nghttp2_queue *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_queue_front", "(nghttp2_queue *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_queue_front", "(nghttp2_queue *)", "", "Argument[*0]", "ReturnValue[**]", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_queue_front", "(nghttp2_queue *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_queue_init", "(nghttp2_queue *)", "", "Argument[*0].Field[**back]", "Argument[*0].Field[**front]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_queue_init", "(nghttp2_queue *)", "", "Argument[*0].Field[*back]", "Argument[*0].Field[*front]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_queue_pop", "(nghttp2_queue *)", "", "Argument[*0].Field[**front].Field[**next]", "Argument[*0].Field[**front]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_queue_pop", "(nghttp2_queue *)", "", "Argument[*0].Field[**front].Field[*next]", "Argument[*0].Field[*front]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_queue_push", "(nghttp2_queue *,void *)", "", "Argument[**1]", "Argument[*0].Field[**back].Field[***data]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_queue_push", "(nghttp2_queue *,void *)", "", "Argument[*0].Field[**back]", "Argument[*0].Field[**front]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_queue_push", "(nghttp2_queue *,void *)", "", "Argument[*0].Field[*back]", "Argument[*0].Field[*front]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_queue_push", "(nghttp2_queue *,void *)", "", "Argument[*1]", "Argument[*0].Field[**back].Field[**data]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_queue_push", "(nghttp2_queue *,void *)", "", "Argument[1]", "Argument[*0].Field[**back].Field[*data]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_ratelim_drain", "(nghttp2_ratelim *,uint64_t)", "", "Argument[1]", "Argument[*0].Field[*val]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_ratelim_init", "(nghttp2_ratelim *,uint64_t,uint64_t)", "", "Argument[*0].Field[*burst]", "Argument[*0].Field[*val]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_ratelim_init", "(nghttp2_ratelim *,uint64_t,uint64_t)", "", "Argument[1]", "Argument[*0].Field[*burst]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_ratelim_init", "(nghttp2_ratelim *,uint64_t,uint64_t)", "", "Argument[2]", "Argument[*0].Field[*rate]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_ratelim_update", "(nghttp2_ratelim *,uint64_t)", "", "Argument[1]", "Argument[*0].Field[*tstamp]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_ratelim_update", "(nghttp2_ratelim *,uint64_t)", "", "Argument[1]", "Argument[*0].Field[*val]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_rcbuf_get_buf", "(nghttp2_rcbuf *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_rcbuf_new2", "(nghttp2_rcbuf **,const uint8_t *,size_t,nghttp2_mem *)", "", "Argument[**0].Field[*base]", "Argument[**0].Field[**base]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_rcbuf_new2", "(nghttp2_rcbuf **,const uint8_t *,size_t,nghttp2_mem *)", "", "Argument[*1]", "Argument[**0].Field[**base]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_rcbuf_new2", "(nghttp2_rcbuf **,const uint8_t *,size_t,nghttp2_mem *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_rcbuf_new2", "(nghttp2_rcbuf **,const uint8_t *,size_t,nghttp2_mem *)", "", "Argument[1]", "Argument[**0].Field[**base]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_rcbuf_new2", "(nghttp2_rcbuf **,const uint8_t *,size_t,nghttp2_mem *)", "", "Argument[2]", "Argument[**0].Field[**base]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_rcbuf_new2", "(nghttp2_rcbuf **,const uint8_t *,size_t,nghttp2_mem *)", "", "Argument[2]", "Argument[**0].Field[*len]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_rcbuf_new", "(nghttp2_rcbuf **,size_t,nghttp2_mem *)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_rcbuf_new", "(nghttp2_rcbuf **,size_t,nghttp2_mem *)", "", "Argument[1]", "Argument[**0].Field[*len]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_select_alpn", "(const unsigned char **,unsigned char *,const unsigned char *,unsigned int)", "", "Argument[**0]", "Argument[*2]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_select_alpn", "(const unsigned char **,unsigned char *,const unsigned char *,unsigned int)", "", "Argument[*2]", "Argument[**0]", "value", "df-generated"]
+ - ["", "", True, "nghttp2_select_alpn", "(const unsigned char **,unsigned char *,const unsigned char *,unsigned int)", "", "Argument[*2]", "Argument[*1]", "value", "df-generated"]
+ - ["", "", True, "nghttp2_select_next_protocol", "(unsigned char **,unsigned char *,const unsigned char *,unsigned int)", "", "Argument[**0]", "Argument[*2]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_select_next_protocol", "(unsigned char **,unsigned char *,const unsigned char *,unsigned int)", "", "Argument[*2]", "Argument[**0]", "value", "df-generated"]
+ - ["", "", True, "nghttp2_select_next_protocol", "(unsigned char **,unsigned char *,const unsigned char *,unsigned int)", "", "Argument[*2]", "Argument[*1]", "value", "df-generated"]
+ - ["", "", True, "nghttp2_session_add_item", "(nghttp2_session *,nghttp2_outbound_item *)", "", "Argument[1]", "Argument[*0].Field[*ob_reg].Field[*tail]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_add_item", "(nghttp2_session *,nghttp2_outbound_item *)", "", "Argument[1]", "Argument[*0].Field[*ob_syn].Field[*tail]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_add_item", "(nghttp2_session *,nghttp2_outbound_item *)", "", "Argument[1]", "Argument[*0].Field[*ob_urgent].Field[*tail]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_add_settings", "(nghttp2_session *,uint8_t,const nghttp2_settings_entry *,size_t)", "", "Argument[*2]", "Argument[*0]", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_session_add_settings", "(nghttp2_session *,uint8_t,const nghttp2_settings_entry *,size_t)", "", "Argument[2]", "Argument[*0]", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_session_add_settings", "(nghttp2_session *,uint8_t,const nghttp2_settings_entry *,size_t)", "", "Argument[3]", "Argument[*0]", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_session_callbacks_new", "(nghttp2_session_callbacks **)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_callbacks_set_before_frame_send_callback", "(nghttp2_session_callbacks *,nghttp2_before_frame_send_callback)", "", "Argument[1]", "Argument[*0].Field[*before_frame_send_callback]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_callbacks_set_data_source_read_length_callback2", "(nghttp2_session_callbacks *,nghttp2_data_source_read_length_callback2)", "", "Argument[1]", "Argument[*0].Field[*read_length_callback2]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_callbacks_set_data_source_read_length_callback", "(nghttp2_session_callbacks *,nghttp2_data_source_read_length_callback)", "", "Argument[1]", "Argument[*0].Field[*read_length_callback]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_callbacks_set_error_callback2", "(nghttp2_session_callbacks *,nghttp2_error_callback2)", "", "Argument[1]", "Argument[*0].Field[*error_callback2]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_callbacks_set_error_callback", "(nghttp2_session_callbacks *,nghttp2_error_callback)", "", "Argument[1]", "Argument[*0].Field[*error_callback]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_callbacks_set_on_begin_frame_callback", "(nghttp2_session_callbacks *,nghttp2_on_begin_frame_callback)", "", "Argument[1]", "Argument[*0].Field[*on_begin_frame_callback]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_callbacks_set_on_begin_headers_callback", "(nghttp2_session_callbacks *,nghttp2_on_begin_headers_callback)", "", "Argument[1]", "Argument[*0].Field[*on_begin_headers_callback]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_callbacks_set_on_data_chunk_recv_callback", "(nghttp2_session_callbacks *,nghttp2_on_data_chunk_recv_callback)", "", "Argument[1]", "Argument[*0].Field[*on_data_chunk_recv_callback]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_callbacks_set_on_extension_chunk_recv_callback", "(nghttp2_session_callbacks *,nghttp2_on_extension_chunk_recv_callback)", "", "Argument[1]", "Argument[*0].Field[*on_extension_chunk_recv_callback]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_callbacks_set_on_frame_not_send_callback", "(nghttp2_session_callbacks *,nghttp2_on_frame_not_send_callback)", "", "Argument[1]", "Argument[*0].Field[*on_frame_not_send_callback]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_callbacks_set_on_frame_recv_callback", "(nghttp2_session_callbacks *,nghttp2_on_frame_recv_callback)", "", "Argument[1]", "Argument[*0].Field[*on_frame_recv_callback]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_callbacks_set_on_frame_send_callback", "(nghttp2_session_callbacks *,nghttp2_on_frame_send_callback)", "", "Argument[1]", "Argument[*0].Field[*on_frame_send_callback]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_callbacks_set_on_header_callback2", "(nghttp2_session_callbacks *,nghttp2_on_header_callback2)", "", "Argument[1]", "Argument[*0].Field[*on_header_callback2]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_callbacks_set_on_header_callback", "(nghttp2_session_callbacks *,nghttp2_on_header_callback)", "", "Argument[1]", "Argument[*0].Field[*on_header_callback]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_callbacks_set_on_invalid_frame_recv_callback", "(nghttp2_session_callbacks *,nghttp2_on_invalid_frame_recv_callback)", "", "Argument[1]", "Argument[*0].Field[*on_invalid_frame_recv_callback]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_callbacks_set_on_invalid_header_callback2", "(nghttp2_session_callbacks *,nghttp2_on_invalid_header_callback2)", "", "Argument[1]", "Argument[*0].Field[*on_invalid_header_callback2]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_callbacks_set_on_invalid_header_callback", "(nghttp2_session_callbacks *,nghttp2_on_invalid_header_callback)", "", "Argument[1]", "Argument[*0].Field[*on_invalid_header_callback]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_callbacks_set_on_stream_close_callback", "(nghttp2_session_callbacks *,nghttp2_on_stream_close_callback)", "", "Argument[1]", "Argument[*0].Field[*on_stream_close_callback]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_callbacks_set_pack_extension_callback2", "(nghttp2_session_callbacks *,nghttp2_pack_extension_callback2)", "", "Argument[1]", "Argument[*0].Field[*pack_extension_callback2]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_callbacks_set_pack_extension_callback", "(nghttp2_session_callbacks *,nghttp2_pack_extension_callback)", "", "Argument[1]", "Argument[*0].Field[*pack_extension_callback]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_callbacks_set_recv_callback2", "(nghttp2_session_callbacks *,nghttp2_recv_callback2)", "", "Argument[1]", "Argument[*0].Field[*recv_callback2]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_callbacks_set_recv_callback", "(nghttp2_session_callbacks *,nghttp2_recv_callback)", "", "Argument[1]", "Argument[*0].Field[*recv_callback]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_callbacks_set_select_padding_callback2", "(nghttp2_session_callbacks *,nghttp2_select_padding_callback2)", "", "Argument[1]", "Argument[*0].Field[*select_padding_callback2]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_callbacks_set_select_padding_callback", "(nghttp2_session_callbacks *,nghttp2_select_padding_callback)", "", "Argument[1]", "Argument[*0].Field[*select_padding_callback]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_callbacks_set_send_callback2", "(nghttp2_session_callbacks *,nghttp2_send_callback2)", "", "Argument[1]", "Argument[*0].Field[*send_callback2]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_callbacks_set_send_callback", "(nghttp2_session_callbacks *,nghttp2_send_callback)", "", "Argument[1]", "Argument[*0].Field[*send_callback]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_callbacks_set_send_data_callback", "(nghttp2_session_callbacks *,nghttp2_send_data_callback)", "", "Argument[1]", "Argument[*0].Field[*send_data_callback]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_callbacks_set_unpack_extension_callback", "(nghttp2_session_callbacks *,nghttp2_unpack_extension_callback)", "", "Argument[1]", "Argument[*0].Field[*unpack_extension_callback]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_change_extpri_stream_priority", "(nghttp2_session *,int32_t,const nghttp2_extpri *,int)", "", "Argument[2]", "Argument[*2]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_check_server_session", "(nghttp2_session *)", "", "Argument[*0].Field[*server]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_client_new2", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *)", "", "Argument[**2]", "Argument[**0].Field[***user_data]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_client_new2", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *)", "", "Argument[*1]", "Argument[**0].Field[*callbacks]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_client_new2", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *)", "", "Argument[*2]", "Argument[**0].Field[**user_data]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_client_new2", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *)", "", "Argument[1]", "Argument[**0].Field[*callbacks]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_client_new2", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_client_new2", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *)", "", "Argument[2]", "Argument[**0].Field[*user_data]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_client_new3", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *)", "", "Argument[**2]", "Argument[**0].Field[***user_data]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_client_new3", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *)", "", "Argument[*1]", "Argument[**0].Field[*callbacks]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_client_new3", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *)", "", "Argument[*2]", "Argument[**0].Field[**user_data]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_client_new3", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *)", "", "Argument[*4]", "Argument[**0].Field[*mem]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_client_new3", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *)", "", "Argument[*4]", "Argument[**0].Field[*streams].Field[**mem]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_client_new3", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *)", "", "Argument[1]", "Argument[**0].Field[*callbacks]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_client_new3", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_client_new3", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *)", "", "Argument[2]", "Argument[**0].Field[*user_data]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_client_new3", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *)", "", "Argument[4]", "Argument[**0].Field[*mem]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_client_new3", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *)", "", "Argument[4]", "Argument[**0].Field[*streams].Field[**mem]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_client_new3", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_client_new", "(nghttp2_session **,const nghttp2_session_callbacks *,void *)", "", "Argument[**2]", "Argument[**0].Field[***user_data]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_client_new", "(nghttp2_session **,const nghttp2_session_callbacks *,void *)", "", "Argument[*1]", "Argument[**0].Field[*callbacks]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_client_new", "(nghttp2_session **,const nghttp2_session_callbacks *,void *)", "", "Argument[*2]", "Argument[**0].Field[**user_data]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_client_new", "(nghttp2_session **,const nghttp2_session_callbacks *,void *)", "", "Argument[1]", "Argument[**0].Field[*callbacks]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_client_new", "(nghttp2_session **,const nghttp2_session_callbacks *,void *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_client_new", "(nghttp2_session **,const nghttp2_session_callbacks *,void *)", "", "Argument[2]", "Argument[**0].Field[*user_data]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_consume", "(nghttp2_session *,int32_t,size_t)", "", "Argument[2]", "Argument[*0].Field[*consumed_size]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_consume", "(nghttp2_session *,int32_t,size_t)", "", "Argument[2]", "Argument[*0].Field[*recv_window_size]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_consume_connection", "(nghttp2_session *,size_t)", "", "Argument[1]", "Argument[*0].Field[*consumed_size]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_consume_connection", "(nghttp2_session *,size_t)", "", "Argument[1]", "Argument[*0].Field[*recv_window_size]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_destroy_stream", "(nghttp2_session *,nghttp2_stream *)", "", "Argument[*1]", "Argument[*0]", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_session_find_stream", "(nghttp2_session *,int32_t)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_session_find_stream", "(nghttp2_session *,int32_t)", "", "Argument[1]", "ReturnValue[*]", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_session_get_effective_local_window_size", "(nghttp2_session *)", "", "Argument[*0].Field[*local_window_size]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_get_effective_recv_data_length", "(nghttp2_session *)", "", "Argument[*0].Field[*recv_window_size]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_get_extpri_stream_priority", "(nghttp2_session *,nghttp2_extpri *,int32_t)", "", "Argument[2]", "Argument[*1]", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_session_get_last_proc_stream_id", "(nghttp2_session *)", "", "Argument[*0].Field[*last_proc_stream_id]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_get_local_settings", "(nghttp2_session *,nghttp2_settings_id)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_session_get_local_window_size", "(nghttp2_session *)", "", "Argument[*0].Field[*local_window_size]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_get_local_window_size", "(nghttp2_session *)", "", "Argument[*0].Field[*recv_window_size]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_get_next_ob_item", "(nghttp2_session *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_session_get_next_ob_item", "(nghttp2_session *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_session_get_next_stream_id", "(nghttp2_session *)", "", "Argument[*0].Field[*next_stream_id]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_get_outbound_queue_size", "(nghttp2_session *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_session_get_remote_settings", "(nghttp2_session *,nghttp2_settings_id)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_session_get_remote_window_size", "(nghttp2_session *)", "", "Argument[*0].Field[*remote_window_size]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_get_stream", "(nghttp2_session *,int32_t)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_session_get_stream", "(nghttp2_session *,int32_t)", "", "Argument[1]", "ReturnValue[*]", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_session_get_stream_effective_local_window_size", "(nghttp2_session *,int32_t)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_session_get_stream_effective_recv_data_length", "(nghttp2_session *,int32_t)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_session_get_stream_local_close", "(nghttp2_session *,int32_t)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_session_get_stream_local_window_size", "(nghttp2_session *,int32_t)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_session_get_stream_raw", "(nghttp2_session *,int32_t)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_session_get_stream_raw", "(nghttp2_session *,int32_t)", "", "Argument[1]", "ReturnValue[*]", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_session_get_stream_remote_close", "(nghttp2_session *,int32_t)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_session_get_stream_remote_window_size", "(nghttp2_session *,int32_t)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_session_get_stream_user_data", "(nghttp2_session *,int32_t)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_session_get_stream_user_data", "(nghttp2_session *,int32_t)", "", "Argument[1]", "ReturnValue[**]", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_session_get_stream_user_data", "(nghttp2_session *,int32_t)", "", "Argument[1]", "ReturnValue[*]", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_session_mem_recv2", "(nghttp2_session *,const uint8_t *,size_t)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_session_mem_recv2", "(nghttp2_session *,const uint8_t *,size_t)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_session_mem_recv2", "(nghttp2_session *,const uint8_t *,size_t)", "", "Argument[*1]", "Argument[*0]", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_session_mem_recv2", "(nghttp2_session *,const uint8_t *,size_t)", "", "Argument[*1]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_session_mem_recv2", "(nghttp2_session *,const uint8_t *,size_t)", "", "Argument[1]", "Argument[*0]", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_session_mem_recv2", "(nghttp2_session *,const uint8_t *,size_t)", "", "Argument[1]", "Argument[*1]", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_session_mem_recv2", "(nghttp2_session *,const uint8_t *,size_t)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_session_mem_recv2", "(nghttp2_session *,const uint8_t *,size_t)", "", "Argument[2]", "Argument[*0]", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_session_mem_recv2", "(nghttp2_session *,const uint8_t *,size_t)", "", "Argument[2]", "Argument[*1]", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_session_mem_recv2", "(nghttp2_session *,const uint8_t *,size_t)", "", "Argument[2]", "ReturnValue", "value", "df-generated"]
+ - ["", "", True, "nghttp2_session_mem_recv", "(nghttp2_session *,const uint8_t *,size_t)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_session_mem_recv", "(nghttp2_session *,const uint8_t *,size_t)", "", "Argument[*1]", "Argument[*0]", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_session_mem_recv", "(nghttp2_session *,const uint8_t *,size_t)", "", "Argument[*1]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_session_mem_recv", "(nghttp2_session *,const uint8_t *,size_t)", "", "Argument[1]", "Argument[*0]", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_session_mem_recv", "(nghttp2_session *,const uint8_t *,size_t)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_session_mem_recv", "(nghttp2_session *,const uint8_t *,size_t)", "", "Argument[2]", "Argument[*0]", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_session_mem_recv", "(nghttp2_session *,const uint8_t *,size_t)", "", "Argument[2]", "ReturnValue", "value", "df-generated"]
+ - ["", "", True, "nghttp2_session_on_goaway_received", "(nghttp2_session *,nghttp2_frame *)", "", "Argument[*1].Union[*(unnamed class/struct/union)].Field[*last_stream_id]", "Argument[*0].Field[*remote_last_stream_id]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_on_push_promise_received", "(nghttp2_session *,nghttp2_frame *)", "", "Argument[*1]", "Argument[*0]", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_session_on_request_headers_received", "(nghttp2_session *,nghttp2_frame *)", "", "Argument[*1]", "Argument[*0]", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_session_on_window_update_received", "(nghttp2_session *,nghttp2_frame *)", "", "Argument[*1].Union[*(unnamed class/struct/union)].Field[*window_size_increment]", "Argument[*0].Field[*remote_window_size]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_open_stream", "(nghttp2_session *,int32_t,uint8_t,nghttp2_stream_state,void *)", "", "Argument[**4]", "ReturnValue[*].Field[***stream_user_data]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_open_stream", "(nghttp2_session *,int32_t,uint8_t,nghttp2_stream_state,void *)", "", "Argument[*4]", "ReturnValue[*].Field[**stream_user_data]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_open_stream", "(nghttp2_session *,int32_t,uint8_t,nghttp2_stream_state,void *)", "", "Argument[1]", "Argument[*0].Field[*streams].Field[**table]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_open_stream", "(nghttp2_session *,int32_t,uint8_t,nghttp2_stream_state,void *)", "", "Argument[1]", "ReturnValue[*].Field[*stream_id]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_open_stream", "(nghttp2_session *,int32_t,uint8_t,nghttp2_stream_state,void *)", "", "Argument[2]", "ReturnValue[*].Field[*flags]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_open_stream", "(nghttp2_session *,int32_t,uint8_t,nghttp2_stream_state,void *)", "", "Argument[3]", "ReturnValue[*].Field[*state]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_open_stream", "(nghttp2_session *,int32_t,uint8_t,nghttp2_stream_state,void *)", "", "Argument[4]", "ReturnValue[*].Field[*stream_user_data]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_pack_data", "(nghttp2_session *,nghttp2_bufs *,size_t,nghttp2_frame *,nghttp2_data_aux_data *,nghttp2_stream *)", "", "Argument[*3]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_session_pop_next_ob_item", "(nghttp2_session *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_session_pop_next_ob_item", "(nghttp2_session *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_session_recv", "(nghttp2_session *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_session_server_new2", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *)", "", "Argument[**2]", "Argument[**0].Field[***user_data]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_server_new2", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *)", "", "Argument[*1]", "Argument[**0].Field[*callbacks]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_server_new2", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *)", "", "Argument[*2]", "Argument[**0].Field[**user_data]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_server_new2", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *)", "", "Argument[1]", "Argument[**0].Field[*callbacks]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_server_new2", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_server_new2", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *)", "", "Argument[2]", "Argument[**0].Field[*user_data]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_server_new3", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *)", "", "Argument[**2]", "Argument[**0].Field[***user_data]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_server_new3", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *)", "", "Argument[*1]", "Argument[**0].Field[*callbacks]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_server_new3", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *)", "", "Argument[*2]", "Argument[**0].Field[**user_data]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_server_new3", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *)", "", "Argument[*4]", "Argument[**0].Field[*mem]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_server_new3", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *)", "", "Argument[*4]", "Argument[**0].Field[*streams].Field[**mem]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_server_new3", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *)", "", "Argument[1]", "Argument[**0].Field[*callbacks]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_server_new3", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_server_new3", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *)", "", "Argument[2]", "Argument[**0].Field[*user_data]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_server_new3", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *)", "", "Argument[4]", "Argument[**0].Field[*mem]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_server_new3", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *)", "", "Argument[4]", "Argument[**0].Field[*streams].Field[**mem]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_server_new3", "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_server_new", "(nghttp2_session **,const nghttp2_session_callbacks *,void *)", "", "Argument[**2]", "Argument[**0].Field[***user_data]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_server_new", "(nghttp2_session **,const nghttp2_session_callbacks *,void *)", "", "Argument[*1]", "Argument[**0].Field[*callbacks]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_server_new", "(nghttp2_session **,const nghttp2_session_callbacks *,void *)", "", "Argument[*2]", "Argument[**0].Field[**user_data]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_server_new", "(nghttp2_session **,const nghttp2_session_callbacks *,void *)", "", "Argument[1]", "Argument[**0].Field[*callbacks]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_server_new", "(nghttp2_session **,const nghttp2_session_callbacks *,void *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_server_new", "(nghttp2_session **,const nghttp2_session_callbacks *,void *)", "", "Argument[2]", "Argument[**0].Field[*user_data]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_set_local_window_size", "(nghttp2_session *,uint8_t,int32_t,int32_t)", "", "Argument[3]", "Argument[*0].Field[*local_window_size]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_set_local_window_size", "(nghttp2_session *,uint8_t,int32_t,int32_t)", "", "Argument[3]", "Argument[*0].Field[*recv_reduction]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_set_local_window_size", "(nghttp2_session *,uint8_t,int32_t,int32_t)", "", "Argument[3]", "Argument[*0].Field[*recv_window_size]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_set_next_stream_id", "(nghttp2_session *,int32_t)", "", "Argument[1]", "Argument[*0].Field[*next_stream_id]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_set_user_data", "(nghttp2_session *,void *)", "", "Argument[**1]", "Argument[*0].Field[***user_data]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_set_user_data", "(nghttp2_session *,void *)", "", "Argument[*1]", "Argument[*0].Field[**user_data]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_set_user_data", "(nghttp2_session *,void *)", "", "Argument[1]", "Argument[*0].Field[*user_data]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_update_local_settings", "(nghttp2_session *,nghttp2_settings_entry *,size_t)", "", "Argument[*1]", "Argument[*0]", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_session_update_local_settings", "(nghttp2_session *,nghttp2_settings_entry *,size_t)", "", "Argument[1]", "Argument[*0]", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_session_update_recv_connection_window_size", "(nghttp2_session *,size_t)", "", "Argument[1]", "Argument[*0].Field[*recv_window_size]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_update_recv_stream_window_size", "(nghttp2_session *,nghttp2_stream *,size_t,int)", "", "Argument[2]", "Argument[*1].Field[*recv_window_size]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_session_upgrade2", "(nghttp2_session *,const uint8_t *,size_t,int,void *)", "", "Argument[2]", "Argument[*0]", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_session_upgrade", "(nghttp2_session *,const uint8_t *,size_t,void *)", "", "Argument[2]", "Argument[*0]", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_stream_attach_item", "(nghttp2_stream *,nghttp2_outbound_item *)", "", "Argument[*1]", "Argument[*0].Field[**item]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_stream_attach_item", "(nghttp2_stream *,nghttp2_outbound_item *)", "", "Argument[1]", "Argument[*0].Field[*item]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_stream_defer_item", "(nghttp2_stream *,uint8_t)", "", "Argument[1]", "Argument[*0].Field[*flags]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_stream_get_stream_id", "(nghttp2_stream *)", "", "Argument[*0].Field[*stream_id]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_stream_init", "(nghttp2_stream *,int32_t,uint8_t,nghttp2_stream_state,int32_t,int32_t,void *)", "", "Argument[**6]", "Argument[*0].Field[***stream_user_data]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_stream_init", "(nghttp2_stream *,int32_t,uint8_t,nghttp2_stream_state,int32_t,int32_t,void *)", "", "Argument[*0].Field[*http_extpri]", "Argument[*0].Field[*extpri]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_stream_init", "(nghttp2_stream *,int32_t,uint8_t,nghttp2_stream_state,int32_t,int32_t,void *)", "", "Argument[*6]", "Argument[*0].Field[**stream_user_data]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_stream_init", "(nghttp2_stream *,int32_t,uint8_t,nghttp2_stream_state,int32_t,int32_t,void *)", "", "Argument[1]", "Argument[*0].Field[*stream_id]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_stream_init", "(nghttp2_stream *,int32_t,uint8_t,nghttp2_stream_state,int32_t,int32_t,void *)", "", "Argument[2]", "Argument[*0].Field[*flags]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_stream_init", "(nghttp2_stream *,int32_t,uint8_t,nghttp2_stream_state,int32_t,int32_t,void *)", "", "Argument[3]", "Argument[*0].Field[*state]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_stream_init", "(nghttp2_stream *,int32_t,uint8_t,nghttp2_stream_state,int32_t,int32_t,void *)", "", "Argument[4]", "Argument[*0].Field[*remote_window_size]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_stream_init", "(nghttp2_stream *,int32_t,uint8_t,nghttp2_stream_state,int32_t,int32_t,void *)", "", "Argument[5]", "Argument[*0].Field[*local_window_size]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_stream_init", "(nghttp2_stream *,int32_t,uint8_t,nghttp2_stream_state,int32_t,int32_t,void *)", "", "Argument[6]", "Argument[*0].Field[*stream_user_data]", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_stream_resume_deferred_item", "(nghttp2_stream *,uint8_t)", "", "Argument[1]", "Argument[*0].Field[*flags]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_stream_shutdown", "(nghttp2_stream *,nghttp2_shut_flag)", "", "Argument[1]", "Argument[*0].Field[*shut_flags]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_stream_update_local_initial_window_size", "(nghttp2_stream *,int32_t,int32_t)", "", "Argument[1]", "Argument[*0].Field[*local_window_size]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_stream_update_local_initial_window_size", "(nghttp2_stream *,int32_t,int32_t)", "", "Argument[2]", "Argument[*0].Field[*local_window_size]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_stream_update_remote_initial_window_size", "(nghttp2_stream *,int32_t,int32_t)", "", "Argument[1]", "Argument[*0].Field[*remote_window_size]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_stream_update_remote_initial_window_size", "(nghttp2_stream *,int32_t,int32_t)", "", "Argument[2]", "Argument[*0].Field[*remote_window_size]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_submit_data2", "(nghttp2_session *,uint8_t,int32_t,const nghttp2_data_provider2 *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_submit_data", "(nghttp2_session *,uint8_t,int32_t,const nghttp2_data_provider *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_submit_data_shared", "(nghttp2_session *,uint8_t,int32_t,const nghttp2_data_provider_wrap *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_submit_headers", "(nghttp2_session *,uint8_t,int32_t,const nghttp2_priority_spec *,const nghttp2_nv *,size_t,void *)", "", "Argument[2]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_submit_push_promise", "(nghttp2_session *,uint8_t,int32_t,const nghttp2_nv *,size_t,void *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_submit_request2", "(nghttp2_session *,const nghttp2_priority_spec *,const nghttp2_nv *,size_t,const nghttp2_data_provider2 *,void *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_submit_request", "(nghttp2_session *,const nghttp2_priority_spec *,const nghttp2_nv *,size_t,const nghttp2_data_provider *,void *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_submit_response2", "(nghttp2_session *,int32_t,const nghttp2_nv *,size_t,const nghttp2_data_provider2 *)", "", "Argument[1]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_submit_response2", "(nghttp2_session *,int32_t,const nghttp2_nv *,size_t,const nghttp2_data_provider2 *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_submit_response", "(nghttp2_session *,int32_t,const nghttp2_nv *,size_t,const nghttp2_data_provider *)", "", "Argument[1]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_submit_response", "(nghttp2_session *,int32_t,const nghttp2_nv *,size_t,const nghttp2_data_provider *)", "", "Argument[4]", "Argument[*4]", "taint", "dfc-generated"]
+ - ["", "", True, "nghttp2_submit_settings", "(nghttp2_session *,uint8_t,const nghttp2_settings_entry *,size_t)", "", "Argument[*2]", "Argument[*0]", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_submit_settings", "(nghttp2_session *,uint8_t,const nghttp2_settings_entry *,size_t)", "", "Argument[2]", "Argument[*0]", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_submit_settings", "(nghttp2_session *,uint8_t,const nghttp2_settings_entry *,size_t)", "", "Argument[3]", "Argument[*0]", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_submit_trailer", "(nghttp2_session *,int32_t,const nghttp2_nv *,size_t)", "", "Argument[1]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "nghttp2_submit_window_update", "(nghttp2_session *,uint8_t,int32_t,int32_t)", "", "Argument[*0]", "Argument[3]", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_submit_window_update", "(nghttp2_session *,uint8_t,int32_t,int32_t)", "", "Argument[2]", "Argument[*0]", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_submit_window_update", "(nghttp2_session *,uint8_t,int32_t,int32_t)", "", "Argument[2]", "Argument[3]", "taint", "df-generated"]
+ - ["", "", True, "nghttp2_submit_window_update", "(nghttp2_session *,uint8_t,int32_t,int32_t)", "", "Argument[3]", "Argument[*0]", "taint", "df-generated"]
+ - ["", "", True, "sfparse_base64decode", "(sfparse_vec *,const sfparse_vec *)", "", "Argument[*0].Field[*base]", "Argument[*0].Field[*len]", "taint", "dfc-generated"]
+ - ["", "", True, "sfparse_parser_dict", "(sfparse_parser *,sfparse_vec *,sfparse_value *)", "", "Argument[*1].Field[*base]", "Argument[*1].Field[*len]", "taint", "dfc-generated"]
+ - ["", "", True, "sfparse_parser_init", "(sfparse_parser *,const uint8_t *,size_t)", "", "Argument[*0].Field[**end]", "Argument[*0].Field[**pos]", "value", "dfc-generated"]
+ - ["", "", True, "sfparse_parser_init", "(sfparse_parser *,const uint8_t *,size_t)", "", "Argument[*0].Field[*end]", "Argument[*0].Field[*pos]", "value", "dfc-generated"]
+ - ["", "", True, "sfparse_parser_init", "(sfparse_parser *,const uint8_t *,size_t)", "", "Argument[*1]", "Argument[*0].Field[**end]", "value", "dfc-generated"]
+ - ["", "", True, "sfparse_parser_init", "(sfparse_parser *,const uint8_t *,size_t)", "", "Argument[*1]", "Argument[*0].Field[**pos]", "value", "dfc-generated"]
+ - ["", "", True, "sfparse_parser_init", "(sfparse_parser *,const uint8_t *,size_t)", "", "Argument[1]", "Argument[*0].Field[**end]", "taint", "dfc-generated"]
+ - ["", "", True, "sfparse_parser_init", "(sfparse_parser *,const uint8_t *,size_t)", "", "Argument[1]", "Argument[*0].Field[*end]", "taint", "dfc-generated"]
+ - ["", "", True, "sfparse_parser_init", "(sfparse_parser *,const uint8_t *,size_t)", "", "Argument[1]", "Argument[*0].Field[*pos]", "value", "dfc-generated"]
+ - ["", "", True, "sfparse_parser_init", "(sfparse_parser *,const uint8_t *,size_t)", "", "Argument[2]", "Argument[*0].Field[**end]", "taint", "dfc-generated"]
+ - ["", "", True, "sfparse_parser_init", "(sfparse_parser *,const uint8_t *,size_t)", "", "Argument[2]", "Argument[*0].Field[*end]", "taint", "dfc-generated"]
+ - ["", "", True, "sfparse_parser_inner_list", "(sfparse_parser *,sfparse_value *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"]
+ - ["", "", True, "sfparse_parser_item", "(sfparse_parser *,sfparse_value *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"]
+ - ["", "", True, "sfparse_parser_list", "(sfparse_parser *,sfparse_value *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"]
+ - ["", "", True, "sfparse_parser_param", "(sfparse_parser *,sfparse_vec *,sfparse_value *)", "", "Argument[*1].Field[*base]", "Argument[*1].Field[*len]", "taint", "dfc-generated"]
+ - ["", "", True, "sfparse_pctdecode", "(sfparse_vec *,const sfparse_vec *)", "", "Argument[*0].Field[*base]", "Argument[*0].Field[*len]", "taint", "dfc-generated"]
+ - ["", "", True, "sfparse_unescape", "(sfparse_vec *,const sfparse_vec *)", "", "Argument[*0].Field[*base]", "Argument[*0].Field[*len]", "taint", "dfc-generated"]
diff --git a/cpp/ql/lib/ext/generated/zlib/zlib.model.yml b/cpp/ql/lib/ext/generated/zlib/zlib.model.yml
new file mode 100644
index 000000000000..431341c483e8
--- /dev/null
+++ b/cpp/ql/lib/ext/generated/zlib/zlib.model.yml
@@ -0,0 +1,168 @@
+# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT.
+extensions:
+ - addsTo:
+ pack: codeql/cpp-all
+ extensible: summaryModel
+ data:
+ - ["", "", True, "_tr_flush_block", "(deflate_state *,charf *,ulg,int)", "", "Argument[*1]", "Argument[*0].Field[**pending_buf]", "value", "dfc-generated"]
+ - ["", "", True, "_tr_flush_block", "(deflate_state *,charf *,ulg,int)", "", "Argument[1]", "Argument[*0].Field[**pending_buf]", "taint", "dfc-generated"]
+ - ["", "", True, "_tr_flush_block", "(deflate_state *,charf *,ulg,int)", "", "Argument[2]", "Argument[*0].Field[**pending_buf]", "taint", "dfc-generated"]
+ - ["", "", True, "_tr_flush_block", "(deflate_state *,charf *,ulg,int)", "", "Argument[2]", "Argument[*0].Field[*pending]", "taint", "dfc-generated"]
+ - ["", "", True, "_tr_flush_block", "(deflate_state *,charf *,ulg,int)", "", "Argument[3]", "Argument[*0].Field[**pending_buf]", "taint", "dfc-generated"]
+ - ["", "", True, "_tr_flush_block", "(deflate_state *,charf *,ulg,int)", "", "Argument[3]", "Argument[*0].Field[*bi_buf]", "taint", "dfc-generated"]
+ - ["", "", True, "_tr_stored_block", "(deflate_state *,charf *,ulg,int)", "", "Argument[*1]", "Argument[*0].Field[**pending_buf]", "value", "dfc-generated"]
+ - ["", "", True, "_tr_stored_block", "(deflate_state *,charf *,ulg,int)", "", "Argument[1]", "Argument[*0].Field[**pending_buf]", "taint", "dfc-generated"]
+ - ["", "", True, "_tr_stored_block", "(deflate_state *,charf *,ulg,int)", "", "Argument[2]", "Argument[*0].Field[**pending_buf]", "taint", "dfc-generated"]
+ - ["", "", True, "_tr_stored_block", "(deflate_state *,charf *,ulg,int)", "", "Argument[2]", "Argument[*0].Field[*pending]", "taint", "dfc-generated"]
+ - ["", "", True, "_tr_stored_block", "(deflate_state *,charf *,ulg,int)", "", "Argument[3]", "Argument[*0].Field[**pending_buf]", "taint", "dfc-generated"]
+ - ["", "", True, "_tr_stored_block", "(deflate_state *,charf *,ulg,int)", "", "Argument[3]", "Argument[*0].Field[*bi_buf]", "taint", "dfc-generated"]
+ - ["", "", True, "_tr_tally", "(deflate_state *,unsigned int,unsigned int)", "", "Argument[1]", "Argument[*0].Field[**sym_buf]", "value", "dfc-generated"]
+ - ["", "", True, "_tr_tally", "(deflate_state *,unsigned int,unsigned int)", "", "Argument[2]", "Argument[*0].Field[**sym_buf]", "value", "dfc-generated"]
+ - ["", "", True, "adler32", "(uLong,const Bytef *,uInt)", "", "Argument[*1]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "adler32", "(uLong,const Bytef *,uInt)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "adler32", "(uLong,const Bytef *,uInt)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "adler32_combine64", "(uLong,uLong,off64_t)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "adler32_combine64", "(uLong,uLong,off64_t)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "adler32_combine64", "(uLong,uLong,off64_t)", "", "Argument[2]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "adler32_combine", "(uLong,uLong,off_t)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "adler32_combine", "(uLong,uLong,off_t)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "adler32_combine", "(uLong,uLong,off_t)", "", "Argument[2]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "adler32_z", "(uLong,const Bytef *,z_size_t)", "", "Argument[*1]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "adler32_z", "(uLong,const Bytef *,z_size_t)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "adler32_z", "(uLong,const Bytef *,z_size_t)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "compress2", "(Bytef *,uLongf *,const Bytef *,uLong,int)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "compress", "(Bytef *,uLongf *,const Bytef *,uLong)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "compressBound", "(uLong)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "crc32", "(uLong,unsigned long,const Bytef *,const unsigned char *,uInt)", "", "Argument[*1]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "crc32", "(uLong,unsigned long,const Bytef *,const unsigned char *,uInt)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "crc32", "(uLong,unsigned long,const Bytef *,const unsigned char *,uInt)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "crc32_combine64", "(uLong,uLong,off64_t)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "crc32_combine64", "(uLong,uLong,off64_t)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "crc32_combine", "(uLong,uLong,off_t)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "crc32_combine", "(uLong,uLong,off_t)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "crc32_combine_op", "(uLong,uLong,uLong)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "crc32_combine_op", "(uLong,uLong,uLong)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "crc32_z", "(uLong,unsigned long,const Bytef *,const unsigned char *,z_size_t)", "", "Argument[*1]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "crc32_z", "(uLong,unsigned long,const Bytef *,const unsigned char *,z_size_t)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "crc32_z", "(uLong,unsigned long,const Bytef *,const unsigned char *,z_size_t)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "deflateBound", "(z_streamp,uLong)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "deflateCopy", "(z_streamp,z_streamp)", "", "Argument[*1]", "Argument[*0]", "value", "dfc-generated"]
+ - ["", "", True, "deflateCopy", "(z_streamp,z_streamp)", "", "Argument[1]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "deflateGetDictionary", "(z_streamp,Bytef *,uInt *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"]
+ - ["", "", True, "deflateGetDictionary", "(z_streamp,Bytef *,uInt *)", "", "Argument[*0]", "Argument[*2]", "taint", "df-generated"]
+ - ["", "", True, "deflatePending", "(z_streamp,unsigned int *,int *)", "", "Argument[*0].Field[**state].Field[*bi_valid]", "Argument[*2]", "value", "dfc-generated"]
+ - ["", "", True, "deflatePending", "(z_streamp,unsigned int *,int *)", "", "Argument[*0].Field[**state].Field[*pending]", "Argument[*1]", "value", "dfc-generated"]
+ - ["", "", True, "deflateResetKeep", "(z_streamp)", "", "Argument[*0].Field[*total_out]", "Argument[*0].Field[*total_in]", "value", "dfc-generated"]
+ - ["", "", True, "deflateSetDictionary", "(z_streamp,const Bytef *,uInt)", "", "Argument[*1]", "Argument[*0].Field[**next_in]", "value", "dfc-generated"]
+ - ["", "", True, "deflateSetDictionary", "(z_streamp,const Bytef *,uInt)", "", "Argument[*1]", "Argument[*0].Field[*adler]", "taint", "dfc-generated"]
+ - ["", "", True, "deflateSetDictionary", "(z_streamp,const Bytef *,uInt)", "", "Argument[1]", "Argument[*0].Field[**next_in]", "taint", "dfc-generated"]
+ - ["", "", True, "deflateSetDictionary", "(z_streamp,const Bytef *,uInt)", "", "Argument[1]", "Argument[*0].Field[*adler]", "taint", "dfc-generated"]
+ - ["", "", True, "deflateSetDictionary", "(z_streamp,const Bytef *,uInt)", "", "Argument[1]", "Argument[*0].Field[*next_in]", "value", "dfc-generated"]
+ - ["", "", True, "deflateSetDictionary", "(z_streamp,const Bytef *,uInt)", "", "Argument[2]", "Argument[*0].Field[**next_in]", "taint", "dfc-generated"]
+ - ["", "", True, "deflateSetDictionary", "(z_streamp,const Bytef *,uInt)", "", "Argument[2]", "Argument[*0].Field[*avail_in]", "value", "dfc-generated"]
+ - ["", "", True, "deflateSetDictionary", "(z_streamp,const Bytef *,uInt)", "", "Argument[2]", "Argument[*0].Field[*next_in]", "taint", "dfc-generated"]
+ - ["", "", True, "deflateSetHeader", "(z_streamp,gz_headerp)", "", "Argument[*1]", "Argument[*0].Field[**state].Field[**gzhead]", "value", "dfc-generated"]
+ - ["", "", True, "deflateSetHeader", "(z_streamp,gz_headerp)", "", "Argument[1]", "Argument[*0].Field[**state].Field[*gzhead]", "value", "dfc-generated"]
+ - ["", "", True, "deflateUsed", "(z_streamp,int *)", "", "Argument[*0].Field[**state].Field[*bi_used]", "Argument[*1]", "value", "dfc-generated"]
+ - ["", "", True, "gz_error", "(gz_statep,int,const char *)", "", "Argument[*0].Field[**path]", "Argument[*0].Field[**msg]", "taint", "dfc-generated"]
+ - ["", "", True, "gz_error", "(gz_statep,int,const char *)", "", "Argument[*0].Field[*path]", "Argument[*0].Field[**msg]", "taint", "dfc-generated"]
+ - ["", "", True, "gz_error", "(gz_statep,int,const char *)", "", "Argument[*2]", "Argument[*0].Field[**msg]", "taint", "dfc-generated"]
+ - ["", "", True, "gz_error", "(gz_statep,int,const char *)", "", "Argument[1]", "Argument[*0].Field[*err]", "value", "dfc-generated"]
+ - ["", "", True, "gz_error", "(gz_statep,int,const char *)", "", "Argument[2]", "Argument[*0].Field[**msg]", "taint", "dfc-generated"]
+ - ["", "", True, "gzbuffer", "(gzFile,unsigned int)", "", "Argument[1]", "Argument[*0].Field[*want]", "value", "dfc-generated"]
+ - ["", "", True, "gzclearerr", "(gzFile)", "", "Argument[*0].Field[**path]", "Argument[*0].Field[**msg]", "taint", "dfc-generated"]
+ - ["", "", True, "gzclearerr", "(gzFile)", "", "Argument[*0].Field[*path]", "Argument[*0].Field[**msg]", "taint", "dfc-generated"]
+ - ["", "", True, "gzclose", "(gzFile)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "gzclose_w", "(gzFile)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "gzdirect", "(gzFile)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "gzdopen", "(int,const char *)", "", "Argument[*1]", "ReturnValue[*].Field[*level]", "taint", "dfc-generated"]
+ - ["", "", True, "gzdopen", "(int,const char *)", "", "Argument[0]", "ReturnValue[*].Field[**msg]", "taint", "dfc-generated"]
+ - ["", "", True, "gzdopen", "(int,const char *)", "", "Argument[0]", "ReturnValue[*].Field[**path]", "taint", "dfc-generated"]
+ - ["", "", True, "gzdopen", "(int,const char *)", "", "Argument[0]", "ReturnValue[*].Field[*fd]", "value", "dfc-generated"]
+ - ["", "", True, "gzdopen", "(int,const char *)", "", "Argument[1]", "ReturnValue[*].Field[*level]", "taint", "dfc-generated"]
+ - ["", "", True, "gzeof", "(gzFile)", "", "Argument[*0].Field[*past]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "gzerror", "(gzFile,int *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"]
+ - ["", "", True, "gzerror", "(gzFile,int *)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "gzerror", "(gzFile,int *)", "", "Argument[*0]", "ReturnValue[*]", "taint", "df-generated"]
+ - ["", "", True, "gzflush", "(gzFile,int)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "gzfread", "(voidp,z_size_t,z_size_t,gzFile)", "", "Argument[*0]", "Argument[*3].Field[*strm].Field[**next_out]", "value", "dfc-generated"]
+ - ["", "", True, "gzfread", "(voidp,z_size_t,z_size_t,gzFile)", "", "Argument[0]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "gzfread", "(voidp,z_size_t,z_size_t,gzFile)", "", "Argument[0]", "Argument[*3].Field[*strm].Field[**next_out]", "taint", "dfc-generated"]
+ - ["", "", True, "gzfread", "(voidp,z_size_t,z_size_t,gzFile)", "", "Argument[0]", "Argument[*3].Field[*strm].Field[*next_out]", "value", "dfc-generated"]
+ - ["", "", True, "gzfwrite", "(voidpc,z_size_t,z_size_t,gzFile)", "", "Argument[**0]", "Argument[*3].Field[**in]", "value", "dfc-generated"]
+ - ["", "", True, "gzfwrite", "(voidpc,z_size_t,z_size_t,gzFile)", "", "Argument[**0]", "Argument[*3].Field[*strm].Field[**next_in]", "value", "dfc-generated"]
+ - ["", "", True, "gzfwrite", "(voidpc,z_size_t,z_size_t,gzFile)", "", "Argument[*0]", "Argument[**0]", "value", "dfc-generated"]
+ - ["", "", True, "gzfwrite", "(voidpc,z_size_t,z_size_t,gzFile)", "", "Argument[*0]", "Argument[*3].Field[**in]", "value", "dfc-generated"]
+ - ["", "", True, "gzfwrite", "(voidpc,z_size_t,z_size_t,gzFile)", "", "Argument[*0]", "Argument[*3].Field[*strm].Field[**next_in]", "value", "dfc-generated"]
+ - ["", "", True, "gzgetc", "(gzFile)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "gzgetc_", "(gzFile)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "gzgets", "(gzFile,char *,int)", "", "Argument[*1]", "ReturnValue[*]", "value", "dfc-generated"]
+ - ["", "", True, "gzgets", "(gzFile,char *,int)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "gzgets", "(gzFile,char *,int)", "", "Argument[1]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "gzoffset64", "(gzFile)", "", "Argument[*0].Field[*strm].Field[*avail_in]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "gzoffset", "(gzFile)", "", "Argument[*0].Field[*strm].Field[*avail_in]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "gzopen64", "(const char *,const char *)", "", "Argument[*0]", "ReturnValue[*].Field[**msg]", "taint", "dfc-generated"]
+ - ["", "", True, "gzopen64", "(const char *,const char *)", "", "Argument[*0]", "ReturnValue[*].Field[**path]", "taint", "dfc-generated"]
+ - ["", "", True, "gzopen64", "(const char *,const char *)", "", "Argument[*1]", "ReturnValue[*].Field[*level]", "taint", "dfc-generated"]
+ - ["", "", True, "gzopen64", "(const char *,const char *)", "", "Argument[0]", "ReturnValue[*].Field[**msg]", "taint", "dfc-generated"]
+ - ["", "", True, "gzopen64", "(const char *,const char *)", "", "Argument[0]", "ReturnValue[*].Field[**path]", "taint", "dfc-generated"]
+ - ["", "", True, "gzopen64", "(const char *,const char *)", "", "Argument[1]", "ReturnValue[*].Field[*level]", "taint", "dfc-generated"]
+ - ["", "", True, "gzopen", "(const char *,const char *)", "", "Argument[*0]", "ReturnValue[*].Field[**msg]", "taint", "dfc-generated"]
+ - ["", "", True, "gzopen", "(const char *,const char *)", "", "Argument[*0]", "ReturnValue[*].Field[**path]", "taint", "dfc-generated"]
+ - ["", "", True, "gzopen", "(const char *,const char *)", "", "Argument[*1]", "ReturnValue[*].Field[*level]", "taint", "dfc-generated"]
+ - ["", "", True, "gzopen", "(const char *,const char *)", "", "Argument[0]", "ReturnValue[*].Field[**msg]", "taint", "dfc-generated"]
+ - ["", "", True, "gzopen", "(const char *,const char *)", "", "Argument[0]", "ReturnValue[*].Field[**path]", "taint", "dfc-generated"]
+ - ["", "", True, "gzopen", "(const char *,const char *)", "", "Argument[1]", "ReturnValue[*].Field[*level]", "taint", "dfc-generated"]
+ - ["", "", True, "gzputc", "(gzFile,int)", "", "Argument[1]", "Argument[*0].Field[**in]", "value", "dfc-generated"]
+ - ["", "", True, "gzputc", "(gzFile,int)", "", "Argument[1]", "Argument[*0].Field[*strm].Field[**next_in]", "value", "dfc-generated"]
+ - ["", "", True, "gzputc", "(gzFile,int)", "", "Argument[1]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "gzputs", "(gzFile,const char *)", "", "Argument[*1]", "Argument[*0].Field[**in]", "value", "dfc-generated"]
+ - ["", "", True, "gzputs", "(gzFile,const char *)", "", "Argument[*1]", "Argument[*0].Field[*strm].Field[**next_in]", "value", "dfc-generated"]
+ - ["", "", True, "gzputs", "(gzFile,const char *)", "", "Argument[1]", "Argument[*0].Field[**in]", "taint", "dfc-generated"]
+ - ["", "", True, "gzputs", "(gzFile,const char *)", "", "Argument[1]", "Argument[*0].Field[*strm].Field[**next_in]", "taint", "dfc-generated"]
+ - ["", "", True, "gzputs", "(gzFile,const char *)", "", "Argument[1]", "Argument[*0].Field[*strm].Field[*next_in]", "value", "dfc-generated"]
+ - ["", "", True, "gzread", "(gzFile,voidp,unsigned int)", "", "Argument[*1]", "Argument[*0].Field[*strm].Field[**next_out]", "value", "dfc-generated"]
+ - ["", "", True, "gzread", "(gzFile,voidp,unsigned int)", "", "Argument[1]", "Argument[*0].Field[*strm].Field[**next_out]", "taint", "dfc-generated"]
+ - ["", "", True, "gzread", "(gzFile,voidp,unsigned int)", "", "Argument[1]", "Argument[*0].Field[*strm].Field[*next_out]", "value", "dfc-generated"]
+ - ["", "", True, "gzread", "(gzFile,voidp,unsigned int)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "gzrewind", "(gzFile)", "", "Argument[*0].Field[**path]", "Argument[*0].Field[**msg]", "taint", "dfc-generated"]
+ - ["", "", True, "gzrewind", "(gzFile)", "", "Argument[*0].Field[*path]", "Argument[*0].Field[**msg]", "taint", "dfc-generated"]
+ - ["", "", True, "gzseek64", "(gzFile,off64_t,int)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "gzseek64", "(gzFile,off64_t,int)", "", "Argument[1]", "Argument[*0]", "taint", "df-generated"]
+ - ["", "", True, "gzseek64", "(gzFile,off64_t,int)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "gzseek", "(gzFile,off_t,int)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "gzseek", "(gzFile,off_t,int)", "", "Argument[1]", "Argument[*0]", "taint", "df-generated"]
+ - ["", "", True, "gzseek", "(gzFile,off_t,int)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "gzsetparams", "(gzFile,int,int)", "", "Argument[1]", "Argument[*0].Field[*level]", "value", "dfc-generated"]
+ - ["", "", True, "gzsetparams", "(gzFile,int,int)", "", "Argument[2]", "Argument[*0].Field[*strategy]", "value", "dfc-generated"]
+ - ["", "", True, "gztell64", "(gzFile)", "", "Argument[*0].Field[*skip]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "gztell64", "(gzFile)", "", "Argument[*0].Field[*x].Field[*pos]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "gztell", "(gzFile)", "", "Argument[*0].Field[*skip]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "gztell", "(gzFile)", "", "Argument[*0].Field[*x].Field[*pos]", "ReturnValue", "taint", "dfc-generated"]
+ - ["", "", True, "gzungetc", "(int,gzFile)", "", "Argument[0]", "Argument[*1].Field[*x].Field[**next]", "value", "dfc-generated"]
+ - ["", "", True, "gzungetc", "(int,gzFile)", "", "Argument[0]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "gzvprintf", "(gzFile,const char *,va_list)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "gzwrite", "(gzFile,voidpc,unsigned int)", "", "Argument[**1]", "Argument[*0].Field[**in]", "value", "dfc-generated"]
+ - ["", "", True, "gzwrite", "(gzFile,voidpc,unsigned int)", "", "Argument[**1]", "Argument[*0].Field[*strm].Field[**next_in]", "value", "dfc-generated"]
+ - ["", "", True, "gzwrite", "(gzFile,voidpc,unsigned int)", "", "Argument[*1]", "Argument[**1]", "value", "dfc-generated"]
+ - ["", "", True, "gzwrite", "(gzFile,voidpc,unsigned int)", "", "Argument[*1]", "Argument[*0].Field[**in]", "value", "dfc-generated"]
+ - ["", "", True, "gzwrite", "(gzFile,voidpc,unsigned int)", "", "Argument[*1]", "Argument[*0].Field[*strm].Field[**next_in]", "value", "dfc-generated"]
+ - ["", "", True, "gzwrite", "(gzFile,voidpc,unsigned int)", "", "Argument[2]", "ReturnValue", "value", "df-generated"]
+ - ["", "", True, "inflateCodesUsed", "(z_streamp)", "", "Argument[*0].Field[**state].Field[*next]", "ReturnValue", "value", "dfc-generated"]
+ - ["", "", True, "inflateCopy", "(z_streamp,z_streamp)", "", "Argument[*1]", "Argument[*0]", "value", "df-generated"]
+ - ["", "", True, "inflateCopy", "(z_streamp,z_streamp)", "", "Argument[0]", "Argument[*0].Field[**state].Field[*strm]", "value", "dfc-generated"]
+ - ["", "", True, "inflateCopy", "(z_streamp,z_streamp)", "", "Argument[1]", "Argument[*0].Field[**state].Field[**strm]", "taint", "dfc-generated"]
+ - ["", "", True, "inflateCopy", "(z_streamp,z_streamp)", "", "Argument[1]", "Argument[*0]", "taint", "dfc-generated"]
+ - ["", "", True, "inflateGetDictionary", "(z_streamp,Bytef *,uInt *)", "", "Argument[*0]", "Argument[*1]", "taint", "df-generated"]
+ - ["", "", True, "inflateGetDictionary", "(z_streamp,Bytef *,uInt *)", "", "Argument[*0]", "Argument[*2]", "taint", "df-generated"]
+ - ["", "", True, "inflateMark", "(z_streamp)", "", "Argument[*0]", "ReturnValue", "taint", "df-generated"]
+ - ["", "", True, "inflate_fast", "(z_streamp,unsigned int)", "", "Argument[1]", "Argument[*0].Field[**next_out]", "taint", "dfc-generated"]
+ - ["", "", True, "inflate_table", "(codetype,unsigned short *,unsigned int,code **,unsigned int *,unsigned short *)", "", "Argument[*3]", "Argument[**3].Field[*val]", "taint", "dfc-generated"]
+ - ["", "", True, "inflate_table", "(codetype,unsigned short *,unsigned int,code **,unsigned int *,unsigned short *)", "", "Argument[*3]", "Argument[**3]", "taint", "dfc-generated"]
+ - ["", "", True, "inflate_table", "(codetype,unsigned short *,unsigned int,code **,unsigned int *,unsigned short *)", "", "Argument[3]", "Argument[**3].Field[*val]", "taint", "dfc-generated"]
+ - ["", "", True, "inflate_table", "(codetype,unsigned short *,unsigned int,code **,unsigned int *,unsigned short *)", "", "Argument[3]", "Argument[**3]", "taint", "dfc-generated"]
+ - ["", "", True, "inflate_table", "(codetype,unsigned short *,unsigned int,code **,unsigned int *,unsigned short *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"]
+ - ["", "", True, "uncompress2", "(Bytef *,uLongf *,const Bytef *,uLong *)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "uncompress2", "(Bytef *,uLongf *,const Bytef *,uLong *)", "", "Argument[3]", "Argument[*3]", "taint", "dfc-generated"]
+ - ["", "", True, "uncompress", "(Bytef *,uLongf *,const Bytef *,uLong)", "", "Argument[1]", "Argument[*1]", "taint", "dfc-generated"]
+ - ["", "", True, "zError", "(int)", "", "Argument[0]", "ReturnValue", "taint", "dfc-generated"]
diff --git a/cpp/ql/lib/qlpack.yml b/cpp/ql/lib/qlpack.yml
index 5d1966180cc4..c0dd5d2ae2a5 100644
--- a/cpp/ql/lib/qlpack.yml
+++ b/cpp/ql/lib/qlpack.yml
@@ -1,5 +1,5 @@
name: codeql/cpp-all
-version: 5.1.0
+version: 5.1.1-dev
groups: cpp
dbscheme: semmlecode.cpp.dbscheme
extractor: cpp
diff --git a/cpp/ql/lib/semmle/code/cpp/Type.qll b/cpp/ql/lib/semmle/code/cpp/Type.qll
index aa3fa54835cd..fef978b198d6 100644
--- a/cpp/ql/lib/semmle/code/cpp/Type.qll
+++ b/cpp/ql/lib/semmle/code/cpp/Type.qll
@@ -839,6 +839,9 @@ private predicate floatingPointTypeMapping(
or
// _Complex _Float128
kind = 61 and base = 2 and domain = TComplexDomain() and realKind = 49 and extended = false
+ or
+ // __mfp8
+ kind = 62 and base = 2 and domain = TRealDomain() and realKind = 62 and extended = false
}
/**
diff --git a/cpp/ql/lib/semmle/code/cpp/exprs/Lambda.qll b/cpp/ql/lib/semmle/code/cpp/exprs/Lambda.qll
index 313875d1325d..d1836f0ff4dd 100644
--- a/cpp/ql/lib/semmle/code/cpp/exprs/Lambda.qll
+++ b/cpp/ql/lib/semmle/code/cpp/exprs/Lambda.qll
@@ -41,12 +41,17 @@ class LambdaExpression extends Expr, @lambdaexpr {
* - "&" if capture-by-reference is the default for implicit captures.
* - "=" if capture-by-value is the default for implicit captures.
*/
- string getDefaultCaptureMode() { lambdas(underlyingElement(this), result, _) }
+ string getDefaultCaptureMode() { lambdas(underlyingElement(this), result, _, _) }
/**
* Holds if the return type (of the call operator of the resulting object) was explicitly specified.
*/
- predicate returnTypeIsExplicit() { lambdas(underlyingElement(this), _, true) }
+ predicate returnTypeIsExplicit() { lambdas(underlyingElement(this), _, true, _) }
+
+ /**
+ * Holds if the lambda has an explicitly specified parameter list, even when empty.
+ */
+ predicate hasParameterList() { lambdas(underlyingElement(this), _, _, true) }
/**
* Gets the function which will be invoked when the resulting object is called.
diff --git a/cpp/ql/lib/semmle/code/cpp/stmts/Stmt.qll b/cpp/ql/lib/semmle/code/cpp/stmts/Stmt.qll
index aa6a585ea4b3..5305c8ca58f6 100644
--- a/cpp/ql/lib/semmle/code/cpp/stmts/Stmt.qll
+++ b/cpp/ql/lib/semmle/code/cpp/stmts/Stmt.qll
@@ -841,6 +841,41 @@ private Stmt getEnclosingBreakable(Stmt s) {
else result = getEnclosingBreakable(s.getParent().getEnclosingStmt())
}
+/**
+ * A Microsoft C/C++ `__leave` statement.
+ *
+ * For example, the `__leave` statement in the following code:
+ * ```
+ * __try {
+ * if (err) __leave;
+ * ...
+ * }
+ * __finally {
+ *
+ * }
+ * ```
+ */
+class LeaveStmt extends JumpStmt, @stmt_leave {
+ override string getAPrimaryQlClass() { result = "LeaveStmt" }
+
+ override string toString() { result = "__leave;" }
+
+ override predicate mayBeImpure() { none() }
+
+ override predicate mayBeGloballyImpure() { none() }
+
+ /**
+ * Gets the `__try` statement that this `__leave` exits.
+ */
+ MicrosoftTryStmt getEnclosingTry() { result = getEnclosingTry(this) }
+}
+
+private MicrosoftTryStmt getEnclosingTry(Stmt s) {
+ if s.getParent().getEnclosingStmt() instanceof MicrosoftTryStmt
+ then result = s.getParent().getEnclosingStmt()
+ else result = getEnclosingTry(s.getParent().getEnclosingStmt())
+}
+
/**
* A C/C++ 'label' statement.
*
diff --git a/cpp/ql/lib/semmlecode.cpp.dbscheme b/cpp/ql/lib/semmlecode.cpp.dbscheme
index 9a7c3c14c107..a8c2176e9a5c 100644
--- a/cpp/ql/lib/semmlecode.cpp.dbscheme
+++ b/cpp/ql/lib/semmlecode.cpp.dbscheme
@@ -691,6 +691,7 @@ case @builtintype.kind of
| 59 = @complex_std_float64 // _Complex _Float64
| 60 = @complex_float64x // _Complex _Float64x
| 61 = @complex_std_float128 // _Complex _Float128
+| 62 = @mfp8 // __mfp8
;
builtintypes(
@@ -2138,7 +2139,8 @@ code_block(
lambdas(
unique int expr: @lambdaexpr ref,
string default_capture: string ref,
- boolean has_explicit_return_type: boolean ref
+ boolean has_explicit_return_type: boolean ref,
+ boolean has_explicit_parameter_list: boolean ref
);
lambda_capture(
@@ -2211,6 +2213,7 @@ case @stmt.kind of
| 37 = @stmt_co_return
| 38 = @stmt_consteval_if
| 39 = @stmt_not_consteval_if
+| 40 = @stmt_leave
;
type_vla(
@@ -2347,7 +2350,7 @@ blockscope(
int enclosing: @parameterized_element ref
);
-@jump = @stmt_goto | @stmt_break | @stmt_continue;
+@jump = @stmt_goto | @stmt_break | @stmt_continue | @stmt_leave;
@jumporlabel = @jump | @stmt_label | @literal;
diff --git a/cpp/ql/lib/semmlecode.cpp.dbscheme.stats b/cpp/ql/lib/semmlecode.cpp.dbscheme.stats
index bca58ed2f5b1..089d69c641cc 100644
--- a/cpp/ql/lib/semmlecode.cpp.dbscheme.stats
+++ b/cpp/ql/lib/semmlecode.cpp.dbscheme.stats
@@ -2,7 +2,7 @@
@compilation
- 16142
+ 15785
@externalDataElement
@@ -18,15 +18,15 @@
@location_default
- 36226754
+ 36090723
@location_stmt
- 5202209
+ 5203175
@location_expr
- 17956521
+ 17959858
@diagnostic
@@ -34,47 +34,47 @@
@file
- 83260
+ 81417
@folder
- 15818
+ 15468
@macro_expansion
- 40121869
+ 39234203
@other_macro_reference
- 312756
+ 312446
@function
- 4015439
+ 4000085
@fun_decl
- 4154519
+ 4138135
@var_decl
- 9247204
+ 9237636
@type_decl
- 1882105
+ 1840533
@namespace_decl
- 430914
+ 429821
@using_declaration
- 341862
+ 334532
@using_directive
- 8125
+ 8117
@using_enum_declaration
@@ -82,283 +82,287 @@
@static_assert
- 183493
+ 183028
@parameter
- 6965639
+ 6939004
@membervariable
- 1489139
+ 1489415
@globalvariable
- 466518
+ 486788
@localvariable
- 734804
+ 727548
@enumconstant
- 343781
+ 343845
@errortype
- 125
+ 124
@unknowntype
- 125
+ 124
@void
- 125
+ 124
@boolean
- 125
+ 124
@char
- 125
+ 124
@unsigned_char
- 125
+ 124
@signed_char
- 125
+ 124
@short
- 125
+ 124
@unsigned_short
- 125
+ 124
@signed_short
- 125
+ 124
@int
- 125
+ 124
@unsigned_int
- 125
+ 124
@signed_int
- 125
+ 124
@long
- 125
+ 124
@unsigned_long
- 125
+ 124
@signed_long
- 125
+ 124
@long_long
- 125
+ 124
@unsigned_long_long
- 125
+ 124
@signed_long_long
- 125
+ 124
@float
- 125
+ 124
@double
- 125
+ 124
@long_double
- 125
+ 124
@complex_float
- 125
+ 124
@complex_double
- 125
+ 124
@complex_long_double
- 125
+ 124
@imaginary_float
- 125
+ 124
@imaginary_double
- 125
+ 124
@imaginary_long_double
- 125
+ 124
@wchar_t
- 125
+ 124
@decltype_nullptr
- 125
+ 124
@int128
- 125
+ 124
@unsigned_int128
- 125
+ 124
@signed_int128
- 125
+ 124
@float128
- 125
+ 124
@complex_float128
- 125
+ 124
@decimal32
- 125
+ 124
@decimal64
- 125
+ 124
@decimal128
- 125
+ 124
@char16_t
- 125
+ 124
@char32_t
- 125
+ 124
@std_float32
- 125
+ 124
@float32x
- 125
+ 124
@std_float64
- 125
+ 124
@float64x
- 125
+ 124
@std_float128
- 125
+ 124
@char8_t
- 125
+ 124
@float16
- 125
+ 124
@complex_float16
- 125
+ 124
@fp16
- 125
+ 124
@std_bfloat16
- 125
+ 124
@std_float16
- 125
+ 124
@complex_std_float32
- 125
+ 124
@complex_float32x
- 125
+ 124
@complex_std_float64
- 125
+ 124
@complex_float64x
- 125
+ 124
@complex_std_float128
- 125
+ 124
+
+
+ @mfp8
+ 124
@pointer
- 470652
+ 470186
@type_with_specifiers
- 696526
+ 693863
@array
- 98431
+ 98055
@routineptr
- 858764
+ 857913
@reference
- 970559
+ 966848
@gnu_vector
- 863
+ 843
@routinereference
- 470
+ 469
@rvalue_reference
- 291793
+ 290677
@block
@@ -366,7 +370,7 @@
@decltype
- 102057
+ 102076
@type_operator
@@ -374,15 +378,15 @@
@usertype
- 4962767
+ 4863363
@mangledname
- 6329773
+ 6313668
@type_mention
- 5812069
+ 5813149
@concept_template
@@ -390,15 +394,15 @@
@routinetype
- 758603
+ 757852
@ptrtomember
- 12029
+ 12026
@specifier
- 7754
+ 7724
@gnuattribute
@@ -406,11 +410,11 @@
@stdattribute
- 350577
+ 349236
@declspec
- 328789
+ 328850
@msattribute
@@ -418,19 +422,19 @@
@alignas
- 2192
+ 2171
@attribute_arg_token
- 20955
+ 20935
@attribute_arg_constant_expr
- 88857
+ 86916
@attribute_arg_expr
- 1793
+ 1753
@attribute_arg_empty
@@ -442,39 +446,39 @@
@attribute_arg_type
- 466
+ 461
@derivation
- 597157
+ 598061
@frienddecl
- 879292
+ 878379
@comment
- 11233849
+ 11190894
@namespace
- 11044
+ 10800
@specialnamequalifyingelement
- 125
+ 124
@namequalifier
- 3254040
+ 3255226
@value
- 13436143
+ 13438640
@initialiser
- 2338659
+ 2334426
@address_of
@@ -482,131 +486,131 @@
@indirect
- 403000
+ 403075
@array_to_pointer
- 1948290
+ 1948652
@parexpr
- 4901469
+ 4902380
@arithnegexpr
- 584894
+ 585003
@unaryplusexpr
- 4122
+ 4081
@complementexpr
- 38090
+ 38098
@notexpr
- 357805
+ 357277
@postincrexpr
- 84356
+ 84372
@postdecrexpr
- 57234
+ 57244
@preincrexpr
- 96438
+ 96455
@predecrexpr
- 35718
+ 35725
@conditionalexpr
- 895370
+ 895536
@addexpr
- 569921
+ 570027
@subexpr
- 465494
+ 465581
@mulexpr
- 434549
+ 434630
@divexpr
- 60159
+ 58999
@remexpr
- 20100
+ 20080
@paddexpr
- 118331
+ 118353
@psubexpr
- 67843
+ 67856
@pdiffexpr
- 43900
+ 43732
@lshiftexpr
- 550121
+ 550224
@rshiftexpr
- 199982
+ 200019
@andexpr
- 479844
+ 479933
@orexpr
- 193501
+ 193537
@xorexpr
- 73764
+ 73778
@eqexpr
- 641535
+ 641655
@neexpr
- 410719
+ 410795
@gtexpr
- 110832
+ 110852
@ltexpr
- 139031
+ 139057
@geexpr
- 81151
+ 81166
@leexpr
- 291203
+ 291256
@assignexpr
- 1277487
+ 1277725
@assignaddexpr
@@ -614,23 +618,23 @@
@assignsubexpr
- 15263
+ 15266
@assignmulexpr
- 14065
+ 13754
@assigndivexpr
- 6789
+ 6791
@assignremexpr
- 875
+ 872
@assignlshiftexpr
- 3693
+ 3694
@assignrshiftexpr
@@ -638,19 +642,19 @@
@assignandexpr
- 6509
+ 6510
@assignorexpr
- 19550
+ 19554
@assignxorexpr
- 29824
+ 29829
@assignpaddexpr
- 18574
+ 18578
@assignpsubexpr
@@ -658,31 +662,31 @@
@andlogicalexpr
- 345599
+ 345664
@orlogicalexpr
- 1100373
+ 1100577
@commaexpr
- 169097
+ 168450
@subscriptexpr
- 433900
+ 433981
@callexpr
- 300995
+ 300697
@vastartexpr
- 5084
+ 5071
@vaargexpr
- 1299
+ 1300
@vaendexpr
@@ -690,43 +694,43 @@
@vacopyexpr
- 171
+ 170
@varaccess
- 8231069
+ 8232599
@runtime_sizeof
- 400899
+ 400974
@runtime_alignof
- 62611
+ 62549
@expr_stmt
- 147941
+ 147968
@routineexpr
- 6134772
+ 6134317
@type_operand
- 1401351
+ 1401612
@offsetofexpr
- 148598
+ 148626
@typescompexpr
- 699930
+ 700060
@literal
- 6101485
+ 6102027
@aggregateliteral
@@ -734,31 +738,31 @@
@c_style_cast
- 6025595
+ 6026988
@temp_init
- 1075277
+ 1073608
@errorexpr
- 57350
+ 57293
@reference_to
- 2184503
+ 2182339
@ref_indirect
- 2645319
+ 2642699
@vacuous_destructor_call
- 9836
+ 9826
@assume
- 4394
+ 4383
@conjugation
@@ -766,11 +770,11 @@
@realpartexpr
- 94
+ 92
@imagpartexpr
- 94
+ 92
@jmulexpr
@@ -810,35 +814,35 @@
@thisaccess
- 1518451
+ 1514601
@new_expr
- 57992
+ 57934
@delete_expr
- 14412
+ 14398
@throw_expr
- 26141
+ 26079
@condition_decl
- 437622
+ 437589
@braced_init_list
- 2331
+ 2328
@type_id
- 60130
+ 60071
@sizeof_pack
- 2181
+ 2178
@hasassignexpr
@@ -866,7 +870,7 @@
@hastrivialconstr
- 3
+ 7
@hastrivialcopy
@@ -890,23 +894,23 @@
@isclassexpr
- 2538
+ 2531
@isconvtoexpr
- 250
+ 249
@isemptyexpr
- 8880
+ 8846
@isenumexpr
- 2376
+ 2990
@ispodexpr
- 1065
+ 1041
@ispolyexpr
@@ -922,75 +926,75 @@
@hastrivialdestructor
- 555
+ 3503
@uuidof
- 28057
+ 27985
@delete_array_expr
- 1591
+ 1556
@new_array_expr
- 6932
+ 6914
@foldexpr
- 1368
+ 1367
@ctordirectinit
- 141602
+ 141461
@ctorvirtualinit
- 5046
+ 5041
@ctorfieldinit
- 258185
+ 257929
@ctordelegatinginit
- 3627
+ 3613
@dtordirectdestruct
- 49481
+ 49432
@dtorvirtualdestruct
- 5003
+ 4998
@dtorfielddestruct
- 49994
+ 49945
@static_cast
- 389474
+ 387985
@reinterpret_cast
- 41835
+ 41729
@const_cast
- 30706
+ 30676
@dynamic_cast
- 1011
+ 989
@lambdaexpr
- 17748
+ 17730
@param_ref
- 177835
+ 177449
@noopexpr
@@ -998,7 +1002,7 @@
@istriviallyconstructibleexpr
- 2376
+ 3737
@isdestructibleexpr
@@ -1010,19 +1014,19 @@
@istriviallydestructibleexpr
- 1000
+ 996
@istriviallyassignableexpr
- 2376
+ 3737
@isnothrowassignableexpr
- 5127
+ 5108
@istrivialexpr
- 1375
+ 3644
@isstandardlayoutexpr
@@ -1030,7 +1034,7 @@
@istriviallycopyableexpr
- 598
+ 1538
@isliteraltypeexpr
@@ -1050,11 +1054,11 @@
@isconstructibleexpr
- 3627
+ 3613
@isnothrowconstructibleexpr
- 20761
+ 20682
@hasfinalizerexpr
@@ -1090,11 +1094,11 @@
@isfinalexpr
- 11803
+ 11792
@noexceptexpr
- 30854
+ 30678
@builtinshufflevector
@@ -1102,11 +1106,11 @@
@builtinchooseexpr
- 20642
+ 20646
@builtinaddressof
- 16294
+ 16278
@vec_fill
@@ -1146,11 +1150,11 @@
@builtinbitcast
- 250
+ 249
@builtinshuffle
- 782
+ 764
@blockassignexpr
@@ -1266,7 +1270,7 @@
@reuseexpr
- 906491
+ 906424
@istriviallycopyassignable
@@ -1362,11 +1366,11 @@
@c11_generic
- 30031
+ 30036
@requires_expr
- 17661
+ 17660
@nested_requirement
@@ -1374,87 +1378,87 @@
@compound_requirement
- 11720
+ 11719
@concept_id
- 96781
+ 96774
@lambdacapture
- 28523
+ 28450
@stmt_expr
- 2025815
+ 2026191
@stmt_if
- 987388
+ 987571
@stmt_while
- 39534
+ 39542
@stmt_goto
- 151155
+ 151183
@stmt_label
- 72498
+ 72512
@stmt_return
- 1508953
+ 1507458
@stmt_block
- 1846814
+ 1839752
@stmt_end_test_while
- 232974
+ 233017
@stmt_for
- 84148
+ 84163
@stmt_switch_case
- 894840
+ 894774
@stmt_switch
- 440777
+ 440744
@stmt_asm
- 64015
+ 64027
@stmt_decl
- 768980
+ 767031
@stmt_empty
- 459543
+ 459509
@stmt_continue
- 28011
+ 28016
@stmt_break
- 140276
+ 139921
@stmt_try_block
- 28918
+ 28885
@stmt_microsoft_try
- 224
+ 223
@stmt_set_vla_size
@@ -1466,19 +1470,19 @@
@stmt_assigned_goto
- 12391
+ 12393
@stmt_range_based_for
- 7398
+ 7391
@stmt_handler
- 47389
+ 47330
@stmt_constexpr_if
- 103934
+ 103537
@stmt_co_return
@@ -1492,45 +1496,49 @@
@stmt_not_consteval_if
3
+
+ @stmt_leave
+ 3
+
@ppd_if
- 589589
+ 587335
@ppd_ifdef
- 213751
+ 213791
@ppd_ifndef
- 157794
+ 157824
@ppd_elif
- 27982
+ 27363
@ppd_else
- 236511
+ 235606
@ppd_endif
- 886636
+ 883245
@ppd_plain_include
- 406728
+ 397725
@ppd_define
- 2749584
+ 2739070
@ppd_undef
- 101058
+ 100671
@ppd_pragma
- 407234
+ 405677
@ppd_include_next
@@ -1538,11 +1546,11 @@
@ppd_line
- 19055
+ 18866
@ppd_error
- 125
+ 124
@ppd_objc_import
@@ -1566,7 +1574,7 @@
@link_target
- 943
+ 923
@xmldtd
@@ -1596,11 +1604,11 @@
compilations
- 16142
+ 15785
id
- 16142
+ 15785
cwd
@@ -1618,7 +1626,7 @@
1
2
- 16142
+ 15785
@@ -1644,19 +1652,19 @@
compilation_args
- 1292348
+ 1263740
id
- 16142
+ 15785
num
- 1874
+ 1833
arg
- 37368
+ 36541
@@ -1670,77 +1678,77 @@
36
42
- 1281
+ 1252
42
43
- 1402
+ 1371
43
44
- 917
+ 896
44
45
- 647
+ 632
45
51
- 1213
+ 1186
51
70
- 620
+ 606
71
72
- 903
+ 883
72
90
- 1146
+ 1120
94
96
- 498
+ 487
98
99
- 1712
+ 1674
100
102
- 121
+ 118
103
104
- 2548
+ 2492
104
119
- 1362
+ 1331
120
138
- 1186
+ 1160
139
140
- 579
+ 567
@@ -1756,67 +1764,67 @@
34
38
- 755
+ 738
38
39
- 1914
+ 1872
39
40
- 1254
+ 1226
40
42
- 1389
+ 1358
42
53
- 768
+ 751
53
54
- 903
+ 883
54
63
- 1146
+ 1120
64
67
- 512
+ 501
67
68
- 1793
+ 1753
68
70
- 1240
+ 1213
70
71
- 1793
+ 1753
73
79
- 1213
+ 1186
79
89
- 1442
+ 1411
89
@@ -1837,57 +1845,57 @@
43
90
- 80
+ 79
90
108
- 148
+ 145
108
183
- 134
+ 131
198
422
- 148
+ 145
422
595
- 161
+ 158
595
605
- 161
+ 158
605
749
- 148
+ 145
750
778
- 148
+ 145
781
883
- 148
+ 145
930
1190
- 107
+ 105
1197
1198
- 485
+ 474
@@ -1903,67 +1911,67 @@
1
5
- 161
+ 158
5
7
- 148
+ 145
9
12
- 94
+ 92
12
15
- 148
+ 145
15
18
- 121
+ 118
18
22
- 148
+ 145
22
27
- 161
+ 158
27
29
- 107
+ 105
29
34
- 148
+ 145
34
44
- 161
+ 158
45
63
- 148
+ 145
67
94
- 148
+ 145
94
164
- 148
+ 145
171
@@ -1984,22 +1992,22 @@
1
2
- 17113
+ 16734
2
3
- 16196
+ 15837
3
103
- 2805
+ 2742
104
1198
- 1254
+ 1226
@@ -2015,17 +2023,17 @@
1
2
- 24746
+ 24198
2
3
- 11139
+ 10892
3
62
- 1483
+ 1450
@@ -2035,11 +2043,11 @@
compilation_build_mode
- 16142
+ 15785
id
- 16142
+ 15785
mode
@@ -2057,7 +2065,7 @@
1
2
- 16142
+ 15785
@@ -2083,11 +2091,11 @@
compilation_compiling_files
- 16142
+ 15785
id
- 16142
+ 15785
num
@@ -2095,7 +2103,7 @@
file
- 7390
+ 7226
@@ -2109,7 +2117,7 @@
1
2
- 16142
+ 15785
@@ -2125,7 +2133,7 @@
1
2
- 16142
+ 15785
@@ -2173,12 +2181,12 @@
1
2
- 175
+ 171
2
3
- 7187
+ 7028
28
@@ -2199,7 +2207,7 @@
1
2
- 7390
+ 7226
@@ -2209,11 +2217,11 @@
compilation_time
- 64299
+ 62876
id
- 16074
+ 15719
num
@@ -2221,11 +2229,11 @@
kind
- 53
+ 52
seconds
- 17801
+ 17473
@@ -2239,7 +2247,7 @@
1
2
- 16074
+ 15719
@@ -2255,7 +2263,7 @@
4
5
- 16074
+ 15719
@@ -2271,17 +2279,17 @@
2
3
- 107
+ 145
3
4
- 7821
+ 7819
4
5
- 8145
+ 7754
@@ -2327,8 +2335,8 @@
12
- 1320
- 1321
+ 1325
+ 1326
13
@@ -2345,7 +2353,7 @@
1192
1193
- 53
+ 52
@@ -2361,7 +2369,7 @@
1
2
- 53
+ 52
@@ -2385,13 +2393,13 @@
13
- 718
- 719
+ 705
+ 706
13
- 792
- 793
+ 795
+ 796
13
@@ -2408,27 +2416,22 @@
1
2
- 11233
+ 11195
2
3
- 3910
+ 3626
3
4
- 1200
+ 1384
4
- 24
- 1335
-
-
- 24
- 696
- 121
+ 703
+ 1265
@@ -2444,7 +2447,7 @@
1
2
- 17801
+ 17473
@@ -2460,17 +2463,17 @@
1
2
- 14969
+ 14914
2
3
- 2818
+ 2531
3
4
- 13
+ 26
@@ -2480,7 +2483,7 @@
diagnostic_for
- 4444
+ 4443
diagnostic
@@ -2726,19 +2729,19 @@
compilation_finished
- 16142
+ 15785
id
- 16142
+ 15785
cpu_seconds
- 12164
+ 11894
elapsed_seconds
- 256
+ 224
@@ -2752,7 +2755,7 @@
1
2
- 16142
+ 15785
@@ -2768,7 +2771,7 @@
1
2
- 16142
+ 15785
@@ -2784,17 +2787,17 @@
1
2
- 10168
+ 10075
2
3
- 1402
+ 1345
3
- 24
- 593
+ 36
+ 474
@@ -2810,12 +2813,12 @@
1
2
- 11368
+ 10984
2
3
- 795
+ 909
@@ -2828,15 +2831,10 @@
12
-
- 1
- 2
- 40
-
2
3
- 26
+ 52
3
@@ -2844,13 +2842,8 @@
13
- 4
- 5
- 13
-
-
- 6
- 7
+ 5
+ 6
13
@@ -2859,53 +2852,48 @@
13
- 9
- 10
- 13
-
-
- 10
- 11
+ 12
+ 13
13
- 15
- 16
+ 13
+ 14
13
- 18
- 19
- 13
+ 17
+ 18
+ 26
- 32
- 33
+ 30
+ 31
13
- 48
- 49
+ 52
+ 53
13
- 157
- 158
+ 145
+ 146
13
- 249
- 250
+ 261
+ 262
13
- 309
- 310
+ 303
+ 304
13
- 323
- 324
+ 324
+ 325
13
@@ -2919,15 +2907,10 @@
12
-
- 1
- 2
- 40
-
2
3
- 26
+ 52
3
@@ -2935,13 +2918,8 @@
13
- 4
- 5
- 13
-
-
- 6
- 7
+ 5
+ 6
13
@@ -2950,53 +2928,48 @@
13
- 8
- 9
- 13
-
-
- 10
- 11
+ 12
+ 13
13
- 15
- 16
+ 13
+ 14
13
- 18
- 19
- 13
+ 17
+ 18
+ 26
- 32
- 33
+ 30
+ 31
13
- 48
- 49
+ 49
+ 50
13
- 147
- 148
+ 141
+ 142
13
- 170
- 171
+ 174
+ 175
13
- 222
- 223
+ 239
+ 240
13
- 264
- 265
+ 256
+ 257
13
@@ -3223,11 +3196,11 @@
sourceLocationPrefix
- 125
+ 124
prefix
- 125
+ 124
@@ -4721,15 +4694,15 @@
extractor_version
- 125
+ 124
codeql_version
- 125
+ 124
frontend_version
- 125
+ 124
@@ -4743,7 +4716,7 @@
1
2
- 125
+ 124
@@ -4759,7 +4732,7 @@
1
2
- 125
+ 124
@@ -4769,31 +4742,31 @@
locations_default
- 36226754
+ 36090723
id
- 36226754
+ 36090723
container
- 41023
+ 40866
startLine
- 7495820
+ 7467157
startColumn
- 21262
+ 21180
endLine
- 7497821
+ 7469151
endColumn
- 53530
+ 53326
@@ -4807,7 +4780,7 @@
1
2
- 36226754
+ 36090723
@@ -4823,7 +4796,7 @@
1
2
- 36226754
+ 36090723
@@ -4839,7 +4812,7 @@
1
2
- 36226754
+ 36090723
@@ -4855,7 +4828,7 @@
1
2
- 36226754
+ 36090723
@@ -4871,7 +4844,7 @@
1
2
- 36226754
+ 36090723
@@ -4887,67 +4860,67 @@
1
15
- 3126
+ 3114
15
41
- 3126
+ 3114
42
66
- 3376
+ 3364
67
95
- 3126
+ 3114
98
124
- 3251
+ 3239
124
174
- 3376
+ 3364
175
228
- 3126
+ 3114
230
303
- 3126
+ 3114
305
406
- 3126
+ 3114
408
596
- 3251
+ 3239
598
943
- 3126
+ 3114
986
2568
- 3251
+ 3114
- 2725
+ 2587
57658
- 2626
+ 2741
@@ -4963,67 +4936,67 @@
1
13
- 3502
+ 3488
13
29
- 3251
+ 3239
29
42
- 3126
+ 3114
42
58
- 3376
+ 3364
58
76
- 3126
+ 3114
77
102
- 3251
+ 3239
102
134
- 3126
+ 3114
134
173
- 3126
+ 3114
173
242
- 3126
+ 3114
243
348
- 3126
+ 3114
348
489
- 3126
+ 3114
493
1269
- 3126
+ 3114
1337
57597
- 2626
+ 2616
@@ -5039,67 +5012,67 @@
1
4
- 2251
+ 2242
4
7
- 3126
+ 3114
7
12
- 3502
+ 3488
12
16
- 3126
+ 3114
16
22
- 3376
+ 3364
22
28
- 3126
+ 3114
28
33
- 3251
+ 3239
33
39
- 3376
+ 3364
39
48
- 3376
+ 3364
48
60
- 3376
+ 3364
60
82
- 3376
+ 3364
83
98
- 3251
+ 3239
98
141
- 2501
+ 2491
@@ -5115,67 +5088,67 @@
1
13
- 3502
+ 3488
13
29
- 3251
+ 3239
29
42
- 3126
+ 3114
42
58
- 3376
+ 3364
58
76
- 3126
+ 3114
77
102
- 3251
+ 3239
102
134
- 3126
+ 3114
134
173
- 3251
+ 3239
174
244
- 3126
+ 3114
246
348
- 3126
+ 3114
348
494
- 3126
+ 3114
513
1349
- 3126
+ 3114
1407
57597
- 2501
+ 2491
@@ -5191,67 +5164,67 @@
1
12
- 3376
+ 3364
13
24
- 3251
+ 3239
25
33
- 3251
+ 3239
33
39
- 3376
+ 3364
39
45
- 3627
+ 3613
45
54
- 3126
+ 3114
54
62
- 3627
+ 3613
62
71
- 3376
+ 3364
71
83
- 3502
+ 3488
83
99
- 3126
+ 3114
99
114
- 3126
+ 3114
114
- 136
- 3126
+ 143
+ 3114
147
363
- 1125
+ 1121
@@ -5267,32 +5240,32 @@
1
2
- 4960358
+ 4941391
2
3
- 800711
+ 797649
3
4
- 566326
+ 564160
4
12
- 593091
+ 590823
12
210
- 562324
+ 560173
210
534
- 13007
+ 12957
@@ -5308,27 +5281,27 @@
1
2
- 5018642
+ 4999452
2
3
- 1234586
+ 1229865
3
6
- 664132
+ 661593
6
106
- 562324
+ 560173
107
329
- 16134
+ 16072
@@ -5344,27 +5317,27 @@
1
2
- 5655509
+ 5633884
2
3
- 532682
+ 530645
3
7
- 579333
+ 577118
7
24
- 571454
+ 569269
24
72
- 156840
+ 156240
@@ -5380,12 +5353,12 @@
1
2
- 7320969
+ 7292975
2
81
- 174850
+ 174182
@@ -5401,27 +5374,27 @@
1
2
- 5027272
+ 5008049
2
3
- 767567
+ 764632
3
4
- 559822
+ 557682
4
12
- 604348
+ 602037
12
235
- 536809
+ 534756
@@ -5437,67 +5410,67 @@
1
2
- 1500
+ 1495
2
4
- 1876
+ 1868
4
9
- 1625
+ 1619
9
19
- 1751
+ 1744
20
74
- 1625
+ 1619
81
173
- 1625
+ 1619
173
435
- 1625
+ 1619
468
904
- 1625
+ 1619
945
1309
- 1625
+ 1619
1328
1510
- 1625
+ 1619
1531
1774
- 1625
+ 1619
1834
2887
- 1625
+ 1619
3491
119749
- 1500
+ 1495
@@ -5513,67 +5486,67 @@
1
2
- 1876
+ 1868
2
4
- 1751
+ 1744
4
6
- 1500
+ 1495
6
11
- 1751
+ 1744
11
33
- 1625
+ 1619
34
45
- 1625
+ 1619
50
75
- 1751
+ 1744
78
98
- 1751
+ 1744
101
131
- 1625
+ 1619
131
147
- 1876
+ 1868
149
161
- 1625
+ 1619
162
198
- 1625
+ 1619
202
329
- 875
+ 872
@@ -5589,67 +5562,67 @@
1
2
- 1625
+ 1619
2
4
- 1876
+ 1868
4
9
- 1625
+ 1619
9
19
- 1751
+ 1744
20
74
- 1625
+ 1619
80
169
- 1625
+ 1619
171
432
- 1625
+ 1619
467
822
- 1625
+ 1619
861
1001
- 1625
+ 1619
1002
1190
- 1625
+ 1619
1201
1338
- 1625
+ 1619
1347
1920
- 1625
+ 1619
2210
59360
- 1375
+ 1370
@@ -5665,67 +5638,67 @@
1
2
- 1625
+ 1619
2
4
- 1876
+ 1868
4
9
- 1625
+ 1619
9
19
- 1751
+ 1744
20
74
- 1625
+ 1619
80
169
- 1625
+ 1619
171
432
- 1625
+ 1619
467
822
- 1625
+ 1619
861
1003
- 1625
+ 1619
1003
1198
- 1625
+ 1619
1201
1338
- 1625
+ 1619
1347
1920
- 1625
+ 1619
2220
59375
- 1375
+ 1370
@@ -5741,67 +5714,67 @@
1
2
- 1876
+ 1868
2
4
- 1751
+ 1744
4
7
- 1876
+ 1868
7
13
- 1751
+ 1744
13
21
- 1751
+ 1744
21
29
- 1625
+ 1619
29
37
- 1500
+ 1495
37
50
- 1625
+ 1619
50
58
- 1625
+ 1619
61
67
- 1751
+ 1744
67
76
- 1751
+ 1619
76
- 140
- 1625
+ 137
+ 1619
- 144
+ 139
299
- 750
+ 872
@@ -5817,32 +5790,32 @@
1
2
- 4959983
+ 4941017
2
3
- 807965
+ 804876
3
4
- 561448
+ 559301
4
12
- 593467
+ 591197
12
214
- 562449
+ 560298
214
530
- 12507
+ 12459
@@ -5858,27 +5831,27 @@
1
2
- 5017141
+ 4997957
2
3
- 1237713
+ 1232980
3
6
- 664507
+ 661967
6
107
- 562449
+ 560298
107
329
- 16009
+ 15948
@@ -5894,12 +5867,12 @@
1
2
- 7316466
+ 7288490
2
7
- 181354
+ 180661
@@ -5915,27 +5888,27 @@
1
2
- 5658136
+ 5636500
2
3
- 531306
+ 529274
3
7
- 580209
+ 577990
7
24
- 571079
+ 568895
24
72
- 157090
+ 156489
@@ -5951,27 +5924,27 @@
1
2
- 5027147
+ 5007924
2
3
- 774196
+ 771235
3
4
- 555194
+ 553072
4
12
- 605348
+ 603034
12
235
- 535933
+ 533884
@@ -5987,52 +5960,52 @@
1
2
- 15759
+ 15698
2
3
- 5628
+ 5606
3
- 6
- 4127
+ 7
+ 4485
- 6
- 16
- 4252
+ 7
+ 17
+ 4111
- 16
- 29
- 4127
+ 17
+ 32
+ 4236
- 30
- 97
- 4127
+ 35
+ 103
+ 4111
- 97
- 518
- 4127
+ 147
+ 635
+ 4111
- 523
- 1928
- 4127
+ 651
+ 2069
+ 4111
- 1990
- 3352
- 4127
+ 2137
+ 3404
+ 4111
- 3386
+ 3430
33692
- 3126
+ 2741
@@ -6048,52 +6021,52 @@
1
2
- 18760
+ 18564
2
3
- 5628
+ 5606
3
5
- 4127
+ 4236
5
7
- 3376
+ 3364
7
15
- 4752
+ 4609
15
- 79
- 4127
+ 78
+ 4111
- 80
+ 78
143
- 4127
+ 4236
150
202
- 4127
+ 4111
203
263
- 4127
+ 4111
266
329
- 375
+ 373
@@ -6109,52 +6082,52 @@
1
2
- 16009
+ 15948
2
3
- 6128
+ 5980
3
- 8
- 4127
+ 7
+ 4111
- 8
+ 7
17
- 4127
+ 4236
17
35
- 4127
+ 4111
35
140
- 4127
+ 4111
157
601
- 4127
+ 4111
610
- 1713
- 4127
+ 1714
+ 4111
1749
2382
- 4127
+ 4111
2421
30689
- 2501
+ 2491
@@ -6170,52 +6143,52 @@
1
2
- 17385
+ 17318
2
3
- 6378
+ 6354
3
4
- 3502
+ 3114
4
6
- 3502
+ 3862
6
11
- 4627
+ 4609
11
22
- 4127
+ 4111
22
40
- 4252
+ 4236
42
60
- 4877
+ 4859
60
68
- 4127
+ 4111
68
73
- 750
+ 747
@@ -6231,52 +6204,52 @@
1
2
- 16009
+ 15948
2
3
- 6128
+ 5980
3
- 8
- 4127
+ 7
+ 4111
- 8
+ 7
17
- 4252
+ 4360
17
36
- 4252
+ 4236
36
170
- 4127
+ 4111
173
- 619
- 4127
+ 620
+ 4111
622
1824
- 4127
+ 4111
1843
2449
- 4127
+ 4111
2460
30688
- 2251
+ 2242
@@ -6286,19 +6259,19 @@
locations_stmt
- 5202209
+ 5203175
id
- 5202209
+ 5203175
container
- 4152
+ 4153
startLine
- 272815
+ 272866
startColumn
@@ -6306,11 +6279,11 @@
endLine
- 264987
+ 265036
endColumn
- 3226
+ 3227
@@ -6324,7 +6297,7 @@
1
2
- 5202209
+ 5203175
@@ -6340,7 +6313,7 @@
1
2
- 5202209
+ 5203175
@@ -6356,7 +6329,7 @@
1
2
- 5202209
+ 5203175
@@ -6372,7 +6345,7 @@
1
2
- 5202209
+ 5203175
@@ -6388,7 +6361,7 @@
1
2
- 5202209
+ 5203175
@@ -6789,67 +6762,67 @@
1
2
- 29405
+ 29411
2
3
- 20875
+ 20879
3
4
- 17031
+ 17034
4
6
- 19725
+ 19728
6
8
- 17087
+ 17090
8
11
- 22811
+ 22816
11
16
- 23569
+ 23573
16
22
- 20931
+ 20935
22
29
- 23232
+ 23236
29
37
- 23681
+ 23686
37
45
- 20623
+ 20627
45
56
- 22138
+ 22142
56
73
- 11700
+ 11702
@@ -6865,67 +6838,67 @@
1
2
- 30443
+ 30449
2
3
- 21464
+ 21468
3
4
- 17312
+ 17315
4
6
- 19641
+ 19644
6
8
- 17368
+ 17371
8
11
- 23990
+ 23994
11
16
- 22334
+ 22338
16
22
- 22138
+ 22142
22
29
- 23148
+ 23152
29
36
- 21857
+ 21861
36
44
- 22306
+ 22310
44
54
- 21661
+ 21665
54
68
- 9147
+ 9148
@@ -6941,57 +6914,57 @@
1
2
- 36616
+ 36623
2
3
- 28451
+ 28456
3
4
- 22952
+ 22956
4
5
- 21970
+ 21974
5
6
- 23793
+ 23798
6
7
- 27104
+ 27109
7
8
- 31061
+ 31066
8
9
- 27890
+ 27895
9
10
- 20426
+ 20430
10
12
- 22699
+ 22703
12
18
- 9848
+ 9850
@@ -7007,67 +6980,67 @@
1
2
- 47222
+ 47231
2
3
- 35213
+ 35220
3
4
- 25168
+ 25173
4
5
- 22110
+ 22114
5
6
- 17452
+ 17455
6
7
- 16470
+ 16473
7
8
- 13917
+ 13919
8
9
- 15067
+ 15070
9
10
- 14730
+ 14733
10
11
- 14394
+ 14396
11
12
- 13861
+ 13863
12
14
- 21577
+ 21581
14
24
- 15628
+ 15631
@@ -7083,62 +7056,62 @@
1
2
- 30219
+ 30224
2
3
- 22110
+ 22114
3
4
- 17677
+ 17680
4
6
- 21941
+ 21946
6
8
- 20062
+ 20065
8
10
- 18013
+ 18017
10
14
- 24944
+ 24948
14
18
- 23232
+ 23236
18
22
- 24074
+ 24078
22
26
- 25224
+ 25229
26
30
- 22531
+ 22535
30
36
- 20679
+ 20683
36
@@ -7529,67 +7502,67 @@
1
2
- 23765
+ 23770
2
3
- 19669
+ 19672
3
4
- 15684
+ 15687
4
6
- 21296
+ 21300
6
8
- 17059
+ 17062
8
11
- 21100
+ 21104
11
15
- 20005
+ 20009
15
21
- 21941
+ 21946
21
27
- 21072
+ 21076
27
34
- 20370
+ 20374
34
42
- 21549
+ 21553
42
51
- 19921
+ 19925
51
68
- 20258
+ 20262
68
@@ -7610,62 +7583,62 @@
1
2
- 34063
+ 34069
2
3
- 22026
+ 22030
3
4
- 17424
+ 17427
4
6
- 21380
+ 21384
6
8
- 20482
+ 20486
8
11
- 21689
+ 21693
11
16
- 23793
+ 23798
16
20
- 19921
+ 19925
20
26
- 23429
+ 23433
26
32
- 22222
+ 22226
32
39
- 20454
+ 20458
39
58
- 18097
+ 18101
@@ -7681,62 +7654,62 @@
1
2
- 44332
+ 44341
2
3
- 32407
+ 32413
3
4
- 25196
+ 25201
4
5
- 20791
+ 20795
5
6
- 18855
+ 18859
6
7
- 15853
+ 15856
7
8
- 16246
+ 16249
8
9
- 14927
+ 14930
9
10
- 13917
+ 13919
10
12
- 24439
+ 24443
12
15
- 24186
+ 24191
15
100
- 13832
+ 13835
@@ -7752,57 +7725,57 @@
1
2
- 34063
+ 34069
2
3
- 27834
+ 27839
3
4
- 22980
+ 22984
4
5
- 24326
+ 24331
5
6
- 25337
+ 25341
6
7
- 27946
+ 27951
7
8
- 30612
+ 30617
8
9
- 25589
+ 25594
9
10
- 17620
+ 17624
10
12
- 20454
+ 20458
12
18
- 8221
+ 8222
@@ -7818,67 +7791,67 @@
1
2
- 33726
+ 33732
2
3
- 22699
+ 22703
3
4
- 17115
+ 17119
4
6
- 24326
+ 24331
6
8
- 20931
+ 20935
8
10
- 17480
+ 17483
10
13
- 19697
+ 19700
13
16
- 20510
+ 20514
16
19
- 20062
+ 20065
19
22
- 18967
+ 18971
22
26
- 23681
+ 23686
26
31
- 20959
+ 20963
31
39
- 4826
+ 4827
@@ -8278,19 +8251,19 @@
locations_expr
- 17956521
+ 17959858
id
- 17956521
+ 17959858
container
- 6341
+ 6342
startLine
- 261984
+ 262033
startColumn
@@ -8298,11 +8271,11 @@
endLine
- 261956
+ 262005
endColumn
- 3815
+ 3816
@@ -8316,7 +8289,7 @@
1
2
- 17956521
+ 17959858
@@ -8332,7 +8305,7 @@
1
2
- 17956521
+ 17959858
@@ -8348,7 +8321,7 @@
1
2
- 17956521
+ 17959858
@@ -8364,7 +8337,7 @@
1
2
- 17956521
+ 17959858
@@ -8380,7 +8353,7 @@
1
2
- 17956521
+ 17959858
@@ -8401,12 +8374,12 @@
2
6
- 476
+ 477
6
11
- 476
+ 477
12
@@ -8416,47 +8389,47 @@
27
87
- 476
+ 477
95
514
- 476
+ 477
525
1401
- 476
+ 477
1526
2343
- 476
+ 477
2404
3615
- 476
+ 477
3668
5162
- 476
+ 477
5341
7345
- 476
+ 477
7399
9307
- 476
+ 477
9382
16759
- 476
+ 477
18811
@@ -8482,7 +8455,7 @@
2
4
- 476
+ 477
4
@@ -8497,42 +8470,42 @@
20
66
- 476
+ 477
67
162
- 476
+ 477
166
362
- 476
+ 477
376
591
- 476
+ 477
593
929
- 476
+ 477
960
1269
- 476
+ 477
1291
1782
- 476
+ 477
1851
2492
- 476
+ 477
2594
@@ -8568,7 +8541,7 @@
7
16
- 476
+ 477
16
@@ -8578,7 +8551,7 @@
36
59
- 476
+ 477
59
@@ -8644,7 +8617,7 @@
2
4
- 476
+ 477
4
@@ -8659,42 +8632,42 @@
20
68
- 476
+ 477
68
163
- 476
+ 477
166
362
- 476
+ 477
376
592
- 476
+ 477
593
931
- 476
+ 477
960
1273
- 476
+ 477
1292
1786
- 476
+ 477
1855
2501
- 476
+ 477
2593
@@ -8720,7 +8693,7 @@
2
4
- 476
+ 477
4
@@ -8730,17 +8703,17 @@
7
15
- 476
+ 477
15
36
- 476
+ 477
36
62
- 476
+ 477
62
@@ -8755,7 +8728,7 @@
73
75
- 448
+ 449
75
@@ -8770,12 +8743,12 @@
77
79
- 476
+ 477
79
84
- 476
+ 477
84
@@ -8796,67 +8769,67 @@
1
5
- 21998
+ 22002
5
9
- 22503
+ 22507
9
15
- 21885
+ 21889
15
23
- 20623
+ 20627
23
32
- 20679
+ 20683
32
44
- 20482
+ 20486
44
60
- 20146
+ 20149
60
80
- 20286
+ 20290
80
103
- 19949
+ 19953
103
130
- 20090
+ 20093
130
159
- 19893
+ 19897
159
194
- 19949
+ 19953
194
297
- 13496
+ 13498
@@ -8872,62 +8845,62 @@
1
2
- 32099
+ 32105
2
3
- 21324
+ 21328
3
4
- 15488
+ 15491
4
6
- 22334
+ 22338
6
8
- 18602
+ 18606
8
11
- 22418
+ 22423
11
16
- 23681
+ 23686
16
21
- 22503
+ 22507
21
28
- 22671
+ 22675
28
35
- 21633
+ 21637
35
43
- 21773
+ 21777
43
61
- 17452
+ 17455
@@ -8943,62 +8916,62 @@
1
4
- 21801
+ 21805
4
7
- 23934
+ 23938
7
11
- 22783
+ 22787
11
16
- 23765
+ 23770
16
21
- 23906
+ 23910
21
26
- 20567
+ 20570
26
31
- 22082
+ 22086
31
36
- 24102
+ 24106
36
40
- 21464
+ 21468
40
44
- 22615
+ 22619
44
49
- 22755
+ 22759
49
63
- 12205
+ 12207
@@ -9014,27 +8987,27 @@
1
2
- 138947
+ 138972
2
3
- 61112
+ 61123
3
4
- 37682
+ 37689
4
6
- 19977
+ 19981
6
23
- 4264
+ 4265
@@ -9050,62 +9023,62 @@
1
4
- 23148
+ 23152
4
7
- 22727
+ 22731
7
11
- 22418
+ 22423
11
16
- 22138
+ 22142
16
21
- 22447
+ 22451
21
27
- 22867
+ 22872
27
33
- 22475
+ 22479
33
38
- 19753
+ 19757
38
43
- 21296
+ 21300
43
47
- 19949
+ 19953
47
52
- 23036
+ 23040
52
66
- 19669
+ 19672
68
@@ -9202,7 +9175,7 @@
1
2
- 448
+ 449
2
@@ -9430,7 +9403,7 @@
1
2
- 448
+ 449
2
@@ -9506,67 +9479,67 @@
1
5
- 22026
+ 22030
5
9
- 22503
+ 22507
9
15
- 21577
+ 21581
15
23
- 20595
+ 20598
23
32
- 21352
+ 21356
32
44
- 20118
+ 20121
44
60
- 19781
+ 19785
60
80
- 20875
+ 20879
80
103
- 19809
+ 19813
103
130
- 20005
+ 20009
130
159
- 19949
+ 19953
159
193
- 19669
+ 19672
193
296
- 13692
+ 13695
@@ -9582,67 +9555,67 @@
1
2
- 32099
+ 32105
2
3
- 21240
+ 21244
3
4
- 15488
+ 15491
4
6
- 21913
+ 21917
6
8
- 18406
+ 18409
8
11
- 22503
+ 22507
11
15
- 19781
+ 19785
15
20
- 22811
+ 22816
20
26
- 20454
+ 20458
26
33
- 21913
+ 21917
33
40
- 19893
+ 19897
40
49
- 20033
+ 20037
49
61
- 5415
+ 5416
@@ -9658,22 +9631,22 @@
1
2
- 130248
+ 130273
2
3
- 68210
+ 68223
3
4
- 40152
+ 40159
4
6
- 21380
+ 21384
6
@@ -9694,62 +9667,62 @@
1
4
- 21605
+ 21609
4
7
- 23821
+ 23826
7
11
- 22503
+ 22507
11
16
- 23681
+ 23686
16
21
- 23625
+ 23629
21
26
- 20679
+ 20683
26
31
- 22278
+ 22282
31
36
- 24074
+ 24078
36
40
- 20875
+ 20879
40
44
- 22587
+ 22591
44
49
- 23148
+ 23152
49
63
- 13075
+ 13077
@@ -9765,62 +9738,62 @@
1
4
- 23457
+ 23461
4
7
- 22924
+ 22928
7
11
- 22418
+ 22423
11
16
- 23036
+ 23040
16
21
- 21857
+ 21861
21
26
- 19809
+ 19813
26
32
- 22054
+ 22058
32
38
- 23878
+ 23882
38
43
- 22110
+ 22114
43
47
- 19781
+ 19785
47
52
- 22755
+ 22759
52
69
- 17873
+ 17876
@@ -9912,7 +9885,7 @@
1
2
- 448
+ 449
2
@@ -10205,23 +10178,23 @@
numlines
- 809466
+ 806371
element_id
- 808340
+ 805249
num_lines
- 39522
+ 39371
num_code
- 34019
+ 33889
num_comment
- 18385
+ 18315
@@ -10235,12 +10208,12 @@
1
2
- 807215
+ 804128
2
3
- 1125
+ 1121
@@ -10256,12 +10229,12 @@
1
2
- 807215
+ 804128
2
3
- 1125
+ 1121
@@ -10277,12 +10250,12 @@
1
2
- 808090
+ 805000
2
3
- 250
+ 249
@@ -10298,27 +10271,27 @@
1
2
- 26765
+ 26663
2
3
- 3752
+ 3737
3
5
- 3376
+ 3364
5
37
- 3126
+ 3114
41
1978
- 2501
+ 2491
@@ -10334,27 +10307,27 @@
1
2
- 27265
+ 27161
2
3
- 4127
+ 4111
3
4
- 2501
+ 2491
4
7
- 3502
+ 3488
7
12
- 2126
+ 2118
@@ -10370,27 +10343,27 @@
1
2
- 26890
+ 26787
2
3
- 4127
+ 4111
3
4
- 2501
+ 2491
4
6
- 3126
+ 3114
6
11
- 2876
+ 2865
@@ -10406,32 +10379,32 @@
1
2
- 21637
+ 21554
2
3
- 3752
+ 3737
3
4
- 2376
+ 2367
4
13
- 2876
+ 2865
14
197
- 2626
+ 2616
205
2101
- 750
+ 747
@@ -10447,32 +10420,32 @@
1
2
- 22012
+ 21928
2
3
- 3752
+ 3737
3
4
- 2126
+ 2118
4
6
- 1876
+ 1868
6
9
- 2751
+ 2741
9
13
- 1500
+ 1495
@@ -10488,27 +10461,27 @@
1
2
- 21762
+ 21679
2
3
- 4377
+ 4360
3
5
- 2876
+ 2865
5
8
- 3126
+ 3114
8
12
- 1876
+ 1868
@@ -10524,32 +10497,32 @@
1
2
- 11381
+ 11338
2
3
- 1751
+ 1744
3
4
- 1500
+ 1495
4
7
- 1375
+ 1370
8
22
- 1500
+ 1495
42
3650
- 875
+ 872
@@ -10565,32 +10538,32 @@
1
2
- 11381
+ 11338
2
3
- 1751
+ 1744
3
4
- 1500
+ 1495
4
7
- 1500
+ 1495
8
27
- 1500
+ 1495
30
48
- 750
+ 747
@@ -10606,32 +10579,32 @@
1
2
- 11381
+ 11338
2
3
- 1751
+ 1744
3
4
- 1751
+ 1744
4
9
- 1500
+ 1495
10
36
- 1625
+ 1619
36
43
- 375
+ 373
@@ -11198,15 +11171,15 @@
files
- 83260
+ 81417
id
- 83260
+ 81417
name
- 83260
+ 81417
@@ -11220,7 +11193,7 @@
1
2
- 83260
+ 81417
@@ -11236,7 +11209,7 @@
1
2
- 83260
+ 81417
@@ -11246,15 +11219,15 @@
folders
- 15818
+ 15468
id
- 15818
+ 15468
name
- 15818
+ 15468
@@ -11268,7 +11241,7 @@
1
2
- 15818
+ 15468
@@ -11284,7 +11257,7 @@
1
2
- 15818
+ 15468
@@ -11294,15 +11267,15 @@
containerparent
- 99052
+ 96859
parent
- 15818
+ 15468
child
- 99052
+ 96859
@@ -11316,42 +11289,42 @@
1
2
- 7700
+ 7529
2
3
- 1941
+ 1898
3
4
- 849
+ 830
4
6
- 1281
+ 1252
6
10
- 1240
+ 1213
10
16
- 1281
+ 1252
16
44
- 1186
+ 1160
44
151
- 337
+ 329
@@ -11367,7 +11340,7 @@
1
2
- 99052
+ 96859
@@ -11377,11 +11350,11 @@
fileannotations
- 5363077
+ 5244354
id
- 7363
+ 7200
kind
@@ -11389,11 +11362,11 @@
name
- 74967
+ 73307
value
- 50450
+ 49333
@@ -11407,12 +11380,12 @@
1
2
- 256
+ 250
2
3
- 7106
+ 6949
@@ -11428,62 +11401,62 @@
1
86
- 552
+ 540
88
206
- 552
+ 540
212
291
- 566
+ 553
291
359
- 552
+ 540
362
401
- 552
+ 540
402
479
- 552
+ 540
480
549
- 323
+ 316
550
551
- 1699
+ 1661
553
628
- 552
+ 540
631
753
- 579
+ 567
753
1231
- 566
+ 553
1234
2155
- 310
+ 303
@@ -11499,62 +11472,62 @@
1
98
- 552
+ 540
102
244
- 552
+ 540
244
351
- 552
+ 540
352
434
- 566
+ 553
434
490
- 566
+ 553
490
628
- 552
+ 540
632
702
- 80
+ 79
706
707
- 1699
+ 1661
710
939
- 552
+ 540
939
1038
- 552
+ 540
1066
1853
- 552
+ 540
1853
3292
- 552
+ 540
3423
@@ -11638,62 +11611,62 @@
1
2
- 14079
+ 13767
2
3
- 5569
+ 5446
3
5
- 6459
+ 6316
5
7
- 5232
+ 5116
7
9
- 5866
+ 5736
9
16
- 5529
+ 5406
16
19
- 6243
+ 6105
19
27
- 5434
+ 5314
27
47
- 6176
+ 6039
47
128
- 6284
+ 6145
128
459
- 5906
+ 5775
459
546
- 2184
+ 2136
@@ -11709,7 +11682,7 @@
1
2
- 74967
+ 73307
@@ -11725,57 +11698,57 @@
1
2
- 14793
+ 14466
2
3
- 9817
+ 9600
3
4
- 5232
+ 5116
4
6
- 5191
+ 5077
6
8
- 4369
+ 4272
8
11
- 6055
+ 5921
11
17
- 6891
+ 6738
17
23
- 6001
+ 5868
23
41
- 5974
+ 5841
41
95
- 5704
+ 5578
95
1726
- 4935
+ 4826
@@ -11791,72 +11764,72 @@
1
2
- 4288
+ 4193
2
4
- 2090
+ 2044
4
5
- 4072
+ 3982
5
8
- 3142
+ 3072
8
14
- 3789
+ 3705
14
17
- 2467
+ 2413
17
24
- 3883
+ 3797
24
51
- 4517
+ 4417
51
58
- 3870
+ 3784
58
80
- 3802
+ 3718
81
151
- 3937
+ 3850
151
334
- 3802
+ 3718
334
473
- 3829
+ 3745
473
547
- 2953
+ 2887
@@ -11872,7 +11845,7 @@
1
2
- 50436
+ 49320
2
@@ -11893,72 +11866,72 @@
1
2
- 4342
+ 4246
2
4
- 2440
+ 2386
4
5
- 3897
+ 3811
5
8
- 3169
+ 3098
8
14
- 4450
+ 4351
14
18
- 4409
+ 4312
18
28
- 4086
+ 3995
28
34
- 4018
+ 3929
34
41
- 4086
+ 3995
41
66
- 3816
+ 3731
66
92
- 3924
+ 3837
92
113
- 3816
+ 3731
113
145
- 3870
+ 3784
145
172
- 121
+ 118
@@ -11968,15 +11941,15 @@
inmacroexpansion
- 149575195
+ 149602994
id
- 24600427
+ 24604999
inv
- 3693421
+ 3694108
@@ -11990,37 +11963,37 @@
1
3
- 2201734
+ 2202143
3
5
- 1470855
+ 1471128
5
6
- 1615840
+ 1616140
6
7
- 6564145
+ 6565365
7
8
- 8694629
+ 8696245
8
9
- 3547106
+ 3547765
9
22
- 506116
+ 506210
@@ -12036,57 +12009,57 @@
1
2
- 528682
+ 528780
2
3
- 741131
+ 741268
3
4
- 480166
+ 480255
4
7
- 274533
+ 274584
7
8
- 281364
+ 281416
8
9
- 329323
+ 329385
9
10
- 3037
+ 3038
10
11
- 443407
+ 443489
11
337
- 306938
+ 306995
339
423
- 280967
+ 281020
423
7616
- 23868
+ 23872
@@ -12096,15 +12069,15 @@
affectedbymacroexpansion
- 48599612
+ 48608644
id
- 7025049
+ 7026354
inv
- 3792491
+ 3793196
@@ -12118,37 +12091,37 @@
1
2
- 3835957
+ 3836670
2
3
- 764163
+ 764305
3
4
- 360830
+ 360897
4
5
- 770576
+ 770719
5
12
- 533664
+ 533763
12
50
- 554712
+ 554815
50
9900
- 205144
+ 205182
@@ -12164,67 +12137,67 @@
1
4
- 312373
+ 312431
4
7
- 315722
+ 315781
7
9
- 300246
+ 300302
9
12
- 341980
+ 342043
12
13
- 454730
+ 454814
13
14
- 225467
+ 225509
14
15
- 406898
+ 406973
15
16
- 165963
+ 165994
16
17
- 376622
+ 376692
17
18
- 200076
+ 200113
18
20
- 343293
+ 343357
20
25
- 284595
+ 284648
25
207
- 64521
+ 64533
@@ -12234,19 +12207,19 @@
macroinvocations
- 40422573
+ 39528251
id
- 40422573
+ 39528251
macro_id
- 109396
+ 106974
location
- 1065236
+ 1041654
kind
@@ -12264,7 +12237,7 @@
1
2
- 40422573
+ 39528251
@@ -12280,7 +12253,7 @@
1
2
- 40422573
+ 39528251
@@ -12296,7 +12269,7 @@
1
2
- 40422573
+ 39528251
@@ -12312,52 +12285,52 @@
1
2
- 23235
+ 22721
2
3
- 20471
+ 20018
3
4
- 7484
+ 7318
4
6
- 10019
+ 9798
6
11
- 9413
+ 9204
11
21
- 9048
+ 8848
21
48
- 8334
+ 8149
48
145
- 8280
+ 8096
145
955
- 8212
+ 8030
955
175302
- 4895
+ 4786
@@ -12373,37 +12346,37 @@
1
2
- 59970
+ 58643
2
3
- 13580
+ 13279
3
4
- 6850
+ 6699
4
6
- 8684
+ 8492
6
13
- 9399
+ 9191
13
67
- 8253
+ 8070
67
4815
- 2656
+ 2597
@@ -12419,12 +12392,12 @@
1
2
- 100980
+ 98745
2
3
- 8415
+ 8228
@@ -12440,37 +12413,37 @@
1
2
- 424327
+ 414921
2
3
- 251670
+ 246099
3
4
- 112794
+ 110337
4
6
- 77246
+ 75496
6
11
- 81763
+ 79967
11
41
- 80374
+ 78595
41
226300
- 37058
+ 36238
@@ -12486,12 +12459,12 @@
1
2
- 1005062
+ 982813
2
367
- 60173
+ 58841
@@ -12507,7 +12480,7 @@
1
2
- 1065236
+ 1041654
@@ -12526,8 +12499,8 @@
13
- 2975140
- 2975141
+ 2975179
+ 2975180
13
@@ -12580,15 +12553,15 @@
macroparent
- 35648322
+ 34859187
id
- 35648322
+ 34859187
parent_id
- 27932475
+ 27314145
@@ -12602,7 +12575,7 @@
1
2
- 35648322
+ 34859187
@@ -12618,17 +12591,17 @@
1
2
- 21758475
+ 21276819
2
3
- 5150852
+ 5036827
3
91
- 1023147
+ 1000497
@@ -12638,15 +12611,15 @@
macrolocationbind
- 5543583
+ 5544606
id
- 3882063
+ 3882779
location
- 2758591
+ 2759101
@@ -12660,22 +12633,22 @@
1
2
- 3056719
+ 3057283
2
3
- 469858
+ 469944
3
7
- 314935
+ 314994
7
57
- 40549
+ 40556
@@ -12691,22 +12664,22 @@
1
2
- 2198268
+ 2198674
2
3
- 240004
+ 240048
3
8
- 216571
+ 216611
8
723
- 103748
+ 103767
@@ -12716,19 +12689,19 @@
macro_argument_unexpanded
- 102782052
+ 100507893
invocation
- 31085973
+ 30398388
argument_index
- 890
+ 870
text
- 438272
+ 428569
@@ -12742,22 +12715,22 @@
1
2
- 9939829
+ 9719830
2
3
- 12443923
+ 12168939
3
4
- 6366751
+ 6225849
4
67
- 2335468
+ 2283768
@@ -12773,22 +12746,22 @@
1
2
- 10173011
+ 9947850
2
3
- 12465325
+ 12189867
3
4
- 6167729
+ 6031233
4
67
- 2279907
+ 2229436
@@ -12804,17 +12777,17 @@
46457
46458
- 782
+ 764
46659
173182
- 67
+ 65
- 645292
- 2305106
- 40
+ 645295
+ 2305149
+ 39
@@ -12830,17 +12803,17 @@
2
3
- 782
+ 764
13
1115
- 67
+ 65
7702
22873
- 40
+ 39
@@ -12856,57 +12829,57 @@
1
2
- 51717
+ 50559
2
3
- 79633
+ 77883
3
4
- 29533
+ 28879
4
5
- 44314
+ 43319
5
6
- 49964
+ 48845
6
9
- 36465
+ 35684
9
15
- 36654
+ 35829
15
27
- 33377
+ 32651
27
57
- 33970
+ 33205
57
517
- 33093
+ 32374
518
485092
- 9547
+ 9336
@@ -12922,17 +12895,17 @@
1
2
- 310481
+ 303608
2
3
- 114749
+ 112209
3
9
- 13040
+ 12751
@@ -12942,19 +12915,19 @@
macro_argument_expanded
- 102782052
+ 100507893
invocation
- 31085973
+ 30398388
argument_index
- 890
+ 870
text
- 265479
+ 259602
@@ -12968,22 +12941,22 @@
1
2
- 9939829
+ 9719830
2
3
- 12443923
+ 12168939
3
4
- 6366751
+ 6225849
4
67
- 2335468
+ 2283768
@@ -12999,22 +12972,22 @@
1
2
- 13706388
+ 13403008
2
3
- 10736336
+ 10499153
3
4
- 5379705
+ 5260653
4
9
- 1263543
+ 1235572
@@ -13030,17 +13003,17 @@
46457
46458
- 782
+ 764
46659
173182
- 67
+ 65
- 645292
- 2305106
- 40
+ 645295
+ 2305149
+ 39
@@ -13056,17 +13029,17 @@
1
2
- 768
+ 751
2
96
- 67
+ 65
950
16176
- 53
+ 52
@@ -13082,57 +13055,57 @@
1
2
- 28171
+ 27534
2
3
- 34927
+ 34167
3
4
- 58231
+ 56942
4
5
- 20538
+ 20070
5
6
- 3964
+ 3863
6
7
- 23235
+ 22734
7
10
- 21590
+ 21112
10
19
- 22939
+ 22444
19
51
- 19931
+ 19477
51
253
- 20053
+ 19622
254
990275
- 11894
+ 11631
@@ -13148,17 +13121,17 @@
1
2
- 134169
+ 131199
2
3
- 113522
+ 111009
3
66
- 17787
+ 17393
@@ -13168,19 +13141,19 @@
functions
- 4015439
+ 4000085
id
- 4015439
+ 4000085
name
- 1650451
+ 1644140
kind
- 1000
+ 996
@@ -13194,7 +13167,7 @@
1
2
- 4015439
+ 4000085
@@ -13210,7 +13183,7 @@
1
2
- 4015439
+ 4000085
@@ -13226,17 +13199,17 @@
1
2
- 1403934
+ 1398565
2
4
- 139330
+ 138797
4
3162
- 107186
+ 106776
@@ -13252,12 +13225,12 @@
1
2
- 1647574
+ 1641274
2
3
- 2876
+ 2865
@@ -13273,42 +13246,42 @@
8
9
- 125
+ 124
13
14
- 125
+ 124
47
48
- 125
+ 124
83
84
- 125
+ 124
690
691
- 125
+ 124
4450
4451
- 125
+ 124
5230
5231
- 125
+ 124
21584
21585
- 125
+ 124
@@ -13324,42 +13297,42 @@
2
3
- 125
+ 124
13
14
- 125
+ 124
18
19
- 125
+ 124
41
42
- 125
+ 124
43
44
- 125
+ 124
302
303
- 125
+ 124
504
505
- 125
+ 124
12296
12297
- 125
+ 124
@@ -13369,15 +13342,15 @@
function_entry_point
- 1432100
+ 1430682
id
- 1427396
+ 1425982
entry_point
- 1432100
+ 1430682
@@ -13391,12 +13364,12 @@
1
2
- 1423376
+ 1421966
2
17
- 4020
+ 4016
@@ -13412,7 +13385,7 @@
1
2
- 1432100
+ 1430682
@@ -13422,15 +13395,15 @@
function_return_type
- 4032949
+ 4017528
id
- 4015439
+ 4000085
return_type
- 623609
+ 621224
@@ -13444,12 +13417,12 @@
1
2
- 3997929
+ 3982642
2
3
- 17510
+ 17443
@@ -13465,27 +13438,27 @@
1
2
- 313305
+ 312107
2
3
- 213748
+ 212930
3
5
- 48527
+ 48342
5
354
- 46776
+ 46598
358
9897
- 1250
+ 1245
@@ -13765,59 +13738,59 @@
purefunctions
- 138705
+ 138354
id
- 138705
+ 138354
function_deleted
- 94271
+ 94264
id
- 94271
+ 94264
function_defaulted
- 55310
+ 55306
id
- 55310
+ 55306
function_prototyped
- 4013938
+ 3998590
id
- 4013938
+ 3998590
deduction_guide_for_class
- 5878
+ 5855
id
- 5878
+ 5855
class_template
- 2251
+ 2242
@@ -13831,7 +13804,7 @@
1
2
- 5878
+ 5855
@@ -13847,32 +13820,32 @@
1
2
- 1125
+ 1121
2
3
- 375
+ 373
3
4
- 125
+ 124
4
5
- 250
+ 249
5
6
- 125
+ 124
8
9
- 250
+ 249
@@ -13882,15 +13855,15 @@
member_function_this_type
- 841186
+ 840354
id
- 841186
+ 840354
this_type
- 239923
+ 239686
@@ -13904,7 +13877,7 @@
1
2
- 841186
+ 840354
@@ -13920,37 +13893,37 @@
1
2
- 73730
+ 73657
2
3
- 70223
+ 70154
3
4
- 33743
+ 33709
4
5
- 15396
+ 15380
5
7
- 21854
+ 21832
7
13
- 18903
+ 18884
13
530
- 6072
+ 6066
@@ -13960,27 +13933,27 @@
fun_decls
- 4160522
+ 4144115
id
- 4154519
+ 4138135
function
- 3990925
+ 3975664
type_id
- 615604
+ 613250
name
- 1648950
+ 1642645
location
- 2773098
+ 2762494
@@ -13994,7 +13967,7 @@
1
2
- 4154519
+ 4138135
@@ -14010,12 +13983,12 @@
1
2
- 4148516
+ 4132154
2
3
- 6003
+ 5980
@@ -14031,7 +14004,7 @@
1
2
- 4154519
+ 4138135
@@ -14047,7 +14020,7 @@
1
2
- 4154519
+ 4138135
@@ -14063,12 +14036,12 @@
1
2
- 3840713
+ 3826525
2
4
- 150211
+ 149138
@@ -14084,12 +14057,12 @@
1
2
- 3972414
+ 3957224
2
3
- 18510
+ 18439
@@ -14105,7 +14078,7 @@
1
2
- 3990925
+ 3975664
@@ -14121,12 +14094,12 @@
1
2
- 3847467
+ 3832755
2
4
- 143457
+ 142909
@@ -14142,27 +14115,27 @@
1
2
- 298547
+ 297405
2
3
- 220627
+ 219783
3
5
- 48903
+ 48716
5
354
- 46276
+ 46099
358
- 10246
- 1250
+ 10242
+ 1245
@@ -14178,27 +14151,27 @@
1
2
- 308677
+ 307497
2
3
- 211872
+ 211061
3
5
- 48527
+ 48342
5
1033
- 46276
+ 46099
1483
9847
- 250
+ 249
@@ -14214,22 +14187,22 @@
1
2
- 495160
+ 493267
2
3
- 52780
+ 52578
3
7
- 51154
+ 50958
7
2211
- 16509
+ 16446
@@ -14245,22 +14218,22 @@
1
2
- 458514
+ 456761
2
3
- 69540
+ 69274
3
6
- 55907
+ 55693
6
4728
- 31643
+ 31522
@@ -14276,22 +14249,22 @@
1
2
- 1299248
+ 1294529
2
3
- 184106
+ 183152
3
10
- 125697
+ 125341
10
3169
- 39897
+ 39620
@@ -14307,17 +14280,17 @@
1
2
- 1403433
+ 1398067
2
4
- 139705
+ 139171
4
3162
- 105810
+ 105406
@@ -14333,12 +14306,12 @@
1
2
- 1558773
+ 1552813
2
1596
- 90176
+ 89832
@@ -14354,17 +14327,17 @@
1
2
- 1323637
+ 1318576
2
3
- 208745
+ 207947
3
1592
- 116567
+ 116121
@@ -14380,17 +14353,17 @@
1
2
- 2392879
+ 2383729
2
3
- 238012
+ 237102
3
211
- 142206
+ 141663
@@ -14406,17 +14379,17 @@
1
2
- 2396631
+ 2387467
2
3
- 234760
+ 233862
3
211
- 141706
+ 141164
@@ -14432,12 +14405,12 @@
1
2
- 2657656
+ 2647494
2
211
- 115441
+ 115000
@@ -14453,12 +14426,12 @@
1
2
- 2733825
+ 2723372
2
8
- 39272
+ 39122
@@ -14468,22 +14441,22 @@
fun_def
- 1584950
+ 1583380
id
- 1584950
+ 1583380
fun_specialized
- 8434
+ 8413
id
- 8434
+ 8413
@@ -14501,15 +14474,15 @@
fun_decl_specifiers
- 4106992
+ 4091287
id
- 1690224
+ 1683761
name
- 1375
+ 1370
@@ -14523,22 +14496,22 @@
1
2
- 361958
+ 360574
2
3
- 262776
+ 261771
3
4
- 1042475
+ 1038489
4
5
- 23013
+ 22925
@@ -14554,57 +14527,57 @@
15
16
- 125
+ 124
19
20
- 125
+ 124
224
225
- 125
+ 124
261
262
- 125
+ 124
546
547
- 125
+ 124
826
827
- 125
+ 124
1032
1033
- 125
+ 124
1089
1090
- 125
+ 124
7668
7669
- 125
+ 124
10543
10544
- 125
+ 124
10614
10615
- 125
+ 124
@@ -14735,26 +14708,26 @@
fun_decl_empty_throws
- 436983
+ 435875
fun_decl
- 436983
+ 435875
fun_decl_noexcept
- 178039
+ 177863
fun_decl
- 178039
+ 177863
constant
- 177440
+ 177265
@@ -14768,7 +14741,7 @@
1
2
- 178039
+ 177863
@@ -14784,7 +14757,7 @@
1
2
- 176884
+ 176709
2
@@ -14799,26 +14772,26 @@
fun_decl_empty_noexcept
- 1165171
+ 1160716
fun_decl
- 1165171
+ 1160716
fun_decl_typedef_type
- 2796
+ 2769
fun_decl
- 2796
+ 2769
typedeftype_id
- 125
+ 124
@@ -14832,7 +14805,7 @@
1
2
- 2796
+ 2769
@@ -14908,11 +14881,11 @@
fun_requires
- 31155
+ 31152
id
- 10822
+ 10821
kind
@@ -14920,7 +14893,7 @@
constraint
- 30901
+ 30899
@@ -14934,7 +14907,7 @@
1
2
- 10753
+ 10752
2
@@ -14955,7 +14928,7 @@
1
2
- 7783
+ 7782
2
@@ -14965,7 +14938,7 @@
3
6
- 921
+ 920
6
@@ -15038,7 +15011,7 @@
1
2
- 30648
+ 30645
2
@@ -15059,7 +15032,7 @@
1
2
- 30901
+ 30899
@@ -15069,19 +15042,19 @@
param_decl_bind
- 7198273
+ 7170500
id
- 7198273
+ 7170500
index
- 8004
+ 7974
fun_decl
- 3482131
+ 3468567
@@ -15095,7 +15068,7 @@
1
2
- 7198273
+ 7170500
@@ -15111,7 +15084,7 @@
1
2
- 7198273
+ 7170500
@@ -15127,32 +15100,32 @@
2
3
- 4002
+ 3987
6
7
- 2001
+ 1993
16
20
- 625
+ 622
25
143
- 625
+ 622
332
15841
- 625
+ 622
- 27841
- 27842
- 125
+ 27839
+ 27840
+ 124
@@ -15168,32 +15141,32 @@
2
3
- 4002
+ 3987
6
7
- 2001
+ 1993
16
20
- 625
+ 622
25
143
- 625
+ 622
332
15841
- 625
+ 622
- 27841
- 27842
- 125
+ 27839
+ 27840
+ 124
@@ -15209,27 +15182,27 @@
1
2
- 1500990
+ 1495001
2
3
- 957927
+ 954264
3
4
- 580584
+ 578364
4
5
- 283413
+ 282329
5
65
- 159216
+ 158607
@@ -15245,27 +15218,27 @@
1
2
- 1500990
+ 1495001
2
3
- 957927
+ 954264
3
4
- 580584
+ 578364
4
5
- 283413
+ 282329
5
65
- 159216
+ 158607
@@ -15275,27 +15248,27 @@
var_decls
- 9254083
+ 9244489
id
- 9247204
+ 9237636
variable
- 8956662
+ 8948454
type_id
- 1464093
+ 1458495
name
- 853366
+ 850103
location
- 6211705
+ 6187953
@@ -15309,7 +15282,7 @@
1
2
- 9247204
+ 9237636
@@ -15325,12 +15298,12 @@
1
2
- 9240325
+ 9230783
2
3
- 6878
+ 6852
@@ -15346,7 +15319,7 @@
1
2
- 9247204
+ 9237636
@@ -15362,7 +15335,7 @@
1
2
- 9247204
+ 9237636
@@ -15378,12 +15351,12 @@
1
2
- 8679127
+ 8672229
2
4
- 277534
+ 276224
@@ -15399,12 +15372,12 @@
1
2
- 8917889
+ 8909830
2
3
- 38772
+ 38624
@@ -15420,12 +15393,12 @@
1
2
- 8850851
+ 8843047
2
4
- 105810
+ 105406
@@ -15441,12 +15414,12 @@
1
2
- 8704516
+ 8697272
2
4
- 252145
+ 251181
@@ -15462,27 +15435,27 @@
1
2
- 855743
+ 852471
2
3
- 285289
+ 284198
3
5
- 128198
+ 127708
5
11
- 113065
+ 112632
11
- 2767
- 81797
+ 2944
+ 81484
@@ -15498,27 +15471,27 @@
1
2
- 876129
+ 872779
2
3
- 270781
+ 269745
3
5
- 123571
+ 123098
5
11
- 113065
+ 112632
11
- 2682
- 80546
+ 2859
+ 80238
@@ -15534,22 +15507,22 @@
1
2
- 1126274
+ 1121967
2
3
- 193361
+ 192622
3
7
- 115316
+ 114875
7
1038
- 29141
+ 29030
@@ -15565,27 +15538,27 @@
1
2
- 992071
+ 988278
2
3
- 219376
+ 218537
3
6
- 134202
+ 133689
6
95
- 109938
+ 109517
97
2570
- 8504
+ 8472
@@ -15601,32 +15574,32 @@
1
2
- 466393
+ 464610
2
3
- 165970
+ 165336
3
4
- 60159
+ 59929
4
7
- 66038
+ 65785
7
- 25
- 64537
+ 26
+ 64165
- 25
- 26622
- 30267
+ 26
+ 26620
+ 30276
@@ -15642,32 +15615,32 @@
1
2
- 479276
+ 477443
2
3
- 165220
+ 164588
3
4
- 55031
+ 54821
4
8
- 71916
+ 71641
8
- 45
- 64036
+ 46
+ 63792
- 45
+ 46
26187
- 17885
+ 17816
@@ -15683,22 +15656,22 @@
1
2
- 655627
+ 653120
2
3
- 110563
+ 110140
3
11
- 65412
+ 65162
11
3460
- 21762
+ 21679
@@ -15714,27 +15687,27 @@
1
2
- 493659
+ 491771
2
3
- 183480
+ 182779
3
4
- 52405
+ 52204
4
8
- 65287
+ 65037
8
22104
- 58533
+ 58309
@@ -15750,12 +15723,12 @@
1
2
- 5763571
+ 5741533
2
- 2943
- 448133
+ 2941
+ 446419
@@ -15771,12 +15744,12 @@
1
2
- 5787585
+ 5765455
2
2935
- 424119
+ 422497
@@ -15792,12 +15765,12 @@
1
2
- 5927416
+ 5904751
2
2555
- 284288
+ 283201
@@ -15813,12 +15786,12 @@
1
2
- 6199197
+ 6175493
2
5
- 12507
+ 12459
@@ -15828,11 +15801,11 @@
var_def
- 3714015
+ 3721867
id
- 3714015
+ 3721867
@@ -15850,15 +15823,15 @@
var_decl_specifiers
- 489532
+ 487660
id
- 489532
+ 487660
name
- 500
+ 498
@@ -15872,7 +15845,7 @@
1
2
- 489532
+ 487660
@@ -15888,22 +15861,22 @@
16
17
- 125
+ 124
77
78
- 125
+ 124
651
652
- 125
+ 124
3170
3171
- 125
+ 124
@@ -15982,19 +15955,19 @@
type_decls
- 1882105
+ 1840533
id
- 1882105
+ 1840533
type_id
- 1840893
+ 1800233
location
- 1478788
+ 1446052
@@ -16008,7 +15981,7 @@
1
2
- 1882105
+ 1840533
@@ -16024,7 +15997,7 @@
1
2
- 1882105
+ 1840533
@@ -16040,12 +16013,12 @@
1
2
- 1811238
+ 1771235
2
24
- 29655
+ 28998
@@ -16061,12 +16034,12 @@
1
2
- 1812560
+ 1772527
2
24
- 28333
+ 27706
@@ -16082,12 +16055,12 @@
1
2
- 1402608
+ 1371558
2
651
- 76180
+ 74494
@@ -16103,12 +16076,12 @@
1
2
- 1403943
+ 1372863
2
651
- 74845
+ 73188
@@ -16118,29 +16091,29 @@
type_def
- 1291458
+ 1262896
id
- 1291458
+ 1262896
type_decl_top
- 670615
+ 670739
type_decl
- 670615
+ 670739
type_requires
- 8220
+ 8219
id
@@ -16148,7 +16121,7 @@
constraint
- 8197
+ 8196
@@ -16198,7 +16171,7 @@
1
2
- 8174
+ 8173
2
@@ -16213,23 +16186,23 @@
namespace_decls
- 430914
+ 429821
id
- 430914
+ 429821
namespace_id
- 1959
+ 1954
location
- 430914
+ 429821
bodylocation
- 430914
+ 429821
@@ -16243,7 +16216,7 @@
1
2
- 430914
+ 429821
@@ -16259,7 +16232,7 @@
1
2
- 430914
+ 429821
@@ -16275,7 +16248,7 @@
1
2
- 430914
+ 429821
@@ -16291,7 +16264,7 @@
1
2
- 414
+ 413
2
@@ -16301,42 +16274,42 @@
3
6
- 181
+ 180
6
15
- 164
+ 163
15
34
- 155
+ 154
35
62
- 164
+ 163
63
87
- 155
+ 154
90
142
- 155
+ 154
143
219
- 155
+ 154
263
1505
- 155
+ 154
1854
@@ -16357,7 +16330,7 @@
1
2
- 414
+ 413
2
@@ -16367,42 +16340,42 @@
3
6
- 181
+ 180
6
15
- 164
+ 163
15
34
- 155
+ 154
35
62
- 164
+ 163
63
87
- 155
+ 154
90
142
- 155
+ 154
143
219
- 155
+ 154
263
1505
- 155
+ 154
1854
@@ -16423,7 +16396,7 @@
1
2
- 414
+ 413
2
@@ -16433,42 +16406,42 @@
3
6
- 181
+ 180
6
15
- 164
+ 163
15
34
- 155
+ 154
35
62
- 164
+ 163
63
87
- 155
+ 154
90
142
- 155
+ 154
143
219
- 155
+ 154
263
1505
- 155
+ 154
1854
@@ -16489,7 +16462,7 @@
1
2
- 430914
+ 429821
@@ -16505,7 +16478,7 @@
1
2
- 430914
+ 429821
@@ -16521,7 +16494,7 @@
1
2
- 430914
+ 429821
@@ -16537,7 +16510,7 @@
1
2
- 430914
+ 429821
@@ -16553,7 +16526,7 @@
1
2
- 430914
+ 429821
@@ -16569,7 +16542,7 @@
1
2
- 430914
+ 429821
@@ -16579,19 +16552,19 @@
usings
- 347162
+ 339714
id
- 347162
+ 339714
element_id
- 75169
+ 73742
location
- 34280
+ 33521
kind
@@ -16609,7 +16582,7 @@
1
2
- 347162
+ 339714
@@ -16625,7 +16598,7 @@
1
2
- 347162
+ 339714
@@ -16641,7 +16614,7 @@
1
2
- 347162
+ 339714
@@ -16657,17 +16630,17 @@
1
2
- 65297
+ 64089
2
5
- 6877
+ 6725
5
134
- 2993
+ 2927
@@ -16683,17 +16656,17 @@
1
2
- 65297
+ 64089
2
5
- 6877
+ 6725
5
134
- 2993
+ 2927
@@ -16709,7 +16682,7 @@
1
2
- 75169
+ 73742
@@ -16725,22 +16698,22 @@
1
2
- 27038
+ 26440
2
4
- 2926
+ 2861
4
132
- 2494
+ 2439
145
- 365
- 1820
+ 367
+ 1780
@@ -16756,22 +16729,22 @@
1
2
- 27038
+ 26440
2
4
- 2926
+ 2861
4
132
- 2494
+ 2439
145
- 365
- 1820
+ 367
+ 1780
@@ -16787,7 +16760,7 @@
1
2
- 34280
+ 33521
@@ -16806,8 +16779,8 @@
13
- 25350
- 25351
+ 25368
+ 25369
13
@@ -16827,8 +16800,8 @@
13
- 5360
- 5361
+ 5378
+ 5379
13
@@ -16860,15 +16833,15 @@
using_container
- 738908
+ 722789
parent
- 27038
+ 26479
child
- 347162
+ 339714
@@ -16882,42 +16855,42 @@
1
2
- 12528
+ 12250
2
3
- 1995
+ 1951
3
6
- 2292
+ 2241
6
7
- 2885
+ 2861
7
27
- 2063
+ 2017
27
136
- 1051
+ 1028
145
146
- 3344
+ 3270
146
437
- 876
+ 857
@@ -16933,27 +16906,27 @@
1
2
- 123785
+ 121282
2
3
- 153561
+ 150162
3
4
- 25123
+ 24567
4
5
- 34078
+ 33323
5
65
- 10613
+ 10378
@@ -16963,27 +16936,27 @@
static_asserts
- 183493
+ 183028
id
- 183493
+ 183028
condition
- 183493
+ 183028
message
- 41092
+ 40988
location
- 23921
+ 23861
enclosing
- 6647
+ 6630
@@ -16997,7 +16970,7 @@
1
2
- 183493
+ 183028
@@ -17013,7 +16986,7 @@
1
2
- 183493
+ 183028
@@ -17029,7 +17002,7 @@
1
2
- 183493
+ 183028
@@ -17045,7 +17018,7 @@
1
2
- 183493
+ 183028
@@ -17061,7 +17034,7 @@
1
2
- 183493
+ 183028
@@ -17077,7 +17050,7 @@
1
2
- 183493
+ 183028
@@ -17093,7 +17066,7 @@
1
2
- 183493
+ 183028
@@ -17109,7 +17082,7 @@
1
2
- 183493
+ 183028
@@ -17125,32 +17098,32 @@
1
2
- 30232
+ 30155
2
3
- 673
+ 671
3
4
- 3876
+ 3866
4
12
- 2184
+ 2178
12
17
- 3315
+ 3306
17
513
- 811
+ 809
@@ -17166,32 +17139,32 @@
1
2
- 30232
+ 30155
2
3
- 673
+ 671
3
4
- 3876
+ 3866
4
12
- 2184
+ 2178
12
17
- 3315
+ 3306
17
513
- 811
+ 809
@@ -17207,12 +17180,12 @@
1
2
- 38079
+ 37983
2
33
- 3012
+ 3005
@@ -17228,7 +17201,7 @@
1
2
- 32166
+ 32084
2
@@ -17238,17 +17211,17 @@
3
4
- 3625
+ 3616
4
12
- 1985
+ 1980
12
43
- 2961
+ 2953
@@ -17264,37 +17237,37 @@
1
2
- 4489
+ 4477
2
3
- 3893
+ 3883
3
4
- 1873
+ 1868
4
5
- 112
+ 111
5
6
- 5024
+ 5011
6
13
- 457
+ 456
14
15
- 2814
+ 2807
16
@@ -17304,12 +17277,12 @@
17
18
- 4670
+ 4658
19
52
- 526
+ 525
@@ -17325,37 +17298,37 @@
1
2
- 4489
+ 4477
2
3
- 3893
+ 3883
3
4
- 1873
+ 1868
4
5
- 112
+ 111
5
6
- 5024
+ 5011
6
13
- 457
+ 456
14
15
- 2814
+ 2807
16
@@ -17365,12 +17338,12 @@
17
18
- 4670
+ 4658
19
52
- 526
+ 525
@@ -17386,22 +17359,22 @@
1
2
- 7243
+ 7224
2
3
- 8158
+ 8137
3
4
- 8270
+ 8249
4
7
- 250
+ 249
@@ -17417,32 +17390,32 @@
1
2
- 5326
+ 5313
2
3
- 8537
+ 8516
3
4
- 1597
+ 1593
4
5
- 5041
+ 5028
5
13
- 517
+ 516
13
14
- 2814
+ 2807
16
@@ -17463,17 +17436,17 @@
1
2
- 5481
+ 5468
2
3
- 561
+ 559
3
210
- 500
+ 499
223
@@ -17494,17 +17467,17 @@
1
2
- 5481
+ 5468
2
3
- 561
+ 559
3
210
- 500
+ 499
223
@@ -17525,17 +17498,17 @@
1
2
- 5645
+ 5631
2
3
- 552
+ 551
3
2936
- 448
+ 447
@@ -17551,17 +17524,17 @@
1
2
- 5628
+ 5614
2
3
- 569
+ 568
3
1929
- 448
+ 447
@@ -17571,23 +17544,23 @@
params
- 6992280
+ 6965543
id
- 6965639
+ 6939004
function
- 3369817
+ 3356931
index
- 8004
+ 7974
type_id
- 1226832
+ 1222140
@@ -17601,7 +17574,7 @@
1
2
- 6965639
+ 6939004
@@ -17617,7 +17590,7 @@
1
2
- 6965639
+ 6939004
@@ -17633,12 +17606,12 @@
1
2
- 6938999
+ 6912466
2
3
- 26640
+ 26538
@@ -17654,27 +17627,27 @@
1
2
- 1464594
+ 1458993
2
3
- 909774
+ 906295
3
4
- 561823
+ 559675
4
5
- 277660
+ 276598
5
65
- 155964
+ 155368
@@ -17690,27 +17663,27 @@
1
2
- 1464594
+ 1458993
2
3
- 909774
+ 906295
3
4
- 561823
+ 559675
4
5
- 277660
+ 276598
5
65
- 155964
+ 155368
@@ -17726,22 +17699,22 @@
1
2
- 1765517
+ 1758766
2
3
- 1009581
+ 1005721
3
4
- 437502
+ 435829
4
11
- 157215
+ 156614
@@ -17757,32 +17730,32 @@
2
3
- 4002
+ 3987
6
7
- 2001
+ 1993
14
18
- 625
+ 622
23
138
- 625
+ 622
323
15234
- 625
+ 622
26943
26944
- 125
+ 124
@@ -17798,32 +17771,32 @@
2
3
- 4002
+ 3987
6
7
- 2001
+ 1993
14
18
- 625
+ 622
23
138
- 625
+ 622
323
15234
- 625
+ 622
26943
26944
- 125
+ 124
@@ -17839,32 +17812,32 @@
1
2
- 4002
+ 3987
2
3
- 2001
+ 1993
4
7
- 625
+ 622
9
54
- 625
+ 622
115
2700
- 625
+ 622
7528
7529
- 125
+ 124
@@ -17880,27 +17853,27 @@
1
2
- 741677
+ 738841
2
3
- 242264
+ 241338
3
5
- 93929
+ 93569
5
13
- 93804
+ 93445
13
2570
- 55156
+ 54945
@@ -17916,27 +17889,27 @@
1
2
- 824099
+ 820948
2
3
- 181354
+ 180661
3
6
- 106686
+ 106278
6
27
- 92553
+ 92199
27
2558
- 22137
+ 22053
@@ -17952,17 +17925,17 @@
1
2
- 1001202
+ 997373
2
3
- 167221
+ 166581
3
65
- 58408
+ 58185
@@ -17972,15 +17945,15 @@
overrides
- 169801
+ 169371
new
- 160547
+ 160140
old
- 19122
+ 19073
@@ -17994,12 +17967,12 @@
1
2
- 151301
+ 150917
2
4
- 9245
+ 9222
@@ -18015,32 +17988,32 @@
1
2
- 10463
+ 10436
2
3
- 2589
+ 2583
3
4
- 1735
+ 1730
4
6
- 1579
+ 1575
6
18
- 1441
+ 1438
18
230
- 1312
+ 1308
@@ -18050,19 +18023,19 @@
membervariables
- 1491583
+ 1491860
id
- 1489139
+ 1489415
type_id
- 453830
+ 453914
name
- 638893
+ 639011
@@ -18076,12 +18049,12 @@
1
2
- 1486803
+ 1487079
2
4
- 2335
+ 2336
@@ -18097,7 +18070,7 @@
1
2
- 1489139
+ 1489415
@@ -18113,22 +18086,22 @@
1
2
- 336774
+ 336836
2
3
- 71917
+ 71930
3
10
- 35035
+ 35041
10
4422
- 10103
+ 10105
@@ -18144,22 +18117,22 @@
1
2
- 354264
+ 354330
2
3
- 63932
+ 63944
3
49
- 34111
+ 34118
56
2175
- 1520
+ 1521
@@ -18175,22 +18148,22 @@
1
2
- 419772
+ 419850
2
3
- 121781
+ 121804
3
5
- 57305
+ 57316
5
654
- 40032
+ 40040
@@ -18206,17 +18179,17 @@
1
2
- 522217
+ 522314
2
3
- 72297
+ 72311
3
658
- 44378
+ 44386
@@ -18226,19 +18199,19 @@
globalvariables
- 466518
+ 486788
id
- 466518
+ 486788
type_id
- 10380
+ 10341
name
- 112564
+ 112134
@@ -18252,7 +18225,7 @@
1
2
- 466518
+ 486788
@@ -18268,7 +18241,7 @@
1
2
- 466518
+ 486788
@@ -18284,32 +18257,32 @@
1
2
- 7004
+ 6977
2
3
- 375
+ 373
3
5
- 750
+ 747
5
20
- 875
+ 872
20
74
- 875
+ 872
152
- 2037
- 500
+ 2214
+ 498
@@ -18325,32 +18298,32 @@
1
2
- 7129
+ 7101
2
3
- 375
+ 373
3
5
- 750
+ 747
5
20
- 750
+ 747
20
74
- 875
+ 872
124
226
- 500
+ 498
@@ -18366,17 +18339,17 @@
1
2
- 95430
+ 95065
2
7
- 8755
+ 8721
7
- 500
- 8379
+ 604
+ 8347
@@ -18392,17 +18365,17 @@
1
2
- 97055
+ 96684
2
3
- 15258
+ 15200
3
4
- 250
+ 249
@@ -18412,19 +18385,19 @@
localvariables
- 734804
+ 727548
id
- 734804
+ 727548
type_id
- 54064
+ 53530
name
- 102754
+ 101739
@@ -18438,7 +18411,7 @@
1
2
- 734804
+ 727548
@@ -18454,7 +18427,7 @@
1
2
- 734804
+ 727548
@@ -18470,37 +18443,37 @@
1
2
- 29233
+ 28944
2
3
- 7920
+ 7842
3
4
- 4073
+ 4033
4
6
- 4098
+ 4057
6
12
- 4199
+ 4157
12
166
- 4057
+ 4017
168
19320
- 482
+ 477
@@ -18516,22 +18489,22 @@
1
2
- 38827
+ 38444
2
3
- 6781
+ 6714
3
5
- 4519
+ 4474
5
3502
- 3935
+ 3897
@@ -18547,32 +18520,32 @@
1
2
- 63217
+ 62592
2
3
- 16238
+ 16077
3
4
- 6611
+ 6545
4
8
- 8228
+ 8147
8
135
- 7709
+ 7633
135
7544
- 749
+ 742
@@ -18588,22 +18561,22 @@
1
2
- 85502
+ 84658
2
3
- 8520
+ 8436
3
15
- 7766
+ 7689
15
1509
- 964
+ 955
@@ -18613,15 +18586,15 @@
autoderivation
- 229507
+ 228629
var
- 229507
+ 228629
derivation_type
- 625
+ 622
@@ -18635,7 +18608,7 @@
1
2
- 229507
+ 228629
@@ -18651,27 +18624,27 @@
38
39
- 125
+ 124
79
80
- 125
+ 124
454
455
- 125
+ 124
530
531
- 125
+ 124
734
735
- 125
+ 124
@@ -18681,15 +18654,15 @@
orphaned_variables
- 55640
+ 55584
var
- 55640
+ 55584
function
- 51534
+ 51483
@@ -18703,7 +18676,7 @@
1
2
- 55640
+ 55584
@@ -18719,12 +18692,12 @@
1
2
- 50465
+ 50415
2
47
- 1069
+ 1068
@@ -18734,19 +18707,19 @@
enumconstants
- 343781
+ 343845
id
- 343781
+ 343845
parent
- 41173
+ 41181
index
- 13905
+ 13908
type_id
@@ -18754,11 +18727,11 @@
name
- 343400
+ 343464
location
- 316459
+ 316517
@@ -18772,7 +18745,7 @@
1
2
- 343781
+ 343845
@@ -18788,7 +18761,7 @@
1
2
- 343781
+ 343845
@@ -18804,7 +18777,7 @@
1
2
- 343781
+ 343845
@@ -18820,7 +18793,7 @@
1
2
- 343781
+ 343845
@@ -18836,7 +18809,7 @@
1
2
- 343781
+ 343845
@@ -18852,22 +18825,22 @@
1
2
- 1520
+ 1521
2
3
- 5703
+ 5704
3
4
- 8690
+ 8692
4
5
- 5486
+ 5487
5
@@ -18877,7 +18850,7 @@
6
7
- 2661
+ 2662
7
@@ -18892,7 +18865,7 @@
11
17
- 3150
+ 3151
17
@@ -18918,22 +18891,22 @@
1
2
- 1520
+ 1521
2
3
- 5703
+ 5704
3
4
- 8690
+ 8692
4
5
- 5486
+ 5487
5
@@ -18943,7 +18916,7 @@
6
7
- 2661
+ 2662
7
@@ -18958,7 +18931,7 @@
11
17
- 3150
+ 3151
17
@@ -18984,7 +18957,7 @@
1
2
- 41173
+ 41181
@@ -19000,22 +18973,22 @@
1
2
- 1520
+ 1521
2
3
- 5703
+ 5704
3
4
- 8690
+ 8692
4
5
- 5486
+ 5487
5
@@ -19025,7 +18998,7 @@
6
7
- 2661
+ 2662
7
@@ -19040,7 +19013,7 @@
11
17
- 3150
+ 3151
17
@@ -19071,17 +19044,17 @@
2
3
- 5920
+ 5921
3
4
- 8745
+ 8746
4
5
- 5431
+ 5432
5
@@ -19096,12 +19069,12 @@
7
8
- 1846
+ 1847
8
11
- 3693
+ 3694
11
@@ -19239,7 +19212,7 @@
1
2
- 13905
+ 13908
@@ -19447,7 +19420,7 @@
1
2
- 343020
+ 343084
2
@@ -19468,7 +19441,7 @@
1
2
- 343020
+ 343084
2
@@ -19489,7 +19462,7 @@
1
2
- 343400
+ 343464
@@ -19505,7 +19478,7 @@
1
2
- 343400
+ 343464
@@ -19521,7 +19494,7 @@
1
2
- 343020
+ 343084
2
@@ -19542,7 +19515,7 @@
1
2
- 315427
+ 315485
2
@@ -19563,7 +19536,7 @@
1
2
- 316459
+ 316517
@@ -19579,7 +19552,7 @@
1
2
- 315427
+ 315485
2
@@ -19600,7 +19573,7 @@
1
2
- 316459
+ 316517
@@ -19616,7 +19589,7 @@
1
2
- 315427
+ 315485
2
@@ -19631,31 +19604,31 @@
builtintypes
- 7004
+ 7101
id
- 7004
+ 7101
name
- 7004
+ 7101
kind
- 7004
+ 7101
size
- 875
+ 872
sign
- 375
+ 373
alignment
- 625
+ 622
@@ -19669,7 +19642,7 @@
1
2
- 7004
+ 7101
@@ -19685,7 +19658,7 @@
1
2
- 7004
+ 7101
@@ -19701,7 +19674,7 @@
1
2
- 7004
+ 7101
@@ -19717,7 +19690,7 @@
1
2
- 7004
+ 7101
@@ -19733,7 +19706,7 @@
1
2
- 7004
+ 7101
@@ -19749,7 +19722,7 @@
1
2
- 7004
+ 7101
@@ -19765,7 +19738,7 @@
1
2
- 7004
+ 7101
@@ -19781,7 +19754,7 @@
1
2
- 7004
+ 7101
@@ -19797,7 +19770,7 @@
1
2
- 7004
+ 7101
@@ -19813,7 +19786,7 @@
1
2
- 7004
+ 7101
@@ -19829,7 +19802,7 @@
1
2
- 7004
+ 7101
@@ -19845,7 +19818,7 @@
1
2
- 7004
+ 7101
@@ -19861,7 +19834,7 @@
1
2
- 7004
+ 7101
@@ -19877,7 +19850,7 @@
1
2
- 7004
+ 7101
@@ -19893,7 +19866,7 @@
1
2
- 7004
+ 7101
@@ -19909,37 +19882,37 @@
1
2
- 125
+ 124
2
3
- 125
+ 124
- 7
- 8
- 125
+ 8
+ 9
+ 124
9
10
- 125
+ 124
11
12
- 125
+ 124
12
13
- 125
+ 124
14
15
- 125
+ 124
@@ -19955,37 +19928,37 @@
1
2
- 125
+ 124
2
3
- 125
+ 124
- 7
- 8
- 125
+ 8
+ 9
+ 124
9
10
- 125
+ 124
11
12
- 125
+ 124
12
13
- 125
+ 124
14
15
- 125
+ 124
@@ -20001,37 +19974,37 @@
1
2
- 125
+ 124
2
3
- 125
+ 124
- 7
- 8
- 125
+ 8
+ 9
+ 124
9
10
- 125
+ 124
11
12
- 125
+ 124
12
13
- 125
+ 124
14
15
- 125
+ 124
@@ -20047,12 +20020,12 @@
1
2
- 250
+ 249
3
4
- 625
+ 622
@@ -20068,12 +20041,12 @@
1
2
- 500
+ 498
2
3
- 375
+ 373
@@ -20089,17 +20062,17 @@
6
7
- 125
+ 124
12
13
- 125
+ 124
- 38
- 39
- 125
+ 39
+ 40
+ 124
@@ -20115,17 +20088,17 @@
6
7
- 125
+ 124
12
13
- 125
+ 124
- 38
- 39
- 125
+ 39
+ 40
+ 124
@@ -20141,17 +20114,17 @@
6
7
- 125
+ 124
12
13
- 125
+ 124
- 38
- 39
- 125
+ 39
+ 40
+ 124
@@ -20167,12 +20140,12 @@
5
6
- 250
+ 249
7
8
- 125
+ 124
@@ -20188,7 +20161,7 @@
5
6
- 375
+ 373
@@ -20204,22 +20177,27 @@
8
9
- 250
+ 124
+
+
+ 9
+ 10
+ 124
10
11
- 125
+ 124
13
14
- 125
+ 124
17
18
- 125
+ 124
@@ -20235,22 +20213,27 @@
8
9
- 250
+ 124
+
+
+ 9
+ 10
+ 124
10
11
- 125
+ 124
13
14
- 125
+ 124
17
18
- 125
+ 124
@@ -20266,22 +20249,27 @@
8
9
- 250
+ 124
+
+
+ 9
+ 10
+ 124
10
11
- 125
+ 124
13
14
- 125
+ 124
17
18
- 125
+ 124
@@ -20297,7 +20285,7 @@
2
3
- 625
+ 622
@@ -20313,7 +20301,7 @@
3
4
- 625
+ 622
@@ -20323,23 +20311,23 @@
derivedtypes
- 3047881
+ 3036227
id
- 3047881
+ 3036227
name
- 1475975
+ 1470331
kind
- 750
+ 747
type_id
- 1949998
+ 1942542
@@ -20353,7 +20341,7 @@
1
2
- 3047881
+ 3036227
@@ -20369,7 +20357,7 @@
1
2
- 3047881
+ 3036227
@@ -20385,7 +20373,7 @@
1
2
- 3047881
+ 3036227
@@ -20401,17 +20389,17 @@
1
2
- 1358908
+ 1353712
2
30
- 110938
+ 110514
30
4274
- 6128
+ 6105
@@ -20427,7 +20415,7 @@
1
2
- 1475975
+ 1470331
@@ -20443,17 +20431,17 @@
1
2
- 1359033
+ 1353836
2
30
- 110813
+ 110390
30
4274
- 6128
+ 6105
@@ -20469,32 +20457,32 @@
787
788
- 125
+ 124
2333
2334
- 125
+ 124
3647
3648
- 125
+ 124
4273
4274
- 125
+ 124
5569
5570
- 125
+ 124
7760
7761
- 125
+ 124
@@ -20510,32 +20498,32 @@
1
2
- 125
+ 124
733
734
- 125
+ 124
1613
1614
- 125
+ 124
2433
2434
- 125
+ 124
2678
2679
- 125
+ 124
4343
4344
- 125
+ 124
@@ -20551,32 +20539,32 @@
208
209
- 125
+ 124
2333
2334
- 125
+ 124
3643
3644
- 125
+ 124
4273
4274
- 125
+ 124
5502
5503
- 125
+ 124
7760
7761
- 125
+ 124
@@ -20592,22 +20580,22 @@
1
2
- 1317134
+ 1312097
2
3
- 378593
+ 377145
3
4
- 122945
+ 122475
4
135
- 131325
+ 130823
@@ -20623,22 +20611,22 @@
1
2
- 1318635
+ 1313592
2
3
- 378593
+ 377145
3
4
- 121444
+ 120980
4
135
- 131325
+ 130823
@@ -20654,22 +20642,22 @@
1
2
- 1319010
+ 1313966
2
3
- 379468
+ 378017
3
4
- 122945
+ 122475
4
6
- 128574
+ 128082
@@ -20679,19 +20667,19 @@
pointerishsize
- 2252923
+ 2244308
id
- 2252923
+ 2244308
size
- 250
+ 249
alignment
- 250
+ 249
@@ -20705,7 +20693,7 @@
1
2
- 2252923
+ 2244308
@@ -20721,7 +20709,7 @@
1
2
- 2252923
+ 2244308
@@ -20737,12 +20725,12 @@
3
4
- 125
+ 124
18010
18011
- 125
+ 124
@@ -20758,7 +20746,7 @@
1
2
- 250
+ 249
@@ -20774,12 +20762,12 @@
3
4
- 125
+ 124
18010
18011
- 125
+ 124
@@ -20795,7 +20783,7 @@
1
2
- 250
+ 249
@@ -20805,23 +20793,23 @@
arraysizes
- 88676
+ 88337
id
- 88676
+ 88337
num_elements
- 18510
+ 18439
bytesize
- 22888
+ 22800
alignment
- 625
+ 622
@@ -20835,7 +20823,7 @@
1
2
- 88676
+ 88337
@@ -20851,7 +20839,7 @@
1
2
- 88676
+ 88337
@@ -20867,7 +20855,7 @@
1
2
- 88676
+ 88337
@@ -20883,37 +20871,37 @@
1
2
- 250
+ 249
2
3
- 8880
+ 8846
3
4
- 250
+ 249
4
5
- 5628
+ 5606
6
7
- 1625
+ 1619
8
27
- 1500
+ 1495
34
57
- 375
+ 373
@@ -20929,22 +20917,22 @@
1
2
- 9505
+ 9469
2
3
- 6628
+ 6603
3
5
- 1250
+ 1245
5
11
- 1125
+ 1121
@@ -20960,22 +20948,22 @@
1
2
- 9505
+ 9469
2
3
- 6628
+ 6603
3
4
- 1000
+ 996
4
6
- 1375
+ 1370
@@ -20991,37 +20979,37 @@
1
2
- 625
+ 622
2
3
- 14758
+ 14702
3
4
- 375
+ 373
4
5
- 3251
+ 3239
5
7
- 1500
+ 1495
7
17
- 1751
+ 1744
17
45
- 625
+ 622
@@ -21037,22 +21025,22 @@
1
2
- 16509
+ 16446
2
3
- 4002
+ 3987
3
5
- 1751
+ 1744
5
7
- 625
+ 622
@@ -21068,22 +21056,22 @@
1
2
- 16634
+ 16570
2
3
- 4002
+ 3987
3
5
- 1876
+ 1868
5
6
- 375
+ 373
@@ -21099,27 +21087,27 @@
10
11
- 125
+ 124
86
87
- 125
+ 124
91
92
- 125
+ 124
187
188
- 125
+ 124
335
336
- 125
+ 124
@@ -21135,22 +21123,22 @@
4
5
- 125
+ 124
16
17
- 250
+ 249
80
81
- 125
+ 124
137
138
- 125
+ 124
@@ -21166,27 +21154,27 @@
4
5
- 125
+ 124
19
20
- 125
+ 124
20
21
- 125
+ 124
80
81
- 125
+ 124
138
139
- 125
+ 124
@@ -21196,15 +21184,15 @@
typedefbase
- 2164787
+ 2162643
id
- 2164787
+ 2162643
type_id
- 901360
+ 900467
@@ -21218,7 +21206,7 @@
1
2
- 2164787
+ 2162643
@@ -21234,22 +21222,22 @@
1
2
- 727340
+ 726620
2
3
- 81343
+ 81262
3
6
- 69667
+ 69598
6
2848
- 23008
+ 22985
@@ -21259,15 +21247,15 @@
decltypes
- 812151
+ 812302
id
- 27485
+ 27490
expr
- 812151
+ 812302
kind
@@ -21275,7 +21263,7 @@
base_type
- 3331
+ 3332
parentheses_would_change_meaning
@@ -21293,27 +21281,27 @@
1
2
- 9709
+ 9711
2
3
- 3638
+ 3639
4
5
- 3616
+ 3617
6
9
- 547
+ 548
23
24
- 3243
+ 3244
29
@@ -21328,7 +21316,7 @@
171
172
- 3068
+ 3069
173
@@ -21349,7 +21337,7 @@
1
2
- 27485
+ 27490
@@ -21365,7 +21353,7 @@
1
2
- 27485
+ 27490
@@ -21381,7 +21369,7 @@
1
2
- 27485
+ 27490
@@ -21397,7 +21385,7 @@
1
2
- 812151
+ 812302
@@ -21413,7 +21401,7 @@
1
2
- 812151
+ 812302
@@ -21429,7 +21417,7 @@
1
2
- 812151
+ 812302
@@ -21445,7 +21433,7 @@
1
2
- 812151
+ 812302
@@ -21617,7 +21605,7 @@
1
2
- 3331
+ 3332
@@ -21633,7 +21621,7 @@
1
2
- 3331
+ 3332
@@ -22003,7 +21991,7 @@
1
2
- 4375
+ 4374
2
@@ -22023,19 +22011,19 @@
usertypes
- 4962767
+ 4863363
id
- 4962767
+ 4863363
name
- 1069983
+ 1051136
kind
- 161
+ 158
@@ -22049,7 +22037,7 @@
1
2
- 4962767
+ 4863363
@@ -22065,7 +22053,7 @@
1
2
- 4962767
+ 4863363
@@ -22081,22 +22069,22 @@
1
2
- 740028
+ 727655
2
3
- 195960
+ 192440
3
7
- 85634
+ 83738
7
- 30188
- 48359
+ 30282
+ 47302
@@ -22112,12 +22100,12 @@
1
2
- 1003916
+ 986532
2
10
- 66066
+ 64603
@@ -22151,8 +22139,8 @@
13
- 1426
- 1427
+ 1563
+ 1564
13
@@ -22166,13 +22154,13 @@
13
- 19665
- 19666
+ 19666
+ 19667
13
- 20058
- 20059
+ 20075
+ 20076
13
@@ -22181,13 +22169,13 @@
13
- 85546
- 85547
+ 86007
+ 86008
13
- 151042
- 151043
+ 151219
+ 151220
13
@@ -22247,8 +22235,8 @@
13
- 10827
- 10828
+ 10838
+ 10839
13
@@ -22257,8 +22245,8 @@
13
- 51351
- 51352
+ 51707
+ 51708
13
@@ -22269,19 +22257,19 @@
usertypesize
- 1624097
+ 1595582
id
- 1624097
+ 1595582
size
- 1887
+ 1846
alignment
- 107
+ 105
@@ -22295,7 +22283,7 @@
1
2
- 1624097
+ 1595582
@@ -22311,7 +22299,7 @@
1
2
- 1624097
+ 1595582
@@ -22327,52 +22315,52 @@
1
2
- 593
+ 580
2
3
- 256
+ 250
3
4
- 107
+ 105
4
6
- 121
+ 118
6
8
- 148
+ 145
8
14
- 148
+ 145
14
26
- 148
+ 145
26
86
- 148
+ 145
96
- 1588
- 148
+ 1592
+ 145
1733
- 92740
- 67
+ 93158
+ 65
@@ -22388,17 +22376,17 @@
1
2
- 1550
+ 1516
2
3
- 215
+ 210
3
6
- 121
+ 118
@@ -22437,18 +22425,18 @@
13
- 1909
- 1910
+ 2046
+ 2047
13
- 10475
- 10476
+ 10484
+ 10485
13
- 107926
- 107927
+ 108344
+ 108345
13
@@ -22505,26 +22493,26 @@
usertype_final
- 11506
+ 11462
id
- 11506
+ 11462
usertype_uuid
- 50407
+ 50280
id
- 50407
+ 50280
uuid
- 49898
+ 49771
@@ -22538,7 +22526,7 @@
1
2
- 50407
+ 50280
@@ -22554,12 +22542,12 @@
1
2
- 49389
+ 49263
2
3
- 509
+ 508
@@ -22569,11 +22557,11 @@
usertype_alias_kind
- 2164830
+ 2162686
id
- 2164787
+ 2162643
alias_kind
@@ -22591,7 +22579,7 @@
1
2
- 2164744
+ 2162600
2
@@ -22627,26 +22615,26 @@
nontype_template_parameters
- 961918
+ 960966
id
- 961918
+ 960966
type_template_type_constraint
- 29059
+ 29057
id
- 14322
+ 14321
constraint
- 27839
+ 27836
@@ -22660,7 +22648,7 @@
1
2
- 10937
+ 10936
2
@@ -22696,7 +22684,7 @@
1
2
- 26618
+ 26616
2
@@ -22711,19 +22699,19 @@
mangled_name
- 7827011
+ 7805181
id
- 7827011
+ 7805181
mangled_name
- 6329773
+ 6313668
is_complete
- 250
+ 249
@@ -22737,7 +22725,7 @@
1
2
- 7827011
+ 7805181
@@ -22753,7 +22741,7 @@
1
2
- 7827011
+ 7805181
@@ -22769,12 +22757,12 @@
1
2
- 6000083
+ 5984989
2
1127
- 329690
+ 328678
@@ -22790,7 +22778,7 @@
1
2
- 6329773
+ 6313668
@@ -22806,12 +22794,12 @@
6
7
- 125
+ 124
- 62574
- 62575
- 125
+ 62639
+ 62640
+ 124
@@ -22827,12 +22815,12 @@
6
7
- 125
+ 124
- 50603
- 50604
- 125
+ 50668
+ 50669
+ 124
@@ -22842,59 +22830,59 @@
is_pod_class
- 742865
+ 744607
id
- 742865
+ 744607
is_standard_layout_class
- 1338834
+ 1314787
id
- 1338834
+ 1314787
is_complete
- 1604003
+ 1574126
id
- 1604003
+ 1574126
is_class_template
- 290846
+ 284420
id
- 290846
+ 284420
class_instantiation
- 1320911
+ 1297973
to
- 1317027
+ 1294176
from
- 91190
+ 89303
@@ -22908,12 +22896,12 @@
1
2
- 1314303
+ 1291512
2
8
- 2724
+ 2663
@@ -22929,47 +22917,47 @@
1
2
- 26607
+ 25952
2
3
- 16533
+ 16154
3
4
- 9021
+ 8835
4
5
- 5974
+ 5841
5
7
- 7700
+ 7529
7
10
- 6904
+ 6830
10
17
- 7336
+ 7226
17
53
- 6904
+ 6765
53
4219
- 4207
+ 4167
@@ -22979,19 +22967,19 @@
class_template_argument
- 3486149
+ 3419922
type_id
- 1623773
+ 1594052
index
- 1510
+ 1476
arg_type
- 1029795
+ 1008977
@@ -23005,27 +22993,27 @@
1
2
- 675431
+ 663407
2
3
- 488142
+ 479235
3
4
- 307433
+ 302012
4
7
- 123542
+ 120820
7
113
- 29223
+ 28576
@@ -23041,22 +23029,22 @@
1
2
- 709847
+ 697654
2
3
- 503407
+ 493648
3
4
- 305505
+ 300047
4
113
- 105013
+ 102701
@@ -23077,32 +23065,32 @@
4
5
- 957
+ 936
5
30
- 121
+ 118
33
90
- 121
+ 118
95
453
- 121
+ 118
643
- 6818
- 121
+ 6819
+ 118
- 11328
- 120405
- 53
+ 11329
+ 120877
+ 52
@@ -23123,32 +23111,32 @@
4
5
- 957
+ 936
5
16
- 134
+ 131
16
35
- 121
+ 118
37
155
- 121
+ 118
196
3251
- 121
+ 118
- 10040
- 43709
- 40
+ 10075
+ 43772
+ 39
@@ -23164,27 +23152,27 @@
1
2
- 646113
+ 633050
2
3
- 211415
+ 206959
3
4
- 61737
+ 60608
4
11
- 78284
+ 76762
11
- 11552
- 32244
+ 11634
+ 31596
@@ -23200,17 +23188,17 @@
1
2
- 908181
+ 889448
2
3
- 98486
+ 96886
3
22
- 23127
+ 22642
@@ -23220,11 +23208,11 @@
class_template_argument_value
- 640309
+ 639675
type_id
- 258356
+ 258100
index
@@ -23232,7 +23220,7 @@
arg_value
- 640138
+ 639504
@@ -23246,17 +23234,17 @@
1
2
- 195574
+ 195380
2
3
- 54442
+ 54388
3
8
- 8339
+ 8331
@@ -23272,22 +23260,22 @@
1
2
- 185694
+ 185511
2
3
- 50807
+ 50757
3
45
- 19501
+ 19482
45
154
- 2352
+ 2349
@@ -23415,12 +23403,12 @@
1
2
- 639967
+ 639333
2
3
- 171
+ 170
@@ -23436,7 +23424,7 @@
1
2
- 640138
+ 639504
@@ -23446,15 +23434,15 @@
is_proxy_class_for
- 61845
+ 60476
id
- 61845
+ 60476
templ_param_id
- 58433
+ 57140
@@ -23468,7 +23456,7 @@
1
2
- 61845
+ 60476
@@ -23484,12 +23472,12 @@
1
2
- 57516
+ 56243
2
79
- 917
+ 896
@@ -23499,19 +23487,19 @@
type_mentions
- 5812069
+ 5813149
id
- 5812069
+ 5813149
type_id
- 275231
+ 275282
location
- 5766496
+ 5767568
kind
@@ -23529,7 +23517,7 @@
1
2
- 5812069
+ 5813149
@@ -23545,7 +23533,7 @@
1
2
- 5812069
+ 5813149
@@ -23561,7 +23549,7 @@
1
2
- 5812069
+ 5813149
@@ -23577,42 +23565,42 @@
1
2
- 136121
+ 136147
2
3
- 30907
+ 30912
3
4
- 11135
+ 11137
4
5
- 14665
+ 14668
5
7
- 19934
+ 19938
7
12
- 21781
+ 21785
12
28
- 21021
+ 21025
28
8907
- 19663
+ 19666
@@ -23628,42 +23616,42 @@
1
2
- 136121
+ 136147
2
3
- 30907
+ 30912
3
4
- 11135
+ 11137
4
5
- 14665
+ 14668
5
7
- 19934
+ 19938
7
12
- 21781
+ 21785
12
28
- 21021
+ 21025
28
8907
- 19663
+ 19666
@@ -23679,7 +23667,7 @@
1
2
- 275231
+ 275282
@@ -23695,12 +23683,12 @@
1
2
- 5720923
+ 5721986
2
3
- 45573
+ 45581
@@ -23716,12 +23704,12 @@
1
2
- 5720923
+ 5721986
2
3
- 45573
+ 45581
@@ -23737,7 +23725,7 @@
1
2
- 5766496
+ 5767568
@@ -23795,26 +23783,26 @@
is_function_template
- 1383517
+ 1382147
id
- 1383517
+ 1382147
function_instantiation
- 1221386
+ 1220177
to
- 1221386
+ 1220177
from
- 229146
+ 228919
@@ -23828,7 +23816,7 @@
1
2
- 1221386
+ 1220177
@@ -23844,27 +23832,27 @@
1
2
- 139378
+ 139240
2
3
- 53031
+ 52978
3
9
- 18047
+ 18029
9
103
- 17192
+ 17175
103
1532
- 1496
+ 1495
@@ -23874,11 +23862,11 @@
function_template_argument
- 3119179
+ 3116090
function_id
- 1824318
+ 1822511
index
@@ -23886,7 +23874,7 @@
arg_type
- 374084
+ 373713
@@ -23900,22 +23888,22 @@
1
2
- 982917
+ 981943
2
3
- 518637
+ 518123
3
4
- 215674
+ 215461
4
15
- 107088
+ 106982
@@ -23931,22 +23919,22 @@
1
2
- 1006952
+ 1005955
2
3
- 516242
+ 515731
3
4
- 212937
+ 212726
4
9
- 88185
+ 88098
@@ -24084,37 +24072,37 @@
1
2
- 219395
+ 219178
2
3
- 33059
+ 33026
3
4
- 25104
+ 25079
4
6
- 28440
+ 28411
6
11
- 29167
+ 29138
11
76
- 29338
+ 29309
79
2452
- 9579
+ 9570
@@ -24130,17 +24118,17 @@
1
2
- 322378
+ 322059
2
3
- 40329
+ 40289
3
15
- 11376
+ 11364
@@ -24150,11 +24138,11 @@
function_template_argument_value
- 568375
+ 567812
function_id
- 247023
+ 246778
index
@@ -24162,7 +24150,7 @@
arg_value
- 564996
+ 564437
@@ -24176,17 +24164,17 @@
1
2
- 190057
+ 189868
2
3
- 53843
+ 53790
3
8
- 3122
+ 3118
@@ -24202,22 +24190,22 @@
1
2
- 181375
+ 181195
2
3
- 46060
+ 46014
3
54
- 18646
+ 18628
54
113
- 940
+ 939
@@ -24355,12 +24343,12 @@
1
2
- 561618
+ 561062
2
3
- 3378
+ 3375
@@ -24376,7 +24364,7 @@
1
2
- 564996
+ 564437
@@ -24386,26 +24374,26 @@
is_variable_template
- 58783
+ 58559
id
- 58783
+ 58559
variable_instantiation
- 395853
+ 420379
to
- 395853
+ 420379
from
- 35145
+ 35010
@@ -24419,7 +24407,7 @@
1
2
- 395853
+ 420379
@@ -24435,47 +24423,47 @@
1
2
- 15383
+ 15075
2
3
- 3752
+ 3987
3
4
- 2251
+ 2242
4
6
- 2876
+ 2865
6
8
- 2251
+ 2242
8
11
- 2751
+ 2741
11
- 25
- 2876
+ 30
+ 2741
- 26
- 181
- 2751
+ 30
+ 105
+ 2741
- 388
- 447
- 250
+ 180
+ 546
+ 373
@@ -24485,19 +24473,19 @@
variable_template_argument
- 719414
+ 766875
variable_id
- 379093
+ 399697
index
- 2001
+ 1993
arg_type
- 255397
+ 256164
@@ -24511,22 +24499,22 @@
1
2
- 151962
+ 155493
2
3
- 173725
+ 189631
3
4
- 36521
+ 36381
4
17
- 16884
+ 18190
@@ -24542,22 +24530,22 @@
1
2
- 165470
+ 170444
2
3
- 165345
+ 179788
3
4
- 33769
+ 33640
4
17
- 14508
+ 15823
@@ -24571,44 +24559,44 @@
12
- 23
- 24
- 875
+ 28
+ 29
+ 872
- 29
- 30
- 375
+ 34
+ 35
+ 373
- 32
- 33
- 125
+ 37
+ 38
+ 124
- 61
- 62
- 125
+ 66
+ 67
+ 124
- 135
- 136
- 125
+ 146
+ 147
+ 124
- 427
- 428
- 125
+ 438
+ 439
+ 124
- 1816
- 1817
- 125
+ 1960
+ 1961
+ 124
- 3031
- 3032
- 125
+ 3208
+ 3209
+ 124
@@ -24624,42 +24612,42 @@
1
2
- 875
+ 872
2
3
- 375
+ 373
5
6
- 125
+ 124
28
29
- 125
+ 124
54
55
- 125
+ 124
161
162
- 125
+ 124
- 731
- 732
- 125
+ 748
+ 749
+ 124
- 1321
- 1322
- 125
+ 1326
+ 1327
+ 124
@@ -24675,22 +24663,22 @@
1
2
- 176226
+ 175552
2
3
- 44150
+ 44604
3
6
- 21137
+ 21679
6
- 190
- 13883
+ 206
+ 14328
@@ -24706,17 +24694,17 @@
1
2
- 227756
+ 227757
2
3
- 24138
+ 24794
3
7
- 3502
+ 3613
@@ -24726,19 +24714,19 @@
variable_template_argument_value
- 20011
+ 19935
variable_id
- 14883
+ 14826
index
- 500
+ 498
arg_value
- 20011
+ 19935
@@ -24752,12 +24740,12 @@
1
2
- 13382
+ 13331
2
3
- 1500
+ 1495
@@ -24773,17 +24761,17 @@
1
2
- 10506
+ 10465
2
3
- 4002
+ 3987
4
5
- 375
+ 373
@@ -24799,22 +24787,22 @@
17
18
- 125
+ 124
27
28
- 125
+ 124
41
42
- 125
+ 124
46
47
- 125
+ 124
@@ -24830,22 +24818,22 @@
22
23
- 125
+ 124
29
30
- 125
+ 124
50
51
- 125
+ 124
59
60
- 125
+ 124
@@ -24861,7 +24849,7 @@
1
2
- 20011
+ 19935
@@ -24877,7 +24865,7 @@
1
2
- 20011
+ 19935
@@ -24887,15 +24875,15 @@
template_template_instantiation
- 7403
+ 7239
to
- 6945
+ 6791
from
- 4908
+ 4800
@@ -24909,12 +24897,12 @@
1
2
- 6796
+ 6646
2
15
- 148
+ 145
@@ -24930,17 +24918,17 @@
1
2
- 3209
+ 3138
2
3
- 1523
+ 1490
3
20
- 175
+ 171
@@ -24950,19 +24938,19 @@
template_template_argument
- 12352
+ 12079
type_id
- 7808
+ 7635
index
- 134
+ 131
arg_type
- 11597
+ 11340
@@ -24976,22 +24964,22 @@
1
2
- 6405
+ 6263
2
3
- 539
+ 527
3
8
- 647
+ 632
8
11
- 215
+ 210
@@ -25007,22 +24995,22 @@
1
2
- 6432
+ 6290
2
4
- 714
+ 698
4
10
- 593
+ 580
10
11
- 67
+ 65
@@ -25160,12 +25148,12 @@
1
2
- 11557
+ 11301
3
43
- 40
+ 39
@@ -25181,7 +25169,7 @@
1
2
- 11570
+ 11314
2
@@ -25196,11 +25184,11 @@
template_template_argument_value
- 795
+ 778
type_id
- 674
+ 659
index
@@ -25208,7 +25196,7 @@
arg_value
- 795
+ 778
@@ -25222,7 +25210,7 @@
1
2
- 674
+ 659
@@ -25238,12 +25226,12 @@
1
2
- 579
+ 567
2
3
- 67
+ 65
3
@@ -25306,7 +25294,7 @@
1
2
- 795
+ 778
@@ -25322,7 +25310,7 @@
1
2
- 795
+ 778
@@ -25448,15 +25436,15 @@
concept_instantiation
- 96781
+ 96774
to
- 96781
+ 96774
from
- 3684
+ 3683
@@ -25470,7 +25458,7 @@
1
2
- 96781
+ 96774
@@ -25566,22 +25554,22 @@
is_type_constraint
- 39490
+ 39487
concept_id
- 39490
+ 39487
concept_template_argument
- 120982
+ 120973
concept_id
- 81744
+ 81738
index
@@ -25589,7 +25577,7 @@
arg_type
- 22934
+ 22932
@@ -25603,12 +25591,12 @@
1
2
- 49737
+ 49733
2
3
- 26411
+ 26409
3
@@ -25629,12 +25617,12 @@
1
2
- 53606
+ 53602
2
3
- 23947
+ 23945
3
@@ -25762,7 +25750,7 @@
6
9
- 1727
+ 1726
9
@@ -25788,12 +25776,12 @@
1
2
- 19296
+ 19294
2
3
- 3500
+ 3499
3
@@ -25939,15 +25927,15 @@
routinetypes
- 758603
+ 757852
id
- 758603
+ 757852
return_type
- 356335
+ 355982
@@ -25961,7 +25949,7 @@
1
2
- 758603
+ 757852
@@ -25977,17 +25965,17 @@
1
2
- 294024
+ 293732
2
3
- 44050
+ 44006
3
4676
- 18261
+ 18243
@@ -25997,11 +25985,11 @@
routinetypeargs
- 1165836
+ 1166052
routine
- 412059
+ 412136
index
@@ -26009,7 +25997,7 @@
type_id
- 111081
+ 111101
@@ -26023,32 +26011,32 @@
1
2
- 82129
+ 82144
2
3
- 125475
+ 125498
3
4
- 106844
+ 106864
4
5
- 48614
+ 48624
5
7
- 32482
+ 32488
7
19
- 16512
+ 16515
@@ -26064,27 +26052,27 @@
1
2
- 88104
+ 88120
2
3
- 138023
+ 138048
3
4
- 113525
+ 113546
4
5
- 40141
+ 40148
5
10
- 32156
+ 32162
10
@@ -26282,47 +26270,47 @@
1
2
- 33188
+ 33194
2
3
- 14991
+ 14994
3
4
- 13199
+ 13201
4
5
- 9831
+ 9833
5
6
- 6355
+ 6356
6
8
- 9505
+ 9507
8
13
- 9451
+ 9453
13
26
- 8745
+ 8746
26
916
- 5812
+ 5813
@@ -26338,22 +26326,22 @@
1
2
- 78490
+ 78504
2
3
- 17544
+ 17548
3
5
- 9451
+ 9453
5
17
- 5594
+ 5595
@@ -26363,15 +26351,15 @@
ptrtomembers
- 12029
+ 12026
id
- 12029
+ 12026
type_id
- 10114
+ 9890
class_id
@@ -26389,7 +26377,7 @@
1
2
- 12029
+ 12026
@@ -26405,7 +26393,7 @@
1
2
- 12029
+ 12026
@@ -26421,12 +26409,12 @@
1
2
- 9831
+ 9613
2
- 74
- 283
+ 84
+ 276
@@ -26442,12 +26430,12 @@
1
2
- 9831
+ 9613
2
- 74
- 283
+ 84
+ 276
@@ -26463,22 +26451,22 @@
1
2
- 4854
+ 4747
2
3
- 539
+ 659
8
9
- 512
+ 501
10
65
- 53
+ 52
@@ -26494,22 +26482,22 @@
1
2
- 4854
+ 4747
2
3
- 539
+ 659
8
9
- 512
+ 501
10
65
- 53
+ 52
@@ -26519,15 +26507,15 @@
specifiers
- 7754
+ 7724
id
- 7754
+ 7724
str
- 7754
+ 7724
@@ -26541,7 +26529,7 @@
1
2
- 7754
+ 7724
@@ -26557,7 +26545,7 @@
1
2
- 7754
+ 7724
@@ -26567,15 +26555,15 @@
typespecifiers
- 985913
+ 969178
type_id
- 979359
+ 962756
spec_id
- 107
+ 118
@@ -26589,12 +26577,12 @@
1
2
- 972805
+ 956333
2
3
- 6554
+ 6422
@@ -26612,19 +26600,24 @@
165
13
+
+ 215
+ 216
+ 13
+
224
225
13
- 529
- 530
+ 532
+ 533
13
- 820
- 821
+ 821
+ 822
13
@@ -26633,18 +26626,18 @@
13
- 4147
- 4148
+ 4150
+ 4151
13
- 17356
- 17357
+ 17496
+ 17497
13
- 48300
- 48301
+ 48324
+ 48325
13
@@ -26655,15 +26648,15 @@
funspecifiers
- 9699590
+ 9674560
func_id
- 3974790
+ 3322023
spec_id
- 2376
+ 811
@@ -26677,27 +26670,32 @@
1
2
- 1485356
+ 435451
2
3
- 507167
+ 673556
3
4
- 1039223
+ 1416284
4
5
- 697026
+ 456941
5
+ 6
+ 223835
+
+
+ 6
8
- 246016
+ 115955
@@ -26711,99 +26709,94 @@
12
- 17
- 18
- 125
-
-
- 18
- 19
- 125
+ 2
+ 3
+ 85
- 53
- 54
- 125
+ 106
+ 107
+ 42
- 114
- 115
- 125
+ 214
+ 215
+ 42
- 206
- 207
- 125
+ 301
+ 302
+ 42
- 272
- 273
- 125
+ 308
+ 309
+ 42
- 354
- 355
- 125
+ 562
+ 563
+ 42
- 653
- 654
- 125
+ 1589
+ 1590
+ 42
- 766
- 767
- 125
+ 1631
+ 1632
+ 42
- 823
- 824
- 125
+ 3749
+ 3750
+ 42
- 1075
- 1076
- 125
+ 3881
+ 3882
+ 42
- 1258
- 1259
- 125
+ 6569
+ 6570
+ 42
- 1662
- 1663
- 125
+ 6803
+ 6804
+ 42
- 3340
- 3341
- 125
+ 12221
+ 12222
+ 42
- 3351
- 3352
- 125
+ 14693
+ 14694
+ 42
- 6166
- 6167
- 125
+ 15715
+ 15716
+ 42
- 15136
- 15137
- 125
+ 42406
+ 42407
+ 42
- 19863
- 19864
- 125
+ 51943
+ 51944
+ 42
- 22425
- 22426
- 125
+ 63744
+ 63745
+ 42
@@ -26813,15 +26806,15 @@
varspecifiers
- 2999353
+ 3064883
var_id
- 2281064
+ 2308848
spec_id
- 1125
+ 1121
@@ -26835,17 +26828,17 @@
1
2
- 1661582
+ 1655229
2
3
- 521175
+ 551701
3
5
- 98306
+ 101917
@@ -26858,50 +26851,50 @@
12
-
- 67
- 68
- 125
-
97
98
- 125
+ 124
+
+
+ 240
+ 241
+ 124
1091
1092
- 125
+ 124
1325
1326
- 125
+ 124
2236
2237
- 125
+ 124
- 2557
- 2558
- 125
+ 2761
+ 2762
+ 124
- 3227
- 3228
- 125
+ 3436
+ 3437
+ 124
4931
4932
- 125
+ 124
- 8450
- 8451
- 125
+ 8482
+ 8483
+ 124
@@ -26911,15 +26904,15 @@
explicit_specifier_exprs
- 41398
+ 41240
func_id
- 41398
+ 41240
constant
- 41398
+ 41240
@@ -26933,7 +26926,7 @@
1
2
- 41398
+ 41240
@@ -26949,7 +26942,7 @@
1
2
- 41398
+ 41240
@@ -26959,27 +26952,27 @@
attributes
- 651875
+ 649383
id
- 651875
+ 649383
kind
- 375
+ 373
name
- 2126
+ 2118
name_space
- 250
+ 249
location
- 645747
+ 643277
@@ -26993,7 +26986,7 @@
1
2
- 651875
+ 649383
@@ -27009,7 +27002,7 @@
1
2
- 651875
+ 649383
@@ -27025,7 +27018,7 @@
1
2
- 651875
+ 649383
@@ -27041,7 +27034,7 @@
1
2
- 651875
+ 649383
@@ -27057,17 +27050,17 @@
7
8
- 125
+ 124
2402
2403
- 125
+ 124
2803
2804
- 125
+ 124
@@ -27083,17 +27076,17 @@
1
2
- 125
+ 124
6
7
- 125
+ 124
12
13
- 125
+ 124
@@ -27109,12 +27102,12 @@
1
2
- 250
+ 249
2
3
- 125
+ 124
@@ -27130,17 +27123,17 @@
4
5
- 125
+ 124
2356
2357
- 125
+ 124
2803
2804
- 125
+ 124
@@ -27156,77 +27149,77 @@
1
2
- 250
+ 249
3
4
- 125
+ 124
6
7
- 125
+ 124
7
8
- 125
+ 124
8
9
- 125
+ 124
10
11
- 250
+ 249
14
15
- 125
+ 124
18
19
- 125
+ 124
24
25
- 125
+ 124
55
56
- 125
+ 124
62
63
- 125
+ 124
72
73
- 125
+ 124
340
341
- 125
+ 124
1977
1978
- 125
+ 124
2604
2605
- 125
+ 124
@@ -27242,12 +27235,12 @@
1
2
- 1876
+ 1868
2
3
- 250
+ 249
@@ -27263,7 +27256,7 @@
1
2
- 2126
+ 2118
@@ -27279,77 +27272,77 @@
1
2
- 250
+ 249
3
4
- 125
+ 124
4
5
- 125
+ 124
6
7
- 125
+ 124
8
9
- 125
+ 124
10
11
- 250
+ 249
14
15
- 125
+ 124
18
19
- 125
+ 124
24
25
- 125
+ 124
55
56
- 125
+ 124
62
63
- 125
+ 124
72
73
- 125
+ 124
335
336
- 125
+ 124
1977
1978
- 125
+ 124
2604
2605
- 125
+ 124
@@ -27365,12 +27358,12 @@
11
12
- 125
+ 124
5201
5202
- 125
+ 124
@@ -27386,12 +27379,12 @@
1
2
- 125
+ 124
3
4
- 125
+ 124
@@ -27407,12 +27400,12 @@
2
3
- 125
+ 124
15
16
- 125
+ 124
@@ -27428,12 +27421,12 @@
11
12
- 125
+ 124
5152
5153
- 125
+ 124
@@ -27449,12 +27442,12 @@
1
2
- 639868
+ 637422
2
5
- 5878
+ 5855
@@ -27470,7 +27463,7 @@
1
2
- 645747
+ 643277
@@ -27486,12 +27479,12 @@
1
2
- 640619
+ 638169
2
3
- 5127
+ 5108
@@ -27507,7 +27500,7 @@
1
2
- 645747
+ 643277
@@ -27517,27 +27510,27 @@
attribute_args
- 98337
+ 96187
id
- 98337
+ 96187
kind
- 53
+ 52
attribute
- 84946
+ 83066
index
- 67
+ 65
location
- 91527
+ 89501
@@ -27551,7 +27544,7 @@
1
2
- 98337
+ 96187
@@ -27567,7 +27560,7 @@
1
2
- 98337
+ 96187
@@ -27583,7 +27576,7 @@
1
2
- 98337
+ 96187
@@ -27599,7 +27592,7 @@
1
2
- 98337
+ 96187
@@ -27628,8 +27621,8 @@
13
- 6589
- 6590
+ 6591
+ 6592
13
@@ -27734,17 +27727,17 @@
1
2
- 77165
+ 75430
2
4
- 6432
+ 6316
4
18
- 1348
+ 1318
@@ -27760,12 +27753,12 @@
1
2
- 82653
+ 80824
2
3
- 2292
+ 2241
@@ -27781,12 +27774,12 @@
1
2
- 78689
+ 76947
2
6
- 6257
+ 6118
@@ -27802,12 +27795,12 @@
1
2
- 80293
+ 78516
2
6
- 4652
+ 4549
@@ -27841,8 +27834,8 @@
13
- 6472
- 6473
+ 6474
+ 6475
13
@@ -27864,7 +27857,7 @@
2
3
- 40
+ 39
4
@@ -27957,12 +27950,12 @@
1
2
- 89261
+ 87259
2
23
- 2265
+ 2241
@@ -27978,12 +27971,12 @@
1
2
- 91311
+ 89290
2
3
- 215
+ 210
@@ -27999,12 +27992,12 @@
1
2
- 91122
+ 89105
2
18
- 404
+ 395
@@ -28020,12 +28013,12 @@
1
2
- 90974
+ 88960
2
3
- 552
+ 540
@@ -28035,15 +28028,15 @@
attribute_arg_value
- 20955
+ 20935
arg
- 20955
+ 20935
value
- 641
+ 640
@@ -28057,7 +28050,7 @@
1
2
- 20955
+ 20935
@@ -28128,15 +28121,15 @@
attribute_arg_type
- 466
+ 461
arg
- 466
+ 461
type_id
- 85
+ 84
@@ -28150,7 +28143,7 @@
1
2
- 466
+ 461
@@ -28191,15 +28184,15 @@
attribute_arg_constant
- 88857
+ 86916
arg
- 88857
+ 86916
constant
- 88857
+ 86916
@@ -28213,7 +28206,7 @@
1
2
- 88857
+ 86916
@@ -28229,7 +28222,7 @@
1
2
- 88857
+ 86916
@@ -28239,15 +28232,15 @@
attribute_arg_expr
- 1793
+ 1753
arg
- 1793
+ 1753
expr
- 1793
+ 1753
@@ -28261,7 +28254,7 @@
1
2
- 1793
+ 1753
@@ -28277,7 +28270,7 @@
1
2
- 1793
+ 1753
@@ -28340,15 +28333,15 @@
typeattributes
- 92303
+ 91950
type_id
- 90677
+ 90330
spec_id
- 29266
+ 29154
@@ -28362,12 +28355,12 @@
1
2
- 89051
+ 88710
2
3
- 1625
+ 1619
@@ -28383,17 +28376,17 @@
1
2
- 24764
+ 24669
2
7
- 2251
+ 2242
7
58
- 2251
+ 2242
@@ -28403,15 +28396,15 @@
funcattributes
- 845862
+ 842628
func_id
- 800961
+ 797898
spec_id
- 617856
+ 615493
@@ -28425,12 +28418,12 @@
1
2
- 760563
+ 757655
2
7
- 40398
+ 40243
@@ -28446,12 +28439,12 @@
1
2
- 572079
+ 569892
2
213
- 45776
+ 45601
@@ -28592,15 +28585,15 @@
unspecifiedtype
- 8313750
+ 8145638
type_id
- 8313750
+ 8145638
unspecified_type_id
- 4783555
+ 4690387
@@ -28614,7 +28607,7 @@
1
2
- 8313750
+ 8145638
@@ -28630,17 +28623,17 @@
1
2
- 3189801
+ 3130938
2
3
- 1303717
+ 1275568
3
6277
- 290037
+ 283880
@@ -28650,19 +28643,19 @@
member
- 4663372
+ 4659651
parent
- 558581
+ 559011
index
- 10691
+ 10681
child
- 4546703
+ 4543098
@@ -28676,52 +28669,52 @@
1
2
- 232140
+ 232892
2
3
- 24548
+ 24524
3
4
- 29295
+ 29266
4
5
- 37592
+ 37555
5
7
- 47642
+ 47595
7
11
- 43152
+ 43109
11
14
- 41569
+ 41528
14
19
- 45162
+ 45117
19
53
- 42125
+ 42083
53
251
- 15353
+ 15338
@@ -28737,52 +28730,52 @@
1
2
- 232011
+ 232764
2
3
- 24676
+ 24652
3
4
- 29338
+ 29309
4
5
- 37677
+ 37640
5
7
- 47428
+ 47381
7
11
- 43579
+ 43536
11
14
- 41484
+ 41443
14
19
- 44948
+ 44903
19
53
- 42125
+ 42083
53
255
- 15310
+ 15295
@@ -28798,57 +28791,57 @@
1
2
- 2822
+ 2819
2
4
- 812
+ 811
4
22
- 812
+ 811
22
31
- 812
+ 811
31
53
- 855
+ 854
53
108
- 812
+ 811
110
218
- 812
+ 811
223
328
- 812
+ 811
328
581
- 812
+ 811
653
2518
- 812
+ 811
2899
- 12712
- 513
+ 12735
+ 512
@@ -28864,61 +28857,61 @@
1
2
- 1753
+ 1751
2
3
- 1368
+ 1367
3
8
- 812
+ 811
8
31
- 855
+ 854
31
41
- 855
+ 854
41
97
- 812
+ 811
97
161
- 812
+ 811
164
314
- 855
+ 854
318
386
- 812
+ 811
435
1127
- 812
+ 811
1145
6168
- 812
+ 811
6496
- 12724
+ 12747
128
@@ -28935,7 +28928,7 @@
1
2
- 4546703
+ 4543098
@@ -28951,12 +28944,12 @@
1
2
- 4459244
+ 4455726
2
13
- 87458
+ 87372
@@ -28966,15 +28959,15 @@
enclosingfunction
- 144125
+ 143982
child
- 144125
+ 143982
parent
- 89554
+ 89465
@@ -28988,7 +28981,7 @@
1
2
- 144125
+ 143982
@@ -29004,22 +28997,22 @@
1
2
- 61926
+ 61865
2
3
- 5816
+ 5810
3
4
- 19287
+ 19268
4
37
- 2523
+ 2520
@@ -29029,15 +29022,15 @@
derivations
- 597157
+ 598061
derivation
- 597157
+ 598061
sub
- 569872
+ 570803
index
@@ -29045,11 +29038,11 @@
super
- 294708
+ 295399
location
- 44435
+ 44391
@@ -29063,7 +29056,7 @@
1
2
- 597157
+ 598061
@@ -29079,7 +29072,7 @@
1
2
- 597157
+ 598061
@@ -29095,7 +29088,7 @@
1
2
- 597157
+ 598061
@@ -29111,7 +29104,7 @@
1
2
- 597157
+ 598061
@@ -29127,12 +29120,12 @@
1
2
- 549130
+ 550081
2
9
- 20742
+ 20721
@@ -29148,12 +29141,12 @@
1
2
- 549130
+ 550081
2
8
- 20742
+ 20721
@@ -29169,12 +29162,12 @@
1
2
- 549130
+ 550081
2
9
- 20742
+ 20721
@@ -29190,12 +29183,12 @@
1
2
- 549130
+ 550081
2
8
- 20742
+ 20721
@@ -29229,8 +29222,8 @@
42
- 13325
- 13326
+ 13360
+ 13361
42
@@ -29247,7 +29240,7 @@
25
26
- 171
+ 170
52
@@ -29260,8 +29253,8 @@
42
- 13325
- 13326
+ 13360
+ 13361
42
@@ -29301,8 +29294,8 @@
42
- 6487
- 6488
+ 6510
+ 6511
42
@@ -29319,7 +29312,7 @@
1
2
- 171
+ 170
7
@@ -29350,12 +29343,12 @@
1
2
- 282648
+ 283094
2
1655
- 12060
+ 12304
@@ -29371,12 +29364,12 @@
1
2
- 282648
+ 283094
2
1655
- 12060
+ 12304
@@ -29392,7 +29385,7 @@
1
2
- 294152
+ 294843
2
@@ -29413,12 +29406,12 @@
1
2
- 288207
+ 288691
2
81
- 6500
+ 6707
@@ -29434,22 +29427,22 @@
1
2
- 33358
+ 33239
2
5
- 3977
+ 3930
5
22
- 3378
+ 3460
- 23
+ 22
383
- 3335
+ 3375
388
@@ -29470,22 +29463,22 @@
1
2
- 33358
+ 33239
2
5
- 3977
+ 3930
5
22
- 3378
+ 3460
- 23
+ 22
383
- 3335
+ 3375
388
@@ -29506,7 +29499,7 @@
1
2
- 44435
+ 44391
@@ -29522,22 +29515,22 @@
1
2
- 36138
+ 36017
2
4
- 3293
+ 3289
4
26
- 3464
+ 3546
26
928
- 1539
+ 1538
@@ -29547,15 +29540,15 @@
derspecifiers
- 599381
+ 600283
der_id
- 596601
+ 597506
spec_id
- 171
+ 170
@@ -29569,12 +29562,12 @@
1
2
- 593821
+ 594729
2
3
- 2779
+ 2777
@@ -29603,8 +29596,8 @@
42
- 12754
- 12755
+ 12789
+ 12790
42
@@ -29615,15 +29608,15 @@
direct_base_offsets
- 563371
+ 564309
der_id
- 563371
+ 564309
offset
- 641
+ 640
@@ -29637,7 +29630,7 @@
1
2
- 563371
+ 564309
@@ -29658,7 +29651,7 @@
2
3
- 171
+ 170
3
@@ -29686,8 +29679,8 @@
42
- 13023
- 13024
+ 13058
+ 13059
42
@@ -29698,11 +29691,11 @@
virtual_base_offsets
- 7313
+ 7305
sub
- 7313
+ 7305
super
@@ -29724,7 +29717,7 @@
1
2
- 7313
+ 7305
@@ -29740,7 +29733,7 @@
1
2
- 7313
+ 7305
@@ -29834,23 +29827,23 @@
frienddecls
- 879292
+ 878379
id
- 879292
+ 878379
type_id
- 53245
+ 53192
decl_id
- 97594
+ 97626
location
- 7655
+ 7647
@@ -29864,7 +29857,7 @@
1
2
- 879292
+ 878379
@@ -29880,7 +29873,7 @@
1
2
- 879292
+ 878379
@@ -29896,7 +29889,7 @@
1
2
- 879292
+ 878379
@@ -29912,47 +29905,47 @@
1
2
- 7740
+ 7775
2
3
- 17534
+ 17474
3
7
- 4490
+ 4486
7
12
- 4319
+ 4315
12
20
- 4576
+ 4571
20
32
- 4148
+ 4144
33
50
- 4747
+ 4742
50
80
- 4747
+ 4742
101
120
- 940
+ 939
@@ -29968,47 +29961,47 @@
1
2
- 7740
+ 7775
2
3
- 17534
+ 17474
3
7
- 4490
+ 4486
7
12
- 4319
+ 4315
12
20
- 4576
+ 4571
20
32
- 4148
+ 4144
33
50
- 4747
+ 4742
50
80
- 4747
+ 4742
101
120
- 940
+ 939
@@ -30024,12 +30017,12 @@
1
2
- 51534
+ 51483
2
13
- 1710
+ 1708
@@ -30045,32 +30038,32 @@
1
2
- 60087
+ 60327
2
3
- 7612
+ 7434
3
8
- 7527
+ 7519
8
15
- 7612
+ 7605
15
40
- 7612
+ 7605
40
164
- 7142
+ 7135
@@ -30086,32 +30079,32 @@
1
2
- 60087
+ 60327
2
3
- 7612
+ 7434
3
8
- 7527
+ 7519
8
15
- 7612
+ 7605
15
40
- 7612
+ 7605
40
164
- 7142
+ 7135
@@ -30127,12 +30120,12 @@
1
2
- 96739
+ 96771
2
5
- 855
+ 854
@@ -30148,12 +30141,12 @@
1
2
- 7184
+ 7177
2
- 20371
- 470
+ 20370
+ 469
@@ -30169,12 +30162,12 @@
1
2
- 7484
+ 7476
2
1148
- 171
+ 170
@@ -30190,11 +30183,11 @@
1
2
- 7227
+ 7220
2
- 2129
+ 2132
427
@@ -30205,19 +30198,19 @@
comments
- 11233849
+ 11190894
id
- 11233849
+ 11190894
contents
- 4296351
+ 4279922
location
- 11233849
+ 11190894
@@ -30231,7 +30224,7 @@
1
2
- 11233849
+ 11190894
@@ -30247,7 +30240,7 @@
1
2
- 11233849
+ 11190894
@@ -30263,17 +30256,17 @@
1
2
- 3921885
+ 3906889
2
6
- 322310
+ 321078
6
34359
- 52155
+ 51955
@@ -30289,17 +30282,17 @@
1
2
- 3921885
+ 3906889
2
6
- 322310
+ 321078
6
34359
- 52155
+ 51955
@@ -30315,7 +30308,7 @@
1
2
- 11233849
+ 11190894
@@ -30331,7 +30324,7 @@
1
2
- 11233849
+ 11190894
@@ -30341,15 +30334,15 @@
commentbinding
- 3842839
+ 3828145
id
- 3355433
+ 3342603
element
- 3676619
+ 3662560
@@ -30363,12 +30356,12 @@
1
2
- 3299151
+ 3286536
2
1706
- 56282
+ 56067
@@ -30384,12 +30377,12 @@
1
2
- 3510398
+ 3496975
2
3
- 166220
+ 165585
@@ -30399,15 +30392,15 @@
exprconv
- 9606161
+ 9607946
converted
- 9606056
+ 9607841
conversion
- 9606161
+ 9607946
@@ -30421,7 +30414,7 @@
1
2
- 9605951
+ 9607736
2
@@ -30442,7 +30435,7 @@
1
2
- 9606161
+ 9607946
@@ -30452,22 +30445,22 @@
compgenerated
- 10707572
+ 10701538
id
- 10707572
+ 10701538
synthetic_destructor_call
- 1789036
+ 1788903
element
- 1332347
+ 1332248
i
@@ -30475,7 +30468,7 @@
destructor_call
- 1789036
+ 1788903
@@ -30489,17 +30482,17 @@
1
2
- 886850
+ 886784
2
3
- 438221
+ 438188
3
19
- 7276
+ 7275
@@ -30515,17 +30508,17 @@
1
2
- 886850
+ 886784
2
3
- 438221
+ 438188
3
19
- 7276
+ 7275
@@ -30673,7 +30666,7 @@
1
2
- 1789036
+ 1788903
@@ -30689,7 +30682,7 @@
1
2
- 1789036
+ 1788903
@@ -30699,15 +30692,15 @@
namespaces
- 11044
+ 10800
id
- 11044
+ 10800
name
- 5839
+ 5710
@@ -30721,7 +30714,7 @@
1
2
- 11044
+ 10800
@@ -30737,17 +30730,17 @@
1
2
- 4773
+ 4668
2
3
- 674
+ 659
3
149
- 391
+ 382
@@ -30757,26 +30750,26 @@
namespace_inline
- 500
+ 498
id
- 500
+ 498
namespacembrs
- 2018038
+ 2036610
parentid
- 4002
+ 3987
memberid
- 2018038
+ 2036610
@@ -30790,67 +30783,67 @@
1
2
- 500
+ 498
2
3
- 250
+ 249
3
4
- 500
+ 498
4
5
- 625
+ 622
5
10
- 250
+ 249
10
12
- 250
+ 249
12
18
- 250
+ 249
19
21
- 250
+ 249
23
24
- 250
+ 249
25
29
- 250
+ 249
70
83
- 250
+ 249
165
170
- 250
+ 249
- 15407
- 15408
- 125
+ 15618
+ 15619
+ 124
@@ -30866,7 +30859,7 @@
1
2
- 2018038
+ 2036610
@@ -30876,19 +30869,19 @@
exprparents
- 19398686
+ 19402291
expr_id
- 19398686
+ 19402291
child_index
- 19977
+ 19981
parent_id
- 12903052
+ 12905450
@@ -30902,7 +30895,7 @@
1
2
- 19398686
+ 19402291
@@ -30918,7 +30911,7 @@
1
2
- 19398686
+ 19402291
@@ -30949,7 +30942,7 @@
4
5
- 8950
+ 8952
5
@@ -31000,7 +30993,7 @@
4
5
- 8950
+ 8952
5
@@ -31036,17 +31029,17 @@
1
2
- 7373649
+ 7375020
2
3
- 5068172
+ 5069114
3
712
- 461230
+ 461315
@@ -31062,17 +31055,17 @@
1
2
- 7373649
+ 7375020
2
3
- 5068172
+ 5069114
3
712
- 461230
+ 461315
@@ -31082,22 +31075,22 @@
expr_isload
- 6822557
+ 6834844
expr_id
- 6822557
+ 6834844
conversionkinds
- 6049042
+ 6050435
expr_id
- 6049042
+ 6050435
kind
@@ -31115,7 +31108,7 @@
1
2
- 6049042
+ 6050435
@@ -31154,13 +31147,13 @@
1
- 93175
- 93176
+ 93247
+ 93248
1
- 5830215
- 5830216
+ 5831536
+ 5831537
1
@@ -31171,11 +31164,11 @@
iscall
- 6210093
+ 6209631
caller
- 6210093
+ 6209631
kind
@@ -31193,7 +31186,7 @@
1
2
- 6210093
+ 6209631
@@ -31229,11 +31222,11 @@
numtemplatearguments
- 720113
+ 719400
expr_id
- 720113
+ 719400
num
@@ -31251,7 +31244,7 @@
1
2
- 720113
+ 719400
@@ -31312,15 +31305,15 @@
specialnamequalifyingelements
- 125
+ 124
id
- 125
+ 124
name
- 125
+ 124
@@ -31334,7 +31327,7 @@
1
2
- 125
+ 124
@@ -31350,7 +31343,7 @@
1
2
- 125
+ 124
@@ -31360,23 +31353,23 @@
namequalifiers
- 3254040
+ 3255226
id
- 3254040
+ 3255226
qualifiableelement
- 3254040
+ 3255226
qualifyingelement
- 50221
+ 50816
location
- 590842
+ 591189
@@ -31390,7 +31383,7 @@
1
2
- 3254040
+ 3255226
@@ -31406,7 +31399,7 @@
1
2
- 3254040
+ 3255226
@@ -31422,7 +31415,7 @@
1
2
- 3254040
+ 3255226
@@ -31438,7 +31431,7 @@
1
2
- 3254040
+ 3255226
@@ -31454,7 +31447,7 @@
1
2
- 3254040
+ 3255226
@@ -31470,7 +31463,7 @@
1
2
- 3254040
+ 3255226
@@ -31486,27 +31479,27 @@
1
2
- 33757
+ 33754
2
3
- 8220
+ 8749
3
5
- 4352
+ 4397
5
- 1601
- 3776
+ 6810
+ 3822
- 6806
+ 19018
41956
- 115
+ 92
@@ -31522,27 +31515,27 @@
1
2
- 33757
+ 33754
2
3
- 8220
+ 8749
3
5
- 4352
+ 4397
5
- 1601
- 3776
+ 6810
+ 3822
- 6806
+ 19018
41956
- 115
+ 92
@@ -31558,17 +31551,17 @@
1
2
- 36474
+ 36816
2
3
- 7644
+ 7874
3
6
- 3799
+ 3822
6
@@ -31589,22 +31582,22 @@
1
2
- 84761
+ 84708
2
6
- 40365
+ 40754
6
7
- 427076
+ 426975
7
192
- 38638
+ 38751
@@ -31620,22 +31613,22 @@
1
2
- 84761
+ 84708
2
6
- 40365
+ 40754
6
7
- 427076
+ 426975
7
192
- 38638
+ 38751
@@ -31651,22 +31644,22 @@
1
2
- 119071
+ 119361
2
4
- 14184
+ 14229
4
5
- 444530
+ 444428
5
33
- 13056
+ 13170
@@ -31676,15 +31669,15 @@
varbind
- 8231069
+ 8232599
expr
- 8231069
+ 8232599
var
- 1047377
+ 1047572
@@ -31698,7 +31691,7 @@
1
2
- 8231069
+ 8232599
@@ -31714,52 +31707,52 @@
1
2
- 171046
+ 171078
2
3
- 188162
+ 188197
3
4
- 145232
+ 145259
4
5
- 116303
+ 116325
5
6
- 82913
+ 82929
6
7
- 65629
+ 65641
7
9
- 80584
+ 80599
9
13
- 81342
+ 81357
13
27
- 78901
+ 78915
27
5137
- 37262
+ 37268
@@ -31769,15 +31762,15 @@
funbind
- 6220501
+ 6220039
expr
- 6217853
+ 6217391
fun
- 295317
+ 295295
@@ -31791,12 +31784,12 @@
1
2
- 6215204
+ 6214743
2
3
- 2648
+ 2647
@@ -31812,27 +31805,27 @@
1
2
- 194184
+ 194169
2
3
- 41563
+ 41560
3
4
- 18398
+ 18396
4
8
- 24339
+ 24337
8
37798
- 16832
+ 16831
@@ -31842,11 +31835,11 @@
expr_allocator
- 56794
+ 56738
expr
- 56794
+ 56738
func
@@ -31868,7 +31861,7 @@
1
2
- 56794
+ 56738
@@ -31884,7 +31877,7 @@
1
2
- 56794
+ 56738
@@ -31968,11 +31961,11 @@
expr_deallocator
- 67572
+ 67505
expr
- 67572
+ 67505
func
@@ -31994,7 +31987,7 @@
1
2
- 67572
+ 67505
@@ -32010,7 +32003,7 @@
1
2
- 67572
+ 67505
@@ -32115,15 +32108,15 @@
expr_cond_guard
- 895370
+ 895536
cond
- 895370
+ 895536
guard
- 895370
+ 895536
@@ -32137,7 +32130,7 @@
1
2
- 895370
+ 895536
@@ -32153,7 +32146,7 @@
1
2
- 895370
+ 895536
@@ -32163,15 +32156,15 @@
expr_cond_true
- 895366
+ 895533
cond
- 895366
+ 895533
true
- 895366
+ 895533
@@ -32185,7 +32178,7 @@
1
2
- 895366
+ 895533
@@ -32201,7 +32194,7 @@
1
2
- 895366
+ 895533
@@ -32211,15 +32204,15 @@
expr_cond_false
- 895370
+ 895536
cond
- 895370
+ 895536
false
- 895370
+ 895536
@@ -32233,7 +32226,7 @@
1
2
- 895370
+ 895536
@@ -32249,7 +32242,7 @@
1
2
- 895370
+ 895536
@@ -32259,15 +32252,15 @@
values
- 13436143
+ 13438640
id
- 13436143
+ 13438640
str
- 114239
+ 114260
@@ -32281,7 +32274,7 @@
1
2
- 13436143
+ 13438640
@@ -32297,27 +32290,27 @@
1
2
- 78079
+ 78093
2
3
- 15258
+ 15260
3
6
- 8869
+ 8871
6
52
- 8604
+ 8605
52
674264
- 3427
+ 3428
@@ -32327,15 +32320,15 @@
valuetext
- 6643521
+ 6647587
id
- 6643521
+ 6647587
text
- 1095396
+ 1095411
@@ -32349,7 +32342,7 @@
1
2
- 6643521
+ 6647587
@@ -32365,22 +32358,22 @@
1
2
- 833981
+ 833985
2
3
- 146939
+ 146940
3
7
- 86534
+ 86536
7
- 593537
- 27942
+ 593553
+ 27950
@@ -32390,15 +32383,15 @@
valuebind
- 13544416
+ 13546933
val
- 13436143
+ 13438640
expr
- 13544416
+ 13546933
@@ -32412,12 +32405,12 @@
1
2
- 13345847
+ 13348327
2
6
- 90296
+ 90313
@@ -32433,7 +32426,7 @@
1
2
- 13544416
+ 13546933
@@ -32443,15 +32436,15 @@
fieldoffsets
- 1489139
+ 1489415
id
- 1489139
+ 1489415
byteoffset
- 31287
+ 31293
bitoffset
@@ -32469,7 +32462,7 @@
1
2
- 1489139
+ 1489415
@@ -32485,7 +32478,7 @@
1
2
- 1489139
+ 1489415
@@ -32501,7 +32494,7 @@
1
2
- 17653
+ 17656
2
@@ -32511,7 +32504,7 @@
3
5
- 2661
+ 2662
5
@@ -32547,7 +32540,7 @@
1
2
- 30309
+ 30315
2
@@ -32644,19 +32637,19 @@
bitfield
- 30392
+ 30276
id
- 30392
+ 30276
bits
- 3502
+ 3488
declared_bits
- 3502
+ 3488
@@ -32670,7 +32663,7 @@
1
2
- 30392
+ 30276
@@ -32686,7 +32679,7 @@
1
2
- 30392
+ 30276
@@ -32702,42 +32695,42 @@
1
2
- 1000
+ 996
2
3
- 750
+ 747
3
4
- 250
+ 249
4
5
- 500
+ 498
5
7
- 250
+ 249
8
9
- 250
+ 249
9
11
- 250
+ 249
13
143
- 250
+ 249
@@ -32753,7 +32746,7 @@
1
2
- 3502
+ 3488
@@ -32769,42 +32762,42 @@
1
2
- 1000
+ 996
2
3
- 750
+ 747
3
4
- 250
+ 249
4
5
- 500
+ 498
5
7
- 250
+ 249
8
9
- 250
+ 249
9
11
- 250
+ 249
13
143
- 250
+ 249
@@ -32820,7 +32813,7 @@
1
2
- 3502
+ 3488
@@ -32830,23 +32823,23 @@
initialisers
- 2338659
+ 2334426
init
- 2338659
+ 2334426
var
- 989337
+ 988525
expr
- 2338659
+ 2334426
location
- 539154
+ 537813
@@ -32860,7 +32853,7 @@
1
2
- 2338659
+ 2334426
@@ -32876,7 +32869,7 @@
1
2
- 2338659
+ 2334426
@@ -32892,7 +32885,7 @@
1
2
- 2338659
+ 2334426
@@ -32908,17 +32901,17 @@
1
2
- 872291
+ 871776
2
15
- 39495
+ 39395
16
25
- 77549
+ 77353
@@ -32934,17 +32927,17 @@
1
2
- 872291
+ 871776
2
15
- 39495
+ 39395
16
25
- 77549
+ 77353
@@ -32960,7 +32953,7 @@
1
2
- 989328
+ 988516
2
@@ -32981,7 +32974,7 @@
1
2
- 2338659
+ 2334426
@@ -32997,7 +32990,7 @@
1
2
- 2338659
+ 2334426
@@ -33013,7 +33006,7 @@
1
2
- 2338659
+ 2334426
@@ -33029,22 +33022,22 @@
1
2
- 439236
+ 438122
2
3
- 33072
+ 32980
3
15
- 42172
+ 42099
15
111796
- 24672
+ 24610
@@ -33060,17 +33053,17 @@
1
2
- 470366
+ 469174
2
4
- 49613
+ 49479
4
12163
- 19173
+ 19159
@@ -33086,22 +33079,22 @@
1
2
- 439236
+ 438122
2
3
- 33072
+ 32980
3
15
- 42172
+ 42099
15
111796
- 24672
+ 24610
@@ -33111,26 +33104,26 @@
braced_initialisers
- 74182
+ 74076
init
- 74182
+ 74076
expr_ancestor
- 1795437
+ 1795304
exp
- 1795437
+ 1795304
ancestor
- 898593
+ 898527
@@ -33144,7 +33137,7 @@
1
2
- 1795437
+ 1795304
@@ -33160,17 +33153,17 @@
1
2
- 18283
+ 18281
2
3
- 869534
+ 869469
3
19
- 10776
+ 10775
@@ -33180,19 +33173,19 @@
exprs
- 25138614
+ 25143286
id
- 25138614
+ 25143286
kind
- 1456
+ 1446
location
- 5896962
+ 10554424
@@ -33206,7 +33199,7 @@
1
2
- 25138614
+ 25143286
@@ -33222,7 +33215,7 @@
1
2
- 25138614
+ 25143286
@@ -33237,63 +33230,73 @@
1
- 13
- 121
+ 10
+ 109
- 13
- 46
- 121
+ 12
+ 18
+ 109
- 53
- 76
- 121
+ 26
+ 100
+ 109
- 79
- 245
- 121
+ 105
+ 305
+ 109
- 302
- 524
- 121
+ 323
+ 467
+ 109
- 530
- 969
- 121
+ 607
+ 893
+ 109
- 1043
- 2109
- 121
+ 906
+ 1658
+ 109
+
+
+ 1781
+ 2386
+ 109
+
+
+ 3390
+ 4336
+ 109
- 2204
- 3636
- 121
+ 4809
+ 5185
+ 109
- 4328
- 7013
- 121
+ 5187
+ 22128
+ 109
- 7403
- 8498
- 121
+ 26432
+ 50205
+ 109
- 9709
- 32322
- 121
+ 63936
+ 144106
+ 109
- 33490
- 447645
- 121
+ 313148
+ 313149
+ 21
@@ -33308,68 +33311,73 @@
1
- 3
- 107
+ 9
+ 109
- 4
+ 9
15
- 121
+ 109
17
- 26
- 121
+ 96
+ 109
- 28
- 40
- 121
+ 99
+ 222
+ 109
- 47
- 105
- 121
+ 260
+ 383
+ 109
- 133
- 276
- 121
+ 408
+ 594
+ 109
- 305
- 552
- 121
+ 599
+ 749
+ 109
- 620
- 1425
- 121
+ 864
+ 1774
+ 109
- 1437
- 1711
- 121
+ 1812
+ 2545
+ 109
- 1929
- 3215
- 121
+ 2623
+ 2919
+ 109
- 3232
- 8454
- 121
+ 3419
+ 4913
+ 109
- 11521
- 87503
- 121
+ 5473
+ 21165
+ 109
- 155156
- 155157
- 13
+ 26254
+ 76840
+ 109
+
+
+ 224080
+ 224081
+ 21
@@ -33385,32 +33393,22 @@
1
2
- 2750855
+ 8876944
2
3
- 1390969
+ 818418
3
- 4
- 522854
-
-
- 4
- 6
- 539333
-
-
- 6
- 13
- 455210
+ 16
+ 795071
- 13
- 144777
- 237739
+ 16
+ 71733
+ 63990
@@ -33426,17 +33424,17 @@
1
2
- 4271139
+ 9015974
2
3
- 1230098
+ 772206
3
- 30
- 395724
+ 32
+ 766243
@@ -33446,15 +33444,15 @@
expr_reuse
- 906491
+ 906424
reuse
- 906491
+ 906424
original
- 906491
+ 906424
value_category
@@ -33472,7 +33470,7 @@
1
2
- 906491
+ 906424
@@ -33488,7 +33486,7 @@
1
2
- 906491
+ 906424
@@ -33504,7 +33502,7 @@
1
2
- 906491
+ 906424
@@ -33520,7 +33518,7 @@
1
2
- 906491
+ 906424
@@ -33572,19 +33570,19 @@
expr_types
- 25138614
+ 25143286
id
- 25138614
+ 25143286
typeid
- 120596
+ 213631
value_category
- 56
+ 43
@@ -33598,7 +33596,7 @@
1
2
- 25138614
+ 25143286
@@ -33614,7 +33612,7 @@
1
2
- 25138614
+ 25143286
@@ -33630,57 +33628,52 @@
1
2
- 17845
+ 52371
2
3
- 19220
+ 35097
3
4
- 10269
+ 14468
4
5
- 8080
+ 14490
5
- 7
- 10690
-
-
- 7
- 11
- 11111
+ 8
+ 17515
- 11
- 18
- 10157
+ 8
+ 14
+ 17340
- 18
- 33
- 9483
+ 14
+ 24
+ 16397
- 33
- 70
- 9119
+ 24
+ 49
+ 16025
- 70
- 233
- 9062
+ 49
+ 134
+ 16134
- 233
- 379496
- 5555
+ 134
+ 441505
+ 13789
@@ -33696,12 +33689,12 @@
1
2
- 100590
+ 185417
2
3
- 20005
+ 28213
@@ -33715,14 +33708,14 @@
12
- 118902
- 118903
- 28
+ 153745
+ 153746
+ 21
- 777025
- 777026
- 28
+ 993192
+ 993193
+ 21
@@ -33736,14 +33729,14 @@
12
- 1298
- 1299
- 28
+ 2282
+ 2283
+ 21
- 3713
- 3714
- 28
+ 8750
+ 8751
+ 21
@@ -33764,15 +33757,15 @@
new_allocated_type
- 57992
+ 57934
expr
- 57992
+ 57934
type_id
- 34384
+ 34350
@@ -33786,7 +33779,7 @@
1
2
- 57992
+ 57934
@@ -33802,17 +33795,17 @@
1
2
- 14455
+ 14440
2
3
- 18176
+ 18158
3
19
- 1753
+ 1751
@@ -33822,15 +33815,15 @@
new_array_allocated_type
- 6932
+ 6914
expr
- 6932
+ 6914
type_id
- 2978
+ 2970
@@ -33844,7 +33837,7 @@
1
2
- 6932
+ 6914
@@ -33865,12 +33858,12 @@
2
3
- 2633
+ 2626
3
5
- 224
+ 223
6
@@ -35221,15 +35214,15 @@
condition_decl_bind
- 437622
+ 437589
expr
- 437622
+ 437589
decl
- 437622
+ 437589
@@ -35243,7 +35236,7 @@
1
2
- 437622
+ 437589
@@ -35259,7 +35252,7 @@
1
2
- 437622
+ 437589
@@ -35269,15 +35262,15 @@
typeid_bind
- 60130
+ 60071
expr
- 60130
+ 60071
type_id
- 20015
+ 19995
@@ -35291,7 +35284,7 @@
1
2
- 60130
+ 60071
@@ -35307,17 +35300,17 @@
1
2
- 3720
+ 3717
2
3
- 15781
+ 15765
3
328
- 513
+ 512
@@ -35327,15 +35320,15 @@
uuidof_bind
- 28057
+ 27985
expr
- 28057
+ 27985
type_id
- 27789
+ 27719
@@ -35349,7 +35342,7 @@
1
2
- 28057
+ 27985
@@ -35365,12 +35358,12 @@
1
2
- 27565
+ 27495
2
4
- 224
+ 223
@@ -35380,15 +35373,15 @@
sizeof_bind
- 241336
+ 241381
expr
- 241336
+ 241381
type_id
- 11178
+ 11180
@@ -35402,7 +35395,7 @@
1
2
- 241336
+ 241381
@@ -35418,12 +35411,12 @@
1
2
- 3866
+ 3867
2
3
- 2775
+ 2776
3
@@ -35433,7 +35426,7 @@
4
5
- 1136
+ 1137
5
@@ -35443,7 +35436,7 @@
6
7
- 1061
+ 1062
7
@@ -35511,11 +35504,11 @@
lambdas
- 17748
+ 17730
expr
- 17748
+ 17730
default_capture
@@ -35525,6 +35518,10 @@
has_explicit_return_type
85
+
+ has_explicit_parameter_list
+ 85
+
@@ -35537,7 +35534,7 @@
1
2
- 17748
+ 17730
@@ -35553,7 +35550,23 @@
1
2
- 17748
+ 17730
+
+
+
+
+
+
+ expr
+ has_explicit_parameter_list
+
+
+ 12
+
+
+ 1
+ 2
+ 17730
@@ -35606,6 +35619,27 @@
+
+ default_capture
+ has_explicit_parameter_list
+
+
+ 12
+
+
+ 1
+ 2
+ 42
+
+
+ 2
+ 3
+ 85
+
+
+
+
+
has_explicit_return_type
expr
@@ -35648,19 +35682,103 @@
+
+ has_explicit_return_type
+ has_explicit_parameter_list
+
+
+ 12
+
+
+ 1
+ 2
+ 42
+
+
+ 2
+ 3
+ 42
+
+
+
+
+
+
+ has_explicit_parameter_list
+ expr
+
+
+ 12
+
+
+ 45
+ 46
+ 42
+
+
+ 370
+ 371
+ 42
+
+
+
+
+
+
+ has_explicit_parameter_list
+ default_capture
+
+
+ 12
+
+
+ 2
+ 3
+ 42
+
+
+ 3
+ 4
+ 42
+
+
+
+
+
+
+ has_explicit_parameter_list
+ has_explicit_return_type
+
+
+ 12
+
+
+ 1
+ 2
+ 42
+
+
+ 2
+ 3
+ 42
+
+
+
+
+
lambda_capture
- 28523
+ 28450
id
- 28523
+ 28450
lambda
- 13294
+ 13261
index
@@ -35668,7 +35786,7 @@
field
- 28523
+ 28450
captured_by_reference
@@ -35680,7 +35798,7 @@
location
- 18396
+ 18350
@@ -35694,7 +35812,7 @@
1
2
- 28523
+ 28450
@@ -35710,7 +35828,7 @@
1
2
- 28523
+ 28450
@@ -35726,7 +35844,7 @@
1
2
- 28523
+ 28450
@@ -35742,7 +35860,7 @@
1
2
- 28523
+ 28450
@@ -35758,7 +35876,7 @@
1
2
- 28523
+ 28450
@@ -35774,7 +35892,7 @@
1
2
- 28523
+ 28450
@@ -35790,27 +35908,27 @@
1
2
- 6673
+ 6656
2
3
- 3081
+ 3074
3
4
- 1614
+ 1610
4
6
- 1225
+ 1222
6
18
- 699
+ 697
@@ -35826,27 +35944,27 @@
1
2
- 6673
+ 6656
2
3
- 3081
+ 3074
3
4
- 1614
+ 1610
4
6
- 1225
+ 1222
6
18
- 699
+ 697
@@ -35862,27 +35980,27 @@
1
2
- 6673
+ 6656
2
3
- 3081
+ 3074
3
4
- 1614
+ 1610
4
6
- 1225
+ 1222
6
18
- 699
+ 697
@@ -35898,12 +36016,12 @@
1
2
- 12724
+ 12692
2
3
- 569
+ 568
@@ -35919,7 +36037,7 @@
1
2
- 13268
+ 13235
2
@@ -35940,27 +36058,27 @@
1
2
- 7303
+ 7284
2
3
- 3245
+ 3237
3
4
- 1329
+ 1326
4
7
- 1087
+ 1084
7
18
- 328
+ 327
@@ -36269,7 +36387,7 @@
2
3
- 112
+ 111
@@ -36402,7 +36520,7 @@
1
2
- 28523
+ 28450
@@ -36418,7 +36536,7 @@
1
2
- 28523
+ 28450
@@ -36434,7 +36552,7 @@
1
2
- 28523
+ 28450
@@ -36450,7 +36568,7 @@
1
2
- 28523
+ 28450
@@ -36466,7 +36584,7 @@
1
2
- 28523
+ 28450
@@ -36482,7 +36600,7 @@
1
2
- 28523
+ 28450
@@ -36740,17 +36858,17 @@
1
2
- 16566
+ 16524
2
6
- 1398
+ 1394
6
68
- 431
+ 430
@@ -36766,12 +36884,12 @@
1
2
- 17179
+ 17136
2
68
- 1217
+ 1214
@@ -36787,12 +36905,12 @@
1
2
- 17663
+ 17618
2
8
- 733
+ 731
@@ -36808,17 +36926,17 @@
1
2
- 16566
+ 16524
2
6
- 1398
+ 1394
6
68
- 431
+ 430
@@ -36834,7 +36952,7 @@
1
2
- 18370
+ 18324
2
@@ -36855,7 +36973,7 @@
1
2
- 18396
+ 18350
@@ -36865,11 +36983,11 @@
fold
- 1368
+ 1367
expr
- 1368
+ 1367
operator
@@ -36891,7 +37009,7 @@
1
2
- 1368
+ 1367
@@ -36907,7 +37025,7 @@
1
2
- 1368
+ 1367
@@ -36986,11 +37104,11 @@
stmts
- 6258938
+ 6243069
id
- 6258938
+ 6243069
kind
@@ -36998,7 +37116,7 @@
location
- 2754699
+ 2747715
@@ -37012,7 +37130,7 @@
1
2
- 6258938
+ 6243069
@@ -37028,7 +37146,7 @@
1
2
- 6258938
+ 6243069
@@ -37266,17 +37384,17 @@
1
2
- 2352912
+ 2346947
2
4
- 239081
+ 238475
4
1581
- 162705
+ 162292
@@ -37292,12 +37410,12 @@
1
2
- 2667989
+ 2661225
2
10
- 86709
+ 86489
@@ -37414,15 +37532,15 @@
if_initialization
- 375
+ 373
if_stmt
- 375
+ 373
init_id
- 375
+ 373
@@ -37436,7 +37554,7 @@
1
2
- 375
+ 373
@@ -37452,7 +37570,7 @@
1
2
- 375
+ 373
@@ -37462,15 +37580,15 @@
if_then
- 987388
+ 987571
if_stmt
- 987388
+ 987571
then_id
- 987388
+ 987571
@@ -37484,7 +37602,7 @@
1
2
- 987388
+ 987571
@@ -37500,7 +37618,7 @@
1
2
- 987388
+ 987571
@@ -37510,15 +37628,15 @@
if_else
- 467787
+ 467752
if_stmt
- 467787
+ 467752
else_id
- 467787
+ 467752
@@ -37532,7 +37650,7 @@
1
2
- 467787
+ 467752
@@ -37548,7 +37666,7 @@
1
2
- 467787
+ 467752
@@ -37606,15 +37724,15 @@
constexpr_if_then
- 103934
+ 103537
constexpr_if_stmt
- 103934
+ 103537
then_id
- 103934
+ 103537
@@ -37628,7 +37746,7 @@
1
2
- 103934
+ 103537
@@ -37644,7 +37762,7 @@
1
2
- 103934
+ 103537
@@ -37654,15 +37772,15 @@
constexpr_if_else
- 74042
+ 73759
constexpr_if_stmt
- 74042
+ 73759
else_id
- 74042
+ 73759
@@ -37676,7 +37794,7 @@
1
2
- 74042
+ 73759
@@ -37692,7 +37810,7 @@
1
2
- 74042
+ 73759
@@ -37798,15 +37916,15 @@
while_body
- 39534
+ 39542
while_stmt
- 39534
+ 39542
body_id
- 39534
+ 39542
@@ -37820,7 +37938,7 @@
1
2
- 39534
+ 39542
@@ -37836,7 +37954,7 @@
1
2
- 39534
+ 39542
@@ -37846,15 +37964,15 @@
do_body
- 232974
+ 233017
do_stmt
- 232974
+ 233017
body_id
- 232974
+ 233017
@@ -37868,7 +37986,7 @@
1
2
- 232974
+ 233017
@@ -37884,7 +38002,7 @@
1
2
- 232974
+ 233017
@@ -37942,11 +38060,11 @@
switch_case
- 894840
+ 894774
switch_stmt
- 440777
+ 440744
index
@@ -37954,7 +38072,7 @@
case_id
- 894840
+ 894774
@@ -37973,7 +38091,7 @@
2
3
- 437691
+ 437658
3
@@ -37999,7 +38117,7 @@
2
3
- 437691
+ 437658
3
@@ -38162,7 +38280,7 @@
1
2
- 894840
+ 894774
@@ -38178,7 +38296,7 @@
1
2
- 894840
+ 894774
@@ -38188,15 +38306,15 @@
switch_body
- 440777
+ 440744
switch_stmt
- 440777
+ 440744
body_id
- 440777
+ 440744
@@ -38210,7 +38328,7 @@
1
2
- 440777
+ 440744
@@ -38226,7 +38344,7 @@
1
2
- 440777
+ 440744
@@ -38236,15 +38354,15 @@
for_initialization
- 73036
+ 73050
for_stmt
- 73036
+ 73050
init_id
- 73036
+ 73050
@@ -38258,7 +38376,7 @@
1
2
- 73036
+ 73050
@@ -38274,7 +38392,7 @@
1
2
- 73036
+ 73050
@@ -38284,15 +38402,15 @@
for_condition
- 76123
+ 76137
for_stmt
- 76123
+ 76137
condition_id
- 76123
+ 76137
@@ -38306,7 +38424,7 @@
1
2
- 76123
+ 76137
@@ -38322,7 +38440,7 @@
1
2
- 76123
+ 76137
@@ -38332,15 +38450,15 @@
for_update
- 73177
+ 73190
for_stmt
- 73177
+ 73190
update_id
- 73177
+ 73190
@@ -38354,7 +38472,7 @@
1
2
- 73177
+ 73190
@@ -38370,7 +38488,7 @@
1
2
- 73177
+ 73190
@@ -38380,15 +38498,15 @@
for_body
- 84148
+ 84163
for_stmt
- 84148
+ 84163
body_id
- 84148
+ 84163
@@ -38402,7 +38520,7 @@
1
2
- 84148
+ 84163
@@ -38418,7 +38536,7 @@
1
2
- 84148
+ 84163
@@ -38428,19 +38546,19 @@
stmtparents
- 5523824
+ 5509819
id
- 5523824
+ 5509819
index
- 16765
+ 16722
parent
- 2342363
+ 2336424
@@ -38454,7 +38572,7 @@
1
2
- 5523824
+ 5509819
@@ -38470,7 +38588,7 @@
1
2
- 5523824
+ 5509819
@@ -38486,52 +38604,52 @@
1
2
- 5507
+ 5493
2
3
- 1372
+ 1369
3
4
- 302
+ 301
4
5
- 2132
+ 2126
7
8
- 1398
+ 1394
8
12
- 1087
+ 1084
12
29
- 1476
+ 1472
29
38
- 1260
+ 1257
41
77
- 1269
+ 1265
77
195079
- 958
+ 955
@@ -38547,52 +38665,52 @@
1
2
- 5507
+ 5493
2
3
- 1372
+ 1369
3
4
- 302
+ 301
4
5
- 2132
+ 2126
7
8
- 1398
+ 1394
8
12
- 1087
+ 1084
12
29
- 1476
+ 1472
29
38
- 1260
+ 1257
41
77
- 1269
+ 1265
77
195079
- 958
+ 955
@@ -38608,32 +38726,32 @@
1
2
- 1344445
+ 1341036
2
3
- 507773
+ 506485
3
4
- 144118
+ 143753
4
6
- 151422
+ 151038
6
16
- 175775
+ 175330
16
1943
- 18828
+ 18780
@@ -38649,32 +38767,32 @@
1
2
- 1344445
+ 1341036
2
3
- 507773
+ 506485
3
4
- 144118
+ 143753
4
6
- 151422
+ 151038
6
16
- 175775
+ 175330
16
1943
- 18828
+ 18780
@@ -38684,30 +38802,30 @@
ishandler
- 47389
+ 47330
block
- 47389
+ 47330
stmt_decl_bind
- 730244
+ 723033
stmt
- 689803
+ 682991
num
- 125
+ 124
decl
- 730175
+ 722964
@@ -38721,12 +38839,12 @@
1
2
- 667590
+ 660998
2
32
- 22212
+ 21993
@@ -38742,12 +38860,12 @@
1
2
- 667590
+ 660998
2
32
- 22212
+ 21993
@@ -38885,7 +39003,7 @@
1
2
- 730151
+ 722940
2
@@ -38906,7 +39024,7 @@
1
2
- 730175
+ 722964
@@ -38916,19 +39034,19 @@
stmt_decl_entry_bind
- 730244
+ 723033
stmt
- 689803
+ 682991
num
- 125
+ 124
decl_entry
- 730244
+ 723033
@@ -38942,12 +39060,12 @@
1
2
- 667590
+ 660998
2
32
- 22212
+ 21993
@@ -38963,12 +39081,12 @@
1
2
- 667590
+ 660998
2
32
- 22212
+ 21993
@@ -39106,7 +39224,7 @@
1
2
- 730244
+ 723033
@@ -39122,7 +39240,7 @@
1
2
- 730244
+ 723033
@@ -39132,15 +39250,15 @@
blockscope
- 1764517
+ 1757769
block
- 1764517
+ 1757769
enclosing
- 1509119
+ 1503349
@@ -39154,7 +39272,7 @@
1
2
- 1764517
+ 1757769
@@ -39170,17 +39288,17 @@
1
2
- 1337771
+ 1332655
2
3
- 128699
+ 128207
3
28
- 42649
+ 42486
@@ -39190,19 +39308,19 @@
jumpinfo
- 347327
+ 347391
id
- 347327
+ 347391
str
- 28866
+ 28871
target
- 72498
+ 72512
@@ -39216,7 +39334,7 @@
1
2
- 347327
+ 347391
@@ -39232,7 +39350,7 @@
1
2
- 347327
+ 347391
@@ -39248,12 +39366,12 @@
2
3
- 13558
+ 13560
3
4
- 6041
+ 6042
4
@@ -39268,7 +39386,7 @@
6
10
- 2191
+ 2192
10
@@ -39278,7 +39396,7 @@
25
13711
- 999
+ 1000
@@ -39294,17 +39412,17 @@
1
2
- 23124
+ 23128
2
3
- 3616
+ 3617
3
3321
- 2124
+ 2125
@@ -39325,27 +39443,27 @@
2
3
- 36107
+ 36114
3
4
- 17583
+ 17586
4
5
- 7358
+ 7359
5
8
- 6399
+ 6401
8
2124
- 5016
+ 5017
@@ -39361,7 +39479,7 @@
1
2
- 72498
+ 72512
@@ -39371,19 +39489,19 @@
preprocdirects
- 5407616
+ 5386939
id
- 5407616
+ 5386939
kind
- 1375
+ 1370
location
- 5404364
+ 5383699
@@ -39397,7 +39515,7 @@
1
2
- 5407616
+ 5386939
@@ -39413,7 +39531,7 @@
1
2
- 5407616
+ 5386939
@@ -39429,57 +39547,57 @@
1
2
- 125
+ 124
145
146
- 125
+ 124
808
809
- 125
+ 124
866
867
- 125
+ 124
973
974
- 125
+ 124
1509
1510
- 125
+ 124
1891
1892
- 125
+ 124
3256
3257
- 125
+ 124
4714
4715
- 125
+ 124
7089
7090
- 125
+ 124
21984
21985
- 125
+ 124
@@ -39495,57 +39613,57 @@
1
2
- 125
+ 124
145
146
- 125
+ 124
808
809
- 125
+ 124
866
867
- 125
+ 124
973
974
- 125
+ 124
1509
1510
- 125
+ 124
1891
1892
- 125
+ 124
3256
3257
- 125
+ 124
4714
4715
- 125
+ 124
7089
7090
- 125
+ 124
21958
21959
- 125
+ 124
@@ -39561,12 +39679,12 @@
1
2
- 5404239
+ 5383575
27
28
- 125
+ 124
@@ -39582,7 +39700,7 @@
1
2
- 5404364
+ 5383699
@@ -39592,15 +39710,15 @@
preprocpair
- 1141282
+ 1136918
begin
- 886636
+ 883245
elseelifend
- 1141282
+ 1136918
@@ -39614,17 +39732,17 @@
1
2
- 645622
+ 643153
2
3
- 231383
+ 230498
3
9
- 9630
+ 9593
@@ -39640,7 +39758,7 @@
1
2
- 1141282
+ 1136918
@@ -39650,41 +39768,41 @@
preproctrue
- 437752
+ 436078
branch
- 437752
+ 436078
preprocfalse
- 284664
+ 283575
branch
- 284664
+ 283575
preproctext
- 4352508
+ 4335865
id
- 4352508
+ 4335865
head
- 2954828
+ 2943529
body
- 1681344
+ 1674914
@@ -39698,7 +39816,7 @@
1
2
- 4352508
+ 4335865
@@ -39714,7 +39832,7 @@
1
2
- 4352508
+ 4335865
@@ -39730,12 +39848,12 @@
1
2
- 2758089
+ 2747543
2
798
- 196738
+ 195986
@@ -39751,12 +39869,12 @@
1
2
- 2875157
+ 2864163
2
5
- 79670
+ 79366
@@ -39772,17 +39890,17 @@
1
2
- 1532758
+ 1526897
2
10
- 127698
+ 127210
10
13579
- 20887
+ 20807
@@ -39798,17 +39916,17 @@
1
2
- 1537010
+ 1531133
2
12
- 127323
+ 126836
12
3231
- 17009
+ 16944
@@ -39818,15 +39936,15 @@
includes
- 406823
+ 397817
id
- 406823
+ 397817
included
- 74940
+ 73281
@@ -39840,7 +39958,7 @@
1
2
- 406823
+ 397817
@@ -39856,37 +39974,37 @@
1
2
- 37085
+ 36264
2
3
- 12056
+ 11789
3
4
- 6324
+ 6184
4
6
- 6837
+ 6685
6
11
- 5771
+ 5644
11
47
- 5623
+ 5499
47
793
- 1240
+ 1213
@@ -39896,15 +40014,15 @@
link_targets
- 943
+ 923
id
- 943
+ 923
binary
- 943
+ 923
@@ -39918,7 +40036,7 @@
1
2
- 943
+ 923
@@ -39934,7 +40052,7 @@
1
2
- 943
+ 923
@@ -39944,11 +40062,11 @@
link_parent
- 38129861
+ 38113722
element
- 4849837
+ 4847512
link_target
@@ -39966,17 +40084,17 @@
1
2
- 665798
+ 665225
2
9
- 33828
+ 33795
9
10
- 4150209
+ 4148492
@@ -39995,48 +40113,48 @@
42
- 97300
- 97301
+ 97356
+ 97357
42
- 97419
- 97420
+ 97475
+ 97476
42
- 97472
- 97473
+ 97528
+ 97529
42
- 97499
- 97500
+ 97555
+ 97556
42
- 97521
- 97522
+ 97577
+ 97578
42
- 97553
- 97554
+ 97609
+ 97610
42
- 99560
- 99561
+ 99616
+ 99617
42
- 102940
- 102941
+ 102996
+ 102997
42
- 104302
- 104303
+ 104360
+ 104361
42
diff --git a/cpp/ql/lib/upgrades/3c45f8b9e71ec723bf50c40581e1f18f4f25e290/old.dbscheme b/cpp/ql/lib/upgrades/3c45f8b9e71ec723bf50c40581e1f18f4f25e290/old.dbscheme
new file mode 100644
index 000000000000..3c45f8b9e71e
--- /dev/null
+++ b/cpp/ql/lib/upgrades/3c45f8b9e71ec723bf50c40581e1f18f4f25e290/old.dbscheme
@@ -0,0 +1,2493 @@
+
+/**
+ * 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
+);
+
+/*
+case @fun_requires.kind of
+ 1 = @template_attached
+| 2 = @function_attached
+;
+*/
+
+fun_requires(
+ int id: @fun_decl ref,
+ int kind: int ref,
+ int constraint: @expr 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_specialized(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);
+var_requires(
+ int id: @var_decl ref,
+ int constraint: @expr 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
+);
+type_requires(
+ int id: @type_decl ref,
+ int constraint: @expr 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
+| 62 = @mfp8 // __mfp8
+;
+
+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 or C23 `typeof`/`typeof_unqual`
+ * operator taking an expression as its argument. For example:
+ * ```
+ * int a;
+ * decltype(1+a) b;
+ * typeof(1+a) c;
+ * ```
+ * Here `expr` is `1+a`.
+ *
+ * Sometimes an additional pair of parentheses around the expression
+ * changes the semantics of the 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.
+ */
+
+/*
+case @decltype.kind of
+| 0 = @decltype
+| 1 = @typeof // The frontend does not differentiate between typeof and typeof_unqual
+;
+*/
+
+#keyset[id, expr]
+decltypes(
+ int id: @decltype,
+ int expr: @expr ref,
+ int kind: int ref,
+ int base_type: @type ref,
+ boolean parentheses_would_change_meaning: boolean ref
+);
+
+/*
+case @type_operator.kind of
+| 0 = @typeof // The frontend does not differentiate between typeof and typeof_unqual
+| 1 = @underlying_type
+| 2 = @bases
+| 3 = @direct_bases
+| 4 = @add_lvalue_reference
+| 5 = @add_pointer
+| 6 = @add_rvalue_reference
+| 7 = @decay
+| 8 = @make_signed
+| 9 = @make_unsigned
+| 10 = @remove_all_extents
+| 11 = @remove_const
+| 12 = @remove_cv
+| 13 = @remove_cvref
+| 14 = @remove_extent
+| 15 = @remove_pointer
+| 16 = @remove_reference_t
+| 17 = @remove_restrict
+| 18 = @remove_volatile
+| 19 = @remove_reference
+;
+*/
+
+type_operators(
+ unique int id: @type_operator,
+ int arg_type: @type ref,
+ int kind: int ref,
+ int base_type: @type ref
+)
+
+/*
+case @usertype.kind of
+| 0 = @unknown_usertype
+| 1 = @struct
+| 2 = @class
+| 3 = @union
+| 4 = @enum
+// ... 5 = @typedef deprecated // classic C: typedef typedef type name
+// ... 6 = @template deprecated
+| 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 deprecated // a using name = type style typedef
+| 15 = @template_struct
+| 16 = @template_class
+| 17 = @template_union
+| 18 = @alias
+;
+*/
+
+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
+);
+
+/*
+case @usertype.alias_kind of
+| 0 = @typedef
+| 1 = @alias
+*/
+
+usertype_alias_kind(
+ int id: @usertype ref,
+ int alias_kind: int ref
+)
+
+nontype_template_parameters(
+ int id: @expr ref
+);
+
+type_template_type_constraint(
+ int id: @usertype ref,
+ int constraint: @expr 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
+);
+
+@user_or_decltype = @usertype | @decltype;
+
+is_proxy_class_for(
+ unique int id: @usertype ref,
+ int templ_param_id: @user_or_decltype 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
+);
+
+template_template_instantiation(
+ int to: @usertype ref,
+ int from: @usertype ref
+);
+template_template_argument(
+ int type_id: @usertype ref,
+ int index: int ref,
+ int arg_type: @type ref
+);
+template_template_argument_value(
+ int type_id: @usertype ref,
+ int index: int ref,
+ int arg_value: @expr ref
+);
+
+@concept = @concept_template | @concept_id;
+
+concept_templates(
+ unique int concept_id: @concept_template,
+ string name: string ref,
+ int location: @location_default ref
+);
+concept_instantiation(
+ unique int to: @concept_id ref,
+ int from: @concept_template ref
+);
+is_type_constraint(int concept_id: @concept_id ref);
+concept_template_argument(
+ int concept_id: @concept ref,
+ int index: int ref,
+ int arg_type: @type ref
+);
+concept_template_argument_value(
+ int concept_id: @concept 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
+ | @routinetype
+ | @ptrtomember
+ | @decltype
+ | @type_operator;
+
+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
+ | @concept_template;
+
+@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,
+ boolean is_designated: boolean 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,
+ boolean is_designated: boolean 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
+);
+
+@sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof | @sizeof_pack;
+
+sizeof_bind(
+ unique int expr: @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,
+ boolean has_explicit_parameter_list: 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
+| 38 = @stmt_consteval_if
+| 39 = @stmt_not_consteval_if
+;
+
+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
+);
+
+type_is_vla(unique int type_id: @derivedtype 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
+);
+
+@stmt_consteval_or_not_consteval_if = @stmt_consteval_if | @stmt_not_consteval_if;
+
+consteval_if_then(
+ unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref,
+ int then_id: @stmt ref
+);
+
+consteval_if_else(
+ unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_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
+| 14 = @ppd_ms_import
+| 15 = @ppd_elifdef
+| 16 = @ppd_elifndef
+| 18 = @ppd_warning
+;
+
+@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next | @ppd_ms_import;
+
+@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif | @ppd_elifdef | @ppd_elifndef;
+
+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/3c45f8b9e71ec723bf50c40581e1f18f4f25e290/semmlecode.cpp.dbscheme b/cpp/ql/lib/upgrades/3c45f8b9e71ec723bf50c40581e1f18f4f25e290/semmlecode.cpp.dbscheme
new file mode 100644
index 000000000000..a8c2176e9a5c
--- /dev/null
+++ b/cpp/ql/lib/upgrades/3c45f8b9e71ec723bf50c40581e1f18f4f25e290/semmlecode.cpp.dbscheme
@@ -0,0 +1,2494 @@
+
+/**
+ * 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
+);
+
+/*
+case @fun_requires.kind of
+ 1 = @template_attached
+| 2 = @function_attached
+;
+*/
+
+fun_requires(
+ int id: @fun_decl ref,
+ int kind: int ref,
+ int constraint: @expr 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_specialized(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);
+var_requires(
+ int id: @var_decl ref,
+ int constraint: @expr 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
+);
+type_requires(
+ int id: @type_decl ref,
+ int constraint: @expr 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
+| 62 = @mfp8 // __mfp8
+;
+
+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 or C23 `typeof`/`typeof_unqual`
+ * operator taking an expression as its argument. For example:
+ * ```
+ * int a;
+ * decltype(1+a) b;
+ * typeof(1+a) c;
+ * ```
+ * Here `expr` is `1+a`.
+ *
+ * Sometimes an additional pair of parentheses around the expression
+ * changes the semantics of the 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.
+ */
+
+/*
+case @decltype.kind of
+| 0 = @decltype
+| 1 = @typeof // The frontend does not differentiate between typeof and typeof_unqual
+;
+*/
+
+#keyset[id, expr]
+decltypes(
+ int id: @decltype,
+ int expr: @expr ref,
+ int kind: int ref,
+ int base_type: @type ref,
+ boolean parentheses_would_change_meaning: boolean ref
+);
+
+/*
+case @type_operator.kind of
+| 0 = @typeof // The frontend does not differentiate between typeof and typeof_unqual
+| 1 = @underlying_type
+| 2 = @bases
+| 3 = @direct_bases
+| 4 = @add_lvalue_reference
+| 5 = @add_pointer
+| 6 = @add_rvalue_reference
+| 7 = @decay
+| 8 = @make_signed
+| 9 = @make_unsigned
+| 10 = @remove_all_extents
+| 11 = @remove_const
+| 12 = @remove_cv
+| 13 = @remove_cvref
+| 14 = @remove_extent
+| 15 = @remove_pointer
+| 16 = @remove_reference_t
+| 17 = @remove_restrict
+| 18 = @remove_volatile
+| 19 = @remove_reference
+;
+*/
+
+type_operators(
+ unique int id: @type_operator,
+ int arg_type: @type ref,
+ int kind: int ref,
+ int base_type: @type ref
+)
+
+/*
+case @usertype.kind of
+| 0 = @unknown_usertype
+| 1 = @struct
+| 2 = @class
+| 3 = @union
+| 4 = @enum
+// ... 5 = @typedef deprecated // classic C: typedef typedef type name
+// ... 6 = @template deprecated
+| 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 deprecated // a using name = type style typedef
+| 15 = @template_struct
+| 16 = @template_class
+| 17 = @template_union
+| 18 = @alias
+;
+*/
+
+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
+);
+
+/*
+case @usertype.alias_kind of
+| 0 = @typedef
+| 1 = @alias
+*/
+
+usertype_alias_kind(
+ int id: @usertype ref,
+ int alias_kind: int ref
+)
+
+nontype_template_parameters(
+ int id: @expr ref
+);
+
+type_template_type_constraint(
+ int id: @usertype ref,
+ int constraint: @expr 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
+);
+
+@user_or_decltype = @usertype | @decltype;
+
+is_proxy_class_for(
+ unique int id: @usertype ref,
+ int templ_param_id: @user_or_decltype 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
+);
+
+template_template_instantiation(
+ int to: @usertype ref,
+ int from: @usertype ref
+);
+template_template_argument(
+ int type_id: @usertype ref,
+ int index: int ref,
+ int arg_type: @type ref
+);
+template_template_argument_value(
+ int type_id: @usertype ref,
+ int index: int ref,
+ int arg_value: @expr ref
+);
+
+@concept = @concept_template | @concept_id;
+
+concept_templates(
+ unique int concept_id: @concept_template,
+ string name: string ref,
+ int location: @location_default ref
+);
+concept_instantiation(
+ unique int to: @concept_id ref,
+ int from: @concept_template ref
+);
+is_type_constraint(int concept_id: @concept_id ref);
+concept_template_argument(
+ int concept_id: @concept ref,
+ int index: int ref,
+ int arg_type: @type ref
+);
+concept_template_argument_value(
+ int concept_id: @concept 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
+ | @routinetype
+ | @ptrtomember
+ | @decltype
+ | @type_operator;
+
+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
+ | @concept_template;
+
+@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,
+ boolean is_designated: boolean 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,
+ boolean is_designated: boolean 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
+);
+
+@sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof | @sizeof_pack;
+
+sizeof_bind(
+ unique int expr: @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,
+ boolean has_explicit_parameter_list: 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
+| 38 = @stmt_consteval_if
+| 39 = @stmt_not_consteval_if
+| 40 = @stmt_leave
+;
+
+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
+);
+
+type_is_vla(unique int type_id: @derivedtype 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
+);
+
+@stmt_consteval_or_not_consteval_if = @stmt_consteval_if | @stmt_not_consteval_if;
+
+consteval_if_then(
+ unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref,
+ int then_id: @stmt ref
+);
+
+consteval_if_else(
+ unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_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 | @stmt_leave;
+
+@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
+| 14 = @ppd_ms_import
+| 15 = @ppd_elifdef
+| 16 = @ppd_elifndef
+| 18 = @ppd_warning
+;
+
+@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next | @ppd_ms_import;
+
+@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif | @ppd_elifdef | @ppd_elifndef;
+
+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/3c45f8b9e71ec723bf50c40581e1f18f4f25e290/upgrade.properties b/cpp/ql/lib/upgrades/3c45f8b9e71ec723bf50c40581e1f18f4f25e290/upgrade.properties
new file mode 100644
index 000000000000..bd639edb8f24
--- /dev/null
+++ b/cpp/ql/lib/upgrades/3c45f8b9e71ec723bf50c40581e1f18f4f25e290/upgrade.properties
@@ -0,0 +1,2 @@
+description: Support `__leave` statement
+compatibility: partial
diff --git a/cpp/ql/lib/upgrades/9a7c3c14c1076f64b871719117a558733d987b48/old.dbscheme b/cpp/ql/lib/upgrades/9a7c3c14c1076f64b871719117a558733d987b48/old.dbscheme
new file mode 100644
index 000000000000..9a7c3c14c107
--- /dev/null
+++ b/cpp/ql/lib/upgrades/9a7c3c14c1076f64b871719117a558733d987b48/old.dbscheme
@@ -0,0 +1,2491 @@
+
+/**
+ * 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
+);
+
+/*
+case @fun_requires.kind of
+ 1 = @template_attached
+| 2 = @function_attached
+;
+*/
+
+fun_requires(
+ int id: @fun_decl ref,
+ int kind: int ref,
+ int constraint: @expr 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_specialized(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);
+var_requires(
+ int id: @var_decl ref,
+ int constraint: @expr 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
+);
+type_requires(
+ int id: @type_decl ref,
+ int constraint: @expr 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 or C23 `typeof`/`typeof_unqual`
+ * operator taking an expression as its argument. For example:
+ * ```
+ * int a;
+ * decltype(1+a) b;
+ * typeof(1+a) c;
+ * ```
+ * Here `expr` is `1+a`.
+ *
+ * Sometimes an additional pair of parentheses around the expression
+ * changes the semantics of the 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.
+ */
+
+/*
+case @decltype.kind of
+| 0 = @decltype
+| 1 = @typeof // The frontend does not differentiate between typeof and typeof_unqual
+;
+*/
+
+#keyset[id, expr]
+decltypes(
+ int id: @decltype,
+ int expr: @expr ref,
+ int kind: int ref,
+ int base_type: @type ref,
+ boolean parentheses_would_change_meaning: boolean ref
+);
+
+/*
+case @type_operator.kind of
+| 0 = @typeof // The frontend does not differentiate between typeof and typeof_unqual
+| 1 = @underlying_type
+| 2 = @bases
+| 3 = @direct_bases
+| 4 = @add_lvalue_reference
+| 5 = @add_pointer
+| 6 = @add_rvalue_reference
+| 7 = @decay
+| 8 = @make_signed
+| 9 = @make_unsigned
+| 10 = @remove_all_extents
+| 11 = @remove_const
+| 12 = @remove_cv
+| 13 = @remove_cvref
+| 14 = @remove_extent
+| 15 = @remove_pointer
+| 16 = @remove_reference_t
+| 17 = @remove_restrict
+| 18 = @remove_volatile
+| 19 = @remove_reference
+;
+*/
+
+type_operators(
+ unique int id: @type_operator,
+ int arg_type: @type ref,
+ int kind: int ref,
+ int base_type: @type ref
+)
+
+/*
+case @usertype.kind of
+| 0 = @unknown_usertype
+| 1 = @struct
+| 2 = @class
+| 3 = @union
+| 4 = @enum
+// ... 5 = @typedef deprecated // classic C: typedef typedef type name
+// ... 6 = @template deprecated
+| 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 deprecated // a using name = type style typedef
+| 15 = @template_struct
+| 16 = @template_class
+| 17 = @template_union
+| 18 = @alias
+;
+*/
+
+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
+);
+
+/*
+case @usertype.alias_kind of
+| 0 = @typedef
+| 1 = @alias
+*/
+
+usertype_alias_kind(
+ int id: @usertype ref,
+ int alias_kind: int ref
+)
+
+nontype_template_parameters(
+ int id: @expr ref
+);
+
+type_template_type_constraint(
+ int id: @usertype ref,
+ int constraint: @expr 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
+);
+
+@user_or_decltype = @usertype | @decltype;
+
+is_proxy_class_for(
+ unique int id: @usertype ref,
+ int templ_param_id: @user_or_decltype 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
+);
+
+template_template_instantiation(
+ int to: @usertype ref,
+ int from: @usertype ref
+);
+template_template_argument(
+ int type_id: @usertype ref,
+ int index: int ref,
+ int arg_type: @type ref
+);
+template_template_argument_value(
+ int type_id: @usertype ref,
+ int index: int ref,
+ int arg_value: @expr ref
+);
+
+@concept = @concept_template | @concept_id;
+
+concept_templates(
+ unique int concept_id: @concept_template,
+ string name: string ref,
+ int location: @location_default ref
+);
+concept_instantiation(
+ unique int to: @concept_id ref,
+ int from: @concept_template ref
+);
+is_type_constraint(int concept_id: @concept_id ref);
+concept_template_argument(
+ int concept_id: @concept ref,
+ int index: int ref,
+ int arg_type: @type ref
+);
+concept_template_argument_value(
+ int concept_id: @concept 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
+ | @routinetype
+ | @ptrtomember
+ | @decltype
+ | @type_operator;
+
+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
+ | @concept_template;
+
+@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,
+ boolean is_designated: boolean 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,
+ boolean is_designated: boolean 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
+);
+
+@sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof | @sizeof_pack;
+
+sizeof_bind(
+ unique int expr: @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
+| 38 = @stmt_consteval_if
+| 39 = @stmt_not_consteval_if
+;
+
+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
+);
+
+type_is_vla(unique int type_id: @derivedtype 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
+);
+
+@stmt_consteval_or_not_consteval_if = @stmt_consteval_if | @stmt_not_consteval_if;
+
+consteval_if_then(
+ unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref,
+ int then_id: @stmt ref
+);
+
+consteval_if_else(
+ unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_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
+| 14 = @ppd_ms_import
+| 15 = @ppd_elifdef
+| 16 = @ppd_elifndef
+| 18 = @ppd_warning
+;
+
+@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next | @ppd_ms_import;
+
+@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif | @ppd_elifdef | @ppd_elifndef;
+
+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/9a7c3c14c1076f64b871719117a558733d987b48/semmlecode.cpp.dbscheme b/cpp/ql/lib/upgrades/9a7c3c14c1076f64b871719117a558733d987b48/semmlecode.cpp.dbscheme
new file mode 100644
index 000000000000..af887e83a815
--- /dev/null
+++ b/cpp/ql/lib/upgrades/9a7c3c14c1076f64b871719117a558733d987b48/semmlecode.cpp.dbscheme
@@ -0,0 +1,2492 @@
+
+/**
+ * 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
+);
+
+/*
+case @fun_requires.kind of
+ 1 = @template_attached
+| 2 = @function_attached
+;
+*/
+
+fun_requires(
+ int id: @fun_decl ref,
+ int kind: int ref,
+ int constraint: @expr 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_specialized(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);
+var_requires(
+ int id: @var_decl ref,
+ int constraint: @expr 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
+);
+type_requires(
+ int id: @type_decl ref,
+ int constraint: @expr 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
+| 62 = @mfp8 // __mfp8
+;
+
+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 or C23 `typeof`/`typeof_unqual`
+ * operator taking an expression as its argument. For example:
+ * ```
+ * int a;
+ * decltype(1+a) b;
+ * typeof(1+a) c;
+ * ```
+ * Here `expr` is `1+a`.
+ *
+ * Sometimes an additional pair of parentheses around the expression
+ * changes the semantics of the 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.
+ */
+
+/*
+case @decltype.kind of
+| 0 = @decltype
+| 1 = @typeof // The frontend does not differentiate between typeof and typeof_unqual
+;
+*/
+
+#keyset[id, expr]
+decltypes(
+ int id: @decltype,
+ int expr: @expr ref,
+ int kind: int ref,
+ int base_type: @type ref,
+ boolean parentheses_would_change_meaning: boolean ref
+);
+
+/*
+case @type_operator.kind of
+| 0 = @typeof // The frontend does not differentiate between typeof and typeof_unqual
+| 1 = @underlying_type
+| 2 = @bases
+| 3 = @direct_bases
+| 4 = @add_lvalue_reference
+| 5 = @add_pointer
+| 6 = @add_rvalue_reference
+| 7 = @decay
+| 8 = @make_signed
+| 9 = @make_unsigned
+| 10 = @remove_all_extents
+| 11 = @remove_const
+| 12 = @remove_cv
+| 13 = @remove_cvref
+| 14 = @remove_extent
+| 15 = @remove_pointer
+| 16 = @remove_reference_t
+| 17 = @remove_restrict
+| 18 = @remove_volatile
+| 19 = @remove_reference
+;
+*/
+
+type_operators(
+ unique int id: @type_operator,
+ int arg_type: @type ref,
+ int kind: int ref,
+ int base_type: @type ref
+)
+
+/*
+case @usertype.kind of
+| 0 = @unknown_usertype
+| 1 = @struct
+| 2 = @class
+| 3 = @union
+| 4 = @enum
+// ... 5 = @typedef deprecated // classic C: typedef typedef type name
+// ... 6 = @template deprecated
+| 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 deprecated // a using name = type style typedef
+| 15 = @template_struct
+| 16 = @template_class
+| 17 = @template_union
+| 18 = @alias
+;
+*/
+
+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
+);
+
+/*
+case @usertype.alias_kind of
+| 0 = @typedef
+| 1 = @alias
+*/
+
+usertype_alias_kind(
+ int id: @usertype ref,
+ int alias_kind: int ref
+)
+
+nontype_template_parameters(
+ int id: @expr ref
+);
+
+type_template_type_constraint(
+ int id: @usertype ref,
+ int constraint: @expr 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
+);
+
+@user_or_decltype = @usertype | @decltype;
+
+is_proxy_class_for(
+ unique int id: @usertype ref,
+ int templ_param_id: @user_or_decltype 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
+);
+
+template_template_instantiation(
+ int to: @usertype ref,
+ int from: @usertype ref
+);
+template_template_argument(
+ int type_id: @usertype ref,
+ int index: int ref,
+ int arg_type: @type ref
+);
+template_template_argument_value(
+ int type_id: @usertype ref,
+ int index: int ref,
+ int arg_value: @expr ref
+);
+
+@concept = @concept_template | @concept_id;
+
+concept_templates(
+ unique int concept_id: @concept_template,
+ string name: string ref,
+ int location: @location_default ref
+);
+concept_instantiation(
+ unique int to: @concept_id ref,
+ int from: @concept_template ref
+);
+is_type_constraint(int concept_id: @concept_id ref);
+concept_template_argument(
+ int concept_id: @concept ref,
+ int index: int ref,
+ int arg_type: @type ref
+);
+concept_template_argument_value(
+ int concept_id: @concept 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
+ | @routinetype
+ | @ptrtomember
+ | @decltype
+ | @type_operator;
+
+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
+ | @concept_template;
+
+@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,
+ boolean is_designated: boolean 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,
+ boolean is_designated: boolean 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
+);
+
+@sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof | @sizeof_pack;
+
+sizeof_bind(
+ unique int expr: @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
+| 38 = @stmt_consteval_if
+| 39 = @stmt_not_consteval_if
+;
+
+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
+);
+
+type_is_vla(unique int type_id: @derivedtype 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
+);
+
+@stmt_consteval_or_not_consteval_if = @stmt_consteval_if | @stmt_not_consteval_if;
+
+consteval_if_then(
+ unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref,
+ int then_id: @stmt ref
+);
+
+consteval_if_else(
+ unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_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
+| 14 = @ppd_ms_import
+| 15 = @ppd_elifdef
+| 16 = @ppd_elifndef
+| 18 = @ppd_warning
+;
+
+@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next | @ppd_ms_import;
+
+@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif | @ppd_elifdef | @ppd_elifndef;
+
+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/9a7c3c14c1076f64b871719117a558733d987b48/upgrade.properties b/cpp/ql/lib/upgrades/9a7c3c14c1076f64b871719117a558733d987b48/upgrade.properties
new file mode 100644
index 000000000000..3fdb0aa5a823
--- /dev/null
+++ b/cpp/ql/lib/upgrades/9a7c3c14c1076f64b871719117a558733d987b48/upgrade.properties
@@ -0,0 +1,2 @@
+description: Support __mfp8 type
+compatibility: full
diff --git a/cpp/ql/lib/upgrades/af887e83a815a9cefe774ffa80e2493a1365b9e2/lambdas.ql b/cpp/ql/lib/upgrades/af887e83a815a9cefe774ffa80e2493a1365b9e2/lambdas.ql
new file mode 100644
index 000000000000..f3891442a864
--- /dev/null
+++ b/cpp/ql/lib/upgrades/af887e83a815a9cefe774ffa80e2493a1365b9e2/lambdas.ql
@@ -0,0 +1,7 @@
+class LambdaExpr extends @lambdaexpr {
+ string toString() { none() }
+}
+
+from LambdaExpr lambda, string default_capture, boolean has_explicit_return_type
+where lambdas(lambda, default_capture, has_explicit_return_type)
+select lambda, default_capture, has_explicit_return_type, true
diff --git a/cpp/ql/lib/upgrades/af887e83a815a9cefe774ffa80e2493a1365b9e2/old.dbscheme b/cpp/ql/lib/upgrades/af887e83a815a9cefe774ffa80e2493a1365b9e2/old.dbscheme
new file mode 100644
index 000000000000..af887e83a815
--- /dev/null
+++ b/cpp/ql/lib/upgrades/af887e83a815a9cefe774ffa80e2493a1365b9e2/old.dbscheme
@@ -0,0 +1,2492 @@
+
+/**
+ * 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
+);
+
+/*
+case @fun_requires.kind of
+ 1 = @template_attached
+| 2 = @function_attached
+;
+*/
+
+fun_requires(
+ int id: @fun_decl ref,
+ int kind: int ref,
+ int constraint: @expr 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_specialized(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);
+var_requires(
+ int id: @var_decl ref,
+ int constraint: @expr 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
+);
+type_requires(
+ int id: @type_decl ref,
+ int constraint: @expr 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
+| 62 = @mfp8 // __mfp8
+;
+
+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 or C23 `typeof`/`typeof_unqual`
+ * operator taking an expression as its argument. For example:
+ * ```
+ * int a;
+ * decltype(1+a) b;
+ * typeof(1+a) c;
+ * ```
+ * Here `expr` is `1+a`.
+ *
+ * Sometimes an additional pair of parentheses around the expression
+ * changes the semantics of the 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.
+ */
+
+/*
+case @decltype.kind of
+| 0 = @decltype
+| 1 = @typeof // The frontend does not differentiate between typeof and typeof_unqual
+;
+*/
+
+#keyset[id, expr]
+decltypes(
+ int id: @decltype,
+ int expr: @expr ref,
+ int kind: int ref,
+ int base_type: @type ref,
+ boolean parentheses_would_change_meaning: boolean ref
+);
+
+/*
+case @type_operator.kind of
+| 0 = @typeof // The frontend does not differentiate between typeof and typeof_unqual
+| 1 = @underlying_type
+| 2 = @bases
+| 3 = @direct_bases
+| 4 = @add_lvalue_reference
+| 5 = @add_pointer
+| 6 = @add_rvalue_reference
+| 7 = @decay
+| 8 = @make_signed
+| 9 = @make_unsigned
+| 10 = @remove_all_extents
+| 11 = @remove_const
+| 12 = @remove_cv
+| 13 = @remove_cvref
+| 14 = @remove_extent
+| 15 = @remove_pointer
+| 16 = @remove_reference_t
+| 17 = @remove_restrict
+| 18 = @remove_volatile
+| 19 = @remove_reference
+;
+*/
+
+type_operators(
+ unique int id: @type_operator,
+ int arg_type: @type ref,
+ int kind: int ref,
+ int base_type: @type ref
+)
+
+/*
+case @usertype.kind of
+| 0 = @unknown_usertype
+| 1 = @struct
+| 2 = @class
+| 3 = @union
+| 4 = @enum
+// ... 5 = @typedef deprecated // classic C: typedef typedef type name
+// ... 6 = @template deprecated
+| 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 deprecated // a using name = type style typedef
+| 15 = @template_struct
+| 16 = @template_class
+| 17 = @template_union
+| 18 = @alias
+;
+*/
+
+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
+);
+
+/*
+case @usertype.alias_kind of
+| 0 = @typedef
+| 1 = @alias
+*/
+
+usertype_alias_kind(
+ int id: @usertype ref,
+ int alias_kind: int ref
+)
+
+nontype_template_parameters(
+ int id: @expr ref
+);
+
+type_template_type_constraint(
+ int id: @usertype ref,
+ int constraint: @expr 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
+);
+
+@user_or_decltype = @usertype | @decltype;
+
+is_proxy_class_for(
+ unique int id: @usertype ref,
+ int templ_param_id: @user_or_decltype 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
+);
+
+template_template_instantiation(
+ int to: @usertype ref,
+ int from: @usertype ref
+);
+template_template_argument(
+ int type_id: @usertype ref,
+ int index: int ref,
+ int arg_type: @type ref
+);
+template_template_argument_value(
+ int type_id: @usertype ref,
+ int index: int ref,
+ int arg_value: @expr ref
+);
+
+@concept = @concept_template | @concept_id;
+
+concept_templates(
+ unique int concept_id: @concept_template,
+ string name: string ref,
+ int location: @location_default ref
+);
+concept_instantiation(
+ unique int to: @concept_id ref,
+ int from: @concept_template ref
+);
+is_type_constraint(int concept_id: @concept_id ref);
+concept_template_argument(
+ int concept_id: @concept ref,
+ int index: int ref,
+ int arg_type: @type ref
+);
+concept_template_argument_value(
+ int concept_id: @concept 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
+ | @routinetype
+ | @ptrtomember
+ | @decltype
+ | @type_operator;
+
+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
+ | @concept_template;
+
+@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,
+ boolean is_designated: boolean 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,
+ boolean is_designated: boolean 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
+);
+
+@sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof | @sizeof_pack;
+
+sizeof_bind(
+ unique int expr: @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
+| 38 = @stmt_consteval_if
+| 39 = @stmt_not_consteval_if
+;
+
+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
+);
+
+type_is_vla(unique int type_id: @derivedtype 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
+);
+
+@stmt_consteval_or_not_consteval_if = @stmt_consteval_if | @stmt_not_consteval_if;
+
+consteval_if_then(
+ unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref,
+ int then_id: @stmt ref
+);
+
+consteval_if_else(
+ unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_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
+| 14 = @ppd_ms_import
+| 15 = @ppd_elifdef
+| 16 = @ppd_elifndef
+| 18 = @ppd_warning
+;
+
+@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next | @ppd_ms_import;
+
+@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif | @ppd_elifdef | @ppd_elifndef;
+
+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/af887e83a815a9cefe774ffa80e2493a1365b9e2/semmlecode.cpp.dbscheme b/cpp/ql/lib/upgrades/af887e83a815a9cefe774ffa80e2493a1365b9e2/semmlecode.cpp.dbscheme
new file mode 100644
index 000000000000..3c45f8b9e71e
--- /dev/null
+++ b/cpp/ql/lib/upgrades/af887e83a815a9cefe774ffa80e2493a1365b9e2/semmlecode.cpp.dbscheme
@@ -0,0 +1,2493 @@
+
+/**
+ * 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
+);
+
+/*
+case @fun_requires.kind of
+ 1 = @template_attached
+| 2 = @function_attached
+;
+*/
+
+fun_requires(
+ int id: @fun_decl ref,
+ int kind: int ref,
+ int constraint: @expr 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_specialized(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);
+var_requires(
+ int id: @var_decl ref,
+ int constraint: @expr 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
+);
+type_requires(
+ int id: @type_decl ref,
+ int constraint: @expr 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
+| 62 = @mfp8 // __mfp8
+;
+
+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 or C23 `typeof`/`typeof_unqual`
+ * operator taking an expression as its argument. For example:
+ * ```
+ * int a;
+ * decltype(1+a) b;
+ * typeof(1+a) c;
+ * ```
+ * Here `expr` is `1+a`.
+ *
+ * Sometimes an additional pair of parentheses around the expression
+ * changes the semantics of the 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.
+ */
+
+/*
+case @decltype.kind of
+| 0 = @decltype
+| 1 = @typeof // The frontend does not differentiate between typeof and typeof_unqual
+;
+*/
+
+#keyset[id, expr]
+decltypes(
+ int id: @decltype,
+ int expr: @expr ref,
+ int kind: int ref,
+ int base_type: @type ref,
+ boolean parentheses_would_change_meaning: boolean ref
+);
+
+/*
+case @type_operator.kind of
+| 0 = @typeof // The frontend does not differentiate between typeof and typeof_unqual
+| 1 = @underlying_type
+| 2 = @bases
+| 3 = @direct_bases
+| 4 = @add_lvalue_reference
+| 5 = @add_pointer
+| 6 = @add_rvalue_reference
+| 7 = @decay
+| 8 = @make_signed
+| 9 = @make_unsigned
+| 10 = @remove_all_extents
+| 11 = @remove_const
+| 12 = @remove_cv
+| 13 = @remove_cvref
+| 14 = @remove_extent
+| 15 = @remove_pointer
+| 16 = @remove_reference_t
+| 17 = @remove_restrict
+| 18 = @remove_volatile
+| 19 = @remove_reference
+;
+*/
+
+type_operators(
+ unique int id: @type_operator,
+ int arg_type: @type ref,
+ int kind: int ref,
+ int base_type: @type ref
+)
+
+/*
+case @usertype.kind of
+| 0 = @unknown_usertype
+| 1 = @struct
+| 2 = @class
+| 3 = @union
+| 4 = @enum
+// ... 5 = @typedef deprecated // classic C: typedef typedef type name
+// ... 6 = @template deprecated
+| 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 deprecated // a using name = type style typedef
+| 15 = @template_struct
+| 16 = @template_class
+| 17 = @template_union
+| 18 = @alias
+;
+*/
+
+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
+);
+
+/*
+case @usertype.alias_kind of
+| 0 = @typedef
+| 1 = @alias
+*/
+
+usertype_alias_kind(
+ int id: @usertype ref,
+ int alias_kind: int ref
+)
+
+nontype_template_parameters(
+ int id: @expr ref
+);
+
+type_template_type_constraint(
+ int id: @usertype ref,
+ int constraint: @expr 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
+);
+
+@user_or_decltype = @usertype | @decltype;
+
+is_proxy_class_for(
+ unique int id: @usertype ref,
+ int templ_param_id: @user_or_decltype 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
+);
+
+template_template_instantiation(
+ int to: @usertype ref,
+ int from: @usertype ref
+);
+template_template_argument(
+ int type_id: @usertype ref,
+ int index: int ref,
+ int arg_type: @type ref
+);
+template_template_argument_value(
+ int type_id: @usertype ref,
+ int index: int ref,
+ int arg_value: @expr ref
+);
+
+@concept = @concept_template | @concept_id;
+
+concept_templates(
+ unique int concept_id: @concept_template,
+ string name: string ref,
+ int location: @location_default ref
+);
+concept_instantiation(
+ unique int to: @concept_id ref,
+ int from: @concept_template ref
+);
+is_type_constraint(int concept_id: @concept_id ref);
+concept_template_argument(
+ int concept_id: @concept ref,
+ int index: int ref,
+ int arg_type: @type ref
+);
+concept_template_argument_value(
+ int concept_id: @concept 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
+ | @routinetype
+ | @ptrtomember
+ | @decltype
+ | @type_operator;
+
+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
+ | @concept_template;
+
+@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,
+ boolean is_designated: boolean 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,
+ boolean is_designated: boolean 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
+);
+
+@sizeof_or_alignof = @runtime_sizeof | @runtime_alignof | @datasizeof | @sizeof_pack;
+
+sizeof_bind(
+ unique int expr: @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,
+ boolean has_explicit_parameter_list: 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
+| 38 = @stmt_consteval_if
+| 39 = @stmt_not_consteval_if
+;
+
+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
+);
+
+type_is_vla(unique int type_id: @derivedtype 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
+);
+
+@stmt_consteval_or_not_consteval_if = @stmt_consteval_if | @stmt_not_consteval_if;
+
+consteval_if_then(
+ unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_if ref,
+ int then_id: @stmt ref
+);
+
+consteval_if_else(
+ unique int constexpr_if_stmt: @stmt_consteval_or_not_consteval_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
+| 14 = @ppd_ms_import
+| 15 = @ppd_elifdef
+| 16 = @ppd_elifndef
+| 18 = @ppd_warning
+;
+
+@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next | @ppd_ms_import;
+
+@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif | @ppd_elifdef | @ppd_elifndef;
+
+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/af887e83a815a9cefe774ffa80e2493a1365b9e2/upgrade.properties b/cpp/ql/lib/upgrades/af887e83a815a9cefe774ffa80e2493a1365b9e2/upgrade.properties
new file mode 100644
index 000000000000..9dc80bb35fcb
--- /dev/null
+++ b/cpp/ql/lib/upgrades/af887e83a815a9cefe774ffa80e2493a1365b9e2/upgrade.properties
@@ -0,0 +1,3 @@
+description: capture whether a lambda has an explicitly specified parameter list.
+compatibility: backwards
+lambdas.rel: run lambdas.qlo
diff --git a/cpp/ql/src/change-notes/2025-06-13-mad-summaries.md b/cpp/ql/src/change-notes/2025-06-13-mad-summaries.md
new file mode 100644
index 000000000000..f70b9037cd40
--- /dev/null
+++ b/cpp/ql/src/change-notes/2025-06-13-mad-summaries.md
@@ -0,0 +1,4 @@
+---
+category: minorAnalysis
+---
+* Added flow model for the following libraries: `madler/zlib`, `google/brotli`, `libidn/libidn2`, `libssh2/libssh2/`, `nghttp2/nghttp2`, `libuv/libuv/`, and `curl/curl`. This may result in more alerts when running queries on codebases that use these libraries.
\ No newline at end of file
diff --git a/cpp/ql/src/qlpack.yml b/cpp/ql/src/qlpack.yml
index 52f0f08a4c55..290c18cb815b 100644
--- a/cpp/ql/src/qlpack.yml
+++ b/cpp/ql/src/qlpack.yml
@@ -1,5 +1,5 @@
name: codeql/cpp-queries
-version: 1.4.2
+version: 1.4.3-dev
groups:
- cpp
- queries
diff --git a/cpp/ql/test/library-tests/dataflow/external-models/flow.expected b/cpp/ql/test/library-tests/dataflow/external-models/flow.expected
index a4f7767db566..385af7a4e2c3 100644
--- a/cpp/ql/test/library-tests/dataflow/external-models/flow.expected
+++ b/cpp/ql/test/library-tests/dataflow/external-models/flow.expected
@@ -10,31 +10,31 @@ edges
| asio_streams.cpp:100:44:100:62 | call to buffer | asio_streams.cpp:103:29:103:39 | *send_buffer | provenance | Sink:MaD:6 |
| asio_streams.cpp:100:64:100:71 | *send_str | asio_streams.cpp:56:18:56:23 | [summary param] *0 in buffer | provenance | |
| asio_streams.cpp:100:64:100:71 | *send_str | asio_streams.cpp:100:44:100:62 | call to buffer | provenance | MaD:10 |
-| test.cpp:4:5:4:17 | [summary param] 0 in ymlStepManual | test.cpp:4:5:4:17 | [summary] to write: ReturnValue in ymlStepManual | provenance | MaD:23508 |
-| test.cpp:5:5:5:20 | [summary param] 0 in ymlStepGenerated | test.cpp:5:5:5:20 | [summary] to write: ReturnValue in ymlStepGenerated | provenance | MaD:23509 |
-| test.cpp:6:5:6:27 | [summary param] 0 in ymlStepManual_with_body | test.cpp:6:5:6:27 | [summary] to write: ReturnValue in ymlStepManual_with_body | provenance | MaD:23510 |
+| test.cpp:4:5:4:17 | [summary param] 0 in ymlStepManual | test.cpp:4:5:4:17 | [summary] to write: ReturnValue in ymlStepManual | provenance | MaD:26955 |
+| test.cpp:5:5:5:20 | [summary param] 0 in ymlStepGenerated | test.cpp:5:5:5:20 | [summary] to write: ReturnValue in ymlStepGenerated | provenance | MaD:26956 |
+| test.cpp:6:5:6:27 | [summary param] 0 in ymlStepManual_with_body | test.cpp:6:5:6:27 | [summary] to write: ReturnValue in ymlStepManual_with_body | provenance | MaD:26957 |
| test.cpp:7:47:7:52 | value2 | test.cpp:7:64:7:69 | value2 | provenance | |
| test.cpp:7:64:7:69 | value2 | test.cpp:7:5:7:30 | *ymlStepGenerated_with_body | provenance | |
-| test.cpp:10:10:10:18 | call to ymlSource | test.cpp:10:10:10:18 | call to ymlSource | provenance | Src:MaD:23506 |
-| test.cpp:10:10:10:18 | call to ymlSource | test.cpp:14:10:14:10 | x | provenance | Sink:MaD:23507 |
+| test.cpp:10:10:10:18 | call to ymlSource | test.cpp:10:10:10:18 | call to ymlSource | provenance | Src:MaD:26953 |
+| test.cpp:10:10:10:18 | call to ymlSource | test.cpp:14:10:14:10 | x | provenance | Sink:MaD:26954 |
| test.cpp:10:10:10:18 | call to ymlSource | test.cpp:17:24:17:24 | x | provenance | |
| test.cpp:10:10:10:18 | call to ymlSource | test.cpp:21:27:21:27 | x | provenance | |
| test.cpp:10:10:10:18 | call to ymlSource | test.cpp:25:35:25:35 | x | provenance | |
| test.cpp:10:10:10:18 | call to ymlSource | test.cpp:32:41:32:41 | x | provenance | |
| test.cpp:17:10:17:22 | call to ymlStepManual | test.cpp:17:10:17:22 | call to ymlStepManual | provenance | |
-| test.cpp:17:10:17:22 | call to ymlStepManual | test.cpp:18:10:18:10 | y | provenance | Sink:MaD:23507 |
+| test.cpp:17:10:17:22 | call to ymlStepManual | test.cpp:18:10:18:10 | y | provenance | Sink:MaD:26954 |
| test.cpp:17:24:17:24 | x | test.cpp:4:5:4:17 | [summary param] 0 in ymlStepManual | provenance | |
-| test.cpp:17:24:17:24 | x | test.cpp:17:10:17:22 | call to ymlStepManual | provenance | MaD:23508 |
+| test.cpp:17:24:17:24 | x | test.cpp:17:10:17:22 | call to ymlStepManual | provenance | MaD:26955 |
| test.cpp:21:10:21:25 | call to ymlStepGenerated | test.cpp:21:10:21:25 | call to ymlStepGenerated | provenance | |
-| test.cpp:21:10:21:25 | call to ymlStepGenerated | test.cpp:22:10:22:10 | z | provenance | Sink:MaD:23507 |
+| test.cpp:21:10:21:25 | call to ymlStepGenerated | test.cpp:22:10:22:10 | z | provenance | Sink:MaD:26954 |
| test.cpp:21:27:21:27 | x | test.cpp:5:5:5:20 | [summary param] 0 in ymlStepGenerated | provenance | |
-| test.cpp:21:27:21:27 | x | test.cpp:21:10:21:25 | call to ymlStepGenerated | provenance | MaD:23509 |
+| test.cpp:21:27:21:27 | x | test.cpp:21:10:21:25 | call to ymlStepGenerated | provenance | MaD:26956 |
| test.cpp:25:11:25:33 | call to ymlStepManual_with_body | test.cpp:25:11:25:33 | call to ymlStepManual_with_body | provenance | |
-| test.cpp:25:11:25:33 | call to ymlStepManual_with_body | test.cpp:26:10:26:11 | y2 | provenance | Sink:MaD:23507 |
+| test.cpp:25:11:25:33 | call to ymlStepManual_with_body | test.cpp:26:10:26:11 | y2 | provenance | Sink:MaD:26954 |
| test.cpp:25:35:25:35 | x | test.cpp:6:5:6:27 | [summary param] 0 in ymlStepManual_with_body | provenance | |
-| test.cpp:25:35:25:35 | x | test.cpp:25:11:25:33 | call to ymlStepManual_with_body | provenance | MaD:23510 |
+| test.cpp:25:35:25:35 | x | test.cpp:25:11:25:33 | call to ymlStepManual_with_body | provenance | MaD:26957 |
| test.cpp:32:11:32:36 | call to ymlStepGenerated_with_body | test.cpp:32:11:32:36 | call to ymlStepGenerated_with_body | provenance | |
-| test.cpp:32:11:32:36 | call to ymlStepGenerated_with_body | test.cpp:33:10:33:11 | z2 | provenance | Sink:MaD:23507 |
+| test.cpp:32:11:32:36 | call to ymlStepGenerated_with_body | test.cpp:33:10:33:11 | z2 | provenance | Sink:MaD:26954 |
| test.cpp:32:41:32:41 | x | test.cpp:7:47:7:52 | value2 | provenance | |
| test.cpp:32:41:32:41 | x | test.cpp:32:11:32:36 | call to ymlStepGenerated_with_body | provenance | |
| windows.cpp:17:8:17:25 | [summary param] *0 in CommandLineToArgvA | windows.cpp:17:8:17:25 | [summary] to write: ReturnValue[**] in CommandLineToArgvA | provenance | MaD:341 |
diff --git a/cpp/ql/test/library-tests/dataflow/external-models/validatemodels.expected b/cpp/ql/test/library-tests/dataflow/external-models/validatemodels.expected
index a1511035d9e5..8f06adc1826f 100644
--- a/cpp/ql/test/library-tests/dataflow/external-models/validatemodels.expected
+++ b/cpp/ql/test/library-tests/dataflow/external-models/validatemodels.expected
@@ -15,6 +15,7 @@
| Dubious member name "operator[]" in summary model. |
| Dubious signature "(..(*)(..))" in summary model. |
| Dubious signature "(..(*)(..),..(*)(..),..(*)(..),..(*)(..))" in summary model. |
+| Dubious signature "(..(*)(..),..(*)(..),..(*)(..),void *)" in summary model. |
| Dubious signature "(..(*)(..),d2i_of_void *,BIO *,void **)" in summary model. |
| Dubious signature "(..(*)(..),d2i_of_void *,FILE *,void **)" in summary model. |
| Dubious signature "(..(*)(..),void *)" in summary model. |
@@ -137,7 +138,12 @@
| Dubious signature "(BASIC_CONSTRAINTS *)" in summary model. |
| Dubious signature "(BASIC_CONSTRAINTS **,const unsigned char **,long)" in summary model. |
| Dubious signature "(BIGNUM *)" in summary model. |
+| Dubious signature "(BIGNUM **)" in summary model. |
+| Dubious signature "(BIGNUM **,BIGNUM *,BIGNUM *,BIGNUM *,BN_CTX *)" in summary model. |
+| Dubious signature "(BIGNUM **,BIGNUM *,BIGNUM *,BIGNUM *,int,BN_CTX *)" in summary model. |
+| Dubious signature "(BIGNUM **,EVP_PKEY *,const unsigned char *,size_t)" in summary model. |
| Dubious signature "(BIGNUM **,const char *)" in summary model. |
+| Dubious signature "(BIGNUM **,uint8_t[32],uint8_t[32])" in summary model. |
| Dubious signature "(BIGNUM *,ASN1_INTEGER *)" in summary model. |
| Dubious signature "(BIGNUM *,BIGNUM *)" in summary model. |
| Dubious signature "(BIGNUM *,BIGNUM *,BIGNUM *,BIGNUM *,BIGNUM *,const BIGNUM *,const BIGNUM *,BN_CTX *,BN_GENCB *)" in summary model. |
@@ -359,6 +365,25 @@
| Dubious signature "(BN_MONT_CTX *,const BIGNUM *,int,const unsigned char *,size_t,uint32_t,uint32_t)" in summary model. |
| Dubious signature "(BN_RECP_CTX *,const BIGNUM *,BN_CTX *)" in summary model. |
| Dubious signature "(BUF_MEM *,size_t)" in summary model. |
+| Dubious signature "(BrotliBitReader *const,uint64_t,uint64_t *)" in summary model. |
+| Dubious signature "(BrotliDecoderState *,BrotliDecoderStateInternal *,BrotliSharedDictionaryType,size_t,const uint8_t[])" in summary model. |
+| Dubious signature "(BrotliDecoderState *,BrotliDecoderStateInternal *,brotli_decoder_metadata_start_func,brotli_decoder_metadata_chunk_func,void *)" in summary model. |
+| Dubious signature "(BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *)" in summary model. |
+| Dubious signature "(BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *)" in summary model. |
+| Dubious signature "(BrotliDecoderStateInternal *,HuffmanTreeGroup *,uint64_t,uint64_t,uint64_t)" in summary model. |
+| Dubious signature "(BrotliDecoderStateInternal *,brotli_alloc_func,brotli_free_func,void *)" in summary model. |
+| Dubious signature "(BrotliDistanceParams *,uint32_t,uint32_t,int)" in summary model. |
+| Dubious signature "(BrotliEncoderState *,BrotliEncoderStateInternal *,BrotliEncoderOperation,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *)" in summary model. |
+| Dubious signature "(BrotliEncoderState *,BrotliEncoderStateInternal *,BrotliEncoderParameter,uint32_t)" in summary model. |
+| Dubious signature "(BrotliEncoderState *,BrotliEncoderStateInternal *,const BrotliEncoderPreparedDictionary *)" in summary model. |
+| Dubious signature "(BrotliEncoderState *,BrotliEncoderStateInternal *,size_t *)" in summary model. |
+| Dubious signature "(BrotliOnePassArena *,const uint8_t *,size_t,int,int *,size_t,size_t *,uint8_t *)" in summary model. |
+| Dubious signature "(BrotliSharedDictionaryInternal *,BrotliSharedDictionaryType,size_t,const uint8_t[])" in summary model. |
+| Dubious signature "(BrotliSharedDictionaryType,size_t,const uint8_t[],int,brotli_alloc_func,brotli_free_func,void *)" in summary model. |
+| Dubious signature "(BrotliTwoPassArena *,const uint8_t *,size_t,int,uint32_t *,uint8_t *,int *,size_t,size_t *,uint8_t *)" in summary model. |
+| Dubious signature "(Bytef *,uLongf *,const Bytef *,uLong *)" in summary model. |
+| Dubious signature "(Bytef *,uLongf *,const Bytef *,uLong)" in summary model. |
+| Dubious signature "(Bytef *,uLongf *,const Bytef *,uLong,int)" in summary model. |
| Dubious signature "(CA_DB *,time_t *)" in summary model. |
| Dubious signature "(CAtlFile &)" in summary model. |
| Dubious signature "(CCM128_CONTEXT *,const unsigned char *,size_t)" in summary model. |
@@ -454,6 +479,142 @@
| Dubious signature "(CT_POLICY_EVAL_CTX *,CTLOG_STORE *)" in summary model. |
| Dubious signature "(CT_POLICY_EVAL_CTX *,X509 *)" in summary model. |
| Dubious signature "(CT_POLICY_EVAL_CTX *,uint64_t)" in summary model. |
+| Dubious signature "(CURL *)" in summary model. |
+| Dubious signature "(CURL *,GlobalConfig *,const char *,CURLoption,curl_slist *)" in summary model. |
+| Dubious signature "(CURL *,char **,const char *)" in summary model. |
+| Dubious signature "(CURL *,const char *,size_t,unsigned int,int,curl_header **)" in summary model. |
+| Dubious signature "(CURL *,const void *,size_t,size_t *)" in summary model. |
+| Dubious signature "(CURL *,const void *,size_t,size_t *,curl_off_t,unsigned int)" in summary model. |
+| Dubious signature "(CURL *,curl_mimepart *,curl_httppost *,curl_read_callback)" in summary model. |
+| Dubious signature "(CURL *,int)" in summary model. |
+| Dubious signature "(CURL *,tool_mime *,curl_mime **)" in summary model. |
+| Dubious signature "(CURL *,unsigned int,int,curl_header *)" in summary model. |
+| Dubious signature "(CURL *,void *,size_t,size_t *)" in summary model. |
+| Dubious signature "(CURL *,void *,size_t,size_t *,const curl_ws_frame **)" in summary model. |
+| Dubious signature "(CURLM *,CURL *)" in summary model. |
+| Dubious signature "(CURLM *,curl_socket_t,int *)" in summary model. |
+| Dubious signature "(CURLM *,curl_socket_t,int,int *)" in summary model. |
+| Dubious signature "(CURLM *,int *)" in summary model. |
+| Dubious signature "(CURLSH *,CURLSHoption,...)" in summary model. |
+| Dubious signature "(CURLU *,CURLUPart,const char *,unsigned int)" in summary model. |
+| Dubious signature "(CURLU *,const char *)" in summary model. |
+| Dubious signature "(CURLU *,const char *,char **,OperationConfig *)" in summary model. |
+| Dubious signature "(CompoundDictionary *,const PreparedDictionary *)" in summary model. |
+| Dubious signature "(Curl_cfilter *)" in summary model. |
+| Dubious signature "(Curl_cfilter **,Curl_easy *)" in summary model. |
+| Dubious signature "(Curl_cfilter **,Curl_easy *,connectdata *,const Curl_addrinfo *,int)" in summary model. |
+| Dubious signature "(Curl_cfilter **,const Curl_cftype *,void *)" in summary model. |
+| Dubious signature "(Curl_cfilter *,Curl_cfilter *)" in summary model. |
+| Dubious signature "(Curl_cfilter *,Curl_easy *)" in summary model. |
+| Dubious signature "(Curl_cfilter *,Curl_easy *,bool,int,int,void *)" in summary model. |
+| Dubious signature "(Curl_cfilter *,Curl_easy *,const char *,Curl_ssl_session *)" in summary model. |
+| Dubious signature "(Curl_cfilter *,Curl_easy *,const char *,void **)" in summary model. |
+| Dubious signature "(Curl_cfilter *,Curl_easy *,curl_socket_t *,const Curl_sockaddr_ex **,ip_quadruple *)" in summary model. |
+| Dubious signature "(Curl_cfilter *,Curl_easy *,easy_pollset *)" in summary model. |
+| Dubious signature "(Curl_cfilter *,Curl_easy *,ssl_connect_data *,const unsigned char *,size_t)" in summary model. |
+| Dubious signature "(Curl_cfilter *,Curl_easy *,timediff_t)" in summary model. |
+| Dubious signature "(Curl_cfilter *,const char **,int *,bool *)" in summary model. |
+| Dubious signature "(Curl_creader **,Curl_easy *,const Curl_crtype *,Curl_creader_phase)" in summary model. |
+| Dubious signature "(Curl_cwriter **,Curl_easy *,const Curl_cwtype *,Curl_cwriter_phase)" in summary model. |
+| Dubious signature "(Curl_easy *)" in summary model. |
+| Dubious signature "(Curl_easy **)" in summary model. |
+| Dubious signature "(Curl_easy *,CURLcode,bool)" in summary model. |
+| Dubious signature "(Curl_easy *,CURLoption,va_list)" in summary model. |
+| Dubious signature "(Curl_easy *,CookieInfo *,bool,bool,const char *,const char *,const char *,bool)" in summary model. |
+| Dubious signature "(Curl_easy *,CookieInfo *,const char *,const char *,bool,Curl_llist *)" in summary model. |
+| Dubious signature "(Curl_easy *,Curl_addrinfo *,const char *,size_t,int,bool)" in summary model. |
+| Dubious signature "(Curl_easy *,Curl_chunker *)" in summary model. |
+| Dubious signature "(Curl_easy *,Curl_chunker *,bool)" in summary model. |
+| Dubious signature "(Curl_easy *,Curl_chunker *,char *,size_t,size_t *)" in summary model. |
+| Dubious signature "(Curl_easy *,Curl_creader *)" in summary model. |
+| Dubious signature "(Curl_easy *,Curl_cwriter *)" in summary model. |
+| Dubious signature "(Curl_easy *,Curl_dns_entry **)" in summary model. |
+| Dubious signature "(Curl_easy *,altsvcinfo *,const char *,alpnid,const char *,unsigned short)" in summary model. |
+| Dubious signature "(Curl_easy *,bool *)" in summary model. |
+| Dubious signature "(Curl_easy *,bool *,bool *)" in summary model. |
+| Dubious signature "(Curl_easy *,bool)" in summary model. |
+| Dubious signature "(Curl_easy *,bool,dynbuf *)" in summary model. |
+| Dubious signature "(Curl_easy *,char **)" in summary model. |
+| Dubious signature "(Curl_easy *,char **,size_t *)" in summary model. |
+| Dubious signature "(Curl_easy *,char *,size_t,size_t *,bool *)" in summary model. |
+| Dubious signature "(Curl_easy *,connectdata *)" in summary model. |
+| Dubious signature "(Curl_easy *,connectdata *,Curl_cpool_conn_do_cb *,void *)" in summary model. |
+| Dubious signature "(Curl_easy *,connectdata *,bool)" in summary model. |
+| Dubious signature "(Curl_easy *,connectdata *,const char **,Curl_HttpReq *)" in summary model. |
+| Dubious signature "(Curl_easy *,connectdata *,curl_socket_t *)" in summary model. |
+| Dubious signature "(Curl_easy *,connectdata *,curltime *)" in summary model. |
+| Dubious signature "(Curl_easy *,connectdata *,int)" in summary model. |
+| Dubious signature "(Curl_easy *,connectdata *,int,Curl_cfilter *)" in summary model. |
+| Dubious signature "(Curl_easy *,connectdata *,int,const Curl_dns_entry *)" in summary model. |
+| Dubious signature "(Curl_easy *,connectdata *,int,const Curl_dns_entry *,int)" in summary model. |
+| Dubious signature "(Curl_easy *,connectdata *,int,const char *,size_t)" in summary model. |
+| Dubious signature "(Curl_easy *,connectdata *,int,curl_socket_t *)" in summary model. |
+| Dubious signature "(Curl_easy *,const Curl_addrinfo *,Curl_sockaddr_ex *,int,curl_socket_t *)" in summary model. |
+| Dubious signature "(Curl_easy *,const Curl_crtype *)" in summary model. |
+| Dubious signature "(Curl_easy *,const Curl_cwtype *)" in summary model. |
+| Dubious signature "(Curl_easy *,const bufref *,ntlmdata *)" in summary model. |
+| Dubious signature "(Curl_easy *,const char *)" in summary model. |
+| Dubious signature "(Curl_easy *,const char *,CookieInfo *,bool)" in summary model. |
+| Dubious signature "(Curl_easy *,const char *,FILE **,char **)" in summary model. |
+| Dubious signature "(Curl_easy *,const char *,const char *,ntlmdata *,bufref *)" in summary model. |
+| Dubious signature "(Curl_easy *,const char *,int,Curl_dns_entry **,timediff_t)" in summary model. |
+| Dubious signature "(Curl_easy *,const char *,int,bool,Curl_dns_entry **)" in summary model. |
+| Dubious signature "(Curl_easy *,const char *,size_t,bool)" in summary model. |
+| Dubious signature "(Curl_easy *,const char *,size_t,size_t *)" in summary model. |
+| Dubious signature "(Curl_easy *,const void *,size_t,bool,size_t *)" in summary model. |
+| Dubious signature "(Curl_easy *,const void *,size_t,size_t *)" in summary model. |
+| Dubious signature "(Curl_easy *,curl_mimepart *,const curl_mimepart *)" in summary model. |
+| Dubious signature "(Curl_easy *,curl_off_t)" in summary model. |
+| Dubious signature "(Curl_easy *,curltime *)" in summary model. |
+| Dubious signature "(Curl_easy *,curltime *,bool)" in summary model. |
+| Dubious signature "(Curl_easy *,curltime)" in summary model. |
+| Dubious signature "(Curl_easy *,dynbuf *)" in summary model. |
+| Dubious signature "(Curl_easy *,easy_pollset *,..(*)(..))" in summary model. |
+| Dubious signature "(Curl_easy *,easy_pollset *,curl_socket_t,bool *,bool *)" in summary model. |
+| Dubious signature "(Curl_easy *,easy_pollset *,curl_socket_t,bool,bool)" in summary model. |
+| Dubious signature "(Curl_easy *,easy_pollset *,curl_socket_t,int,int)" in summary model. |
+| Dubious signature "(Curl_easy *,int)" in summary model. |
+| Dubious signature "(Curl_easy *,int,Curl_addrinfo *)" in summary model. |
+| Dubious signature "(Curl_easy *,int,bool,bool *)" in summary model. |
+| Dubious signature "(Curl_easy *,int,const char **,const char **,int *)" in summary model. |
+| Dubious signature "(Curl_easy *,int,curltime *)" in summary model. |
+| Dubious signature "(Curl_easy *,int,pingpong *,int *,size_t *)" in summary model. |
+| Dubious signature "(Curl_easy *,pingpong *)" in summary model. |
+| Dubious signature "(Curl_easy *,pingpong *,bool)" in summary model. |
+| Dubious signature "(Curl_easy *,pingpong *,const char *,va_list)" in summary model. |
+| Dubious signature "(Curl_easy *,pingpong *,curl_socket_t *)" in summary model. |
+| Dubious signature "(Curl_easy *,size_t,bool)" in summary model. |
+| Dubious signature "(Curl_easy *,size_t,char **)" in summary model. |
+| Dubious signature "(Curl_easy *,ssize_t *,int *)" in summary model. |
+| Dubious signature "(Curl_easy *,timerid,curltime)" in summary model. |
+| Dubious signature "(Curl_easy *,unsigned char *,size_t)" in summary model. |
+| Dubious signature "(Curl_easy *,unsigned int)" in summary model. |
+| Dubious signature "(Curl_easy *,void **)" in summary model. |
+| Dubious signature "(Curl_easy *,void **,void *)" in summary model. |
+| Dubious signature "(Curl_hash *)" in summary model. |
+| Dubious signature "(Curl_hash *,Curl_hash_iterator *)" in summary model. |
+| Dubious signature "(Curl_hash *,curl_off_t,void *)" in summary model. |
+| Dubious signature "(Curl_hash *,size_t)" in summary model. |
+| Dubious signature "(Curl_hash *,size_t,Curl_hash_dtor)" in summary model. |
+| Dubious signature "(Curl_hash *,size_t,hash_function,comp_function,Curl_hash_dtor)" in summary model. |
+| Dubious signature "(Curl_hash *,void *,..(*)(..))" in summary model. |
+| Dubious signature "(Curl_hash *,void *,size_t,void *)" in summary model. |
+| Dubious signature "(Curl_hash *,void *,size_t,void *,Curl_hash_elem_dtor)" in summary model. |
+| Dubious signature "(Curl_hash_iterator *)" in summary model. |
+| Dubious signature "(Curl_llist *)" in summary model. |
+| Dubious signature "(Curl_llist *,Curl_llist_dtor)" in summary model. |
+| Dubious signature "(Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *)" in summary model. |
+| Dubious signature "(Curl_llist *,const void *,Curl_llist_node *)" in summary model. |
+| Dubious signature "(Curl_llist_node *)" in summary model. |
+| Dubious signature "(Curl_multi *)" in summary model. |
+| Dubious signature "(Curl_multi *,Curl_easy *,connectdata *)" in summary model. |
+| Dubious signature "(Curl_multi *,Curl_easy *,easy_pollset *,easy_pollset *)" in summary model. |
+| Dubious signature "(Curl_sockaddr_ex *,const Curl_addrinfo *,int)" in summary model. |
+| Dubious signature "(Curl_tree *)" in summary model. |
+| Dubious signature "(Curl_tree *,Curl_tree *,Curl_tree **)" in summary model. |
+| Dubious signature "(Curl_tree *,void *)" in summary model. |
+| Dubious signature "(Curl_waitfds *,curl_waitfd *,unsigned int)" in summary model. |
+| Dubious signature "(Curl_waitfds *,easy_pollset *)" in summary model. |
| Dubious signature "(DES_LONG *,DES_key_schedule *,DES_key_schedule *,DES_key_schedule *)" in summary model. |
| Dubious signature "(DES_cblock *)" in summary model. |
| Dubious signature "(DH *)" in summary model. |
@@ -583,6 +744,8 @@
| Dubious signature "(EVP_CIPHER *,int)" in summary model. |
| Dubious signature "(EVP_CIPHER *,unsigned long)" in summary model. |
| Dubious signature "(EVP_CIPHER_CTX *)" in summary model. |
+| Dubious signature "(EVP_CIPHER_CTX **,..(*)(..),int,unsigned char *,size_t,int)" in summary model. |
+| Dubious signature "(EVP_CIPHER_CTX **,..(*)(..),unsigned char *,unsigned char *,int)" in summary model. |
| Dubious signature "(EVP_CIPHER_CTX *,ASN1_TYPE *)" in summary model. |
| Dubious signature "(EVP_CIPHER_CTX *,ASN1_TYPE *,evp_cipher_aead_asn1_params *)" in summary model. |
| Dubious signature "(EVP_CIPHER_CTX *,X509_ALGOR **)" in summary model. |
@@ -619,12 +782,19 @@
| Dubious signature "(EVP_KEYMGMT *,void *,char *,size_t)" in summary model. |
| Dubious signature "(EVP_MAC *)" in summary model. |
| Dubious signature "(EVP_MAC_CTX *)" in summary model. |
+| Dubious signature "(EVP_MAC_CTX **)" in summary model. |
| Dubious signature "(EVP_MAC_CTX **,const OSSL_PARAM[],const char *,const char *,const char *,OSSL_LIB_CTX *)" in summary model. |
+| Dubious signature "(EVP_MAC_CTX **,const void *,size_t)" in summary model. |
+| Dubious signature "(EVP_MAC_CTX **,void *)" in summary model. |
+| Dubious signature "(EVP_MAC_CTX **,void *,size_t)" in summary model. |
| Dubious signature "(EVP_MAC_CTX *,const OSSL_PARAM[],const char *,const char *,const char *,const char *,const unsigned char *,size_t)" in summary model. |
| Dubious signature "(EVP_MD *,..(*)(..))" in summary model. |
| Dubious signature "(EVP_MD *,int)" in summary model. |
| Dubious signature "(EVP_MD *,unsigned long)" in summary model. |
| Dubious signature "(EVP_MD_CTX *)" in summary model. |
+| Dubious signature "(EVP_MD_CTX **)" in summary model. |
+| Dubious signature "(EVP_MD_CTX **,const void *,size_t)" in summary model. |
+| Dubious signature "(EVP_MD_CTX **,unsigned char *)" in summary model. |
| Dubious signature "(EVP_MD_CTX *,..(*)(..))" in summary model. |
| Dubious signature "(EVP_MD_CTX *,BIO *,X509_ALGOR *)" in summary model. |
| Dubious signature "(EVP_MD_CTX *,EVP_MD *)" in summary model. |
@@ -649,10 +819,15 @@
| Dubious signature "(EVP_MD_CTX *,unsigned char *,unsigned int *,EVP_PKEY *)" in summary model. |
| Dubious signature "(EVP_MD_CTX *,unsigned char *,unsigned int *,EVP_PKEY *,OSSL_LIB_CTX *,const char *)" in summary model. |
| Dubious signature "(EVP_PKEY *)" in summary model. |
+| Dubious signature "(EVP_PKEY **,LIBSSH2_SESSION *,const char *,const unsigned char *)" in summary model. |
+| Dubious signature "(EVP_PKEY **,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *)" in summary model. |
| Dubious signature "(EVP_PKEY **,const EVP_PKEY *)" in summary model. |
| Dubious signature "(EVP_PKEY **,const char *,const char *,const char *,int,OSSL_LIB_CTX *,const char *)" in summary model. |
| Dubious signature "(EVP_PKEY **,const unsigned char **,long)" in summary model. |
| Dubious signature "(EVP_PKEY **,const unsigned char **,long,OSSL_LIB_CTX *,const char *)" in summary model. |
+| Dubious signature "(EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,const uint8_t *)" in summary model. |
+| Dubious signature "(EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,const unsigned char *)" in summary model. |
+| Dubious signature "(EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *)" in summary model. |
| Dubious signature "(EVP_PKEY *,DH *,dh_st *)" in summary model. |
| Dubious signature "(EVP_PKEY *,DSA *,dsa_st *)" in summary model. |
| Dubious signature "(EVP_PKEY *,EC_KEY *,ec_key_st *)" in summary model. |
@@ -801,6 +976,11 @@
| Dubious signature "(FILE *,const X509_PUBKEY *)" in summary model. |
| Dubious signature "(FILE *,const X509_REQ *)" in summary model. |
| Dubious signature "(FILE *,const X509_SIG *)" in summary model. |
+| Dubious signature "(FILE *,const char *,const char *,const char *,...)" in summary model. |
+| Dubious signature "(FILE *,const char *,const char *,const char *,const char *const *)" in summary model. |
+| Dubious signature "(FILE *,const char *,const char *,const char *,const char *const *,size_t)" in summary model. |
+| Dubious signature "(FILE *,const char *,const char *,const char *,va_list)" in summary model. |
+| Dubious signature "(FILE *,const char *,va_list)" in summary model. |
| Dubious signature "(FILE *,int *)" in summary model. |
| Dubious signature "(FILE *,int,char *)" in summary model. |
| Dubious signature "(FILE *,lemon *,char *,int *)" in summary model. |
@@ -829,14 +1009,27 @@
| Dubious signature "(GENERAL_SUBTREE *)" in summary model. |
| Dubious signature "(GOST_KX_MESSAGE *)" in summary model. |
| Dubious signature "(GOST_KX_MESSAGE **,const unsigned char **,long)" in summary model. |
+| Dubious signature "(GlobalConfig *,char **,const char *)" in summary model. |
+| Dubious signature "(GlobalConfig *,const char *)" in summary model. |
+| Dubious signature "(GlobalConfig *,const char *,dynbuf *,bool *)" in summary model. |
+| Dubious signature "(GlobalConfig *,int,char *[])" in summary model. |
+| Dubious signature "(GlobalConfig *,timeval *,bool)" in summary model. |
| Dubious signature "(HMAC_CTX *,HMAC_CTX *)" in summary model. |
| Dubious signature "(HMAC_CTX *,const void *,int,const EVP_MD *)" in summary model. |
| Dubious signature "(HMAC_CTX *,const void *,int,const EVP_MD *,ENGINE *)" in summary model. |
| Dubious signature "(HMAC_CTX *,unsigned long)" in summary model. |
+| Dubious signature "(HMAC_context *,unsigned char *)" in summary model. |
| Dubious signature "(HT *)" in summary model. |
| Dubious signature "(HT *,..(*)(..),void *)" in summary model. |
| Dubious signature "(HT *,HT_KEY *,HT_VALUE *,HT_VALUE **)" in summary model. |
| Dubious signature "(HT *,size_t,..(*)(..),void *)" in summary model. |
+| Dubious signature "(HistogramCommand *,HistogramCommand *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)" in summary model. |
+| Dubious signature "(HistogramDistance *,HistogramDistance *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)" in summary model. |
+| Dubious signature "(HistogramLiteral *,HistogramLiteral *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t)" in summary model. |
+| Dubious signature "(HuffmanCode *,const uint8_t *const,uint16_t *)" in summary model. |
+| Dubious signature "(HuffmanCode *,int,const uint16_t *const,uint16_t *)" in summary model. |
+| Dubious signature "(HuffmanCode *,int,uint16_t *,uint32_t)" in summary model. |
+| Dubious signature "(HuffmanTree *,const uint32_t *,const size_t,const size_t,uint8_t *,uint16_t *,size_t *,uint8_t *)" in summary model. |
| Dubious signature "(IPAddressChoice *)" in summary model. |
| Dubious signature "(IPAddressChoice **,const unsigned char **,long)" in summary model. |
| Dubious signature "(IPAddressFamily *)" in summary model. |
@@ -905,6 +1098,108 @@
| Dubious signature "(KECCAK1600_CTX *,unsigned char *,size_t)" in summary model. |
| Dubious signature "(KECCAK1600_CTX *,unsigned char,size_t)" in summary model. |
| Dubious signature "(KECCAK1600_CTX *,unsigned char,size_t,size_t)" in summary model. |
+| Dubious signature "(LIBSSH2_AGENT *)" in summary model. |
+| Dubious signature "(LIBSSH2_AGENT *,const char *)" in summary model. |
+| Dubious signature "(LIBSSH2_AGENT *,const char *,libssh2_agent_publickey *)" in summary model. |
+| Dubious signature "(LIBSSH2_AGENT *,libssh2_agent_publickey **,libssh2_agent_publickey *)" in summary model. |
+| Dubious signature "(LIBSSH2_AGENT *,libssh2_agent_publickey *,unsigned char **,size_t *,const unsigned char *,size_t,const char *,unsigned int)" in summary model. |
+| Dubious signature "(LIBSSH2_CHANNEL *)" in summary model. |
+| Dubious signature "(LIBSSH2_CHANNEL *,char **,size_t *,char **,size_t *,char **,size_t *)" in summary model. |
+| Dubious signature "(LIBSSH2_CHANNEL *,const char *,size_t)" in summary model. |
+| Dubious signature "(LIBSSH2_CHANNEL *,const char *,size_t,const char *,size_t)" in summary model. |
+| Dubious signature "(LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int)" in summary model. |
+| Dubious signature "(LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int,int,int,int,int)" in summary model. |
+| Dubious signature "(LIBSSH2_CHANNEL *,int)" in summary model. |
+| Dubious signature "(LIBSSH2_CHANNEL *,int,char *,size_t)" in summary model. |
+| Dubious signature "(LIBSSH2_CHANNEL *,int,const char *,const char *,int)" in summary model. |
+| Dubious signature "(LIBSSH2_CHANNEL *,int,const char *,size_t)" in summary model. |
+| Dubious signature "(LIBSSH2_CHANNEL *,int,const unsigned char *,size_t)" in summary model. |
+| Dubious signature "(LIBSSH2_CHANNEL *,int,int,int,int)" in summary model. |
+| Dubious signature "(LIBSSH2_CHANNEL *,uint32_t,unsigned char,unsigned int *)" in summary model. |
+| Dubious signature "(LIBSSH2_CHANNEL *,unsigned long *)" in summary model. |
+| Dubious signature "(LIBSSH2_CHANNEL *,unsigned long *,unsigned long *)" in summary model. |
+| Dubious signature "(LIBSSH2_CHANNEL *,unsigned long,unsigned char)" in summary model. |
+| Dubious signature "(LIBSSH2_CHANNEL *,unsigned long,unsigned char,unsigned int *)" in summary model. |
+| Dubious signature "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,const char *,size_t,int,libssh2_knownhost **)" in summary model. |
+| Dubious signature "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,int,libssh2_knownhost **)" in summary model. |
+| Dubious signature "(LIBSSH2_KNOWNHOSTS *,const char *,const char *,size_t,int,libssh2_knownhost **)" in summary model. |
+| Dubious signature "(LIBSSH2_KNOWNHOSTS *,const char *,int,const char *,size_t,int,libssh2_knownhost **)" in summary model. |
+| Dubious signature "(LIBSSH2_KNOWNHOSTS *,libssh2_knownhost **,libssh2_knownhost *)" in summary model. |
+| Dubious signature "(LIBSSH2_KNOWNHOSTS *,libssh2_knownhost *,char *,size_t,size_t *,int)" in summary model. |
+| Dubious signature "(LIBSSH2_LISTENER *)" in summary model. |
+| Dubious signature "(LIBSSH2_POLLFD *,unsigned int,long)" in summary model. |
+| Dubious signature "(LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long)" in summary model. |
+| Dubious signature "(LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long,char,unsigned long,const libssh2_publickey_attribute[])" in summary model. |
+| Dubious signature "(LIBSSH2_PUBLICKEY *,unsigned long *,libssh2_publickey_list **)" in summary model. |
+| Dubious signature "(LIBSSH2_SESSION *)" in summary model. |
+| Dubious signature "(LIBSSH2_SESSION *,EVP_PKEY **,unsigned char **,size_t *,libssh2_curve_type)" in summary model. |
+| Dubious signature "(LIBSSH2_SESSION *,char **)" in summary model. |
+| Dubious signature "(LIBSSH2_SESSION *,char **,int *,int)" in summary model. |
+| Dubious signature "(LIBSSH2_SESSION *,char **,size_t *,const char *,size_t)" in summary model. |
+| Dubious signature "(LIBSSH2_SESSION *,char **,unsigned int *,const char *,unsigned int)" in summary model. |
+| Dubious signature "(LIBSSH2_SESSION *,const char *)" in summary model. |
+| Dubious signature "(LIBSSH2_SESSION *,const char *,const char *,const char *,size_t,unsigned char **,size_t *)" in summary model. |
+| Dubious signature "(LIBSSH2_SESSION *,const char *,const char *,const unsigned char *,FILE *,unsigned char **,size_t *)" in summary model. |
+| Dubious signature "(LIBSSH2_SESSION *,const char *,const char *,int)" in summary model. |
+| Dubious signature "(LIBSSH2_SESSION *,const char *,const unsigned char *,size_t,..(*)(..),void **)" in summary model. |
+| Dubious signature "(LIBSSH2_SESSION *,const char *,int,const char *,int)" in summary model. |
+| Dubious signature "(LIBSSH2_SESSION *,const char *,int,int *,int)" in summary model. |
+| Dubious signature "(LIBSSH2_SESSION *,const char *,int,libssh2_int64_t,time_t,time_t)" in summary model. |
+| Dubious signature "(LIBSSH2_SESSION *,const char *,int,size_t,long,long)" in summary model. |
+| Dubious signature "(LIBSSH2_SESSION *,const char *,libssh2_struct_stat *)" in summary model. |
+| Dubious signature "(LIBSSH2_SESSION *,const char *,size_t,const char *,size_t,const char *,size_t,const char *)" in summary model. |
+| Dubious signature "(LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,..(*)(..),void *)" in summary model. |
+| Dubious signature "(LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,const char *,size_t,const char *,..(*)(..),void **)" in summary model. |
+| Dubious signature "(LIBSSH2_SESSION *,const char *,stat *)" in summary model. |
+| Dubious signature "(LIBSSH2_SESSION *,const char *,uint32_t,uint32_t,uint32_t,const unsigned char *,size_t)" in summary model. |
+| Dubious signature "(LIBSSH2_SESSION *,const char *,unsigned int)" in summary model. |
+| Dubious signature "(LIBSSH2_SESSION *,const char *,unsigned int,..(*)(..))" in summary model. |
+| Dubious signature "(LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *)" in summary model. |
+| Dubious signature "(LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int)" in summary model. |
+| Dubious signature "(LIBSSH2_SESSION *,const char *,unsigned int,const char *,unsigned int,..(*)(..))" in summary model. |
+| Dubious signature "(LIBSSH2_SESSION *,const char *,unsigned int,unsigned int,unsigned int,const char *,unsigned int)" in summary model. |
+| Dubious signature "(LIBSSH2_SESSION *,const unsigned char *,size_t,const unsigned char *,size_t)" in summary model. |
+| Dubious signature "(LIBSSH2_SESSION *,const unsigned char *,unsigned char **,size_t *,int,const unsigned char *,size_t,packet_requirev_state_t *)" in summary model. |
+| Dubious signature "(LIBSSH2_SESSION *,int *)" in summary model. |
+| Dubious signature "(LIBSSH2_SESSION *,int)" in summary model. |
+| Dubious signature "(LIBSSH2_SESSION *,int,const char *)" in summary model. |
+| Dubious signature "(LIBSSH2_SESSION *,int,const char ***)" in summary model. |
+| Dubious signature "(LIBSSH2_SESSION *,int,const char *,const char *)" in summary model. |
+| Dubious signature "(LIBSSH2_SESSION *,int,const char *,int)" in summary model. |
+| Dubious signature "(LIBSSH2_SESSION *,int,int)" in summary model. |
+| Dubious signature "(LIBSSH2_SESSION *,int,key_exchange_state_t *)" in summary model. |
+| Dubious signature "(LIBSSH2_SESSION *,int,libssh2_cb_generic *)" in summary model. |
+| Dubious signature "(LIBSSH2_SESSION *,int,unsigned int)" in summary model. |
+| Dubious signature "(LIBSSH2_SESSION *,int,void *)" in summary model. |
+| Dubious signature "(LIBSSH2_SESSION *,libssh2_nonblocking_states *)" in summary model. |
+| Dubious signature "(LIBSSH2_SESSION *,libssh2_socket_t)" in summary model. |
+| Dubious signature "(LIBSSH2_SESSION *,long)" in summary model. |
+| Dubious signature "(LIBSSH2_SESSION *,size_t *,int *)" in summary model. |
+| Dubious signature "(LIBSSH2_SESSION *,string_buf *,unsigned char **,size_t *)" in summary model. |
+| Dubious signature "(LIBSSH2_SESSION *,time_t)" in summary model. |
+| Dubious signature "(LIBSSH2_SESSION *,uint32_t)" in summary model. |
+| Dubious signature "(LIBSSH2_SESSION *,unsigned char **,size_t *,const unsigned char *,size_t,void **)" in summary model. |
+| Dubious signature "(LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,const char *,size_t,const char *)" in summary model. |
+| Dubious signature "(LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,int *,unsigned char *,const char **,const unsigned char **,size_t *,const char *,size_t,const char *)" in summary model. |
+| Dubious signature "(LIBSSH2_SESSION *,unsigned char *,size_t,int,uint32_t)" in summary model. |
+| Dubious signature "(LIBSSH2_SESSION *,unsigned char,unsigned char **,size_t *,int,const unsigned char *,size_t,packet_require_state_t *)" in summary model. |
+| Dubious signature "(LIBSSH2_SESSION *,void **,LIBSSH2_CHANNEL *,void **)" in summary model. |
+| Dubious signature "(LIBSSH2_SFTP *)" in summary model. |
+| Dubious signature "(LIBSSH2_SFTP *,const char *,size_t,LIBSSH2_SFTP_STATVFS *)" in summary model. |
+| Dubious signature "(LIBSSH2_SFTP *,const char *,size_t,const char *,size_t)" in summary model. |
+| Dubious signature "(LIBSSH2_SFTP *,const char *,size_t,unsigned long,long,int,LIBSSH2_SFTP_ATTRIBUTES *)" in summary model. |
+| Dubious signature "(LIBSSH2_SFTP *,const char *,unsigned int)" in summary model. |
+| Dubious signature "(LIBSSH2_SFTP *,const char *,unsigned int,char *,unsigned int,int)" in summary model. |
+| Dubious signature "(LIBSSH2_SFTP *,const char *,unsigned int,const char *,unsigned int,long)" in summary model. |
+| Dubious signature "(LIBSSH2_SFTP *,const char *,unsigned int,int,LIBSSH2_SFTP_ATTRIBUTES *)" in summary model. |
+| Dubious signature "(LIBSSH2_SFTP *,const char *,unsigned int,long)" in summary model. |
+| Dubious signature "(LIBSSH2_SFTP *,const char *,unsigned int,unsigned long,long,int)" in summary model. |
+| Dubious signature "(LIBSSH2_SFTP_HANDLE *)" in summary model. |
+| Dubious signature "(LIBSSH2_SFTP_HANDLE *,LIBSSH2_SFTP_ATTRIBUTES *,int)" in summary model. |
+| Dubious signature "(LIBSSH2_SFTP_HANDLE *,LIBSSH2_SFTP_STATVFS *)" in summary model. |
+| Dubious signature "(LIBSSH2_SFTP_HANDLE *,char *,size_t)" in summary model. |
+| Dubious signature "(LIBSSH2_SFTP_HANDLE *,char *,size_t,char *,size_t,LIBSSH2_SFTP_ATTRIBUTES *)" in summary model. |
+| Dubious signature "(LIBSSH2_SFTP_HANDLE *,const char *,size_t)" in summary model. |
| Dubious signature "(LPCSTR,IAtlStringMgr *)" in summary model. |
| Dubious signature "(LPCTSTR,DWORD *,void *,ULONG *)" in summary model. |
| Dubious signature "(LPCWSTR,IAtlStringMgr *)" in summary model. |
@@ -919,6 +1214,21 @@
| Dubious signature "(ML_DSA_KEY *,const uint8_t *,size_t)" in summary model. |
| Dubious signature "(ML_DSA_KEY *,int,int,const uint8_t *,size_t,const uint8_t *,size_t)" in summary model. |
| Dubious signature "(ML_DSA_SIG *,const uint8_t *,size_t,const ML_DSA_PARAMS *)" in summary model. |
+| Dubious signature "(MemoryManager *,HistogramCommand *,uint32_t *,size_t)" in summary model. |
+| Dubious signature "(MemoryManager *,HistogramDistance *,uint32_t *,size_t)" in summary model. |
+| Dubious signature "(MemoryManager *,HistogramLiteral *,uint32_t *,size_t)" in summary model. |
+| Dubious signature "(MemoryManager *,brotli_alloc_func,brotli_free_func,void *)" in summary model. |
+| Dubious signature "(MemoryManager *,const Command *,const size_t,const uint8_t *,const size_t,const size_t,const BrotliEncoderParams *,BlockSplit *,BlockSplit *,BlockSplit *)" in summary model. |
+| Dubious signature "(MemoryManager *,const HistogramCommand *,const size_t,size_t,HistogramCommand *,size_t *,uint32_t *)" in summary model. |
+| Dubious signature "(MemoryManager *,const HistogramDistance *,const size_t,size_t,HistogramDistance *,size_t *,uint32_t *)" in summary model. |
+| Dubious signature "(MemoryManager *,const HistogramLiteral *,const size_t,size_t,HistogramLiteral *,size_t *,uint32_t *)" in summary model. |
+| Dubious signature "(MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *)" in summary model. |
+| Dubious signature "(MemoryManager *,const uint8_t *,size_t)" in summary model. |
+| Dubious signature "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *)" in summary model. |
+| Dubious signature "(MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *)" in summary model. |
+| Dubious signature "(MemoryManager *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,ContextLut,size_t,const uint32_t *,const Command *,size_t,MetaBlockSplit *)" in summary model. |
+| Dubious signature "(MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)" in summary model. |
+| Dubious signature "(MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,const int *,Hasher *,ZopfliNode *)" in summary model. |
| Dubious signature "(NAME_CONSTRAINTS *)" in summary model. |
| Dubious signature "(NAMING_AUTHORITY *)" in summary model. |
| Dubious signature "(NAMING_AUTHORITY **,const unsigned char **,long)" in summary model. |
@@ -1495,6 +1805,10 @@
| Dubious signature "(OTHERNAME *)" in summary model. |
| Dubious signature "(OTHERNAME **,const unsigned char **,long)" in summary model. |
| Dubious signature "(OTHERNAME *,OTHERNAME *)" in summary model. |
+| Dubious signature "(OperationConfig *)" in summary model. |
+| Dubious signature "(OperationConfig *,HttpReq,HttpReq *)" in summary model. |
+| Dubious signature "(OperationConfig *,const char *,tool_mime **,tool_mime **,bool)" in summary model. |
+| Dubious signature "(OperationConfig *,const char *const *,char **,const char *)" in summary model. |
| Dubious signature "(PACKET *)" in summary model. |
| Dubious signature "(PACKET *,BIGNUM *)" in summary model. |
| Dubious signature "(PACKET *,OSSL_QUIC_FRAME_CONN_CLOSE *)" in summary model. |
@@ -1632,6 +1946,7 @@
| Dubious signature "(PROXY_CERT_INFO_EXTENSION **,const unsigned char **,long)" in summary model. |
| Dubious signature "(PROXY_POLICY *)" in summary model. |
| Dubious signature "(PROXY_POLICY **,const unsigned char **,long)" in summary model. |
+| Dubious signature "(ProgressData *,OperationConfig *)" in summary model. |
| Dubious signature "(QLOG *,BIO *)" in summary model. |
| Dubious signature "(QLOG *,OSSL_TIME)" in summary model. |
| Dubious signature "(QLOG *,uint32_t)" in summary model. |
@@ -1792,6 +2107,8 @@
| Dubious signature "(RSA_PSS_PARAMS_30 *,const RSA_PSS_PARAMS_30 *)" in summary model. |
| Dubious signature "(RSA_PSS_PARAMS_30 *,int *,const OSSL_PARAM[],OSSL_LIB_CTX *)" in summary model. |
| Dubious signature "(RSA_PSS_PARAMS_30 *,int)" in summary model. |
+| Dubious signature "(SASL *,Curl_easy *,bool,saslprogress *)" in summary model. |
+| Dubious signature "(SASL *,Curl_easy *,const SASLproto *)" in summary model. |
| Dubious signature "(SCRYPT_PARAMS *)" in summary model. |
| Dubious signature "(SCRYPT_PARAMS **,const unsigned char **,long)" in summary model. |
| Dubious signature "(SCT **,const unsigned char **,size_t)" in summary model. |
@@ -2045,6 +2362,8 @@
| Dubious signature "(SXNET **,unsigned long,const char *,int)" in summary model. |
| Dubious signature "(SXNETID *)" in summary model. |
| Dubious signature "(SXNETID **,const unsigned char **,long)" in summary model. |
+| Dubious signature "(SharedEncoderDictionary *)" in summary model. |
+| Dubious signature "(SingleRequest *,Curl_easy *)" in summary model. |
| Dubious signature "(StrAccum *,sqlite3_str *,const char *,...)" in summary model. |
| Dubious signature "(TLS_FEATURE *)" in summary model. |
| Dubious signature "(TLS_RL_RECORD *,const unsigned char *)" in summary model. |
@@ -2121,6 +2440,8 @@
| Dubious signature "(UI_METHOD *,..(*)(..))" in summary model. |
| Dubious signature "(UI_METHOD *,..(*)(..),..(*)(..))" in summary model. |
| Dubious signature "(UI_STRING *)" in summary model. |
+| Dubious signature "(URLGlob **)" in summary model. |
+| Dubious signature "(URLGlob **,char *,curl_off_t *,FILE *)" in summary model. |
| Dubious signature "(USERNOTICE *)" in summary model. |
| Dubious signature "(USERNOTICE **,const unsigned char **,long)" in summary model. |
| Dubious signature "(WHIRLPOOL_CTX *,const void *,size_t)" in summary model. |
@@ -2151,6 +2472,7 @@
| Dubious signature "(WPACKET *,unsigned char *,size_t)" in summary model. |
| Dubious signature "(WPACKET *,unsigned char *,size_t,size_t)" in summary model. |
| Dubious signature "(WPACKET *,unsigned int)" in summary model. |
+| Dubious signature "(WildcardData **)" in summary model. |
| Dubious signature "(X9_62_CHARACTERISTIC_TWO *)" in summary model. |
| Dubious signature "(X9_62_PENTANOMIAL *)" in summary model. |
| Dubious signature "(X509 *)" in summary model. |
@@ -2362,29 +2684,72 @@
| Dubious signature "(acttab *)" in summary model. |
| Dubious signature "(acttab *,int)" in summary model. |
| Dubious signature "(acttab *,int,int)" in summary model. |
+| Dubious signature "(alpn_proto_buf *,const alpn_spec *)" in summary model. |
+| Dubious signature "(altsvcinfo **)" in summary model. |
+| Dubious signature "(altsvcinfo *,const long)" in summary model. |
+| Dubious signature "(brotli_alloc_func,brotli_free_func,void *)" in summary model. |
+| Dubious signature "(bufc_pool *,size_t,size_t)" in summary model. |
+| Dubious signature "(bufq *,Curl_bufq_reader *,void *,CURLcode *)" in summary model. |
+| Dubious signature "(bufq *,Curl_bufq_writer *,void *,CURLcode *)" in summary model. |
+| Dubious signature "(bufq *,bufc_pool *,size_t,int)" in summary model. |
+| Dubious signature "(bufq *,char *,size_t,size_t *)" in summary model. |
+| Dubious signature "(bufq *,const char *,size_t,size_t *)" in summary model. |
+| Dubious signature "(bufq *,const unsigned char **,size_t *)" in summary model. |
+| Dubious signature "(bufq *,const unsigned char *,size_t,CURLcode *)" in summary model. |
+| Dubious signature "(bufq *,const unsigned char *,size_t,Curl_bufq_writer *,void *,CURLcode *)" in summary model. |
+| Dubious signature "(bufq *,size_t)" in summary model. |
+| Dubious signature "(bufq *,size_t,Curl_bufq_reader *,void *,CURLcode *)" in summary model. |
+| Dubious signature "(bufq *,size_t,const unsigned char **,size_t *)" in summary model. |
+| Dubious signature "(bufq *,size_t,size_t)" in summary model. |
+| Dubious signature "(bufq *,size_t,size_t,int)" in summary model. |
+| Dubious signature "(bufq *,unsigned char *,size_t,CURLcode *)" in summary model. |
+| Dubious signature "(bufref *,const void *,size_t)" in summary model. |
+| Dubious signature "(bufref *,const void *,size_t,..(*)(..))" in summary model. |
+| Dubious signature "(chacha_ctx *,const u8 *,const u8 *)" in summary model. |
+| Dubious signature "(chacha_ctx *,const u8 *,u8 *,u32)" in summary model. |
+| Dubious signature "(chacha_ctx *,const u8 *,u32)" in summary model. |
+| Dubious signature "(chachapoly_ctx *,const u_char *,u_int)" in summary model. |
+| Dubious signature "(chachapoly_ctx *,u_int,u_char *,const u_char *,u_int,u_int,int)" in summary model. |
+| Dubious signature "(chachapoly_ctx *,unsigned int *,unsigned int,const unsigned char *,unsigned int)" in summary model. |
| Dubious signature "(char *)" in summary model. |
| Dubious signature "(char **)" in summary model. |
+| Dubious signature "(char **,Curl_str *,const size_t)" in summary model. |
+| Dubious signature "(char **,Curl_str *,const size_t,char)" in summary model. |
+| Dubious signature "(char **,URLGlob *)" in summary model. |
+| Dubious signature "(char **,char *,URLGlob *)" in summary model. |
+| Dubious signature "(char **,char)" in summary model. |
+| Dubious signature "(char **,const char *)" in summary model. |
| Dubious signature "(char **,s_options *,FILE *)" in summary model. |
+| Dubious signature "(char **,size_t *,size_t)" in summary model. |
| Dubious signature "(char *,EVP_CIPHER_INFO *)" in summary model. |
| Dubious signature "(char *,FILE *,FILE *,int *)" in summary model. |
+| Dubious signature "(char *,const char *,char **)" in summary model. |
| Dubious signature "(char *,const char *,const char *,X509_VERIFY_PARAM *)" in summary model. |
| Dubious signature "(char *,const char *,int,const char *)" in summary model. |
| Dubious signature "(char *,const char *,size_t)" in summary model. |
+| Dubious signature "(char *,const char *,va_list)" in summary model. |
| Dubious signature "(char *,int)" in summary model. |
| Dubious signature "(char *,int,const ASN1_OBJECT *)" in summary model. |
| Dubious signature "(char *,int,const ASN1_OBJECT *,int)" in summary model. |
| Dubious signature "(char *,int,int,void *)" in summary model. |
+| Dubious signature "(char *,size_t *)" in summary model. |
| Dubious signature "(char *,size_t)" in summary model. |
| Dubious signature "(char *,size_t,const char *,...)" in summary model. |
| Dubious signature "(char *,size_t,const char *,va_list)" in summary model. |
| Dubious signature "(char *,size_t,size_t *,const OSSL_PARAM[],int,ossl_passphrase_data_st *)" in summary model. |
| Dubious signature "(char *,size_t,size_t *,const OSSL_PARAM[],void *)" in summary model. |
| Dubious signature "(char *,size_t,size_t *,const unsigned char *,size_t,const char)" in summary model. |
+| Dubious signature "(char *,size_t,size_t,void *)" in summary model. |
| Dubious signature "(char *,uint8_t)" in summary model. |
| Dubious signature "(char *,unsigned int)" in summary model. |
| Dubious signature "(char,const CStringT &)" in summary model. |
+| Dubious signature "(codetype,unsigned short *,unsigned int,code **,unsigned int *,unsigned short *)" in summary model. |
| Dubious signature "(config *)" in summary model. |
| Dubious signature "(config *,config *)" in summary model. |
+| Dubious signature "(connectdata *,Curl_easy *,curltime *)" in summary model. |
+| Dubious signature "(connectdata *,curltime *)" in summary model. |
+| Dubious signature "(connectdata *,int)" in summary model. |
+| Dubious signature "(connectdata *,int,curltime *)" in summary model. |
| Dubious signature "(const ACCESS_DESCRIPTION *,unsigned char **)" in summary model. |
| Dubious signature "(const ADMISSIONS *)" in summary model. |
| Dubious signature "(const ADMISSIONS *,unsigned char **)" in summary model. |
@@ -2504,6 +2869,9 @@
| Dubious signature "(const BIO_ADDRINFO *)" in summary model. |
| Dubious signature "(const BIO_METHOD *)" in summary model. |
| Dubious signature "(const BN_BLINDING *)" in summary model. |
+| Dubious signature "(const BrotliDecoderState *,const BrotliDecoderStateInternal *)" in summary model. |
+| Dubious signature "(const BrotliEncoderDictionary *,const uint8_t *,size_t,size_t,uint32_t *)" in summary model. |
+| Dubious signature "(const BrotliEncoderPreparedDictionary *)" in summary model. |
| Dubious signature "(const CComBSTR &)" in summary model. |
| Dubious signature "(const CComSafeArray &)" in summary model. |
| Dubious signature "(const CERTIFICATEPOLICIES *,unsigned char **)" in summary model. |
@@ -2535,6 +2903,10 @@
| Dubious signature "(const CTLOG *,const uint8_t **,size_t *)" in summary model. |
| Dubious signature "(const CTLOG_STORE *,const uint8_t *,size_t)" in summary model. |
| Dubious signature "(const CT_POLICY_EVAL_CTX *)" in summary model. |
+| Dubious signature "(const CURLU *)" in summary model. |
+| Dubious signature "(const CURLU *,CURLUPart,char **,unsigned int)" in summary model. |
+| Dubious signature "(const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *)" in summary model. |
+| Dubious signature "(const Curl_easy *,const connectdata *,int)" in summary model. |
| Dubious signature "(const DH *)" in summary model. |
| Dubious signature "(const DH *,const BIGNUM *)" in summary model. |
| Dubious signature "(const DH *,const BIGNUM **,const BIGNUM **)" in summary model. |
@@ -2695,7 +3067,21 @@
| Dubious signature "(const GENERAL_NAMES *,unsigned char **)" in summary model. |
| Dubious signature "(const GOST_KX_MESSAGE *,unsigned char **)" in summary model. |
| Dubious signature "(const HMAC_CTX *)" in summary model. |
+| Dubious signature "(const HMAC_params *,const unsigned char *,const size_t,const unsigned char *,const size_t,unsigned char *)" in summary model. |
+| Dubious signature "(const HMAC_params *,const unsigned char *,unsigned int)" in summary model. |
| Dubious signature "(const HT_CONFIG *)" in summary model. |
+| Dubious signature "(const HistogramCommand *)" in summary model. |
+| Dubious signature "(const HistogramCommand *,HistogramCommand *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *)" in summary model. |
+| Dubious signature "(const HistogramCommand *,const HistogramCommand *,HistogramCommand *)" in summary model. |
+| Dubious signature "(const HistogramCommand *,size_t,const uint32_t *,size_t,HistogramCommand *,HistogramCommand *,uint32_t *)" in summary model. |
+| Dubious signature "(const HistogramDistance *)" in summary model. |
+| Dubious signature "(const HistogramDistance *,HistogramDistance *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *)" in summary model. |
+| Dubious signature "(const HistogramDistance *,const HistogramDistance *,HistogramDistance *)" in summary model. |
+| Dubious signature "(const HistogramDistance *,size_t,const uint32_t *,size_t,HistogramDistance *,HistogramDistance *,uint32_t *)" in summary model. |
+| Dubious signature "(const HistogramLiteral *)" in summary model. |
+| Dubious signature "(const HistogramLiteral *,HistogramLiteral *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *)" in summary model. |
+| Dubious signature "(const HistogramLiteral *,const HistogramLiteral *,HistogramLiteral *)" in summary model. |
+| Dubious signature "(const HistogramLiteral *,size_t,const uint32_t *,size_t,HistogramLiteral *,HistogramLiteral *,uint32_t *)" in summary model. |
| Dubious signature "(const IPAddressChoice *,unsigned char **)" in summary model. |
| Dubious signature "(const IPAddressFamily *)" in summary model. |
| Dubious signature "(const IPAddressFamily *,unsigned char **)" in summary model. |
@@ -2704,6 +3090,7 @@
| Dubious signature "(const ISSUER_SIGN_TOOL *,unsigned char **)" in summary model. |
| Dubious signature "(const ISSUING_DIST_POINT *,unsigned char **)" in summary model. |
| Dubious signature "(const MATRIX *,const VECTOR *,VECTOR *)" in summary model. |
+| Dubious signature "(const MD5_params *)" in summary model. |
| Dubious signature "(const ML_DSA_KEY *)" in summary model. |
| Dubious signature "(const ML_DSA_KEY *,int)" in summary model. |
| Dubious signature "(const ML_DSA_KEY *,int,const uint8_t *,size_t)" in summary model. |
@@ -3164,8 +3551,12 @@
| Dubious signature "(const YCHAR *)" in summary model. |
| Dubious signature "(const YCHAR *,int)" in summary model. |
| Dubious signature "(const YCHAR *,int,IAtlStringMgr *)" in summary model. |
+| Dubious signature "(const bufq *)" in summary model. |
+| Dubious signature "(const bufref *)" in summary model. |
| Dubious signature "(const char *)" in summary model. |
| Dubious signature "(const char **)" in summary model. |
+| Dubious signature "(const char **,char **,const char *)" in summary model. |
+| Dubious signature "(const char **,const char *)" in summary model. |
| Dubious signature "(const char **,int *)" in summary model. |
| Dubious signature "(const char **,int *,const char **,const char **,int *)" in summary model. |
| Dubious signature "(const char **,int *,const char **,int *)" in summary model. |
@@ -3177,16 +3568,25 @@
| Dubious signature "(const char *,DES_cblock *,DES_cblock *)" in summary model. |
| Dubious signature "(const char *,EVP_CIPHER **)" in summary model. |
| Dubious signature "(const char *,EVP_MD **)" in summary model. |
+| Dubious signature "(const char *,GlobalConfig *)" in summary model. |
| Dubious signature "(const char *,OSSL_CMP_severity *,char **,char **,int *)" in summary model. |
| Dubious signature "(const char *,OSSL_LIB_CTX *,const char *)" in summary model. |
| Dubious signature "(const char *,OSSL_LIB_CTX *,const char *,const UI_METHOD *,void *,const OSSL_PARAM[],OSSL_STORE_post_process_info_fn,void *)" in summary model. |
| Dubious signature "(const char *,X509 **,stack_st_X509 **,int,const char *,const char *,X509_VERIFY_PARAM *)" in summary model. |
+| Dubious signature "(const char *,bufref *)" in summary model. |
| Dubious signature "(const char *,char *)" in summary model. |
| Dubious signature "(const char *,char **,char **,BIO_hostserv_priorities)" in summary model. |
+| Dubious signature "(const char *,char **,char **,char **)" in summary model. |
| Dubious signature "(const char *,char **,char **,char **,char **,int *,char **,char **,char **)" in summary model. |
+| Dubious signature "(const char *,char **,int)" in summary model. |
+| Dubious signature "(const char *,char **,int,curl_off_t *)" in summary model. |
| Dubious signature "(const char *,char **,int,unsigned long *)" in summary model. |
| Dubious signature "(const char *,char **,size_t)" in summary model. |
+| Dubious signature "(const char *,char *,char *,bool *,GlobalConfig *,OperationConfig *)" in summary model. |
+| Dubious signature "(const char *,char *,char *,const char **)" in summary model. |
+| Dubious signature "(const char *,char *,size_t *)" in summary model. |
| Dubious signature "(const char *,char *,size_t)" in summary model. |
+| Dubious signature "(const char *,char *,size_t,bool)" in summary model. |
| Dubious signature "(const char *,const ASN1_INTEGER *,stack_st_CONF_VALUE **)" in summary model. |
| Dubious signature "(const char *,const ML_COMMON_PKCS8_FMT *,const char *,const char *)" in summary model. |
| Dubious signature "(const char *,const OPT_PAIR *,int *)" in summary model. |
@@ -3203,20 +3603,28 @@
| Dubious signature "(const char *,const char *,char **,char **)" in summary model. |
| Dubious signature "(const char *,const char *,char **,char **,const char *,const char *)" in summary model. |
| Dubious signature "(const char *,const char *,char **,char **,const char *,const char *,OSSL_LIB_CTX *,const char *)" in summary model. |
+| Dubious signature "(const char *,const char *,char **,int)" in summary model. |
+| Dubious signature "(const char *,const char *,char *,char *)" in summary model. |
| Dubious signature "(const char *,const char *,const BIGNUM *,ASN1_INTEGER **)" in summary model. |
| Dubious signature "(const char *,const char *,const char *,BIO *,BIO *,OSSL_HTTP_bio_cb_t,void *,int,const stack_st_CONF_VALUE *,const char *,int,size_t,int)" in summary model. |
| Dubious signature "(const char *,const char *,const char *,SSL_CTX *,const stack_st_CONF_VALUE *,long,const char *,const ASN1_ITEM *)" in summary model. |
+| Dubious signature "(const char *,const char *,const char *,bool,iconv_ilseq_handler)" in summary model. |
+| Dubious signature "(const char *,const char *,const char *,bufref *)" in summary model. |
| Dubious signature "(const char *,const char *,const char *,const char *,const char *,SSL_CTX *,const stack_st_CONF_VALUE *,const char *,ASN1_VALUE *,const ASN1_ITEM *,const char *,long,const ASN1_ITEM *)" in summary model. |
| Dubious signature "(const char *,const char *,const char *,const char *,int,BIO *,BIO *,OSSL_HTTP_bio_cb_t,void *,int,int)" in summary model. |
+| Dubious signature "(const char *,const char *,const char *,iconv_ilseq_handler)" in summary model. |
| Dubious signature "(const char *,const char *,const char *,int)" in summary model. |
| Dubious signature "(const char *,const char *,int)" in summary model. |
| Dubious signature "(const char *,const char *,int,int,int,int,BIO_ADDRINFO **)" in summary model. |
| Dubious signature "(const char *,const char *,size_t)" in summary model. |
| Dubious signature "(const char *,const char *,stack_st_CONF_VALUE **)" in summary model. |
| Dubious signature "(const char *,const char *,unsigned int)" in summary model. |
+| Dubious signature "(const char *,const size_t,char **,char **,char **)" in summary model. |
| Dubious signature "(const char *,const size_t,unsigned int *,unsigned int *)" in summary model. |
+| Dubious signature "(const char *,const time_t *)" in summary model. |
| Dubious signature "(const char *,const unsigned char *,size_t,stack_st_CONF_VALUE **)" in summary model. |
| Dubious signature "(const char *,const unsigned char *,stack_st_CONF_VALUE **)" in summary model. |
+| Dubious signature "(const char *,digestdata *)" in summary model. |
| Dubious signature "(const char *,double *)" in summary model. |
| Dubious signature "(const char *,int32_t *)" in summary model. |
| Dubious signature "(const char *,int64_t *)" in summary model. |
@@ -3238,7 +3646,13 @@
| Dubious signature "(const char *,long *,int)" in summary model. |
| Dubious signature "(const char *,size_t *)" in summary model. |
| Dubious signature "(const char *,size_t)" in summary model. |
+| Dubious signature "(const char *,size_t,char **,size_t *,urlreject)" in summary model. |
+| Dubious signature "(const char *,size_t,const char *,const char *,bool,iconv_ilseq_handler,size_t *,char **,size_t *)" in summary model. |
+| Dubious signature "(const char *,size_t,const char *,const char *,iconv_ilseq_handler,size_t *,char **,size_t *)" in summary model. |
| Dubious signature "(const char *,size_t,const char *,int)" in summary model. |
+| Dubious signature "(const char *,size_t,const iconveh_t *,iconv_ilseq_handler,size_t *,char **,size_t *)" in summary model. |
+| Dubious signature "(const char *,size_t,dynbuf *,bool)" in summary model. |
+| Dubious signature "(const char *,size_t,uint32_t *,size_t *)" in summary model. |
| Dubious signature "(const char *,sqlite3 **,int,const char *)" in summary model. |
| Dubious signature "(const char *,sqlite3_filename)" in summary model. |
| Dubious signature "(const char *,sqlite3_filename,const char *)" in summary model. |
@@ -3247,8 +3661,10 @@
| Dubious signature "(const char *,sqlite3_filename,int)" in summary model. |
| Dubious signature "(const char *,stack_st_X509_CRL **,const char *,const char *)" in summary model. |
| Dubious signature "(const char *,time_t *)" in summary model. |
+| Dubious signature "(const char *,uint16_t *,size_t)" in summary model. |
| Dubious signature "(const char *,uint32_t *)" in summary model. |
| Dubious signature "(const char *,uint64_t *)" in summary model. |
+| Dubious signature "(const char *,unsigned char *)" in summary model. |
| Dubious signature "(const char *,unsigned char *,size_t)" in summary model. |
| Dubious signature "(const char *,unsigned int *)" in summary model. |
| Dubious signature "(const char *,unsigned long *)" in summary model. |
@@ -3257,10 +3673,12 @@
| Dubious signature "(const char *,void **,size_t)" in summary model. |
| Dubious signature "(const char *,void *,size_t)" in summary model. |
| Dubious signature "(const char *const *,const char *const *)" in summary model. |
+| Dubious signature "(const curl_easyoption *)" in summary model. |
| Dubious signature "(const curve448_point_t)" in summary model. |
| Dubious signature "(const custom_ext_methods *,ENDPOINT,unsigned int,size_t *)" in summary model. |
| Dubious signature "(const deque &)" in summary model. |
| Dubious signature "(const deque &,const Allocator &)" in summary model. |
+| Dubious signature "(const dynbuf *)" in summary model. |
| Dubious signature "(const forward_list &)" in summary model. |
| Dubious signature "(const forward_list &,const Allocator &)" in summary model. |
| Dubious signature "(const gf)" in summary model. |
@@ -3269,6 +3687,16 @@
| Dubious signature "(const int_dhx942_dh *,unsigned char **)" in summary model. |
| Dubious signature "(const list &)" in summary model. |
| Dubious signature "(const list &,const Allocator &)" in summary model. |
+| Dubious signature "(const nghttp2_extpri *)" in summary model. |
+| Dubious signature "(const nghttp2_map *)" in summary model. |
+| Dubious signature "(const nghttp2_map *,..(*)(..),void *)" in summary model. |
+| Dubious signature "(const nghttp2_map *,nghttp2_map_key_type)" in summary model. |
+| Dubious signature "(const nghttp2_nv *,const nghttp2_nv *)" in summary model. |
+| Dubious signature "(const nghttp2_settings_entry *,size_t,nghttp2_mem *)" in summary model. |
+| Dubious signature "(const size_t,const size_t,const ZopfliNode *,int *,size_t *,const BrotliEncoderParams *,Command *,size_t *)" in summary model. |
+| Dubious signature "(const sockaddr *,char *,size_t)" in summary model. |
+| Dubious signature "(const sockaddr_in6 *,char *,size_t)" in summary model. |
+| Dubious signature "(const sockaddr_in *,char *,size_t)" in summary model. |
| Dubious signature "(const sqlite3_value *)" in summary model. |
| Dubious signature "(const stack_st_SCT *,unsigned char **)" in summary model. |
| Dubious signature "(const stack_st_X509 *)" in summary model. |
@@ -3282,17 +3710,28 @@
| Dubious signature "(const stack_st_X509_EXTENSION *,int,int *,int *)" in summary model. |
| Dubious signature "(const stack_st_X509_EXTENSION *,int,int)" in summary model. |
| Dubious signature "(const stack_st_X509_NAME *)" in summary model. |
+| Dubious signature "(const stat *)" in summary model. |
| Dubious signature "(const time_t *,tm *)" in summary model. |
| Dubious signature "(const u128[16],uint8_t *,const uint8_t *,size_t)" in summary model. |
| Dubious signature "(const uint8_t *,SM4_KEY *)" in summary model. |
+| Dubious signature "(const uint8_t *,const uint8_t *,uint8_t **,int)" in summary model. |
| Dubious signature "(const uint8_t *,int,int,PROV_CTX *,const char *)" in summary model. |
| Dubious signature "(const uint8_t *,size_t)" in summary model. |
+| Dubious signature "(const uint8_t *,size_t,HuffmanTree *,size_t *,uint8_t *)" in summary model. |
| Dubious signature "(const uint8_t *,size_t,ML_KEM_KEY *)" in summary model. |
+| Dubious signature "(const uint8_t *,size_t,size_t *,uint8_t *,uint8_t *)" in summary model. |
+| Dubious signature "(const uint8_t *,size_t,uint16_t *)" in summary model. |
+| Dubious signature "(const uint8_t *,uint8_t **,int)" in summary model. |
| Dubious signature "(const uint8_t *,uint8_t *,const SM4_KEY *)" in summary model. |
+| Dubious signature "(const uint16_t *,ssize_t,char **,size_t *)" in summary model. |
+| Dubious signature "(const uint32_t *,const size_t,const int,HuffmanTree *,uint8_t *)" in summary model. |
+| Dubious signature "(const uint32_t *,size_t,char *,size_t *)" in summary model. |
+| Dubious signature "(const uint32_t *,size_t,uint32_t *,size_t *,int)" in summary model. |
| Dubious signature "(const unsigned char *)" in summary model. |
| Dubious signature "(const unsigned char **,long *,int *,int *,long)" in summary model. |
| Dubious signature "(const unsigned char **,long)" in summary model. |
| Dubious signature "(const unsigned char **,long,OSSL_LIB_CTX *,const char *)" in summary model. |
+| Dubious signature "(const unsigned char **,unsigned char *,const unsigned char *,unsigned int)" in summary model. |
| Dubious signature "(const unsigned char **,unsigned int,int *)" in summary model. |
| Dubious signature "(const unsigned char **,unsigned int,int)" in summary model. |
| Dubious signature "(const unsigned char **,unsigned int,int,int *,unsigned int *,unsigned int *)" in summary model. |
@@ -3320,6 +3759,7 @@
| Dubious signature "(const unsigned char *,size_t,size_t,QUIC_CONN_ID *)" in summary model. |
| Dubious signature "(const unsigned char *,size_t,uint64_t *)" in summary model. |
| Dubious signature "(const unsigned char *,size_t,unsigned char *)" in summary model. |
+| Dubious signature "(const unsigned char *,size_t,unsigned char *,size_t)" in summary model. |
| Dubious signature "(const unsigned char *,unsigned char *,IDEA_KEY_SCHEDULE *)" in summary model. |
| Dubious signature "(const unsigned char *,unsigned char *,RC2_KEY *,int)" in summary model. |
| Dubious signature "(const unsigned char *,unsigned char *,const ARIA_KEY *)" in summary model. |
@@ -3365,12 +3805,31 @@
| Dubious signature "(const unsigned char *,unsigned char *,size_t,const void *,unsigned char[16],unsigned char[16],unsigned int *,ctr128_f)" in summary model. |
| Dubious signature "(const unsigned char[16],SEED_KEY_SCHEDULE *)" in summary model. |
| Dubious signature "(const unsigned char[16],unsigned char[16],const SEED_KEY_SCHEDULE *)" in summary model. |
+| Dubious signature "(const uv__io_t *,unsigned int)" in summary model. |
+| Dubious signature "(const uv__statx *,uv_stat_t *)" in summary model. |
+| Dubious signature "(const uv_buf_t[],unsigned int)" in summary model. |
+| Dubious signature "(const uv_fs_t *)" in summary model. |
+| Dubious signature "(const uv_handle_t *)" in summary model. |
+| Dubious signature "(const uv_handle_t *,uv__peersockfunc,sockaddr *,int *)" in summary model. |
+| Dubious signature "(const uv_handle_t *,uv_os_fd_t *)" in summary model. |
+| Dubious signature "(const uv_lib_t *)" in summary model. |
+| Dubious signature "(const uv_loop_t *)" in summary model. |
+| Dubious signature "(const uv_pipe_t *,char *,size_t *)" in summary model. |
+| Dubious signature "(const uv_process_t *)" in summary model. |
+| Dubious signature "(const uv_req_t *)" in summary model. |
+| Dubious signature "(const uv_stream_t *)" in summary model. |
+| Dubious signature "(const uv_tcp_t *,sockaddr *,int *)" in summary model. |
+| Dubious signature "(const uv_timer_t *)" in summary model. |
+| Dubious signature "(const uv_udp_t *)" in summary model. |
+| Dubious signature "(const uv_udp_t *,sockaddr *,int *)" in summary model. |
| Dubious signature "(const vector &)" in summary model. |
| Dubious signature "(const vector &,const Allocator &)" in summary model. |
| Dubious signature "(const void *,const void *)" in summary model. |
| Dubious signature "(const void *,const void *,int)" in summary model. |
| Dubious signature "(const void *,const void *,int,int,..(*)(..))" in summary model. |
| Dubious signature "(const void *,const void *,int,int,..(*)(..),int)" in summary model. |
+| Dubious signature "(const void *,const void *,size_t)" in summary model. |
+| Dubious signature "(const void *,size_t)" in summary model. |
| Dubious signature "(const void *,size_t,const char *,int)" in summary model. |
| Dubious signature "(const void *,size_t,unsigned char *)" in summary model. |
| Dubious signature "(const void *,size_t,unsigned char **,size_t *)" in summary model. |
@@ -3379,6 +3838,31 @@
| Dubious signature "(const_iterator,T &&)" in summary model. |
| Dubious signature "(const_iterator,const T &)" in summary model. |
| Dubious signature "(const_iterator,size_type,const T &)" in summary model. |
+| Dubious signature "(cpool *,Curl_cpool_disconnect_cb *,Curl_multi *,Curl_share *,size_t)" in summary model. |
+| Dubious signature "(cpool *,fd_set *,fd_set *,int *)" in summary model. |
+| Dubious signature "(curl_blob **,const curl_blob *)" in summary model. |
+| Dubious signature "(curl_httppost **,curl_httppost **,...)" in summary model. |
+| Dubious signature "(curl_mime *)" in summary model. |
+| Dubious signature "(curl_mimepart *)" in summary model. |
+| Dubious signature "(curl_mimepart *,const char *)" in summary model. |
+| Dubious signature "(curl_mimepart *,const char *,size_t)" in summary model. |
+| Dubious signature "(curl_mimepart *,curl_mime *)" in summary model. |
+| Dubious signature "(curl_mimepart *,curl_mime *,int)" in summary model. |
+| Dubious signature "(curl_mimepart *,curl_off_t,curl_read_callback,curl_seek_callback,curl_free_callback,void *)" in summary model. |
+| Dubious signature "(curl_mimepart *,curl_slist *,int)" in summary model. |
+| Dubious signature "(curl_off_t *,const char *)" in summary model. |
+| Dubious signature "(curl_pollfds *,curl_socket_t,short)" in summary model. |
+| Dubious signature "(curl_pollfds *,easy_pollset *)" in summary model. |
+| Dubious signature "(curl_pollfds *,pollfd *,unsigned int)" in summary model. |
+| Dubious signature "(curl_pushheaders *,const char *)" in summary model. |
+| Dubious signature "(curl_pushheaders *,size_t)" in summary model. |
+| Dubious signature "(curl_slist *)" in summary model. |
+| Dubious signature "(curl_slist **,const char *)" in summary model. |
+| Dubious signature "(curl_slist *,char *)" in summary model. |
+| Dubious signature "(curl_slist *,const char *)" in summary model. |
+| Dubious signature "(curltime,Curl_tree *)" in summary model. |
+| Dubious signature "(curltime,Curl_tree *,Curl_tree *)" in summary model. |
+| Dubious signature "(curltime,Curl_tree *,Curl_tree **)" in summary model. |
| Dubious signature "(curve448_point_t,const curve448_point_t)" in summary model. |
| Dubious signature "(curve448_point_t,const curve448_precomputed_s *,const curve448_scalar_t)" in summary model. |
| Dubious signature "(curve448_point_t,const curve448_scalar_t,const curve448_point_t,const curve448_scalar_t)" in summary model. |
@@ -3390,24 +3874,62 @@
| Dubious signature "(custom_ext_methods *,const custom_ext_methods *)" in summary model. |
| Dubious signature "(d2i_of_void *,const char *,BIO *,void **,pem_password_cb *,void *)" in summary model. |
| Dubious signature "(d2i_of_void *,const char *,FILE *,void **,pem_password_cb *,void *)" in summary model. |
+| Dubious signature "(deflate_state *,charf *,ulg,int)" in summary model. |
+| Dubious signature "(deflate_state *,unsigned int,unsigned int)" in summary model. |
| Dubious signature "(deque &&)" in summary model. |
| Dubious signature "(deque &&,const Allocator &)" in summary model. |
+| Dubious signature "(dynbuf *)" in summary model. |
+| Dubious signature "(dynbuf *,Curl_easy *)" in summary model. |
+| Dubious signature "(dynbuf *,FILE *)" in summary model. |
+| Dubious signature "(dynbuf *,const char *)" in summary model. |
+| Dubious signature "(dynbuf *,const char *,va_list)" in summary model. |
+| Dubious signature "(dynbuf *,const void *,size_t)" in summary model. |
+| Dubious signature "(dynbuf *,size_t *)" in summary model. |
+| Dubious signature "(dynbuf *,size_t)" in summary model. |
+| Dubious signature "(dynhds *)" in summary model. |
+| Dubious signature "(dynhds *,const char *)" in summary model. |
+| Dubious signature "(dynhds *,const char *,const char *)" in summary model. |
+| Dubious signature "(dynhds *,const char *,size_t)" in summary model. |
+| Dubious signature "(dynhds *,const char *,size_t,const char *,size_t)" in summary model. |
+| Dubious signature "(dynhds *,int)" in summary model. |
+| Dubious signature "(dynhds *,size_t *)" in summary model. |
+| Dubious signature "(dynhds *,size_t)" in summary model. |
+| Dubious signature "(dynhds *,size_t,size_t)" in summary model. |
+| Dubious signature "(fileinfo *)" in summary model. |
| Dubious signature "(format_string,Args &&)" in summary model. |
| Dubious signature "(forward_list &&)" in summary model. |
| Dubious signature "(forward_list &&,const Allocator &)" in summary model. |
+| Dubious signature "(ftp_parselist_data *)" in summary model. |
+| Dubious signature "(ftp_parselist_data **)" in summary model. |
| Dubious signature "(gf,const gf,const gf)" in summary model. |
| Dubious signature "(gf,const uint8_t[56],int,uint8_t)" in summary model. |
+| Dubious signature "(gzFile,char *,int)" in summary model. |
+| Dubious signature "(gzFile,const char *)" in summary model. |
+| Dubious signature "(gzFile,const char *,va_list)" in summary model. |
+| Dubious signature "(gzFile,int *)" in summary model. |
+| Dubious signature "(gzFile,unsigned int)" in summary model. |
+| Dubious signature "(gzFile,voidp,unsigned int)" in summary model. |
+| Dubious signature "(gzFile,voidpc,unsigned int)" in summary model. |
+| Dubious signature "(gz_statep,int,const char *)" in summary model. |
+| Dubious signature "(h1_req_parser *,const char *,size_t,const char *,int,CURLcode *)" in summary model. |
+| Dubious signature "(h1_req_parser *,size_t)" in summary model. |
+| Dubious signature "(hsts **)" in summary model. |
+| Dubious signature "(http_resp **,int,const char *)" in summary model. |
+| Dubious signature "(httpreq **,const char *,size_t,CURLU *,const char *)" in summary model. |
+| Dubious signature "(httpreq **,const char *,size_t,const char *,size_t,const char *,size_t,const char *,size_t)" in summary model. |
| Dubious signature "(i2d_of_void *,BIO *,const void *)" in summary model. |
| Dubious signature "(i2d_of_void *,FILE *,const void *)" in summary model. |
| Dubious signature "(i2d_of_void *,X509_ALGOR *,X509_ALGOR *,ASN1_BIT_STRING *,char *,EVP_PKEY *,const EVP_MD *)" in summary model. |
| Dubious signature "(i2d_of_void *,const char *,BIO *,const void *,const EVP_CIPHER *,const unsigned char *,int,pem_password_cb *,void *)" in summary model. |
| Dubious signature "(i2d_of_void *,const char *,FILE *,const void *,const EVP_CIPHER *,const unsigned char *,int,pem_password_cb *,void *)" in summary model. |
| Dubious signature "(i2d_of_void *,d2i_of_void *,const void *)" in summary model. |
+| Dubious signature "(int32_t *,int32_t *,int32_t *,int32_t *)" in summary model. |
| Dubious signature "(int64_t *,const ASN1_ENUMERATED *)" in summary model. |
| Dubious signature "(int64_t *,const ASN1_INTEGER *)" in summary model. |
| Dubious signature "(int *,ASN1_TIME **,const ASN1_TIME *)" in summary model. |
| Dubious signature "(int *,X509 *,stack_st_X509 *,unsigned long)" in summary model. |
| Dubious signature "(int *,const char *,const char *,const char *,const char *,int,int,int,int,int,BIO_ADDR **)" in summary model. |
+| Dubious signature "(int *,const char *,size_t)" in summary model. |
| Dubious signature "(int *,int *,const ASN1_TIME *,const ASN1_TIME *)" in summary model. |
| Dubious signature "(int *,int *,const EVP_PKEY_METHOD *)" in summary model. |
| Dubious signature "(int *,int *,const tm *,const tm *)" in summary model. |
@@ -3437,8 +3959,12 @@
| Dubious signature "(int,char **)" in summary model. |
| Dubious signature "(int,char **,char *[])" in summary model. |
| Dubious signature "(int,char **,const OPTIONS *)" in summary model. |
+| Dubious signature "(int,char **,gengetopt_args_info *)" in summary model. |
+| Dubious signature "(int,char **,gengetopt_args_info *,cmdline_parser_params *)" in summary model. |
+| Dubious signature "(int,char **,gengetopt_args_info *,int,int,int)" in summary model. |
| Dubious signature "(int,char *,const char *,...)" in summary model. |
| Dubious signature "(int,char *,const char *,va_list)" in summary model. |
+| Dubious signature "(int,char *,size_t)" in summary model. |
| Dubious signature "(int,const EVP_CIPHER *,const char *,int,unsigned char *,int,int,PKCS8_PRIV_KEY_INFO *)" in summary model. |
| Dubious signature "(int,const EVP_CIPHER *,const char *,int,unsigned char *,int,int,PKCS8_PRIV_KEY_INFO *,OSSL_LIB_CTX *,const char *)" in summary model. |
| Dubious signature "(int,const OSSL_ALGORITHM *,OSSL_PROVIDER *)" in summary model. |
@@ -3450,13 +3976,17 @@
| Dubious signature "(int,const char *,int,unsigned char *,int,int,stack_st_PKCS12_SAFEBAG *)" in summary model. |
| Dubious signature "(int,const char *,int,unsigned char *,int,int,stack_st_PKCS12_SAFEBAG *,OSSL_LIB_CTX *,const char *)" in summary model. |
| Dubious signature "(int,const regex_t *,char *,size_t)" in summary model. |
+| Dubious signature "(int,const uint8_t *__restrict__,size_t,size_t,size_t,size_t *__restrict__,uint8_t *__restrict__)" in summary model. |
| Dubious signature "(int,const unsigned char *,int,const unsigned char *,int,DSA *)" in summary model. |
| Dubious signature "(int,const unsigned char *,int,const unsigned char *,int,EC_KEY *)" in summary model. |
| Dubious signature "(int,const unsigned char *,int,unsigned char *,unsigned int *,DSA *)" in summary model. |
| Dubious signature "(int,const unsigned char *,int,unsigned char *,unsigned int *,DSA *,unsigned int,const char *,OSSL_LIB_CTX *,const char *)" in summary model. |
| Dubious signature "(int,const unsigned char *,int,unsigned char *,unsigned int *,const BIGNUM *,const BIGNUM *,EC_KEY *)" in summary model. |
| Dubious signature "(int,const unsigned char *,unsigned int,unsigned char *,size_t *,const unsigned char *,size_t,RSA *)" in summary model. |
+| Dubious signature "(int,const void *,char *,size_t)" in summary model. |
+| Dubious signature "(int,const void *,const char *,int)" in summary model. |
| Dubious signature "(int,int *,int *,int)" in summary model. |
+| Dubious signature "(int,int,BrotliEncoderMode,size_t,const uint8_t[],size_t *,uint8_t[])" in summary model. |
| Dubious signature "(int,int,TLS_GROUP_INFO *,size_t,long,stack_st_OPENSSL_CSTRING *)" in summary model. |
| Dubious signature "(int,int,const char *)" in summary model. |
| Dubious signature "(int,int,const char *,const char *)" in summary model. |
@@ -3468,6 +3998,7 @@
| Dubious signature "(int,int,void *)" in summary model. |
| Dubious signature "(int,long,void *,CRYPTO_EX_new *,CRYPTO_EX_dup *,CRYPTO_EX_free *)" in summary model. |
| Dubious signature "(int,sqlite3_int64 *,sqlite3_int64 *,int)" in summary model. |
+| Dubious signature "(int,stat *)" in summary model. |
| Dubious signature "(int,unsigned char *,int,const char *,const char *)" in summary model. |
| Dubious signature "(int,unsigned char *,int,int *,unsigned long *,..(*)(..),void *)" in summary model. |
| Dubious signature "(int,unsigned long,..(*)(..),void *)" in summary model. |
@@ -3483,16 +4014,182 @@
| Dubious signature "(lhash_st_CONF_VALUE *,const char *,long *)" in summary model. |
| Dubious signature "(list &&)" in summary model. |
| Dubious signature "(list &&,const Allocator &)" in summary model. |
+| Dubious signature "(list_head *)" in summary model. |
+| Dubious signature "(list_head *,list_node *)" in summary model. |
+| Dubious signature "(list_node *)" in summary model. |
+| Dubious signature "(long *,const char *)" in summary model. |
+| Dubious signature "(long *,const char *,long)" in summary model. |
+| Dubious signature "(long long *)" in summary model. |
+| Dubious signature "(nghttp2_buf *,size_t,nghttp2_mem *)" in summary model. |
+| Dubious signature "(nghttp2_buf *,uint8_t *,size_t)" in summary model. |
+| Dubious signature "(nghttp2_bufs *,const nghttp2_vec *,size_t,nghttp2_mem *)" in summary model. |
+| Dubious signature "(nghttp2_bufs *,nghttp2_frame_hd *,size_t,int)" in summary model. |
+| Dubious signature "(nghttp2_bufs *,nghttp2_headers *,nghttp2_hd_deflater *)" in summary model. |
+| Dubious signature "(nghttp2_bufs *,nghttp2_push_promise *,nghttp2_hd_deflater *)" in summary model. |
+| Dubious signature "(nghttp2_bufs *,size_t)" in summary model. |
+| Dubious signature "(nghttp2_bufs *,size_t,size_t,nghttp2_mem *)" in summary model. |
+| Dubious signature "(nghttp2_bufs *,size_t,size_t,size_t,nghttp2_mem *)" in summary model. |
+| Dubious signature "(nghttp2_bufs *,size_t,size_t,size_t,size_t,nghttp2_mem *)" in summary model. |
+| Dubious signature "(nghttp2_bufs *,uint8_t *,size_t,nghttp2_mem *)" in summary model. |
+| Dubious signature "(nghttp2_data *,uint8_t,int32_t)" in summary model. |
+| Dubious signature "(nghttp2_data_provider_wrap *,const nghttp2_data_provider2 *)" in summary model. |
+| Dubious signature "(nghttp2_data_provider_wrap *,const nghttp2_data_provider *)" in summary model. |
+| Dubious signature "(nghttp2_extension *,int32_t,uint8_t *,size_t)" in summary model. |
+| Dubious signature "(nghttp2_extension *,int32_t,uint8_t *,size_t,uint8_t *,size_t)" in summary model. |
+| Dubious signature "(nghttp2_extension *,nghttp2_origin_entry *,size_t)" in summary model. |
+| Dubious signature "(nghttp2_extension *,uint8_t,uint8_t,int32_t,void *)" in summary model. |
+| Dubious signature "(nghttp2_extpri *,const uint8_t *,size_t)" in summary model. |
+| Dubious signature "(nghttp2_extpri *,uint8_t)" in summary model. |
+| Dubious signature "(nghttp2_frame *,size_t)" in summary model. |
+| Dubious signature "(nghttp2_frame_hd *,const uint8_t *)" in summary model. |
+| Dubious signature "(nghttp2_frame_hd *,size_t,uint8_t,uint8_t,int32_t)" in summary model. |
+| Dubious signature "(nghttp2_goaway *,const uint8_t *,size_t,nghttp2_mem *)" in summary model. |
+| Dubious signature "(nghttp2_goaway *,const uint8_t *,uint8_t *,size_t)" in summary model. |
+| Dubious signature "(nghttp2_goaway *,int32_t,uint32_t,uint8_t *,size_t)" in summary model. |
+| Dubious signature "(nghttp2_hd_context *,size_t)" in summary model. |
+| Dubious signature "(nghttp2_hd_deflater *)" in summary model. |
+| Dubious signature "(nghttp2_hd_deflater **,size_t)" in summary model. |
+| Dubious signature "(nghttp2_hd_deflater **,size_t,nghttp2_mem *)" in summary model. |
+| Dubious signature "(nghttp2_hd_deflater *,const nghttp2_nv *,size_t)" in summary model. |
+| Dubious signature "(nghttp2_hd_deflater *,const nghttp2_vec *,size_t,const nghttp2_nv *,size_t)" in summary model. |
+| Dubious signature "(nghttp2_hd_deflater *,nghttp2_bufs *,const nghttp2_nv *,size_t)" in summary model. |
+| Dubious signature "(nghttp2_hd_deflater *,nghttp2_mem *)" in summary model. |
+| Dubious signature "(nghttp2_hd_deflater *,size_t)" in summary model. |
+| Dubious signature "(nghttp2_hd_deflater *,size_t,nghttp2_mem *)" in summary model. |
+| Dubious signature "(nghttp2_hd_deflater *,uint8_t *,size_t,const nghttp2_nv *,size_t)" in summary model. |
+| Dubious signature "(nghttp2_hd_entry *,nghttp2_hd_nv *)" in summary model. |
+| Dubious signature "(nghttp2_hd_huff_decode_context *,nghttp2_buf *,const uint8_t *,size_t,int)" in summary model. |
+| Dubious signature "(nghttp2_hd_inflater *)" in summary model. |
+| Dubious signature "(nghttp2_hd_inflater **,nghttp2_mem *)" in summary model. |
+| Dubious signature "(nghttp2_hd_inflater *,nghttp2_hd_nv *,int *,const uint8_t *,size_t,int)" in summary model. |
+| Dubious signature "(nghttp2_hd_inflater *,nghttp2_mem *)" in summary model. |
+| Dubious signature "(nghttp2_hd_inflater *,nghttp2_nv *,int *,const uint8_t *,size_t,int)" in summary model. |
+| Dubious signature "(nghttp2_hd_inflater *,nghttp2_nv *,int *,uint8_t *,size_t,int)" in summary model. |
+| Dubious signature "(nghttp2_hd_inflater *,size_t)" in summary model. |
+| Dubious signature "(nghttp2_headers *,const uint8_t *)" in summary model. |
+| Dubious signature "(nghttp2_headers *,uint8_t,int32_t,nghttp2_headers_category,const nghttp2_priority_spec *,nghttp2_nv *,size_t)" in summary model. |
+| Dubious signature "(nghttp2_map *,nghttp2_map_key_type,void *)" in summary model. |
+| Dubious signature "(nghttp2_map *,nghttp2_mem *)" in summary model. |
+| Dubious signature "(nghttp2_nv **,const nghttp2_nv *,size_t,nghttp2_mem *)" in summary model. |
+| Dubious signature "(nghttp2_option **)" in summary model. |
+| Dubious signature "(nghttp2_option *,int)" in summary model. |
+| Dubious signature "(nghttp2_option *,size_t)" in summary model. |
+| Dubious signature "(nghttp2_option *,uint8_t)" in summary model. |
+| Dubious signature "(nghttp2_option *,uint32_t)" in summary model. |
+| Dubious signature "(nghttp2_option *,uint64_t,uint64_t)" in summary model. |
+| Dubious signature "(nghttp2_outbound_queue *)" in summary model. |
+| Dubious signature "(nghttp2_outbound_queue *,nghttp2_outbound_item *)" in summary model. |
+| Dubious signature "(nghttp2_ping *,const uint8_t *)" in summary model. |
+| Dubious signature "(nghttp2_ping *,uint8_t,const uint8_t *)" in summary model. |
+| Dubious signature "(nghttp2_pq *)" in summary model. |
+| Dubious signature "(nghttp2_pq *,nghttp2_less,nghttp2_mem *)" in summary model. |
+| Dubious signature "(nghttp2_pq *,nghttp2_pq_entry *)" in summary model. |
+| Dubious signature "(nghttp2_priority *,const uint8_t *)" in summary model. |
+| Dubious signature "(nghttp2_priority *,int32_t,const nghttp2_priority_spec *)" in summary model. |
+| Dubious signature "(nghttp2_priority_spec *,const uint8_t *)" in summary model. |
+| Dubious signature "(nghttp2_priority_spec *,int32_t,int32_t,int)" in summary model. |
+| Dubious signature "(nghttp2_push_promise *,uint8_t,int32_t,int32_t,nghttp2_nv *,size_t)" in summary model. |
+| Dubious signature "(nghttp2_queue *)" in summary model. |
+| Dubious signature "(nghttp2_queue *,void *)" in summary model. |
+| Dubious signature "(nghttp2_ratelim *,uint64_t)" in summary model. |
+| Dubious signature "(nghttp2_ratelim *,uint64_t,uint64_t)" in summary model. |
+| Dubious signature "(nghttp2_rcbuf *)" in summary model. |
+| Dubious signature "(nghttp2_rcbuf **,const uint8_t *,size_t,nghttp2_mem *)" in summary model. |
+| Dubious signature "(nghttp2_rcbuf **,size_t,nghttp2_mem *)" in summary model. |
+| Dubious signature "(nghttp2_rst_stream *,int32_t,uint32_t)" in summary model. |
+| Dubious signature "(nghttp2_session *)" in summary model. |
+| Dubious signature "(nghttp2_session **,const nghttp2_session_callbacks *,void *)" in summary model. |
+| Dubious signature "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *)" in summary model. |
+| Dubious signature "(nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *)" in summary model. |
+| Dubious signature "(nghttp2_session *,const nghttp2_priority_spec *,const nghttp2_nv *,size_t,const nghttp2_data_provider2 *,void *)" in summary model. |
+| Dubious signature "(nghttp2_session *,const nghttp2_priority_spec *,const nghttp2_nv *,size_t,const nghttp2_data_provider *,void *)" in summary model. |
+| Dubious signature "(nghttp2_session *,const uint8_t *,size_t)" in summary model. |
+| Dubious signature "(nghttp2_session *,const uint8_t *,size_t,int,void *)" in summary model. |
+| Dubious signature "(nghttp2_session *,const uint8_t *,size_t,void *)" in summary model. |
+| Dubious signature "(nghttp2_session *,int32_t)" in summary model. |
+| Dubious signature "(nghttp2_session *,int32_t,const nghttp2_extpri *,int)" in summary model. |
+| Dubious signature "(nghttp2_session *,int32_t,const nghttp2_nv *,size_t)" in summary model. |
+| Dubious signature "(nghttp2_session *,int32_t,const nghttp2_nv *,size_t,const nghttp2_data_provider2 *)" in summary model. |
+| Dubious signature "(nghttp2_session *,int32_t,const nghttp2_nv *,size_t,const nghttp2_data_provider *)" in summary model. |
+| Dubious signature "(nghttp2_session *,int32_t,size_t)" in summary model. |
+| Dubious signature "(nghttp2_session *,int32_t,uint8_t,nghttp2_stream_state,void *)" in summary model. |
+| Dubious signature "(nghttp2_session *,nghttp2_bufs *,size_t,nghttp2_frame *,nghttp2_data_aux_data *,nghttp2_stream *)" in summary model. |
+| Dubious signature "(nghttp2_session *,nghttp2_extpri *,int32_t)" in summary model. |
+| Dubious signature "(nghttp2_session *,nghttp2_frame *)" in summary model. |
+| Dubious signature "(nghttp2_session *,nghttp2_outbound_item *)" in summary model. |
+| Dubious signature "(nghttp2_session *,nghttp2_settings_entry *,size_t)" in summary model. |
+| Dubious signature "(nghttp2_session *,nghttp2_settings_id)" in summary model. |
+| Dubious signature "(nghttp2_session *,nghttp2_stream *)" in summary model. |
+| Dubious signature "(nghttp2_session *,nghttp2_stream *,nghttp2_frame *,nghttp2_hd_nv *,int)" in summary model. |
+| Dubious signature "(nghttp2_session *,nghttp2_stream *,size_t,int)" in summary model. |
+| Dubious signature "(nghttp2_session *,size_t)" in summary model. |
+| Dubious signature "(nghttp2_session *,uint8_t,const nghttp2_settings_entry *,size_t)" in summary model. |
+| Dubious signature "(nghttp2_session *,uint8_t,int32_t,const nghttp2_data_provider2 *)" in summary model. |
+| Dubious signature "(nghttp2_session *,uint8_t,int32_t,const nghttp2_data_provider *)" in summary model. |
+| Dubious signature "(nghttp2_session *,uint8_t,int32_t,const nghttp2_data_provider_wrap *)" in summary model. |
+| Dubious signature "(nghttp2_session *,uint8_t,int32_t,const nghttp2_nv *,size_t,void *)" in summary model. |
+| Dubious signature "(nghttp2_session *,uint8_t,int32_t,const nghttp2_priority_spec *,const nghttp2_nv *,size_t,void *)" in summary model. |
+| Dubious signature "(nghttp2_session *,uint8_t,int32_t,int32_t)" in summary model. |
+| Dubious signature "(nghttp2_session *,void *)" in summary model. |
+| Dubious signature "(nghttp2_session_callbacks **)" in summary model. |
+| Dubious signature "(nghttp2_session_callbacks *,nghttp2_before_frame_send_callback)" in summary model. |
+| Dubious signature "(nghttp2_session_callbacks *,nghttp2_data_source_read_length_callback2)" in summary model. |
+| Dubious signature "(nghttp2_session_callbacks *,nghttp2_data_source_read_length_callback)" in summary model. |
+| Dubious signature "(nghttp2_session_callbacks *,nghttp2_error_callback2)" in summary model. |
+| Dubious signature "(nghttp2_session_callbacks *,nghttp2_error_callback)" in summary model. |
+| Dubious signature "(nghttp2_session_callbacks *,nghttp2_on_begin_frame_callback)" in summary model. |
+| Dubious signature "(nghttp2_session_callbacks *,nghttp2_on_begin_headers_callback)" in summary model. |
+| Dubious signature "(nghttp2_session_callbacks *,nghttp2_on_data_chunk_recv_callback)" in summary model. |
+| Dubious signature "(nghttp2_session_callbacks *,nghttp2_on_extension_chunk_recv_callback)" in summary model. |
+| Dubious signature "(nghttp2_session_callbacks *,nghttp2_on_frame_not_send_callback)" in summary model. |
+| Dubious signature "(nghttp2_session_callbacks *,nghttp2_on_frame_recv_callback)" in summary model. |
+| Dubious signature "(nghttp2_session_callbacks *,nghttp2_on_frame_send_callback)" in summary model. |
+| Dubious signature "(nghttp2_session_callbacks *,nghttp2_on_header_callback2)" in summary model. |
+| Dubious signature "(nghttp2_session_callbacks *,nghttp2_on_header_callback)" in summary model. |
+| Dubious signature "(nghttp2_session_callbacks *,nghttp2_on_invalid_frame_recv_callback)" in summary model. |
+| Dubious signature "(nghttp2_session_callbacks *,nghttp2_on_invalid_header_callback2)" in summary model. |
+| Dubious signature "(nghttp2_session_callbacks *,nghttp2_on_invalid_header_callback)" in summary model. |
+| Dubious signature "(nghttp2_session_callbacks *,nghttp2_on_stream_close_callback)" in summary model. |
+| Dubious signature "(nghttp2_session_callbacks *,nghttp2_pack_extension_callback2)" in summary model. |
+| Dubious signature "(nghttp2_session_callbacks *,nghttp2_pack_extension_callback)" in summary model. |
+| Dubious signature "(nghttp2_session_callbacks *,nghttp2_recv_callback2)" in summary model. |
+| Dubious signature "(nghttp2_session_callbacks *,nghttp2_recv_callback)" in summary model. |
+| Dubious signature "(nghttp2_session_callbacks *,nghttp2_select_padding_callback2)" in summary model. |
+| Dubious signature "(nghttp2_session_callbacks *,nghttp2_select_padding_callback)" in summary model. |
+| Dubious signature "(nghttp2_session_callbacks *,nghttp2_send_callback2)" in summary model. |
+| Dubious signature "(nghttp2_session_callbacks *,nghttp2_send_callback)" in summary model. |
+| Dubious signature "(nghttp2_session_callbacks *,nghttp2_send_data_callback)" in summary model. |
+| Dubious signature "(nghttp2_session_callbacks *,nghttp2_unpack_extension_callback)" in summary model. |
+| Dubious signature "(nghttp2_settings *,nghttp2_settings_entry *,size_t)" in summary model. |
+| Dubious signature "(nghttp2_settings *,uint8_t,nghttp2_settings_entry *,size_t)" in summary model. |
+| Dubious signature "(nghttp2_settings_entry **,size_t *,const uint8_t *,size_t,nghttp2_mem *)" in summary model. |
+| Dubious signature "(nghttp2_stream *)" in summary model. |
+| Dubious signature "(nghttp2_stream *,int32_t,int32_t)" in summary model. |
+| Dubious signature "(nghttp2_stream *,int32_t,uint8_t,nghttp2_stream_state,int32_t,int32_t,void *)" in summary model. |
+| Dubious signature "(nghttp2_stream *,nghttp2_outbound_item *)" in summary model. |
+| Dubious signature "(nghttp2_stream *,nghttp2_shut_flag)" in summary model. |
+| Dubious signature "(nghttp2_stream *,size_t)" in summary model. |
+| Dubious signature "(nghttp2_stream *,uint8_t)" in summary model. |
+| Dubious signature "(nghttp2_window_update *,uint8_t,int32_t,int32_t)" in summary model. |
+| Dubious signature "(pgrs_dir *,curl_off_t,curltime)" in summary model. |
| Dubious signature "(piterator *)" in summary model. |
| Dubious signature "(plink *)" in summary model. |
| Dubious signature "(plink **,config *)" in summary model. |
| Dubious signature "(plink **,plink *)" in summary model. |
+| Dubious signature "(pollfd[],unsigned int,timediff_t)" in summary model. |
| Dubious signature "(pqueue *)" in summary model. |
| Dubious signature "(pqueue *,pitem *)" in summary model. |
| Dubious signature "(pqueue *,unsigned char *)" in summary model. |
+| Dubious signature "(pthread_t *)" in summary model. |
+| Dubious signature "(pthread_t **)" in summary model. |
| Dubious signature "(regex_t *,const char *,int)" in summary model. |
| Dubious signature "(regex_t *,const char *,size_t,regmatch_t[],int)" in summary model. |
| Dubious signature "(rule *,int)" in summary model. |
+| Dubious signature "(scan_ctx *,const char *,const char *,const char *)" in summary model. |
+| Dubious signature "(sfparse_parser *,const uint8_t *,size_t)" in summary model. |
+| Dubious signature "(sfparse_parser *,sfparse_value *)" in summary model. |
+| Dubious signature "(sfparse_parser *,sfparse_vec *,sfparse_value *)" in summary model. |
+| Dubious signature "(sfparse_vec *,const sfparse_vec *)" in summary model. |
| Dubious signature "(size_t *,const char *)" in summary model. |
| Dubious signature "(size_t *,size_t,unsigned char *,unsigned char **,int *,size_t,size_t,OSSL_LIB_CTX *)" in summary model. |
| Dubious signature "(size_t *,size_t,unsigned char *,unsigned char **,int *,size_t,size_t,int,OSSL_LIB_CTX *)" in summary model. |
@@ -3500,9 +4197,18 @@
| Dubious signature "(size_t,SSL_CTX *)" in summary model. |
| Dubious signature "(size_t,const QUIC_PKT_HDR *)" in summary model. |
| Dubious signature "(size_t,const char **,size_t *)" in summary model. |
+| Dubious signature "(size_t,const char[],size_t *,uint32_t[])" in summary model. |
+| Dubious signature "(size_t,const uint8_t[],size_t *,uint8_t[])" in summary model. |
+| Dubious signature "(size_t,const uint32_t[],size_t *,char[])" in summary model. |
+| Dubious signature "(size_t,size_t,Curl_ssl_scache **)" in summary model. |
+| Dubious signature "(size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *)" in summary model. |
+| Dubious signature "(size_t,size_t,size_t,const uint8_t *,size_t *,float *)" in summary model. |
| Dubious signature "(size_t,size_t,void **,const char *,int)" in summary model. |
+| Dubious signature "(size_t,uint32_t *,uint8_t *)" in summary model. |
| Dubious signature "(size_type,const T &)" in summary model. |
| Dubious signature "(size_type,const T &,const Allocator &)" in summary model. |
+| Dubious signature "(slist_wc **,const char *)" in summary model. |
+| Dubious signature "(slist_wc *,const char *)" in summary model. |
| Dubious signature "(sqlite3 *)" in summary model. |
| Dubious signature "(sqlite3 *,..(*)(..),void *)" in summary model. |
| Dubious signature "(sqlite3 *,..(*)(..),void *,..(*)(..))" in summary model. |
@@ -3593,6 +4299,7 @@
| Dubious signature "(sqlite3expert *,char **)" in summary model. |
| Dubious signature "(sqlite3expert *,const char *,char **)" in summary model. |
| Dubious signature "(sqlite3expert *,int,int)" in summary model. |
+| Dubious signature "(ssl_peer *,Curl_cfilter *,const char *,int)" in summary model. |
| Dubious signature "(stack_st_ASN1_UTF8STRING *)" in summary model. |
| Dubious signature "(stack_st_ASN1_UTF8STRING *,const char *,int)" in summary model. |
| Dubious signature "(stack_st_OPENSSL_STRING *,const OSSL_PARAM *)" in summary model. |
@@ -3639,15 +4346,37 @@
| Dubious signature "(stack_st_X509_OBJECT *,X509_OBJECT *)" in summary model. |
| Dubious signature "(stack_st_X509_POLICY_NODE *,const ASN1_OBJECT *)" in summary model. |
| Dubious signature "(state *,config *)" in summary model. |
+| Dubious signature "(store_netrc *)" in summary model. |
+| Dubious signature "(store_netrc *,const char *,char **,char **,char *)" in summary model. |
+| Dubious signature "(string_buf *,libssh2_uint64_t *)" in summary model. |
+| Dubious signature "(string_buf *,uint32_t *)" in summary model. |
+| Dubious signature "(string_buf *,unsigned char *)" in summary model. |
+| Dubious signature "(string_buf *,unsigned char **,size_t *)" in summary model. |
| Dubious signature "(symbol *,lemon *)" in summary model. |
+| Dubious signature "(timeval *)" in summary model. |
+| Dubious signature "(timeval *,timediff_t)" in summary model. |
| Dubious signature "(tm *,const ASN1_TIME *)" in summary model. |
| Dubious signature "(tm *,const ASN1_UTCTIME *)" in summary model. |
| Dubious signature "(tm *,int,long)" in summary model. |
| Dubious signature "(u64[2],const u128[16],const u8 *,size_t)" in summary model. |
+| Dubious signature "(uLong,const Bytef *,uInt)" in summary model. |
+| Dubious signature "(uLong,const Bytef *,z_size_t)" in summary model. |
+| Dubious signature "(uLong,unsigned long,const Bytef *,const unsigned char *,uInt)" in summary model. |
+| Dubious signature "(uLong,unsigned long,const Bytef *,const unsigned char *,z_size_t)" in summary model. |
+| Dubious signature "(u_char[16],unsigned char[16],const u_char *,const unsigned char *,size_t,const u_char[32],const unsigned char[32])" in summary model. |
+| Dubious signature "(ucs4_t *,const uint8_t *,size_t)" in summary model. |
+| Dubious signature "(ucs4_t,ucs4_t *)" in summary model. |
+| Dubious signature "(ucs4_with_ccc *,size_t,ucs4_with_ccc *)" in summary model. |
+| Dubious signature "(uint8_t *,const nghttp2_frame_hd *)" in summary model. |
+| Dubious signature "(uint8_t *,const nghttp2_priority_spec *)" in summary model. |
+| Dubious signature "(uint8_t *,const nghttp2_settings_entry *,size_t)" in summary model. |
+| Dubious signature "(uint8_t *,const uint8_t *,int,const BrotliTransforms *,int)" in summary model. |
| Dubious signature "(uint8_t *,const uint8_t *,size_t,const uint8_t[32],const uint8_t[32],const uint8_t,const uint8_t,const uint8_t,const uint8_t *,size_t,OSSL_LIB_CTX *,const char *)" in summary model. |
+| Dubious signature "(uint8_t *,const void *,size_t)" in summary model. |
| Dubious signature "(uint8_t *,size_t)" in summary model. |
| Dubious signature "(uint8_t *,size_t,ML_KEM_KEY *)" in summary model. |
| Dubious signature "(uint8_t *,size_t,const ML_KEM_KEY *)" in summary model. |
+| Dubious signature "(uint8_t *,size_t,const nghttp2_settings_entry *,size_t)" in summary model. |
| Dubious signature "(uint8_t *,size_t,const uint8_t *,size_t,const ML_KEM_KEY *)" in summary model. |
| Dubious signature "(uint8_t *,size_t,uint8_t *,size_t,const ML_KEM_KEY *)" in summary model. |
| Dubious signature "(uint8_t *,size_t,uint8_t *,size_t,const uint8_t *,size_t,const ML_KEM_KEY *)" in summary model. |
@@ -3662,6 +4391,8 @@
| Dubious signature "(uint16_t **,size_t *,uint16_t **,size_t *,size_t **,size_t *,int *,size_t)" in summary model. |
| Dubious signature "(uint16_t **,size_t *,uint16_t **,size_t *,size_t **,size_t *,void *)" in summary model. |
| Dubious signature "(uint32_t *,SSL_CONNECTION *,int)" in summary model. |
+| Dubious signature "(uint32_t *,const IDNAMap *)" in summary model. |
+| Dubious signature "(uint32_t *,size_t *,int *,uint32_t,size_t,uint8_t *,uint8_t *,size_t)" in summary model. |
| Dubious signature "(uint32_t,uint32_t *,uint32_t *)" in summary model. |
| Dubious signature "(uint32_t,uint32_t,uint32_t *,int32_t *)" in summary model. |
| Dubious signature "(uint64_t *,const ASN1_INTEGER *)" in summary model. |
@@ -3670,13 +4401,21 @@
| Dubious signature "(uint64_t *,uint64_t,CRYPTO_RWLOCK *)" in summary model. |
| Dubious signature "(uint64_t *,uint64_t,uint64_t *,CRYPTO_RWLOCK *)" in summary model. |
| Dubious signature "(uint64_t,uint64_t *)" in summary model. |
+| Dubious signature "(uninorm_t,const uint32_t *,size_t,uint32_t *,uint32_t *__restrict__,size_t *)" in summary model. |
| Dubious signature "(unsigned char *)" in summary model. |
| Dubious signature "(unsigned char **)" in summary model. |
| Dubious signature "(unsigned char **,X509_ALGOR *,ASN1_OCTET_STRING *,int)" in summary model. |
+| Dubious signature "(unsigned char **,const char *,size_t)" in summary model. |
+| Dubious signature "(unsigned char **,const unsigned char *,size_t)" in summary model. |
| Dubious signature "(unsigned char **,int,int,int,int)" in summary model. |
+| Dubious signature "(unsigned char **,libssh2_uint64_t)" in summary model. |
| Dubious signature "(unsigned char **,long *,char **,const char *,BIO *,pem_password_cb *,void *)" in summary model. |
| Dubious signature "(unsigned char **,long)" in summary model. |
+| Dubious signature "(unsigned char **,size_t *)" in summary model. |
| Dubious signature "(unsigned char **,size_t *,const EC_POINT *,const EC_KEY *)" in summary model. |
+| Dubious signature "(unsigned char **,size_t *,unsigned char **,unsigned int *)" in summary model. |
+| Dubious signature "(unsigned char **,uint32_t)" in summary model. |
+| Dubious signature "(unsigned char **,unsigned char *,const unsigned char *,unsigned int)" in summary model. |
| Dubious signature "(unsigned char **,unsigned char *,const unsigned char *,unsigned int,const unsigned char *,unsigned int)" in summary model. |
| Dubious signature "(unsigned char *,BLAKE2B_CTX *)" in summary model. |
| Dubious signature "(unsigned char *,BLAKE2S_CTX *)" in summary model. |
@@ -3692,6 +4431,7 @@
| Dubious signature "(unsigned char *,WHIRLPOOL_CTX *)" in summary model. |
| Dubious signature "(unsigned char *,const BIGNUM *,DH *)" in summary model. |
| Dubious signature "(unsigned char *,const char *)" in summary model. |
+| Dubious signature "(unsigned char *,const unsigned char *,const unsigned char *,size_t)" in summary model. |
| Dubious signature "(unsigned char *,const unsigned char *,int)" in summary model. |
| Dubious signature "(unsigned char *,const unsigned char *,size_t)" in summary model. |
| Dubious signature "(unsigned char *,int)" in summary model. |
@@ -3709,7 +4449,14 @@
| Dubious signature "(unsigned char *,long,int,OSSL_CALLBACK *,void *,OSSL_PASSPHRASE_CALLBACK *,void *,OSSL_LIB_CTX *,const char *)" in summary model. |
| Dubious signature "(unsigned char *,size_t *,size_t)" in summary model. |
| Dubious signature "(unsigned char *,size_t *,size_t,const unsigned char **,size_t *)" in summary model. |
+| Dubious signature "(unsigned char *,size_t,const unsigned char *,size_t)" in summary model. |
+| Dubious signature "(unsigned char *,size_t,int,const char *,curl_off_t,size_t,Curl_ssl_session **)" in summary model. |
+| Dubious signature "(unsigned char *,size_t,int,const char *,curl_off_t,size_t,unsigned char *,size_t,Curl_ssl_session **)" in summary model. |
+| Dubious signature "(unsigned char *,size_t,scan_ctx *)" in summary model. |
+| Dubious signature "(unsigned char *,uint32_t)" in summary model. |
| Dubious signature "(unsigned char *,uint64_t,int)" in summary model. |
+| Dubious signature "(unsigned char *,unsigned char *,ntlmdata *,unsigned char **,unsigned int *)" in summary model. |
+| Dubious signature "(unsigned char *,unsigned char *,unsigned char *,unsigned char *)" in summary model. |
| Dubious signature "(unsigned char *,void *)" in summary model. |
| Dubious signature "(unsigned char)" in summary model. |
| Dubious signature "(unsigned char,const char *,ct_log_entry_type_t,uint64_t,const char *,const char *)" in summary model. |
@@ -3717,6 +4464,7 @@
| Dubious signature "(unsigned int *,const BF_KEY *)" in summary model. |
| Dubious signature "(unsigned int *,const CAST_KEY *)" in summary model. |
| Dubious signature "(unsigned int)" in summary model. |
+| Dubious signature "(unsigned int,char *,size_t *)" in summary model. |
| Dubious signature "(unsigned int,int,int)" in summary model. |
| Dubious signature "(unsigned int[5],const unsigned char[64])" in summary model. |
| Dubious signature "(unsigned long *,IDEA_KEY_SCHEDULE *)" in summary model. |
@@ -3738,6 +4486,117 @@
| Dubious signature "(unsigned long[8],const unsigned long[8],const unsigned long[8],const unsigned long[8],unsigned long,const unsigned long[8])" in summary model. |
| Dubious signature "(unsigned long[16],const unsigned long[16],const unsigned long[16],const unsigned long[16],const unsigned long[16],unsigned long)" in summary model. |
| Dubious signature "(unsigned short,int)" in summary model. |
+| Dubious signature "(uv__io_t *,uv__io_cb,int)" in summary model. |
+| Dubious signature "(uv_async_t *)" in summary model. |
+| Dubious signature "(uv_check_t *,uv_check_cb)" in summary model. |
+| Dubious signature "(uv_connect_t *,uv_pipe_t *,const char *,size_t,unsigned int,uv_connect_cb)" in summary model. |
+| Dubious signature "(uv_connect_t *,uv_pipe_t *,const char *,uv_connect_cb)" in summary model. |
+| Dubious signature "(uv_connect_t *,uv_tcp_t *,const sockaddr *,unsigned int,uv_connect_cb)" in summary model. |
+| Dubious signature "(uv_connect_t *,uv_tcp_t *,const sockaddr *,uv_connect_cb)" in summary model. |
+| Dubious signature "(uv_cpu_info_t **,int *)" in summary model. |
+| Dubious signature "(uv_env_item_t **,int *)" in summary model. |
+| Dubious signature "(uv_env_item_t *,int)" in summary model. |
+| Dubious signature "(uv_fs_event_t *,char *,size_t *)" in summary model. |
+| Dubious signature "(uv_fs_event_t *,uv_fs_event_cb,const char *,unsigned int)" in summary model. |
+| Dubious signature "(uv_fs_poll_t *)" in summary model. |
+| Dubious signature "(uv_fs_poll_t *,char *,size_t *)" in summary model. |
+| Dubious signature "(uv_fs_poll_t *,uv_fs_poll_cb,const char *,unsigned int)" in summary model. |
+| Dubious signature "(uv_fs_t *)" in summary model. |
+| Dubious signature "(uv_fs_t *,uv_dirent_t *)" in summary model. |
+| Dubious signature "(uv_handle_t *)" in summary model. |
+| Dubious signature "(uv_handle_t *,int *)" in summary model. |
+| Dubious signature "(uv_handle_t *,int,int *)" in summary model. |
+| Dubious signature "(uv_handle_t *,uv_close_cb)" in summary model. |
+| Dubious signature "(uv_handle_t *,void *)" in summary model. |
+| Dubious signature "(uv_idle_t *,uv_idle_cb)" in summary model. |
+| Dubious signature "(uv_interface_address_t **,int *)" in summary model. |
+| Dubious signature "(uv_key_t *)" in summary model. |
+| Dubious signature "(uv_key_t *,void *)" in summary model. |
+| Dubious signature "(uv_lib_t *,const char *,void **)" in summary model. |
+| Dubious signature "(uv_loop_t *)" in summary model. |
+| Dubious signature "(uv_loop_t *,FILE *)" in summary model. |
+| Dubious signature "(uv_loop_t *,uv__io_t *)" in summary model. |
+| Dubious signature "(uv_loop_t *,uv__io_t *,unsigned int)" in summary model. |
+| Dubious signature "(uv_loop_t *,uv__io_t *,uv__io_cb,int,unsigned int)" in summary model. |
+| Dubious signature "(uv_loop_t *,uv__work *,uv__work_kind,..(*)(..),..(*)(..))" in summary model. |
+| Dubious signature "(uv_loop_t *,uv_async_t *,uv_async_cb)" in summary model. |
+| Dubious signature "(uv_loop_t *,uv_check_t *)" in summary model. |
+| Dubious signature "(uv_loop_t *,uv_fs_event_t *)" in summary model. |
+| Dubious signature "(uv_loop_t *,uv_fs_poll_t *)" in summary model. |
+| Dubious signature "(uv_loop_t *,uv_fs_t *)" in summary model. |
+| Dubious signature "(uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb)" in summary model. |
+| Dubious signature "(uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb)" in summary model. |
+| Dubious signature "(uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb)" in summary model. |
+| Dubious signature "(uv_loop_t *,uv_fs_t *,const char *,int,int,uv_fs_cb)" in summary model. |
+| Dubious signature "(uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb)" in summary model. |
+| Dubious signature "(uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb)" in summary model. |
+| Dubious signature "(uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb)" in summary model. |
+| Dubious signature "(uv_loop_t *,uv_fs_t *,int)" in summary model. |
+| Dubious signature "(uv_loop_t *,uv_fs_t *,int,int)" in summary model. |
+| Dubious signature "(uv_loop_t *,uv_fs_t *,uint32_t)" in summary model. |
+| Dubious signature "(uv_loop_t *,uv_fs_t *,uv_dir_t *,uv_fs_cb)" in summary model. |
+| Dubious signature "(uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb)" in summary model. |
+| Dubious signature "(uv_loop_t *,uv_fs_t *,uv_file,double,double,uv_fs_cb)" in summary model. |
+| Dubious signature "(uv_loop_t *,uv_fs_t *,uv_file,int64_t,uv_fs_cb)" in summary model. |
+| Dubious signature "(uv_loop_t *,uv_fs_t *,uv_file,int,uv_fs_cb)" in summary model. |
+| Dubious signature "(uv_loop_t *,uv_fs_t *,uv_file,uv_file,int64_t,size_t,uv_fs_cb)" in summary model. |
+| Dubious signature "(uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb)" in summary model. |
+| Dubious signature "(uv_loop_t *,uv_fs_t *,uv_file,uv_uid_t,uv_gid_t,uv_fs_cb)" in summary model. |
+| Dubious signature "(uv_loop_t *,uv_getaddrinfo_t *,uv_getaddrinfo_cb,const char *,const char *,const addrinfo *)" in summary model. |
+| Dubious signature "(uv_loop_t *,uv_getnameinfo_t *,uv_getnameinfo_cb,const sockaddr *,int)" in summary model. |
+| Dubious signature "(uv_loop_t *,uv_idle_t *)" in summary model. |
+| Dubious signature "(uv_loop_t *,uv_loop_option,va_list)" in summary model. |
+| Dubious signature "(uv_loop_t *,uv_pipe_t *,int)" in summary model. |
+| Dubious signature "(uv_loop_t *,uv_poll_t *,int)" in summary model. |
+| Dubious signature "(uv_loop_t *,uv_poll_t *,uv_os_sock_t)" in summary model. |
+| Dubious signature "(uv_loop_t *,uv_prepare_t *)" in summary model. |
+| Dubious signature "(uv_loop_t *,uv_process_t *,const uv_process_options_t *)" in summary model. |
+| Dubious signature "(uv_loop_t *,uv_random_t *,void *,size_t,unsigned int,uv_random_cb)" in summary model. |
+| Dubious signature "(uv_loop_t *,uv_signal_t *)" in summary model. |
+| Dubious signature "(uv_loop_t *,uv_stream_t *,uv_handle_type)" in summary model. |
+| Dubious signature "(uv_loop_t *,uv_tcp_t *)" in summary model. |
+| Dubious signature "(uv_loop_t *,uv_tcp_t *,unsigned int)" in summary model. |
+| Dubious signature "(uv_loop_t *,uv_timer_t *)" in summary model. |
+| Dubious signature "(uv_loop_t *,uv_tty_t *,int,uv_file,int)" in summary model. |
+| Dubious signature "(uv_loop_t *,uv_udp_t *)" in summary model. |
+| Dubious signature "(uv_loop_t *,uv_udp_t *,unsigned int)" in summary model. |
+| Dubious signature "(uv_loop_t *,uv_udp_t *,unsigned int,int)" in summary model. |
+| Dubious signature "(uv_loop_t *,uv_work_t *,uv_work_cb,uv_after_work_cb)" in summary model. |
+| Dubious signature "(uv_loop_t *,void *)" in summary model. |
+| Dubious signature "(uv_pipe_t *)" in summary model. |
+| Dubious signature "(uv_pipe_t *,const char *)" in summary model. |
+| Dubious signature "(uv_pipe_t *,const char *,size_t,unsigned int)" in summary model. |
+| Dubious signature "(uv_pipe_t *,int,uv_connection_cb)" in summary model. |
+| Dubious signature "(uv_pipe_t *,uv_file)" in summary model. |
+| Dubious signature "(uv_poll_t *,int,uv_poll_cb)" in summary model. |
+| Dubious signature "(uv_prepare_t *,uv_prepare_cb)" in summary model. |
+| Dubious signature "(uv_req_t *,void *)" in summary model. |
+| Dubious signature "(uv_sem_t *)" in summary model. |
+| Dubious signature "(uv_shutdown_t *,uv_stream_t *,uv_shutdown_cb)" in summary model. |
+| Dubious signature "(uv_signal_t *,uv_signal_cb,int)" in summary model. |
+| Dubious signature "(uv_stream_t *,int,int)" in summary model. |
+| Dubious signature "(uv_stream_t *,int,uv_connection_cb)" in summary model. |
+| Dubious signature "(uv_stream_t *,uv_alloc_cb,uv_read_cb)" in summary model. |
+| Dubious signature "(uv_stream_t *,uv_stream_t *)" in summary model. |
+| Dubious signature "(uv_tcp_t *,int,uv_connection_cb)" in summary model. |
+| Dubious signature "(uv_tcp_t *,uv_close_cb)" in summary model. |
+| Dubious signature "(uv_tcp_t *,uv_os_sock_t)" in summary model. |
+| Dubious signature "(uv_thread_t *)" in summary model. |
+| Dubious signature "(uv_thread_t *,char *,char *,size_t)" in summary model. |
+| Dubious signature "(uv_thread_t *,char *,size_t)" in summary model. |
+| Dubious signature "(uv_timer_t *,uint64_t)" in summary model. |
+| Dubious signature "(uv_timer_t *,uv_timer_cb,uint64_t,uint64_t)" in summary model. |
+| Dubious signature "(uv_tty_t *,uv_tty_mode_t)" in summary model. |
+| Dubious signature "(uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,unsigned int,uv_udp_send_cb)" in summary model. |
+| Dubious signature "(uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,uv_udp_send_cb)" in summary model. |
+| Dubious signature "(uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *)" in summary model. |
+| Dubious signature "(uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,unsigned int)" in summary model. |
+| Dubious signature "(uv_udp_t *,unsigned int,uv_buf_t *[],unsigned int[],sockaddr *[])" in summary model. |
+| Dubious signature "(uv_udp_t *,unsigned int,uv_buf_t *[],unsigned int[],sockaddr *[],unsigned int)" in summary model. |
+| Dubious signature "(uv_udp_t *,uv_alloc_cb,uv_udp_recv_cb)" in summary model. |
+| Dubious signature "(uv_udp_t *,uv_os_sock_t)" in summary model. |
+| Dubious signature "(uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_stream_t *,uv_write_cb)" in summary model. |
+| Dubious signature "(uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_write_cb)" in summary model. |
| Dubious signature "(vector &&)" in summary model. |
| Dubious signature "(vector &&,const Allocator &)" in summary model. |
| Dubious signature "(void *)" in summary model. |
@@ -3751,12 +4610,15 @@
| Dubious signature "(void *,const char *,int)" in summary model. |
| Dubious signature "(void *,const unsigned char *,size_t,const unsigned char *,size_t,const OSSL_PARAM[])" in summary model. |
| Dubious signature "(void *,const unsigned char *,unsigned char *,const unsigned char *,size_t,block128_f)" in summary model. |
+| Dubious signature "(void *,curl_off_t,curl_off_t,curl_off_t,curl_off_t)" in summary model. |
+| Dubious signature "(void *,curl_off_t,int)" in summary model. |
| Dubious signature "(void *,int)" in summary model. |
| Dubious signature "(void *,int,const OSSL_PARAM[])" in summary model. |
| Dubious signature "(void *,int,size_t,size_t,size_t,uint64_t,const PROV_CIPHER_HW *)" in summary model. |
| Dubious signature "(void *,size_t)" in summary model. |
| Dubious signature "(void *,size_t,const EC_POINT *,const EC_KEY *,..(*)(..))" in summary model. |
| Dubious signature "(void *,size_t,const char *,int)" in summary model. |
+| Dubious signature "(void *,size_t,size_t)" in summary model. |
| Dubious signature "(void *,size_t,size_t,const char *,int)" in summary model. |
| Dubious signature "(void *,size_t,size_t,size_t,unsigned int,uint64_t,const PROV_CIPHER_HW *,void *)" in summary model. |
| Dubious signature "(void *,sqlite3 *,int,const char *)" in summary model. |
@@ -3771,6 +4633,11 @@
| Dubious signature "(wchar_t *)" in summary model. |
| Dubious signature "(wchar_t, const CStringT &)" in summary model. |
| Dubious signature "(wchar_t,const CStringT &)" in summary model. |
+| Dubious signature "(z_streamp,Bytef *,uInt *)" in summary model. |
+| Dubious signature "(z_streamp,const Bytef *,uInt)" in summary model. |
+| Dubious signature "(z_streamp,int *)" in summary model. |
+| Dubious signature "(z_streamp,unsigned int *,int *)" in summary model. |
+| Dubious signature "(z_streamp,unsigned int)" in summary model. |
| Unrecognized input specification "Field[****hEvent]" in summary model. |
| Unrecognized input specification "Field[***hEvent]" in summary model. |
| Unrecognized output specification "Field[****hEvent]" in summary model. |
diff --git a/cpp/ql/test/library-tests/dataflow/taint-tests/test_mad-signatures.expected b/cpp/ql/test/library-tests/dataflow/taint-tests/test_mad-signatures.expected
index 7a5791c27569..5311879eebf2 100644
--- a/cpp/ql/test/library-tests/dataflow/taint-tests/test_mad-signatures.expected
+++ b/cpp/ql/test/library-tests/dataflow/taint-tests/test_mad-signatures.expected
@@ -17,6 +17,9 @@ signatureMatches
| arrayassignment.cpp:3:6:3:9 | sink | (int) | | X509_TRUST_get0 | 0 |
| arrayassignment.cpp:3:6:3:9 | sink | (int) | | X509_TRUST_get_by_id | 0 |
| arrayassignment.cpp:3:6:3:9 | sink | (int) | | X509_VERIFY_PARAM_get0 | 0 |
+| arrayassignment.cpp:3:6:3:9 | sink | (int) | | c_tolower | 0 |
+| arrayassignment.cpp:3:6:3:9 | sink | (int) | | c_toupper | 0 |
+| arrayassignment.cpp:3:6:3:9 | sink | (int) | | curlx_sitouz | 0 |
| arrayassignment.cpp:3:6:3:9 | sink | (int) | | evp_pkey_type2name | 0 |
| arrayassignment.cpp:3:6:3:9 | sink | (int) | | ossl_cmp_bodytype_to_string | 0 |
| arrayassignment.cpp:3:6:3:9 | sink | (int) | | ossl_tolower | 0 |
@@ -24,6 +27,12 @@ signatureMatches
| arrayassignment.cpp:3:6:3:9 | sink | (int) | | sqlite3_compileoption_get | 0 |
| arrayassignment.cpp:3:6:3:9 | sink | (int) | | sqlite3_errstr | 0 |
| arrayassignment.cpp:3:6:3:9 | sink | (int) | | tls13_alert_code | 0 |
+| arrayassignment.cpp:3:6:3:9 | sink | (int) | | uv__accept | 0 |
+| arrayassignment.cpp:3:6:3:9 | sink | (int) | | uv_err_name | 0 |
+| arrayassignment.cpp:3:6:3:9 | sink | (int) | | uv_get_osfhandle | 0 |
+| arrayassignment.cpp:3:6:3:9 | sink | (int) | | uv_strerror | 0 |
+| arrayassignment.cpp:3:6:3:9 | sink | (int) | | uv_translate_sys_error | 0 |
+| arrayassignment.cpp:3:6:3:9 | sink | (int) | | zError | 0 |
| arrayassignment.cpp:88:7:88:9 | get | (int) | | ASN1_STRING_type_new | 0 |
| arrayassignment.cpp:88:7:88:9 | get | (int) | | ASN1_tag2bit | 0 |
| arrayassignment.cpp:88:7:88:9 | get | (int) | | ASN1_tag2str | 0 |
@@ -42,6 +51,9 @@ signatureMatches
| arrayassignment.cpp:88:7:88:9 | get | (int) | | X509_TRUST_get0 | 0 |
| arrayassignment.cpp:88:7:88:9 | get | (int) | | X509_TRUST_get_by_id | 0 |
| arrayassignment.cpp:88:7:88:9 | get | (int) | | X509_VERIFY_PARAM_get0 | 0 |
+| arrayassignment.cpp:88:7:88:9 | get | (int) | | c_tolower | 0 |
+| arrayassignment.cpp:88:7:88:9 | get | (int) | | c_toupper | 0 |
+| arrayassignment.cpp:88:7:88:9 | get | (int) | | curlx_sitouz | 0 |
| arrayassignment.cpp:88:7:88:9 | get | (int) | | evp_pkey_type2name | 0 |
| arrayassignment.cpp:88:7:88:9 | get | (int) | | ossl_cmp_bodytype_to_string | 0 |
| arrayassignment.cpp:88:7:88:9 | get | (int) | | ossl_tolower | 0 |
@@ -49,6 +61,12 @@ signatureMatches
| arrayassignment.cpp:88:7:88:9 | get | (int) | | sqlite3_compileoption_get | 0 |
| arrayassignment.cpp:88:7:88:9 | get | (int) | | sqlite3_errstr | 0 |
| arrayassignment.cpp:88:7:88:9 | get | (int) | | tls13_alert_code | 0 |
+| arrayassignment.cpp:88:7:88:9 | get | (int) | | uv__accept | 0 |
+| arrayassignment.cpp:88:7:88:9 | get | (int) | | uv_err_name | 0 |
+| arrayassignment.cpp:88:7:88:9 | get | (int) | | uv_get_osfhandle | 0 |
+| arrayassignment.cpp:88:7:88:9 | get | (int) | | uv_strerror | 0 |
+| arrayassignment.cpp:88:7:88:9 | get | (int) | | uv_translate_sys_error | 0 |
+| arrayassignment.cpp:88:7:88:9 | get | (int) | | zError | 0 |
| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | ASN1_STRING_type_new | 0 |
| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | ASN1_tag2bit | 0 |
| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | ASN1_tag2str | 0 |
@@ -67,6 +85,9 @@ signatureMatches
| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | X509_TRUST_get0 | 0 |
| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | X509_TRUST_get_by_id | 0 |
| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | X509_VERIFY_PARAM_get0 | 0 |
+| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | c_tolower | 0 |
+| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | c_toupper | 0 |
+| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | curlx_sitouz | 0 |
| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | evp_pkey_type2name | 0 |
| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | ossl_cmp_bodytype_to_string | 0 |
| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | ossl_tolower | 0 |
@@ -74,12 +95,22 @@ signatureMatches
| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | sqlite3_compileoption_get | 0 |
| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | sqlite3_errstr | 0 |
| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | tls13_alert_code | 0 |
+| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | uv__accept | 0 |
+| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | uv_err_name | 0 |
+| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | uv_get_osfhandle | 0 |
+| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | uv_strerror | 0 |
+| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | uv_translate_sys_error | 0 |
+| arrayassignment.cpp:90:7:90:16 | operator[] | (int) | | zError | 0 |
| atl.cpp:71:5:71:17 | _U_STRINGorID | (UINT) | CComBSTR | LoadString | 0 |
| atl.cpp:71:5:71:17 | _U_STRINGorID | (UINT) | _U_STRINGorID | _U_STRINGorID | 0 |
| atl.cpp:71:5:71:17 | _U_STRINGorID | (unsigned int) | | Jim_IntHashFunction | 0 |
+| atl.cpp:71:5:71:17 | _U_STRINGorID | (unsigned int) | | curlx_uitous | 0 |
| atl.cpp:71:5:71:17 | _U_STRINGorID | (unsigned int) | | ssl3_get_cipher | 0 |
| atl.cpp:72:5:72:17 | _U_STRINGorID | (LPCTSTR) | _U_STRINGorID | _U_STRINGorID | 0 |
| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | BIO_gethostbyname | 0 |
+| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | Curl_copy_header_value | 0 |
+| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | Curl_get_scheme_handler | 0 |
+| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | Curl_getdate_capped | 0 |
| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | Jim_StrDup | 0 |
| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | OPENSSL_LH_strhash | 0 |
| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 |
@@ -90,11 +121,20 @@ signatureMatches
| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | X509_LOOKUP_meth_new | 0 |
| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | a2i_IPADDRESS | 0 |
| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | a2i_IPADDRESS_NC | 0 |
+| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | last_component | 0 |
| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | opt_path_end | 0 |
| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | opt_progname | 0 |
| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | ossl_lh_strcasehash | 0 |
| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | strhash | 0 |
+| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | uc_script_byname | 0 |
+| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | uv__strdup | 0 |
+| atl.cpp:72:5:72:17 | _U_STRINGorID | (const char *) | | uv_wtf8_length_as_utf16 | 0 |
+| atl.cpp:201:8:201:12 | GetAt | (size_t) | | BrotliEncoderMaxCompressedSize | 0 |
| atl.cpp:201:8:201:12 | GetAt | (size_t) | | EVP_PKEY_meth_get0 | 0 |
+| atl.cpp:201:8:201:12 | GetAt | (size_t) | | curlx_uztosi | 0 |
+| atl.cpp:201:8:201:12 | GetAt | (size_t) | | curlx_uztosz | 0 |
+| atl.cpp:201:8:201:12 | GetAt | (size_t) | | curlx_uztoui | 0 |
+| atl.cpp:201:8:201:12 | GetAt | (size_t) | | curlx_uztoul | 0 |
| atl.cpp:201:8:201:12 | GetAt | (size_t) | | ossl_get_extension_type | 0 |
| atl.cpp:201:8:201:12 | GetAt | (size_t) | | ossl_param_bytes_to_blocks | 0 |
| atl.cpp:201:8:201:12 | GetAt | (size_t) | | ossl_quic_sstream_new | 0 |
@@ -109,9 +149,20 @@ signatureMatches
| atl.cpp:206:10:206:17 | InsertAt | (CCM128_CONTEXT *,unsigned char *,size_t) | | CRYPTO_ccm128_tag | 2 |
| atl.cpp:206:10:206:17 | InsertAt | (CMAC_CTX *,const void *,size_t) | | CMAC_Update | 2 |
| atl.cpp:206:10:206:17 | InsertAt | (CMS_RecipientInfo *,const unsigned char *,size_t) | | CMS_RecipientInfo_kekri_id_cmp | 2 |
+| atl.cpp:206:10:206:17 | InsertAt | (Curl_easy *,unsigned char *,size_t) | | Curl_rand_alnum | 2 |
+| atl.cpp:206:10:206:17 | InsertAt | (Curl_easy *,unsigned char *,size_t) | | Curl_rand_bytes | 2 |
+| atl.cpp:206:10:206:17 | InsertAt | (Curl_easy *,unsigned char *,size_t) | | Curl_rand_hex | 2 |
| atl.cpp:206:10:206:17 | InsertAt | (DH *,const unsigned char *,size_t) | | ossl_dh_buf2key | 2 |
| atl.cpp:206:10:206:17 | InsertAt | (EC_GROUP *,const unsigned char *,size_t) | | EC_GROUP_set_seed | 2 |
| atl.cpp:206:10:206:17 | InsertAt | (EC_KEY *,const unsigned char *,size_t) | | ossl_ec_key_simple_oct2priv | 2 |
+| atl.cpp:206:10:206:17 | InsertAt | (EVP_MAC_CTX **,const void *,size_t) | | _libssh2_hmac_update | 2 |
+| atl.cpp:206:10:206:17 | InsertAt | (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha1_init | 2 |
+| atl.cpp:206:10:206:17 | InsertAt | (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha256_init | 2 |
+| atl.cpp:206:10:206:17 | InsertAt | (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha512_init | 2 |
+| atl.cpp:206:10:206:17 | InsertAt | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha1_update | 2 |
+| atl.cpp:206:10:206:17 | InsertAt | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha256_update | 2 |
+| atl.cpp:206:10:206:17 | InsertAt | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha384_update | 2 |
+| atl.cpp:206:10:206:17 | InsertAt | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha512_update | 2 |
| atl.cpp:206:10:206:17 | InsertAt | (EVP_MD_CTX *,const unsigned char *,size_t) | | EVP_DigestVerifyFinal | 2 |
| atl.cpp:206:10:206:17 | InsertAt | (EVP_PKEY *,char *,size_t) | | EVP_PKEY_get_default_digest_name | 2 |
| atl.cpp:206:10:206:17 | InsertAt | (EVP_RAND_CTX *,unsigned char *,size_t) | | EVP_RAND_nonce | 2 |
@@ -122,6 +173,9 @@ signatureMatches
| atl.cpp:206:10:206:17 | InsertAt | (KECCAK1600_CTX *,const void *,size_t) | | ossl_sha3_update | 2 |
| atl.cpp:206:10:206:17 | InsertAt | (KECCAK1600_CTX *,unsigned char *,size_t) | | ossl_sha3_squeeze | 2 |
| atl.cpp:206:10:206:17 | InsertAt | (KECCAK1600_CTX *,unsigned char,size_t) | | ossl_sha3_init | 2 |
+| atl.cpp:206:10:206:17 | InsertAt | (LIBSSH2_CHANNEL *,const char *,size_t) | | libssh2_channel_signal_ex | 2 |
+| atl.cpp:206:10:206:17 | InsertAt | (LIBSSH2_SFTP_HANDLE *,char *,size_t) | | libssh2_sftp_read | 2 |
+| atl.cpp:206:10:206:17 | InsertAt | (LIBSSH2_SFTP_HANDLE *,const char *,size_t) | | libssh2_sftp_write | 2 |
| atl.cpp:206:10:206:17 | InsertAt | (MD4_CTX *,const void *,size_t) | | MD4_Update | 2 |
| atl.cpp:206:10:206:17 | InsertAt | (MD4_CTX *,const void *,size_t) | | md4_block_data_order | 2 |
| atl.cpp:206:10:206:17 | InsertAt | (MD5_CTX *,const void *,size_t) | | MD5_Update | 2 |
@@ -129,6 +183,7 @@ signatureMatches
| atl.cpp:206:10:206:17 | InsertAt | (MDC2_CTX *,const unsigned char *,size_t) | | MDC2_Update | 2 |
| atl.cpp:206:10:206:17 | InsertAt | (ML_DSA_KEY *,const uint8_t *,size_t) | | ossl_ml_dsa_pk_decode | 2 |
| atl.cpp:206:10:206:17 | InsertAt | (ML_DSA_KEY *,const uint8_t *,size_t) | | ossl_ml_dsa_sk_decode | 2 |
+| atl.cpp:206:10:206:17 | InsertAt | (MemoryManager *,const uint8_t *,size_t) | | CreatePreparedDictionary | 2 |
| atl.cpp:206:10:206:17 | InsertAt | (OCB128_CONTEXT *,const unsigned char *,size_t) | | CRYPTO_ocb128_aad | 2 |
| atl.cpp:206:10:206:17 | InsertAt | (OCB128_CONTEXT *,unsigned char *,size_t) | | CRYPTO_ocb128_tag | 2 |
| atl.cpp:206:10:206:17 | InsertAt | (OSSL_HPKE_CTX *,const unsigned char *,size_t) | | OSSL_HPKE_CTX_set1_ikme | 2 |
@@ -199,8 +254,15 @@ signatureMatches
| atl.cpp:206:10:206:17 | InsertAt | (X509_VERIFY_PARAM *,const char *,size_t) | | X509_VERIFY_PARAM_set1_email | 2 |
| atl.cpp:206:10:206:17 | InsertAt | (X509_VERIFY_PARAM *,const char *,size_t) | | X509_VERIFY_PARAM_set1_host | 2 |
| atl.cpp:206:10:206:17 | InsertAt | (X509_VERIFY_PARAM *,const unsigned char *,size_t) | | X509_VERIFY_PARAM_set1_ip | 2 |
+| atl.cpp:206:10:206:17 | InsertAt | (bufc_pool *,size_t,size_t) | | Curl_bufcp_init | 2 |
+| atl.cpp:206:10:206:17 | InsertAt | (bufq *,size_t,size_t) | | Curl_bufq_init | 2 |
+| atl.cpp:206:10:206:17 | InsertAt | (bufref *,const void *,size_t) | | Curl_bufref_memdup | 2 |
+| atl.cpp:206:10:206:17 | InsertAt | (char **,size_t *,size_t) | | Curl_str_number | 2 |
+| atl.cpp:206:10:206:17 | InsertAt | (char *,const char *,size_t) | | Curl_strntolower | 2 |
+| atl.cpp:206:10:206:17 | InsertAt | (char *,const char *,size_t) | | Curl_strntoupper | 2 |
| atl.cpp:206:10:206:17 | InsertAt | (char *,const char *,size_t) | | OPENSSL_strlcat | 2 |
| atl.cpp:206:10:206:17 | InsertAt | (char *,const char *,size_t) | | OPENSSL_strlcpy | 2 |
+| atl.cpp:206:10:206:17 | InsertAt | (char *,const char *,size_t) | | uv__strscpy | 2 |
| atl.cpp:206:10:206:17 | InsertAt | (const CTLOG_STORE *,const uint8_t *,size_t) | | CTLOG_STORE_get0_log_by_id | 2 |
| atl.cpp:206:10:206:17 | InsertAt | (const EC_KEY *,unsigned char *,size_t) | | ossl_ec_key_simple_priv2oct | 2 |
| atl.cpp:206:10:206:17 | InsertAt | (const EVP_MD *,const OSSL_ITEM *,size_t) | | ossl_digest_md_to_nid | 2 |
@@ -214,20 +276,64 @@ signatureMatches
| atl.cpp:206:10:206:17 | InsertAt | (const SSL_SESSION *,unsigned char *,size_t) | | SSL_SESSION_get_master_key | 2 |
| atl.cpp:206:10:206:17 | InsertAt | (const char *,char **,size_t) | | OSSL_PARAM_construct_utf8_ptr | 2 |
| atl.cpp:206:10:206:17 | InsertAt | (const char *,char *,size_t) | | OSSL_PARAM_construct_utf8_string | 2 |
+| atl.cpp:206:10:206:17 | InsertAt | (const char *,char *,size_t) | | getpass_r | 2 |
| atl.cpp:206:10:206:17 | InsertAt | (const char *,const char *,size_t) | | OPENSSL_strncasecmp | 2 |
+| atl.cpp:206:10:206:17 | InsertAt | (const char *,const char *,size_t) | | c_strncasecmp | 2 |
+| atl.cpp:206:10:206:17 | InsertAt | (const char *,uint16_t *,size_t) | | uv_wtf8_to_utf16 | 2 |
| atl.cpp:206:10:206:17 | InsertAt | (const char *,unsigned char *,size_t) | | OSSL_PARAM_construct_BN | 2 |
| atl.cpp:206:10:206:17 | InsertAt | (const char *,void **,size_t) | | OSSL_PARAM_construct_octet_ptr | 2 |
| atl.cpp:206:10:206:17 | InsertAt | (const char *,void *,size_t) | | OSSL_PARAM_construct_octet_string | 2 |
+| atl.cpp:206:10:206:17 | InsertAt | (const char *,void *,size_t) | | uv__random_readpath | 2 |
+| atl.cpp:206:10:206:17 | InsertAt | (const sockaddr *,char *,size_t) | | uv_ip_name | 2 |
+| atl.cpp:206:10:206:17 | InsertAt | (const sockaddr_in6 *,char *,size_t) | | uv_ip6_name | 2 |
+| atl.cpp:206:10:206:17 | InsertAt | (const sockaddr_in *,char *,size_t) | | uv_ip4_name | 2 |
| atl.cpp:206:10:206:17 | InsertAt | (const unsigned char *,size_t,size_t) | | ossl_rand_pool_attach | 2 |
+| atl.cpp:206:10:206:17 | InsertAt | (const void *,const void *,size_t) | | chachapoly_timingsafe_bcmp | 2 |
+| atl.cpp:206:10:206:17 | InsertAt | (curl_mimepart *,const char *,size_t) | | curl_mime_data | 2 |
| atl.cpp:206:10:206:17 | InsertAt | (curve448_scalar_t,const unsigned char *,size_t) | | ossl_curve448_scalar_decode_long | 2 |
+| atl.cpp:206:10:206:17 | InsertAt | (dynbuf *,const void *,size_t) | | Curl_dyn_addn | 2 |
+| atl.cpp:206:10:206:17 | InsertAt | (dynbuf *,const void *,size_t) | | curlx_dyn_addn | 2 |
+| atl.cpp:206:10:206:17 | InsertAt | (dynhds *,const char *,size_t) | | Curl_dynhds_get | 2 |
+| atl.cpp:206:10:206:17 | InsertAt | (dynhds *,const char *,size_t) | | Curl_dynhds_h1_add_line | 2 |
+| atl.cpp:206:10:206:17 | InsertAt | (dynhds *,size_t,size_t) | | Curl_dynhds_init | 2 |
+| atl.cpp:206:10:206:17 | InsertAt | (int *,const char *,size_t) | | Curl_http_decode_status | 2 |
| atl.cpp:206:10:206:17 | InsertAt | (int *,int *,size_t) | | EVP_PBE_get | 2 |
+| atl.cpp:206:10:206:17 | InsertAt | (int,char *,size_t) | | Curl_strerror | 2 |
+| atl.cpp:206:10:206:17 | InsertAt | (int,char *,size_t) | | uv_err_name_r | 2 |
+| atl.cpp:206:10:206:17 | InsertAt | (int,char *,size_t) | | uv_strerror_r | 2 |
+| atl.cpp:206:10:206:17 | InsertAt | (int,int,size_t) | | BrotliEncoderEstimatePeakMemoryUsage | 2 |
+| atl.cpp:206:10:206:17 | InsertAt | (nghttp2_buf *,uint8_t *,size_t) | | nghttp2_buf_wrap_init | 2 |
+| atl.cpp:206:10:206:17 | InsertAt | (nghttp2_extension *,nghttp2_origin_entry *,size_t) | | nghttp2_frame_origin_init | 2 |
+| atl.cpp:206:10:206:17 | InsertAt | (nghttp2_extpri *,const uint8_t *,size_t) | | nghttp2_extpri_parse_priority | 2 |
+| atl.cpp:206:10:206:17 | InsertAt | (nghttp2_extpri *,const uint8_t *,size_t) | | nghttp2_http_parse_priority | 2 |
+| atl.cpp:206:10:206:17 | InsertAt | (nghttp2_hd_deflater *,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_bound | 2 |
+| atl.cpp:206:10:206:17 | InsertAt | (nghttp2_session *,const uint8_t *,size_t) | | nghttp2_session_mem_recv | 2 |
+| atl.cpp:206:10:206:17 | InsertAt | (nghttp2_session *,const uint8_t *,size_t) | | nghttp2_session_mem_recv2 | 2 |
+| atl.cpp:206:10:206:17 | InsertAt | (nghttp2_session *,int32_t,size_t) | | nghttp2_session_consume | 2 |
+| atl.cpp:206:10:206:17 | InsertAt | (nghttp2_session *,nghttp2_settings_entry *,size_t) | | nghttp2_session_update_local_settings | 2 |
+| atl.cpp:206:10:206:17 | InsertAt | (nghttp2_settings *,nghttp2_settings_entry *,size_t) | | nghttp2_frame_unpack_settings_payload | 2 |
+| atl.cpp:206:10:206:17 | InsertAt | (sfparse_parser *,const uint8_t *,size_t) | | sfparse_parser_init | 2 |
| atl.cpp:206:10:206:17 | InsertAt | (size_t,OSSL_QTX_IOVEC *,size_t) | | ossl_quic_sstream_adjust_iov | 2 |
| atl.cpp:206:10:206:17 | InsertAt | (stack_st_SCT **,const unsigned char **,size_t) | | o2i_SCT_LIST | 2 |
+| atl.cpp:206:10:206:17 | InsertAt | (ucs4_t *,const uint8_t *,size_t) | | u8_mbtouc_aux | 2 |
+| atl.cpp:206:10:206:17 | InsertAt | (uint8_t *,const nghttp2_settings_entry *,size_t) | | nghttp2_frame_pack_settings_payload | 2 |
+| atl.cpp:206:10:206:17 | InsertAt | (uint8_t *,const void *,size_t) | | nghttp2_cpymem | 2 |
+| atl.cpp:206:10:206:17 | InsertAt | (unsigned char **,const char *,size_t) | | _libssh2_store_str | 2 |
+| atl.cpp:206:10:206:17 | InsertAt | (unsigned char **,const unsigned char *,size_t) | | _libssh2_store_bignum2_bytes | 2 |
| atl.cpp:206:10:206:17 | InsertAt | (unsigned char *,const unsigned char *,size_t) | | BUF_reverse | 2 |
| atl.cpp:206:10:206:17 | InsertAt | (unsigned char *,size_t *,size_t) | | ossl_cipher_padblock | 2 |
| atl.cpp:206:10:206:17 | InsertAt | (unsigned char *,size_t *,size_t) | | ossl_cipher_unpadblock | 2 |
+| atl.cpp:206:10:206:17 | InsertAt | (uv_thread_t *,char *,size_t) | | uv__thread_getname | 2 |
+| atl.cpp:206:10:206:17 | InsertAt | (uv_thread_t *,char *,size_t) | | uv_thread_getaffinity | 2 |
+| atl.cpp:206:10:206:17 | InsertAt | (uv_thread_t *,char *,size_t) | | uv_thread_getname | 2 |
+| atl.cpp:206:10:206:17 | InsertAt | (void *,size_t,size_t) | | Curl_hash_str | 2 |
| atl.cpp:206:10:206:17 | InsertAt | (void *,unsigned char *,size_t) | | ossl_drbg_clear_seed | 2 |
+| atl.cpp:213:8:213:17 | operator[] | (size_t) | | BrotliEncoderMaxCompressedSize | 0 |
| atl.cpp:213:8:213:17 | operator[] | (size_t) | | EVP_PKEY_meth_get0 | 0 |
+| atl.cpp:213:8:213:17 | operator[] | (size_t) | | curlx_uztosi | 0 |
+| atl.cpp:213:8:213:17 | operator[] | (size_t) | | curlx_uztosz | 0 |
+| atl.cpp:213:8:213:17 | operator[] | (size_t) | | curlx_uztoui | 0 |
+| atl.cpp:213:8:213:17 | operator[] | (size_t) | | curlx_uztoul | 0 |
| atl.cpp:213:8:213:17 | operator[] | (size_t) | | ossl_get_extension_type | 0 |
| atl.cpp:213:8:213:17 | operator[] | (size_t) | | ossl_param_bytes_to_blocks | 0 |
| atl.cpp:213:8:213:17 | operator[] | (size_t) | | ossl_quic_sstream_new | 0 |
@@ -238,10 +344,22 @@ signatureMatches
| atl.cpp:259:5:259:12 | CAtlList | (UINT) | _U_STRINGorID | _U_STRINGorID | 0 |
| atl.cpp:259:5:259:12 | CAtlList | (unsigned int) | | Jim_IntHashFunction | 0 |
| atl.cpp:259:5:259:12 | CAtlList | (unsigned int) | | Jim_IntHashFunction | 0 |
+| atl.cpp:259:5:259:12 | CAtlList | (unsigned int) | | curlx_uitous | 0 |
+| atl.cpp:259:5:259:12 | CAtlList | (unsigned int) | | curlx_uitous | 0 |
| atl.cpp:259:5:259:12 | CAtlList | (unsigned int) | | ssl3_get_cipher | 0 |
| atl.cpp:259:5:259:12 | CAtlList | (unsigned int) | | ssl3_get_cipher | 0 |
+| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | BrotliEncoderMaxCompressedSize | 0 |
+| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | BrotliEncoderMaxCompressedSize | 0 |
| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | EVP_PKEY_meth_get0 | 0 |
| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | EVP_PKEY_meth_get0 | 0 |
+| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | curlx_uztosi | 0 |
+| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | curlx_uztosi | 0 |
+| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | curlx_uztosz | 0 |
+| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | curlx_uztosz | 0 |
+| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | curlx_uztoui | 0 |
+| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | curlx_uztoui | 0 |
+| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | curlx_uztoul | 0 |
+| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | curlx_uztoul | 0 |
| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | ossl_get_extension_type | 0 |
| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | ossl_get_extension_type | 0 |
| atl.cpp:268:14:268:22 | FindIndex | (size_t) | | ossl_param_bytes_to_blocks | 0 |
@@ -272,6 +390,9 @@ signatureMatches
| atl.cpp:412:5:412:12 | CComBSTR | (int) | | X509_TRUST_get0 | 0 |
| atl.cpp:412:5:412:12 | CComBSTR | (int) | | X509_TRUST_get_by_id | 0 |
| atl.cpp:412:5:412:12 | CComBSTR | (int) | | X509_VERIFY_PARAM_get0 | 0 |
+| atl.cpp:412:5:412:12 | CComBSTR | (int) | | c_tolower | 0 |
+| atl.cpp:412:5:412:12 | CComBSTR | (int) | | c_toupper | 0 |
+| atl.cpp:412:5:412:12 | CComBSTR | (int) | | curlx_sitouz | 0 |
| atl.cpp:412:5:412:12 | CComBSTR | (int) | | evp_pkey_type2name | 0 |
| atl.cpp:412:5:412:12 | CComBSTR | (int) | | ossl_cmp_bodytype_to_string | 0 |
| atl.cpp:412:5:412:12 | CComBSTR | (int) | | ossl_tolower | 0 |
@@ -279,6 +400,12 @@ signatureMatches
| atl.cpp:412:5:412:12 | CComBSTR | (int) | | sqlite3_compileoption_get | 0 |
| atl.cpp:412:5:412:12 | CComBSTR | (int) | | sqlite3_errstr | 0 |
| atl.cpp:412:5:412:12 | CComBSTR | (int) | | tls13_alert_code | 0 |
+| atl.cpp:412:5:412:12 | CComBSTR | (int) | | uv__accept | 0 |
+| atl.cpp:412:5:412:12 | CComBSTR | (int) | | uv_err_name | 0 |
+| atl.cpp:412:5:412:12 | CComBSTR | (int) | | uv_get_osfhandle | 0 |
+| atl.cpp:412:5:412:12 | CComBSTR | (int) | | uv_strerror | 0 |
+| atl.cpp:412:5:412:12 | CComBSTR | (int) | | uv_translate_sys_error | 0 |
+| atl.cpp:412:5:412:12 | CComBSTR | (int) | | zError | 0 |
| atl.cpp:413:5:413:12 | CComBSTR | (int,LPCOLESTR) | CComBSTR | CComBSTR | 0 |
| atl.cpp:413:5:413:12 | CComBSTR | (int,LPCOLESTR) | CComBSTR | CComBSTR | 1 |
| atl.cpp:414:5:414:12 | CComBSTR | (ASN1_GENERALIZEDTIME *,const char *) | | ASN1_GENERALIZEDTIME_set_string | 1 |
@@ -290,6 +417,9 @@ signatureMatches
| atl.cpp:414:5:414:12 | CComBSTR | (BIGNUM **,const char *) | | BN_hex2bn | 1 |
| atl.cpp:414:5:414:12 | CComBSTR | (CONF *,const char *) | | TS_CONF_get_tsa_section | 1 |
| atl.cpp:414:5:414:12 | CComBSTR | (CONF *,const char *) | | _CONF_new_section | 1 |
+| atl.cpp:414:5:414:12 | CComBSTR | (CURLU *,const char *) | | Curl_url_set_authority | 1 |
+| atl.cpp:414:5:414:12 | CComBSTR | (Curl_easy *,const char *) | | Curl_cwriter_get_by_name | 1 |
+| atl.cpp:414:5:414:12 | CComBSTR | (Curl_easy *,const char *) | | Curl_rtsp_parseheader | 1 |
| atl.cpp:414:5:414:12 | CComBSTR | (DH_METHOD *,const char *) | | DH_meth_set1_name | 1 |
| atl.cpp:414:5:414:12 | CComBSTR | (DSA_METHOD *,const char *) | | DSA_meth_set1_name | 1 |
| atl.cpp:414:5:414:12 | CComBSTR | (DSO *,const char *) | | DSO_convert_filename | 1 |
@@ -300,10 +430,14 @@ signatureMatches
| atl.cpp:414:5:414:12 | CComBSTR | (EVP_PKEY *,const char *) | | CTLOG_new | 1 |
| atl.cpp:414:5:414:12 | CComBSTR | (EVP_PKEY_CTX *,const char *) | | app_paramgen | 1 |
| atl.cpp:414:5:414:12 | CComBSTR | (EVP_PKEY_CTX *,const char *) | | pkey_ctrl_string | 1 |
+| atl.cpp:414:5:414:12 | CComBSTR | (GlobalConfig *,const char *) | | setvariable | 1 |
| atl.cpp:414:5:414:12 | CComBSTR | (Jim_Interp *,const char *) | | Jim_Eval | 1 |
| atl.cpp:414:5:414:12 | CComBSTR | (Jim_Interp *,const char *) | | Jim_EvalFile | 1 |
| atl.cpp:414:5:414:12 | CComBSTR | (Jim_Interp *,const char *) | | Jim_EvalFileGlobal | 1 |
| atl.cpp:414:5:414:12 | CComBSTR | (Jim_Interp *,const char *) | | Jim_EvalGlobal | 1 |
+| atl.cpp:414:5:414:12 | CComBSTR | (LIBSSH2_AGENT *,const char *) | | libssh2_agent_set_identity_path | 1 |
+| atl.cpp:414:5:414:12 | CComBSTR | (LIBSSH2_SESSION *,const char *) | | libssh2_banner_set | 1 |
+| atl.cpp:414:5:414:12 | CComBSTR | (LIBSSH2_SESSION *,const char *) | | libssh2_session_banner_set | 1 |
| atl.cpp:414:5:414:12 | CComBSTR | (OPENSSL_DIR_CTX **,const char *) | | OPENSSL_DIR_read | 1 |
| atl.cpp:414:5:414:12 | CComBSTR | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_appname | 1 |
| atl.cpp:414:5:414:12 | CComBSTR | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_filename | 1 |
@@ -360,22 +494,45 @@ signatureMatches
| atl.cpp:414:5:414:12 | CComBSTR | (X509_REQ *,const char *) | | x509_req_ctrl_string | 1 |
| atl.cpp:414:5:414:12 | CComBSTR | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_ip_asc | 1 |
| atl.cpp:414:5:414:12 | CComBSTR | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_name | 1 |
+| atl.cpp:414:5:414:12 | CComBSTR | (char **,const char *) | | Curl_setstropt | 1 |
| atl.cpp:414:5:414:12 | CComBSTR | (const OSSL_PARAM *,const char *) | | OSSL_PARAM_locate_const | 1 |
+| atl.cpp:414:5:414:12 | CComBSTR | (const char **,const char *) | | uv__utf8_decode1 | 1 |
| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | Configcmp | 1 |
+| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | Curl_timestrcmp | 1 |
| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | DES_crypt | 1 |
| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | OPENSSL_strcasecmp | 1 |
+| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | c_strcasecmp | 1 |
| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | get_passwd | 1 |
+| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | gzopen | 1 |
+| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | gzopen64 | 1 |
| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | openssl_fopen | 1 |
| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | ossl_pem_check_suffix | 1 |
| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | ossl_v3_name_cmp | 1 |
| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | sqlite3_strglob | 1 |
| atl.cpp:414:5:414:12 | CComBSTR | (const char *,const char *) | | sqlite3_stricmp | 1 |
+| atl.cpp:414:5:414:12 | CComBSTR | (curl_mimepart *,const char *) | | curl_mime_filedata | 1 |
+| atl.cpp:414:5:414:12 | CComBSTR | (curl_off_t *,const char *) | | str2offset | 1 |
+| atl.cpp:414:5:414:12 | CComBSTR | (curl_pushheaders *,const char *) | | curl_pushheader_byname | 1 |
+| atl.cpp:414:5:414:12 | CComBSTR | (curl_slist **,const char *) | | add2list | 1 |
+| atl.cpp:414:5:414:12 | CComBSTR | (curl_slist *,const char *) | | curl_slist_append | 1 |
+| atl.cpp:414:5:414:12 | CComBSTR | (dynbuf *,const char *) | | Curl_dyn_add | 1 |
+| atl.cpp:414:5:414:12 | CComBSTR | (dynbuf *,const char *) | | curlx_dyn_add | 1 |
+| atl.cpp:414:5:414:12 | CComBSTR | (dynhds *,const char *) | | Curl_dynhds_cget | 1 |
+| atl.cpp:414:5:414:12 | CComBSTR | (dynhds *,const char *) | | Curl_dynhds_h1_cadd_line | 1 |
+| atl.cpp:414:5:414:12 | CComBSTR | (gzFile,const char *) | | gzputs | 1 |
| atl.cpp:414:5:414:12 | CComBSTR | (int,LPCSTR) | CComBSTR | CComBSTR | 0 |
| atl.cpp:414:5:414:12 | CComBSTR | (int,LPCSTR) | CComBSTR | CComBSTR | 1 |
| atl.cpp:414:5:414:12 | CComBSTR | (int,const char *) | | BIO_meth_new | 0 |
| atl.cpp:414:5:414:12 | CComBSTR | (int,const char *) | | BIO_meth_new | 1 |
+| atl.cpp:414:5:414:12 | CComBSTR | (int,const char *) | | gzdopen | 0 |
+| atl.cpp:414:5:414:12 | CComBSTR | (int,const char *) | | gzdopen | 1 |
| atl.cpp:414:5:414:12 | CComBSTR | (lemon *,const char *) | | file_makename | 1 |
+| atl.cpp:414:5:414:12 | CComBSTR | (long *,const char *) | | secs2ms | 1 |
+| atl.cpp:414:5:414:12 | CComBSTR | (long *,const char *) | | str2num | 1 |
+| atl.cpp:414:5:414:12 | CComBSTR | (long *,const char *) | | str2unum | 1 |
| atl.cpp:414:5:414:12 | CComBSTR | (size_t *,const char *) | | next_protos_parse | 1 |
+| atl.cpp:414:5:414:12 | CComBSTR | (slist_wc **,const char *) | | easysrc_add | 1 |
+| atl.cpp:414:5:414:12 | CComBSTR | (slist_wc *,const char *) | | slist_wc_append | 1 |
| atl.cpp:414:5:414:12 | CComBSTR | (sqlite3 *,const char *) | | sqlite3_declare_vtab | 1 |
| atl.cpp:414:5:414:12 | CComBSTR | (sqlite3 *,const char *) | | sqlite3_get_clientdata | 1 |
| atl.cpp:414:5:414:12 | CComBSTR | (sqlite3 *,const char *) | | sqlite3_wal_checkpoint | 1 |
@@ -386,11 +543,15 @@ signatureMatches
| atl.cpp:414:5:414:12 | CComBSTR | (unsigned char *,const char *) | | ossl_a2i_ipadd | 1 |
| atl.cpp:414:5:414:12 | CComBSTR | (unsigned long *,const char *) | | set_cert_ex | 1 |
| atl.cpp:414:5:414:12 | CComBSTR | (unsigned long *,const char *) | | set_name_ex | 1 |
+| atl.cpp:414:5:414:12 | CComBSTR | (uv_pipe_t *,const char *) | | uv_pipe_bind | 1 |
| atl.cpp:415:5:415:12 | CComBSTR | (LPCOLESTR) | CComBSTR | Append | 0 |
| atl.cpp:415:5:415:12 | CComBSTR | (LPCOLESTR) | CComBSTR | CComBSTR | 0 |
| atl.cpp:416:5:416:12 | CComBSTR | (LPCSTR) | CComBSTR | Append | 0 |
| atl.cpp:416:5:416:12 | CComBSTR | (LPCSTR) | CComBSTR | CComBSTR | 0 |
| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | BIO_gethostbyname | 0 |
+| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | Curl_copy_header_value | 0 |
+| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | Curl_get_scheme_handler | 0 |
+| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | Curl_getdate_capped | 0 |
| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | Jim_StrDup | 0 |
| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | OPENSSL_LH_strhash | 0 |
| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 |
@@ -401,16 +562,23 @@ signatureMatches
| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | X509_LOOKUP_meth_new | 0 |
| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | a2i_IPADDRESS | 0 |
| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | a2i_IPADDRESS_NC | 0 |
+| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | last_component | 0 |
| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | opt_path_end | 0 |
| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | opt_progname | 0 |
| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | ossl_lh_strcasehash | 0 |
| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | strhash | 0 |
+| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | uc_script_byname | 0 |
+| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | uv__strdup | 0 |
+| atl.cpp:416:5:416:12 | CComBSTR | (const char *) | | uv_wtf8_length_as_utf16 | 0 |
| atl.cpp:417:5:417:12 | CComBSTR | (CComBSTR &&) | CComBSTR | CComBSTR | 0 |
| atl.cpp:420:13:420:18 | Append | (const CComBSTR &) | CComBSTR | Append | 0 |
| atl.cpp:420:13:420:18 | Append | (const CComBSTR &) | CComBSTR | CComBSTR | 0 |
| atl.cpp:421:13:421:18 | Append | (wchar_t) | | operator+= | 0 |
| atl.cpp:421:13:421:18 | Append | (wchar_t) | CComBSTR | Append | 0 |
| atl.cpp:421:13:421:18 | Append | (wchar_t) | CSimpleStringT | operator+= | 0 |
+| atl.cpp:422:13:422:18 | Append | (char) | | Curl_raw_tolower | 0 |
+| atl.cpp:422:13:422:18 | Append | (char) | | Curl_raw_toupper | 0 |
+| atl.cpp:422:13:422:18 | Append | (char) | | findshortopt | 0 |
| atl.cpp:422:13:422:18 | Append | (char) | | operator+= | 0 |
| atl.cpp:422:13:422:18 | Append | (char) | CComBSTR | Append | 0 |
| atl.cpp:422:13:422:18 | Append | (char) | CSimpleStringT | operator+= | 0 |
@@ -419,6 +587,9 @@ signatureMatches
| atl.cpp:424:13:424:18 | Append | (LPCSTR) | CComBSTR | Append | 0 |
| atl.cpp:424:13:424:18 | Append | (LPCSTR) | CComBSTR | CComBSTR | 0 |
| atl.cpp:424:13:424:18 | Append | (const char *) | | BIO_gethostbyname | 0 |
+| atl.cpp:424:13:424:18 | Append | (const char *) | | Curl_copy_header_value | 0 |
+| atl.cpp:424:13:424:18 | Append | (const char *) | | Curl_get_scheme_handler | 0 |
+| atl.cpp:424:13:424:18 | Append | (const char *) | | Curl_getdate_capped | 0 |
| atl.cpp:424:13:424:18 | Append | (const char *) | | Jim_StrDup | 0 |
| atl.cpp:424:13:424:18 | Append | (const char *) | | OPENSSL_LH_strhash | 0 |
| atl.cpp:424:13:424:18 | Append | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 |
@@ -429,10 +600,14 @@ signatureMatches
| atl.cpp:424:13:424:18 | Append | (const char *) | | X509_LOOKUP_meth_new | 0 |
| atl.cpp:424:13:424:18 | Append | (const char *) | | a2i_IPADDRESS | 0 |
| atl.cpp:424:13:424:18 | Append | (const char *) | | a2i_IPADDRESS_NC | 0 |
+| atl.cpp:424:13:424:18 | Append | (const char *) | | last_component | 0 |
| atl.cpp:424:13:424:18 | Append | (const char *) | | opt_path_end | 0 |
| atl.cpp:424:13:424:18 | Append | (const char *) | | opt_progname | 0 |
| atl.cpp:424:13:424:18 | Append | (const char *) | | ossl_lh_strcasehash | 0 |
| atl.cpp:424:13:424:18 | Append | (const char *) | | strhash | 0 |
+| atl.cpp:424:13:424:18 | Append | (const char *) | | uc_script_byname | 0 |
+| atl.cpp:424:13:424:18 | Append | (const char *) | | uv__strdup | 0 |
+| atl.cpp:424:13:424:18 | Append | (const char *) | | uv_wtf8_length_as_utf16 | 0 |
| atl.cpp:425:13:425:18 | Append | (ASN1_STRING *,int) | | ASN1_STRING_length_set | 1 |
| atl.cpp:425:13:425:18 | Append | (ASYNC_WAIT_CTX *,int) | | ASYNC_WAIT_CTX_set_status | 1 |
| atl.cpp:425:13:425:18 | Append | (BIGNUM *,int) | | BN_clear_bit | 1 |
@@ -451,6 +626,8 @@ signatureMatches
| atl.cpp:425:13:425:18 | Append | (BIO *,int) | | TXT_DB_read | 1 |
| atl.cpp:425:13:425:18 | Append | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 |
| atl.cpp:425:13:425:18 | Append | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 |
+| atl.cpp:425:13:425:18 | Append | (CURL *,int) | | curl_easy_pause | 1 |
+| atl.cpp:425:13:425:18 | Append | (Curl_easy *,int) | | Curl_conn_get_socket | 1 |
| atl.cpp:425:13:425:18 | Append | (DH *,int) | | DH_clear_flags | 1 |
| atl.cpp:425:13:425:18 | Append | (DH *,int) | | DH_set_flags | 1 |
| atl.cpp:425:13:425:18 | Append | (DH_METHOD *,int) | | DH_meth_set_flags | 1 |
@@ -494,6 +671,17 @@ signatureMatches
| atl.cpp:425:13:425:18 | Append | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 |
| atl.cpp:425:13:425:18 | Append | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 |
| atl.cpp:425:13:425:18 | Append | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 |
+| atl.cpp:425:13:425:18 | Append | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 |
+| atl.cpp:425:13:425:18 | Append | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 |
+| atl.cpp:425:13:425:18 | Append | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 |
+| atl.cpp:425:13:425:18 | Append | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 |
+| atl.cpp:425:13:425:18 | Append | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 |
+| atl.cpp:425:13:425:18 | Append | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 |
+| atl.cpp:425:13:425:18 | Append | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 |
+| atl.cpp:425:13:425:18 | Append | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 |
+| atl.cpp:425:13:425:18 | Append | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 |
+| atl.cpp:425:13:425:18 | Append | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 |
+| atl.cpp:425:13:425:18 | Append | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 |
| atl.cpp:425:13:425:18 | Append | (LPCOLESTR,int) | CComBSTR | Append | 0 |
| atl.cpp:425:13:425:18 | Append | (LPCOLESTR,int) | CComBSTR | Append | 1 |
| atl.cpp:425:13:425:18 | Append | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 |
@@ -612,8 +800,10 @@ signatureMatches
| atl.cpp:425:13:425:18 | Append | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 |
| atl.cpp:425:13:425:18 | Append | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 |
| atl.cpp:425:13:425:18 | Append | (acttab *,int) | | acttab_insert | 1 |
+| atl.cpp:425:13:425:18 | Append | (char *,int) | | Curl_str2addr | 1 |
| atl.cpp:425:13:425:18 | Append | (char *,int) | | PEM_proc_type | 1 |
| atl.cpp:425:13:425:18 | Append | (char,int) | CStringT | CStringT | 1 |
+| atl.cpp:425:13:425:18 | Append | (connectdata *,int) | | Curl_conn_is_ssl | 1 |
| atl.cpp:425:13:425:18 | Append | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 |
| atl.cpp:425:13:425:18 | Append | (const BIGNUM *,int) | | BN_get_flags | 1 |
| atl.cpp:425:13:425:18 | Append | (const BIGNUM *,int) | | BN_is_bit_set | 1 |
@@ -680,12 +870,22 @@ signatureMatches
| atl.cpp:425:13:425:18 | Append | (const unsigned char *,int) | | Jim_GenHashFunction | 1 |
| atl.cpp:425:13:425:18 | Append | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 |
| atl.cpp:425:13:425:18 | Append | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 |
+| atl.cpp:425:13:425:18 | Append | (dynhds *,int) | | Curl_dynhds_set_opts | 1 |
+| atl.cpp:425:13:425:18 | Append | (gzFile,int) | | gzflush | 1 |
+| atl.cpp:425:13:425:18 | Append | (gzFile,int) | | gzputc | 1 |
| atl.cpp:425:13:425:18 | Append | (int *,int) | | X509_PURPOSE_set | 1 |
| atl.cpp:425:13:425:18 | Append | (int *,int) | | X509_TRUST_set | 1 |
| atl.cpp:425:13:425:18 | Append | (int,int) | | BN_security_bits | 1 |
| atl.cpp:425:13:425:18 | Append | (int,int) | | EVP_MD_meth_new | 1 |
| atl.cpp:425:13:425:18 | Append | (int,int) | | EVP_PKEY_meth_new | 1 |
| atl.cpp:425:13:425:18 | Append | (int,int) | | acttab_alloc | 1 |
+| atl.cpp:425:13:425:18 | Append | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 |
+| atl.cpp:425:13:425:18 | Append | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 |
+| atl.cpp:425:13:425:18 | Append | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 |
+| atl.cpp:425:13:425:18 | Append | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 |
+| atl.cpp:425:13:425:18 | Append | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 |
+| atl.cpp:425:13:425:18 | Append | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 |
+| atl.cpp:425:13:425:18 | Append | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 |
| atl.cpp:425:13:425:18 | Append | (rule *,int) | | Configlist_add | 1 |
| atl.cpp:425:13:425:18 | Append | (rule *,int) | | Configlist_addbasis | 1 |
| atl.cpp:425:13:425:18 | Append | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 |
@@ -720,6 +920,7 @@ signatureMatches
| atl.cpp:425:13:425:18 | Append | (unsigned char *,int) | | RAND_priv_bytes | 1 |
| atl.cpp:425:13:425:18 | Append | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 |
| atl.cpp:425:13:425:18 | Append | (unsigned short,int) | | dtls1_get_queue_priority | 1 |
+| atl.cpp:425:13:425:18 | Append | (uv_env_item_t *,int) | | uv_os_free_environ | 1 |
| atl.cpp:425:13:425:18 | Append | (void *,int) | | DSO_dsobyaddr | 1 |
| atl.cpp:425:13:425:18 | Append | (void *,int) | | sqlite3_realloc | 1 |
| atl.cpp:425:13:425:18 | Append | (wchar_t,int) | CStringT | CStringT | 1 |
@@ -742,6 +943,8 @@ signatureMatches
| atl.cpp:427:13:427:23 | AppendBytes | (BIO *,int) | | TXT_DB_read | 1 |
| atl.cpp:427:13:427:23 | AppendBytes | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 |
| atl.cpp:427:13:427:23 | AppendBytes | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 |
+| atl.cpp:427:13:427:23 | AppendBytes | (CURL *,int) | | curl_easy_pause | 1 |
+| atl.cpp:427:13:427:23 | AppendBytes | (Curl_easy *,int) | | Curl_conn_get_socket | 1 |
| atl.cpp:427:13:427:23 | AppendBytes | (DH *,int) | | DH_clear_flags | 1 |
| atl.cpp:427:13:427:23 | AppendBytes | (DH *,int) | | DH_set_flags | 1 |
| atl.cpp:427:13:427:23 | AppendBytes | (DH_METHOD *,int) | | DH_meth_set_flags | 1 |
@@ -785,6 +988,17 @@ signatureMatches
| atl.cpp:427:13:427:23 | AppendBytes | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 |
| atl.cpp:427:13:427:23 | AppendBytes | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 |
| atl.cpp:427:13:427:23 | AppendBytes | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 |
+| atl.cpp:427:13:427:23 | AppendBytes | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 |
+| atl.cpp:427:13:427:23 | AppendBytes | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 |
+| atl.cpp:427:13:427:23 | AppendBytes | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 |
+| atl.cpp:427:13:427:23 | AppendBytes | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 |
+| atl.cpp:427:13:427:23 | AppendBytes | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 |
+| atl.cpp:427:13:427:23 | AppendBytes | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 |
+| atl.cpp:427:13:427:23 | AppendBytes | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 |
+| atl.cpp:427:13:427:23 | AppendBytes | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 |
+| atl.cpp:427:13:427:23 | AppendBytes | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 |
+| atl.cpp:427:13:427:23 | AppendBytes | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 |
+| atl.cpp:427:13:427:23 | AppendBytes | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 |
| atl.cpp:427:13:427:23 | AppendBytes | (LPCOLESTR,int) | CComBSTR | Append | 1 |
| atl.cpp:427:13:427:23 | AppendBytes | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 |
| atl.cpp:427:13:427:23 | AppendBytes | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 |
@@ -902,8 +1116,10 @@ signatureMatches
| atl.cpp:427:13:427:23 | AppendBytes | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 |
| atl.cpp:427:13:427:23 | AppendBytes | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 |
| atl.cpp:427:13:427:23 | AppendBytes | (acttab *,int) | | acttab_insert | 1 |
+| atl.cpp:427:13:427:23 | AppendBytes | (char *,int) | | Curl_str2addr | 1 |
| atl.cpp:427:13:427:23 | AppendBytes | (char *,int) | | PEM_proc_type | 1 |
| atl.cpp:427:13:427:23 | AppendBytes | (char,int) | CStringT | CStringT | 1 |
+| atl.cpp:427:13:427:23 | AppendBytes | (connectdata *,int) | | Curl_conn_is_ssl | 1 |
| atl.cpp:427:13:427:23 | AppendBytes | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 |
| atl.cpp:427:13:427:23 | AppendBytes | (const BIGNUM *,int) | | BN_get_flags | 1 |
| atl.cpp:427:13:427:23 | AppendBytes | (const BIGNUM *,int) | | BN_is_bit_set | 1 |
@@ -976,12 +1192,22 @@ signatureMatches
| atl.cpp:427:13:427:23 | AppendBytes | (const unsigned char *,int) | | Jim_GenHashFunction | 1 |
| atl.cpp:427:13:427:23 | AppendBytes | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 |
| atl.cpp:427:13:427:23 | AppendBytes | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 |
+| atl.cpp:427:13:427:23 | AppendBytes | (dynhds *,int) | | Curl_dynhds_set_opts | 1 |
+| atl.cpp:427:13:427:23 | AppendBytes | (gzFile,int) | | gzflush | 1 |
+| atl.cpp:427:13:427:23 | AppendBytes | (gzFile,int) | | gzputc | 1 |
| atl.cpp:427:13:427:23 | AppendBytes | (int *,int) | | X509_PURPOSE_set | 1 |
| atl.cpp:427:13:427:23 | AppendBytes | (int *,int) | | X509_TRUST_set | 1 |
| atl.cpp:427:13:427:23 | AppendBytes | (int,int) | | BN_security_bits | 1 |
| atl.cpp:427:13:427:23 | AppendBytes | (int,int) | | EVP_MD_meth_new | 1 |
| atl.cpp:427:13:427:23 | AppendBytes | (int,int) | | EVP_PKEY_meth_new | 1 |
| atl.cpp:427:13:427:23 | AppendBytes | (int,int) | | acttab_alloc | 1 |
+| atl.cpp:427:13:427:23 | AppendBytes | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 |
+| atl.cpp:427:13:427:23 | AppendBytes | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 |
+| atl.cpp:427:13:427:23 | AppendBytes | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 |
+| atl.cpp:427:13:427:23 | AppendBytes | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 |
+| atl.cpp:427:13:427:23 | AppendBytes | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 |
+| atl.cpp:427:13:427:23 | AppendBytes | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 |
+| atl.cpp:427:13:427:23 | AppendBytes | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 |
| atl.cpp:427:13:427:23 | AppendBytes | (rule *,int) | | Configlist_add | 1 |
| atl.cpp:427:13:427:23 | AppendBytes | (rule *,int) | | Configlist_addbasis | 1 |
| atl.cpp:427:13:427:23 | AppendBytes | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 |
@@ -1016,6 +1242,7 @@ signatureMatches
| atl.cpp:427:13:427:23 | AppendBytes | (unsigned char *,int) | | RAND_priv_bytes | 1 |
| atl.cpp:427:13:427:23 | AppendBytes | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 |
| atl.cpp:427:13:427:23 | AppendBytes | (unsigned short,int) | | dtls1_get_queue_priority | 1 |
+| atl.cpp:427:13:427:23 | AppendBytes | (uv_env_item_t *,int) | | uv_os_free_environ | 1 |
| atl.cpp:427:13:427:23 | AppendBytes | (void *,int) | | DSO_dsobyaddr | 1 |
| atl.cpp:427:13:427:23 | AppendBytes | (void *,int) | | sqlite3_realloc | 1 |
| atl.cpp:427:13:427:23 | AppendBytes | (wchar_t,int) | CStringT | CStringT | 1 |
@@ -1024,6 +1251,7 @@ signatureMatches
| atl.cpp:428:13:428:23 | ArrayToBSTR | (const SAFEARRAY *) | CComSafeArray | operator= | 0 |
| atl.cpp:430:10:430:15 | Attach | (wchar_t *) | CStringT | CStringT | 0 |
| atl.cpp:440:10:440:19 | LoadString | (ASN1_STRING *,unsigned int) | | ossl_asn1_string_set_bits_left | 1 |
+| atl.cpp:440:10:440:19 | LoadString | (Curl_easy *,unsigned int) | | Curl_ssl_supports | 1 |
| atl.cpp:440:10:440:19 | LoadString | (EC_KEY *,unsigned int) | | EC_KEY_set_enc_flags | 1 |
| atl.cpp:440:10:440:19 | LoadString | (EVP_ENCODE_CTX *,unsigned int) | | evp_encode_ctx_set_flags | 1 |
| atl.cpp:440:10:440:19 | LoadString | (FFC_PARAMS *,unsigned int) | | ossl_ffc_params_set_flags | 1 |
@@ -1041,9 +1269,15 @@ signatureMatches
| atl.cpp:440:10:440:19 | LoadString | (X509_STORE_CTX *,unsigned int) | | X509_STORE_CTX_set_current_reasons | 1 |
| atl.cpp:440:10:440:19 | LoadString | (X509_VERIFY_PARAM *,unsigned int) | | X509_VERIFY_PARAM_set_hostflags | 1 |
| atl.cpp:440:10:440:19 | LoadString | (char *,unsigned int) | | utf8_fromunicode | 1 |
+| atl.cpp:440:10:440:19 | LoadString | (char *,unsigned int) | | uv_buf_init | 1 |
+| atl.cpp:440:10:440:19 | LoadString | (const uv__io_t *,unsigned int) | | uv__io_active | 1 |
+| atl.cpp:440:10:440:19 | LoadString | (const uv_buf_t[],unsigned int) | | uv__count_bufs | 1 |
+| atl.cpp:440:10:440:19 | LoadString | (gzFile,unsigned int) | | gzbuffer | 1 |
+| atl.cpp:440:10:440:19 | LoadString | (z_streamp,unsigned int) | | inflate_fast | 1 |
| atl.cpp:441:10:441:19 | LoadString | (UINT) | CComBSTR | LoadString | 0 |
| atl.cpp:441:10:441:19 | LoadString | (UINT) | _U_STRINGorID | _U_STRINGorID | 0 |
| atl.cpp:441:10:441:19 | LoadString | (unsigned int) | | Jim_IntHashFunction | 0 |
+| atl.cpp:441:10:441:19 | LoadString | (unsigned int) | | curlx_uitous | 0 |
| atl.cpp:441:10:441:19 | LoadString | (unsigned int) | | ssl3_get_cipher | 0 |
| atl.cpp:449:15:449:24 | operator+= | (const CComBSTR &) | CComBSTR | Append | 0 |
| atl.cpp:449:15:449:24 | operator+= | (const CComBSTR &) | CComBSTR | CComBSTR | 0 |
@@ -1055,8 +1289,26 @@ signatureMatches
| atl.cpp:544:13:544:15 | Add | (const SAFEARRAY *) | CComSafeArray | Add | 0 |
| atl.cpp:544:13:544:15 | Add | (const SAFEARRAY *) | CComSafeArray | CComSafeArray | 0 |
| atl.cpp:544:13:544:15 | Add | (const SAFEARRAY *) | CComSafeArray | operator= | 0 |
+| atl.cpp:546:13:546:15 | Add | (Curl_easy *,bool) | | Curl_creader_set_rewind | 1 |
+| atl.cpp:546:13:546:15 | Add | (Curl_easy *,bool) | | Curl_set_in_callback | 1 |
| atl.cpp:546:13:546:15 | Add | (const T &,BOOL) | CComSafeArray | Add | 0 |
| atl.cpp:546:13:546:15 | Add | (const T &,BOOL) | CComSafeArray | Add | 1 |
+| atl.cpp:546:13:546:15 | Add | (curl_socket_t[2],bool) | | Curl_eventfd | 1 |
+| atl.cpp:554:8:554:12 | GetAt | (long) | | curlx_sltosi | 0 |
+| atl.cpp:554:8:554:12 | GetAt | (long) | | curlx_sltoui | 0 |
+| atl.cpp:554:8:554:12 | GetAt | (long) | | curlx_sltous | 0 |
+| atl.cpp:565:13:565:17 | SetAt | (Curl_easy *,CURLcode,bool) | | Curl_http_done | 2 |
+| atl.cpp:565:13:565:17 | SetAt | (Curl_easy *,Curl_chunker *,bool) | | Curl_httpchunk_init | 2 |
+| atl.cpp:565:13:565:17 | SetAt | (Curl_easy *,Curl_chunker *,bool) | | Curl_httpchunk_reset | 2 |
+| atl.cpp:565:13:565:17 | SetAt | (Curl_easy *,connectdata *,bool) | | Curl_cpool_disconnect | 2 |
+| atl.cpp:565:13:565:17 | SetAt | (Curl_easy *,connectdata *,bool) | | Curl_on_disconnect | 2 |
+| atl.cpp:565:13:565:17 | SetAt | (Curl_easy *,curltime *,bool) | | Curl_timeleft | 2 |
+| atl.cpp:565:13:565:17 | SetAt | (Curl_easy *,pingpong *,bool) | | Curl_pp_state_timeout | 2 |
+| atl.cpp:565:13:565:17 | SetAt | (Curl_easy *,size_t,bool) | | Curl_bump_headersize | 2 |
+| atl.cpp:565:13:565:17 | SetAt | (GlobalConfig *,timeval *,bool) | | progress_meter | 2 |
+| atl.cpp:567:8:567:17 | operator[] | (long) | | curlx_sltosi | 0 |
+| atl.cpp:567:8:567:17 | operator[] | (long) | | curlx_sltoui | 0 |
+| atl.cpp:567:8:567:17 | operator[] | (long) | | curlx_sltous | 0 |
| atl.cpp:568:8:568:17 | operator[] | (int) | | ASN1_STRING_type_new | 0 |
| atl.cpp:568:8:568:17 | operator[] | (int) | | ASN1_tag2bit | 0 |
| atl.cpp:568:8:568:17 | operator[] | (int) | | ASN1_tag2str | 0 |
@@ -1075,6 +1327,9 @@ signatureMatches
| atl.cpp:568:8:568:17 | operator[] | (int) | | X509_TRUST_get0 | 0 |
| atl.cpp:568:8:568:17 | operator[] | (int) | | X509_TRUST_get_by_id | 0 |
| atl.cpp:568:8:568:17 | operator[] | (int) | | X509_VERIFY_PARAM_get0 | 0 |
+| atl.cpp:568:8:568:17 | operator[] | (int) | | c_tolower | 0 |
+| atl.cpp:568:8:568:17 | operator[] | (int) | | c_toupper | 0 |
+| atl.cpp:568:8:568:17 | operator[] | (int) | | curlx_sitouz | 0 |
| atl.cpp:568:8:568:17 | operator[] | (int) | | evp_pkey_type2name | 0 |
| atl.cpp:568:8:568:17 | operator[] | (int) | | ossl_cmp_bodytype_to_string | 0 |
| atl.cpp:568:8:568:17 | operator[] | (int) | | ossl_tolower | 0 |
@@ -1082,6 +1337,12 @@ signatureMatches
| atl.cpp:568:8:568:17 | operator[] | (int) | | sqlite3_compileoption_get | 0 |
| atl.cpp:568:8:568:17 | operator[] | (int) | | sqlite3_errstr | 0 |
| atl.cpp:568:8:568:17 | operator[] | (int) | | tls13_alert_code | 0 |
+| atl.cpp:568:8:568:17 | operator[] | (int) | | uv__accept | 0 |
+| atl.cpp:568:8:568:17 | operator[] | (int) | | uv_err_name | 0 |
+| atl.cpp:568:8:568:17 | operator[] | (int) | | uv_get_osfhandle | 0 |
+| atl.cpp:568:8:568:17 | operator[] | (int) | | uv_strerror | 0 |
+| atl.cpp:568:8:568:17 | operator[] | (int) | | uv_translate_sys_error | 0 |
+| atl.cpp:568:8:568:17 | operator[] | (int) | | zError | 0 |
| atl.cpp:612:5:612:10 | CPathT | (PCXSTR) | | operator+= | 0 |
| atl.cpp:612:5:612:10 | CPathT | (PCXSTR) | CSimpleStringT | operator+= | 0 |
| atl.cpp:612:5:612:10 | CPathT | (PCXSTR) | CStringT | operator= | 0 |
@@ -1119,6 +1380,9 @@ signatureMatches
| atl.cpp:731:8:731:17 | operator[] | (int) | | X509_TRUST_get0 | 0 |
| atl.cpp:731:8:731:17 | operator[] | (int) | | X509_TRUST_get_by_id | 0 |
| atl.cpp:731:8:731:17 | operator[] | (int) | | X509_VERIFY_PARAM_get0 | 0 |
+| atl.cpp:731:8:731:17 | operator[] | (int) | | c_tolower | 0 |
+| atl.cpp:731:8:731:17 | operator[] | (int) | | c_toupper | 0 |
+| atl.cpp:731:8:731:17 | operator[] | (int) | | curlx_sitouz | 0 |
| atl.cpp:731:8:731:17 | operator[] | (int) | | evp_pkey_type2name | 0 |
| atl.cpp:731:8:731:17 | operator[] | (int) | | ossl_cmp_bodytype_to_string | 0 |
| atl.cpp:731:8:731:17 | operator[] | (int) | | ossl_tolower | 0 |
@@ -1126,6 +1390,12 @@ signatureMatches
| atl.cpp:731:8:731:17 | operator[] | (int) | | sqlite3_compileoption_get | 0 |
| atl.cpp:731:8:731:17 | operator[] | (int) | | sqlite3_errstr | 0 |
| atl.cpp:731:8:731:17 | operator[] | (int) | | tls13_alert_code | 0 |
+| atl.cpp:731:8:731:17 | operator[] | (int) | | uv__accept | 0 |
+| atl.cpp:731:8:731:17 | operator[] | (int) | | uv_err_name | 0 |
+| atl.cpp:731:8:731:17 | operator[] | (int) | | uv_get_osfhandle | 0 |
+| atl.cpp:731:8:731:17 | operator[] | (int) | | uv_strerror | 0 |
+| atl.cpp:731:8:731:17 | operator[] | (int) | | uv_translate_sys_error | 0 |
+| atl.cpp:731:8:731:17 | operator[] | (int) | | zError | 0 |
| atl.cpp:765:10:765:12 | Add | (const deque &,const Allocator &) | deque | deque | 1 |
| atl.cpp:765:10:765:12 | Add | (const forward_list &,const Allocator &) | forward_list | forward_list | 1 |
| atl.cpp:765:10:765:12 | Add | (const list &,const Allocator &) | list | list | 1 |
@@ -1152,6 +1422,9 @@ signatureMatches
| atl.cpp:770:11:770:20 | GetValueAt | (int) | | X509_TRUST_get0 | 0 |
| atl.cpp:770:11:770:20 | GetValueAt | (int) | | X509_TRUST_get_by_id | 0 |
| atl.cpp:770:11:770:20 | GetValueAt | (int) | | X509_VERIFY_PARAM_get0 | 0 |
+| atl.cpp:770:11:770:20 | GetValueAt | (int) | | c_tolower | 0 |
+| atl.cpp:770:11:770:20 | GetValueAt | (int) | | c_toupper | 0 |
+| atl.cpp:770:11:770:20 | GetValueAt | (int) | | curlx_sitouz | 0 |
| atl.cpp:770:11:770:20 | GetValueAt | (int) | | evp_pkey_type2name | 0 |
| atl.cpp:770:11:770:20 | GetValueAt | (int) | | ossl_cmp_bodytype_to_string | 0 |
| atl.cpp:770:11:770:20 | GetValueAt | (int) | | ossl_tolower | 0 |
@@ -1159,6 +1432,12 @@ signatureMatches
| atl.cpp:770:11:770:20 | GetValueAt | (int) | | sqlite3_compileoption_get | 0 |
| atl.cpp:770:11:770:20 | GetValueAt | (int) | | sqlite3_errstr | 0 |
| atl.cpp:770:11:770:20 | GetValueAt | (int) | | tls13_alert_code | 0 |
+| atl.cpp:770:11:770:20 | GetValueAt | (int) | | uv__accept | 0 |
+| atl.cpp:770:11:770:20 | GetValueAt | (int) | | uv_err_name | 0 |
+| atl.cpp:770:11:770:20 | GetValueAt | (int) | | uv_get_osfhandle | 0 |
+| atl.cpp:770:11:770:20 | GetValueAt | (int) | | uv_strerror | 0 |
+| atl.cpp:770:11:770:20 | GetValueAt | (int) | | uv_translate_sys_error | 0 |
+| atl.cpp:770:11:770:20 | GetValueAt | (int) | | zError | 0 |
| atl.cpp:776:10:776:14 | SetAt | (const deque &,const Allocator &) | deque | deque | 1 |
| atl.cpp:776:10:776:14 | SetAt | (const forward_list &,const Allocator &) | forward_list | forward_list | 1 |
| atl.cpp:776:10:776:14 | SetAt | (const list &,const Allocator &) | list | list | 1 |
@@ -1181,6 +1460,8 @@ signatureMatches
| atl.cpp:777:10:777:19 | SetAtIndex | (size_type,const T &,const Allocator &) | vector | vector | 2 |
| atl.cpp:821:17:821:28 | Canonicalize | (unsigned long) | | BN_num_bits_word | 0 |
| atl.cpp:821:17:821:28 | Canonicalize | (unsigned long) | | BUF_MEM_new_ex | 0 |
+| atl.cpp:821:17:821:28 | Canonicalize | (unsigned long) | | curlx_ultouc | 0 |
+| atl.cpp:821:17:821:28 | Canonicalize | (unsigned long) | | curlx_ultous | 0 |
| atl.cpp:824:10:824:17 | CrackUrl | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_cert_flags | 1 |
| atl.cpp:824:10:824:17 | CrackUrl | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_flags | 1 |
| atl.cpp:824:10:824:17 | CrackUrl | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_nm_flags | 1 |
@@ -1218,6 +1499,9 @@ signatureMatches
| atl.cpp:825:17:825:25 | CreateUrl | (unsigned char *,int,unsigned long) | | UTF8_putc | 2 |
| atl.cpp:842:17:842:28 | SetExtraInfo | (LPCTSTR) | _U_STRINGorID | _U_STRINGorID | 0 |
| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | BIO_gethostbyname | 0 |
+| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | Curl_copy_header_value | 0 |
+| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | Curl_get_scheme_handler | 0 |
+| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | Curl_getdate_capped | 0 |
| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | Jim_StrDup | 0 |
| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | OPENSSL_LH_strhash | 0 |
| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 |
@@ -1228,12 +1512,19 @@ signatureMatches
| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | X509_LOOKUP_meth_new | 0 |
| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | a2i_IPADDRESS | 0 |
| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | a2i_IPADDRESS_NC | 0 |
+| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | last_component | 0 |
| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | opt_path_end | 0 |
| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | opt_progname | 0 |
| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | ossl_lh_strcasehash | 0 |
| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | strhash | 0 |
+| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | uc_script_byname | 0 |
+| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | uv__strdup | 0 |
+| atl.cpp:842:17:842:28 | SetExtraInfo | (const char *) | | uv_wtf8_length_as_utf16 | 0 |
| atl.cpp:843:17:843:27 | SetHostName | (LPCTSTR) | _U_STRINGorID | _U_STRINGorID | 0 |
| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | BIO_gethostbyname | 0 |
+| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | Curl_copy_header_value | 0 |
+| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | Curl_get_scheme_handler | 0 |
+| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | Curl_getdate_capped | 0 |
| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | Jim_StrDup | 0 |
| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | OPENSSL_LH_strhash | 0 |
| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 |
@@ -1244,12 +1535,19 @@ signatureMatches
| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | X509_LOOKUP_meth_new | 0 |
| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | a2i_IPADDRESS | 0 |
| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | a2i_IPADDRESS_NC | 0 |
+| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | last_component | 0 |
| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | opt_path_end | 0 |
| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | opt_progname | 0 |
| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | ossl_lh_strcasehash | 0 |
| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | strhash | 0 |
+| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | uc_script_byname | 0 |
+| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | uv__strdup | 0 |
+| atl.cpp:843:17:843:27 | SetHostName | (const char *) | | uv_wtf8_length_as_utf16 | 0 |
| atl.cpp:844:17:844:27 | SetPassword | (LPCTSTR) | _U_STRINGorID | _U_STRINGorID | 0 |
| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | BIO_gethostbyname | 0 |
+| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | Curl_copy_header_value | 0 |
+| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | Curl_get_scheme_handler | 0 |
+| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | Curl_getdate_capped | 0 |
| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | Jim_StrDup | 0 |
| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | OPENSSL_LH_strhash | 0 |
| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 |
@@ -1260,12 +1558,19 @@ signatureMatches
| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | X509_LOOKUP_meth_new | 0 |
| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | a2i_IPADDRESS | 0 |
| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | a2i_IPADDRESS_NC | 0 |
+| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | last_component | 0 |
| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | opt_path_end | 0 |
| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | opt_progname | 0 |
| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | ossl_lh_strcasehash | 0 |
| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | strhash | 0 |
+| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | uc_script_byname | 0 |
+| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | uv__strdup | 0 |
+| atl.cpp:844:17:844:27 | SetPassword | (const char *) | | uv_wtf8_length_as_utf16 | 0 |
| atl.cpp:847:17:847:29 | SetSchemeName | (LPCTSTR) | _U_STRINGorID | _U_STRINGorID | 0 |
| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | BIO_gethostbyname | 0 |
+| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | Curl_copy_header_value | 0 |
+| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | Curl_get_scheme_handler | 0 |
+| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | Curl_getdate_capped | 0 |
| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | Jim_StrDup | 0 |
| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | OPENSSL_LH_strhash | 0 |
| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 |
@@ -1276,12 +1581,19 @@ signatureMatches
| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | X509_LOOKUP_meth_new | 0 |
| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | a2i_IPADDRESS | 0 |
| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | a2i_IPADDRESS_NC | 0 |
+| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | last_component | 0 |
| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | opt_path_end | 0 |
| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | opt_progname | 0 |
| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | ossl_lh_strcasehash | 0 |
| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | strhash | 0 |
+| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | uc_script_byname | 0 |
+| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | uv__strdup | 0 |
+| atl.cpp:847:17:847:29 | SetSchemeName | (const char *) | | uv_wtf8_length_as_utf16 | 0 |
| atl.cpp:848:17:848:26 | SetUrlPath | (LPCTSTR) | _U_STRINGorID | _U_STRINGorID | 0 |
| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | BIO_gethostbyname | 0 |
+| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | Curl_copy_header_value | 0 |
+| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | Curl_get_scheme_handler | 0 |
+| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | Curl_getdate_capped | 0 |
| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | Jim_StrDup | 0 |
| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | OPENSSL_LH_strhash | 0 |
| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 |
@@ -1292,12 +1604,19 @@ signatureMatches
| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | X509_LOOKUP_meth_new | 0 |
| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | a2i_IPADDRESS | 0 |
| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | a2i_IPADDRESS_NC | 0 |
+| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | last_component | 0 |
| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | opt_path_end | 0 |
| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | opt_progname | 0 |
| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | ossl_lh_strcasehash | 0 |
| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | strhash | 0 |
+| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | uc_script_byname | 0 |
+| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | uv__strdup | 0 |
+| atl.cpp:848:17:848:26 | SetUrlPath | (const char *) | | uv_wtf8_length_as_utf16 | 0 |
| atl.cpp:849:17:849:27 | SetUserName | (LPCTSTR) | _U_STRINGorID | _U_STRINGorID | 0 |
| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | BIO_gethostbyname | 0 |
+| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | Curl_copy_header_value | 0 |
+| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | Curl_get_scheme_handler | 0 |
+| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | Curl_getdate_capped | 0 |
| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | Jim_StrDup | 0 |
| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | OPENSSL_LH_strhash | 0 |
| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 |
@@ -1308,10 +1627,14 @@ signatureMatches
| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | X509_LOOKUP_meth_new | 0 |
| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | a2i_IPADDRESS | 0 |
| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | a2i_IPADDRESS_NC | 0 |
+| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | last_component | 0 |
| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | opt_path_end | 0 |
| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | opt_progname | 0 |
| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | ossl_lh_strcasehash | 0 |
| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | strhash | 0 |
+| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | uc_script_byname | 0 |
+| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | uv__strdup | 0 |
+| atl.cpp:849:17:849:27 | SetUserName | (const char *) | | uv_wtf8_length_as_utf16 | 0 |
| atl.cpp:915:5:915:18 | CSimpleStringT | (const XCHAR *,int,IAtlStringMgr *) | CSimpleStringT | CSimpleStringT | 0 |
| atl.cpp:915:5:915:18 | CSimpleStringT | (const XCHAR *,int,IAtlStringMgr *) | CSimpleStringT | CSimpleStringT | 1 |
| atl.cpp:915:5:915:18 | CSimpleStringT | (const XCHAR *,int,IAtlStringMgr *) | CSimpleStringT | CSimpleStringT | 2 |
@@ -1351,6 +1674,8 @@ signatureMatches
| atl.cpp:922:10:922:15 | Append | (BIO *,int) | | TXT_DB_read | 1 |
| atl.cpp:922:10:922:15 | Append | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 |
| atl.cpp:922:10:922:15 | Append | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 |
+| atl.cpp:922:10:922:15 | Append | (CURL *,int) | | curl_easy_pause | 1 |
+| atl.cpp:922:10:922:15 | Append | (Curl_easy *,int) | | Curl_conn_get_socket | 1 |
| atl.cpp:922:10:922:15 | Append | (DH *,int) | | DH_clear_flags | 1 |
| atl.cpp:922:10:922:15 | Append | (DH *,int) | | DH_set_flags | 1 |
| atl.cpp:922:10:922:15 | Append | (DH_METHOD *,int) | | DH_meth_set_flags | 1 |
@@ -1394,6 +1719,17 @@ signatureMatches
| atl.cpp:922:10:922:15 | Append | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 |
| atl.cpp:922:10:922:15 | Append | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 |
| atl.cpp:922:10:922:15 | Append | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 |
+| atl.cpp:922:10:922:15 | Append | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 |
+| atl.cpp:922:10:922:15 | Append | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 |
+| atl.cpp:922:10:922:15 | Append | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 |
+| atl.cpp:922:10:922:15 | Append | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 |
+| atl.cpp:922:10:922:15 | Append | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 |
+| atl.cpp:922:10:922:15 | Append | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 |
+| atl.cpp:922:10:922:15 | Append | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 |
+| atl.cpp:922:10:922:15 | Append | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 |
+| atl.cpp:922:10:922:15 | Append | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 |
+| atl.cpp:922:10:922:15 | Append | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 |
+| atl.cpp:922:10:922:15 | Append | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 |
| atl.cpp:922:10:922:15 | Append | (LPCOLESTR,int) | CComBSTR | Append | 1 |
| atl.cpp:922:10:922:15 | Append | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 |
| atl.cpp:922:10:922:15 | Append | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 |
@@ -1511,8 +1847,10 @@ signatureMatches
| atl.cpp:922:10:922:15 | Append | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 |
| atl.cpp:922:10:922:15 | Append | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 |
| atl.cpp:922:10:922:15 | Append | (acttab *,int) | | acttab_insert | 1 |
+| atl.cpp:922:10:922:15 | Append | (char *,int) | | Curl_str2addr | 1 |
| atl.cpp:922:10:922:15 | Append | (char *,int) | | PEM_proc_type | 1 |
| atl.cpp:922:10:922:15 | Append | (char,int) | CStringT | CStringT | 1 |
+| atl.cpp:922:10:922:15 | Append | (connectdata *,int) | | Curl_conn_is_ssl | 1 |
| atl.cpp:922:10:922:15 | Append | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 |
| atl.cpp:922:10:922:15 | Append | (const BIGNUM *,int) | | BN_get_flags | 1 |
| atl.cpp:922:10:922:15 | Append | (const BIGNUM *,int) | | BN_is_bit_set | 1 |
@@ -1579,12 +1917,22 @@ signatureMatches
| atl.cpp:922:10:922:15 | Append | (const unsigned char *,int) | | Jim_GenHashFunction | 1 |
| atl.cpp:922:10:922:15 | Append | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 |
| atl.cpp:922:10:922:15 | Append | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 |
+| atl.cpp:922:10:922:15 | Append | (dynhds *,int) | | Curl_dynhds_set_opts | 1 |
+| atl.cpp:922:10:922:15 | Append | (gzFile,int) | | gzflush | 1 |
+| atl.cpp:922:10:922:15 | Append | (gzFile,int) | | gzputc | 1 |
| atl.cpp:922:10:922:15 | Append | (int *,int) | | X509_PURPOSE_set | 1 |
| atl.cpp:922:10:922:15 | Append | (int *,int) | | X509_TRUST_set | 1 |
| atl.cpp:922:10:922:15 | Append | (int,int) | | BN_security_bits | 1 |
| atl.cpp:922:10:922:15 | Append | (int,int) | | EVP_MD_meth_new | 1 |
| atl.cpp:922:10:922:15 | Append | (int,int) | | EVP_PKEY_meth_new | 1 |
| atl.cpp:922:10:922:15 | Append | (int,int) | | acttab_alloc | 1 |
+| atl.cpp:922:10:922:15 | Append | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 |
+| atl.cpp:922:10:922:15 | Append | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 |
+| atl.cpp:922:10:922:15 | Append | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 |
+| atl.cpp:922:10:922:15 | Append | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 |
+| atl.cpp:922:10:922:15 | Append | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 |
+| atl.cpp:922:10:922:15 | Append | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 |
+| atl.cpp:922:10:922:15 | Append | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 |
| atl.cpp:922:10:922:15 | Append | (rule *,int) | | Configlist_add | 1 |
| atl.cpp:922:10:922:15 | Append | (rule *,int) | | Configlist_addbasis | 1 |
| atl.cpp:922:10:922:15 | Append | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 |
@@ -1619,6 +1967,7 @@ signatureMatches
| atl.cpp:922:10:922:15 | Append | (unsigned char *,int) | | RAND_priv_bytes | 1 |
| atl.cpp:922:10:922:15 | Append | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 |
| atl.cpp:922:10:922:15 | Append | (unsigned short,int) | | dtls1_get_queue_priority | 1 |
+| atl.cpp:922:10:922:15 | Append | (uv_env_item_t *,int) | | uv_os_free_environ | 1 |
| atl.cpp:922:10:922:15 | Append | (void *,int) | | DSO_dsobyaddr | 1 |
| atl.cpp:922:10:922:15 | Append | (void *,int) | | sqlite3_realloc | 1 |
| atl.cpp:922:10:922:15 | Append | (wchar_t,int) | CStringT | CStringT | 1 |
@@ -1650,6 +1999,11 @@ signatureMatches
| atl.cpp:927:17:927:25 | CopyChars | (BIO *,const RSA *,int) | | RSA_print | 2 |
| atl.cpp:927:17:927:25 | CopyChars | (CERT *,X509_STORE **,int) | | ssl_cert_get_cert_store | 2 |
| atl.cpp:927:17:927:25 | CopyChars | (CRYPTO_THREAD_ROUTINE,void *,int) | | ossl_crypto_thread_native_start | 2 |
+| atl.cpp:927:17:927:25 | CopyChars | (Curl_easy *,connectdata *,int) | | Curl_conn_cf_discard_all | 2 |
+| atl.cpp:927:17:927:25 | CopyChars | (Curl_easy *,connectdata *,int) | | Curl_http2_may_switch | 2 |
+| atl.cpp:927:17:927:25 | CopyChars | (Curl_easy *,connectdata *,int) | | Curl_http2_switch | 2 |
+| atl.cpp:927:17:927:25 | CopyChars | (Curl_easy *,connectdata *,int) | | Curl_ssl_cfilter_add | 2 |
+| atl.cpp:927:17:927:25 | CopyChars | (Curl_sockaddr_ex *,const Curl_addrinfo *,int) | | Curl_sock_assign_addr | 2 |
| atl.cpp:927:17:927:25 | CopyChars | (DH *,const OSSL_PARAM[],int) | | ossl_dh_key_fromdata | 2 |
| atl.cpp:927:17:927:25 | CopyChars | (DSA *,const OSSL_PARAM[],int) | | ossl_dsa_key_fromdata | 2 |
| atl.cpp:927:17:927:25 | CopyChars | (ECX_KEY *,const OSSL_PARAM[],int) | | ossl_ecx_key_fromdata | 2 |
@@ -1692,6 +2046,8 @@ signatureMatches
| atl.cpp:927:17:927:25 | CopyChars | (Jim_Interp *,const char *,int) | | Jim_NewStringObj | 2 |
| atl.cpp:927:17:927:25 | CopyChars | (Jim_Interp *,const char *,int) | | Jim_NewStringObjUtf8 | 1 |
| atl.cpp:927:17:927:25 | CopyChars | (Jim_Interp *,const char *,int) | | Jim_NewStringObjUtf8 | 2 |
+| atl.cpp:927:17:927:25 | CopyChars | (LIBSSH2_SESSION *,int,int) | | libssh2_session_flag | 2 |
+| atl.cpp:927:17:927:25 | CopyChars | (LIBSSH2_SFTP_HANDLE *,LIBSSH2_SFTP_ATTRIBUTES *,int) | | libssh2_sftp_fstat_ex | 2 |
| atl.cpp:927:17:927:25 | CopyChars | (OCSP_BASICRESP *,OCSP_CERTID *,int) | | OCSP_resp_find | 2 |
| atl.cpp:927:17:927:25 | CopyChars | (OCSP_BASICRESP *,X509_EXTENSION *,int) | | OCSP_BASICRESP_add_ext | 2 |
| atl.cpp:927:17:927:25 | CopyChars | (OCSP_BASICRESP *,const ASN1_OBJECT *,int) | | OCSP_BASICRESP_get_ext_by_OBJ | 2 |
@@ -1792,6 +2148,7 @@ signatureMatches
| atl.cpp:927:17:927:25 | CopyChars | (const CMS_SignerInfo *,const ASN1_OBJECT *,int) | | CMS_unsigned_get_attr_by_OBJ | 2 |
| atl.cpp:927:17:927:25 | CopyChars | (const CMS_SignerInfo *,int,int) | | CMS_signed_get_attr_by_NID | 2 |
| atl.cpp:927:17:927:25 | CopyChars | (const CMS_SignerInfo *,int,int) | | CMS_unsigned_get_attr_by_NID | 2 |
+| atl.cpp:927:17:927:25 | CopyChars | (const Curl_easy *,const connectdata *,int) | | Curl_conn_is_http2 | 2 |
| atl.cpp:927:17:927:25 | CopyChars | (const EVP_MD *,const EVP_MD *,int) | | ossl_rsa_pss_params_create | 2 |
| atl.cpp:927:17:927:25 | CopyChars | (const EVP_PKEY *,const ASN1_OBJECT *,int) | | EVP_PKEY_get_attr_by_OBJ | 2 |
| atl.cpp:927:17:927:25 | CopyChars | (const EVP_PKEY *,int,int) | | EVP_PKEY_get_attr_by_NID | 2 |
@@ -1821,6 +2178,7 @@ signatureMatches
| atl.cpp:927:17:927:25 | CopyChars | (const X509_REVOKED *,int,int) | | X509_REVOKED_get_ext_by_critical | 2 |
| atl.cpp:927:17:927:25 | CopyChars | (const X509_SIG *,const char *,int) | | PKCS8_decrypt | 1 |
| atl.cpp:927:17:927:25 | CopyChars | (const X509_SIG *,const char *,int) | | PKCS8_decrypt | 2 |
+| atl.cpp:927:17:927:25 | CopyChars | (const char *,char **,int) | | idn2_to_ascii_8z | 2 |
| atl.cpp:927:17:927:25 | CopyChars | (const char *,const OSSL_PARAM *,int) | | print_param_types | 2 |
| atl.cpp:927:17:927:25 | CopyChars | (const char *,const char *,int) | | CRYPTO_strdup | 1 |
| atl.cpp:927:17:927:25 | CopyChars | (const char *,const char *,int) | | CRYPTO_strdup | 2 |
@@ -1833,9 +2191,16 @@ signatureMatches
| atl.cpp:927:17:927:25 | CopyChars | (const stack_st_X509_EXTENSION *,const ASN1_OBJECT *,int) | | X509v3_get_ext_by_OBJ | 2 |
| atl.cpp:927:17:927:25 | CopyChars | (const stack_st_X509_EXTENSION *,int,int) | | X509v3_get_ext_by_NID | 2 |
| atl.cpp:927:17:927:25 | CopyChars | (const stack_st_X509_EXTENSION *,int,int) | | X509v3_get_ext_by_critical | 2 |
+| atl.cpp:927:17:927:25 | CopyChars | (const uint8_t *,uint8_t **,int) | | idn2_lookup_u8 | 2 |
| atl.cpp:927:17:927:25 | CopyChars | (const unsigned char **,unsigned int,int) | | ossl_b2i_DSA_after_header | 2 |
| atl.cpp:927:17:927:25 | CopyChars | (const unsigned char **,unsigned int,int) | | ossl_b2i_RSA_after_header | 2 |
| atl.cpp:927:17:927:25 | CopyChars | (const void *,const void *,int) | | ossl_is_partially_overlapping | 2 |
+| atl.cpp:927:17:927:25 | CopyChars | (curl_mimepart *,curl_mime *,int) | | Curl_mime_set_subparts | 2 |
+| atl.cpp:927:17:927:25 | CopyChars | (curl_mimepart *,curl_slist *,int) | | curl_mime_headers | 2 |
+| atl.cpp:927:17:927:25 | CopyChars | (gzFile,char *,int) | | gzgets | 2 |
+| atl.cpp:927:17:927:25 | CopyChars | (gzFile,int,int) | | gzsetparams | 2 |
+| atl.cpp:927:17:927:25 | CopyChars | (gzFile,off64_t,int) | | gzseek64 | 2 |
+| atl.cpp:927:17:927:25 | CopyChars | (gzFile,off_t,int) | | gzseek | 2 |
| atl.cpp:927:17:927:25 | CopyChars | (int,BIO_ADDR *,int) | | BIO_accept_ex | 2 |
| atl.cpp:927:17:927:25 | CopyChars | (int,int,int) | | ASN1_object_size | 2 |
| atl.cpp:927:17:927:25 | CopyChars | (int,int,int) | | EVP_CIPHER_meth_new | 2 |
@@ -1873,8 +2238,16 @@ signatureMatches
| atl.cpp:927:17:927:25 | CopyChars | (unsigned int,int,int) | | ossl_blob_length | 2 |
| atl.cpp:927:17:927:25 | CopyChars | (unsigned long *,const BIGNUM *,int) | | bn_copy_words | 2 |
| atl.cpp:927:17:927:25 | CopyChars | (unsigned long *,const unsigned long *,int) | | bn_sqr_words | 2 |
+| atl.cpp:927:17:927:25 | CopyChars | (uv__io_t *,uv__io_cb,int) | | uv__io_init | 2 |
+| atl.cpp:927:17:927:25 | CopyChars | (uv_loop_t *,uv_fs_t *,int) | | uv__iou_fs_read_or_write | 2 |
+| atl.cpp:927:17:927:25 | CopyChars | (uv_loop_t *,uv_pipe_t *,int) | | uv_pipe_init | 2 |
+| atl.cpp:927:17:927:25 | CopyChars | (uv_loop_t *,uv_poll_t *,int) | | uv_poll_init | 2 |
+| atl.cpp:927:17:927:25 | CopyChars | (uv_signal_t *,uv_signal_cb,int) | | uv_signal_start | 2 |
+| atl.cpp:927:17:927:25 | CopyChars | (uv_signal_t *,uv_signal_cb,int) | | uv_signal_start_oneshot | 2 |
+| atl.cpp:927:17:927:25 | CopyChars | (uv_stream_t *,int,int) | | uv__stream_open | 2 |
| atl.cpp:927:17:927:25 | CopyChars | (void *,const char *,int) | | CRYPTO_secure_free | 1 |
| atl.cpp:927:17:927:25 | CopyChars | (void *,const char *,int) | | CRYPTO_secure_free | 2 |
+| atl.cpp:927:17:927:25 | CopyChars | (void *,curl_off_t,int) | | tool_mime_stdin_seek | 2 |
| atl.cpp:928:17:928:25 | CopyChars | (BIGNUM *,const BIGNUM *,const BIGNUM *,int) | | ossl_rsa_check_pminusq_diff | 3 |
| atl.cpp:928:17:928:25 | CopyChars | (BIGNUM *,int,int,int) | | BN_bntest_rand | 3 |
| atl.cpp:928:17:928:25 | CopyChars | (BIGNUM *,int,int,int) | | BN_priv_rand | 3 |
@@ -1891,6 +2264,7 @@ signatureMatches
| atl.cpp:928:17:928:25 | CopyChars | (BIO *,const unsigned char *,long,int) | | ASN1_parse | 3 |
| atl.cpp:928:17:928:25 | CopyChars | (BIO *,int,const ASN1_TYPE *,int) | | ossl_print_attribute_value | 3 |
| atl.cpp:928:17:928:25 | CopyChars | (BIO *,void *,int,int) | | app_http_tls_cb | 3 |
+| atl.cpp:928:17:928:25 | CopyChars | (BrotliDistanceParams *,uint32_t,uint32_t,int) | | BrotliInitDistanceParams | 3 |
| atl.cpp:928:17:928:25 | CopyChars | (CERT *,const int *,size_t,int) | | tls1_set_sigalgs | 3 |
| atl.cpp:928:17:928:25 | CopyChars | (CERT *,const uint16_t *,size_t,int) | | tls1_set_raw_sigalgs | 3 |
| atl.cpp:928:17:928:25 | CopyChars | (DH *,OSSL_PARAM_BLD *,OSSL_PARAM[],int) | | ossl_dh_key_todata | 3 |
@@ -1908,6 +2282,11 @@ signatureMatches
| atl.cpp:928:17:928:25 | CopyChars | (Jim_Interp *,Jim_Obj *,const char *,int) | | Jim_AppendString | 3 |
| atl.cpp:928:17:928:25 | CopyChars | (Jim_Interp *,Jim_Obj *,const char *,int) | | Jim_ListJoin | 2 |
| atl.cpp:928:17:928:25 | CopyChars | (Jim_Interp *,Jim_Obj *,const char *,int) | | Jim_ListJoin | 3 |
+| atl.cpp:928:17:928:25 | CopyChars | (LIBSSH2_SESSION *,char **,int *,int) | | libssh2_session_last_error | 3 |
+| atl.cpp:928:17:928:25 | CopyChars | (LIBSSH2_SESSION *,const char *,const char *,int) | | libssh2_channel_direct_streamlocal_ex | 2 |
+| atl.cpp:928:17:928:25 | CopyChars | (LIBSSH2_SESSION *,const char *,const char *,int) | | libssh2_channel_direct_streamlocal_ex | 3 |
+| atl.cpp:928:17:928:25 | CopyChars | (LIBSSH2_SESSION *,int,const char *,int) | | _libssh2_error_flags | 2 |
+| atl.cpp:928:17:928:25 | CopyChars | (LIBSSH2_SESSION *,int,const char *,int) | | _libssh2_error_flags | 3 |
| atl.cpp:928:17:928:25 | CopyChars | (OSSL_CMP_CTX *,const OSSL_CMP_MSG *,ossl_cmp_allow_unprotected_cb_t,int) | | ossl_cmp_msg_check_update | 3 |
| atl.cpp:928:17:928:25 | CopyChars | (OSSL_CMP_CTX *,const OSSL_CMP_PKISI *,const OSSL_CRMF_CERTID *,int) | | ossl_cmp_rp_new | 3 |
| atl.cpp:928:17:928:25 | CopyChars | (OSSL_LIB_CTX *,const char *,OSSL_PARAM *,int) | | OSSL_PROVIDER_try_load_ex | 3 |
@@ -1935,6 +2314,8 @@ signatureMatches
| atl.cpp:928:17:928:25 | CopyChars | (XCHAR *,size_t,const XCHAR *,int) | CSimpleStringT | CopyChars | 1 |
| atl.cpp:928:17:928:25 | CopyChars | (XCHAR *,size_t,const XCHAR *,int) | CSimpleStringT | CopyChars | 2 |
| atl.cpp:928:17:928:25 | CopyChars | (XCHAR *,size_t,const XCHAR *,int) | CSimpleStringT | CopyChars | 3 |
+| atl.cpp:928:17:928:25 | CopyChars | (bufq *,bufc_pool *,size_t,int) | | Curl_bufq_initp | 3 |
+| atl.cpp:928:17:928:25 | CopyChars | (bufq *,size_t,size_t,int) | | Curl_bufq_init2 | 3 |
| atl.cpp:928:17:928:25 | CopyChars | (char *,int,const ASN1_OBJECT *,int) | | OBJ_obj2txt | 3 |
| atl.cpp:928:17:928:25 | CopyChars | (const DH *,unsigned char **,size_t,int) | | ossl_dh_key2buf | 3 |
| atl.cpp:928:17:928:25 | CopyChars | (const EVP_MD *,const X509 *,const stack_st_X509 *,int) | | OSSL_ESS_signing_cert_v2_new_init | 3 |
@@ -1942,6 +2323,7 @@ signatureMatches
| atl.cpp:928:17:928:25 | CopyChars | (const X509_NAME *,int,char *,int) | | X509_NAME_get_text_by_NID | 3 |
| atl.cpp:928:17:928:25 | CopyChars | (const char *,BIO *,BIO *,int) | | X509_CRL_load_http | 3 |
| atl.cpp:928:17:928:25 | CopyChars | (const char *,BIO *,BIO *,int) | | X509_load_http | 3 |
+| atl.cpp:928:17:928:25 | CopyChars | (const char *,const char *,char **,int) | | idn2_register_ul | 3 |
| atl.cpp:928:17:928:25 | CopyChars | (const char *,const char *,const char *,int) | | OSSL_HTTP_adapt_proxy | 2 |
| atl.cpp:928:17:928:25 | CopyChars | (const char *,const char *,const char *,int) | | OSSL_HTTP_adapt_proxy | 3 |
| atl.cpp:928:17:928:25 | CopyChars | (const char *,int,int,int) | | append_str | 3 |
@@ -1950,6 +2332,7 @@ signatureMatches
| atl.cpp:928:17:928:25 | CopyChars | (const char *,size_t,const char *,int) | | CRYPTO_strndup | 3 |
| atl.cpp:928:17:928:25 | CopyChars | (const char *,sqlite3_filename,const char *,int) | | sqlite3_uri_boolean | 2 |
| atl.cpp:928:17:928:25 | CopyChars | (const char *,sqlite3_filename,const char *,int) | | sqlite3_uri_boolean | 3 |
+| atl.cpp:928:17:928:25 | CopyChars | (const uint8_t *,const uint8_t *,uint8_t **,int) | | idn2_register_u8 | 3 |
| atl.cpp:928:17:928:25 | CopyChars | (const unsigned char *,unsigned char *,RC2_KEY *,int) | | RC2_ecb_encrypt | 3 |
| atl.cpp:928:17:928:25 | CopyChars | (const unsigned char *,unsigned char *,const BF_KEY *,int) | | BF_ecb_encrypt | 3 |
| atl.cpp:928:17:928:25 | CopyChars | (const unsigned char *,unsigned char *,const CAST_KEY *,int) | | CAST_ecb_encrypt | 3 |
@@ -1957,12 +2340,22 @@ signatureMatches
| atl.cpp:928:17:928:25 | CopyChars | (const void *,size_t,const char *,int) | | CRYPTO_memdup | 1 |
| atl.cpp:928:17:928:25 | CopyChars | (const void *,size_t,const char *,int) | | CRYPTO_memdup | 2 |
| atl.cpp:928:17:928:25 | CopyChars | (const void *,size_t,const char *,int) | | CRYPTO_memdup | 3 |
+| atl.cpp:928:17:928:25 | CopyChars | (deflate_state *,charf *,ulg,int) | | _tr_flush_block | 3 |
+| atl.cpp:928:17:928:25 | CopyChars | (deflate_state *,charf *,ulg,int) | | _tr_stored_block | 3 |
| atl.cpp:928:17:928:25 | CopyChars | (int,ENGINE *,const unsigned char *,int) | | EVP_PKEY_new_mac_key | 3 |
+| atl.cpp:928:17:928:25 | CopyChars | (int,const void *,const char *,int) | | Curl_ip2addr | 2 |
+| atl.cpp:928:17:928:25 | CopyChars | (int,const void *,const char *,int) | | Curl_ip2addr | 3 |
| atl.cpp:928:17:928:25 | CopyChars | (int,int *,int *,int) | | sqlite3_status | 3 |
| atl.cpp:928:17:928:25 | CopyChars | (int,int,const unsigned char *,int) | | PKCS5_pbe_set | 3 |
| atl.cpp:928:17:928:25 | CopyChars | (int,sqlite3_int64 *,sqlite3_int64 *,int) | | sqlite3_status64 | 3 |
+| atl.cpp:928:17:928:25 | CopyChars | (nghttp2_bufs *,nghttp2_frame_hd *,size_t,int) | | nghttp2_frame_add_pad | 3 |
+| atl.cpp:928:17:928:25 | CopyChars | (nghttp2_priority_spec *,int32_t,int32_t,int) | | nghttp2_priority_spec_init | 3 |
+| atl.cpp:928:17:928:25 | CopyChars | (nghttp2_session *,int32_t,const nghttp2_extpri *,int) | | nghttp2_session_change_extpri_stream_priority | 3 |
+| atl.cpp:928:17:928:25 | CopyChars | (nghttp2_session *,nghttp2_stream *,size_t,int) | | nghttp2_session_update_recv_stream_window_size | 3 |
| atl.cpp:928:17:928:25 | CopyChars | (sqlite3_blob *,const void *,int,int) | | sqlite3_blob_write | 3 |
| atl.cpp:928:17:928:25 | CopyChars | (sqlite3_blob *,void *,int,int) | | sqlite3_blob_read | 3 |
+| atl.cpp:928:17:928:25 | CopyChars | (ssl_peer *,Curl_cfilter *,const char *,int) | | Curl_ssl_peer_init | 2 |
+| atl.cpp:928:17:928:25 | CopyChars | (ssl_peer *,Curl_cfilter *,const char *,int) | | Curl_ssl_peer_init | 3 |
| atl.cpp:928:17:928:25 | CopyChars | (stack_st_PKCS12_SAFEBAG **,int,const unsigned char *,int) | | PKCS12_add_secret | 3 |
| atl.cpp:928:17:928:25 | CopyChars | (uint8_t *,unsigned char *,uint64_t,int) | | ossl_quic_vlint_encode_n | 3 |
| atl.cpp:928:17:928:25 | CopyChars | (unsigned char **,X509_ALGOR *,ASN1_OCTET_STRING *,int) | | CMS_SharedInfo_encode | 3 |
@@ -1974,6 +2367,8 @@ signatureMatches
| atl.cpp:928:17:928:25 | CopyChars | (unsigned char *,int,const unsigned char *,int) | | RSA_padding_add_none | 3 |
| atl.cpp:928:17:928:25 | CopyChars | (unsigned long *,unsigned long *,unsigned long *,int) | | bn_mul_low_normal | 3 |
| atl.cpp:928:17:928:25 | CopyChars | (unsigned long,BIGNUM *,BIGNUM *,int) | | BN_consttime_swap | 3 |
+| atl.cpp:928:17:928:25 | CopyChars | (uv_loop_t *,uv_fs_t *,int,int) | | uv__iou_fs_statx | 3 |
+| atl.cpp:928:17:928:25 | CopyChars | (uv_loop_t *,uv_udp_t *,unsigned int,int) | | uv__udp_init_ex | 3 |
| atl.cpp:928:17:928:25 | CopyChars | (void *,const ASN1_ITEM *,int,int) | | PKCS12_item_pack_safebag | 3 |
| atl.cpp:928:17:928:25 | CopyChars | (void *,size_t,const char *,int) | | CRYPTO_secure_clear_free | 1 |
| atl.cpp:928:17:928:25 | CopyChars | (void *,size_t,const char *,int) | | CRYPTO_secure_clear_free | 2 |
@@ -2003,6 +2398,11 @@ signatureMatches
| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (BIO *,const RSA *,int) | | RSA_print | 2 |
| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (CERT *,X509_STORE **,int) | | ssl_cert_get_cert_store | 2 |
| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (CRYPTO_THREAD_ROUTINE,void *,int) | | ossl_crypto_thread_native_start | 2 |
+| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (Curl_easy *,connectdata *,int) | | Curl_conn_cf_discard_all | 2 |
+| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (Curl_easy *,connectdata *,int) | | Curl_http2_may_switch | 2 |
+| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (Curl_easy *,connectdata *,int) | | Curl_http2_switch | 2 |
+| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (Curl_easy *,connectdata *,int) | | Curl_ssl_cfilter_add | 2 |
+| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (Curl_sockaddr_ex *,const Curl_addrinfo *,int) | | Curl_sock_assign_addr | 2 |
| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (DH *,const OSSL_PARAM[],int) | | ossl_dh_key_fromdata | 2 |
| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (DSA *,const OSSL_PARAM[],int) | | ossl_dsa_key_fromdata | 2 |
| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (ECX_KEY *,const OSSL_PARAM[],int) | | ossl_ecx_key_fromdata | 2 |
@@ -2045,6 +2445,8 @@ signatureMatches
| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (Jim_Interp *,const char *,int) | | Jim_NewStringObj | 2 |
| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (Jim_Interp *,const char *,int) | | Jim_NewStringObjUtf8 | 1 |
| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (Jim_Interp *,const char *,int) | | Jim_NewStringObjUtf8 | 2 |
+| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (LIBSSH2_SESSION *,int,int) | | libssh2_session_flag | 2 |
+| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (LIBSSH2_SFTP_HANDLE *,LIBSSH2_SFTP_ATTRIBUTES *,int) | | libssh2_sftp_fstat_ex | 2 |
| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OCSP_BASICRESP *,OCSP_CERTID *,int) | | OCSP_resp_find | 2 |
| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OCSP_BASICRESP *,X509_EXTENSION *,int) | | OCSP_BASICRESP_add_ext | 2 |
| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (OCSP_BASICRESP *,const ASN1_OBJECT *,int) | | OCSP_BASICRESP_get_ext_by_OBJ | 2 |
@@ -2145,6 +2547,7 @@ signatureMatches
| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const CMS_SignerInfo *,const ASN1_OBJECT *,int) | | CMS_unsigned_get_attr_by_OBJ | 2 |
| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const CMS_SignerInfo *,int,int) | | CMS_signed_get_attr_by_NID | 2 |
| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const CMS_SignerInfo *,int,int) | | CMS_unsigned_get_attr_by_NID | 2 |
+| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const Curl_easy *,const connectdata *,int) | | Curl_conn_is_http2 | 2 |
| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const EVP_MD *,const EVP_MD *,int) | | ossl_rsa_pss_params_create | 2 |
| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const EVP_PKEY *,const ASN1_OBJECT *,int) | | EVP_PKEY_get_attr_by_OBJ | 2 |
| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const EVP_PKEY *,int,int) | | EVP_PKEY_get_attr_by_NID | 2 |
@@ -2174,6 +2577,7 @@ signatureMatches
| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const X509_REVOKED *,int,int) | | X509_REVOKED_get_ext_by_critical | 2 |
| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const X509_SIG *,const char *,int) | | PKCS8_decrypt | 1 |
| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const X509_SIG *,const char *,int) | | PKCS8_decrypt | 2 |
+| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const char *,char **,int) | | idn2_to_ascii_8z | 2 |
| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const char *,const OSSL_PARAM *,int) | | print_param_types | 2 |
| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const char *,const char *,int) | | CRYPTO_strdup | 1 |
| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const char *,const char *,int) | | CRYPTO_strdup | 2 |
@@ -2186,9 +2590,16 @@ signatureMatches
| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const stack_st_X509_EXTENSION *,const ASN1_OBJECT *,int) | | X509v3_get_ext_by_OBJ | 2 |
| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const stack_st_X509_EXTENSION *,int,int) | | X509v3_get_ext_by_NID | 2 |
| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const stack_st_X509_EXTENSION *,int,int) | | X509v3_get_ext_by_critical | 2 |
+| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const uint8_t *,uint8_t **,int) | | idn2_lookup_u8 | 2 |
| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const unsigned char **,unsigned int,int) | | ossl_b2i_DSA_after_header | 2 |
| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const unsigned char **,unsigned int,int) | | ossl_b2i_RSA_after_header | 2 |
| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (const void *,const void *,int) | | ossl_is_partially_overlapping | 2 |
+| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (curl_mimepart *,curl_mime *,int) | | Curl_mime_set_subparts | 2 |
+| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (curl_mimepart *,curl_slist *,int) | | curl_mime_headers | 2 |
+| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (gzFile,char *,int) | | gzgets | 2 |
+| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (gzFile,int,int) | | gzsetparams | 2 |
+| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (gzFile,off64_t,int) | | gzseek64 | 2 |
+| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (gzFile,off_t,int) | | gzseek | 2 |
| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (int,BIO_ADDR *,int) | | BIO_accept_ex | 2 |
| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (int,int,int) | | ASN1_object_size | 2 |
| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (int,int,int) | | EVP_CIPHER_meth_new | 2 |
@@ -2226,8 +2637,16 @@ signatureMatches
| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (unsigned int,int,int) | | ossl_blob_length | 2 |
| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (unsigned long *,const BIGNUM *,int) | | bn_copy_words | 2 |
| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (unsigned long *,const unsigned long *,int) | | bn_sqr_words | 2 |
+| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (uv__io_t *,uv__io_cb,int) | | uv__io_init | 2 |
+| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (uv_loop_t *,uv_fs_t *,int) | | uv__iou_fs_read_or_write | 2 |
+| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (uv_loop_t *,uv_pipe_t *,int) | | uv_pipe_init | 2 |
+| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (uv_loop_t *,uv_poll_t *,int) | | uv_poll_init | 2 |
+| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (uv_signal_t *,uv_signal_cb,int) | | uv_signal_start | 2 |
+| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (uv_signal_t *,uv_signal_cb,int) | | uv_signal_start_oneshot | 2 |
+| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (uv_stream_t *,int,int) | | uv__stream_open | 2 |
| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (void *,const char *,int) | | CRYPTO_secure_free | 1 |
| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (void *,const char *,int) | | CRYPTO_secure_free | 2 |
+| atl.cpp:929:17:929:35 | CopyCharsOverlapped | (void *,curl_off_t,int) | | tool_mime_stdin_seek | 2 |
| atl.cpp:931:11:931:15 | GetAt | (int) | | ASN1_STRING_type_new | 0 |
| atl.cpp:931:11:931:15 | GetAt | (int) | | ASN1_tag2bit | 0 |
| atl.cpp:931:11:931:15 | GetAt | (int) | | ASN1_tag2str | 0 |
@@ -2246,6 +2665,9 @@ signatureMatches
| atl.cpp:931:11:931:15 | GetAt | (int) | | X509_TRUST_get0 | 0 |
| atl.cpp:931:11:931:15 | GetAt | (int) | | X509_TRUST_get_by_id | 0 |
| atl.cpp:931:11:931:15 | GetAt | (int) | | X509_VERIFY_PARAM_get0 | 0 |
+| atl.cpp:931:11:931:15 | GetAt | (int) | | c_tolower | 0 |
+| atl.cpp:931:11:931:15 | GetAt | (int) | | c_toupper | 0 |
+| atl.cpp:931:11:931:15 | GetAt | (int) | | curlx_sitouz | 0 |
| atl.cpp:931:11:931:15 | GetAt | (int) | | evp_pkey_type2name | 0 |
| atl.cpp:931:11:931:15 | GetAt | (int) | | ossl_cmp_bodytype_to_string | 0 |
| atl.cpp:931:11:931:15 | GetAt | (int) | | ossl_tolower | 0 |
@@ -2253,6 +2675,12 @@ signatureMatches
| atl.cpp:931:11:931:15 | GetAt | (int) | | sqlite3_compileoption_get | 0 |
| atl.cpp:931:11:931:15 | GetAt | (int) | | sqlite3_errstr | 0 |
| atl.cpp:931:11:931:15 | GetAt | (int) | | tls13_alert_code | 0 |
+| atl.cpp:931:11:931:15 | GetAt | (int) | | uv__accept | 0 |
+| atl.cpp:931:11:931:15 | GetAt | (int) | | uv_err_name | 0 |
+| atl.cpp:931:11:931:15 | GetAt | (int) | | uv_get_osfhandle | 0 |
+| atl.cpp:931:11:931:15 | GetAt | (int) | | uv_strerror | 0 |
+| atl.cpp:931:11:931:15 | GetAt | (int) | | uv_translate_sys_error | 0 |
+| atl.cpp:931:11:931:15 | GetAt | (int) | | zError | 0 |
| atl.cpp:932:11:932:19 | GetBuffer | (int) | | ASN1_STRING_type_new | 0 |
| atl.cpp:932:11:932:19 | GetBuffer | (int) | | ASN1_tag2bit | 0 |
| atl.cpp:932:11:932:19 | GetBuffer | (int) | | ASN1_tag2str | 0 |
@@ -2271,6 +2699,9 @@ signatureMatches
| atl.cpp:932:11:932:19 | GetBuffer | (int) | | X509_TRUST_get0 | 0 |
| atl.cpp:932:11:932:19 | GetBuffer | (int) | | X509_TRUST_get_by_id | 0 |
| atl.cpp:932:11:932:19 | GetBuffer | (int) | | X509_VERIFY_PARAM_get0 | 0 |
+| atl.cpp:932:11:932:19 | GetBuffer | (int) | | c_tolower | 0 |
+| atl.cpp:932:11:932:19 | GetBuffer | (int) | | c_toupper | 0 |
+| atl.cpp:932:11:932:19 | GetBuffer | (int) | | curlx_sitouz | 0 |
| atl.cpp:932:11:932:19 | GetBuffer | (int) | | evp_pkey_type2name | 0 |
| atl.cpp:932:11:932:19 | GetBuffer | (int) | | ossl_cmp_bodytype_to_string | 0 |
| atl.cpp:932:11:932:19 | GetBuffer | (int) | | ossl_tolower | 0 |
@@ -2278,6 +2709,12 @@ signatureMatches
| atl.cpp:932:11:932:19 | GetBuffer | (int) | | sqlite3_compileoption_get | 0 |
| atl.cpp:932:11:932:19 | GetBuffer | (int) | | sqlite3_errstr | 0 |
| atl.cpp:932:11:932:19 | GetBuffer | (int) | | tls13_alert_code | 0 |
+| atl.cpp:932:11:932:19 | GetBuffer | (int) | | uv__accept | 0 |
+| atl.cpp:932:11:932:19 | GetBuffer | (int) | | uv_err_name | 0 |
+| atl.cpp:932:11:932:19 | GetBuffer | (int) | | uv_get_osfhandle | 0 |
+| atl.cpp:932:11:932:19 | GetBuffer | (int) | | uv_strerror | 0 |
+| atl.cpp:932:11:932:19 | GetBuffer | (int) | | uv_translate_sys_error | 0 |
+| atl.cpp:932:11:932:19 | GetBuffer | (int) | | zError | 0 |
| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | ASN1_STRING_type_new | 0 |
| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | ASN1_tag2bit | 0 |
| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | ASN1_tag2str | 0 |
@@ -2296,6 +2733,9 @@ signatureMatches
| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | X509_TRUST_get0 | 0 |
| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | X509_TRUST_get_by_id | 0 |
| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | X509_VERIFY_PARAM_get0 | 0 |
+| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | c_tolower | 0 |
+| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | c_toupper | 0 |
+| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | curlx_sitouz | 0 |
| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | evp_pkey_type2name | 0 |
| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | ossl_cmp_bodytype_to_string | 0 |
| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | ossl_tolower | 0 |
@@ -2303,7 +2743,14 @@ signatureMatches
| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | sqlite3_compileoption_get | 0 |
| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | sqlite3_errstr | 0 |
| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | tls13_alert_code | 0 |
+| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | uv__accept | 0 |
+| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | uv_err_name | 0 |
+| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | uv_get_osfhandle | 0 |
+| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | uv_strerror | 0 |
+| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | uv_translate_sys_error | 0 |
+| atl.cpp:934:11:934:28 | GetBufferSetLength | (int) | | zError | 0 |
| atl.cpp:938:10:938:14 | SetAt | (XCHAR,XCHAR) | CStringT | Replace | 1 |
+| atl.cpp:938:10:938:14 | SetAt | (char **,char) | | Curl_str_single | 1 |
| atl.cpp:938:10:938:14 | SetAt | (const CStringT &,char) | | operator+ | 1 |
| atl.cpp:938:10:938:14 | SetAt | (int,XCHAR) | CStringT | Insert | 0 |
| atl.cpp:938:10:938:14 | SetAt | (int,XCHAR) | CStringT | Insert | 1 |
@@ -2325,6 +2772,8 @@ signatureMatches
| atl.cpp:939:10:939:18 | SetString | (BIO *,int) | | TXT_DB_read | 1 |
| atl.cpp:939:10:939:18 | SetString | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 |
| atl.cpp:939:10:939:18 | SetString | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 |
+| atl.cpp:939:10:939:18 | SetString | (CURL *,int) | | curl_easy_pause | 1 |
+| atl.cpp:939:10:939:18 | SetString | (Curl_easy *,int) | | Curl_conn_get_socket | 1 |
| atl.cpp:939:10:939:18 | SetString | (DH *,int) | | DH_clear_flags | 1 |
| atl.cpp:939:10:939:18 | SetString | (DH *,int) | | DH_set_flags | 1 |
| atl.cpp:939:10:939:18 | SetString | (DH_METHOD *,int) | | DH_meth_set_flags | 1 |
@@ -2368,6 +2817,17 @@ signatureMatches
| atl.cpp:939:10:939:18 | SetString | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 |
| atl.cpp:939:10:939:18 | SetString | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 |
| atl.cpp:939:10:939:18 | SetString | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 |
+| atl.cpp:939:10:939:18 | SetString | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 |
+| atl.cpp:939:10:939:18 | SetString | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 |
+| atl.cpp:939:10:939:18 | SetString | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 |
+| atl.cpp:939:10:939:18 | SetString | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 |
+| atl.cpp:939:10:939:18 | SetString | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 |
+| atl.cpp:939:10:939:18 | SetString | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 |
+| atl.cpp:939:10:939:18 | SetString | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 |
+| atl.cpp:939:10:939:18 | SetString | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 |
+| atl.cpp:939:10:939:18 | SetString | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 |
+| atl.cpp:939:10:939:18 | SetString | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 |
+| atl.cpp:939:10:939:18 | SetString | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 |
| atl.cpp:939:10:939:18 | SetString | (LPCOLESTR,int) | CComBSTR | Append | 1 |
| atl.cpp:939:10:939:18 | SetString | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 |
| atl.cpp:939:10:939:18 | SetString | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 |
@@ -2485,8 +2945,10 @@ signatureMatches
| atl.cpp:939:10:939:18 | SetString | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 |
| atl.cpp:939:10:939:18 | SetString | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 |
| atl.cpp:939:10:939:18 | SetString | (acttab *,int) | | acttab_insert | 1 |
+| atl.cpp:939:10:939:18 | SetString | (char *,int) | | Curl_str2addr | 1 |
| atl.cpp:939:10:939:18 | SetString | (char *,int) | | PEM_proc_type | 1 |
| atl.cpp:939:10:939:18 | SetString | (char,int) | CStringT | CStringT | 1 |
+| atl.cpp:939:10:939:18 | SetString | (connectdata *,int) | | Curl_conn_is_ssl | 1 |
| atl.cpp:939:10:939:18 | SetString | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 |
| atl.cpp:939:10:939:18 | SetString | (const BIGNUM *,int) | | BN_get_flags | 1 |
| atl.cpp:939:10:939:18 | SetString | (const BIGNUM *,int) | | BN_is_bit_set | 1 |
@@ -2553,12 +3015,22 @@ signatureMatches
| atl.cpp:939:10:939:18 | SetString | (const unsigned char *,int) | | Jim_GenHashFunction | 1 |
| atl.cpp:939:10:939:18 | SetString | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 |
| atl.cpp:939:10:939:18 | SetString | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 |
+| atl.cpp:939:10:939:18 | SetString | (dynhds *,int) | | Curl_dynhds_set_opts | 1 |
+| atl.cpp:939:10:939:18 | SetString | (gzFile,int) | | gzflush | 1 |
+| atl.cpp:939:10:939:18 | SetString | (gzFile,int) | | gzputc | 1 |
| atl.cpp:939:10:939:18 | SetString | (int *,int) | | X509_PURPOSE_set | 1 |
| atl.cpp:939:10:939:18 | SetString | (int *,int) | | X509_TRUST_set | 1 |
| atl.cpp:939:10:939:18 | SetString | (int,int) | | BN_security_bits | 1 |
| atl.cpp:939:10:939:18 | SetString | (int,int) | | EVP_MD_meth_new | 1 |
| atl.cpp:939:10:939:18 | SetString | (int,int) | | EVP_PKEY_meth_new | 1 |
| atl.cpp:939:10:939:18 | SetString | (int,int) | | acttab_alloc | 1 |
+| atl.cpp:939:10:939:18 | SetString | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 |
+| atl.cpp:939:10:939:18 | SetString | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 |
+| atl.cpp:939:10:939:18 | SetString | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 |
+| atl.cpp:939:10:939:18 | SetString | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 |
+| atl.cpp:939:10:939:18 | SetString | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 |
+| atl.cpp:939:10:939:18 | SetString | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 |
+| atl.cpp:939:10:939:18 | SetString | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 |
| atl.cpp:939:10:939:18 | SetString | (rule *,int) | | Configlist_add | 1 |
| atl.cpp:939:10:939:18 | SetString | (rule *,int) | | Configlist_addbasis | 1 |
| atl.cpp:939:10:939:18 | SetString | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 |
@@ -2593,6 +3065,7 @@ signatureMatches
| atl.cpp:939:10:939:18 | SetString | (unsigned char *,int) | | RAND_priv_bytes | 1 |
| atl.cpp:939:10:939:18 | SetString | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 |
| atl.cpp:939:10:939:18 | SetString | (unsigned short,int) | | dtls1_get_queue_priority | 1 |
+| atl.cpp:939:10:939:18 | SetString | (uv_env_item_t *,int) | | uv_os_free_environ | 1 |
| atl.cpp:939:10:939:18 | SetString | (void *,int) | | DSO_dsobyaddr | 1 |
| atl.cpp:939:10:939:18 | SetString | (void *,int) | | sqlite3_realloc | 1 |
| atl.cpp:939:10:939:18 | SetString | (wchar_t,int) | CStringT | CStringT | 1 |
@@ -2617,6 +3090,9 @@ signatureMatches
| atl.cpp:942:11:942:20 | operator[] | (int) | | X509_TRUST_get0 | 0 |
| atl.cpp:942:11:942:20 | operator[] | (int) | | X509_TRUST_get_by_id | 0 |
| atl.cpp:942:11:942:20 | operator[] | (int) | | X509_VERIFY_PARAM_get0 | 0 |
+| atl.cpp:942:11:942:20 | operator[] | (int) | | c_tolower | 0 |
+| atl.cpp:942:11:942:20 | operator[] | (int) | | c_toupper | 0 |
+| atl.cpp:942:11:942:20 | operator[] | (int) | | curlx_sitouz | 0 |
| atl.cpp:942:11:942:20 | operator[] | (int) | | evp_pkey_type2name | 0 |
| atl.cpp:942:11:942:20 | operator[] | (int) | | ossl_cmp_bodytype_to_string | 0 |
| atl.cpp:942:11:942:20 | operator[] | (int) | | ossl_tolower | 0 |
@@ -2624,6 +3100,12 @@ signatureMatches
| atl.cpp:942:11:942:20 | operator[] | (int) | | sqlite3_compileoption_get | 0 |
| atl.cpp:942:11:942:20 | operator[] | (int) | | sqlite3_errstr | 0 |
| atl.cpp:942:11:942:20 | operator[] | (int) | | tls13_alert_code | 0 |
+| atl.cpp:942:11:942:20 | operator[] | (int) | | uv__accept | 0 |
+| atl.cpp:942:11:942:20 | operator[] | (int) | | uv_err_name | 0 |
+| atl.cpp:942:11:942:20 | operator[] | (int) | | uv_get_osfhandle | 0 |
+| atl.cpp:942:11:942:20 | operator[] | (int) | | uv_strerror | 0 |
+| atl.cpp:942:11:942:20 | operator[] | (int) | | uv_translate_sys_error | 0 |
+| atl.cpp:942:11:942:20 | operator[] | (int) | | zError | 0 |
| atl.cpp:1036:5:1036:12 | CStringT | (const VARIANT &) | | operator+= | 0 |
| atl.cpp:1036:5:1036:12 | CStringT | (const VARIANT &) | CStringT | CStringT | 0 |
| atl.cpp:1036:5:1036:12 | CStringT | (const VARIANT &) | CStringT | operator= | 0 |
@@ -2672,6 +3154,8 @@ signatureMatches
| atl.cpp:1049:5:1049:12 | CStringT | (BIO *,int) | | TXT_DB_read | 1 |
| atl.cpp:1049:5:1049:12 | CStringT | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 |
| atl.cpp:1049:5:1049:12 | CStringT | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 |
+| atl.cpp:1049:5:1049:12 | CStringT | (CURL *,int) | | curl_easy_pause | 1 |
+| atl.cpp:1049:5:1049:12 | CStringT | (Curl_easy *,int) | | Curl_conn_get_socket | 1 |
| atl.cpp:1049:5:1049:12 | CStringT | (DH *,int) | | DH_clear_flags | 1 |
| atl.cpp:1049:5:1049:12 | CStringT | (DH *,int) | | DH_set_flags | 1 |
| atl.cpp:1049:5:1049:12 | CStringT | (DH_METHOD *,int) | | DH_meth_set_flags | 1 |
@@ -2715,6 +3199,17 @@ signatureMatches
| atl.cpp:1049:5:1049:12 | CStringT | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 |
| atl.cpp:1049:5:1049:12 | CStringT | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 |
| atl.cpp:1049:5:1049:12 | CStringT | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 |
+| atl.cpp:1049:5:1049:12 | CStringT | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 |
+| atl.cpp:1049:5:1049:12 | CStringT | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 |
+| atl.cpp:1049:5:1049:12 | CStringT | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 |
+| atl.cpp:1049:5:1049:12 | CStringT | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 |
+| atl.cpp:1049:5:1049:12 | CStringT | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 |
+| atl.cpp:1049:5:1049:12 | CStringT | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 |
+| atl.cpp:1049:5:1049:12 | CStringT | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 |
+| atl.cpp:1049:5:1049:12 | CStringT | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 |
+| atl.cpp:1049:5:1049:12 | CStringT | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 |
+| atl.cpp:1049:5:1049:12 | CStringT | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 |
+| atl.cpp:1049:5:1049:12 | CStringT | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 |
| atl.cpp:1049:5:1049:12 | CStringT | (LPCOLESTR,int) | CComBSTR | Append | 1 |
| atl.cpp:1049:5:1049:12 | CStringT | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 |
| atl.cpp:1049:5:1049:12 | CStringT | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 |
@@ -2832,9 +3327,11 @@ signatureMatches
| atl.cpp:1049:5:1049:12 | CStringT | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 |
| atl.cpp:1049:5:1049:12 | CStringT | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 |
| atl.cpp:1049:5:1049:12 | CStringT | (acttab *,int) | | acttab_insert | 1 |
+| atl.cpp:1049:5:1049:12 | CStringT | (char *,int) | | Curl_str2addr | 1 |
| atl.cpp:1049:5:1049:12 | CStringT | (char *,int) | | PEM_proc_type | 1 |
| atl.cpp:1049:5:1049:12 | CStringT | (char,int) | CStringT | CStringT | 0 |
| atl.cpp:1049:5:1049:12 | CStringT | (char,int) | CStringT | CStringT | 1 |
+| atl.cpp:1049:5:1049:12 | CStringT | (connectdata *,int) | | Curl_conn_is_ssl | 1 |
| atl.cpp:1049:5:1049:12 | CStringT | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 |
| atl.cpp:1049:5:1049:12 | CStringT | (const BIGNUM *,int) | | BN_get_flags | 1 |
| atl.cpp:1049:5:1049:12 | CStringT | (const BIGNUM *,int) | | BN_is_bit_set | 1 |
@@ -2901,12 +3398,22 @@ signatureMatches
| atl.cpp:1049:5:1049:12 | CStringT | (const unsigned char *,int) | | Jim_GenHashFunction | 1 |
| atl.cpp:1049:5:1049:12 | CStringT | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 |
| atl.cpp:1049:5:1049:12 | CStringT | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 |
+| atl.cpp:1049:5:1049:12 | CStringT | (dynhds *,int) | | Curl_dynhds_set_opts | 1 |
+| atl.cpp:1049:5:1049:12 | CStringT | (gzFile,int) | | gzflush | 1 |
+| atl.cpp:1049:5:1049:12 | CStringT | (gzFile,int) | | gzputc | 1 |
| atl.cpp:1049:5:1049:12 | CStringT | (int *,int) | | X509_PURPOSE_set | 1 |
| atl.cpp:1049:5:1049:12 | CStringT | (int *,int) | | X509_TRUST_set | 1 |
| atl.cpp:1049:5:1049:12 | CStringT | (int,int) | | BN_security_bits | 1 |
| atl.cpp:1049:5:1049:12 | CStringT | (int,int) | | EVP_MD_meth_new | 1 |
| atl.cpp:1049:5:1049:12 | CStringT | (int,int) | | EVP_PKEY_meth_new | 1 |
| atl.cpp:1049:5:1049:12 | CStringT | (int,int) | | acttab_alloc | 1 |
+| atl.cpp:1049:5:1049:12 | CStringT | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 |
+| atl.cpp:1049:5:1049:12 | CStringT | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 |
+| atl.cpp:1049:5:1049:12 | CStringT | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 |
+| atl.cpp:1049:5:1049:12 | CStringT | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 |
+| atl.cpp:1049:5:1049:12 | CStringT | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 |
+| atl.cpp:1049:5:1049:12 | CStringT | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 |
+| atl.cpp:1049:5:1049:12 | CStringT | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 |
| atl.cpp:1049:5:1049:12 | CStringT | (rule *,int) | | Configlist_add | 1 |
| atl.cpp:1049:5:1049:12 | CStringT | (rule *,int) | | Configlist_addbasis | 1 |
| atl.cpp:1049:5:1049:12 | CStringT | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 |
@@ -2941,6 +3448,7 @@ signatureMatches
| atl.cpp:1049:5:1049:12 | CStringT | (unsigned char *,int) | | RAND_priv_bytes | 1 |
| atl.cpp:1049:5:1049:12 | CStringT | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 |
| atl.cpp:1049:5:1049:12 | CStringT | (unsigned short,int) | | dtls1_get_queue_priority | 1 |
+| atl.cpp:1049:5:1049:12 | CStringT | (uv_env_item_t *,int) | | uv_os_free_environ | 1 |
| atl.cpp:1049:5:1049:12 | CStringT | (void *,int) | | DSO_dsobyaddr | 1 |
| atl.cpp:1049:5:1049:12 | CStringT | (void *,int) | | sqlite3_realloc | 1 |
| atl.cpp:1049:5:1049:12 | CStringT | (wchar_t,int) | CStringT | CStringT | 1 |
@@ -2962,6 +3470,8 @@ signatureMatches
| atl.cpp:1050:5:1050:12 | CStringT | (BIO *,int) | | TXT_DB_read | 1 |
| atl.cpp:1050:5:1050:12 | CStringT | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 |
| atl.cpp:1050:5:1050:12 | CStringT | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 |
+| atl.cpp:1050:5:1050:12 | CStringT | (CURL *,int) | | curl_easy_pause | 1 |
+| atl.cpp:1050:5:1050:12 | CStringT | (Curl_easy *,int) | | Curl_conn_get_socket | 1 |
| atl.cpp:1050:5:1050:12 | CStringT | (DH *,int) | | DH_clear_flags | 1 |
| atl.cpp:1050:5:1050:12 | CStringT | (DH *,int) | | DH_set_flags | 1 |
| atl.cpp:1050:5:1050:12 | CStringT | (DH_METHOD *,int) | | DH_meth_set_flags | 1 |
@@ -3005,6 +3515,17 @@ signatureMatches
| atl.cpp:1050:5:1050:12 | CStringT | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 |
| atl.cpp:1050:5:1050:12 | CStringT | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 |
| atl.cpp:1050:5:1050:12 | CStringT | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 |
+| atl.cpp:1050:5:1050:12 | CStringT | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 |
+| atl.cpp:1050:5:1050:12 | CStringT | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 |
+| atl.cpp:1050:5:1050:12 | CStringT | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 |
+| atl.cpp:1050:5:1050:12 | CStringT | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 |
+| atl.cpp:1050:5:1050:12 | CStringT | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 |
+| atl.cpp:1050:5:1050:12 | CStringT | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 |
+| atl.cpp:1050:5:1050:12 | CStringT | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 |
+| atl.cpp:1050:5:1050:12 | CStringT | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 |
+| atl.cpp:1050:5:1050:12 | CStringT | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 |
+| atl.cpp:1050:5:1050:12 | CStringT | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 |
+| atl.cpp:1050:5:1050:12 | CStringT | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 |
| atl.cpp:1050:5:1050:12 | CStringT | (LPCOLESTR,int) | CComBSTR | Append | 1 |
| atl.cpp:1050:5:1050:12 | CStringT | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 |
| atl.cpp:1050:5:1050:12 | CStringT | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 |
@@ -3122,8 +3643,10 @@ signatureMatches
| atl.cpp:1050:5:1050:12 | CStringT | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 |
| atl.cpp:1050:5:1050:12 | CStringT | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 |
| atl.cpp:1050:5:1050:12 | CStringT | (acttab *,int) | | acttab_insert | 1 |
+| atl.cpp:1050:5:1050:12 | CStringT | (char *,int) | | Curl_str2addr | 1 |
| atl.cpp:1050:5:1050:12 | CStringT | (char *,int) | | PEM_proc_type | 1 |
| atl.cpp:1050:5:1050:12 | CStringT | (char,int) | CStringT | CStringT | 1 |
+| atl.cpp:1050:5:1050:12 | CStringT | (connectdata *,int) | | Curl_conn_is_ssl | 1 |
| atl.cpp:1050:5:1050:12 | CStringT | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 |
| atl.cpp:1050:5:1050:12 | CStringT | (const BIGNUM *,int) | | BN_get_flags | 1 |
| atl.cpp:1050:5:1050:12 | CStringT | (const BIGNUM *,int) | | BN_is_bit_set | 1 |
@@ -3190,12 +3713,22 @@ signatureMatches
| atl.cpp:1050:5:1050:12 | CStringT | (const unsigned char *,int) | | Jim_GenHashFunction | 1 |
| atl.cpp:1050:5:1050:12 | CStringT | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 |
| atl.cpp:1050:5:1050:12 | CStringT | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 |
+| atl.cpp:1050:5:1050:12 | CStringT | (dynhds *,int) | | Curl_dynhds_set_opts | 1 |
+| atl.cpp:1050:5:1050:12 | CStringT | (gzFile,int) | | gzflush | 1 |
+| atl.cpp:1050:5:1050:12 | CStringT | (gzFile,int) | | gzputc | 1 |
| atl.cpp:1050:5:1050:12 | CStringT | (int *,int) | | X509_PURPOSE_set | 1 |
| atl.cpp:1050:5:1050:12 | CStringT | (int *,int) | | X509_TRUST_set | 1 |
| atl.cpp:1050:5:1050:12 | CStringT | (int,int) | | BN_security_bits | 1 |
| atl.cpp:1050:5:1050:12 | CStringT | (int,int) | | EVP_MD_meth_new | 1 |
| atl.cpp:1050:5:1050:12 | CStringT | (int,int) | | EVP_PKEY_meth_new | 1 |
| atl.cpp:1050:5:1050:12 | CStringT | (int,int) | | acttab_alloc | 1 |
+| atl.cpp:1050:5:1050:12 | CStringT | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 |
+| atl.cpp:1050:5:1050:12 | CStringT | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 |
+| atl.cpp:1050:5:1050:12 | CStringT | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 |
+| atl.cpp:1050:5:1050:12 | CStringT | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 |
+| atl.cpp:1050:5:1050:12 | CStringT | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 |
+| atl.cpp:1050:5:1050:12 | CStringT | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 |
+| atl.cpp:1050:5:1050:12 | CStringT | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 |
| atl.cpp:1050:5:1050:12 | CStringT | (rule *,int) | | Configlist_add | 1 |
| atl.cpp:1050:5:1050:12 | CStringT | (rule *,int) | | Configlist_addbasis | 1 |
| atl.cpp:1050:5:1050:12 | CStringT | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 |
@@ -3230,6 +3763,7 @@ signatureMatches
| atl.cpp:1050:5:1050:12 | CStringT | (unsigned char *,int) | | RAND_priv_bytes | 1 |
| atl.cpp:1050:5:1050:12 | CStringT | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 |
| atl.cpp:1050:5:1050:12 | CStringT | (unsigned short,int) | | dtls1_get_queue_priority | 1 |
+| atl.cpp:1050:5:1050:12 | CStringT | (uv_env_item_t *,int) | | uv_os_free_environ | 1 |
| atl.cpp:1050:5:1050:12 | CStringT | (void *,int) | | DSO_dsobyaddr | 1 |
| atl.cpp:1050:5:1050:12 | CStringT | (void *,int) | | sqlite3_realloc | 1 |
| atl.cpp:1050:5:1050:12 | CStringT | (wchar_t,int) | CStringT | CStringT | 0 |
@@ -3277,6 +3811,9 @@ signatureMatches
| atl.cpp:1072:14:1072:17 | Left | (int) | | X509_TRUST_get0 | 0 |
| atl.cpp:1072:14:1072:17 | Left | (int) | | X509_TRUST_get_by_id | 0 |
| atl.cpp:1072:14:1072:17 | Left | (int) | | X509_VERIFY_PARAM_get0 | 0 |
+| atl.cpp:1072:14:1072:17 | Left | (int) | | c_tolower | 0 |
+| atl.cpp:1072:14:1072:17 | Left | (int) | | c_toupper | 0 |
+| atl.cpp:1072:14:1072:17 | Left | (int) | | curlx_sitouz | 0 |
| atl.cpp:1072:14:1072:17 | Left | (int) | | evp_pkey_type2name | 0 |
| atl.cpp:1072:14:1072:17 | Left | (int) | | ossl_cmp_bodytype_to_string | 0 |
| atl.cpp:1072:14:1072:17 | Left | (int) | | ossl_tolower | 0 |
@@ -3284,9 +3821,16 @@ signatureMatches
| atl.cpp:1072:14:1072:17 | Left | (int) | | sqlite3_compileoption_get | 0 |
| atl.cpp:1072:14:1072:17 | Left | (int) | | sqlite3_errstr | 0 |
| atl.cpp:1072:14:1072:17 | Left | (int) | | tls13_alert_code | 0 |
+| atl.cpp:1072:14:1072:17 | Left | (int) | | uv__accept | 0 |
+| atl.cpp:1072:14:1072:17 | Left | (int) | | uv_err_name | 0 |
+| atl.cpp:1072:14:1072:17 | Left | (int) | | uv_get_osfhandle | 0 |
+| atl.cpp:1072:14:1072:17 | Left | (int) | | uv_strerror | 0 |
+| atl.cpp:1072:14:1072:17 | Left | (int) | | uv_translate_sys_error | 0 |
+| atl.cpp:1072:14:1072:17 | Left | (int) | | zError | 0 |
| atl.cpp:1075:10:1075:19 | LoadString | (UINT) | CComBSTR | LoadString | 0 |
| atl.cpp:1075:10:1075:19 | LoadString | (UINT) | _U_STRINGorID | _U_STRINGorID | 0 |
| atl.cpp:1075:10:1075:19 | LoadString | (unsigned int) | | Jim_IntHashFunction | 0 |
+| atl.cpp:1075:10:1075:19 | LoadString | (unsigned int) | | curlx_uitous | 0 |
| atl.cpp:1075:10:1075:19 | LoadString | (unsigned int) | | ssl3_get_cipher | 0 |
| atl.cpp:1079:14:1079:16 | Mid | (ASN1_STRING *,int) | | ASN1_STRING_length_set | 1 |
| atl.cpp:1079:14:1079:16 | Mid | (ASYNC_WAIT_CTX *,int) | | ASYNC_WAIT_CTX_set_status | 1 |
@@ -3306,6 +3850,8 @@ signatureMatches
| atl.cpp:1079:14:1079:16 | Mid | (BIO *,int) | | TXT_DB_read | 1 |
| atl.cpp:1079:14:1079:16 | Mid | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 |
| atl.cpp:1079:14:1079:16 | Mid | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 |
+| atl.cpp:1079:14:1079:16 | Mid | (CURL *,int) | | curl_easy_pause | 1 |
+| atl.cpp:1079:14:1079:16 | Mid | (Curl_easy *,int) | | Curl_conn_get_socket | 1 |
| atl.cpp:1079:14:1079:16 | Mid | (DH *,int) | | DH_clear_flags | 1 |
| atl.cpp:1079:14:1079:16 | Mid | (DH *,int) | | DH_set_flags | 1 |
| atl.cpp:1079:14:1079:16 | Mid | (DH_METHOD *,int) | | DH_meth_set_flags | 1 |
@@ -3349,6 +3895,17 @@ signatureMatches
| atl.cpp:1079:14:1079:16 | Mid | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 |
| atl.cpp:1079:14:1079:16 | Mid | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 |
| atl.cpp:1079:14:1079:16 | Mid | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 |
+| atl.cpp:1079:14:1079:16 | Mid | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 |
+| atl.cpp:1079:14:1079:16 | Mid | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 |
+| atl.cpp:1079:14:1079:16 | Mid | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 |
+| atl.cpp:1079:14:1079:16 | Mid | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 |
+| atl.cpp:1079:14:1079:16 | Mid | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 |
+| atl.cpp:1079:14:1079:16 | Mid | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 |
+| atl.cpp:1079:14:1079:16 | Mid | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 |
+| atl.cpp:1079:14:1079:16 | Mid | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 |
+| atl.cpp:1079:14:1079:16 | Mid | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 |
+| atl.cpp:1079:14:1079:16 | Mid | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 |
+| atl.cpp:1079:14:1079:16 | Mid | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 |
| atl.cpp:1079:14:1079:16 | Mid | (LPCOLESTR,int) | CComBSTR | Append | 1 |
| atl.cpp:1079:14:1079:16 | Mid | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 |
| atl.cpp:1079:14:1079:16 | Mid | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 |
@@ -3466,8 +4023,10 @@ signatureMatches
| atl.cpp:1079:14:1079:16 | Mid | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 |
| atl.cpp:1079:14:1079:16 | Mid | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 |
| atl.cpp:1079:14:1079:16 | Mid | (acttab *,int) | | acttab_insert | 1 |
+| atl.cpp:1079:14:1079:16 | Mid | (char *,int) | | Curl_str2addr | 1 |
| atl.cpp:1079:14:1079:16 | Mid | (char *,int) | | PEM_proc_type | 1 |
| atl.cpp:1079:14:1079:16 | Mid | (char,int) | CStringT | CStringT | 1 |
+| atl.cpp:1079:14:1079:16 | Mid | (connectdata *,int) | | Curl_conn_is_ssl | 1 |
| atl.cpp:1079:14:1079:16 | Mid | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 |
| atl.cpp:1079:14:1079:16 | Mid | (const BIGNUM *,int) | | BN_get_flags | 1 |
| atl.cpp:1079:14:1079:16 | Mid | (const BIGNUM *,int) | | BN_is_bit_set | 1 |
@@ -3534,6 +4093,9 @@ signatureMatches
| atl.cpp:1079:14:1079:16 | Mid | (const unsigned char *,int) | | Jim_GenHashFunction | 1 |
| atl.cpp:1079:14:1079:16 | Mid | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 |
| atl.cpp:1079:14:1079:16 | Mid | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 |
+| atl.cpp:1079:14:1079:16 | Mid | (dynhds *,int) | | Curl_dynhds_set_opts | 1 |
+| atl.cpp:1079:14:1079:16 | Mid | (gzFile,int) | | gzflush | 1 |
+| atl.cpp:1079:14:1079:16 | Mid | (gzFile,int) | | gzputc | 1 |
| atl.cpp:1079:14:1079:16 | Mid | (int *,int) | | X509_PURPOSE_set | 1 |
| atl.cpp:1079:14:1079:16 | Mid | (int *,int) | | X509_TRUST_set | 1 |
| atl.cpp:1079:14:1079:16 | Mid | (int,int) | | BN_security_bits | 0 |
@@ -3544,6 +4106,13 @@ signatureMatches
| atl.cpp:1079:14:1079:16 | Mid | (int,int) | | EVP_PKEY_meth_new | 1 |
| atl.cpp:1079:14:1079:16 | Mid | (int,int) | | acttab_alloc | 0 |
| atl.cpp:1079:14:1079:16 | Mid | (int,int) | | acttab_alloc | 1 |
+| atl.cpp:1079:14:1079:16 | Mid | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 |
+| atl.cpp:1079:14:1079:16 | Mid | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 |
+| atl.cpp:1079:14:1079:16 | Mid | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 |
+| atl.cpp:1079:14:1079:16 | Mid | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 |
+| atl.cpp:1079:14:1079:16 | Mid | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 |
+| atl.cpp:1079:14:1079:16 | Mid | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 |
+| atl.cpp:1079:14:1079:16 | Mid | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 |
| atl.cpp:1079:14:1079:16 | Mid | (rule *,int) | | Configlist_add | 1 |
| atl.cpp:1079:14:1079:16 | Mid | (rule *,int) | | Configlist_addbasis | 1 |
| atl.cpp:1079:14:1079:16 | Mid | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 |
@@ -3578,6 +4147,7 @@ signatureMatches
| atl.cpp:1079:14:1079:16 | Mid | (unsigned char *,int) | | RAND_priv_bytes | 1 |
| atl.cpp:1079:14:1079:16 | Mid | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 |
| atl.cpp:1079:14:1079:16 | Mid | (unsigned short,int) | | dtls1_get_queue_priority | 1 |
+| atl.cpp:1079:14:1079:16 | Mid | (uv_env_item_t *,int) | | uv_os_free_environ | 1 |
| atl.cpp:1079:14:1079:16 | Mid | (void *,int) | | DSO_dsobyaddr | 1 |
| atl.cpp:1079:14:1079:16 | Mid | (void *,int) | | sqlite3_realloc | 1 |
| atl.cpp:1079:14:1079:16 | Mid | (wchar_t,int) | CStringT | CStringT | 1 |
@@ -3606,6 +4176,9 @@ signatureMatches
| atl.cpp:1083:14:1083:18 | Right | (int) | | X509_TRUST_get0 | 0 |
| atl.cpp:1083:14:1083:18 | Right | (int) | | X509_TRUST_get_by_id | 0 |
| atl.cpp:1083:14:1083:18 | Right | (int) | | X509_VERIFY_PARAM_get0 | 0 |
+| atl.cpp:1083:14:1083:18 | Right | (int) | | c_tolower | 0 |
+| atl.cpp:1083:14:1083:18 | Right | (int) | | c_toupper | 0 |
+| atl.cpp:1083:14:1083:18 | Right | (int) | | curlx_sitouz | 0 |
| atl.cpp:1083:14:1083:18 | Right | (int) | | evp_pkey_type2name | 0 |
| atl.cpp:1083:14:1083:18 | Right | (int) | | ossl_cmp_bodytype_to_string | 0 |
| atl.cpp:1083:14:1083:18 | Right | (int) | | ossl_tolower | 0 |
@@ -3613,6 +4186,12 @@ signatureMatches
| atl.cpp:1083:14:1083:18 | Right | (int) | | sqlite3_compileoption_get | 0 |
| atl.cpp:1083:14:1083:18 | Right | (int) | | sqlite3_errstr | 0 |
| atl.cpp:1083:14:1083:18 | Right | (int) | | tls13_alert_code | 0 |
+| atl.cpp:1083:14:1083:18 | Right | (int) | | uv__accept | 0 |
+| atl.cpp:1083:14:1083:18 | Right | (int) | | uv_err_name | 0 |
+| atl.cpp:1083:14:1083:18 | Right | (int) | | uv_get_osfhandle | 0 |
+| atl.cpp:1083:14:1083:18 | Right | (int) | | uv_strerror | 0 |
+| atl.cpp:1083:14:1083:18 | Right | (int) | | uv_translate_sys_error | 0 |
+| atl.cpp:1083:14:1083:18 | Right | (int) | | zError | 0 |
| atl.cpp:1085:14:1085:26 | SpanExcluding | (PCXSTR) | | operator+= | 0 |
| atl.cpp:1085:14:1085:26 | SpanExcluding | (PCXSTR) | CSimpleStringT | operator+= | 0 |
| atl.cpp:1085:14:1085:26 | SpanExcluding | (PCXSTR) | CStringT | operator= | 0 |
@@ -3639,6 +4218,8 @@ signatureMatches
| atl.cpp:1231:5:1231:12 | CStrBufT | (FILE *,const ASN1_STRING *,unsigned long) | | ASN1_STRING_print_ex_fp | 2 |
| atl.cpp:1231:5:1231:12 | CStrBufT | (unsigned char *,int,unsigned long) | | UTF8_putc | 1 |
| atl.cpp:1231:5:1231:12 | CStrBufT | (unsigned char *,int,unsigned long) | | UTF8_putc | 2 |
+| bsd.cpp:12:5:12:10 | accept | (CURLM *,curl_socket_t,int *) | | curl_multi_socket | 2 |
+| bsd.cpp:12:5:12:10 | accept | (Curl_easy *,ssize_t *,int *) | | Curl_GetFTPResponse | 2 |
| bsd.cpp:12:5:12:10 | accept | (EVP_CIPHER_CTX *,unsigned char *,int *) | | EVP_CipherFinal | 2 |
| bsd.cpp:12:5:12:10 | accept | (EVP_CIPHER_CTX *,unsigned char *,int *) | | EVP_CipherFinal_ex | 2 |
| bsd.cpp:12:5:12:10 | accept | (EVP_CIPHER_CTX *,unsigned char *,int *) | | EVP_DecryptFinal | 2 |
@@ -3655,6 +4236,7 @@ signatureMatches
| bsd.cpp:12:5:12:10 | accept | (Jim_Interp *,Jim_Obj *,int *) | | Jim_GetIndex | 2 |
| bsd.cpp:12:5:12:10 | accept | (Jim_Interp *,Jim_Obj *,int *) | | Jim_GetReturnCode | 2 |
| bsd.cpp:12:5:12:10 | accept | (Jim_Interp *,Jim_Obj *,int *) | | Jim_GetSourceInfo | 2 |
+| bsd.cpp:12:5:12:10 | accept | (LIBSSH2_SESSION *,size_t *,int *) | | libssh2_session_hostkey | 2 |
| bsd.cpp:12:5:12:10 | accept | (OPENSSL_STACK *,const void *,int *) | | OPENSSL_sk_find_all | 2 |
| bsd.cpp:12:5:12:10 | accept | (OSSL_DECODER *,const char *,int *) | | ossl_decoder_fast_is_a | 2 |
| bsd.cpp:12:5:12:10 | accept | (OSSL_LIB_CTX *,uint32_t,int *) | | ossl_rand_uniform_uint32 | 2 |
@@ -3676,8 +4258,18 @@ signatureMatches
| bsd.cpp:12:5:12:10 | accept | (const X509 *,EVP_MD **,int *) | | X509_digest_sig | 2 |
| bsd.cpp:12:5:12:10 | accept | (const char *,const OPT_PAIR *,int *) | | opt_pair | 2 |
| bsd.cpp:12:5:12:10 | accept | (const unsigned char **,unsigned int,int *) | | ossl_b2i | 2 |
+| bsd.cpp:12:5:12:10 | accept | (const uv_tcp_t *,sockaddr *,int *) | | uv_tcp_getpeername | 1 |
+| bsd.cpp:12:5:12:10 | accept | (const uv_tcp_t *,sockaddr *,int *) | | uv_tcp_getpeername | 2 |
+| bsd.cpp:12:5:12:10 | accept | (const uv_tcp_t *,sockaddr *,int *) | | uv_tcp_getsockname | 1 |
+| bsd.cpp:12:5:12:10 | accept | (const uv_tcp_t *,sockaddr *,int *) | | uv_tcp_getsockname | 2 |
+| bsd.cpp:12:5:12:10 | accept | (const uv_udp_t *,sockaddr *,int *) | | uv_udp_getpeername | 1 |
+| bsd.cpp:12:5:12:10 | accept | (const uv_udp_t *,sockaddr *,int *) | | uv_udp_getpeername | 2 |
+| bsd.cpp:12:5:12:10 | accept | (const uv_udp_t *,sockaddr *,int *) | | uv_udp_getsockname | 1 |
+| bsd.cpp:12:5:12:10 | accept | (const uv_udp_t *,sockaddr *,int *) | | uv_udp_getsockname | 2 |
| bsd.cpp:12:5:12:10 | accept | (int,const char **,int *) | | sqlite3_keyword_name | 2 |
| bsd.cpp:12:5:12:10 | accept | (int,int,int *) | | ssl_set_version_bound | 2 |
+| bsd.cpp:12:5:12:10 | accept | (uv_handle_t *,int,int *) | | uv__socket_sockopt | 2 |
+| bsd.cpp:12:5:12:10 | accept | (z_streamp,unsigned int *,int *) | | deflatePending | 2 |
| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | ASN1_STRING_type_new | 0 |
| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | ASN1_tag2bit | 0 |
| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | ASN1_tag2str | 0 |
@@ -3696,6 +4288,9 @@ signatureMatches
| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | X509_TRUST_get0 | 0 |
| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | X509_TRUST_get_by_id | 0 |
| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | X509_VERIFY_PARAM_get0 | 0 |
+| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | c_tolower | 0 |
+| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | c_toupper | 0 |
+| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | curlx_sitouz | 0 |
| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | evp_pkey_type2name | 0 |
| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | ossl_cmp_bodytype_to_string | 0 |
| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | ossl_tolower | 0 |
@@ -3703,6 +4298,15 @@ signatureMatches
| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | sqlite3_compileoption_get | 0 |
| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | sqlite3_errstr | 0 |
| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | tls13_alert_code | 0 |
+| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | uv__accept | 0 |
+| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | uv_err_name | 0 |
+| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | uv_get_osfhandle | 0 |
+| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | uv_strerror | 0 |
+| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | uv_translate_sys_error | 0 |
+| constructor_delegation.cpp:8:2:8:8 | MyValue | (int) | | zError | 0 |
+| constructor_delegation.cpp:9:2:9:8 | MyValue | (Curl_easy *,bool) | | Curl_creader_set_rewind | 1 |
+| constructor_delegation.cpp:9:2:9:8 | MyValue | (Curl_easy *,bool) | | Curl_set_in_callback | 1 |
+| constructor_delegation.cpp:9:2:9:8 | MyValue | (curl_socket_t[2],bool) | | Curl_eventfd | 1 |
| constructor_delegation.cpp:10:2:10:8 | MyValue | (ASN1_STRING *,int) | | ASN1_STRING_length_set | 1 |
| constructor_delegation.cpp:10:2:10:8 | MyValue | (ASYNC_WAIT_CTX *,int) | | ASYNC_WAIT_CTX_set_status | 1 |
| constructor_delegation.cpp:10:2:10:8 | MyValue | (BIGNUM *,int) | | BN_clear_bit | 1 |
@@ -3721,6 +4325,8 @@ signatureMatches
| constructor_delegation.cpp:10:2:10:8 | MyValue | (BIO *,int) | | TXT_DB_read | 1 |
| constructor_delegation.cpp:10:2:10:8 | MyValue | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 |
| constructor_delegation.cpp:10:2:10:8 | MyValue | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 |
+| constructor_delegation.cpp:10:2:10:8 | MyValue | (CURL *,int) | | curl_easy_pause | 1 |
+| constructor_delegation.cpp:10:2:10:8 | MyValue | (Curl_easy *,int) | | Curl_conn_get_socket | 1 |
| constructor_delegation.cpp:10:2:10:8 | MyValue | (DH *,int) | | DH_clear_flags | 1 |
| constructor_delegation.cpp:10:2:10:8 | MyValue | (DH *,int) | | DH_set_flags | 1 |
| constructor_delegation.cpp:10:2:10:8 | MyValue | (DH_METHOD *,int) | | DH_meth_set_flags | 1 |
@@ -3764,6 +4370,17 @@ signatureMatches
| constructor_delegation.cpp:10:2:10:8 | MyValue | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 |
| constructor_delegation.cpp:10:2:10:8 | MyValue | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 |
| constructor_delegation.cpp:10:2:10:8 | MyValue | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 |
+| constructor_delegation.cpp:10:2:10:8 | MyValue | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 |
+| constructor_delegation.cpp:10:2:10:8 | MyValue | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 |
+| constructor_delegation.cpp:10:2:10:8 | MyValue | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 |
+| constructor_delegation.cpp:10:2:10:8 | MyValue | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 |
+| constructor_delegation.cpp:10:2:10:8 | MyValue | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 |
+| constructor_delegation.cpp:10:2:10:8 | MyValue | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 |
+| constructor_delegation.cpp:10:2:10:8 | MyValue | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 |
+| constructor_delegation.cpp:10:2:10:8 | MyValue | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 |
+| constructor_delegation.cpp:10:2:10:8 | MyValue | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 |
+| constructor_delegation.cpp:10:2:10:8 | MyValue | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 |
+| constructor_delegation.cpp:10:2:10:8 | MyValue | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 |
| constructor_delegation.cpp:10:2:10:8 | MyValue | (LPCOLESTR,int) | CComBSTR | Append | 1 |
| constructor_delegation.cpp:10:2:10:8 | MyValue | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 |
| constructor_delegation.cpp:10:2:10:8 | MyValue | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 |
@@ -3881,8 +4498,10 @@ signatureMatches
| constructor_delegation.cpp:10:2:10:8 | MyValue | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 |
| constructor_delegation.cpp:10:2:10:8 | MyValue | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 |
| constructor_delegation.cpp:10:2:10:8 | MyValue | (acttab *,int) | | acttab_insert | 1 |
+| constructor_delegation.cpp:10:2:10:8 | MyValue | (char *,int) | | Curl_str2addr | 1 |
| constructor_delegation.cpp:10:2:10:8 | MyValue | (char *,int) | | PEM_proc_type | 1 |
| constructor_delegation.cpp:10:2:10:8 | MyValue | (char,int) | CStringT | CStringT | 1 |
+| constructor_delegation.cpp:10:2:10:8 | MyValue | (connectdata *,int) | | Curl_conn_is_ssl | 1 |
| constructor_delegation.cpp:10:2:10:8 | MyValue | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 |
| constructor_delegation.cpp:10:2:10:8 | MyValue | (const BIGNUM *,int) | | BN_get_flags | 1 |
| constructor_delegation.cpp:10:2:10:8 | MyValue | (const BIGNUM *,int) | | BN_is_bit_set | 1 |
@@ -3949,6 +4568,9 @@ signatureMatches
| constructor_delegation.cpp:10:2:10:8 | MyValue | (const unsigned char *,int) | | Jim_GenHashFunction | 1 |
| constructor_delegation.cpp:10:2:10:8 | MyValue | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 |
| constructor_delegation.cpp:10:2:10:8 | MyValue | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 |
+| constructor_delegation.cpp:10:2:10:8 | MyValue | (dynhds *,int) | | Curl_dynhds_set_opts | 1 |
+| constructor_delegation.cpp:10:2:10:8 | MyValue | (gzFile,int) | | gzflush | 1 |
+| constructor_delegation.cpp:10:2:10:8 | MyValue | (gzFile,int) | | gzputc | 1 |
| constructor_delegation.cpp:10:2:10:8 | MyValue | (int *,int) | | X509_PURPOSE_set | 1 |
| constructor_delegation.cpp:10:2:10:8 | MyValue | (int *,int) | | X509_TRUST_set | 1 |
| constructor_delegation.cpp:10:2:10:8 | MyValue | (int,int) | | BN_security_bits | 0 |
@@ -3959,6 +4581,13 @@ signatureMatches
| constructor_delegation.cpp:10:2:10:8 | MyValue | (int,int) | | EVP_PKEY_meth_new | 1 |
| constructor_delegation.cpp:10:2:10:8 | MyValue | (int,int) | | acttab_alloc | 0 |
| constructor_delegation.cpp:10:2:10:8 | MyValue | (int,int) | | acttab_alloc | 1 |
+| constructor_delegation.cpp:10:2:10:8 | MyValue | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 |
+| constructor_delegation.cpp:10:2:10:8 | MyValue | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 |
+| constructor_delegation.cpp:10:2:10:8 | MyValue | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 |
+| constructor_delegation.cpp:10:2:10:8 | MyValue | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 |
+| constructor_delegation.cpp:10:2:10:8 | MyValue | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 |
+| constructor_delegation.cpp:10:2:10:8 | MyValue | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 |
+| constructor_delegation.cpp:10:2:10:8 | MyValue | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 |
| constructor_delegation.cpp:10:2:10:8 | MyValue | (rule *,int) | | Configlist_add | 1 |
| constructor_delegation.cpp:10:2:10:8 | MyValue | (rule *,int) | | Configlist_addbasis | 1 |
| constructor_delegation.cpp:10:2:10:8 | MyValue | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 |
@@ -3993,9 +4622,19 @@ signatureMatches
| constructor_delegation.cpp:10:2:10:8 | MyValue | (unsigned char *,int) | | RAND_priv_bytes | 1 |
| constructor_delegation.cpp:10:2:10:8 | MyValue | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 |
| constructor_delegation.cpp:10:2:10:8 | MyValue | (unsigned short,int) | | dtls1_get_queue_priority | 1 |
+| constructor_delegation.cpp:10:2:10:8 | MyValue | (uv_env_item_t *,int) | | uv_os_free_environ | 1 |
| constructor_delegation.cpp:10:2:10:8 | MyValue | (void *,int) | | DSO_dsobyaddr | 1 |
| constructor_delegation.cpp:10:2:10:8 | MyValue | (void *,int) | | sqlite3_realloc | 1 |
| constructor_delegation.cpp:10:2:10:8 | MyValue | (wchar_t,int) | CStringT | CStringT | 1 |
+| constructor_delegation.cpp:11:2:11:8 | MyValue | (Curl_easy *,CURLcode,bool) | | Curl_http_done | 2 |
+| constructor_delegation.cpp:11:2:11:8 | MyValue | (Curl_easy *,Curl_chunker *,bool) | | Curl_httpchunk_init | 2 |
+| constructor_delegation.cpp:11:2:11:8 | MyValue | (Curl_easy *,Curl_chunker *,bool) | | Curl_httpchunk_reset | 2 |
+| constructor_delegation.cpp:11:2:11:8 | MyValue | (Curl_easy *,connectdata *,bool) | | Curl_cpool_disconnect | 2 |
+| constructor_delegation.cpp:11:2:11:8 | MyValue | (Curl_easy *,connectdata *,bool) | | Curl_on_disconnect | 2 |
+| constructor_delegation.cpp:11:2:11:8 | MyValue | (Curl_easy *,curltime *,bool) | | Curl_timeleft | 2 |
+| constructor_delegation.cpp:11:2:11:8 | MyValue | (Curl_easy *,pingpong *,bool) | | Curl_pp_state_timeout | 2 |
+| constructor_delegation.cpp:11:2:11:8 | MyValue | (Curl_easy *,size_t,bool) | | Curl_bump_headersize | 2 |
+| constructor_delegation.cpp:11:2:11:8 | MyValue | (GlobalConfig *,timeval *,bool) | | progress_meter | 2 |
| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (ASN1_STRING *,int) | | ASN1_STRING_length_set | 1 |
| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (ASYNC_WAIT_CTX *,int) | | ASYNC_WAIT_CTX_set_status | 1 |
| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (BIGNUM *,int) | | BN_clear_bit | 1 |
@@ -4014,6 +4653,8 @@ signatureMatches
| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (BIO *,int) | | TXT_DB_read | 1 |
| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 |
| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 |
+| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (CURL *,int) | | curl_easy_pause | 1 |
+| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (Curl_easy *,int) | | Curl_conn_get_socket | 1 |
| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (DH *,int) | | DH_clear_flags | 1 |
| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (DH *,int) | | DH_set_flags | 1 |
| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (DH_METHOD *,int) | | DH_meth_set_flags | 1 |
@@ -4057,6 +4698,17 @@ signatureMatches
| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 |
| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 |
| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 |
+| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 |
+| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 |
+| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 |
+| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 |
+| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 |
+| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 |
+| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 |
+| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 |
+| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 |
+| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 |
+| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 |
| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (LPCOLESTR,int) | CComBSTR | Append | 1 |
| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 |
| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 |
@@ -4174,8 +4826,10 @@ signatureMatches
| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 |
| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 |
| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (acttab *,int) | | acttab_insert | 1 |
+| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (char *,int) | | Curl_str2addr | 1 |
| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (char *,int) | | PEM_proc_type | 1 |
| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (char,int) | CStringT | CStringT | 1 |
+| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (connectdata *,int) | | Curl_conn_is_ssl | 1 |
| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 |
| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const BIGNUM *,int) | | BN_get_flags | 1 |
| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const BIGNUM *,int) | | BN_is_bit_set | 1 |
@@ -4242,12 +4896,22 @@ signatureMatches
| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const unsigned char *,int) | | Jim_GenHashFunction | 1 |
| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 |
| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 |
+| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (dynhds *,int) | | Curl_dynhds_set_opts | 1 |
+| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (gzFile,int) | | gzflush | 1 |
+| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (gzFile,int) | | gzputc | 1 |
| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (int *,int) | | X509_PURPOSE_set | 1 |
| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (int *,int) | | X509_TRUST_set | 1 |
| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (int,int) | | BN_security_bits | 1 |
| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (int,int) | | EVP_MD_meth_new | 1 |
| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (int,int) | | EVP_PKEY_meth_new | 1 |
| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (int,int) | | acttab_alloc | 1 |
+| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 |
+| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 |
+| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 |
+| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 |
+| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 |
+| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 |
+| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 |
| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (rule *,int) | | Configlist_add | 1 |
| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (rule *,int) | | Configlist_addbasis | 1 |
| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 |
@@ -4282,6 +4946,7 @@ signatureMatches
| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (unsigned char *,int) | | RAND_priv_bytes | 1 |
| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 |
| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (unsigned short,int) | | dtls1_get_queue_priority | 1 |
+| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (uv_env_item_t *,int) | | uv_os_free_environ | 1 |
| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (void *,int) | | DSO_dsobyaddr | 1 |
| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (void *,int) | | sqlite3_realloc | 1 |
| constructor_delegation.cpp:19:2:19:15 | MyDerivedValue | (wchar_t,int) | CStringT | CStringT | 1 |
@@ -4303,6 +4968,9 @@ signatureMatches
| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | X509_TRUST_get0 | 0 |
| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | X509_TRUST_get_by_id | 0 |
| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | X509_VERIFY_PARAM_get0 | 0 |
+| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | c_tolower | 0 |
+| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | c_toupper | 0 |
+| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | curlx_sitouz | 0 |
| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | evp_pkey_type2name | 0 |
| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | ossl_cmp_bodytype_to_string | 0 |
| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | ossl_tolower | 0 |
@@ -4310,6 +4978,12 @@ signatureMatches
| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | sqlite3_compileoption_get | 0 |
| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | sqlite3_errstr | 0 |
| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | tls13_alert_code | 0 |
+| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | uv__accept | 0 |
+| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | uv_err_name | 0 |
+| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | uv_get_osfhandle | 0 |
+| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | uv_strerror | 0 |
+| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | uv_translate_sys_error | 0 |
+| copyableclass.cpp:8:2:8:16 | MyCopyableClass | (int) | | zError | 0 |
| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | ASN1_STRING_type_new | 0 |
| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | ASN1_tag2bit | 0 |
| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | ASN1_tag2str | 0 |
@@ -4328,6 +5002,9 @@ signatureMatches
| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | X509_TRUST_get0 | 0 |
| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | X509_TRUST_get_by_id | 0 |
| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | X509_VERIFY_PARAM_get0 | 0 |
+| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | c_tolower | 0 |
+| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | c_toupper | 0 |
+| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | curlx_sitouz | 0 |
| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | evp_pkey_type2name | 0 |
| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | ossl_cmp_bodytype_to_string | 0 |
| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | ossl_tolower | 0 |
@@ -4335,9 +5012,18 @@ signatureMatches
| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | sqlite3_compileoption_get | 0 |
| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | sqlite3_errstr | 0 |
| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | tls13_alert_code | 0 |
+| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | uv__accept | 0 |
+| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | uv_err_name | 0 |
+| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | uv_get_osfhandle | 0 |
+| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | uv_strerror | 0 |
+| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | uv_translate_sys_error | 0 |
+| copyableclass_declonly.cpp:8:2:8:24 | MyCopyableClassDeclOnly | (int) | | zError | 0 |
+| file://:0:0:0:0 | operator delete | (void *) | | Curl_cpool_upkeep | 0 |
| file://:0:0:0:0 | operator delete | (void *) | | ossl_kdf_data_new | 0 |
| file://:0:0:0:0 | operator new | (unsigned long) | | BN_num_bits_word | 0 |
| file://:0:0:0:0 | operator new | (unsigned long) | | BUF_MEM_new_ex | 0 |
+| file://:0:0:0:0 | operator new | (unsigned long) | | curlx_ultouc | 0 |
+| file://:0:0:0:0 | operator new | (unsigned long) | | curlx_ultous | 0 |
| format.cpp:5:5:5:12 | snprintf | (StrAccum *,sqlite3_str *,const char *,...) | | sqlite3_str_appendf | 2 |
| format.cpp:5:5:5:12 | snprintf | (StrAccum *,sqlite3_str *,const char *,...) | | sqlite3_str_appendf | 3 |
| format.cpp:5:5:5:12 | snprintf | (char *,size_t,const char *,...) | | BIO_snprintf | 0 |
@@ -4346,11 +5032,14 @@ signatureMatches
| format.cpp:5:5:5:12 | snprintf | (char *,size_t,const char *,...) | | BIO_snprintf | 3 |
| format.cpp:5:5:5:12 | snprintf | (int,char *,const char *,...) | | sqlite3_snprintf | 2 |
| format.cpp:5:5:5:12 | snprintf | (int,char *,const char *,...) | | sqlite3_snprintf | 3 |
+| format.cpp:6:5:6:11 | sprintf | (CURLSH *,CURLSHoption,...) | | curl_share_setopt | 2 |
| format.cpp:6:5:6:11 | sprintf | (Jim_Interp *,const char *,...) | | Jim_SetResultFormatted | 1 |
| format.cpp:6:5:6:11 | sprintf | (Jim_Interp *,const char *,...) | | Jim_SetResultFormatted | 2 |
+| format.cpp:6:5:6:11 | sprintf | (curl_httppost **,curl_httppost **,...) | | curl_formadd | 2 |
| format.cpp:7:5:7:12 | swprintf | (StrAccum *,sqlite3_str *,const char *,...) | | sqlite3_str_appendf | 3 |
| format.cpp:7:5:7:12 | swprintf | (char *,size_t,const char *,...) | | BIO_snprintf | 3 |
| format.cpp:7:5:7:12 | swprintf | (int,char *,const char *,...) | | sqlite3_snprintf | 3 |
+| format.cpp:14:5:14:13 | vsnprintf | (..(*)(..),..(*)(..),..(*)(..),void *) | | libssh2_session_init_ex | 3 |
| format.cpp:14:5:14:13 | vsnprintf | (BIO *,CMS_ContentInfo **,pem_password_cb *,void *) | | PEM_read_bio_CMS | 3 |
| format.cpp:14:5:14:13 | vsnprintf | (BIO *,DH **,pem_password_cb *,void *) | | PEM_read_bio_DHparams | 3 |
| format.cpp:14:5:14:13 | vsnprintf | (BIO *,DSA **,pem_password_cb *,void *) | | PEM_read_bio_DSAPrivateKey | 3 |
@@ -4378,6 +5067,11 @@ signatureMatches
| format.cpp:14:5:14:13 | vsnprintf | (BIO *,X509_SIG **,pem_password_cb *,void *) | | PEM_read_bio_PKCS8 | 3 |
| format.cpp:14:5:14:13 | vsnprintf | (BIO *,size_t,..(*)(..),void *) | | ossl_quic_demux_new | 3 |
| format.cpp:14:5:14:13 | vsnprintf | (BIO *,stack_st_X509_INFO *,pem_password_cb *,void *) | | PEM_X509_INFO_read_bio | 3 |
+| format.cpp:14:5:14:13 | vsnprintf | (BrotliDecoderStateInternal *,brotli_alloc_func,brotli_free_func,void *) | | BrotliDecoderStateInit | 3 |
+| format.cpp:14:5:14:13 | vsnprintf | (Curl_easy *,connectdata *,Curl_cpool_conn_do_cb *,void *) | | Curl_cpool_do_locked | 3 |
+| format.cpp:14:5:14:13 | vsnprintf | (Curl_easy *,pingpong *,const char *,va_list) | | Curl_pp_vsendf | 2 |
+| format.cpp:14:5:14:13 | vsnprintf | (Curl_easy *,pingpong *,const char *,va_list) | | Curl_pp_vsendf | 3 |
+| format.cpp:14:5:14:13 | vsnprintf | (Curl_hash *,void *,size_t,void *) | | Curl_hash_add | 3 |
| format.cpp:14:5:14:13 | vsnprintf | (DSO *,int,long,void *) | | DSO_ctrl | 3 |
| format.cpp:14:5:14:13 | vsnprintf | (EVP_CIPHER_CTX *,int,int,void *) | | EVP_CIPHER_CTX_ctrl | 3 |
| format.cpp:14:5:14:13 | vsnprintf | (FILE *,CMS_ContentInfo **,pem_password_cb *,void *) | | PEM_read_CMS | 3 |
@@ -4408,6 +5102,7 @@ signatureMatches
| format.cpp:14:5:14:13 | vsnprintf | (FILE *,stack_st_X509_INFO *,pem_password_cb *,void *) | | PEM_X509_INFO_read | 3 |
| format.cpp:14:5:14:13 | vsnprintf | (HT *,size_t,..(*)(..),void *) | | ossl_ht_filter | 3 |
| format.cpp:14:5:14:13 | vsnprintf | (MD5_SHA1_CTX *,int,int,void *) | | ossl_md5_sha1_ctrl | 3 |
+| format.cpp:14:5:14:13 | vsnprintf | (MemoryManager *,brotli_alloc_func,brotli_free_func,void *) | | BrotliInitMemoryManager | 3 |
| format.cpp:14:5:14:13 | vsnprintf | (OCB128_CONTEXT *,OCB128_CONTEXT *,void *,void *) | | CRYPTO_ocb128_copy_ctx | 3 |
| format.cpp:14:5:14:13 | vsnprintf | (OPENSSL_LHASH *,OPENSSL_LH_DOALL_FUNCARG_THUNK,OPENSSL_LH_DOALL_FUNCARG,void *) | | OPENSSL_LH_doall_arg_thunk | 3 |
| format.cpp:14:5:14:13 | vsnprintf | (OSSL_PROVIDER *,int,..(*)(..),void *) | | evp_names_do_all | 3 |
@@ -4432,12 +5127,22 @@ signatureMatches
| format.cpp:14:5:14:13 | vsnprintf | (char *,size_t,const char *,va_list) | | BIO_vsnprintf | 1 |
| format.cpp:14:5:14:13 | vsnprintf | (char *,size_t,const char *,va_list) | | BIO_vsnprintf | 2 |
| format.cpp:14:5:14:13 | vsnprintf | (char *,size_t,const char *,va_list) | | BIO_vsnprintf | 3 |
+| format.cpp:14:5:14:13 | vsnprintf | (char *,size_t,const char *,va_list) | | curl_mvsnprintf | 0 |
+| format.cpp:14:5:14:13 | vsnprintf | (char *,size_t,const char *,va_list) | | curl_mvsnprintf | 1 |
+| format.cpp:14:5:14:13 | vsnprintf | (char *,size_t,const char *,va_list) | | curl_mvsnprintf | 2 |
+| format.cpp:14:5:14:13 | vsnprintf | (char *,size_t,const char *,va_list) | | curl_mvsnprintf | 3 |
+| format.cpp:14:5:14:13 | vsnprintf | (char *,size_t,size_t,void *) | | Curl_ftp_parselist | 3 |
+| format.cpp:14:5:14:13 | vsnprintf | (char *,size_t,size_t,void *) | | Curl_mime_read | 3 |
+| format.cpp:14:5:14:13 | vsnprintf | (char *,size_t,size_t,void *) | | tool_header_cb | 3 |
+| format.cpp:14:5:14:13 | vsnprintf | (char *,size_t,size_t,void *) | | tool_mime_stdin_read | 3 |
+| format.cpp:14:5:14:13 | vsnprintf | (char *,size_t,size_t,void *) | | tool_read_cb | 3 |
| format.cpp:14:5:14:13 | vsnprintf | (const OSSL_NAMEMAP *,int,..(*)(..),void *) | | ossl_namemap_doall_names | 3 |
| format.cpp:14:5:14:13 | vsnprintf | (int,char *,const char *,va_list) | | sqlite3_vsnprintf | 2 |
| format.cpp:14:5:14:13 | vsnprintf | (int,char *,const char *,va_list) | | sqlite3_vsnprintf | 3 |
| format.cpp:14:5:14:13 | vsnprintf | (int,int,const char *,va_list) | | ERR_vset_error | 2 |
| format.cpp:14:5:14:13 | vsnprintf | (int,int,const char *,va_list) | | ERR_vset_error | 3 |
| format.cpp:14:5:14:13 | vsnprintf | (int,unsigned long,..(*)(..),void *) | | RSA_generate_key | 3 |
+| format.cpp:14:5:14:13 | vsnprintf | (nghttp2_session *,const uint8_t *,size_t,void *) | | nghttp2_session_upgrade | 3 |
| format.cpp:14:5:14:13 | vsnprintf | (sqlite3 *,const char *,..(*)(..),void *) | | sqlite3_recover_init_sql | 3 |
| format.cpp:14:5:14:13 | vsnprintf | (sqlite3 *,const char *,..(*)(..),void *) | | sqlite3_rtree_geometry_callback | 3 |
| format.cpp:14:5:14:13 | vsnprintf | (sqlite3 *,const char *,const sqlite3_module *,void *) | | sqlite3_create_module | 3 |
@@ -4452,9 +5157,14 @@ signatureMatches
| format.cpp:16:5:16:13 | mysprintf | (char *,size_t,const char *,...) | | BIO_snprintf | 3 |
| format.cpp:16:5:16:13 | mysprintf | (int,char *,const char *,...) | | sqlite3_snprintf | 2 |
| format.cpp:16:5:16:13 | mysprintf | (int,char *,const char *,...) | | sqlite3_snprintf | 3 |
+| format.cpp:28:5:28:10 | sscanf | (CURLSH *,CURLSHoption,...) | | curl_share_setopt | 2 |
| format.cpp:28:5:28:10 | sscanf | (Jim_Interp *,const char *,...) | | Jim_SetResultFormatted | 1 |
| format.cpp:28:5:28:10 | sscanf | (Jim_Interp *,const char *,...) | | Jim_SetResultFormatted | 2 |
+| format.cpp:28:5:28:10 | sscanf | (curl_httppost **,curl_httppost **,...) | | curl_formadd | 2 |
| format.cpp:142:8:142:13 | strlen | (const char *) | | BIO_gethostbyname | 0 |
+| format.cpp:142:8:142:13 | strlen | (const char *) | | Curl_copy_header_value | 0 |
+| format.cpp:142:8:142:13 | strlen | (const char *) | | Curl_get_scheme_handler | 0 |
+| format.cpp:142:8:142:13 | strlen | (const char *) | | Curl_getdate_capped | 0 |
| format.cpp:142:8:142:13 | strlen | (const char *) | | Jim_StrDup | 0 |
| format.cpp:142:8:142:13 | strlen | (const char *) | | OPENSSL_LH_strhash | 0 |
| format.cpp:142:8:142:13 | strlen | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 |
@@ -4465,16 +5175,23 @@ signatureMatches
| format.cpp:142:8:142:13 | strlen | (const char *) | | X509_LOOKUP_meth_new | 0 |
| format.cpp:142:8:142:13 | strlen | (const char *) | | a2i_IPADDRESS | 0 |
| format.cpp:142:8:142:13 | strlen | (const char *) | | a2i_IPADDRESS_NC | 0 |
+| format.cpp:142:8:142:13 | strlen | (const char *) | | last_component | 0 |
| format.cpp:142:8:142:13 | strlen | (const char *) | | opt_path_end | 0 |
| format.cpp:142:8:142:13 | strlen | (const char *) | | opt_progname | 0 |
| format.cpp:142:8:142:13 | strlen | (const char *) | | ossl_lh_strcasehash | 0 |
| format.cpp:142:8:142:13 | strlen | (const char *) | | strhash | 0 |
+| format.cpp:142:8:142:13 | strlen | (const char *) | | uc_script_byname | 0 |
+| format.cpp:142:8:142:13 | strlen | (const char *) | | uv__strdup | 0 |
+| format.cpp:142:8:142:13 | strlen | (const char *) | | uv_wtf8_length_as_utf16 | 0 |
| map.cpp:8:6:8:9 | sink | (char *) | | SRP_VBASE_new | 0 |
| map.cpp:8:6:8:9 | sink | (char *) | | defossilize | 0 |
| map.cpp:8:6:8:9 | sink | (char *) | | make_uppercase | 0 |
| map.cpp:8:6:8:9 | sink | (char *) | | next_item | 0 |
| map.cpp:8:6:8:9 | sink | (char *) | CStringT | CStringT | 0 |
| map.cpp:9:6:9:9 | sink | (const char *) | | BIO_gethostbyname | 0 |
+| map.cpp:9:6:9:9 | sink | (const char *) | | Curl_copy_header_value | 0 |
+| map.cpp:9:6:9:9 | sink | (const char *) | | Curl_get_scheme_handler | 0 |
+| map.cpp:9:6:9:9 | sink | (const char *) | | Curl_getdate_capped | 0 |
| map.cpp:9:6:9:9 | sink | (const char *) | | Jim_StrDup | 0 |
| map.cpp:9:6:9:9 | sink | (const char *) | | OPENSSL_LH_strhash | 0 |
| map.cpp:9:6:9:9 | sink | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 |
@@ -4485,10 +5202,14 @@ signatureMatches
| map.cpp:9:6:9:9 | sink | (const char *) | | X509_LOOKUP_meth_new | 0 |
| map.cpp:9:6:9:9 | sink | (const char *) | | a2i_IPADDRESS | 0 |
| map.cpp:9:6:9:9 | sink | (const char *) | | a2i_IPADDRESS_NC | 0 |
+| map.cpp:9:6:9:9 | sink | (const char *) | | last_component | 0 |
| map.cpp:9:6:9:9 | sink | (const char *) | | opt_path_end | 0 |
| map.cpp:9:6:9:9 | sink | (const char *) | | opt_progname | 0 |
| map.cpp:9:6:9:9 | sink | (const char *) | | ossl_lh_strcasehash | 0 |
| map.cpp:9:6:9:9 | sink | (const char *) | | strhash | 0 |
+| map.cpp:9:6:9:9 | sink | (const char *) | | uc_script_byname | 0 |
+| map.cpp:9:6:9:9 | sink | (const char *) | | uv__strdup | 0 |
+| map.cpp:9:6:9:9 | sink | (const char *) | | uv_wtf8_length_as_utf16 | 0 |
| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | ASN1_STRING_type_new | 0 |
| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | ASN1_tag2bit | 0 |
| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | ASN1_tag2str | 0 |
@@ -4507,6 +5228,9 @@ signatureMatches
| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | X509_TRUST_get0 | 0 |
| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | X509_TRUST_get_by_id | 0 |
| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | X509_VERIFY_PARAM_get0 | 0 |
+| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | c_tolower | 0 |
+| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | c_toupper | 0 |
+| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | curlx_sitouz | 0 |
| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | evp_pkey_type2name | 0 |
| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | ossl_cmp_bodytype_to_string | 0 |
| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | ossl_tolower | 0 |
@@ -4514,6 +5238,12 @@ signatureMatches
| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | sqlite3_compileoption_get | 0 |
| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | sqlite3_errstr | 0 |
| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | tls13_alert_code | 0 |
+| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | uv__accept | 0 |
+| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | uv_err_name | 0 |
+| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | uv_get_osfhandle | 0 |
+| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | uv_strerror | 0 |
+| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | uv_translate_sys_error | 0 |
+| movableclass.cpp:8:2:8:15 | MyMovableClass | (int) | | zError | 0 |
| set.cpp:8:6:8:9 | sink | (char *) | | SRP_VBASE_new | 0 |
| set.cpp:8:6:8:9 | sink | (char *) | | defossilize | 0 |
| set.cpp:8:6:8:9 | sink | (char *) | | make_uppercase | 0 |
@@ -4537,6 +5267,9 @@ signatureMatches
| smart_pointer.cpp:4:6:4:9 | sink | (int) | | X509_TRUST_get0 | 0 |
| smart_pointer.cpp:4:6:4:9 | sink | (int) | | X509_TRUST_get_by_id | 0 |
| smart_pointer.cpp:4:6:4:9 | sink | (int) | | X509_VERIFY_PARAM_get0 | 0 |
+| smart_pointer.cpp:4:6:4:9 | sink | (int) | | c_tolower | 0 |
+| smart_pointer.cpp:4:6:4:9 | sink | (int) | | c_toupper | 0 |
+| smart_pointer.cpp:4:6:4:9 | sink | (int) | | curlx_sitouz | 0 |
| smart_pointer.cpp:4:6:4:9 | sink | (int) | | evp_pkey_type2name | 0 |
| smart_pointer.cpp:4:6:4:9 | sink | (int) | | ossl_cmp_bodytype_to_string | 0 |
| smart_pointer.cpp:4:6:4:9 | sink | (int) | | ossl_tolower | 0 |
@@ -4544,6 +5277,12 @@ signatureMatches
| smart_pointer.cpp:4:6:4:9 | sink | (int) | | sqlite3_compileoption_get | 0 |
| smart_pointer.cpp:4:6:4:9 | sink | (int) | | sqlite3_errstr | 0 |
| smart_pointer.cpp:4:6:4:9 | sink | (int) | | tls13_alert_code | 0 |
+| smart_pointer.cpp:4:6:4:9 | sink | (int) | | uv__accept | 0 |
+| smart_pointer.cpp:4:6:4:9 | sink | (int) | | uv_err_name | 0 |
+| smart_pointer.cpp:4:6:4:9 | sink | (int) | | uv_get_osfhandle | 0 |
+| smart_pointer.cpp:4:6:4:9 | sink | (int) | | uv_strerror | 0 |
+| smart_pointer.cpp:4:6:4:9 | sink | (int) | | uv_translate_sys_error | 0 |
+| smart_pointer.cpp:4:6:4:9 | sink | (int) | | zError | 0 |
| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | ASN1_STRING_type_new | 0 |
| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | ASN1_tag2bit | 0 |
| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | ASN1_tag2str | 0 |
@@ -4562,6 +5301,9 @@ signatureMatches
| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | X509_TRUST_get0 | 0 |
| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | X509_TRUST_get_by_id | 0 |
| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | X509_VERIFY_PARAM_get0 | 0 |
+| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | c_tolower | 0 |
+| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | c_toupper | 0 |
+| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | curlx_sitouz | 0 |
| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | evp_pkey_type2name | 0 |
| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | ossl_cmp_bodytype_to_string | 0 |
| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | ossl_tolower | 0 |
@@ -4569,6 +5311,12 @@ signatureMatches
| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | sqlite3_compileoption_get | 0 |
| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | sqlite3_errstr | 0 |
| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | tls13_alert_code | 0 |
+| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | uv__accept | 0 |
+| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | uv_err_name | 0 |
+| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | uv_get_osfhandle | 0 |
+| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | uv_strerror | 0 |
+| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | uv_translate_sys_error | 0 |
+| standalone_iterators.cpp:5:6:5:9 | sink | (int) | | zError | 0 |
| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | ASN1_STRING_type_new | 0 |
| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | ASN1_tag2bit | 0 |
| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | ASN1_tag2str | 0 |
@@ -4587,6 +5335,9 @@ signatureMatches
| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | X509_TRUST_get0 | 0 |
| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | X509_TRUST_get_by_id | 0 |
| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | X509_VERIFY_PARAM_get0 | 0 |
+| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | c_tolower | 0 |
+| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | c_toupper | 0 |
+| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | curlx_sitouz | 0 |
| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | evp_pkey_type2name | 0 |
| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | ossl_cmp_bodytype_to_string | 0 |
| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | ossl_tolower | 0 |
@@ -4594,6 +5345,12 @@ signatureMatches
| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | sqlite3_compileoption_get | 0 |
| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | sqlite3_errstr | 0 |
| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | tls13_alert_code | 0 |
+| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | uv__accept | 0 |
+| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | uv_err_name | 0 |
+| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | uv_get_osfhandle | 0 |
+| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | uv_strerror | 0 |
+| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | uv_translate_sys_error | 0 |
+| standalone_iterators.cpp:16:30:16:39 | operator++ | (int) | | zError | 0 |
| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | ASN1_STRING_type_new | 0 |
| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | ASN1_tag2bit | 0 |
| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | ASN1_tag2str | 0 |
@@ -4612,6 +5369,9 @@ signatureMatches
| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | X509_TRUST_get0 | 0 |
| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | X509_TRUST_get_by_id | 0 |
| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | X509_VERIFY_PARAM_get0 | 0 |
+| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | c_tolower | 0 |
+| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | c_toupper | 0 |
+| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | curlx_sitouz | 0 |
| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | evp_pkey_type2name | 0 |
| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | ossl_cmp_bodytype_to_string | 0 |
| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | ossl_tolower | 0 |
@@ -4619,6 +5379,12 @@ signatureMatches
| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | sqlite3_compileoption_get | 0 |
| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | sqlite3_errstr | 0 |
| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | tls13_alert_code | 0 |
+| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | uv__accept | 0 |
+| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | uv_err_name | 0 |
+| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | uv_get_osfhandle | 0 |
+| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | uv_strerror | 0 |
+| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | uv_translate_sys_error | 0 |
+| standalone_iterators.cpp:23:27:23:36 | operator++ | (int) | | zError | 0 |
| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | ASN1_STRING_type_new | 0 |
| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | ASN1_tag2bit | 0 |
| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | ASN1_tag2str | 0 |
@@ -4637,6 +5403,9 @@ signatureMatches
| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | X509_TRUST_get0 | 0 |
| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | X509_TRUST_get_by_id | 0 |
| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | X509_VERIFY_PARAM_get0 | 0 |
+| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | c_tolower | 0 |
+| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | c_toupper | 0 |
+| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | curlx_sitouz | 0 |
| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | evp_pkey_type2name | 0 |
| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | ossl_cmp_bodytype_to_string | 0 |
| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | ossl_tolower | 0 |
@@ -4644,6 +5413,12 @@ signatureMatches
| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | sqlite3_compileoption_get | 0 |
| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | sqlite3_errstr | 0 |
| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | tls13_alert_code | 0 |
+| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | uv__accept | 0 |
+| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | uv_err_name | 0 |
+| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | uv_get_osfhandle | 0 |
+| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | uv_strerror | 0 |
+| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | uv_translate_sys_error | 0 |
+| standalone_iterators.cpp:39:18:39:27 | operator++ | (int) | | zError | 0 |
| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | ASN1_STRING_type_new | 0 |
| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | ASN1_tag2bit | 0 |
| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | ASN1_tag2str | 0 |
@@ -4662,6 +5437,9 @@ signatureMatches
| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | X509_TRUST_get0 | 0 |
| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | X509_TRUST_get_by_id | 0 |
| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | X509_VERIFY_PARAM_get0 | 0 |
+| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | c_tolower | 0 |
+| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | c_toupper | 0 |
+| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | curlx_sitouz | 0 |
| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | evp_pkey_type2name | 0 |
| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | ossl_cmp_bodytype_to_string | 0 |
| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | ossl_tolower | 0 |
@@ -4669,6 +5447,12 @@ signatureMatches
| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | sqlite3_compileoption_get | 0 |
| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | sqlite3_errstr | 0 |
| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | tls13_alert_code | 0 |
+| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | uv__accept | 0 |
+| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | uv_err_name | 0 |
+| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | uv_get_osfhandle | 0 |
+| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | uv_strerror | 0 |
+| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | uv_translate_sys_error | 0 |
+| standalone_iterators.cpp:66:30:66:39 | operator++ | (int) | | zError | 0 |
| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | ASN1_STRING_type_new | 0 |
| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | ASN1_tag2bit | 0 |
| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | ASN1_tag2str | 0 |
@@ -4687,6 +5471,9 @@ signatureMatches
| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | X509_TRUST_get0 | 0 |
| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | X509_TRUST_get_by_id | 0 |
| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | X509_VERIFY_PARAM_get0 | 0 |
+| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | c_tolower | 0 |
+| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | c_toupper | 0 |
+| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | curlx_sitouz | 0 |
| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | evp_pkey_type2name | 0 |
| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | ossl_cmp_bodytype_to_string | 0 |
| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | ossl_tolower | 0 |
@@ -4694,6 +5481,12 @@ signatureMatches
| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | sqlite3_compileoption_get | 0 |
| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | sqlite3_errstr | 0 |
| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | tls13_alert_code | 0 |
+| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | uv__accept | 0 |
+| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | uv_err_name | 0 |
+| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | uv_get_osfhandle | 0 |
+| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | uv_strerror | 0 |
+| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | uv_translate_sys_error | 0 |
+| standalone_iterators.cpp:68:30:68:39 | operator-- | (int) | | zError | 0 |
| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | ASN1_STRING_type_new | 0 |
| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | ASN1_tag2bit | 0 |
| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | ASN1_tag2str | 0 |
@@ -4712,6 +5505,9 @@ signatureMatches
| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | X509_TRUST_get0 | 0 |
| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | X509_TRUST_get_by_id | 0 |
| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | X509_VERIFY_PARAM_get0 | 0 |
+| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | c_tolower | 0 |
+| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | c_toupper | 0 |
+| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | curlx_sitouz | 0 |
| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | evp_pkey_type2name | 0 |
| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | ossl_cmp_bodytype_to_string | 0 |
| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | ossl_tolower | 0 |
@@ -4719,6 +5515,12 @@ signatureMatches
| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | sqlite3_compileoption_get | 0 |
| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | sqlite3_errstr | 0 |
| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | tls13_alert_code | 0 |
+| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | uv__accept | 0 |
+| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | uv_err_name | 0 |
+| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | uv_get_osfhandle | 0 |
+| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | uv_strerror | 0 |
+| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | uv_translate_sys_error | 0 |
+| standalone_iterators.cpp:70:31:70:39 | operator= | (int) | | zError | 0 |
| standalone_iterators.cpp:103:27:103:36 | operator+= | (ASN1_STRING *,int) | | ASN1_STRING_length_set | 1 |
| standalone_iterators.cpp:103:27:103:36 | operator+= | (ASYNC_WAIT_CTX *,int) | | ASYNC_WAIT_CTX_set_status | 1 |
| standalone_iterators.cpp:103:27:103:36 | operator+= | (BIGNUM *,int) | | BN_clear_bit | 1 |
@@ -4737,6 +5539,8 @@ signatureMatches
| standalone_iterators.cpp:103:27:103:36 | operator+= | (BIO *,int) | | TXT_DB_read | 1 |
| standalone_iterators.cpp:103:27:103:36 | operator+= | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 |
| standalone_iterators.cpp:103:27:103:36 | operator+= | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 |
+| standalone_iterators.cpp:103:27:103:36 | operator+= | (CURL *,int) | | curl_easy_pause | 1 |
+| standalone_iterators.cpp:103:27:103:36 | operator+= | (Curl_easy *,int) | | Curl_conn_get_socket | 1 |
| standalone_iterators.cpp:103:27:103:36 | operator+= | (DH *,int) | | DH_clear_flags | 1 |
| standalone_iterators.cpp:103:27:103:36 | operator+= | (DH *,int) | | DH_set_flags | 1 |
| standalone_iterators.cpp:103:27:103:36 | operator+= | (DH_METHOD *,int) | | DH_meth_set_flags | 1 |
@@ -4780,6 +5584,17 @@ signatureMatches
| standalone_iterators.cpp:103:27:103:36 | operator+= | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 |
| standalone_iterators.cpp:103:27:103:36 | operator+= | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 |
| standalone_iterators.cpp:103:27:103:36 | operator+= | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 |
+| standalone_iterators.cpp:103:27:103:36 | operator+= | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 |
+| standalone_iterators.cpp:103:27:103:36 | operator+= | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 |
+| standalone_iterators.cpp:103:27:103:36 | operator+= | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 |
+| standalone_iterators.cpp:103:27:103:36 | operator+= | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 |
+| standalone_iterators.cpp:103:27:103:36 | operator+= | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 |
+| standalone_iterators.cpp:103:27:103:36 | operator+= | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 |
+| standalone_iterators.cpp:103:27:103:36 | operator+= | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 |
+| standalone_iterators.cpp:103:27:103:36 | operator+= | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 |
+| standalone_iterators.cpp:103:27:103:36 | operator+= | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 |
+| standalone_iterators.cpp:103:27:103:36 | operator+= | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 |
+| standalone_iterators.cpp:103:27:103:36 | operator+= | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 |
| standalone_iterators.cpp:103:27:103:36 | operator+= | (LPCOLESTR,int) | CComBSTR | Append | 1 |
| standalone_iterators.cpp:103:27:103:36 | operator+= | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 |
| standalone_iterators.cpp:103:27:103:36 | operator+= | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 |
@@ -4897,8 +5712,10 @@ signatureMatches
| standalone_iterators.cpp:103:27:103:36 | operator+= | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 |
| standalone_iterators.cpp:103:27:103:36 | operator+= | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 |
| standalone_iterators.cpp:103:27:103:36 | operator+= | (acttab *,int) | | acttab_insert | 1 |
+| standalone_iterators.cpp:103:27:103:36 | operator+= | (char *,int) | | Curl_str2addr | 1 |
| standalone_iterators.cpp:103:27:103:36 | operator+= | (char *,int) | | PEM_proc_type | 1 |
| standalone_iterators.cpp:103:27:103:36 | operator+= | (char,int) | CStringT | CStringT | 1 |
+| standalone_iterators.cpp:103:27:103:36 | operator+= | (connectdata *,int) | | Curl_conn_is_ssl | 1 |
| standalone_iterators.cpp:103:27:103:36 | operator+= | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 |
| standalone_iterators.cpp:103:27:103:36 | operator+= | (const BIGNUM *,int) | | BN_get_flags | 1 |
| standalone_iterators.cpp:103:27:103:36 | operator+= | (const BIGNUM *,int) | | BN_is_bit_set | 1 |
@@ -4965,12 +5782,22 @@ signatureMatches
| standalone_iterators.cpp:103:27:103:36 | operator+= | (const unsigned char *,int) | | Jim_GenHashFunction | 1 |
| standalone_iterators.cpp:103:27:103:36 | operator+= | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 |
| standalone_iterators.cpp:103:27:103:36 | operator+= | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 |
+| standalone_iterators.cpp:103:27:103:36 | operator+= | (dynhds *,int) | | Curl_dynhds_set_opts | 1 |
+| standalone_iterators.cpp:103:27:103:36 | operator+= | (gzFile,int) | | gzflush | 1 |
+| standalone_iterators.cpp:103:27:103:36 | operator+= | (gzFile,int) | | gzputc | 1 |
| standalone_iterators.cpp:103:27:103:36 | operator+= | (int *,int) | | X509_PURPOSE_set | 1 |
| standalone_iterators.cpp:103:27:103:36 | operator+= | (int *,int) | | X509_TRUST_set | 1 |
| standalone_iterators.cpp:103:27:103:36 | operator+= | (int,int) | | BN_security_bits | 1 |
| standalone_iterators.cpp:103:27:103:36 | operator+= | (int,int) | | EVP_MD_meth_new | 1 |
| standalone_iterators.cpp:103:27:103:36 | operator+= | (int,int) | | EVP_PKEY_meth_new | 1 |
| standalone_iterators.cpp:103:27:103:36 | operator+= | (int,int) | | acttab_alloc | 1 |
+| standalone_iterators.cpp:103:27:103:36 | operator+= | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 |
+| standalone_iterators.cpp:103:27:103:36 | operator+= | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 |
+| standalone_iterators.cpp:103:27:103:36 | operator+= | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 |
+| standalone_iterators.cpp:103:27:103:36 | operator+= | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 |
+| standalone_iterators.cpp:103:27:103:36 | operator+= | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 |
+| standalone_iterators.cpp:103:27:103:36 | operator+= | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 |
+| standalone_iterators.cpp:103:27:103:36 | operator+= | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 |
| standalone_iterators.cpp:103:27:103:36 | operator+= | (rule *,int) | | Configlist_add | 1 |
| standalone_iterators.cpp:103:27:103:36 | operator+= | (rule *,int) | | Configlist_addbasis | 1 |
| standalone_iterators.cpp:103:27:103:36 | operator+= | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 |
@@ -5005,6 +5832,7 @@ signatureMatches
| standalone_iterators.cpp:103:27:103:36 | operator+= | (unsigned char *,int) | | RAND_priv_bytes | 1 |
| standalone_iterators.cpp:103:27:103:36 | operator+= | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 |
| standalone_iterators.cpp:103:27:103:36 | operator+= | (unsigned short,int) | | dtls1_get_queue_priority | 1 |
+| standalone_iterators.cpp:103:27:103:36 | operator+= | (uv_env_item_t *,int) | | uv_os_free_environ | 1 |
| standalone_iterators.cpp:103:27:103:36 | operator+= | (void *,int) | | DSO_dsobyaddr | 1 |
| standalone_iterators.cpp:103:27:103:36 | operator+= | (void *,int) | | sqlite3_realloc | 1 |
| standalone_iterators.cpp:103:27:103:36 | operator+= | (wchar_t,int) | CStringT | CStringT | 1 |
@@ -5098,6 +5926,21 @@ signatureMatches
| stl.h:52:12:52:21 | operator++ | (int) | | X509_VERIFY_PARAM_get0 | 0 |
| stl.h:52:12:52:21 | operator++ | (int) | | X509_VERIFY_PARAM_get0 | 0 |
| stl.h:52:12:52:21 | operator++ | (int) | | X509_VERIFY_PARAM_get0 | 0 |
+| stl.h:52:12:52:21 | operator++ | (int) | | c_tolower | 0 |
+| stl.h:52:12:52:21 | operator++ | (int) | | c_tolower | 0 |
+| stl.h:52:12:52:21 | operator++ | (int) | | c_tolower | 0 |
+| stl.h:52:12:52:21 | operator++ | (int) | | c_tolower | 0 |
+| stl.h:52:12:52:21 | operator++ | (int) | | c_tolower | 0 |
+| stl.h:52:12:52:21 | operator++ | (int) | | c_toupper | 0 |
+| stl.h:52:12:52:21 | operator++ | (int) | | c_toupper | 0 |
+| stl.h:52:12:52:21 | operator++ | (int) | | c_toupper | 0 |
+| stl.h:52:12:52:21 | operator++ | (int) | | c_toupper | 0 |
+| stl.h:52:12:52:21 | operator++ | (int) | | c_toupper | 0 |
+| stl.h:52:12:52:21 | operator++ | (int) | | curlx_sitouz | 0 |
+| stl.h:52:12:52:21 | operator++ | (int) | | curlx_sitouz | 0 |
+| stl.h:52:12:52:21 | operator++ | (int) | | curlx_sitouz | 0 |
+| stl.h:52:12:52:21 | operator++ | (int) | | curlx_sitouz | 0 |
+| stl.h:52:12:52:21 | operator++ | (int) | | curlx_sitouz | 0 |
| stl.h:52:12:52:21 | operator++ | (int) | | evp_pkey_type2name | 0 |
| stl.h:52:12:52:21 | operator++ | (int) | | evp_pkey_type2name | 0 |
| stl.h:52:12:52:21 | operator++ | (int) | | evp_pkey_type2name | 0 |
@@ -5133,6 +5976,36 @@ signatureMatches
| stl.h:52:12:52:21 | operator++ | (int) | | tls13_alert_code | 0 |
| stl.h:52:12:52:21 | operator++ | (int) | | tls13_alert_code | 0 |
| stl.h:52:12:52:21 | operator++ | (int) | | tls13_alert_code | 0 |
+| stl.h:52:12:52:21 | operator++ | (int) | | uv__accept | 0 |
+| stl.h:52:12:52:21 | operator++ | (int) | | uv__accept | 0 |
+| stl.h:52:12:52:21 | operator++ | (int) | | uv__accept | 0 |
+| stl.h:52:12:52:21 | operator++ | (int) | | uv__accept | 0 |
+| stl.h:52:12:52:21 | operator++ | (int) | | uv__accept | 0 |
+| stl.h:52:12:52:21 | operator++ | (int) | | uv_err_name | 0 |
+| stl.h:52:12:52:21 | operator++ | (int) | | uv_err_name | 0 |
+| stl.h:52:12:52:21 | operator++ | (int) | | uv_err_name | 0 |
+| stl.h:52:12:52:21 | operator++ | (int) | | uv_err_name | 0 |
+| stl.h:52:12:52:21 | operator++ | (int) | | uv_err_name | 0 |
+| stl.h:52:12:52:21 | operator++ | (int) | | uv_get_osfhandle | 0 |
+| stl.h:52:12:52:21 | operator++ | (int) | | uv_get_osfhandle | 0 |
+| stl.h:52:12:52:21 | operator++ | (int) | | uv_get_osfhandle | 0 |
+| stl.h:52:12:52:21 | operator++ | (int) | | uv_get_osfhandle | 0 |
+| stl.h:52:12:52:21 | operator++ | (int) | | uv_get_osfhandle | 0 |
+| stl.h:52:12:52:21 | operator++ | (int) | | uv_strerror | 0 |
+| stl.h:52:12:52:21 | operator++ | (int) | | uv_strerror | 0 |
+| stl.h:52:12:52:21 | operator++ | (int) | | uv_strerror | 0 |
+| stl.h:52:12:52:21 | operator++ | (int) | | uv_strerror | 0 |
+| stl.h:52:12:52:21 | operator++ | (int) | | uv_strerror | 0 |
+| stl.h:52:12:52:21 | operator++ | (int) | | uv_translate_sys_error | 0 |
+| stl.h:52:12:52:21 | operator++ | (int) | | uv_translate_sys_error | 0 |
+| stl.h:52:12:52:21 | operator++ | (int) | | uv_translate_sys_error | 0 |
+| stl.h:52:12:52:21 | operator++ | (int) | | uv_translate_sys_error | 0 |
+| stl.h:52:12:52:21 | operator++ | (int) | | uv_translate_sys_error | 0 |
+| stl.h:52:12:52:21 | operator++ | (int) | | zError | 0 |
+| stl.h:52:12:52:21 | operator++ | (int) | | zError | 0 |
+| stl.h:52:12:52:21 | operator++ | (int) | | zError | 0 |
+| stl.h:52:12:52:21 | operator++ | (int) | | zError | 0 |
+| stl.h:52:12:52:21 | operator++ | (int) | | zError | 0 |
| stl.h:54:12:54:21 | operator-- | (int) | | ASN1_STRING_type_new | 0 |
| stl.h:54:12:54:21 | operator-- | (int) | | ASN1_tag2bit | 0 |
| stl.h:54:12:54:21 | operator-- | (int) | | ASN1_tag2str | 0 |
@@ -5151,6 +6024,9 @@ signatureMatches
| stl.h:54:12:54:21 | operator-- | (int) | | X509_TRUST_get0 | 0 |
| stl.h:54:12:54:21 | operator-- | (int) | | X509_TRUST_get_by_id | 0 |
| stl.h:54:12:54:21 | operator-- | (int) | | X509_VERIFY_PARAM_get0 | 0 |
+| stl.h:54:12:54:21 | operator-- | (int) | | c_tolower | 0 |
+| stl.h:54:12:54:21 | operator-- | (int) | | c_toupper | 0 |
+| stl.h:54:12:54:21 | operator-- | (int) | | curlx_sitouz | 0 |
| stl.h:54:12:54:21 | operator-- | (int) | | evp_pkey_type2name | 0 |
| stl.h:54:12:54:21 | operator-- | (int) | | ossl_cmp_bodytype_to_string | 0 |
| stl.h:54:12:54:21 | operator-- | (int) | | ossl_tolower | 0 |
@@ -5158,6 +6034,12 @@ signatureMatches
| stl.h:54:12:54:21 | operator-- | (int) | | sqlite3_compileoption_get | 0 |
| stl.h:54:12:54:21 | operator-- | (int) | | sqlite3_errstr | 0 |
| stl.h:54:12:54:21 | operator-- | (int) | | tls13_alert_code | 0 |
+| stl.h:54:12:54:21 | operator-- | (int) | | uv__accept | 0 |
+| stl.h:54:12:54:21 | operator-- | (int) | | uv_err_name | 0 |
+| stl.h:54:12:54:21 | operator-- | (int) | | uv_get_osfhandle | 0 |
+| stl.h:54:12:54:21 | operator-- | (int) | | uv_strerror | 0 |
+| stl.h:54:12:54:21 | operator-- | (int) | | uv_translate_sys_error | 0 |
+| stl.h:54:12:54:21 | operator-- | (int) | | zError | 0 |
| stl.h:59:12:59:20 | operator+ | (int) | | ASN1_STRING_type_new | 0 |
| stl.h:59:12:59:20 | operator+ | (int) | | ASN1_tag2bit | 0 |
| stl.h:59:12:59:20 | operator+ | (int) | | ASN1_tag2str | 0 |
@@ -5176,6 +6058,9 @@ signatureMatches
| stl.h:59:12:59:20 | operator+ | (int) | | X509_TRUST_get0 | 0 |
| stl.h:59:12:59:20 | operator+ | (int) | | X509_TRUST_get_by_id | 0 |
| stl.h:59:12:59:20 | operator+ | (int) | | X509_VERIFY_PARAM_get0 | 0 |
+| stl.h:59:12:59:20 | operator+ | (int) | | c_tolower | 0 |
+| stl.h:59:12:59:20 | operator+ | (int) | | c_toupper | 0 |
+| stl.h:59:12:59:20 | operator+ | (int) | | curlx_sitouz | 0 |
| stl.h:59:12:59:20 | operator+ | (int) | | evp_pkey_type2name | 0 |
| stl.h:59:12:59:20 | operator+ | (int) | | ossl_cmp_bodytype_to_string | 0 |
| stl.h:59:12:59:20 | operator+ | (int) | | ossl_tolower | 0 |
@@ -5183,6 +6068,12 @@ signatureMatches
| stl.h:59:12:59:20 | operator+ | (int) | | sqlite3_compileoption_get | 0 |
| stl.h:59:12:59:20 | operator+ | (int) | | sqlite3_errstr | 0 |
| stl.h:59:12:59:20 | operator+ | (int) | | tls13_alert_code | 0 |
+| stl.h:59:12:59:20 | operator+ | (int) | | uv__accept | 0 |
+| stl.h:59:12:59:20 | operator+ | (int) | | uv_err_name | 0 |
+| stl.h:59:12:59:20 | operator+ | (int) | | uv_get_osfhandle | 0 |
+| stl.h:59:12:59:20 | operator+ | (int) | | uv_strerror | 0 |
+| stl.h:59:12:59:20 | operator+ | (int) | | uv_translate_sys_error | 0 |
+| stl.h:59:12:59:20 | operator+ | (int) | | zError | 0 |
| stl.h:60:12:60:20 | operator- | (int) | | ASN1_STRING_type_new | 0 |
| stl.h:60:12:60:20 | operator- | (int) | | ASN1_tag2bit | 0 |
| stl.h:60:12:60:20 | operator- | (int) | | ASN1_tag2str | 0 |
@@ -5201,6 +6092,9 @@ signatureMatches
| stl.h:60:12:60:20 | operator- | (int) | | X509_TRUST_get0 | 0 |
| stl.h:60:12:60:20 | operator- | (int) | | X509_TRUST_get_by_id | 0 |
| stl.h:60:12:60:20 | operator- | (int) | | X509_VERIFY_PARAM_get0 | 0 |
+| stl.h:60:12:60:20 | operator- | (int) | | c_tolower | 0 |
+| stl.h:60:12:60:20 | operator- | (int) | | c_toupper | 0 |
+| stl.h:60:12:60:20 | operator- | (int) | | curlx_sitouz | 0 |
| stl.h:60:12:60:20 | operator- | (int) | | evp_pkey_type2name | 0 |
| stl.h:60:12:60:20 | operator- | (int) | | ossl_cmp_bodytype_to_string | 0 |
| stl.h:60:12:60:20 | operator- | (int) | | ossl_tolower | 0 |
@@ -5208,6 +6102,12 @@ signatureMatches
| stl.h:60:12:60:20 | operator- | (int) | | sqlite3_compileoption_get | 0 |
| stl.h:60:12:60:20 | operator- | (int) | | sqlite3_errstr | 0 |
| stl.h:60:12:60:20 | operator- | (int) | | tls13_alert_code | 0 |
+| stl.h:60:12:60:20 | operator- | (int) | | uv__accept | 0 |
+| stl.h:60:12:60:20 | operator- | (int) | | uv_err_name | 0 |
+| stl.h:60:12:60:20 | operator- | (int) | | uv_get_osfhandle | 0 |
+| stl.h:60:12:60:20 | operator- | (int) | | uv_strerror | 0 |
+| stl.h:60:12:60:20 | operator- | (int) | | uv_translate_sys_error | 0 |
+| stl.h:60:12:60:20 | operator- | (int) | | zError | 0 |
| stl.h:61:13:61:22 | operator+= | (int) | | ASN1_STRING_type_new | 0 |
| stl.h:61:13:61:22 | operator+= | (int) | | ASN1_STRING_type_new | 0 |
| stl.h:61:13:61:22 | operator+= | (int) | | ASN1_tag2bit | 0 |
@@ -5244,6 +6144,12 @@ signatureMatches
| stl.h:61:13:61:22 | operator+= | (int) | | X509_TRUST_get_by_id | 0 |
| stl.h:61:13:61:22 | operator+= | (int) | | X509_VERIFY_PARAM_get0 | 0 |
| stl.h:61:13:61:22 | operator+= | (int) | | X509_VERIFY_PARAM_get0 | 0 |
+| stl.h:61:13:61:22 | operator+= | (int) | | c_tolower | 0 |
+| stl.h:61:13:61:22 | operator+= | (int) | | c_tolower | 0 |
+| stl.h:61:13:61:22 | operator+= | (int) | | c_toupper | 0 |
+| stl.h:61:13:61:22 | operator+= | (int) | | c_toupper | 0 |
+| stl.h:61:13:61:22 | operator+= | (int) | | curlx_sitouz | 0 |
+| stl.h:61:13:61:22 | operator+= | (int) | | curlx_sitouz | 0 |
| stl.h:61:13:61:22 | operator+= | (int) | | evp_pkey_type2name | 0 |
| stl.h:61:13:61:22 | operator+= | (int) | | evp_pkey_type2name | 0 |
| stl.h:61:13:61:22 | operator+= | (int) | | ossl_cmp_bodytype_to_string | 0 |
@@ -5258,6 +6164,18 @@ signatureMatches
| stl.h:61:13:61:22 | operator+= | (int) | | sqlite3_errstr | 0 |
| stl.h:61:13:61:22 | operator+= | (int) | | tls13_alert_code | 0 |
| stl.h:61:13:61:22 | operator+= | (int) | | tls13_alert_code | 0 |
+| stl.h:61:13:61:22 | operator+= | (int) | | uv__accept | 0 |
+| stl.h:61:13:61:22 | operator+= | (int) | | uv__accept | 0 |
+| stl.h:61:13:61:22 | operator+= | (int) | | uv_err_name | 0 |
+| stl.h:61:13:61:22 | operator+= | (int) | | uv_err_name | 0 |
+| stl.h:61:13:61:22 | operator+= | (int) | | uv_get_osfhandle | 0 |
+| stl.h:61:13:61:22 | operator+= | (int) | | uv_get_osfhandle | 0 |
+| stl.h:61:13:61:22 | operator+= | (int) | | uv_strerror | 0 |
+| stl.h:61:13:61:22 | operator+= | (int) | | uv_strerror | 0 |
+| stl.h:61:13:61:22 | operator+= | (int) | | uv_translate_sys_error | 0 |
+| stl.h:61:13:61:22 | operator+= | (int) | | uv_translate_sys_error | 0 |
+| stl.h:61:13:61:22 | operator+= | (int) | | zError | 0 |
+| stl.h:61:13:61:22 | operator+= | (int) | | zError | 0 |
| stl.h:62:13:62:22 | operator-= | (int) | | ASN1_STRING_type_new | 0 |
| stl.h:62:13:62:22 | operator-= | (int) | | ASN1_tag2bit | 0 |
| stl.h:62:13:62:22 | operator-= | (int) | | ASN1_tag2str | 0 |
@@ -5276,6 +6194,9 @@ signatureMatches
| stl.h:62:13:62:22 | operator-= | (int) | | X509_TRUST_get0 | 0 |
| stl.h:62:13:62:22 | operator-= | (int) | | X509_TRUST_get_by_id | 0 |
| stl.h:62:13:62:22 | operator-= | (int) | | X509_VERIFY_PARAM_get0 | 0 |
+| stl.h:62:13:62:22 | operator-= | (int) | | c_tolower | 0 |
+| stl.h:62:13:62:22 | operator-= | (int) | | c_toupper | 0 |
+| stl.h:62:13:62:22 | operator-= | (int) | | curlx_sitouz | 0 |
| stl.h:62:13:62:22 | operator-= | (int) | | evp_pkey_type2name | 0 |
| stl.h:62:13:62:22 | operator-= | (int) | | ossl_cmp_bodytype_to_string | 0 |
| stl.h:62:13:62:22 | operator-= | (int) | | ossl_tolower | 0 |
@@ -5283,6 +6204,12 @@ signatureMatches
| stl.h:62:13:62:22 | operator-= | (int) | | sqlite3_compileoption_get | 0 |
| stl.h:62:13:62:22 | operator-= | (int) | | sqlite3_errstr | 0 |
| stl.h:62:13:62:22 | operator-= | (int) | | tls13_alert_code | 0 |
+| stl.h:62:13:62:22 | operator-= | (int) | | uv__accept | 0 |
+| stl.h:62:13:62:22 | operator-= | (int) | | uv_err_name | 0 |
+| stl.h:62:13:62:22 | operator-= | (int) | | uv_get_osfhandle | 0 |
+| stl.h:62:13:62:22 | operator-= | (int) | | uv_strerror | 0 |
+| stl.h:62:13:62:22 | operator-= | (int) | | uv_translate_sys_error | 0 |
+| stl.h:62:13:62:22 | operator-= | (int) | | zError | 0 |
| stl.h:64:18:64:27 | operator[] | (int) | | ASN1_STRING_type_new | 0 |
| stl.h:64:18:64:27 | operator[] | (int) | | ASN1_tag2bit | 0 |
| stl.h:64:18:64:27 | operator[] | (int) | | ASN1_tag2str | 0 |
@@ -5301,6 +6228,9 @@ signatureMatches
| stl.h:64:18:64:27 | operator[] | (int) | | X509_TRUST_get0 | 0 |
| stl.h:64:18:64:27 | operator[] | (int) | | X509_TRUST_get_by_id | 0 |
| stl.h:64:18:64:27 | operator[] | (int) | | X509_VERIFY_PARAM_get0 | 0 |
+| stl.h:64:18:64:27 | operator[] | (int) | | c_tolower | 0 |
+| stl.h:64:18:64:27 | operator[] | (int) | | c_toupper | 0 |
+| stl.h:64:18:64:27 | operator[] | (int) | | curlx_sitouz | 0 |
| stl.h:64:18:64:27 | operator[] | (int) | | evp_pkey_type2name | 0 |
| stl.h:64:18:64:27 | operator[] | (int) | | ossl_cmp_bodytype_to_string | 0 |
| stl.h:64:18:64:27 | operator[] | (int) | | ossl_tolower | 0 |
@@ -5308,6 +6238,12 @@ signatureMatches
| stl.h:64:18:64:27 | operator[] | (int) | | sqlite3_compileoption_get | 0 |
| stl.h:64:18:64:27 | operator[] | (int) | | sqlite3_errstr | 0 |
| stl.h:64:18:64:27 | operator[] | (int) | | tls13_alert_code | 0 |
+| stl.h:64:18:64:27 | operator[] | (int) | | uv__accept | 0 |
+| stl.h:64:18:64:27 | operator[] | (int) | | uv_err_name | 0 |
+| stl.h:64:18:64:27 | operator[] | (int) | | uv_get_osfhandle | 0 |
+| stl.h:64:18:64:27 | operator[] | (int) | | uv_strerror | 0 |
+| stl.h:64:18:64:27 | operator[] | (int) | | uv_translate_sys_error | 0 |
+| stl.h:64:18:64:27 | operator[] | (int) | | zError | 0 |
| stl.h:91:24:91:33 | operator++ | (int) | | ASN1_STRING_type_new | 0 |
| stl.h:91:24:91:33 | operator++ | (int) | | ASN1_STRING_type_new | 0 |
| stl.h:91:24:91:33 | operator++ | (int) | | ASN1_tag2bit | 0 |
@@ -5344,6 +6280,12 @@ signatureMatches
| stl.h:91:24:91:33 | operator++ | (int) | | X509_TRUST_get_by_id | 0 |
| stl.h:91:24:91:33 | operator++ | (int) | | X509_VERIFY_PARAM_get0 | 0 |
| stl.h:91:24:91:33 | operator++ | (int) | | X509_VERIFY_PARAM_get0 | 0 |
+| stl.h:91:24:91:33 | operator++ | (int) | | c_tolower | 0 |
+| stl.h:91:24:91:33 | operator++ | (int) | | c_tolower | 0 |
+| stl.h:91:24:91:33 | operator++ | (int) | | c_toupper | 0 |
+| stl.h:91:24:91:33 | operator++ | (int) | | c_toupper | 0 |
+| stl.h:91:24:91:33 | operator++ | (int) | | curlx_sitouz | 0 |
+| stl.h:91:24:91:33 | operator++ | (int) | | curlx_sitouz | 0 |
| stl.h:91:24:91:33 | operator++ | (int) | | evp_pkey_type2name | 0 |
| stl.h:91:24:91:33 | operator++ | (int) | | evp_pkey_type2name | 0 |
| stl.h:91:24:91:33 | operator++ | (int) | | ossl_cmp_bodytype_to_string | 0 |
@@ -5358,6 +6300,18 @@ signatureMatches
| stl.h:91:24:91:33 | operator++ | (int) | | sqlite3_errstr | 0 |
| stl.h:91:24:91:33 | operator++ | (int) | | tls13_alert_code | 0 |
| stl.h:91:24:91:33 | operator++ | (int) | | tls13_alert_code | 0 |
+| stl.h:91:24:91:33 | operator++ | (int) | | uv__accept | 0 |
+| stl.h:91:24:91:33 | operator++ | (int) | | uv__accept | 0 |
+| stl.h:91:24:91:33 | operator++ | (int) | | uv_err_name | 0 |
+| stl.h:91:24:91:33 | operator++ | (int) | | uv_err_name | 0 |
+| stl.h:91:24:91:33 | operator++ | (int) | | uv_get_osfhandle | 0 |
+| stl.h:91:24:91:33 | operator++ | (int) | | uv_get_osfhandle | 0 |
+| stl.h:91:24:91:33 | operator++ | (int) | | uv_strerror | 0 |
+| stl.h:91:24:91:33 | operator++ | (int) | | uv_strerror | 0 |
+| stl.h:91:24:91:33 | operator++ | (int) | | uv_translate_sys_error | 0 |
+| stl.h:91:24:91:33 | operator++ | (int) | | uv_translate_sys_error | 0 |
+| stl.h:91:24:91:33 | operator++ | (int) | | zError | 0 |
+| stl.h:91:24:91:33 | operator++ | (int) | | zError | 0 |
| stl.h:182:17:182:22 | assign | (InputIt,InputIt) | deque | assign | 0 |
| stl.h:182:17:182:22 | assign | (InputIt,InputIt) | deque | assign | 1 |
| stl.h:182:17:182:22 | assign | (InputIt,InputIt) | forward_list | assign | 0 |
@@ -5520,6 +6474,9 @@ signatureMatches
| stl.h:240:33:240:42 | operator<< | (int) | | X509_TRUST_get0 | 0 |
| stl.h:240:33:240:42 | operator<< | (int) | | X509_TRUST_get_by_id | 0 |
| stl.h:240:33:240:42 | operator<< | (int) | | X509_VERIFY_PARAM_get0 | 0 |
+| stl.h:240:33:240:42 | operator<< | (int) | | c_tolower | 0 |
+| stl.h:240:33:240:42 | operator<< | (int) | | c_toupper | 0 |
+| stl.h:240:33:240:42 | operator<< | (int) | | curlx_sitouz | 0 |
| stl.h:240:33:240:42 | operator<< | (int) | | evp_pkey_type2name | 0 |
| stl.h:240:33:240:42 | operator<< | (int) | | ossl_cmp_bodytype_to_string | 0 |
| stl.h:240:33:240:42 | operator<< | (int) | | ossl_tolower | 0 |
@@ -5527,6 +6484,12 @@ signatureMatches
| stl.h:240:33:240:42 | operator<< | (int) | | sqlite3_compileoption_get | 0 |
| stl.h:240:33:240:42 | operator<< | (int) | | sqlite3_errstr | 0 |
| stl.h:240:33:240:42 | operator<< | (int) | | tls13_alert_code | 0 |
+| stl.h:240:33:240:42 | operator<< | (int) | | uv__accept | 0 |
+| stl.h:240:33:240:42 | operator<< | (int) | | uv_err_name | 0 |
+| stl.h:240:33:240:42 | operator<< | (int) | | uv_get_osfhandle | 0 |
+| stl.h:240:33:240:42 | operator<< | (int) | | uv_strerror | 0 |
+| stl.h:240:33:240:42 | operator<< | (int) | | uv_translate_sys_error | 0 |
+| stl.h:240:33:240:42 | operator<< | (int) | | zError | 0 |
| stl.h:243:33:243:37 | write | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_cert_flags | 1 |
| stl.h:243:33:243:37 | write | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_flags | 1 |
| stl.h:243:33:243:37 | write | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_nm_flags | 1 |
@@ -5677,6 +6640,12 @@ signatureMatches
| stl.h:315:13:315:22 | operator[] | (unsigned int) | | Jim_IntHashFunction | 0 |
| stl.h:315:13:315:22 | operator[] | (unsigned int) | | Jim_IntHashFunction | 0 |
| stl.h:315:13:315:22 | operator[] | (unsigned int) | | Jim_IntHashFunction | 0 |
+| stl.h:315:13:315:22 | operator[] | (unsigned int) | | curlx_uitous | 0 |
+| stl.h:315:13:315:22 | operator[] | (unsigned int) | | curlx_uitous | 0 |
+| stl.h:315:13:315:22 | operator[] | (unsigned int) | | curlx_uitous | 0 |
+| stl.h:315:13:315:22 | operator[] | (unsigned int) | | curlx_uitous | 0 |
+| stl.h:315:13:315:22 | operator[] | (unsigned int) | | curlx_uitous | 0 |
+| stl.h:315:13:315:22 | operator[] | (unsigned int) | | curlx_uitous | 0 |
| stl.h:315:13:315:22 | operator[] | (unsigned int) | | ssl3_get_cipher | 0 |
| stl.h:315:13:315:22 | operator[] | (unsigned int) | | ssl3_get_cipher | 0 |
| stl.h:315:13:315:22 | operator[] | (unsigned int) | | ssl3_get_cipher | 0 |
@@ -5684,6 +6653,7 @@ signatureMatches
| stl.h:315:13:315:22 | operator[] | (unsigned int) | | ssl3_get_cipher | 0 |
| stl.h:315:13:315:22 | operator[] | (unsigned int) | | ssl3_get_cipher | 0 |
| stl.h:318:13:318:14 | at | (unsigned int) | | Jim_IntHashFunction | 0 |
+| stl.h:318:13:318:14 | at | (unsigned int) | | curlx_uitous | 0 |
| stl.h:318:13:318:14 | at | (unsigned int) | | ssl3_get_cipher | 0 |
| stl.h:331:12:331:17 | insert | (const_iterator,T &&) | deque | insert | 0 |
| stl.h:331:12:331:17 | insert | (const_iterator,T &&) | deque | insert | 1 |
@@ -5829,6 +6799,9 @@ signatureMatches
| stl.h:683:6:683:48 | same_signature_as_format_but_different_name | (format_string,Args &&) | | format | 0 |
| stl.h:683:6:683:48 | same_signature_as_format_but_different_name | (format_string,Args &&) | | format | 1 |
| string.cpp:17:6:17:9 | sink | (const char *) | | BIO_gethostbyname | 0 |
+| string.cpp:17:6:17:9 | sink | (const char *) | | Curl_copy_header_value | 0 |
+| string.cpp:17:6:17:9 | sink | (const char *) | | Curl_get_scheme_handler | 0 |
+| string.cpp:17:6:17:9 | sink | (const char *) | | Curl_getdate_capped | 0 |
| string.cpp:17:6:17:9 | sink | (const char *) | | Jim_StrDup | 0 |
| string.cpp:17:6:17:9 | sink | (const char *) | | OPENSSL_LH_strhash | 0 |
| string.cpp:17:6:17:9 | sink | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 |
@@ -5839,10 +6812,14 @@ signatureMatches
| string.cpp:17:6:17:9 | sink | (const char *) | | X509_LOOKUP_meth_new | 0 |
| string.cpp:17:6:17:9 | sink | (const char *) | | a2i_IPADDRESS | 0 |
| string.cpp:17:6:17:9 | sink | (const char *) | | a2i_IPADDRESS_NC | 0 |
+| string.cpp:17:6:17:9 | sink | (const char *) | | last_component | 0 |
| string.cpp:17:6:17:9 | sink | (const char *) | | opt_path_end | 0 |
| string.cpp:17:6:17:9 | sink | (const char *) | | opt_progname | 0 |
| string.cpp:17:6:17:9 | sink | (const char *) | | ossl_lh_strcasehash | 0 |
| string.cpp:17:6:17:9 | sink | (const char *) | | strhash | 0 |
+| string.cpp:17:6:17:9 | sink | (const char *) | | uc_script_byname | 0 |
+| string.cpp:17:6:17:9 | sink | (const char *) | | uv__strdup | 0 |
+| string.cpp:17:6:17:9 | sink | (const char *) | | uv_wtf8_length_as_utf16 | 0 |
| string.cpp:19:6:19:9 | sink | (ASN1_GENERALIZEDTIME *,const char *) | | ASN1_GENERALIZEDTIME_set_string | 1 |
| string.cpp:19:6:19:9 | sink | (ASN1_TIME *,const char *) | | ASN1_TIME_set_string | 1 |
| string.cpp:19:6:19:9 | sink | (ASN1_TIME *,const char *) | | ASN1_TIME_set_string_X509 | 1 |
@@ -5852,6 +6829,9 @@ signatureMatches
| string.cpp:19:6:19:9 | sink | (BIGNUM **,const char *) | | BN_hex2bn | 1 |
| string.cpp:19:6:19:9 | sink | (CONF *,const char *) | | TS_CONF_get_tsa_section | 1 |
| string.cpp:19:6:19:9 | sink | (CONF *,const char *) | | _CONF_new_section | 1 |
+| string.cpp:19:6:19:9 | sink | (CURLU *,const char *) | | Curl_url_set_authority | 1 |
+| string.cpp:19:6:19:9 | sink | (Curl_easy *,const char *) | | Curl_cwriter_get_by_name | 1 |
+| string.cpp:19:6:19:9 | sink | (Curl_easy *,const char *) | | Curl_rtsp_parseheader | 1 |
| string.cpp:19:6:19:9 | sink | (DH_METHOD *,const char *) | | DH_meth_set1_name | 1 |
| string.cpp:19:6:19:9 | sink | (DSA_METHOD *,const char *) | | DSA_meth_set1_name | 1 |
| string.cpp:19:6:19:9 | sink | (DSO *,const char *) | | DSO_convert_filename | 1 |
@@ -5862,10 +6842,14 @@ signatureMatches
| string.cpp:19:6:19:9 | sink | (EVP_PKEY *,const char *) | | CTLOG_new | 1 |
| string.cpp:19:6:19:9 | sink | (EVP_PKEY_CTX *,const char *) | | app_paramgen | 1 |
| string.cpp:19:6:19:9 | sink | (EVP_PKEY_CTX *,const char *) | | pkey_ctrl_string | 1 |
+| string.cpp:19:6:19:9 | sink | (GlobalConfig *,const char *) | | setvariable | 1 |
| string.cpp:19:6:19:9 | sink | (Jim_Interp *,const char *) | | Jim_Eval | 1 |
| string.cpp:19:6:19:9 | sink | (Jim_Interp *,const char *) | | Jim_EvalFile | 1 |
| string.cpp:19:6:19:9 | sink | (Jim_Interp *,const char *) | | Jim_EvalFileGlobal | 1 |
| string.cpp:19:6:19:9 | sink | (Jim_Interp *,const char *) | | Jim_EvalGlobal | 1 |
+| string.cpp:19:6:19:9 | sink | (LIBSSH2_AGENT *,const char *) | | libssh2_agent_set_identity_path | 1 |
+| string.cpp:19:6:19:9 | sink | (LIBSSH2_SESSION *,const char *) | | libssh2_banner_set | 1 |
+| string.cpp:19:6:19:9 | sink | (LIBSSH2_SESSION *,const char *) | | libssh2_session_banner_set | 1 |
| string.cpp:19:6:19:9 | sink | (OPENSSL_DIR_CTX **,const char *) | | OPENSSL_DIR_read | 1 |
| string.cpp:19:6:19:9 | sink | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_appname | 1 |
| string.cpp:19:6:19:9 | sink | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_filename | 1 |
@@ -5922,15 +6906,25 @@ signatureMatches
| string.cpp:19:6:19:9 | sink | (X509_REQ *,const char *) | | x509_req_ctrl_string | 1 |
| string.cpp:19:6:19:9 | sink | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_ip_asc | 1 |
| string.cpp:19:6:19:9 | sink | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_name | 1 |
+| string.cpp:19:6:19:9 | sink | (char **,const char *) | | Curl_setstropt | 1 |
| string.cpp:19:6:19:9 | sink | (const OSSL_PARAM *,const char *) | | OSSL_PARAM_locate_const | 1 |
+| string.cpp:19:6:19:9 | sink | (const char **,const char *) | | uv__utf8_decode1 | 1 |
| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | Configcmp | 0 |
| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | Configcmp | 1 |
+| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | Curl_timestrcmp | 0 |
+| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | Curl_timestrcmp | 1 |
| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | DES_crypt | 0 |
| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | DES_crypt | 1 |
| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | OPENSSL_strcasecmp | 0 |
| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | OPENSSL_strcasecmp | 1 |
+| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | c_strcasecmp | 0 |
+| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | c_strcasecmp | 1 |
| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | get_passwd | 0 |
| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | get_passwd | 1 |
+| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | gzopen | 0 |
+| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | gzopen | 1 |
+| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | gzopen64 | 0 |
+| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | gzopen64 | 1 |
| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | openssl_fopen | 0 |
| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | openssl_fopen | 1 |
| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | ossl_pem_check_suffix | 0 |
@@ -5941,9 +6935,25 @@ signatureMatches
| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | sqlite3_strglob | 1 |
| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | sqlite3_stricmp | 0 |
| string.cpp:19:6:19:9 | sink | (const char *,const char *) | | sqlite3_stricmp | 1 |
+| string.cpp:19:6:19:9 | sink | (curl_mimepart *,const char *) | | curl_mime_filedata | 1 |
+| string.cpp:19:6:19:9 | sink | (curl_off_t *,const char *) | | str2offset | 1 |
+| string.cpp:19:6:19:9 | sink | (curl_pushheaders *,const char *) | | curl_pushheader_byname | 1 |
+| string.cpp:19:6:19:9 | sink | (curl_slist **,const char *) | | add2list | 1 |
+| string.cpp:19:6:19:9 | sink | (curl_slist *,const char *) | | curl_slist_append | 1 |
+| string.cpp:19:6:19:9 | sink | (dynbuf *,const char *) | | Curl_dyn_add | 1 |
+| string.cpp:19:6:19:9 | sink | (dynbuf *,const char *) | | curlx_dyn_add | 1 |
+| string.cpp:19:6:19:9 | sink | (dynhds *,const char *) | | Curl_dynhds_cget | 1 |
+| string.cpp:19:6:19:9 | sink | (dynhds *,const char *) | | Curl_dynhds_h1_cadd_line | 1 |
+| string.cpp:19:6:19:9 | sink | (gzFile,const char *) | | gzputs | 1 |
| string.cpp:19:6:19:9 | sink | (int,const char *) | | BIO_meth_new | 1 |
+| string.cpp:19:6:19:9 | sink | (int,const char *) | | gzdopen | 1 |
| string.cpp:19:6:19:9 | sink | (lemon *,const char *) | | file_makename | 1 |
+| string.cpp:19:6:19:9 | sink | (long *,const char *) | | secs2ms | 1 |
+| string.cpp:19:6:19:9 | sink | (long *,const char *) | | str2num | 1 |
+| string.cpp:19:6:19:9 | sink | (long *,const char *) | | str2unum | 1 |
| string.cpp:19:6:19:9 | sink | (size_t *,const char *) | | next_protos_parse | 1 |
+| string.cpp:19:6:19:9 | sink | (slist_wc **,const char *) | | easysrc_add | 1 |
+| string.cpp:19:6:19:9 | sink | (slist_wc *,const char *) | | slist_wc_append | 1 |
| string.cpp:19:6:19:9 | sink | (sqlite3 *,const char *) | | sqlite3_declare_vtab | 1 |
| string.cpp:19:6:19:9 | sink | (sqlite3 *,const char *) | | sqlite3_get_clientdata | 1 |
| string.cpp:19:6:19:9 | sink | (sqlite3 *,const char *) | | sqlite3_wal_checkpoint | 1 |
@@ -5954,6 +6964,10 @@ signatureMatches
| string.cpp:19:6:19:9 | sink | (unsigned char *,const char *) | | ossl_a2i_ipadd | 1 |
| string.cpp:19:6:19:9 | sink | (unsigned long *,const char *) | | set_cert_ex | 1 |
| string.cpp:19:6:19:9 | sink | (unsigned long *,const char *) | | set_name_ex | 1 |
+| string.cpp:19:6:19:9 | sink | (uv_pipe_t *,const char *) | | uv_pipe_bind | 1 |
+| string.cpp:20:6:20:9 | sink | (char) | | Curl_raw_tolower | 0 |
+| string.cpp:20:6:20:9 | sink | (char) | | Curl_raw_toupper | 0 |
+| string.cpp:20:6:20:9 | sink | (char) | | findshortopt | 0 |
| string.cpp:20:6:20:9 | sink | (char) | | operator+= | 0 |
| string.cpp:20:6:20:9 | sink | (char) | CComBSTR | Append | 0 |
| string.cpp:20:6:20:9 | sink | (char) | CSimpleStringT | operator+= | 0 |
@@ -5975,6 +6989,9 @@ signatureMatches
| stringstream.cpp:13:6:13:9 | sink | (int) | | X509_TRUST_get0 | 0 |
| stringstream.cpp:13:6:13:9 | sink | (int) | | X509_TRUST_get_by_id | 0 |
| stringstream.cpp:13:6:13:9 | sink | (int) | | X509_VERIFY_PARAM_get0 | 0 |
+| stringstream.cpp:13:6:13:9 | sink | (int) | | c_tolower | 0 |
+| stringstream.cpp:13:6:13:9 | sink | (int) | | c_toupper | 0 |
+| stringstream.cpp:13:6:13:9 | sink | (int) | | curlx_sitouz | 0 |
| stringstream.cpp:13:6:13:9 | sink | (int) | | evp_pkey_type2name | 0 |
| stringstream.cpp:13:6:13:9 | sink | (int) | | ossl_cmp_bodytype_to_string | 0 |
| stringstream.cpp:13:6:13:9 | sink | (int) | | ossl_tolower | 0 |
@@ -5982,6 +6999,12 @@ signatureMatches
| stringstream.cpp:13:6:13:9 | sink | (int) | | sqlite3_compileoption_get | 0 |
| stringstream.cpp:13:6:13:9 | sink | (int) | | sqlite3_errstr | 0 |
| stringstream.cpp:13:6:13:9 | sink | (int) | | tls13_alert_code | 0 |
+| stringstream.cpp:13:6:13:9 | sink | (int) | | uv__accept | 0 |
+| stringstream.cpp:13:6:13:9 | sink | (int) | | uv_err_name | 0 |
+| stringstream.cpp:13:6:13:9 | sink | (int) | | uv_get_osfhandle | 0 |
+| stringstream.cpp:13:6:13:9 | sink | (int) | | uv_strerror | 0 |
+| stringstream.cpp:13:6:13:9 | sink | (int) | | uv_translate_sys_error | 0 |
+| stringstream.cpp:13:6:13:9 | sink | (int) | | zError | 0 |
| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | ASN1_STRING_type_new | 0 |
| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | ASN1_tag2bit | 0 |
| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | ASN1_tag2str | 0 |
@@ -6000,6 +7023,9 @@ signatureMatches
| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | X509_TRUST_get0 | 0 |
| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | X509_TRUST_get_by_id | 0 |
| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | X509_VERIFY_PARAM_get0 | 0 |
+| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | c_tolower | 0 |
+| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | c_toupper | 0 |
+| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | curlx_sitouz | 0 |
| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | evp_pkey_type2name | 0 |
| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | ossl_cmp_bodytype_to_string | 0 |
| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | ossl_tolower | 0 |
@@ -6007,6 +7033,12 @@ signatureMatches
| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | sqlite3_compileoption_get | 0 |
| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | sqlite3_errstr | 0 |
| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | tls13_alert_code | 0 |
+| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | uv__accept | 0 |
+| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | uv_err_name | 0 |
+| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | uv_get_osfhandle | 0 |
+| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | uv_strerror | 0 |
+| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | uv_translate_sys_error | 0 |
+| stringstream.cpp:26:6:26:29 | test_stringstream_string | (int) | | zError | 0 |
| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | ASN1_STRING_type_new | 0 |
| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | ASN1_tag2bit | 0 |
| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | ASN1_tag2str | 0 |
@@ -6025,6 +7057,9 @@ signatureMatches
| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | X509_TRUST_get0 | 0 |
| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | X509_TRUST_get_by_id | 0 |
| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | X509_VERIFY_PARAM_get0 | 0 |
+| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | c_tolower | 0 |
+| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | c_toupper | 0 |
+| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | curlx_sitouz | 0 |
| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | evp_pkey_type2name | 0 |
| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | ossl_cmp_bodytype_to_string | 0 |
| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | ossl_tolower | 0 |
@@ -6032,6 +7067,12 @@ signatureMatches
| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | sqlite3_compileoption_get | 0 |
| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | sqlite3_errstr | 0 |
| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | tls13_alert_code | 0 |
+| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | uv__accept | 0 |
+| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | uv_err_name | 0 |
+| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | uv_get_osfhandle | 0 |
+| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | uv_strerror | 0 |
+| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | uv_translate_sys_error | 0 |
+| stringstream.cpp:70:6:70:26 | test_stringstream_int | (int) | | zError | 0 |
| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | ASN1_STRING_type_new | 0 |
| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | ASN1_tag2bit | 0 |
| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | ASN1_tag2str | 0 |
@@ -6050,6 +7091,9 @@ signatureMatches
| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | X509_TRUST_get0 | 0 |
| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | X509_TRUST_get_by_id | 0 |
| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | X509_VERIFY_PARAM_get0 | 0 |
+| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | c_tolower | 0 |
+| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | c_toupper | 0 |
+| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | curlx_sitouz | 0 |
| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | evp_pkey_type2name | 0 |
| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | ossl_cmp_bodytype_to_string | 0 |
| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | ossl_tolower | 0 |
@@ -6057,6 +7101,12 @@ signatureMatches
| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | sqlite3_compileoption_get | 0 |
| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | sqlite3_errstr | 0 |
| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | tls13_alert_code | 0 |
+| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | uv__accept | 0 |
+| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | uv_err_name | 0 |
+| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | uv_get_osfhandle | 0 |
+| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | uv_strerror | 0 |
+| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | uv_translate_sys_error | 0 |
+| structlikeclass.cpp:8:2:8:16 | StructLikeClass | (int) | | zError | 0 |
| taint.cpp:4:6:4:21 | arithAssignments | (ASN1_STRING *,int) | | ASN1_STRING_length_set | 1 |
| taint.cpp:4:6:4:21 | arithAssignments | (ASYNC_WAIT_CTX *,int) | | ASYNC_WAIT_CTX_set_status | 1 |
| taint.cpp:4:6:4:21 | arithAssignments | (BIGNUM *,int) | | BN_clear_bit | 1 |
@@ -6075,6 +7125,8 @@ signatureMatches
| taint.cpp:4:6:4:21 | arithAssignments | (BIO *,int) | | TXT_DB_read | 1 |
| taint.cpp:4:6:4:21 | arithAssignments | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 |
| taint.cpp:4:6:4:21 | arithAssignments | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 |
+| taint.cpp:4:6:4:21 | arithAssignments | (CURL *,int) | | curl_easy_pause | 1 |
+| taint.cpp:4:6:4:21 | arithAssignments | (Curl_easy *,int) | | Curl_conn_get_socket | 1 |
| taint.cpp:4:6:4:21 | arithAssignments | (DH *,int) | | DH_clear_flags | 1 |
| taint.cpp:4:6:4:21 | arithAssignments | (DH *,int) | | DH_set_flags | 1 |
| taint.cpp:4:6:4:21 | arithAssignments | (DH_METHOD *,int) | | DH_meth_set_flags | 1 |
@@ -6118,6 +7170,17 @@ signatureMatches
| taint.cpp:4:6:4:21 | arithAssignments | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 |
| taint.cpp:4:6:4:21 | arithAssignments | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 |
| taint.cpp:4:6:4:21 | arithAssignments | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 |
+| taint.cpp:4:6:4:21 | arithAssignments | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 |
+| taint.cpp:4:6:4:21 | arithAssignments | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 |
+| taint.cpp:4:6:4:21 | arithAssignments | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 |
+| taint.cpp:4:6:4:21 | arithAssignments | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 |
+| taint.cpp:4:6:4:21 | arithAssignments | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 |
+| taint.cpp:4:6:4:21 | arithAssignments | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 |
+| taint.cpp:4:6:4:21 | arithAssignments | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 |
+| taint.cpp:4:6:4:21 | arithAssignments | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 |
+| taint.cpp:4:6:4:21 | arithAssignments | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 |
+| taint.cpp:4:6:4:21 | arithAssignments | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 |
+| taint.cpp:4:6:4:21 | arithAssignments | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 |
| taint.cpp:4:6:4:21 | arithAssignments | (LPCOLESTR,int) | CComBSTR | Append | 1 |
| taint.cpp:4:6:4:21 | arithAssignments | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 |
| taint.cpp:4:6:4:21 | arithAssignments | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 |
@@ -6235,8 +7298,10 @@ signatureMatches
| taint.cpp:4:6:4:21 | arithAssignments | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 |
| taint.cpp:4:6:4:21 | arithAssignments | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 |
| taint.cpp:4:6:4:21 | arithAssignments | (acttab *,int) | | acttab_insert | 1 |
+| taint.cpp:4:6:4:21 | arithAssignments | (char *,int) | | Curl_str2addr | 1 |
| taint.cpp:4:6:4:21 | arithAssignments | (char *,int) | | PEM_proc_type | 1 |
| taint.cpp:4:6:4:21 | arithAssignments | (char,int) | CStringT | CStringT | 1 |
+| taint.cpp:4:6:4:21 | arithAssignments | (connectdata *,int) | | Curl_conn_is_ssl | 1 |
| taint.cpp:4:6:4:21 | arithAssignments | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 |
| taint.cpp:4:6:4:21 | arithAssignments | (const BIGNUM *,int) | | BN_get_flags | 1 |
| taint.cpp:4:6:4:21 | arithAssignments | (const BIGNUM *,int) | | BN_is_bit_set | 1 |
@@ -6303,6 +7368,9 @@ signatureMatches
| taint.cpp:4:6:4:21 | arithAssignments | (const unsigned char *,int) | | Jim_GenHashFunction | 1 |
| taint.cpp:4:6:4:21 | arithAssignments | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 |
| taint.cpp:4:6:4:21 | arithAssignments | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 |
+| taint.cpp:4:6:4:21 | arithAssignments | (dynhds *,int) | | Curl_dynhds_set_opts | 1 |
+| taint.cpp:4:6:4:21 | arithAssignments | (gzFile,int) | | gzflush | 1 |
+| taint.cpp:4:6:4:21 | arithAssignments | (gzFile,int) | | gzputc | 1 |
| taint.cpp:4:6:4:21 | arithAssignments | (int *,int) | | X509_PURPOSE_set | 1 |
| taint.cpp:4:6:4:21 | arithAssignments | (int *,int) | | X509_TRUST_set | 1 |
| taint.cpp:4:6:4:21 | arithAssignments | (int,int) | | BN_security_bits | 0 |
@@ -6313,6 +7381,13 @@ signatureMatches
| taint.cpp:4:6:4:21 | arithAssignments | (int,int) | | EVP_PKEY_meth_new | 1 |
| taint.cpp:4:6:4:21 | arithAssignments | (int,int) | | acttab_alloc | 0 |
| taint.cpp:4:6:4:21 | arithAssignments | (int,int) | | acttab_alloc | 1 |
+| taint.cpp:4:6:4:21 | arithAssignments | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 |
+| taint.cpp:4:6:4:21 | arithAssignments | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 |
+| taint.cpp:4:6:4:21 | arithAssignments | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 |
+| taint.cpp:4:6:4:21 | arithAssignments | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 |
+| taint.cpp:4:6:4:21 | arithAssignments | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 |
+| taint.cpp:4:6:4:21 | arithAssignments | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 |
+| taint.cpp:4:6:4:21 | arithAssignments | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 |
| taint.cpp:4:6:4:21 | arithAssignments | (rule *,int) | | Configlist_add | 1 |
| taint.cpp:4:6:4:21 | arithAssignments | (rule *,int) | | Configlist_addbasis | 1 |
| taint.cpp:4:6:4:21 | arithAssignments | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 |
@@ -6347,6 +7422,7 @@ signatureMatches
| taint.cpp:4:6:4:21 | arithAssignments | (unsigned char *,int) | | RAND_priv_bytes | 1 |
| taint.cpp:4:6:4:21 | arithAssignments | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 |
| taint.cpp:4:6:4:21 | arithAssignments | (unsigned short,int) | | dtls1_get_queue_priority | 1 |
+| taint.cpp:4:6:4:21 | arithAssignments | (uv_env_item_t *,int) | | uv_os_free_environ | 1 |
| taint.cpp:4:6:4:21 | arithAssignments | (void *,int) | | DSO_dsobyaddr | 1 |
| taint.cpp:4:6:4:21 | arithAssignments | (void *,int) | | sqlite3_realloc | 1 |
| taint.cpp:4:6:4:21 | arithAssignments | (wchar_t,int) | CStringT | CStringT | 1 |
@@ -6368,6 +7444,9 @@ signatureMatches
| taint.cpp:22:5:22:13 | increment | (int) | | X509_TRUST_get0 | 0 |
| taint.cpp:22:5:22:13 | increment | (int) | | X509_TRUST_get_by_id | 0 |
| taint.cpp:22:5:22:13 | increment | (int) | | X509_VERIFY_PARAM_get0 | 0 |
+| taint.cpp:22:5:22:13 | increment | (int) | | c_tolower | 0 |
+| taint.cpp:22:5:22:13 | increment | (int) | | c_toupper | 0 |
+| taint.cpp:22:5:22:13 | increment | (int) | | curlx_sitouz | 0 |
| taint.cpp:22:5:22:13 | increment | (int) | | evp_pkey_type2name | 0 |
| taint.cpp:22:5:22:13 | increment | (int) | | ossl_cmp_bodytype_to_string | 0 |
| taint.cpp:22:5:22:13 | increment | (int) | | ossl_tolower | 0 |
@@ -6375,6 +7454,12 @@ signatureMatches
| taint.cpp:22:5:22:13 | increment | (int) | | sqlite3_compileoption_get | 0 |
| taint.cpp:22:5:22:13 | increment | (int) | | sqlite3_errstr | 0 |
| taint.cpp:22:5:22:13 | increment | (int) | | tls13_alert_code | 0 |
+| taint.cpp:22:5:22:13 | increment | (int) | | uv__accept | 0 |
+| taint.cpp:22:5:22:13 | increment | (int) | | uv_err_name | 0 |
+| taint.cpp:22:5:22:13 | increment | (int) | | uv_get_osfhandle | 0 |
+| taint.cpp:22:5:22:13 | increment | (int) | | uv_strerror | 0 |
+| taint.cpp:22:5:22:13 | increment | (int) | | uv_translate_sys_error | 0 |
+| taint.cpp:22:5:22:13 | increment | (int) | | zError | 0 |
| taint.cpp:23:5:23:8 | zero | (int) | | ASN1_STRING_type_new | 0 |
| taint.cpp:23:5:23:8 | zero | (int) | | ASN1_tag2bit | 0 |
| taint.cpp:23:5:23:8 | zero | (int) | | ASN1_tag2str | 0 |
@@ -6393,6 +7478,9 @@ signatureMatches
| taint.cpp:23:5:23:8 | zero | (int) | | X509_TRUST_get0 | 0 |
| taint.cpp:23:5:23:8 | zero | (int) | | X509_TRUST_get_by_id | 0 |
| taint.cpp:23:5:23:8 | zero | (int) | | X509_VERIFY_PARAM_get0 | 0 |
+| taint.cpp:23:5:23:8 | zero | (int) | | c_tolower | 0 |
+| taint.cpp:23:5:23:8 | zero | (int) | | c_toupper | 0 |
+| taint.cpp:23:5:23:8 | zero | (int) | | curlx_sitouz | 0 |
| taint.cpp:23:5:23:8 | zero | (int) | | evp_pkey_type2name | 0 |
| taint.cpp:23:5:23:8 | zero | (int) | | ossl_cmp_bodytype_to_string | 0 |
| taint.cpp:23:5:23:8 | zero | (int) | | ossl_tolower | 0 |
@@ -6400,6 +7488,12 @@ signatureMatches
| taint.cpp:23:5:23:8 | zero | (int) | | sqlite3_compileoption_get | 0 |
| taint.cpp:23:5:23:8 | zero | (int) | | sqlite3_errstr | 0 |
| taint.cpp:23:5:23:8 | zero | (int) | | tls13_alert_code | 0 |
+| taint.cpp:23:5:23:8 | zero | (int) | | uv__accept | 0 |
+| taint.cpp:23:5:23:8 | zero | (int) | | uv_err_name | 0 |
+| taint.cpp:23:5:23:8 | zero | (int) | | uv_get_osfhandle | 0 |
+| taint.cpp:23:5:23:8 | zero | (int) | | uv_strerror | 0 |
+| taint.cpp:23:5:23:8 | zero | (int) | | uv_translate_sys_error | 0 |
+| taint.cpp:23:5:23:8 | zero | (int) | | zError | 0 |
| taint.cpp:100:6:100:15 | array_test | (int) | | ASN1_STRING_type_new | 0 |
| taint.cpp:100:6:100:15 | array_test | (int) | | ASN1_tag2bit | 0 |
| taint.cpp:100:6:100:15 | array_test | (int) | | ASN1_tag2str | 0 |
@@ -6418,6 +7512,9 @@ signatureMatches
| taint.cpp:100:6:100:15 | array_test | (int) | | X509_TRUST_get0 | 0 |
| taint.cpp:100:6:100:15 | array_test | (int) | | X509_TRUST_get_by_id | 0 |
| taint.cpp:100:6:100:15 | array_test | (int) | | X509_VERIFY_PARAM_get0 | 0 |
+| taint.cpp:100:6:100:15 | array_test | (int) | | c_tolower | 0 |
+| taint.cpp:100:6:100:15 | array_test | (int) | | c_toupper | 0 |
+| taint.cpp:100:6:100:15 | array_test | (int) | | curlx_sitouz | 0 |
| taint.cpp:100:6:100:15 | array_test | (int) | | evp_pkey_type2name | 0 |
| taint.cpp:100:6:100:15 | array_test | (int) | | ossl_cmp_bodytype_to_string | 0 |
| taint.cpp:100:6:100:15 | array_test | (int) | | ossl_tolower | 0 |
@@ -6425,6 +7522,12 @@ signatureMatches
| taint.cpp:100:6:100:15 | array_test | (int) | | sqlite3_compileoption_get | 0 |
| taint.cpp:100:6:100:15 | array_test | (int) | | sqlite3_errstr | 0 |
| taint.cpp:100:6:100:15 | array_test | (int) | | tls13_alert_code | 0 |
+| taint.cpp:100:6:100:15 | array_test | (int) | | uv__accept | 0 |
+| taint.cpp:100:6:100:15 | array_test | (int) | | uv_err_name | 0 |
+| taint.cpp:100:6:100:15 | array_test | (int) | | uv_get_osfhandle | 0 |
+| taint.cpp:100:6:100:15 | array_test | (int) | | uv_strerror | 0 |
+| taint.cpp:100:6:100:15 | array_test | (int) | | uv_translate_sys_error | 0 |
+| taint.cpp:100:6:100:15 | array_test | (int) | | zError | 0 |
| taint.cpp:142:5:142:10 | select | (ASN1_BIT_STRING *,int,int) | | ASN1_BIT_STRING_set_bit | 1 |
| taint.cpp:142:5:142:10 | select | (ASN1_BIT_STRING *,int,int) | | ASN1_BIT_STRING_set_bit | 2 |
| taint.cpp:142:5:142:10 | select | (ASN1_BIT_STRING *,unsigned char *,int) | | ASN1_BIT_STRING_set | 2 |
@@ -6451,6 +7554,11 @@ signatureMatches
| taint.cpp:142:5:142:10 | select | (BIO *,const RSA *,int) | | RSA_print | 2 |
| taint.cpp:142:5:142:10 | select | (CERT *,X509_STORE **,int) | | ssl_cert_get_cert_store | 2 |
| taint.cpp:142:5:142:10 | select | (CRYPTO_THREAD_ROUTINE,void *,int) | | ossl_crypto_thread_native_start | 2 |
+| taint.cpp:142:5:142:10 | select | (Curl_easy *,connectdata *,int) | | Curl_conn_cf_discard_all | 2 |
+| taint.cpp:142:5:142:10 | select | (Curl_easy *,connectdata *,int) | | Curl_http2_may_switch | 2 |
+| taint.cpp:142:5:142:10 | select | (Curl_easy *,connectdata *,int) | | Curl_http2_switch | 2 |
+| taint.cpp:142:5:142:10 | select | (Curl_easy *,connectdata *,int) | | Curl_ssl_cfilter_add | 2 |
+| taint.cpp:142:5:142:10 | select | (Curl_sockaddr_ex *,const Curl_addrinfo *,int) | | Curl_sock_assign_addr | 2 |
| taint.cpp:142:5:142:10 | select | (DH *,const OSSL_PARAM[],int) | | ossl_dh_key_fromdata | 2 |
| taint.cpp:142:5:142:10 | select | (DSA *,const OSSL_PARAM[],int) | | ossl_dsa_key_fromdata | 2 |
| taint.cpp:142:5:142:10 | select | (ECX_KEY *,const OSSL_PARAM[],int) | | ossl_ecx_key_fromdata | 2 |
@@ -6487,6 +7595,9 @@ signatureMatches
| taint.cpp:142:5:142:10 | select | (Jim_Interp *,const char *,int) | | Jim_MakeTempFile | 2 |
| taint.cpp:142:5:142:10 | select | (Jim_Interp *,const char *,int) | | Jim_NewStringObj | 2 |
| taint.cpp:142:5:142:10 | select | (Jim_Interp *,const char *,int) | | Jim_NewStringObjUtf8 | 2 |
+| taint.cpp:142:5:142:10 | select | (LIBSSH2_SESSION *,int,int) | | libssh2_session_flag | 1 |
+| taint.cpp:142:5:142:10 | select | (LIBSSH2_SESSION *,int,int) | | libssh2_session_flag | 2 |
+| taint.cpp:142:5:142:10 | select | (LIBSSH2_SFTP_HANDLE *,LIBSSH2_SFTP_ATTRIBUTES *,int) | | libssh2_sftp_fstat_ex | 2 |
| taint.cpp:142:5:142:10 | select | (OCSP_BASICRESP *,OCSP_CERTID *,int) | | OCSP_resp_find | 2 |
| taint.cpp:142:5:142:10 | select | (OCSP_BASICRESP *,X509_EXTENSION *,int) | | OCSP_BASICRESP_add_ext | 2 |
| taint.cpp:142:5:142:10 | select | (OCSP_BASICRESP *,const ASN1_OBJECT *,int) | | OCSP_BASICRESP_get_ext_by_OBJ | 2 |
@@ -6591,6 +7702,7 @@ signatureMatches
| taint.cpp:142:5:142:10 | select | (const CMS_SignerInfo *,int,int) | | CMS_signed_get_attr_by_NID | 2 |
| taint.cpp:142:5:142:10 | select | (const CMS_SignerInfo *,int,int) | | CMS_unsigned_get_attr_by_NID | 1 |
| taint.cpp:142:5:142:10 | select | (const CMS_SignerInfo *,int,int) | | CMS_unsigned_get_attr_by_NID | 2 |
+| taint.cpp:142:5:142:10 | select | (const Curl_easy *,const connectdata *,int) | | Curl_conn_is_http2 | 2 |
| taint.cpp:142:5:142:10 | select | (const EVP_MD *,const EVP_MD *,int) | | ossl_rsa_pss_params_create | 2 |
| taint.cpp:142:5:142:10 | select | (const EVP_PKEY *,const ASN1_OBJECT *,int) | | EVP_PKEY_get_attr_by_OBJ | 2 |
| taint.cpp:142:5:142:10 | select | (const EVP_PKEY *,int,int) | | EVP_PKEY_get_attr_by_NID | 1 |
@@ -6629,6 +7741,7 @@ signatureMatches
| taint.cpp:142:5:142:10 | select | (const X509_REVOKED *,int,int) | | X509_REVOKED_get_ext_by_critical | 1 |
| taint.cpp:142:5:142:10 | select | (const X509_REVOKED *,int,int) | | X509_REVOKED_get_ext_by_critical | 2 |
| taint.cpp:142:5:142:10 | select | (const X509_SIG *,const char *,int) | | PKCS8_decrypt | 2 |
+| taint.cpp:142:5:142:10 | select | (const char *,char **,int) | | idn2_to_ascii_8z | 2 |
| taint.cpp:142:5:142:10 | select | (const char *,const OSSL_PARAM *,int) | | print_param_types | 2 |
| taint.cpp:142:5:142:10 | select | (const char *,const char *,int) | | CRYPTO_strdup | 2 |
| taint.cpp:142:5:142:10 | select | (const char *,const char *,int) | | sqlite3_strnicmp | 2 |
@@ -6642,9 +7755,17 @@ signatureMatches
| taint.cpp:142:5:142:10 | select | (const stack_st_X509_EXTENSION *,int,int) | | X509v3_get_ext_by_NID | 2 |
| taint.cpp:142:5:142:10 | select | (const stack_st_X509_EXTENSION *,int,int) | | X509v3_get_ext_by_critical | 1 |
| taint.cpp:142:5:142:10 | select | (const stack_st_X509_EXTENSION *,int,int) | | X509v3_get_ext_by_critical | 2 |
+| taint.cpp:142:5:142:10 | select | (const uint8_t *,uint8_t **,int) | | idn2_lookup_u8 | 2 |
| taint.cpp:142:5:142:10 | select | (const unsigned char **,unsigned int,int) | | ossl_b2i_DSA_after_header | 2 |
| taint.cpp:142:5:142:10 | select | (const unsigned char **,unsigned int,int) | | ossl_b2i_RSA_after_header | 2 |
| taint.cpp:142:5:142:10 | select | (const void *,const void *,int) | | ossl_is_partially_overlapping | 2 |
+| taint.cpp:142:5:142:10 | select | (curl_mimepart *,curl_mime *,int) | | Curl_mime_set_subparts | 2 |
+| taint.cpp:142:5:142:10 | select | (curl_mimepart *,curl_slist *,int) | | curl_mime_headers | 2 |
+| taint.cpp:142:5:142:10 | select | (gzFile,char *,int) | | gzgets | 2 |
+| taint.cpp:142:5:142:10 | select | (gzFile,int,int) | | gzsetparams | 1 |
+| taint.cpp:142:5:142:10 | select | (gzFile,int,int) | | gzsetparams | 2 |
+| taint.cpp:142:5:142:10 | select | (gzFile,off64_t,int) | | gzseek64 | 2 |
+| taint.cpp:142:5:142:10 | select | (gzFile,off_t,int) | | gzseek | 2 |
| taint.cpp:142:5:142:10 | select | (int,BIO_ADDR *,int) | | BIO_accept_ex | 2 |
| taint.cpp:142:5:142:10 | select | (int,int,int) | | ASN1_object_size | 0 |
| taint.cpp:142:5:142:10 | select | (int,int,int) | | ASN1_object_size | 1 |
@@ -6690,7 +7811,16 @@ signatureMatches
| taint.cpp:142:5:142:10 | select | (unsigned int,int,int) | | ossl_blob_length | 2 |
| taint.cpp:142:5:142:10 | select | (unsigned long *,const BIGNUM *,int) | | bn_copy_words | 2 |
| taint.cpp:142:5:142:10 | select | (unsigned long *,const unsigned long *,int) | | bn_sqr_words | 2 |
+| taint.cpp:142:5:142:10 | select | (uv__io_t *,uv__io_cb,int) | | uv__io_init | 2 |
+| taint.cpp:142:5:142:10 | select | (uv_loop_t *,uv_fs_t *,int) | | uv__iou_fs_read_or_write | 2 |
+| taint.cpp:142:5:142:10 | select | (uv_loop_t *,uv_pipe_t *,int) | | uv_pipe_init | 2 |
+| taint.cpp:142:5:142:10 | select | (uv_loop_t *,uv_poll_t *,int) | | uv_poll_init | 2 |
+| taint.cpp:142:5:142:10 | select | (uv_signal_t *,uv_signal_cb,int) | | uv_signal_start | 2 |
+| taint.cpp:142:5:142:10 | select | (uv_signal_t *,uv_signal_cb,int) | | uv_signal_start_oneshot | 2 |
+| taint.cpp:142:5:142:10 | select | (uv_stream_t *,int,int) | | uv__stream_open | 1 |
+| taint.cpp:142:5:142:10 | select | (uv_stream_t *,int,int) | | uv__stream_open | 2 |
| taint.cpp:142:5:142:10 | select | (void *,const char *,int) | | CRYPTO_secure_free | 2 |
+| taint.cpp:142:5:142:10 | select | (void *,curl_off_t,int) | | tool_mime_stdin_seek | 2 |
| taint.cpp:150:6:150:12 | fn_test | (int) | | ASN1_STRING_type_new | 0 |
| taint.cpp:150:6:150:12 | fn_test | (int) | | ASN1_tag2bit | 0 |
| taint.cpp:150:6:150:12 | fn_test | (int) | | ASN1_tag2str | 0 |
@@ -6709,6 +7839,9 @@ signatureMatches
| taint.cpp:150:6:150:12 | fn_test | (int) | | X509_TRUST_get0 | 0 |
| taint.cpp:150:6:150:12 | fn_test | (int) | | X509_TRUST_get_by_id | 0 |
| taint.cpp:150:6:150:12 | fn_test | (int) | | X509_VERIFY_PARAM_get0 | 0 |
+| taint.cpp:150:6:150:12 | fn_test | (int) | | c_tolower | 0 |
+| taint.cpp:150:6:150:12 | fn_test | (int) | | c_toupper | 0 |
+| taint.cpp:150:6:150:12 | fn_test | (int) | | curlx_sitouz | 0 |
| taint.cpp:150:6:150:12 | fn_test | (int) | | evp_pkey_type2name | 0 |
| taint.cpp:150:6:150:12 | fn_test | (int) | | ossl_cmp_bodytype_to_string | 0 |
| taint.cpp:150:6:150:12 | fn_test | (int) | | ossl_tolower | 0 |
@@ -6716,6 +7849,12 @@ signatureMatches
| taint.cpp:150:6:150:12 | fn_test | (int) | | sqlite3_compileoption_get | 0 |
| taint.cpp:150:6:150:12 | fn_test | (int) | | sqlite3_errstr | 0 |
| taint.cpp:150:6:150:12 | fn_test | (int) | | tls13_alert_code | 0 |
+| taint.cpp:150:6:150:12 | fn_test | (int) | | uv__accept | 0 |
+| taint.cpp:150:6:150:12 | fn_test | (int) | | uv_err_name | 0 |
+| taint.cpp:150:6:150:12 | fn_test | (int) | | uv_get_osfhandle | 0 |
+| taint.cpp:150:6:150:12 | fn_test | (int) | | uv_strerror | 0 |
+| taint.cpp:150:6:150:12 | fn_test | (int) | | uv_translate_sys_error | 0 |
+| taint.cpp:150:6:150:12 | fn_test | (int) | | zError | 0 |
| taint.cpp:156:7:156:12 | strcpy | (ASN1_GENERALIZEDTIME *,const char *) | | ASN1_GENERALIZEDTIME_set_string | 1 |
| taint.cpp:156:7:156:12 | strcpy | (ASN1_TIME *,const char *) | | ASN1_TIME_set_string | 1 |
| taint.cpp:156:7:156:12 | strcpy | (ASN1_TIME *,const char *) | | ASN1_TIME_set_string_X509 | 1 |
@@ -6725,6 +7864,9 @@ signatureMatches
| taint.cpp:156:7:156:12 | strcpy | (BIGNUM **,const char *) | | BN_hex2bn | 1 |
| taint.cpp:156:7:156:12 | strcpy | (CONF *,const char *) | | TS_CONF_get_tsa_section | 1 |
| taint.cpp:156:7:156:12 | strcpy | (CONF *,const char *) | | _CONF_new_section | 1 |
+| taint.cpp:156:7:156:12 | strcpy | (CURLU *,const char *) | | Curl_url_set_authority | 1 |
+| taint.cpp:156:7:156:12 | strcpy | (Curl_easy *,const char *) | | Curl_cwriter_get_by_name | 1 |
+| taint.cpp:156:7:156:12 | strcpy | (Curl_easy *,const char *) | | Curl_rtsp_parseheader | 1 |
| taint.cpp:156:7:156:12 | strcpy | (DH_METHOD *,const char *) | | DH_meth_set1_name | 1 |
| taint.cpp:156:7:156:12 | strcpy | (DSA_METHOD *,const char *) | | DSA_meth_set1_name | 1 |
| taint.cpp:156:7:156:12 | strcpy | (DSO *,const char *) | | DSO_convert_filename | 1 |
@@ -6735,10 +7877,14 @@ signatureMatches
| taint.cpp:156:7:156:12 | strcpy | (EVP_PKEY *,const char *) | | CTLOG_new | 1 |
| taint.cpp:156:7:156:12 | strcpy | (EVP_PKEY_CTX *,const char *) | | app_paramgen | 1 |
| taint.cpp:156:7:156:12 | strcpy | (EVP_PKEY_CTX *,const char *) | | pkey_ctrl_string | 1 |
+| taint.cpp:156:7:156:12 | strcpy | (GlobalConfig *,const char *) | | setvariable | 1 |
| taint.cpp:156:7:156:12 | strcpy | (Jim_Interp *,const char *) | | Jim_Eval | 1 |
| taint.cpp:156:7:156:12 | strcpy | (Jim_Interp *,const char *) | | Jim_EvalFile | 1 |
| taint.cpp:156:7:156:12 | strcpy | (Jim_Interp *,const char *) | | Jim_EvalFileGlobal | 1 |
| taint.cpp:156:7:156:12 | strcpy | (Jim_Interp *,const char *) | | Jim_EvalGlobal | 1 |
+| taint.cpp:156:7:156:12 | strcpy | (LIBSSH2_AGENT *,const char *) | | libssh2_agent_set_identity_path | 1 |
+| taint.cpp:156:7:156:12 | strcpy | (LIBSSH2_SESSION *,const char *) | | libssh2_banner_set | 1 |
+| taint.cpp:156:7:156:12 | strcpy | (LIBSSH2_SESSION *,const char *) | | libssh2_session_banner_set | 1 |
| taint.cpp:156:7:156:12 | strcpy | (OPENSSL_DIR_CTX **,const char *) | | OPENSSL_DIR_read | 1 |
| taint.cpp:156:7:156:12 | strcpy | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_appname | 1 |
| taint.cpp:156:7:156:12 | strcpy | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_filename | 1 |
@@ -6795,19 +7941,41 @@ signatureMatches
| taint.cpp:156:7:156:12 | strcpy | (X509_REQ *,const char *) | | x509_req_ctrl_string | 1 |
| taint.cpp:156:7:156:12 | strcpy | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_ip_asc | 1 |
| taint.cpp:156:7:156:12 | strcpy | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_name | 1 |
+| taint.cpp:156:7:156:12 | strcpy | (char **,const char *) | | Curl_setstropt | 1 |
| taint.cpp:156:7:156:12 | strcpy | (const OSSL_PARAM *,const char *) | | OSSL_PARAM_locate_const | 1 |
+| taint.cpp:156:7:156:12 | strcpy | (const char **,const char *) | | uv__utf8_decode1 | 1 |
| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | Configcmp | 1 |
+| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | Curl_timestrcmp | 1 |
| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | DES_crypt | 1 |
| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | OPENSSL_strcasecmp | 1 |
+| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | c_strcasecmp | 1 |
| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | get_passwd | 1 |
+| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | gzopen | 1 |
+| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | gzopen64 | 1 |
| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | openssl_fopen | 1 |
| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | ossl_pem_check_suffix | 1 |
| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | ossl_v3_name_cmp | 1 |
| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | sqlite3_strglob | 1 |
| taint.cpp:156:7:156:12 | strcpy | (const char *,const char *) | | sqlite3_stricmp | 1 |
+| taint.cpp:156:7:156:12 | strcpy | (curl_mimepart *,const char *) | | curl_mime_filedata | 1 |
+| taint.cpp:156:7:156:12 | strcpy | (curl_off_t *,const char *) | | str2offset | 1 |
+| taint.cpp:156:7:156:12 | strcpy | (curl_pushheaders *,const char *) | | curl_pushheader_byname | 1 |
+| taint.cpp:156:7:156:12 | strcpy | (curl_slist **,const char *) | | add2list | 1 |
+| taint.cpp:156:7:156:12 | strcpy | (curl_slist *,const char *) | | curl_slist_append | 1 |
+| taint.cpp:156:7:156:12 | strcpy | (dynbuf *,const char *) | | Curl_dyn_add | 1 |
+| taint.cpp:156:7:156:12 | strcpy | (dynbuf *,const char *) | | curlx_dyn_add | 1 |
+| taint.cpp:156:7:156:12 | strcpy | (dynhds *,const char *) | | Curl_dynhds_cget | 1 |
+| taint.cpp:156:7:156:12 | strcpy | (dynhds *,const char *) | | Curl_dynhds_h1_cadd_line | 1 |
+| taint.cpp:156:7:156:12 | strcpy | (gzFile,const char *) | | gzputs | 1 |
| taint.cpp:156:7:156:12 | strcpy | (int,const char *) | | BIO_meth_new | 1 |
+| taint.cpp:156:7:156:12 | strcpy | (int,const char *) | | gzdopen | 1 |
| taint.cpp:156:7:156:12 | strcpy | (lemon *,const char *) | | file_makename | 1 |
+| taint.cpp:156:7:156:12 | strcpy | (long *,const char *) | | secs2ms | 1 |
+| taint.cpp:156:7:156:12 | strcpy | (long *,const char *) | | str2num | 1 |
+| taint.cpp:156:7:156:12 | strcpy | (long *,const char *) | | str2unum | 1 |
| taint.cpp:156:7:156:12 | strcpy | (size_t *,const char *) | | next_protos_parse | 1 |
+| taint.cpp:156:7:156:12 | strcpy | (slist_wc **,const char *) | | easysrc_add | 1 |
+| taint.cpp:156:7:156:12 | strcpy | (slist_wc *,const char *) | | slist_wc_append | 1 |
| taint.cpp:156:7:156:12 | strcpy | (sqlite3 *,const char *) | | sqlite3_declare_vtab | 1 |
| taint.cpp:156:7:156:12 | strcpy | (sqlite3 *,const char *) | | sqlite3_get_clientdata | 1 |
| taint.cpp:156:7:156:12 | strcpy | (sqlite3 *,const char *) | | sqlite3_wal_checkpoint | 1 |
@@ -6818,6 +7986,7 @@ signatureMatches
| taint.cpp:156:7:156:12 | strcpy | (unsigned char *,const char *) | | ossl_a2i_ipadd | 1 |
| taint.cpp:156:7:156:12 | strcpy | (unsigned long *,const char *) | | set_cert_ex | 1 |
| taint.cpp:156:7:156:12 | strcpy | (unsigned long *,const char *) | | set_name_ex | 1 |
+| taint.cpp:156:7:156:12 | strcpy | (uv_pipe_t *,const char *) | | uv_pipe_bind | 1 |
| taint.cpp:157:7:157:12 | strcat | (ASN1_GENERALIZEDTIME *,const char *) | | ASN1_GENERALIZEDTIME_set_string | 1 |
| taint.cpp:157:7:157:12 | strcat | (ASN1_TIME *,const char *) | | ASN1_TIME_set_string | 1 |
| taint.cpp:157:7:157:12 | strcat | (ASN1_TIME *,const char *) | | ASN1_TIME_set_string_X509 | 1 |
@@ -6827,6 +7996,9 @@ signatureMatches
| taint.cpp:157:7:157:12 | strcat | (BIGNUM **,const char *) | | BN_hex2bn | 1 |
| taint.cpp:157:7:157:12 | strcat | (CONF *,const char *) | | TS_CONF_get_tsa_section | 1 |
| taint.cpp:157:7:157:12 | strcat | (CONF *,const char *) | | _CONF_new_section | 1 |
+| taint.cpp:157:7:157:12 | strcat | (CURLU *,const char *) | | Curl_url_set_authority | 1 |
+| taint.cpp:157:7:157:12 | strcat | (Curl_easy *,const char *) | | Curl_cwriter_get_by_name | 1 |
+| taint.cpp:157:7:157:12 | strcat | (Curl_easy *,const char *) | | Curl_rtsp_parseheader | 1 |
| taint.cpp:157:7:157:12 | strcat | (DH_METHOD *,const char *) | | DH_meth_set1_name | 1 |
| taint.cpp:157:7:157:12 | strcat | (DSA_METHOD *,const char *) | | DSA_meth_set1_name | 1 |
| taint.cpp:157:7:157:12 | strcat | (DSO *,const char *) | | DSO_convert_filename | 1 |
@@ -6837,10 +8009,14 @@ signatureMatches
| taint.cpp:157:7:157:12 | strcat | (EVP_PKEY *,const char *) | | CTLOG_new | 1 |
| taint.cpp:157:7:157:12 | strcat | (EVP_PKEY_CTX *,const char *) | | app_paramgen | 1 |
| taint.cpp:157:7:157:12 | strcat | (EVP_PKEY_CTX *,const char *) | | pkey_ctrl_string | 1 |
+| taint.cpp:157:7:157:12 | strcat | (GlobalConfig *,const char *) | | setvariable | 1 |
| taint.cpp:157:7:157:12 | strcat | (Jim_Interp *,const char *) | | Jim_Eval | 1 |
| taint.cpp:157:7:157:12 | strcat | (Jim_Interp *,const char *) | | Jim_EvalFile | 1 |
| taint.cpp:157:7:157:12 | strcat | (Jim_Interp *,const char *) | | Jim_EvalFileGlobal | 1 |
| taint.cpp:157:7:157:12 | strcat | (Jim_Interp *,const char *) | | Jim_EvalGlobal | 1 |
+| taint.cpp:157:7:157:12 | strcat | (LIBSSH2_AGENT *,const char *) | | libssh2_agent_set_identity_path | 1 |
+| taint.cpp:157:7:157:12 | strcat | (LIBSSH2_SESSION *,const char *) | | libssh2_banner_set | 1 |
+| taint.cpp:157:7:157:12 | strcat | (LIBSSH2_SESSION *,const char *) | | libssh2_session_banner_set | 1 |
| taint.cpp:157:7:157:12 | strcat | (OPENSSL_DIR_CTX **,const char *) | | OPENSSL_DIR_read | 1 |
| taint.cpp:157:7:157:12 | strcat | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_appname | 1 |
| taint.cpp:157:7:157:12 | strcat | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_filename | 1 |
@@ -6897,19 +8073,41 @@ signatureMatches
| taint.cpp:157:7:157:12 | strcat | (X509_REQ *,const char *) | | x509_req_ctrl_string | 1 |
| taint.cpp:157:7:157:12 | strcat | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_ip_asc | 1 |
| taint.cpp:157:7:157:12 | strcat | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_name | 1 |
+| taint.cpp:157:7:157:12 | strcat | (char **,const char *) | | Curl_setstropt | 1 |
| taint.cpp:157:7:157:12 | strcat | (const OSSL_PARAM *,const char *) | | OSSL_PARAM_locate_const | 1 |
+| taint.cpp:157:7:157:12 | strcat | (const char **,const char *) | | uv__utf8_decode1 | 1 |
| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | Configcmp | 1 |
+| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | Curl_timestrcmp | 1 |
| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | DES_crypt | 1 |
| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | OPENSSL_strcasecmp | 1 |
+| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | c_strcasecmp | 1 |
| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | get_passwd | 1 |
+| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | gzopen | 1 |
+| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | gzopen64 | 1 |
| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | openssl_fopen | 1 |
| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | ossl_pem_check_suffix | 1 |
| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | ossl_v3_name_cmp | 1 |
| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | sqlite3_strglob | 1 |
| taint.cpp:157:7:157:12 | strcat | (const char *,const char *) | | sqlite3_stricmp | 1 |
+| taint.cpp:157:7:157:12 | strcat | (curl_mimepart *,const char *) | | curl_mime_filedata | 1 |
+| taint.cpp:157:7:157:12 | strcat | (curl_off_t *,const char *) | | str2offset | 1 |
+| taint.cpp:157:7:157:12 | strcat | (curl_pushheaders *,const char *) | | curl_pushheader_byname | 1 |
+| taint.cpp:157:7:157:12 | strcat | (curl_slist **,const char *) | | add2list | 1 |
+| taint.cpp:157:7:157:12 | strcat | (curl_slist *,const char *) | | curl_slist_append | 1 |
+| taint.cpp:157:7:157:12 | strcat | (dynbuf *,const char *) | | Curl_dyn_add | 1 |
+| taint.cpp:157:7:157:12 | strcat | (dynbuf *,const char *) | | curlx_dyn_add | 1 |
+| taint.cpp:157:7:157:12 | strcat | (dynhds *,const char *) | | Curl_dynhds_cget | 1 |
+| taint.cpp:157:7:157:12 | strcat | (dynhds *,const char *) | | Curl_dynhds_h1_cadd_line | 1 |
+| taint.cpp:157:7:157:12 | strcat | (gzFile,const char *) | | gzputs | 1 |
| taint.cpp:157:7:157:12 | strcat | (int,const char *) | | BIO_meth_new | 1 |
+| taint.cpp:157:7:157:12 | strcat | (int,const char *) | | gzdopen | 1 |
| taint.cpp:157:7:157:12 | strcat | (lemon *,const char *) | | file_makename | 1 |
+| taint.cpp:157:7:157:12 | strcat | (long *,const char *) | | secs2ms | 1 |
+| taint.cpp:157:7:157:12 | strcat | (long *,const char *) | | str2num | 1 |
+| taint.cpp:157:7:157:12 | strcat | (long *,const char *) | | str2unum | 1 |
| taint.cpp:157:7:157:12 | strcat | (size_t *,const char *) | | next_protos_parse | 1 |
+| taint.cpp:157:7:157:12 | strcat | (slist_wc **,const char *) | | easysrc_add | 1 |
+| taint.cpp:157:7:157:12 | strcat | (slist_wc *,const char *) | | slist_wc_append | 1 |
| taint.cpp:157:7:157:12 | strcat | (sqlite3 *,const char *) | | sqlite3_declare_vtab | 1 |
| taint.cpp:157:7:157:12 | strcat | (sqlite3 *,const char *) | | sqlite3_get_clientdata | 1 |
| taint.cpp:157:7:157:12 | strcat | (sqlite3 *,const char *) | | sqlite3_wal_checkpoint | 1 |
@@ -6920,6 +8118,7 @@ signatureMatches
| taint.cpp:157:7:157:12 | strcat | (unsigned char *,const char *) | | ossl_a2i_ipadd | 1 |
| taint.cpp:157:7:157:12 | strcat | (unsigned long *,const char *) | | set_cert_ex | 1 |
| taint.cpp:157:7:157:12 | strcat | (unsigned long *,const char *) | | set_name_ex | 1 |
+| taint.cpp:157:7:157:12 | strcat | (uv_pipe_t *,const char *) | | uv_pipe_bind | 1 |
| taint.cpp:190:7:190:12 | memcpy | (ASN1_BIT_STRING *,int,int) | | ASN1_BIT_STRING_set_bit | 2 |
| taint.cpp:190:7:190:12 | memcpy | (ASN1_BIT_STRING *,unsigned char *,int) | | ASN1_BIT_STRING_set | 2 |
| taint.cpp:190:7:190:12 | memcpy | (ASN1_OCTET_STRING **,const unsigned char *,int) | | ossl_cmp_asn1_octet_string_set1_bytes | 2 |
@@ -6947,6 +8146,11 @@ signatureMatches
| taint.cpp:190:7:190:12 | memcpy | (CERT *,X509_STORE **,int) | | ssl_cert_get_cert_store | 2 |
| taint.cpp:190:7:190:12 | memcpy | (CRYPTO_THREAD_ROUTINE,void *,int) | | ossl_crypto_thread_native_start | 1 |
| taint.cpp:190:7:190:12 | memcpy | (CRYPTO_THREAD_ROUTINE,void *,int) | | ossl_crypto_thread_native_start | 2 |
+| taint.cpp:190:7:190:12 | memcpy | (Curl_easy *,connectdata *,int) | | Curl_conn_cf_discard_all | 2 |
+| taint.cpp:190:7:190:12 | memcpy | (Curl_easy *,connectdata *,int) | | Curl_http2_may_switch | 2 |
+| taint.cpp:190:7:190:12 | memcpy | (Curl_easy *,connectdata *,int) | | Curl_http2_switch | 2 |
+| taint.cpp:190:7:190:12 | memcpy | (Curl_easy *,connectdata *,int) | | Curl_ssl_cfilter_add | 2 |
+| taint.cpp:190:7:190:12 | memcpy | (Curl_sockaddr_ex *,const Curl_addrinfo *,int) | | Curl_sock_assign_addr | 2 |
| taint.cpp:190:7:190:12 | memcpy | (DH *,const OSSL_PARAM[],int) | | ossl_dh_key_fromdata | 2 |
| taint.cpp:190:7:190:12 | memcpy | (DSA *,const OSSL_PARAM[],int) | | ossl_dsa_key_fromdata | 2 |
| taint.cpp:190:7:190:12 | memcpy | (ECX_KEY *,const OSSL_PARAM[],int) | | ossl_ecx_key_fromdata | 2 |
@@ -6983,6 +8187,8 @@ signatureMatches
| taint.cpp:190:7:190:12 | memcpy | (Jim_Interp *,const char *,int) | | Jim_MakeTempFile | 2 |
| taint.cpp:190:7:190:12 | memcpy | (Jim_Interp *,const char *,int) | | Jim_NewStringObj | 2 |
| taint.cpp:190:7:190:12 | memcpy | (Jim_Interp *,const char *,int) | | Jim_NewStringObjUtf8 | 2 |
+| taint.cpp:190:7:190:12 | memcpy | (LIBSSH2_SESSION *,int,int) | | libssh2_session_flag | 2 |
+| taint.cpp:190:7:190:12 | memcpy | (LIBSSH2_SFTP_HANDLE *,LIBSSH2_SFTP_ATTRIBUTES *,int) | | libssh2_sftp_fstat_ex | 2 |
| taint.cpp:190:7:190:12 | memcpy | (OCSP_BASICRESP *,OCSP_CERTID *,int) | | OCSP_resp_find | 2 |
| taint.cpp:190:7:190:12 | memcpy | (OCSP_BASICRESP *,X509_EXTENSION *,int) | | OCSP_BASICRESP_add_ext | 2 |
| taint.cpp:190:7:190:12 | memcpy | (OCSP_BASICRESP *,const ASN1_OBJECT *,int) | | OCSP_BASICRESP_get_ext_by_OBJ | 2 |
@@ -7071,6 +8277,7 @@ signatureMatches
| taint.cpp:190:7:190:12 | memcpy | (const CMS_SignerInfo *,const ASN1_OBJECT *,int) | | CMS_unsigned_get_attr_by_OBJ | 2 |
| taint.cpp:190:7:190:12 | memcpy | (const CMS_SignerInfo *,int,int) | | CMS_signed_get_attr_by_NID | 2 |
| taint.cpp:190:7:190:12 | memcpy | (const CMS_SignerInfo *,int,int) | | CMS_unsigned_get_attr_by_NID | 2 |
+| taint.cpp:190:7:190:12 | memcpy | (const Curl_easy *,const connectdata *,int) | | Curl_conn_is_http2 | 2 |
| taint.cpp:190:7:190:12 | memcpy | (const EVP_MD *,const EVP_MD *,int) | | ossl_rsa_pss_params_create | 2 |
| taint.cpp:190:7:190:12 | memcpy | (const EVP_PKEY *,const ASN1_OBJECT *,int) | | EVP_PKEY_get_attr_by_OBJ | 2 |
| taint.cpp:190:7:190:12 | memcpy | (const EVP_PKEY *,int,int) | | EVP_PKEY_get_attr_by_NID | 2 |
@@ -7098,6 +8305,7 @@ signatureMatches
| taint.cpp:190:7:190:12 | memcpy | (const X509_REVOKED *,int,int) | | X509_REVOKED_get_ext_by_NID | 2 |
| taint.cpp:190:7:190:12 | memcpy | (const X509_REVOKED *,int,int) | | X509_REVOKED_get_ext_by_critical | 2 |
| taint.cpp:190:7:190:12 | memcpy | (const X509_SIG *,const char *,int) | | PKCS8_decrypt | 2 |
+| taint.cpp:190:7:190:12 | memcpy | (const char *,char **,int) | | idn2_to_ascii_8z | 2 |
| taint.cpp:190:7:190:12 | memcpy | (const char *,const OSSL_PARAM *,int) | | print_param_types | 2 |
| taint.cpp:190:7:190:12 | memcpy | (const char *,const char *,int) | | CRYPTO_strdup | 2 |
| taint.cpp:190:7:190:12 | memcpy | (const char *,const char *,int) | | sqlite3_strnicmp | 2 |
@@ -7108,9 +8316,16 @@ signatureMatches
| taint.cpp:190:7:190:12 | memcpy | (const stack_st_X509_EXTENSION *,const ASN1_OBJECT *,int) | | X509v3_get_ext_by_OBJ | 2 |
| taint.cpp:190:7:190:12 | memcpy | (const stack_st_X509_EXTENSION *,int,int) | | X509v3_get_ext_by_NID | 2 |
| taint.cpp:190:7:190:12 | memcpy | (const stack_st_X509_EXTENSION *,int,int) | | X509v3_get_ext_by_critical | 2 |
+| taint.cpp:190:7:190:12 | memcpy | (const uint8_t *,uint8_t **,int) | | idn2_lookup_u8 | 2 |
| taint.cpp:190:7:190:12 | memcpy | (const unsigned char **,unsigned int,int) | | ossl_b2i_DSA_after_header | 2 |
| taint.cpp:190:7:190:12 | memcpy | (const unsigned char **,unsigned int,int) | | ossl_b2i_RSA_after_header | 2 |
| taint.cpp:190:7:190:12 | memcpy | (const void *,const void *,int) | | ossl_is_partially_overlapping | 2 |
+| taint.cpp:190:7:190:12 | memcpy | (curl_mimepart *,curl_mime *,int) | | Curl_mime_set_subparts | 2 |
+| taint.cpp:190:7:190:12 | memcpy | (curl_mimepart *,curl_slist *,int) | | curl_mime_headers | 2 |
+| taint.cpp:190:7:190:12 | memcpy | (gzFile,char *,int) | | gzgets | 2 |
+| taint.cpp:190:7:190:12 | memcpy | (gzFile,int,int) | | gzsetparams | 2 |
+| taint.cpp:190:7:190:12 | memcpy | (gzFile,off64_t,int) | | gzseek64 | 2 |
+| taint.cpp:190:7:190:12 | memcpy | (gzFile,off_t,int) | | gzseek | 2 |
| taint.cpp:190:7:190:12 | memcpy | (int,BIO_ADDR *,int) | | BIO_accept_ex | 2 |
| taint.cpp:190:7:190:12 | memcpy | (int,int,int) | | ASN1_object_size | 2 |
| taint.cpp:190:7:190:12 | memcpy | (int,int,int) | | EVP_CIPHER_meth_new | 2 |
@@ -7143,7 +8358,15 @@ signatureMatches
| taint.cpp:190:7:190:12 | memcpy | (unsigned int,int,int) | | ossl_blob_length | 2 |
| taint.cpp:190:7:190:12 | memcpy | (unsigned long *,const BIGNUM *,int) | | bn_copy_words | 2 |
| taint.cpp:190:7:190:12 | memcpy | (unsigned long *,const unsigned long *,int) | | bn_sqr_words | 2 |
+| taint.cpp:190:7:190:12 | memcpy | (uv__io_t *,uv__io_cb,int) | | uv__io_init | 2 |
+| taint.cpp:190:7:190:12 | memcpy | (uv_loop_t *,uv_fs_t *,int) | | uv__iou_fs_read_or_write | 2 |
+| taint.cpp:190:7:190:12 | memcpy | (uv_loop_t *,uv_pipe_t *,int) | | uv_pipe_init | 2 |
+| taint.cpp:190:7:190:12 | memcpy | (uv_loop_t *,uv_poll_t *,int) | | uv_poll_init | 2 |
+| taint.cpp:190:7:190:12 | memcpy | (uv_signal_t *,uv_signal_cb,int) | | uv_signal_start | 2 |
+| taint.cpp:190:7:190:12 | memcpy | (uv_signal_t *,uv_signal_cb,int) | | uv_signal_start_oneshot | 2 |
+| taint.cpp:190:7:190:12 | memcpy | (uv_stream_t *,int,int) | | uv__stream_open | 2 |
| taint.cpp:190:7:190:12 | memcpy | (void *,const char *,int) | | CRYPTO_secure_free | 2 |
+| taint.cpp:190:7:190:12 | memcpy | (void *,curl_off_t,int) | | tool_mime_stdin_seek | 2 |
| taint.cpp:249:13:249:13 | _FUN | (ASN1_STRING *,int) | | ASN1_STRING_length_set | 1 |
| taint.cpp:249:13:249:13 | _FUN | (ASYNC_WAIT_CTX *,int) | | ASYNC_WAIT_CTX_set_status | 1 |
| taint.cpp:249:13:249:13 | _FUN | (BIGNUM *,int) | | BN_clear_bit | 1 |
@@ -7162,6 +8385,8 @@ signatureMatches
| taint.cpp:249:13:249:13 | _FUN | (BIO *,int) | | TXT_DB_read | 1 |
| taint.cpp:249:13:249:13 | _FUN | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 |
| taint.cpp:249:13:249:13 | _FUN | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 |
+| taint.cpp:249:13:249:13 | _FUN | (CURL *,int) | | curl_easy_pause | 1 |
+| taint.cpp:249:13:249:13 | _FUN | (Curl_easy *,int) | | Curl_conn_get_socket | 1 |
| taint.cpp:249:13:249:13 | _FUN | (DH *,int) | | DH_clear_flags | 1 |
| taint.cpp:249:13:249:13 | _FUN | (DH *,int) | | DH_set_flags | 1 |
| taint.cpp:249:13:249:13 | _FUN | (DH_METHOD *,int) | | DH_meth_set_flags | 1 |
@@ -7205,6 +8430,17 @@ signatureMatches
| taint.cpp:249:13:249:13 | _FUN | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 |
| taint.cpp:249:13:249:13 | _FUN | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 |
| taint.cpp:249:13:249:13 | _FUN | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 |
+| taint.cpp:249:13:249:13 | _FUN | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 |
+| taint.cpp:249:13:249:13 | _FUN | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 |
+| taint.cpp:249:13:249:13 | _FUN | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 |
+| taint.cpp:249:13:249:13 | _FUN | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 |
+| taint.cpp:249:13:249:13 | _FUN | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 |
+| taint.cpp:249:13:249:13 | _FUN | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 |
+| taint.cpp:249:13:249:13 | _FUN | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 |
+| taint.cpp:249:13:249:13 | _FUN | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 |
+| taint.cpp:249:13:249:13 | _FUN | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 |
+| taint.cpp:249:13:249:13 | _FUN | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 |
+| taint.cpp:249:13:249:13 | _FUN | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 |
| taint.cpp:249:13:249:13 | _FUN | (LPCOLESTR,int) | CComBSTR | Append | 1 |
| taint.cpp:249:13:249:13 | _FUN | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 |
| taint.cpp:249:13:249:13 | _FUN | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 |
@@ -7322,8 +8558,10 @@ signatureMatches
| taint.cpp:249:13:249:13 | _FUN | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 |
| taint.cpp:249:13:249:13 | _FUN | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 |
| taint.cpp:249:13:249:13 | _FUN | (acttab *,int) | | acttab_insert | 1 |
+| taint.cpp:249:13:249:13 | _FUN | (char *,int) | | Curl_str2addr | 1 |
| taint.cpp:249:13:249:13 | _FUN | (char *,int) | | PEM_proc_type | 1 |
| taint.cpp:249:13:249:13 | _FUN | (char,int) | CStringT | CStringT | 1 |
+| taint.cpp:249:13:249:13 | _FUN | (connectdata *,int) | | Curl_conn_is_ssl | 1 |
| taint.cpp:249:13:249:13 | _FUN | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 |
| taint.cpp:249:13:249:13 | _FUN | (const BIGNUM *,int) | | BN_get_flags | 1 |
| taint.cpp:249:13:249:13 | _FUN | (const BIGNUM *,int) | | BN_is_bit_set | 1 |
@@ -7390,6 +8628,9 @@ signatureMatches
| taint.cpp:249:13:249:13 | _FUN | (const unsigned char *,int) | | Jim_GenHashFunction | 1 |
| taint.cpp:249:13:249:13 | _FUN | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 |
| taint.cpp:249:13:249:13 | _FUN | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 |
+| taint.cpp:249:13:249:13 | _FUN | (dynhds *,int) | | Curl_dynhds_set_opts | 1 |
+| taint.cpp:249:13:249:13 | _FUN | (gzFile,int) | | gzflush | 1 |
+| taint.cpp:249:13:249:13 | _FUN | (gzFile,int) | | gzputc | 1 |
| taint.cpp:249:13:249:13 | _FUN | (int *,int) | | X509_PURPOSE_set | 1 |
| taint.cpp:249:13:249:13 | _FUN | (int *,int) | | X509_TRUST_set | 1 |
| taint.cpp:249:13:249:13 | _FUN | (int,int) | | BN_security_bits | 0 |
@@ -7400,6 +8641,13 @@ signatureMatches
| taint.cpp:249:13:249:13 | _FUN | (int,int) | | EVP_PKEY_meth_new | 1 |
| taint.cpp:249:13:249:13 | _FUN | (int,int) | | acttab_alloc | 0 |
| taint.cpp:249:13:249:13 | _FUN | (int,int) | | acttab_alloc | 1 |
+| taint.cpp:249:13:249:13 | _FUN | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 |
+| taint.cpp:249:13:249:13 | _FUN | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 |
+| taint.cpp:249:13:249:13 | _FUN | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 |
+| taint.cpp:249:13:249:13 | _FUN | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 |
+| taint.cpp:249:13:249:13 | _FUN | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 |
+| taint.cpp:249:13:249:13 | _FUN | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 |
+| taint.cpp:249:13:249:13 | _FUN | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 |
| taint.cpp:249:13:249:13 | _FUN | (rule *,int) | | Configlist_add | 1 |
| taint.cpp:249:13:249:13 | _FUN | (rule *,int) | | Configlist_addbasis | 1 |
| taint.cpp:249:13:249:13 | _FUN | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 |
@@ -7434,6 +8682,7 @@ signatureMatches
| taint.cpp:249:13:249:13 | _FUN | (unsigned char *,int) | | RAND_priv_bytes | 1 |
| taint.cpp:249:13:249:13 | _FUN | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 |
| taint.cpp:249:13:249:13 | _FUN | (unsigned short,int) | | dtls1_get_queue_priority | 1 |
+| taint.cpp:249:13:249:13 | _FUN | (uv_env_item_t *,int) | | uv_os_free_environ | 1 |
| taint.cpp:249:13:249:13 | _FUN | (void *,int) | | DSO_dsobyaddr | 1 |
| taint.cpp:249:13:249:13 | _FUN | (void *,int) | | sqlite3_realloc | 1 |
| taint.cpp:249:13:249:13 | _FUN | (wchar_t,int) | CStringT | CStringT | 1 |
@@ -7455,6 +8704,8 @@ signatureMatches
| taint.cpp:249:13:249:13 | operator() | (BIO *,int) | | TXT_DB_read | 1 |
| taint.cpp:249:13:249:13 | operator() | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 |
| taint.cpp:249:13:249:13 | operator() | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 |
+| taint.cpp:249:13:249:13 | operator() | (CURL *,int) | | curl_easy_pause | 1 |
+| taint.cpp:249:13:249:13 | operator() | (Curl_easy *,int) | | Curl_conn_get_socket | 1 |
| taint.cpp:249:13:249:13 | operator() | (DH *,int) | | DH_clear_flags | 1 |
| taint.cpp:249:13:249:13 | operator() | (DH *,int) | | DH_set_flags | 1 |
| taint.cpp:249:13:249:13 | operator() | (DH_METHOD *,int) | | DH_meth_set_flags | 1 |
@@ -7498,6 +8749,17 @@ signatureMatches
| taint.cpp:249:13:249:13 | operator() | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 |
| taint.cpp:249:13:249:13 | operator() | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 |
| taint.cpp:249:13:249:13 | operator() | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 |
+| taint.cpp:249:13:249:13 | operator() | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 |
+| taint.cpp:249:13:249:13 | operator() | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 |
+| taint.cpp:249:13:249:13 | operator() | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 |
+| taint.cpp:249:13:249:13 | operator() | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 |
+| taint.cpp:249:13:249:13 | operator() | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 |
+| taint.cpp:249:13:249:13 | operator() | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 |
+| taint.cpp:249:13:249:13 | operator() | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 |
+| taint.cpp:249:13:249:13 | operator() | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 |
+| taint.cpp:249:13:249:13 | operator() | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 |
+| taint.cpp:249:13:249:13 | operator() | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 |
+| taint.cpp:249:13:249:13 | operator() | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 |
| taint.cpp:249:13:249:13 | operator() | (LPCOLESTR,int) | CComBSTR | Append | 1 |
| taint.cpp:249:13:249:13 | operator() | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 |
| taint.cpp:249:13:249:13 | operator() | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 |
@@ -7615,8 +8877,10 @@ signatureMatches
| taint.cpp:249:13:249:13 | operator() | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 |
| taint.cpp:249:13:249:13 | operator() | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 |
| taint.cpp:249:13:249:13 | operator() | (acttab *,int) | | acttab_insert | 1 |
+| taint.cpp:249:13:249:13 | operator() | (char *,int) | | Curl_str2addr | 1 |
| taint.cpp:249:13:249:13 | operator() | (char *,int) | | PEM_proc_type | 1 |
| taint.cpp:249:13:249:13 | operator() | (char,int) | CStringT | CStringT | 1 |
+| taint.cpp:249:13:249:13 | operator() | (connectdata *,int) | | Curl_conn_is_ssl | 1 |
| taint.cpp:249:13:249:13 | operator() | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 |
| taint.cpp:249:13:249:13 | operator() | (const BIGNUM *,int) | | BN_get_flags | 1 |
| taint.cpp:249:13:249:13 | operator() | (const BIGNUM *,int) | | BN_is_bit_set | 1 |
@@ -7683,6 +8947,9 @@ signatureMatches
| taint.cpp:249:13:249:13 | operator() | (const unsigned char *,int) | | Jim_GenHashFunction | 1 |
| taint.cpp:249:13:249:13 | operator() | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 |
| taint.cpp:249:13:249:13 | operator() | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 |
+| taint.cpp:249:13:249:13 | operator() | (dynhds *,int) | | Curl_dynhds_set_opts | 1 |
+| taint.cpp:249:13:249:13 | operator() | (gzFile,int) | | gzflush | 1 |
+| taint.cpp:249:13:249:13 | operator() | (gzFile,int) | | gzputc | 1 |
| taint.cpp:249:13:249:13 | operator() | (int *,int) | | X509_PURPOSE_set | 1 |
| taint.cpp:249:13:249:13 | operator() | (int *,int) | | X509_TRUST_set | 1 |
| taint.cpp:249:13:249:13 | operator() | (int,int) | | BN_security_bits | 0 |
@@ -7693,6 +8960,13 @@ signatureMatches
| taint.cpp:249:13:249:13 | operator() | (int,int) | | EVP_PKEY_meth_new | 1 |
| taint.cpp:249:13:249:13 | operator() | (int,int) | | acttab_alloc | 0 |
| taint.cpp:249:13:249:13 | operator() | (int,int) | | acttab_alloc | 1 |
+| taint.cpp:249:13:249:13 | operator() | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 |
+| taint.cpp:249:13:249:13 | operator() | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 |
+| taint.cpp:249:13:249:13 | operator() | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 |
+| taint.cpp:249:13:249:13 | operator() | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 |
+| taint.cpp:249:13:249:13 | operator() | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 |
+| taint.cpp:249:13:249:13 | operator() | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 |
+| taint.cpp:249:13:249:13 | operator() | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 |
| taint.cpp:249:13:249:13 | operator() | (rule *,int) | | Configlist_add | 1 |
| taint.cpp:249:13:249:13 | operator() | (rule *,int) | | Configlist_addbasis | 1 |
| taint.cpp:249:13:249:13 | operator() | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 |
@@ -7727,6 +9001,7 @@ signatureMatches
| taint.cpp:249:13:249:13 | operator() | (unsigned char *,int) | | RAND_priv_bytes | 1 |
| taint.cpp:249:13:249:13 | operator() | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 |
| taint.cpp:249:13:249:13 | operator() | (unsigned short,int) | | dtls1_get_queue_priority | 1 |
+| taint.cpp:249:13:249:13 | operator() | (uv_env_item_t *,int) | | uv_os_free_environ | 1 |
| taint.cpp:249:13:249:13 | operator() | (void *,int) | | DSO_dsobyaddr | 1 |
| taint.cpp:249:13:249:13 | operator() | (void *,int) | | sqlite3_realloc | 1 |
| taint.cpp:249:13:249:13 | operator() | (wchar_t,int) | CStringT | CStringT | 1 |
@@ -7748,6 +9023,9 @@ signatureMatches
| taint.cpp:266:5:266:6 | id | (int) | | X509_TRUST_get0 | 0 |
| taint.cpp:266:5:266:6 | id | (int) | | X509_TRUST_get_by_id | 0 |
| taint.cpp:266:5:266:6 | id | (int) | | X509_VERIFY_PARAM_get0 | 0 |
+| taint.cpp:266:5:266:6 | id | (int) | | c_tolower | 0 |
+| taint.cpp:266:5:266:6 | id | (int) | | c_toupper | 0 |
+| taint.cpp:266:5:266:6 | id | (int) | | curlx_sitouz | 0 |
| taint.cpp:266:5:266:6 | id | (int) | | evp_pkey_type2name | 0 |
| taint.cpp:266:5:266:6 | id | (int) | | ossl_cmp_bodytype_to_string | 0 |
| taint.cpp:266:5:266:6 | id | (int) | | ossl_tolower | 0 |
@@ -7755,6 +9033,12 @@ signatureMatches
| taint.cpp:266:5:266:6 | id | (int) | | sqlite3_compileoption_get | 0 |
| taint.cpp:266:5:266:6 | id | (int) | | sqlite3_errstr | 0 |
| taint.cpp:266:5:266:6 | id | (int) | | tls13_alert_code | 0 |
+| taint.cpp:266:5:266:6 | id | (int) | | uv__accept | 0 |
+| taint.cpp:266:5:266:6 | id | (int) | | uv_err_name | 0 |
+| taint.cpp:266:5:266:6 | id | (int) | | uv_get_osfhandle | 0 |
+| taint.cpp:266:5:266:6 | id | (int) | | uv_strerror | 0 |
+| taint.cpp:266:5:266:6 | id | (int) | | uv_translate_sys_error | 0 |
+| taint.cpp:266:5:266:6 | id | (int) | | zError | 0 |
| taint.cpp:302:6:302:14 | myAssign2 | (ASN1_STRING *,int) | | ASN1_STRING_length_set | 1 |
| taint.cpp:302:6:302:14 | myAssign2 | (ASYNC_WAIT_CTX *,int) | | ASYNC_WAIT_CTX_set_status | 1 |
| taint.cpp:302:6:302:14 | myAssign2 | (BIGNUM *,int) | | BN_clear_bit | 1 |
@@ -7773,6 +9057,8 @@ signatureMatches
| taint.cpp:302:6:302:14 | myAssign2 | (BIO *,int) | | TXT_DB_read | 1 |
| taint.cpp:302:6:302:14 | myAssign2 | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 |
| taint.cpp:302:6:302:14 | myAssign2 | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 |
+| taint.cpp:302:6:302:14 | myAssign2 | (CURL *,int) | | curl_easy_pause | 1 |
+| taint.cpp:302:6:302:14 | myAssign2 | (Curl_easy *,int) | | Curl_conn_get_socket | 1 |
| taint.cpp:302:6:302:14 | myAssign2 | (DH *,int) | | DH_clear_flags | 1 |
| taint.cpp:302:6:302:14 | myAssign2 | (DH *,int) | | DH_set_flags | 1 |
| taint.cpp:302:6:302:14 | myAssign2 | (DH_METHOD *,int) | | DH_meth_set_flags | 1 |
@@ -7816,6 +9102,17 @@ signatureMatches
| taint.cpp:302:6:302:14 | myAssign2 | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 |
| taint.cpp:302:6:302:14 | myAssign2 | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 |
| taint.cpp:302:6:302:14 | myAssign2 | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 |
+| taint.cpp:302:6:302:14 | myAssign2 | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 |
+| taint.cpp:302:6:302:14 | myAssign2 | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 |
+| taint.cpp:302:6:302:14 | myAssign2 | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 |
+| taint.cpp:302:6:302:14 | myAssign2 | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 |
+| taint.cpp:302:6:302:14 | myAssign2 | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 |
+| taint.cpp:302:6:302:14 | myAssign2 | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 |
+| taint.cpp:302:6:302:14 | myAssign2 | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 |
+| taint.cpp:302:6:302:14 | myAssign2 | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 |
+| taint.cpp:302:6:302:14 | myAssign2 | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 |
+| taint.cpp:302:6:302:14 | myAssign2 | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 |
+| taint.cpp:302:6:302:14 | myAssign2 | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 |
| taint.cpp:302:6:302:14 | myAssign2 | (LPCOLESTR,int) | CComBSTR | Append | 1 |
| taint.cpp:302:6:302:14 | myAssign2 | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 |
| taint.cpp:302:6:302:14 | myAssign2 | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 |
@@ -7933,8 +9230,10 @@ signatureMatches
| taint.cpp:302:6:302:14 | myAssign2 | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 |
| taint.cpp:302:6:302:14 | myAssign2 | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 |
| taint.cpp:302:6:302:14 | myAssign2 | (acttab *,int) | | acttab_insert | 1 |
+| taint.cpp:302:6:302:14 | myAssign2 | (char *,int) | | Curl_str2addr | 1 |
| taint.cpp:302:6:302:14 | myAssign2 | (char *,int) | | PEM_proc_type | 1 |
| taint.cpp:302:6:302:14 | myAssign2 | (char,int) | CStringT | CStringT | 1 |
+| taint.cpp:302:6:302:14 | myAssign2 | (connectdata *,int) | | Curl_conn_is_ssl | 1 |
| taint.cpp:302:6:302:14 | myAssign2 | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 |
| taint.cpp:302:6:302:14 | myAssign2 | (const BIGNUM *,int) | | BN_get_flags | 1 |
| taint.cpp:302:6:302:14 | myAssign2 | (const BIGNUM *,int) | | BN_is_bit_set | 1 |
@@ -8001,12 +9300,22 @@ signatureMatches
| taint.cpp:302:6:302:14 | myAssign2 | (const unsigned char *,int) | | Jim_GenHashFunction | 1 |
| taint.cpp:302:6:302:14 | myAssign2 | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 |
| taint.cpp:302:6:302:14 | myAssign2 | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 |
+| taint.cpp:302:6:302:14 | myAssign2 | (dynhds *,int) | | Curl_dynhds_set_opts | 1 |
+| taint.cpp:302:6:302:14 | myAssign2 | (gzFile,int) | | gzflush | 1 |
+| taint.cpp:302:6:302:14 | myAssign2 | (gzFile,int) | | gzputc | 1 |
| taint.cpp:302:6:302:14 | myAssign2 | (int *,int) | | X509_PURPOSE_set | 1 |
| taint.cpp:302:6:302:14 | myAssign2 | (int *,int) | | X509_TRUST_set | 1 |
| taint.cpp:302:6:302:14 | myAssign2 | (int,int) | | BN_security_bits | 1 |
| taint.cpp:302:6:302:14 | myAssign2 | (int,int) | | EVP_MD_meth_new | 1 |
| taint.cpp:302:6:302:14 | myAssign2 | (int,int) | | EVP_PKEY_meth_new | 1 |
| taint.cpp:302:6:302:14 | myAssign2 | (int,int) | | acttab_alloc | 1 |
+| taint.cpp:302:6:302:14 | myAssign2 | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 |
+| taint.cpp:302:6:302:14 | myAssign2 | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 |
+| taint.cpp:302:6:302:14 | myAssign2 | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 |
+| taint.cpp:302:6:302:14 | myAssign2 | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 |
+| taint.cpp:302:6:302:14 | myAssign2 | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 |
+| taint.cpp:302:6:302:14 | myAssign2 | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 |
+| taint.cpp:302:6:302:14 | myAssign2 | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 |
| taint.cpp:302:6:302:14 | myAssign2 | (rule *,int) | | Configlist_add | 1 |
| taint.cpp:302:6:302:14 | myAssign2 | (rule *,int) | | Configlist_addbasis | 1 |
| taint.cpp:302:6:302:14 | myAssign2 | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 |
@@ -8041,6 +9350,7 @@ signatureMatches
| taint.cpp:302:6:302:14 | myAssign2 | (unsigned char *,int) | | RAND_priv_bytes | 1 |
| taint.cpp:302:6:302:14 | myAssign2 | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 |
| taint.cpp:302:6:302:14 | myAssign2 | (unsigned short,int) | | dtls1_get_queue_priority | 1 |
+| taint.cpp:302:6:302:14 | myAssign2 | (uv_env_item_t *,int) | | uv_os_free_environ | 1 |
| taint.cpp:302:6:302:14 | myAssign2 | (void *,int) | | DSO_dsobyaddr | 1 |
| taint.cpp:302:6:302:14 | myAssign2 | (void *,int) | | sqlite3_realloc | 1 |
| taint.cpp:302:6:302:14 | myAssign2 | (wchar_t,int) | CStringT | CStringT | 1 |
@@ -8062,6 +9372,8 @@ signatureMatches
| taint.cpp:307:6:307:14 | myAssign3 | (BIO *,int) | | TXT_DB_read | 1 |
| taint.cpp:307:6:307:14 | myAssign3 | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 |
| taint.cpp:307:6:307:14 | myAssign3 | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 |
+| taint.cpp:307:6:307:14 | myAssign3 | (CURL *,int) | | curl_easy_pause | 1 |
+| taint.cpp:307:6:307:14 | myAssign3 | (Curl_easy *,int) | | Curl_conn_get_socket | 1 |
| taint.cpp:307:6:307:14 | myAssign3 | (DH *,int) | | DH_clear_flags | 1 |
| taint.cpp:307:6:307:14 | myAssign3 | (DH *,int) | | DH_set_flags | 1 |
| taint.cpp:307:6:307:14 | myAssign3 | (DH_METHOD *,int) | | DH_meth_set_flags | 1 |
@@ -8105,6 +9417,17 @@ signatureMatches
| taint.cpp:307:6:307:14 | myAssign3 | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 |
| taint.cpp:307:6:307:14 | myAssign3 | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 |
| taint.cpp:307:6:307:14 | myAssign3 | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 |
+| taint.cpp:307:6:307:14 | myAssign3 | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 |
+| taint.cpp:307:6:307:14 | myAssign3 | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 |
+| taint.cpp:307:6:307:14 | myAssign3 | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 |
+| taint.cpp:307:6:307:14 | myAssign3 | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 |
+| taint.cpp:307:6:307:14 | myAssign3 | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 |
+| taint.cpp:307:6:307:14 | myAssign3 | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 |
+| taint.cpp:307:6:307:14 | myAssign3 | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 |
+| taint.cpp:307:6:307:14 | myAssign3 | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 |
+| taint.cpp:307:6:307:14 | myAssign3 | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 |
+| taint.cpp:307:6:307:14 | myAssign3 | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 |
+| taint.cpp:307:6:307:14 | myAssign3 | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 |
| taint.cpp:307:6:307:14 | myAssign3 | (LPCOLESTR,int) | CComBSTR | Append | 1 |
| taint.cpp:307:6:307:14 | myAssign3 | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 |
| taint.cpp:307:6:307:14 | myAssign3 | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 |
@@ -8222,8 +9545,10 @@ signatureMatches
| taint.cpp:307:6:307:14 | myAssign3 | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 |
| taint.cpp:307:6:307:14 | myAssign3 | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 |
| taint.cpp:307:6:307:14 | myAssign3 | (acttab *,int) | | acttab_insert | 1 |
+| taint.cpp:307:6:307:14 | myAssign3 | (char *,int) | | Curl_str2addr | 1 |
| taint.cpp:307:6:307:14 | myAssign3 | (char *,int) | | PEM_proc_type | 1 |
| taint.cpp:307:6:307:14 | myAssign3 | (char,int) | CStringT | CStringT | 1 |
+| taint.cpp:307:6:307:14 | myAssign3 | (connectdata *,int) | | Curl_conn_is_ssl | 1 |
| taint.cpp:307:6:307:14 | myAssign3 | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 |
| taint.cpp:307:6:307:14 | myAssign3 | (const BIGNUM *,int) | | BN_get_flags | 1 |
| taint.cpp:307:6:307:14 | myAssign3 | (const BIGNUM *,int) | | BN_is_bit_set | 1 |
@@ -8290,6 +9615,9 @@ signatureMatches
| taint.cpp:307:6:307:14 | myAssign3 | (const unsigned char *,int) | | Jim_GenHashFunction | 1 |
| taint.cpp:307:6:307:14 | myAssign3 | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 |
| taint.cpp:307:6:307:14 | myAssign3 | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 |
+| taint.cpp:307:6:307:14 | myAssign3 | (dynhds *,int) | | Curl_dynhds_set_opts | 1 |
+| taint.cpp:307:6:307:14 | myAssign3 | (gzFile,int) | | gzflush | 1 |
+| taint.cpp:307:6:307:14 | myAssign3 | (gzFile,int) | | gzputc | 1 |
| taint.cpp:307:6:307:14 | myAssign3 | (int *,int) | | X509_PURPOSE_set | 0 |
| taint.cpp:307:6:307:14 | myAssign3 | (int *,int) | | X509_PURPOSE_set | 1 |
| taint.cpp:307:6:307:14 | myAssign3 | (int *,int) | | X509_TRUST_set | 0 |
@@ -8298,6 +9626,13 @@ signatureMatches
| taint.cpp:307:6:307:14 | myAssign3 | (int,int) | | EVP_MD_meth_new | 1 |
| taint.cpp:307:6:307:14 | myAssign3 | (int,int) | | EVP_PKEY_meth_new | 1 |
| taint.cpp:307:6:307:14 | myAssign3 | (int,int) | | acttab_alloc | 1 |
+| taint.cpp:307:6:307:14 | myAssign3 | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 |
+| taint.cpp:307:6:307:14 | myAssign3 | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 |
+| taint.cpp:307:6:307:14 | myAssign3 | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 |
+| taint.cpp:307:6:307:14 | myAssign3 | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 |
+| taint.cpp:307:6:307:14 | myAssign3 | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 |
+| taint.cpp:307:6:307:14 | myAssign3 | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 |
+| taint.cpp:307:6:307:14 | myAssign3 | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 |
| taint.cpp:307:6:307:14 | myAssign3 | (rule *,int) | | Configlist_add | 1 |
| taint.cpp:307:6:307:14 | myAssign3 | (rule *,int) | | Configlist_addbasis | 1 |
| taint.cpp:307:6:307:14 | myAssign3 | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 |
@@ -8332,6 +9667,7 @@ signatureMatches
| taint.cpp:307:6:307:14 | myAssign3 | (unsigned char *,int) | | RAND_priv_bytes | 1 |
| taint.cpp:307:6:307:14 | myAssign3 | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 |
| taint.cpp:307:6:307:14 | myAssign3 | (unsigned short,int) | | dtls1_get_queue_priority | 1 |
+| taint.cpp:307:6:307:14 | myAssign3 | (uv_env_item_t *,int) | | uv_os_free_environ | 1 |
| taint.cpp:307:6:307:14 | myAssign3 | (void *,int) | | DSO_dsobyaddr | 1 |
| taint.cpp:307:6:307:14 | myAssign3 | (void *,int) | | sqlite3_realloc | 1 |
| taint.cpp:307:6:307:14 | myAssign3 | (wchar_t,int) | CStringT | CStringT | 1 |
@@ -8353,6 +9689,8 @@ signatureMatches
| taint.cpp:312:6:312:14 | myAssign4 | (BIO *,int) | | TXT_DB_read | 1 |
| taint.cpp:312:6:312:14 | myAssign4 | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 |
| taint.cpp:312:6:312:14 | myAssign4 | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 |
+| taint.cpp:312:6:312:14 | myAssign4 | (CURL *,int) | | curl_easy_pause | 1 |
+| taint.cpp:312:6:312:14 | myAssign4 | (Curl_easy *,int) | | Curl_conn_get_socket | 1 |
| taint.cpp:312:6:312:14 | myAssign4 | (DH *,int) | | DH_clear_flags | 1 |
| taint.cpp:312:6:312:14 | myAssign4 | (DH *,int) | | DH_set_flags | 1 |
| taint.cpp:312:6:312:14 | myAssign4 | (DH_METHOD *,int) | | DH_meth_set_flags | 1 |
@@ -8396,6 +9734,17 @@ signatureMatches
| taint.cpp:312:6:312:14 | myAssign4 | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 |
| taint.cpp:312:6:312:14 | myAssign4 | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 |
| taint.cpp:312:6:312:14 | myAssign4 | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 |
+| taint.cpp:312:6:312:14 | myAssign4 | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 |
+| taint.cpp:312:6:312:14 | myAssign4 | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 |
+| taint.cpp:312:6:312:14 | myAssign4 | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 |
+| taint.cpp:312:6:312:14 | myAssign4 | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 |
+| taint.cpp:312:6:312:14 | myAssign4 | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 |
+| taint.cpp:312:6:312:14 | myAssign4 | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 |
+| taint.cpp:312:6:312:14 | myAssign4 | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 |
+| taint.cpp:312:6:312:14 | myAssign4 | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 |
+| taint.cpp:312:6:312:14 | myAssign4 | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 |
+| taint.cpp:312:6:312:14 | myAssign4 | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 |
+| taint.cpp:312:6:312:14 | myAssign4 | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 |
| taint.cpp:312:6:312:14 | myAssign4 | (LPCOLESTR,int) | CComBSTR | Append | 1 |
| taint.cpp:312:6:312:14 | myAssign4 | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 |
| taint.cpp:312:6:312:14 | myAssign4 | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 |
@@ -8513,8 +9862,10 @@ signatureMatches
| taint.cpp:312:6:312:14 | myAssign4 | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 |
| taint.cpp:312:6:312:14 | myAssign4 | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 |
| taint.cpp:312:6:312:14 | myAssign4 | (acttab *,int) | | acttab_insert | 1 |
+| taint.cpp:312:6:312:14 | myAssign4 | (char *,int) | | Curl_str2addr | 1 |
| taint.cpp:312:6:312:14 | myAssign4 | (char *,int) | | PEM_proc_type | 1 |
| taint.cpp:312:6:312:14 | myAssign4 | (char,int) | CStringT | CStringT | 1 |
+| taint.cpp:312:6:312:14 | myAssign4 | (connectdata *,int) | | Curl_conn_is_ssl | 1 |
| taint.cpp:312:6:312:14 | myAssign4 | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 |
| taint.cpp:312:6:312:14 | myAssign4 | (const BIGNUM *,int) | | BN_get_flags | 1 |
| taint.cpp:312:6:312:14 | myAssign4 | (const BIGNUM *,int) | | BN_is_bit_set | 1 |
@@ -8581,6 +9932,9 @@ signatureMatches
| taint.cpp:312:6:312:14 | myAssign4 | (const unsigned char *,int) | | Jim_GenHashFunction | 1 |
| taint.cpp:312:6:312:14 | myAssign4 | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 |
| taint.cpp:312:6:312:14 | myAssign4 | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 |
+| taint.cpp:312:6:312:14 | myAssign4 | (dynhds *,int) | | Curl_dynhds_set_opts | 1 |
+| taint.cpp:312:6:312:14 | myAssign4 | (gzFile,int) | | gzflush | 1 |
+| taint.cpp:312:6:312:14 | myAssign4 | (gzFile,int) | | gzputc | 1 |
| taint.cpp:312:6:312:14 | myAssign4 | (int *,int) | | X509_PURPOSE_set | 0 |
| taint.cpp:312:6:312:14 | myAssign4 | (int *,int) | | X509_PURPOSE_set | 1 |
| taint.cpp:312:6:312:14 | myAssign4 | (int *,int) | | X509_TRUST_set | 0 |
@@ -8589,6 +9943,13 @@ signatureMatches
| taint.cpp:312:6:312:14 | myAssign4 | (int,int) | | EVP_MD_meth_new | 1 |
| taint.cpp:312:6:312:14 | myAssign4 | (int,int) | | EVP_PKEY_meth_new | 1 |
| taint.cpp:312:6:312:14 | myAssign4 | (int,int) | | acttab_alloc | 1 |
+| taint.cpp:312:6:312:14 | myAssign4 | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 |
+| taint.cpp:312:6:312:14 | myAssign4 | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 |
+| taint.cpp:312:6:312:14 | myAssign4 | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 |
+| taint.cpp:312:6:312:14 | myAssign4 | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 |
+| taint.cpp:312:6:312:14 | myAssign4 | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 |
+| taint.cpp:312:6:312:14 | myAssign4 | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 |
+| taint.cpp:312:6:312:14 | myAssign4 | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 |
| taint.cpp:312:6:312:14 | myAssign4 | (rule *,int) | | Configlist_add | 1 |
| taint.cpp:312:6:312:14 | myAssign4 | (rule *,int) | | Configlist_addbasis | 1 |
| taint.cpp:312:6:312:14 | myAssign4 | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 |
@@ -8623,10 +9984,14 @@ signatureMatches
| taint.cpp:312:6:312:14 | myAssign4 | (unsigned char *,int) | | RAND_priv_bytes | 1 |
| taint.cpp:312:6:312:14 | myAssign4 | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 |
| taint.cpp:312:6:312:14 | myAssign4 | (unsigned short,int) | | dtls1_get_queue_priority | 1 |
+| taint.cpp:312:6:312:14 | myAssign4 | (uv_env_item_t *,int) | | uv_os_free_environ | 1 |
| taint.cpp:312:6:312:14 | myAssign4 | (void *,int) | | DSO_dsobyaddr | 1 |
| taint.cpp:312:6:312:14 | myAssign4 | (void *,int) | | sqlite3_realloc | 1 |
| taint.cpp:312:6:312:14 | myAssign4 | (wchar_t,int) | CStringT | CStringT | 1 |
| taint.cpp:361:7:361:12 | strdup | (const char *) | | BIO_gethostbyname | 0 |
+| taint.cpp:361:7:361:12 | strdup | (const char *) | | Curl_copy_header_value | 0 |
+| taint.cpp:361:7:361:12 | strdup | (const char *) | | Curl_get_scheme_handler | 0 |
+| taint.cpp:361:7:361:12 | strdup | (const char *) | | Curl_getdate_capped | 0 |
| taint.cpp:361:7:361:12 | strdup | (const char *) | | Jim_StrDup | 0 |
| taint.cpp:361:7:361:12 | strdup | (const char *) | | OPENSSL_LH_strhash | 0 |
| taint.cpp:361:7:361:12 | strdup | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 |
@@ -8637,10 +10002,14 @@ signatureMatches
| taint.cpp:361:7:361:12 | strdup | (const char *) | | X509_LOOKUP_meth_new | 0 |
| taint.cpp:361:7:361:12 | strdup | (const char *) | | a2i_IPADDRESS | 0 |
| taint.cpp:361:7:361:12 | strdup | (const char *) | | a2i_IPADDRESS_NC | 0 |
+| taint.cpp:361:7:361:12 | strdup | (const char *) | | last_component | 0 |
| taint.cpp:361:7:361:12 | strdup | (const char *) | | opt_path_end | 0 |
| taint.cpp:361:7:361:12 | strdup | (const char *) | | opt_progname | 0 |
| taint.cpp:361:7:361:12 | strdup | (const char *) | | ossl_lh_strcasehash | 0 |
| taint.cpp:361:7:361:12 | strdup | (const char *) | | strhash | 0 |
+| taint.cpp:361:7:361:12 | strdup | (const char *) | | uc_script_byname | 0 |
+| taint.cpp:361:7:361:12 | strdup | (const char *) | | uv__strdup | 0 |
+| taint.cpp:361:7:361:12 | strdup | (const char *) | | uv_wtf8_length_as_utf16 | 0 |
| taint.cpp:362:7:362:13 | strndup | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_cert_flags | 1 |
| taint.cpp:362:7:362:13 | strndup | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_flags | 1 |
| taint.cpp:362:7:362:13 | strndup | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_nm_flags | 1 |
@@ -8654,6 +10023,7 @@ signatureMatches
| taint.cpp:362:7:362:13 | strndup | (BUF_MEM *,size_t) | | BUF_MEM_grow | 1 |
| taint.cpp:362:7:362:13 | strndup | (BUF_MEM *,size_t) | | BUF_MEM_grow_clean | 1 |
| taint.cpp:362:7:362:13 | strndup | (CONF_IMODULE *,unsigned long) | | CONF_imodule_set_flags | 1 |
+| taint.cpp:362:7:362:13 | strndup | (Curl_hash *,size_t) | | Curl_init_dnscache | 1 |
| taint.cpp:362:7:362:13 | strndup | (EVP_CIPHER *,unsigned long) | | EVP_CIPHER_meth_set_flags | 1 |
| taint.cpp:362:7:362:13 | strndup | (EVP_MD *,unsigned long) | | EVP_MD_meth_set_flags | 1 |
| taint.cpp:362:7:362:13 | strndup | (HMAC_CTX *,unsigned long) | | HMAC_CTX_set_flags | 1 |
@@ -8699,16 +10069,58 @@ signatureMatches
| taint.cpp:362:7:362:13 | strndup | (X509_STORE_CTX *,unsigned long) | | X509_STORE_CTX_set_flags | 1 |
| taint.cpp:362:7:362:13 | strndup | (X509_VERIFY_PARAM *,unsigned long) | | X509_VERIFY_PARAM_clear_flags | 1 |
| taint.cpp:362:7:362:13 | strndup | (X509_VERIFY_PARAM *,unsigned long) | | X509_VERIFY_PARAM_set_flags | 1 |
+| taint.cpp:362:7:362:13 | strndup | (bufq *,size_t) | | Curl_bufq_skip | 1 |
+| taint.cpp:362:7:362:13 | strndup | (bufq *,size_t) | | Curl_bufq_unwrite | 1 |
| taint.cpp:362:7:362:13 | strndup | (char *,size_t) | | RAND_file_name | 1 |
+| taint.cpp:362:7:362:13 | strndup | (char *,size_t) | | plain_method | 1 |
| taint.cpp:362:7:362:13 | strndup | (const BIGNUM *,unsigned long) | | BN_mod_word | 1 |
+| taint.cpp:362:7:362:13 | strndup | (const char *,size_t) | | Curl_getn_scheme_handler | 0 |
+| taint.cpp:362:7:362:13 | strndup | (const char *,size_t) | | Curl_getn_scheme_handler | 1 |
+| taint.cpp:362:7:362:13 | strndup | (const char *,size_t) | | Curl_memdup0 | 0 |
+| taint.cpp:362:7:362:13 | strndup | (const char *,size_t) | | Curl_memdup0 | 1 |
| taint.cpp:362:7:362:13 | strndup | (const char *,size_t) | | OPENSSL_strnlen | 0 |
| taint.cpp:362:7:362:13 | strndup | (const char *,size_t) | | OPENSSL_strnlen | 1 |
+| taint.cpp:362:7:362:13 | strndup | (const char *,size_t) | | uv__strndup | 0 |
+| taint.cpp:362:7:362:13 | strndup | (const char *,size_t) | | uv__strndup | 1 |
| taint.cpp:362:7:362:13 | strndup | (const uint8_t *,size_t) | | FuzzerTestOneInput | 1 |
+| taint.cpp:362:7:362:13 | strndup | (const uint8_t *,size_t) | | nghttp2_hd_huff_encode_count | 1 |
| taint.cpp:362:7:362:13 | strndup | (const uint8_t *,size_t) | | ossl_ed448_pubkey_verify | 1 |
+| taint.cpp:362:7:362:13 | strndup | (const void *,size_t) | | Curl_memdup | 1 |
+| taint.cpp:362:7:362:13 | strndup | (curl_pushheaders *,size_t) | | curl_pushheader_bynum | 1 |
+| taint.cpp:362:7:362:13 | strndup | (dynbuf *,size_t) | | Curl_dyn_init | 1 |
+| taint.cpp:362:7:362:13 | strndup | (dynbuf *,size_t) | | Curl_dyn_setlen | 1 |
+| taint.cpp:362:7:362:13 | strndup | (dynbuf *,size_t) | | Curl_dyn_tail | 1 |
+| taint.cpp:362:7:362:13 | strndup | (dynbuf *,size_t) | | curlx_dyn_init | 1 |
+| taint.cpp:362:7:362:13 | strndup | (dynbuf *,size_t) | | curlx_dyn_setlen | 1 |
+| taint.cpp:362:7:362:13 | strndup | (dynbuf *,size_t) | | curlx_dyn_tail | 1 |
+| taint.cpp:362:7:362:13 | strndup | (dynhds *,size_t) | | Curl_dynhds_getn | 1 |
+| taint.cpp:362:7:362:13 | strndup | (h1_req_parser *,size_t) | | Curl_h1_req_parse_init | 1 |
| taint.cpp:362:7:362:13 | strndup | (int,size_t) | | ossl_calculate_comp_expansion | 1 |
+| taint.cpp:362:7:362:13 | strndup | (nghttp2_bufs *,size_t) | | nghttp2_bufs_realloc | 1 |
+| taint.cpp:362:7:362:13 | strndup | (nghttp2_frame *,size_t) | | nghttp2_frame_trail_padlen | 1 |
+| taint.cpp:362:7:362:13 | strndup | (nghttp2_hd_context *,size_t) | | nghttp2_hd_table_get | 1 |
+| taint.cpp:362:7:362:13 | strndup | (nghttp2_hd_deflater **,size_t) | | nghttp2_hd_deflate_new | 1 |
+| taint.cpp:362:7:362:13 | strndup | (nghttp2_hd_deflater *,size_t) | | nghttp2_hd_deflate_change_table_size | 1 |
+| taint.cpp:362:7:362:13 | strndup | (nghttp2_hd_deflater *,size_t) | | nghttp2_hd_deflate_get_table_entry | 1 |
+| taint.cpp:362:7:362:13 | strndup | (nghttp2_hd_inflater *,size_t) | | nghttp2_hd_inflate_change_table_size | 1 |
+| taint.cpp:362:7:362:13 | strndup | (nghttp2_hd_inflater *,size_t) | | nghttp2_hd_inflate_get_table_entry | 1 |
+| taint.cpp:362:7:362:13 | strndup | (nghttp2_option *,size_t) | | nghttp2_option_set_max_continuations | 1 |
+| taint.cpp:362:7:362:13 | strndup | (nghttp2_option *,size_t) | | nghttp2_option_set_max_deflate_dynamic_table_size | 1 |
+| taint.cpp:362:7:362:13 | strndup | (nghttp2_option *,size_t) | | nghttp2_option_set_max_outbound_ack | 1 |
+| taint.cpp:362:7:362:13 | strndup | (nghttp2_option *,size_t) | | nghttp2_option_set_max_send_header_block_length | 1 |
+| taint.cpp:362:7:362:13 | strndup | (nghttp2_option *,size_t) | | nghttp2_option_set_max_settings | 1 |
+| taint.cpp:362:7:362:13 | strndup | (nghttp2_session *,size_t) | | nghttp2_session_consume_connection | 1 |
+| taint.cpp:362:7:362:13 | strndup | (nghttp2_session *,size_t) | | nghttp2_session_update_recv_connection_window_size | 1 |
+| taint.cpp:362:7:362:13 | strndup | (nghttp2_stream *,size_t) | | nghttp2_http_on_data_chunk | 1 |
+| taint.cpp:362:7:362:13 | strndup | (uint8_t *,size_t) | | nghttp2_downcase | 1 |
| taint.cpp:362:7:362:13 | strndup | (uint8_t *,size_t) | | ossl_fnv1a_hash | 1 |
| taint.cpp:362:7:362:13 | strndup | (void *,size_t) | | JimDefaultAllocator | 1 |
+| taint.cpp:362:7:362:13 | strndup | (void *,size_t) | | uv__random_devurandom | 1 |
+| taint.cpp:362:7:362:13 | strndup | (void *,size_t) | | uv__random_getrandom | 1 |
| taint.cpp:364:7:364:13 | strdupa | (const char *) | | BIO_gethostbyname | 0 |
+| taint.cpp:364:7:364:13 | strdupa | (const char *) | | Curl_copy_header_value | 0 |
+| taint.cpp:364:7:364:13 | strdupa | (const char *) | | Curl_get_scheme_handler | 0 |
+| taint.cpp:364:7:364:13 | strdupa | (const char *) | | Curl_getdate_capped | 0 |
| taint.cpp:364:7:364:13 | strdupa | (const char *) | | Jim_StrDup | 0 |
| taint.cpp:364:7:364:13 | strdupa | (const char *) | | OPENSSL_LH_strhash | 0 |
| taint.cpp:364:7:364:13 | strdupa | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 |
@@ -8719,10 +10131,14 @@ signatureMatches
| taint.cpp:364:7:364:13 | strdupa | (const char *) | | X509_LOOKUP_meth_new | 0 |
| taint.cpp:364:7:364:13 | strdupa | (const char *) | | a2i_IPADDRESS | 0 |
| taint.cpp:364:7:364:13 | strdupa | (const char *) | | a2i_IPADDRESS_NC | 0 |
+| taint.cpp:364:7:364:13 | strdupa | (const char *) | | last_component | 0 |
| taint.cpp:364:7:364:13 | strdupa | (const char *) | | opt_path_end | 0 |
| taint.cpp:364:7:364:13 | strdupa | (const char *) | | opt_progname | 0 |
| taint.cpp:364:7:364:13 | strdupa | (const char *) | | ossl_lh_strcasehash | 0 |
| taint.cpp:364:7:364:13 | strdupa | (const char *) | | strhash | 0 |
+| taint.cpp:364:7:364:13 | strdupa | (const char *) | | uc_script_byname | 0 |
+| taint.cpp:364:7:364:13 | strdupa | (const char *) | | uv__strdup | 0 |
+| taint.cpp:364:7:364:13 | strdupa | (const char *) | | uv_wtf8_length_as_utf16 | 0 |
| taint.cpp:365:7:365:14 | strndupa | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_cert_flags | 1 |
| taint.cpp:365:7:365:14 | strndupa | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_flags | 1 |
| taint.cpp:365:7:365:14 | strndupa | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_nm_flags | 1 |
@@ -8736,6 +10152,7 @@ signatureMatches
| taint.cpp:365:7:365:14 | strndupa | (BUF_MEM *,size_t) | | BUF_MEM_grow | 1 |
| taint.cpp:365:7:365:14 | strndupa | (BUF_MEM *,size_t) | | BUF_MEM_grow_clean | 1 |
| taint.cpp:365:7:365:14 | strndupa | (CONF_IMODULE *,unsigned long) | | CONF_imodule_set_flags | 1 |
+| taint.cpp:365:7:365:14 | strndupa | (Curl_hash *,size_t) | | Curl_init_dnscache | 1 |
| taint.cpp:365:7:365:14 | strndupa | (EVP_CIPHER *,unsigned long) | | EVP_CIPHER_meth_set_flags | 1 |
| taint.cpp:365:7:365:14 | strndupa | (EVP_MD *,unsigned long) | | EVP_MD_meth_set_flags | 1 |
| taint.cpp:365:7:365:14 | strndupa | (HMAC_CTX *,unsigned long) | | HMAC_CTX_set_flags | 1 |
@@ -8781,15 +10198,54 @@ signatureMatches
| taint.cpp:365:7:365:14 | strndupa | (X509_STORE_CTX *,unsigned long) | | X509_STORE_CTX_set_flags | 1 |
| taint.cpp:365:7:365:14 | strndupa | (X509_VERIFY_PARAM *,unsigned long) | | X509_VERIFY_PARAM_clear_flags | 1 |
| taint.cpp:365:7:365:14 | strndupa | (X509_VERIFY_PARAM *,unsigned long) | | X509_VERIFY_PARAM_set_flags | 1 |
+| taint.cpp:365:7:365:14 | strndupa | (bufq *,size_t) | | Curl_bufq_skip | 1 |
+| taint.cpp:365:7:365:14 | strndupa | (bufq *,size_t) | | Curl_bufq_unwrite | 1 |
| taint.cpp:365:7:365:14 | strndupa | (char *,size_t) | | RAND_file_name | 1 |
+| taint.cpp:365:7:365:14 | strndupa | (char *,size_t) | | plain_method | 1 |
| taint.cpp:365:7:365:14 | strndupa | (const BIGNUM *,unsigned long) | | BN_mod_word | 1 |
+| taint.cpp:365:7:365:14 | strndupa | (const char *,size_t) | | Curl_getn_scheme_handler | 0 |
+| taint.cpp:365:7:365:14 | strndupa | (const char *,size_t) | | Curl_getn_scheme_handler | 1 |
+| taint.cpp:365:7:365:14 | strndupa | (const char *,size_t) | | Curl_memdup0 | 0 |
+| taint.cpp:365:7:365:14 | strndupa | (const char *,size_t) | | Curl_memdup0 | 1 |
| taint.cpp:365:7:365:14 | strndupa | (const char *,size_t) | | OPENSSL_strnlen | 0 |
| taint.cpp:365:7:365:14 | strndupa | (const char *,size_t) | | OPENSSL_strnlen | 1 |
+| taint.cpp:365:7:365:14 | strndupa | (const char *,size_t) | | uv__strndup | 0 |
+| taint.cpp:365:7:365:14 | strndupa | (const char *,size_t) | | uv__strndup | 1 |
| taint.cpp:365:7:365:14 | strndupa | (const uint8_t *,size_t) | | FuzzerTestOneInput | 1 |
+| taint.cpp:365:7:365:14 | strndupa | (const uint8_t *,size_t) | | nghttp2_hd_huff_encode_count | 1 |
| taint.cpp:365:7:365:14 | strndupa | (const uint8_t *,size_t) | | ossl_ed448_pubkey_verify | 1 |
+| taint.cpp:365:7:365:14 | strndupa | (const void *,size_t) | | Curl_memdup | 1 |
+| taint.cpp:365:7:365:14 | strndupa | (curl_pushheaders *,size_t) | | curl_pushheader_bynum | 1 |
+| taint.cpp:365:7:365:14 | strndupa | (dynbuf *,size_t) | | Curl_dyn_init | 1 |
+| taint.cpp:365:7:365:14 | strndupa | (dynbuf *,size_t) | | Curl_dyn_setlen | 1 |
+| taint.cpp:365:7:365:14 | strndupa | (dynbuf *,size_t) | | Curl_dyn_tail | 1 |
+| taint.cpp:365:7:365:14 | strndupa | (dynbuf *,size_t) | | curlx_dyn_init | 1 |
+| taint.cpp:365:7:365:14 | strndupa | (dynbuf *,size_t) | | curlx_dyn_setlen | 1 |
+| taint.cpp:365:7:365:14 | strndupa | (dynbuf *,size_t) | | curlx_dyn_tail | 1 |
+| taint.cpp:365:7:365:14 | strndupa | (dynhds *,size_t) | | Curl_dynhds_getn | 1 |
+| taint.cpp:365:7:365:14 | strndupa | (h1_req_parser *,size_t) | | Curl_h1_req_parse_init | 1 |
| taint.cpp:365:7:365:14 | strndupa | (int,size_t) | | ossl_calculate_comp_expansion | 1 |
+| taint.cpp:365:7:365:14 | strndupa | (nghttp2_bufs *,size_t) | | nghttp2_bufs_realloc | 1 |
+| taint.cpp:365:7:365:14 | strndupa | (nghttp2_frame *,size_t) | | nghttp2_frame_trail_padlen | 1 |
+| taint.cpp:365:7:365:14 | strndupa | (nghttp2_hd_context *,size_t) | | nghttp2_hd_table_get | 1 |
+| taint.cpp:365:7:365:14 | strndupa | (nghttp2_hd_deflater **,size_t) | | nghttp2_hd_deflate_new | 1 |
+| taint.cpp:365:7:365:14 | strndupa | (nghttp2_hd_deflater *,size_t) | | nghttp2_hd_deflate_change_table_size | 1 |
+| taint.cpp:365:7:365:14 | strndupa | (nghttp2_hd_deflater *,size_t) | | nghttp2_hd_deflate_get_table_entry | 1 |
+| taint.cpp:365:7:365:14 | strndupa | (nghttp2_hd_inflater *,size_t) | | nghttp2_hd_inflate_change_table_size | 1 |
+| taint.cpp:365:7:365:14 | strndupa | (nghttp2_hd_inflater *,size_t) | | nghttp2_hd_inflate_get_table_entry | 1 |
+| taint.cpp:365:7:365:14 | strndupa | (nghttp2_option *,size_t) | | nghttp2_option_set_max_continuations | 1 |
+| taint.cpp:365:7:365:14 | strndupa | (nghttp2_option *,size_t) | | nghttp2_option_set_max_deflate_dynamic_table_size | 1 |
+| taint.cpp:365:7:365:14 | strndupa | (nghttp2_option *,size_t) | | nghttp2_option_set_max_outbound_ack | 1 |
+| taint.cpp:365:7:365:14 | strndupa | (nghttp2_option *,size_t) | | nghttp2_option_set_max_send_header_block_length | 1 |
+| taint.cpp:365:7:365:14 | strndupa | (nghttp2_option *,size_t) | | nghttp2_option_set_max_settings | 1 |
+| taint.cpp:365:7:365:14 | strndupa | (nghttp2_session *,size_t) | | nghttp2_session_consume_connection | 1 |
+| taint.cpp:365:7:365:14 | strndupa | (nghttp2_session *,size_t) | | nghttp2_session_update_recv_connection_window_size | 1 |
+| taint.cpp:365:7:365:14 | strndupa | (nghttp2_stream *,size_t) | | nghttp2_http_on_data_chunk | 1 |
+| taint.cpp:365:7:365:14 | strndupa | (uint8_t *,size_t) | | nghttp2_downcase | 1 |
| taint.cpp:365:7:365:14 | strndupa | (uint8_t *,size_t) | | ossl_fnv1a_hash | 1 |
| taint.cpp:365:7:365:14 | strndupa | (void *,size_t) | | JimDefaultAllocator | 1 |
+| taint.cpp:365:7:365:14 | strndupa | (void *,size_t) | | uv__random_devurandom | 1 |
+| taint.cpp:365:7:365:14 | strndupa | (void *,size_t) | | uv__random_getrandom | 1 |
| taint.cpp:367:6:367:16 | test_strdup | (char *) | | SRP_VBASE_new | 0 |
| taint.cpp:367:6:367:16 | test_strdup | (char *) | | defossilize | 0 |
| taint.cpp:367:6:367:16 | test_strdup | (char *) | | make_uppercase | 0 |
@@ -8813,6 +10269,9 @@ signatureMatches
| taint.cpp:379:6:379:17 | test_strndup | (int) | | X509_TRUST_get0 | 0 |
| taint.cpp:379:6:379:17 | test_strndup | (int) | | X509_TRUST_get_by_id | 0 |
| taint.cpp:379:6:379:17 | test_strndup | (int) | | X509_VERIFY_PARAM_get0 | 0 |
+| taint.cpp:379:6:379:17 | test_strndup | (int) | | c_tolower | 0 |
+| taint.cpp:379:6:379:17 | test_strndup | (int) | | c_toupper | 0 |
+| taint.cpp:379:6:379:17 | test_strndup | (int) | | curlx_sitouz | 0 |
| taint.cpp:379:6:379:17 | test_strndup | (int) | | evp_pkey_type2name | 0 |
| taint.cpp:379:6:379:17 | test_strndup | (int) | | ossl_cmp_bodytype_to_string | 0 |
| taint.cpp:379:6:379:17 | test_strndup | (int) | | ossl_tolower | 0 |
@@ -8820,6 +10279,12 @@ signatureMatches
| taint.cpp:379:6:379:17 | test_strndup | (int) | | sqlite3_compileoption_get | 0 |
| taint.cpp:379:6:379:17 | test_strndup | (int) | | sqlite3_errstr | 0 |
| taint.cpp:379:6:379:17 | test_strndup | (int) | | tls13_alert_code | 0 |
+| taint.cpp:379:6:379:17 | test_strndup | (int) | | uv__accept | 0 |
+| taint.cpp:379:6:379:17 | test_strndup | (int) | | uv_err_name | 0 |
+| taint.cpp:379:6:379:17 | test_strndup | (int) | | uv_get_osfhandle | 0 |
+| taint.cpp:379:6:379:17 | test_strndup | (int) | | uv_strerror | 0 |
+| taint.cpp:379:6:379:17 | test_strndup | (int) | | uv_translate_sys_error | 0 |
+| taint.cpp:379:6:379:17 | test_strndup | (int) | | zError | 0 |
| taint.cpp:387:6:387:16 | test_wcsdup | (wchar_t *) | CStringT | CStringT | 0 |
| taint.cpp:397:6:397:17 | test_strdupa | (char *) | | SRP_VBASE_new | 0 |
| taint.cpp:397:6:397:17 | test_strdupa | (char *) | | defossilize | 0 |
@@ -8844,6 +10309,9 @@ signatureMatches
| taint.cpp:409:6:409:18 | test_strndupa | (int) | | X509_TRUST_get0 | 0 |
| taint.cpp:409:6:409:18 | test_strndupa | (int) | | X509_TRUST_get_by_id | 0 |
| taint.cpp:409:6:409:18 | test_strndupa | (int) | | X509_VERIFY_PARAM_get0 | 0 |
+| taint.cpp:409:6:409:18 | test_strndupa | (int) | | c_tolower | 0 |
+| taint.cpp:409:6:409:18 | test_strndupa | (int) | | c_toupper | 0 |
+| taint.cpp:409:6:409:18 | test_strndupa | (int) | | curlx_sitouz | 0 |
| taint.cpp:409:6:409:18 | test_strndupa | (int) | | evp_pkey_type2name | 0 |
| taint.cpp:409:6:409:18 | test_strndupa | (int) | | ossl_cmp_bodytype_to_string | 0 |
| taint.cpp:409:6:409:18 | test_strndupa | (int) | | ossl_tolower | 0 |
@@ -8851,6 +10319,12 @@ signatureMatches
| taint.cpp:409:6:409:18 | test_strndupa | (int) | | sqlite3_compileoption_get | 0 |
| taint.cpp:409:6:409:18 | test_strndupa | (int) | | sqlite3_errstr | 0 |
| taint.cpp:409:6:409:18 | test_strndupa | (int) | | tls13_alert_code | 0 |
+| taint.cpp:409:6:409:18 | test_strndupa | (int) | | uv__accept | 0 |
+| taint.cpp:409:6:409:18 | test_strndupa | (int) | | uv_err_name | 0 |
+| taint.cpp:409:6:409:18 | test_strndupa | (int) | | uv_get_osfhandle | 0 |
+| taint.cpp:409:6:409:18 | test_strndupa | (int) | | uv_strerror | 0 |
+| taint.cpp:409:6:409:18 | test_strndupa | (int) | | uv_translate_sys_error | 0 |
+| taint.cpp:409:6:409:18 | test_strndupa | (int) | | zError | 0 |
| taint.cpp:421:2:421:9 | MyClass2 | (int) | | ASN1_STRING_type_new | 0 |
| taint.cpp:421:2:421:9 | MyClass2 | (int) | | ASN1_tag2bit | 0 |
| taint.cpp:421:2:421:9 | MyClass2 | (int) | | ASN1_tag2str | 0 |
@@ -8869,6 +10343,9 @@ signatureMatches
| taint.cpp:421:2:421:9 | MyClass2 | (int) | | X509_TRUST_get0 | 0 |
| taint.cpp:421:2:421:9 | MyClass2 | (int) | | X509_TRUST_get_by_id | 0 |
| taint.cpp:421:2:421:9 | MyClass2 | (int) | | X509_VERIFY_PARAM_get0 | 0 |
+| taint.cpp:421:2:421:9 | MyClass2 | (int) | | c_tolower | 0 |
+| taint.cpp:421:2:421:9 | MyClass2 | (int) | | c_toupper | 0 |
+| taint.cpp:421:2:421:9 | MyClass2 | (int) | | curlx_sitouz | 0 |
| taint.cpp:421:2:421:9 | MyClass2 | (int) | | evp_pkey_type2name | 0 |
| taint.cpp:421:2:421:9 | MyClass2 | (int) | | ossl_cmp_bodytype_to_string | 0 |
| taint.cpp:421:2:421:9 | MyClass2 | (int) | | ossl_tolower | 0 |
@@ -8876,6 +10353,12 @@ signatureMatches
| taint.cpp:421:2:421:9 | MyClass2 | (int) | | sqlite3_compileoption_get | 0 |
| taint.cpp:421:2:421:9 | MyClass2 | (int) | | sqlite3_errstr | 0 |
| taint.cpp:421:2:421:9 | MyClass2 | (int) | | tls13_alert_code | 0 |
+| taint.cpp:421:2:421:9 | MyClass2 | (int) | | uv__accept | 0 |
+| taint.cpp:421:2:421:9 | MyClass2 | (int) | | uv_err_name | 0 |
+| taint.cpp:421:2:421:9 | MyClass2 | (int) | | uv_get_osfhandle | 0 |
+| taint.cpp:421:2:421:9 | MyClass2 | (int) | | uv_strerror | 0 |
+| taint.cpp:421:2:421:9 | MyClass2 | (int) | | uv_translate_sys_error | 0 |
+| taint.cpp:421:2:421:9 | MyClass2 | (int) | | zError | 0 |
| taint.cpp:422:7:422:15 | setMember | (int) | | ASN1_STRING_type_new | 0 |
| taint.cpp:422:7:422:15 | setMember | (int) | | ASN1_tag2bit | 0 |
| taint.cpp:422:7:422:15 | setMember | (int) | | ASN1_tag2str | 0 |
@@ -8894,6 +10377,9 @@ signatureMatches
| taint.cpp:422:7:422:15 | setMember | (int) | | X509_TRUST_get0 | 0 |
| taint.cpp:422:7:422:15 | setMember | (int) | | X509_TRUST_get_by_id | 0 |
| taint.cpp:422:7:422:15 | setMember | (int) | | X509_VERIFY_PARAM_get0 | 0 |
+| taint.cpp:422:7:422:15 | setMember | (int) | | c_tolower | 0 |
+| taint.cpp:422:7:422:15 | setMember | (int) | | c_toupper | 0 |
+| taint.cpp:422:7:422:15 | setMember | (int) | | curlx_sitouz | 0 |
| taint.cpp:422:7:422:15 | setMember | (int) | | evp_pkey_type2name | 0 |
| taint.cpp:422:7:422:15 | setMember | (int) | | ossl_cmp_bodytype_to_string | 0 |
| taint.cpp:422:7:422:15 | setMember | (int) | | ossl_tolower | 0 |
@@ -8901,7 +10387,16 @@ signatureMatches
| taint.cpp:422:7:422:15 | setMember | (int) | | sqlite3_compileoption_get | 0 |
| taint.cpp:422:7:422:15 | setMember | (int) | | sqlite3_errstr | 0 |
| taint.cpp:422:7:422:15 | setMember | (int) | | tls13_alert_code | 0 |
+| taint.cpp:422:7:422:15 | setMember | (int) | | uv__accept | 0 |
+| taint.cpp:422:7:422:15 | setMember | (int) | | uv_err_name | 0 |
+| taint.cpp:422:7:422:15 | setMember | (int) | | uv_get_osfhandle | 0 |
+| taint.cpp:422:7:422:15 | setMember | (int) | | uv_strerror | 0 |
+| taint.cpp:422:7:422:15 | setMember | (int) | | uv_translate_sys_error | 0 |
+| taint.cpp:422:7:422:15 | setMember | (int) | | zError | 0 |
| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | BIO_gethostbyname | 0 |
+| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | Curl_copy_header_value | 0 |
+| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | Curl_get_scheme_handler | 0 |
+| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | Curl_getdate_capped | 0 |
| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | Jim_StrDup | 0 |
| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | OPENSSL_LH_strhash | 0 |
| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 |
@@ -8912,11 +10407,18 @@ signatureMatches
| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | X509_LOOKUP_meth_new | 0 |
| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | a2i_IPADDRESS | 0 |
| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | a2i_IPADDRESS_NC | 0 |
+| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | last_component | 0 |
| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | opt_path_end | 0 |
| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | opt_progname | 0 |
| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | ossl_lh_strcasehash | 0 |
| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | strhash | 0 |
+| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | uc_script_byname | 0 |
+| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | uv__strdup | 0 |
+| taint.cpp:430:2:430:9 | MyClass3 | (const char *) | | uv_wtf8_length_as_utf16 | 0 |
| taint.cpp:431:7:431:15 | setString | (const char *) | | BIO_gethostbyname | 0 |
+| taint.cpp:431:7:431:15 | setString | (const char *) | | Curl_copy_header_value | 0 |
+| taint.cpp:431:7:431:15 | setString | (const char *) | | Curl_get_scheme_handler | 0 |
+| taint.cpp:431:7:431:15 | setString | (const char *) | | Curl_getdate_capped | 0 |
| taint.cpp:431:7:431:15 | setString | (const char *) | | Jim_StrDup | 0 |
| taint.cpp:431:7:431:15 | setString | (const char *) | | OPENSSL_LH_strhash | 0 |
| taint.cpp:431:7:431:15 | setString | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 |
@@ -8927,10 +10429,15 @@ signatureMatches
| taint.cpp:431:7:431:15 | setString | (const char *) | | X509_LOOKUP_meth_new | 0 |
| taint.cpp:431:7:431:15 | setString | (const char *) | | a2i_IPADDRESS | 0 |
| taint.cpp:431:7:431:15 | setString | (const char *) | | a2i_IPADDRESS_NC | 0 |
+| taint.cpp:431:7:431:15 | setString | (const char *) | | last_component | 0 |
| taint.cpp:431:7:431:15 | setString | (const char *) | | opt_path_end | 0 |
| taint.cpp:431:7:431:15 | setString | (const char *) | | opt_progname | 0 |
| taint.cpp:431:7:431:15 | setString | (const char *) | | ossl_lh_strcasehash | 0 |
| taint.cpp:431:7:431:15 | setString | (const char *) | | strhash | 0 |
+| taint.cpp:431:7:431:15 | setString | (const char *) | | uc_script_byname | 0 |
+| taint.cpp:431:7:431:15 | setString | (const char *) | | uv__strdup | 0 |
+| taint.cpp:431:7:431:15 | setString | (const char *) | | uv_wtf8_length_as_utf16 | 0 |
+| taint.cpp:500:5:500:12 | getdelim | (URLGlob **,char *,curl_off_t *,FILE *) | | glob_url | 3 |
| taint.cpp:512:7:512:12 | strtok | (ASN1_GENERALIZEDTIME *,const char *) | | ASN1_GENERALIZEDTIME_set_string | 1 |
| taint.cpp:512:7:512:12 | strtok | (ASN1_TIME *,const char *) | | ASN1_TIME_set_string | 1 |
| taint.cpp:512:7:512:12 | strtok | (ASN1_TIME *,const char *) | | ASN1_TIME_set_string_X509 | 1 |
@@ -8940,6 +10447,9 @@ signatureMatches
| taint.cpp:512:7:512:12 | strtok | (BIGNUM **,const char *) | | BN_hex2bn | 1 |
| taint.cpp:512:7:512:12 | strtok | (CONF *,const char *) | | TS_CONF_get_tsa_section | 1 |
| taint.cpp:512:7:512:12 | strtok | (CONF *,const char *) | | _CONF_new_section | 1 |
+| taint.cpp:512:7:512:12 | strtok | (CURLU *,const char *) | | Curl_url_set_authority | 1 |
+| taint.cpp:512:7:512:12 | strtok | (Curl_easy *,const char *) | | Curl_cwriter_get_by_name | 1 |
+| taint.cpp:512:7:512:12 | strtok | (Curl_easy *,const char *) | | Curl_rtsp_parseheader | 1 |
| taint.cpp:512:7:512:12 | strtok | (DH_METHOD *,const char *) | | DH_meth_set1_name | 1 |
| taint.cpp:512:7:512:12 | strtok | (DSA_METHOD *,const char *) | | DSA_meth_set1_name | 1 |
| taint.cpp:512:7:512:12 | strtok | (DSO *,const char *) | | DSO_convert_filename | 1 |
@@ -8950,10 +10460,14 @@ signatureMatches
| taint.cpp:512:7:512:12 | strtok | (EVP_PKEY *,const char *) | | CTLOG_new | 1 |
| taint.cpp:512:7:512:12 | strtok | (EVP_PKEY_CTX *,const char *) | | app_paramgen | 1 |
| taint.cpp:512:7:512:12 | strtok | (EVP_PKEY_CTX *,const char *) | | pkey_ctrl_string | 1 |
+| taint.cpp:512:7:512:12 | strtok | (GlobalConfig *,const char *) | | setvariable | 1 |
| taint.cpp:512:7:512:12 | strtok | (Jim_Interp *,const char *) | | Jim_Eval | 1 |
| taint.cpp:512:7:512:12 | strtok | (Jim_Interp *,const char *) | | Jim_EvalFile | 1 |
| taint.cpp:512:7:512:12 | strtok | (Jim_Interp *,const char *) | | Jim_EvalFileGlobal | 1 |
| taint.cpp:512:7:512:12 | strtok | (Jim_Interp *,const char *) | | Jim_EvalGlobal | 1 |
+| taint.cpp:512:7:512:12 | strtok | (LIBSSH2_AGENT *,const char *) | | libssh2_agent_set_identity_path | 1 |
+| taint.cpp:512:7:512:12 | strtok | (LIBSSH2_SESSION *,const char *) | | libssh2_banner_set | 1 |
+| taint.cpp:512:7:512:12 | strtok | (LIBSSH2_SESSION *,const char *) | | libssh2_session_banner_set | 1 |
| taint.cpp:512:7:512:12 | strtok | (OPENSSL_DIR_CTX **,const char *) | | OPENSSL_DIR_read | 1 |
| taint.cpp:512:7:512:12 | strtok | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_appname | 1 |
| taint.cpp:512:7:512:12 | strtok | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_filename | 1 |
@@ -9010,19 +10524,41 @@ signatureMatches
| taint.cpp:512:7:512:12 | strtok | (X509_REQ *,const char *) | | x509_req_ctrl_string | 1 |
| taint.cpp:512:7:512:12 | strtok | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_ip_asc | 1 |
| taint.cpp:512:7:512:12 | strtok | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_name | 1 |
+| taint.cpp:512:7:512:12 | strtok | (char **,const char *) | | Curl_setstropt | 1 |
| taint.cpp:512:7:512:12 | strtok | (const OSSL_PARAM *,const char *) | | OSSL_PARAM_locate_const | 1 |
+| taint.cpp:512:7:512:12 | strtok | (const char **,const char *) | | uv__utf8_decode1 | 1 |
| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | Configcmp | 1 |
+| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | Curl_timestrcmp | 1 |
| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | DES_crypt | 1 |
| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | OPENSSL_strcasecmp | 1 |
+| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | c_strcasecmp | 1 |
| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | get_passwd | 1 |
+| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | gzopen | 1 |
+| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | gzopen64 | 1 |
| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | openssl_fopen | 1 |
| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | ossl_pem_check_suffix | 1 |
| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | ossl_v3_name_cmp | 1 |
| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | sqlite3_strglob | 1 |
| taint.cpp:512:7:512:12 | strtok | (const char *,const char *) | | sqlite3_stricmp | 1 |
+| taint.cpp:512:7:512:12 | strtok | (curl_mimepart *,const char *) | | curl_mime_filedata | 1 |
+| taint.cpp:512:7:512:12 | strtok | (curl_off_t *,const char *) | | str2offset | 1 |
+| taint.cpp:512:7:512:12 | strtok | (curl_pushheaders *,const char *) | | curl_pushheader_byname | 1 |
+| taint.cpp:512:7:512:12 | strtok | (curl_slist **,const char *) | | add2list | 1 |
+| taint.cpp:512:7:512:12 | strtok | (curl_slist *,const char *) | | curl_slist_append | 1 |
+| taint.cpp:512:7:512:12 | strtok | (dynbuf *,const char *) | | Curl_dyn_add | 1 |
+| taint.cpp:512:7:512:12 | strtok | (dynbuf *,const char *) | | curlx_dyn_add | 1 |
+| taint.cpp:512:7:512:12 | strtok | (dynhds *,const char *) | | Curl_dynhds_cget | 1 |
+| taint.cpp:512:7:512:12 | strtok | (dynhds *,const char *) | | Curl_dynhds_h1_cadd_line | 1 |
+| taint.cpp:512:7:512:12 | strtok | (gzFile,const char *) | | gzputs | 1 |
| taint.cpp:512:7:512:12 | strtok | (int,const char *) | | BIO_meth_new | 1 |
+| taint.cpp:512:7:512:12 | strtok | (int,const char *) | | gzdopen | 1 |
| taint.cpp:512:7:512:12 | strtok | (lemon *,const char *) | | file_makename | 1 |
+| taint.cpp:512:7:512:12 | strtok | (long *,const char *) | | secs2ms | 1 |
+| taint.cpp:512:7:512:12 | strtok | (long *,const char *) | | str2num | 1 |
+| taint.cpp:512:7:512:12 | strtok | (long *,const char *) | | str2unum | 1 |
| taint.cpp:512:7:512:12 | strtok | (size_t *,const char *) | | next_protos_parse | 1 |
+| taint.cpp:512:7:512:12 | strtok | (slist_wc **,const char *) | | easysrc_add | 1 |
+| taint.cpp:512:7:512:12 | strtok | (slist_wc *,const char *) | | slist_wc_append | 1 |
| taint.cpp:512:7:512:12 | strtok | (sqlite3 *,const char *) | | sqlite3_declare_vtab | 1 |
| taint.cpp:512:7:512:12 | strtok | (sqlite3 *,const char *) | | sqlite3_get_clientdata | 1 |
| taint.cpp:512:7:512:12 | strtok | (sqlite3 *,const char *) | | sqlite3_wal_checkpoint | 1 |
@@ -9033,6 +10569,7 @@ signatureMatches
| taint.cpp:512:7:512:12 | strtok | (unsigned char *,const char *) | | ossl_a2i_ipadd | 1 |
| taint.cpp:512:7:512:12 | strtok | (unsigned long *,const char *) | | set_cert_ex | 1 |
| taint.cpp:512:7:512:12 | strtok | (unsigned long *,const char *) | | set_name_ex | 1 |
+| taint.cpp:512:7:512:12 | strtok | (uv_pipe_t *,const char *) | | uv_pipe_bind | 1 |
| taint.cpp:514:6:514:16 | test_strtok | (char *) | | SRP_VBASE_new | 0 |
| taint.cpp:514:6:514:16 | test_strtok | (char *) | | defossilize | 0 |
| taint.cpp:514:6:514:16 | test_strtok | (char *) | | make_uppercase | 0 |
@@ -9056,6 +10593,8 @@ signatureMatches
| taint.cpp:523:7:523:13 | _strset | (BIO *,int) | | TXT_DB_read | 1 |
| taint.cpp:523:7:523:13 | _strset | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 |
| taint.cpp:523:7:523:13 | _strset | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 |
+| taint.cpp:523:7:523:13 | _strset | (CURL *,int) | | curl_easy_pause | 1 |
+| taint.cpp:523:7:523:13 | _strset | (Curl_easy *,int) | | Curl_conn_get_socket | 1 |
| taint.cpp:523:7:523:13 | _strset | (DH *,int) | | DH_clear_flags | 1 |
| taint.cpp:523:7:523:13 | _strset | (DH *,int) | | DH_set_flags | 1 |
| taint.cpp:523:7:523:13 | _strset | (DH_METHOD *,int) | | DH_meth_set_flags | 1 |
@@ -9099,6 +10638,17 @@ signatureMatches
| taint.cpp:523:7:523:13 | _strset | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 |
| taint.cpp:523:7:523:13 | _strset | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 |
| taint.cpp:523:7:523:13 | _strset | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 |
+| taint.cpp:523:7:523:13 | _strset | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 |
+| taint.cpp:523:7:523:13 | _strset | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 |
+| taint.cpp:523:7:523:13 | _strset | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 |
+| taint.cpp:523:7:523:13 | _strset | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 |
+| taint.cpp:523:7:523:13 | _strset | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 |
+| taint.cpp:523:7:523:13 | _strset | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 |
+| taint.cpp:523:7:523:13 | _strset | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 |
+| taint.cpp:523:7:523:13 | _strset | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 |
+| taint.cpp:523:7:523:13 | _strset | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 |
+| taint.cpp:523:7:523:13 | _strset | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 |
+| taint.cpp:523:7:523:13 | _strset | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 |
| taint.cpp:523:7:523:13 | _strset | (LPCOLESTR,int) | CComBSTR | Append | 1 |
| taint.cpp:523:7:523:13 | _strset | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 |
| taint.cpp:523:7:523:13 | _strset | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 |
@@ -9216,9 +10766,12 @@ signatureMatches
| taint.cpp:523:7:523:13 | _strset | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 |
| taint.cpp:523:7:523:13 | _strset | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 |
| taint.cpp:523:7:523:13 | _strset | (acttab *,int) | | acttab_insert | 1 |
+| taint.cpp:523:7:523:13 | _strset | (char *,int) | | Curl_str2addr | 0 |
+| taint.cpp:523:7:523:13 | _strset | (char *,int) | | Curl_str2addr | 1 |
| taint.cpp:523:7:523:13 | _strset | (char *,int) | | PEM_proc_type | 0 |
| taint.cpp:523:7:523:13 | _strset | (char *,int) | | PEM_proc_type | 1 |
| taint.cpp:523:7:523:13 | _strset | (char,int) | CStringT | CStringT | 1 |
+| taint.cpp:523:7:523:13 | _strset | (connectdata *,int) | | Curl_conn_is_ssl | 1 |
| taint.cpp:523:7:523:13 | _strset | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 |
| taint.cpp:523:7:523:13 | _strset | (const BIGNUM *,int) | | BN_get_flags | 1 |
| taint.cpp:523:7:523:13 | _strset | (const BIGNUM *,int) | | BN_is_bit_set | 1 |
@@ -9285,12 +10838,22 @@ signatureMatches
| taint.cpp:523:7:523:13 | _strset | (const unsigned char *,int) | | Jim_GenHashFunction | 1 |
| taint.cpp:523:7:523:13 | _strset | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 |
| taint.cpp:523:7:523:13 | _strset | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 |
+| taint.cpp:523:7:523:13 | _strset | (dynhds *,int) | | Curl_dynhds_set_opts | 1 |
+| taint.cpp:523:7:523:13 | _strset | (gzFile,int) | | gzflush | 1 |
+| taint.cpp:523:7:523:13 | _strset | (gzFile,int) | | gzputc | 1 |
| taint.cpp:523:7:523:13 | _strset | (int *,int) | | X509_PURPOSE_set | 1 |
| taint.cpp:523:7:523:13 | _strset | (int *,int) | | X509_TRUST_set | 1 |
| taint.cpp:523:7:523:13 | _strset | (int,int) | | BN_security_bits | 1 |
| taint.cpp:523:7:523:13 | _strset | (int,int) | | EVP_MD_meth_new | 1 |
| taint.cpp:523:7:523:13 | _strset | (int,int) | | EVP_PKEY_meth_new | 1 |
| taint.cpp:523:7:523:13 | _strset | (int,int) | | acttab_alloc | 1 |
+| taint.cpp:523:7:523:13 | _strset | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 |
+| taint.cpp:523:7:523:13 | _strset | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 |
+| taint.cpp:523:7:523:13 | _strset | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 |
+| taint.cpp:523:7:523:13 | _strset | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 |
+| taint.cpp:523:7:523:13 | _strset | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 |
+| taint.cpp:523:7:523:13 | _strset | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 |
+| taint.cpp:523:7:523:13 | _strset | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 |
| taint.cpp:523:7:523:13 | _strset | (rule *,int) | | Configlist_add | 1 |
| taint.cpp:523:7:523:13 | _strset | (rule *,int) | | Configlist_addbasis | 1 |
| taint.cpp:523:7:523:13 | _strset | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 |
@@ -9325,9 +10888,11 @@ signatureMatches
| taint.cpp:523:7:523:13 | _strset | (unsigned char *,int) | | RAND_priv_bytes | 1 |
| taint.cpp:523:7:523:13 | _strset | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 |
| taint.cpp:523:7:523:13 | _strset | (unsigned short,int) | | dtls1_get_queue_priority | 1 |
+| taint.cpp:523:7:523:13 | _strset | (uv_env_item_t *,int) | | uv_os_free_environ | 1 |
| taint.cpp:523:7:523:13 | _strset | (void *,int) | | DSO_dsobyaddr | 1 |
| taint.cpp:523:7:523:13 | _strset | (void *,int) | | sqlite3_realloc | 1 |
| taint.cpp:523:7:523:13 | _strset | (wchar_t,int) | CStringT | CStringT | 1 |
+| taint.cpp:525:6:525:18 | test_strset_1 | (char **,char) | | Curl_str_single | 1 |
| taint.cpp:525:6:525:18 | test_strset_1 | (const CStringT &,char) | | operator+ | 1 |
| taint.cpp:531:6:531:18 | test_strset_2 | (char *) | | SRP_VBASE_new | 0 |
| taint.cpp:531:6:531:18 | test_strset_2 | (char *) | | defossilize | 0 |
@@ -9352,9 +10917,25 @@ signatureMatches
| taint.cpp:538:7:538:13 | mempcpy | (CMAC_CTX *,const void *,size_t) | | CMAC_Update | 1 |
| taint.cpp:538:7:538:13 | mempcpy | (CMAC_CTX *,const void *,size_t) | | CMAC_Update | 2 |
| taint.cpp:538:7:538:13 | mempcpy | (CMS_RecipientInfo *,const unsigned char *,size_t) | | CMS_RecipientInfo_kekri_id_cmp | 2 |
+| taint.cpp:538:7:538:13 | mempcpy | (Curl_easy *,unsigned char *,size_t) | | Curl_rand_alnum | 2 |
+| taint.cpp:538:7:538:13 | mempcpy | (Curl_easy *,unsigned char *,size_t) | | Curl_rand_bytes | 2 |
+| taint.cpp:538:7:538:13 | mempcpy | (Curl_easy *,unsigned char *,size_t) | | Curl_rand_hex | 2 |
| taint.cpp:538:7:538:13 | mempcpy | (DH *,const unsigned char *,size_t) | | ossl_dh_buf2key | 2 |
| taint.cpp:538:7:538:13 | mempcpy | (EC_GROUP *,const unsigned char *,size_t) | | EC_GROUP_set_seed | 2 |
| taint.cpp:538:7:538:13 | mempcpy | (EC_KEY *,const unsigned char *,size_t) | | ossl_ec_key_simple_oct2priv | 2 |
+| taint.cpp:538:7:538:13 | mempcpy | (EVP_MAC_CTX **,const void *,size_t) | | _libssh2_hmac_update | 1 |
+| taint.cpp:538:7:538:13 | mempcpy | (EVP_MAC_CTX **,const void *,size_t) | | _libssh2_hmac_update | 2 |
+| taint.cpp:538:7:538:13 | mempcpy | (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha1_init | 2 |
+| taint.cpp:538:7:538:13 | mempcpy | (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha256_init | 2 |
+| taint.cpp:538:7:538:13 | mempcpy | (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha512_init | 2 |
+| taint.cpp:538:7:538:13 | mempcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha1_update | 1 |
+| taint.cpp:538:7:538:13 | mempcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha1_update | 2 |
+| taint.cpp:538:7:538:13 | mempcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha256_update | 1 |
+| taint.cpp:538:7:538:13 | mempcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha256_update | 2 |
+| taint.cpp:538:7:538:13 | mempcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha384_update | 1 |
+| taint.cpp:538:7:538:13 | mempcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha384_update | 2 |
+| taint.cpp:538:7:538:13 | mempcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha512_update | 1 |
+| taint.cpp:538:7:538:13 | mempcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha512_update | 2 |
| taint.cpp:538:7:538:13 | mempcpy | (EVP_MD_CTX *,const unsigned char *,size_t) | | EVP_DigestVerifyFinal | 2 |
| taint.cpp:538:7:538:13 | mempcpy | (EVP_PKEY *,char *,size_t) | | EVP_PKEY_get_default_digest_name | 2 |
| taint.cpp:538:7:538:13 | mempcpy | (EVP_RAND_CTX *,unsigned char *,size_t) | | EVP_RAND_nonce | 2 |
@@ -9367,6 +10948,9 @@ signatureMatches
| taint.cpp:538:7:538:13 | mempcpy | (KECCAK1600_CTX *,const void *,size_t) | | ossl_sha3_update | 2 |
| taint.cpp:538:7:538:13 | mempcpy | (KECCAK1600_CTX *,unsigned char *,size_t) | | ossl_sha3_squeeze | 2 |
| taint.cpp:538:7:538:13 | mempcpy | (KECCAK1600_CTX *,unsigned char,size_t) | | ossl_sha3_init | 2 |
+| taint.cpp:538:7:538:13 | mempcpy | (LIBSSH2_CHANNEL *,const char *,size_t) | | libssh2_channel_signal_ex | 2 |
+| taint.cpp:538:7:538:13 | mempcpy | (LIBSSH2_SFTP_HANDLE *,char *,size_t) | | libssh2_sftp_read | 2 |
+| taint.cpp:538:7:538:13 | mempcpy | (LIBSSH2_SFTP_HANDLE *,const char *,size_t) | | libssh2_sftp_write | 2 |
| taint.cpp:538:7:538:13 | mempcpy | (MD4_CTX *,const void *,size_t) | | MD4_Update | 1 |
| taint.cpp:538:7:538:13 | mempcpy | (MD4_CTX *,const void *,size_t) | | MD4_Update | 2 |
| taint.cpp:538:7:538:13 | mempcpy | (MD4_CTX *,const void *,size_t) | | md4_block_data_order | 1 |
@@ -9378,6 +10962,7 @@ signatureMatches
| taint.cpp:538:7:538:13 | mempcpy | (MDC2_CTX *,const unsigned char *,size_t) | | MDC2_Update | 2 |
| taint.cpp:538:7:538:13 | mempcpy | (ML_DSA_KEY *,const uint8_t *,size_t) | | ossl_ml_dsa_pk_decode | 2 |
| taint.cpp:538:7:538:13 | mempcpy | (ML_DSA_KEY *,const uint8_t *,size_t) | | ossl_ml_dsa_sk_decode | 2 |
+| taint.cpp:538:7:538:13 | mempcpy | (MemoryManager *,const uint8_t *,size_t) | | CreatePreparedDictionary | 2 |
| taint.cpp:538:7:538:13 | mempcpy | (OCB128_CONTEXT *,const unsigned char *,size_t) | | CRYPTO_ocb128_aad | 2 |
| taint.cpp:538:7:538:13 | mempcpy | (OCB128_CONTEXT *,unsigned char *,size_t) | | CRYPTO_ocb128_tag | 2 |
| taint.cpp:538:7:538:13 | mempcpy | (OSSL_HPKE_CTX *,const unsigned char *,size_t) | | OSSL_HPKE_CTX_set1_ikme | 2 |
@@ -9465,8 +11050,16 @@ signatureMatches
| taint.cpp:538:7:538:13 | mempcpy | (X509_VERIFY_PARAM *,const char *,size_t) | | X509_VERIFY_PARAM_set1_email | 2 |
| taint.cpp:538:7:538:13 | mempcpy | (X509_VERIFY_PARAM *,const char *,size_t) | | X509_VERIFY_PARAM_set1_host | 2 |
| taint.cpp:538:7:538:13 | mempcpy | (X509_VERIFY_PARAM *,const unsigned char *,size_t) | | X509_VERIFY_PARAM_set1_ip | 2 |
+| taint.cpp:538:7:538:13 | mempcpy | (bufc_pool *,size_t,size_t) | | Curl_bufcp_init | 2 |
+| taint.cpp:538:7:538:13 | mempcpy | (bufq *,size_t,size_t) | | Curl_bufq_init | 2 |
+| taint.cpp:538:7:538:13 | mempcpy | (bufref *,const void *,size_t) | | Curl_bufref_memdup | 1 |
+| taint.cpp:538:7:538:13 | mempcpy | (bufref *,const void *,size_t) | | Curl_bufref_memdup | 2 |
+| taint.cpp:538:7:538:13 | mempcpy | (char **,size_t *,size_t) | | Curl_str_number | 2 |
+| taint.cpp:538:7:538:13 | mempcpy | (char *,const char *,size_t) | | Curl_strntolower | 2 |
+| taint.cpp:538:7:538:13 | mempcpy | (char *,const char *,size_t) | | Curl_strntoupper | 2 |
| taint.cpp:538:7:538:13 | mempcpy | (char *,const char *,size_t) | | OPENSSL_strlcat | 2 |
| taint.cpp:538:7:538:13 | mempcpy | (char *,const char *,size_t) | | OPENSSL_strlcpy | 2 |
+| taint.cpp:538:7:538:13 | mempcpy | (char *,const char *,size_t) | | uv__strscpy | 2 |
| taint.cpp:538:7:538:13 | mempcpy | (const CTLOG_STORE *,const uint8_t *,size_t) | | CTLOG_STORE_get0_log_by_id | 2 |
| taint.cpp:538:7:538:13 | mempcpy | (const EC_KEY *,unsigned char *,size_t) | | ossl_ec_key_simple_priv2oct | 2 |
| taint.cpp:538:7:538:13 | mempcpy | (const EVP_MD *,const OSSL_ITEM *,size_t) | | ossl_digest_md_to_nid | 2 |
@@ -9480,20 +11073,64 @@ signatureMatches
| taint.cpp:538:7:538:13 | mempcpy | (const SSL_SESSION *,unsigned char *,size_t) | | SSL_SESSION_get_master_key | 2 |
| taint.cpp:538:7:538:13 | mempcpy | (const char *,char **,size_t) | | OSSL_PARAM_construct_utf8_ptr | 2 |
| taint.cpp:538:7:538:13 | mempcpy | (const char *,char *,size_t) | | OSSL_PARAM_construct_utf8_string | 2 |
+| taint.cpp:538:7:538:13 | mempcpy | (const char *,char *,size_t) | | getpass_r | 2 |
| taint.cpp:538:7:538:13 | mempcpy | (const char *,const char *,size_t) | | OPENSSL_strncasecmp | 2 |
+| taint.cpp:538:7:538:13 | mempcpy | (const char *,const char *,size_t) | | c_strncasecmp | 2 |
+| taint.cpp:538:7:538:13 | mempcpy | (const char *,uint16_t *,size_t) | | uv_wtf8_to_utf16 | 2 |
| taint.cpp:538:7:538:13 | mempcpy | (const char *,unsigned char *,size_t) | | OSSL_PARAM_construct_BN | 2 |
| taint.cpp:538:7:538:13 | mempcpy | (const char *,void **,size_t) | | OSSL_PARAM_construct_octet_ptr | 2 |
| taint.cpp:538:7:538:13 | mempcpy | (const char *,void *,size_t) | | OSSL_PARAM_construct_octet_string | 2 |
+| taint.cpp:538:7:538:13 | mempcpy | (const char *,void *,size_t) | | uv__random_readpath | 2 |
+| taint.cpp:538:7:538:13 | mempcpy | (const sockaddr *,char *,size_t) | | uv_ip_name | 2 |
+| taint.cpp:538:7:538:13 | mempcpy | (const sockaddr_in6 *,char *,size_t) | | uv_ip6_name | 2 |
+| taint.cpp:538:7:538:13 | mempcpy | (const sockaddr_in *,char *,size_t) | | uv_ip4_name | 2 |
| taint.cpp:538:7:538:13 | mempcpy | (const unsigned char *,size_t,size_t) | | ossl_rand_pool_attach | 2 |
+| taint.cpp:538:7:538:13 | mempcpy | (const void *,const void *,size_t) | | chachapoly_timingsafe_bcmp | 1 |
+| taint.cpp:538:7:538:13 | mempcpy | (const void *,const void *,size_t) | | chachapoly_timingsafe_bcmp | 2 |
+| taint.cpp:538:7:538:13 | mempcpy | (curl_mimepart *,const char *,size_t) | | curl_mime_data | 2 |
| taint.cpp:538:7:538:13 | mempcpy | (curve448_scalar_t,const unsigned char *,size_t) | | ossl_curve448_scalar_decode_long | 2 |
+| taint.cpp:538:7:538:13 | mempcpy | (dynbuf *,const void *,size_t) | | Curl_dyn_addn | 1 |
+| taint.cpp:538:7:538:13 | mempcpy | (dynbuf *,const void *,size_t) | | Curl_dyn_addn | 2 |
+| taint.cpp:538:7:538:13 | mempcpy | (dynbuf *,const void *,size_t) | | curlx_dyn_addn | 1 |
+| taint.cpp:538:7:538:13 | mempcpy | (dynbuf *,const void *,size_t) | | curlx_dyn_addn | 2 |
+| taint.cpp:538:7:538:13 | mempcpy | (dynhds *,const char *,size_t) | | Curl_dynhds_get | 2 |
+| taint.cpp:538:7:538:13 | mempcpy | (dynhds *,const char *,size_t) | | Curl_dynhds_h1_add_line | 2 |
+| taint.cpp:538:7:538:13 | mempcpy | (dynhds *,size_t,size_t) | | Curl_dynhds_init | 2 |
+| taint.cpp:538:7:538:13 | mempcpy | (int *,const char *,size_t) | | Curl_http_decode_status | 2 |
| taint.cpp:538:7:538:13 | mempcpy | (int *,int *,size_t) | | EVP_PBE_get | 2 |
+| taint.cpp:538:7:538:13 | mempcpy | (int,char *,size_t) | | Curl_strerror | 2 |
+| taint.cpp:538:7:538:13 | mempcpy | (int,char *,size_t) | | uv_err_name_r | 2 |
+| taint.cpp:538:7:538:13 | mempcpy | (int,char *,size_t) | | uv_strerror_r | 2 |
+| taint.cpp:538:7:538:13 | mempcpy | (int,int,size_t) | | BrotliEncoderEstimatePeakMemoryUsage | 2 |
+| taint.cpp:538:7:538:13 | mempcpy | (nghttp2_buf *,uint8_t *,size_t) | | nghttp2_buf_wrap_init | 2 |
+| taint.cpp:538:7:538:13 | mempcpy | (nghttp2_extension *,nghttp2_origin_entry *,size_t) | | nghttp2_frame_origin_init | 2 |
+| taint.cpp:538:7:538:13 | mempcpy | (nghttp2_extpri *,const uint8_t *,size_t) | | nghttp2_extpri_parse_priority | 2 |
+| taint.cpp:538:7:538:13 | mempcpy | (nghttp2_extpri *,const uint8_t *,size_t) | | nghttp2_http_parse_priority | 2 |
+| taint.cpp:538:7:538:13 | mempcpy | (nghttp2_hd_deflater *,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_bound | 2 |
+| taint.cpp:538:7:538:13 | mempcpy | (nghttp2_session *,const uint8_t *,size_t) | | nghttp2_session_mem_recv | 2 |
+| taint.cpp:538:7:538:13 | mempcpy | (nghttp2_session *,const uint8_t *,size_t) | | nghttp2_session_mem_recv2 | 2 |
+| taint.cpp:538:7:538:13 | mempcpy | (nghttp2_session *,int32_t,size_t) | | nghttp2_session_consume | 2 |
+| taint.cpp:538:7:538:13 | mempcpy | (nghttp2_session *,nghttp2_settings_entry *,size_t) | | nghttp2_session_update_local_settings | 2 |
+| taint.cpp:538:7:538:13 | mempcpy | (nghttp2_settings *,nghttp2_settings_entry *,size_t) | | nghttp2_frame_unpack_settings_payload | 2 |
+| taint.cpp:538:7:538:13 | mempcpy | (sfparse_parser *,const uint8_t *,size_t) | | sfparse_parser_init | 2 |
| taint.cpp:538:7:538:13 | mempcpy | (size_t,OSSL_QTX_IOVEC *,size_t) | | ossl_quic_sstream_adjust_iov | 2 |
| taint.cpp:538:7:538:13 | mempcpy | (stack_st_SCT **,const unsigned char **,size_t) | | o2i_SCT_LIST | 2 |
+| taint.cpp:538:7:538:13 | mempcpy | (ucs4_t *,const uint8_t *,size_t) | | u8_mbtouc_aux | 2 |
+| taint.cpp:538:7:538:13 | mempcpy | (uint8_t *,const nghttp2_settings_entry *,size_t) | | nghttp2_frame_pack_settings_payload | 2 |
+| taint.cpp:538:7:538:13 | mempcpy | (uint8_t *,const void *,size_t) | | nghttp2_cpymem | 1 |
+| taint.cpp:538:7:538:13 | mempcpy | (uint8_t *,const void *,size_t) | | nghttp2_cpymem | 2 |
+| taint.cpp:538:7:538:13 | mempcpy | (unsigned char **,const char *,size_t) | | _libssh2_store_str | 2 |
+| taint.cpp:538:7:538:13 | mempcpy | (unsigned char **,const unsigned char *,size_t) | | _libssh2_store_bignum2_bytes | 2 |
| taint.cpp:538:7:538:13 | mempcpy | (unsigned char *,const unsigned char *,size_t) | | BUF_reverse | 2 |
| taint.cpp:538:7:538:13 | mempcpy | (unsigned char *,int,unsigned long) | | UTF8_putc | 2 |
| taint.cpp:538:7:538:13 | mempcpy | (unsigned char *,size_t *,size_t) | | ossl_cipher_padblock | 2 |
| taint.cpp:538:7:538:13 | mempcpy | (unsigned char *,size_t *,size_t) | | ossl_cipher_unpadblock | 2 |
+| taint.cpp:538:7:538:13 | mempcpy | (uv_thread_t *,char *,size_t) | | uv__thread_getname | 2 |
+| taint.cpp:538:7:538:13 | mempcpy | (uv_thread_t *,char *,size_t) | | uv_thread_getaffinity | 2 |
+| taint.cpp:538:7:538:13 | mempcpy | (uv_thread_t *,char *,size_t) | | uv_thread_getname | 2 |
+| taint.cpp:538:7:538:13 | mempcpy | (void *,size_t,size_t) | | Curl_hash_str | 2 |
| taint.cpp:538:7:538:13 | mempcpy | (void *,unsigned char *,size_t) | | ossl_drbg_clear_seed | 2 |
+| taint.cpp:548:7:548:13 | memccpy | (BIGNUM **,EVP_PKEY *,const unsigned char *,size_t) | | _libssh2_ecdh_gen_k | 3 |
| taint.cpp:548:7:548:13 | memccpy | (BIGNUM *,BIGNUM *,const unsigned char **,size_t) | | ossl_decode_der_dsa_sig | 3 |
| taint.cpp:548:7:548:13 | memccpy | (BIO *,X509 *,unsigned long,unsigned long) | | X509_print_ex | 3 |
| taint.cpp:548:7:548:13 | memccpy | (BIO *,X509_ACERT *,unsigned long,unsigned long) | | X509_ACERT_print_ex | 3 |
@@ -9509,6 +11146,13 @@ signatureMatches
| taint.cpp:548:7:548:13 | memccpy | (GCM128_CONTEXT *,const unsigned char *,unsigned char *,size_t) | | CRYPTO_gcm128_decrypt | 3 |
| taint.cpp:548:7:548:13 | memccpy | (GCM128_CONTEXT *,const unsigned char *,unsigned char *,size_t) | | CRYPTO_gcm128_encrypt | 3 |
| taint.cpp:548:7:548:13 | memccpy | (KECCAK1600_CTX *,unsigned char,size_t,size_t) | | ossl_keccak_init | 3 |
+| taint.cpp:548:7:548:13 | memccpy | (LIBSSH2_CHANNEL *,int,char *,size_t) | | _libssh2_channel_read | 3 |
+| taint.cpp:548:7:548:13 | memccpy | (LIBSSH2_CHANNEL *,int,char *,size_t) | | libssh2_channel_read_ex | 3 |
+| taint.cpp:548:7:548:13 | memccpy | (LIBSSH2_CHANNEL *,int,const char *,size_t) | | libssh2_channel_write_ex | 3 |
+| taint.cpp:548:7:548:13 | memccpy | (LIBSSH2_CHANNEL *,int,const unsigned char *,size_t) | | _libssh2_channel_write | 3 |
+| taint.cpp:548:7:548:13 | memccpy | (MemoryManager *,HistogramCommand *,uint32_t *,size_t) | | BrotliHistogramReindexCommand | 3 |
+| taint.cpp:548:7:548:13 | memccpy | (MemoryManager *,HistogramDistance *,uint32_t *,size_t) | | BrotliHistogramReindexDistance | 3 |
+| taint.cpp:548:7:548:13 | memccpy | (MemoryManager *,HistogramLiteral *,uint32_t *,size_t) | | BrotliHistogramReindexLiteral | 3 |
| taint.cpp:548:7:548:13 | memccpy | (OCB128_CONTEXT *,const unsigned char *,unsigned char *,size_t) | | CRYPTO_ocb128_decrypt | 3 |
| taint.cpp:548:7:548:13 | memccpy | (OCB128_CONTEXT *,const unsigned char *,unsigned char *,size_t) | | CRYPTO_ocb128_encrypt | 3 |
| taint.cpp:548:7:548:13 | memccpy | (OSSL_HPKE_CTX *,const char *,const unsigned char *,size_t) | | OSSL_HPKE_CTX_set1_psk | 3 |
@@ -9545,16 +11189,31 @@ signatureMatches
| taint.cpp:548:7:548:13 | memccpy | (const ML_DSA_KEY *,int,const uint8_t *,size_t) | | ossl_ml_dsa_mu_init | 3 |
| taint.cpp:548:7:548:13 | memccpy | (const VECTOR *,uint32_t,uint8_t *,size_t) | | ossl_ml_dsa_w1_encode | 3 |
| taint.cpp:548:7:548:13 | memccpy | (const u128[16],uint8_t *,const uint8_t *,size_t) | | ossl_polyval_ghash_hash | 3 |
+| taint.cpp:548:7:548:13 | memccpy | (const unsigned char *,size_t,unsigned char *,size_t) | | Curl_hexencode | 3 |
| taint.cpp:548:7:548:13 | memccpy | (int *,X509 *,stack_st_X509 *,unsigned long) | | X509_chain_check_suiteb | 3 |
| taint.cpp:548:7:548:13 | memccpy | (int,ENGINE *,const unsigned char *,size_t) | | EVP_PKEY_new_raw_private_key | 3 |
| taint.cpp:548:7:548:13 | memccpy | (int,ENGINE *,const unsigned char *,size_t) | | EVP_PKEY_new_raw_public_key | 3 |
| taint.cpp:548:7:548:13 | memccpy | (int,const regex_t *,char *,size_t) | | jim_regerror | 3 |
+| taint.cpp:548:7:548:13 | memccpy | (int,const void *,char *,size_t) | | uv_inet_ntop | 3 |
| taint.cpp:548:7:548:13 | memccpy | (int,int,size_t,size_t) | | ossl_rand_pool_new | 3 |
+| taint.cpp:548:7:548:13 | memccpy | (nghttp2_extension *,int32_t,uint8_t *,size_t) | | nghttp2_frame_priority_update_init | 3 |
+| taint.cpp:548:7:548:13 | memccpy | (nghttp2_goaway *,const uint8_t *,uint8_t *,size_t) | | nghttp2_frame_unpack_goaway_payload | 3 |
+| taint.cpp:548:7:548:13 | memccpy | (nghttp2_hd_deflater *,nghttp2_bufs *,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_hd_bufs | 3 |
+| taint.cpp:548:7:548:13 | memccpy | (nghttp2_session *,int32_t,const nghttp2_nv *,size_t) | | nghttp2_submit_trailer | 3 |
+| taint.cpp:548:7:548:13 | memccpy | (nghttp2_session *,uint8_t,const nghttp2_settings_entry *,size_t) | | nghttp2_session_add_settings | 3 |
+| taint.cpp:548:7:548:13 | memccpy | (nghttp2_session *,uint8_t,const nghttp2_settings_entry *,size_t) | | nghttp2_submit_settings | 3 |
+| taint.cpp:548:7:548:13 | memccpy | (nghttp2_settings *,uint8_t,nghttp2_settings_entry *,size_t) | | nghttp2_frame_settings_init | 3 |
+| taint.cpp:548:7:548:13 | memccpy | (size_t,size_t,size_t,size_t) | | Curl_multi_handle | 3 |
| taint.cpp:548:7:548:13 | memccpy | (u64[2],const u128[16],const u8 *,size_t) | | ossl_gcm_ghash_4bit | 3 |
+| taint.cpp:548:7:548:13 | memccpy | (uint8_t *,size_t,const nghttp2_settings_entry *,size_t) | | nghttp2_pack_settings_payload | 3 |
+| taint.cpp:548:7:548:13 | memccpy | (uint8_t *,size_t,const nghttp2_settings_entry *,size_t) | | nghttp2_pack_settings_payload2 | 3 |
+| taint.cpp:548:7:548:13 | memccpy | (unsigned char *,const unsigned char *,const unsigned char *,size_t) | | _libssh2_xor_data | 3 |
+| taint.cpp:548:7:548:13 | memccpy | (unsigned char *,size_t,const unsigned char *,size_t) | | _libssh2_kex_agree_instr | 3 |
| taint.cpp:548:7:548:13 | memccpy | (unsigned long *,const unsigned long *,int,unsigned long) | | bn_mul_add_words | 2 |
| taint.cpp:548:7:548:13 | memccpy | (unsigned long *,const unsigned long *,int,unsigned long) | | bn_mul_add_words | 3 |
| taint.cpp:548:7:548:13 | memccpy | (unsigned long *,const unsigned long *,int,unsigned long) | | bn_mul_words | 2 |
| taint.cpp:548:7:548:13 | memccpy | (unsigned long *,const unsigned long *,int,unsigned long) | | bn_mul_words | 3 |
+| taint.cpp:548:7:548:13 | memccpy | (uv_thread_t *,char *,char *,size_t) | | uv_thread_setaffinity | 3 |
| taint.cpp:548:7:548:13 | memccpy | (void *,unsigned char *,size_t *,size_t) | | ossl_ccm_stream_final | 3 |
| taint.cpp:548:7:548:13 | memccpy | (void *,unsigned char *,size_t *,size_t) | | ossl_cipher_generic_block_final | 3 |
| taint.cpp:548:7:548:13 | memccpy | (void *,unsigned char *,size_t *,size_t) | | ossl_gcm_stream_final | 3 |
@@ -9567,6 +11226,9 @@ signatureMatches
| taint.cpp:558:7:558:12 | strcat | (BIGNUM **,const char *) | | BN_hex2bn | 1 |
| taint.cpp:558:7:558:12 | strcat | (CONF *,const char *) | | TS_CONF_get_tsa_section | 1 |
| taint.cpp:558:7:558:12 | strcat | (CONF *,const char *) | | _CONF_new_section | 1 |
+| taint.cpp:558:7:558:12 | strcat | (CURLU *,const char *) | | Curl_url_set_authority | 1 |
+| taint.cpp:558:7:558:12 | strcat | (Curl_easy *,const char *) | | Curl_cwriter_get_by_name | 1 |
+| taint.cpp:558:7:558:12 | strcat | (Curl_easy *,const char *) | | Curl_rtsp_parseheader | 1 |
| taint.cpp:558:7:558:12 | strcat | (DH_METHOD *,const char *) | | DH_meth_set1_name | 1 |
| taint.cpp:558:7:558:12 | strcat | (DSA_METHOD *,const char *) | | DSA_meth_set1_name | 1 |
| taint.cpp:558:7:558:12 | strcat | (DSO *,const char *) | | DSO_convert_filename | 1 |
@@ -9577,10 +11239,14 @@ signatureMatches
| taint.cpp:558:7:558:12 | strcat | (EVP_PKEY *,const char *) | | CTLOG_new | 1 |
| taint.cpp:558:7:558:12 | strcat | (EVP_PKEY_CTX *,const char *) | | app_paramgen | 1 |
| taint.cpp:558:7:558:12 | strcat | (EVP_PKEY_CTX *,const char *) | | pkey_ctrl_string | 1 |
+| taint.cpp:558:7:558:12 | strcat | (GlobalConfig *,const char *) | | setvariable | 1 |
| taint.cpp:558:7:558:12 | strcat | (Jim_Interp *,const char *) | | Jim_Eval | 1 |
| taint.cpp:558:7:558:12 | strcat | (Jim_Interp *,const char *) | | Jim_EvalFile | 1 |
| taint.cpp:558:7:558:12 | strcat | (Jim_Interp *,const char *) | | Jim_EvalFileGlobal | 1 |
| taint.cpp:558:7:558:12 | strcat | (Jim_Interp *,const char *) | | Jim_EvalGlobal | 1 |
+| taint.cpp:558:7:558:12 | strcat | (LIBSSH2_AGENT *,const char *) | | libssh2_agent_set_identity_path | 1 |
+| taint.cpp:558:7:558:12 | strcat | (LIBSSH2_SESSION *,const char *) | | libssh2_banner_set | 1 |
+| taint.cpp:558:7:558:12 | strcat | (LIBSSH2_SESSION *,const char *) | | libssh2_session_banner_set | 1 |
| taint.cpp:558:7:558:12 | strcat | (OPENSSL_DIR_CTX **,const char *) | | OPENSSL_DIR_read | 1 |
| taint.cpp:558:7:558:12 | strcat | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_appname | 1 |
| taint.cpp:558:7:558:12 | strcat | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_filename | 1 |
@@ -9637,19 +11303,41 @@ signatureMatches
| taint.cpp:558:7:558:12 | strcat | (X509_REQ *,const char *) | | x509_req_ctrl_string | 1 |
| taint.cpp:558:7:558:12 | strcat | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_ip_asc | 1 |
| taint.cpp:558:7:558:12 | strcat | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_name | 1 |
+| taint.cpp:558:7:558:12 | strcat | (char **,const char *) | | Curl_setstropt | 1 |
| taint.cpp:558:7:558:12 | strcat | (const OSSL_PARAM *,const char *) | | OSSL_PARAM_locate_const | 1 |
+| taint.cpp:558:7:558:12 | strcat | (const char **,const char *) | | uv__utf8_decode1 | 1 |
| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | Configcmp | 1 |
+| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | Curl_timestrcmp | 1 |
| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | DES_crypt | 1 |
| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | OPENSSL_strcasecmp | 1 |
+| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | c_strcasecmp | 1 |
| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | get_passwd | 1 |
+| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | gzopen | 1 |
+| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | gzopen64 | 1 |
| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | openssl_fopen | 1 |
| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | ossl_pem_check_suffix | 1 |
| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | ossl_v3_name_cmp | 1 |
| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | sqlite3_strglob | 1 |
| taint.cpp:558:7:558:12 | strcat | (const char *,const char *) | | sqlite3_stricmp | 1 |
+| taint.cpp:558:7:558:12 | strcat | (curl_mimepart *,const char *) | | curl_mime_filedata | 1 |
+| taint.cpp:558:7:558:12 | strcat | (curl_off_t *,const char *) | | str2offset | 1 |
+| taint.cpp:558:7:558:12 | strcat | (curl_pushheaders *,const char *) | | curl_pushheader_byname | 1 |
+| taint.cpp:558:7:558:12 | strcat | (curl_slist **,const char *) | | add2list | 1 |
+| taint.cpp:558:7:558:12 | strcat | (curl_slist *,const char *) | | curl_slist_append | 1 |
+| taint.cpp:558:7:558:12 | strcat | (dynbuf *,const char *) | | Curl_dyn_add | 1 |
+| taint.cpp:558:7:558:12 | strcat | (dynbuf *,const char *) | | curlx_dyn_add | 1 |
+| taint.cpp:558:7:558:12 | strcat | (dynhds *,const char *) | | Curl_dynhds_cget | 1 |
+| taint.cpp:558:7:558:12 | strcat | (dynhds *,const char *) | | Curl_dynhds_h1_cadd_line | 1 |
+| taint.cpp:558:7:558:12 | strcat | (gzFile,const char *) | | gzputs | 1 |
| taint.cpp:558:7:558:12 | strcat | (int,const char *) | | BIO_meth_new | 1 |
+| taint.cpp:558:7:558:12 | strcat | (int,const char *) | | gzdopen | 1 |
| taint.cpp:558:7:558:12 | strcat | (lemon *,const char *) | | file_makename | 1 |
+| taint.cpp:558:7:558:12 | strcat | (long *,const char *) | | secs2ms | 1 |
+| taint.cpp:558:7:558:12 | strcat | (long *,const char *) | | str2num | 1 |
+| taint.cpp:558:7:558:12 | strcat | (long *,const char *) | | str2unum | 1 |
| taint.cpp:558:7:558:12 | strcat | (size_t *,const char *) | | next_protos_parse | 1 |
+| taint.cpp:558:7:558:12 | strcat | (slist_wc **,const char *) | | easysrc_add | 1 |
+| taint.cpp:558:7:558:12 | strcat | (slist_wc *,const char *) | | slist_wc_append | 1 |
| taint.cpp:558:7:558:12 | strcat | (sqlite3 *,const char *) | | sqlite3_declare_vtab | 1 |
| taint.cpp:558:7:558:12 | strcat | (sqlite3 *,const char *) | | sqlite3_get_clientdata | 1 |
| taint.cpp:558:7:558:12 | strcat | (sqlite3 *,const char *) | | sqlite3_wal_checkpoint | 1 |
@@ -9660,12 +11348,16 @@ signatureMatches
| taint.cpp:558:7:558:12 | strcat | (unsigned char *,const char *) | | ossl_a2i_ipadd | 1 |
| taint.cpp:558:7:558:12 | strcat | (unsigned long *,const char *) | | set_cert_ex | 1 |
| taint.cpp:558:7:558:12 | strcat | (unsigned long *,const char *) | | set_name_ex | 1 |
+| taint.cpp:558:7:558:12 | strcat | (uv_pipe_t *,const char *) | | uv_pipe_bind | 1 |
| taint.cpp:560:6:560:16 | test_strcat | (PKCS7 *,int,long,char *) | | PKCS7_ctrl | 3 |
| taint.cpp:560:6:560:16 | test_strcat | (SSL_CTX *,srpsrvparm *,char *,char *) | | set_up_srp_verifier_file | 2 |
| taint.cpp:560:6:560:16 | test_strcat | (SSL_CTX *,srpsrvparm *,char *,char *) | | set_up_srp_verifier_file | 3 |
| taint.cpp:560:6:560:16 | test_strcat | (SSL_HMAC *,void *,size_t,char *) | | ssl_hmac_init | 3 |
| taint.cpp:560:6:560:16 | test_strcat | (SSL_HMAC *,void *,size_t,char *) | | ssl_hmac_old_init | 3 |
| taint.cpp:560:6:560:16 | test_strcat | (action **,e_action,symbol *,char *) | | Action_add | 3 |
+| taint.cpp:560:6:560:16 | test_strcat | (const char *,const char *,char *,char *) | | uv__idna_toascii | 2 |
+| taint.cpp:560:6:560:16 | test_strcat | (const char *,const char *,char *,char *) | | uv__idna_toascii | 3 |
+| taint.cpp:570:16:570:25 | _mbsncat_l | (..(*)(..),..(*)(..),..(*)(..),void *) | | libssh2_session_init_ex | 3 |
| taint.cpp:570:16:570:25 | _mbsncat_l | (BIO *,CMS_ContentInfo **,pem_password_cb *,void *) | | PEM_read_bio_CMS | 3 |
| taint.cpp:570:16:570:25 | _mbsncat_l | (BIO *,DH **,pem_password_cb *,void *) | | PEM_read_bio_DHparams | 3 |
| taint.cpp:570:16:570:25 | _mbsncat_l | (BIO *,DSA **,pem_password_cb *,void *) | | PEM_read_bio_DSAPrivateKey | 3 |
@@ -9693,6 +11385,9 @@ signatureMatches
| taint.cpp:570:16:570:25 | _mbsncat_l | (BIO *,X509_SIG **,pem_password_cb *,void *) | | PEM_read_bio_PKCS8 | 3 |
| taint.cpp:570:16:570:25 | _mbsncat_l | (BIO *,size_t,..(*)(..),void *) | | ossl_quic_demux_new | 3 |
| taint.cpp:570:16:570:25 | _mbsncat_l | (BIO *,stack_st_X509_INFO *,pem_password_cb *,void *) | | PEM_X509_INFO_read_bio | 3 |
+| taint.cpp:570:16:570:25 | _mbsncat_l | (BrotliDecoderStateInternal *,brotli_alloc_func,brotli_free_func,void *) | | BrotliDecoderStateInit | 3 |
+| taint.cpp:570:16:570:25 | _mbsncat_l | (Curl_easy *,connectdata *,Curl_cpool_conn_do_cb *,void *) | | Curl_cpool_do_locked | 3 |
+| taint.cpp:570:16:570:25 | _mbsncat_l | (Curl_hash *,void *,size_t,void *) | | Curl_hash_add | 3 |
| taint.cpp:570:16:570:25 | _mbsncat_l | (DSO *,int,long,void *) | | DSO_ctrl | 3 |
| taint.cpp:570:16:570:25 | _mbsncat_l | (EVP_CIPHER_CTX *,int,int,void *) | | EVP_CIPHER_CTX_ctrl | 2 |
| taint.cpp:570:16:570:25 | _mbsncat_l | (EVP_CIPHER_CTX *,int,int,void *) | | EVP_CIPHER_CTX_ctrl | 3 |
@@ -9725,6 +11420,7 @@ signatureMatches
| taint.cpp:570:16:570:25 | _mbsncat_l | (HT *,size_t,..(*)(..),void *) | | ossl_ht_filter | 3 |
| taint.cpp:570:16:570:25 | _mbsncat_l | (MD5_SHA1_CTX *,int,int,void *) | | ossl_md5_sha1_ctrl | 2 |
| taint.cpp:570:16:570:25 | _mbsncat_l | (MD5_SHA1_CTX *,int,int,void *) | | ossl_md5_sha1_ctrl | 3 |
+| taint.cpp:570:16:570:25 | _mbsncat_l | (MemoryManager *,brotli_alloc_func,brotli_free_func,void *) | | BrotliInitMemoryManager | 3 |
| taint.cpp:570:16:570:25 | _mbsncat_l | (OCB128_CONTEXT *,OCB128_CONTEXT *,void *,void *) | | CRYPTO_ocb128_copy_ctx | 3 |
| taint.cpp:570:16:570:25 | _mbsncat_l | (OPENSSL_LHASH *,OPENSSL_LH_DOALL_FUNCARG_THUNK,OPENSSL_LH_DOALL_FUNCARG,void *) | | OPENSSL_LH_doall_arg_thunk | 3 |
| taint.cpp:570:16:570:25 | _mbsncat_l | (OSSL_PROVIDER *,int,..(*)(..),void *) | | evp_names_do_all | 3 |
@@ -9750,8 +11446,14 @@ signatureMatches
| taint.cpp:570:16:570:25 | _mbsncat_l | (char *,int,int,void *) | | ossl_pw_pem_password | 3 |
| taint.cpp:570:16:570:25 | _mbsncat_l | (char *,int,int,void *) | | ossl_pw_pvk_password | 2 |
| taint.cpp:570:16:570:25 | _mbsncat_l | (char *,int,int,void *) | | ossl_pw_pvk_password | 3 |
+| taint.cpp:570:16:570:25 | _mbsncat_l | (char *,size_t,size_t,void *) | | Curl_ftp_parselist | 3 |
+| taint.cpp:570:16:570:25 | _mbsncat_l | (char *,size_t,size_t,void *) | | Curl_mime_read | 3 |
+| taint.cpp:570:16:570:25 | _mbsncat_l | (char *,size_t,size_t,void *) | | tool_header_cb | 3 |
+| taint.cpp:570:16:570:25 | _mbsncat_l | (char *,size_t,size_t,void *) | | tool_mime_stdin_read | 3 |
+| taint.cpp:570:16:570:25 | _mbsncat_l | (char *,size_t,size_t,void *) | | tool_read_cb | 3 |
| taint.cpp:570:16:570:25 | _mbsncat_l | (const OSSL_NAMEMAP *,int,..(*)(..),void *) | | ossl_namemap_doall_names | 3 |
| taint.cpp:570:16:570:25 | _mbsncat_l | (int,unsigned long,..(*)(..),void *) | | RSA_generate_key | 3 |
+| taint.cpp:570:16:570:25 | _mbsncat_l | (nghttp2_session *,const uint8_t *,size_t,void *) | | nghttp2_session_upgrade | 3 |
| taint.cpp:570:16:570:25 | _mbsncat_l | (sqlite3 *,const char *,..(*)(..),void *) | | sqlite3_recover_init_sql | 3 |
| taint.cpp:570:16:570:25 | _mbsncat_l | (sqlite3 *,const char *,..(*)(..),void *) | | sqlite3_rtree_geometry_callback | 3 |
| taint.cpp:570:16:570:25 | _mbsncat_l | (sqlite3 *,const char *,const sqlite3_module *,void *) | | sqlite3_create_module | 3 |
@@ -9761,11 +11463,15 @@ signatureMatches
| taint.cpp:570:16:570:25 | _mbsncat_l | (sqlite3 *,unsigned int,..(*)(..),void *) | | sqlite3_trace_v2 | 3 |
| taint.cpp:572:6:572:20 | test__mbsncat_l | (ENGINE *,const char *,long,void *,..(*)(..),int) | | ENGINE_ctrl_cmd | 5 |
| taint.cpp:572:6:572:20 | test__mbsncat_l | (ENGINE_TABLE **,ENGINE_CLEANUP_CB *,ENGINE *,const int *,int,int) | | engine_table_register | 5 |
+| taint.cpp:572:6:572:20 | test__mbsncat_l | (EVP_CIPHER_CTX **,..(*)(..),int,unsigned char *,size_t,int) | | _libssh2_cipher_crypt | 5 |
| taint.cpp:572:6:572:20 | test__mbsncat_l | (EVP_CIPHER_CTX *,const EVP_CIPHER *,ENGINE *,const unsigned char *,const unsigned char *,int) | | EVP_CipherInit_ex | 5 |
| taint.cpp:572:6:572:20 | test__mbsncat_l | (GENERAL_NAME *,const X509V3_EXT_METHOD *,X509V3_CTX *,int,const char *,int) | | a2i_GENERAL_NAME | 5 |
| taint.cpp:572:6:572:20 | test__mbsncat_l | (Jim_Interp *,Jim_Obj *,Jim_Obj *const *,int,Jim_Obj **,int) | | Jim_DictKeysVector | 5 |
| taint.cpp:572:6:572:20 | test__mbsncat_l | (Jim_Interp *,Jim_Obj *,Jim_Obj *const *,int,Jim_Obj *,int) | | Jim_SetDictKeysVector | 5 |
| taint.cpp:572:6:572:20 | test__mbsncat_l | (Jim_Interp *,Jim_Obj *,const char *const *,int *,const char *,int) | | Jim_GetEnum | 5 |
+| taint.cpp:572:6:572:20 | test__mbsncat_l | (LIBSSH2_KNOWNHOSTS *,libssh2_knownhost *,char *,size_t,size_t *,int) | | libssh2_knownhost_writeline | 5 |
+| taint.cpp:572:6:572:20 | test__mbsncat_l | (LIBSSH2_SFTP *,const char *,unsigned int,char *,unsigned int,int) | | libssh2_sftp_symlink_ex | 5 |
+| taint.cpp:572:6:572:20 | test__mbsncat_l | (LIBSSH2_SFTP *,const char *,unsigned int,unsigned long,long,int) | | libssh2_sftp_open_ex | 5 |
| taint.cpp:572:6:572:20 | test__mbsncat_l | (PKCS7 *,stack_st_X509 *,X509_STORE *,BIO *,BIO *,int) | | PKCS7_verify | 5 |
| taint.cpp:572:6:572:20 | test__mbsncat_l | (QUIC_STREAM_MAP *,..(*)(..),void *,QUIC_RXFC *,QUIC_RXFC *,int) | | ossl_quic_stream_map_init | 5 |
| taint.cpp:572:6:572:20 | test__mbsncat_l | (RSA *,const unsigned char *,const EVP_MD *,const EVP_MD *,const unsigned char *,int) | | RSA_verify_PKCS1_PSS_mgf1 | 5 |
@@ -9792,6 +11498,11 @@ signatureMatches
| taint.cpp:572:6:572:20 | test__mbsncat_l | (const unsigned char *,unsigned char *,size_t,const SEED_KEY_SCHEDULE *,unsigned char[16],int) | | SEED_cbc_encrypt | 5 |
| taint.cpp:572:6:572:20 | test__mbsncat_l | (const void *,const void *,int,int,..(*)(..),int) | | OBJ_bsearch_ex_ | 5 |
| taint.cpp:572:6:572:20 | test__mbsncat_l | (const void *,const void *,int,int,..(*)(..),int) | | ossl_bsearch | 5 |
+| taint.cpp:572:6:572:20 | test__mbsncat_l | (int,char **,gengetopt_args_info *,int,int,int) | | cmdline_parser2 | 5 |
+| taint.cpp:572:6:572:20 | test__mbsncat_l | (nghttp2_hd_inflater *,nghttp2_hd_nv *,int *,const uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd_nv | 5 |
+| taint.cpp:572:6:572:20 | test__mbsncat_l | (nghttp2_hd_inflater *,nghttp2_nv *,int *,const uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd2 | 5 |
+| taint.cpp:572:6:572:20 | test__mbsncat_l | (nghttp2_hd_inflater *,nghttp2_nv *,int *,const uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd3 | 5 |
+| taint.cpp:572:6:572:20 | test__mbsncat_l | (nghttp2_hd_inflater *,nghttp2_nv *,int *,uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd | 5 |
| taint.cpp:572:6:572:20 | test__mbsncat_l | (unsigned char *,int,const unsigned char *,int,const unsigned char *,int) | | RSA_padding_add_PKCS1_OAEP | 5 |
| taint.cpp:589:7:589:12 | strsep | (ASN1_GENERALIZEDTIME *,const char *) | | ASN1_GENERALIZEDTIME_set_string | 1 |
| taint.cpp:589:7:589:12 | strsep | (ASN1_TIME *,const char *) | | ASN1_TIME_set_string | 1 |
@@ -9802,6 +11513,9 @@ signatureMatches
| taint.cpp:589:7:589:12 | strsep | (BIGNUM **,const char *) | | BN_hex2bn | 1 |
| taint.cpp:589:7:589:12 | strsep | (CONF *,const char *) | | TS_CONF_get_tsa_section | 1 |
| taint.cpp:589:7:589:12 | strsep | (CONF *,const char *) | | _CONF_new_section | 1 |
+| taint.cpp:589:7:589:12 | strsep | (CURLU *,const char *) | | Curl_url_set_authority | 1 |
+| taint.cpp:589:7:589:12 | strsep | (Curl_easy *,const char *) | | Curl_cwriter_get_by_name | 1 |
+| taint.cpp:589:7:589:12 | strsep | (Curl_easy *,const char *) | | Curl_rtsp_parseheader | 1 |
| taint.cpp:589:7:589:12 | strsep | (DH_METHOD *,const char *) | | DH_meth_set1_name | 1 |
| taint.cpp:589:7:589:12 | strsep | (DSA_METHOD *,const char *) | | DSA_meth_set1_name | 1 |
| taint.cpp:589:7:589:12 | strsep | (DSO *,const char *) | | DSO_convert_filename | 1 |
@@ -9812,10 +11526,14 @@ signatureMatches
| taint.cpp:589:7:589:12 | strsep | (EVP_PKEY *,const char *) | | CTLOG_new | 1 |
| taint.cpp:589:7:589:12 | strsep | (EVP_PKEY_CTX *,const char *) | | app_paramgen | 1 |
| taint.cpp:589:7:589:12 | strsep | (EVP_PKEY_CTX *,const char *) | | pkey_ctrl_string | 1 |
+| taint.cpp:589:7:589:12 | strsep | (GlobalConfig *,const char *) | | setvariable | 1 |
| taint.cpp:589:7:589:12 | strsep | (Jim_Interp *,const char *) | | Jim_Eval | 1 |
| taint.cpp:589:7:589:12 | strsep | (Jim_Interp *,const char *) | | Jim_EvalFile | 1 |
| taint.cpp:589:7:589:12 | strsep | (Jim_Interp *,const char *) | | Jim_EvalFileGlobal | 1 |
| taint.cpp:589:7:589:12 | strsep | (Jim_Interp *,const char *) | | Jim_EvalGlobal | 1 |
+| taint.cpp:589:7:589:12 | strsep | (LIBSSH2_AGENT *,const char *) | | libssh2_agent_set_identity_path | 1 |
+| taint.cpp:589:7:589:12 | strsep | (LIBSSH2_SESSION *,const char *) | | libssh2_banner_set | 1 |
+| taint.cpp:589:7:589:12 | strsep | (LIBSSH2_SESSION *,const char *) | | libssh2_session_banner_set | 1 |
| taint.cpp:589:7:589:12 | strsep | (OPENSSL_DIR_CTX **,const char *) | | OPENSSL_DIR_read | 1 |
| taint.cpp:589:7:589:12 | strsep | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_appname | 1 |
| taint.cpp:589:7:589:12 | strsep | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_filename | 1 |
@@ -9872,19 +11590,42 @@ signatureMatches
| taint.cpp:589:7:589:12 | strsep | (X509_REQ *,const char *) | | x509_req_ctrl_string | 1 |
| taint.cpp:589:7:589:12 | strsep | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_ip_asc | 1 |
| taint.cpp:589:7:589:12 | strsep | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_name | 1 |
+| taint.cpp:589:7:589:12 | strsep | (char **,const char *) | | Curl_setstropt | 0 |
+| taint.cpp:589:7:589:12 | strsep | (char **,const char *) | | Curl_setstropt | 1 |
| taint.cpp:589:7:589:12 | strsep | (const OSSL_PARAM *,const char *) | | OSSL_PARAM_locate_const | 1 |
+| taint.cpp:589:7:589:12 | strsep | (const char **,const char *) | | uv__utf8_decode1 | 1 |
| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | Configcmp | 1 |
+| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | Curl_timestrcmp | 1 |
| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | DES_crypt | 1 |
| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | OPENSSL_strcasecmp | 1 |
+| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | c_strcasecmp | 1 |
| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | get_passwd | 1 |
+| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | gzopen | 1 |
+| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | gzopen64 | 1 |
| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | openssl_fopen | 1 |
| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | ossl_pem_check_suffix | 1 |
| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | ossl_v3_name_cmp | 1 |
| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | sqlite3_strglob | 1 |
| taint.cpp:589:7:589:12 | strsep | (const char *,const char *) | | sqlite3_stricmp | 1 |
+| taint.cpp:589:7:589:12 | strsep | (curl_mimepart *,const char *) | | curl_mime_filedata | 1 |
+| taint.cpp:589:7:589:12 | strsep | (curl_off_t *,const char *) | | str2offset | 1 |
+| taint.cpp:589:7:589:12 | strsep | (curl_pushheaders *,const char *) | | curl_pushheader_byname | 1 |
+| taint.cpp:589:7:589:12 | strsep | (curl_slist **,const char *) | | add2list | 1 |
+| taint.cpp:589:7:589:12 | strsep | (curl_slist *,const char *) | | curl_slist_append | 1 |
+| taint.cpp:589:7:589:12 | strsep | (dynbuf *,const char *) | | Curl_dyn_add | 1 |
+| taint.cpp:589:7:589:12 | strsep | (dynbuf *,const char *) | | curlx_dyn_add | 1 |
+| taint.cpp:589:7:589:12 | strsep | (dynhds *,const char *) | | Curl_dynhds_cget | 1 |
+| taint.cpp:589:7:589:12 | strsep | (dynhds *,const char *) | | Curl_dynhds_h1_cadd_line | 1 |
+| taint.cpp:589:7:589:12 | strsep | (gzFile,const char *) | | gzputs | 1 |
| taint.cpp:589:7:589:12 | strsep | (int,const char *) | | BIO_meth_new | 1 |
+| taint.cpp:589:7:589:12 | strsep | (int,const char *) | | gzdopen | 1 |
| taint.cpp:589:7:589:12 | strsep | (lemon *,const char *) | | file_makename | 1 |
+| taint.cpp:589:7:589:12 | strsep | (long *,const char *) | | secs2ms | 1 |
+| taint.cpp:589:7:589:12 | strsep | (long *,const char *) | | str2num | 1 |
+| taint.cpp:589:7:589:12 | strsep | (long *,const char *) | | str2unum | 1 |
| taint.cpp:589:7:589:12 | strsep | (size_t *,const char *) | | next_protos_parse | 1 |
+| taint.cpp:589:7:589:12 | strsep | (slist_wc **,const char *) | | easysrc_add | 1 |
+| taint.cpp:589:7:589:12 | strsep | (slist_wc *,const char *) | | slist_wc_append | 1 |
| taint.cpp:589:7:589:12 | strsep | (sqlite3 *,const char *) | | sqlite3_declare_vtab | 1 |
| taint.cpp:589:7:589:12 | strsep | (sqlite3 *,const char *) | | sqlite3_get_clientdata | 1 |
| taint.cpp:589:7:589:12 | strsep | (sqlite3 *,const char *) | | sqlite3_wal_checkpoint | 1 |
@@ -9895,6 +11636,7 @@ signatureMatches
| taint.cpp:589:7:589:12 | strsep | (unsigned char *,const char *) | | ossl_a2i_ipadd | 1 |
| taint.cpp:589:7:589:12 | strsep | (unsigned long *,const char *) | | set_cert_ex | 1 |
| taint.cpp:589:7:589:12 | strsep | (unsigned long *,const char *) | | set_name_ex | 1 |
+| taint.cpp:589:7:589:12 | strsep | (uv_pipe_t *,const char *) | | uv_pipe_bind | 1 |
| taint.cpp:591:6:591:16 | test_strsep | (char *) | | SRP_VBASE_new | 0 |
| taint.cpp:591:6:591:16 | test_strsep | (char *) | | defossilize | 0 |
| taint.cpp:591:6:591:16 | test_strsep | (char *) | | make_uppercase | 0 |
@@ -9906,11 +11648,13 @@ signatureMatches
| taint.cpp:602:7:602:13 | _strinc | (CONF_IMODULE *,void *) | | CONF_imodule_set_usr_data | 1 |
| taint.cpp:602:7:602:13 | _strinc | (CONF_MODULE *,void *) | | CONF_module_set_usr_data | 1 |
| taint.cpp:602:7:602:13 | _strinc | (CRYPTO_THREAD_LOCAL *,void *) | | CRYPTO_THREAD_set_local | 1 |
+| taint.cpp:602:7:602:13 | _strinc | (Curl_tree *,void *) | | Curl_splayset | 1 |
| taint.cpp:602:7:602:13 | _strinc | (DH_METHOD *,void *) | | DH_meth_set0_app_data | 1 |
| taint.cpp:602:7:602:13 | _strinc | (DSA_METHOD *,void *) | | DSA_meth_set0_app_data | 1 |
| taint.cpp:602:7:602:13 | _strinc | (EVP_CIPHER_CTX *,void *) | | EVP_CIPHER_CTX_set_app_data | 1 |
| taint.cpp:602:7:602:13 | _strinc | (EVP_CIPHER_CTX *,void *) | | EVP_CIPHER_CTX_set_cipher_data | 1 |
| taint.cpp:602:7:602:13 | _strinc | (EVP_KEYMGMT *,void *) | | evp_keymgmt_util_make_pkey | 1 |
+| taint.cpp:602:7:602:13 | _strinc | (EVP_MAC_CTX **,void *) | | _libssh2_hmac_final | 1 |
| taint.cpp:602:7:602:13 | _strinc | (EVP_PKEY_CTX *,void *) | | EVP_PKEY_CTX_get1_id | 1 |
| taint.cpp:602:7:602:13 | _strinc | (EVP_PKEY_CTX *,void *) | | EVP_PKEY_CTX_set_app_data | 1 |
| taint.cpp:602:7:602:13 | _strinc | (EVP_PKEY_CTX *,void *) | | EVP_PKEY_CTX_set_data | 1 |
@@ -9945,7 +11689,18 @@ signatureMatches
| taint.cpp:602:7:602:13 | _strinc | (const char *,void *) | | collect_names | 1 |
| taint.cpp:602:7:602:13 | _strinc | (int,void *) | | OSSL_STORE_INFO_new | 1 |
| taint.cpp:602:7:602:13 | _strinc | (int,void *) | | sqlite3_randomness | 1 |
+| taint.cpp:602:7:602:13 | _strinc | (nghttp2_queue *,void *) | | nghttp2_queue_push | 1 |
+| taint.cpp:602:7:602:13 | _strinc | (nghttp2_session *,void *) | | nghttp2_session_set_user_data | 1 |
| taint.cpp:602:7:602:13 | _strinc | (unsigned char *,void *) | | pitem_new | 1 |
+| taint.cpp:602:7:602:13 | _strinc | (uv_handle_t *,void *) | | uv_handle_set_data | 1 |
+| taint.cpp:602:7:602:13 | _strinc | (uv_key_t *,void *) | | uv_key_set | 1 |
+| taint.cpp:602:7:602:13 | _strinc | (uv_loop_t *,void *) | | uv_loop_set_data | 1 |
+| taint.cpp:602:7:602:13 | _strinc | (uv_req_t *,void *) | | uv_req_set_data | 1 |
+| taint.cpp:603:16:603:22 | _mbsinc | (const unsigned char *) | | Curl_read16_be | 0 |
+| taint.cpp:603:16:603:22 | _mbsinc | (const unsigned char *) | | Curl_read16_le | 0 |
+| taint.cpp:603:16:603:22 | _mbsinc | (const unsigned char *) | | Curl_read32_le | 0 |
+| taint.cpp:603:16:603:22 | _mbsinc | (const unsigned char *) | | _libssh2_ntohu32 | 0 |
+| taint.cpp:603:16:603:22 | _mbsinc | (const unsigned char *) | | _libssh2_ntohu64 | 0 |
| taint.cpp:603:16:603:22 | _mbsinc | (const unsigned char *) | | ossl_quic_vlint_decode_unchecked | 0 |
| taint.cpp:603:16:603:22 | _mbsinc | (const unsigned char *) | CStringT | CStringT | 0 |
| taint.cpp:603:16:603:22 | _mbsinc | (const unsigned char *) | CStringT | operator= | 0 |
@@ -9954,6 +11709,7 @@ signatureMatches
| taint.cpp:604:16:604:22 | _strdec | (SM3_CTX *,const unsigned char *) | | ossl_sm3_transform | 1 |
| taint.cpp:604:16:604:22 | _strdec | (TLS_RL_RECORD *,const unsigned char *) | | ossl_tls_rl_record_set_seq_num | 1 |
| taint.cpp:606:6:606:17 | test__strinc | (BIO *,const EVP_PKEY *,int,pem_password_cb *,void *) | | i2b_PVK_bio | 4 |
+| taint.cpp:606:6:606:17 | test__strinc | (BrotliDecoderState *,BrotliDecoderStateInternal *,brotli_decoder_metadata_start_func,brotli_decoder_metadata_chunk_func,void *) | | BrotliDecoderSetMetadataCallbacks | 4 |
| taint.cpp:606:6:606:17 | test__strinc | (EVP_CIPHER_INFO *,unsigned char *,long *,pem_password_cb *,void *) | | PEM_do_header | 4 |
| taint.cpp:606:6:606:17 | test__strinc | (EVP_PKEY *,EVP_KEYMGMT *,void *,OSSL_CALLBACK *,void *) | | evp_keymgmt_util_gen | 4 |
| taint.cpp:606:6:606:17 | test__strinc | (EVP_PKEY_CTX *,int,int,int,void *) | | RSA_pkey_ctx_ctrl | 4 |
@@ -9963,12 +11719,16 @@ signatureMatches
| taint.cpp:606:6:606:17 | test__strinc | (const BIGNUM *,int,..(*)(..),BN_CTX *,void *) | | BN_is_prime | 4 |
| taint.cpp:606:6:606:17 | test__strinc | (const char *,const UI_METHOD *,void *,OSSL_STORE_post_process_info_fn,void *) | | OSSL_STORE_open | 4 |
| taint.cpp:606:6:606:17 | test__strinc | (const char *,int,int,..(*)(..),void *) | | CONF_parse_list | 4 |
+| taint.cpp:606:6:606:17 | test__strinc | (nghttp2_extension *,uint8_t,uint8_t,int32_t,void *) | | nghttp2_frame_extension_init | 4 |
+| taint.cpp:606:6:606:17 | test__strinc | (nghttp2_session *,const uint8_t *,size_t,int,void *) | | nghttp2_session_upgrade2 | 4 |
+| taint.cpp:606:6:606:17 | test__strinc | (nghttp2_session *,int32_t,uint8_t,nghttp2_stream_state,void *) | | nghttp2_session_open_stream | 4 |
| taint.cpp:606:6:606:17 | test__strinc | (sqlite3 *,const char *,const char *,..(*)(..),void *) | | recoverInit | 4 |
| taint.cpp:616:6:616:17 | test__mbsinc | (PKCS7 *,int,long,char *) | | PKCS7_ctrl | 3 |
| taint.cpp:616:6:616:17 | test__mbsinc | (SSL_CTX *,srpsrvparm *,char *,char *) | | set_up_srp_verifier_file | 3 |
| taint.cpp:616:6:616:17 | test__mbsinc | (SSL_HMAC *,void *,size_t,char *) | | ssl_hmac_init | 3 |
| taint.cpp:616:6:616:17 | test__mbsinc | (SSL_HMAC *,void *,size_t,char *) | | ssl_hmac_old_init | 3 |
| taint.cpp:616:6:616:17 | test__mbsinc | (action **,e_action,symbol *,char *) | | Action_add | 3 |
+| taint.cpp:616:6:616:17 | test__mbsinc | (const char *,const char *,char *,char *) | | uv__idna_toascii | 3 |
| taint.cpp:626:6:626:17 | test__strdec | (BIO *,const BIGNUM *,const char *,int,unsigned char *) | | print_bignum_var | 4 |
| taint.cpp:626:6:626:17 | test__strdec | (OSSL_LIB_CTX *,const char *,const QUIC_PKT_HDR *,const QUIC_CONN_ID *,unsigned char *) | | ossl_quic_calculate_retry_integrity_tag | 4 |
| taint.cpp:626:6:626:17 | test__strdec | (QUIC_HDR_PROTECTOR *,const unsigned char *,size_t,unsigned char *,unsigned char *) | | ossl_quic_hdr_protector_decrypt_fields | 3 |
@@ -9976,6 +11736,9 @@ signatureMatches
| taint.cpp:626:6:626:17 | test__strdec | (QUIC_HDR_PROTECTOR *,const unsigned char *,size_t,unsigned char *,unsigned char *) | | ossl_quic_hdr_protector_encrypt_fields | 3 |
| taint.cpp:626:6:626:17 | test__strdec | (QUIC_HDR_PROTECTOR *,const unsigned char *,size_t,unsigned char *,unsigned char *) | | ossl_quic_hdr_protector_encrypt_fields | 4 |
| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | BIO_gethostbyname | 0 |
+| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | Curl_copy_header_value | 0 |
+| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | Curl_get_scheme_handler | 0 |
+| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | Curl_getdate_capped | 0 |
| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | Jim_StrDup | 0 |
| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | OPENSSL_LH_strhash | 0 |
| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 |
@@ -9986,11 +11749,18 @@ signatureMatches
| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | X509_LOOKUP_meth_new | 0 |
| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | a2i_IPADDRESS | 0 |
| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | a2i_IPADDRESS_NC | 0 |
+| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | last_component | 0 |
| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | opt_path_end | 0 |
| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | opt_progname | 0 |
| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | ossl_lh_strcasehash | 0 |
| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | strhash | 0 |
+| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | uc_script_byname | 0 |
+| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | uv__strdup | 0 |
+| taint.cpp:645:14:645:22 | _strnextc | (const char *) | | uv_wtf8_length_as_utf16 | 0 |
| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | BIO_gethostbyname | 0 |
+| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | Curl_copy_header_value | 0 |
+| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | Curl_get_scheme_handler | 0 |
+| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | Curl_getdate_capped | 0 |
| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | Jim_StrDup | 0 |
| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | OPENSSL_LH_strhash | 0 |
| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 |
@@ -10001,10 +11771,14 @@ signatureMatches
| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | X509_LOOKUP_meth_new | 0 |
| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | a2i_IPADDRESS | 0 |
| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | a2i_IPADDRESS_NC | 0 |
+| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | last_component | 0 |
| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | opt_path_end | 0 |
| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | opt_progname | 0 |
| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | ossl_lh_strcasehash | 0 |
| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | strhash | 0 |
+| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | uc_script_byname | 0 |
+| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | uv__strdup | 0 |
+| taint.cpp:647:6:647:19 | test__strnextc | (const char *) | | uv_wtf8_length_as_utf16 | 0 |
| taint.cpp:665:6:665:25 | test_no_const_member | (char *) | | SRP_VBASE_new | 0 |
| taint.cpp:665:6:665:25 | test_no_const_member | (char *) | | defossilize | 0 |
| taint.cpp:665:6:665:25 | test_no_const_member | (char *) | | make_uppercase | 0 |
@@ -10015,6 +11789,7 @@ signatureMatches
| taint.cpp:677:6:677:27 | test_with_const_member | (char *) | | make_uppercase | 0 |
| taint.cpp:677:6:677:27 | test_with_const_member | (char *) | | next_item | 0 |
| taint.cpp:677:6:677:27 | test_with_const_member | (char *) | CStringT | CStringT | 0 |
+| taint.cpp:683:6:683:20 | argument_source | (void *) | | Curl_cpool_upkeep | 0 |
| taint.cpp:683:6:683:20 | argument_source | (void *) | | ossl_kdf_data_new | 0 |
| taint.cpp:707:8:707:14 | strncpy | (BIO *,OCSP_REQUEST *,unsigned long) | | OCSP_REQUEST_print | 2 |
| taint.cpp:707:8:707:14 | strncpy | (BIO *,OCSP_RESPONSE *,unsigned long) | | OCSP_RESPONSE_print | 2 |
@@ -10031,6 +11806,7 @@ signatureMatches
| taint.cpp:709:6:709:17 | test_strncpy | (SSL_CTX *,char *) | | SSL_CTX_set_srp_username | 1 |
| taint.cpp:709:6:709:17 | test_strncpy | (const char *,char *) | | sha1sum_file | 1 |
| taint.cpp:709:6:709:17 | test_strncpy | (const char *,char *) | | sha3sum_file | 1 |
+| taint.cpp:709:6:709:17 | test_strncpy | (curl_slist *,char *) | | Curl_slist_append_nodup | 1 |
| taint.cpp:709:6:709:17 | test_strncpy | (unsigned long,char *) | | ERR_error_string | 1 |
| taint.cpp:725:10:725:15 | strtol | (ASN1_BIT_STRING *,int,int) | | ASN1_BIT_STRING_set_bit | 2 |
| taint.cpp:725:10:725:15 | strtol | (ASN1_BIT_STRING *,unsigned char *,int) | | ASN1_BIT_STRING_set | 2 |
@@ -10057,6 +11833,11 @@ signatureMatches
| taint.cpp:725:10:725:15 | strtol | (BIO *,const RSA *,int) | | RSA_print | 2 |
| taint.cpp:725:10:725:15 | strtol | (CERT *,X509_STORE **,int) | | ssl_cert_get_cert_store | 2 |
| taint.cpp:725:10:725:15 | strtol | (CRYPTO_THREAD_ROUTINE,void *,int) | | ossl_crypto_thread_native_start | 2 |
+| taint.cpp:725:10:725:15 | strtol | (Curl_easy *,connectdata *,int) | | Curl_conn_cf_discard_all | 2 |
+| taint.cpp:725:10:725:15 | strtol | (Curl_easy *,connectdata *,int) | | Curl_http2_may_switch | 2 |
+| taint.cpp:725:10:725:15 | strtol | (Curl_easy *,connectdata *,int) | | Curl_http2_switch | 2 |
+| taint.cpp:725:10:725:15 | strtol | (Curl_easy *,connectdata *,int) | | Curl_ssl_cfilter_add | 2 |
+| taint.cpp:725:10:725:15 | strtol | (Curl_sockaddr_ex *,const Curl_addrinfo *,int) | | Curl_sock_assign_addr | 2 |
| taint.cpp:725:10:725:15 | strtol | (DH *,const OSSL_PARAM[],int) | | ossl_dh_key_fromdata | 2 |
| taint.cpp:725:10:725:15 | strtol | (DSA *,const OSSL_PARAM[],int) | | ossl_dsa_key_fromdata | 2 |
| taint.cpp:725:10:725:15 | strtol | (ECX_KEY *,const OSSL_PARAM[],int) | | ossl_ecx_key_fromdata | 2 |
@@ -10093,6 +11874,8 @@ signatureMatches
| taint.cpp:725:10:725:15 | strtol | (Jim_Interp *,const char *,int) | | Jim_MakeTempFile | 2 |
| taint.cpp:725:10:725:15 | strtol | (Jim_Interp *,const char *,int) | | Jim_NewStringObj | 2 |
| taint.cpp:725:10:725:15 | strtol | (Jim_Interp *,const char *,int) | | Jim_NewStringObjUtf8 | 2 |
+| taint.cpp:725:10:725:15 | strtol | (LIBSSH2_SESSION *,int,int) | | libssh2_session_flag | 2 |
+| taint.cpp:725:10:725:15 | strtol | (LIBSSH2_SFTP_HANDLE *,LIBSSH2_SFTP_ATTRIBUTES *,int) | | libssh2_sftp_fstat_ex | 2 |
| taint.cpp:725:10:725:15 | strtol | (OCSP_BASICRESP *,OCSP_CERTID *,int) | | OCSP_resp_find | 2 |
| taint.cpp:725:10:725:15 | strtol | (OCSP_BASICRESP *,X509_EXTENSION *,int) | | OCSP_BASICRESP_add_ext | 2 |
| taint.cpp:725:10:725:15 | strtol | (OCSP_BASICRESP *,const ASN1_OBJECT *,int) | | OCSP_BASICRESP_get_ext_by_OBJ | 2 |
@@ -10178,6 +11961,7 @@ signatureMatches
| taint.cpp:725:10:725:15 | strtol | (const CMS_SignerInfo *,const ASN1_OBJECT *,int) | | CMS_unsigned_get_attr_by_OBJ | 2 |
| taint.cpp:725:10:725:15 | strtol | (const CMS_SignerInfo *,int,int) | | CMS_signed_get_attr_by_NID | 2 |
| taint.cpp:725:10:725:15 | strtol | (const CMS_SignerInfo *,int,int) | | CMS_unsigned_get_attr_by_NID | 2 |
+| taint.cpp:725:10:725:15 | strtol | (const Curl_easy *,const connectdata *,int) | | Curl_conn_is_http2 | 2 |
| taint.cpp:725:10:725:15 | strtol | (const EVP_MD *,const EVP_MD *,int) | | ossl_rsa_pss_params_create | 2 |
| taint.cpp:725:10:725:15 | strtol | (const EVP_PKEY *,const ASN1_OBJECT *,int) | | EVP_PKEY_get_attr_by_OBJ | 2 |
| taint.cpp:725:10:725:15 | strtol | (const EVP_PKEY *,int,int) | | EVP_PKEY_get_attr_by_NID | 2 |
@@ -10205,6 +11989,9 @@ signatureMatches
| taint.cpp:725:10:725:15 | strtol | (const X509_REVOKED *,int,int) | | X509_REVOKED_get_ext_by_NID | 2 |
| taint.cpp:725:10:725:15 | strtol | (const X509_REVOKED *,int,int) | | X509_REVOKED_get_ext_by_critical | 2 |
| taint.cpp:725:10:725:15 | strtol | (const X509_SIG *,const char *,int) | | PKCS8_decrypt | 2 |
+| taint.cpp:725:10:725:15 | strtol | (const char *,char **,int) | | idn2_to_ascii_8z | 0 |
+| taint.cpp:725:10:725:15 | strtol | (const char *,char **,int) | | idn2_to_ascii_8z | 1 |
+| taint.cpp:725:10:725:15 | strtol | (const char *,char **,int) | | idn2_to_ascii_8z | 2 |
| taint.cpp:725:10:725:15 | strtol | (const char *,const OSSL_PARAM *,int) | | print_param_types | 2 |
| taint.cpp:725:10:725:15 | strtol | (const char *,const char *,int) | | CRYPTO_strdup | 2 |
| taint.cpp:725:10:725:15 | strtol | (const char *,const char *,int) | | sqlite3_strnicmp | 2 |
@@ -10215,9 +12002,16 @@ signatureMatches
| taint.cpp:725:10:725:15 | strtol | (const stack_st_X509_EXTENSION *,const ASN1_OBJECT *,int) | | X509v3_get_ext_by_OBJ | 2 |
| taint.cpp:725:10:725:15 | strtol | (const stack_st_X509_EXTENSION *,int,int) | | X509v3_get_ext_by_NID | 2 |
| taint.cpp:725:10:725:15 | strtol | (const stack_st_X509_EXTENSION *,int,int) | | X509v3_get_ext_by_critical | 2 |
+| taint.cpp:725:10:725:15 | strtol | (const uint8_t *,uint8_t **,int) | | idn2_lookup_u8 | 2 |
| taint.cpp:725:10:725:15 | strtol | (const unsigned char **,unsigned int,int) | | ossl_b2i_DSA_after_header | 2 |
| taint.cpp:725:10:725:15 | strtol | (const unsigned char **,unsigned int,int) | | ossl_b2i_RSA_after_header | 2 |
| taint.cpp:725:10:725:15 | strtol | (const void *,const void *,int) | | ossl_is_partially_overlapping | 2 |
+| taint.cpp:725:10:725:15 | strtol | (curl_mimepart *,curl_mime *,int) | | Curl_mime_set_subparts | 2 |
+| taint.cpp:725:10:725:15 | strtol | (curl_mimepart *,curl_slist *,int) | | curl_mime_headers | 2 |
+| taint.cpp:725:10:725:15 | strtol | (gzFile,char *,int) | | gzgets | 2 |
+| taint.cpp:725:10:725:15 | strtol | (gzFile,int,int) | | gzsetparams | 2 |
+| taint.cpp:725:10:725:15 | strtol | (gzFile,off64_t,int) | | gzseek64 | 2 |
+| taint.cpp:725:10:725:15 | strtol | (gzFile,off_t,int) | | gzseek | 2 |
| taint.cpp:725:10:725:15 | strtol | (int,BIO_ADDR *,int) | | BIO_accept_ex | 2 |
| taint.cpp:725:10:725:15 | strtol | (int,int,int) | | ASN1_object_size | 2 |
| taint.cpp:725:10:725:15 | strtol | (int,int,int) | | EVP_CIPHER_meth_new | 2 |
@@ -10250,19 +12044,34 @@ signatureMatches
| taint.cpp:725:10:725:15 | strtol | (unsigned int,int,int) | | ossl_blob_length | 2 |
| taint.cpp:725:10:725:15 | strtol | (unsigned long *,const BIGNUM *,int) | | bn_copy_words | 2 |
| taint.cpp:725:10:725:15 | strtol | (unsigned long *,const unsigned long *,int) | | bn_sqr_words | 2 |
+| taint.cpp:725:10:725:15 | strtol | (uv__io_t *,uv__io_cb,int) | | uv__io_init | 2 |
+| taint.cpp:725:10:725:15 | strtol | (uv_loop_t *,uv_fs_t *,int) | | uv__iou_fs_read_or_write | 2 |
+| taint.cpp:725:10:725:15 | strtol | (uv_loop_t *,uv_pipe_t *,int) | | uv_pipe_init | 2 |
+| taint.cpp:725:10:725:15 | strtol | (uv_loop_t *,uv_poll_t *,int) | | uv_poll_init | 2 |
+| taint.cpp:725:10:725:15 | strtol | (uv_signal_t *,uv_signal_cb,int) | | uv_signal_start | 2 |
+| taint.cpp:725:10:725:15 | strtol | (uv_signal_t *,uv_signal_cb,int) | | uv_signal_start_oneshot | 2 |
+| taint.cpp:725:10:725:15 | strtol | (uv_stream_t *,int,int) | | uv__stream_open | 2 |
| taint.cpp:725:10:725:15 | strtol | (void *,const char *,int) | | CRYPTO_secure_free | 2 |
+| taint.cpp:725:10:725:15 | strtol | (void *,curl_off_t,int) | | tool_mime_stdin_seek | 2 |
| taint.cpp:727:6:727:16 | test_strtol | (char *) | | SRP_VBASE_new | 0 |
| taint.cpp:727:6:727:16 | test_strtol | (char *) | | defossilize | 0 |
| taint.cpp:727:6:727:16 | test_strtol | (char *) | | make_uppercase | 0 |
| taint.cpp:727:6:727:16 | test_strtol | (char *) | | next_item | 0 |
| taint.cpp:727:6:727:16 | test_strtol | (char *) | CStringT | CStringT | 0 |
+| taint.cpp:735:7:735:12 | malloc | (size_t) | | BrotliEncoderMaxCompressedSize | 0 |
| taint.cpp:735:7:735:12 | malloc | (size_t) | | EVP_PKEY_meth_get0 | 0 |
+| taint.cpp:735:7:735:12 | malloc | (size_t) | | curlx_uztosi | 0 |
+| taint.cpp:735:7:735:12 | malloc | (size_t) | | curlx_uztosz | 0 |
+| taint.cpp:735:7:735:12 | malloc | (size_t) | | curlx_uztoui | 0 |
+| taint.cpp:735:7:735:12 | malloc | (size_t) | | curlx_uztoul | 0 |
| taint.cpp:735:7:735:12 | malloc | (size_t) | | ossl_get_extension_type | 0 |
| taint.cpp:735:7:735:12 | malloc | (size_t) | | ossl_param_bytes_to_blocks | 0 |
| taint.cpp:735:7:735:12 | malloc | (size_t) | | ossl_quic_sstream_new | 0 |
| taint.cpp:735:7:735:12 | malloc | (size_t) | | ssl_cert_new | 0 |
| taint.cpp:735:7:735:12 | malloc | (unsigned long) | | BN_num_bits_word | 0 |
| taint.cpp:735:7:735:12 | malloc | (unsigned long) | | BUF_MEM_new_ex | 0 |
+| taint.cpp:735:7:735:12 | malloc | (unsigned long) | | curlx_ultouc | 0 |
+| taint.cpp:735:7:735:12 | malloc | (unsigned long) | | curlx_ultous | 0 |
| taint.cpp:736:7:736:13 | realloc | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_cert_flags | 1 |
| taint.cpp:736:7:736:13 | realloc | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_flags | 1 |
| taint.cpp:736:7:736:13 | realloc | (ASN1_PCTX *,unsigned long) | | ASN1_PCTX_set_nm_flags | 1 |
@@ -10276,6 +12085,7 @@ signatureMatches
| taint.cpp:736:7:736:13 | realloc | (BUF_MEM *,size_t) | | BUF_MEM_grow | 1 |
| taint.cpp:736:7:736:13 | realloc | (BUF_MEM *,size_t) | | BUF_MEM_grow_clean | 1 |
| taint.cpp:736:7:736:13 | realloc | (CONF_IMODULE *,unsigned long) | | CONF_imodule_set_flags | 1 |
+| taint.cpp:736:7:736:13 | realloc | (Curl_hash *,size_t) | | Curl_init_dnscache | 1 |
| taint.cpp:736:7:736:13 | realloc | (EVP_CIPHER *,unsigned long) | | EVP_CIPHER_meth_set_flags | 1 |
| taint.cpp:736:7:736:13 | realloc | (EVP_MD *,unsigned long) | | EVP_MD_meth_set_flags | 1 |
| taint.cpp:736:7:736:13 | realloc | (HMAC_CTX *,unsigned long) | | HMAC_CTX_set_flags | 1 |
@@ -10321,17 +12131,57 @@ signatureMatches
| taint.cpp:736:7:736:13 | realloc | (X509_STORE_CTX *,unsigned long) | | X509_STORE_CTX_set_flags | 1 |
| taint.cpp:736:7:736:13 | realloc | (X509_VERIFY_PARAM *,unsigned long) | | X509_VERIFY_PARAM_clear_flags | 1 |
| taint.cpp:736:7:736:13 | realloc | (X509_VERIFY_PARAM *,unsigned long) | | X509_VERIFY_PARAM_set_flags | 1 |
+| taint.cpp:736:7:736:13 | realloc | (bufq *,size_t) | | Curl_bufq_skip | 1 |
+| taint.cpp:736:7:736:13 | realloc | (bufq *,size_t) | | Curl_bufq_unwrite | 1 |
| taint.cpp:736:7:736:13 | realloc | (char *,size_t) | | RAND_file_name | 1 |
+| taint.cpp:736:7:736:13 | realloc | (char *,size_t) | | plain_method | 1 |
| taint.cpp:736:7:736:13 | realloc | (const BIGNUM *,unsigned long) | | BN_mod_word | 1 |
+| taint.cpp:736:7:736:13 | realloc | (const char *,size_t) | | Curl_getn_scheme_handler | 1 |
+| taint.cpp:736:7:736:13 | realloc | (const char *,size_t) | | Curl_memdup0 | 1 |
| taint.cpp:736:7:736:13 | realloc | (const char *,size_t) | | OPENSSL_strnlen | 1 |
+| taint.cpp:736:7:736:13 | realloc | (const char *,size_t) | | uv__strndup | 1 |
| taint.cpp:736:7:736:13 | realloc | (const uint8_t *,size_t) | | FuzzerTestOneInput | 1 |
+| taint.cpp:736:7:736:13 | realloc | (const uint8_t *,size_t) | | nghttp2_hd_huff_encode_count | 1 |
| taint.cpp:736:7:736:13 | realloc | (const uint8_t *,size_t) | | ossl_ed448_pubkey_verify | 1 |
+| taint.cpp:736:7:736:13 | realloc | (const void *,size_t) | | Curl_memdup | 1 |
+| taint.cpp:736:7:736:13 | realloc | (curl_pushheaders *,size_t) | | curl_pushheader_bynum | 1 |
+| taint.cpp:736:7:736:13 | realloc | (dynbuf *,size_t) | | Curl_dyn_init | 1 |
+| taint.cpp:736:7:736:13 | realloc | (dynbuf *,size_t) | | Curl_dyn_setlen | 1 |
+| taint.cpp:736:7:736:13 | realloc | (dynbuf *,size_t) | | Curl_dyn_tail | 1 |
+| taint.cpp:736:7:736:13 | realloc | (dynbuf *,size_t) | | curlx_dyn_init | 1 |
+| taint.cpp:736:7:736:13 | realloc | (dynbuf *,size_t) | | curlx_dyn_setlen | 1 |
+| taint.cpp:736:7:736:13 | realloc | (dynbuf *,size_t) | | curlx_dyn_tail | 1 |
+| taint.cpp:736:7:736:13 | realloc | (dynhds *,size_t) | | Curl_dynhds_getn | 1 |
+| taint.cpp:736:7:736:13 | realloc | (h1_req_parser *,size_t) | | Curl_h1_req_parse_init | 1 |
| taint.cpp:736:7:736:13 | realloc | (int,size_t) | | ossl_calculate_comp_expansion | 1 |
+| taint.cpp:736:7:736:13 | realloc | (nghttp2_bufs *,size_t) | | nghttp2_bufs_realloc | 1 |
+| taint.cpp:736:7:736:13 | realloc | (nghttp2_frame *,size_t) | | nghttp2_frame_trail_padlen | 1 |
+| taint.cpp:736:7:736:13 | realloc | (nghttp2_hd_context *,size_t) | | nghttp2_hd_table_get | 1 |
+| taint.cpp:736:7:736:13 | realloc | (nghttp2_hd_deflater **,size_t) | | nghttp2_hd_deflate_new | 1 |
+| taint.cpp:736:7:736:13 | realloc | (nghttp2_hd_deflater *,size_t) | | nghttp2_hd_deflate_change_table_size | 1 |
+| taint.cpp:736:7:736:13 | realloc | (nghttp2_hd_deflater *,size_t) | | nghttp2_hd_deflate_get_table_entry | 1 |
+| taint.cpp:736:7:736:13 | realloc | (nghttp2_hd_inflater *,size_t) | | nghttp2_hd_inflate_change_table_size | 1 |
+| taint.cpp:736:7:736:13 | realloc | (nghttp2_hd_inflater *,size_t) | | nghttp2_hd_inflate_get_table_entry | 1 |
+| taint.cpp:736:7:736:13 | realloc | (nghttp2_option *,size_t) | | nghttp2_option_set_max_continuations | 1 |
+| taint.cpp:736:7:736:13 | realloc | (nghttp2_option *,size_t) | | nghttp2_option_set_max_deflate_dynamic_table_size | 1 |
+| taint.cpp:736:7:736:13 | realloc | (nghttp2_option *,size_t) | | nghttp2_option_set_max_outbound_ack | 1 |
+| taint.cpp:736:7:736:13 | realloc | (nghttp2_option *,size_t) | | nghttp2_option_set_max_send_header_block_length | 1 |
+| taint.cpp:736:7:736:13 | realloc | (nghttp2_option *,size_t) | | nghttp2_option_set_max_settings | 1 |
+| taint.cpp:736:7:736:13 | realloc | (nghttp2_session *,size_t) | | nghttp2_session_consume_connection | 1 |
+| taint.cpp:736:7:736:13 | realloc | (nghttp2_session *,size_t) | | nghttp2_session_update_recv_connection_window_size | 1 |
+| taint.cpp:736:7:736:13 | realloc | (nghttp2_stream *,size_t) | | nghttp2_http_on_data_chunk | 1 |
+| taint.cpp:736:7:736:13 | realloc | (uint8_t *,size_t) | | nghttp2_downcase | 1 |
| taint.cpp:736:7:736:13 | realloc | (uint8_t *,size_t) | | ossl_fnv1a_hash | 1 |
| taint.cpp:736:7:736:13 | realloc | (void *,size_t) | | JimDefaultAllocator | 0 |
| taint.cpp:736:7:736:13 | realloc | (void *,size_t) | | JimDefaultAllocator | 1 |
+| taint.cpp:736:7:736:13 | realloc | (void *,size_t) | | uv__random_devurandom | 0 |
+| taint.cpp:736:7:736:13 | realloc | (void *,size_t) | | uv__random_devurandom | 1 |
+| taint.cpp:736:7:736:13 | realloc | (void *,size_t) | | uv__random_getrandom | 0 |
+| taint.cpp:736:7:736:13 | realloc | (void *,size_t) | | uv__random_getrandom | 1 |
+| taint.cpp:758:5:758:11 | sprintf | (CURLSH *,CURLSHoption,...) | | curl_share_setopt | 2 |
| taint.cpp:758:5:758:11 | sprintf | (Jim_Interp *,const char *,...) | | Jim_SetResultFormatted | 1 |
| taint.cpp:758:5:758:11 | sprintf | (Jim_Interp *,const char *,...) | | Jim_SetResultFormatted | 2 |
+| taint.cpp:758:5:758:11 | sprintf | (curl_httppost **,curl_httppost **,...) | | curl_formadd | 2 |
| taint.cpp:760:6:760:23 | call_sprintf_twice | (ARGS *,char *) | | chopup_args | 1 |
| taint.cpp:760:6:760:23 | call_sprintf_twice | (BIO *,char *) | | BIO_set_callback_arg | 1 |
| taint.cpp:760:6:760:23 | call_sprintf_twice | (SRP_VBASE *,char *) | | SRP_VBASE_get1_by_user | 1 |
@@ -10340,6 +12190,7 @@ signatureMatches
| taint.cpp:760:6:760:23 | call_sprintf_twice | (SSL_CTX *,char *) | | SSL_CTX_set_srp_username | 1 |
| taint.cpp:760:6:760:23 | call_sprintf_twice | (const char *,char *) | | sha1sum_file | 1 |
| taint.cpp:760:6:760:23 | call_sprintf_twice | (const char *,char *) | | sha3sum_file | 1 |
+| taint.cpp:760:6:760:23 | call_sprintf_twice | (curl_slist *,char *) | | Curl_slist_append_nodup | 1 |
| taint.cpp:760:6:760:23 | call_sprintf_twice | (unsigned long,char *) | | ERR_error_string | 1 |
| taint.cpp:782:7:782:11 | fopen | (ASN1_GENERALIZEDTIME *,const char *) | | ASN1_GENERALIZEDTIME_set_string | 1 |
| taint.cpp:782:7:782:11 | fopen | (ASN1_TIME *,const char *) | | ASN1_TIME_set_string | 1 |
@@ -10350,6 +12201,9 @@ signatureMatches
| taint.cpp:782:7:782:11 | fopen | (BIGNUM **,const char *) | | BN_hex2bn | 1 |
| taint.cpp:782:7:782:11 | fopen | (CONF *,const char *) | | TS_CONF_get_tsa_section | 1 |
| taint.cpp:782:7:782:11 | fopen | (CONF *,const char *) | | _CONF_new_section | 1 |
+| taint.cpp:782:7:782:11 | fopen | (CURLU *,const char *) | | Curl_url_set_authority | 1 |
+| taint.cpp:782:7:782:11 | fopen | (Curl_easy *,const char *) | | Curl_cwriter_get_by_name | 1 |
+| taint.cpp:782:7:782:11 | fopen | (Curl_easy *,const char *) | | Curl_rtsp_parseheader | 1 |
| taint.cpp:782:7:782:11 | fopen | (DH_METHOD *,const char *) | | DH_meth_set1_name | 1 |
| taint.cpp:782:7:782:11 | fopen | (DSA_METHOD *,const char *) | | DSA_meth_set1_name | 1 |
| taint.cpp:782:7:782:11 | fopen | (DSO *,const char *) | | DSO_convert_filename | 1 |
@@ -10360,10 +12214,14 @@ signatureMatches
| taint.cpp:782:7:782:11 | fopen | (EVP_PKEY *,const char *) | | CTLOG_new | 1 |
| taint.cpp:782:7:782:11 | fopen | (EVP_PKEY_CTX *,const char *) | | app_paramgen | 1 |
| taint.cpp:782:7:782:11 | fopen | (EVP_PKEY_CTX *,const char *) | | pkey_ctrl_string | 1 |
+| taint.cpp:782:7:782:11 | fopen | (GlobalConfig *,const char *) | | setvariable | 1 |
| taint.cpp:782:7:782:11 | fopen | (Jim_Interp *,const char *) | | Jim_Eval | 1 |
| taint.cpp:782:7:782:11 | fopen | (Jim_Interp *,const char *) | | Jim_EvalFile | 1 |
| taint.cpp:782:7:782:11 | fopen | (Jim_Interp *,const char *) | | Jim_EvalFileGlobal | 1 |
| taint.cpp:782:7:782:11 | fopen | (Jim_Interp *,const char *) | | Jim_EvalGlobal | 1 |
+| taint.cpp:782:7:782:11 | fopen | (LIBSSH2_AGENT *,const char *) | | libssh2_agent_set_identity_path | 1 |
+| taint.cpp:782:7:782:11 | fopen | (LIBSSH2_SESSION *,const char *) | | libssh2_banner_set | 1 |
+| taint.cpp:782:7:782:11 | fopen | (LIBSSH2_SESSION *,const char *) | | libssh2_session_banner_set | 1 |
| taint.cpp:782:7:782:11 | fopen | (OPENSSL_DIR_CTX **,const char *) | | OPENSSL_DIR_read | 1 |
| taint.cpp:782:7:782:11 | fopen | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_appname | 1 |
| taint.cpp:782:7:782:11 | fopen | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_filename | 1 |
@@ -10420,15 +12278,25 @@ signatureMatches
| taint.cpp:782:7:782:11 | fopen | (X509_REQ *,const char *) | | x509_req_ctrl_string | 1 |
| taint.cpp:782:7:782:11 | fopen | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_ip_asc | 1 |
| taint.cpp:782:7:782:11 | fopen | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_name | 1 |
+| taint.cpp:782:7:782:11 | fopen | (char **,const char *) | | Curl_setstropt | 1 |
| taint.cpp:782:7:782:11 | fopen | (const OSSL_PARAM *,const char *) | | OSSL_PARAM_locate_const | 1 |
+| taint.cpp:782:7:782:11 | fopen | (const char **,const char *) | | uv__utf8_decode1 | 1 |
| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | Configcmp | 0 |
| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | Configcmp | 1 |
+| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | Curl_timestrcmp | 0 |
+| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | Curl_timestrcmp | 1 |
| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | DES_crypt | 0 |
| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | DES_crypt | 1 |
| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | OPENSSL_strcasecmp | 0 |
| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | OPENSSL_strcasecmp | 1 |
+| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | c_strcasecmp | 0 |
+| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | c_strcasecmp | 1 |
| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | get_passwd | 0 |
| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | get_passwd | 1 |
+| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | gzopen | 0 |
+| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | gzopen | 1 |
+| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | gzopen64 | 0 |
+| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | gzopen64 | 1 |
| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | openssl_fopen | 0 |
| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | openssl_fopen | 1 |
| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | ossl_pem_check_suffix | 0 |
@@ -10439,9 +12307,25 @@ signatureMatches
| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | sqlite3_strglob | 1 |
| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | sqlite3_stricmp | 0 |
| taint.cpp:782:7:782:11 | fopen | (const char *,const char *) | | sqlite3_stricmp | 1 |
+| taint.cpp:782:7:782:11 | fopen | (curl_mimepart *,const char *) | | curl_mime_filedata | 1 |
+| taint.cpp:782:7:782:11 | fopen | (curl_off_t *,const char *) | | str2offset | 1 |
+| taint.cpp:782:7:782:11 | fopen | (curl_pushheaders *,const char *) | | curl_pushheader_byname | 1 |
+| taint.cpp:782:7:782:11 | fopen | (curl_slist **,const char *) | | add2list | 1 |
+| taint.cpp:782:7:782:11 | fopen | (curl_slist *,const char *) | | curl_slist_append | 1 |
+| taint.cpp:782:7:782:11 | fopen | (dynbuf *,const char *) | | Curl_dyn_add | 1 |
+| taint.cpp:782:7:782:11 | fopen | (dynbuf *,const char *) | | curlx_dyn_add | 1 |
+| taint.cpp:782:7:782:11 | fopen | (dynhds *,const char *) | | Curl_dynhds_cget | 1 |
+| taint.cpp:782:7:782:11 | fopen | (dynhds *,const char *) | | Curl_dynhds_h1_cadd_line | 1 |
+| taint.cpp:782:7:782:11 | fopen | (gzFile,const char *) | | gzputs | 1 |
| taint.cpp:782:7:782:11 | fopen | (int,const char *) | | BIO_meth_new | 1 |
+| taint.cpp:782:7:782:11 | fopen | (int,const char *) | | gzdopen | 1 |
| taint.cpp:782:7:782:11 | fopen | (lemon *,const char *) | | file_makename | 1 |
+| taint.cpp:782:7:782:11 | fopen | (long *,const char *) | | secs2ms | 1 |
+| taint.cpp:782:7:782:11 | fopen | (long *,const char *) | | str2num | 1 |
+| taint.cpp:782:7:782:11 | fopen | (long *,const char *) | | str2unum | 1 |
| taint.cpp:782:7:782:11 | fopen | (size_t *,const char *) | | next_protos_parse | 1 |
+| taint.cpp:782:7:782:11 | fopen | (slist_wc **,const char *) | | easysrc_add | 1 |
+| taint.cpp:782:7:782:11 | fopen | (slist_wc *,const char *) | | slist_wc_append | 1 |
| taint.cpp:782:7:782:11 | fopen | (sqlite3 *,const char *) | | sqlite3_declare_vtab | 1 |
| taint.cpp:782:7:782:11 | fopen | (sqlite3 *,const char *) | | sqlite3_get_clientdata | 1 |
| taint.cpp:782:7:782:11 | fopen | (sqlite3 *,const char *) | | sqlite3_wal_checkpoint | 1 |
@@ -10452,17 +12336,22 @@ signatureMatches
| taint.cpp:782:7:782:11 | fopen | (unsigned char *,const char *) | | ossl_a2i_ipadd | 1 |
| taint.cpp:782:7:782:11 | fopen | (unsigned long *,const char *) | | set_cert_ex | 1 |
| taint.cpp:782:7:782:11 | fopen | (unsigned long *,const char *) | | set_name_ex | 1 |
+| taint.cpp:782:7:782:11 | fopen | (uv_pipe_t *,const char *) | | uv_pipe_bind | 1 |
| taint.cpp:783:5:783:11 | fopen_s | (CTLOG **,const char *,const char *) | | CTLOG_new_from_base64 | 1 |
| taint.cpp:783:5:783:11 | fopen_s | (CTLOG **,const char *,const char *) | | CTLOG_new_from_base64 | 2 |
+| taint.cpp:783:5:783:11 | fopen_s | (CURL *,char **,const char *) | | add_file_name_to_url | 2 |
| taint.cpp:783:5:783:11 | fopen_s | (ENGINE *,const char *,const char *) | | make_engine_uri | 1 |
| taint.cpp:783:5:783:11 | fopen_s | (ENGINE *,const char *,const char *) | | make_engine_uri | 2 |
| taint.cpp:783:5:783:11 | fopen_s | (EVP_PKEY_CTX *,const char *,const char *) | | EVP_PKEY_CTX_ctrl_str | 1 |
| taint.cpp:783:5:783:11 | fopen_s | (EVP_PKEY_CTX *,const char *,const char *) | | EVP_PKEY_CTX_ctrl_str | 2 |
| taint.cpp:783:5:783:11 | fopen_s | (FFC_PARAMS *,const char *,const char *) | | ossl_ffc_set_digest | 1 |
| taint.cpp:783:5:783:11 | fopen_s | (FFC_PARAMS *,const char *,const char *) | | ossl_ffc_set_digest | 2 |
+| taint.cpp:783:5:783:11 | fopen_s | (GlobalConfig *,char **,const char *) | | get_url_file_name | 2 |
| taint.cpp:783:5:783:11 | fopen_s | (Jim_Interp *,Jim_Obj *,const char *) | | Jim_CompareStringImmediate | 2 |
| taint.cpp:783:5:783:11 | fopen_s | (Jim_Interp *,const char *,const char *) | | Jim_SetVariableStrWithStr | 1 |
| taint.cpp:783:5:783:11 | fopen_s | (Jim_Interp *,const char *,const char *) | | Jim_SetVariableStrWithStr | 2 |
+| taint.cpp:783:5:783:11 | fopen_s | (LIBSSH2_SESSION *,int,const char *) | | _libssh2_error | 2 |
+| taint.cpp:783:5:783:11 | fopen_s | (LIBSSH2_SESSION *,int,const char *) | | libssh2_session_set_last_error | 2 |
| taint.cpp:783:5:783:11 | fopen_s | (OSSL_CMP_MSG *,OSSL_LIB_CTX *,const char *) | | ossl_cmp_msg_set0_libctx | 2 |
| taint.cpp:783:5:783:11 | fopen_s | (OSSL_DECODER *,void *,const char *) | | ossl_decoder_instance_new_forprov | 2 |
| taint.cpp:783:5:783:11 | fopen_s | (OSSL_LIB_CTX *,EVP_PKEY *,const char *) | | EVP_PKEY_CTX_new_from_pkey | 2 |
@@ -10500,8 +12389,13 @@ signatureMatches
| taint.cpp:783:5:783:11 | fopen_s | (const QUIC_TSERVER_ARGS *,const char *,const char *) | | ossl_quic_tserver_new | 1 |
| taint.cpp:783:5:783:11 | fopen_s | (const QUIC_TSERVER_ARGS *,const char *,const char *) | | ossl_quic_tserver_new | 2 |
| taint.cpp:783:5:783:11 | fopen_s | (const X509_ALGOR *,OSSL_LIB_CTX *,const char *) | | ossl_ec_key_param_from_x509_algor | 2 |
+| taint.cpp:783:5:783:11 | fopen_s | (const char **,char **,const char *) | | Curl_get_pathname | 2 |
| taint.cpp:783:5:783:11 | fopen_s | (const char *,OSSL_LIB_CTX *,const char *) | | OSSL_CMP_MSG_read | 2 |
| taint.cpp:783:5:783:11 | fopen_s | (const char *,sqlite3_filename,const char *) | | sqlite3_uri_parameter | 2 |
+| taint.cpp:783:5:783:11 | fopen_s | (dynhds *,const char *,const char *) | | Curl_dynhds_cadd | 1 |
+| taint.cpp:783:5:783:11 | fopen_s | (dynhds *,const char *,const char *) | | Curl_dynhds_cadd | 2 |
+| taint.cpp:783:5:783:11 | fopen_s | (gz_statep,int,const char *) | | gz_error | 2 |
+| taint.cpp:783:5:783:11 | fopen_s | (http_resp **,int,const char *) | | Curl_http_resp_make | 2 |
| taint.cpp:783:5:783:11 | fopen_s | (int,OSSL_LIB_CTX *,const char *) | | PKCS12_init_ex | 2 |
| taint.cpp:783:5:783:11 | fopen_s | (int,int,const char *) | | OSSL_CMP_STATUSINFO_new | 2 |
| taint.cpp:783:5:783:11 | fopen_s | (lemon *,const char *,const char *) | | file_open | 1 |
@@ -10514,6 +12408,7 @@ signatureMatches
| taint.cpp:785:6:785:15 | fopen_test | (char *) | | next_item | 0 |
| taint.cpp:785:6:785:15 | fopen_test | (char *) | CStringT | CStringT | 0 |
| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (ASN1_STRING *,unsigned int) | | ossl_asn1_string_set_bits_left | 1 |
+| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (Curl_easy *,unsigned int) | | Curl_ssl_supports | 1 |
| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (EC_KEY *,unsigned int) | | EC_KEY_set_enc_flags | 1 |
| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (EVP_ENCODE_CTX *,unsigned int) | | evp_encode_ctx_set_flags | 1 |
| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (FFC_PARAMS *,unsigned int) | | ossl_ffc_params_set_flags | 1 |
@@ -10529,7 +12424,13 @@ signatureMatches
| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (X509_STORE_CTX *,unsigned int) | | X509_STORE_CTX_set_current_reasons | 1 |
| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (X509_VERIFY_PARAM *,unsigned int) | | X509_VERIFY_PARAM_set_hostflags | 1 |
| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (char *,unsigned int) | | utf8_fromunicode | 1 |
+| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (char *,unsigned int) | | uv_buf_init | 1 |
+| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (const uv__io_t *,unsigned int) | | uv__io_active | 1 |
+| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (const uv_buf_t[],unsigned int) | | uv__count_bufs | 1 |
+| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (gzFile,unsigned int) | | gzbuffer | 1 |
+| taint.cpp:801:6:801:26 | SysAllocStringByteLen | (z_streamp,unsigned int) | | inflate_fast | 1 |
| taint.cpp:802:6:802:22 | SysAllocStringLen | (ASN1_STRING *,unsigned int) | | ossl_asn1_string_set_bits_left | 1 |
+| taint.cpp:802:6:802:22 | SysAllocStringLen | (Curl_easy *,unsigned int) | | Curl_ssl_supports | 1 |
| taint.cpp:802:6:802:22 | SysAllocStringLen | (EC_KEY *,unsigned int) | | EC_KEY_set_enc_flags | 1 |
| taint.cpp:802:6:802:22 | SysAllocStringLen | (EVP_ENCODE_CTX *,unsigned int) | | evp_encode_ctx_set_flags | 1 |
| taint.cpp:802:6:802:22 | SysAllocStringLen | (FFC_PARAMS *,unsigned int) | | ossl_ffc_params_set_flags | 1 |
@@ -10545,6 +12446,11 @@ signatureMatches
| taint.cpp:802:6:802:22 | SysAllocStringLen | (X509_STORE_CTX *,unsigned int) | | X509_STORE_CTX_set_current_reasons | 1 |
| taint.cpp:802:6:802:22 | SysAllocStringLen | (X509_VERIFY_PARAM *,unsigned int) | | X509_VERIFY_PARAM_set_hostflags | 1 |
| taint.cpp:802:6:802:22 | SysAllocStringLen | (char *,unsigned int) | | utf8_fromunicode | 1 |
+| taint.cpp:802:6:802:22 | SysAllocStringLen | (char *,unsigned int) | | uv_buf_init | 1 |
+| taint.cpp:802:6:802:22 | SysAllocStringLen | (const uv__io_t *,unsigned int) | | uv__io_active | 1 |
+| taint.cpp:802:6:802:22 | SysAllocStringLen | (const uv_buf_t[],unsigned int) | | uv__count_bufs | 1 |
+| taint.cpp:802:6:802:22 | SysAllocStringLen | (gzFile,unsigned int) | | gzbuffer | 1 |
+| taint.cpp:802:6:802:22 | SysAllocStringLen | (z_streamp,unsigned int) | | inflate_fast | 1 |
| taint.cpp:815:7:815:12 | strchr | (ASN1_STRING *,int) | | ASN1_STRING_length_set | 1 |
| taint.cpp:815:7:815:12 | strchr | (ASYNC_WAIT_CTX *,int) | | ASYNC_WAIT_CTX_set_status | 1 |
| taint.cpp:815:7:815:12 | strchr | (BIGNUM *,int) | | BN_clear_bit | 1 |
@@ -10563,6 +12469,8 @@ signatureMatches
| taint.cpp:815:7:815:12 | strchr | (BIO *,int) | | TXT_DB_read | 1 |
| taint.cpp:815:7:815:12 | strchr | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 |
| taint.cpp:815:7:815:12 | strchr | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 |
+| taint.cpp:815:7:815:12 | strchr | (CURL *,int) | | curl_easy_pause | 1 |
+| taint.cpp:815:7:815:12 | strchr | (Curl_easy *,int) | | Curl_conn_get_socket | 1 |
| taint.cpp:815:7:815:12 | strchr | (DH *,int) | | DH_clear_flags | 1 |
| taint.cpp:815:7:815:12 | strchr | (DH *,int) | | DH_set_flags | 1 |
| taint.cpp:815:7:815:12 | strchr | (DH_METHOD *,int) | | DH_meth_set_flags | 1 |
@@ -10606,6 +12514,17 @@ signatureMatches
| taint.cpp:815:7:815:12 | strchr | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 |
| taint.cpp:815:7:815:12 | strchr | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 |
| taint.cpp:815:7:815:12 | strchr | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 |
+| taint.cpp:815:7:815:12 | strchr | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 |
+| taint.cpp:815:7:815:12 | strchr | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 |
+| taint.cpp:815:7:815:12 | strchr | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 |
+| taint.cpp:815:7:815:12 | strchr | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 |
+| taint.cpp:815:7:815:12 | strchr | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 |
+| taint.cpp:815:7:815:12 | strchr | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 |
+| taint.cpp:815:7:815:12 | strchr | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 |
+| taint.cpp:815:7:815:12 | strchr | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 |
+| taint.cpp:815:7:815:12 | strchr | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 |
+| taint.cpp:815:7:815:12 | strchr | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 |
+| taint.cpp:815:7:815:12 | strchr | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 |
| taint.cpp:815:7:815:12 | strchr | (LPCOLESTR,int) | CComBSTR | Append | 1 |
| taint.cpp:815:7:815:12 | strchr | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 |
| taint.cpp:815:7:815:12 | strchr | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 |
@@ -10723,8 +12642,10 @@ signatureMatches
| taint.cpp:815:7:815:12 | strchr | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 |
| taint.cpp:815:7:815:12 | strchr | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 |
| taint.cpp:815:7:815:12 | strchr | (acttab *,int) | | acttab_insert | 1 |
+| taint.cpp:815:7:815:12 | strchr | (char *,int) | | Curl_str2addr | 1 |
| taint.cpp:815:7:815:12 | strchr | (char *,int) | | PEM_proc_type | 1 |
| taint.cpp:815:7:815:12 | strchr | (char,int) | CStringT | CStringT | 1 |
+| taint.cpp:815:7:815:12 | strchr | (connectdata *,int) | | Curl_conn_is_ssl | 1 |
| taint.cpp:815:7:815:12 | strchr | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 |
| taint.cpp:815:7:815:12 | strchr | (const BIGNUM *,int) | | BN_get_flags | 1 |
| taint.cpp:815:7:815:12 | strchr | (const BIGNUM *,int) | | BN_is_bit_set | 1 |
@@ -10797,12 +12718,22 @@ signatureMatches
| taint.cpp:815:7:815:12 | strchr | (const unsigned char *,int) | | Jim_GenHashFunction | 1 |
| taint.cpp:815:7:815:12 | strchr | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 |
| taint.cpp:815:7:815:12 | strchr | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 |
+| taint.cpp:815:7:815:12 | strchr | (dynhds *,int) | | Curl_dynhds_set_opts | 1 |
+| taint.cpp:815:7:815:12 | strchr | (gzFile,int) | | gzflush | 1 |
+| taint.cpp:815:7:815:12 | strchr | (gzFile,int) | | gzputc | 1 |
| taint.cpp:815:7:815:12 | strchr | (int *,int) | | X509_PURPOSE_set | 1 |
| taint.cpp:815:7:815:12 | strchr | (int *,int) | | X509_TRUST_set | 1 |
| taint.cpp:815:7:815:12 | strchr | (int,int) | | BN_security_bits | 1 |
| taint.cpp:815:7:815:12 | strchr | (int,int) | | EVP_MD_meth_new | 1 |
| taint.cpp:815:7:815:12 | strchr | (int,int) | | EVP_PKEY_meth_new | 1 |
| taint.cpp:815:7:815:12 | strchr | (int,int) | | acttab_alloc | 1 |
+| taint.cpp:815:7:815:12 | strchr | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 |
+| taint.cpp:815:7:815:12 | strchr | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 |
+| taint.cpp:815:7:815:12 | strchr | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 |
+| taint.cpp:815:7:815:12 | strchr | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 |
+| taint.cpp:815:7:815:12 | strchr | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 |
+| taint.cpp:815:7:815:12 | strchr | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 |
+| taint.cpp:815:7:815:12 | strchr | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 |
| taint.cpp:815:7:815:12 | strchr | (rule *,int) | | Configlist_add | 1 |
| taint.cpp:815:7:815:12 | strchr | (rule *,int) | | Configlist_addbasis | 1 |
| taint.cpp:815:7:815:12 | strchr | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 |
@@ -10837,6 +12768,7 @@ signatureMatches
| taint.cpp:815:7:815:12 | strchr | (unsigned char *,int) | | RAND_priv_bytes | 1 |
| taint.cpp:815:7:815:12 | strchr | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 |
| taint.cpp:815:7:815:12 | strchr | (unsigned short,int) | | dtls1_get_queue_priority | 1 |
+| taint.cpp:815:7:815:12 | strchr | (uv_env_item_t *,int) | | uv_os_free_environ | 1 |
| taint.cpp:815:7:815:12 | strchr | (void *,int) | | DSO_dsobyaddr | 1 |
| taint.cpp:815:7:815:12 | strchr | (void *,int) | | sqlite3_realloc | 1 |
| taint.cpp:815:7:815:12 | strchr | (wchar_t,int) | CStringT | CStringT | 1 |
@@ -10853,6 +12785,9 @@ signatureMatches
| taint.cpp:822:6:822:19 | take_const_ptr | (BIGNUM **,const char *) | | BN_hex2bn | 1 |
| taint.cpp:822:6:822:19 | take_const_ptr | (CONF *,const char *) | | TS_CONF_get_tsa_section | 1 |
| taint.cpp:822:6:822:19 | take_const_ptr | (CONF *,const char *) | | _CONF_new_section | 1 |
+| taint.cpp:822:6:822:19 | take_const_ptr | (CURLU *,const char *) | | Curl_url_set_authority | 1 |
+| taint.cpp:822:6:822:19 | take_const_ptr | (Curl_easy *,const char *) | | Curl_cwriter_get_by_name | 1 |
+| taint.cpp:822:6:822:19 | take_const_ptr | (Curl_easy *,const char *) | | Curl_rtsp_parseheader | 1 |
| taint.cpp:822:6:822:19 | take_const_ptr | (DH_METHOD *,const char *) | | DH_meth_set1_name | 1 |
| taint.cpp:822:6:822:19 | take_const_ptr | (DSA_METHOD *,const char *) | | DSA_meth_set1_name | 1 |
| taint.cpp:822:6:822:19 | take_const_ptr | (DSO *,const char *) | | DSO_convert_filename | 1 |
@@ -10863,10 +12798,14 @@ signatureMatches
| taint.cpp:822:6:822:19 | take_const_ptr | (EVP_PKEY *,const char *) | | CTLOG_new | 1 |
| taint.cpp:822:6:822:19 | take_const_ptr | (EVP_PKEY_CTX *,const char *) | | app_paramgen | 1 |
| taint.cpp:822:6:822:19 | take_const_ptr | (EVP_PKEY_CTX *,const char *) | | pkey_ctrl_string | 1 |
+| taint.cpp:822:6:822:19 | take_const_ptr | (GlobalConfig *,const char *) | | setvariable | 1 |
| taint.cpp:822:6:822:19 | take_const_ptr | (Jim_Interp *,const char *) | | Jim_Eval | 1 |
| taint.cpp:822:6:822:19 | take_const_ptr | (Jim_Interp *,const char *) | | Jim_EvalFile | 1 |
| taint.cpp:822:6:822:19 | take_const_ptr | (Jim_Interp *,const char *) | | Jim_EvalFileGlobal | 1 |
| taint.cpp:822:6:822:19 | take_const_ptr | (Jim_Interp *,const char *) | | Jim_EvalGlobal | 1 |
+| taint.cpp:822:6:822:19 | take_const_ptr | (LIBSSH2_AGENT *,const char *) | | libssh2_agent_set_identity_path | 1 |
+| taint.cpp:822:6:822:19 | take_const_ptr | (LIBSSH2_SESSION *,const char *) | | libssh2_banner_set | 1 |
+| taint.cpp:822:6:822:19 | take_const_ptr | (LIBSSH2_SESSION *,const char *) | | libssh2_session_banner_set | 1 |
| taint.cpp:822:6:822:19 | take_const_ptr | (OPENSSL_DIR_CTX **,const char *) | | OPENSSL_DIR_read | 1 |
| taint.cpp:822:6:822:19 | take_const_ptr | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_appname | 1 |
| taint.cpp:822:6:822:19 | take_const_ptr | (OPENSSL_INIT_SETTINGS *,const char *) | | OPENSSL_INIT_set_config_filename | 1 |
@@ -10923,15 +12862,25 @@ signatureMatches
| taint.cpp:822:6:822:19 | take_const_ptr | (X509_REQ *,const char *) | | x509_req_ctrl_string | 1 |
| taint.cpp:822:6:822:19 | take_const_ptr | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_ip_asc | 1 |
| taint.cpp:822:6:822:19 | take_const_ptr | (X509_VERIFY_PARAM *,const char *) | | X509_VERIFY_PARAM_set1_name | 1 |
+| taint.cpp:822:6:822:19 | take_const_ptr | (char **,const char *) | | Curl_setstropt | 1 |
| taint.cpp:822:6:822:19 | take_const_ptr | (const OSSL_PARAM *,const char *) | | OSSL_PARAM_locate_const | 1 |
+| taint.cpp:822:6:822:19 | take_const_ptr | (const char **,const char *) | | uv__utf8_decode1 | 1 |
| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | Configcmp | 0 |
| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | Configcmp | 1 |
+| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | Curl_timestrcmp | 0 |
+| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | Curl_timestrcmp | 1 |
| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | DES_crypt | 0 |
| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | DES_crypt | 1 |
| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | OPENSSL_strcasecmp | 0 |
| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | OPENSSL_strcasecmp | 1 |
+| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | c_strcasecmp | 0 |
+| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | c_strcasecmp | 1 |
| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | get_passwd | 0 |
| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | get_passwd | 1 |
+| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | gzopen | 0 |
+| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | gzopen | 1 |
+| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | gzopen64 | 0 |
+| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | gzopen64 | 1 |
| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | openssl_fopen | 0 |
| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | openssl_fopen | 1 |
| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | ossl_pem_check_suffix | 0 |
@@ -10942,9 +12891,25 @@ signatureMatches
| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | sqlite3_strglob | 1 |
| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | sqlite3_stricmp | 0 |
| taint.cpp:822:6:822:19 | take_const_ptr | (const char *,const char *) | | sqlite3_stricmp | 1 |
+| taint.cpp:822:6:822:19 | take_const_ptr | (curl_mimepart *,const char *) | | curl_mime_filedata | 1 |
+| taint.cpp:822:6:822:19 | take_const_ptr | (curl_off_t *,const char *) | | str2offset | 1 |
+| taint.cpp:822:6:822:19 | take_const_ptr | (curl_pushheaders *,const char *) | | curl_pushheader_byname | 1 |
+| taint.cpp:822:6:822:19 | take_const_ptr | (curl_slist **,const char *) | | add2list | 1 |
+| taint.cpp:822:6:822:19 | take_const_ptr | (curl_slist *,const char *) | | curl_slist_append | 1 |
+| taint.cpp:822:6:822:19 | take_const_ptr | (dynbuf *,const char *) | | Curl_dyn_add | 1 |
+| taint.cpp:822:6:822:19 | take_const_ptr | (dynbuf *,const char *) | | curlx_dyn_add | 1 |
+| taint.cpp:822:6:822:19 | take_const_ptr | (dynhds *,const char *) | | Curl_dynhds_cget | 1 |
+| taint.cpp:822:6:822:19 | take_const_ptr | (dynhds *,const char *) | | Curl_dynhds_h1_cadd_line | 1 |
+| taint.cpp:822:6:822:19 | take_const_ptr | (gzFile,const char *) | | gzputs | 1 |
| taint.cpp:822:6:822:19 | take_const_ptr | (int,const char *) | | BIO_meth_new | 1 |
+| taint.cpp:822:6:822:19 | take_const_ptr | (int,const char *) | | gzdopen | 1 |
| taint.cpp:822:6:822:19 | take_const_ptr | (lemon *,const char *) | | file_makename | 1 |
+| taint.cpp:822:6:822:19 | take_const_ptr | (long *,const char *) | | secs2ms | 1 |
+| taint.cpp:822:6:822:19 | take_const_ptr | (long *,const char *) | | str2num | 1 |
+| taint.cpp:822:6:822:19 | take_const_ptr | (long *,const char *) | | str2unum | 1 |
| taint.cpp:822:6:822:19 | take_const_ptr | (size_t *,const char *) | | next_protos_parse | 1 |
+| taint.cpp:822:6:822:19 | take_const_ptr | (slist_wc **,const char *) | | easysrc_add | 1 |
+| taint.cpp:822:6:822:19 | take_const_ptr | (slist_wc *,const char *) | | slist_wc_append | 1 |
| taint.cpp:822:6:822:19 | take_const_ptr | (sqlite3 *,const char *) | | sqlite3_declare_vtab | 1 |
| taint.cpp:822:6:822:19 | take_const_ptr | (sqlite3 *,const char *) | | sqlite3_get_clientdata | 1 |
| taint.cpp:822:6:822:19 | take_const_ptr | (sqlite3 *,const char *) | | sqlite3_wal_checkpoint | 1 |
@@ -10955,6 +12920,7 @@ signatureMatches
| taint.cpp:822:6:822:19 | take_const_ptr | (unsigned char *,const char *) | | ossl_a2i_ipadd | 1 |
| taint.cpp:822:6:822:19 | take_const_ptr | (unsigned long *,const char *) | | set_cert_ex | 1 |
| taint.cpp:822:6:822:19 | take_const_ptr | (unsigned long *,const char *) | | set_name_ex | 1 |
+| taint.cpp:822:6:822:19 | take_const_ptr | (uv_pipe_t *,const char *) | | uv_pipe_bind | 1 |
| vector.cpp:13:6:13:9 | sink | (int) | | ASN1_STRING_type_new | 0 |
| vector.cpp:13:6:13:9 | sink | (int) | | ASN1_tag2bit | 0 |
| vector.cpp:13:6:13:9 | sink | (int) | | ASN1_tag2str | 0 |
@@ -10973,6 +12939,9 @@ signatureMatches
| vector.cpp:13:6:13:9 | sink | (int) | | X509_TRUST_get0 | 0 |
| vector.cpp:13:6:13:9 | sink | (int) | | X509_TRUST_get_by_id | 0 |
| vector.cpp:13:6:13:9 | sink | (int) | | X509_VERIFY_PARAM_get0 | 0 |
+| vector.cpp:13:6:13:9 | sink | (int) | | c_tolower | 0 |
+| vector.cpp:13:6:13:9 | sink | (int) | | c_toupper | 0 |
+| vector.cpp:13:6:13:9 | sink | (int) | | curlx_sitouz | 0 |
| vector.cpp:13:6:13:9 | sink | (int) | | evp_pkey_type2name | 0 |
| vector.cpp:13:6:13:9 | sink | (int) | | ossl_cmp_bodytype_to_string | 0 |
| vector.cpp:13:6:13:9 | sink | (int) | | ossl_tolower | 0 |
@@ -10980,6 +12949,12 @@ signatureMatches
| vector.cpp:13:6:13:9 | sink | (int) | | sqlite3_compileoption_get | 0 |
| vector.cpp:13:6:13:9 | sink | (int) | | sqlite3_errstr | 0 |
| vector.cpp:13:6:13:9 | sink | (int) | | tls13_alert_code | 0 |
+| vector.cpp:13:6:13:9 | sink | (int) | | uv__accept | 0 |
+| vector.cpp:13:6:13:9 | sink | (int) | | uv_err_name | 0 |
+| vector.cpp:13:6:13:9 | sink | (int) | | uv_get_osfhandle | 0 |
+| vector.cpp:13:6:13:9 | sink | (int) | | uv_strerror | 0 |
+| vector.cpp:13:6:13:9 | sink | (int) | | uv_translate_sys_error | 0 |
+| vector.cpp:13:6:13:9 | sink | (int) | | zError | 0 |
| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | ASN1_STRING_type_new | 0 |
| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | ASN1_tag2bit | 0 |
| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | ASN1_tag2str | 0 |
@@ -10998,6 +12973,9 @@ signatureMatches
| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | X509_TRUST_get0 | 0 |
| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | X509_TRUST_get_by_id | 0 |
| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | X509_VERIFY_PARAM_get0 | 0 |
+| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | c_tolower | 0 |
+| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | c_toupper | 0 |
+| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | curlx_sitouz | 0 |
| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | evp_pkey_type2name | 0 |
| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | ossl_cmp_bodytype_to_string | 0 |
| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | ossl_tolower | 0 |
@@ -11005,6 +12983,12 @@ signatureMatches
| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | sqlite3_compileoption_get | 0 |
| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | sqlite3_errstr | 0 |
| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | tls13_alert_code | 0 |
+| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | uv__accept | 0 |
+| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | uv_err_name | 0 |
+| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | uv_get_osfhandle | 0 |
+| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | uv_strerror | 0 |
+| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | uv_translate_sys_error | 0 |
+| vector.cpp:16:6:16:37 | test_range_based_for_loop_vector | (int) | | zError | 0 |
| vector.cpp:37:6:37:23 | test_element_taint | (int) | | ASN1_STRING_type_new | 0 |
| vector.cpp:37:6:37:23 | test_element_taint | (int) | | ASN1_tag2bit | 0 |
| vector.cpp:37:6:37:23 | test_element_taint | (int) | | ASN1_tag2str | 0 |
@@ -11023,6 +13007,9 @@ signatureMatches
| vector.cpp:37:6:37:23 | test_element_taint | (int) | | X509_TRUST_get0 | 0 |
| vector.cpp:37:6:37:23 | test_element_taint | (int) | | X509_TRUST_get_by_id | 0 |
| vector.cpp:37:6:37:23 | test_element_taint | (int) | | X509_VERIFY_PARAM_get0 | 0 |
+| vector.cpp:37:6:37:23 | test_element_taint | (int) | | c_tolower | 0 |
+| vector.cpp:37:6:37:23 | test_element_taint | (int) | | c_toupper | 0 |
+| vector.cpp:37:6:37:23 | test_element_taint | (int) | | curlx_sitouz | 0 |
| vector.cpp:37:6:37:23 | test_element_taint | (int) | | evp_pkey_type2name | 0 |
| vector.cpp:37:6:37:23 | test_element_taint | (int) | | ossl_cmp_bodytype_to_string | 0 |
| vector.cpp:37:6:37:23 | test_element_taint | (int) | | ossl_tolower | 0 |
@@ -11030,6 +13017,12 @@ signatureMatches
| vector.cpp:37:6:37:23 | test_element_taint | (int) | | sqlite3_compileoption_get | 0 |
| vector.cpp:37:6:37:23 | test_element_taint | (int) | | sqlite3_errstr | 0 |
| vector.cpp:37:6:37:23 | test_element_taint | (int) | | tls13_alert_code | 0 |
+| vector.cpp:37:6:37:23 | test_element_taint | (int) | | uv__accept | 0 |
+| vector.cpp:37:6:37:23 | test_element_taint | (int) | | uv_err_name | 0 |
+| vector.cpp:37:6:37:23 | test_element_taint | (int) | | uv_get_osfhandle | 0 |
+| vector.cpp:37:6:37:23 | test_element_taint | (int) | | uv_strerror | 0 |
+| vector.cpp:37:6:37:23 | test_element_taint | (int) | | uv_translate_sys_error | 0 |
+| vector.cpp:37:6:37:23 | test_element_taint | (int) | | zError | 0 |
| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (ASN1_STRING *,int) | | ASN1_STRING_length_set | 1 |
| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (ASYNC_WAIT_CTX *,int) | | ASYNC_WAIT_CTX_set_status | 1 |
| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (BIGNUM *,int) | | BN_clear_bit | 1 |
@@ -11048,6 +13041,8 @@ signatureMatches
| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (BIO *,int) | | TXT_DB_read | 1 |
| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (CMS_SignerInfo *,int) | | CMS_signed_delete_attr | 1 |
| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (CMS_SignerInfo *,int) | | CMS_unsigned_delete_attr | 1 |
+| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (CURL *,int) | | curl_easy_pause | 1 |
+| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (Curl_easy *,int) | | Curl_conn_get_socket | 1 |
| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (DH *,int) | | DH_clear_flags | 1 |
| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (DH *,int) | | DH_set_flags | 1 |
| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (DH_METHOD *,int) | | DH_meth_set_flags | 1 |
@@ -11091,6 +13086,17 @@ signatureMatches
| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (FFC_PARAMS *,int) | | ossl_ffc_params_set_gindex | 1 |
| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (FFC_PARAMS *,int) | | ossl_ffc_params_set_h | 1 |
| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (FFC_PARAMS *,int) | | ossl_ffc_params_set_pcounter | 1 |
+| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 |
+| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 |
+| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 |
+| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 |
+| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 |
+| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 |
+| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 |
+| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 |
+| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 |
+| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 |
+| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 |
| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (LPCOLESTR,int) | CComBSTR | Append | 1 |
| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_delete_ext | 1 |
| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (OCSP_BASICRESP *,int) | | OCSP_BASICRESP_get_ext | 1 |
@@ -11208,8 +13214,10 @@ signatureMatches
| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_purpose | 1 |
| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (X509_VERIFY_PARAM *,int) | | X509_VERIFY_PARAM_set_trust | 1 |
| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (acttab *,int) | | acttab_insert | 1 |
+| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (char *,int) | | Curl_str2addr | 1 |
| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (char *,int) | | PEM_proc_type | 1 |
| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (char,int) | CStringT | CStringT | 1 |
+| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (connectdata *,int) | | Curl_conn_is_ssl | 1 |
| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const ASN1_BIT_STRING *,int) | | ASN1_BIT_STRING_get_bit | 1 |
| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const BIGNUM *,int) | | BN_get_flags | 1 |
| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const BIGNUM *,int) | | BN_is_bit_set | 1 |
@@ -11276,12 +13284,22 @@ signatureMatches
| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const unsigned char *,int) | | Jim_GenHashFunction | 1 |
| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const unsigned char *,int) | | OPENSSL_uni2asc | 1 |
| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (const unsigned char *,int) | | OPENSSL_uni2utf8 | 1 |
+| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (dynhds *,int) | | Curl_dynhds_set_opts | 1 |
+| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (gzFile,int) | | gzflush | 1 |
+| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (gzFile,int) | | gzputc | 1 |
| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (int *,int) | | X509_PURPOSE_set | 1 |
| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (int *,int) | | X509_TRUST_set | 1 |
| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (int,int) | | BN_security_bits | 1 |
| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (int,int) | | EVP_MD_meth_new | 1 |
| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (int,int) | | EVP_PKEY_meth_new | 1 |
| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (int,int) | | acttab_alloc | 1 |
+| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 |
+| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 |
+| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 |
+| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 |
+| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 |
+| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 |
+| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 |
| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (rule *,int) | | Configlist_add | 1 |
| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (rule *,int) | | Configlist_addbasis | 1 |
| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (sqlite3 *,int) | | sqlite3_busy_timeout | 1 |
@@ -11316,6 +13334,7 @@ signatureMatches
| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (unsigned char *,int) | | RAND_priv_bytes | 1 |
| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (unsigned char *,int) | | ossl_ipaddr_to_asc | 1 |
| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (unsigned short,int) | | dtls1_get_queue_priority | 1 |
+| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (uv_env_item_t *,int) | | uv_os_free_environ | 1 |
| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (void *,int) | | DSO_dsobyaddr | 1 |
| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (void *,int) | | sqlite3_realloc | 1 |
| vector.cpp:333:6:333:35 | vector_iterator_assign_wrapper | (wchar_t,int) | CStringT | CStringT | 1 |
@@ -11337,6 +13356,9 @@ signatureMatches
| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | X509_TRUST_get0 | 0 |
| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | X509_TRUST_get_by_id | 0 |
| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | X509_VERIFY_PARAM_get0 | 0 |
+| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | c_tolower | 0 |
+| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | c_toupper | 0 |
+| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | curlx_sitouz | 0 |
| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | evp_pkey_type2name | 0 |
| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | ossl_cmp_bodytype_to_string | 0 |
| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | ossl_tolower | 0 |
@@ -11344,6 +13366,12 @@ signatureMatches
| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | sqlite3_compileoption_get | 0 |
| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | sqlite3_errstr | 0 |
| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | tls13_alert_code | 0 |
+| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | uv__accept | 0 |
+| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | uv_err_name | 0 |
+| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | uv_get_osfhandle | 0 |
+| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | uv_strerror | 0 |
+| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | uv_translate_sys_error | 0 |
+| vector.cpp:337:6:337:32 | test_vector_output_iterator | (int) | | zError | 0 |
| vector.cpp:417:6:417:25 | test_vector_inserter | (char *) | | SRP_VBASE_new | 0 |
| vector.cpp:417:6:417:25 | test_vector_inserter | (char *) | | defossilize | 0 |
| vector.cpp:417:6:417:25 | test_vector_inserter | (char *) | | make_uppercase | 0 |
@@ -11367,9 +13395,25 @@ signatureMatches
| vector.cpp:454:7:454:12 | memcpy | (CMAC_CTX *,const void *,size_t) | | CMAC_Update | 1 |
| vector.cpp:454:7:454:12 | memcpy | (CMAC_CTX *,const void *,size_t) | | CMAC_Update | 2 |
| vector.cpp:454:7:454:12 | memcpy | (CMS_RecipientInfo *,const unsigned char *,size_t) | | CMS_RecipientInfo_kekri_id_cmp | 2 |
+| vector.cpp:454:7:454:12 | memcpy | (Curl_easy *,unsigned char *,size_t) | | Curl_rand_alnum | 2 |
+| vector.cpp:454:7:454:12 | memcpy | (Curl_easy *,unsigned char *,size_t) | | Curl_rand_bytes | 2 |
+| vector.cpp:454:7:454:12 | memcpy | (Curl_easy *,unsigned char *,size_t) | | Curl_rand_hex | 2 |
| vector.cpp:454:7:454:12 | memcpy | (DH *,const unsigned char *,size_t) | | ossl_dh_buf2key | 2 |
| vector.cpp:454:7:454:12 | memcpy | (EC_GROUP *,const unsigned char *,size_t) | | EC_GROUP_set_seed | 2 |
| vector.cpp:454:7:454:12 | memcpy | (EC_KEY *,const unsigned char *,size_t) | | ossl_ec_key_simple_oct2priv | 2 |
+| vector.cpp:454:7:454:12 | memcpy | (EVP_MAC_CTX **,const void *,size_t) | | _libssh2_hmac_update | 1 |
+| vector.cpp:454:7:454:12 | memcpy | (EVP_MAC_CTX **,const void *,size_t) | | _libssh2_hmac_update | 2 |
+| vector.cpp:454:7:454:12 | memcpy | (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha1_init | 2 |
+| vector.cpp:454:7:454:12 | memcpy | (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha256_init | 2 |
+| vector.cpp:454:7:454:12 | memcpy | (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha512_init | 2 |
+| vector.cpp:454:7:454:12 | memcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha1_update | 1 |
+| vector.cpp:454:7:454:12 | memcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha1_update | 2 |
+| vector.cpp:454:7:454:12 | memcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha256_update | 1 |
+| vector.cpp:454:7:454:12 | memcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha256_update | 2 |
+| vector.cpp:454:7:454:12 | memcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha384_update | 1 |
+| vector.cpp:454:7:454:12 | memcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha384_update | 2 |
+| vector.cpp:454:7:454:12 | memcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha512_update | 1 |
+| vector.cpp:454:7:454:12 | memcpy | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha512_update | 2 |
| vector.cpp:454:7:454:12 | memcpy | (EVP_MD_CTX *,const unsigned char *,size_t) | | EVP_DigestVerifyFinal | 2 |
| vector.cpp:454:7:454:12 | memcpy | (EVP_PKEY *,char *,size_t) | | EVP_PKEY_get_default_digest_name | 2 |
| vector.cpp:454:7:454:12 | memcpy | (EVP_RAND_CTX *,unsigned char *,size_t) | | EVP_RAND_nonce | 2 |
@@ -11382,6 +13426,9 @@ signatureMatches
| vector.cpp:454:7:454:12 | memcpy | (KECCAK1600_CTX *,const void *,size_t) | | ossl_sha3_update | 2 |
| vector.cpp:454:7:454:12 | memcpy | (KECCAK1600_CTX *,unsigned char *,size_t) | | ossl_sha3_squeeze | 2 |
| vector.cpp:454:7:454:12 | memcpy | (KECCAK1600_CTX *,unsigned char,size_t) | | ossl_sha3_init | 2 |
+| vector.cpp:454:7:454:12 | memcpy | (LIBSSH2_CHANNEL *,const char *,size_t) | | libssh2_channel_signal_ex | 2 |
+| vector.cpp:454:7:454:12 | memcpy | (LIBSSH2_SFTP_HANDLE *,char *,size_t) | | libssh2_sftp_read | 2 |
+| vector.cpp:454:7:454:12 | memcpy | (LIBSSH2_SFTP_HANDLE *,const char *,size_t) | | libssh2_sftp_write | 2 |
| vector.cpp:454:7:454:12 | memcpy | (MD4_CTX *,const void *,size_t) | | MD4_Update | 1 |
| vector.cpp:454:7:454:12 | memcpy | (MD4_CTX *,const void *,size_t) | | MD4_Update | 2 |
| vector.cpp:454:7:454:12 | memcpy | (MD4_CTX *,const void *,size_t) | | md4_block_data_order | 1 |
@@ -11393,6 +13440,7 @@ signatureMatches
| vector.cpp:454:7:454:12 | memcpy | (MDC2_CTX *,const unsigned char *,size_t) | | MDC2_Update | 2 |
| vector.cpp:454:7:454:12 | memcpy | (ML_DSA_KEY *,const uint8_t *,size_t) | | ossl_ml_dsa_pk_decode | 2 |
| vector.cpp:454:7:454:12 | memcpy | (ML_DSA_KEY *,const uint8_t *,size_t) | | ossl_ml_dsa_sk_decode | 2 |
+| vector.cpp:454:7:454:12 | memcpy | (MemoryManager *,const uint8_t *,size_t) | | CreatePreparedDictionary | 2 |
| vector.cpp:454:7:454:12 | memcpy | (OCB128_CONTEXT *,const unsigned char *,size_t) | | CRYPTO_ocb128_aad | 2 |
| vector.cpp:454:7:454:12 | memcpy | (OCB128_CONTEXT *,unsigned char *,size_t) | | CRYPTO_ocb128_tag | 2 |
| vector.cpp:454:7:454:12 | memcpy | (OSSL_HPKE_CTX *,const unsigned char *,size_t) | | OSSL_HPKE_CTX_set1_ikme | 2 |
@@ -11480,8 +13528,16 @@ signatureMatches
| vector.cpp:454:7:454:12 | memcpy | (X509_VERIFY_PARAM *,const char *,size_t) | | X509_VERIFY_PARAM_set1_email | 2 |
| vector.cpp:454:7:454:12 | memcpy | (X509_VERIFY_PARAM *,const char *,size_t) | | X509_VERIFY_PARAM_set1_host | 2 |
| vector.cpp:454:7:454:12 | memcpy | (X509_VERIFY_PARAM *,const unsigned char *,size_t) | | X509_VERIFY_PARAM_set1_ip | 2 |
+| vector.cpp:454:7:454:12 | memcpy | (bufc_pool *,size_t,size_t) | | Curl_bufcp_init | 2 |
+| vector.cpp:454:7:454:12 | memcpy | (bufq *,size_t,size_t) | | Curl_bufq_init | 2 |
+| vector.cpp:454:7:454:12 | memcpy | (bufref *,const void *,size_t) | | Curl_bufref_memdup | 1 |
+| vector.cpp:454:7:454:12 | memcpy | (bufref *,const void *,size_t) | | Curl_bufref_memdup | 2 |
+| vector.cpp:454:7:454:12 | memcpy | (char **,size_t *,size_t) | | Curl_str_number | 2 |
+| vector.cpp:454:7:454:12 | memcpy | (char *,const char *,size_t) | | Curl_strntolower | 2 |
+| vector.cpp:454:7:454:12 | memcpy | (char *,const char *,size_t) | | Curl_strntoupper | 2 |
| vector.cpp:454:7:454:12 | memcpy | (char *,const char *,size_t) | | OPENSSL_strlcat | 2 |
| vector.cpp:454:7:454:12 | memcpy | (char *,const char *,size_t) | | OPENSSL_strlcpy | 2 |
+| vector.cpp:454:7:454:12 | memcpy | (char *,const char *,size_t) | | uv__strscpy | 2 |
| vector.cpp:454:7:454:12 | memcpy | (const CTLOG_STORE *,const uint8_t *,size_t) | | CTLOG_STORE_get0_log_by_id | 2 |
| vector.cpp:454:7:454:12 | memcpy | (const EC_KEY *,unsigned char *,size_t) | | ossl_ec_key_simple_priv2oct | 2 |
| vector.cpp:454:7:454:12 | memcpy | (const EVP_MD *,const OSSL_ITEM *,size_t) | | ossl_digest_md_to_nid | 2 |
@@ -11495,21 +13551,65 @@ signatureMatches
| vector.cpp:454:7:454:12 | memcpy | (const SSL_SESSION *,unsigned char *,size_t) | | SSL_SESSION_get_master_key | 2 |
| vector.cpp:454:7:454:12 | memcpy | (const char *,char **,size_t) | | OSSL_PARAM_construct_utf8_ptr | 2 |
| vector.cpp:454:7:454:12 | memcpy | (const char *,char *,size_t) | | OSSL_PARAM_construct_utf8_string | 2 |
+| vector.cpp:454:7:454:12 | memcpy | (const char *,char *,size_t) | | getpass_r | 2 |
| vector.cpp:454:7:454:12 | memcpy | (const char *,const char *,size_t) | | OPENSSL_strncasecmp | 2 |
+| vector.cpp:454:7:454:12 | memcpy | (const char *,const char *,size_t) | | c_strncasecmp | 2 |
+| vector.cpp:454:7:454:12 | memcpy | (const char *,uint16_t *,size_t) | | uv_wtf8_to_utf16 | 2 |
| vector.cpp:454:7:454:12 | memcpy | (const char *,unsigned char *,size_t) | | OSSL_PARAM_construct_BN | 2 |
| vector.cpp:454:7:454:12 | memcpy | (const char *,void **,size_t) | | OSSL_PARAM_construct_octet_ptr | 2 |
| vector.cpp:454:7:454:12 | memcpy | (const char *,void *,size_t) | | OSSL_PARAM_construct_octet_string | 2 |
+| vector.cpp:454:7:454:12 | memcpy | (const char *,void *,size_t) | | uv__random_readpath | 2 |
+| vector.cpp:454:7:454:12 | memcpy | (const sockaddr *,char *,size_t) | | uv_ip_name | 2 |
+| vector.cpp:454:7:454:12 | memcpy | (const sockaddr_in6 *,char *,size_t) | | uv_ip6_name | 2 |
+| vector.cpp:454:7:454:12 | memcpy | (const sockaddr_in *,char *,size_t) | | uv_ip4_name | 2 |
| vector.cpp:454:7:454:12 | memcpy | (const unsigned char *,size_t,size_t) | | ossl_rand_pool_attach | 2 |
+| vector.cpp:454:7:454:12 | memcpy | (const void *,const void *,size_t) | | chachapoly_timingsafe_bcmp | 1 |
+| vector.cpp:454:7:454:12 | memcpy | (const void *,const void *,size_t) | | chachapoly_timingsafe_bcmp | 2 |
+| vector.cpp:454:7:454:12 | memcpy | (curl_mimepart *,const char *,size_t) | | curl_mime_data | 2 |
| vector.cpp:454:7:454:12 | memcpy | (curve448_scalar_t,const unsigned char *,size_t) | | ossl_curve448_scalar_decode_long | 2 |
+| vector.cpp:454:7:454:12 | memcpy | (dynbuf *,const void *,size_t) | | Curl_dyn_addn | 1 |
+| vector.cpp:454:7:454:12 | memcpy | (dynbuf *,const void *,size_t) | | Curl_dyn_addn | 2 |
+| vector.cpp:454:7:454:12 | memcpy | (dynbuf *,const void *,size_t) | | curlx_dyn_addn | 1 |
+| vector.cpp:454:7:454:12 | memcpy | (dynbuf *,const void *,size_t) | | curlx_dyn_addn | 2 |
+| vector.cpp:454:7:454:12 | memcpy | (dynhds *,const char *,size_t) | | Curl_dynhds_get | 2 |
+| vector.cpp:454:7:454:12 | memcpy | (dynhds *,const char *,size_t) | | Curl_dynhds_h1_add_line | 2 |
+| vector.cpp:454:7:454:12 | memcpy | (dynhds *,size_t,size_t) | | Curl_dynhds_init | 2 |
+| vector.cpp:454:7:454:12 | memcpy | (int *,const char *,size_t) | | Curl_http_decode_status | 2 |
| vector.cpp:454:7:454:12 | memcpy | (int *,int *,size_t) | | EVP_PBE_get | 2 |
+| vector.cpp:454:7:454:12 | memcpy | (int,char *,size_t) | | Curl_strerror | 2 |
+| vector.cpp:454:7:454:12 | memcpy | (int,char *,size_t) | | uv_err_name_r | 2 |
+| vector.cpp:454:7:454:12 | memcpy | (int,char *,size_t) | | uv_strerror_r | 2 |
+| vector.cpp:454:7:454:12 | memcpy | (int,int,size_t) | | BrotliEncoderEstimatePeakMemoryUsage | 2 |
+| vector.cpp:454:7:454:12 | memcpy | (nghttp2_buf *,uint8_t *,size_t) | | nghttp2_buf_wrap_init | 2 |
+| vector.cpp:454:7:454:12 | memcpy | (nghttp2_extension *,nghttp2_origin_entry *,size_t) | | nghttp2_frame_origin_init | 2 |
+| vector.cpp:454:7:454:12 | memcpy | (nghttp2_extpri *,const uint8_t *,size_t) | | nghttp2_extpri_parse_priority | 2 |
+| vector.cpp:454:7:454:12 | memcpy | (nghttp2_extpri *,const uint8_t *,size_t) | | nghttp2_http_parse_priority | 2 |
+| vector.cpp:454:7:454:12 | memcpy | (nghttp2_hd_deflater *,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_bound | 2 |
+| vector.cpp:454:7:454:12 | memcpy | (nghttp2_session *,const uint8_t *,size_t) | | nghttp2_session_mem_recv | 2 |
+| vector.cpp:454:7:454:12 | memcpy | (nghttp2_session *,const uint8_t *,size_t) | | nghttp2_session_mem_recv2 | 2 |
+| vector.cpp:454:7:454:12 | memcpy | (nghttp2_session *,int32_t,size_t) | | nghttp2_session_consume | 2 |
+| vector.cpp:454:7:454:12 | memcpy | (nghttp2_session *,nghttp2_settings_entry *,size_t) | | nghttp2_session_update_local_settings | 2 |
+| vector.cpp:454:7:454:12 | memcpy | (nghttp2_settings *,nghttp2_settings_entry *,size_t) | | nghttp2_frame_unpack_settings_payload | 2 |
+| vector.cpp:454:7:454:12 | memcpy | (sfparse_parser *,const uint8_t *,size_t) | | sfparse_parser_init | 2 |
| vector.cpp:454:7:454:12 | memcpy | (size_t,OSSL_QTX_IOVEC *,size_t) | | ossl_quic_sstream_adjust_iov | 2 |
| vector.cpp:454:7:454:12 | memcpy | (stack_st_SCT **,const unsigned char **,size_t) | | o2i_SCT_LIST | 2 |
+| vector.cpp:454:7:454:12 | memcpy | (ucs4_t *,const uint8_t *,size_t) | | u8_mbtouc_aux | 2 |
+| vector.cpp:454:7:454:12 | memcpy | (uint8_t *,const nghttp2_settings_entry *,size_t) | | nghttp2_frame_pack_settings_payload | 2 |
+| vector.cpp:454:7:454:12 | memcpy | (uint8_t *,const void *,size_t) | | nghttp2_cpymem | 1 |
+| vector.cpp:454:7:454:12 | memcpy | (uint8_t *,const void *,size_t) | | nghttp2_cpymem | 2 |
+| vector.cpp:454:7:454:12 | memcpy | (unsigned char **,const char *,size_t) | | _libssh2_store_str | 2 |
+| vector.cpp:454:7:454:12 | memcpy | (unsigned char **,const unsigned char *,size_t) | | _libssh2_store_bignum2_bytes | 2 |
| vector.cpp:454:7:454:12 | memcpy | (unsigned char *,const unsigned char *,size_t) | | BUF_reverse | 2 |
| vector.cpp:454:7:454:12 | memcpy | (unsigned char *,int,unsigned long) | | UTF8_putc | 2 |
| vector.cpp:454:7:454:12 | memcpy | (unsigned char *,size_t *,size_t) | | ossl_cipher_padblock | 2 |
| vector.cpp:454:7:454:12 | memcpy | (unsigned char *,size_t *,size_t) | | ossl_cipher_unpadblock | 2 |
+| vector.cpp:454:7:454:12 | memcpy | (uv_thread_t *,char *,size_t) | | uv__thread_getname | 2 |
+| vector.cpp:454:7:454:12 | memcpy | (uv_thread_t *,char *,size_t) | | uv_thread_getaffinity | 2 |
+| vector.cpp:454:7:454:12 | memcpy | (uv_thread_t *,char *,size_t) | | uv_thread_getname | 2 |
+| vector.cpp:454:7:454:12 | memcpy | (void *,size_t,size_t) | | Curl_hash_str | 2 |
| vector.cpp:454:7:454:12 | memcpy | (void *,unsigned char *,size_t) | | ossl_drbg_clear_seed | 2 |
| zmq.cpp:14:5:14:21 | zmq_msg_init_data | (BIO *,const EVP_PKEY *,int,pem_password_cb *,void *) | | i2b_PVK_bio | 4 |
+| zmq.cpp:14:5:14:21 | zmq_msg_init_data | (BrotliDecoderState *,BrotliDecoderStateInternal *,brotli_decoder_metadata_start_func,brotli_decoder_metadata_chunk_func,void *) | | BrotliDecoderSetMetadataCallbacks | 4 |
| zmq.cpp:14:5:14:21 | zmq_msg_init_data | (EVP_CIPHER_INFO *,unsigned char *,long *,pem_password_cb *,void *) | | PEM_do_header | 4 |
| zmq.cpp:14:5:14:21 | zmq_msg_init_data | (EVP_PKEY *,EVP_KEYMGMT *,void *,OSSL_CALLBACK *,void *) | | evp_keymgmt_util_gen | 4 |
| zmq.cpp:14:5:14:21 | zmq_msg_init_data | (EVP_PKEY_CTX *,int,int,int,void *) | | RSA_pkey_ctx_ctrl | 4 |
@@ -11519,6 +13619,9 @@ signatureMatches
| zmq.cpp:14:5:14:21 | zmq_msg_init_data | (const BIGNUM *,int,..(*)(..),BN_CTX *,void *) | | BN_is_prime | 4 |
| zmq.cpp:14:5:14:21 | zmq_msg_init_data | (const char *,const UI_METHOD *,void *,OSSL_STORE_post_process_info_fn,void *) | | OSSL_STORE_open | 4 |
| zmq.cpp:14:5:14:21 | zmq_msg_init_data | (const char *,int,int,..(*)(..),void *) | | CONF_parse_list | 4 |
+| zmq.cpp:14:5:14:21 | zmq_msg_init_data | (nghttp2_extension *,uint8_t,uint8_t,int32_t,void *) | | nghttp2_frame_extension_init | 4 |
+| zmq.cpp:14:5:14:21 | zmq_msg_init_data | (nghttp2_session *,const uint8_t *,size_t,int,void *) | | nghttp2_session_upgrade2 | 4 |
+| zmq.cpp:14:5:14:21 | zmq_msg_init_data | (nghttp2_session *,int32_t,uint8_t,nghttp2_stream_state,void *) | | nghttp2_session_open_stream | 4 |
| zmq.cpp:14:5:14:21 | zmq_msg_init_data | (sqlite3 *,const char *,const char *,..(*)(..),void *) | | recoverInit | 4 |
| zmq.cpp:17:6:17:13 | test_zmc | (BIO *,OCSP_REQUEST *,unsigned long) | | OCSP_REQUEST_print | 2 |
| zmq.cpp:17:6:17:13 | test_zmc | (BIO *,OCSP_RESPONSE *,unsigned long) | | OCSP_RESPONSE_print | 2 |
@@ -11535,9 +13638,20 @@ signatureMatches
| zmq.cpp:17:6:17:13 | test_zmc | (CCM128_CONTEXT *,unsigned char *,size_t) | | CRYPTO_ccm128_tag | 2 |
| zmq.cpp:17:6:17:13 | test_zmc | (CMAC_CTX *,const void *,size_t) | | CMAC_Update | 2 |
| zmq.cpp:17:6:17:13 | test_zmc | (CMS_RecipientInfo *,const unsigned char *,size_t) | | CMS_RecipientInfo_kekri_id_cmp | 2 |
+| zmq.cpp:17:6:17:13 | test_zmc | (Curl_easy *,unsigned char *,size_t) | | Curl_rand_alnum | 2 |
+| zmq.cpp:17:6:17:13 | test_zmc | (Curl_easy *,unsigned char *,size_t) | | Curl_rand_bytes | 2 |
+| zmq.cpp:17:6:17:13 | test_zmc | (Curl_easy *,unsigned char *,size_t) | | Curl_rand_hex | 2 |
| zmq.cpp:17:6:17:13 | test_zmc | (DH *,const unsigned char *,size_t) | | ossl_dh_buf2key | 2 |
| zmq.cpp:17:6:17:13 | test_zmc | (EC_GROUP *,const unsigned char *,size_t) | | EC_GROUP_set_seed | 2 |
| zmq.cpp:17:6:17:13 | test_zmc | (EC_KEY *,const unsigned char *,size_t) | | ossl_ec_key_simple_oct2priv | 2 |
+| zmq.cpp:17:6:17:13 | test_zmc | (EVP_MAC_CTX **,const void *,size_t) | | _libssh2_hmac_update | 2 |
+| zmq.cpp:17:6:17:13 | test_zmc | (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha1_init | 2 |
+| zmq.cpp:17:6:17:13 | test_zmc | (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha256_init | 2 |
+| zmq.cpp:17:6:17:13 | test_zmc | (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha512_init | 2 |
+| zmq.cpp:17:6:17:13 | test_zmc | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha1_update | 2 |
+| zmq.cpp:17:6:17:13 | test_zmc | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha256_update | 2 |
+| zmq.cpp:17:6:17:13 | test_zmc | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha384_update | 2 |
+| zmq.cpp:17:6:17:13 | test_zmc | (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha512_update | 2 |
| zmq.cpp:17:6:17:13 | test_zmc | (EVP_MD_CTX *,const unsigned char *,size_t) | | EVP_DigestVerifyFinal | 2 |
| zmq.cpp:17:6:17:13 | test_zmc | (EVP_PKEY *,char *,size_t) | | EVP_PKEY_get_default_digest_name | 1 |
| zmq.cpp:17:6:17:13 | test_zmc | (EVP_PKEY *,char *,size_t) | | EVP_PKEY_get_default_digest_name | 2 |
@@ -11550,6 +13664,10 @@ signatureMatches
| zmq.cpp:17:6:17:13 | test_zmc | (KECCAK1600_CTX *,const void *,size_t) | | ossl_sha3_update | 2 |
| zmq.cpp:17:6:17:13 | test_zmc | (KECCAK1600_CTX *,unsigned char *,size_t) | | ossl_sha3_squeeze | 2 |
| zmq.cpp:17:6:17:13 | test_zmc | (KECCAK1600_CTX *,unsigned char,size_t) | | ossl_sha3_init | 2 |
+| zmq.cpp:17:6:17:13 | test_zmc | (LIBSSH2_CHANNEL *,const char *,size_t) | | libssh2_channel_signal_ex | 2 |
+| zmq.cpp:17:6:17:13 | test_zmc | (LIBSSH2_SFTP_HANDLE *,char *,size_t) | | libssh2_sftp_read | 1 |
+| zmq.cpp:17:6:17:13 | test_zmc | (LIBSSH2_SFTP_HANDLE *,char *,size_t) | | libssh2_sftp_read | 2 |
+| zmq.cpp:17:6:17:13 | test_zmc | (LIBSSH2_SFTP_HANDLE *,const char *,size_t) | | libssh2_sftp_write | 2 |
| zmq.cpp:17:6:17:13 | test_zmc | (MD4_CTX *,const void *,size_t) | | MD4_Update | 2 |
| zmq.cpp:17:6:17:13 | test_zmc | (MD4_CTX *,const void *,size_t) | | md4_block_data_order | 2 |
| zmq.cpp:17:6:17:13 | test_zmc | (MD5_CTX *,const void *,size_t) | | MD5_Update | 2 |
@@ -11557,6 +13675,7 @@ signatureMatches
| zmq.cpp:17:6:17:13 | test_zmc | (MDC2_CTX *,const unsigned char *,size_t) | | MDC2_Update | 2 |
| zmq.cpp:17:6:17:13 | test_zmc | (ML_DSA_KEY *,const uint8_t *,size_t) | | ossl_ml_dsa_pk_decode | 2 |
| zmq.cpp:17:6:17:13 | test_zmc | (ML_DSA_KEY *,const uint8_t *,size_t) | | ossl_ml_dsa_sk_decode | 2 |
+| zmq.cpp:17:6:17:13 | test_zmc | (MemoryManager *,const uint8_t *,size_t) | | CreatePreparedDictionary | 2 |
| zmq.cpp:17:6:17:13 | test_zmc | (OCB128_CONTEXT *,const unsigned char *,size_t) | | CRYPTO_ocb128_aad | 2 |
| zmq.cpp:17:6:17:13 | test_zmc | (OCB128_CONTEXT *,unsigned char *,size_t) | | CRYPTO_ocb128_tag | 2 |
| zmq.cpp:17:6:17:13 | test_zmc | (OSSL_HPKE_CTX *,const unsigned char *,size_t) | | OSSL_HPKE_CTX_set1_ikme | 2 |
@@ -11627,8 +13746,15 @@ signatureMatches
| zmq.cpp:17:6:17:13 | test_zmc | (X509_VERIFY_PARAM *,const char *,size_t) | | X509_VERIFY_PARAM_set1_email | 2 |
| zmq.cpp:17:6:17:13 | test_zmc | (X509_VERIFY_PARAM *,const char *,size_t) | | X509_VERIFY_PARAM_set1_host | 2 |
| zmq.cpp:17:6:17:13 | test_zmc | (X509_VERIFY_PARAM *,const unsigned char *,size_t) | | X509_VERIFY_PARAM_set1_ip | 2 |
+| zmq.cpp:17:6:17:13 | test_zmc | (bufc_pool *,size_t,size_t) | | Curl_bufcp_init | 2 |
+| zmq.cpp:17:6:17:13 | test_zmc | (bufq *,size_t,size_t) | | Curl_bufq_init | 2 |
+| zmq.cpp:17:6:17:13 | test_zmc | (bufref *,const void *,size_t) | | Curl_bufref_memdup | 2 |
+| zmq.cpp:17:6:17:13 | test_zmc | (char **,size_t *,size_t) | | Curl_str_number | 2 |
+| zmq.cpp:17:6:17:13 | test_zmc | (char *,const char *,size_t) | | Curl_strntolower | 2 |
+| zmq.cpp:17:6:17:13 | test_zmc | (char *,const char *,size_t) | | Curl_strntoupper | 2 |
| zmq.cpp:17:6:17:13 | test_zmc | (char *,const char *,size_t) | | OPENSSL_strlcat | 2 |
| zmq.cpp:17:6:17:13 | test_zmc | (char *,const char *,size_t) | | OPENSSL_strlcpy | 2 |
+| zmq.cpp:17:6:17:13 | test_zmc | (char *,const char *,size_t) | | uv__strscpy | 2 |
| zmq.cpp:17:6:17:13 | test_zmc | (const CTLOG_STORE *,const uint8_t *,size_t) | | CTLOG_STORE_get0_log_by_id | 2 |
| zmq.cpp:17:6:17:13 | test_zmc | (const EC_KEY *,unsigned char *,size_t) | | ossl_ec_key_simple_priv2oct | 2 |
| zmq.cpp:17:6:17:13 | test_zmc | (const EVP_MD *,const OSSL_ITEM *,size_t) | | ossl_digest_md_to_nid | 2 |
@@ -11645,19 +13771,68 @@ signatureMatches
| zmq.cpp:17:6:17:13 | test_zmc | (const char *,char **,size_t) | | OSSL_PARAM_construct_utf8_ptr | 2 |
| zmq.cpp:17:6:17:13 | test_zmc | (const char *,char *,size_t) | | OSSL_PARAM_construct_utf8_string | 1 |
| zmq.cpp:17:6:17:13 | test_zmc | (const char *,char *,size_t) | | OSSL_PARAM_construct_utf8_string | 2 |
+| zmq.cpp:17:6:17:13 | test_zmc | (const char *,char *,size_t) | | getpass_r | 1 |
+| zmq.cpp:17:6:17:13 | test_zmc | (const char *,char *,size_t) | | getpass_r | 2 |
| zmq.cpp:17:6:17:13 | test_zmc | (const char *,const char *,size_t) | | OPENSSL_strncasecmp | 2 |
+| zmq.cpp:17:6:17:13 | test_zmc | (const char *,const char *,size_t) | | c_strncasecmp | 2 |
+| zmq.cpp:17:6:17:13 | test_zmc | (const char *,uint16_t *,size_t) | | uv_wtf8_to_utf16 | 2 |
| zmq.cpp:17:6:17:13 | test_zmc | (const char *,unsigned char *,size_t) | | OSSL_PARAM_construct_BN | 2 |
| zmq.cpp:17:6:17:13 | test_zmc | (const char *,void **,size_t) | | OSSL_PARAM_construct_octet_ptr | 2 |
| zmq.cpp:17:6:17:13 | test_zmc | (const char *,void *,size_t) | | OSSL_PARAM_construct_octet_string | 2 |
+| zmq.cpp:17:6:17:13 | test_zmc | (const char *,void *,size_t) | | uv__random_readpath | 2 |
+| zmq.cpp:17:6:17:13 | test_zmc | (const sockaddr *,char *,size_t) | | uv_ip_name | 1 |
+| zmq.cpp:17:6:17:13 | test_zmc | (const sockaddr *,char *,size_t) | | uv_ip_name | 2 |
+| zmq.cpp:17:6:17:13 | test_zmc | (const sockaddr_in6 *,char *,size_t) | | uv_ip6_name | 1 |
+| zmq.cpp:17:6:17:13 | test_zmc | (const sockaddr_in6 *,char *,size_t) | | uv_ip6_name | 2 |
+| zmq.cpp:17:6:17:13 | test_zmc | (const sockaddr_in *,char *,size_t) | | uv_ip4_name | 1 |
+| zmq.cpp:17:6:17:13 | test_zmc | (const sockaddr_in *,char *,size_t) | | uv_ip4_name | 2 |
| zmq.cpp:17:6:17:13 | test_zmc | (const unsigned char *,size_t,size_t) | | ossl_rand_pool_attach | 2 |
+| zmq.cpp:17:6:17:13 | test_zmc | (const void *,const void *,size_t) | | chachapoly_timingsafe_bcmp | 2 |
+| zmq.cpp:17:6:17:13 | test_zmc | (curl_mimepart *,const char *,size_t) | | curl_mime_data | 2 |
| zmq.cpp:17:6:17:13 | test_zmc | (curve448_scalar_t,const unsigned char *,size_t) | | ossl_curve448_scalar_decode_long | 2 |
+| zmq.cpp:17:6:17:13 | test_zmc | (dynbuf *,const void *,size_t) | | Curl_dyn_addn | 2 |
+| zmq.cpp:17:6:17:13 | test_zmc | (dynbuf *,const void *,size_t) | | curlx_dyn_addn | 2 |
+| zmq.cpp:17:6:17:13 | test_zmc | (dynhds *,const char *,size_t) | | Curl_dynhds_get | 2 |
+| zmq.cpp:17:6:17:13 | test_zmc | (dynhds *,const char *,size_t) | | Curl_dynhds_h1_add_line | 2 |
+| zmq.cpp:17:6:17:13 | test_zmc | (dynhds *,size_t,size_t) | | Curl_dynhds_init | 2 |
+| zmq.cpp:17:6:17:13 | test_zmc | (int *,const char *,size_t) | | Curl_http_decode_status | 2 |
| zmq.cpp:17:6:17:13 | test_zmc | (int *,int *,size_t) | | EVP_PBE_get | 2 |
+| zmq.cpp:17:6:17:13 | test_zmc | (int,char *,size_t) | | Curl_strerror | 1 |
+| zmq.cpp:17:6:17:13 | test_zmc | (int,char *,size_t) | | Curl_strerror | 2 |
+| zmq.cpp:17:6:17:13 | test_zmc | (int,char *,size_t) | | uv_err_name_r | 1 |
+| zmq.cpp:17:6:17:13 | test_zmc | (int,char *,size_t) | | uv_err_name_r | 2 |
+| zmq.cpp:17:6:17:13 | test_zmc | (int,char *,size_t) | | uv_strerror_r | 1 |
+| zmq.cpp:17:6:17:13 | test_zmc | (int,char *,size_t) | | uv_strerror_r | 2 |
+| zmq.cpp:17:6:17:13 | test_zmc | (int,int,size_t) | | BrotliEncoderEstimatePeakMemoryUsage | 2 |
+| zmq.cpp:17:6:17:13 | test_zmc | (nghttp2_buf *,uint8_t *,size_t) | | nghttp2_buf_wrap_init | 2 |
+| zmq.cpp:17:6:17:13 | test_zmc | (nghttp2_extension *,nghttp2_origin_entry *,size_t) | | nghttp2_frame_origin_init | 2 |
+| zmq.cpp:17:6:17:13 | test_zmc | (nghttp2_extpri *,const uint8_t *,size_t) | | nghttp2_extpri_parse_priority | 2 |
+| zmq.cpp:17:6:17:13 | test_zmc | (nghttp2_extpri *,const uint8_t *,size_t) | | nghttp2_http_parse_priority | 2 |
+| zmq.cpp:17:6:17:13 | test_zmc | (nghttp2_hd_deflater *,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_bound | 2 |
+| zmq.cpp:17:6:17:13 | test_zmc | (nghttp2_session *,const uint8_t *,size_t) | | nghttp2_session_mem_recv | 2 |
+| zmq.cpp:17:6:17:13 | test_zmc | (nghttp2_session *,const uint8_t *,size_t) | | nghttp2_session_mem_recv2 | 2 |
+| zmq.cpp:17:6:17:13 | test_zmc | (nghttp2_session *,int32_t,size_t) | | nghttp2_session_consume | 2 |
+| zmq.cpp:17:6:17:13 | test_zmc | (nghttp2_session *,nghttp2_settings_entry *,size_t) | | nghttp2_session_update_local_settings | 2 |
+| zmq.cpp:17:6:17:13 | test_zmc | (nghttp2_settings *,nghttp2_settings_entry *,size_t) | | nghttp2_frame_unpack_settings_payload | 2 |
+| zmq.cpp:17:6:17:13 | test_zmc | (sfparse_parser *,const uint8_t *,size_t) | | sfparse_parser_init | 2 |
| zmq.cpp:17:6:17:13 | test_zmc | (size_t,OSSL_QTX_IOVEC *,size_t) | | ossl_quic_sstream_adjust_iov | 2 |
| zmq.cpp:17:6:17:13 | test_zmc | (stack_st_SCT **,const unsigned char **,size_t) | | o2i_SCT_LIST | 2 |
+| zmq.cpp:17:6:17:13 | test_zmc | (ucs4_t *,const uint8_t *,size_t) | | u8_mbtouc_aux | 2 |
+| zmq.cpp:17:6:17:13 | test_zmc | (uint8_t *,const nghttp2_settings_entry *,size_t) | | nghttp2_frame_pack_settings_payload | 2 |
+| zmq.cpp:17:6:17:13 | test_zmc | (uint8_t *,const void *,size_t) | | nghttp2_cpymem | 2 |
+| zmq.cpp:17:6:17:13 | test_zmc | (unsigned char **,const char *,size_t) | | _libssh2_store_str | 2 |
+| zmq.cpp:17:6:17:13 | test_zmc | (unsigned char **,const unsigned char *,size_t) | | _libssh2_store_bignum2_bytes | 2 |
| zmq.cpp:17:6:17:13 | test_zmc | (unsigned char *,const unsigned char *,size_t) | | BUF_reverse | 2 |
| zmq.cpp:17:6:17:13 | test_zmc | (unsigned char *,int,unsigned long) | | UTF8_putc | 2 |
| zmq.cpp:17:6:17:13 | test_zmc | (unsigned char *,size_t *,size_t) | | ossl_cipher_padblock | 2 |
| zmq.cpp:17:6:17:13 | test_zmc | (unsigned char *,size_t *,size_t) | | ossl_cipher_unpadblock | 2 |
+| zmq.cpp:17:6:17:13 | test_zmc | (uv_thread_t *,char *,size_t) | | uv__thread_getname | 1 |
+| zmq.cpp:17:6:17:13 | test_zmc | (uv_thread_t *,char *,size_t) | | uv__thread_getname | 2 |
+| zmq.cpp:17:6:17:13 | test_zmc | (uv_thread_t *,char *,size_t) | | uv_thread_getaffinity | 1 |
+| zmq.cpp:17:6:17:13 | test_zmc | (uv_thread_t *,char *,size_t) | | uv_thread_getaffinity | 2 |
+| zmq.cpp:17:6:17:13 | test_zmc | (uv_thread_t *,char *,size_t) | | uv_thread_getname | 1 |
+| zmq.cpp:17:6:17:13 | test_zmc | (uv_thread_t *,char *,size_t) | | uv_thread_getname | 2 |
+| zmq.cpp:17:6:17:13 | test_zmc | (void *,size_t,size_t) | | Curl_hash_str | 2 |
| zmq.cpp:17:6:17:13 | test_zmc | (void *,unsigned char *,size_t) | | ossl_drbg_clear_seed | 2 |
getSignatureParameterName
| (..(*)(..)) | | ASN1_SCTX_new | 0 | ..(*)(..) |
@@ -11666,6 +13841,10 @@ getSignatureParameterName
| (..(*)(..),..(*)(..),..(*)(..),..(*)(..)) | | X509_CRL_METHOD_new | 1 | ..(*)(..) |
| (..(*)(..),..(*)(..),..(*)(..),..(*)(..)) | | X509_CRL_METHOD_new | 2 | ..(*)(..) |
| (..(*)(..),..(*)(..),..(*)(..),..(*)(..)) | | X509_CRL_METHOD_new | 3 | ..(*)(..) |
+| (..(*)(..),..(*)(..),..(*)(..),void *) | | libssh2_session_init_ex | 0 | ..(*)(..) |
+| (..(*)(..),..(*)(..),..(*)(..),void *) | | libssh2_session_init_ex | 1 | ..(*)(..) |
+| (..(*)(..),..(*)(..),..(*)(..),void *) | | libssh2_session_init_ex | 2 | ..(*)(..) |
+| (..(*)(..),..(*)(..),..(*)(..),void *) | | libssh2_session_init_ex | 3 | void * |
| (..(*)(..),d2i_of_void *,BIO *,void **) | | ASN1_d2i_bio | 0 | ..(*)(..) |
| (..(*)(..),d2i_of_void *,BIO *,void **) | | ASN1_d2i_bio | 1 | d2i_of_void * |
| (..(*)(..),d2i_of_void *,BIO *,void **) | | ASN1_d2i_bio | 2 | BIO * |
@@ -12075,12 +14254,31 @@ getSignatureParameterName
| (BIGNUM *) | | BN_get_rfc3526_prime_4096 | 0 | BIGNUM * |
| (BIGNUM *) | | BN_get_rfc3526_prime_6144 | 0 | BIGNUM * |
| (BIGNUM *) | | BN_get_rfc3526_prime_8192 | 0 | BIGNUM * |
+| (BIGNUM **) | | _libssh2_dh_dtor | 0 | BIGNUM ** |
+| (BIGNUM **,BIGNUM *,BIGNUM *,BIGNUM *,BN_CTX *) | | _libssh2_dh_secret | 0 | BIGNUM ** |
+| (BIGNUM **,BIGNUM *,BIGNUM *,BIGNUM *,BN_CTX *) | | _libssh2_dh_secret | 1 | BIGNUM * |
+| (BIGNUM **,BIGNUM *,BIGNUM *,BIGNUM *,BN_CTX *) | | _libssh2_dh_secret | 2 | BIGNUM * |
+| (BIGNUM **,BIGNUM *,BIGNUM *,BIGNUM *,BN_CTX *) | | _libssh2_dh_secret | 3 | BIGNUM * |
+| (BIGNUM **,BIGNUM *,BIGNUM *,BIGNUM *,BN_CTX *) | | _libssh2_dh_secret | 4 | BN_CTX * |
+| (BIGNUM **,BIGNUM *,BIGNUM *,BIGNUM *,int,BN_CTX *) | | _libssh2_dh_key_pair | 0 | BIGNUM ** |
+| (BIGNUM **,BIGNUM *,BIGNUM *,BIGNUM *,int,BN_CTX *) | | _libssh2_dh_key_pair | 1 | BIGNUM * |
+| (BIGNUM **,BIGNUM *,BIGNUM *,BIGNUM *,int,BN_CTX *) | | _libssh2_dh_key_pair | 2 | BIGNUM * |
+| (BIGNUM **,BIGNUM *,BIGNUM *,BIGNUM *,int,BN_CTX *) | | _libssh2_dh_key_pair | 3 | BIGNUM * |
+| (BIGNUM **,BIGNUM *,BIGNUM *,BIGNUM *,int,BN_CTX *) | | _libssh2_dh_key_pair | 4 | int |
+| (BIGNUM **,BIGNUM *,BIGNUM *,BIGNUM *,int,BN_CTX *) | | _libssh2_dh_key_pair | 5 | BN_CTX * |
+| (BIGNUM **,EVP_PKEY *,const unsigned char *,size_t) | | _libssh2_ecdh_gen_k | 0 | BIGNUM ** |
+| (BIGNUM **,EVP_PKEY *,const unsigned char *,size_t) | | _libssh2_ecdh_gen_k | 1 | EVP_PKEY * |
+| (BIGNUM **,EVP_PKEY *,const unsigned char *,size_t) | | _libssh2_ecdh_gen_k | 2 | const unsigned char * |
+| (BIGNUM **,EVP_PKEY *,const unsigned char *,size_t) | | _libssh2_ecdh_gen_k | 3 | size_t |
| (BIGNUM **,const char *) | | BN_asc2bn | 0 | BIGNUM ** |
| (BIGNUM **,const char *) | | BN_asc2bn | 1 | const char * |
| (BIGNUM **,const char *) | | BN_dec2bn | 0 | BIGNUM ** |
| (BIGNUM **,const char *) | | BN_dec2bn | 1 | const char * |
| (BIGNUM **,const char *) | | BN_hex2bn | 0 | BIGNUM ** |
| (BIGNUM **,const char *) | | BN_hex2bn | 1 | const char * |
+| (BIGNUM **,uint8_t[32],uint8_t[32]) | | _libssh2_curve25519_gen_k | 0 | BIGNUM ** |
+| (BIGNUM **,uint8_t[32],uint8_t[32]) | | _libssh2_curve25519_gen_k | 1 | uint8_t[32] |
+| (BIGNUM **,uint8_t[32],uint8_t[32]) | | _libssh2_curve25519_gen_k | 2 | uint8_t[32] |
| (BIGNUM *,ASN1_INTEGER *) | | rand_serial | 0 | BIGNUM * |
| (BIGNUM *,ASN1_INTEGER *) | | rand_serial | 1 | ASN1_INTEGER * |
| (BIGNUM *,BIGNUM *) | | BN_swap | 0 | BIGNUM * |
@@ -13444,6 +15642,106 @@ getSignatureParameterName
| (BUF_MEM *,size_t) | | BUF_MEM_grow | 1 | size_t |
| (BUF_MEM *,size_t) | | BUF_MEM_grow_clean | 0 | BUF_MEM * |
| (BUF_MEM *,size_t) | | BUF_MEM_grow_clean | 1 | size_t |
+| (BrotliBitReader *const,uint64_t,uint64_t *) | | BrotliSafeReadBits32Slow | 0 | BrotliBitReader *const |
+| (BrotliBitReader *const,uint64_t,uint64_t *) | | BrotliSafeReadBits32Slow | 1 | uint64_t |
+| (BrotliBitReader *const,uint64_t,uint64_t *) | | BrotliSafeReadBits32Slow | 2 | uint64_t * |
+| (BrotliDecoderState *,BrotliDecoderStateInternal *,BrotliSharedDictionaryType,size_t,const uint8_t[]) | | BrotliDecoderAttachDictionary | 0 | BrotliDecoderState * |
+| (BrotliDecoderState *,BrotliDecoderStateInternal *,BrotliSharedDictionaryType,size_t,const uint8_t[]) | | BrotliDecoderAttachDictionary | 1 | BrotliDecoderStateInternal * |
+| (BrotliDecoderState *,BrotliDecoderStateInternal *,BrotliSharedDictionaryType,size_t,const uint8_t[]) | | BrotliDecoderAttachDictionary | 2 | BrotliSharedDictionaryType |
+| (BrotliDecoderState *,BrotliDecoderStateInternal *,BrotliSharedDictionaryType,size_t,const uint8_t[]) | | BrotliDecoderAttachDictionary | 3 | size_t |
+| (BrotliDecoderState *,BrotliDecoderStateInternal *,BrotliSharedDictionaryType,size_t,const uint8_t[]) | | BrotliDecoderAttachDictionary | 4 | const uint8_t[] |
+| (BrotliDecoderState *,BrotliDecoderStateInternal *,brotli_decoder_metadata_start_func,brotli_decoder_metadata_chunk_func,void *) | | BrotliDecoderSetMetadataCallbacks | 0 | BrotliDecoderState * |
+| (BrotliDecoderState *,BrotliDecoderStateInternal *,brotli_decoder_metadata_start_func,brotli_decoder_metadata_chunk_func,void *) | | BrotliDecoderSetMetadataCallbacks | 1 | BrotliDecoderStateInternal * |
+| (BrotliDecoderState *,BrotliDecoderStateInternal *,brotli_decoder_metadata_start_func,brotli_decoder_metadata_chunk_func,void *) | | BrotliDecoderSetMetadataCallbacks | 2 | brotli_decoder_metadata_start_func |
+| (BrotliDecoderState *,BrotliDecoderStateInternal *,brotli_decoder_metadata_start_func,brotli_decoder_metadata_chunk_func,void *) | | BrotliDecoderSetMetadataCallbacks | 3 | brotli_decoder_metadata_chunk_func |
+| (BrotliDecoderState *,BrotliDecoderStateInternal *,brotli_decoder_metadata_start_func,brotli_decoder_metadata_chunk_func,void *) | | BrotliDecoderSetMetadataCallbacks | 4 | void * |
+| (BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *) | | BrotliDecoderTakeOutput | 0 | BrotliDecoderState * |
+| (BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *) | | BrotliDecoderTakeOutput | 1 | BrotliDecoderStateInternal * |
+| (BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *) | | BrotliDecoderTakeOutput | 2 | size_t * |
+| (BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *) | | BrotliDecoderDecompressStream | 0 | BrotliDecoderState * |
+| (BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *) | | BrotliDecoderDecompressStream | 1 | BrotliDecoderStateInternal * |
+| (BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *) | | BrotliDecoderDecompressStream | 2 | size_t * |
+| (BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *) | | BrotliDecoderDecompressStream | 3 | const uint8_t ** |
+| (BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *) | | BrotliDecoderDecompressStream | 4 | size_t * |
+| (BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *) | | BrotliDecoderDecompressStream | 5 | uint8_t ** |
+| (BrotliDecoderState *,BrotliDecoderStateInternal *,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *) | | BrotliDecoderDecompressStream | 6 | size_t * |
+| (BrotliDecoderStateInternal *,HuffmanTreeGroup *,uint64_t,uint64_t,uint64_t) | | BrotliDecoderHuffmanTreeGroupInit | 0 | BrotliDecoderStateInternal * |
+| (BrotliDecoderStateInternal *,HuffmanTreeGroup *,uint64_t,uint64_t,uint64_t) | | BrotliDecoderHuffmanTreeGroupInit | 1 | HuffmanTreeGroup * |
+| (BrotliDecoderStateInternal *,HuffmanTreeGroup *,uint64_t,uint64_t,uint64_t) | | BrotliDecoderHuffmanTreeGroupInit | 2 | uint64_t |
+| (BrotliDecoderStateInternal *,HuffmanTreeGroup *,uint64_t,uint64_t,uint64_t) | | BrotliDecoderHuffmanTreeGroupInit | 3 | uint64_t |
+| (BrotliDecoderStateInternal *,HuffmanTreeGroup *,uint64_t,uint64_t,uint64_t) | | BrotliDecoderHuffmanTreeGroupInit | 4 | uint64_t |
+| (BrotliDecoderStateInternal *,brotli_alloc_func,brotli_free_func,void *) | | BrotliDecoderStateInit | 0 | BrotliDecoderStateInternal * |
+| (BrotliDecoderStateInternal *,brotli_alloc_func,brotli_free_func,void *) | | BrotliDecoderStateInit | 1 | brotli_alloc_func |
+| (BrotliDecoderStateInternal *,brotli_alloc_func,brotli_free_func,void *) | | BrotliDecoderStateInit | 2 | brotli_free_func |
+| (BrotliDecoderStateInternal *,brotli_alloc_func,brotli_free_func,void *) | | BrotliDecoderStateInit | 3 | void * |
+| (BrotliDistanceParams *,uint32_t,uint32_t,int) | | BrotliInitDistanceParams | 0 | BrotliDistanceParams * |
+| (BrotliDistanceParams *,uint32_t,uint32_t,int) | | BrotliInitDistanceParams | 1 | uint32_t |
+| (BrotliDistanceParams *,uint32_t,uint32_t,int) | | BrotliInitDistanceParams | 2 | uint32_t |
+| (BrotliDistanceParams *,uint32_t,uint32_t,int) | | BrotliInitDistanceParams | 3 | int |
+| (BrotliEncoderState *,BrotliEncoderStateInternal *,BrotliEncoderOperation,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *) | | BrotliEncoderCompressStream | 0 | BrotliEncoderState * |
+| (BrotliEncoderState *,BrotliEncoderStateInternal *,BrotliEncoderOperation,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *) | | BrotliEncoderCompressStream | 1 | BrotliEncoderStateInternal * |
+| (BrotliEncoderState *,BrotliEncoderStateInternal *,BrotliEncoderOperation,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *) | | BrotliEncoderCompressStream | 2 | BrotliEncoderOperation |
+| (BrotliEncoderState *,BrotliEncoderStateInternal *,BrotliEncoderOperation,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *) | | BrotliEncoderCompressStream | 3 | size_t * |
+| (BrotliEncoderState *,BrotliEncoderStateInternal *,BrotliEncoderOperation,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *) | | BrotliEncoderCompressStream | 4 | const uint8_t ** |
+| (BrotliEncoderState *,BrotliEncoderStateInternal *,BrotliEncoderOperation,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *) | | BrotliEncoderCompressStream | 5 | size_t * |
+| (BrotliEncoderState *,BrotliEncoderStateInternal *,BrotliEncoderOperation,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *) | | BrotliEncoderCompressStream | 6 | uint8_t ** |
+| (BrotliEncoderState *,BrotliEncoderStateInternal *,BrotliEncoderOperation,size_t *,const uint8_t **,size_t *,uint8_t **,size_t *) | | BrotliEncoderCompressStream | 7 | size_t * |
+| (BrotliEncoderState *,BrotliEncoderStateInternal *,BrotliEncoderParameter,uint32_t) | | BrotliEncoderSetParameter | 0 | BrotliEncoderState * |
+| (BrotliEncoderState *,BrotliEncoderStateInternal *,BrotliEncoderParameter,uint32_t) | | BrotliEncoderSetParameter | 1 | BrotliEncoderStateInternal * |
+| (BrotliEncoderState *,BrotliEncoderStateInternal *,BrotliEncoderParameter,uint32_t) | | BrotliEncoderSetParameter | 2 | BrotliEncoderParameter |
+| (BrotliEncoderState *,BrotliEncoderStateInternal *,BrotliEncoderParameter,uint32_t) | | BrotliEncoderSetParameter | 3 | uint32_t |
+| (BrotliEncoderState *,BrotliEncoderStateInternal *,const BrotliEncoderPreparedDictionary *) | | BrotliEncoderAttachPreparedDictionary | 0 | BrotliEncoderState * |
+| (BrotliEncoderState *,BrotliEncoderStateInternal *,const BrotliEncoderPreparedDictionary *) | | BrotliEncoderAttachPreparedDictionary | 1 | BrotliEncoderStateInternal * |
+| (BrotliEncoderState *,BrotliEncoderStateInternal *,const BrotliEncoderPreparedDictionary *) | | BrotliEncoderAttachPreparedDictionary | 2 | const BrotliEncoderPreparedDictionary * |
+| (BrotliEncoderState *,BrotliEncoderStateInternal *,size_t *) | | BrotliEncoderTakeOutput | 0 | BrotliEncoderState * |
+| (BrotliEncoderState *,BrotliEncoderStateInternal *,size_t *) | | BrotliEncoderTakeOutput | 1 | BrotliEncoderStateInternal * |
+| (BrotliEncoderState *,BrotliEncoderStateInternal *,size_t *) | | BrotliEncoderTakeOutput | 2 | size_t * |
+| (BrotliOnePassArena *,const uint8_t *,size_t,int,int *,size_t,size_t *,uint8_t *) | | BrotliCompressFragmentFast | 0 | BrotliOnePassArena * |
+| (BrotliOnePassArena *,const uint8_t *,size_t,int,int *,size_t,size_t *,uint8_t *) | | BrotliCompressFragmentFast | 1 | const uint8_t * |
+| (BrotliOnePassArena *,const uint8_t *,size_t,int,int *,size_t,size_t *,uint8_t *) | | BrotliCompressFragmentFast | 2 | size_t |
+| (BrotliOnePassArena *,const uint8_t *,size_t,int,int *,size_t,size_t *,uint8_t *) | | BrotliCompressFragmentFast | 3 | int |
+| (BrotliOnePassArena *,const uint8_t *,size_t,int,int *,size_t,size_t *,uint8_t *) | | BrotliCompressFragmentFast | 4 | int * |
+| (BrotliOnePassArena *,const uint8_t *,size_t,int,int *,size_t,size_t *,uint8_t *) | | BrotliCompressFragmentFast | 5 | size_t |
+| (BrotliOnePassArena *,const uint8_t *,size_t,int,int *,size_t,size_t *,uint8_t *) | | BrotliCompressFragmentFast | 6 | size_t * |
+| (BrotliOnePassArena *,const uint8_t *,size_t,int,int *,size_t,size_t *,uint8_t *) | | BrotliCompressFragmentFast | 7 | uint8_t * |
+| (BrotliSharedDictionaryInternal *,BrotliSharedDictionaryType,size_t,const uint8_t[]) | | BrotliSharedDictionaryAttach | 0 | BrotliSharedDictionaryInternal * |
+| (BrotliSharedDictionaryInternal *,BrotliSharedDictionaryType,size_t,const uint8_t[]) | | BrotliSharedDictionaryAttach | 1 | BrotliSharedDictionaryType |
+| (BrotliSharedDictionaryInternal *,BrotliSharedDictionaryType,size_t,const uint8_t[]) | | BrotliSharedDictionaryAttach | 2 | size_t |
+| (BrotliSharedDictionaryInternal *,BrotliSharedDictionaryType,size_t,const uint8_t[]) | | BrotliSharedDictionaryAttach | 3 | const uint8_t[] |
+| (BrotliSharedDictionaryType,size_t,const uint8_t[],int,brotli_alloc_func,brotli_free_func,void *) | | BrotliEncoderPrepareDictionary | 0 | BrotliSharedDictionaryType |
+| (BrotliSharedDictionaryType,size_t,const uint8_t[],int,brotli_alloc_func,brotli_free_func,void *) | | BrotliEncoderPrepareDictionary | 1 | size_t |
+| (BrotliSharedDictionaryType,size_t,const uint8_t[],int,brotli_alloc_func,brotli_free_func,void *) | | BrotliEncoderPrepareDictionary | 2 | const uint8_t[] |
+| (BrotliSharedDictionaryType,size_t,const uint8_t[],int,brotli_alloc_func,brotli_free_func,void *) | | BrotliEncoderPrepareDictionary | 3 | int |
+| (BrotliSharedDictionaryType,size_t,const uint8_t[],int,brotli_alloc_func,brotli_free_func,void *) | | BrotliEncoderPrepareDictionary | 4 | brotli_alloc_func |
+| (BrotliSharedDictionaryType,size_t,const uint8_t[],int,brotli_alloc_func,brotli_free_func,void *) | | BrotliEncoderPrepareDictionary | 5 | brotli_free_func |
+| (BrotliSharedDictionaryType,size_t,const uint8_t[],int,brotli_alloc_func,brotli_free_func,void *) | | BrotliEncoderPrepareDictionary | 6 | void * |
+| (BrotliTwoPassArena *,const uint8_t *,size_t,int,uint32_t *,uint8_t *,int *,size_t,size_t *,uint8_t *) | | BrotliCompressFragmentTwoPass | 0 | BrotliTwoPassArena * |
+| (BrotliTwoPassArena *,const uint8_t *,size_t,int,uint32_t *,uint8_t *,int *,size_t,size_t *,uint8_t *) | | BrotliCompressFragmentTwoPass | 1 | const uint8_t * |
+| (BrotliTwoPassArena *,const uint8_t *,size_t,int,uint32_t *,uint8_t *,int *,size_t,size_t *,uint8_t *) | | BrotliCompressFragmentTwoPass | 2 | size_t |
+| (BrotliTwoPassArena *,const uint8_t *,size_t,int,uint32_t *,uint8_t *,int *,size_t,size_t *,uint8_t *) | | BrotliCompressFragmentTwoPass | 3 | int |
+| (BrotliTwoPassArena *,const uint8_t *,size_t,int,uint32_t *,uint8_t *,int *,size_t,size_t *,uint8_t *) | | BrotliCompressFragmentTwoPass | 4 | uint32_t * |
+| (BrotliTwoPassArena *,const uint8_t *,size_t,int,uint32_t *,uint8_t *,int *,size_t,size_t *,uint8_t *) | | BrotliCompressFragmentTwoPass | 5 | uint8_t * |
+| (BrotliTwoPassArena *,const uint8_t *,size_t,int,uint32_t *,uint8_t *,int *,size_t,size_t *,uint8_t *) | | BrotliCompressFragmentTwoPass | 6 | int * |
+| (BrotliTwoPassArena *,const uint8_t *,size_t,int,uint32_t *,uint8_t *,int *,size_t,size_t *,uint8_t *) | | BrotliCompressFragmentTwoPass | 7 | size_t |
+| (BrotliTwoPassArena *,const uint8_t *,size_t,int,uint32_t *,uint8_t *,int *,size_t,size_t *,uint8_t *) | | BrotliCompressFragmentTwoPass | 8 | size_t * |
+| (BrotliTwoPassArena *,const uint8_t *,size_t,int,uint32_t *,uint8_t *,int *,size_t,size_t *,uint8_t *) | | BrotliCompressFragmentTwoPass | 9 | uint8_t * |
+| (Bytef *,uLongf *,const Bytef *,uLong *) | | uncompress2 | 0 | Bytef * |
+| (Bytef *,uLongf *,const Bytef *,uLong *) | | uncompress2 | 1 | uLongf * |
+| (Bytef *,uLongf *,const Bytef *,uLong *) | | uncompress2 | 2 | const Bytef * |
+| (Bytef *,uLongf *,const Bytef *,uLong *) | | uncompress2 | 3 | uLong * |
+| (Bytef *,uLongf *,const Bytef *,uLong) | | compress | 0 | Bytef * |
+| (Bytef *,uLongf *,const Bytef *,uLong) | | compress | 1 | uLongf * |
+| (Bytef *,uLongf *,const Bytef *,uLong) | | compress | 2 | const Bytef * |
+| (Bytef *,uLongf *,const Bytef *,uLong) | | compress | 3 | uLong |
+| (Bytef *,uLongf *,const Bytef *,uLong) | | uncompress | 0 | Bytef * |
+| (Bytef *,uLongf *,const Bytef *,uLong) | | uncompress | 1 | uLongf * |
+| (Bytef *,uLongf *,const Bytef *,uLong) | | uncompress | 2 | const Bytef * |
+| (Bytef *,uLongf *,const Bytef *,uLong) | | uncompress | 3 | uLong |
+| (Bytef *,uLongf *,const Bytef *,uLong,int) | | compress2 | 0 | Bytef * |
+| (Bytef *,uLongf *,const Bytef *,uLong,int) | | compress2 | 1 | uLongf * |
+| (Bytef *,uLongf *,const Bytef *,uLong,int) | | compress2 | 2 | const Bytef * |
+| (Bytef *,uLongf *,const Bytef *,uLong,int) | | compress2 | 3 | uLong |
+| (Bytef *,uLongf *,const Bytef *,uLong,int) | | compress2 | 4 | int |
| (CA_DB *,time_t *) | | do_updatedb | 0 | CA_DB * |
| (CA_DB *,time_t *) | | do_updatedb | 1 | time_t * |
| (CAtlFile &) | CAtlFile | CAtlFile | 0 | CAtlFile & |
@@ -13772,6 +16070,529 @@ getSignatureParameterName
| (CT_POLICY_EVAL_CTX *,X509 *) | | CT_POLICY_EVAL_CTX_set1_issuer | 1 | X509 * |
| (CT_POLICY_EVAL_CTX *,uint64_t) | | CT_POLICY_EVAL_CTX_set_time | 0 | CT_POLICY_EVAL_CTX * |
| (CT_POLICY_EVAL_CTX *,uint64_t) | | CT_POLICY_EVAL_CTX_set_time | 1 | uint64_t |
+| (CURL *) | | curl_easy_cleanup | 0 | CURL * |
+| (CURL *) | | curl_easy_duphandle | 0 | CURL * |
+| (CURL *) | | curl_easy_perform | 0 | CURL * |
+| (CURL *) | | curl_easy_upkeep | 0 | CURL * |
+| (CURL *,GlobalConfig *,const char *,CURLoption,curl_slist *) | | tool_setopt_slist | 0 | CURL * |
+| (CURL *,GlobalConfig *,const char *,CURLoption,curl_slist *) | | tool_setopt_slist | 1 | GlobalConfig * |
+| (CURL *,GlobalConfig *,const char *,CURLoption,curl_slist *) | | tool_setopt_slist | 2 | const char * |
+| (CURL *,GlobalConfig *,const char *,CURLoption,curl_slist *) | | tool_setopt_slist | 3 | CURLoption |
+| (CURL *,GlobalConfig *,const char *,CURLoption,curl_slist *) | | tool_setopt_slist | 4 | curl_slist * |
+| (CURL *,char **,const char *) | | add_file_name_to_url | 0 | CURL * |
+| (CURL *,char **,const char *) | | add_file_name_to_url | 1 | char ** |
+| (CURL *,char **,const char *) | | add_file_name_to_url | 2 | const char * |
+| (CURL *,const char *,size_t,unsigned int,int,curl_header **) | | curl_easy_header | 0 | CURL * |
+| (CURL *,const char *,size_t,unsigned int,int,curl_header **) | | curl_easy_header | 1 | const char * |
+| (CURL *,const char *,size_t,unsigned int,int,curl_header **) | | curl_easy_header | 2 | size_t |
+| (CURL *,const char *,size_t,unsigned int,int,curl_header **) | | curl_easy_header | 3 | unsigned int |
+| (CURL *,const char *,size_t,unsigned int,int,curl_header **) | | curl_easy_header | 4 | int |
+| (CURL *,const char *,size_t,unsigned int,int,curl_header **) | | curl_easy_header | 5 | curl_header ** |
+| (CURL *,const void *,size_t,size_t *) | | curl_easy_send | 0 | CURL * |
+| (CURL *,const void *,size_t,size_t *) | | curl_easy_send | 1 | const void * |
+| (CURL *,const void *,size_t,size_t *) | | curl_easy_send | 2 | size_t |
+| (CURL *,const void *,size_t,size_t *) | | curl_easy_send | 3 | size_t * |
+| (CURL *,const void *,size_t,size_t *,curl_off_t,unsigned int) | | curl_ws_send | 0 | CURL * |
+| (CURL *,const void *,size_t,size_t *,curl_off_t,unsigned int) | | curl_ws_send | 1 | const void * |
+| (CURL *,const void *,size_t,size_t *,curl_off_t,unsigned int) | | curl_ws_send | 2 | size_t |
+| (CURL *,const void *,size_t,size_t *,curl_off_t,unsigned int) | | curl_ws_send | 3 | size_t * |
+| (CURL *,const void *,size_t,size_t *,curl_off_t,unsigned int) | | curl_ws_send | 4 | curl_off_t |
+| (CURL *,const void *,size_t,size_t *,curl_off_t,unsigned int) | | curl_ws_send | 5 | unsigned int |
+| (CURL *,curl_mimepart *,curl_httppost *,curl_read_callback) | | Curl_getformdata | 0 | CURL * |
+| (CURL *,curl_mimepart *,curl_httppost *,curl_read_callback) | | Curl_getformdata | 1 | curl_mimepart * |
+| (CURL *,curl_mimepart *,curl_httppost *,curl_read_callback) | | Curl_getformdata | 2 | curl_httppost * |
+| (CURL *,curl_mimepart *,curl_httppost *,curl_read_callback) | | Curl_getformdata | 3 | curl_read_callback |
+| (CURL *,int) | | curl_easy_pause | 0 | CURL * |
+| (CURL *,int) | | curl_easy_pause | 1 | int |
+| (CURL *,tool_mime *,curl_mime **) | | tool2curlmime | 0 | CURL * |
+| (CURL *,tool_mime *,curl_mime **) | | tool2curlmime | 1 | tool_mime * |
+| (CURL *,tool_mime *,curl_mime **) | | tool2curlmime | 2 | curl_mime ** |
+| (CURL *,unsigned int,int,curl_header *) | | curl_easy_nextheader | 0 | CURL * |
+| (CURL *,unsigned int,int,curl_header *) | | curl_easy_nextheader | 1 | unsigned int |
+| (CURL *,unsigned int,int,curl_header *) | | curl_easy_nextheader | 2 | int |
+| (CURL *,unsigned int,int,curl_header *) | | curl_easy_nextheader | 3 | curl_header * |
+| (CURL *,void *,size_t,size_t *) | | curl_easy_recv | 0 | CURL * |
+| (CURL *,void *,size_t,size_t *) | | curl_easy_recv | 1 | void * |
+| (CURL *,void *,size_t,size_t *) | | curl_easy_recv | 2 | size_t |
+| (CURL *,void *,size_t,size_t *) | | curl_easy_recv | 3 | size_t * |
+| (CURL *,void *,size_t,size_t *,const curl_ws_frame **) | | curl_ws_recv | 0 | CURL * |
+| (CURL *,void *,size_t,size_t *,const curl_ws_frame **) | | curl_ws_recv | 1 | void * |
+| (CURL *,void *,size_t,size_t *,const curl_ws_frame **) | | curl_ws_recv | 2 | size_t |
+| (CURL *,void *,size_t,size_t *,const curl_ws_frame **) | | curl_ws_recv | 3 | size_t * |
+| (CURL *,void *,size_t,size_t *,const curl_ws_frame **) | | curl_ws_recv | 4 | const curl_ws_frame ** |
+| (CURLM *,CURL *) | | curl_multi_add_handle | 0 | CURLM * |
+| (CURLM *,CURL *) | | curl_multi_add_handle | 1 | CURL * |
+| (CURLM *,CURL *) | | curl_multi_remove_handle | 0 | CURLM * |
+| (CURLM *,CURL *) | | curl_multi_remove_handle | 1 | CURL * |
+| (CURLM *,curl_socket_t,int *) | | curl_multi_socket | 0 | CURLM * |
+| (CURLM *,curl_socket_t,int *) | | curl_multi_socket | 1 | curl_socket_t |
+| (CURLM *,curl_socket_t,int *) | | curl_multi_socket | 2 | int * |
+| (CURLM *,curl_socket_t,int,int *) | | curl_multi_socket_action | 0 | CURLM * |
+| (CURLM *,curl_socket_t,int,int *) | | curl_multi_socket_action | 1 | curl_socket_t |
+| (CURLM *,curl_socket_t,int,int *) | | curl_multi_socket_action | 2 | int |
+| (CURLM *,curl_socket_t,int,int *) | | curl_multi_socket_action | 3 | int * |
+| (CURLM *,int *) | | curl_multi_info_read | 0 | CURLM * |
+| (CURLM *,int *) | | curl_multi_info_read | 1 | int * |
+| (CURLM *,int *) | | curl_multi_perform | 0 | CURLM * |
+| (CURLM *,int *) | | curl_multi_perform | 1 | int * |
+| (CURLM *,int *) | | curl_multi_socket_all | 0 | CURLM * |
+| (CURLM *,int *) | | curl_multi_socket_all | 1 | int * |
+| (CURLSH *,CURLSHoption,...) | | curl_share_setopt | 0 | CURLSH * |
+| (CURLSH *,CURLSHoption,...) | | curl_share_setopt | 1 | CURLSHoption |
+| (CURLSH *,CURLSHoption,...) | | curl_share_setopt | 2 | ... |
+| (CURLU *,CURLUPart,const char *,unsigned int) | | curl_url_set | 0 | CURLU * |
+| (CURLU *,CURLUPart,const char *,unsigned int) | | curl_url_set | 1 | CURLUPart |
+| (CURLU *,CURLUPart,const char *,unsigned int) | | curl_url_set | 2 | const char * |
+| (CURLU *,CURLUPart,const char *,unsigned int) | | curl_url_set | 3 | unsigned int |
+| (CURLU *,const char *) | | Curl_url_set_authority | 0 | CURLU * |
+| (CURLU *,const char *) | | Curl_url_set_authority | 1 | const char * |
+| (CURLU *,const char *,char **,OperationConfig *) | | ipfs_url_rewrite | 0 | CURLU * |
+| (CURLU *,const char *,char **,OperationConfig *) | | ipfs_url_rewrite | 1 | const char * |
+| (CURLU *,const char *,char **,OperationConfig *) | | ipfs_url_rewrite | 2 | char ** |
+| (CURLU *,const char *,char **,OperationConfig *) | | ipfs_url_rewrite | 3 | OperationConfig * |
+| (CompoundDictionary *,const PreparedDictionary *) | | AttachPreparedDictionary | 0 | CompoundDictionary * |
+| (CompoundDictionary *,const PreparedDictionary *) | | AttachPreparedDictionary | 1 | const PreparedDictionary * |
+| (Curl_cfilter *) | | Curl_conn_cf_is_ssl | 0 | Curl_cfilter * |
+| (Curl_cfilter *) | | Curl_ssl_cf_get_primary_config | 0 | Curl_cfilter * |
+| (Curl_cfilter **,Curl_easy *) | | Curl_conn_cf_discard_chain | 0 | Curl_cfilter ** |
+| (Curl_cfilter **,Curl_easy *) | | Curl_conn_cf_discard_chain | 1 | Curl_easy * |
+| (Curl_cfilter **,Curl_easy *,connectdata *,const Curl_addrinfo *,int) | | Curl_cf_tcp_create | 0 | Curl_cfilter ** |
+| (Curl_cfilter **,Curl_easy *,connectdata *,const Curl_addrinfo *,int) | | Curl_cf_tcp_create | 1 | Curl_easy * |
+| (Curl_cfilter **,Curl_easy *,connectdata *,const Curl_addrinfo *,int) | | Curl_cf_tcp_create | 2 | connectdata * |
+| (Curl_cfilter **,Curl_easy *,connectdata *,const Curl_addrinfo *,int) | | Curl_cf_tcp_create | 3 | const Curl_addrinfo * |
+| (Curl_cfilter **,Curl_easy *,connectdata *,const Curl_addrinfo *,int) | | Curl_cf_tcp_create | 4 | int |
+| (Curl_cfilter **,Curl_easy *,connectdata *,const Curl_addrinfo *,int) | | Curl_cf_udp_create | 0 | Curl_cfilter ** |
+| (Curl_cfilter **,Curl_easy *,connectdata *,const Curl_addrinfo *,int) | | Curl_cf_udp_create | 1 | Curl_easy * |
+| (Curl_cfilter **,Curl_easy *,connectdata *,const Curl_addrinfo *,int) | | Curl_cf_udp_create | 2 | connectdata * |
+| (Curl_cfilter **,Curl_easy *,connectdata *,const Curl_addrinfo *,int) | | Curl_cf_udp_create | 3 | const Curl_addrinfo * |
+| (Curl_cfilter **,Curl_easy *,connectdata *,const Curl_addrinfo *,int) | | Curl_cf_udp_create | 4 | int |
+| (Curl_cfilter **,Curl_easy *,connectdata *,const Curl_addrinfo *,int) | | Curl_cf_unix_create | 0 | Curl_cfilter ** |
+| (Curl_cfilter **,Curl_easy *,connectdata *,const Curl_addrinfo *,int) | | Curl_cf_unix_create | 1 | Curl_easy * |
+| (Curl_cfilter **,Curl_easy *,connectdata *,const Curl_addrinfo *,int) | | Curl_cf_unix_create | 2 | connectdata * |
+| (Curl_cfilter **,Curl_easy *,connectdata *,const Curl_addrinfo *,int) | | Curl_cf_unix_create | 3 | const Curl_addrinfo * |
+| (Curl_cfilter **,Curl_easy *,connectdata *,const Curl_addrinfo *,int) | | Curl_cf_unix_create | 4 | int |
+| (Curl_cfilter **,const Curl_cftype *,void *) | | Curl_cf_create | 0 | Curl_cfilter ** |
+| (Curl_cfilter **,const Curl_cftype *,void *) | | Curl_cf_create | 1 | const Curl_cftype * |
+| (Curl_cfilter **,const Curl_cftype *,void *) | | Curl_cf_create | 2 | void * |
+| (Curl_cfilter *,Curl_cfilter *) | | Curl_conn_cf_insert_after | 0 | Curl_cfilter * |
+| (Curl_cfilter *,Curl_cfilter *) | | Curl_conn_cf_insert_after | 1 | Curl_cfilter * |
+| (Curl_cfilter *,Curl_easy *) | | Curl_ssl_cf_get_config | 0 | Curl_cfilter * |
+| (Curl_cfilter *,Curl_easy *) | | Curl_ssl_cf_get_config | 1 | Curl_easy * |
+| (Curl_cfilter *,Curl_easy *,bool,int,int,void *) | | Curl_conn_cf_cntrl | 0 | Curl_cfilter * |
+| (Curl_cfilter *,Curl_easy *,bool,int,int,void *) | | Curl_conn_cf_cntrl | 1 | Curl_easy * |
+| (Curl_cfilter *,Curl_easy *,bool,int,int,void *) | | Curl_conn_cf_cntrl | 2 | bool |
+| (Curl_cfilter *,Curl_easy *,bool,int,int,void *) | | Curl_conn_cf_cntrl | 3 | int |
+| (Curl_cfilter *,Curl_easy *,bool,int,int,void *) | | Curl_conn_cf_cntrl | 4 | int |
+| (Curl_cfilter *,Curl_easy *,bool,int,int,void *) | | Curl_conn_cf_cntrl | 5 | void * |
+| (Curl_cfilter *,Curl_easy *,const char *,Curl_ssl_session *) | | Curl_ssl_scache_put | 0 | Curl_cfilter * |
+| (Curl_cfilter *,Curl_easy *,const char *,Curl_ssl_session *) | | Curl_ssl_scache_put | 1 | Curl_easy * |
+| (Curl_cfilter *,Curl_easy *,const char *,Curl_ssl_session *) | | Curl_ssl_scache_put | 2 | const char * |
+| (Curl_cfilter *,Curl_easy *,const char *,Curl_ssl_session *) | | Curl_ssl_scache_put | 3 | Curl_ssl_session * |
+| (Curl_cfilter *,Curl_easy *,const char *,Curl_ssl_session *) | | Curl_ssl_scache_return | 0 | Curl_cfilter * |
+| (Curl_cfilter *,Curl_easy *,const char *,Curl_ssl_session *) | | Curl_ssl_scache_return | 1 | Curl_easy * |
+| (Curl_cfilter *,Curl_easy *,const char *,Curl_ssl_session *) | | Curl_ssl_scache_return | 2 | const char * |
+| (Curl_cfilter *,Curl_easy *,const char *,Curl_ssl_session *) | | Curl_ssl_scache_return | 3 | Curl_ssl_session * |
+| (Curl_cfilter *,Curl_easy *,const char *,void **) | | Curl_ssl_scache_get_obj | 0 | Curl_cfilter * |
+| (Curl_cfilter *,Curl_easy *,const char *,void **) | | Curl_ssl_scache_get_obj | 1 | Curl_easy * |
+| (Curl_cfilter *,Curl_easy *,const char *,void **) | | Curl_ssl_scache_get_obj | 2 | const char * |
+| (Curl_cfilter *,Curl_easy *,const char *,void **) | | Curl_ssl_scache_get_obj | 3 | void ** |
+| (Curl_cfilter *,Curl_easy *,curl_socket_t *,const Curl_sockaddr_ex **,ip_quadruple *) | | Curl_cf_socket_peek | 0 | Curl_cfilter * |
+| (Curl_cfilter *,Curl_easy *,curl_socket_t *,const Curl_sockaddr_ex **,ip_quadruple *) | | Curl_cf_socket_peek | 1 | Curl_easy * |
+| (Curl_cfilter *,Curl_easy *,curl_socket_t *,const Curl_sockaddr_ex **,ip_quadruple *) | | Curl_cf_socket_peek | 2 | curl_socket_t * |
+| (Curl_cfilter *,Curl_easy *,curl_socket_t *,const Curl_sockaddr_ex **,ip_quadruple *) | | Curl_cf_socket_peek | 3 | const Curl_sockaddr_ex ** |
+| (Curl_cfilter *,Curl_easy *,curl_socket_t *,const Curl_sockaddr_ex **,ip_quadruple *) | | Curl_cf_socket_peek | 4 | ip_quadruple * |
+| (Curl_cfilter *,Curl_easy *,easy_pollset *) | | Curl_conn_cf_adjust_pollset | 0 | Curl_cfilter * |
+| (Curl_cfilter *,Curl_easy *,easy_pollset *) | | Curl_conn_cf_adjust_pollset | 1 | Curl_easy * |
+| (Curl_cfilter *,Curl_easy *,easy_pollset *) | | Curl_conn_cf_adjust_pollset | 2 | easy_pollset * |
+| (Curl_cfilter *,Curl_easy *,ssl_connect_data *,const unsigned char *,size_t) | | Curl_alpn_set_negotiated | 0 | Curl_cfilter * |
+| (Curl_cfilter *,Curl_easy *,ssl_connect_data *,const unsigned char *,size_t) | | Curl_alpn_set_negotiated | 1 | Curl_easy * |
+| (Curl_cfilter *,Curl_easy *,ssl_connect_data *,const unsigned char *,size_t) | | Curl_alpn_set_negotiated | 2 | ssl_connect_data * |
+| (Curl_cfilter *,Curl_easy *,ssl_connect_data *,const unsigned char *,size_t) | | Curl_alpn_set_negotiated | 3 | const unsigned char * |
+| (Curl_cfilter *,Curl_easy *,ssl_connect_data *,const unsigned char *,size_t) | | Curl_alpn_set_negotiated | 4 | size_t |
+| (Curl_cfilter *,Curl_easy *,timediff_t) | | Curl_conn_cf_poll | 0 | Curl_cfilter * |
+| (Curl_cfilter *,Curl_easy *,timediff_t) | | Curl_conn_cf_poll | 1 | Curl_easy * |
+| (Curl_cfilter *,Curl_easy *,timediff_t) | | Curl_conn_cf_poll | 2 | timediff_t |
+| (Curl_cfilter *,const char **,int *,bool *) | | Curl_http_proxy_get_destination | 0 | Curl_cfilter * |
+| (Curl_cfilter *,const char **,int *,bool *) | | Curl_http_proxy_get_destination | 1 | const char ** |
+| (Curl_cfilter *,const char **,int *,bool *) | | Curl_http_proxy_get_destination | 2 | int * |
+| (Curl_cfilter *,const char **,int *,bool *) | | Curl_http_proxy_get_destination | 3 | bool * |
+| (Curl_creader **,Curl_easy *,const Curl_crtype *,Curl_creader_phase) | | Curl_creader_create | 0 | Curl_creader ** |
+| (Curl_creader **,Curl_easy *,const Curl_crtype *,Curl_creader_phase) | | Curl_creader_create | 1 | Curl_easy * |
+| (Curl_creader **,Curl_easy *,const Curl_crtype *,Curl_creader_phase) | | Curl_creader_create | 2 | const Curl_crtype * |
+| (Curl_creader **,Curl_easy *,const Curl_crtype *,Curl_creader_phase) | | Curl_creader_create | 3 | Curl_creader_phase |
+| (Curl_cwriter **,Curl_easy *,const Curl_cwtype *,Curl_cwriter_phase) | | Curl_cwriter_create | 0 | Curl_cwriter ** |
+| (Curl_cwriter **,Curl_easy *,const Curl_cwtype *,Curl_cwriter_phase) | | Curl_cwriter_create | 1 | Curl_easy * |
+| (Curl_cwriter **,Curl_easy *,const Curl_cwtype *,Curl_cwriter_phase) | | Curl_cwriter_create | 2 | const Curl_cwtype * |
+| (Curl_cwriter **,Curl_easy *,const Curl_cwtype *,Curl_cwriter_phase) | | Curl_cwriter_create | 3 | Curl_cwriter_phase |
+| (Curl_easy *) | | Curl_connect_only_attach | 0 | Curl_easy * |
+| (Curl_easy *) | | Curl_cpool_prune_dead | 0 | Curl_easy * |
+| (Curl_easy *) | | Curl_creader_will_rewind | 0 | Curl_easy * |
+| (Curl_easy *) | | Curl_init_userdefined | 0 | Curl_easy * |
+| (Curl_easy *) | | Curl_psl_use | 0 | Curl_easy * |
+| (Curl_easy *) | | Curl_req_send_more | 0 | Curl_easy * |
+| (Curl_easy *) | | Curl_ssl_easy_config_init | 0 | Curl_easy * |
+| (Curl_easy *) | | Curl_updatesocket | 0 | Curl_easy * |
+| (Curl_easy **) | | Curl_close | 0 | Curl_easy ** |
+| (Curl_easy *,CURLcode,bool) | | Curl_http_done | 0 | Curl_easy * |
+| (Curl_easy *,CURLcode,bool) | | Curl_http_done | 1 | CURLcode |
+| (Curl_easy *,CURLcode,bool) | | Curl_http_done | 2 | bool |
+| (Curl_easy *,CURLoption,va_list) | | Curl_vsetopt | 0 | Curl_easy * |
+| (Curl_easy *,CURLoption,va_list) | | Curl_vsetopt | 1 | CURLoption |
+| (Curl_easy *,CURLoption,va_list) | | Curl_vsetopt | 2 | va_list |
+| (Curl_easy *,CookieInfo *,bool,bool,const char *,const char *,const char *,bool) | | Curl_cookie_add | 0 | Curl_easy * |
+| (Curl_easy *,CookieInfo *,bool,bool,const char *,const char *,const char *,bool) | | Curl_cookie_add | 1 | CookieInfo * |
+| (Curl_easy *,CookieInfo *,bool,bool,const char *,const char *,const char *,bool) | | Curl_cookie_add | 2 | bool |
+| (Curl_easy *,CookieInfo *,bool,bool,const char *,const char *,const char *,bool) | | Curl_cookie_add | 3 | bool |
+| (Curl_easy *,CookieInfo *,bool,bool,const char *,const char *,const char *,bool) | | Curl_cookie_add | 4 | const char * |
+| (Curl_easy *,CookieInfo *,bool,bool,const char *,const char *,const char *,bool) | | Curl_cookie_add | 5 | const char * |
+| (Curl_easy *,CookieInfo *,bool,bool,const char *,const char *,const char *,bool) | | Curl_cookie_add | 6 | const char * |
+| (Curl_easy *,CookieInfo *,bool,bool,const char *,const char *,const char *,bool) | | Curl_cookie_add | 7 | bool |
+| (Curl_easy *,CookieInfo *,const char *,const char *,bool,Curl_llist *) | | Curl_cookie_getlist | 0 | Curl_easy * |
+| (Curl_easy *,CookieInfo *,const char *,const char *,bool,Curl_llist *) | | Curl_cookie_getlist | 1 | CookieInfo * |
+| (Curl_easy *,CookieInfo *,const char *,const char *,bool,Curl_llist *) | | Curl_cookie_getlist | 2 | const char * |
+| (Curl_easy *,CookieInfo *,const char *,const char *,bool,Curl_llist *) | | Curl_cookie_getlist | 3 | const char * |
+| (Curl_easy *,CookieInfo *,const char *,const char *,bool,Curl_llist *) | | Curl_cookie_getlist | 4 | bool |
+| (Curl_easy *,CookieInfo *,const char *,const char *,bool,Curl_llist *) | | Curl_cookie_getlist | 5 | Curl_llist * |
+| (Curl_easy *,Curl_addrinfo *,const char *,size_t,int,bool) | | Curl_cache_addr | 0 | Curl_easy * |
+| (Curl_easy *,Curl_addrinfo *,const char *,size_t,int,bool) | | Curl_cache_addr | 1 | Curl_addrinfo * |
+| (Curl_easy *,Curl_addrinfo *,const char *,size_t,int,bool) | | Curl_cache_addr | 2 | const char * |
+| (Curl_easy *,Curl_addrinfo *,const char *,size_t,int,bool) | | Curl_cache_addr | 3 | size_t |
+| (Curl_easy *,Curl_addrinfo *,const char *,size_t,int,bool) | | Curl_cache_addr | 4 | int |
+| (Curl_easy *,Curl_addrinfo *,const char *,size_t,int,bool) | | Curl_cache_addr | 5 | bool |
+| (Curl_easy *,Curl_chunker *) | | Curl_httpchunk_free | 0 | Curl_easy * |
+| (Curl_easy *,Curl_chunker *) | | Curl_httpchunk_free | 1 | Curl_chunker * |
+| (Curl_easy *,Curl_chunker *,bool) | | Curl_httpchunk_init | 0 | Curl_easy * |
+| (Curl_easy *,Curl_chunker *,bool) | | Curl_httpchunk_init | 1 | Curl_chunker * |
+| (Curl_easy *,Curl_chunker *,bool) | | Curl_httpchunk_init | 2 | bool |
+| (Curl_easy *,Curl_chunker *,bool) | | Curl_httpchunk_reset | 0 | Curl_easy * |
+| (Curl_easy *,Curl_chunker *,bool) | | Curl_httpchunk_reset | 1 | Curl_chunker * |
+| (Curl_easy *,Curl_chunker *,bool) | | Curl_httpchunk_reset | 2 | bool |
+| (Curl_easy *,Curl_chunker *,char *,size_t,size_t *) | | Curl_httpchunk_read | 0 | Curl_easy * |
+| (Curl_easy *,Curl_chunker *,char *,size_t,size_t *) | | Curl_httpchunk_read | 1 | Curl_chunker * |
+| (Curl_easy *,Curl_chunker *,char *,size_t,size_t *) | | Curl_httpchunk_read | 2 | char * |
+| (Curl_easy *,Curl_chunker *,char *,size_t,size_t *) | | Curl_httpchunk_read | 3 | size_t |
+| (Curl_easy *,Curl_chunker *,char *,size_t,size_t *) | | Curl_httpchunk_read | 4 | size_t * |
+| (Curl_easy *,Curl_creader *) | | Curl_creader_add | 0 | Curl_easy * |
+| (Curl_easy *,Curl_creader *) | | Curl_creader_add | 1 | Curl_creader * |
+| (Curl_easy *,Curl_creader *) | | Curl_creader_set | 0 | Curl_easy * |
+| (Curl_easy *,Curl_creader *) | | Curl_creader_set | 1 | Curl_creader * |
+| (Curl_easy *,Curl_cwriter *) | | Curl_cwriter_add | 0 | Curl_easy * |
+| (Curl_easy *,Curl_cwriter *) | | Curl_cwriter_add | 1 | Curl_cwriter * |
+| (Curl_easy *,Curl_dns_entry **) | | Curl_resolv_check | 0 | Curl_easy * |
+| (Curl_easy *,Curl_dns_entry **) | | Curl_resolv_check | 1 | Curl_dns_entry ** |
+| (Curl_easy *,Curl_dns_entry **) | | Curl_resolv_unlink | 0 | Curl_easy * |
+| (Curl_easy *,Curl_dns_entry **) | | Curl_resolv_unlink | 1 | Curl_dns_entry ** |
+| (Curl_easy *,altsvcinfo *,const char *,alpnid,const char *,unsigned short) | | Curl_altsvc_parse | 0 | Curl_easy * |
+| (Curl_easy *,altsvcinfo *,const char *,alpnid,const char *,unsigned short) | | Curl_altsvc_parse | 1 | altsvcinfo * |
+| (Curl_easy *,altsvcinfo *,const char *,alpnid,const char *,unsigned short) | | Curl_altsvc_parse | 2 | const char * |
+| (Curl_easy *,altsvcinfo *,const char *,alpnid,const char *,unsigned short) | | Curl_altsvc_parse | 3 | alpnid |
+| (Curl_easy *,altsvcinfo *,const char *,alpnid,const char *,unsigned short) | | Curl_altsvc_parse | 4 | const char * |
+| (Curl_easy *,altsvcinfo *,const char *,alpnid,const char *,unsigned short) | | Curl_altsvc_parse | 5 | unsigned short |
+| (Curl_easy *,bool *) | | Curl_http | 0 | Curl_easy * |
+| (Curl_easy *,bool *) | | Curl_http | 1 | bool * |
+| (Curl_easy *,bool *) | | Curl_http_connect | 0 | Curl_easy * |
+| (Curl_easy *,bool *) | | Curl_http_connect | 1 | bool * |
+| (Curl_easy *,bool *) | | Curl_once_resolved | 0 | Curl_easy * |
+| (Curl_easy *,bool *) | | Curl_once_resolved | 1 | bool * |
+| (Curl_easy *,bool *,bool *) | | Curl_connect | 0 | Curl_easy * |
+| (Curl_easy *,bool *,bool *) | | Curl_connect | 1 | bool * |
+| (Curl_easy *,bool *,bool *) | | Curl_connect | 2 | bool * |
+| (Curl_easy *,bool) | | Curl_creader_set_rewind | 0 | Curl_easy * |
+| (Curl_easy *,bool) | | Curl_creader_set_rewind | 1 | bool |
+| (Curl_easy *,bool) | | Curl_set_in_callback | 0 | Curl_easy * |
+| (Curl_easy *,bool) | | Curl_set_in_callback | 1 | bool |
+| (Curl_easy *,bool,dynbuf *) | | Curl_add_custom_headers | 0 | Curl_easy * |
+| (Curl_easy *,bool,dynbuf *) | | Curl_add_custom_headers | 1 | bool |
+| (Curl_easy *,bool,dynbuf *) | | Curl_add_custom_headers | 2 | dynbuf * |
+| (Curl_easy *,char **) | | Curl_retry_request | 0 | Curl_easy * |
+| (Curl_easy *,char **) | | Curl_retry_request | 1 | char ** |
+| (Curl_easy *,char **,size_t *) | | Curl_multi_xfer_buf_borrow | 0 | Curl_easy * |
+| (Curl_easy *,char **,size_t *) | | Curl_multi_xfer_buf_borrow | 1 | char ** |
+| (Curl_easy *,char **,size_t *) | | Curl_multi_xfer_buf_borrow | 2 | size_t * |
+| (Curl_easy *,char **,size_t *) | | Curl_multi_xfer_ulbuf_borrow | 0 | Curl_easy * |
+| (Curl_easy *,char **,size_t *) | | Curl_multi_xfer_ulbuf_borrow | 1 | char ** |
+| (Curl_easy *,char **,size_t *) | | Curl_multi_xfer_ulbuf_borrow | 2 | size_t * |
+| (Curl_easy *,char *,size_t,size_t *,bool *) | | Curl_client_read | 0 | Curl_easy * |
+| (Curl_easy *,char *,size_t,size_t *,bool *) | | Curl_client_read | 1 | char * |
+| (Curl_easy *,char *,size_t,size_t *,bool *) | | Curl_client_read | 2 | size_t |
+| (Curl_easy *,char *,size_t,size_t *,bool *) | | Curl_client_read | 3 | size_t * |
+| (Curl_easy *,char *,size_t,size_t *,bool *) | | Curl_client_read | 4 | bool * |
+| (Curl_easy *,connectdata *) | | Curl_attach_connection | 0 | Curl_easy * |
+| (Curl_easy *,connectdata *) | | Curl_attach_connection | 1 | connectdata * |
+| (Curl_easy *,connectdata *) | | Curl_cpool_add_conn | 0 | Curl_easy * |
+| (Curl_easy *,connectdata *) | | Curl_cpool_add_conn | 1 | connectdata * |
+| (Curl_easy *,connectdata *) | | Curl_cpool_check_limits | 0 | Curl_easy * |
+| (Curl_easy *,connectdata *) | | Curl_cpool_check_limits | 1 | connectdata * |
+| (Curl_easy *,connectdata *,Curl_cpool_conn_do_cb *,void *) | | Curl_cpool_do_locked | 0 | Curl_easy * |
+| (Curl_easy *,connectdata *,Curl_cpool_conn_do_cb *,void *) | | Curl_cpool_do_locked | 1 | connectdata * |
+| (Curl_easy *,connectdata *,Curl_cpool_conn_do_cb *,void *) | | Curl_cpool_do_locked | 2 | Curl_cpool_conn_do_cb * |
+| (Curl_easy *,connectdata *,Curl_cpool_conn_do_cb *,void *) | | Curl_cpool_do_locked | 3 | void * |
+| (Curl_easy *,connectdata *,bool) | | Curl_cpool_disconnect | 0 | Curl_easy * |
+| (Curl_easy *,connectdata *,bool) | | Curl_cpool_disconnect | 1 | connectdata * |
+| (Curl_easy *,connectdata *,bool) | | Curl_cpool_disconnect | 2 | bool |
+| (Curl_easy *,connectdata *,bool) | | Curl_on_disconnect | 0 | Curl_easy * |
+| (Curl_easy *,connectdata *,bool) | | Curl_on_disconnect | 1 | connectdata * |
+| (Curl_easy *,connectdata *,bool) | | Curl_on_disconnect | 2 | bool |
+| (Curl_easy *,connectdata *,const char **,Curl_HttpReq *) | | Curl_http_method | 0 | Curl_easy * |
+| (Curl_easy *,connectdata *,const char **,Curl_HttpReq *) | | Curl_http_method | 1 | connectdata * |
+| (Curl_easy *,connectdata *,const char **,Curl_HttpReq *) | | Curl_http_method | 2 | const char ** |
+| (Curl_easy *,connectdata *,const char **,Curl_HttpReq *) | | Curl_http_method | 3 | Curl_HttpReq * |
+| (Curl_easy *,connectdata *,curl_socket_t *) | | Curl_http_getsock_do | 0 | Curl_easy * |
+| (Curl_easy *,connectdata *,curl_socket_t *) | | Curl_http_getsock_do | 1 | connectdata * |
+| (Curl_easy *,connectdata *,curl_socket_t *) | | Curl_http_getsock_do | 2 | curl_socket_t * |
+| (Curl_easy *,connectdata *,curltime *) | | Curl_conn_upkeep | 0 | Curl_easy * |
+| (Curl_easy *,connectdata *,curltime *) | | Curl_conn_upkeep | 1 | connectdata * |
+| (Curl_easy *,connectdata *,curltime *) | | Curl_conn_upkeep | 2 | curltime * |
+| (Curl_easy *,connectdata *,int) | | Curl_conn_cf_discard_all | 0 | Curl_easy * |
+| (Curl_easy *,connectdata *,int) | | Curl_conn_cf_discard_all | 1 | connectdata * |
+| (Curl_easy *,connectdata *,int) | | Curl_conn_cf_discard_all | 2 | int |
+| (Curl_easy *,connectdata *,int) | | Curl_http2_may_switch | 0 | Curl_easy * |
+| (Curl_easy *,connectdata *,int) | | Curl_http2_may_switch | 1 | connectdata * |
+| (Curl_easy *,connectdata *,int) | | Curl_http2_may_switch | 2 | int |
+| (Curl_easy *,connectdata *,int) | | Curl_http2_switch | 0 | Curl_easy * |
+| (Curl_easy *,connectdata *,int) | | Curl_http2_switch | 1 | connectdata * |
+| (Curl_easy *,connectdata *,int) | | Curl_http2_switch | 2 | int |
+| (Curl_easy *,connectdata *,int) | | Curl_ssl_cfilter_add | 0 | Curl_easy * |
+| (Curl_easy *,connectdata *,int) | | Curl_ssl_cfilter_add | 1 | connectdata * |
+| (Curl_easy *,connectdata *,int) | | Curl_ssl_cfilter_add | 2 | int |
+| (Curl_easy *,connectdata *,int,Curl_cfilter *) | | Curl_conn_cf_add | 0 | Curl_easy * |
+| (Curl_easy *,connectdata *,int,Curl_cfilter *) | | Curl_conn_cf_add | 1 | connectdata * |
+| (Curl_easy *,connectdata *,int,Curl_cfilter *) | | Curl_conn_cf_add | 2 | int |
+| (Curl_easy *,connectdata *,int,Curl_cfilter *) | | Curl_conn_cf_add | 3 | Curl_cfilter * |
+| (Curl_easy *,connectdata *,int,const Curl_dns_entry *) | | Curl_cf_https_setup | 0 | Curl_easy * |
+| (Curl_easy *,connectdata *,int,const Curl_dns_entry *) | | Curl_cf_https_setup | 1 | connectdata * |
+| (Curl_easy *,connectdata *,int,const Curl_dns_entry *) | | Curl_cf_https_setup | 2 | int |
+| (Curl_easy *,connectdata *,int,const Curl_dns_entry *) | | Curl_cf_https_setup | 3 | const Curl_dns_entry * |
+| (Curl_easy *,connectdata *,int,const Curl_dns_entry *,int) | | Curl_conn_setup | 0 | Curl_easy * |
+| (Curl_easy *,connectdata *,int,const Curl_dns_entry *,int) | | Curl_conn_setup | 1 | connectdata * |
+| (Curl_easy *,connectdata *,int,const Curl_dns_entry *,int) | | Curl_conn_setup | 2 | int |
+| (Curl_easy *,connectdata *,int,const Curl_dns_entry *,int) | | Curl_conn_setup | 3 | const Curl_dns_entry * |
+| (Curl_easy *,connectdata *,int,const Curl_dns_entry *,int) | | Curl_conn_setup | 4 | int |
+| (Curl_easy *,connectdata *,int,const char *,size_t) | | Curl_http2_upgrade | 0 | Curl_easy * |
+| (Curl_easy *,connectdata *,int,const char *,size_t) | | Curl_http2_upgrade | 1 | connectdata * |
+| (Curl_easy *,connectdata *,int,const char *,size_t) | | Curl_http2_upgrade | 2 | int |
+| (Curl_easy *,connectdata *,int,const char *,size_t) | | Curl_http2_upgrade | 3 | const char * |
+| (Curl_easy *,connectdata *,int,const char *,size_t) | | Curl_http2_upgrade | 4 | size_t |
+| (Curl_easy *,connectdata *,int,curl_socket_t *) | | Curl_conn_tcp_listen_set | 0 | Curl_easy * |
+| (Curl_easy *,connectdata *,int,curl_socket_t *) | | Curl_conn_tcp_listen_set | 1 | connectdata * |
+| (Curl_easy *,connectdata *,int,curl_socket_t *) | | Curl_conn_tcp_listen_set | 2 | int |
+| (Curl_easy *,connectdata *,int,curl_socket_t *) | | Curl_conn_tcp_listen_set | 3 | curl_socket_t * |
+| (Curl_easy *,const Curl_addrinfo *,Curl_sockaddr_ex *,int,curl_socket_t *) | | Curl_socket_open | 0 | Curl_easy * |
+| (Curl_easy *,const Curl_addrinfo *,Curl_sockaddr_ex *,int,curl_socket_t *) | | Curl_socket_open | 1 | const Curl_addrinfo * |
+| (Curl_easy *,const Curl_addrinfo *,Curl_sockaddr_ex *,int,curl_socket_t *) | | Curl_socket_open | 2 | Curl_sockaddr_ex * |
+| (Curl_easy *,const Curl_addrinfo *,Curl_sockaddr_ex *,int,curl_socket_t *) | | Curl_socket_open | 3 | int |
+| (Curl_easy *,const Curl_addrinfo *,Curl_sockaddr_ex *,int,curl_socket_t *) | | Curl_socket_open | 4 | curl_socket_t * |
+| (Curl_easy *,const Curl_crtype *) | | Curl_creader_get_by_type | 0 | Curl_easy * |
+| (Curl_easy *,const Curl_crtype *) | | Curl_creader_get_by_type | 1 | const Curl_crtype * |
+| (Curl_easy *,const Curl_cwtype *) | | Curl_cwriter_get_by_type | 0 | Curl_easy * |
+| (Curl_easy *,const Curl_cwtype *) | | Curl_cwriter_get_by_type | 1 | const Curl_cwtype * |
+| (Curl_easy *,const bufref *,ntlmdata *) | | Curl_auth_decode_ntlm_type2_message | 0 | Curl_easy * |
+| (Curl_easy *,const bufref *,ntlmdata *) | | Curl_auth_decode_ntlm_type2_message | 1 | const bufref * |
+| (Curl_easy *,const bufref *,ntlmdata *) | | Curl_auth_decode_ntlm_type2_message | 2 | ntlmdata * |
+| (Curl_easy *,const char *) | | Curl_cwriter_get_by_name | 0 | Curl_easy * |
+| (Curl_easy *,const char *) | | Curl_cwriter_get_by_name | 1 | const char * |
+| (Curl_easy *,const char *) | | Curl_rtsp_parseheader | 0 | Curl_easy * |
+| (Curl_easy *,const char *) | | Curl_rtsp_parseheader | 1 | const char * |
+| (Curl_easy *,const char *,CookieInfo *,bool) | | Curl_cookie_init | 0 | Curl_easy * |
+| (Curl_easy *,const char *,CookieInfo *,bool) | | Curl_cookie_init | 1 | const char * |
+| (Curl_easy *,const char *,CookieInfo *,bool) | | Curl_cookie_init | 2 | CookieInfo * |
+| (Curl_easy *,const char *,CookieInfo *,bool) | | Curl_cookie_init | 3 | bool |
+| (Curl_easy *,const char *,FILE **,char **) | | Curl_fopen | 0 | Curl_easy * |
+| (Curl_easy *,const char *,FILE **,char **) | | Curl_fopen | 1 | const char * |
+| (Curl_easy *,const char *,FILE **,char **) | | Curl_fopen | 2 | FILE ** |
+| (Curl_easy *,const char *,FILE **,char **) | | Curl_fopen | 3 | char ** |
+| (Curl_easy *,const char *,const char *,ntlmdata *,bufref *) | | Curl_auth_create_ntlm_type3_message | 0 | Curl_easy * |
+| (Curl_easy *,const char *,const char *,ntlmdata *,bufref *) | | Curl_auth_create_ntlm_type3_message | 1 | const char * |
+| (Curl_easy *,const char *,const char *,ntlmdata *,bufref *) | | Curl_auth_create_ntlm_type3_message | 2 | const char * |
+| (Curl_easy *,const char *,const char *,ntlmdata *,bufref *) | | Curl_auth_create_ntlm_type3_message | 3 | ntlmdata * |
+| (Curl_easy *,const char *,const char *,ntlmdata *,bufref *) | | Curl_auth_create_ntlm_type3_message | 4 | bufref * |
+| (Curl_easy *,const char *,int,Curl_dns_entry **,timediff_t) | | Curl_resolv_timeout | 0 | Curl_easy * |
+| (Curl_easy *,const char *,int,Curl_dns_entry **,timediff_t) | | Curl_resolv_timeout | 1 | const char * |
+| (Curl_easy *,const char *,int,Curl_dns_entry **,timediff_t) | | Curl_resolv_timeout | 2 | int |
+| (Curl_easy *,const char *,int,Curl_dns_entry **,timediff_t) | | Curl_resolv_timeout | 3 | Curl_dns_entry ** |
+| (Curl_easy *,const char *,int,Curl_dns_entry **,timediff_t) | | Curl_resolv_timeout | 4 | timediff_t |
+| (Curl_easy *,const char *,int,bool,Curl_dns_entry **) | | Curl_resolv | 0 | Curl_easy * |
+| (Curl_easy *,const char *,int,bool,Curl_dns_entry **) | | Curl_resolv | 1 | const char * |
+| (Curl_easy *,const char *,int,bool,Curl_dns_entry **) | | Curl_resolv | 2 | int |
+| (Curl_easy *,const char *,int,bool,Curl_dns_entry **) | | Curl_resolv | 3 | bool |
+| (Curl_easy *,const char *,int,bool,Curl_dns_entry **) | | Curl_resolv | 4 | Curl_dns_entry ** |
+| (Curl_easy *,const char *,size_t,bool) | | Curl_http_write_resp_hd | 0 | Curl_easy * |
+| (Curl_easy *,const char *,size_t,bool) | | Curl_http_write_resp_hd | 1 | const char * |
+| (Curl_easy *,const char *,size_t,bool) | | Curl_http_write_resp_hd | 2 | size_t |
+| (Curl_easy *,const char *,size_t,bool) | | Curl_http_write_resp_hd | 3 | bool |
+| (Curl_easy *,const char *,size_t,size_t *) | | Curl_http_write_resp_hds | 0 | Curl_easy * |
+| (Curl_easy *,const char *,size_t,size_t *) | | Curl_http_write_resp_hds | 1 | const char * |
+| (Curl_easy *,const char *,size_t,size_t *) | | Curl_http_write_resp_hds | 2 | size_t |
+| (Curl_easy *,const char *,size_t,size_t *) | | Curl_http_write_resp_hds | 3 | size_t * |
+| (Curl_easy *,const void *,size_t,bool,size_t *) | | Curl_xfer_send | 0 | Curl_easy * |
+| (Curl_easy *,const void *,size_t,bool,size_t *) | | Curl_xfer_send | 1 | const void * |
+| (Curl_easy *,const void *,size_t,bool,size_t *) | | Curl_xfer_send | 2 | size_t |
+| (Curl_easy *,const void *,size_t,bool,size_t *) | | Curl_xfer_send | 3 | bool |
+| (Curl_easy *,const void *,size_t,bool,size_t *) | | Curl_xfer_send | 4 | size_t * |
+| (Curl_easy *,const void *,size_t,size_t *) | | Curl_senddata | 0 | Curl_easy * |
+| (Curl_easy *,const void *,size_t,size_t *) | | Curl_senddata | 1 | const void * |
+| (Curl_easy *,const void *,size_t,size_t *) | | Curl_senddata | 2 | size_t |
+| (Curl_easy *,const void *,size_t,size_t *) | | Curl_senddata | 3 | size_t * |
+| (Curl_easy *,curl_mimepart *,const curl_mimepart *) | | Curl_mime_duppart | 0 | Curl_easy * |
+| (Curl_easy *,curl_mimepart *,const curl_mimepart *) | | Curl_mime_duppart | 1 | curl_mimepart * |
+| (Curl_easy *,curl_mimepart *,const curl_mimepart *) | | Curl_mime_duppart | 2 | const curl_mimepart * |
+| (Curl_easy *,curl_off_t) | | Curl_pgrsEarlyData | 0 | Curl_easy * |
+| (Curl_easy *,curl_off_t) | | Curl_pgrsEarlyData | 1 | curl_off_t |
+| (Curl_easy *,curltime *) | | Curl_sendrecv | 0 | Curl_easy * |
+| (Curl_easy *,curltime *) | | Curl_sendrecv | 1 | curltime * |
+| (Curl_easy *,curltime *,bool) | | Curl_timeleft | 0 | Curl_easy * |
+| (Curl_easy *,curltime *,bool) | | Curl_timeleft | 1 | curltime * |
+| (Curl_easy *,curltime *,bool) | | Curl_timeleft | 2 | bool |
+| (Curl_easy *,curltime) | | Curl_speedcheck | 0 | Curl_easy * |
+| (Curl_easy *,curltime) | | Curl_speedcheck | 1 | curltime |
+| (Curl_easy *,dynbuf *) | | Curl_req_send | 0 | Curl_easy * |
+| (Curl_easy *,dynbuf *) | | Curl_req_send | 1 | dynbuf * |
+| (Curl_easy *,easy_pollset *,..(*)(..)) | | Curl_pollset_add_socks | 0 | Curl_easy * |
+| (Curl_easy *,easy_pollset *,..(*)(..)) | | Curl_pollset_add_socks | 1 | easy_pollset * |
+| (Curl_easy *,easy_pollset *,..(*)(..)) | | Curl_pollset_add_socks | 2 | ..(*)(..) |
+| (Curl_easy *,easy_pollset *,curl_socket_t,bool *,bool *) | | Curl_pollset_check | 0 | Curl_easy * |
+| (Curl_easy *,easy_pollset *,curl_socket_t,bool *,bool *) | | Curl_pollset_check | 1 | easy_pollset * |
+| (Curl_easy *,easy_pollset *,curl_socket_t,bool *,bool *) | | Curl_pollset_check | 2 | curl_socket_t |
+| (Curl_easy *,easy_pollset *,curl_socket_t,bool *,bool *) | | Curl_pollset_check | 3 | bool * |
+| (Curl_easy *,easy_pollset *,curl_socket_t,bool *,bool *) | | Curl_pollset_check | 4 | bool * |
+| (Curl_easy *,easy_pollset *,curl_socket_t,bool,bool) | | Curl_pollset_set | 0 | Curl_easy * |
+| (Curl_easy *,easy_pollset *,curl_socket_t,bool,bool) | | Curl_pollset_set | 1 | easy_pollset * |
+| (Curl_easy *,easy_pollset *,curl_socket_t,bool,bool) | | Curl_pollset_set | 2 | curl_socket_t |
+| (Curl_easy *,easy_pollset *,curl_socket_t,bool,bool) | | Curl_pollset_set | 3 | bool |
+| (Curl_easy *,easy_pollset *,curl_socket_t,bool,bool) | | Curl_pollset_set | 4 | bool |
+| (Curl_easy *,easy_pollset *,curl_socket_t,int,int) | | Curl_pollset_change | 0 | Curl_easy * |
+| (Curl_easy *,easy_pollset *,curl_socket_t,int,int) | | Curl_pollset_change | 1 | easy_pollset * |
+| (Curl_easy *,easy_pollset *,curl_socket_t,int,int) | | Curl_pollset_change | 2 | curl_socket_t |
+| (Curl_easy *,easy_pollset *,curl_socket_t,int,int) | | Curl_pollset_change | 3 | int |
+| (Curl_easy *,easy_pollset *,curl_socket_t,int,int) | | Curl_pollset_change | 4 | int |
+| (Curl_easy *,int) | | Curl_conn_get_socket | 0 | Curl_easy * |
+| (Curl_easy *,int) | | Curl_conn_get_socket | 1 | int |
+| (Curl_easy *,int,Curl_addrinfo *) | | Curl_addrinfo_callback | 0 | Curl_easy * |
+| (Curl_easy *,int,Curl_addrinfo *) | | Curl_addrinfo_callback | 1 | int |
+| (Curl_easy *,int,Curl_addrinfo *) | | Curl_addrinfo_callback | 2 | Curl_addrinfo * |
+| (Curl_easy *,int,bool,bool *) | | Curl_conn_connect | 0 | Curl_easy * |
+| (Curl_easy *,int,bool,bool *) | | Curl_conn_connect | 1 | int |
+| (Curl_easy *,int,bool,bool *) | | Curl_conn_connect | 2 | bool |
+| (Curl_easy *,int,bool,bool *) | | Curl_conn_connect | 3 | bool * |
+| (Curl_easy *,int,const char **,const char **,int *) | | Curl_conn_get_host | 0 | Curl_easy * |
+| (Curl_easy *,int,const char **,const char **,int *) | | Curl_conn_get_host | 1 | int |
+| (Curl_easy *,int,const char **,const char **,int *) | | Curl_conn_get_host | 2 | const char ** |
+| (Curl_easy *,int,const char **,const char **,int *) | | Curl_conn_get_host | 3 | const char ** |
+| (Curl_easy *,int,const char **,const char **,int *) | | Curl_conn_get_host | 4 | int * |
+| (Curl_easy *,int,curltime *) | | Curl_shutdown_start | 0 | Curl_easy * |
+| (Curl_easy *,int,curltime *) | | Curl_shutdown_start | 1 | int |
+| (Curl_easy *,int,curltime *) | | Curl_shutdown_start | 2 | curltime * |
+| (Curl_easy *,int,pingpong *,int *,size_t *) | | Curl_pp_readresp | 0 | Curl_easy * |
+| (Curl_easy *,int,pingpong *,int *,size_t *) | | Curl_pp_readresp | 1 | int |
+| (Curl_easy *,int,pingpong *,int *,size_t *) | | Curl_pp_readresp | 2 | pingpong * |
+| (Curl_easy *,int,pingpong *,int *,size_t *) | | Curl_pp_readresp | 3 | int * |
+| (Curl_easy *,int,pingpong *,int *,size_t *) | | Curl_pp_readresp | 4 | size_t * |
+| (Curl_easy *,pingpong *) | | Curl_pp_flushsend | 0 | Curl_easy * |
+| (Curl_easy *,pingpong *) | | Curl_pp_flushsend | 1 | pingpong * |
+| (Curl_easy *,pingpong *,bool) | | Curl_pp_state_timeout | 0 | Curl_easy * |
+| (Curl_easy *,pingpong *,bool) | | Curl_pp_state_timeout | 1 | pingpong * |
+| (Curl_easy *,pingpong *,bool) | | Curl_pp_state_timeout | 2 | bool |
+| (Curl_easy *,pingpong *,const char *,va_list) | | Curl_pp_vsendf | 0 | Curl_easy * |
+| (Curl_easy *,pingpong *,const char *,va_list) | | Curl_pp_vsendf | 1 | pingpong * |
+| (Curl_easy *,pingpong *,const char *,va_list) | | Curl_pp_vsendf | 2 | const char * |
+| (Curl_easy *,pingpong *,const char *,va_list) | | Curl_pp_vsendf | 3 | va_list |
+| (Curl_easy *,pingpong *,curl_socket_t *) | | Curl_pp_getsock | 0 | Curl_easy * |
+| (Curl_easy *,pingpong *,curl_socket_t *) | | Curl_pp_getsock | 1 | pingpong * |
+| (Curl_easy *,pingpong *,curl_socket_t *) | | Curl_pp_getsock | 2 | curl_socket_t * |
+| (Curl_easy *,size_t,bool) | | Curl_bump_headersize | 0 | Curl_easy * |
+| (Curl_easy *,size_t,bool) | | Curl_bump_headersize | 1 | size_t |
+| (Curl_easy *,size_t,bool) | | Curl_bump_headersize | 2 | bool |
+| (Curl_easy *,size_t,char **) | | Curl_multi_xfer_sockbuf_borrow | 0 | Curl_easy * |
+| (Curl_easy *,size_t,char **) | | Curl_multi_xfer_sockbuf_borrow | 1 | size_t |
+| (Curl_easy *,size_t,char **) | | Curl_multi_xfer_sockbuf_borrow | 2 | char ** |
+| (Curl_easy *,ssize_t *,int *) | | Curl_GetFTPResponse | 0 | Curl_easy * |
+| (Curl_easy *,ssize_t *,int *) | | Curl_GetFTPResponse | 1 | ssize_t * |
+| (Curl_easy *,ssize_t *,int *) | | Curl_GetFTPResponse | 2 | int * |
+| (Curl_easy *,timerid,curltime) | | Curl_pgrsTimeWas | 0 | Curl_easy * |
+| (Curl_easy *,timerid,curltime) | | Curl_pgrsTimeWas | 1 | timerid |
+| (Curl_easy *,timerid,curltime) | | Curl_pgrsTimeWas | 2 | curltime |
+| (Curl_easy *,unsigned char *,size_t) | | Curl_rand_alnum | 0 | Curl_easy * |
+| (Curl_easy *,unsigned char *,size_t) | | Curl_rand_alnum | 1 | unsigned char * |
+| (Curl_easy *,unsigned char *,size_t) | | Curl_rand_alnum | 2 | size_t |
+| (Curl_easy *,unsigned char *,size_t) | | Curl_rand_bytes | 0 | Curl_easy * |
+| (Curl_easy *,unsigned char *,size_t) | | Curl_rand_bytes | 1 | unsigned char * |
+| (Curl_easy *,unsigned char *,size_t) | | Curl_rand_bytes | 2 | size_t |
+| (Curl_easy *,unsigned char *,size_t) | | Curl_rand_hex | 0 | Curl_easy * |
+| (Curl_easy *,unsigned char *,size_t) | | Curl_rand_hex | 1 | unsigned char * |
+| (Curl_easy *,unsigned char *,size_t) | | Curl_rand_hex | 2 | size_t |
+| (Curl_easy *,unsigned int) | | Curl_ssl_supports | 0 | Curl_easy * |
+| (Curl_easy *,unsigned int) | | Curl_ssl_supports | 1 | unsigned int |
+| (Curl_easy *,void **) | | Curl_resolver_init | 0 | Curl_easy * |
+| (Curl_easy *,void **) | | Curl_resolver_init | 1 | void ** |
+| (Curl_easy *,void **,void *) | | Curl_resolver_duphandle | 0 | Curl_easy * |
+| (Curl_easy *,void **,void *) | | Curl_resolver_duphandle | 1 | void ** |
+| (Curl_easy *,void **,void *) | | Curl_resolver_duphandle | 2 | void * |
+| (Curl_hash *) | | Curl_hash_count | 0 | Curl_hash * |
+| (Curl_hash *,Curl_hash_iterator *) | | Curl_hash_start_iterate | 0 | Curl_hash * |
+| (Curl_hash *,Curl_hash_iterator *) | | Curl_hash_start_iterate | 1 | Curl_hash_iterator * |
+| (Curl_hash *,curl_off_t,void *) | | Curl_hash_offt_set | 0 | Curl_hash * |
+| (Curl_hash *,curl_off_t,void *) | | Curl_hash_offt_set | 1 | curl_off_t |
+| (Curl_hash *,curl_off_t,void *) | | Curl_hash_offt_set | 2 | void * |
+| (Curl_hash *,size_t) | | Curl_init_dnscache | 0 | Curl_hash * |
+| (Curl_hash *,size_t) | | Curl_init_dnscache | 1 | size_t |
+| (Curl_hash *,size_t,Curl_hash_dtor) | | Curl_hash_offt_init | 0 | Curl_hash * |
+| (Curl_hash *,size_t,Curl_hash_dtor) | | Curl_hash_offt_init | 1 | size_t |
+| (Curl_hash *,size_t,Curl_hash_dtor) | | Curl_hash_offt_init | 2 | Curl_hash_dtor |
+| (Curl_hash *,size_t,hash_function,comp_function,Curl_hash_dtor) | | Curl_hash_init | 0 | Curl_hash * |
+| (Curl_hash *,size_t,hash_function,comp_function,Curl_hash_dtor) | | Curl_hash_init | 1 | size_t |
+| (Curl_hash *,size_t,hash_function,comp_function,Curl_hash_dtor) | | Curl_hash_init | 2 | hash_function |
+| (Curl_hash *,size_t,hash_function,comp_function,Curl_hash_dtor) | | Curl_hash_init | 3 | comp_function |
+| (Curl_hash *,size_t,hash_function,comp_function,Curl_hash_dtor) | | Curl_hash_init | 4 | Curl_hash_dtor |
+| (Curl_hash *,void *,..(*)(..)) | | Curl_hash_clean_with_criterium | 0 | Curl_hash * |
+| (Curl_hash *,void *,..(*)(..)) | | Curl_hash_clean_with_criterium | 1 | void * |
+| (Curl_hash *,void *,..(*)(..)) | | Curl_hash_clean_with_criterium | 2 | ..(*)(..) |
+| (Curl_hash *,void *,size_t,void *) | | Curl_hash_add | 0 | Curl_hash * |
+| (Curl_hash *,void *,size_t,void *) | | Curl_hash_add | 1 | void * |
+| (Curl_hash *,void *,size_t,void *) | | Curl_hash_add | 2 | size_t |
+| (Curl_hash *,void *,size_t,void *) | | Curl_hash_add | 3 | void * |
+| (Curl_hash *,void *,size_t,void *,Curl_hash_elem_dtor) | | Curl_hash_add2 | 0 | Curl_hash * |
+| (Curl_hash *,void *,size_t,void *,Curl_hash_elem_dtor) | | Curl_hash_add2 | 1 | void * |
+| (Curl_hash *,void *,size_t,void *,Curl_hash_elem_dtor) | | Curl_hash_add2 | 2 | size_t |
+| (Curl_hash *,void *,size_t,void *,Curl_hash_elem_dtor) | | Curl_hash_add2 | 3 | void * |
+| (Curl_hash *,void *,size_t,void *,Curl_hash_elem_dtor) | | Curl_hash_add2 | 4 | Curl_hash_elem_dtor |
+| (Curl_hash_iterator *) | | Curl_hash_next_element | 0 | Curl_hash_iterator * |
+| (Curl_llist *) | | Curl_llist_count | 0 | Curl_llist * |
+| (Curl_llist *) | | Curl_llist_head | 0 | Curl_llist * |
+| (Curl_llist *,Curl_llist_dtor) | | Curl_llist_init | 0 | Curl_llist * |
+| (Curl_llist *,Curl_llist_dtor) | | Curl_llist_init | 1 | Curl_llist_dtor |
+| (Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *) | | Curl_llist_insert_next | 0 | Curl_llist * |
+| (Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *) | | Curl_llist_insert_next | 1 | Curl_llist_node * |
+| (Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *) | | Curl_llist_insert_next | 2 | const void * |
+| (Curl_llist *,Curl_llist_node *,const void *,Curl_llist_node *) | | Curl_llist_insert_next | 3 | Curl_llist_node * |
+| (Curl_llist *,const void *,Curl_llist_node *) | | Curl_llist_append | 0 | Curl_llist * |
+| (Curl_llist *,const void *,Curl_llist_node *) | | Curl_llist_append | 1 | const void * |
+| (Curl_llist *,const void *,Curl_llist_node *) | | Curl_llist_append | 2 | Curl_llist_node * |
+| (Curl_llist_node *) | | Curl_node_elem | 0 | Curl_llist_node * |
+| (Curl_llist_node *) | | Curl_node_llist | 0 | Curl_llist_node * |
+| (Curl_llist_node *) | | Curl_node_next | 0 | Curl_llist_node * |
+| (Curl_llist_node *) | | Curl_node_take_elem | 0 | Curl_llist_node * |
+| (Curl_multi *) | | Curl_multi_max_concurrent_streams | 0 | Curl_multi * |
+| (Curl_multi *,Curl_easy *,connectdata *) | | Curl_multi_add_perform | 0 | Curl_multi * |
+| (Curl_multi *,Curl_easy *,connectdata *) | | Curl_multi_add_perform | 1 | Curl_easy * |
+| (Curl_multi *,Curl_easy *,connectdata *) | | Curl_multi_add_perform | 2 | connectdata * |
+| (Curl_multi *,Curl_easy *,easy_pollset *,easy_pollset *) | | Curl_multi_pollset_ev | 0 | Curl_multi * |
+| (Curl_multi *,Curl_easy *,easy_pollset *,easy_pollset *) | | Curl_multi_pollset_ev | 1 | Curl_easy * |
+| (Curl_multi *,Curl_easy *,easy_pollset *,easy_pollset *) | | Curl_multi_pollset_ev | 2 | easy_pollset * |
+| (Curl_multi *,Curl_easy *,easy_pollset *,easy_pollset *) | | Curl_multi_pollset_ev | 3 | easy_pollset * |
+| (Curl_sockaddr_ex *,const Curl_addrinfo *,int) | | Curl_sock_assign_addr | 0 | Curl_sockaddr_ex * |
+| (Curl_sockaddr_ex *,const Curl_addrinfo *,int) | | Curl_sock_assign_addr | 1 | const Curl_addrinfo * |
+| (Curl_sockaddr_ex *,const Curl_addrinfo *,int) | | Curl_sock_assign_addr | 2 | int |
+| (Curl_tree *) | | Curl_splayget | 0 | Curl_tree * |
+| (Curl_tree *,Curl_tree *,Curl_tree **) | | Curl_splayremove | 0 | Curl_tree * |
+| (Curl_tree *,Curl_tree *,Curl_tree **) | | Curl_splayremove | 1 | Curl_tree * |
+| (Curl_tree *,Curl_tree *,Curl_tree **) | | Curl_splayremove | 2 | Curl_tree ** |
+| (Curl_tree *,void *) | | Curl_splayset | 0 | Curl_tree * |
+| (Curl_tree *,void *) | | Curl_splayset | 1 | void * |
+| (Curl_waitfds *,curl_waitfd *,unsigned int) | | Curl_waitfds_init | 0 | Curl_waitfds * |
+| (Curl_waitfds *,curl_waitfd *,unsigned int) | | Curl_waitfds_init | 1 | curl_waitfd * |
+| (Curl_waitfds *,curl_waitfd *,unsigned int) | | Curl_waitfds_init | 2 | unsigned int |
+| (Curl_waitfds *,easy_pollset *) | | Curl_waitfds_add_ps | 0 | Curl_waitfds * |
+| (Curl_waitfds *,easy_pollset *) | | Curl_waitfds_add_ps | 1 | easy_pollset * |
| (DES_LONG *,DES_key_schedule *,DES_key_schedule *,DES_key_schedule *) | | DES_decrypt3 | 0 | DES_LONG * |
| (DES_LONG *,DES_key_schedule *,DES_key_schedule *,DES_key_schedule *) | | DES_decrypt3 | 1 | DES_key_schedule * |
| (DES_LONG *,DES_key_schedule *,DES_key_schedule *,DES_key_schedule *) | | DES_decrypt3 | 2 | DES_key_schedule * |
@@ -14257,6 +17078,17 @@ getSignatureParameterName
| (EVP_CIPHER_CTX *) | | EVP_CIPHER_CTX_buf_noconst | 0 | EVP_CIPHER_CTX * |
| (EVP_CIPHER_CTX *) | | EVP_CIPHER_CTX_get1_cipher | 0 | EVP_CIPHER_CTX * |
| (EVP_CIPHER_CTX *) | | EVP_CIPHER_CTX_iv_noconst | 0 | EVP_CIPHER_CTX * |
+| (EVP_CIPHER_CTX **,..(*)(..),int,unsigned char *,size_t,int) | | _libssh2_cipher_crypt | 0 | EVP_CIPHER_CTX ** |
+| (EVP_CIPHER_CTX **,..(*)(..),int,unsigned char *,size_t,int) | | _libssh2_cipher_crypt | 1 | ..(*)(..) |
+| (EVP_CIPHER_CTX **,..(*)(..),int,unsigned char *,size_t,int) | | _libssh2_cipher_crypt | 2 | int |
+| (EVP_CIPHER_CTX **,..(*)(..),int,unsigned char *,size_t,int) | | _libssh2_cipher_crypt | 3 | unsigned char * |
+| (EVP_CIPHER_CTX **,..(*)(..),int,unsigned char *,size_t,int) | | _libssh2_cipher_crypt | 4 | size_t |
+| (EVP_CIPHER_CTX **,..(*)(..),int,unsigned char *,size_t,int) | | _libssh2_cipher_crypt | 5 | int |
+| (EVP_CIPHER_CTX **,..(*)(..),unsigned char *,unsigned char *,int) | | _libssh2_cipher_init | 0 | EVP_CIPHER_CTX ** |
+| (EVP_CIPHER_CTX **,..(*)(..),unsigned char *,unsigned char *,int) | | _libssh2_cipher_init | 1 | ..(*)(..) |
+| (EVP_CIPHER_CTX **,..(*)(..),unsigned char *,unsigned char *,int) | | _libssh2_cipher_init | 2 | unsigned char * |
+| (EVP_CIPHER_CTX **,..(*)(..),unsigned char *,unsigned char *,int) | | _libssh2_cipher_init | 3 | unsigned char * |
+| (EVP_CIPHER_CTX **,..(*)(..),unsigned char *,unsigned char *,int) | | _libssh2_cipher_init | 4 | int |
| (EVP_CIPHER_CTX *,ASN1_TYPE *) | | EVP_CIPHER_param_to_asn1 | 0 | EVP_CIPHER_CTX * |
| (EVP_CIPHER_CTX *,ASN1_TYPE *) | | EVP_CIPHER_param_to_asn1 | 1 | ASN1_TYPE * |
| (EVP_CIPHER_CTX *,ASN1_TYPE *) | | EVP_CIPHER_set_asn1_iv | 0 | EVP_CIPHER_CTX * |
@@ -14524,12 +17356,27 @@ getSignatureParameterName
| (EVP_KEYMGMT *,void *,char *,size_t) | | evp_keymgmt_util_get_deflt_digest_name | 3 | size_t |
| (EVP_MAC *) | | EVP_MAC_CTX_new | 0 | EVP_MAC * |
| (EVP_MAC_CTX *) | | EVP_MAC_CTX_get0_mac | 0 | EVP_MAC_CTX * |
+| (EVP_MAC_CTX **) | | _libssh2_hmac_cleanup | 0 | EVP_MAC_CTX ** |
| (EVP_MAC_CTX **,const OSSL_PARAM[],const char *,const char *,const char *,OSSL_LIB_CTX *) | | ossl_prov_macctx_load_from_params | 0 | EVP_MAC_CTX ** |
| (EVP_MAC_CTX **,const OSSL_PARAM[],const char *,const char *,const char *,OSSL_LIB_CTX *) | | ossl_prov_macctx_load_from_params | 1 | const OSSL_PARAM[] |
| (EVP_MAC_CTX **,const OSSL_PARAM[],const char *,const char *,const char *,OSSL_LIB_CTX *) | | ossl_prov_macctx_load_from_params | 2 | const char * |
| (EVP_MAC_CTX **,const OSSL_PARAM[],const char *,const char *,const char *,OSSL_LIB_CTX *) | | ossl_prov_macctx_load_from_params | 3 | const char * |
| (EVP_MAC_CTX **,const OSSL_PARAM[],const char *,const char *,const char *,OSSL_LIB_CTX *) | | ossl_prov_macctx_load_from_params | 4 | const char * |
| (EVP_MAC_CTX **,const OSSL_PARAM[],const char *,const char *,const char *,OSSL_LIB_CTX *) | | ossl_prov_macctx_load_from_params | 5 | OSSL_LIB_CTX * |
+| (EVP_MAC_CTX **,const void *,size_t) | | _libssh2_hmac_update | 0 | EVP_MAC_CTX ** |
+| (EVP_MAC_CTX **,const void *,size_t) | | _libssh2_hmac_update | 1 | const void * |
+| (EVP_MAC_CTX **,const void *,size_t) | | _libssh2_hmac_update | 2 | size_t |
+| (EVP_MAC_CTX **,void *) | | _libssh2_hmac_final | 0 | EVP_MAC_CTX ** |
+| (EVP_MAC_CTX **,void *) | | _libssh2_hmac_final | 1 | void * |
+| (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha1_init | 0 | EVP_MAC_CTX ** |
+| (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha1_init | 1 | void * |
+| (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha1_init | 2 | size_t |
+| (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha256_init | 0 | EVP_MAC_CTX ** |
+| (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha256_init | 1 | void * |
+| (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha256_init | 2 | size_t |
+| (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha512_init | 0 | EVP_MAC_CTX ** |
+| (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha512_init | 1 | void * |
+| (EVP_MAC_CTX **,void *,size_t) | | _libssh2_hmac_sha512_init | 2 | size_t |
| (EVP_MAC_CTX *,const OSSL_PARAM[],const char *,const char *,const char *,const char *,const unsigned char *,size_t) | | ossl_prov_set_macctx | 0 | EVP_MAC_CTX * |
| (EVP_MAC_CTX *,const OSSL_PARAM[],const char *,const char *,const char *,const char *,const unsigned char *,size_t) | | ossl_prov_set_macctx | 1 | const OSSL_PARAM[] |
| (EVP_MAC_CTX *,const OSSL_PARAM[],const char *,const char *,const char *,const char *,const unsigned char *,size_t) | | ossl_prov_set_macctx | 2 | const char * |
@@ -14560,6 +17407,30 @@ getSignatureParameterName
| (EVP_MD *,unsigned long) | | EVP_MD_meth_set_flags | 1 | unsigned long |
| (EVP_MD_CTX *) | | EVP_MD_CTX_get1_md | 0 | EVP_MD_CTX * |
| (EVP_MD_CTX *) | | EVP_MD_CTX_update_fn | 0 | EVP_MD_CTX * |
+| (EVP_MD_CTX **) | | _libssh2_sha1_init | 0 | EVP_MD_CTX ** |
+| (EVP_MD_CTX **) | | _libssh2_sha256_init | 0 | EVP_MD_CTX ** |
+| (EVP_MD_CTX **) | | _libssh2_sha384_init | 0 | EVP_MD_CTX ** |
+| (EVP_MD_CTX **) | | _libssh2_sha512_init | 0 | EVP_MD_CTX ** |
+| (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha1_update | 0 | EVP_MD_CTX ** |
+| (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha1_update | 1 | const void * |
+| (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha1_update | 2 | size_t |
+| (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha256_update | 0 | EVP_MD_CTX ** |
+| (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha256_update | 1 | const void * |
+| (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha256_update | 2 | size_t |
+| (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha384_update | 0 | EVP_MD_CTX ** |
+| (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha384_update | 1 | const void * |
+| (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha384_update | 2 | size_t |
+| (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha512_update | 0 | EVP_MD_CTX ** |
+| (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha512_update | 1 | const void * |
+| (EVP_MD_CTX **,const void *,size_t) | | _libssh2_sha512_update | 2 | size_t |
+| (EVP_MD_CTX **,unsigned char *) | | _libssh2_sha1_final | 0 | EVP_MD_CTX ** |
+| (EVP_MD_CTX **,unsigned char *) | | _libssh2_sha1_final | 1 | unsigned char * |
+| (EVP_MD_CTX **,unsigned char *) | | _libssh2_sha256_final | 0 | EVP_MD_CTX ** |
+| (EVP_MD_CTX **,unsigned char *) | | _libssh2_sha256_final | 1 | unsigned char * |
+| (EVP_MD_CTX **,unsigned char *) | | _libssh2_sha384_final | 0 | EVP_MD_CTX ** |
+| (EVP_MD_CTX **,unsigned char *) | | _libssh2_sha384_final | 1 | unsigned char * |
+| (EVP_MD_CTX **,unsigned char *) | | _libssh2_sha512_final | 0 | EVP_MD_CTX ** |
+| (EVP_MD_CTX **,unsigned char *) | | _libssh2_sha512_final | 1 | unsigned char * |
| (EVP_MD_CTX *,..(*)(..)) | | EVP_MD_CTX_set_update_fn | 0 | EVP_MD_CTX * |
| (EVP_MD_CTX *,..(*)(..)) | | EVP_MD_CTX_set_update_fn | 1 | ..(*)(..) |
| (EVP_MD_CTX *,BIO *,X509_ALGOR *) | | ossl_cms_DigestAlgorithm_find_ctx | 0 | EVP_MD_CTX * |
@@ -14682,6 +17553,24 @@ getSignatureParameterName
| (EVP_PKEY *) | | ossl_evp_pkey_get1_ED25519 | 0 | EVP_PKEY * |
| (EVP_PKEY *) | | ossl_evp_pkey_get1_X448 | 0 | EVP_PKEY * |
| (EVP_PKEY *) | | ossl_evp_pkey_get1_X25519 | 0 | EVP_PKEY * |
+| (EVP_PKEY **,LIBSSH2_SESSION *,const char *,const unsigned char *) | | _libssh2_ecdsa_new_private | 0 | EVP_PKEY ** |
+| (EVP_PKEY **,LIBSSH2_SESSION *,const char *,const unsigned char *) | | _libssh2_ecdsa_new_private | 1 | LIBSSH2_SESSION * |
+| (EVP_PKEY **,LIBSSH2_SESSION *,const char *,const unsigned char *) | | _libssh2_ecdsa_new_private | 2 | const char * |
+| (EVP_PKEY **,LIBSSH2_SESSION *,const char *,const unsigned char *) | | _libssh2_ecdsa_new_private | 3 | const unsigned char * |
+| (EVP_PKEY **,LIBSSH2_SESSION *,const char *,const unsigned char *) | | _libssh2_rsa_new_private | 0 | EVP_PKEY ** |
+| (EVP_PKEY **,LIBSSH2_SESSION *,const char *,const unsigned char *) | | _libssh2_rsa_new_private | 1 | LIBSSH2_SESSION * |
+| (EVP_PKEY **,LIBSSH2_SESSION *,const char *,const unsigned char *) | | _libssh2_rsa_new_private | 2 | const char * |
+| (EVP_PKEY **,LIBSSH2_SESSION *,const char *,const unsigned char *) | | _libssh2_rsa_new_private | 3 | const unsigned char * |
+| (EVP_PKEY **,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_ecdsa_new_private_frommemory | 0 | EVP_PKEY ** |
+| (EVP_PKEY **,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_ecdsa_new_private_frommemory | 1 | LIBSSH2_SESSION * |
+| (EVP_PKEY **,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_ecdsa_new_private_frommemory | 2 | const char * |
+| (EVP_PKEY **,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_ecdsa_new_private_frommemory | 3 | size_t |
+| (EVP_PKEY **,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_ecdsa_new_private_frommemory | 4 | const unsigned char * |
+| (EVP_PKEY **,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_rsa_new_private_frommemory | 0 | EVP_PKEY ** |
+| (EVP_PKEY **,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_rsa_new_private_frommemory | 1 | LIBSSH2_SESSION * |
+| (EVP_PKEY **,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_rsa_new_private_frommemory | 2 | const char * |
+| (EVP_PKEY **,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_rsa_new_private_frommemory | 3 | size_t |
+| (EVP_PKEY **,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_rsa_new_private_frommemory | 4 | const unsigned char * |
| (EVP_PKEY **,const EVP_PKEY *) | | evp_pkey_copy_downgraded | 0 | EVP_PKEY ** |
| (EVP_PKEY **,const EVP_PKEY *) | | evp_pkey_copy_downgraded | 1 | const EVP_PKEY * |
| (EVP_PKEY **,const char *,const char *,const char *,int,OSSL_LIB_CTX *,const char *) | | OSSL_DECODER_CTX_new_for_pkey | 0 | EVP_PKEY ** |
@@ -14710,6 +17599,40 @@ getSignatureParameterName
| (EVP_PKEY **,const unsigned char **,long,OSSL_LIB_CTX *,const char *) | | d2i_PUBKEY_ex | 2 | long |
| (EVP_PKEY **,const unsigned char **,long,OSSL_LIB_CTX *,const char *) | | d2i_PUBKEY_ex | 3 | OSSL_LIB_CTX * |
| (EVP_PKEY **,const unsigned char **,long,OSSL_LIB_CTX *,const char *) | | d2i_PUBKEY_ex | 4 | const char * |
+| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,const uint8_t *) | | _libssh2_ed25519_new_private_sk | 0 | EVP_PKEY ** |
+| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,const uint8_t *) | | _libssh2_ed25519_new_private_sk | 1 | unsigned char * |
+| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,const uint8_t *) | | _libssh2_ed25519_new_private_sk | 2 | const char ** |
+| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,const uint8_t *) | | _libssh2_ed25519_new_private_sk | 3 | const unsigned char ** |
+| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,const uint8_t *) | | _libssh2_ed25519_new_private_sk | 4 | size_t * |
+| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,const uint8_t *) | | _libssh2_ed25519_new_private_sk | 5 | LIBSSH2_SESSION * |
+| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,const uint8_t *) | | _libssh2_ed25519_new_private_sk | 6 | const char * |
+| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,const uint8_t *) | | _libssh2_ed25519_new_private_sk | 7 | const uint8_t * |
+| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,const unsigned char *) | | _libssh2_ecdsa_new_private_sk | 0 | EVP_PKEY ** |
+| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,const unsigned char *) | | _libssh2_ecdsa_new_private_sk | 1 | unsigned char * |
+| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,const unsigned char *) | | _libssh2_ecdsa_new_private_sk | 2 | const char ** |
+| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,const unsigned char *) | | _libssh2_ecdsa_new_private_sk | 3 | const unsigned char ** |
+| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,const unsigned char *) | | _libssh2_ecdsa_new_private_sk | 4 | size_t * |
+| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,const unsigned char *) | | _libssh2_ecdsa_new_private_sk | 5 | LIBSSH2_SESSION * |
+| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,const unsigned char *) | | _libssh2_ecdsa_new_private_sk | 6 | const char * |
+| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,const unsigned char *) | | _libssh2_ecdsa_new_private_sk | 7 | const unsigned char * |
+| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_ecdsa_new_private_frommemory_sk | 0 | EVP_PKEY ** |
+| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_ecdsa_new_private_frommemory_sk | 1 | unsigned char * |
+| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_ecdsa_new_private_frommemory_sk | 2 | const char ** |
+| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_ecdsa_new_private_frommemory_sk | 3 | const unsigned char ** |
+| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_ecdsa_new_private_frommemory_sk | 4 | size_t * |
+| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_ecdsa_new_private_frommemory_sk | 5 | LIBSSH2_SESSION * |
+| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_ecdsa_new_private_frommemory_sk | 6 | const char * |
+| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_ecdsa_new_private_frommemory_sk | 7 | size_t |
+| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_ecdsa_new_private_frommemory_sk | 8 | const unsigned char * |
+| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_ed25519_new_private_frommemory_sk | 0 | EVP_PKEY ** |
+| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_ed25519_new_private_frommemory_sk | 1 | unsigned char * |
+| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_ed25519_new_private_frommemory_sk | 2 | const char ** |
+| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_ed25519_new_private_frommemory_sk | 3 | const unsigned char ** |
+| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_ed25519_new_private_frommemory_sk | 4 | size_t * |
+| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_ed25519_new_private_frommemory_sk | 5 | LIBSSH2_SESSION * |
+| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_ed25519_new_private_frommemory_sk | 6 | const char * |
+| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_ed25519_new_private_frommemory_sk | 7 | size_t |
+| (EVP_PKEY **,unsigned char *,const char **,const unsigned char **,size_t *,LIBSSH2_SESSION *,const char *,size_t,const unsigned char *) | | _libssh2_ed25519_new_private_frommemory_sk | 8 | const unsigned char * |
| (EVP_PKEY *,DH *,dh_st *) | | EVP_PKEY_set1_DH | 0 | EVP_PKEY * |
| (EVP_PKEY *,DH *,dh_st *) | | EVP_PKEY_set1_DH | 1 | DH * |
| (EVP_PKEY *,DH *,dh_st *) | | EVP_PKEY_set1_DH | 2 | dh_st * |
@@ -15466,6 +18389,30 @@ getSignatureParameterName
| (FILE *,const X509_REQ *) | | i2d_X509_REQ_fp | 1 | const X509_REQ * |
| (FILE *,const X509_SIG *) | | PEM_write_PKCS8 | 0 | FILE * |
| (FILE *,const X509_SIG *) | | PEM_write_PKCS8 | 1 | const X509_SIG * |
+| (FILE *,const char *,const char *,const char *,...) | | version_etc | 0 | FILE * |
+| (FILE *,const char *,const char *,const char *,...) | | version_etc | 1 | const char * |
+| (FILE *,const char *,const char *,const char *,...) | | version_etc | 2 | const char * |
+| (FILE *,const char *,const char *,const char *,...) | | version_etc | 3 | const char * |
+| (FILE *,const char *,const char *,const char *,...) | | version_etc | 4 | ... |
+| (FILE *,const char *,const char *,const char *,const char *const *) | | version_etc_ar | 0 | FILE * |
+| (FILE *,const char *,const char *,const char *,const char *const *) | | version_etc_ar | 1 | const char * |
+| (FILE *,const char *,const char *,const char *,const char *const *) | | version_etc_ar | 2 | const char * |
+| (FILE *,const char *,const char *,const char *,const char *const *) | | version_etc_ar | 3 | const char * |
+| (FILE *,const char *,const char *,const char *,const char *const *) | | version_etc_ar | 4 | const char *const * |
+| (FILE *,const char *,const char *,const char *,const char *const *,size_t) | | version_etc_arn | 0 | FILE * |
+| (FILE *,const char *,const char *,const char *,const char *const *,size_t) | | version_etc_arn | 1 | const char * |
+| (FILE *,const char *,const char *,const char *,const char *const *,size_t) | | version_etc_arn | 2 | const char * |
+| (FILE *,const char *,const char *,const char *,const char *const *,size_t) | | version_etc_arn | 3 | const char * |
+| (FILE *,const char *,const char *,const char *,const char *const *,size_t) | | version_etc_arn | 4 | const char *const * |
+| (FILE *,const char *,const char *,const char *,const char *const *,size_t) | | version_etc_arn | 5 | size_t |
+| (FILE *,const char *,const char *,const char *,va_list) | | version_etc_va | 0 | FILE * |
+| (FILE *,const char *,const char *,const char *,va_list) | | version_etc_va | 1 | const char * |
+| (FILE *,const char *,const char *,const char *,va_list) | | version_etc_va | 2 | const char * |
+| (FILE *,const char *,const char *,const char *,va_list) | | version_etc_va | 3 | const char * |
+| (FILE *,const char *,const char *,const char *,va_list) | | version_etc_va | 4 | va_list |
+| (FILE *,const char *,va_list) | | curl_mvfprintf | 0 | FILE * |
+| (FILE *,const char *,va_list) | | curl_mvfprintf | 1 | const char * |
+| (FILE *,const char *,va_list) | | curl_mvfprintf | 2 | va_list |
| (FILE *,int *) | | tplt_skip_header | 0 | FILE * |
| (FILE *,int *) | | tplt_skip_header | 1 | int * |
| (FILE *,int,char *) | | tplt_linedir | 0 | FILE * |
@@ -15565,6 +18512,24 @@ getSignatureParameterName
| (GOST_KX_MESSAGE **,const unsigned char **,long) | | d2i_GOST_KX_MESSAGE | 0 | GOST_KX_MESSAGE ** |
| (GOST_KX_MESSAGE **,const unsigned char **,long) | | d2i_GOST_KX_MESSAGE | 1 | const unsigned char ** |
| (GOST_KX_MESSAGE **,const unsigned char **,long) | | d2i_GOST_KX_MESSAGE | 2 | long |
+| (GlobalConfig *,char **,const char *) | | get_url_file_name | 0 | GlobalConfig * |
+| (GlobalConfig *,char **,const char *) | | get_url_file_name | 1 | char ** |
+| (GlobalConfig *,char **,const char *) | | get_url_file_name | 2 | const char * |
+| (GlobalConfig *,const char *) | | setvariable | 0 | GlobalConfig * |
+| (GlobalConfig *,const char *) | | setvariable | 1 | const char * |
+| (GlobalConfig *,const char *,dynbuf *,bool *) | | varexpand | 0 | GlobalConfig * |
+| (GlobalConfig *,const char *,dynbuf *,bool *) | | varexpand | 1 | const char * |
+| (GlobalConfig *,const char *,dynbuf *,bool *) | | varexpand | 2 | dynbuf * |
+| (GlobalConfig *,const char *,dynbuf *,bool *) | | varexpand | 3 | bool * |
+| (GlobalConfig *,int,char *[]) | | operate | 0 | GlobalConfig * |
+| (GlobalConfig *,int,char *[]) | | operate | 1 | int |
+| (GlobalConfig *,int,char *[]) | | operate | 2 | char *[] |
+| (GlobalConfig *,int,char *[]) | | parse_args | 0 | GlobalConfig * |
+| (GlobalConfig *,int,char *[]) | | parse_args | 1 | int |
+| (GlobalConfig *,int,char *[]) | | parse_args | 2 | char *[] |
+| (GlobalConfig *,timeval *,bool) | | progress_meter | 0 | GlobalConfig * |
+| (GlobalConfig *,timeval *,bool) | | progress_meter | 1 | timeval * |
+| (GlobalConfig *,timeval *,bool) | | progress_meter | 2 | bool |
| (HANDLE) | CAtlFile | CAtlFile | 0 | HANDLE |
| (HINSTANCE,UINT) | CComBSTR | LoadString | 0 | HINSTANCE |
| (HINSTANCE,UINT) | CComBSTR | LoadString | 1 | UINT |
@@ -15582,6 +18547,8 @@ getSignatureParameterName
| (HMAC_CTX *,const void *,int,const EVP_MD *,ENGINE *) | | HMAC_Init_ex | 4 | ENGINE * |
| (HMAC_CTX *,unsigned long) | | HMAC_CTX_set_flags | 0 | HMAC_CTX * |
| (HMAC_CTX *,unsigned long) | | HMAC_CTX_set_flags | 1 | unsigned long |
+| (HMAC_context *,unsigned char *) | | Curl_HMAC_final | 0 | HMAC_context * |
+| (HMAC_context *,unsigned char *) | | Curl_HMAC_final | 1 | unsigned char * |
| (HT *) | | ossl_ht_count | 0 | HT * |
| (HT *,..(*)(..),void *) | | ossl_ht_foreach_until | 0 | HT * |
| (HT *,..(*)(..),void *) | | ossl_ht_foreach_until | 1 | ..(*)(..) |
@@ -15594,6 +18561,55 @@ getSignatureParameterName
| (HT *,size_t,..(*)(..),void *) | | ossl_ht_filter | 1 | size_t |
| (HT *,size_t,..(*)(..),void *) | | ossl_ht_filter | 2 | ..(*)(..) |
| (HT *,size_t,..(*)(..),void *) | | ossl_ht_filter | 3 | void * |
+| (HistogramCommand *,HistogramCommand *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineCommand | 0 | HistogramCommand * |
+| (HistogramCommand *,HistogramCommand *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineCommand | 1 | HistogramCommand * |
+| (HistogramCommand *,HistogramCommand *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineCommand | 2 | uint32_t * |
+| (HistogramCommand *,HistogramCommand *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineCommand | 3 | uint32_t * |
+| (HistogramCommand *,HistogramCommand *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineCommand | 4 | uint32_t * |
+| (HistogramCommand *,HistogramCommand *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineCommand | 5 | HistogramPair * |
+| (HistogramCommand *,HistogramCommand *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineCommand | 6 | size_t |
+| (HistogramCommand *,HistogramCommand *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineCommand | 7 | size_t |
+| (HistogramCommand *,HistogramCommand *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineCommand | 8 | size_t |
+| (HistogramCommand *,HistogramCommand *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineCommand | 9 | size_t |
+| (HistogramDistance *,HistogramDistance *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineDistance | 0 | HistogramDistance * |
+| (HistogramDistance *,HistogramDistance *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineDistance | 1 | HistogramDistance * |
+| (HistogramDistance *,HistogramDistance *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineDistance | 2 | uint32_t * |
+| (HistogramDistance *,HistogramDistance *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineDistance | 3 | uint32_t * |
+| (HistogramDistance *,HistogramDistance *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineDistance | 4 | uint32_t * |
+| (HistogramDistance *,HistogramDistance *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineDistance | 5 | HistogramPair * |
+| (HistogramDistance *,HistogramDistance *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineDistance | 6 | size_t |
+| (HistogramDistance *,HistogramDistance *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineDistance | 7 | size_t |
+| (HistogramDistance *,HistogramDistance *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineDistance | 8 | size_t |
+| (HistogramDistance *,HistogramDistance *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineDistance | 9 | size_t |
+| (HistogramLiteral *,HistogramLiteral *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineLiteral | 0 | HistogramLiteral * |
+| (HistogramLiteral *,HistogramLiteral *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineLiteral | 1 | HistogramLiteral * |
+| (HistogramLiteral *,HistogramLiteral *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineLiteral | 2 | uint32_t * |
+| (HistogramLiteral *,HistogramLiteral *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineLiteral | 3 | uint32_t * |
+| (HistogramLiteral *,HistogramLiteral *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineLiteral | 4 | uint32_t * |
+| (HistogramLiteral *,HistogramLiteral *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineLiteral | 5 | HistogramPair * |
+| (HistogramLiteral *,HistogramLiteral *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineLiteral | 6 | size_t |
+| (HistogramLiteral *,HistogramLiteral *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineLiteral | 7 | size_t |
+| (HistogramLiteral *,HistogramLiteral *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineLiteral | 8 | size_t |
+| (HistogramLiteral *,HistogramLiteral *,uint32_t *,uint32_t *,uint32_t *,HistogramPair *,size_t,size_t,size_t,size_t) | | BrotliHistogramCombineLiteral | 9 | size_t |
+| (HuffmanCode *,const uint8_t *const,uint16_t *) | | BrotliBuildCodeLengthsHuffmanTable | 0 | HuffmanCode * |
+| (HuffmanCode *,const uint8_t *const,uint16_t *) | | BrotliBuildCodeLengthsHuffmanTable | 1 | const uint8_t *const |
+| (HuffmanCode *,const uint8_t *const,uint16_t *) | | BrotliBuildCodeLengthsHuffmanTable | 2 | uint16_t * |
+| (HuffmanCode *,int,const uint16_t *const,uint16_t *) | | BrotliBuildHuffmanTable | 0 | HuffmanCode * |
+| (HuffmanCode *,int,const uint16_t *const,uint16_t *) | | BrotliBuildHuffmanTable | 1 | int |
+| (HuffmanCode *,int,const uint16_t *const,uint16_t *) | | BrotliBuildHuffmanTable | 2 | const uint16_t *const |
+| (HuffmanCode *,int,const uint16_t *const,uint16_t *) | | BrotliBuildHuffmanTable | 3 | uint16_t * |
+| (HuffmanCode *,int,uint16_t *,uint32_t) | | BrotliBuildSimpleHuffmanTable | 0 | HuffmanCode * |
+| (HuffmanCode *,int,uint16_t *,uint32_t) | | BrotliBuildSimpleHuffmanTable | 1 | int |
+| (HuffmanCode *,int,uint16_t *,uint32_t) | | BrotliBuildSimpleHuffmanTable | 2 | uint16_t * |
+| (HuffmanCode *,int,uint16_t *,uint32_t) | | BrotliBuildSimpleHuffmanTable | 3 | uint32_t |
+| (HuffmanTree *,const uint32_t *,const size_t,const size_t,uint8_t *,uint16_t *,size_t *,uint8_t *) | | BrotliBuildAndStoreHuffmanTreeFast | 0 | HuffmanTree * |
+| (HuffmanTree *,const uint32_t *,const size_t,const size_t,uint8_t *,uint16_t *,size_t *,uint8_t *) | | BrotliBuildAndStoreHuffmanTreeFast | 1 | const uint32_t * |
+| (HuffmanTree *,const uint32_t *,const size_t,const size_t,uint8_t *,uint16_t *,size_t *,uint8_t *) | | BrotliBuildAndStoreHuffmanTreeFast | 2 | const size_t |
+| (HuffmanTree *,const uint32_t *,const size_t,const size_t,uint8_t *,uint16_t *,size_t *,uint8_t *) | | BrotliBuildAndStoreHuffmanTreeFast | 3 | const size_t |
+| (HuffmanTree *,const uint32_t *,const size_t,const size_t,uint8_t *,uint16_t *,size_t *,uint8_t *) | | BrotliBuildAndStoreHuffmanTreeFast | 4 | uint8_t * |
+| (HuffmanTree *,const uint32_t *,const size_t,const size_t,uint8_t *,uint16_t *,size_t *,uint8_t *) | | BrotliBuildAndStoreHuffmanTreeFast | 5 | uint16_t * |
+| (HuffmanTree *,const uint32_t *,const size_t,const size_t,uint8_t *,uint16_t *,size_t *,uint8_t *) | | BrotliBuildAndStoreHuffmanTreeFast | 6 | size_t * |
+| (HuffmanTree *,const uint32_t *,const size_t,const size_t,uint8_t *,uint16_t *,size_t *,uint8_t *) | | BrotliBuildAndStoreHuffmanTreeFast | 7 | uint8_t * |
| (IPAddressChoice *) | | IPAddressChoice_free | 0 | IPAddressChoice * |
| (IPAddressChoice **,const unsigned char **,long) | | d2i_IPAddressChoice | 0 | IPAddressChoice ** |
| (IPAddressChoice **,const unsigned char **,long) | | d2i_IPAddressChoice | 1 | const unsigned char ** |
@@ -15970,6 +18986,530 @@ getSignatureParameterName
| (KECCAK1600_CTX *,unsigned char,size_t,size_t) | | ossl_keccak_init | 1 | unsigned char |
| (KECCAK1600_CTX *,unsigned char,size_t,size_t) | | ossl_keccak_init | 2 | size_t |
| (KECCAK1600_CTX *,unsigned char,size_t,size_t) | | ossl_keccak_init | 3 | size_t |
+| (LIBSSH2_AGENT *) | | libssh2_agent_get_identity_path | 0 | LIBSSH2_AGENT * |
+| (LIBSSH2_AGENT *,const char *) | | libssh2_agent_set_identity_path | 0 | LIBSSH2_AGENT * |
+| (LIBSSH2_AGENT *,const char *) | | libssh2_agent_set_identity_path | 1 | const char * |
+| (LIBSSH2_AGENT *,const char *,libssh2_agent_publickey *) | | libssh2_agent_userauth | 0 | LIBSSH2_AGENT * |
+| (LIBSSH2_AGENT *,const char *,libssh2_agent_publickey *) | | libssh2_agent_userauth | 1 | const char * |
+| (LIBSSH2_AGENT *,const char *,libssh2_agent_publickey *) | | libssh2_agent_userauth | 2 | libssh2_agent_publickey * |
+| (LIBSSH2_AGENT *,libssh2_agent_publickey **,libssh2_agent_publickey *) | | libssh2_agent_get_identity | 0 | LIBSSH2_AGENT * |
+| (LIBSSH2_AGENT *,libssh2_agent_publickey **,libssh2_agent_publickey *) | | libssh2_agent_get_identity | 1 | libssh2_agent_publickey ** |
+| (LIBSSH2_AGENT *,libssh2_agent_publickey **,libssh2_agent_publickey *) | | libssh2_agent_get_identity | 2 | libssh2_agent_publickey * |
+| (LIBSSH2_AGENT *,libssh2_agent_publickey *,unsigned char **,size_t *,const unsigned char *,size_t,const char *,unsigned int) | | libssh2_agent_sign | 0 | LIBSSH2_AGENT * |
+| (LIBSSH2_AGENT *,libssh2_agent_publickey *,unsigned char **,size_t *,const unsigned char *,size_t,const char *,unsigned int) | | libssh2_agent_sign | 1 | libssh2_agent_publickey * |
+| (LIBSSH2_AGENT *,libssh2_agent_publickey *,unsigned char **,size_t *,const unsigned char *,size_t,const char *,unsigned int) | | libssh2_agent_sign | 2 | unsigned char ** |
+| (LIBSSH2_AGENT *,libssh2_agent_publickey *,unsigned char **,size_t *,const unsigned char *,size_t,const char *,unsigned int) | | libssh2_agent_sign | 3 | size_t * |
+| (LIBSSH2_AGENT *,libssh2_agent_publickey *,unsigned char **,size_t *,const unsigned char *,size_t,const char *,unsigned int) | | libssh2_agent_sign | 4 | const unsigned char * |
+| (LIBSSH2_AGENT *,libssh2_agent_publickey *,unsigned char **,size_t *,const unsigned char *,size_t,const char *,unsigned int) | | libssh2_agent_sign | 5 | size_t |
+| (LIBSSH2_AGENT *,libssh2_agent_publickey *,unsigned char **,size_t *,const unsigned char *,size_t,const char *,unsigned int) | | libssh2_agent_sign | 6 | const char * |
+| (LIBSSH2_AGENT *,libssh2_agent_publickey *,unsigned char **,size_t *,const unsigned char *,size_t,const char *,unsigned int) | | libssh2_agent_sign | 7 | unsigned int |
+| (LIBSSH2_CHANNEL *) | | _libssh2_channel_close | 0 | LIBSSH2_CHANNEL * |
+| (LIBSSH2_CHANNEL *) | | _libssh2_channel_free | 0 | LIBSSH2_CHANNEL * |
+| (LIBSSH2_CHANNEL *) | | libssh2_channel_close | 0 | LIBSSH2_CHANNEL * |
+| (LIBSSH2_CHANNEL *) | | libssh2_channel_eof | 0 | LIBSSH2_CHANNEL * |
+| (LIBSSH2_CHANNEL *) | | libssh2_channel_free | 0 | LIBSSH2_CHANNEL * |
+| (LIBSSH2_CHANNEL *) | | libssh2_channel_get_exit_status | 0 | LIBSSH2_CHANNEL * |
+| (LIBSSH2_CHANNEL *) | | libssh2_channel_request_auth_agent | 0 | LIBSSH2_CHANNEL * |
+| (LIBSSH2_CHANNEL *) | | libssh2_channel_send_eof | 0 | LIBSSH2_CHANNEL * |
+| (LIBSSH2_CHANNEL *) | | libssh2_channel_wait_closed | 0 | LIBSSH2_CHANNEL * |
+| (LIBSSH2_CHANNEL *) | | libssh2_channel_wait_eof | 0 | LIBSSH2_CHANNEL * |
+| (LIBSSH2_CHANNEL *,char **,size_t *,char **,size_t *,char **,size_t *) | | libssh2_channel_get_exit_signal | 0 | LIBSSH2_CHANNEL * |
+| (LIBSSH2_CHANNEL *,char **,size_t *,char **,size_t *,char **,size_t *) | | libssh2_channel_get_exit_signal | 1 | char ** |
+| (LIBSSH2_CHANNEL *,char **,size_t *,char **,size_t *,char **,size_t *) | | libssh2_channel_get_exit_signal | 2 | size_t * |
+| (LIBSSH2_CHANNEL *,char **,size_t *,char **,size_t *,char **,size_t *) | | libssh2_channel_get_exit_signal | 3 | char ** |
+| (LIBSSH2_CHANNEL *,char **,size_t *,char **,size_t *,char **,size_t *) | | libssh2_channel_get_exit_signal | 4 | size_t * |
+| (LIBSSH2_CHANNEL *,char **,size_t *,char **,size_t *,char **,size_t *) | | libssh2_channel_get_exit_signal | 5 | char ** |
+| (LIBSSH2_CHANNEL *,char **,size_t *,char **,size_t *,char **,size_t *) | | libssh2_channel_get_exit_signal | 6 | size_t * |
+| (LIBSSH2_CHANNEL *,const char *,size_t) | | libssh2_channel_signal_ex | 0 | LIBSSH2_CHANNEL * |
+| (LIBSSH2_CHANNEL *,const char *,size_t) | | libssh2_channel_signal_ex | 1 | const char * |
+| (LIBSSH2_CHANNEL *,const char *,size_t) | | libssh2_channel_signal_ex | 2 | size_t |
+| (LIBSSH2_CHANNEL *,const char *,size_t,const char *,size_t) | | _libssh2_channel_process_startup | 0 | LIBSSH2_CHANNEL * |
+| (LIBSSH2_CHANNEL *,const char *,size_t,const char *,size_t) | | _libssh2_channel_process_startup | 1 | const char * |
+| (LIBSSH2_CHANNEL *,const char *,size_t,const char *,size_t) | | _libssh2_channel_process_startup | 2 | size_t |
+| (LIBSSH2_CHANNEL *,const char *,size_t,const char *,size_t) | | _libssh2_channel_process_startup | 3 | const char * |
+| (LIBSSH2_CHANNEL *,const char *,size_t,const char *,size_t) | | _libssh2_channel_process_startup | 4 | size_t |
+| (LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int) | | libssh2_channel_process_startup | 0 | LIBSSH2_CHANNEL * |
+| (LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int) | | libssh2_channel_process_startup | 1 | const char * |
+| (LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int) | | libssh2_channel_process_startup | 2 | unsigned int |
+| (LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int) | | libssh2_channel_process_startup | 3 | const char * |
+| (LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int) | | libssh2_channel_process_startup | 4 | unsigned int |
+| (LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int) | | libssh2_channel_setenv_ex | 0 | LIBSSH2_CHANNEL * |
+| (LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int) | | libssh2_channel_setenv_ex | 1 | const char * |
+| (LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int) | | libssh2_channel_setenv_ex | 2 | unsigned int |
+| (LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int) | | libssh2_channel_setenv_ex | 3 | const char * |
+| (LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int) | | libssh2_channel_setenv_ex | 4 | unsigned int |
+| (LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int,int,int,int,int) | | libssh2_channel_request_pty_ex | 0 | LIBSSH2_CHANNEL * |
+| (LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int,int,int,int,int) | | libssh2_channel_request_pty_ex | 1 | const char * |
+| (LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int,int,int,int,int) | | libssh2_channel_request_pty_ex | 2 | unsigned int |
+| (LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int,int,int,int,int) | | libssh2_channel_request_pty_ex | 3 | const char * |
+| (LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int,int,int,int,int) | | libssh2_channel_request_pty_ex | 4 | unsigned int |
+| (LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int,int,int,int,int) | | libssh2_channel_request_pty_ex | 5 | int |
+| (LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int,int,int,int,int) | | libssh2_channel_request_pty_ex | 6 | int |
+| (LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int,int,int,int,int) | | libssh2_channel_request_pty_ex | 7 | int |
+| (LIBSSH2_CHANNEL *,const char *,unsigned int,const char *,unsigned int,int,int,int,int) | | libssh2_channel_request_pty_ex | 8 | int |
+| (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 0 | LIBSSH2_CHANNEL * |
+| (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_extended_data | 1 | int |
+| (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 0 | LIBSSH2_CHANNEL * |
+| (LIBSSH2_CHANNEL *,int) | | _libssh2_channel_flush | 1 | int |
+| (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 0 | LIBSSH2_CHANNEL * |
+| (LIBSSH2_CHANNEL *,int) | | libssh2_channel_flush_ex | 1 | int |
+| (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 0 | LIBSSH2_CHANNEL * |
+| (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data | 1 | int |
+| (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 0 | LIBSSH2_CHANNEL * |
+| (LIBSSH2_CHANNEL *,int) | | libssh2_channel_handle_extended_data2 | 1 | int |
+| (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 0 | LIBSSH2_CHANNEL * |
+| (LIBSSH2_CHANNEL *,int) | | libssh2_channel_set_blocking | 1 | int |
+| (LIBSSH2_CHANNEL *,int,char *,size_t) | | _libssh2_channel_read | 0 | LIBSSH2_CHANNEL * |
+| (LIBSSH2_CHANNEL *,int,char *,size_t) | | _libssh2_channel_read | 1 | int |
+| (LIBSSH2_CHANNEL *,int,char *,size_t) | | _libssh2_channel_read | 2 | char * |
+| (LIBSSH2_CHANNEL *,int,char *,size_t) | | _libssh2_channel_read | 3 | size_t |
+| (LIBSSH2_CHANNEL *,int,char *,size_t) | | libssh2_channel_read_ex | 0 | LIBSSH2_CHANNEL * |
+| (LIBSSH2_CHANNEL *,int,char *,size_t) | | libssh2_channel_read_ex | 1 | int |
+| (LIBSSH2_CHANNEL *,int,char *,size_t) | | libssh2_channel_read_ex | 2 | char * |
+| (LIBSSH2_CHANNEL *,int,char *,size_t) | | libssh2_channel_read_ex | 3 | size_t |
+| (LIBSSH2_CHANNEL *,int,const char *,const char *,int) | | libssh2_channel_x11_req_ex | 0 | LIBSSH2_CHANNEL * |
+| (LIBSSH2_CHANNEL *,int,const char *,const char *,int) | | libssh2_channel_x11_req_ex | 1 | int |
+| (LIBSSH2_CHANNEL *,int,const char *,const char *,int) | | libssh2_channel_x11_req_ex | 2 | const char * |
+| (LIBSSH2_CHANNEL *,int,const char *,const char *,int) | | libssh2_channel_x11_req_ex | 3 | const char * |
+| (LIBSSH2_CHANNEL *,int,const char *,const char *,int) | | libssh2_channel_x11_req_ex | 4 | int |
+| (LIBSSH2_CHANNEL *,int,const char *,size_t) | | libssh2_channel_write_ex | 0 | LIBSSH2_CHANNEL * |
+| (LIBSSH2_CHANNEL *,int,const char *,size_t) | | libssh2_channel_write_ex | 1 | int |
+| (LIBSSH2_CHANNEL *,int,const char *,size_t) | | libssh2_channel_write_ex | 2 | const char * |
+| (LIBSSH2_CHANNEL *,int,const char *,size_t) | | libssh2_channel_write_ex | 3 | size_t |
+| (LIBSSH2_CHANNEL *,int,const unsigned char *,size_t) | | _libssh2_channel_write | 0 | LIBSSH2_CHANNEL * |
+| (LIBSSH2_CHANNEL *,int,const unsigned char *,size_t) | | _libssh2_channel_write | 1 | int |
+| (LIBSSH2_CHANNEL *,int,const unsigned char *,size_t) | | _libssh2_channel_write | 2 | const unsigned char * |
+| (LIBSSH2_CHANNEL *,int,const unsigned char *,size_t) | | _libssh2_channel_write | 3 | size_t |
+| (LIBSSH2_CHANNEL *,int,int,int,int) | | libssh2_channel_request_pty_size_ex | 0 | LIBSSH2_CHANNEL * |
+| (LIBSSH2_CHANNEL *,int,int,int,int) | | libssh2_channel_request_pty_size_ex | 1 | int |
+| (LIBSSH2_CHANNEL *,int,int,int,int) | | libssh2_channel_request_pty_size_ex | 2 | int |
+| (LIBSSH2_CHANNEL *,int,int,int,int) | | libssh2_channel_request_pty_size_ex | 3 | int |
+| (LIBSSH2_CHANNEL *,int,int,int,int) | | libssh2_channel_request_pty_size_ex | 4 | int |
+| (LIBSSH2_CHANNEL *,uint32_t,unsigned char,unsigned int *) | | _libssh2_channel_receive_window_adjust | 0 | LIBSSH2_CHANNEL * |
+| (LIBSSH2_CHANNEL *,uint32_t,unsigned char,unsigned int *) | | _libssh2_channel_receive_window_adjust | 1 | uint32_t |
+| (LIBSSH2_CHANNEL *,uint32_t,unsigned char,unsigned int *) | | _libssh2_channel_receive_window_adjust | 2 | unsigned char |
+| (LIBSSH2_CHANNEL *,uint32_t,unsigned char,unsigned int *) | | _libssh2_channel_receive_window_adjust | 3 | unsigned int * |
+| (LIBSSH2_CHANNEL *,unsigned long *) | | libssh2_channel_window_write_ex | 0 | LIBSSH2_CHANNEL * |
+| (LIBSSH2_CHANNEL *,unsigned long *) | | libssh2_channel_window_write_ex | 1 | unsigned long * |
+| (LIBSSH2_CHANNEL *,unsigned long *,unsigned long *) | | libssh2_channel_window_read_ex | 0 | LIBSSH2_CHANNEL * |
+| (LIBSSH2_CHANNEL *,unsigned long *,unsigned long *) | | libssh2_channel_window_read_ex | 1 | unsigned long * |
+| (LIBSSH2_CHANNEL *,unsigned long *,unsigned long *) | | libssh2_channel_window_read_ex | 2 | unsigned long * |
+| (LIBSSH2_CHANNEL *,unsigned long,unsigned char) | | libssh2_channel_receive_window_adjust | 0 | LIBSSH2_CHANNEL * |
+| (LIBSSH2_CHANNEL *,unsigned long,unsigned char) | | libssh2_channel_receive_window_adjust | 1 | unsigned long |
+| (LIBSSH2_CHANNEL *,unsigned long,unsigned char) | | libssh2_channel_receive_window_adjust | 2 | unsigned char |
+| (LIBSSH2_CHANNEL *,unsigned long,unsigned char,unsigned int *) | | libssh2_channel_receive_window_adjust2 | 0 | LIBSSH2_CHANNEL * |
+| (LIBSSH2_CHANNEL *,unsigned long,unsigned char,unsigned int *) | | libssh2_channel_receive_window_adjust2 | 1 | unsigned long |
+| (LIBSSH2_CHANNEL *,unsigned long,unsigned char,unsigned int *) | | libssh2_channel_receive_window_adjust2 | 2 | unsigned char |
+| (LIBSSH2_CHANNEL *,unsigned long,unsigned char,unsigned int *) | | libssh2_channel_receive_window_adjust2 | 3 | unsigned int * |
+| (LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_addc | 0 | LIBSSH2_KNOWNHOSTS * |
+| (LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_addc | 1 | const char * |
+| (LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_addc | 2 | const char * |
+| (LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_addc | 3 | const char * |
+| (LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_addc | 4 | size_t |
+| (LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_addc | 5 | const char * |
+| (LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_addc | 6 | size_t |
+| (LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_addc | 7 | int |
+| (LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_addc | 8 | libssh2_knownhost ** |
+| (LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_add | 0 | LIBSSH2_KNOWNHOSTS * |
+| (LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_add | 1 | const char * |
+| (LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_add | 2 | const char * |
+| (LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_add | 3 | const char * |
+| (LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_add | 4 | size_t |
+| (LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_add | 5 | int |
+| (LIBSSH2_KNOWNHOSTS *,const char *,const char *,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_add | 6 | libssh2_knownhost ** |
+| (LIBSSH2_KNOWNHOSTS *,const char *,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_check | 0 | LIBSSH2_KNOWNHOSTS * |
+| (LIBSSH2_KNOWNHOSTS *,const char *,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_check | 1 | const char * |
+| (LIBSSH2_KNOWNHOSTS *,const char *,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_check | 2 | const char * |
+| (LIBSSH2_KNOWNHOSTS *,const char *,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_check | 3 | size_t |
+| (LIBSSH2_KNOWNHOSTS *,const char *,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_check | 4 | int |
+| (LIBSSH2_KNOWNHOSTS *,const char *,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_check | 5 | libssh2_knownhost ** |
+| (LIBSSH2_KNOWNHOSTS *,const char *,int,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_checkp | 0 | LIBSSH2_KNOWNHOSTS * |
+| (LIBSSH2_KNOWNHOSTS *,const char *,int,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_checkp | 1 | const char * |
+| (LIBSSH2_KNOWNHOSTS *,const char *,int,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_checkp | 2 | int |
+| (LIBSSH2_KNOWNHOSTS *,const char *,int,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_checkp | 3 | const char * |
+| (LIBSSH2_KNOWNHOSTS *,const char *,int,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_checkp | 4 | size_t |
+| (LIBSSH2_KNOWNHOSTS *,const char *,int,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_checkp | 5 | int |
+| (LIBSSH2_KNOWNHOSTS *,const char *,int,const char *,size_t,int,libssh2_knownhost **) | | libssh2_knownhost_checkp | 6 | libssh2_knownhost ** |
+| (LIBSSH2_KNOWNHOSTS *,libssh2_knownhost **,libssh2_knownhost *) | | libssh2_knownhost_get | 0 | LIBSSH2_KNOWNHOSTS * |
+| (LIBSSH2_KNOWNHOSTS *,libssh2_knownhost **,libssh2_knownhost *) | | libssh2_knownhost_get | 1 | libssh2_knownhost ** |
+| (LIBSSH2_KNOWNHOSTS *,libssh2_knownhost **,libssh2_knownhost *) | | libssh2_knownhost_get | 2 | libssh2_knownhost * |
+| (LIBSSH2_KNOWNHOSTS *,libssh2_knownhost *,char *,size_t,size_t *,int) | | libssh2_knownhost_writeline | 0 | LIBSSH2_KNOWNHOSTS * |
+| (LIBSSH2_KNOWNHOSTS *,libssh2_knownhost *,char *,size_t,size_t *,int) | | libssh2_knownhost_writeline | 1 | libssh2_knownhost * |
+| (LIBSSH2_KNOWNHOSTS *,libssh2_knownhost *,char *,size_t,size_t *,int) | | libssh2_knownhost_writeline | 2 | char * |
+| (LIBSSH2_KNOWNHOSTS *,libssh2_knownhost *,char *,size_t,size_t *,int) | | libssh2_knownhost_writeline | 3 | size_t |
+| (LIBSSH2_KNOWNHOSTS *,libssh2_knownhost *,char *,size_t,size_t *,int) | | libssh2_knownhost_writeline | 4 | size_t * |
+| (LIBSSH2_KNOWNHOSTS *,libssh2_knownhost *,char *,size_t,size_t *,int) | | libssh2_knownhost_writeline | 5 | int |
+| (LIBSSH2_LISTENER *) | | _libssh2_channel_forward_cancel | 0 | LIBSSH2_LISTENER * |
+| (LIBSSH2_LISTENER *) | | libssh2_channel_forward_accept | 0 | LIBSSH2_LISTENER * |
+| (LIBSSH2_LISTENER *) | | libssh2_channel_forward_cancel | 0 | LIBSSH2_LISTENER * |
+| (LIBSSH2_POLLFD *,unsigned int,long) | | libssh2_poll | 0 | LIBSSH2_POLLFD * |
+| (LIBSSH2_POLLFD *,unsigned int,long) | | libssh2_poll | 1 | unsigned int |
+| (LIBSSH2_POLLFD *,unsigned int,long) | | libssh2_poll | 2 | long |
+| (LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long) | | libssh2_publickey_remove_ex | 0 | LIBSSH2_PUBLICKEY * |
+| (LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long) | | libssh2_publickey_remove_ex | 1 | const unsigned char * |
+| (LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long) | | libssh2_publickey_remove_ex | 2 | unsigned long |
+| (LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long) | | libssh2_publickey_remove_ex | 3 | const unsigned char * |
+| (LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long) | | libssh2_publickey_remove_ex | 4 | unsigned long |
+| (LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long,char,unsigned long,const libssh2_publickey_attribute[]) | | libssh2_publickey_add_ex | 0 | LIBSSH2_PUBLICKEY * |
+| (LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long,char,unsigned long,const libssh2_publickey_attribute[]) | | libssh2_publickey_add_ex | 1 | const unsigned char * |
+| (LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long,char,unsigned long,const libssh2_publickey_attribute[]) | | libssh2_publickey_add_ex | 2 | unsigned long |
+| (LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long,char,unsigned long,const libssh2_publickey_attribute[]) | | libssh2_publickey_add_ex | 3 | const unsigned char * |
+| (LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long,char,unsigned long,const libssh2_publickey_attribute[]) | | libssh2_publickey_add_ex | 4 | unsigned long |
+| (LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long,char,unsigned long,const libssh2_publickey_attribute[]) | | libssh2_publickey_add_ex | 5 | char |
+| (LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long,char,unsigned long,const libssh2_publickey_attribute[]) | | libssh2_publickey_add_ex | 6 | unsigned long |
+| (LIBSSH2_PUBLICKEY *,const unsigned char *,unsigned long,const unsigned char *,unsigned long,char,unsigned long,const libssh2_publickey_attribute[]) | | libssh2_publickey_add_ex | 7 | const libssh2_publickey_attribute[] |
+| (LIBSSH2_PUBLICKEY *,unsigned long *,libssh2_publickey_list **) | | libssh2_publickey_list_fetch | 0 | LIBSSH2_PUBLICKEY * |
+| (LIBSSH2_PUBLICKEY *,unsigned long *,libssh2_publickey_list **) | | libssh2_publickey_list_fetch | 1 | unsigned long * |
+| (LIBSSH2_PUBLICKEY *,unsigned long *,libssh2_publickey_list **) | | libssh2_publickey_list_fetch | 2 | libssh2_publickey_list ** |
+| (LIBSSH2_SESSION *) | | _libssh2_channel_nextid | 0 | LIBSSH2_SESSION * |
+| (LIBSSH2_SESSION *) | | _libssh2_transport_read | 0 | LIBSSH2_SESSION * |
+| (LIBSSH2_SESSION *) | | libssh2_agent_init | 0 | LIBSSH2_SESSION * |
+| (LIBSSH2_SESSION *) | | libssh2_knownhost_init | 0 | LIBSSH2_SESSION * |
+| (LIBSSH2_SESSION *) | | libssh2_publickey_init | 0 | LIBSSH2_SESSION * |
+| (LIBSSH2_SESSION *) | | libssh2_session_abstract | 0 | LIBSSH2_SESSION * |
+| (LIBSSH2_SESSION *) | | libssh2_session_banner_get | 0 | LIBSSH2_SESSION * |
+| (LIBSSH2_SESSION *) | | libssh2_session_block_directions | 0 | LIBSSH2_SESSION * |
+| (LIBSSH2_SESSION *) | | libssh2_session_free | 0 | LIBSSH2_SESSION * |
+| (LIBSSH2_SESSION *) | | libssh2_session_get_blocking | 0 | LIBSSH2_SESSION * |
+| (LIBSSH2_SESSION *) | | libssh2_session_get_read_timeout | 0 | LIBSSH2_SESSION * |
+| (LIBSSH2_SESSION *) | | libssh2_session_get_timeout | 0 | LIBSSH2_SESSION * |
+| (LIBSSH2_SESSION *) | | libssh2_session_last_errno | 0 | LIBSSH2_SESSION * |
+| (LIBSSH2_SESSION *) | | libssh2_sftp_init | 0 | LIBSSH2_SESSION * |
+| (LIBSSH2_SESSION *,EVP_PKEY **,unsigned char **,size_t *,libssh2_curve_type) | | _libssh2_ecdsa_create_key | 0 | LIBSSH2_SESSION * |
+| (LIBSSH2_SESSION *,EVP_PKEY **,unsigned char **,size_t *,libssh2_curve_type) | | _libssh2_ecdsa_create_key | 1 | EVP_PKEY ** |
+| (LIBSSH2_SESSION *,EVP_PKEY **,unsigned char **,size_t *,libssh2_curve_type) | | _libssh2_ecdsa_create_key | 2 | unsigned char ** |
+| (LIBSSH2_SESSION *,EVP_PKEY **,unsigned char **,size_t *,libssh2_curve_type) | | _libssh2_ecdsa_create_key | 3 | size_t * |
+| (LIBSSH2_SESSION *,EVP_PKEY **,unsigned char **,size_t *,libssh2_curve_type) | | _libssh2_ecdsa_create_key | 4 | libssh2_curve_type |
+| (LIBSSH2_SESSION *,char **) | | libssh2_userauth_banner | 0 | LIBSSH2_SESSION * |
+| (LIBSSH2_SESSION *,char **) | | libssh2_userauth_banner | 1 | char ** |
+| (LIBSSH2_SESSION *,char **,int *,int) | | libssh2_session_last_error | 0 | LIBSSH2_SESSION * |
+| (LIBSSH2_SESSION *,char **,int *,int) | | libssh2_session_last_error | 1 | char ** |
+| (LIBSSH2_SESSION *,char **,int *,int) | | libssh2_session_last_error | 2 | int * |
+| (LIBSSH2_SESSION *,char **,int *,int) | | libssh2_session_last_error | 3 | int |
+| (LIBSSH2_SESSION *,char **,size_t *,const char *,size_t) | | _libssh2_base64_decode | 0 | LIBSSH2_SESSION * |
+| (LIBSSH2_SESSION *,char **,size_t *,const char *,size_t) | | _libssh2_base64_decode | 1 | char ** |
+| (LIBSSH2_SESSION *,char **,size_t *,const char *,size_t) | | _libssh2_base64_decode | 2 | size_t * |
+| (LIBSSH2_SESSION *,char **,size_t *,const char *,size_t) | | _libssh2_base64_decode | 3 | const char * |
+| (LIBSSH2_SESSION *,char **,size_t *,const char *,size_t) | | _libssh2_base64_decode | 4 | size_t |
+| (LIBSSH2_SESSION *,char **,unsigned int *,const char *,unsigned int) | | libssh2_base64_decode | 0 | LIBSSH2_SESSION * |
+| (LIBSSH2_SESSION *,char **,unsigned int *,const char *,unsigned int) | | libssh2_base64_decode | 1 | char ** |
+| (LIBSSH2_SESSION *,char **,unsigned int *,const char *,unsigned int) | | libssh2_base64_decode | 2 | unsigned int * |
+| (LIBSSH2_SESSION *,char **,unsigned int *,const char *,unsigned int) | | libssh2_base64_decode | 3 | const char * |
+| (LIBSSH2_SESSION *,char **,unsigned int *,const char *,unsigned int) | | libssh2_base64_decode | 4 | unsigned int |
+| (LIBSSH2_SESSION *,const char *) | | libssh2_banner_set | 0 | LIBSSH2_SESSION * |
+| (LIBSSH2_SESSION *,const char *) | | libssh2_banner_set | 1 | const char * |
+| (LIBSSH2_SESSION *,const char *) | | libssh2_session_banner_set | 0 | LIBSSH2_SESSION * |
+| (LIBSSH2_SESSION *,const char *) | | libssh2_session_banner_set | 1 | const char * |
+| (LIBSSH2_SESSION *,const char *,const char *,const char *,size_t,unsigned char **,size_t *) | | _libssh2_pem_parse_memory | 0 | LIBSSH2_SESSION * |
+| (LIBSSH2_SESSION *,const char *,const char *,const char *,size_t,unsigned char **,size_t *) | | _libssh2_pem_parse_memory | 1 | const char * |
+| (LIBSSH2_SESSION *,const char *,const char *,const char *,size_t,unsigned char **,size_t *) | | _libssh2_pem_parse_memory | 2 | const char * |
+| (LIBSSH2_SESSION *,const char *,const char *,const char *,size_t,unsigned char **,size_t *) | | _libssh2_pem_parse_memory | 3 | const char * |
+| (LIBSSH2_SESSION *,const char *,const char *,const char *,size_t,unsigned char **,size_t *) | | _libssh2_pem_parse_memory | 4 | size_t |
+| (LIBSSH2_SESSION *,const char *,const char *,const char *,size_t,unsigned char **,size_t *) | | _libssh2_pem_parse_memory | 5 | unsigned char ** |
+| (LIBSSH2_SESSION *,const char *,const char *,const char *,size_t,unsigned char **,size_t *) | | _libssh2_pem_parse_memory | 6 | size_t * |
+| (LIBSSH2_SESSION *,const char *,const char *,const unsigned char *,FILE *,unsigned char **,size_t *) | | _libssh2_pem_parse | 0 | LIBSSH2_SESSION * |
+| (LIBSSH2_SESSION *,const char *,const char *,const unsigned char *,FILE *,unsigned char **,size_t *) | | _libssh2_pem_parse | 1 | const char * |
+| (LIBSSH2_SESSION *,const char *,const char *,const unsigned char *,FILE *,unsigned char **,size_t *) | | _libssh2_pem_parse | 2 | const char * |
+| (LIBSSH2_SESSION *,const char *,const char *,const unsigned char *,FILE *,unsigned char **,size_t *) | | _libssh2_pem_parse | 3 | const unsigned char * |
+| (LIBSSH2_SESSION *,const char *,const char *,const unsigned char *,FILE *,unsigned char **,size_t *) | | _libssh2_pem_parse | 4 | FILE * |
+| (LIBSSH2_SESSION *,const char *,const char *,const unsigned char *,FILE *,unsigned char **,size_t *) | | _libssh2_pem_parse | 5 | unsigned char ** |
+| (LIBSSH2_SESSION *,const char *,const char *,const unsigned char *,FILE *,unsigned char **,size_t *) | | _libssh2_pem_parse | 6 | size_t * |
+| (LIBSSH2_SESSION *,const char *,const char *,int) | | libssh2_channel_direct_streamlocal_ex | 0 | LIBSSH2_SESSION * |
+| (LIBSSH2_SESSION *,const char *,const char *,int) | | libssh2_channel_direct_streamlocal_ex | 1 | const char * |
+| (LIBSSH2_SESSION *,const char *,const char *,int) | | libssh2_channel_direct_streamlocal_ex | 2 | const char * |
+| (LIBSSH2_SESSION *,const char *,const char *,int) | | libssh2_channel_direct_streamlocal_ex | 3 | int |
+| (LIBSSH2_SESSION *,const char *,const unsigned char *,size_t,..(*)(..),void **) | | libssh2_userauth_publickey | 0 | LIBSSH2_SESSION * |
+| (LIBSSH2_SESSION *,const char *,const unsigned char *,size_t,..(*)(..),void **) | | libssh2_userauth_publickey | 1 | const char * |
+| (LIBSSH2_SESSION *,const char *,const unsigned char *,size_t,..(*)(..),void **) | | libssh2_userauth_publickey | 2 | const unsigned char * |
+| (LIBSSH2_SESSION *,const char *,const unsigned char *,size_t,..(*)(..),void **) | | libssh2_userauth_publickey | 3 | size_t |
+| (LIBSSH2_SESSION *,const char *,const unsigned char *,size_t,..(*)(..),void **) | | libssh2_userauth_publickey | 4 | ..(*)(..) |
+| (LIBSSH2_SESSION *,const char *,const unsigned char *,size_t,..(*)(..),void **) | | libssh2_userauth_publickey | 5 | void ** |
+| (LIBSSH2_SESSION *,const char *,int,const char *,int) | | libssh2_channel_direct_tcpip_ex | 0 | LIBSSH2_SESSION * |
+| (LIBSSH2_SESSION *,const char *,int,const char *,int) | | libssh2_channel_direct_tcpip_ex | 1 | const char * |
+| (LIBSSH2_SESSION *,const char *,int,const char *,int) | | libssh2_channel_direct_tcpip_ex | 2 | int |
+| (LIBSSH2_SESSION *,const char *,int,const char *,int) | | libssh2_channel_direct_tcpip_ex | 3 | const char * |
+| (LIBSSH2_SESSION *,const char *,int,const char *,int) | | libssh2_channel_direct_tcpip_ex | 4 | int |
+| (LIBSSH2_SESSION *,const char *,int,int *,int) | | libssh2_channel_forward_listen_ex | 0 | LIBSSH2_SESSION * |
+| (LIBSSH2_SESSION *,const char *,int,int *,int) | | libssh2_channel_forward_listen_ex | 1 | const char * |
+| (LIBSSH2_SESSION *,const char *,int,int *,int) | | libssh2_channel_forward_listen_ex | 2 | int |
+| (LIBSSH2_SESSION *,const char *,int,int *,int) | | libssh2_channel_forward_listen_ex | 3 | int * |
+| (LIBSSH2_SESSION *,const char *,int,int *,int) | | libssh2_channel_forward_listen_ex | 4 | int |
+| (LIBSSH2_SESSION *,const char *,int,libssh2_int64_t,time_t,time_t) | | libssh2_scp_send64 | 0 | LIBSSH2_SESSION * |
+| (LIBSSH2_SESSION *,const char *,int,libssh2_int64_t,time_t,time_t) | | libssh2_scp_send64 | 1 | const char * |
+| (LIBSSH2_SESSION *,const char *,int,libssh2_int64_t,time_t,time_t) | | libssh2_scp_send64 | 2 | int |
+| (LIBSSH2_SESSION *,const char *,int,libssh2_int64_t,time_t,time_t) | | libssh2_scp_send64 | 3 | libssh2_int64_t |
+| (LIBSSH2_SESSION *,const char *,int,libssh2_int64_t,time_t,time_t) | | libssh2_scp_send64 | 4 | time_t |
+| (LIBSSH2_SESSION *,const char *,int,libssh2_int64_t,time_t,time_t) | | libssh2_scp_send64 | 5 | time_t |
+| (LIBSSH2_SESSION *,const char *,int,size_t,long,long) | | libssh2_scp_send_ex | 0 | LIBSSH2_SESSION * |
+| (LIBSSH2_SESSION *,const char *,int,size_t,long,long) | | libssh2_scp_send_ex | 1 | const char * |
+| (LIBSSH2_SESSION *,const char *,int,size_t,long,long) | | libssh2_scp_send_ex | 2 | int |
+| (LIBSSH2_SESSION *,const char *,int,size_t,long,long) | | libssh2_scp_send_ex | 3 | size_t |
+| (LIBSSH2_SESSION *,const char *,int,size_t,long,long) | | libssh2_scp_send_ex | 4 | long |
+| (LIBSSH2_SESSION *,const char *,int,size_t,long,long) | | libssh2_scp_send_ex | 5 | long |
+| (LIBSSH2_SESSION *,const char *,libssh2_struct_stat *) | | libssh2_scp_recv2 | 0 | LIBSSH2_SESSION * |
+| (LIBSSH2_SESSION *,const char *,libssh2_struct_stat *) | | libssh2_scp_recv2 | 1 | const char * |
+| (LIBSSH2_SESSION *,const char *,libssh2_struct_stat *) | | libssh2_scp_recv2 | 2 | libssh2_struct_stat * |
+| (LIBSSH2_SESSION *,const char *,size_t,const char *,size_t,const char *,size_t,const char *) | | libssh2_userauth_publickey_frommemory | 0 | LIBSSH2_SESSION * |
+| (LIBSSH2_SESSION *,const char *,size_t,const char *,size_t,const char *,size_t,const char *) | | libssh2_userauth_publickey_frommemory | 1 | const char * |
+| (LIBSSH2_SESSION *,const char *,size_t,const char *,size_t,const char *,size_t,const char *) | | libssh2_userauth_publickey_frommemory | 2 | size_t |
+| (LIBSSH2_SESSION *,const char *,size_t,const char *,size_t,const char *,size_t,const char *) | | libssh2_userauth_publickey_frommemory | 3 | const char * |
+| (LIBSSH2_SESSION *,const char *,size_t,const char *,size_t,const char *,size_t,const char *) | | libssh2_userauth_publickey_frommemory | 4 | size_t |
+| (LIBSSH2_SESSION *,const char *,size_t,const char *,size_t,const char *,size_t,const char *) | | libssh2_userauth_publickey_frommemory | 5 | const char * |
+| (LIBSSH2_SESSION *,const char *,size_t,const char *,size_t,const char *,size_t,const char *) | | libssh2_userauth_publickey_frommemory | 6 | size_t |
+| (LIBSSH2_SESSION *,const char *,size_t,const char *,size_t,const char *,size_t,const char *) | | libssh2_userauth_publickey_frommemory | 7 | const char * |
+| (LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,..(*)(..),void *) | | _libssh2_userauth_publickey | 0 | LIBSSH2_SESSION * |
+| (LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,..(*)(..),void *) | | _libssh2_userauth_publickey | 1 | const char * |
+| (LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,..(*)(..),void *) | | _libssh2_userauth_publickey | 2 | size_t |
+| (LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,..(*)(..),void *) | | _libssh2_userauth_publickey | 3 | const unsigned char * |
+| (LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,..(*)(..),void *) | | _libssh2_userauth_publickey | 4 | size_t |
+| (LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,..(*)(..),void *) | | _libssh2_userauth_publickey | 5 | ..(*)(..) |
+| (LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,..(*)(..),void *) | | _libssh2_userauth_publickey | 6 | void * |
+| (LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,const char *,size_t,const char *,..(*)(..),void **) | | libssh2_userauth_publickey_sk | 0 | LIBSSH2_SESSION * |
+| (LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,const char *,size_t,const char *,..(*)(..),void **) | | libssh2_userauth_publickey_sk | 1 | const char * |
+| (LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,const char *,size_t,const char *,..(*)(..),void **) | | libssh2_userauth_publickey_sk | 2 | size_t |
+| (LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,const char *,size_t,const char *,..(*)(..),void **) | | libssh2_userauth_publickey_sk | 3 | const unsigned char * |
+| (LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,const char *,size_t,const char *,..(*)(..),void **) | | libssh2_userauth_publickey_sk | 4 | size_t |
+| (LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,const char *,size_t,const char *,..(*)(..),void **) | | libssh2_userauth_publickey_sk | 5 | const char * |
+| (LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,const char *,size_t,const char *,..(*)(..),void **) | | libssh2_userauth_publickey_sk | 6 | size_t |
+| (LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,const char *,size_t,const char *,..(*)(..),void **) | | libssh2_userauth_publickey_sk | 7 | const char * |
+| (LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,const char *,size_t,const char *,..(*)(..),void **) | | libssh2_userauth_publickey_sk | 8 | ..(*)(..) |
+| (LIBSSH2_SESSION *,const char *,size_t,const unsigned char *,size_t,const char *,size_t,const char *,..(*)(..),void **) | | libssh2_userauth_publickey_sk | 9 | void ** |
+| (LIBSSH2_SESSION *,const char *,stat *) | | libssh2_scp_recv | 0 | LIBSSH2_SESSION * |
+| (LIBSSH2_SESSION *,const char *,stat *) | | libssh2_scp_recv | 1 | const char * |
+| (LIBSSH2_SESSION *,const char *,stat *) | | libssh2_scp_recv | 2 | stat * |
+| (LIBSSH2_SESSION *,const char *,uint32_t,uint32_t,uint32_t,const unsigned char *,size_t) | | _libssh2_channel_open | 0 | LIBSSH2_SESSION * |
+| (LIBSSH2_SESSION *,const char *,uint32_t,uint32_t,uint32_t,const unsigned char *,size_t) | | _libssh2_channel_open | 1 | const char * |
+| (LIBSSH2_SESSION *,const char *,uint32_t,uint32_t,uint32_t,const unsigned char *,size_t) | | _libssh2_channel_open | 2 | uint32_t |
+| (LIBSSH2_SESSION *,const char *,uint32_t,uint32_t,uint32_t,const unsigned char *,size_t) | | _libssh2_channel_open | 3 | uint32_t |
+| (LIBSSH2_SESSION *,const char *,uint32_t,uint32_t,uint32_t,const unsigned char *,size_t) | | _libssh2_channel_open | 4 | uint32_t |
+| (LIBSSH2_SESSION *,const char *,uint32_t,uint32_t,uint32_t,const unsigned char *,size_t) | | _libssh2_channel_open | 5 | const unsigned char * |
+| (LIBSSH2_SESSION *,const char *,uint32_t,uint32_t,uint32_t,const unsigned char *,size_t) | | _libssh2_channel_open | 6 | size_t |
+| (LIBSSH2_SESSION *,const char *,unsigned int) | | libssh2_userauth_list | 0 | LIBSSH2_SESSION * |
+| (LIBSSH2_SESSION *,const char *,unsigned int) | | libssh2_userauth_list | 1 | const char * |
+| (LIBSSH2_SESSION *,const char *,unsigned int) | | libssh2_userauth_list | 2 | unsigned int |
+| (LIBSSH2_SESSION *,const char *,unsigned int,..(*)(..)) | | libssh2_userauth_keyboard_interactive_ex | 0 | LIBSSH2_SESSION * |
+| (LIBSSH2_SESSION *,const char *,unsigned int,..(*)(..)) | | libssh2_userauth_keyboard_interactive_ex | 1 | const char * |
+| (LIBSSH2_SESSION *,const char *,unsigned int,..(*)(..)) | | libssh2_userauth_keyboard_interactive_ex | 2 | unsigned int |
+| (LIBSSH2_SESSION *,const char *,unsigned int,..(*)(..)) | | libssh2_userauth_keyboard_interactive_ex | 3 | ..(*)(..) |
+| (LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *) | | libssh2_userauth_publickey_fromfile_ex | 0 | LIBSSH2_SESSION * |
+| (LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *) | | libssh2_userauth_publickey_fromfile_ex | 1 | const char * |
+| (LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *) | | libssh2_userauth_publickey_fromfile_ex | 2 | unsigned int |
+| (LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *) | | libssh2_userauth_publickey_fromfile_ex | 3 | const char * |
+| (LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *) | | libssh2_userauth_publickey_fromfile_ex | 4 | const char * |
+| (LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *) | | libssh2_userauth_publickey_fromfile_ex | 5 | const char * |
+| (LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int) | | libssh2_userauth_hostbased_fromfile_ex | 0 | LIBSSH2_SESSION * |
+| (LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int) | | libssh2_userauth_hostbased_fromfile_ex | 1 | const char * |
+| (LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int) | | libssh2_userauth_hostbased_fromfile_ex | 2 | unsigned int |
+| (LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int) | | libssh2_userauth_hostbased_fromfile_ex | 3 | const char * |
+| (LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int) | | libssh2_userauth_hostbased_fromfile_ex | 4 | const char * |
+| (LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int) | | libssh2_userauth_hostbased_fromfile_ex | 5 | const char * |
+| (LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int) | | libssh2_userauth_hostbased_fromfile_ex | 6 | const char * |
+| (LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int) | | libssh2_userauth_hostbased_fromfile_ex | 7 | unsigned int |
+| (LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int) | | libssh2_userauth_hostbased_fromfile_ex | 8 | const char * |
+| (LIBSSH2_SESSION *,const char *,unsigned int,const char *,const char *,const char *,const char *,unsigned int,const char *,unsigned int) | | libssh2_userauth_hostbased_fromfile_ex | 9 | unsigned int |
+| (LIBSSH2_SESSION *,const char *,unsigned int,const char *,unsigned int,..(*)(..)) | | libssh2_userauth_password_ex | 0 | LIBSSH2_SESSION * |
+| (LIBSSH2_SESSION *,const char *,unsigned int,const char *,unsigned int,..(*)(..)) | | libssh2_userauth_password_ex | 1 | const char * |
+| (LIBSSH2_SESSION *,const char *,unsigned int,const char *,unsigned int,..(*)(..)) | | libssh2_userauth_password_ex | 2 | unsigned int |
+| (LIBSSH2_SESSION *,const char *,unsigned int,const char *,unsigned int,..(*)(..)) | | libssh2_userauth_password_ex | 3 | const char * |
+| (LIBSSH2_SESSION *,const char *,unsigned int,const char *,unsigned int,..(*)(..)) | | libssh2_userauth_password_ex | 4 | unsigned int |
+| (LIBSSH2_SESSION *,const char *,unsigned int,const char *,unsigned int,..(*)(..)) | | libssh2_userauth_password_ex | 5 | ..(*)(..) |
+| (LIBSSH2_SESSION *,const char *,unsigned int,unsigned int,unsigned int,const char *,unsigned int) | | libssh2_channel_open_ex | 0 | LIBSSH2_SESSION * |
+| (LIBSSH2_SESSION *,const char *,unsigned int,unsigned int,unsigned int,const char *,unsigned int) | | libssh2_channel_open_ex | 1 | const char * |
+| (LIBSSH2_SESSION *,const char *,unsigned int,unsigned int,unsigned int,const char *,unsigned int) | | libssh2_channel_open_ex | 2 | unsigned int |
+| (LIBSSH2_SESSION *,const char *,unsigned int,unsigned int,unsigned int,const char *,unsigned int) | | libssh2_channel_open_ex | 3 | unsigned int |
+| (LIBSSH2_SESSION *,const char *,unsigned int,unsigned int,unsigned int,const char *,unsigned int) | | libssh2_channel_open_ex | 4 | unsigned int |
+| (LIBSSH2_SESSION *,const char *,unsigned int,unsigned int,unsigned int,const char *,unsigned int) | | libssh2_channel_open_ex | 5 | const char * |
+| (LIBSSH2_SESSION *,const char *,unsigned int,unsigned int,unsigned int,const char *,unsigned int) | | libssh2_channel_open_ex | 6 | unsigned int |
+| (LIBSSH2_SESSION *,const unsigned char *,size_t,const unsigned char *,size_t) | | _libssh2_transport_send | 0 | LIBSSH2_SESSION * |
+| (LIBSSH2_SESSION *,const unsigned char *,size_t,const unsigned char *,size_t) | | _libssh2_transport_send | 1 | const unsigned char * |
+| (LIBSSH2_SESSION *,const unsigned char *,size_t,const unsigned char *,size_t) | | _libssh2_transport_send | 2 | size_t |
+| (LIBSSH2_SESSION *,const unsigned char *,size_t,const unsigned char *,size_t) | | _libssh2_transport_send | 3 | const unsigned char * |
+| (LIBSSH2_SESSION *,const unsigned char *,size_t,const unsigned char *,size_t) | | _libssh2_transport_send | 4 | size_t |
+| (LIBSSH2_SESSION *,const unsigned char *,unsigned char **,size_t *,int,const unsigned char *,size_t,packet_requirev_state_t *) | | _libssh2_packet_requirev | 0 | LIBSSH2_SESSION * |
+| (LIBSSH2_SESSION *,const unsigned char *,unsigned char **,size_t *,int,const unsigned char *,size_t,packet_requirev_state_t *) | | _libssh2_packet_requirev | 1 | const unsigned char * |
+| (LIBSSH2_SESSION *,const unsigned char *,unsigned char **,size_t *,int,const unsigned char *,size_t,packet_requirev_state_t *) | | _libssh2_packet_requirev | 2 | unsigned char ** |
+| (LIBSSH2_SESSION *,const unsigned char *,unsigned char **,size_t *,int,const unsigned char *,size_t,packet_requirev_state_t *) | | _libssh2_packet_requirev | 3 | size_t * |
+| (LIBSSH2_SESSION *,const unsigned char *,unsigned char **,size_t *,int,const unsigned char *,size_t,packet_requirev_state_t *) | | _libssh2_packet_requirev | 4 | int |
+| (LIBSSH2_SESSION *,const unsigned char *,unsigned char **,size_t *,int,const unsigned char *,size_t,packet_requirev_state_t *) | | _libssh2_packet_requirev | 5 | const unsigned char * |
+| (LIBSSH2_SESSION *,const unsigned char *,unsigned char **,size_t *,int,const unsigned char *,size_t,packet_requirev_state_t *) | | _libssh2_packet_requirev | 6 | size_t |
+| (LIBSSH2_SESSION *,const unsigned char *,unsigned char **,size_t *,int,const unsigned char *,size_t,packet_requirev_state_t *) | | _libssh2_packet_requirev | 7 | packet_requirev_state_t * |
+| (LIBSSH2_SESSION *,int *) | | libssh2_keepalive_send | 0 | LIBSSH2_SESSION * |
+| (LIBSSH2_SESSION *,int *) | | libssh2_keepalive_send | 1 | int * |
+| (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 0 | LIBSSH2_SESSION * |
+| (LIBSSH2_SESSION *,int) | | _libssh2_session_set_blocking | 1 | int |
+| (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 0 | LIBSSH2_SESSION * |
+| (LIBSSH2_SESSION *,int) | | libssh2_hostkey_hash | 1 | int |
+| (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 0 | LIBSSH2_SESSION * |
+| (LIBSSH2_SESSION *,int) | | libssh2_session_methods | 1 | int |
+| (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 0 | LIBSSH2_SESSION * |
+| (LIBSSH2_SESSION *,int) | | libssh2_session_set_blocking | 1 | int |
+| (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 0 | LIBSSH2_SESSION * |
+| (LIBSSH2_SESSION *,int) | | libssh2_session_startup | 1 | int |
+| (LIBSSH2_SESSION *,int,const char *) | | _libssh2_error | 0 | LIBSSH2_SESSION * |
+| (LIBSSH2_SESSION *,int,const char *) | | _libssh2_error | 1 | int |
+| (LIBSSH2_SESSION *,int,const char *) | | _libssh2_error | 2 | const char * |
+| (LIBSSH2_SESSION *,int,const char *) | | libssh2_session_set_last_error | 0 | LIBSSH2_SESSION * |
+| (LIBSSH2_SESSION *,int,const char *) | | libssh2_session_set_last_error | 1 | int |
+| (LIBSSH2_SESSION *,int,const char *) | | libssh2_session_set_last_error | 2 | const char * |
+| (LIBSSH2_SESSION *,int,const char ***) | | libssh2_session_supported_algs | 0 | LIBSSH2_SESSION * |
+| (LIBSSH2_SESSION *,int,const char ***) | | libssh2_session_supported_algs | 1 | int |
+| (LIBSSH2_SESSION *,int,const char ***) | | libssh2_session_supported_algs | 2 | const char *** |
+| (LIBSSH2_SESSION *,int,const char *,const char *) | | libssh2_session_disconnect_ex | 0 | LIBSSH2_SESSION * |
+| (LIBSSH2_SESSION *,int,const char *,const char *) | | libssh2_session_disconnect_ex | 1 | int |
+| (LIBSSH2_SESSION *,int,const char *,const char *) | | libssh2_session_disconnect_ex | 2 | const char * |
+| (LIBSSH2_SESSION *,int,const char *,const char *) | | libssh2_session_disconnect_ex | 3 | const char * |
+| (LIBSSH2_SESSION *,int,const char *,int) | | _libssh2_error_flags | 0 | LIBSSH2_SESSION * |
+| (LIBSSH2_SESSION *,int,const char *,int) | | _libssh2_error_flags | 1 | int |
+| (LIBSSH2_SESSION *,int,const char *,int) | | _libssh2_error_flags | 2 | const char * |
+| (LIBSSH2_SESSION *,int,const char *,int) | | _libssh2_error_flags | 3 | int |
+| (LIBSSH2_SESSION *,int,int) | | libssh2_session_flag | 0 | LIBSSH2_SESSION * |
+| (LIBSSH2_SESSION *,int,int) | | libssh2_session_flag | 1 | int |
+| (LIBSSH2_SESSION *,int,int) | | libssh2_session_flag | 2 | int |
+| (LIBSSH2_SESSION *,int,key_exchange_state_t *) | | _libssh2_kex_exchange | 0 | LIBSSH2_SESSION * |
+| (LIBSSH2_SESSION *,int,key_exchange_state_t *) | | _libssh2_kex_exchange | 1 | int |
+| (LIBSSH2_SESSION *,int,key_exchange_state_t *) | | _libssh2_kex_exchange | 2 | key_exchange_state_t * |
+| (LIBSSH2_SESSION *,int,libssh2_cb_generic *) | | libssh2_session_callback_set2 | 0 | LIBSSH2_SESSION * |
+| (LIBSSH2_SESSION *,int,libssh2_cb_generic *) | | libssh2_session_callback_set2 | 1 | int |
+| (LIBSSH2_SESSION *,int,libssh2_cb_generic *) | | libssh2_session_callback_set2 | 2 | libssh2_cb_generic * |
+| (LIBSSH2_SESSION *,int,unsigned int) | | libssh2_keepalive_config | 0 | LIBSSH2_SESSION * |
+| (LIBSSH2_SESSION *,int,unsigned int) | | libssh2_keepalive_config | 1 | int |
+| (LIBSSH2_SESSION *,int,unsigned int) | | libssh2_keepalive_config | 2 | unsigned int |
+| (LIBSSH2_SESSION *,int,void *) | | libssh2_session_callback_set | 0 | LIBSSH2_SESSION * |
+| (LIBSSH2_SESSION *,int,void *) | | libssh2_session_callback_set | 1 | int |
+| (LIBSSH2_SESSION *,int,void *) | | libssh2_session_callback_set | 2 | void * |
+| (LIBSSH2_SESSION *,libssh2_nonblocking_states *) | | _libssh2_packet_burn | 0 | LIBSSH2_SESSION * |
+| (LIBSSH2_SESSION *,libssh2_nonblocking_states *) | | _libssh2_packet_burn | 1 | libssh2_nonblocking_states * |
+| (LIBSSH2_SESSION *,libssh2_socket_t) | | libssh2_session_handshake | 0 | LIBSSH2_SESSION * |
+| (LIBSSH2_SESSION *,libssh2_socket_t) | | libssh2_session_handshake | 1 | libssh2_socket_t |
+| (LIBSSH2_SESSION *,long) | | libssh2_session_set_read_timeout | 0 | LIBSSH2_SESSION * |
+| (LIBSSH2_SESSION *,long) | | libssh2_session_set_read_timeout | 1 | long |
+| (LIBSSH2_SESSION *,long) | | libssh2_session_set_timeout | 0 | LIBSSH2_SESSION * |
+| (LIBSSH2_SESSION *,long) | | libssh2_session_set_timeout | 1 | long |
+| (LIBSSH2_SESSION *,size_t *,int *) | | libssh2_session_hostkey | 0 | LIBSSH2_SESSION * |
+| (LIBSSH2_SESSION *,size_t *,int *) | | libssh2_session_hostkey | 1 | size_t * |
+| (LIBSSH2_SESSION *,size_t *,int *) | | libssh2_session_hostkey | 2 | int * |
+| (LIBSSH2_SESSION *,string_buf *,unsigned char **,size_t *) | | _libssh2_copy_string | 0 | LIBSSH2_SESSION * |
+| (LIBSSH2_SESSION *,string_buf *,unsigned char **,size_t *) | | _libssh2_copy_string | 1 | string_buf * |
+| (LIBSSH2_SESSION *,string_buf *,unsigned char **,size_t *) | | _libssh2_copy_string | 2 | unsigned char ** |
+| (LIBSSH2_SESSION *,string_buf *,unsigned char **,size_t *) | | _libssh2_copy_string | 3 | size_t * |
+| (LIBSSH2_SESSION *,time_t) | | _libssh2_wait_socket | 0 | LIBSSH2_SESSION * |
+| (LIBSSH2_SESSION *,time_t) | | _libssh2_wait_socket | 1 | time_t |
+| (LIBSSH2_SESSION *,uint32_t) | | _libssh2_channel_locate | 0 | LIBSSH2_SESSION * |
+| (LIBSSH2_SESSION *,uint32_t) | | _libssh2_channel_locate | 1 | uint32_t |
+| (LIBSSH2_SESSION *,unsigned char **,size_t *,const unsigned char *,size_t,void **) | | libssh2_sign_sk | 0 | LIBSSH2_SESSION * |
+| (LIBSSH2_SESSION *,unsigned char **,size_t *,const unsigned char *,size_t,void **) | | libssh2_sign_sk | 1 | unsigned char ** |
+| (LIBSSH2_SESSION *,unsigned char **,size_t *,const unsigned char *,size_t,void **) | | libssh2_sign_sk | 2 | size_t * |
+| (LIBSSH2_SESSION *,unsigned char **,size_t *,const unsigned char *,size_t,void **) | | libssh2_sign_sk | 3 | const unsigned char * |
+| (LIBSSH2_SESSION *,unsigned char **,size_t *,const unsigned char *,size_t,void **) | | libssh2_sign_sk | 4 | size_t |
+| (LIBSSH2_SESSION *,unsigned char **,size_t *,const unsigned char *,size_t,void **) | | libssh2_sign_sk | 5 | void ** |
+| (LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,const char *,size_t,const char *) | | _libssh2_pub_priv_keyfilememory | 0 | LIBSSH2_SESSION * |
+| (LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,const char *,size_t,const char *) | | _libssh2_pub_priv_keyfilememory | 1 | unsigned char ** |
+| (LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,const char *,size_t,const char *) | | _libssh2_pub_priv_keyfilememory | 2 | size_t * |
+| (LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,const char *,size_t,const char *) | | _libssh2_pub_priv_keyfilememory | 3 | unsigned char ** |
+| (LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,const char *,size_t,const char *) | | _libssh2_pub_priv_keyfilememory | 4 | size_t * |
+| (LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,const char *,size_t,const char *) | | _libssh2_pub_priv_keyfilememory | 5 | const char * |
+| (LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,const char *,size_t,const char *) | | _libssh2_pub_priv_keyfilememory | 6 | size_t |
+| (LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,const char *,size_t,const char *) | | _libssh2_pub_priv_keyfilememory | 7 | const char * |
+| (LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,int *,unsigned char *,const char **,const unsigned char **,size_t *,const char *,size_t,const char *) | | _libssh2_sk_pub_keyfilememory | 0 | LIBSSH2_SESSION * |
+| (LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,int *,unsigned char *,const char **,const unsigned char **,size_t *,const char *,size_t,const char *) | | _libssh2_sk_pub_keyfilememory | 1 | unsigned char ** |
+| (LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,int *,unsigned char *,const char **,const unsigned char **,size_t *,const char *,size_t,const char *) | | _libssh2_sk_pub_keyfilememory | 2 | size_t * |
+| (LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,int *,unsigned char *,const char **,const unsigned char **,size_t *,const char *,size_t,const char *) | | _libssh2_sk_pub_keyfilememory | 3 | unsigned char ** |
+| (LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,int *,unsigned char *,const char **,const unsigned char **,size_t *,const char *,size_t,const char *) | | _libssh2_sk_pub_keyfilememory | 4 | size_t * |
+| (LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,int *,unsigned char *,const char **,const unsigned char **,size_t *,const char *,size_t,const char *) | | _libssh2_sk_pub_keyfilememory | 5 | int * |
+| (LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,int *,unsigned char *,const char **,const unsigned char **,size_t *,const char *,size_t,const char *) | | _libssh2_sk_pub_keyfilememory | 6 | unsigned char * |
+| (LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,int *,unsigned char *,const char **,const unsigned char **,size_t *,const char *,size_t,const char *) | | _libssh2_sk_pub_keyfilememory | 7 | const char ** |
+| (LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,int *,unsigned char *,const char **,const unsigned char **,size_t *,const char *,size_t,const char *) | | _libssh2_sk_pub_keyfilememory | 8 | const unsigned char ** |
+| (LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,int *,unsigned char *,const char **,const unsigned char **,size_t *,const char *,size_t,const char *) | | _libssh2_sk_pub_keyfilememory | 9 | size_t * |
+| (LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,int *,unsigned char *,const char **,const unsigned char **,size_t *,const char *,size_t,const char *) | | _libssh2_sk_pub_keyfilememory | 10 | const char * |
+| (LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,int *,unsigned char *,const char **,const unsigned char **,size_t *,const char *,size_t,const char *) | | _libssh2_sk_pub_keyfilememory | 11 | size_t |
+| (LIBSSH2_SESSION *,unsigned char **,size_t *,unsigned char **,size_t *,int *,unsigned char *,const char **,const unsigned char **,size_t *,const char *,size_t,const char *) | | _libssh2_sk_pub_keyfilememory | 12 | const char * |
+| (LIBSSH2_SESSION *,unsigned char *,size_t,int,uint32_t) | | _libssh2_packet_add | 0 | LIBSSH2_SESSION * |
+| (LIBSSH2_SESSION *,unsigned char *,size_t,int,uint32_t) | | _libssh2_packet_add | 1 | unsigned char * |
+| (LIBSSH2_SESSION *,unsigned char *,size_t,int,uint32_t) | | _libssh2_packet_add | 2 | size_t |
+| (LIBSSH2_SESSION *,unsigned char *,size_t,int,uint32_t) | | _libssh2_packet_add | 3 | int |
+| (LIBSSH2_SESSION *,unsigned char *,size_t,int,uint32_t) | | _libssh2_packet_add | 4 | uint32_t |
+| (LIBSSH2_SESSION *,unsigned char,unsigned char **,size_t *,int,const unsigned char *,size_t,packet_require_state_t *) | | _libssh2_packet_require | 0 | LIBSSH2_SESSION * |
+| (LIBSSH2_SESSION *,unsigned char,unsigned char **,size_t *,int,const unsigned char *,size_t,packet_require_state_t *) | | _libssh2_packet_require | 1 | unsigned char |
+| (LIBSSH2_SESSION *,unsigned char,unsigned char **,size_t *,int,const unsigned char *,size_t,packet_require_state_t *) | | _libssh2_packet_require | 2 | unsigned char ** |
+| (LIBSSH2_SESSION *,unsigned char,unsigned char **,size_t *,int,const unsigned char *,size_t,packet_require_state_t *) | | _libssh2_packet_require | 3 | size_t * |
+| (LIBSSH2_SESSION *,unsigned char,unsigned char **,size_t *,int,const unsigned char *,size_t,packet_require_state_t *) | | _libssh2_packet_require | 4 | int |
+| (LIBSSH2_SESSION *,unsigned char,unsigned char **,size_t *,int,const unsigned char *,size_t,packet_require_state_t *) | | _libssh2_packet_require | 5 | const unsigned char * |
+| (LIBSSH2_SESSION *,unsigned char,unsigned char **,size_t *,int,const unsigned char *,size_t,packet_require_state_t *) | | _libssh2_packet_require | 6 | size_t |
+| (LIBSSH2_SESSION *,unsigned char,unsigned char **,size_t *,int,const unsigned char *,size_t,packet_require_state_t *) | | _libssh2_packet_require | 7 | packet_require_state_t * |
+| (LIBSSH2_SESSION *,void **,LIBSSH2_CHANNEL *,void **) | | libssh2_sftp_dtor | 0 | LIBSSH2_SESSION * |
+| (LIBSSH2_SESSION *,void **,LIBSSH2_CHANNEL *,void **) | | libssh2_sftp_dtor | 1 | void ** |
+| (LIBSSH2_SESSION *,void **,LIBSSH2_CHANNEL *,void **) | | libssh2_sftp_dtor | 2 | LIBSSH2_CHANNEL * |
+| (LIBSSH2_SESSION *,void **,LIBSSH2_CHANNEL *,void **) | | libssh2_sftp_dtor | 3 | void ** |
+| (LIBSSH2_SFTP *) | | libssh2_sftp_get_channel | 0 | LIBSSH2_SFTP * |
+| (LIBSSH2_SFTP *) | | libssh2_sftp_last_error | 0 | LIBSSH2_SFTP * |
+| (LIBSSH2_SFTP *,const char *,size_t,LIBSSH2_SFTP_STATVFS *) | | libssh2_sftp_statvfs | 0 | LIBSSH2_SFTP * |
+| (LIBSSH2_SFTP *,const char *,size_t,LIBSSH2_SFTP_STATVFS *) | | libssh2_sftp_statvfs | 1 | const char * |
+| (LIBSSH2_SFTP *,const char *,size_t,LIBSSH2_SFTP_STATVFS *) | | libssh2_sftp_statvfs | 2 | size_t |
+| (LIBSSH2_SFTP *,const char *,size_t,LIBSSH2_SFTP_STATVFS *) | | libssh2_sftp_statvfs | 3 | LIBSSH2_SFTP_STATVFS * |
+| (LIBSSH2_SFTP *,const char *,size_t,const char *,size_t) | | libssh2_sftp_posix_rename_ex | 0 | LIBSSH2_SFTP * |
+| (LIBSSH2_SFTP *,const char *,size_t,const char *,size_t) | | libssh2_sftp_posix_rename_ex | 1 | const char * |
+| (LIBSSH2_SFTP *,const char *,size_t,const char *,size_t) | | libssh2_sftp_posix_rename_ex | 2 | size_t |
+| (LIBSSH2_SFTP *,const char *,size_t,const char *,size_t) | | libssh2_sftp_posix_rename_ex | 3 | const char * |
+| (LIBSSH2_SFTP *,const char *,size_t,const char *,size_t) | | libssh2_sftp_posix_rename_ex | 4 | size_t |
+| (LIBSSH2_SFTP *,const char *,size_t,unsigned long,long,int,LIBSSH2_SFTP_ATTRIBUTES *) | | libssh2_sftp_open_ex_r | 0 | LIBSSH2_SFTP * |
+| (LIBSSH2_SFTP *,const char *,size_t,unsigned long,long,int,LIBSSH2_SFTP_ATTRIBUTES *) | | libssh2_sftp_open_ex_r | 1 | const char * |
+| (LIBSSH2_SFTP *,const char *,size_t,unsigned long,long,int,LIBSSH2_SFTP_ATTRIBUTES *) | | libssh2_sftp_open_ex_r | 2 | size_t |
+| (LIBSSH2_SFTP *,const char *,size_t,unsigned long,long,int,LIBSSH2_SFTP_ATTRIBUTES *) | | libssh2_sftp_open_ex_r | 3 | unsigned long |
+| (LIBSSH2_SFTP *,const char *,size_t,unsigned long,long,int,LIBSSH2_SFTP_ATTRIBUTES *) | | libssh2_sftp_open_ex_r | 4 | long |
+| (LIBSSH2_SFTP *,const char *,size_t,unsigned long,long,int,LIBSSH2_SFTP_ATTRIBUTES *) | | libssh2_sftp_open_ex_r | 5 | int |
+| (LIBSSH2_SFTP *,const char *,size_t,unsigned long,long,int,LIBSSH2_SFTP_ATTRIBUTES *) | | libssh2_sftp_open_ex_r | 6 | LIBSSH2_SFTP_ATTRIBUTES * |
+| (LIBSSH2_SFTP *,const char *,unsigned int) | | libssh2_sftp_rmdir_ex | 0 | LIBSSH2_SFTP * |
+| (LIBSSH2_SFTP *,const char *,unsigned int) | | libssh2_sftp_rmdir_ex | 1 | const char * |
+| (LIBSSH2_SFTP *,const char *,unsigned int) | | libssh2_sftp_rmdir_ex | 2 | unsigned int |
+| (LIBSSH2_SFTP *,const char *,unsigned int) | | libssh2_sftp_unlink_ex | 0 | LIBSSH2_SFTP * |
+| (LIBSSH2_SFTP *,const char *,unsigned int) | | libssh2_sftp_unlink_ex | 1 | const char * |
+| (LIBSSH2_SFTP *,const char *,unsigned int) | | libssh2_sftp_unlink_ex | 2 | unsigned int |
+| (LIBSSH2_SFTP *,const char *,unsigned int,char *,unsigned int,int) | | libssh2_sftp_symlink_ex | 0 | LIBSSH2_SFTP * |
+| (LIBSSH2_SFTP *,const char *,unsigned int,char *,unsigned int,int) | | libssh2_sftp_symlink_ex | 1 | const char * |
+| (LIBSSH2_SFTP *,const char *,unsigned int,char *,unsigned int,int) | | libssh2_sftp_symlink_ex | 2 | unsigned int |
+| (LIBSSH2_SFTP *,const char *,unsigned int,char *,unsigned int,int) | | libssh2_sftp_symlink_ex | 3 | char * |
+| (LIBSSH2_SFTP *,const char *,unsigned int,char *,unsigned int,int) | | libssh2_sftp_symlink_ex | 4 | unsigned int |
+| (LIBSSH2_SFTP *,const char *,unsigned int,char *,unsigned int,int) | | libssh2_sftp_symlink_ex | 5 | int |
+| (LIBSSH2_SFTP *,const char *,unsigned int,const char *,unsigned int,long) | | libssh2_sftp_rename_ex | 0 | LIBSSH2_SFTP * |
+| (LIBSSH2_SFTP *,const char *,unsigned int,const char *,unsigned int,long) | | libssh2_sftp_rename_ex | 1 | const char * |
+| (LIBSSH2_SFTP *,const char *,unsigned int,const char *,unsigned int,long) | | libssh2_sftp_rename_ex | 2 | unsigned int |
+| (LIBSSH2_SFTP *,const char *,unsigned int,const char *,unsigned int,long) | | libssh2_sftp_rename_ex | 3 | const char * |
+| (LIBSSH2_SFTP *,const char *,unsigned int,const char *,unsigned int,long) | | libssh2_sftp_rename_ex | 4 | unsigned int |
+| (LIBSSH2_SFTP *,const char *,unsigned int,const char *,unsigned int,long) | | libssh2_sftp_rename_ex | 5 | long |
+| (LIBSSH2_SFTP *,const char *,unsigned int,int,LIBSSH2_SFTP_ATTRIBUTES *) | | libssh2_sftp_stat_ex | 0 | LIBSSH2_SFTP * |
+| (LIBSSH2_SFTP *,const char *,unsigned int,int,LIBSSH2_SFTP_ATTRIBUTES *) | | libssh2_sftp_stat_ex | 1 | const char * |
+| (LIBSSH2_SFTP *,const char *,unsigned int,int,LIBSSH2_SFTP_ATTRIBUTES *) | | libssh2_sftp_stat_ex | 2 | unsigned int |
+| (LIBSSH2_SFTP *,const char *,unsigned int,int,LIBSSH2_SFTP_ATTRIBUTES *) | | libssh2_sftp_stat_ex | 3 | int |
+| (LIBSSH2_SFTP *,const char *,unsigned int,int,LIBSSH2_SFTP_ATTRIBUTES *) | | libssh2_sftp_stat_ex | 4 | LIBSSH2_SFTP_ATTRIBUTES * |
+| (LIBSSH2_SFTP *,const char *,unsigned int,long) | | libssh2_sftp_mkdir_ex | 0 | LIBSSH2_SFTP * |
+| (LIBSSH2_SFTP *,const char *,unsigned int,long) | | libssh2_sftp_mkdir_ex | 1 | const char * |
+| (LIBSSH2_SFTP *,const char *,unsigned int,long) | | libssh2_sftp_mkdir_ex | 2 | unsigned int |
+| (LIBSSH2_SFTP *,const char *,unsigned int,long) | | libssh2_sftp_mkdir_ex | 3 | long |
+| (LIBSSH2_SFTP *,const char *,unsigned int,unsigned long,long,int) | | libssh2_sftp_open_ex | 0 | LIBSSH2_SFTP * |
+| (LIBSSH2_SFTP *,const char *,unsigned int,unsigned long,long,int) | | libssh2_sftp_open_ex | 1 | const char * |
+| (LIBSSH2_SFTP *,const char *,unsigned int,unsigned long,long,int) | | libssh2_sftp_open_ex | 2 | unsigned int |
+| (LIBSSH2_SFTP *,const char *,unsigned int,unsigned long,long,int) | | libssh2_sftp_open_ex | 3 | unsigned long |
+| (LIBSSH2_SFTP *,const char *,unsigned int,unsigned long,long,int) | | libssh2_sftp_open_ex | 4 | long |
+| (LIBSSH2_SFTP *,const char *,unsigned int,unsigned long,long,int) | | libssh2_sftp_open_ex | 5 | int |
+| (LIBSSH2_SFTP_HANDLE *) | | libssh2_sftp_close_handle | 0 | LIBSSH2_SFTP_HANDLE * |
+| (LIBSSH2_SFTP_HANDLE *) | | libssh2_sftp_fsync | 0 | LIBSSH2_SFTP_HANDLE * |
+| (LIBSSH2_SFTP_HANDLE *,LIBSSH2_SFTP_ATTRIBUTES *,int) | | libssh2_sftp_fstat_ex | 0 | LIBSSH2_SFTP_HANDLE * |
+| (LIBSSH2_SFTP_HANDLE *,LIBSSH2_SFTP_ATTRIBUTES *,int) | | libssh2_sftp_fstat_ex | 1 | LIBSSH2_SFTP_ATTRIBUTES * |
+| (LIBSSH2_SFTP_HANDLE *,LIBSSH2_SFTP_ATTRIBUTES *,int) | | libssh2_sftp_fstat_ex | 2 | int |
+| (LIBSSH2_SFTP_HANDLE *,LIBSSH2_SFTP_STATVFS *) | | libssh2_sftp_fstatvfs | 0 | LIBSSH2_SFTP_HANDLE * |
+| (LIBSSH2_SFTP_HANDLE *,LIBSSH2_SFTP_STATVFS *) | | libssh2_sftp_fstatvfs | 1 | LIBSSH2_SFTP_STATVFS * |
+| (LIBSSH2_SFTP_HANDLE *,char *,size_t) | | libssh2_sftp_read | 0 | LIBSSH2_SFTP_HANDLE * |
+| (LIBSSH2_SFTP_HANDLE *,char *,size_t) | | libssh2_sftp_read | 1 | char * |
+| (LIBSSH2_SFTP_HANDLE *,char *,size_t) | | libssh2_sftp_read | 2 | size_t |
+| (LIBSSH2_SFTP_HANDLE *,char *,size_t,char *,size_t,LIBSSH2_SFTP_ATTRIBUTES *) | | libssh2_sftp_readdir_ex | 0 | LIBSSH2_SFTP_HANDLE * |
+| (LIBSSH2_SFTP_HANDLE *,char *,size_t,char *,size_t,LIBSSH2_SFTP_ATTRIBUTES *) | | libssh2_sftp_readdir_ex | 1 | char * |
+| (LIBSSH2_SFTP_HANDLE *,char *,size_t,char *,size_t,LIBSSH2_SFTP_ATTRIBUTES *) | | libssh2_sftp_readdir_ex | 2 | size_t |
+| (LIBSSH2_SFTP_HANDLE *,char *,size_t,char *,size_t,LIBSSH2_SFTP_ATTRIBUTES *) | | libssh2_sftp_readdir_ex | 3 | char * |
+| (LIBSSH2_SFTP_HANDLE *,char *,size_t,char *,size_t,LIBSSH2_SFTP_ATTRIBUTES *) | | libssh2_sftp_readdir_ex | 4 | size_t |
+| (LIBSSH2_SFTP_HANDLE *,char *,size_t,char *,size_t,LIBSSH2_SFTP_ATTRIBUTES *) | | libssh2_sftp_readdir_ex | 5 | LIBSSH2_SFTP_ATTRIBUTES * |
+| (LIBSSH2_SFTP_HANDLE *,const char *,size_t) | | libssh2_sftp_write | 0 | LIBSSH2_SFTP_HANDLE * |
+| (LIBSSH2_SFTP_HANDLE *,const char *,size_t) | | libssh2_sftp_write | 1 | const char * |
+| (LIBSSH2_SFTP_HANDLE *,const char *,size_t) | | libssh2_sftp_write | 2 | size_t |
| (LPCOLESTR) | CComBSTR | Append | 0 | LPCOLESTR |
| (LPCOLESTR) | CComBSTR | CComBSTR | 0 | LPCOLESTR |
| (LPCOLESTR,int) | CComBSTR | Append | 0 | LPCOLESTR |
@@ -16027,6 +19567,152 @@ getSignatureParameterName
| (ML_DSA_SIG *,const uint8_t *,size_t,const ML_DSA_PARAMS *) | | ossl_ml_dsa_sig_decode | 1 | const uint8_t * |
| (ML_DSA_SIG *,const uint8_t *,size_t,const ML_DSA_PARAMS *) | | ossl_ml_dsa_sig_decode | 2 | size_t |
| (ML_DSA_SIG *,const uint8_t *,size_t,const ML_DSA_PARAMS *) | | ossl_ml_dsa_sig_decode | 3 | const ML_DSA_PARAMS * |
+| (MemoryManager *,HistogramCommand *,uint32_t *,size_t) | | BrotliHistogramReindexCommand | 0 | MemoryManager * |
+| (MemoryManager *,HistogramCommand *,uint32_t *,size_t) | | BrotliHistogramReindexCommand | 1 | HistogramCommand * |
+| (MemoryManager *,HistogramCommand *,uint32_t *,size_t) | | BrotliHistogramReindexCommand | 2 | uint32_t * |
+| (MemoryManager *,HistogramCommand *,uint32_t *,size_t) | | BrotliHistogramReindexCommand | 3 | size_t |
+| (MemoryManager *,HistogramDistance *,uint32_t *,size_t) | | BrotliHistogramReindexDistance | 0 | MemoryManager * |
+| (MemoryManager *,HistogramDistance *,uint32_t *,size_t) | | BrotliHistogramReindexDistance | 1 | HistogramDistance * |
+| (MemoryManager *,HistogramDistance *,uint32_t *,size_t) | | BrotliHistogramReindexDistance | 2 | uint32_t * |
+| (MemoryManager *,HistogramDistance *,uint32_t *,size_t) | | BrotliHistogramReindexDistance | 3 | size_t |
+| (MemoryManager *,HistogramLiteral *,uint32_t *,size_t) | | BrotliHistogramReindexLiteral | 0 | MemoryManager * |
+| (MemoryManager *,HistogramLiteral *,uint32_t *,size_t) | | BrotliHistogramReindexLiteral | 1 | HistogramLiteral * |
+| (MemoryManager *,HistogramLiteral *,uint32_t *,size_t) | | BrotliHistogramReindexLiteral | 2 | uint32_t * |
+| (MemoryManager *,HistogramLiteral *,uint32_t *,size_t) | | BrotliHistogramReindexLiteral | 3 | size_t |
+| (MemoryManager *,brotli_alloc_func,brotli_free_func,void *) | | BrotliInitMemoryManager | 0 | MemoryManager * |
+| (MemoryManager *,brotli_alloc_func,brotli_free_func,void *) | | BrotliInitMemoryManager | 1 | brotli_alloc_func |
+| (MemoryManager *,brotli_alloc_func,brotli_free_func,void *) | | BrotliInitMemoryManager | 2 | brotli_free_func |
+| (MemoryManager *,brotli_alloc_func,brotli_free_func,void *) | | BrotliInitMemoryManager | 3 | void * |
+| (MemoryManager *,const Command *,const size_t,const uint8_t *,const size_t,const size_t,const BrotliEncoderParams *,BlockSplit *,BlockSplit *,BlockSplit *) | | BrotliSplitBlock | 0 | MemoryManager * |
+| (MemoryManager *,const Command *,const size_t,const uint8_t *,const size_t,const size_t,const BrotliEncoderParams *,BlockSplit *,BlockSplit *,BlockSplit *) | | BrotliSplitBlock | 1 | const Command * |
+| (MemoryManager *,const Command *,const size_t,const uint8_t *,const size_t,const size_t,const BrotliEncoderParams *,BlockSplit *,BlockSplit *,BlockSplit *) | | BrotliSplitBlock | 2 | const size_t |
+| (MemoryManager *,const Command *,const size_t,const uint8_t *,const size_t,const size_t,const BrotliEncoderParams *,BlockSplit *,BlockSplit *,BlockSplit *) | | BrotliSplitBlock | 3 | const uint8_t * |
+| (MemoryManager *,const Command *,const size_t,const uint8_t *,const size_t,const size_t,const BrotliEncoderParams *,BlockSplit *,BlockSplit *,BlockSplit *) | | BrotliSplitBlock | 4 | const size_t |
+| (MemoryManager *,const Command *,const size_t,const uint8_t *,const size_t,const size_t,const BrotliEncoderParams *,BlockSplit *,BlockSplit *,BlockSplit *) | | BrotliSplitBlock | 5 | const size_t |
+| (MemoryManager *,const Command *,const size_t,const uint8_t *,const size_t,const size_t,const BrotliEncoderParams *,BlockSplit *,BlockSplit *,BlockSplit *) | | BrotliSplitBlock | 6 | const BrotliEncoderParams * |
+| (MemoryManager *,const Command *,const size_t,const uint8_t *,const size_t,const size_t,const BrotliEncoderParams *,BlockSplit *,BlockSplit *,BlockSplit *) | | BrotliSplitBlock | 7 | BlockSplit * |
+| (MemoryManager *,const Command *,const size_t,const uint8_t *,const size_t,const size_t,const BrotliEncoderParams *,BlockSplit *,BlockSplit *,BlockSplit *) | | BrotliSplitBlock | 8 | BlockSplit * |
+| (MemoryManager *,const Command *,const size_t,const uint8_t *,const size_t,const size_t,const BrotliEncoderParams *,BlockSplit *,BlockSplit *,BlockSplit *) | | BrotliSplitBlock | 9 | BlockSplit * |
+| (MemoryManager *,const HistogramCommand *,const size_t,size_t,HistogramCommand *,size_t *,uint32_t *) | | BrotliClusterHistogramsCommand | 0 | MemoryManager * |
+| (MemoryManager *,const HistogramCommand *,const size_t,size_t,HistogramCommand *,size_t *,uint32_t *) | | BrotliClusterHistogramsCommand | 1 | const HistogramCommand * |
+| (MemoryManager *,const HistogramCommand *,const size_t,size_t,HistogramCommand *,size_t *,uint32_t *) | | BrotliClusterHistogramsCommand | 2 | const size_t |
+| (MemoryManager *,const HistogramCommand *,const size_t,size_t,HistogramCommand *,size_t *,uint32_t *) | | BrotliClusterHistogramsCommand | 3 | size_t |
+| (MemoryManager *,const HistogramCommand *,const size_t,size_t,HistogramCommand *,size_t *,uint32_t *) | | BrotliClusterHistogramsCommand | 4 | HistogramCommand * |
+| (MemoryManager *,const HistogramCommand *,const size_t,size_t,HistogramCommand *,size_t *,uint32_t *) | | BrotliClusterHistogramsCommand | 5 | size_t * |
+| (MemoryManager *,const HistogramCommand *,const size_t,size_t,HistogramCommand *,size_t *,uint32_t *) | | BrotliClusterHistogramsCommand | 6 | uint32_t * |
+| (MemoryManager *,const HistogramDistance *,const size_t,size_t,HistogramDistance *,size_t *,uint32_t *) | | BrotliClusterHistogramsDistance | 0 | MemoryManager * |
+| (MemoryManager *,const HistogramDistance *,const size_t,size_t,HistogramDistance *,size_t *,uint32_t *) | | BrotliClusterHistogramsDistance | 1 | const HistogramDistance * |
+| (MemoryManager *,const HistogramDistance *,const size_t,size_t,HistogramDistance *,size_t *,uint32_t *) | | BrotliClusterHistogramsDistance | 2 | const size_t |
+| (MemoryManager *,const HistogramDistance *,const size_t,size_t,HistogramDistance *,size_t *,uint32_t *) | | BrotliClusterHistogramsDistance | 3 | size_t |
+| (MemoryManager *,const HistogramDistance *,const size_t,size_t,HistogramDistance *,size_t *,uint32_t *) | | BrotliClusterHistogramsDistance | 4 | HistogramDistance * |
+| (MemoryManager *,const HistogramDistance *,const size_t,size_t,HistogramDistance *,size_t *,uint32_t *) | | BrotliClusterHistogramsDistance | 5 | size_t * |
+| (MemoryManager *,const HistogramDistance *,const size_t,size_t,HistogramDistance *,size_t *,uint32_t *) | | BrotliClusterHistogramsDistance | 6 | uint32_t * |
+| (MemoryManager *,const HistogramLiteral *,const size_t,size_t,HistogramLiteral *,size_t *,uint32_t *) | | BrotliClusterHistogramsLiteral | 0 | MemoryManager * |
+| (MemoryManager *,const HistogramLiteral *,const size_t,size_t,HistogramLiteral *,size_t *,uint32_t *) | | BrotliClusterHistogramsLiteral | 1 | const HistogramLiteral * |
+| (MemoryManager *,const HistogramLiteral *,const size_t,size_t,HistogramLiteral *,size_t *,uint32_t *) | | BrotliClusterHistogramsLiteral | 2 | const size_t |
+| (MemoryManager *,const HistogramLiteral *,const size_t,size_t,HistogramLiteral *,size_t *,uint32_t *) | | BrotliClusterHistogramsLiteral | 3 | size_t |
+| (MemoryManager *,const HistogramLiteral *,const size_t,size_t,HistogramLiteral *,size_t *,uint32_t *) | | BrotliClusterHistogramsLiteral | 4 | HistogramLiteral * |
+| (MemoryManager *,const HistogramLiteral *,const size_t,size_t,HistogramLiteral *,size_t *,uint32_t *) | | BrotliClusterHistogramsLiteral | 5 | size_t * |
+| (MemoryManager *,const HistogramLiteral *,const size_t,size_t,HistogramLiteral *,size_t *,uint32_t *) | | BrotliClusterHistogramsLiteral | 6 | uint32_t * |
+| (MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *) | | BrotliBuildMetaBlock | 0 | MemoryManager * |
+| (MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *) | | BrotliBuildMetaBlock | 1 | const uint8_t * |
+| (MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *) | | BrotliBuildMetaBlock | 2 | const size_t |
+| (MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *) | | BrotliBuildMetaBlock | 3 | const size_t |
+| (MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *) | | BrotliBuildMetaBlock | 4 | BrotliEncoderParams * |
+| (MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *) | | BrotliBuildMetaBlock | 5 | uint8_t |
+| (MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *) | | BrotliBuildMetaBlock | 6 | uint8_t |
+| (MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *) | | BrotliBuildMetaBlock | 7 | Command * |
+| (MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *) | | BrotliBuildMetaBlock | 8 | size_t |
+| (MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *) | | BrotliBuildMetaBlock | 9 | ContextType |
+| (MemoryManager *,const uint8_t *,const size_t,const size_t,BrotliEncoderParams *,uint8_t,uint8_t,Command *,size_t,ContextType,MetaBlockSplit *) | | BrotliBuildMetaBlock | 10 | MetaBlockSplit * |
+| (MemoryManager *,const uint8_t *,size_t) | | CreatePreparedDictionary | 0 | MemoryManager * |
+| (MemoryManager *,const uint8_t *,size_t) | | CreatePreparedDictionary | 1 | const uint8_t * |
+| (MemoryManager *,const uint8_t *,size_t) | | CreatePreparedDictionary | 2 | size_t |
+| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *) | | BrotliStoreMetaBlockFast | 0 | MemoryManager * |
+| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *) | | BrotliStoreMetaBlockFast | 1 | const uint8_t * |
+| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *) | | BrotliStoreMetaBlockFast | 2 | size_t |
+| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *) | | BrotliStoreMetaBlockFast | 3 | size_t |
+| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *) | | BrotliStoreMetaBlockFast | 4 | size_t |
+| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *) | | BrotliStoreMetaBlockFast | 5 | int |
+| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *) | | BrotliStoreMetaBlockFast | 6 | const BrotliEncoderParams * |
+| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *) | | BrotliStoreMetaBlockFast | 7 | const Command * |
+| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *) | | BrotliStoreMetaBlockFast | 8 | size_t |
+| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *) | | BrotliStoreMetaBlockFast | 9 | size_t * |
+| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *) | | BrotliStoreMetaBlockFast | 10 | uint8_t * |
+| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *) | | BrotliStoreMetaBlockTrivial | 0 | MemoryManager * |
+| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *) | | BrotliStoreMetaBlockTrivial | 1 | const uint8_t * |
+| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *) | | BrotliStoreMetaBlockTrivial | 2 | size_t |
+| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *) | | BrotliStoreMetaBlockTrivial | 3 | size_t |
+| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *) | | BrotliStoreMetaBlockTrivial | 4 | size_t |
+| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *) | | BrotliStoreMetaBlockTrivial | 5 | int |
+| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *) | | BrotliStoreMetaBlockTrivial | 6 | const BrotliEncoderParams * |
+| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *) | | BrotliStoreMetaBlockTrivial | 7 | const Command * |
+| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *) | | BrotliStoreMetaBlockTrivial | 8 | size_t |
+| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *) | | BrotliStoreMetaBlockTrivial | 9 | size_t * |
+| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,int,const BrotliEncoderParams *,const Command *,size_t,size_t *,uint8_t *) | | BrotliStoreMetaBlockTrivial | 10 | uint8_t * |
+| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *) | | BrotliStoreMetaBlock | 0 | MemoryManager * |
+| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *) | | BrotliStoreMetaBlock | 1 | const uint8_t * |
+| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *) | | BrotliStoreMetaBlock | 2 | size_t |
+| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *) | | BrotliStoreMetaBlock | 3 | size_t |
+| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *) | | BrotliStoreMetaBlock | 4 | size_t |
+| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *) | | BrotliStoreMetaBlock | 5 | uint8_t |
+| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *) | | BrotliStoreMetaBlock | 6 | uint8_t |
+| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *) | | BrotliStoreMetaBlock | 7 | int |
+| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *) | | BrotliStoreMetaBlock | 8 | const BrotliEncoderParams * |
+| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *) | | BrotliStoreMetaBlock | 9 | ContextType |
+| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *) | | BrotliStoreMetaBlock | 10 | const Command * |
+| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *) | | BrotliStoreMetaBlock | 11 | size_t |
+| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *) | | BrotliStoreMetaBlock | 12 | const MetaBlockSplit * |
+| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *) | | BrotliStoreMetaBlock | 13 | size_t * |
+| (MemoryManager *,const uint8_t *,size_t,size_t,size_t,uint8_t,uint8_t,int,const BrotliEncoderParams *,ContextType,const Command *,size_t,const MetaBlockSplit *,size_t *,uint8_t *) | | BrotliStoreMetaBlock | 14 | uint8_t * |
+| (MemoryManager *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,ContextLut,size_t,const uint32_t *,const Command *,size_t,MetaBlockSplit *) | | BrotliBuildMetaBlockGreedy | 0 | MemoryManager * |
+| (MemoryManager *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,ContextLut,size_t,const uint32_t *,const Command *,size_t,MetaBlockSplit *) | | BrotliBuildMetaBlockGreedy | 1 | const uint8_t * |
+| (MemoryManager *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,ContextLut,size_t,const uint32_t *,const Command *,size_t,MetaBlockSplit *) | | BrotliBuildMetaBlockGreedy | 2 | size_t |
+| (MemoryManager *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,ContextLut,size_t,const uint32_t *,const Command *,size_t,MetaBlockSplit *) | | BrotliBuildMetaBlockGreedy | 3 | size_t |
+| (MemoryManager *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,ContextLut,size_t,const uint32_t *,const Command *,size_t,MetaBlockSplit *) | | BrotliBuildMetaBlockGreedy | 4 | uint8_t |
+| (MemoryManager *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,ContextLut,size_t,const uint32_t *,const Command *,size_t,MetaBlockSplit *) | | BrotliBuildMetaBlockGreedy | 5 | uint8_t |
+| (MemoryManager *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,ContextLut,size_t,const uint32_t *,const Command *,size_t,MetaBlockSplit *) | | BrotliBuildMetaBlockGreedy | 6 | ContextLut |
+| (MemoryManager *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,ContextLut,size_t,const uint32_t *,const Command *,size_t,MetaBlockSplit *) | | BrotliBuildMetaBlockGreedy | 7 | size_t |
+| (MemoryManager *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,ContextLut,size_t,const uint32_t *,const Command *,size_t,MetaBlockSplit *) | | BrotliBuildMetaBlockGreedy | 8 | const uint32_t * |
+| (MemoryManager *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,ContextLut,size_t,const uint32_t *,const Command *,size_t,MetaBlockSplit *) | | BrotliBuildMetaBlockGreedy | 9 | const Command * |
+| (MemoryManager *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,ContextLut,size_t,const uint32_t *,const Command *,size_t,MetaBlockSplit *) | | BrotliBuildMetaBlockGreedy | 10 | size_t |
+| (MemoryManager *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,ContextLut,size_t,const uint32_t *,const Command *,size_t,MetaBlockSplit *) | | BrotliBuildMetaBlockGreedy | 11 | MetaBlockSplit * |
+| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateHqZopfliBackwardReferences | 0 | MemoryManager * |
+| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateHqZopfliBackwardReferences | 1 | size_t |
+| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateHqZopfliBackwardReferences | 2 | size_t |
+| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateHqZopfliBackwardReferences | 3 | const uint8_t * |
+| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateHqZopfliBackwardReferences | 4 | size_t |
+| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateHqZopfliBackwardReferences | 5 | ContextLut |
+| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateHqZopfliBackwardReferences | 6 | const BrotliEncoderParams * |
+| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateHqZopfliBackwardReferences | 7 | Hasher * |
+| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateHqZopfliBackwardReferences | 8 | int * |
+| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateHqZopfliBackwardReferences | 9 | size_t * |
+| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateHqZopfliBackwardReferences | 10 | Command * |
+| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateHqZopfliBackwardReferences | 11 | size_t * |
+| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateHqZopfliBackwardReferences | 12 | size_t * |
+| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateZopfliBackwardReferences | 0 | MemoryManager * |
+| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateZopfliBackwardReferences | 1 | size_t |
+| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateZopfliBackwardReferences | 2 | size_t |
+| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateZopfliBackwardReferences | 3 | const uint8_t * |
+| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateZopfliBackwardReferences | 4 | size_t |
+| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateZopfliBackwardReferences | 5 | ContextLut |
+| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateZopfliBackwardReferences | 6 | const BrotliEncoderParams * |
+| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateZopfliBackwardReferences | 7 | Hasher * |
+| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateZopfliBackwardReferences | 8 | int * |
+| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateZopfliBackwardReferences | 9 | size_t * |
+| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateZopfliBackwardReferences | 10 | Command * |
+| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateZopfliBackwardReferences | 11 | size_t * |
+| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateZopfliBackwardReferences | 12 | size_t * |
+| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,const int *,Hasher *,ZopfliNode *) | | BrotliZopfliComputeShortestPath | 0 | MemoryManager * |
+| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,const int *,Hasher *,ZopfliNode *) | | BrotliZopfliComputeShortestPath | 1 | size_t |
+| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,const int *,Hasher *,ZopfliNode *) | | BrotliZopfliComputeShortestPath | 2 | size_t |
+| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,const int *,Hasher *,ZopfliNode *) | | BrotliZopfliComputeShortestPath | 3 | const uint8_t * |
+| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,const int *,Hasher *,ZopfliNode *) | | BrotliZopfliComputeShortestPath | 4 | size_t |
+| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,const int *,Hasher *,ZopfliNode *) | | BrotliZopfliComputeShortestPath | 5 | ContextLut |
+| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,const int *,Hasher *,ZopfliNode *) | | BrotliZopfliComputeShortestPath | 6 | const BrotliEncoderParams * |
+| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,const int *,Hasher *,ZopfliNode *) | | BrotliZopfliComputeShortestPath | 7 | const int * |
+| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,const int *,Hasher *,ZopfliNode *) | | BrotliZopfliComputeShortestPath | 8 | Hasher * |
+| (MemoryManager *,size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,const int *,Hasher *,ZopfliNode *) | | BrotliZopfliComputeShortestPath | 9 | ZopfliNode * |
| (NAME_CONSTRAINTS *) | | NAME_CONSTRAINTS_free | 0 | NAME_CONSTRAINTS * |
| (NAMING_AUTHORITY *) | | NAMING_AUTHORITY_free | 0 | NAMING_AUTHORITY * |
| (NAMING_AUTHORITY **,const unsigned char **,long) | | d2i_NAMING_AUTHORITY | 0 | NAMING_AUTHORITY ** |
@@ -18012,6 +21698,19 @@ getSignatureParameterName
| (OTHERNAME **,const unsigned char **,long) | | d2i_OTHERNAME | 2 | long |
| (OTHERNAME *,OTHERNAME *) | | OTHERNAME_cmp | 0 | OTHERNAME * |
| (OTHERNAME *,OTHERNAME *) | | OTHERNAME_cmp | 1 | OTHERNAME * |
+| (OperationConfig *) | | new_getout | 0 | OperationConfig * |
+| (OperationConfig *,HttpReq,HttpReq *) | | SetHTTPrequest | 0 | OperationConfig * |
+| (OperationConfig *,HttpReq,HttpReq *) | | SetHTTPrequest | 1 | HttpReq |
+| (OperationConfig *,HttpReq,HttpReq *) | | SetHTTPrequest | 2 | HttpReq * |
+| (OperationConfig *,const char *,tool_mime **,tool_mime **,bool) | | formparse | 0 | OperationConfig * |
+| (OperationConfig *,const char *,tool_mime **,tool_mime **,bool) | | formparse | 1 | const char * |
+| (OperationConfig *,const char *,tool_mime **,tool_mime **,bool) | | formparse | 2 | tool_mime ** |
+| (OperationConfig *,const char *,tool_mime **,tool_mime **,bool) | | formparse | 3 | tool_mime ** |
+| (OperationConfig *,const char *,tool_mime **,tool_mime **,bool) | | formparse | 4 | bool |
+| (OperationConfig *,const char *const *,char **,const char *) | | proto2num | 0 | OperationConfig * |
+| (OperationConfig *,const char *const *,char **,const char *) | | proto2num | 1 | const char *const * |
+| (OperationConfig *,const char *const *,char **,const char *) | | proto2num | 2 | char ** |
+| (OperationConfig *,const char *const *,char **,const char *) | | proto2num | 3 | const char * |
| (PACKET *) | | ossl_quic_wire_decode_padding | 0 | PACKET * |
| (PACKET *,BIGNUM *) | | ossl_decode_der_integer | 0 | PACKET * |
| (PACKET *,BIGNUM *) | | ossl_decode_der_integer | 1 | BIGNUM * |
@@ -18471,6 +22170,8 @@ getSignatureParameterName
| (PROXY_POLICY **,const unsigned char **,long) | | d2i_PROXY_POLICY | 0 | PROXY_POLICY ** |
| (PROXY_POLICY **,const unsigned char **,long) | | d2i_PROXY_POLICY | 1 | const unsigned char ** |
| (PROXY_POLICY **,const unsigned char **,long) | | d2i_PROXY_POLICY | 2 | long |
+| (ProgressData *,OperationConfig *) | | progressbarinit | 0 | ProgressData * |
+| (ProgressData *,OperationConfig *) | | progressbarinit | 1 | OperationConfig * |
| (QLOG *,BIO *) | | ossl_qlog_set_sink_bio | 0 | QLOG * |
| (QLOG *,BIO *) | | ossl_qlog_set_sink_bio | 1 | BIO * |
| (QLOG *,OSSL_TIME) | | ossl_qlog_override_time | 0 | QLOG * |
@@ -19090,6 +22791,13 @@ getSignatureParameterName
| (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_saltlen | 1 | int |
| (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_trailerfield | 0 | RSA_PSS_PARAMS_30 * |
| (RSA_PSS_PARAMS_30 *,int) | | ossl_rsa_pss_params_30_set_trailerfield | 1 | int |
+| (SASL *,Curl_easy *,bool,saslprogress *) | | Curl_sasl_start | 0 | SASL * |
+| (SASL *,Curl_easy *,bool,saslprogress *) | | Curl_sasl_start | 1 | Curl_easy * |
+| (SASL *,Curl_easy *,bool,saslprogress *) | | Curl_sasl_start | 2 | bool |
+| (SASL *,Curl_easy *,bool,saslprogress *) | | Curl_sasl_start | 3 | saslprogress * |
+| (SASL *,Curl_easy *,const SASLproto *) | | Curl_sasl_init | 0 | SASL * |
+| (SASL *,Curl_easy *,const SASLproto *) | | Curl_sasl_init | 1 | Curl_easy * |
+| (SASL *,Curl_easy *,const SASLproto *) | | Curl_sasl_init | 2 | const SASLproto * |
| (SCRYPT_PARAMS *) | | SCRYPT_PARAMS_free | 0 | SCRYPT_PARAMS * |
| (SCRYPT_PARAMS **,const unsigned char **,long) | | d2i_SCRYPT_PARAMS | 0 | SCRYPT_PARAMS ** |
| (SCRYPT_PARAMS **,const unsigned char **,long) | | d2i_SCRYPT_PARAMS | 1 | const unsigned char ** |
@@ -20453,6 +24161,13 @@ getSignatureParameterName
| (SXNETID **,const unsigned char **,long) | | d2i_SXNETID | 0 | SXNETID ** |
| (SXNETID **,const unsigned char **,long) | | d2i_SXNETID | 1 | const unsigned char ** |
| (SXNETID **,const unsigned char **,long) | | d2i_SXNETID | 2 | long |
+| (SharedEncoderDictionary *) | | BrotliInitSharedEncoderDictionary | 0 | SharedEncoderDictionary * |
+| (SingleRequest *,Curl_easy *) | | Curl_req_hard_reset | 0 | SingleRequest * |
+| (SingleRequest *,Curl_easy *) | | Curl_req_hard_reset | 1 | Curl_easy * |
+| (SingleRequest *,Curl_easy *) | | Curl_req_soft_reset | 0 | SingleRequest * |
+| (SingleRequest *,Curl_easy *) | | Curl_req_soft_reset | 1 | Curl_easy * |
+| (SingleRequest *,Curl_easy *) | | Curl_req_start | 0 | SingleRequest * |
+| (SingleRequest *,Curl_easy *) | | Curl_req_start | 1 | Curl_easy * |
| (StrAccum *,sqlite3_str *,const char *,...) | | sqlite3_str_appendf | 0 | StrAccum * |
| (StrAccum *,sqlite3_str *,const char *,...) | | sqlite3_str_appendf | 1 | sqlite3_str * |
| (StrAccum *,sqlite3_str *,const char *,...) | | sqlite3_str_appendf | 2 | const char * |
@@ -20741,6 +24456,11 @@ getSignatureParameterName
| (UI_STRING *) | | UI_get_input_flags | 0 | UI_STRING * |
| (UI_STRING *) | | UI_get_result_string_length | 0 | UI_STRING * |
| (UI_STRING *) | | UI_get_string_type | 0 | UI_STRING * |
+| (URLGlob **) | | glob_cleanup | 0 | URLGlob ** |
+| (URLGlob **,char *,curl_off_t *,FILE *) | | glob_url | 0 | URLGlob ** |
+| (URLGlob **,char *,curl_off_t *,FILE *) | | glob_url | 1 | char * |
+| (URLGlob **,char *,curl_off_t *,FILE *) | | glob_url | 2 | curl_off_t * |
+| (URLGlob **,char *,curl_off_t *,FILE *) | | glob_url | 3 | FILE * |
| (USERNOTICE *) | | USERNOTICE_free | 0 | USERNOTICE * |
| (USERNOTICE **,const unsigned char **,long) | | d2i_USERNOTICE | 0 | USERNOTICE ** |
| (USERNOTICE **,const unsigned char **,long) | | d2i_USERNOTICE | 1 | const unsigned char ** |
@@ -20852,6 +24572,7 @@ getSignatureParameterName
| (WPACKET *,unsigned char *,size_t,size_t) | | WPACKET_init_static_len | 3 | size_t |
| (WPACKET *,unsigned int) | | WPACKET_set_flags | 0 | WPACKET * |
| (WPACKET *,unsigned int) | | WPACKET_set_flags | 1 | unsigned int |
+| (WildcardData **) | | Curl_wildcard_dtor | 0 | WildcardData ** |
| (X9_62_CHARACTERISTIC_TWO *) | | X9_62_CHARACTERISTIC_TWO_free | 0 | X9_62_CHARACTERISTIC_TWO * |
| (X9_62_PENTANOMIAL *) | | X9_62_PENTANOMIAL_free | 0 | X9_62_PENTANOMIAL * |
| (X509 *) | | OSSL_STORE_INFO_new_CERT | 0 | X509 * |
@@ -21526,22 +25247,160 @@ getSignatureParameterName
| (acttab *,int,int) | | acttab_action | 0 | acttab * |
| (acttab *,int,int) | | acttab_action | 1 | int |
| (acttab *,int,int) | | acttab_action | 2 | int |
+| (alpn_proto_buf *,const alpn_spec *) | | Curl_alpn_to_proto_buf | 0 | alpn_proto_buf * |
+| (alpn_proto_buf *,const alpn_spec *) | | Curl_alpn_to_proto_buf | 1 | const alpn_spec * |
+| (alpn_proto_buf *,const alpn_spec *) | | Curl_alpn_to_proto_str | 0 | alpn_proto_buf * |
+| (alpn_proto_buf *,const alpn_spec *) | | Curl_alpn_to_proto_str | 1 | const alpn_spec * |
+| (altsvcinfo **) | | Curl_altsvc_cleanup | 0 | altsvcinfo ** |
+| (altsvcinfo *,const long) | | Curl_altsvc_ctrl | 0 | altsvcinfo * |
+| (altsvcinfo *,const long) | | Curl_altsvc_ctrl | 1 | const long |
+| (brotli_alloc_func,brotli_free_func,void *) | | BrotliCreateManagedDictionary | 0 | brotli_alloc_func |
+| (brotli_alloc_func,brotli_free_func,void *) | | BrotliCreateManagedDictionary | 1 | brotli_free_func |
+| (brotli_alloc_func,brotli_free_func,void *) | | BrotliCreateManagedDictionary | 2 | void * |
+| (brotli_alloc_func,brotli_free_func,void *) | | BrotliDecoderCreateInstance | 0 | brotli_alloc_func |
+| (brotli_alloc_func,brotli_free_func,void *) | | BrotliDecoderCreateInstance | 1 | brotli_free_func |
+| (brotli_alloc_func,brotli_free_func,void *) | | BrotliDecoderCreateInstance | 2 | void * |
+| (brotli_alloc_func,brotli_free_func,void *) | | BrotliEncoderCreateInstance | 0 | brotli_alloc_func |
+| (brotli_alloc_func,brotli_free_func,void *) | | BrotliEncoderCreateInstance | 1 | brotli_free_func |
+| (brotli_alloc_func,brotli_free_func,void *) | | BrotliEncoderCreateInstance | 2 | void * |
+| (brotli_alloc_func,brotli_free_func,void *) | | BrotliSharedDictionaryCreateInstance | 0 | brotli_alloc_func |
+| (brotli_alloc_func,brotli_free_func,void *) | | BrotliSharedDictionaryCreateInstance | 1 | brotli_free_func |
+| (brotli_alloc_func,brotli_free_func,void *) | | BrotliSharedDictionaryCreateInstance | 2 | void * |
+| (bufc_pool *,size_t,size_t) | | Curl_bufcp_init | 0 | bufc_pool * |
+| (bufc_pool *,size_t,size_t) | | Curl_bufcp_init | 1 | size_t |
+| (bufc_pool *,size_t,size_t) | | Curl_bufcp_init | 2 | size_t |
+| (bufq *,Curl_bufq_reader *,void *,CURLcode *) | | Curl_bufq_slurp | 0 | bufq * |
+| (bufq *,Curl_bufq_reader *,void *,CURLcode *) | | Curl_bufq_slurp | 1 | Curl_bufq_reader * |
+| (bufq *,Curl_bufq_reader *,void *,CURLcode *) | | Curl_bufq_slurp | 2 | void * |
+| (bufq *,Curl_bufq_reader *,void *,CURLcode *) | | Curl_bufq_slurp | 3 | CURLcode * |
+| (bufq *,Curl_bufq_writer *,void *,CURLcode *) | | Curl_bufq_pass | 0 | bufq * |
+| (bufq *,Curl_bufq_writer *,void *,CURLcode *) | | Curl_bufq_pass | 1 | Curl_bufq_writer * |
+| (bufq *,Curl_bufq_writer *,void *,CURLcode *) | | Curl_bufq_pass | 2 | void * |
+| (bufq *,Curl_bufq_writer *,void *,CURLcode *) | | Curl_bufq_pass | 3 | CURLcode * |
+| (bufq *,bufc_pool *,size_t,int) | | Curl_bufq_initp | 0 | bufq * |
+| (bufq *,bufc_pool *,size_t,int) | | Curl_bufq_initp | 1 | bufc_pool * |
+| (bufq *,bufc_pool *,size_t,int) | | Curl_bufq_initp | 2 | size_t |
+| (bufq *,bufc_pool *,size_t,int) | | Curl_bufq_initp | 3 | int |
+| (bufq *,char *,size_t,size_t *) | | Curl_bufq_cread | 0 | bufq * |
+| (bufq *,char *,size_t,size_t *) | | Curl_bufq_cread | 1 | char * |
+| (bufq *,char *,size_t,size_t *) | | Curl_bufq_cread | 2 | size_t |
+| (bufq *,char *,size_t,size_t *) | | Curl_bufq_cread | 3 | size_t * |
+| (bufq *,const char *,size_t,size_t *) | | Curl_bufq_cwrite | 0 | bufq * |
+| (bufq *,const char *,size_t,size_t *) | | Curl_bufq_cwrite | 1 | const char * |
+| (bufq *,const char *,size_t,size_t *) | | Curl_bufq_cwrite | 2 | size_t |
+| (bufq *,const char *,size_t,size_t *) | | Curl_bufq_cwrite | 3 | size_t * |
+| (bufq *,const unsigned char **,size_t *) | | Curl_bufq_peek | 0 | bufq * |
+| (bufq *,const unsigned char **,size_t *) | | Curl_bufq_peek | 1 | const unsigned char ** |
+| (bufq *,const unsigned char **,size_t *) | | Curl_bufq_peek | 2 | size_t * |
+| (bufq *,const unsigned char *,size_t,CURLcode *) | | Curl_bufq_write | 0 | bufq * |
+| (bufq *,const unsigned char *,size_t,CURLcode *) | | Curl_bufq_write | 1 | const unsigned char * |
+| (bufq *,const unsigned char *,size_t,CURLcode *) | | Curl_bufq_write | 2 | size_t |
+| (bufq *,const unsigned char *,size_t,CURLcode *) | | Curl_bufq_write | 3 | CURLcode * |
+| (bufq *,const unsigned char *,size_t,Curl_bufq_writer *,void *,CURLcode *) | | Curl_bufq_write_pass | 0 | bufq * |
+| (bufq *,const unsigned char *,size_t,Curl_bufq_writer *,void *,CURLcode *) | | Curl_bufq_write_pass | 1 | const unsigned char * |
+| (bufq *,const unsigned char *,size_t,Curl_bufq_writer *,void *,CURLcode *) | | Curl_bufq_write_pass | 2 | size_t |
+| (bufq *,const unsigned char *,size_t,Curl_bufq_writer *,void *,CURLcode *) | | Curl_bufq_write_pass | 3 | Curl_bufq_writer * |
+| (bufq *,const unsigned char *,size_t,Curl_bufq_writer *,void *,CURLcode *) | | Curl_bufq_write_pass | 4 | void * |
+| (bufq *,const unsigned char *,size_t,Curl_bufq_writer *,void *,CURLcode *) | | Curl_bufq_write_pass | 5 | CURLcode * |
+| (bufq *,size_t) | | Curl_bufq_skip | 0 | bufq * |
+| (bufq *,size_t) | | Curl_bufq_skip | 1 | size_t |
+| (bufq *,size_t) | | Curl_bufq_unwrite | 0 | bufq * |
+| (bufq *,size_t) | | Curl_bufq_unwrite | 1 | size_t |
+| (bufq *,size_t,Curl_bufq_reader *,void *,CURLcode *) | | Curl_bufq_sipn | 0 | bufq * |
+| (bufq *,size_t,Curl_bufq_reader *,void *,CURLcode *) | | Curl_bufq_sipn | 1 | size_t |
+| (bufq *,size_t,Curl_bufq_reader *,void *,CURLcode *) | | Curl_bufq_sipn | 2 | Curl_bufq_reader * |
+| (bufq *,size_t,Curl_bufq_reader *,void *,CURLcode *) | | Curl_bufq_sipn | 3 | void * |
+| (bufq *,size_t,Curl_bufq_reader *,void *,CURLcode *) | | Curl_bufq_sipn | 4 | CURLcode * |
+| (bufq *,size_t,const unsigned char **,size_t *) | | Curl_bufq_peek_at | 0 | bufq * |
+| (bufq *,size_t,const unsigned char **,size_t *) | | Curl_bufq_peek_at | 1 | size_t |
+| (bufq *,size_t,const unsigned char **,size_t *) | | Curl_bufq_peek_at | 2 | const unsigned char ** |
+| (bufq *,size_t,const unsigned char **,size_t *) | | Curl_bufq_peek_at | 3 | size_t * |
+| (bufq *,size_t,size_t) | | Curl_bufq_init | 0 | bufq * |
+| (bufq *,size_t,size_t) | | Curl_bufq_init | 1 | size_t |
+| (bufq *,size_t,size_t) | | Curl_bufq_init | 2 | size_t |
+| (bufq *,size_t,size_t,int) | | Curl_bufq_init2 | 0 | bufq * |
+| (bufq *,size_t,size_t,int) | | Curl_bufq_init2 | 1 | size_t |
+| (bufq *,size_t,size_t,int) | | Curl_bufq_init2 | 2 | size_t |
+| (bufq *,size_t,size_t,int) | | Curl_bufq_init2 | 3 | int |
+| (bufq *,unsigned char *,size_t,CURLcode *) | | Curl_bufq_read | 0 | bufq * |
+| (bufq *,unsigned char *,size_t,CURLcode *) | | Curl_bufq_read | 1 | unsigned char * |
+| (bufq *,unsigned char *,size_t,CURLcode *) | | Curl_bufq_read | 2 | size_t |
+| (bufq *,unsigned char *,size_t,CURLcode *) | | Curl_bufq_read | 3 | CURLcode * |
+| (bufref *,const void *,size_t) | | Curl_bufref_memdup | 0 | bufref * |
+| (bufref *,const void *,size_t) | | Curl_bufref_memdup | 1 | const void * |
+| (bufref *,const void *,size_t) | | Curl_bufref_memdup | 2 | size_t |
+| (bufref *,const void *,size_t,..(*)(..)) | | Curl_bufref_set | 0 | bufref * |
+| (bufref *,const void *,size_t,..(*)(..)) | | Curl_bufref_set | 1 | const void * |
+| (bufref *,const void *,size_t,..(*)(..)) | | Curl_bufref_set | 2 | size_t |
+| (bufref *,const void *,size_t,..(*)(..)) | | Curl_bufref_set | 3 | ..(*)(..) |
+| (chacha_ctx *,const u8 *,const u8 *) | | chacha_ivsetup | 0 | chacha_ctx * |
+| (chacha_ctx *,const u8 *,const u8 *) | | chacha_ivsetup | 1 | const u8 * |
+| (chacha_ctx *,const u8 *,const u8 *) | | chacha_ivsetup | 2 | const u8 * |
+| (chacha_ctx *,const u8 *,u8 *,u32) | | chacha_encrypt_bytes | 0 | chacha_ctx * |
+| (chacha_ctx *,const u8 *,u8 *,u32) | | chacha_encrypt_bytes | 1 | const u8 * |
+| (chacha_ctx *,const u8 *,u8 *,u32) | | chacha_encrypt_bytes | 2 | u8 * |
+| (chacha_ctx *,const u8 *,u8 *,u32) | | chacha_encrypt_bytes | 3 | u32 |
+| (chacha_ctx *,const u8 *,u32) | | chacha_keysetup | 0 | chacha_ctx * |
+| (chacha_ctx *,const u8 *,u32) | | chacha_keysetup | 1 | const u8 * |
+| (chacha_ctx *,const u8 *,u32) | | chacha_keysetup | 2 | u32 |
+| (chachapoly_ctx *,const u_char *,u_int) | | chachapoly_init | 0 | chachapoly_ctx * |
+| (chachapoly_ctx *,const u_char *,u_int) | | chachapoly_init | 1 | const u_char * |
+| (chachapoly_ctx *,const u_char *,u_int) | | chachapoly_init | 2 | u_int |
+| (chachapoly_ctx *,u_int,u_char *,const u_char *,u_int,u_int,int) | | chachapoly_crypt | 0 | chachapoly_ctx * |
+| (chachapoly_ctx *,u_int,u_char *,const u_char *,u_int,u_int,int) | | chachapoly_crypt | 1 | u_int |
+| (chachapoly_ctx *,u_int,u_char *,const u_char *,u_int,u_int,int) | | chachapoly_crypt | 2 | u_char * |
+| (chachapoly_ctx *,u_int,u_char *,const u_char *,u_int,u_int,int) | | chachapoly_crypt | 3 | const u_char * |
+| (chachapoly_ctx *,u_int,u_char *,const u_char *,u_int,u_int,int) | | chachapoly_crypt | 4 | u_int |
+| (chachapoly_ctx *,u_int,u_char *,const u_char *,u_int,u_int,int) | | chachapoly_crypt | 5 | u_int |
+| (chachapoly_ctx *,u_int,u_char *,const u_char *,u_int,u_int,int) | | chachapoly_crypt | 6 | int |
+| (chachapoly_ctx *,unsigned int *,unsigned int,const unsigned char *,unsigned int) | | chachapoly_get_length | 0 | chachapoly_ctx * |
+| (chachapoly_ctx *,unsigned int *,unsigned int,const unsigned char *,unsigned int) | | chachapoly_get_length | 1 | unsigned int * |
+| (chachapoly_ctx *,unsigned int *,unsigned int,const unsigned char *,unsigned int) | | chachapoly_get_length | 2 | unsigned int |
+| (chachapoly_ctx *,unsigned int *,unsigned int,const unsigned char *,unsigned int) | | chachapoly_get_length | 3 | const unsigned char * |
+| (chachapoly_ctx *,unsigned int *,unsigned int,const unsigned char *,unsigned int) | | chachapoly_get_length | 4 | unsigned int |
| (char *) | | SRP_VBASE_new | 0 | char * |
| (char *) | | defossilize | 0 | char * |
| (char *) | | make_uppercase | 0 | char * |
| (char *) | | next_item | 0 | char * |
| (char *) | CStringT | CStringT | 0 | char * |
+| (char **) | | Curl_str_newline | 0 | char ** |
+| (char **) | | Curl_str_singlespace | 0 | char ** |
| (char **) | | OCSP_accept_responses_new | 0 | char ** |
| (char **) | | sqlite3_free_table | 0 | char ** |
+| (char **,Curl_str *,const size_t) | | Curl_str_quotedword | 0 | char ** |
+| (char **,Curl_str *,const size_t) | | Curl_str_quotedword | 1 | Curl_str * |
+| (char **,Curl_str *,const size_t) | | Curl_str_quotedword | 2 | const size_t |
+| (char **,Curl_str *,const size_t) | | Curl_str_word | 0 | char ** |
+| (char **,Curl_str *,const size_t) | | Curl_str_word | 1 | Curl_str * |
+| (char **,Curl_str *,const size_t) | | Curl_str_word | 2 | const size_t |
+| (char **,Curl_str *,const size_t,char) | | Curl_str_until | 0 | char ** |
+| (char **,Curl_str *,const size_t,char) | | Curl_str_until | 1 | Curl_str * |
+| (char **,Curl_str *,const size_t,char) | | Curl_str_until | 2 | const size_t |
+| (char **,Curl_str *,const size_t,char) | | Curl_str_until | 3 | char |
+| (char **,URLGlob *) | | glob_next_url | 0 | char ** |
+| (char **,URLGlob *) | | glob_next_url | 1 | URLGlob * |
+| (char **,char *,URLGlob *) | | glob_match_url | 0 | char ** |
+| (char **,char *,URLGlob *) | | glob_match_url | 1 | char * |
+| (char **,char *,URLGlob *) | | glob_match_url | 2 | URLGlob * |
+| (char **,char) | | Curl_str_single | 0 | char ** |
+| (char **,char) | | Curl_str_single | 1 | char |
+| (char **,const char *) | | Curl_setstropt | 0 | char ** |
+| (char **,const char *) | | Curl_setstropt | 1 | const char * |
| (char **,s_options *,FILE *) | | OptInit | 0 | char ** |
| (char **,s_options *,FILE *) | | OptInit | 1 | s_options * |
| (char **,s_options *,FILE *) | | OptInit | 2 | FILE * |
+| (char **,size_t *,size_t) | | Curl_str_number | 0 | char ** |
+| (char **,size_t *,size_t) | | Curl_str_number | 1 | size_t * |
+| (char **,size_t *,size_t) | | Curl_str_number | 2 | size_t |
| (char *,EVP_CIPHER_INFO *) | | PEM_get_EVP_CIPHER_INFO | 0 | char * |
| (char *,EVP_CIPHER_INFO *) | | PEM_get_EVP_CIPHER_INFO | 1 | EVP_CIPHER_INFO * |
| (char *,FILE *,FILE *,int *) | | tplt_xfer | 0 | char * |
| (char *,FILE *,FILE *,int *) | | tplt_xfer | 1 | FILE * |
| (char *,FILE *,FILE *,int *) | | tplt_xfer | 2 | FILE * |
| (char *,FILE *,FILE *,int *) | | tplt_xfer | 3 | int * |
+| (char *,const char *,char **) | | uv__strtok | 0 | char * |
+| (char *,const char *,char **) | | uv__strtok | 1 | const char * |
+| (char *,const char *,char **) | | uv__strtok | 2 | char ** |
| (char *,const char *,const char *,X509_VERIFY_PARAM *) | | load_certs_multifile | 0 | char * |
| (char *,const char *,const char *,X509_VERIFY_PARAM *) | | load_certs_multifile | 1 | const char * |
| (char *,const char *,const char *,X509_VERIFY_PARAM *) | | load_certs_multifile | 2 | const char * |
@@ -21554,12 +25413,26 @@ getSignatureParameterName
| (char *,const char *,int,const char *) | | PEM_dek_info | 1 | const char * |
| (char *,const char *,int,const char *) | | PEM_dek_info | 2 | int |
| (char *,const char *,int,const char *) | | PEM_dek_info | 3 | const char * |
+| (char *,const char *,size_t) | | Curl_strntolower | 0 | char * |
+| (char *,const char *,size_t) | | Curl_strntolower | 1 | const char * |
+| (char *,const char *,size_t) | | Curl_strntolower | 2 | size_t |
+| (char *,const char *,size_t) | | Curl_strntoupper | 0 | char * |
+| (char *,const char *,size_t) | | Curl_strntoupper | 1 | const char * |
+| (char *,const char *,size_t) | | Curl_strntoupper | 2 | size_t |
| (char *,const char *,size_t) | | OPENSSL_strlcat | 0 | char * |
| (char *,const char *,size_t) | | OPENSSL_strlcat | 1 | const char * |
| (char *,const char *,size_t) | | OPENSSL_strlcat | 2 | size_t |
| (char *,const char *,size_t) | | OPENSSL_strlcpy | 0 | char * |
| (char *,const char *,size_t) | | OPENSSL_strlcpy | 1 | const char * |
| (char *,const char *,size_t) | | OPENSSL_strlcpy | 2 | size_t |
+| (char *,const char *,size_t) | | uv__strscpy | 0 | char * |
+| (char *,const char *,size_t) | | uv__strscpy | 1 | const char * |
+| (char *,const char *,size_t) | | uv__strscpy | 2 | size_t |
+| (char *,const char *,va_list) | | curl_mvsprintf | 0 | char * |
+| (char *,const char *,va_list) | | curl_mvsprintf | 1 | const char * |
+| (char *,const char *,va_list) | | curl_mvsprintf | 2 | va_list |
+| (char *,int) | | Curl_str2addr | 0 | char * |
+| (char *,int) | | Curl_str2addr | 1 | int |
| (char *,int) | | PEM_proc_type | 0 | char * |
| (char *,int) | | PEM_proc_type | 1 | int |
| (char *,int,const ASN1_OBJECT *) | | i2t_ASN1_OBJECT | 0 | char * |
@@ -21581,8 +25454,20 @@ getSignatureParameterName
| (char *,int,int,void *) | | ossl_pw_pvk_password | 1 | int |
| (char *,int,int,void *) | | ossl_pw_pvk_password | 2 | int |
| (char *,int,int,void *) | | ossl_pw_pvk_password | 3 | void * |
+| (char *,size_t *) | | uv_cwd | 0 | char * |
+| (char *,size_t *) | | uv_cwd | 1 | size_t * |
+| (char *,size_t *) | | uv_exepath | 0 | char * |
+| (char *,size_t *) | | uv_exepath | 1 | size_t * |
+| (char *,size_t *) | | uv_os_gethostname | 0 | char * |
+| (char *,size_t *) | | uv_os_gethostname | 1 | size_t * |
+| (char *,size_t *) | | uv_os_homedir | 0 | char * |
+| (char *,size_t *) | | uv_os_homedir | 1 | size_t * |
+| (char *,size_t *) | | uv_os_tmpdir | 0 | char * |
+| (char *,size_t *) | | uv_os_tmpdir | 1 | size_t * |
| (char *,size_t) | | RAND_file_name | 0 | char * |
| (char *,size_t) | | RAND_file_name | 1 | size_t |
+| (char *,size_t) | | plain_method | 0 | char * |
+| (char *,size_t) | | plain_method | 1 | size_t |
| (char *,size_t,const char *,...) | | BIO_snprintf | 0 | char * |
| (char *,size_t,const char *,...) | | BIO_snprintf | 1 | size_t |
| (char *,size_t,const char *,...) | | BIO_snprintf | 2 | const char * |
@@ -21591,6 +25476,10 @@ getSignatureParameterName
| (char *,size_t,const char *,va_list) | | BIO_vsnprintf | 1 | size_t |
| (char *,size_t,const char *,va_list) | | BIO_vsnprintf | 2 | const char * |
| (char *,size_t,const char *,va_list) | | BIO_vsnprintf | 3 | va_list |
+| (char *,size_t,const char *,va_list) | | curl_mvsnprintf | 0 | char * |
+| (char *,size_t,const char *,va_list) | | curl_mvsnprintf | 1 | size_t |
+| (char *,size_t,const char *,va_list) | | curl_mvsnprintf | 2 | const char * |
+| (char *,size_t,const char *,va_list) | | curl_mvsnprintf | 3 | va_list |
| (char *,size_t,size_t *,const OSSL_PARAM[],int,ossl_passphrase_data_st *) | | ossl_pw_get_passphrase | 0 | char * |
| (char *,size_t,size_t *,const OSSL_PARAM[],int,ossl_passphrase_data_st *) | | ossl_pw_get_passphrase | 1 | size_t |
| (char *,size_t,size_t *,const OSSL_PARAM[],int,ossl_passphrase_data_st *) | | ossl_pw_get_passphrase | 2 | size_t * |
@@ -21613,10 +25502,35 @@ getSignatureParameterName
| (char *,size_t,size_t *,const unsigned char *,size_t,const char) | | OPENSSL_buf2hexstr_ex | 3 | const unsigned char * |
| (char *,size_t,size_t *,const unsigned char *,size_t,const char) | | OPENSSL_buf2hexstr_ex | 4 | size_t |
| (char *,size_t,size_t *,const unsigned char *,size_t,const char) | | OPENSSL_buf2hexstr_ex | 5 | const char |
+| (char *,size_t,size_t,void *) | | Curl_ftp_parselist | 0 | char * |
+| (char *,size_t,size_t,void *) | | Curl_ftp_parselist | 1 | size_t |
+| (char *,size_t,size_t,void *) | | Curl_ftp_parselist | 2 | size_t |
+| (char *,size_t,size_t,void *) | | Curl_ftp_parselist | 3 | void * |
+| (char *,size_t,size_t,void *) | | Curl_mime_read | 0 | char * |
+| (char *,size_t,size_t,void *) | | Curl_mime_read | 1 | size_t |
+| (char *,size_t,size_t,void *) | | Curl_mime_read | 2 | size_t |
+| (char *,size_t,size_t,void *) | | Curl_mime_read | 3 | void * |
+| (char *,size_t,size_t,void *) | | tool_header_cb | 0 | char * |
+| (char *,size_t,size_t,void *) | | tool_header_cb | 1 | size_t |
+| (char *,size_t,size_t,void *) | | tool_header_cb | 2 | size_t |
+| (char *,size_t,size_t,void *) | | tool_header_cb | 3 | void * |
+| (char *,size_t,size_t,void *) | | tool_mime_stdin_read | 0 | char * |
+| (char *,size_t,size_t,void *) | | tool_mime_stdin_read | 1 | size_t |
+| (char *,size_t,size_t,void *) | | tool_mime_stdin_read | 2 | size_t |
+| (char *,size_t,size_t,void *) | | tool_mime_stdin_read | 3 | void * |
+| (char *,size_t,size_t,void *) | | tool_read_cb | 0 | char * |
+| (char *,size_t,size_t,void *) | | tool_read_cb | 1 | size_t |
+| (char *,size_t,size_t,void *) | | tool_read_cb | 2 | size_t |
+| (char *,size_t,size_t,void *) | | tool_read_cb | 3 | void * |
| (char *,uint8_t) | | ossl_to_hex | 0 | char * |
| (char *,uint8_t) | | ossl_to_hex | 1 | uint8_t |
| (char *,unsigned int) | | utf8_fromunicode | 0 | char * |
| (char *,unsigned int) | | utf8_fromunicode | 1 | unsigned int |
+| (char *,unsigned int) | | uv_buf_init | 0 | char * |
+| (char *,unsigned int) | | uv_buf_init | 1 | unsigned int |
+| (char) | | Curl_raw_tolower | 0 | char |
+| (char) | | Curl_raw_toupper | 0 | char |
+| (char) | | findshortopt | 0 | char |
| (char) | | operator+= | 0 | char |
| (char) | CComBSTR | Append | 0 | char |
| (char) | CSimpleStringT | operator+= | 0 | char |
@@ -21624,11 +25538,27 @@ getSignatureParameterName
| (char,const CStringT &) | | operator+ | 1 | const CStringT & |
| (char,int) | CStringT | CStringT | 0 | char |
| (char,int) | CStringT | CStringT | 1 | int |
+| (codetype,unsigned short *,unsigned int,code **,unsigned int *,unsigned short *) | | inflate_table | 0 | codetype |
+| (codetype,unsigned short *,unsigned int,code **,unsigned int *,unsigned short *) | | inflate_table | 1 | unsigned short * |
+| (codetype,unsigned short *,unsigned int,code **,unsigned int *,unsigned short *) | | inflate_table | 2 | unsigned int |
+| (codetype,unsigned short *,unsigned int,code **,unsigned int *,unsigned short *) | | inflate_table | 3 | code ** |
+| (codetype,unsigned short *,unsigned int,code **,unsigned int *,unsigned short *) | | inflate_table | 4 | unsigned int * |
+| (codetype,unsigned short *,unsigned int,code **,unsigned int *,unsigned short *) | | inflate_table | 5 | unsigned short * |
| (config *) | | State_find | 0 | config * |
| (config *) | | confighash | 0 | config * |
| (config *) | | statehash | 0 | config * |
| (config *,config *) | | statecmp | 0 | config * |
| (config *,config *) | | statecmp | 1 | config * |
+| (connectdata *,Curl_easy *,curltime *) | | Curl_conn_seems_dead | 0 | connectdata * |
+| (connectdata *,Curl_easy *,curltime *) | | Curl_conn_seems_dead | 1 | Curl_easy * |
+| (connectdata *,Curl_easy *,curltime *) | | Curl_conn_seems_dead | 2 | curltime * |
+| (connectdata *,curltime *) | | Curl_conn_shutdown_timeleft | 0 | connectdata * |
+| (connectdata *,curltime *) | | Curl_conn_shutdown_timeleft | 1 | curltime * |
+| (connectdata *,int) | | Curl_conn_is_ssl | 0 | connectdata * |
+| (connectdata *,int) | | Curl_conn_is_ssl | 1 | int |
+| (connectdata *,int,curltime *) | | Curl_shutdown_timeleft | 0 | connectdata * |
+| (connectdata *,int,curltime *) | | Curl_shutdown_timeleft | 1 | int |
+| (connectdata *,int,curltime *) | | Curl_shutdown_timeleft | 2 | curltime * |
| (const ACCESS_DESCRIPTION *,unsigned char **) | | i2d_ACCESS_DESCRIPTION | 0 | const ACCESS_DESCRIPTION * |
| (const ACCESS_DESCRIPTION *,unsigned char **) | | i2d_ACCESS_DESCRIPTION | 1 | unsigned char ** |
| (const ADMISSIONS *) | | ADMISSIONS_get0_admissionAuthority | 0 | const ADMISSIONS * |
@@ -22067,6 +25997,14 @@ getSignatureParameterName
| (const BIO_METHOD *) | | BIO_meth_get_write_ex | 0 | const BIO_METHOD * |
| (const BIO_METHOD *) | | BIO_new | 0 | const BIO_METHOD * |
| (const BN_BLINDING *) | | BN_BLINDING_get_flags | 0 | const BN_BLINDING * |
+| (const BrotliDecoderState *,const BrotliDecoderStateInternal *) | | BrotliDecoderGetErrorCode | 0 | const BrotliDecoderState * |
+| (const BrotliDecoderState *,const BrotliDecoderStateInternal *) | | BrotliDecoderGetErrorCode | 1 | const BrotliDecoderStateInternal * |
+| (const BrotliEncoderDictionary *,const uint8_t *,size_t,size_t,uint32_t *) | | BrotliFindAllStaticDictionaryMatches | 0 | const BrotliEncoderDictionary * |
+| (const BrotliEncoderDictionary *,const uint8_t *,size_t,size_t,uint32_t *) | | BrotliFindAllStaticDictionaryMatches | 1 | const uint8_t * |
+| (const BrotliEncoderDictionary *,const uint8_t *,size_t,size_t,uint32_t *) | | BrotliFindAllStaticDictionaryMatches | 2 | size_t |
+| (const BrotliEncoderDictionary *,const uint8_t *,size_t,size_t,uint32_t *) | | BrotliFindAllStaticDictionaryMatches | 3 | size_t |
+| (const BrotliEncoderDictionary *,const uint8_t *,size_t,size_t,uint32_t *) | | BrotliFindAllStaticDictionaryMatches | 4 | uint32_t * |
+| (const BrotliEncoderPreparedDictionary *) | | BrotliEncoderGetPreparedDictionarySize | 0 | const BrotliEncoderPreparedDictionary * |
| (const CComBSTR &) | CComBSTR | Append | 0 | const CComBSTR & |
| (const CComBSTR &) | CComBSTR | CComBSTR | 0 | const CComBSTR & |
| (const CComSafeArray &) | CComSafeArray | CComSafeArray | 0 | const CComSafeArray & |
@@ -22148,6 +26086,28 @@ getSignatureParameterName
| (const CT_POLICY_EVAL_CTX *) | | CT_POLICY_EVAL_CTX_get0_issuer | 0 | const CT_POLICY_EVAL_CTX * |
| (const CT_POLICY_EVAL_CTX *) | | CT_POLICY_EVAL_CTX_get0_log_store | 0 | const CT_POLICY_EVAL_CTX * |
| (const CT_POLICY_EVAL_CTX *) | | CT_POLICY_EVAL_CTX_get_time | 0 | const CT_POLICY_EVAL_CTX * |
+| (const CURLU *) | | curl_url_dup | 0 | const CURLU * |
+| (const CURLU *,CURLUPart,char **,unsigned int) | | curl_url_get | 0 | const CURLU * |
+| (const CURLU *,CURLUPart,char **,unsigned int) | | curl_url_get | 1 | CURLUPart |
+| (const CURLU *,CURLUPart,char **,unsigned int) | | curl_url_get | 2 | char ** |
+| (const CURLU *,CURLUPart,char **,unsigned int) | | curl_url_get | 3 | unsigned int |
+| (const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *) | | BrotliBuildHistogramsWithContext | 0 | const Command * |
+| (const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *) | | BrotliBuildHistogramsWithContext | 1 | const size_t |
+| (const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *) | | BrotliBuildHistogramsWithContext | 2 | const BlockSplit * |
+| (const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *) | | BrotliBuildHistogramsWithContext | 3 | const BlockSplit * |
+| (const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *) | | BrotliBuildHistogramsWithContext | 4 | const BlockSplit * |
+| (const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *) | | BrotliBuildHistogramsWithContext | 5 | const uint8_t * |
+| (const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *) | | BrotliBuildHistogramsWithContext | 6 | size_t |
+| (const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *) | | BrotliBuildHistogramsWithContext | 7 | size_t |
+| (const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *) | | BrotliBuildHistogramsWithContext | 8 | uint8_t |
+| (const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *) | | BrotliBuildHistogramsWithContext | 9 | uint8_t |
+| (const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *) | | BrotliBuildHistogramsWithContext | 10 | const ContextType * |
+| (const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *) | | BrotliBuildHistogramsWithContext | 11 | HistogramLiteral * |
+| (const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *) | | BrotliBuildHistogramsWithContext | 12 | HistogramCommand * |
+| (const Command *,const size_t,const BlockSplit *,const BlockSplit *,const BlockSplit *,const uint8_t *,size_t,size_t,uint8_t,uint8_t,const ContextType *,HistogramLiteral *,HistogramCommand *,HistogramDistance *) | | BrotliBuildHistogramsWithContext | 13 | HistogramDistance * |
+| (const Curl_easy *,const connectdata *,int) | | Curl_conn_is_http2 | 0 | const Curl_easy * |
+| (const Curl_easy *,const connectdata *,int) | | Curl_conn_is_http2 | 1 | const connectdata * |
+| (const Curl_easy *,const connectdata *,int) | | Curl_conn_is_http2 | 2 | int |
| (const DH *) | | DH_get0_g | 0 | const DH * |
| (const DH *) | | DH_get0_p | 0 | const DH * |
| (const DH *) | | DH_get0_priv_key | 0 | const DH * |
@@ -23041,7 +27001,73 @@ getSignatureParameterName
| (const GOST_KX_MESSAGE *,unsigned char **) | | i2d_GOST_KX_MESSAGE | 1 | unsigned char ** |
| (const HMAC_CTX *) | | HMAC_CTX_get_md | 0 | const HMAC_CTX * |
| (const HMAC_CTX *) | | HMAC_size | 0 | const HMAC_CTX * |
+| (const HMAC_params *,const unsigned char *,const size_t,const unsigned char *,const size_t,unsigned char *) | | Curl_hmacit | 0 | const HMAC_params * |
+| (const HMAC_params *,const unsigned char *,const size_t,const unsigned char *,const size_t,unsigned char *) | | Curl_hmacit | 1 | const unsigned char * |
+| (const HMAC_params *,const unsigned char *,const size_t,const unsigned char *,const size_t,unsigned char *) | | Curl_hmacit | 2 | const size_t |
+| (const HMAC_params *,const unsigned char *,const size_t,const unsigned char *,const size_t,unsigned char *) | | Curl_hmacit | 3 | const unsigned char * |
+| (const HMAC_params *,const unsigned char *,const size_t,const unsigned char *,const size_t,unsigned char *) | | Curl_hmacit | 4 | const size_t |
+| (const HMAC_params *,const unsigned char *,const size_t,const unsigned char *,const size_t,unsigned char *) | | Curl_hmacit | 5 | unsigned char * |
+| (const HMAC_params *,const unsigned char *,unsigned int) | | Curl_HMAC_init | 0 | const HMAC_params * |
+| (const HMAC_params *,const unsigned char *,unsigned int) | | Curl_HMAC_init | 1 | const unsigned char * |
+| (const HMAC_params *,const unsigned char *,unsigned int) | | Curl_HMAC_init | 2 | unsigned int |
| (const HT_CONFIG *) | | ossl_ht_new | 0 | const HT_CONFIG * |
+| (const HistogramCommand *) | | BrotliPopulationCostCommand | 0 | const HistogramCommand * |
+| (const HistogramCommand *,HistogramCommand *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *) | | BrotliCompareAndPushToQueueCommand | 0 | const HistogramCommand * |
+| (const HistogramCommand *,HistogramCommand *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *) | | BrotliCompareAndPushToQueueCommand | 1 | HistogramCommand * |
+| (const HistogramCommand *,HistogramCommand *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *) | | BrotliCompareAndPushToQueueCommand | 2 | const uint32_t * |
+| (const HistogramCommand *,HistogramCommand *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *) | | BrotliCompareAndPushToQueueCommand | 3 | uint32_t |
+| (const HistogramCommand *,HistogramCommand *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *) | | BrotliCompareAndPushToQueueCommand | 4 | uint32_t |
+| (const HistogramCommand *,HistogramCommand *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *) | | BrotliCompareAndPushToQueueCommand | 5 | size_t |
+| (const HistogramCommand *,HistogramCommand *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *) | | BrotliCompareAndPushToQueueCommand | 6 | HistogramPair * |
+| (const HistogramCommand *,HistogramCommand *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *) | | BrotliCompareAndPushToQueueCommand | 7 | size_t * |
+| (const HistogramCommand *,const HistogramCommand *,HistogramCommand *) | | BrotliHistogramBitCostDistanceCommand | 0 | const HistogramCommand * |
+| (const HistogramCommand *,const HistogramCommand *,HistogramCommand *) | | BrotliHistogramBitCostDistanceCommand | 1 | const HistogramCommand * |
+| (const HistogramCommand *,const HistogramCommand *,HistogramCommand *) | | BrotliHistogramBitCostDistanceCommand | 2 | HistogramCommand * |
+| (const HistogramCommand *,size_t,const uint32_t *,size_t,HistogramCommand *,HistogramCommand *,uint32_t *) | | BrotliHistogramRemapCommand | 0 | const HistogramCommand * |
+| (const HistogramCommand *,size_t,const uint32_t *,size_t,HistogramCommand *,HistogramCommand *,uint32_t *) | | BrotliHistogramRemapCommand | 1 | size_t |
+| (const HistogramCommand *,size_t,const uint32_t *,size_t,HistogramCommand *,HistogramCommand *,uint32_t *) | | BrotliHistogramRemapCommand | 2 | const uint32_t * |
+| (const HistogramCommand *,size_t,const uint32_t *,size_t,HistogramCommand *,HistogramCommand *,uint32_t *) | | BrotliHistogramRemapCommand | 3 | size_t |
+| (const HistogramCommand *,size_t,const uint32_t *,size_t,HistogramCommand *,HistogramCommand *,uint32_t *) | | BrotliHistogramRemapCommand | 4 | HistogramCommand * |
+| (const HistogramCommand *,size_t,const uint32_t *,size_t,HistogramCommand *,HistogramCommand *,uint32_t *) | | BrotliHistogramRemapCommand | 5 | HistogramCommand * |
+| (const HistogramCommand *,size_t,const uint32_t *,size_t,HistogramCommand *,HistogramCommand *,uint32_t *) | | BrotliHistogramRemapCommand | 6 | uint32_t * |
+| (const HistogramDistance *) | | BrotliPopulationCostDistance | 0 | const HistogramDistance * |
+| (const HistogramDistance *,HistogramDistance *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *) | | BrotliCompareAndPushToQueueDistance | 0 | const HistogramDistance * |
+| (const HistogramDistance *,HistogramDistance *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *) | | BrotliCompareAndPushToQueueDistance | 1 | HistogramDistance * |
+| (const HistogramDistance *,HistogramDistance *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *) | | BrotliCompareAndPushToQueueDistance | 2 | const uint32_t * |
+| (const HistogramDistance *,HistogramDistance *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *) | | BrotliCompareAndPushToQueueDistance | 3 | uint32_t |
+| (const HistogramDistance *,HistogramDistance *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *) | | BrotliCompareAndPushToQueueDistance | 4 | uint32_t |
+| (const HistogramDistance *,HistogramDistance *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *) | | BrotliCompareAndPushToQueueDistance | 5 | size_t |
+| (const HistogramDistance *,HistogramDistance *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *) | | BrotliCompareAndPushToQueueDistance | 6 | HistogramPair * |
+| (const HistogramDistance *,HistogramDistance *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *) | | BrotliCompareAndPushToQueueDistance | 7 | size_t * |
+| (const HistogramDistance *,const HistogramDistance *,HistogramDistance *) | | BrotliHistogramBitCostDistanceDistance | 0 | const HistogramDistance * |
+| (const HistogramDistance *,const HistogramDistance *,HistogramDistance *) | | BrotliHistogramBitCostDistanceDistance | 1 | const HistogramDistance * |
+| (const HistogramDistance *,const HistogramDistance *,HistogramDistance *) | | BrotliHistogramBitCostDistanceDistance | 2 | HistogramDistance * |
+| (const HistogramDistance *,size_t,const uint32_t *,size_t,HistogramDistance *,HistogramDistance *,uint32_t *) | | BrotliHistogramRemapDistance | 0 | const HistogramDistance * |
+| (const HistogramDistance *,size_t,const uint32_t *,size_t,HistogramDistance *,HistogramDistance *,uint32_t *) | | BrotliHistogramRemapDistance | 1 | size_t |
+| (const HistogramDistance *,size_t,const uint32_t *,size_t,HistogramDistance *,HistogramDistance *,uint32_t *) | | BrotliHistogramRemapDistance | 2 | const uint32_t * |
+| (const HistogramDistance *,size_t,const uint32_t *,size_t,HistogramDistance *,HistogramDistance *,uint32_t *) | | BrotliHistogramRemapDistance | 3 | size_t |
+| (const HistogramDistance *,size_t,const uint32_t *,size_t,HistogramDistance *,HistogramDistance *,uint32_t *) | | BrotliHistogramRemapDistance | 4 | HistogramDistance * |
+| (const HistogramDistance *,size_t,const uint32_t *,size_t,HistogramDistance *,HistogramDistance *,uint32_t *) | | BrotliHistogramRemapDistance | 5 | HistogramDistance * |
+| (const HistogramDistance *,size_t,const uint32_t *,size_t,HistogramDistance *,HistogramDistance *,uint32_t *) | | BrotliHistogramRemapDistance | 6 | uint32_t * |
+| (const HistogramLiteral *) | | BrotliPopulationCostLiteral | 0 | const HistogramLiteral * |
+| (const HistogramLiteral *,HistogramLiteral *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *) | | BrotliCompareAndPushToQueueLiteral | 0 | const HistogramLiteral * |
+| (const HistogramLiteral *,HistogramLiteral *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *) | | BrotliCompareAndPushToQueueLiteral | 1 | HistogramLiteral * |
+| (const HistogramLiteral *,HistogramLiteral *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *) | | BrotliCompareAndPushToQueueLiteral | 2 | const uint32_t * |
+| (const HistogramLiteral *,HistogramLiteral *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *) | | BrotliCompareAndPushToQueueLiteral | 3 | uint32_t |
+| (const HistogramLiteral *,HistogramLiteral *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *) | | BrotliCompareAndPushToQueueLiteral | 4 | uint32_t |
+| (const HistogramLiteral *,HistogramLiteral *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *) | | BrotliCompareAndPushToQueueLiteral | 5 | size_t |
+| (const HistogramLiteral *,HistogramLiteral *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *) | | BrotliCompareAndPushToQueueLiteral | 6 | HistogramPair * |
+| (const HistogramLiteral *,HistogramLiteral *,const uint32_t *,uint32_t,uint32_t,size_t,HistogramPair *,size_t *) | | BrotliCompareAndPushToQueueLiteral | 7 | size_t * |
+| (const HistogramLiteral *,const HistogramLiteral *,HistogramLiteral *) | | BrotliHistogramBitCostDistanceLiteral | 0 | const HistogramLiteral * |
+| (const HistogramLiteral *,const HistogramLiteral *,HistogramLiteral *) | | BrotliHistogramBitCostDistanceLiteral | 1 | const HistogramLiteral * |
+| (const HistogramLiteral *,const HistogramLiteral *,HistogramLiteral *) | | BrotliHistogramBitCostDistanceLiteral | 2 | HistogramLiteral * |
+| (const HistogramLiteral *,size_t,const uint32_t *,size_t,HistogramLiteral *,HistogramLiteral *,uint32_t *) | | BrotliHistogramRemapLiteral | 0 | const HistogramLiteral * |
+| (const HistogramLiteral *,size_t,const uint32_t *,size_t,HistogramLiteral *,HistogramLiteral *,uint32_t *) | | BrotliHistogramRemapLiteral | 1 | size_t |
+| (const HistogramLiteral *,size_t,const uint32_t *,size_t,HistogramLiteral *,HistogramLiteral *,uint32_t *) | | BrotliHistogramRemapLiteral | 2 | const uint32_t * |
+| (const HistogramLiteral *,size_t,const uint32_t *,size_t,HistogramLiteral *,HistogramLiteral *,uint32_t *) | | BrotliHistogramRemapLiteral | 3 | size_t |
+| (const HistogramLiteral *,size_t,const uint32_t *,size_t,HistogramLiteral *,HistogramLiteral *,uint32_t *) | | BrotliHistogramRemapLiteral | 4 | HistogramLiteral * |
+| (const HistogramLiteral *,size_t,const uint32_t *,size_t,HistogramLiteral *,HistogramLiteral *,uint32_t *) | | BrotliHistogramRemapLiteral | 5 | HistogramLiteral * |
+| (const HistogramLiteral *,size_t,const uint32_t *,size_t,HistogramLiteral *,HistogramLiteral *,uint32_t *) | | BrotliHistogramRemapLiteral | 6 | uint32_t * |
| (const IPAddressChoice *,unsigned char **) | | i2d_IPAddressChoice | 0 | const IPAddressChoice * |
| (const IPAddressChoice *,unsigned char **) | | i2d_IPAddressChoice | 1 | unsigned char ** |
| (const IPAddressFamily *) | | X509v3_addr_get_afi | 0 | const IPAddressFamily * |
@@ -23058,6 +27084,7 @@ getSignatureParameterName
| (const MATRIX *,const VECTOR *,VECTOR *) | | ossl_ml_dsa_matrix_mult_vector | 0 | const MATRIX * |
| (const MATRIX *,const VECTOR *,VECTOR *) | | ossl_ml_dsa_matrix_mult_vector | 1 | const VECTOR * |
| (const MATRIX *,const VECTOR *,VECTOR *) | | ossl_ml_dsa_matrix_mult_vector | 2 | VECTOR * |
+| (const MD5_params *) | | Curl_MD5_init | 0 | const MD5_params * |
| (const ML_DSA_KEY *) | | ossl_ml_dsa_key_get0_libctx | 0 | const ML_DSA_KEY * |
| (const ML_DSA_KEY *) | | ossl_ml_dsa_key_get_collision_strength_bits | 0 | const ML_DSA_KEY * |
| (const ML_DSA_KEY *) | | ossl_ml_dsa_key_get_name | 0 | const ML_DSA_KEY * |
@@ -24544,7 +28571,13 @@ getSignatureParameterName
| (const YCHAR *,int,IAtlStringMgr *) | CStringT | CStringT | 0 | const YCHAR * |
| (const YCHAR *,int,IAtlStringMgr *) | CStringT | CStringT | 1 | int |
| (const YCHAR *,int,IAtlStringMgr *) | CStringT | CStringT | 2 | IAtlStringMgr * |
+| (const bufq *) | | Curl_bufq_len | 0 | const bufq * |
+| (const bufref *) | | Curl_bufref_len | 0 | const bufref * |
+| (const bufref *) | | Curl_bufref_ptr | 0 | const bufref * |
| (const char *) | | BIO_gethostbyname | 0 | const char * |
+| (const char *) | | Curl_copy_header_value | 0 | const char * |
+| (const char *) | | Curl_get_scheme_handler | 0 | const char * |
+| (const char *) | | Curl_getdate_capped | 0 | const char * |
| (const char *) | | Jim_StrDup | 0 | const char * |
| (const char *) | | OPENSSL_LH_strhash | 0 | const char * |
| (const char *) | | OSSL_STORE_SEARCH_by_alias | 0 | const char * |
@@ -24555,12 +28588,21 @@ getSignatureParameterName
| (const char *) | | X509_LOOKUP_meth_new | 0 | const char * |
| (const char *) | | a2i_IPADDRESS | 0 | const char * |
| (const char *) | | a2i_IPADDRESS_NC | 0 | const char * |
+| (const char *) | | last_component | 0 | const char * |
| (const char *) | | opt_path_end | 0 | const char * |
| (const char *) | | opt_progname | 0 | const char * |
| (const char *) | | ossl_lh_strcasehash | 0 | const char * |
| (const char *) | | strhash | 0 | const char * |
+| (const char *) | | uc_script_byname | 0 | const char * |
+| (const char *) | | uv__strdup | 0 | const char * |
+| (const char *) | | uv_wtf8_length_as_utf16 | 0 | const char * |
| (const char **) | | ERR_peek_error_func | 0 | const char ** |
| (const char **) | | ERR_peek_last_error_func | 0 | const char ** |
+| (const char **,char **,const char *) | | Curl_get_pathname | 0 | const char ** |
+| (const char **,char **,const char *) | | Curl_get_pathname | 1 | char ** |
+| (const char **,char **,const char *) | | Curl_get_pathname | 2 | const char * |
+| (const char **,const char *) | | uv__utf8_decode1 | 0 | const char ** |
+| (const char **,const char *) | | uv__utf8_decode1 | 1 | const char * |
| (const char **,int *) | | ERR_get_error_line | 0 | const char ** |
| (const char **,int *) | | ERR_get_error_line | 1 | int * |
| (const char **,int *) | | ERR_peek_error_data | 0 | const char ** |
@@ -24629,6 +28671,8 @@ getSignatureParameterName
| (const char *,EVP_MD **) | | opt_md | 1 | EVP_MD ** |
| (const char *,EVP_MD **) | | opt_md_silent | 0 | const char * |
| (const char *,EVP_MD **) | | opt_md_silent | 1 | EVP_MD ** |
+| (const char *,GlobalConfig *) | | parseconfig | 0 | const char * |
+| (const char *,GlobalConfig *) | | parseconfig | 1 | GlobalConfig * |
| (const char *,OSSL_CMP_severity *,char **,char **,int *) | | ossl_cmp_log_parse_metadata | 0 | const char * |
| (const char *,OSSL_CMP_severity *,char **,char **,int *) | | ossl_cmp_log_parse_metadata | 1 | OSSL_CMP_severity * |
| (const char *,OSSL_CMP_severity *,char **,char **,int *) | | ossl_cmp_log_parse_metadata | 2 | char ** |
@@ -24652,6 +28696,10 @@ getSignatureParameterName
| (const char *,X509 **,stack_st_X509 **,int,const char *,const char *,X509_VERIFY_PARAM *) | | load_cert_certs | 4 | const char * |
| (const char *,X509 **,stack_st_X509 **,int,const char *,const char *,X509_VERIFY_PARAM *) | | load_cert_certs | 5 | const char * |
| (const char *,X509 **,stack_st_X509 **,int,const char *,const char *,X509_VERIFY_PARAM *) | | load_cert_certs | 6 | X509_VERIFY_PARAM * |
+| (const char *,bufref *) | | Curl_auth_create_external_message | 0 | const char * |
+| (const char *,bufref *) | | Curl_auth_create_external_message | 1 | bufref * |
+| (const char *,bufref *) | | Curl_auth_create_login_message | 0 | const char * |
+| (const char *,bufref *) | | Curl_auth_create_login_message | 1 | bufref * |
| (const char *,char *) | | sha1sum_file | 0 | const char * |
| (const char *,char *) | | sha1sum_file | 1 | char * |
| (const char *,char *) | | sha3sum_file | 0 | const char * |
@@ -24660,6 +28708,10 @@ getSignatureParameterName
| (const char *,char **,char **,BIO_hostserv_priorities) | | BIO_parse_hostserv | 1 | char ** |
| (const char *,char **,char **,BIO_hostserv_priorities) | | BIO_parse_hostserv | 2 | char ** |
| (const char *,char **,char **,BIO_hostserv_priorities) | | BIO_parse_hostserv | 3 | BIO_hostserv_priorities |
+| (const char *,char **,char **,char **) | | Curl_parse_interface | 0 | const char * |
+| (const char *,char **,char **,char **) | | Curl_parse_interface | 1 | char ** |
+| (const char *,char **,char **,char **) | | Curl_parse_interface | 2 | char ** |
+| (const char *,char **,char **,char **) | | Curl_parse_interface | 3 | char ** |
| (const char *,char **,char **,char **,char **,int *,char **,char **,char **) | | OSSL_parse_url | 0 | const char * |
| (const char *,char **,char **,char **,char **,int *,char **,char **,char **) | | OSSL_parse_url | 1 | char ** |
| (const char *,char **,char **,char **,char **,int *,char **,char **,char **) | | OSSL_parse_url | 2 | char ** |
@@ -24669,6 +28721,13 @@ getSignatureParameterName
| (const char *,char **,char **,char **,char **,int *,char **,char **,char **) | | OSSL_parse_url | 6 | char ** |
| (const char *,char **,char **,char **,char **,int *,char **,char **,char **) | | OSSL_parse_url | 7 | char ** |
| (const char *,char **,char **,char **,char **,int *,char **,char **,char **) | | OSSL_parse_url | 8 | char ** |
+| (const char *,char **,int) | | idn2_to_ascii_8z | 0 | const char * |
+| (const char *,char **,int) | | idn2_to_ascii_8z | 1 | char ** |
+| (const char *,char **,int) | | idn2_to_ascii_8z | 2 | int |
+| (const char *,char **,int,curl_off_t *) | | curlx_strtoofft | 0 | const char * |
+| (const char *,char **,int,curl_off_t *) | | curlx_strtoofft | 1 | char ** |
+| (const char *,char **,int,curl_off_t *) | | curlx_strtoofft | 2 | int |
+| (const char *,char **,int,curl_off_t *) | | curlx_strtoofft | 3 | curl_off_t * |
| (const char *,char **,int,unsigned long *) | | OPENSSL_strtoul | 0 | const char * |
| (const char *,char **,int,unsigned long *) | | OPENSSL_strtoul | 1 | char ** |
| (const char *,char **,int,unsigned long *) | | OPENSSL_strtoul | 2 | int |
@@ -24676,9 +28735,32 @@ getSignatureParameterName
| (const char *,char **,size_t) | | OSSL_PARAM_construct_utf8_ptr | 0 | const char * |
| (const char *,char **,size_t) | | OSSL_PARAM_construct_utf8_ptr | 1 | char ** |
| (const char *,char **,size_t) | | OSSL_PARAM_construct_utf8_ptr | 2 | size_t |
+| (const char *,char *,char *,bool *,GlobalConfig *,OperationConfig *) | | getparameter | 0 | const char * |
+| (const char *,char *,char *,bool *,GlobalConfig *,OperationConfig *) | | getparameter | 1 | char * |
+| (const char *,char *,char *,bool *,GlobalConfig *,OperationConfig *) | | getparameter | 2 | char * |
+| (const char *,char *,char *,bool *,GlobalConfig *,OperationConfig *) | | getparameter | 3 | bool * |
+| (const char *,char *,char *,bool *,GlobalConfig *,OperationConfig *) | | getparameter | 4 | GlobalConfig * |
+| (const char *,char *,char *,bool *,GlobalConfig *,OperationConfig *) | | getparameter | 5 | OperationConfig * |
+| (const char *,char *,char *,const char **) | | Curl_auth_digest_get_pair | 0 | const char * |
+| (const char *,char *,char *,const char **) | | Curl_auth_digest_get_pair | 1 | char * |
+| (const char *,char *,char *,const char **) | | Curl_auth_digest_get_pair | 2 | char * |
+| (const char *,char *,char *,const char **) | | Curl_auth_digest_get_pair | 3 | const char ** |
+| (const char *,char *,size_t *) | | uv__search_path | 0 | const char * |
+| (const char *,char *,size_t *) | | uv__search_path | 1 | char * |
+| (const char *,char *,size_t *) | | uv__search_path | 2 | size_t * |
+| (const char *,char *,size_t *) | | uv_os_getenv | 0 | const char * |
+| (const char *,char *,size_t *) | | uv_os_getenv | 1 | char * |
+| (const char *,char *,size_t *) | | uv_os_getenv | 2 | size_t * |
| (const char *,char *,size_t) | | OSSL_PARAM_construct_utf8_string | 0 | const char * |
| (const char *,char *,size_t) | | OSSL_PARAM_construct_utf8_string | 1 | char * |
| (const char *,char *,size_t) | | OSSL_PARAM_construct_utf8_string | 2 | size_t |
+| (const char *,char *,size_t) | | getpass_r | 0 | const char * |
+| (const char *,char *,size_t) | | getpass_r | 1 | char * |
+| (const char *,char *,size_t) | | getpass_r | 2 | size_t |
+| (const char *,char *,size_t,bool) | | Curl_is_absolute_url | 0 | const char * |
+| (const char *,char *,size_t,bool) | | Curl_is_absolute_url | 1 | char * |
+| (const char *,char *,size_t,bool) | | Curl_is_absolute_url | 2 | size_t |
+| (const char *,char *,size_t,bool) | | Curl_is_absolute_url | 3 | bool |
| (const char *,const ASN1_INTEGER *,stack_st_CONF_VALUE **) | | X509V3_add_value_int | 0 | const char * |
| (const char *,const ASN1_INTEGER *,stack_st_CONF_VALUE **) | | X509V3_add_value_int | 1 | const ASN1_INTEGER * |
| (const char *,const ASN1_INTEGER *,stack_st_CONF_VALUE **) | | X509V3_add_value_int | 2 | stack_st_CONF_VALUE ** |
@@ -24699,12 +28781,20 @@ getSignatureParameterName
| (const char *,const UI_METHOD *,void *,OSSL_STORE_post_process_info_fn,void *) | | OSSL_STORE_open | 4 | void * |
| (const char *,const char *) | | Configcmp | 0 | const char * |
| (const char *,const char *) | | Configcmp | 1 | const char * |
+| (const char *,const char *) | | Curl_timestrcmp | 0 | const char * |
+| (const char *,const char *) | | Curl_timestrcmp | 1 | const char * |
| (const char *,const char *) | | DES_crypt | 0 | const char * |
| (const char *,const char *) | | DES_crypt | 1 | const char * |
| (const char *,const char *) | | OPENSSL_strcasecmp | 0 | const char * |
| (const char *,const char *) | | OPENSSL_strcasecmp | 1 | const char * |
+| (const char *,const char *) | | c_strcasecmp | 0 | const char * |
+| (const char *,const char *) | | c_strcasecmp | 1 | const char * |
| (const char *,const char *) | | get_passwd | 0 | const char * |
| (const char *,const char *) | | get_passwd | 1 | const char * |
+| (const char *,const char *) | | gzopen | 0 | const char * |
+| (const char *,const char *) | | gzopen | 1 | const char * |
+| (const char *,const char *) | | gzopen64 | 0 | const char * |
+| (const char *,const char *) | | gzopen64 | 1 | const char * |
| (const char *,const char *) | | openssl_fopen | 0 | const char * |
| (const char *,const char *) | | openssl_fopen | 1 | const char * |
| (const char *,const char *) | | ossl_pem_check_suffix | 0 | const char * |
@@ -24792,6 +28882,14 @@ getSignatureParameterName
| (const char *,const char *,char **,char **,const char *,const char *,OSSL_LIB_CTX *,const char *) | | SRP_create_verifier_ex | 5 | const char * |
| (const char *,const char *,char **,char **,const char *,const char *,OSSL_LIB_CTX *,const char *) | | SRP_create_verifier_ex | 6 | OSSL_LIB_CTX * |
| (const char *,const char *,char **,char **,const char *,const char *,OSSL_LIB_CTX *,const char *) | | SRP_create_verifier_ex | 7 | const char * |
+| (const char *,const char *,char **,int) | | idn2_register_ul | 0 | const char * |
+| (const char *,const char *,char **,int) | | idn2_register_ul | 1 | const char * |
+| (const char *,const char *,char **,int) | | idn2_register_ul | 2 | char ** |
+| (const char *,const char *,char **,int) | | idn2_register_ul | 3 | int |
+| (const char *,const char *,char *,char *) | | uv__idna_toascii | 0 | const char * |
+| (const char *,const char *,char *,char *) | | uv__idna_toascii | 1 | const char * |
+| (const char *,const char *,char *,char *) | | uv__idna_toascii | 2 | char * |
+| (const char *,const char *,char *,char *) | | uv__idna_toascii | 3 | char * |
| (const char *,const char *,const BIGNUM *,ASN1_INTEGER **) | | save_serial | 0 | const char * |
| (const char *,const char *,const BIGNUM *,ASN1_INTEGER **) | | save_serial | 1 | const char * |
| (const char *,const char *,const BIGNUM *,ASN1_INTEGER **) | | save_serial | 2 | const BIGNUM * |
@@ -24817,6 +28915,15 @@ getSignatureParameterName
| (const char *,const char *,const char *,SSL_CTX *,const stack_st_CONF_VALUE *,long,const char *,const ASN1_ITEM *) | | app_http_get_asn1 | 5 | long |
| (const char *,const char *,const char *,SSL_CTX *,const stack_st_CONF_VALUE *,long,const char *,const ASN1_ITEM *) | | app_http_get_asn1 | 6 | const char * |
| (const char *,const char *,const char *,SSL_CTX *,const stack_st_CONF_VALUE *,long,const char *,const ASN1_ITEM *) | | app_http_get_asn1 | 7 | const ASN1_ITEM * |
+| (const char *,const char *,const char *,bool,iconv_ilseq_handler) | | str_iconveha | 0 | const char * |
+| (const char *,const char *,const char *,bool,iconv_ilseq_handler) | | str_iconveha | 1 | const char * |
+| (const char *,const char *,const char *,bool,iconv_ilseq_handler) | | str_iconveha | 2 | const char * |
+| (const char *,const char *,const char *,bool,iconv_ilseq_handler) | | str_iconveha | 3 | bool |
+| (const char *,const char *,const char *,bool,iconv_ilseq_handler) | | str_iconveha | 4 | iconv_ilseq_handler |
+| (const char *,const char *,const char *,bufref *) | | Curl_auth_create_plain_message | 0 | const char * |
+| (const char *,const char *,const char *,bufref *) | | Curl_auth_create_plain_message | 1 | const char * |
+| (const char *,const char *,const char *,bufref *) | | Curl_auth_create_plain_message | 2 | const char * |
+| (const char *,const char *,const char *,bufref *) | | Curl_auth_create_plain_message | 3 | bufref * |
| (const char *,const char *,const char *,const char *,const char *,SSL_CTX *,const stack_st_CONF_VALUE *,const char *,ASN1_VALUE *,const ASN1_ITEM *,const char *,long,const ASN1_ITEM *) | | app_http_post_asn1 | 0 | const char * |
| (const char *,const char *,const char *,const char *,const char *,SSL_CTX *,const stack_st_CONF_VALUE *,const char *,ASN1_VALUE *,const ASN1_ITEM *,const char *,long,const ASN1_ITEM *) | | app_http_post_asn1 | 1 | const char * |
| (const char *,const char *,const char *,const char *,const char *,SSL_CTX *,const stack_st_CONF_VALUE *,const char *,ASN1_VALUE *,const ASN1_ITEM *,const char *,long,const ASN1_ITEM *) | | app_http_post_asn1 | 2 | const char * |
@@ -24841,6 +28948,10 @@ getSignatureParameterName
| (const char *,const char *,const char *,const char *,int,BIO *,BIO *,OSSL_HTTP_bio_cb_t,void *,int,int) | | OSSL_HTTP_open | 8 | void * |
| (const char *,const char *,const char *,const char *,int,BIO *,BIO *,OSSL_HTTP_bio_cb_t,void *,int,int) | | OSSL_HTTP_open | 9 | int |
| (const char *,const char *,const char *,const char *,int,BIO *,BIO *,OSSL_HTTP_bio_cb_t,void *,int,int) | | OSSL_HTTP_open | 10 | int |
+| (const char *,const char *,const char *,iconv_ilseq_handler) | | str_iconveh | 0 | const char * |
+| (const char *,const char *,const char *,iconv_ilseq_handler) | | str_iconveh | 1 | const char * |
+| (const char *,const char *,const char *,iconv_ilseq_handler) | | str_iconveh | 2 | const char * |
+| (const char *,const char *,const char *,iconv_ilseq_handler) | | str_iconveh | 3 | iconv_ilseq_handler |
| (const char *,const char *,const char *,int) | | OSSL_HTTP_adapt_proxy | 0 | const char * |
| (const char *,const char *,const char *,int) | | OSSL_HTTP_adapt_proxy | 1 | const char * |
| (const char *,const char *,const char *,int) | | OSSL_HTTP_adapt_proxy | 2 | const char * |
@@ -24861,16 +28972,26 @@ getSignatureParameterName
| (const char *,const char *,size_t) | | OPENSSL_strncasecmp | 0 | const char * |
| (const char *,const char *,size_t) | | OPENSSL_strncasecmp | 1 | const char * |
| (const char *,const char *,size_t) | | OPENSSL_strncasecmp | 2 | size_t |
+| (const char *,const char *,size_t) | | c_strncasecmp | 0 | const char * |
+| (const char *,const char *,size_t) | | c_strncasecmp | 1 | const char * |
+| (const char *,const char *,size_t) | | c_strncasecmp | 2 | size_t |
| (const char *,const char *,stack_st_CONF_VALUE **) | | X509V3_add_value | 0 | const char * |
| (const char *,const char *,stack_st_CONF_VALUE **) | | X509V3_add_value | 1 | const char * |
| (const char *,const char *,stack_st_CONF_VALUE **) | | X509V3_add_value | 2 | stack_st_CONF_VALUE ** |
| (const char *,const char *,unsigned int) | | sqlite3_strlike | 0 | const char * |
| (const char *,const char *,unsigned int) | | sqlite3_strlike | 1 | const char * |
| (const char *,const char *,unsigned int) | | sqlite3_strlike | 2 | unsigned int |
+| (const char *,const size_t,char **,char **,char **) | | Curl_parse_login_details | 0 | const char * |
+| (const char *,const size_t,char **,char **,char **) | | Curl_parse_login_details | 1 | const size_t |
+| (const char *,const size_t,char **,char **,char **) | | Curl_parse_login_details | 2 | char ** |
+| (const char *,const size_t,char **,char **,char **) | | Curl_parse_login_details | 3 | char ** |
+| (const char *,const size_t,char **,char **,char **) | | Curl_parse_login_details | 4 | char ** |
| (const char *,const size_t,unsigned int *,unsigned int *) | | ossl_punycode_decode | 0 | const char * |
| (const char *,const size_t,unsigned int *,unsigned int *) | | ossl_punycode_decode | 1 | const size_t |
| (const char *,const size_t,unsigned int *,unsigned int *) | | ossl_punycode_decode | 2 | unsigned int * |
| (const char *,const size_t,unsigned int *,unsigned int *) | | ossl_punycode_decode | 3 | unsigned int * |
+| (const char *,const time_t *) | | curl_getdate | 0 | const char * |
+| (const char *,const time_t *) | | curl_getdate | 1 | const time_t * |
| (const char *,const unsigned char *,size_t,stack_st_CONF_VALUE **) | | x509v3_add_len_value_uchar | 0 | const char * |
| (const char *,const unsigned char *,size_t,stack_st_CONF_VALUE **) | | x509v3_add_len_value_uchar | 1 | const unsigned char * |
| (const char *,const unsigned char *,size_t,stack_st_CONF_VALUE **) | | x509v3_add_len_value_uchar | 2 | size_t |
@@ -24878,6 +28999,8 @@ getSignatureParameterName
| (const char *,const unsigned char *,stack_st_CONF_VALUE **) | | X509V3_add_value_uchar | 0 | const char * |
| (const char *,const unsigned char *,stack_st_CONF_VALUE **) | | X509V3_add_value_uchar | 1 | const unsigned char * |
| (const char *,const unsigned char *,stack_st_CONF_VALUE **) | | X509V3_add_value_uchar | 2 | stack_st_CONF_VALUE ** |
+| (const char *,digestdata *) | | Curl_auth_decode_digest_http_message | 0 | const char * |
+| (const char *,digestdata *) | | Curl_auth_decode_digest_http_message | 1 | digestdata * |
| (const char *,double *) | | Jim_StringToDouble | 0 | const char * |
| (const char *,double *) | | Jim_StringToDouble | 1 | double * |
| (const char *,double *) | | OSSL_PARAM_construct_double | 0 | const char * |
@@ -24981,12 +29104,55 @@ getSignatureParameterName
| (const char *,long *,int) | | Jim_StringToWide | 2 | int |
| (const char *,size_t *) | | OSSL_PARAM_construct_size_t | 0 | const char * |
| (const char *,size_t *) | | OSSL_PARAM_construct_size_t | 1 | size_t * |
+| (const char *,size_t) | | Curl_getn_scheme_handler | 0 | const char * |
+| (const char *,size_t) | | Curl_getn_scheme_handler | 1 | size_t |
+| (const char *,size_t) | | Curl_memdup0 | 0 | const char * |
+| (const char *,size_t) | | Curl_memdup0 | 1 | size_t |
| (const char *,size_t) | | OPENSSL_strnlen | 0 | const char * |
| (const char *,size_t) | | OPENSSL_strnlen | 1 | size_t |
+| (const char *,size_t) | | uv__strndup | 0 | const char * |
+| (const char *,size_t) | | uv__strndup | 1 | size_t |
+| (const char *,size_t,char **,size_t *,urlreject) | | Curl_urldecode | 0 | const char * |
+| (const char *,size_t,char **,size_t *,urlreject) | | Curl_urldecode | 1 | size_t |
+| (const char *,size_t,char **,size_t *,urlreject) | | Curl_urldecode | 2 | char ** |
+| (const char *,size_t,char **,size_t *,urlreject) | | Curl_urldecode | 3 | size_t * |
+| (const char *,size_t,char **,size_t *,urlreject) | | Curl_urldecode | 4 | urlreject |
+| (const char *,size_t,const char *,const char *,bool,iconv_ilseq_handler,size_t *,char **,size_t *) | | mem_iconveha | 0 | const char * |
+| (const char *,size_t,const char *,const char *,bool,iconv_ilseq_handler,size_t *,char **,size_t *) | | mem_iconveha | 1 | size_t |
+| (const char *,size_t,const char *,const char *,bool,iconv_ilseq_handler,size_t *,char **,size_t *) | | mem_iconveha | 2 | const char * |
+| (const char *,size_t,const char *,const char *,bool,iconv_ilseq_handler,size_t *,char **,size_t *) | | mem_iconveha | 3 | const char * |
+| (const char *,size_t,const char *,const char *,bool,iconv_ilseq_handler,size_t *,char **,size_t *) | | mem_iconveha | 4 | bool |
+| (const char *,size_t,const char *,const char *,bool,iconv_ilseq_handler,size_t *,char **,size_t *) | | mem_iconveha | 5 | iconv_ilseq_handler |
+| (const char *,size_t,const char *,const char *,bool,iconv_ilseq_handler,size_t *,char **,size_t *) | | mem_iconveha | 6 | size_t * |
+| (const char *,size_t,const char *,const char *,bool,iconv_ilseq_handler,size_t *,char **,size_t *) | | mem_iconveha | 7 | char ** |
+| (const char *,size_t,const char *,const char *,bool,iconv_ilseq_handler,size_t *,char **,size_t *) | | mem_iconveha | 8 | size_t * |
+| (const char *,size_t,const char *,const char *,iconv_ilseq_handler,size_t *,char **,size_t *) | | mem_iconveh | 0 | const char * |
+| (const char *,size_t,const char *,const char *,iconv_ilseq_handler,size_t *,char **,size_t *) | | mem_iconveh | 1 | size_t |
+| (const char *,size_t,const char *,const char *,iconv_ilseq_handler,size_t *,char **,size_t *) | | mem_iconveh | 2 | const char * |
+| (const char *,size_t,const char *,const char *,iconv_ilseq_handler,size_t *,char **,size_t *) | | mem_iconveh | 3 | const char * |
+| (const char *,size_t,const char *,const char *,iconv_ilseq_handler,size_t *,char **,size_t *) | | mem_iconveh | 4 | iconv_ilseq_handler |
+| (const char *,size_t,const char *,const char *,iconv_ilseq_handler,size_t *,char **,size_t *) | | mem_iconveh | 5 | size_t * |
+| (const char *,size_t,const char *,const char *,iconv_ilseq_handler,size_t *,char **,size_t *) | | mem_iconveh | 6 | char ** |
+| (const char *,size_t,const char *,const char *,iconv_ilseq_handler,size_t *,char **,size_t *) | | mem_iconveh | 7 | size_t * |
| (const char *,size_t,const char *,int) | | CRYPTO_strndup | 0 | const char * |
| (const char *,size_t,const char *,int) | | CRYPTO_strndup | 1 | size_t |
| (const char *,size_t,const char *,int) | | CRYPTO_strndup | 2 | const char * |
| (const char *,size_t,const char *,int) | | CRYPTO_strndup | 3 | int |
+| (const char *,size_t,const iconveh_t *,iconv_ilseq_handler,size_t *,char **,size_t *) | | mem_cd_iconveh | 0 | const char * |
+| (const char *,size_t,const iconveh_t *,iconv_ilseq_handler,size_t *,char **,size_t *) | | mem_cd_iconveh | 1 | size_t |
+| (const char *,size_t,const iconveh_t *,iconv_ilseq_handler,size_t *,char **,size_t *) | | mem_cd_iconveh | 2 | const iconveh_t * |
+| (const char *,size_t,const iconveh_t *,iconv_ilseq_handler,size_t *,char **,size_t *) | | mem_cd_iconveh | 3 | iconv_ilseq_handler |
+| (const char *,size_t,const iconveh_t *,iconv_ilseq_handler,size_t *,char **,size_t *) | | mem_cd_iconveh | 4 | size_t * |
+| (const char *,size_t,const iconveh_t *,iconv_ilseq_handler,size_t *,char **,size_t *) | | mem_cd_iconveh | 5 | char ** |
+| (const char *,size_t,const iconveh_t *,iconv_ilseq_handler,size_t *,char **,size_t *) | | mem_cd_iconveh | 6 | size_t * |
+| (const char *,size_t,dynbuf *,bool) | | jsonquoted | 0 | const char * |
+| (const char *,size_t,dynbuf *,bool) | | jsonquoted | 1 | size_t |
+| (const char *,size_t,dynbuf *,bool) | | jsonquoted | 2 | dynbuf * |
+| (const char *,size_t,dynbuf *,bool) | | jsonquoted | 3 | bool |
+| (const char *,size_t,uint32_t *,size_t *) | | idn2_punycode_decode | 0 | const char * |
+| (const char *,size_t,uint32_t *,size_t *) | | idn2_punycode_decode | 1 | size_t |
+| (const char *,size_t,uint32_t *,size_t *) | | idn2_punycode_decode | 2 | uint32_t * |
+| (const char *,size_t,uint32_t *,size_t *) | | idn2_punycode_decode | 3 | size_t * |
| (const char *,sqlite3 **,int,const char *) | | sqlite3_open_v2 | 0 | const char * |
| (const char *,sqlite3 **,int,const char *) | | sqlite3_open_v2 | 1 | sqlite3 ** |
| (const char *,sqlite3 **,int,const char *) | | sqlite3_open_v2 | 2 | int |
@@ -25019,10 +29185,17 @@ getSignatureParameterName
| (const char *,stack_st_X509_CRL **,const char *,const char *) | | load_crls | 3 | const char * |
| (const char *,time_t *) | | OSSL_PARAM_construct_time_t | 0 | const char * |
| (const char *,time_t *) | | OSSL_PARAM_construct_time_t | 1 | time_t * |
+| (const char *,uint16_t *,size_t) | | uv_wtf8_to_utf16 | 0 | const char * |
+| (const char *,uint16_t *,size_t) | | uv_wtf8_to_utf16 | 1 | uint16_t * |
+| (const char *,uint16_t *,size_t) | | uv_wtf8_to_utf16 | 2 | size_t |
| (const char *,uint32_t *) | | OSSL_PARAM_construct_uint32 | 0 | const char * |
| (const char *,uint32_t *) | | OSSL_PARAM_construct_uint32 | 1 | uint32_t * |
| (const char *,uint64_t *) | | OSSL_PARAM_construct_uint64 | 0 | const char * |
| (const char *,uint64_t *) | | OSSL_PARAM_construct_uint64 | 1 | uint64_t * |
+| (const char *,unsigned char *) | | Curl_ntlm_core_mk_lm_hash | 0 | const char * |
+| (const char *,unsigned char *) | | Curl_ntlm_core_mk_lm_hash | 1 | unsigned char * |
+| (const char *,unsigned char *) | | Curl_ntlm_core_mk_nt_hash | 0 | const char * |
+| (const char *,unsigned char *) | | Curl_ntlm_core_mk_nt_hash | 1 | unsigned char * |
| (const char *,unsigned char *,size_t) | | OSSL_PARAM_construct_BN | 0 | const char * |
| (const char *,unsigned char *,size_t) | | OSSL_PARAM_construct_BN | 1 | unsigned char * |
| (const char *,unsigned char *,size_t) | | OSSL_PARAM_construct_BN | 2 | size_t |
@@ -25032,6 +29205,10 @@ getSignatureParameterName
| (const char *,unsigned long *) | | OSSL_PARAM_construct_ulong | 1 | unsigned long * |
| (const char *,unsigned long *) | | opt_ulong | 0 | const char * |
| (const char *,unsigned long *) | | opt_ulong | 1 | unsigned long * |
+| (const char *,va_list) | | curl_mvaprintf | 0 | const char * |
+| (const char *,va_list) | | curl_mvaprintf | 1 | va_list |
+| (const char *,va_list) | | curl_mvprintf | 0 | const char * |
+| (const char *,va_list) | | curl_mvprintf | 1 | va_list |
| (const char *,va_list) | | sqlite3_vmprintf | 0 | const char * |
| (const char *,va_list) | | sqlite3_vmprintf | 1 | va_list |
| (const char *,void *) | | collect_names | 0 | const char * |
@@ -25042,8 +29219,12 @@ getSignatureParameterName
| (const char *,void *,size_t) | | OSSL_PARAM_construct_octet_string | 0 | const char * |
| (const char *,void *,size_t) | | OSSL_PARAM_construct_octet_string | 1 | void * |
| (const char *,void *,size_t) | | OSSL_PARAM_construct_octet_string | 2 | size_t |
+| (const char *,void *,size_t) | | uv__random_readpath | 0 | const char * |
+| (const char *,void *,size_t) | | uv__random_readpath | 1 | void * |
+| (const char *,void *,size_t) | | uv__random_readpath | 2 | size_t |
| (const char *const *,const char *const *) | | name_cmp | 0 | const char *const * |
| (const char *const *,const char *const *) | | name_cmp | 1 | const char *const * |
+| (const curl_easyoption *) | | curl_easy_option_next | 0 | const curl_easyoption * |
| (const curve448_point_t) | | ossl_curve448_point_valid | 0 | const curve448_point_t |
| (const custom_ext_methods *,ENDPOINT,unsigned int,size_t *) | | custom_ext_find | 0 | const custom_ext_methods * |
| (const custom_ext_methods *,ENDPOINT,unsigned int,size_t *) | | custom_ext_find | 1 | ENDPOINT |
@@ -25052,6 +29233,12 @@ getSignatureParameterName
| (const deque &) | deque | deque | 0 | const deque & |
| (const deque &,const Allocator &) | deque | deque | 0 | const deque & |
| (const deque &,const Allocator &) | deque | deque | 1 | const class:1 & |
+| (const dynbuf *) | | Curl_dyn_len | 0 | const dynbuf * |
+| (const dynbuf *) | | Curl_dyn_ptr | 0 | const dynbuf * |
+| (const dynbuf *) | | Curl_dyn_uptr | 0 | const dynbuf * |
+| (const dynbuf *) | | curlx_dyn_len | 0 | const dynbuf * |
+| (const dynbuf *) | | curlx_dyn_ptr | 0 | const dynbuf * |
+| (const dynbuf *) | | curlx_dyn_uptr | 0 | const dynbuf * |
| (const forward_list &) | forward_list | forward_list | 0 | const forward_list & |
| (const forward_list &,const Allocator &) | forward_list | forward_list | 0 | const forward_list & |
| (const forward_list &,const Allocator &) | forward_list | forward_list | 1 | const class:1 & |
@@ -25066,6 +29253,35 @@ getSignatureParameterName
| (const list &) | list | list | 0 | const list & |
| (const list &,const Allocator &) | list | list | 0 | const list & |
| (const list &,const Allocator &) | list | list | 1 | const class:1 & |
+| (const nghttp2_extpri *) | | nghttp2_extpri_to_uint8 | 0 | const nghttp2_extpri * |
+| (const nghttp2_map *) | | nghttp2_map_size | 0 | const nghttp2_map * |
+| (const nghttp2_map *,..(*)(..),void *) | | nghttp2_map_each | 0 | const nghttp2_map * |
+| (const nghttp2_map *,..(*)(..),void *) | | nghttp2_map_each | 1 | ..(*)(..) |
+| (const nghttp2_map *,..(*)(..),void *) | | nghttp2_map_each | 2 | void * |
+| (const nghttp2_map *,nghttp2_map_key_type) | | nghttp2_map_find | 0 | const nghttp2_map * |
+| (const nghttp2_map *,nghttp2_map_key_type) | | nghttp2_map_find | 1 | nghttp2_map_key_type |
+| (const nghttp2_nv *,const nghttp2_nv *) | | nghttp2_nv_compare_name | 0 | const nghttp2_nv * |
+| (const nghttp2_nv *,const nghttp2_nv *) | | nghttp2_nv_compare_name | 1 | const nghttp2_nv * |
+| (const nghttp2_settings_entry *,size_t,nghttp2_mem *) | | nghttp2_frame_iv_copy | 0 | const nghttp2_settings_entry * |
+| (const nghttp2_settings_entry *,size_t,nghttp2_mem *) | | nghttp2_frame_iv_copy | 1 | size_t |
+| (const nghttp2_settings_entry *,size_t,nghttp2_mem *) | | nghttp2_frame_iv_copy | 2 | nghttp2_mem * |
+| (const size_t,const size_t,const ZopfliNode *,int *,size_t *,const BrotliEncoderParams *,Command *,size_t *) | | BrotliZopfliCreateCommands | 0 | const size_t |
+| (const size_t,const size_t,const ZopfliNode *,int *,size_t *,const BrotliEncoderParams *,Command *,size_t *) | | BrotliZopfliCreateCommands | 1 | const size_t |
+| (const size_t,const size_t,const ZopfliNode *,int *,size_t *,const BrotliEncoderParams *,Command *,size_t *) | | BrotliZopfliCreateCommands | 2 | const ZopfliNode * |
+| (const size_t,const size_t,const ZopfliNode *,int *,size_t *,const BrotliEncoderParams *,Command *,size_t *) | | BrotliZopfliCreateCommands | 3 | int * |
+| (const size_t,const size_t,const ZopfliNode *,int *,size_t *,const BrotliEncoderParams *,Command *,size_t *) | | BrotliZopfliCreateCommands | 4 | size_t * |
+| (const size_t,const size_t,const ZopfliNode *,int *,size_t *,const BrotliEncoderParams *,Command *,size_t *) | | BrotliZopfliCreateCommands | 5 | const BrotliEncoderParams * |
+| (const size_t,const size_t,const ZopfliNode *,int *,size_t *,const BrotliEncoderParams *,Command *,size_t *) | | BrotliZopfliCreateCommands | 6 | Command * |
+| (const size_t,const size_t,const ZopfliNode *,int *,size_t *,const BrotliEncoderParams *,Command *,size_t *) | | BrotliZopfliCreateCommands | 7 | size_t * |
+| (const sockaddr *,char *,size_t) | | uv_ip_name | 0 | const sockaddr * |
+| (const sockaddr *,char *,size_t) | | uv_ip_name | 1 | char * |
+| (const sockaddr *,char *,size_t) | | uv_ip_name | 2 | size_t |
+| (const sockaddr_in6 *,char *,size_t) | | uv_ip6_name | 0 | const sockaddr_in6 * |
+| (const sockaddr_in6 *,char *,size_t) | | uv_ip6_name | 1 | char * |
+| (const sockaddr_in6 *,char *,size_t) | | uv_ip6_name | 2 | size_t |
+| (const sockaddr_in *,char *,size_t) | | uv_ip4_name | 0 | const sockaddr_in * |
+| (const sockaddr_in *,char *,size_t) | | uv_ip4_name | 1 | char * |
+| (const sockaddr_in *,char *,size_t) | | uv_ip4_name | 2 | size_t |
| (const sqlite3_value *) | | sqlite3_value_dup | 0 | const sqlite3_value * |
| (const stack_st_SCT *,unsigned char **) | | i2d_SCT_LIST | 0 | const stack_st_SCT * |
| (const stack_st_SCT *,unsigned char **) | | i2d_SCT_LIST | 1 | unsigned char ** |
@@ -25099,6 +29315,12 @@ getSignatureParameterName
| (const stack_st_X509_EXTENSION *,int,int) | | X509v3_get_ext_by_critical | 1 | int |
| (const stack_st_X509_EXTENSION *,int,int) | | X509v3_get_ext_by_critical | 2 | int |
| (const stack_st_X509_NAME *) | | SSL_dup_CA_list | 0 | const stack_st_X509_NAME * |
+| (const stat *) | | get_stat_atime | 0 | const stat * |
+| (const stat *) | | get_stat_atime_ns | 0 | const stat * |
+| (const stat *) | | get_stat_ctime | 0 | const stat * |
+| (const stat *) | | get_stat_ctime_ns | 0 | const stat * |
+| (const stat *) | | get_stat_mtime | 0 | const stat * |
+| (const stat *) | | get_stat_mtime_ns | 0 | const stat * |
| (const time_t *,tm *) | | OPENSSL_gmtime | 0 | const time_t * |
| (const time_t *,tm *) | | OPENSSL_gmtime | 1 | tm * |
| (const u128[16],uint8_t *,const uint8_t *,size_t) | | ossl_polyval_ghash_hash | 0 | const u128[16] |
@@ -25107,6 +29329,10 @@ getSignatureParameterName
| (const u128[16],uint8_t *,const uint8_t *,size_t) | | ossl_polyval_ghash_hash | 3 | size_t |
| (const uint8_t *,SM4_KEY *) | | ossl_sm4_set_key | 0 | const uint8_t * |
| (const uint8_t *,SM4_KEY *) | | ossl_sm4_set_key | 1 | SM4_KEY * |
+| (const uint8_t *,const uint8_t *,uint8_t **,int) | | idn2_register_u8 | 0 | const uint8_t * |
+| (const uint8_t *,const uint8_t *,uint8_t **,int) | | idn2_register_u8 | 1 | const uint8_t * |
+| (const uint8_t *,const uint8_t *,uint8_t **,int) | | idn2_register_u8 | 2 | uint8_t ** |
+| (const uint8_t *,const uint8_t *,uint8_t **,int) | | idn2_register_u8 | 3 | int |
| (const uint8_t *,int,int,PROV_CTX *,const char *) | | ossl_ml_dsa_d2i_PKCS8 | 0 | const uint8_t * |
| (const uint8_t *,int,int,PROV_CTX *,const char *) | | ossl_ml_dsa_d2i_PKCS8 | 1 | int |
| (const uint8_t *,int,int,PROV_CTX *,const char *) | | ossl_ml_dsa_d2i_PKCS8 | 2 | int |
@@ -25129,8 +29355,15 @@ getSignatureParameterName
| (const uint8_t *,int,int,PROV_CTX *,const char *) | | ossl_ml_kem_d2i_PUBKEY | 4 | const char * |
| (const uint8_t *,size_t) | | FuzzerTestOneInput | 0 | const uint8_t * |
| (const uint8_t *,size_t) | | FuzzerTestOneInput | 1 | size_t |
+| (const uint8_t *,size_t) | | nghttp2_hd_huff_encode_count | 0 | const uint8_t * |
+| (const uint8_t *,size_t) | | nghttp2_hd_huff_encode_count | 1 | size_t |
| (const uint8_t *,size_t) | | ossl_ed448_pubkey_verify | 0 | const uint8_t * |
| (const uint8_t *,size_t) | | ossl_ed448_pubkey_verify | 1 | size_t |
+| (const uint8_t *,size_t,HuffmanTree *,size_t *,uint8_t *) | | BrotliStoreHuffmanTree | 0 | const uint8_t * |
+| (const uint8_t *,size_t,HuffmanTree *,size_t *,uint8_t *) | | BrotliStoreHuffmanTree | 1 | size_t |
+| (const uint8_t *,size_t,HuffmanTree *,size_t *,uint8_t *) | | BrotliStoreHuffmanTree | 2 | HuffmanTree * |
+| (const uint8_t *,size_t,HuffmanTree *,size_t *,uint8_t *) | | BrotliStoreHuffmanTree | 3 | size_t * |
+| (const uint8_t *,size_t,HuffmanTree *,size_t *,uint8_t *) | | BrotliStoreHuffmanTree | 4 | uint8_t * |
| (const uint8_t *,size_t,ML_KEM_KEY *) | | ossl_ml_kem_parse_private_key | 0 | const uint8_t * |
| (const uint8_t *,size_t,ML_KEM_KEY *) | | ossl_ml_kem_parse_private_key | 1 | size_t |
| (const uint8_t *,size_t,ML_KEM_KEY *) | | ossl_ml_kem_parse_private_key | 2 | ML_KEM_KEY * |
@@ -25140,12 +29373,46 @@ getSignatureParameterName
| (const uint8_t *,size_t,ML_KEM_KEY *) | | ossl_ml_kem_set_seed | 0 | const uint8_t * |
| (const uint8_t *,size_t,ML_KEM_KEY *) | | ossl_ml_kem_set_seed | 1 | size_t |
| (const uint8_t *,size_t,ML_KEM_KEY *) | | ossl_ml_kem_set_seed | 2 | ML_KEM_KEY * |
+| (const uint8_t *,size_t,size_t *,uint8_t *,uint8_t *) | | BrotliWriteHuffmanTree | 0 | const uint8_t * |
+| (const uint8_t *,size_t,size_t *,uint8_t *,uint8_t *) | | BrotliWriteHuffmanTree | 1 | size_t |
+| (const uint8_t *,size_t,size_t *,uint8_t *,uint8_t *) | | BrotliWriteHuffmanTree | 2 | size_t * |
+| (const uint8_t *,size_t,size_t *,uint8_t *,uint8_t *) | | BrotliWriteHuffmanTree | 3 | uint8_t * |
+| (const uint8_t *,size_t,size_t *,uint8_t *,uint8_t *) | | BrotliWriteHuffmanTree | 4 | uint8_t * |
+| (const uint8_t *,size_t,uint16_t *) | | BrotliConvertBitDepthsToSymbols | 0 | const uint8_t * |
+| (const uint8_t *,size_t,uint16_t *) | | BrotliConvertBitDepthsToSymbols | 1 | size_t |
+| (const uint8_t *,size_t,uint16_t *) | | BrotliConvertBitDepthsToSymbols | 2 | uint16_t * |
+| (const uint8_t *,uint8_t **,int) | | idn2_lookup_u8 | 0 | const uint8_t * |
+| (const uint8_t *,uint8_t **,int) | | idn2_lookup_u8 | 1 | uint8_t ** |
+| (const uint8_t *,uint8_t **,int) | | idn2_lookup_u8 | 2 | int |
| (const uint8_t *,uint8_t *,const SM4_KEY *) | | ossl_sm4_decrypt | 0 | const uint8_t * |
| (const uint8_t *,uint8_t *,const SM4_KEY *) | | ossl_sm4_decrypt | 1 | uint8_t * |
| (const uint8_t *,uint8_t *,const SM4_KEY *) | | ossl_sm4_decrypt | 2 | const SM4_KEY * |
| (const uint8_t *,uint8_t *,const SM4_KEY *) | | ossl_sm4_encrypt | 0 | const uint8_t * |
| (const uint8_t *,uint8_t *,const SM4_KEY *) | | ossl_sm4_encrypt | 1 | uint8_t * |
| (const uint8_t *,uint8_t *,const SM4_KEY *) | | ossl_sm4_encrypt | 2 | const SM4_KEY * |
+| (const uint16_t *,ssize_t,char **,size_t *) | | uv_utf16_to_wtf8 | 0 | const uint16_t * |
+| (const uint16_t *,ssize_t,char **,size_t *) | | uv_utf16_to_wtf8 | 1 | ssize_t |
+| (const uint16_t *,ssize_t,char **,size_t *) | | uv_utf16_to_wtf8 | 2 | char ** |
+| (const uint16_t *,ssize_t,char **,size_t *) | | uv_utf16_to_wtf8 | 3 | size_t * |
+| (const uint32_t *,const size_t,const int,HuffmanTree *,uint8_t *) | | BrotliCreateHuffmanTree | 0 | const uint32_t * |
+| (const uint32_t *,const size_t,const int,HuffmanTree *,uint8_t *) | | BrotliCreateHuffmanTree | 1 | const size_t |
+| (const uint32_t *,const size_t,const int,HuffmanTree *,uint8_t *) | | BrotliCreateHuffmanTree | 2 | const int |
+| (const uint32_t *,const size_t,const int,HuffmanTree *,uint8_t *) | | BrotliCreateHuffmanTree | 3 | HuffmanTree * |
+| (const uint32_t *,const size_t,const int,HuffmanTree *,uint8_t *) | | BrotliCreateHuffmanTree | 4 | uint8_t * |
+| (const uint32_t *,size_t,char *,size_t *) | | idn2_punycode_encode | 0 | const uint32_t * |
+| (const uint32_t *,size_t,char *,size_t *) | | idn2_punycode_encode | 1 | size_t |
+| (const uint32_t *,size_t,char *,size_t *) | | idn2_punycode_encode | 2 | char * |
+| (const uint32_t *,size_t,char *,size_t *) | | idn2_punycode_encode | 3 | size_t * |
+| (const uint32_t *,size_t,uint32_t *,size_t *,int) | | idn2_to_unicode_44i | 0 | const uint32_t * |
+| (const uint32_t *,size_t,uint32_t *,size_t *,int) | | idn2_to_unicode_44i | 1 | size_t |
+| (const uint32_t *,size_t,uint32_t *,size_t *,int) | | idn2_to_unicode_44i | 2 | uint32_t * |
+| (const uint32_t *,size_t,uint32_t *,size_t *,int) | | idn2_to_unicode_44i | 3 | size_t * |
+| (const uint32_t *,size_t,uint32_t *,size_t *,int) | | idn2_to_unicode_44i | 4 | int |
+| (const unsigned char *) | | Curl_read16_be | 0 | const unsigned char * |
+| (const unsigned char *) | | Curl_read16_le | 0 | const unsigned char * |
+| (const unsigned char *) | | Curl_read32_le | 0 | const unsigned char * |
+| (const unsigned char *) | | _libssh2_ntohu32 | 0 | const unsigned char * |
+| (const unsigned char *) | | _libssh2_ntohu64 | 0 | const unsigned char * |
| (const unsigned char *) | | ossl_quic_vlint_decode_unchecked | 0 | const unsigned char * |
| (const unsigned char *) | CStringT | CStringT | 0 | const unsigned char * |
| (const unsigned char *) | CStringT | operator= | 0 | const unsigned char * |
@@ -25164,6 +29431,10 @@ getSignatureParameterName
| (const unsigned char **,long,OSSL_LIB_CTX *,const char *) | | ossl_d2i_X509_PUBKEY_INTERNAL | 1 | long |
| (const unsigned char **,long,OSSL_LIB_CTX *,const char *) | | ossl_d2i_X509_PUBKEY_INTERNAL | 2 | OSSL_LIB_CTX * |
| (const unsigned char **,long,OSSL_LIB_CTX *,const char *) | | ossl_d2i_X509_PUBKEY_INTERNAL | 3 | const char * |
+| (const unsigned char **,unsigned char *,const unsigned char *,unsigned int) | | nghttp2_select_alpn | 0 | const unsigned char ** |
+| (const unsigned char **,unsigned char *,const unsigned char *,unsigned int) | | nghttp2_select_alpn | 1 | unsigned char * |
+| (const unsigned char **,unsigned char *,const unsigned char *,unsigned int) | | nghttp2_select_alpn | 2 | const unsigned char * |
+| (const unsigned char **,unsigned char *,const unsigned char *,unsigned int) | | nghttp2_select_alpn | 3 | unsigned int |
| (const unsigned char **,unsigned int,int *) | | ossl_b2i | 0 | const unsigned char ** |
| (const unsigned char **,unsigned int,int *) | | ossl_b2i | 1 | unsigned int |
| (const unsigned char **,unsigned int,int *) | | ossl_b2i | 2 | int * |
@@ -25328,6 +29599,10 @@ getSignatureParameterName
| (const unsigned char *,size_t,unsigned char *) | | ossl_sha1 | 0 | const unsigned char * |
| (const unsigned char *,size_t,unsigned char *) | | ossl_sha1 | 1 | size_t |
| (const unsigned char *,size_t,unsigned char *) | | ossl_sha1 | 2 | unsigned char * |
+| (const unsigned char *,size_t,unsigned char *,size_t) | | Curl_hexencode | 0 | const unsigned char * |
+| (const unsigned char *,size_t,unsigned char *,size_t) | | Curl_hexencode | 1 | size_t |
+| (const unsigned char *,size_t,unsigned char *,size_t) | | Curl_hexencode | 2 | unsigned char * |
+| (const unsigned char *,size_t,unsigned char *,size_t) | | Curl_hexencode | 3 | size_t |
| (const unsigned char *,unsigned char *,IDEA_KEY_SCHEDULE *) | | IDEA_ecb_encrypt | 0 | const unsigned char * |
| (const unsigned char *,unsigned char *,IDEA_KEY_SCHEDULE *) | | IDEA_ecb_encrypt | 1 | unsigned char * |
| (const unsigned char *,unsigned char *,IDEA_KEY_SCHEDULE *) | | IDEA_ecb_encrypt | 2 | IDEA_KEY_SCHEDULE * |
@@ -25706,6 +29981,61 @@ getSignatureParameterName
| (const unsigned char[16],unsigned char[16],const SEED_KEY_SCHEDULE *) | | SEED_encrypt | 0 | const unsigned char[16] |
| (const unsigned char[16],unsigned char[16],const SEED_KEY_SCHEDULE *) | | SEED_encrypt | 1 | unsigned char[16] |
| (const unsigned char[16],unsigned char[16],const SEED_KEY_SCHEDULE *) | | SEED_encrypt | 2 | const SEED_KEY_SCHEDULE * |
+| (const uv__io_t *,unsigned int) | | uv__io_active | 0 | const uv__io_t * |
+| (const uv__io_t *,unsigned int) | | uv__io_active | 1 | unsigned int |
+| (const uv__statx *,uv_stat_t *) | | uv__statx_to_stat | 0 | const uv__statx * |
+| (const uv__statx *,uv_stat_t *) | | uv__statx_to_stat | 1 | uv_stat_t * |
+| (const uv_buf_t[],unsigned int) | | uv__count_bufs | 0 | const uv_buf_t[] |
+| (const uv_buf_t[],unsigned int) | | uv__count_bufs | 1 | unsigned int |
+| (const uv_fs_t *) | | uv_fs_get_path | 0 | const uv_fs_t * |
+| (const uv_fs_t *) | | uv_fs_get_ptr | 0 | const uv_fs_t * |
+| (const uv_fs_t *) | | uv_fs_get_result | 0 | const uv_fs_t * |
+| (const uv_fs_t *) | | uv_fs_get_system_error | 0 | const uv_fs_t * |
+| (const uv_fs_t *) | | uv_fs_get_type | 0 | const uv_fs_t * |
+| (const uv_handle_t *) | | uv_handle_get_data | 0 | const uv_handle_t * |
+| (const uv_handle_t *) | | uv_handle_get_loop | 0 | const uv_handle_t * |
+| (const uv_handle_t *) | | uv_handle_get_type | 0 | const uv_handle_t * |
+| (const uv_handle_t *) | | uv_has_ref | 0 | const uv_handle_t * |
+| (const uv_handle_t *) | | uv_is_active | 0 | const uv_handle_t * |
+| (const uv_handle_t *) | | uv_is_closing | 0 | const uv_handle_t * |
+| (const uv_handle_t *,uv__peersockfunc,sockaddr *,int *) | | uv__getsockpeername | 0 | const uv_handle_t * |
+| (const uv_handle_t *,uv__peersockfunc,sockaddr *,int *) | | uv__getsockpeername | 1 | uv__peersockfunc |
+| (const uv_handle_t *,uv__peersockfunc,sockaddr *,int *) | | uv__getsockpeername | 2 | sockaddr * |
+| (const uv_handle_t *,uv__peersockfunc,sockaddr *,int *) | | uv__getsockpeername | 3 | int * |
+| (const uv_handle_t *,uv_os_fd_t *) | | uv_fileno | 0 | const uv_handle_t * |
+| (const uv_handle_t *,uv_os_fd_t *) | | uv_fileno | 1 | uv_os_fd_t * |
+| (const uv_lib_t *) | | uv_dlerror | 0 | const uv_lib_t * |
+| (const uv_loop_t *) | | uv__next_timeout | 0 | const uv_loop_t * |
+| (const uv_loop_t *) | | uv_backend_fd | 0 | const uv_loop_t * |
+| (const uv_loop_t *) | | uv_backend_timeout | 0 | const uv_loop_t * |
+| (const uv_loop_t *) | | uv_loop_get_data | 0 | const uv_loop_t * |
+| (const uv_loop_t *) | | uv_now | 0 | const uv_loop_t * |
+| (const uv_pipe_t *,char *,size_t *) | | uv_pipe_getpeername | 0 | const uv_pipe_t * |
+| (const uv_pipe_t *,char *,size_t *) | | uv_pipe_getpeername | 1 | char * |
+| (const uv_pipe_t *,char *,size_t *) | | uv_pipe_getpeername | 2 | size_t * |
+| (const uv_pipe_t *,char *,size_t *) | | uv_pipe_getsockname | 0 | const uv_pipe_t * |
+| (const uv_pipe_t *,char *,size_t *) | | uv_pipe_getsockname | 1 | char * |
+| (const uv_pipe_t *,char *,size_t *) | | uv_pipe_getsockname | 2 | size_t * |
+| (const uv_process_t *) | | uv_process_get_pid | 0 | const uv_process_t * |
+| (const uv_req_t *) | | uv_req_get_data | 0 | const uv_req_t * |
+| (const uv_req_t *) | | uv_req_get_type | 0 | const uv_req_t * |
+| (const uv_stream_t *) | | uv_stream_get_write_queue_size | 0 | const uv_stream_t * |
+| (const uv_tcp_t *,sockaddr *,int *) | | uv_tcp_getpeername | 0 | const uv_tcp_t * |
+| (const uv_tcp_t *,sockaddr *,int *) | | uv_tcp_getpeername | 1 | sockaddr * |
+| (const uv_tcp_t *,sockaddr *,int *) | | uv_tcp_getpeername | 2 | int * |
+| (const uv_tcp_t *,sockaddr *,int *) | | uv_tcp_getsockname | 0 | const uv_tcp_t * |
+| (const uv_tcp_t *,sockaddr *,int *) | | uv_tcp_getsockname | 1 | sockaddr * |
+| (const uv_tcp_t *,sockaddr *,int *) | | uv_tcp_getsockname | 2 | int * |
+| (const uv_timer_t *) | | uv_timer_get_due_in | 0 | const uv_timer_t * |
+| (const uv_timer_t *) | | uv_timer_get_repeat | 0 | const uv_timer_t * |
+| (const uv_udp_t *) | | uv_udp_get_send_queue_count | 0 | const uv_udp_t * |
+| (const uv_udp_t *) | | uv_udp_get_send_queue_size | 0 | const uv_udp_t * |
+| (const uv_udp_t *,sockaddr *,int *) | | uv_udp_getpeername | 0 | const uv_udp_t * |
+| (const uv_udp_t *,sockaddr *,int *) | | uv_udp_getpeername | 1 | sockaddr * |
+| (const uv_udp_t *,sockaddr *,int *) | | uv_udp_getpeername | 2 | int * |
+| (const uv_udp_t *,sockaddr *,int *) | | uv_udp_getsockname | 0 | const uv_udp_t * |
+| (const uv_udp_t *,sockaddr *,int *) | | uv_udp_getsockname | 1 | sockaddr * |
+| (const uv_udp_t *,sockaddr *,int *) | | uv_udp_getsockname | 2 | int * |
| (const vector &) | vector | vector | 0 | const vector & |
| (const vector &,const Allocator &) | vector | vector | 0 | const vector & |
| (const vector &,const Allocator &) | vector | vector | 1 | const class:1 & |
@@ -25731,6 +30061,11 @@ getSignatureParameterName
| (const void *,const void *,int,int,..(*)(..),int) | | ossl_bsearch | 3 | int |
| (const void *,const void *,int,int,..(*)(..),int) | | ossl_bsearch | 4 | ..(*)(..) |
| (const void *,const void *,int,int,..(*)(..),int) | | ossl_bsearch | 5 | int |
+| (const void *,const void *,size_t) | | chachapoly_timingsafe_bcmp | 0 | const void * |
+| (const void *,const void *,size_t) | | chachapoly_timingsafe_bcmp | 1 | const void * |
+| (const void *,const void *,size_t) | | chachapoly_timingsafe_bcmp | 2 | size_t |
+| (const void *,size_t) | | Curl_memdup | 0 | const void * |
+| (const void *,size_t) | | Curl_memdup | 1 | size_t |
| (const void *,size_t,const char *,int) | | CRYPTO_memdup | 0 | const void * |
| (const void *,size_t,const char *,int) | | CRYPTO_memdup | 1 | size_t |
| (const void *,size_t,const char *,int) | | CRYPTO_memdup | 2 | const char * |
@@ -25785,6 +30120,79 @@ getSignatureParameterName
| (const_iterator,size_type,const T &) | vector | insert | 0 | const_iterator |
| (const_iterator,size_type,const T &) | vector | insert | 1 | size_type |
| (const_iterator,size_type,const T &) | vector | insert | 2 | const class:0 & |
+| (cpool *,Curl_cpool_disconnect_cb *,Curl_multi *,Curl_share *,size_t) | | Curl_cpool_init | 0 | cpool * |
+| (cpool *,Curl_cpool_disconnect_cb *,Curl_multi *,Curl_share *,size_t) | | Curl_cpool_init | 1 | Curl_cpool_disconnect_cb * |
+| (cpool *,Curl_cpool_disconnect_cb *,Curl_multi *,Curl_share *,size_t) | | Curl_cpool_init | 2 | Curl_multi * |
+| (cpool *,Curl_cpool_disconnect_cb *,Curl_multi *,Curl_share *,size_t) | | Curl_cpool_init | 3 | Curl_share * |
+| (cpool *,Curl_cpool_disconnect_cb *,Curl_multi *,Curl_share *,size_t) | | Curl_cpool_init | 4 | size_t |
+| (cpool *,fd_set *,fd_set *,int *) | | Curl_cpool_setfds | 0 | cpool * |
+| (cpool *,fd_set *,fd_set *,int *) | | Curl_cpool_setfds | 1 | fd_set * |
+| (cpool *,fd_set *,fd_set *,int *) | | Curl_cpool_setfds | 2 | fd_set * |
+| (cpool *,fd_set *,fd_set *,int *) | | Curl_cpool_setfds | 3 | int * |
+| (curl_blob **,const curl_blob *) | | Curl_setblobopt | 0 | curl_blob ** |
+| (curl_blob **,const curl_blob *) | | Curl_setblobopt | 1 | const curl_blob * |
+| (curl_httppost **,curl_httppost **,...) | | curl_formadd | 0 | curl_httppost ** |
+| (curl_httppost **,curl_httppost **,...) | | curl_formadd | 1 | curl_httppost ** |
+| (curl_httppost **,curl_httppost **,...) | | curl_formadd | 2 | ... |
+| (curl_mime *) | | curl_mime_addpart | 0 | curl_mime * |
+| (curl_mimepart *) | | Curl_mime_cleanpart | 0 | curl_mimepart * |
+| (curl_mimepart *,const char *) | | curl_mime_filedata | 0 | curl_mimepart * |
+| (curl_mimepart *,const char *) | | curl_mime_filedata | 1 | const char * |
+| (curl_mimepart *,const char *,size_t) | | curl_mime_data | 0 | curl_mimepart * |
+| (curl_mimepart *,const char *,size_t) | | curl_mime_data | 1 | const char * |
+| (curl_mimepart *,const char *,size_t) | | curl_mime_data | 2 | size_t |
+| (curl_mimepart *,curl_mime *) | | curl_mime_subparts | 0 | curl_mimepart * |
+| (curl_mimepart *,curl_mime *) | | curl_mime_subparts | 1 | curl_mime * |
+| (curl_mimepart *,curl_mime *,int) | | Curl_mime_set_subparts | 0 | curl_mimepart * |
+| (curl_mimepart *,curl_mime *,int) | | Curl_mime_set_subparts | 1 | curl_mime * |
+| (curl_mimepart *,curl_mime *,int) | | Curl_mime_set_subparts | 2 | int |
+| (curl_mimepart *,curl_off_t,curl_read_callback,curl_seek_callback,curl_free_callback,void *) | | curl_mime_data_cb | 0 | curl_mimepart * |
+| (curl_mimepart *,curl_off_t,curl_read_callback,curl_seek_callback,curl_free_callback,void *) | | curl_mime_data_cb | 1 | curl_off_t |
+| (curl_mimepart *,curl_off_t,curl_read_callback,curl_seek_callback,curl_free_callback,void *) | | curl_mime_data_cb | 2 | curl_read_callback |
+| (curl_mimepart *,curl_off_t,curl_read_callback,curl_seek_callback,curl_free_callback,void *) | | curl_mime_data_cb | 3 | curl_seek_callback |
+| (curl_mimepart *,curl_off_t,curl_read_callback,curl_seek_callback,curl_free_callback,void *) | | curl_mime_data_cb | 4 | curl_free_callback |
+| (curl_mimepart *,curl_off_t,curl_read_callback,curl_seek_callback,curl_free_callback,void *) | | curl_mime_data_cb | 5 | void * |
+| (curl_mimepart *,curl_slist *,int) | | curl_mime_headers | 0 | curl_mimepart * |
+| (curl_mimepart *,curl_slist *,int) | | curl_mime_headers | 1 | curl_slist * |
+| (curl_mimepart *,curl_slist *,int) | | curl_mime_headers | 2 | int |
+| (curl_off_t *,const char *) | | str2offset | 0 | curl_off_t * |
+| (curl_off_t *,const char *) | | str2offset | 1 | const char * |
+| (curl_off_t) | | curlx_sotouz | 0 | curl_off_t |
+| (curl_pollfds *,curl_socket_t,short) | | Curl_pollfds_add_sock | 0 | curl_pollfds * |
+| (curl_pollfds *,curl_socket_t,short) | | Curl_pollfds_add_sock | 1 | curl_socket_t |
+| (curl_pollfds *,curl_socket_t,short) | | Curl_pollfds_add_sock | 2 | short |
+| (curl_pollfds *,easy_pollset *) | | Curl_pollfds_add_ps | 0 | curl_pollfds * |
+| (curl_pollfds *,easy_pollset *) | | Curl_pollfds_add_ps | 1 | easy_pollset * |
+| (curl_pollfds *,pollfd *,unsigned int) | | Curl_pollfds_init | 0 | curl_pollfds * |
+| (curl_pollfds *,pollfd *,unsigned int) | | Curl_pollfds_init | 1 | pollfd * |
+| (curl_pollfds *,pollfd *,unsigned int) | | Curl_pollfds_init | 2 | unsigned int |
+| (curl_pushheaders *,const char *) | | curl_pushheader_byname | 0 | curl_pushheaders * |
+| (curl_pushheaders *,const char *) | | curl_pushheader_byname | 1 | const char * |
+| (curl_pushheaders *,size_t) | | curl_pushheader_bynum | 0 | curl_pushheaders * |
+| (curl_pushheaders *,size_t) | | curl_pushheader_bynum | 1 | size_t |
+| (curl_slist *) | | Curl_slist_duplicate | 0 | curl_slist * |
+| (curl_slist **,const char *) | | add2list | 0 | curl_slist ** |
+| (curl_slist **,const char *) | | add2list | 1 | const char * |
+| (curl_slist *,char *) | | Curl_slist_append_nodup | 0 | curl_slist * |
+| (curl_slist *,char *) | | Curl_slist_append_nodup | 1 | char * |
+| (curl_slist *,const char *) | | curl_slist_append | 0 | curl_slist * |
+| (curl_slist *,const char *) | | curl_slist_append | 1 | const char * |
+| (curl_socket_t[2],bool) | | Curl_eventfd | 0 | curl_socket_t[2] |
+| (curl_socket_t[2],bool) | | Curl_eventfd | 1 | bool |
+| (curltime,Curl_tree *) | | Curl_splay | 0 | curltime |
+| (curltime,Curl_tree *) | | Curl_splay | 1 | Curl_tree * |
+| (curltime,Curl_tree *,Curl_tree *) | | Curl_splayinsert | 0 | curltime |
+| (curltime,Curl_tree *,Curl_tree *) | | Curl_splayinsert | 1 | Curl_tree * |
+| (curltime,Curl_tree *,Curl_tree *) | | Curl_splayinsert | 2 | Curl_tree * |
+| (curltime,Curl_tree *,Curl_tree **) | | Curl_splaygetbest | 0 | curltime |
+| (curltime,Curl_tree *,Curl_tree **) | | Curl_splaygetbest | 1 | Curl_tree * |
+| (curltime,Curl_tree *,Curl_tree **) | | Curl_splaygetbest | 2 | Curl_tree ** |
+| (curltime,curltime) | | Curl_timediff | 0 | curltime |
+| (curltime,curltime) | | Curl_timediff | 1 | curltime |
+| (curltime,curltime) | | Curl_timediff_ceil | 0 | curltime |
+| (curltime,curltime) | | Curl_timediff_ceil | 1 | curltime |
+| (curltime,curltime) | | Curl_timediff_us | 0 | curltime |
+| (curltime,curltime) | | Curl_timediff_us | 1 | curltime |
| (curve448_point_t,const curve448_point_t) | | ossl_curve448_point_double | 0 | curve448_point_t |
| (curve448_point_t,const curve448_point_t) | | ossl_curve448_point_double | 1 | const curve448_point_t |
| (curve448_point_t,const curve448_precomputed_s *,const curve448_scalar_t) | | ossl_curve448_precomputed_scalarmul | 0 | curve448_point_t |
@@ -25826,14 +30234,99 @@ getSignatureParameterName
| (d2i_of_void *,const char *,FILE *,void **,pem_password_cb *,void *) | | PEM_ASN1_read | 3 | void ** |
| (d2i_of_void *,const char *,FILE *,void **,pem_password_cb *,void *) | | PEM_ASN1_read | 4 | pem_password_cb * |
| (d2i_of_void *,const char *,FILE *,void **,pem_password_cb *,void *) | | PEM_ASN1_read | 5 | void * |
+| (deflate_state *,charf *,ulg,int) | | _tr_flush_block | 0 | deflate_state * |
+| (deflate_state *,charf *,ulg,int) | | _tr_flush_block | 1 | charf * |
+| (deflate_state *,charf *,ulg,int) | | _tr_flush_block | 2 | ulg |
+| (deflate_state *,charf *,ulg,int) | | _tr_flush_block | 3 | int |
+| (deflate_state *,charf *,ulg,int) | | _tr_stored_block | 0 | deflate_state * |
+| (deflate_state *,charf *,ulg,int) | | _tr_stored_block | 1 | charf * |
+| (deflate_state *,charf *,ulg,int) | | _tr_stored_block | 2 | ulg |
+| (deflate_state *,charf *,ulg,int) | | _tr_stored_block | 3 | int |
+| (deflate_state *,unsigned int,unsigned int) | | _tr_tally | 0 | deflate_state * |
+| (deflate_state *,unsigned int,unsigned int) | | _tr_tally | 1 | unsigned int |
+| (deflate_state *,unsigned int,unsigned int) | | _tr_tally | 2 | unsigned int |
| (deque &&) | deque | deque | 0 | deque && |
| (deque &&,const Allocator &) | deque | deque | 0 | deque && |
| (deque &&,const Allocator &) | deque | deque | 1 | const class:1 & |
+| (dynbuf *) | | Curl_dyn_free | 0 | dynbuf * |
+| (dynbuf *) | | curlx_dyn_free | 0 | dynbuf * |
+| (dynbuf *,Curl_easy *) | | Curl_http2_request_upgrade | 0 | dynbuf * |
+| (dynbuf *,Curl_easy *) | | Curl_http2_request_upgrade | 1 | Curl_easy * |
+| (dynbuf *,FILE *) | | Curl_get_line | 0 | dynbuf * |
+| (dynbuf *,FILE *) | | Curl_get_line | 1 | FILE * |
+| (dynbuf *,FILE *) | | curlx_get_line | 0 | dynbuf * |
+| (dynbuf *,FILE *) | | curlx_get_line | 1 | FILE * |
+| (dynbuf *,const char *) | | Curl_dyn_add | 0 | dynbuf * |
+| (dynbuf *,const char *) | | Curl_dyn_add | 1 | const char * |
+| (dynbuf *,const char *) | | curlx_dyn_add | 0 | dynbuf * |
+| (dynbuf *,const char *) | | curlx_dyn_add | 1 | const char * |
+| (dynbuf *,const char *,va_list) | | Curl_dyn_vaddf | 0 | dynbuf * |
+| (dynbuf *,const char *,va_list) | | Curl_dyn_vaddf | 1 | const char * |
+| (dynbuf *,const char *,va_list) | | Curl_dyn_vaddf | 2 | va_list |
+| (dynbuf *,const char *,va_list) | | Curl_dyn_vprintf | 0 | dynbuf * |
+| (dynbuf *,const char *,va_list) | | Curl_dyn_vprintf | 1 | const char * |
+| (dynbuf *,const char *,va_list) | | Curl_dyn_vprintf | 2 | va_list |
+| (dynbuf *,const char *,va_list) | | curlx_dyn_vaddf | 0 | dynbuf * |
+| (dynbuf *,const char *,va_list) | | curlx_dyn_vaddf | 1 | const char * |
+| (dynbuf *,const char *,va_list) | | curlx_dyn_vaddf | 2 | va_list |
+| (dynbuf *,const void *,size_t) | | Curl_dyn_addn | 0 | dynbuf * |
+| (dynbuf *,const void *,size_t) | | Curl_dyn_addn | 1 | const void * |
+| (dynbuf *,const void *,size_t) | | Curl_dyn_addn | 2 | size_t |
+| (dynbuf *,const void *,size_t) | | curlx_dyn_addn | 0 | dynbuf * |
+| (dynbuf *,const void *,size_t) | | curlx_dyn_addn | 1 | const void * |
+| (dynbuf *,const void *,size_t) | | curlx_dyn_addn | 2 | size_t |
+| (dynbuf *,size_t *) | | Curl_dyn_take | 0 | dynbuf * |
+| (dynbuf *,size_t *) | | Curl_dyn_take | 1 | size_t * |
+| (dynbuf *,size_t *) | | curlx_dyn_take | 0 | dynbuf * |
+| (dynbuf *,size_t *) | | curlx_dyn_take | 1 | size_t * |
+| (dynbuf *,size_t) | | Curl_dyn_init | 0 | dynbuf * |
+| (dynbuf *,size_t) | | Curl_dyn_init | 1 | size_t |
+| (dynbuf *,size_t) | | Curl_dyn_setlen | 0 | dynbuf * |
+| (dynbuf *,size_t) | | Curl_dyn_setlen | 1 | size_t |
+| (dynbuf *,size_t) | | Curl_dyn_tail | 0 | dynbuf * |
+| (dynbuf *,size_t) | | Curl_dyn_tail | 1 | size_t |
+| (dynbuf *,size_t) | | curlx_dyn_init | 0 | dynbuf * |
+| (dynbuf *,size_t) | | curlx_dyn_init | 1 | size_t |
+| (dynbuf *,size_t) | | curlx_dyn_setlen | 0 | dynbuf * |
+| (dynbuf *,size_t) | | curlx_dyn_setlen | 1 | size_t |
+| (dynbuf *,size_t) | | curlx_dyn_tail | 0 | dynbuf * |
+| (dynbuf *,size_t) | | curlx_dyn_tail | 1 | size_t |
+| (dynhds *) | | Curl_dynhds_count | 0 | dynhds * |
+| (dynhds *,const char *) | | Curl_dynhds_cget | 0 | dynhds * |
+| (dynhds *,const char *) | | Curl_dynhds_cget | 1 | const char * |
+| (dynhds *,const char *) | | Curl_dynhds_h1_cadd_line | 0 | dynhds * |
+| (dynhds *,const char *) | | Curl_dynhds_h1_cadd_line | 1 | const char * |
+| (dynhds *,const char *,const char *) | | Curl_dynhds_cadd | 0 | dynhds * |
+| (dynhds *,const char *,const char *) | | Curl_dynhds_cadd | 1 | const char * |
+| (dynhds *,const char *,const char *) | | Curl_dynhds_cadd | 2 | const char * |
+| (dynhds *,const char *,size_t) | | Curl_dynhds_get | 0 | dynhds * |
+| (dynhds *,const char *,size_t) | | Curl_dynhds_get | 1 | const char * |
+| (dynhds *,const char *,size_t) | | Curl_dynhds_get | 2 | size_t |
+| (dynhds *,const char *,size_t) | | Curl_dynhds_h1_add_line | 0 | dynhds * |
+| (dynhds *,const char *,size_t) | | Curl_dynhds_h1_add_line | 1 | const char * |
+| (dynhds *,const char *,size_t) | | Curl_dynhds_h1_add_line | 2 | size_t |
+| (dynhds *,const char *,size_t,const char *,size_t) | | Curl_dynhds_add | 0 | dynhds * |
+| (dynhds *,const char *,size_t,const char *,size_t) | | Curl_dynhds_add | 1 | const char * |
+| (dynhds *,const char *,size_t,const char *,size_t) | | Curl_dynhds_add | 2 | size_t |
+| (dynhds *,const char *,size_t,const char *,size_t) | | Curl_dynhds_add | 3 | const char * |
+| (dynhds *,const char *,size_t,const char *,size_t) | | Curl_dynhds_add | 4 | size_t |
+| (dynhds *,int) | | Curl_dynhds_set_opts | 0 | dynhds * |
+| (dynhds *,int) | | Curl_dynhds_set_opts | 1 | int |
+| (dynhds *,size_t *) | | Curl_dynhds_to_nva | 0 | dynhds * |
+| (dynhds *,size_t *) | | Curl_dynhds_to_nva | 1 | size_t * |
+| (dynhds *,size_t) | | Curl_dynhds_getn | 0 | dynhds * |
+| (dynhds *,size_t) | | Curl_dynhds_getn | 1 | size_t |
+| (dynhds *,size_t,size_t) | | Curl_dynhds_init | 0 | dynhds * |
+| (dynhds *,size_t,size_t) | | Curl_dynhds_init | 1 | size_t |
+| (dynhds *,size_t,size_t) | | Curl_dynhds_init | 2 | size_t |
+| (fileinfo *) | | Curl_fileinfo_cleanup | 0 | fileinfo * |
| (format_string,Args &&) | | format | 0 | format_string |
| (format_string,Args &&) | | format | 1 | func:0 && |
| (forward_list &&) | forward_list | forward_list | 0 | forward_list && |
| (forward_list &&,const Allocator &) | forward_list | forward_list | 0 | forward_list && |
| (forward_list &&,const Allocator &) | forward_list | forward_list | 1 | const class:1 & |
+| (ftp_parselist_data *) | | Curl_ftp_parselist_geterror | 0 | ftp_parselist_data * |
+| (ftp_parselist_data **) | | Curl_ftp_parselist_data_free | 0 | ftp_parselist_data ** |
| (gf,const gf,const gf) | | gf_add | 0 | gf |
| (gf,const gf,const gf) | | gf_add | 1 | const gf |
| (gf,const gf,const gf) | | gf_add | 2 | const gf |
@@ -25844,6 +30337,78 @@ getSignatureParameterName
| (gf,const uint8_t[56],int,uint8_t) | | gf_deserialize | 1 | const uint8_t[56] |
| (gf,const uint8_t[56],int,uint8_t) | | gf_deserialize | 2 | int |
| (gf,const uint8_t[56],int,uint8_t) | | gf_deserialize | 3 | uint8_t |
+| (gzFile) | | gzclearerr | 0 | gzFile |
+| (gzFile) | | gzclose | 0 | gzFile |
+| (gzFile) | | gzclose_w | 0 | gzFile |
+| (gzFile) | | gzdirect | 0 | gzFile |
+| (gzFile) | | gzeof | 0 | gzFile |
+| (gzFile) | | gzgetc | 0 | gzFile |
+| (gzFile) | | gzgetc_ | 0 | gzFile |
+| (gzFile) | | gzoffset | 0 | gzFile |
+| (gzFile) | | gzoffset64 | 0 | gzFile |
+| (gzFile) | | gzrewind | 0 | gzFile |
+| (gzFile) | | gztell | 0 | gzFile |
+| (gzFile) | | gztell64 | 0 | gzFile |
+| (gzFile,char *,int) | | gzgets | 0 | gzFile |
+| (gzFile,char *,int) | | gzgets | 1 | char * |
+| (gzFile,char *,int) | | gzgets | 2 | int |
+| (gzFile,const char *) | | gzputs | 0 | gzFile |
+| (gzFile,const char *) | | gzputs | 1 | const char * |
+| (gzFile,const char *,va_list) | | gzvprintf | 0 | gzFile |
+| (gzFile,const char *,va_list) | | gzvprintf | 1 | const char * |
+| (gzFile,const char *,va_list) | | gzvprintf | 2 | va_list |
+| (gzFile,int *) | | gzerror | 0 | gzFile |
+| (gzFile,int *) | | gzerror | 1 | int * |
+| (gzFile,int) | | gzflush | 0 | gzFile |
+| (gzFile,int) | | gzflush | 1 | int |
+| (gzFile,int) | | gzputc | 0 | gzFile |
+| (gzFile,int) | | gzputc | 1 | int |
+| (gzFile,int,int) | | gzsetparams | 0 | gzFile |
+| (gzFile,int,int) | | gzsetparams | 1 | int |
+| (gzFile,int,int) | | gzsetparams | 2 | int |
+| (gzFile,off64_t,int) | | gzseek64 | 0 | gzFile |
+| (gzFile,off64_t,int) | | gzseek64 | 1 | off64_t |
+| (gzFile,off64_t,int) | | gzseek64 | 2 | int |
+| (gzFile,off_t,int) | | gzseek | 0 | gzFile |
+| (gzFile,off_t,int) | | gzseek | 1 | off_t |
+| (gzFile,off_t,int) | | gzseek | 2 | int |
+| (gzFile,unsigned int) | | gzbuffer | 0 | gzFile |
+| (gzFile,unsigned int) | | gzbuffer | 1 | unsigned int |
+| (gzFile,voidp,unsigned int) | | gzread | 0 | gzFile |
+| (gzFile,voidp,unsigned int) | | gzread | 1 | voidp |
+| (gzFile,voidp,unsigned int) | | gzread | 2 | unsigned int |
+| (gzFile,voidpc,unsigned int) | | gzwrite | 0 | gzFile |
+| (gzFile,voidpc,unsigned int) | | gzwrite | 1 | voidpc |
+| (gzFile,voidpc,unsigned int) | | gzwrite | 2 | unsigned int |
+| (gz_statep,int,const char *) | | gz_error | 0 | gz_statep |
+| (gz_statep,int,const char *) | | gz_error | 1 | int |
+| (gz_statep,int,const char *) | | gz_error | 2 | const char * |
+| (h1_req_parser *,const char *,size_t,const char *,int,CURLcode *) | | Curl_h1_req_parse_read | 0 | h1_req_parser * |
+| (h1_req_parser *,const char *,size_t,const char *,int,CURLcode *) | | Curl_h1_req_parse_read | 1 | const char * |
+| (h1_req_parser *,const char *,size_t,const char *,int,CURLcode *) | | Curl_h1_req_parse_read | 2 | size_t |
+| (h1_req_parser *,const char *,size_t,const char *,int,CURLcode *) | | Curl_h1_req_parse_read | 3 | const char * |
+| (h1_req_parser *,const char *,size_t,const char *,int,CURLcode *) | | Curl_h1_req_parse_read | 4 | int |
+| (h1_req_parser *,const char *,size_t,const char *,int,CURLcode *) | | Curl_h1_req_parse_read | 5 | CURLcode * |
+| (h1_req_parser *,size_t) | | Curl_h1_req_parse_init | 0 | h1_req_parser * |
+| (h1_req_parser *,size_t) | | Curl_h1_req_parse_init | 1 | size_t |
+| (hsts **) | | Curl_hsts_cleanup | 0 | hsts ** |
+| (http_resp **,int,const char *) | | Curl_http_resp_make | 0 | http_resp ** |
+| (http_resp **,int,const char *) | | Curl_http_resp_make | 1 | int |
+| (http_resp **,int,const char *) | | Curl_http_resp_make | 2 | const char * |
+| (httpreq **,const char *,size_t,CURLU *,const char *) | | Curl_http_req_make2 | 0 | httpreq ** |
+| (httpreq **,const char *,size_t,CURLU *,const char *) | | Curl_http_req_make2 | 1 | const char * |
+| (httpreq **,const char *,size_t,CURLU *,const char *) | | Curl_http_req_make2 | 2 | size_t |
+| (httpreq **,const char *,size_t,CURLU *,const char *) | | Curl_http_req_make2 | 3 | CURLU * |
+| (httpreq **,const char *,size_t,CURLU *,const char *) | | Curl_http_req_make2 | 4 | const char * |
+| (httpreq **,const char *,size_t,const char *,size_t,const char *,size_t,const char *,size_t) | | Curl_http_req_make | 0 | httpreq ** |
+| (httpreq **,const char *,size_t,const char *,size_t,const char *,size_t,const char *,size_t) | | Curl_http_req_make | 1 | const char * |
+| (httpreq **,const char *,size_t,const char *,size_t,const char *,size_t,const char *,size_t) | | Curl_http_req_make | 2 | size_t |
+| (httpreq **,const char *,size_t,const char *,size_t,const char *,size_t,const char *,size_t) | | Curl_http_req_make | 3 | const char * |
+| (httpreq **,const char *,size_t,const char *,size_t,const char *,size_t,const char *,size_t) | | Curl_http_req_make | 4 | size_t |
+| (httpreq **,const char *,size_t,const char *,size_t,const char *,size_t,const char *,size_t) | | Curl_http_req_make | 5 | const char * |
+| (httpreq **,const char *,size_t,const char *,size_t,const char *,size_t,const char *,size_t) | | Curl_http_req_make | 6 | size_t |
+| (httpreq **,const char *,size_t,const char *,size_t,const char *,size_t,const char *,size_t) | | Curl_http_req_make | 7 | const char * |
+| (httpreq **,const char *,size_t,const char *,size_t,const char *,size_t,const char *,size_t) | | Curl_http_req_make | 8 | size_t |
| (i2d_of_void *,BIO *,const void *) | | ASN1_i2d_bio | 0 | i2d_of_void * |
| (i2d_of_void *,BIO *,const void *) | | ASN1_i2d_bio | 1 | BIO * |
| (i2d_of_void *,BIO *,const void *) | | ASN1_i2d_bio | 2 | const void * |
@@ -25878,6 +30443,14 @@ getSignatureParameterName
| (i2d_of_void *,d2i_of_void *,const void *) | | ASN1_dup | 0 | i2d_of_void * |
| (i2d_of_void *,d2i_of_void *,const void *) | | ASN1_dup | 1 | d2i_of_void * |
| (i2d_of_void *,d2i_of_void *,const void *) | | ASN1_dup | 2 | const void * |
+| (int32_t *,int32_t *,int32_t *,int32_t *) | | nghttp2_adjust_local_window_size | 0 | int32_t * |
+| (int32_t *,int32_t *,int32_t *,int32_t *) | | nghttp2_adjust_local_window_size | 1 | int32_t * |
+| (int32_t *,int32_t *,int32_t *,int32_t *) | | nghttp2_adjust_local_window_size | 2 | int32_t * |
+| (int32_t *,int32_t *,int32_t *,int32_t *) | | nghttp2_adjust_local_window_size | 3 | int32_t * |
+| (int32_t *,int32_t *,int32_t *,int32_t *) | | nghttp2_increase_local_window_size | 0 | int32_t * |
+| (int32_t *,int32_t *,int32_t *,int32_t *) | | nghttp2_increase_local_window_size | 1 | int32_t * |
+| (int32_t *,int32_t *,int32_t *,int32_t *) | | nghttp2_increase_local_window_size | 2 | int32_t * |
+| (int32_t *,int32_t *,int32_t *,int32_t *) | | nghttp2_increase_local_window_size | 3 | int32_t * |
| (int64_t *,const ASN1_ENUMERATED *) | | ASN1_ENUMERATED_get_int64 | 0 | int64_t * |
| (int64_t *,const ASN1_ENUMERATED *) | | ASN1_ENUMERATED_get_int64 | 1 | const ASN1_ENUMERATED * |
| (int64_t *,const ASN1_INTEGER *) | | ASN1_INTEGER_get_int64 | 0 | int64_t * |
@@ -25900,6 +30473,9 @@ getSignatureParameterName
| (int *,const char *,const char *,const char *,const char *,int,int,int,int,int,BIO_ADDR **) | | init_client | 8 | int |
| (int *,const char *,const char *,const char *,const char *,int,int,int,int,int,BIO_ADDR **) | | init_client | 9 | int |
| (int *,const char *,const char *,const char *,const char *,int,int,int,int,int,BIO_ADDR **) | | init_client | 10 | BIO_ADDR ** |
+| (int *,const char *,size_t) | | Curl_http_decode_status | 0 | int * |
+| (int *,const char *,size_t) | | Curl_http_decode_status | 1 | const char * |
+| (int *,const char *,size_t) | | Curl_http_decode_status | 2 | size_t |
| (int *,int *,const ASN1_TIME *,const ASN1_TIME *) | | ASN1_TIME_diff | 0 | int * |
| (int *,int *,const ASN1_TIME *,const ASN1_TIME *) | | ASN1_TIME_diff | 1 | int * |
| (int *,int *,const ASN1_TIME *,const ASN1_TIME *) | | ASN1_TIME_diff | 2 | const ASN1_TIME * |
@@ -25948,6 +30524,9 @@ getSignatureParameterName
| (int) | | X509_TRUST_get0 | 0 | int |
| (int) | | X509_TRUST_get_by_id | 0 | int |
| (int) | | X509_VERIFY_PARAM_get0 | 0 | int |
+| (int) | | c_tolower | 0 | int |
+| (int) | | c_toupper | 0 | int |
+| (int) | | curlx_sitouz | 0 | int |
| (int) | | evp_pkey_type2name | 0 | int |
| (int) | | ossl_cmp_bodytype_to_string | 0 | int |
| (int) | | ossl_tolower | 0 | int |
@@ -25955,6 +30534,12 @@ getSignatureParameterName
| (int) | | sqlite3_compileoption_get | 0 | int |
| (int) | | sqlite3_errstr | 0 | int |
| (int) | | tls13_alert_code | 0 | int |
+| (int) | | uv__accept | 0 | int |
+| (int) | | uv_err_name | 0 | int |
+| (int) | | uv_get_osfhandle | 0 | int |
+| (int) | | uv_strerror | 0 | int |
+| (int) | | uv_translate_sys_error | 0 | int |
+| (int) | | zError | 0 | int |
| (int,BIO_ADDR *,int) | | BIO_accept_ex | 0 | int |
| (int,BIO_ADDR *,int) | | BIO_accept_ex | 1 | BIO_ADDR * |
| (int,BIO_ADDR *,int) | | BIO_accept_ex | 2 | int |
@@ -26048,6 +30633,8 @@ getSignatureParameterName
| (int,XCHAR) | CStringT | Insert | 1 | XCHAR |
| (int,char **) | | BIO_accept | 0 | int |
| (int,char **) | | BIO_accept | 1 | char ** |
+| (int,char **) | | uv_setup_args | 0 | int |
+| (int,char **) | | uv_setup_args | 1 | char ** |
| (int,char **,char *[]) | | ca_main | 0 | int |
| (int,char **,char *[]) | | ca_main | 1 | char ** |
| (int,char **,char *[]) | | ca_main | 2 | char *[] |
@@ -26204,6 +30791,19 @@ getSignatureParameterName
| (int,char **,const OPTIONS *) | | opt_init | 0 | int |
| (int,char **,const OPTIONS *) | | opt_init | 1 | char ** |
| (int,char **,const OPTIONS *) | | opt_init | 2 | const OPTIONS * |
+| (int,char **,gengetopt_args_info *) | | cmdline_parser | 0 | int |
+| (int,char **,gengetopt_args_info *) | | cmdline_parser | 1 | char ** |
+| (int,char **,gengetopt_args_info *) | | cmdline_parser | 2 | gengetopt_args_info * |
+| (int,char **,gengetopt_args_info *,cmdline_parser_params *) | | cmdline_parser_ext | 0 | int |
+| (int,char **,gengetopt_args_info *,cmdline_parser_params *) | | cmdline_parser_ext | 1 | char ** |
+| (int,char **,gengetopt_args_info *,cmdline_parser_params *) | | cmdline_parser_ext | 2 | gengetopt_args_info * |
+| (int,char **,gengetopt_args_info *,cmdline_parser_params *) | | cmdline_parser_ext | 3 | cmdline_parser_params * |
+| (int,char **,gengetopt_args_info *,int,int,int) | | cmdline_parser2 | 0 | int |
+| (int,char **,gengetopt_args_info *,int,int,int) | | cmdline_parser2 | 1 | char ** |
+| (int,char **,gengetopt_args_info *,int,int,int) | | cmdline_parser2 | 2 | gengetopt_args_info * |
+| (int,char **,gengetopt_args_info *,int,int,int) | | cmdline_parser2 | 3 | int |
+| (int,char **,gengetopt_args_info *,int,int,int) | | cmdline_parser2 | 4 | int |
+| (int,char **,gengetopt_args_info *,int,int,int) | | cmdline_parser2 | 5 | int |
| (int,char *,const char *,...) | | sqlite3_snprintf | 0 | int |
| (int,char *,const char *,...) | | sqlite3_snprintf | 1 | char * |
| (int,char *,const char *,...) | | sqlite3_snprintf | 2 | const char * |
@@ -26212,6 +30812,15 @@ getSignatureParameterName
| (int,char *,const char *,va_list) | | sqlite3_vsnprintf | 1 | char * |
| (int,char *,const char *,va_list) | | sqlite3_vsnprintf | 2 | const char * |
| (int,char *,const char *,va_list) | | sqlite3_vsnprintf | 3 | va_list |
+| (int,char *,size_t) | | Curl_strerror | 0 | int |
+| (int,char *,size_t) | | Curl_strerror | 1 | char * |
+| (int,char *,size_t) | | Curl_strerror | 2 | size_t |
+| (int,char *,size_t) | | uv_err_name_r | 0 | int |
+| (int,char *,size_t) | | uv_err_name_r | 1 | char * |
+| (int,char *,size_t) | | uv_err_name_r | 2 | size_t |
+| (int,char *,size_t) | | uv_strerror_r | 0 | int |
+| (int,char *,size_t) | | uv_strerror_r | 1 | char * |
+| (int,char *,size_t) | | uv_strerror_r | 2 | size_t |
| (int,const EVP_CIPHER *,const char *,int,unsigned char *,int,int,PKCS8_PRIV_KEY_INFO *) | | PKCS8_encrypt | 0 | int |
| (int,const EVP_CIPHER *,const char *,int,unsigned char *,int,int,PKCS8_PRIV_KEY_INFO *) | | PKCS8_encrypt | 1 | const EVP_CIPHER * |
| (int,const EVP_CIPHER *,const char *,int,unsigned char *,int,int,PKCS8_PRIV_KEY_INFO *) | | PKCS8_encrypt | 2 | const char * |
@@ -26237,6 +30846,8 @@ getSignatureParameterName
| (int,const OSSL_STORE_INFO *) | | OSSL_STORE_INFO_get0_data | 1 | const OSSL_STORE_INFO * |
| (int,const char *) | | BIO_meth_new | 0 | int |
| (int,const char *) | | BIO_meth_new | 1 | const char * |
+| (int,const char *) | | gzdopen | 0 | int |
+| (int,const char *) | | gzdopen | 1 | const char * |
| (int,const char **,int *) | | sqlite3_keyword_name | 0 | int |
| (int,const char **,int *) | | sqlite3_keyword_name | 1 | const char ** |
| (int,const char **,int *) | | sqlite3_keyword_name | 2 | int * |
@@ -26276,6 +30887,13 @@ getSignatureParameterName
| (int,const regex_t *,char *,size_t) | | jim_regerror | 1 | const regex_t * |
| (int,const regex_t *,char *,size_t) | | jim_regerror | 2 | char * |
| (int,const regex_t *,char *,size_t) | | jim_regerror | 3 | size_t |
+| (int,const uint8_t *__restrict__,size_t,size_t,size_t,size_t *__restrict__,uint8_t *__restrict__) | | BrotliStoreUncompressedMetaBlock | 0 | int |
+| (int,const uint8_t *__restrict__,size_t,size_t,size_t,size_t *__restrict__,uint8_t *__restrict__) | | BrotliStoreUncompressedMetaBlock | 1 | const uint8_t *__restrict__ |
+| (int,const uint8_t *__restrict__,size_t,size_t,size_t,size_t *__restrict__,uint8_t *__restrict__) | | BrotliStoreUncompressedMetaBlock | 2 | size_t |
+| (int,const uint8_t *__restrict__,size_t,size_t,size_t,size_t *__restrict__,uint8_t *__restrict__) | | BrotliStoreUncompressedMetaBlock | 3 | size_t |
+| (int,const uint8_t *__restrict__,size_t,size_t,size_t,size_t *__restrict__,uint8_t *__restrict__) | | BrotliStoreUncompressedMetaBlock | 4 | size_t |
+| (int,const uint8_t *__restrict__,size_t,size_t,size_t,size_t *__restrict__,uint8_t *__restrict__) | | BrotliStoreUncompressedMetaBlock | 5 | size_t *__restrict__ |
+| (int,const uint8_t *__restrict__,size_t,size_t,size_t,size_t *__restrict__,uint8_t *__restrict__) | | BrotliStoreUncompressedMetaBlock | 6 | uint8_t *__restrict__ |
| (int,const unsigned char *,int,const unsigned char *,int,DSA *) | | DSA_verify | 0 | int |
| (int,const unsigned char *,int,const unsigned char *,int,DSA *) | | DSA_verify | 1 | const unsigned char * |
| (int,const unsigned char *,int,const unsigned char *,int,DSA *) | | DSA_verify | 2 | int |
@@ -26320,6 +30938,16 @@ getSignatureParameterName
| (int,const unsigned char *,unsigned int,unsigned char *,size_t *,const unsigned char *,size_t,RSA *) | | ossl_rsa_verify | 5 | const unsigned char * |
| (int,const unsigned char *,unsigned int,unsigned char *,size_t *,const unsigned char *,size_t,RSA *) | | ossl_rsa_verify | 6 | size_t |
| (int,const unsigned char *,unsigned int,unsigned char *,size_t *,const unsigned char *,size_t,RSA *) | | ossl_rsa_verify | 7 | RSA * |
+| (int,const void *,char *,size_t) | | uv_inet_ntop | 0 | int |
+| (int,const void *,char *,size_t) | | uv_inet_ntop | 1 | const void * |
+| (int,const void *,char *,size_t) | | uv_inet_ntop | 2 | char * |
+| (int,const void *,char *,size_t) | | uv_inet_ntop | 3 | size_t |
+| (int,const void *,const char *,int) | | Curl_ip2addr | 0 | int |
+| (int,const void *,const char *,int) | | Curl_ip2addr | 1 | const void * |
+| (int,const void *,const char *,int) | | Curl_ip2addr | 2 | const char * |
+| (int,const void *,const char *,int) | | Curl_ip2addr | 3 | int |
+| (int,gzFile) | | gzungetc | 0 | int |
+| (int,gzFile) | | gzungetc | 1 | gzFile |
| (int,int *,int *,int) | | sqlite3_status | 0 | int |
| (int,int *,int *,int) | | sqlite3_status | 1 | int * |
| (int,int *,int *,int) | | sqlite3_status | 2 | int * |
@@ -26332,6 +30960,13 @@ getSignatureParameterName
| (int,int) | | EVP_PKEY_meth_new | 1 | int |
| (int,int) | | acttab_alloc | 0 | int |
| (int,int) | | acttab_alloc | 1 | int |
+| (int,int,BrotliEncoderMode,size_t,const uint8_t[],size_t *,uint8_t[]) | | BrotliEncoderCompress | 0 | int |
+| (int,int,BrotliEncoderMode,size_t,const uint8_t[],size_t *,uint8_t[]) | | BrotliEncoderCompress | 1 | int |
+| (int,int,BrotliEncoderMode,size_t,const uint8_t[],size_t *,uint8_t[]) | | BrotliEncoderCompress | 2 | BrotliEncoderMode |
+| (int,int,BrotliEncoderMode,size_t,const uint8_t[],size_t *,uint8_t[]) | | BrotliEncoderCompress | 3 | size_t |
+| (int,int,BrotliEncoderMode,size_t,const uint8_t[],size_t *,uint8_t[]) | | BrotliEncoderCompress | 4 | const uint8_t[] |
+| (int,int,BrotliEncoderMode,size_t,const uint8_t[],size_t *,uint8_t[]) | | BrotliEncoderCompress | 5 | size_t * |
+| (int,int,BrotliEncoderMode,size_t,const uint8_t[],size_t *,uint8_t[]) | | BrotliEncoderCompress | 6 | uint8_t[] |
| (int,int,TLS_GROUP_INFO *,size_t,long,stack_st_OPENSSL_CSTRING *) | | tls1_get0_implemented_groups | 0 | int |
| (int,int,TLS_GROUP_INFO *,size_t,long,stack_st_OPENSSL_CSTRING *) | | tls1_get0_implemented_groups | 1 | int |
| (int,int,TLS_GROUP_INFO *,size_t,long,stack_st_OPENSSL_CSTRING *) | | tls1_get0_implemented_groups | 2 | TLS_GROUP_INFO * |
@@ -26374,6 +31009,9 @@ getSignatureParameterName
| (int,int,int,const void *,size_t,SSL *,void *) | | SSL_trace | 4 | size_t |
| (int,int,int,const void *,size_t,SSL *,void *) | | SSL_trace | 5 | SSL * |
| (int,int,int,const void *,size_t,SSL *,void *) | | SSL_trace | 6 | void * |
+| (int,int,size_t) | | BrotliEncoderEstimatePeakMemoryUsage | 0 | int |
+| (int,int,size_t) | | BrotliEncoderEstimatePeakMemoryUsage | 1 | int |
+| (int,int,size_t) | | BrotliEncoderEstimatePeakMemoryUsage | 2 | size_t |
| (int,int,size_t,size_t) | | ossl_rand_pool_new | 0 | int |
| (int,int,size_t,size_t) | | ossl_rand_pool_new | 1 | int |
| (int,int,size_t,size_t) | | ossl_rand_pool_new | 2 | size_t |
@@ -26399,6 +31037,8 @@ getSignatureParameterName
| (int,sqlite3_int64 *,sqlite3_int64 *,int) | | sqlite3_status64 | 1 | sqlite3_int64 * |
| (int,sqlite3_int64 *,sqlite3_int64 *,int) | | sqlite3_status64 | 2 | sqlite3_int64 * |
| (int,sqlite3_int64 *,sqlite3_int64 *,int) | | sqlite3_status64 | 3 | int |
+| (int,stat *) | | stat_time_normalize | 0 | int |
+| (int,stat *) | | stat_time_normalize | 1 | stat * |
| (int,unsigned char *,int,const char *,const char *) | | ASN1_OBJECT_create | 0 | int |
| (int,unsigned char *,int,const char *,const char *) | | ASN1_OBJECT_create | 1 | unsigned char * |
| (int,unsigned char *,int,const char *,const char *) | | ASN1_OBJECT_create | 2 | int |
@@ -26449,12 +31089,626 @@ getSignatureParameterName
| (list &&) | list | list | 0 | list && |
| (list &&,const Allocator &) | list | list | 0 | list && |
| (list &&,const Allocator &) | list | list | 1 | const class:1 & |
+| (list_head *) | | _libssh2_list_first | 0 | list_head * |
+| (list_head *) | | _libssh2_list_init | 0 | list_head * |
+| (list_head *,list_node *) | | _libssh2_list_add | 0 | list_head * |
+| (list_head *,list_node *) | | _libssh2_list_add | 1 | list_node * |
+| (list_node *) | | _libssh2_list_next | 0 | list_node * |
+| (list_node *) | | _libssh2_list_prev | 0 | list_node * |
+| (long *,const char *) | | secs2ms | 0 | long * |
+| (long *,const char *) | | secs2ms | 1 | const char * |
+| (long *,const char *) | | str2num | 0 | long * |
+| (long *,const char *) | | str2num | 1 | const char * |
+| (long *,const char *) | | str2unum | 0 | long * |
+| (long *,const char *) | | str2unum | 1 | const char * |
+| (long *,const char *,long) | | oct2nummax | 0 | long * |
+| (long *,const char *,long) | | oct2nummax | 1 | const char * |
+| (long *,const char *,long) | | oct2nummax | 2 | long |
+| (long *,const char *,long) | | str2unummax | 0 | long * |
+| (long *,const char *,long) | | str2unummax | 1 | const char * |
+| (long *,const char *,long) | | str2unummax | 2 | long |
+| (long long *) | | uv__get_constrained_cpu | 0 | long long * |
+| (long) | | curlx_sltosi | 0 | long |
+| (long) | | curlx_sltoui | 0 | long |
+| (long) | | curlx_sltous | 0 | long |
+| (nghttp2_buf *,size_t,nghttp2_mem *) | | nghttp2_buf_init2 | 0 | nghttp2_buf * |
+| (nghttp2_buf *,size_t,nghttp2_mem *) | | nghttp2_buf_init2 | 1 | size_t |
+| (nghttp2_buf *,size_t,nghttp2_mem *) | | nghttp2_buf_init2 | 2 | nghttp2_mem * |
+| (nghttp2_buf *,size_t,nghttp2_mem *) | | nghttp2_buf_reserve | 0 | nghttp2_buf * |
+| (nghttp2_buf *,size_t,nghttp2_mem *) | | nghttp2_buf_reserve | 1 | size_t |
+| (nghttp2_buf *,size_t,nghttp2_mem *) | | nghttp2_buf_reserve | 2 | nghttp2_mem * |
+| (nghttp2_buf *,uint8_t *,size_t) | | nghttp2_buf_wrap_init | 0 | nghttp2_buf * |
+| (nghttp2_buf *,uint8_t *,size_t) | | nghttp2_buf_wrap_init | 1 | uint8_t * |
+| (nghttp2_buf *,uint8_t *,size_t) | | nghttp2_buf_wrap_init | 2 | size_t |
+| (nghttp2_bufs *,const nghttp2_vec *,size_t,nghttp2_mem *) | | nghttp2_bufs_wrap_init2 | 0 | nghttp2_bufs * |
+| (nghttp2_bufs *,const nghttp2_vec *,size_t,nghttp2_mem *) | | nghttp2_bufs_wrap_init2 | 1 | const nghttp2_vec * |
+| (nghttp2_bufs *,const nghttp2_vec *,size_t,nghttp2_mem *) | | nghttp2_bufs_wrap_init2 | 2 | size_t |
+| (nghttp2_bufs *,const nghttp2_vec *,size_t,nghttp2_mem *) | | nghttp2_bufs_wrap_init2 | 3 | nghttp2_mem * |
+| (nghttp2_bufs *,nghttp2_frame_hd *,size_t,int) | | nghttp2_frame_add_pad | 0 | nghttp2_bufs * |
+| (nghttp2_bufs *,nghttp2_frame_hd *,size_t,int) | | nghttp2_frame_add_pad | 1 | nghttp2_frame_hd * |
+| (nghttp2_bufs *,nghttp2_frame_hd *,size_t,int) | | nghttp2_frame_add_pad | 2 | size_t |
+| (nghttp2_bufs *,nghttp2_frame_hd *,size_t,int) | | nghttp2_frame_add_pad | 3 | int |
+| (nghttp2_bufs *,nghttp2_headers *,nghttp2_hd_deflater *) | | nghttp2_frame_pack_headers | 0 | nghttp2_bufs * |
+| (nghttp2_bufs *,nghttp2_headers *,nghttp2_hd_deflater *) | | nghttp2_frame_pack_headers | 1 | nghttp2_headers * |
+| (nghttp2_bufs *,nghttp2_headers *,nghttp2_hd_deflater *) | | nghttp2_frame_pack_headers | 2 | nghttp2_hd_deflater * |
+| (nghttp2_bufs *,nghttp2_push_promise *,nghttp2_hd_deflater *) | | nghttp2_frame_pack_push_promise | 0 | nghttp2_bufs * |
+| (nghttp2_bufs *,nghttp2_push_promise *,nghttp2_hd_deflater *) | | nghttp2_frame_pack_push_promise | 1 | nghttp2_push_promise * |
+| (nghttp2_bufs *,nghttp2_push_promise *,nghttp2_hd_deflater *) | | nghttp2_frame_pack_push_promise | 2 | nghttp2_hd_deflater * |
+| (nghttp2_bufs *,size_t) | | nghttp2_bufs_realloc | 0 | nghttp2_bufs * |
+| (nghttp2_bufs *,size_t) | | nghttp2_bufs_realloc | 1 | size_t |
+| (nghttp2_bufs *,size_t,size_t,nghttp2_mem *) | | nghttp2_bufs_init | 0 | nghttp2_bufs * |
+| (nghttp2_bufs *,size_t,size_t,nghttp2_mem *) | | nghttp2_bufs_init | 1 | size_t |
+| (nghttp2_bufs *,size_t,size_t,nghttp2_mem *) | | nghttp2_bufs_init | 2 | size_t |
+| (nghttp2_bufs *,size_t,size_t,nghttp2_mem *) | | nghttp2_bufs_init | 3 | nghttp2_mem * |
+| (nghttp2_bufs *,size_t,size_t,size_t,nghttp2_mem *) | | nghttp2_bufs_init2 | 0 | nghttp2_bufs * |
+| (nghttp2_bufs *,size_t,size_t,size_t,nghttp2_mem *) | | nghttp2_bufs_init2 | 1 | size_t |
+| (nghttp2_bufs *,size_t,size_t,size_t,nghttp2_mem *) | | nghttp2_bufs_init2 | 2 | size_t |
+| (nghttp2_bufs *,size_t,size_t,size_t,nghttp2_mem *) | | nghttp2_bufs_init2 | 3 | size_t |
+| (nghttp2_bufs *,size_t,size_t,size_t,nghttp2_mem *) | | nghttp2_bufs_init2 | 4 | nghttp2_mem * |
+| (nghttp2_bufs *,size_t,size_t,size_t,size_t,nghttp2_mem *) | | nghttp2_bufs_init3 | 0 | nghttp2_bufs * |
+| (nghttp2_bufs *,size_t,size_t,size_t,size_t,nghttp2_mem *) | | nghttp2_bufs_init3 | 1 | size_t |
+| (nghttp2_bufs *,size_t,size_t,size_t,size_t,nghttp2_mem *) | | nghttp2_bufs_init3 | 2 | size_t |
+| (nghttp2_bufs *,size_t,size_t,size_t,size_t,nghttp2_mem *) | | nghttp2_bufs_init3 | 3 | size_t |
+| (nghttp2_bufs *,size_t,size_t,size_t,size_t,nghttp2_mem *) | | nghttp2_bufs_init3 | 4 | size_t |
+| (nghttp2_bufs *,size_t,size_t,size_t,size_t,nghttp2_mem *) | | nghttp2_bufs_init3 | 5 | nghttp2_mem * |
+| (nghttp2_bufs *,uint8_t *,size_t,nghttp2_mem *) | | nghttp2_bufs_wrap_init | 0 | nghttp2_bufs * |
+| (nghttp2_bufs *,uint8_t *,size_t,nghttp2_mem *) | | nghttp2_bufs_wrap_init | 1 | uint8_t * |
+| (nghttp2_bufs *,uint8_t *,size_t,nghttp2_mem *) | | nghttp2_bufs_wrap_init | 2 | size_t |
+| (nghttp2_bufs *,uint8_t *,size_t,nghttp2_mem *) | | nghttp2_bufs_wrap_init | 3 | nghttp2_mem * |
+| (nghttp2_data *,uint8_t,int32_t) | | nghttp2_frame_data_init | 0 | nghttp2_data * |
+| (nghttp2_data *,uint8_t,int32_t) | | nghttp2_frame_data_init | 1 | uint8_t |
+| (nghttp2_data *,uint8_t,int32_t) | | nghttp2_frame_data_init | 2 | int32_t |
+| (nghttp2_data_provider_wrap *,const nghttp2_data_provider2 *) | | nghttp2_data_provider_wrap_v2 | 0 | nghttp2_data_provider_wrap * |
+| (nghttp2_data_provider_wrap *,const nghttp2_data_provider2 *) | | nghttp2_data_provider_wrap_v2 | 1 | const nghttp2_data_provider2 * |
+| (nghttp2_data_provider_wrap *,const nghttp2_data_provider *) | | nghttp2_data_provider_wrap_v1 | 0 | nghttp2_data_provider_wrap * |
+| (nghttp2_data_provider_wrap *,const nghttp2_data_provider *) | | nghttp2_data_provider_wrap_v1 | 1 | const nghttp2_data_provider * |
+| (nghttp2_extension *,int32_t,uint8_t *,size_t) | | nghttp2_frame_priority_update_init | 0 | nghttp2_extension * |
+| (nghttp2_extension *,int32_t,uint8_t *,size_t) | | nghttp2_frame_priority_update_init | 1 | int32_t |
+| (nghttp2_extension *,int32_t,uint8_t *,size_t) | | nghttp2_frame_priority_update_init | 2 | uint8_t * |
+| (nghttp2_extension *,int32_t,uint8_t *,size_t) | | nghttp2_frame_priority_update_init | 3 | size_t |
+| (nghttp2_extension *,int32_t,uint8_t *,size_t,uint8_t *,size_t) | | nghttp2_frame_altsvc_init | 0 | nghttp2_extension * |
+| (nghttp2_extension *,int32_t,uint8_t *,size_t,uint8_t *,size_t) | | nghttp2_frame_altsvc_init | 1 | int32_t |
+| (nghttp2_extension *,int32_t,uint8_t *,size_t,uint8_t *,size_t) | | nghttp2_frame_altsvc_init | 2 | uint8_t * |
+| (nghttp2_extension *,int32_t,uint8_t *,size_t,uint8_t *,size_t) | | nghttp2_frame_altsvc_init | 3 | size_t |
+| (nghttp2_extension *,int32_t,uint8_t *,size_t,uint8_t *,size_t) | | nghttp2_frame_altsvc_init | 4 | uint8_t * |
+| (nghttp2_extension *,int32_t,uint8_t *,size_t,uint8_t *,size_t) | | nghttp2_frame_altsvc_init | 5 | size_t |
+| (nghttp2_extension *,nghttp2_origin_entry *,size_t) | | nghttp2_frame_origin_init | 0 | nghttp2_extension * |
+| (nghttp2_extension *,nghttp2_origin_entry *,size_t) | | nghttp2_frame_origin_init | 1 | nghttp2_origin_entry * |
+| (nghttp2_extension *,nghttp2_origin_entry *,size_t) | | nghttp2_frame_origin_init | 2 | size_t |
+| (nghttp2_extension *,uint8_t,uint8_t,int32_t,void *) | | nghttp2_frame_extension_init | 0 | nghttp2_extension * |
+| (nghttp2_extension *,uint8_t,uint8_t,int32_t,void *) | | nghttp2_frame_extension_init | 1 | uint8_t |
+| (nghttp2_extension *,uint8_t,uint8_t,int32_t,void *) | | nghttp2_frame_extension_init | 2 | uint8_t |
+| (nghttp2_extension *,uint8_t,uint8_t,int32_t,void *) | | nghttp2_frame_extension_init | 3 | int32_t |
+| (nghttp2_extension *,uint8_t,uint8_t,int32_t,void *) | | nghttp2_frame_extension_init | 4 | void * |
+| (nghttp2_extpri *,const uint8_t *,size_t) | | nghttp2_extpri_parse_priority | 0 | nghttp2_extpri * |
+| (nghttp2_extpri *,const uint8_t *,size_t) | | nghttp2_extpri_parse_priority | 1 | const uint8_t * |
+| (nghttp2_extpri *,const uint8_t *,size_t) | | nghttp2_extpri_parse_priority | 2 | size_t |
+| (nghttp2_extpri *,const uint8_t *,size_t) | | nghttp2_http_parse_priority | 0 | nghttp2_extpri * |
+| (nghttp2_extpri *,const uint8_t *,size_t) | | nghttp2_http_parse_priority | 1 | const uint8_t * |
+| (nghttp2_extpri *,const uint8_t *,size_t) | | nghttp2_http_parse_priority | 2 | size_t |
+| (nghttp2_extpri *,uint8_t) | | nghttp2_extpri_from_uint8 | 0 | nghttp2_extpri * |
+| (nghttp2_extpri *,uint8_t) | | nghttp2_extpri_from_uint8 | 1 | uint8_t |
+| (nghttp2_frame *,size_t) | | nghttp2_frame_trail_padlen | 0 | nghttp2_frame * |
+| (nghttp2_frame *,size_t) | | nghttp2_frame_trail_padlen | 1 | size_t |
+| (nghttp2_frame_hd *,const uint8_t *) | | nghttp2_frame_unpack_frame_hd | 0 | nghttp2_frame_hd * |
+| (nghttp2_frame_hd *,const uint8_t *) | | nghttp2_frame_unpack_frame_hd | 1 | const uint8_t * |
+| (nghttp2_frame_hd *,size_t,uint8_t,uint8_t,int32_t) | | nghttp2_frame_hd_init | 0 | nghttp2_frame_hd * |
+| (nghttp2_frame_hd *,size_t,uint8_t,uint8_t,int32_t) | | nghttp2_frame_hd_init | 1 | size_t |
+| (nghttp2_frame_hd *,size_t,uint8_t,uint8_t,int32_t) | | nghttp2_frame_hd_init | 2 | uint8_t |
+| (nghttp2_frame_hd *,size_t,uint8_t,uint8_t,int32_t) | | nghttp2_frame_hd_init | 3 | uint8_t |
+| (nghttp2_frame_hd *,size_t,uint8_t,uint8_t,int32_t) | | nghttp2_frame_hd_init | 4 | int32_t |
+| (nghttp2_goaway *,const uint8_t *,size_t,nghttp2_mem *) | | nghttp2_frame_unpack_goaway_payload2 | 0 | nghttp2_goaway * |
+| (nghttp2_goaway *,const uint8_t *,size_t,nghttp2_mem *) | | nghttp2_frame_unpack_goaway_payload2 | 1 | const uint8_t * |
+| (nghttp2_goaway *,const uint8_t *,size_t,nghttp2_mem *) | | nghttp2_frame_unpack_goaway_payload2 | 2 | size_t |
+| (nghttp2_goaway *,const uint8_t *,size_t,nghttp2_mem *) | | nghttp2_frame_unpack_goaway_payload2 | 3 | nghttp2_mem * |
+| (nghttp2_goaway *,const uint8_t *,uint8_t *,size_t) | | nghttp2_frame_unpack_goaway_payload | 0 | nghttp2_goaway * |
+| (nghttp2_goaway *,const uint8_t *,uint8_t *,size_t) | | nghttp2_frame_unpack_goaway_payload | 1 | const uint8_t * |
+| (nghttp2_goaway *,const uint8_t *,uint8_t *,size_t) | | nghttp2_frame_unpack_goaway_payload | 2 | uint8_t * |
+| (nghttp2_goaway *,const uint8_t *,uint8_t *,size_t) | | nghttp2_frame_unpack_goaway_payload | 3 | size_t |
+| (nghttp2_goaway *,int32_t,uint32_t,uint8_t *,size_t) | | nghttp2_frame_goaway_init | 0 | nghttp2_goaway * |
+| (nghttp2_goaway *,int32_t,uint32_t,uint8_t *,size_t) | | nghttp2_frame_goaway_init | 1 | int32_t |
+| (nghttp2_goaway *,int32_t,uint32_t,uint8_t *,size_t) | | nghttp2_frame_goaway_init | 2 | uint32_t |
+| (nghttp2_goaway *,int32_t,uint32_t,uint8_t *,size_t) | | nghttp2_frame_goaway_init | 3 | uint8_t * |
+| (nghttp2_goaway *,int32_t,uint32_t,uint8_t *,size_t) | | nghttp2_frame_goaway_init | 4 | size_t |
+| (nghttp2_hd_context *,size_t) | | nghttp2_hd_table_get | 0 | nghttp2_hd_context * |
+| (nghttp2_hd_context *,size_t) | | nghttp2_hd_table_get | 1 | size_t |
+| (nghttp2_hd_deflater *) | | nghttp2_hd_deflate_get_dynamic_table_size | 0 | nghttp2_hd_deflater * |
+| (nghttp2_hd_deflater *) | | nghttp2_hd_deflate_get_max_dynamic_table_size | 0 | nghttp2_hd_deflater * |
+| (nghttp2_hd_deflater **,size_t) | | nghttp2_hd_deflate_new | 0 | nghttp2_hd_deflater ** |
+| (nghttp2_hd_deflater **,size_t) | | nghttp2_hd_deflate_new | 1 | size_t |
+| (nghttp2_hd_deflater **,size_t,nghttp2_mem *) | | nghttp2_hd_deflate_new2 | 0 | nghttp2_hd_deflater ** |
+| (nghttp2_hd_deflater **,size_t,nghttp2_mem *) | | nghttp2_hd_deflate_new2 | 1 | size_t |
+| (nghttp2_hd_deflater **,size_t,nghttp2_mem *) | | nghttp2_hd_deflate_new2 | 2 | nghttp2_mem * |
+| (nghttp2_hd_deflater *,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_bound | 0 | nghttp2_hd_deflater * |
+| (nghttp2_hd_deflater *,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_bound | 1 | const nghttp2_nv * |
+| (nghttp2_hd_deflater *,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_bound | 2 | size_t |
+| (nghttp2_hd_deflater *,const nghttp2_vec *,size_t,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_hd_vec | 0 | nghttp2_hd_deflater * |
+| (nghttp2_hd_deflater *,const nghttp2_vec *,size_t,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_hd_vec | 1 | const nghttp2_vec * |
+| (nghttp2_hd_deflater *,const nghttp2_vec *,size_t,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_hd_vec | 2 | size_t |
+| (nghttp2_hd_deflater *,const nghttp2_vec *,size_t,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_hd_vec | 3 | const nghttp2_nv * |
+| (nghttp2_hd_deflater *,const nghttp2_vec *,size_t,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_hd_vec | 4 | size_t |
+| (nghttp2_hd_deflater *,const nghttp2_vec *,size_t,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_hd_vec2 | 0 | nghttp2_hd_deflater * |
+| (nghttp2_hd_deflater *,const nghttp2_vec *,size_t,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_hd_vec2 | 1 | const nghttp2_vec * |
+| (nghttp2_hd_deflater *,const nghttp2_vec *,size_t,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_hd_vec2 | 2 | size_t |
+| (nghttp2_hd_deflater *,const nghttp2_vec *,size_t,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_hd_vec2 | 3 | const nghttp2_nv * |
+| (nghttp2_hd_deflater *,const nghttp2_vec *,size_t,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_hd_vec2 | 4 | size_t |
+| (nghttp2_hd_deflater *,nghttp2_bufs *,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_hd_bufs | 0 | nghttp2_hd_deflater * |
+| (nghttp2_hd_deflater *,nghttp2_bufs *,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_hd_bufs | 1 | nghttp2_bufs * |
+| (nghttp2_hd_deflater *,nghttp2_bufs *,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_hd_bufs | 2 | const nghttp2_nv * |
+| (nghttp2_hd_deflater *,nghttp2_bufs *,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_hd_bufs | 3 | size_t |
+| (nghttp2_hd_deflater *,nghttp2_mem *) | | nghttp2_hd_deflate_init | 0 | nghttp2_hd_deflater * |
+| (nghttp2_hd_deflater *,nghttp2_mem *) | | nghttp2_hd_deflate_init | 1 | nghttp2_mem * |
+| (nghttp2_hd_deflater *,size_t) | | nghttp2_hd_deflate_change_table_size | 0 | nghttp2_hd_deflater * |
+| (nghttp2_hd_deflater *,size_t) | | nghttp2_hd_deflate_change_table_size | 1 | size_t |
+| (nghttp2_hd_deflater *,size_t) | | nghttp2_hd_deflate_get_table_entry | 0 | nghttp2_hd_deflater * |
+| (nghttp2_hd_deflater *,size_t) | | nghttp2_hd_deflate_get_table_entry | 1 | size_t |
+| (nghttp2_hd_deflater *,size_t,nghttp2_mem *) | | nghttp2_hd_deflate_init2 | 0 | nghttp2_hd_deflater * |
+| (nghttp2_hd_deflater *,size_t,nghttp2_mem *) | | nghttp2_hd_deflate_init2 | 1 | size_t |
+| (nghttp2_hd_deflater *,size_t,nghttp2_mem *) | | nghttp2_hd_deflate_init2 | 2 | nghttp2_mem * |
+| (nghttp2_hd_deflater *,uint8_t *,size_t,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_hd | 0 | nghttp2_hd_deflater * |
+| (nghttp2_hd_deflater *,uint8_t *,size_t,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_hd | 1 | uint8_t * |
+| (nghttp2_hd_deflater *,uint8_t *,size_t,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_hd | 2 | size_t |
+| (nghttp2_hd_deflater *,uint8_t *,size_t,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_hd | 3 | const nghttp2_nv * |
+| (nghttp2_hd_deflater *,uint8_t *,size_t,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_hd | 4 | size_t |
+| (nghttp2_hd_deflater *,uint8_t *,size_t,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_hd2 | 0 | nghttp2_hd_deflater * |
+| (nghttp2_hd_deflater *,uint8_t *,size_t,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_hd2 | 1 | uint8_t * |
+| (nghttp2_hd_deflater *,uint8_t *,size_t,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_hd2 | 2 | size_t |
+| (nghttp2_hd_deflater *,uint8_t *,size_t,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_hd2 | 3 | const nghttp2_nv * |
+| (nghttp2_hd_deflater *,uint8_t *,size_t,const nghttp2_nv *,size_t) | | nghttp2_hd_deflate_hd2 | 4 | size_t |
+| (nghttp2_hd_entry *,nghttp2_hd_nv *) | | nghttp2_hd_entry_init | 0 | nghttp2_hd_entry * |
+| (nghttp2_hd_entry *,nghttp2_hd_nv *) | | nghttp2_hd_entry_init | 1 | nghttp2_hd_nv * |
+| (nghttp2_hd_huff_decode_context *,nghttp2_buf *,const uint8_t *,size_t,int) | | nghttp2_hd_huff_decode | 0 | nghttp2_hd_huff_decode_context * |
+| (nghttp2_hd_huff_decode_context *,nghttp2_buf *,const uint8_t *,size_t,int) | | nghttp2_hd_huff_decode | 1 | nghttp2_buf * |
+| (nghttp2_hd_huff_decode_context *,nghttp2_buf *,const uint8_t *,size_t,int) | | nghttp2_hd_huff_decode | 2 | const uint8_t * |
+| (nghttp2_hd_huff_decode_context *,nghttp2_buf *,const uint8_t *,size_t,int) | | nghttp2_hd_huff_decode | 3 | size_t |
+| (nghttp2_hd_huff_decode_context *,nghttp2_buf *,const uint8_t *,size_t,int) | | nghttp2_hd_huff_decode | 4 | int |
+| (nghttp2_hd_inflater *) | | nghttp2_hd_inflate_get_dynamic_table_size | 0 | nghttp2_hd_inflater * |
+| (nghttp2_hd_inflater *) | | nghttp2_hd_inflate_get_max_dynamic_table_size | 0 | nghttp2_hd_inflater * |
+| (nghttp2_hd_inflater **,nghttp2_mem *) | | nghttp2_hd_inflate_new2 | 0 | nghttp2_hd_inflater ** |
+| (nghttp2_hd_inflater **,nghttp2_mem *) | | nghttp2_hd_inflate_new2 | 1 | nghttp2_mem * |
+| (nghttp2_hd_inflater *,nghttp2_hd_nv *,int *,const uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd_nv | 0 | nghttp2_hd_inflater * |
+| (nghttp2_hd_inflater *,nghttp2_hd_nv *,int *,const uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd_nv | 1 | nghttp2_hd_nv * |
+| (nghttp2_hd_inflater *,nghttp2_hd_nv *,int *,const uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd_nv | 2 | int * |
+| (nghttp2_hd_inflater *,nghttp2_hd_nv *,int *,const uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd_nv | 3 | const uint8_t * |
+| (nghttp2_hd_inflater *,nghttp2_hd_nv *,int *,const uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd_nv | 4 | size_t |
+| (nghttp2_hd_inflater *,nghttp2_hd_nv *,int *,const uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd_nv | 5 | int |
+| (nghttp2_hd_inflater *,nghttp2_mem *) | | nghttp2_hd_inflate_init | 0 | nghttp2_hd_inflater * |
+| (nghttp2_hd_inflater *,nghttp2_mem *) | | nghttp2_hd_inflate_init | 1 | nghttp2_mem * |
+| (nghttp2_hd_inflater *,nghttp2_nv *,int *,const uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd2 | 0 | nghttp2_hd_inflater * |
+| (nghttp2_hd_inflater *,nghttp2_nv *,int *,const uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd2 | 1 | nghttp2_nv * |
+| (nghttp2_hd_inflater *,nghttp2_nv *,int *,const uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd2 | 2 | int * |
+| (nghttp2_hd_inflater *,nghttp2_nv *,int *,const uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd2 | 3 | const uint8_t * |
+| (nghttp2_hd_inflater *,nghttp2_nv *,int *,const uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd2 | 4 | size_t |
+| (nghttp2_hd_inflater *,nghttp2_nv *,int *,const uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd2 | 5 | int |
+| (nghttp2_hd_inflater *,nghttp2_nv *,int *,const uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd3 | 0 | nghttp2_hd_inflater * |
+| (nghttp2_hd_inflater *,nghttp2_nv *,int *,const uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd3 | 1 | nghttp2_nv * |
+| (nghttp2_hd_inflater *,nghttp2_nv *,int *,const uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd3 | 2 | int * |
+| (nghttp2_hd_inflater *,nghttp2_nv *,int *,const uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd3 | 3 | const uint8_t * |
+| (nghttp2_hd_inflater *,nghttp2_nv *,int *,const uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd3 | 4 | size_t |
+| (nghttp2_hd_inflater *,nghttp2_nv *,int *,const uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd3 | 5 | int |
+| (nghttp2_hd_inflater *,nghttp2_nv *,int *,uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd | 0 | nghttp2_hd_inflater * |
+| (nghttp2_hd_inflater *,nghttp2_nv *,int *,uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd | 1 | nghttp2_nv * |
+| (nghttp2_hd_inflater *,nghttp2_nv *,int *,uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd | 2 | int * |
+| (nghttp2_hd_inflater *,nghttp2_nv *,int *,uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd | 3 | uint8_t * |
+| (nghttp2_hd_inflater *,nghttp2_nv *,int *,uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd | 4 | size_t |
+| (nghttp2_hd_inflater *,nghttp2_nv *,int *,uint8_t *,size_t,int) | | nghttp2_hd_inflate_hd | 5 | int |
+| (nghttp2_hd_inflater *,size_t) | | nghttp2_hd_inflate_change_table_size | 0 | nghttp2_hd_inflater * |
+| (nghttp2_hd_inflater *,size_t) | | nghttp2_hd_inflate_change_table_size | 1 | size_t |
+| (nghttp2_hd_inflater *,size_t) | | nghttp2_hd_inflate_get_table_entry | 0 | nghttp2_hd_inflater * |
+| (nghttp2_hd_inflater *,size_t) | | nghttp2_hd_inflate_get_table_entry | 1 | size_t |
+| (nghttp2_headers *,const uint8_t *) | | nghttp2_frame_unpack_headers_payload | 0 | nghttp2_headers * |
+| (nghttp2_headers *,const uint8_t *) | | nghttp2_frame_unpack_headers_payload | 1 | const uint8_t * |
+| (nghttp2_headers *,uint8_t,int32_t,nghttp2_headers_category,const nghttp2_priority_spec *,nghttp2_nv *,size_t) | | nghttp2_frame_headers_init | 0 | nghttp2_headers * |
+| (nghttp2_headers *,uint8_t,int32_t,nghttp2_headers_category,const nghttp2_priority_spec *,nghttp2_nv *,size_t) | | nghttp2_frame_headers_init | 1 | uint8_t |
+| (nghttp2_headers *,uint8_t,int32_t,nghttp2_headers_category,const nghttp2_priority_spec *,nghttp2_nv *,size_t) | | nghttp2_frame_headers_init | 2 | int32_t |
+| (nghttp2_headers *,uint8_t,int32_t,nghttp2_headers_category,const nghttp2_priority_spec *,nghttp2_nv *,size_t) | | nghttp2_frame_headers_init | 3 | nghttp2_headers_category |
+| (nghttp2_headers *,uint8_t,int32_t,nghttp2_headers_category,const nghttp2_priority_spec *,nghttp2_nv *,size_t) | | nghttp2_frame_headers_init | 4 | const nghttp2_priority_spec * |
+| (nghttp2_headers *,uint8_t,int32_t,nghttp2_headers_category,const nghttp2_priority_spec *,nghttp2_nv *,size_t) | | nghttp2_frame_headers_init | 5 | nghttp2_nv * |
+| (nghttp2_headers *,uint8_t,int32_t,nghttp2_headers_category,const nghttp2_priority_spec *,nghttp2_nv *,size_t) | | nghttp2_frame_headers_init | 6 | size_t |
+| (nghttp2_map *,nghttp2_map_key_type,void *) | | nghttp2_map_insert | 0 | nghttp2_map * |
+| (nghttp2_map *,nghttp2_map_key_type,void *) | | nghttp2_map_insert | 1 | nghttp2_map_key_type |
+| (nghttp2_map *,nghttp2_map_key_type,void *) | | nghttp2_map_insert | 2 | void * |
+| (nghttp2_map *,nghttp2_mem *) | | nghttp2_map_init | 0 | nghttp2_map * |
+| (nghttp2_map *,nghttp2_mem *) | | nghttp2_map_init | 1 | nghttp2_mem * |
+| (nghttp2_nv **,const nghttp2_nv *,size_t,nghttp2_mem *) | | nghttp2_nv_array_copy | 0 | nghttp2_nv ** |
+| (nghttp2_nv **,const nghttp2_nv *,size_t,nghttp2_mem *) | | nghttp2_nv_array_copy | 1 | const nghttp2_nv * |
+| (nghttp2_nv **,const nghttp2_nv *,size_t,nghttp2_mem *) | | nghttp2_nv_array_copy | 2 | size_t |
+| (nghttp2_nv **,const nghttp2_nv *,size_t,nghttp2_mem *) | | nghttp2_nv_array_copy | 3 | nghttp2_mem * |
+| (nghttp2_option **) | | nghttp2_option_new | 0 | nghttp2_option ** |
+| (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 0 | nghttp2_option * |
+| (nghttp2_option *,int) | | nghttp2_option_set_no_auto_ping_ack | 1 | int |
+| (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 0 | nghttp2_option * |
+| (nghttp2_option *,int) | | nghttp2_option_set_no_auto_window_update | 1 | int |
+| (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 0 | nghttp2_option * |
+| (nghttp2_option *,int) | | nghttp2_option_set_no_closed_streams | 1 | int |
+| (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 0 | nghttp2_option * |
+| (nghttp2_option *,int) | | nghttp2_option_set_no_http_messaging | 1 | int |
+| (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 0 | nghttp2_option * |
+| (nghttp2_option *,int) | | nghttp2_option_set_no_recv_client_magic | 1 | int |
+| (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 0 | nghttp2_option * |
+| (nghttp2_option *,int) | | nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation | 1 | int |
+| (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 0 | nghttp2_option * |
+| (nghttp2_option *,int) | | nghttp2_option_set_server_fallback_rfc7540_priorities | 1 | int |
+| (nghttp2_option *,size_t) | | nghttp2_option_set_max_continuations | 0 | nghttp2_option * |
+| (nghttp2_option *,size_t) | | nghttp2_option_set_max_continuations | 1 | size_t |
+| (nghttp2_option *,size_t) | | nghttp2_option_set_max_deflate_dynamic_table_size | 0 | nghttp2_option * |
+| (nghttp2_option *,size_t) | | nghttp2_option_set_max_deflate_dynamic_table_size | 1 | size_t |
+| (nghttp2_option *,size_t) | | nghttp2_option_set_max_outbound_ack | 0 | nghttp2_option * |
+| (nghttp2_option *,size_t) | | nghttp2_option_set_max_outbound_ack | 1 | size_t |
+| (nghttp2_option *,size_t) | | nghttp2_option_set_max_send_header_block_length | 0 | nghttp2_option * |
+| (nghttp2_option *,size_t) | | nghttp2_option_set_max_send_header_block_length | 1 | size_t |
+| (nghttp2_option *,size_t) | | nghttp2_option_set_max_settings | 0 | nghttp2_option * |
+| (nghttp2_option *,size_t) | | nghttp2_option_set_max_settings | 1 | size_t |
+| (nghttp2_option *,uint8_t) | | nghttp2_option_set_user_recv_extension_type | 0 | nghttp2_option * |
+| (nghttp2_option *,uint8_t) | | nghttp2_option_set_user_recv_extension_type | 1 | uint8_t |
+| (nghttp2_option *,uint32_t) | | nghttp2_option_set_max_reserved_remote_streams | 0 | nghttp2_option * |
+| (nghttp2_option *,uint32_t) | | nghttp2_option_set_max_reserved_remote_streams | 1 | uint32_t |
+| (nghttp2_option *,uint32_t) | | nghttp2_option_set_peer_max_concurrent_streams | 0 | nghttp2_option * |
+| (nghttp2_option *,uint32_t) | | nghttp2_option_set_peer_max_concurrent_streams | 1 | uint32_t |
+| (nghttp2_option *,uint64_t,uint64_t) | | nghttp2_option_set_stream_reset_rate_limit | 0 | nghttp2_option * |
+| (nghttp2_option *,uint64_t,uint64_t) | | nghttp2_option_set_stream_reset_rate_limit | 1 | uint64_t |
+| (nghttp2_option *,uint64_t,uint64_t) | | nghttp2_option_set_stream_reset_rate_limit | 2 | uint64_t |
+| (nghttp2_outbound_queue *) | | nghttp2_outbound_queue_init | 0 | nghttp2_outbound_queue * |
+| (nghttp2_outbound_queue *,nghttp2_outbound_item *) | | nghttp2_outbound_queue_push | 0 | nghttp2_outbound_queue * |
+| (nghttp2_outbound_queue *,nghttp2_outbound_item *) | | nghttp2_outbound_queue_push | 1 | nghttp2_outbound_item * |
+| (nghttp2_ping *,const uint8_t *) | | nghttp2_frame_unpack_ping_payload | 0 | nghttp2_ping * |
+| (nghttp2_ping *,const uint8_t *) | | nghttp2_frame_unpack_ping_payload | 1 | const uint8_t * |
+| (nghttp2_ping *,uint8_t,const uint8_t *) | | nghttp2_frame_ping_init | 0 | nghttp2_ping * |
+| (nghttp2_ping *,uint8_t,const uint8_t *) | | nghttp2_frame_ping_init | 1 | uint8_t |
+| (nghttp2_ping *,uint8_t,const uint8_t *) | | nghttp2_frame_ping_init | 2 | const uint8_t * |
+| (nghttp2_pq *) | | nghttp2_pq_size | 0 | nghttp2_pq * |
+| (nghttp2_pq *) | | nghttp2_pq_top | 0 | nghttp2_pq * |
+| (nghttp2_pq *,nghttp2_less,nghttp2_mem *) | | nghttp2_pq_init | 0 | nghttp2_pq * |
+| (nghttp2_pq *,nghttp2_less,nghttp2_mem *) | | nghttp2_pq_init | 1 | nghttp2_less |
+| (nghttp2_pq *,nghttp2_less,nghttp2_mem *) | | nghttp2_pq_init | 2 | nghttp2_mem * |
+| (nghttp2_pq *,nghttp2_pq_entry *) | | nghttp2_pq_push | 0 | nghttp2_pq * |
+| (nghttp2_pq *,nghttp2_pq_entry *) | | nghttp2_pq_push | 1 | nghttp2_pq_entry * |
+| (nghttp2_pq *,nghttp2_pq_entry *) | | nghttp2_pq_remove | 0 | nghttp2_pq * |
+| (nghttp2_pq *,nghttp2_pq_entry *) | | nghttp2_pq_remove | 1 | nghttp2_pq_entry * |
+| (nghttp2_priority *,const uint8_t *) | | nghttp2_frame_unpack_priority_payload | 0 | nghttp2_priority * |
+| (nghttp2_priority *,const uint8_t *) | | nghttp2_frame_unpack_priority_payload | 1 | const uint8_t * |
+| (nghttp2_priority *,int32_t,const nghttp2_priority_spec *) | | nghttp2_frame_priority_init | 0 | nghttp2_priority * |
+| (nghttp2_priority *,int32_t,const nghttp2_priority_spec *) | | nghttp2_frame_priority_init | 1 | int32_t |
+| (nghttp2_priority *,int32_t,const nghttp2_priority_spec *) | | nghttp2_frame_priority_init | 2 | const nghttp2_priority_spec * |
+| (nghttp2_priority_spec *,const uint8_t *) | | nghttp2_frame_unpack_priority_spec | 0 | nghttp2_priority_spec * |
+| (nghttp2_priority_spec *,const uint8_t *) | | nghttp2_frame_unpack_priority_spec | 1 | const uint8_t * |
+| (nghttp2_priority_spec *,int32_t,int32_t,int) | | nghttp2_priority_spec_init | 0 | nghttp2_priority_spec * |
+| (nghttp2_priority_spec *,int32_t,int32_t,int) | | nghttp2_priority_spec_init | 1 | int32_t |
+| (nghttp2_priority_spec *,int32_t,int32_t,int) | | nghttp2_priority_spec_init | 2 | int32_t |
+| (nghttp2_priority_spec *,int32_t,int32_t,int) | | nghttp2_priority_spec_init | 3 | int |
+| (nghttp2_push_promise *,uint8_t,int32_t,int32_t,nghttp2_nv *,size_t) | | nghttp2_frame_push_promise_init | 0 | nghttp2_push_promise * |
+| (nghttp2_push_promise *,uint8_t,int32_t,int32_t,nghttp2_nv *,size_t) | | nghttp2_frame_push_promise_init | 1 | uint8_t |
+| (nghttp2_push_promise *,uint8_t,int32_t,int32_t,nghttp2_nv *,size_t) | | nghttp2_frame_push_promise_init | 2 | int32_t |
+| (nghttp2_push_promise *,uint8_t,int32_t,int32_t,nghttp2_nv *,size_t) | | nghttp2_frame_push_promise_init | 3 | int32_t |
+| (nghttp2_push_promise *,uint8_t,int32_t,int32_t,nghttp2_nv *,size_t) | | nghttp2_frame_push_promise_init | 4 | nghttp2_nv * |
+| (nghttp2_push_promise *,uint8_t,int32_t,int32_t,nghttp2_nv *,size_t) | | nghttp2_frame_push_promise_init | 5 | size_t |
+| (nghttp2_queue *) | | nghttp2_queue_back | 0 | nghttp2_queue * |
+| (nghttp2_queue *) | | nghttp2_queue_front | 0 | nghttp2_queue * |
+| (nghttp2_queue *) | | nghttp2_queue_init | 0 | nghttp2_queue * |
+| (nghttp2_queue *) | | nghttp2_queue_pop | 0 | nghttp2_queue * |
+| (nghttp2_queue *,void *) | | nghttp2_queue_push | 0 | nghttp2_queue * |
+| (nghttp2_queue *,void *) | | nghttp2_queue_push | 1 | void * |
+| (nghttp2_ratelim *,uint64_t) | | nghttp2_ratelim_drain | 0 | nghttp2_ratelim * |
+| (nghttp2_ratelim *,uint64_t) | | nghttp2_ratelim_drain | 1 | uint64_t |
+| (nghttp2_ratelim *,uint64_t) | | nghttp2_ratelim_update | 0 | nghttp2_ratelim * |
+| (nghttp2_ratelim *,uint64_t) | | nghttp2_ratelim_update | 1 | uint64_t |
+| (nghttp2_ratelim *,uint64_t,uint64_t) | | nghttp2_ratelim_init | 0 | nghttp2_ratelim * |
+| (nghttp2_ratelim *,uint64_t,uint64_t) | | nghttp2_ratelim_init | 1 | uint64_t |
+| (nghttp2_ratelim *,uint64_t,uint64_t) | | nghttp2_ratelim_init | 2 | uint64_t |
+| (nghttp2_rcbuf *) | | nghttp2_rcbuf_get_buf | 0 | nghttp2_rcbuf * |
+| (nghttp2_rcbuf **,const uint8_t *,size_t,nghttp2_mem *) | | nghttp2_rcbuf_new2 | 0 | nghttp2_rcbuf ** |
+| (nghttp2_rcbuf **,const uint8_t *,size_t,nghttp2_mem *) | | nghttp2_rcbuf_new2 | 1 | const uint8_t * |
+| (nghttp2_rcbuf **,const uint8_t *,size_t,nghttp2_mem *) | | nghttp2_rcbuf_new2 | 2 | size_t |
+| (nghttp2_rcbuf **,const uint8_t *,size_t,nghttp2_mem *) | | nghttp2_rcbuf_new2 | 3 | nghttp2_mem * |
+| (nghttp2_rcbuf **,size_t,nghttp2_mem *) | | nghttp2_rcbuf_new | 0 | nghttp2_rcbuf ** |
+| (nghttp2_rcbuf **,size_t,nghttp2_mem *) | | nghttp2_rcbuf_new | 1 | size_t |
+| (nghttp2_rcbuf **,size_t,nghttp2_mem *) | | nghttp2_rcbuf_new | 2 | nghttp2_mem * |
+| (nghttp2_rst_stream *,int32_t,uint32_t) | | nghttp2_frame_rst_stream_init | 0 | nghttp2_rst_stream * |
+| (nghttp2_rst_stream *,int32_t,uint32_t) | | nghttp2_frame_rst_stream_init | 1 | int32_t |
+| (nghttp2_rst_stream *,int32_t,uint32_t) | | nghttp2_frame_rst_stream_init | 2 | uint32_t |
+| (nghttp2_session *) | | nghttp2_session_check_server_session | 0 | nghttp2_session * |
+| (nghttp2_session *) | | nghttp2_session_get_effective_local_window_size | 0 | nghttp2_session * |
+| (nghttp2_session *) | | nghttp2_session_get_effective_recv_data_length | 0 | nghttp2_session * |
+| (nghttp2_session *) | | nghttp2_session_get_last_proc_stream_id | 0 | nghttp2_session * |
+| (nghttp2_session *) | | nghttp2_session_get_local_window_size | 0 | nghttp2_session * |
+| (nghttp2_session *) | | nghttp2_session_get_next_ob_item | 0 | nghttp2_session * |
+| (nghttp2_session *) | | nghttp2_session_get_next_stream_id | 0 | nghttp2_session * |
+| (nghttp2_session *) | | nghttp2_session_get_outbound_queue_size | 0 | nghttp2_session * |
+| (nghttp2_session *) | | nghttp2_session_get_remote_window_size | 0 | nghttp2_session * |
+| (nghttp2_session *) | | nghttp2_session_pop_next_ob_item | 0 | nghttp2_session * |
+| (nghttp2_session *) | | nghttp2_session_recv | 0 | nghttp2_session * |
+| (nghttp2_session **,const nghttp2_session_callbacks *,void *) | | nghttp2_session_client_new | 0 | nghttp2_session ** |
+| (nghttp2_session **,const nghttp2_session_callbacks *,void *) | | nghttp2_session_client_new | 1 | const nghttp2_session_callbacks * |
+| (nghttp2_session **,const nghttp2_session_callbacks *,void *) | | nghttp2_session_client_new | 2 | void * |
+| (nghttp2_session **,const nghttp2_session_callbacks *,void *) | | nghttp2_session_server_new | 0 | nghttp2_session ** |
+| (nghttp2_session **,const nghttp2_session_callbacks *,void *) | | nghttp2_session_server_new | 1 | const nghttp2_session_callbacks * |
+| (nghttp2_session **,const nghttp2_session_callbacks *,void *) | | nghttp2_session_server_new | 2 | void * |
+| (nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *) | | nghttp2_session_client_new2 | 0 | nghttp2_session ** |
+| (nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *) | | nghttp2_session_client_new2 | 1 | const nghttp2_session_callbacks * |
+| (nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *) | | nghttp2_session_client_new2 | 2 | void * |
+| (nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *) | | nghttp2_session_client_new2 | 3 | const nghttp2_option * |
+| (nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *) | | nghttp2_session_server_new2 | 0 | nghttp2_session ** |
+| (nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *) | | nghttp2_session_server_new2 | 1 | const nghttp2_session_callbacks * |
+| (nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *) | | nghttp2_session_server_new2 | 2 | void * |
+| (nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *) | | nghttp2_session_server_new2 | 3 | const nghttp2_option * |
+| (nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *) | | nghttp2_session_client_new3 | 0 | nghttp2_session ** |
+| (nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *) | | nghttp2_session_client_new3 | 1 | const nghttp2_session_callbacks * |
+| (nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *) | | nghttp2_session_client_new3 | 2 | void * |
+| (nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *) | | nghttp2_session_client_new3 | 3 | const nghttp2_option * |
+| (nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *) | | nghttp2_session_client_new3 | 4 | nghttp2_mem * |
+| (nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *) | | nghttp2_session_server_new3 | 0 | nghttp2_session ** |
+| (nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *) | | nghttp2_session_server_new3 | 1 | const nghttp2_session_callbacks * |
+| (nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *) | | nghttp2_session_server_new3 | 2 | void * |
+| (nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *) | | nghttp2_session_server_new3 | 3 | const nghttp2_option * |
+| (nghttp2_session **,const nghttp2_session_callbacks *,void *,const nghttp2_option *,nghttp2_mem *) | | nghttp2_session_server_new3 | 4 | nghttp2_mem * |
+| (nghttp2_session *,const nghttp2_priority_spec *,const nghttp2_nv *,size_t,const nghttp2_data_provider2 *,void *) | | nghttp2_submit_request2 | 0 | nghttp2_session * |
+| (nghttp2_session *,const nghttp2_priority_spec *,const nghttp2_nv *,size_t,const nghttp2_data_provider2 *,void *) | | nghttp2_submit_request2 | 1 | const nghttp2_priority_spec * |
+| (nghttp2_session *,const nghttp2_priority_spec *,const nghttp2_nv *,size_t,const nghttp2_data_provider2 *,void *) | | nghttp2_submit_request2 | 2 | const nghttp2_nv * |
+| (nghttp2_session *,const nghttp2_priority_spec *,const nghttp2_nv *,size_t,const nghttp2_data_provider2 *,void *) | | nghttp2_submit_request2 | 3 | size_t |
+| (nghttp2_session *,const nghttp2_priority_spec *,const nghttp2_nv *,size_t,const nghttp2_data_provider2 *,void *) | | nghttp2_submit_request2 | 4 | const nghttp2_data_provider2 * |
+| (nghttp2_session *,const nghttp2_priority_spec *,const nghttp2_nv *,size_t,const nghttp2_data_provider2 *,void *) | | nghttp2_submit_request2 | 5 | void * |
+| (nghttp2_session *,const nghttp2_priority_spec *,const nghttp2_nv *,size_t,const nghttp2_data_provider *,void *) | | nghttp2_submit_request | 0 | nghttp2_session * |
+| (nghttp2_session *,const nghttp2_priority_spec *,const nghttp2_nv *,size_t,const nghttp2_data_provider *,void *) | | nghttp2_submit_request | 1 | const nghttp2_priority_spec * |
+| (nghttp2_session *,const nghttp2_priority_spec *,const nghttp2_nv *,size_t,const nghttp2_data_provider *,void *) | | nghttp2_submit_request | 2 | const nghttp2_nv * |
+| (nghttp2_session *,const nghttp2_priority_spec *,const nghttp2_nv *,size_t,const nghttp2_data_provider *,void *) | | nghttp2_submit_request | 3 | size_t |
+| (nghttp2_session *,const nghttp2_priority_spec *,const nghttp2_nv *,size_t,const nghttp2_data_provider *,void *) | | nghttp2_submit_request | 4 | const nghttp2_data_provider * |
+| (nghttp2_session *,const nghttp2_priority_spec *,const nghttp2_nv *,size_t,const nghttp2_data_provider *,void *) | | nghttp2_submit_request | 5 | void * |
+| (nghttp2_session *,const uint8_t *,size_t) | | nghttp2_session_mem_recv | 0 | nghttp2_session * |
+| (nghttp2_session *,const uint8_t *,size_t) | | nghttp2_session_mem_recv | 1 | const uint8_t * |
+| (nghttp2_session *,const uint8_t *,size_t) | | nghttp2_session_mem_recv | 2 | size_t |
+| (nghttp2_session *,const uint8_t *,size_t) | | nghttp2_session_mem_recv2 | 0 | nghttp2_session * |
+| (nghttp2_session *,const uint8_t *,size_t) | | nghttp2_session_mem_recv2 | 1 | const uint8_t * |
+| (nghttp2_session *,const uint8_t *,size_t) | | nghttp2_session_mem_recv2 | 2 | size_t |
+| (nghttp2_session *,const uint8_t *,size_t,int,void *) | | nghttp2_session_upgrade2 | 0 | nghttp2_session * |
+| (nghttp2_session *,const uint8_t *,size_t,int,void *) | | nghttp2_session_upgrade2 | 1 | const uint8_t * |
+| (nghttp2_session *,const uint8_t *,size_t,int,void *) | | nghttp2_session_upgrade2 | 2 | size_t |
+| (nghttp2_session *,const uint8_t *,size_t,int,void *) | | nghttp2_session_upgrade2 | 3 | int |
+| (nghttp2_session *,const uint8_t *,size_t,int,void *) | | nghttp2_session_upgrade2 | 4 | void * |
+| (nghttp2_session *,const uint8_t *,size_t,void *) | | nghttp2_session_upgrade | 0 | nghttp2_session * |
+| (nghttp2_session *,const uint8_t *,size_t,void *) | | nghttp2_session_upgrade | 1 | const uint8_t * |
+| (nghttp2_session *,const uint8_t *,size_t,void *) | | nghttp2_session_upgrade | 2 | size_t |
+| (nghttp2_session *,const uint8_t *,size_t,void *) | | nghttp2_session_upgrade | 3 | void * |
+| (nghttp2_session *,int32_t) | | nghttp2_session_find_stream | 0 | nghttp2_session * |
+| (nghttp2_session *,int32_t) | | nghttp2_session_find_stream | 1 | int32_t |
+| (nghttp2_session *,int32_t) | | nghttp2_session_get_stream | 0 | nghttp2_session * |
+| (nghttp2_session *,int32_t) | | nghttp2_session_get_stream | 1 | int32_t |
+| (nghttp2_session *,int32_t) | | nghttp2_session_get_stream_effective_local_window_size | 0 | nghttp2_session * |
+| (nghttp2_session *,int32_t) | | nghttp2_session_get_stream_effective_local_window_size | 1 | int32_t |
+| (nghttp2_session *,int32_t) | | nghttp2_session_get_stream_effective_recv_data_length | 0 | nghttp2_session * |
+| (nghttp2_session *,int32_t) | | nghttp2_session_get_stream_effective_recv_data_length | 1 | int32_t |
+| (nghttp2_session *,int32_t) | | nghttp2_session_get_stream_local_close | 0 | nghttp2_session * |
+| (nghttp2_session *,int32_t) | | nghttp2_session_get_stream_local_close | 1 | int32_t |
+| (nghttp2_session *,int32_t) | | nghttp2_session_get_stream_local_window_size | 0 | nghttp2_session * |
+| (nghttp2_session *,int32_t) | | nghttp2_session_get_stream_local_window_size | 1 | int32_t |
+| (nghttp2_session *,int32_t) | | nghttp2_session_get_stream_raw | 0 | nghttp2_session * |
+| (nghttp2_session *,int32_t) | | nghttp2_session_get_stream_raw | 1 | int32_t |
+| (nghttp2_session *,int32_t) | | nghttp2_session_get_stream_remote_close | 0 | nghttp2_session * |
+| (nghttp2_session *,int32_t) | | nghttp2_session_get_stream_remote_close | 1 | int32_t |
+| (nghttp2_session *,int32_t) | | nghttp2_session_get_stream_remote_window_size | 0 | nghttp2_session * |
+| (nghttp2_session *,int32_t) | | nghttp2_session_get_stream_remote_window_size | 1 | int32_t |
+| (nghttp2_session *,int32_t) | | nghttp2_session_get_stream_user_data | 0 | nghttp2_session * |
+| (nghttp2_session *,int32_t) | | nghttp2_session_get_stream_user_data | 1 | int32_t |
+| (nghttp2_session *,int32_t) | | nghttp2_session_set_next_stream_id | 0 | nghttp2_session * |
+| (nghttp2_session *,int32_t) | | nghttp2_session_set_next_stream_id | 1 | int32_t |
+| (nghttp2_session *,int32_t,const nghttp2_extpri *,int) | | nghttp2_session_change_extpri_stream_priority | 0 | nghttp2_session * |
+| (nghttp2_session *,int32_t,const nghttp2_extpri *,int) | | nghttp2_session_change_extpri_stream_priority | 1 | int32_t |
+| (nghttp2_session *,int32_t,const nghttp2_extpri *,int) | | nghttp2_session_change_extpri_stream_priority | 2 | const nghttp2_extpri * |
+| (nghttp2_session *,int32_t,const nghttp2_extpri *,int) | | nghttp2_session_change_extpri_stream_priority | 3 | int |
+| (nghttp2_session *,int32_t,const nghttp2_nv *,size_t) | | nghttp2_submit_trailer | 0 | nghttp2_session * |
+| (nghttp2_session *,int32_t,const nghttp2_nv *,size_t) | | nghttp2_submit_trailer | 1 | int32_t |
+| (nghttp2_session *,int32_t,const nghttp2_nv *,size_t) | | nghttp2_submit_trailer | 2 | const nghttp2_nv * |
+| (nghttp2_session *,int32_t,const nghttp2_nv *,size_t) | | nghttp2_submit_trailer | 3 | size_t |
+| (nghttp2_session *,int32_t,const nghttp2_nv *,size_t,const nghttp2_data_provider2 *) | | nghttp2_submit_response2 | 0 | nghttp2_session * |
+| (nghttp2_session *,int32_t,const nghttp2_nv *,size_t,const nghttp2_data_provider2 *) | | nghttp2_submit_response2 | 1 | int32_t |
+| (nghttp2_session *,int32_t,const nghttp2_nv *,size_t,const nghttp2_data_provider2 *) | | nghttp2_submit_response2 | 2 | const nghttp2_nv * |
+| (nghttp2_session *,int32_t,const nghttp2_nv *,size_t,const nghttp2_data_provider2 *) | | nghttp2_submit_response2 | 3 | size_t |
+| (nghttp2_session *,int32_t,const nghttp2_nv *,size_t,const nghttp2_data_provider2 *) | | nghttp2_submit_response2 | 4 | const nghttp2_data_provider2 * |
+| (nghttp2_session *,int32_t,const nghttp2_nv *,size_t,const nghttp2_data_provider *) | | nghttp2_submit_response | 0 | nghttp2_session * |
+| (nghttp2_session *,int32_t,const nghttp2_nv *,size_t,const nghttp2_data_provider *) | | nghttp2_submit_response | 1 | int32_t |
+| (nghttp2_session *,int32_t,const nghttp2_nv *,size_t,const nghttp2_data_provider *) | | nghttp2_submit_response | 2 | const nghttp2_nv * |
+| (nghttp2_session *,int32_t,const nghttp2_nv *,size_t,const nghttp2_data_provider *) | | nghttp2_submit_response | 3 | size_t |
+| (nghttp2_session *,int32_t,const nghttp2_nv *,size_t,const nghttp2_data_provider *) | | nghttp2_submit_response | 4 | const nghttp2_data_provider * |
+| (nghttp2_session *,int32_t,size_t) | | nghttp2_session_consume | 0 | nghttp2_session * |
+| (nghttp2_session *,int32_t,size_t) | | nghttp2_session_consume | 1 | int32_t |
+| (nghttp2_session *,int32_t,size_t) | | nghttp2_session_consume | 2 | size_t |
+| (nghttp2_session *,int32_t,uint8_t,nghttp2_stream_state,void *) | | nghttp2_session_open_stream | 0 | nghttp2_session * |
+| (nghttp2_session *,int32_t,uint8_t,nghttp2_stream_state,void *) | | nghttp2_session_open_stream | 1 | int32_t |
+| (nghttp2_session *,int32_t,uint8_t,nghttp2_stream_state,void *) | | nghttp2_session_open_stream | 2 | uint8_t |
+| (nghttp2_session *,int32_t,uint8_t,nghttp2_stream_state,void *) | | nghttp2_session_open_stream | 3 | nghttp2_stream_state |
+| (nghttp2_session *,int32_t,uint8_t,nghttp2_stream_state,void *) | | nghttp2_session_open_stream | 4 | void * |
+| (nghttp2_session *,nghttp2_bufs *,size_t,nghttp2_frame *,nghttp2_data_aux_data *,nghttp2_stream *) | | nghttp2_session_pack_data | 0 | nghttp2_session * |
+| (nghttp2_session *,nghttp2_bufs *,size_t,nghttp2_frame *,nghttp2_data_aux_data *,nghttp2_stream *) | | nghttp2_session_pack_data | 1 | nghttp2_bufs * |
+| (nghttp2_session *,nghttp2_bufs *,size_t,nghttp2_frame *,nghttp2_data_aux_data *,nghttp2_stream *) | | nghttp2_session_pack_data | 2 | size_t |
+| (nghttp2_session *,nghttp2_bufs *,size_t,nghttp2_frame *,nghttp2_data_aux_data *,nghttp2_stream *) | | nghttp2_session_pack_data | 3 | nghttp2_frame * |
+| (nghttp2_session *,nghttp2_bufs *,size_t,nghttp2_frame *,nghttp2_data_aux_data *,nghttp2_stream *) | | nghttp2_session_pack_data | 4 | nghttp2_data_aux_data * |
+| (nghttp2_session *,nghttp2_bufs *,size_t,nghttp2_frame *,nghttp2_data_aux_data *,nghttp2_stream *) | | nghttp2_session_pack_data | 5 | nghttp2_stream * |
+| (nghttp2_session *,nghttp2_extpri *,int32_t) | | nghttp2_session_get_extpri_stream_priority | 0 | nghttp2_session * |
+| (nghttp2_session *,nghttp2_extpri *,int32_t) | | nghttp2_session_get_extpri_stream_priority | 1 | nghttp2_extpri * |
+| (nghttp2_session *,nghttp2_extpri *,int32_t) | | nghttp2_session_get_extpri_stream_priority | 2 | int32_t |
+| (nghttp2_session *,nghttp2_frame *) | | nghttp2_session_on_goaway_received | 0 | nghttp2_session * |
+| (nghttp2_session *,nghttp2_frame *) | | nghttp2_session_on_goaway_received | 1 | nghttp2_frame * |
+| (nghttp2_session *,nghttp2_frame *) | | nghttp2_session_on_push_promise_received | 0 | nghttp2_session * |
+| (nghttp2_session *,nghttp2_frame *) | | nghttp2_session_on_push_promise_received | 1 | nghttp2_frame * |
+| (nghttp2_session *,nghttp2_frame *) | | nghttp2_session_on_request_headers_received | 0 | nghttp2_session * |
+| (nghttp2_session *,nghttp2_frame *) | | nghttp2_session_on_request_headers_received | 1 | nghttp2_frame * |
+| (nghttp2_session *,nghttp2_frame *) | | nghttp2_session_on_window_update_received | 0 | nghttp2_session * |
+| (nghttp2_session *,nghttp2_frame *) | | nghttp2_session_on_window_update_received | 1 | nghttp2_frame * |
+| (nghttp2_session *,nghttp2_outbound_item *) | | nghttp2_session_add_item | 0 | nghttp2_session * |
+| (nghttp2_session *,nghttp2_outbound_item *) | | nghttp2_session_add_item | 1 | nghttp2_outbound_item * |
+| (nghttp2_session *,nghttp2_settings_entry *,size_t) | | nghttp2_session_update_local_settings | 0 | nghttp2_session * |
+| (nghttp2_session *,nghttp2_settings_entry *,size_t) | | nghttp2_session_update_local_settings | 1 | nghttp2_settings_entry * |
+| (nghttp2_session *,nghttp2_settings_entry *,size_t) | | nghttp2_session_update_local_settings | 2 | size_t |
+| (nghttp2_session *,nghttp2_settings_id) | | nghttp2_session_get_local_settings | 0 | nghttp2_session * |
+| (nghttp2_session *,nghttp2_settings_id) | | nghttp2_session_get_local_settings | 1 | nghttp2_settings_id |
+| (nghttp2_session *,nghttp2_settings_id) | | nghttp2_session_get_remote_settings | 0 | nghttp2_session * |
+| (nghttp2_session *,nghttp2_settings_id) | | nghttp2_session_get_remote_settings | 1 | nghttp2_settings_id |
+| (nghttp2_session *,nghttp2_stream *) | | nghttp2_session_destroy_stream | 0 | nghttp2_session * |
+| (nghttp2_session *,nghttp2_stream *) | | nghttp2_session_destroy_stream | 1 | nghttp2_stream * |
+| (nghttp2_session *,nghttp2_stream *,nghttp2_frame *,nghttp2_hd_nv *,int) | | nghttp2_http_on_header | 0 | nghttp2_session * |
+| (nghttp2_session *,nghttp2_stream *,nghttp2_frame *,nghttp2_hd_nv *,int) | | nghttp2_http_on_header | 1 | nghttp2_stream * |
+| (nghttp2_session *,nghttp2_stream *,nghttp2_frame *,nghttp2_hd_nv *,int) | | nghttp2_http_on_header | 2 | nghttp2_frame * |
+| (nghttp2_session *,nghttp2_stream *,nghttp2_frame *,nghttp2_hd_nv *,int) | | nghttp2_http_on_header | 3 | nghttp2_hd_nv * |
+| (nghttp2_session *,nghttp2_stream *,nghttp2_frame *,nghttp2_hd_nv *,int) | | nghttp2_http_on_header | 4 | int |
+| (nghttp2_session *,nghttp2_stream *,size_t,int) | | nghttp2_session_update_recv_stream_window_size | 0 | nghttp2_session * |
+| (nghttp2_session *,nghttp2_stream *,size_t,int) | | nghttp2_session_update_recv_stream_window_size | 1 | nghttp2_stream * |
+| (nghttp2_session *,nghttp2_stream *,size_t,int) | | nghttp2_session_update_recv_stream_window_size | 2 | size_t |
+| (nghttp2_session *,nghttp2_stream *,size_t,int) | | nghttp2_session_update_recv_stream_window_size | 3 | int |
+| (nghttp2_session *,size_t) | | nghttp2_session_consume_connection | 0 | nghttp2_session * |
+| (nghttp2_session *,size_t) | | nghttp2_session_consume_connection | 1 | size_t |
+| (nghttp2_session *,size_t) | | nghttp2_session_update_recv_connection_window_size | 0 | nghttp2_session * |
+| (nghttp2_session *,size_t) | | nghttp2_session_update_recv_connection_window_size | 1 | size_t |
+| (nghttp2_session *,uint8_t,const nghttp2_settings_entry *,size_t) | | nghttp2_session_add_settings | 0 | nghttp2_session * |
+| (nghttp2_session *,uint8_t,const nghttp2_settings_entry *,size_t) | | nghttp2_session_add_settings | 1 | uint8_t |
+| (nghttp2_session *,uint8_t,const nghttp2_settings_entry *,size_t) | | nghttp2_session_add_settings | 2 | const nghttp2_settings_entry * |
+| (nghttp2_session *,uint8_t,const nghttp2_settings_entry *,size_t) | | nghttp2_session_add_settings | 3 | size_t |
+| (nghttp2_session *,uint8_t,const nghttp2_settings_entry *,size_t) | | nghttp2_submit_settings | 0 | nghttp2_session * |
+| (nghttp2_session *,uint8_t,const nghttp2_settings_entry *,size_t) | | nghttp2_submit_settings | 1 | uint8_t |
+| (nghttp2_session *,uint8_t,const nghttp2_settings_entry *,size_t) | | nghttp2_submit_settings | 2 | const nghttp2_settings_entry * |
+| (nghttp2_session *,uint8_t,const nghttp2_settings_entry *,size_t) | | nghttp2_submit_settings | 3 | size_t |
+| (nghttp2_session *,uint8_t,int32_t,const nghttp2_data_provider2 *) | | nghttp2_submit_data2 | 0 | nghttp2_session * |
+| (nghttp2_session *,uint8_t,int32_t,const nghttp2_data_provider2 *) | | nghttp2_submit_data2 | 1 | uint8_t |
+| (nghttp2_session *,uint8_t,int32_t,const nghttp2_data_provider2 *) | | nghttp2_submit_data2 | 2 | int32_t |
+| (nghttp2_session *,uint8_t,int32_t,const nghttp2_data_provider2 *) | | nghttp2_submit_data2 | 3 | const nghttp2_data_provider2 * |
+| (nghttp2_session *,uint8_t,int32_t,const nghttp2_data_provider *) | | nghttp2_submit_data | 0 | nghttp2_session * |
+| (nghttp2_session *,uint8_t,int32_t,const nghttp2_data_provider *) | | nghttp2_submit_data | 1 | uint8_t |
+| (nghttp2_session *,uint8_t,int32_t,const nghttp2_data_provider *) | | nghttp2_submit_data | 2 | int32_t |
+| (nghttp2_session *,uint8_t,int32_t,const nghttp2_data_provider *) | | nghttp2_submit_data | 3 | const nghttp2_data_provider * |
+| (nghttp2_session *,uint8_t,int32_t,const nghttp2_data_provider_wrap *) | | nghttp2_submit_data_shared | 0 | nghttp2_session * |
+| (nghttp2_session *,uint8_t,int32_t,const nghttp2_data_provider_wrap *) | | nghttp2_submit_data_shared | 1 | uint8_t |
+| (nghttp2_session *,uint8_t,int32_t,const nghttp2_data_provider_wrap *) | | nghttp2_submit_data_shared | 2 | int32_t |
+| (nghttp2_session *,uint8_t,int32_t,const nghttp2_data_provider_wrap *) | | nghttp2_submit_data_shared | 3 | const nghttp2_data_provider_wrap * |
+| (nghttp2_session *,uint8_t,int32_t,const nghttp2_nv *,size_t,void *) | | nghttp2_submit_push_promise | 0 | nghttp2_session * |
+| (nghttp2_session *,uint8_t,int32_t,const nghttp2_nv *,size_t,void *) | | nghttp2_submit_push_promise | 1 | uint8_t |
+| (nghttp2_session *,uint8_t,int32_t,const nghttp2_nv *,size_t,void *) | | nghttp2_submit_push_promise | 2 | int32_t |
+| (nghttp2_session *,uint8_t,int32_t,const nghttp2_nv *,size_t,void *) | | nghttp2_submit_push_promise | 3 | const nghttp2_nv * |
+| (nghttp2_session *,uint8_t,int32_t,const nghttp2_nv *,size_t,void *) | | nghttp2_submit_push_promise | 4 | size_t |
+| (nghttp2_session *,uint8_t,int32_t,const nghttp2_nv *,size_t,void *) | | nghttp2_submit_push_promise | 5 | void * |
+| (nghttp2_session *,uint8_t,int32_t,const nghttp2_priority_spec *,const nghttp2_nv *,size_t,void *) | | nghttp2_submit_headers | 0 | nghttp2_session * |
+| (nghttp2_session *,uint8_t,int32_t,const nghttp2_priority_spec *,const nghttp2_nv *,size_t,void *) | | nghttp2_submit_headers | 1 | uint8_t |
+| (nghttp2_session *,uint8_t,int32_t,const nghttp2_priority_spec *,const nghttp2_nv *,size_t,void *) | | nghttp2_submit_headers | 2 | int32_t |
+| (nghttp2_session *,uint8_t,int32_t,const nghttp2_priority_spec *,const nghttp2_nv *,size_t,void *) | | nghttp2_submit_headers | 3 | const nghttp2_priority_spec * |
+| (nghttp2_session *,uint8_t,int32_t,const nghttp2_priority_spec *,const nghttp2_nv *,size_t,void *) | | nghttp2_submit_headers | 4 | const nghttp2_nv * |
+| (nghttp2_session *,uint8_t,int32_t,const nghttp2_priority_spec *,const nghttp2_nv *,size_t,void *) | | nghttp2_submit_headers | 5 | size_t |
+| (nghttp2_session *,uint8_t,int32_t,const nghttp2_priority_spec *,const nghttp2_nv *,size_t,void *) | | nghttp2_submit_headers | 6 | void * |
+| (nghttp2_session *,uint8_t,int32_t,int32_t) | | nghttp2_session_set_local_window_size | 0 | nghttp2_session * |
+| (nghttp2_session *,uint8_t,int32_t,int32_t) | | nghttp2_session_set_local_window_size | 1 | uint8_t |
+| (nghttp2_session *,uint8_t,int32_t,int32_t) | | nghttp2_session_set_local_window_size | 2 | int32_t |
+| (nghttp2_session *,uint8_t,int32_t,int32_t) | | nghttp2_session_set_local_window_size | 3 | int32_t |
+| (nghttp2_session *,uint8_t,int32_t,int32_t) | | nghttp2_submit_window_update | 0 | nghttp2_session * |
+| (nghttp2_session *,uint8_t,int32_t,int32_t) | | nghttp2_submit_window_update | 1 | uint8_t |
+| (nghttp2_session *,uint8_t,int32_t,int32_t) | | nghttp2_submit_window_update | 2 | int32_t |
+| (nghttp2_session *,uint8_t,int32_t,int32_t) | | nghttp2_submit_window_update | 3 | int32_t |
+| (nghttp2_session *,void *) | | nghttp2_session_set_user_data | 0 | nghttp2_session * |
+| (nghttp2_session *,void *) | | nghttp2_session_set_user_data | 1 | void * |
+| (nghttp2_session_callbacks **) | | nghttp2_session_callbacks_new | 0 | nghttp2_session_callbacks ** |
+| (nghttp2_session_callbacks *,nghttp2_before_frame_send_callback) | | nghttp2_session_callbacks_set_before_frame_send_callback | 0 | nghttp2_session_callbacks * |
+| (nghttp2_session_callbacks *,nghttp2_before_frame_send_callback) | | nghttp2_session_callbacks_set_before_frame_send_callback | 1 | nghttp2_before_frame_send_callback |
+| (nghttp2_session_callbacks *,nghttp2_data_source_read_length_callback2) | | nghttp2_session_callbacks_set_data_source_read_length_callback2 | 0 | nghttp2_session_callbacks * |
+| (nghttp2_session_callbacks *,nghttp2_data_source_read_length_callback2) | | nghttp2_session_callbacks_set_data_source_read_length_callback2 | 1 | nghttp2_data_source_read_length_callback2 |
+| (nghttp2_session_callbacks *,nghttp2_data_source_read_length_callback) | | nghttp2_session_callbacks_set_data_source_read_length_callback | 0 | nghttp2_session_callbacks * |
+| (nghttp2_session_callbacks *,nghttp2_data_source_read_length_callback) | | nghttp2_session_callbacks_set_data_source_read_length_callback | 1 | nghttp2_data_source_read_length_callback |
+| (nghttp2_session_callbacks *,nghttp2_error_callback2) | | nghttp2_session_callbacks_set_error_callback2 | 0 | nghttp2_session_callbacks * |
+| (nghttp2_session_callbacks *,nghttp2_error_callback2) | | nghttp2_session_callbacks_set_error_callback2 | 1 | nghttp2_error_callback2 |
+| (nghttp2_session_callbacks *,nghttp2_error_callback) | | nghttp2_session_callbacks_set_error_callback | 0 | nghttp2_session_callbacks * |
+| (nghttp2_session_callbacks *,nghttp2_error_callback) | | nghttp2_session_callbacks_set_error_callback | 1 | nghttp2_error_callback |
+| (nghttp2_session_callbacks *,nghttp2_on_begin_frame_callback) | | nghttp2_session_callbacks_set_on_begin_frame_callback | 0 | nghttp2_session_callbacks * |
+| (nghttp2_session_callbacks *,nghttp2_on_begin_frame_callback) | | nghttp2_session_callbacks_set_on_begin_frame_callback | 1 | nghttp2_on_begin_frame_callback |
+| (nghttp2_session_callbacks *,nghttp2_on_begin_headers_callback) | | nghttp2_session_callbacks_set_on_begin_headers_callback | 0 | nghttp2_session_callbacks * |
+| (nghttp2_session_callbacks *,nghttp2_on_begin_headers_callback) | | nghttp2_session_callbacks_set_on_begin_headers_callback | 1 | nghttp2_on_begin_headers_callback |
+| (nghttp2_session_callbacks *,nghttp2_on_data_chunk_recv_callback) | | nghttp2_session_callbacks_set_on_data_chunk_recv_callback | 0 | nghttp2_session_callbacks * |
+| (nghttp2_session_callbacks *,nghttp2_on_data_chunk_recv_callback) | | nghttp2_session_callbacks_set_on_data_chunk_recv_callback | 1 | nghttp2_on_data_chunk_recv_callback |
+| (nghttp2_session_callbacks *,nghttp2_on_extension_chunk_recv_callback) | | nghttp2_session_callbacks_set_on_extension_chunk_recv_callback | 0 | nghttp2_session_callbacks * |
+| (nghttp2_session_callbacks *,nghttp2_on_extension_chunk_recv_callback) | | nghttp2_session_callbacks_set_on_extension_chunk_recv_callback | 1 | nghttp2_on_extension_chunk_recv_callback |
+| (nghttp2_session_callbacks *,nghttp2_on_frame_not_send_callback) | | nghttp2_session_callbacks_set_on_frame_not_send_callback | 0 | nghttp2_session_callbacks * |
+| (nghttp2_session_callbacks *,nghttp2_on_frame_not_send_callback) | | nghttp2_session_callbacks_set_on_frame_not_send_callback | 1 | nghttp2_on_frame_not_send_callback |
+| (nghttp2_session_callbacks *,nghttp2_on_frame_recv_callback) | | nghttp2_session_callbacks_set_on_frame_recv_callback | 0 | nghttp2_session_callbacks * |
+| (nghttp2_session_callbacks *,nghttp2_on_frame_recv_callback) | | nghttp2_session_callbacks_set_on_frame_recv_callback | 1 | nghttp2_on_frame_recv_callback |
+| (nghttp2_session_callbacks *,nghttp2_on_frame_send_callback) | | nghttp2_session_callbacks_set_on_frame_send_callback | 0 | nghttp2_session_callbacks * |
+| (nghttp2_session_callbacks *,nghttp2_on_frame_send_callback) | | nghttp2_session_callbacks_set_on_frame_send_callback | 1 | nghttp2_on_frame_send_callback |
+| (nghttp2_session_callbacks *,nghttp2_on_header_callback2) | | nghttp2_session_callbacks_set_on_header_callback2 | 0 | nghttp2_session_callbacks * |
+| (nghttp2_session_callbacks *,nghttp2_on_header_callback2) | | nghttp2_session_callbacks_set_on_header_callback2 | 1 | nghttp2_on_header_callback2 |
+| (nghttp2_session_callbacks *,nghttp2_on_header_callback) | | nghttp2_session_callbacks_set_on_header_callback | 0 | nghttp2_session_callbacks * |
+| (nghttp2_session_callbacks *,nghttp2_on_header_callback) | | nghttp2_session_callbacks_set_on_header_callback | 1 | nghttp2_on_header_callback |
+| (nghttp2_session_callbacks *,nghttp2_on_invalid_frame_recv_callback) | | nghttp2_session_callbacks_set_on_invalid_frame_recv_callback | 0 | nghttp2_session_callbacks * |
+| (nghttp2_session_callbacks *,nghttp2_on_invalid_frame_recv_callback) | | nghttp2_session_callbacks_set_on_invalid_frame_recv_callback | 1 | nghttp2_on_invalid_frame_recv_callback |
+| (nghttp2_session_callbacks *,nghttp2_on_invalid_header_callback2) | | nghttp2_session_callbacks_set_on_invalid_header_callback2 | 0 | nghttp2_session_callbacks * |
+| (nghttp2_session_callbacks *,nghttp2_on_invalid_header_callback2) | | nghttp2_session_callbacks_set_on_invalid_header_callback2 | 1 | nghttp2_on_invalid_header_callback2 |
+| (nghttp2_session_callbacks *,nghttp2_on_invalid_header_callback) | | nghttp2_session_callbacks_set_on_invalid_header_callback | 0 | nghttp2_session_callbacks * |
+| (nghttp2_session_callbacks *,nghttp2_on_invalid_header_callback) | | nghttp2_session_callbacks_set_on_invalid_header_callback | 1 | nghttp2_on_invalid_header_callback |
+| (nghttp2_session_callbacks *,nghttp2_on_stream_close_callback) | | nghttp2_session_callbacks_set_on_stream_close_callback | 0 | nghttp2_session_callbacks * |
+| (nghttp2_session_callbacks *,nghttp2_on_stream_close_callback) | | nghttp2_session_callbacks_set_on_stream_close_callback | 1 | nghttp2_on_stream_close_callback |
+| (nghttp2_session_callbacks *,nghttp2_pack_extension_callback2) | | nghttp2_session_callbacks_set_pack_extension_callback2 | 0 | nghttp2_session_callbacks * |
+| (nghttp2_session_callbacks *,nghttp2_pack_extension_callback2) | | nghttp2_session_callbacks_set_pack_extension_callback2 | 1 | nghttp2_pack_extension_callback2 |
+| (nghttp2_session_callbacks *,nghttp2_pack_extension_callback) | | nghttp2_session_callbacks_set_pack_extension_callback | 0 | nghttp2_session_callbacks * |
+| (nghttp2_session_callbacks *,nghttp2_pack_extension_callback) | | nghttp2_session_callbacks_set_pack_extension_callback | 1 | nghttp2_pack_extension_callback |
+| (nghttp2_session_callbacks *,nghttp2_recv_callback2) | | nghttp2_session_callbacks_set_recv_callback2 | 0 | nghttp2_session_callbacks * |
+| (nghttp2_session_callbacks *,nghttp2_recv_callback2) | | nghttp2_session_callbacks_set_recv_callback2 | 1 | nghttp2_recv_callback2 |
+| (nghttp2_session_callbacks *,nghttp2_recv_callback) | | nghttp2_session_callbacks_set_recv_callback | 0 | nghttp2_session_callbacks * |
+| (nghttp2_session_callbacks *,nghttp2_recv_callback) | | nghttp2_session_callbacks_set_recv_callback | 1 | nghttp2_recv_callback |
+| (nghttp2_session_callbacks *,nghttp2_select_padding_callback2) | | nghttp2_session_callbacks_set_select_padding_callback2 | 0 | nghttp2_session_callbacks * |
+| (nghttp2_session_callbacks *,nghttp2_select_padding_callback2) | | nghttp2_session_callbacks_set_select_padding_callback2 | 1 | nghttp2_select_padding_callback2 |
+| (nghttp2_session_callbacks *,nghttp2_select_padding_callback) | | nghttp2_session_callbacks_set_select_padding_callback | 0 | nghttp2_session_callbacks * |
+| (nghttp2_session_callbacks *,nghttp2_select_padding_callback) | | nghttp2_session_callbacks_set_select_padding_callback | 1 | nghttp2_select_padding_callback |
+| (nghttp2_session_callbacks *,nghttp2_send_callback2) | | nghttp2_session_callbacks_set_send_callback2 | 0 | nghttp2_session_callbacks * |
+| (nghttp2_session_callbacks *,nghttp2_send_callback2) | | nghttp2_session_callbacks_set_send_callback2 | 1 | nghttp2_send_callback2 |
+| (nghttp2_session_callbacks *,nghttp2_send_callback) | | nghttp2_session_callbacks_set_send_callback | 0 | nghttp2_session_callbacks * |
+| (nghttp2_session_callbacks *,nghttp2_send_callback) | | nghttp2_session_callbacks_set_send_callback | 1 | nghttp2_send_callback |
+| (nghttp2_session_callbacks *,nghttp2_send_data_callback) | | nghttp2_session_callbacks_set_send_data_callback | 0 | nghttp2_session_callbacks * |
+| (nghttp2_session_callbacks *,nghttp2_send_data_callback) | | nghttp2_session_callbacks_set_send_data_callback | 1 | nghttp2_send_data_callback |
+| (nghttp2_session_callbacks *,nghttp2_unpack_extension_callback) | | nghttp2_session_callbacks_set_unpack_extension_callback | 0 | nghttp2_session_callbacks * |
+| (nghttp2_session_callbacks *,nghttp2_unpack_extension_callback) | | nghttp2_session_callbacks_set_unpack_extension_callback | 1 | nghttp2_unpack_extension_callback |
+| (nghttp2_settings *,nghttp2_settings_entry *,size_t) | | nghttp2_frame_unpack_settings_payload | 0 | nghttp2_settings * |
+| (nghttp2_settings *,nghttp2_settings_entry *,size_t) | | nghttp2_frame_unpack_settings_payload | 1 | nghttp2_settings_entry * |
+| (nghttp2_settings *,nghttp2_settings_entry *,size_t) | | nghttp2_frame_unpack_settings_payload | 2 | size_t |
+| (nghttp2_settings *,uint8_t,nghttp2_settings_entry *,size_t) | | nghttp2_frame_settings_init | 0 | nghttp2_settings * |
+| (nghttp2_settings *,uint8_t,nghttp2_settings_entry *,size_t) | | nghttp2_frame_settings_init | 1 | uint8_t |
+| (nghttp2_settings *,uint8_t,nghttp2_settings_entry *,size_t) | | nghttp2_frame_settings_init | 2 | nghttp2_settings_entry * |
+| (nghttp2_settings *,uint8_t,nghttp2_settings_entry *,size_t) | | nghttp2_frame_settings_init | 3 | size_t |
+| (nghttp2_settings_entry **,size_t *,const uint8_t *,size_t,nghttp2_mem *) | | nghttp2_frame_unpack_settings_payload2 | 0 | nghttp2_settings_entry ** |
+| (nghttp2_settings_entry **,size_t *,const uint8_t *,size_t,nghttp2_mem *) | | nghttp2_frame_unpack_settings_payload2 | 1 | size_t * |
+| (nghttp2_settings_entry **,size_t *,const uint8_t *,size_t,nghttp2_mem *) | | nghttp2_frame_unpack_settings_payload2 | 2 | const uint8_t * |
+| (nghttp2_settings_entry **,size_t *,const uint8_t *,size_t,nghttp2_mem *) | | nghttp2_frame_unpack_settings_payload2 | 3 | size_t |
+| (nghttp2_settings_entry **,size_t *,const uint8_t *,size_t,nghttp2_mem *) | | nghttp2_frame_unpack_settings_payload2 | 4 | nghttp2_mem * |
+| (nghttp2_stream *) | | nghttp2_stream_get_stream_id | 0 | nghttp2_stream * |
+| (nghttp2_stream *,int32_t,int32_t) | | nghttp2_stream_update_local_initial_window_size | 0 | nghttp2_stream * |
+| (nghttp2_stream *,int32_t,int32_t) | | nghttp2_stream_update_local_initial_window_size | 1 | int32_t |
+| (nghttp2_stream *,int32_t,int32_t) | | nghttp2_stream_update_local_initial_window_size | 2 | int32_t |
+| (nghttp2_stream *,int32_t,int32_t) | | nghttp2_stream_update_remote_initial_window_size | 0 | nghttp2_stream * |
+| (nghttp2_stream *,int32_t,int32_t) | | nghttp2_stream_update_remote_initial_window_size | 1 | int32_t |
+| (nghttp2_stream *,int32_t,int32_t) | | nghttp2_stream_update_remote_initial_window_size | 2 | int32_t |
+| (nghttp2_stream *,int32_t,uint8_t,nghttp2_stream_state,int32_t,int32_t,void *) | | nghttp2_stream_init | 0 | nghttp2_stream * |
+| (nghttp2_stream *,int32_t,uint8_t,nghttp2_stream_state,int32_t,int32_t,void *) | | nghttp2_stream_init | 1 | int32_t |
+| (nghttp2_stream *,int32_t,uint8_t,nghttp2_stream_state,int32_t,int32_t,void *) | | nghttp2_stream_init | 2 | uint8_t |
+| (nghttp2_stream *,int32_t,uint8_t,nghttp2_stream_state,int32_t,int32_t,void *) | | nghttp2_stream_init | 3 | nghttp2_stream_state |
+| (nghttp2_stream *,int32_t,uint8_t,nghttp2_stream_state,int32_t,int32_t,void *) | | nghttp2_stream_init | 4 | int32_t |
+| (nghttp2_stream *,int32_t,uint8_t,nghttp2_stream_state,int32_t,int32_t,void *) | | nghttp2_stream_init | 5 | int32_t |
+| (nghttp2_stream *,int32_t,uint8_t,nghttp2_stream_state,int32_t,int32_t,void *) | | nghttp2_stream_init | 6 | void * |
+| (nghttp2_stream *,nghttp2_outbound_item *) | | nghttp2_stream_attach_item | 0 | nghttp2_stream * |
+| (nghttp2_stream *,nghttp2_outbound_item *) | | nghttp2_stream_attach_item | 1 | nghttp2_outbound_item * |
+| (nghttp2_stream *,nghttp2_shut_flag) | | nghttp2_stream_shutdown | 0 | nghttp2_stream * |
+| (nghttp2_stream *,nghttp2_shut_flag) | | nghttp2_stream_shutdown | 1 | nghttp2_shut_flag |
+| (nghttp2_stream *,size_t) | | nghttp2_http_on_data_chunk | 0 | nghttp2_stream * |
+| (nghttp2_stream *,size_t) | | nghttp2_http_on_data_chunk | 1 | size_t |
+| (nghttp2_stream *,uint8_t) | | nghttp2_stream_defer_item | 0 | nghttp2_stream * |
+| (nghttp2_stream *,uint8_t) | | nghttp2_stream_defer_item | 1 | uint8_t |
+| (nghttp2_stream *,uint8_t) | | nghttp2_stream_resume_deferred_item | 0 | nghttp2_stream * |
+| (nghttp2_stream *,uint8_t) | | nghttp2_stream_resume_deferred_item | 1 | uint8_t |
+| (nghttp2_window_update *,uint8_t,int32_t,int32_t) | | nghttp2_frame_window_update_init | 0 | nghttp2_window_update * |
+| (nghttp2_window_update *,uint8_t,int32_t,int32_t) | | nghttp2_frame_window_update_init | 1 | uint8_t |
+| (nghttp2_window_update *,uint8_t,int32_t,int32_t) | | nghttp2_frame_window_update_init | 2 | int32_t |
+| (nghttp2_window_update *,uint8_t,int32_t,int32_t) | | nghttp2_frame_window_update_init | 3 | int32_t |
+| (pgrs_dir *,curl_off_t,curltime) | | Curl_pgrsLimitWaitTime | 0 | pgrs_dir * |
+| (pgrs_dir *,curl_off_t,curltime) | | Curl_pgrsLimitWaitTime | 1 | curl_off_t |
+| (pgrs_dir *,curl_off_t,curltime) | | Curl_pgrsLimitWaitTime | 2 | curltime |
| (piterator *) | | pqueue_next | 0 | piterator * |
| (plink *) | | Plink_delete | 0 | plink * |
| (plink **,config *) | | Plink_add | 0 | plink ** |
| (plink **,config *) | | Plink_add | 1 | config * |
| (plink **,plink *) | | Plink_copy | 0 | plink ** |
| (plink **,plink *) | | Plink_copy | 1 | plink * |
+| (pollfd[],unsigned int,timediff_t) | | Curl_poll | 0 | pollfd[] |
+| (pollfd[],unsigned int,timediff_t) | | Curl_poll | 1 | unsigned int |
+| (pollfd[],unsigned int,timediff_t) | | Curl_poll | 2 | timediff_t |
| (pqueue *) | | pqueue_iterator | 0 | pqueue * |
| (pqueue *) | | pqueue_peek | 0 | pqueue * |
| (pqueue *) | | pqueue_pop | 0 | pqueue * |
@@ -26462,6 +31716,8 @@ getSignatureParameterName
| (pqueue *,pitem *) | | pqueue_insert | 1 | pitem * |
| (pqueue *,unsigned char *) | | pqueue_find | 0 | pqueue * |
| (pqueue *,unsigned char *) | | pqueue_find | 1 | unsigned char * |
+| (pthread_t *) | | Curl_thread_destroy | 0 | pthread_t * |
+| (pthread_t **) | | Curl_thread_join | 0 | pthread_t ** |
| (regex_t *,const char *,int) | | jim_regcomp | 0 | regex_t * |
| (regex_t *,const char *,int) | | jim_regcomp | 1 | const char * |
| (regex_t *,const char *,int) | | jim_regcomp | 2 | int |
@@ -26474,6 +31730,31 @@ getSignatureParameterName
| (rule *,int) | | Configlist_add | 1 | int |
| (rule *,int) | | Configlist_addbasis | 0 | rule * |
| (rule *,int) | | Configlist_addbasis | 1 | int |
+| (scan_ctx *,const char *,const char *,const char *) | | inithelpscan | 0 | scan_ctx * |
+| (scan_ctx *,const char *,const char *,const char *) | | inithelpscan | 1 | const char * |
+| (scan_ctx *,const char *,const char *,const char *) | | inithelpscan | 2 | const char * |
+| (scan_ctx *,const char *,const char *,const char *) | | inithelpscan | 3 | const char * |
+| (sfparse_parser *,const uint8_t *,size_t) | | sfparse_parser_init | 0 | sfparse_parser * |
+| (sfparse_parser *,const uint8_t *,size_t) | | sfparse_parser_init | 1 | const uint8_t * |
+| (sfparse_parser *,const uint8_t *,size_t) | | sfparse_parser_init | 2 | size_t |
+| (sfparse_parser *,sfparse_value *) | | sfparse_parser_inner_list | 0 | sfparse_parser * |
+| (sfparse_parser *,sfparse_value *) | | sfparse_parser_inner_list | 1 | sfparse_value * |
+| (sfparse_parser *,sfparse_value *) | | sfparse_parser_item | 0 | sfparse_parser * |
+| (sfparse_parser *,sfparse_value *) | | sfparse_parser_item | 1 | sfparse_value * |
+| (sfparse_parser *,sfparse_value *) | | sfparse_parser_list | 0 | sfparse_parser * |
+| (sfparse_parser *,sfparse_value *) | | sfparse_parser_list | 1 | sfparse_value * |
+| (sfparse_parser *,sfparse_vec *,sfparse_value *) | | sfparse_parser_dict | 0 | sfparse_parser * |
+| (sfparse_parser *,sfparse_vec *,sfparse_value *) | | sfparse_parser_dict | 1 | sfparse_vec * |
+| (sfparse_parser *,sfparse_vec *,sfparse_value *) | | sfparse_parser_dict | 2 | sfparse_value * |
+| (sfparse_parser *,sfparse_vec *,sfparse_value *) | | sfparse_parser_param | 0 | sfparse_parser * |
+| (sfparse_parser *,sfparse_vec *,sfparse_value *) | | sfparse_parser_param | 1 | sfparse_vec * |
+| (sfparse_parser *,sfparse_vec *,sfparse_value *) | | sfparse_parser_param | 2 | sfparse_value * |
+| (sfparse_vec *,const sfparse_vec *) | | sfparse_base64decode | 0 | sfparse_vec * |
+| (sfparse_vec *,const sfparse_vec *) | | sfparse_base64decode | 1 | const sfparse_vec * |
+| (sfparse_vec *,const sfparse_vec *) | | sfparse_pctdecode | 0 | sfparse_vec * |
+| (sfparse_vec *,const sfparse_vec *) | | sfparse_pctdecode | 1 | const sfparse_vec * |
+| (sfparse_vec *,const sfparse_vec *) | | sfparse_unescape | 0 | sfparse_vec * |
+| (sfparse_vec *,const sfparse_vec *) | | sfparse_unescape | 1 | const sfparse_vec * |
| (size_t *,const char *) | | next_protos_parse | 0 | size_t * |
| (size_t *,const char *) | | next_protos_parse | 1 | const char * |
| (size_t *,size_t,unsigned char *,unsigned char **,int *,size_t,size_t,OSSL_LIB_CTX *) | | ssl3_cbc_remove_padding_and_mac | 0 | size_t * |
@@ -26493,7 +31774,12 @@ getSignatureParameterName
| (size_t *,size_t,unsigned char *,unsigned char **,int *,size_t,size_t,int,OSSL_LIB_CTX *) | | tls1_cbc_remove_padding_and_mac | 6 | size_t |
| (size_t *,size_t,unsigned char *,unsigned char **,int *,size_t,size_t,int,OSSL_LIB_CTX *) | | tls1_cbc_remove_padding_and_mac | 7 | int |
| (size_t *,size_t,unsigned char *,unsigned char **,int *,size_t,size_t,int,OSSL_LIB_CTX *) | | tls1_cbc_remove_padding_and_mac | 8 | OSSL_LIB_CTX * |
+| (size_t) | | BrotliEncoderMaxCompressedSize | 0 | size_t |
| (size_t) | | EVP_PKEY_meth_get0 | 0 | size_t |
+| (size_t) | | curlx_uztosi | 0 | size_t |
+| (size_t) | | curlx_uztosz | 0 | size_t |
+| (size_t) | | curlx_uztoui | 0 | size_t |
+| (size_t) | | curlx_uztoul | 0 | size_t |
| (size_t) | | ossl_get_extension_type | 0 | size_t |
| (size_t) | | ossl_param_bytes_to_blocks | 0 | size_t |
| (size_t) | | ossl_quic_sstream_new | 0 | size_t |
@@ -26508,11 +31794,51 @@ getSignatureParameterName
| (size_t,const char **,size_t *) | | conf_ssl_get | 0 | size_t |
| (size_t,const char **,size_t *) | | conf_ssl_get | 1 | const char ** |
| (size_t,const char **,size_t *) | | conf_ssl_get | 2 | size_t * |
+| (size_t,const char[],size_t *,uint32_t[]) | | _idn2_punycode_decode | 0 | size_t |
+| (size_t,const char[],size_t *,uint32_t[]) | | _idn2_punycode_decode | 1 | const char[] |
+| (size_t,const char[],size_t *,uint32_t[]) | | _idn2_punycode_decode | 2 | size_t * |
+| (size_t,const char[],size_t *,uint32_t[]) | | _idn2_punycode_decode | 3 | uint32_t[] |
+| (size_t,const uint8_t[],size_t *,uint8_t[]) | | BrotliDecoderDecompress | 0 | size_t |
+| (size_t,const uint8_t[],size_t *,uint8_t[]) | | BrotliDecoderDecompress | 1 | const uint8_t[] |
+| (size_t,const uint8_t[],size_t *,uint8_t[]) | | BrotliDecoderDecompress | 2 | size_t * |
+| (size_t,const uint8_t[],size_t *,uint8_t[]) | | BrotliDecoderDecompress | 3 | uint8_t[] |
+| (size_t,const uint32_t[],size_t *,char[]) | | _idn2_punycode_encode | 0 | size_t |
+| (size_t,const uint32_t[],size_t *,char[]) | | _idn2_punycode_encode | 1 | const uint32_t[] |
+| (size_t,const uint32_t[],size_t *,char[]) | | _idn2_punycode_encode | 2 | size_t * |
+| (size_t,const uint32_t[],size_t *,char[]) | | _idn2_punycode_encode | 3 | char[] |
+| (size_t,size_t,Curl_ssl_scache **) | | Curl_ssl_scache_create | 0 | size_t |
+| (size_t,size_t,Curl_ssl_scache **) | | Curl_ssl_scache_create | 1 | size_t |
+| (size_t,size_t,Curl_ssl_scache **) | | Curl_ssl_scache_create | 2 | Curl_ssl_scache ** |
+| (size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateBackwardReferences | 0 | size_t |
+| (size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateBackwardReferences | 1 | size_t |
+| (size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateBackwardReferences | 2 | const uint8_t * |
+| (size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateBackwardReferences | 3 | size_t |
+| (size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateBackwardReferences | 4 | ContextLut |
+| (size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateBackwardReferences | 5 | const BrotliEncoderParams * |
+| (size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateBackwardReferences | 6 | Hasher * |
+| (size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateBackwardReferences | 7 | int * |
+| (size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateBackwardReferences | 8 | size_t * |
+| (size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateBackwardReferences | 9 | Command * |
+| (size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateBackwardReferences | 10 | size_t * |
+| (size_t,size_t,const uint8_t *,size_t,ContextLut,const BrotliEncoderParams *,Hasher *,int *,size_t *,Command *,size_t *,size_t *) | | BrotliCreateBackwardReferences | 11 | size_t * |
+| (size_t,size_t,size_t,const uint8_t *,size_t *,float *) | | BrotliEstimateBitCostsForLiterals | 0 | size_t |
+| (size_t,size_t,size_t,const uint8_t *,size_t *,float *) | | BrotliEstimateBitCostsForLiterals | 1 | size_t |
+| (size_t,size_t,size_t,const uint8_t *,size_t *,float *) | | BrotliEstimateBitCostsForLiterals | 2 | size_t |
+| (size_t,size_t,size_t,const uint8_t *,size_t *,float *) | | BrotliEstimateBitCostsForLiterals | 3 | const uint8_t * |
+| (size_t,size_t,size_t,const uint8_t *,size_t *,float *) | | BrotliEstimateBitCostsForLiterals | 4 | size_t * |
+| (size_t,size_t,size_t,const uint8_t *,size_t *,float *) | | BrotliEstimateBitCostsForLiterals | 5 | float * |
+| (size_t,size_t,size_t,size_t) | | Curl_multi_handle | 0 | size_t |
+| (size_t,size_t,size_t,size_t) | | Curl_multi_handle | 1 | size_t |
+| (size_t,size_t,size_t,size_t) | | Curl_multi_handle | 2 | size_t |
+| (size_t,size_t,size_t,size_t) | | Curl_multi_handle | 3 | size_t |
| (size_t,size_t,void **,const char *,int) | | CRYPTO_aligned_alloc | 0 | size_t |
| (size_t,size_t,void **,const char *,int) | | CRYPTO_aligned_alloc | 1 | size_t |
| (size_t,size_t,void **,const char *,int) | | CRYPTO_aligned_alloc | 2 | void ** |
| (size_t,size_t,void **,const char *,int) | | CRYPTO_aligned_alloc | 3 | const char * |
| (size_t,size_t,void **,const char *,int) | | CRYPTO_aligned_alloc | 4 | int |
+| (size_t,uint32_t *,uint8_t *) | | BrotliOptimizeHuffmanCountsForRle | 0 | size_t |
+| (size_t,uint32_t *,uint8_t *) | | BrotliOptimizeHuffmanCountsForRle | 1 | uint32_t * |
+| (size_t,uint32_t *,uint8_t *) | | BrotliOptimizeHuffmanCountsForRle | 2 | uint8_t * |
| (size_type,const T &) | deque | assign | 0 | size_type |
| (size_type,const T &) | deque | assign | 1 | const class:0 & |
| (size_type,const T &) | forward_list | assign | 0 | size_type |
@@ -26533,6 +31859,10 @@ getSignatureParameterName
| (size_type,const T &,const Allocator &) | vector | vector | 0 | size_type |
| (size_type,const T &,const Allocator &) | vector | vector | 1 | const class:0 & |
| (size_type,const T &,const Allocator &) | vector | vector | 2 | const class:1 & |
+| (slist_wc **,const char *) | | easysrc_add | 0 | slist_wc ** |
+| (slist_wc **,const char *) | | easysrc_add | 1 | const char * |
+| (slist_wc *,const char *) | | slist_wc_append | 0 | slist_wc * |
+| (slist_wc *,const char *) | | slist_wc_append | 1 | const char * |
| (sqlite3 *) | | close_db | 0 | sqlite3 * |
| (sqlite3 *) | | sqlite3CompletionVtabInit | 0 | sqlite3 * |
| (sqlite3 *) | | sqlite3_changes | 0 | sqlite3 * |
@@ -27047,6 +32377,11 @@ getSignatureParameterName
| (sqlite3expert *,int,int) | | sqlite3_expert_report | 0 | sqlite3expert * |
| (sqlite3expert *,int,int) | | sqlite3_expert_report | 1 | int |
| (sqlite3expert *,int,int) | | sqlite3_expert_report | 2 | int |
+| (ssize_t) | | curlx_sztosi | 0 | ssize_t |
+| (ssl_peer *,Curl_cfilter *,const char *,int) | | Curl_ssl_peer_init | 0 | ssl_peer * |
+| (ssl_peer *,Curl_cfilter *,const char *,int) | | Curl_ssl_peer_init | 1 | Curl_cfilter * |
+| (ssl_peer *,Curl_cfilter *,const char *,int) | | Curl_ssl_peer_init | 2 | const char * |
+| (ssl_peer *,Curl_cfilter *,const char *,int) | | Curl_ssl_peer_init | 3 | int |
| (stack_st_ASN1_UTF8STRING *) | | OSSL_CMP_ITAV_new0_certProfile | 0 | stack_st_ASN1_UTF8STRING * |
| (stack_st_ASN1_UTF8STRING *,const char *,int) | | ossl_cmp_sk_ASN1_UTF8STRING_push_str | 0 | stack_st_ASN1_UTF8STRING * |
| (stack_st_ASN1_UTF8STRING *,const char *,int) | | ossl_cmp_sk_ASN1_UTF8STRING_push_str | 1 | const char * |
@@ -27207,8 +32542,31 @@ getSignatureParameterName
| (stack_st_X509_POLICY_NODE *,const ASN1_OBJECT *) | | ossl_policy_tree_find_sk | 1 | const ASN1_OBJECT * |
| (state *,config *) | | State_insert | 0 | state * |
| (state *,config *) | | State_insert | 1 | config * |
+| (store_netrc *) | | Curl_netrc_cleanup | 0 | store_netrc * |
+| (store_netrc *,const char *,char **,char **,char *) | | Curl_parsenetrc | 0 | store_netrc * |
+| (store_netrc *,const char *,char **,char **,char *) | | Curl_parsenetrc | 1 | const char * |
+| (store_netrc *,const char *,char **,char **,char *) | | Curl_parsenetrc | 2 | char ** |
+| (store_netrc *,const char *,char **,char **,char *) | | Curl_parsenetrc | 3 | char ** |
+| (store_netrc *,const char *,char **,char **,char *) | | Curl_parsenetrc | 4 | char * |
+| (string_buf *,libssh2_uint64_t *) | | _libssh2_get_u64 | 0 | string_buf * |
+| (string_buf *,libssh2_uint64_t *) | | _libssh2_get_u64 | 1 | libssh2_uint64_t * |
+| (string_buf *,uint32_t *) | | _libssh2_get_u32 | 0 | string_buf * |
+| (string_buf *,uint32_t *) | | _libssh2_get_u32 | 1 | uint32_t * |
+| (string_buf *,unsigned char *) | | _libssh2_get_byte | 0 | string_buf * |
+| (string_buf *,unsigned char *) | | _libssh2_get_byte | 1 | unsigned char * |
+| (string_buf *,unsigned char **,size_t *) | | _libssh2_get_bignum_bytes | 0 | string_buf * |
+| (string_buf *,unsigned char **,size_t *) | | _libssh2_get_bignum_bytes | 1 | unsigned char ** |
+| (string_buf *,unsigned char **,size_t *) | | _libssh2_get_bignum_bytes | 2 | size_t * |
+| (string_buf *,unsigned char **,size_t *) | | _libssh2_get_string | 0 | string_buf * |
+| (string_buf *,unsigned char **,size_t *) | | _libssh2_get_string | 1 | unsigned char ** |
+| (string_buf *,unsigned char **,size_t *) | | _libssh2_get_string | 2 | size_t * |
| (symbol *,lemon *) | | has_destructor | 0 | symbol * |
| (symbol *,lemon *) | | has_destructor | 1 | lemon * |
+| (timeval *) | | curlx_tvtoms | 0 | timeval * |
+| (timeval *,timediff_t) | | curlx_mstotv | 0 | timeval * |
+| (timeval *,timediff_t) | | curlx_mstotv | 1 | timediff_t |
+| (timeval,timeval) | | tvdiff | 0 | timeval |
+| (timeval,timeval) | | tvdiff | 1 | timeval |
| (tm *,const ASN1_TIME *) | | ossl_asn1_time_to_tm | 0 | tm * |
| (tm *,const ASN1_TIME *) | | ossl_asn1_time_to_tm | 1 | const ASN1_TIME * |
| (tm *,const ASN1_UTCTIME *) | | ossl_asn1_utctime_to_tm | 0 | tm * |
@@ -27220,6 +32578,75 @@ getSignatureParameterName
| (u64[2],const u128[16],const u8 *,size_t) | | ossl_gcm_ghash_4bit | 1 | const u128[16] |
| (u64[2],const u128[16],const u8 *,size_t) | | ossl_gcm_ghash_4bit | 2 | const u8 * |
| (u64[2],const u128[16],const u8 *,size_t) | | ossl_gcm_ghash_4bit | 3 | size_t |
+| (uLong) | | compressBound | 0 | uLong |
+| (uLong,const Bytef *,uInt) | | adler32 | 0 | uLong |
+| (uLong,const Bytef *,uInt) | | adler32 | 1 | const Bytef * |
+| (uLong,const Bytef *,uInt) | | adler32 | 2 | uInt |
+| (uLong,const Bytef *,z_size_t) | | adler32_z | 0 | uLong |
+| (uLong,const Bytef *,z_size_t) | | adler32_z | 1 | const Bytef * |
+| (uLong,const Bytef *,z_size_t) | | adler32_z | 2 | z_size_t |
+| (uLong,uLong,off64_t) | | adler32_combine64 | 0 | uLong |
+| (uLong,uLong,off64_t) | | adler32_combine64 | 1 | uLong |
+| (uLong,uLong,off64_t) | | adler32_combine64 | 2 | off64_t |
+| (uLong,uLong,off64_t) | | crc32_combine64 | 0 | uLong |
+| (uLong,uLong,off64_t) | | crc32_combine64 | 1 | uLong |
+| (uLong,uLong,off64_t) | | crc32_combine64 | 2 | off64_t |
+| (uLong,uLong,off_t) | | adler32_combine | 0 | uLong |
+| (uLong,uLong,off_t) | | adler32_combine | 1 | uLong |
+| (uLong,uLong,off_t) | | adler32_combine | 2 | off_t |
+| (uLong,uLong,off_t) | | crc32_combine | 0 | uLong |
+| (uLong,uLong,off_t) | | crc32_combine | 1 | uLong |
+| (uLong,uLong,off_t) | | crc32_combine | 2 | off_t |
+| (uLong,uLong,uLong) | | crc32_combine_op | 0 | uLong |
+| (uLong,uLong,uLong) | | crc32_combine_op | 1 | uLong |
+| (uLong,uLong,uLong) | | crc32_combine_op | 2 | uLong |
+| (uLong,unsigned long,const Bytef *,const unsigned char *,uInt) | | crc32 | 0 | uLong |
+| (uLong,unsigned long,const Bytef *,const unsigned char *,uInt) | | crc32 | 1 | unsigned long |
+| (uLong,unsigned long,const Bytef *,const unsigned char *,uInt) | | crc32 | 2 | const Bytef * |
+| (uLong,unsigned long,const Bytef *,const unsigned char *,uInt) | | crc32 | 3 | const unsigned char * |
+| (uLong,unsigned long,const Bytef *,const unsigned char *,uInt) | | crc32 | 4 | uInt |
+| (uLong,unsigned long,const Bytef *,const unsigned char *,z_size_t) | | crc32_z | 0 | uLong |
+| (uLong,unsigned long,const Bytef *,const unsigned char *,z_size_t) | | crc32_z | 1 | unsigned long |
+| (uLong,unsigned long,const Bytef *,const unsigned char *,z_size_t) | | crc32_z | 2 | const Bytef * |
+| (uLong,unsigned long,const Bytef *,const unsigned char *,z_size_t) | | crc32_z | 3 | const unsigned char * |
+| (uLong,unsigned long,const Bytef *,const unsigned char *,z_size_t) | | crc32_z | 4 | z_size_t |
+| (u_char[16],unsigned char[16],const u_char *,const unsigned char *,size_t,const u_char[32],const unsigned char[32]) | | poly1305_auth | 0 | u_char[16] |
+| (u_char[16],unsigned char[16],const u_char *,const unsigned char *,size_t,const u_char[32],const unsigned char[32]) | | poly1305_auth | 1 | unsigned char[16] |
+| (u_char[16],unsigned char[16],const u_char *,const unsigned char *,size_t,const u_char[32],const unsigned char[32]) | | poly1305_auth | 2 | const u_char * |
+| (u_char[16],unsigned char[16],const u_char *,const unsigned char *,size_t,const u_char[32],const unsigned char[32]) | | poly1305_auth | 3 | const unsigned char * |
+| (u_char[16],unsigned char[16],const u_char *,const unsigned char *,size_t,const u_char[32],const unsigned char[32]) | | poly1305_auth | 4 | size_t |
+| (u_char[16],unsigned char[16],const u_char *,const unsigned char *,size_t,const u_char[32],const unsigned char[32]) | | poly1305_auth | 5 | const u_char[32] |
+| (u_char[16],unsigned char[16],const u_char *,const unsigned char *,size_t,const u_char[32],const unsigned char[32]) | | poly1305_auth | 6 | const unsigned char[32] |
+| (ucs4_t *,const uint8_t *,size_t) | | u8_mbtouc_aux | 0 | ucs4_t * |
+| (ucs4_t *,const uint8_t *,size_t) | | u8_mbtouc_aux | 1 | const uint8_t * |
+| (ucs4_t *,const uint8_t *,size_t) | | u8_mbtouc_aux | 2 | size_t |
+| (ucs4_t) | | uc_bidi_category | 0 | ucs4_t |
+| (ucs4_t) | | uc_bidi_class | 0 | ucs4_t |
+| (ucs4_t) | | uc_combining_class | 0 | ucs4_t |
+| (ucs4_t) | | uc_general_category | 0 | ucs4_t |
+| (ucs4_t) | | uc_joining_type | 0 | ucs4_t |
+| (ucs4_t) | | uc_script | 0 | ucs4_t |
+| (ucs4_t,ucs4_t *) | | uc_canonical_decomposition | 0 | ucs4_t |
+| (ucs4_t,ucs4_t *) | | uc_canonical_decomposition | 1 | ucs4_t * |
+| (ucs4_t,ucs4_t) | | uc_composition | 0 | ucs4_t |
+| (ucs4_t,ucs4_t) | | uc_composition | 1 | ucs4_t |
+| (ucs4_t,uint32_t) | | uc_is_general_category_withtable | 0 | ucs4_t |
+| (ucs4_t,uint32_t) | | uc_is_general_category_withtable | 1 | uint32_t |
+| (ucs4_with_ccc *,size_t,ucs4_with_ccc *) | | gl_uninorm_decompose_merge_sort_inplace | 0 | ucs4_with_ccc * |
+| (ucs4_with_ccc *,size_t,ucs4_with_ccc *) | | gl_uninorm_decompose_merge_sort_inplace | 1 | size_t |
+| (ucs4_with_ccc *,size_t,ucs4_with_ccc *) | | gl_uninorm_decompose_merge_sort_inplace | 2 | ucs4_with_ccc * |
+| (uint8_t *,const nghttp2_frame_hd *) | | nghttp2_frame_pack_frame_hd | 0 | uint8_t * |
+| (uint8_t *,const nghttp2_frame_hd *) | | nghttp2_frame_pack_frame_hd | 1 | const nghttp2_frame_hd * |
+| (uint8_t *,const nghttp2_priority_spec *) | | nghttp2_frame_pack_priority_spec | 0 | uint8_t * |
+| (uint8_t *,const nghttp2_priority_spec *) | | nghttp2_frame_pack_priority_spec | 1 | const nghttp2_priority_spec * |
+| (uint8_t *,const nghttp2_settings_entry *,size_t) | | nghttp2_frame_pack_settings_payload | 0 | uint8_t * |
+| (uint8_t *,const nghttp2_settings_entry *,size_t) | | nghttp2_frame_pack_settings_payload | 1 | const nghttp2_settings_entry * |
+| (uint8_t *,const nghttp2_settings_entry *,size_t) | | nghttp2_frame_pack_settings_payload | 2 | size_t |
+| (uint8_t *,const uint8_t *,int,const BrotliTransforms *,int) | | BrotliTransformDictionaryWord | 0 | uint8_t * |
+| (uint8_t *,const uint8_t *,int,const BrotliTransforms *,int) | | BrotliTransformDictionaryWord | 1 | const uint8_t * |
+| (uint8_t *,const uint8_t *,int,const BrotliTransforms *,int) | | BrotliTransformDictionaryWord | 2 | int |
+| (uint8_t *,const uint8_t *,int,const BrotliTransforms *,int) | | BrotliTransformDictionaryWord | 3 | const BrotliTransforms * |
+| (uint8_t *,const uint8_t *,int,const BrotliTransforms *,int) | | BrotliTransformDictionaryWord | 4 | int |
| (uint8_t *,const uint8_t *,size_t,const uint8_t[32],const uint8_t[32],const uint8_t,const uint8_t,const uint8_t,const uint8_t *,size_t,OSSL_LIB_CTX *,const char *) | | ossl_ed25519_sign | 0 | uint8_t * |
| (uint8_t *,const uint8_t *,size_t,const uint8_t[32],const uint8_t[32],const uint8_t,const uint8_t,const uint8_t,const uint8_t *,size_t,OSSL_LIB_CTX *,const char *) | | ossl_ed25519_sign | 1 | const uint8_t * |
| (uint8_t *,const uint8_t *,size_t,const uint8_t[32],const uint8_t[32],const uint8_t,const uint8_t,const uint8_t,const uint8_t *,size_t,OSSL_LIB_CTX *,const char *) | | ossl_ed25519_sign | 2 | size_t |
@@ -27232,6 +32659,11 @@ getSignatureParameterName
| (uint8_t *,const uint8_t *,size_t,const uint8_t[32],const uint8_t[32],const uint8_t,const uint8_t,const uint8_t,const uint8_t *,size_t,OSSL_LIB_CTX *,const char *) | | ossl_ed25519_sign | 9 | size_t |
| (uint8_t *,const uint8_t *,size_t,const uint8_t[32],const uint8_t[32],const uint8_t,const uint8_t,const uint8_t,const uint8_t *,size_t,OSSL_LIB_CTX *,const char *) | | ossl_ed25519_sign | 10 | OSSL_LIB_CTX * |
| (uint8_t *,const uint8_t *,size_t,const uint8_t[32],const uint8_t[32],const uint8_t,const uint8_t,const uint8_t,const uint8_t *,size_t,OSSL_LIB_CTX *,const char *) | | ossl_ed25519_sign | 11 | const char * |
+| (uint8_t *,const void *,size_t) | | nghttp2_cpymem | 0 | uint8_t * |
+| (uint8_t *,const void *,size_t) | | nghttp2_cpymem | 1 | const void * |
+| (uint8_t *,const void *,size_t) | | nghttp2_cpymem | 2 | size_t |
+| (uint8_t *,size_t) | | nghttp2_downcase | 0 | uint8_t * |
+| (uint8_t *,size_t) | | nghttp2_downcase | 1 | size_t |
| (uint8_t *,size_t) | | ossl_fnv1a_hash | 0 | uint8_t * |
| (uint8_t *,size_t) | | ossl_fnv1a_hash | 1 | size_t |
| (uint8_t *,size_t,ML_KEM_KEY *) | | ossl_ml_kem_genkey | 0 | uint8_t * |
@@ -27246,6 +32678,14 @@ getSignatureParameterName
| (uint8_t *,size_t,const ML_KEM_KEY *) | | ossl_ml_kem_encode_seed | 0 | uint8_t * |
| (uint8_t *,size_t,const ML_KEM_KEY *) | | ossl_ml_kem_encode_seed | 1 | size_t |
| (uint8_t *,size_t,const ML_KEM_KEY *) | | ossl_ml_kem_encode_seed | 2 | const ML_KEM_KEY * |
+| (uint8_t *,size_t,const nghttp2_settings_entry *,size_t) | | nghttp2_pack_settings_payload | 0 | uint8_t * |
+| (uint8_t *,size_t,const nghttp2_settings_entry *,size_t) | | nghttp2_pack_settings_payload | 1 | size_t |
+| (uint8_t *,size_t,const nghttp2_settings_entry *,size_t) | | nghttp2_pack_settings_payload | 2 | const nghttp2_settings_entry * |
+| (uint8_t *,size_t,const nghttp2_settings_entry *,size_t) | | nghttp2_pack_settings_payload | 3 | size_t |
+| (uint8_t *,size_t,const nghttp2_settings_entry *,size_t) | | nghttp2_pack_settings_payload2 | 0 | uint8_t * |
+| (uint8_t *,size_t,const nghttp2_settings_entry *,size_t) | | nghttp2_pack_settings_payload2 | 1 | size_t |
+| (uint8_t *,size_t,const nghttp2_settings_entry *,size_t) | | nghttp2_pack_settings_payload2 | 2 | const nghttp2_settings_entry * |
+| (uint8_t *,size_t,const nghttp2_settings_entry *,size_t) | | nghttp2_pack_settings_payload2 | 3 | size_t |
| (uint8_t *,size_t,const uint8_t *,size_t,const ML_KEM_KEY *) | | ossl_ml_kem_decap | 0 | uint8_t * |
| (uint8_t *,size_t,const uint8_t *,size_t,const ML_KEM_KEY *) | | ossl_ml_kem_decap | 1 | size_t |
| (uint8_t *,size_t,const uint8_t *,size_t,const ML_KEM_KEY *) | | ossl_ml_kem_decap | 2 | const uint8_t * |
@@ -27308,6 +32748,16 @@ getSignatureParameterName
| (uint32_t *,SSL_CONNECTION *,int) | | ssl_set_sig_mask | 0 | uint32_t * |
| (uint32_t *,SSL_CONNECTION *,int) | | ssl_set_sig_mask | 1 | SSL_CONNECTION * |
| (uint32_t *,SSL_CONNECTION *,int) | | ssl_set_sig_mask | 2 | int |
+| (uint32_t *,const IDNAMap *) | | get_map_data | 0 | uint32_t * |
+| (uint32_t *,const IDNAMap *) | | get_map_data | 1 | const IDNAMap * |
+| (uint32_t *,size_t *,int *,uint32_t,size_t,uint8_t *,uint8_t *,size_t) | | nghttp2_hd_decode_length | 0 | uint32_t * |
+| (uint32_t *,size_t *,int *,uint32_t,size_t,uint8_t *,uint8_t *,size_t) | | nghttp2_hd_decode_length | 1 | size_t * |
+| (uint32_t *,size_t *,int *,uint32_t,size_t,uint8_t *,uint8_t *,size_t) | | nghttp2_hd_decode_length | 2 | int * |
+| (uint32_t *,size_t *,int *,uint32_t,size_t,uint8_t *,uint8_t *,size_t) | | nghttp2_hd_decode_length | 3 | uint32_t |
+| (uint32_t *,size_t *,int *,uint32_t,size_t,uint8_t *,uint8_t *,size_t) | | nghttp2_hd_decode_length | 4 | size_t |
+| (uint32_t *,size_t *,int *,uint32_t,size_t,uint8_t *,uint8_t *,size_t) | | nghttp2_hd_decode_length | 5 | uint8_t * |
+| (uint32_t *,size_t *,int *,uint32_t,size_t,uint8_t *,uint8_t *,size_t) | | nghttp2_hd_decode_length | 6 | uint8_t * |
+| (uint32_t *,size_t *,int *,uint32_t,size_t,uint8_t *,uint8_t *,size_t) | | nghttp2_hd_decode_length | 7 | size_t |
| (uint32_t,uint32_t *,uint32_t *) | | ossl_ml_dsa_key_compress_power2_round | 0 | uint32_t |
| (uint32_t,uint32_t *,uint32_t *) | | ossl_ml_dsa_key_compress_power2_round | 1 | uint32_t * |
| (uint32_t,uint32_t *,uint32_t *) | | ossl_ml_dsa_key_compress_power2_round | 2 | uint32_t * |
@@ -27348,17 +32798,31 @@ getSignatureParameterName
| (uint64_t *,uint64_t,uint64_t *,CRYPTO_RWLOCK *) | | CRYPTO_atomic_or | 3 | CRYPTO_RWLOCK * |
| (uint64_t,uint64_t *) | | ossl_adjust_domain_flags | 0 | uint64_t |
| (uint64_t,uint64_t *) | | ossl_adjust_domain_flags | 1 | uint64_t * |
+| (uninorm_t,const uint32_t *,size_t,uint32_t *,uint32_t *__restrict__,size_t *) | | u32_normalize | 0 | uninorm_t |
+| (uninorm_t,const uint32_t *,size_t,uint32_t *,uint32_t *__restrict__,size_t *) | | u32_normalize | 1 | const uint32_t * |
+| (uninorm_t,const uint32_t *,size_t,uint32_t *,uint32_t *__restrict__,size_t *) | | u32_normalize | 2 | size_t |
+| (uninorm_t,const uint32_t *,size_t,uint32_t *,uint32_t *__restrict__,size_t *) | | u32_normalize | 3 | uint32_t * |
+| (uninorm_t,const uint32_t *,size_t,uint32_t *,uint32_t *__restrict__,size_t *) | | u32_normalize | 4 | uint32_t *__restrict__ |
+| (uninorm_t,const uint32_t *,size_t,uint32_t *,uint32_t *__restrict__,size_t *) | | u32_normalize | 5 | size_t * |
| (unsigned char *) | CStringT | CStringT | 0 | unsigned char * |
| (unsigned char **) | | ASN1_put_eoc | 0 | unsigned char ** |
| (unsigned char **,X509_ALGOR *,ASN1_OCTET_STRING *,int) | | CMS_SharedInfo_encode | 0 | unsigned char ** |
| (unsigned char **,X509_ALGOR *,ASN1_OCTET_STRING *,int) | | CMS_SharedInfo_encode | 1 | X509_ALGOR * |
| (unsigned char **,X509_ALGOR *,ASN1_OCTET_STRING *,int) | | CMS_SharedInfo_encode | 2 | ASN1_OCTET_STRING * |
| (unsigned char **,X509_ALGOR *,ASN1_OCTET_STRING *,int) | | CMS_SharedInfo_encode | 3 | int |
+| (unsigned char **,const char *,size_t) | | _libssh2_store_str | 0 | unsigned char ** |
+| (unsigned char **,const char *,size_t) | | _libssh2_store_str | 1 | const char * |
+| (unsigned char **,const char *,size_t) | | _libssh2_store_str | 2 | size_t |
+| (unsigned char **,const unsigned char *,size_t) | | _libssh2_store_bignum2_bytes | 0 | unsigned char ** |
+| (unsigned char **,const unsigned char *,size_t) | | _libssh2_store_bignum2_bytes | 1 | const unsigned char * |
+| (unsigned char **,const unsigned char *,size_t) | | _libssh2_store_bignum2_bytes | 2 | size_t |
| (unsigned char **,int,int,int,int) | | ASN1_put_object | 0 | unsigned char ** |
| (unsigned char **,int,int,int,int) | | ASN1_put_object | 1 | int |
| (unsigned char **,int,int,int,int) | | ASN1_put_object | 2 | int |
| (unsigned char **,int,int,int,int) | | ASN1_put_object | 3 | int |
| (unsigned char **,int,int,int,int) | | ASN1_put_object | 4 | int |
+| (unsigned char **,libssh2_uint64_t) | | _libssh2_store_u64 | 0 | unsigned char ** |
+| (unsigned char **,libssh2_uint64_t) | | _libssh2_store_u64 | 1 | libssh2_uint64_t |
| (unsigned char **,long *,char **,const char *,BIO *,pem_password_cb *,void *) | | PEM_bytes_read_bio | 0 | unsigned char ** |
| (unsigned char **,long *,char **,const char *,BIO *,pem_password_cb *,void *) | | PEM_bytes_read_bio | 1 | long * |
| (unsigned char **,long *,char **,const char *,BIO *,pem_password_cb *,void *) | | PEM_bytes_read_bio | 2 | char ** |
@@ -27375,10 +32839,22 @@ getSignatureParameterName
| (unsigned char **,long *,char **,const char *,BIO *,pem_password_cb *,void *) | | PEM_bytes_read_bio_secmem | 6 | void * |
| (unsigned char **,long) | | ASN1_check_infinite_end | 0 | unsigned char ** |
| (unsigned char **,long) | | ASN1_check_infinite_end | 1 | long |
+| (unsigned char **,size_t *) | | _libssh2_pem_decode_sequence | 0 | unsigned char ** |
+| (unsigned char **,size_t *) | | _libssh2_pem_decode_sequence | 1 | size_t * |
| (unsigned char **,size_t *,const EC_POINT *,const EC_KEY *) | | ossl_ecdh_simple_compute_key | 0 | unsigned char ** |
| (unsigned char **,size_t *,const EC_POINT *,const EC_KEY *) | | ossl_ecdh_simple_compute_key | 1 | size_t * |
| (unsigned char **,size_t *,const EC_POINT *,const EC_KEY *) | | ossl_ecdh_simple_compute_key | 2 | const EC_POINT * |
| (unsigned char **,size_t *,const EC_POINT *,const EC_KEY *) | | ossl_ecdh_simple_compute_key | 3 | const EC_KEY * |
+| (unsigned char **,size_t *,unsigned char **,unsigned int *) | | _libssh2_pem_decode_integer | 0 | unsigned char ** |
+| (unsigned char **,size_t *,unsigned char **,unsigned int *) | | _libssh2_pem_decode_integer | 1 | size_t * |
+| (unsigned char **,size_t *,unsigned char **,unsigned int *) | | _libssh2_pem_decode_integer | 2 | unsigned char ** |
+| (unsigned char **,size_t *,unsigned char **,unsigned int *) | | _libssh2_pem_decode_integer | 3 | unsigned int * |
+| (unsigned char **,uint32_t) | | _libssh2_store_u32 | 0 | unsigned char ** |
+| (unsigned char **,uint32_t) | | _libssh2_store_u32 | 1 | uint32_t |
+| (unsigned char **,unsigned char *,const unsigned char *,unsigned int) | | nghttp2_select_next_protocol | 0 | unsigned char ** |
+| (unsigned char **,unsigned char *,const unsigned char *,unsigned int) | | nghttp2_select_next_protocol | 1 | unsigned char * |
+| (unsigned char **,unsigned char *,const unsigned char *,unsigned int) | | nghttp2_select_next_protocol | 2 | const unsigned char * |
+| (unsigned char **,unsigned char *,const unsigned char *,unsigned int) | | nghttp2_select_next_protocol | 3 | unsigned int |
| (unsigned char **,unsigned char *,const unsigned char *,unsigned int,const unsigned char *,unsigned int) | | SSL_select_next_proto | 0 | unsigned char ** |
| (unsigned char **,unsigned char *,const unsigned char *,unsigned int,const unsigned char *,unsigned int) | | SSL_select_next_proto | 1 | unsigned char * |
| (unsigned char **,unsigned char *,const unsigned char *,unsigned int,const unsigned char *,unsigned int) | | SSL_select_next_proto | 2 | const unsigned char * |
@@ -27424,6 +32900,10 @@ getSignatureParameterName
| (unsigned char *,const BIGNUM *,DH *) | | ossl_dh_compute_key | 2 | DH * |
| (unsigned char *,const char *) | | ossl_a2i_ipadd | 0 | unsigned char * |
| (unsigned char *,const char *) | | ossl_a2i_ipadd | 1 | const char * |
+| (unsigned char *,const unsigned char *,const unsigned char *,size_t) | | _libssh2_xor_data | 0 | unsigned char * |
+| (unsigned char *,const unsigned char *,const unsigned char *,size_t) | | _libssh2_xor_data | 1 | const unsigned char * |
+| (unsigned char *,const unsigned char *,const unsigned char *,size_t) | | _libssh2_xor_data | 2 | const unsigned char * |
+| (unsigned char *,const unsigned char *,const unsigned char *,size_t) | | _libssh2_xor_data | 3 | size_t |
| (unsigned char *,const unsigned char *,int) | | EVP_DecodeBlock | 0 | unsigned char * |
| (unsigned char *,const unsigned char *,int) | | EVP_DecodeBlock | 1 | const unsigned char * |
| (unsigned char *,const unsigned char *,int) | | EVP_DecodeBlock | 2 | int |
@@ -27562,9 +33042,43 @@ getSignatureParameterName
| (unsigned char *,size_t *,size_t,const unsigned char **,size_t *) | | ossl_cipher_trailingdata | 2 | size_t |
| (unsigned char *,size_t *,size_t,const unsigned char **,size_t *) | | ossl_cipher_trailingdata | 3 | const unsigned char ** |
| (unsigned char *,size_t *,size_t,const unsigned char **,size_t *) | | ossl_cipher_trailingdata | 4 | size_t * |
+| (unsigned char *,size_t,const unsigned char *,size_t) | | _libssh2_kex_agree_instr | 0 | unsigned char * |
+| (unsigned char *,size_t,const unsigned char *,size_t) | | _libssh2_kex_agree_instr | 1 | size_t |
+| (unsigned char *,size_t,const unsigned char *,size_t) | | _libssh2_kex_agree_instr | 2 | const unsigned char * |
+| (unsigned char *,size_t,const unsigned char *,size_t) | | _libssh2_kex_agree_instr | 3 | size_t |
+| (unsigned char *,size_t,int,const char *,curl_off_t,size_t,Curl_ssl_session **) | | Curl_ssl_session_create | 0 | unsigned char * |
+| (unsigned char *,size_t,int,const char *,curl_off_t,size_t,Curl_ssl_session **) | | Curl_ssl_session_create | 1 | size_t |
+| (unsigned char *,size_t,int,const char *,curl_off_t,size_t,Curl_ssl_session **) | | Curl_ssl_session_create | 2 | int |
+| (unsigned char *,size_t,int,const char *,curl_off_t,size_t,Curl_ssl_session **) | | Curl_ssl_session_create | 3 | const char * |
+| (unsigned char *,size_t,int,const char *,curl_off_t,size_t,Curl_ssl_session **) | | Curl_ssl_session_create | 4 | curl_off_t |
+| (unsigned char *,size_t,int,const char *,curl_off_t,size_t,Curl_ssl_session **) | | Curl_ssl_session_create | 5 | size_t |
+| (unsigned char *,size_t,int,const char *,curl_off_t,size_t,Curl_ssl_session **) | | Curl_ssl_session_create | 6 | Curl_ssl_session ** |
+| (unsigned char *,size_t,int,const char *,curl_off_t,size_t,unsigned char *,size_t,Curl_ssl_session **) | | Curl_ssl_session_create2 | 0 | unsigned char * |
+| (unsigned char *,size_t,int,const char *,curl_off_t,size_t,unsigned char *,size_t,Curl_ssl_session **) | | Curl_ssl_session_create2 | 1 | size_t |
+| (unsigned char *,size_t,int,const char *,curl_off_t,size_t,unsigned char *,size_t,Curl_ssl_session **) | | Curl_ssl_session_create2 | 2 | int |
+| (unsigned char *,size_t,int,const char *,curl_off_t,size_t,unsigned char *,size_t,Curl_ssl_session **) | | Curl_ssl_session_create2 | 3 | const char * |
+| (unsigned char *,size_t,int,const char *,curl_off_t,size_t,unsigned char *,size_t,Curl_ssl_session **) | | Curl_ssl_session_create2 | 4 | curl_off_t |
+| (unsigned char *,size_t,int,const char *,curl_off_t,size_t,unsigned char *,size_t,Curl_ssl_session **) | | Curl_ssl_session_create2 | 5 | size_t |
+| (unsigned char *,size_t,int,const char *,curl_off_t,size_t,unsigned char *,size_t,Curl_ssl_session **) | | Curl_ssl_session_create2 | 6 | unsigned char * |
+| (unsigned char *,size_t,int,const char *,curl_off_t,size_t,unsigned char *,size_t,Curl_ssl_session **) | | Curl_ssl_session_create2 | 7 | size_t |
+| (unsigned char *,size_t,int,const char *,curl_off_t,size_t,unsigned char *,size_t,Curl_ssl_session **) | | Curl_ssl_session_create2 | 8 | Curl_ssl_session ** |
+| (unsigned char *,size_t,scan_ctx *) | | helpscan | 0 | unsigned char * |
+| (unsigned char *,size_t,scan_ctx *) | | helpscan | 1 | size_t |
+| (unsigned char *,size_t,scan_ctx *) | | helpscan | 2 | scan_ctx * |
+| (unsigned char *,uint32_t) | | _libssh2_htonu32 | 0 | unsigned char * |
+| (unsigned char *,uint32_t) | | _libssh2_htonu32 | 1 | uint32_t |
| (unsigned char *,uint64_t,int) | | ossl_i2c_uint64_int | 0 | unsigned char * |
| (unsigned char *,uint64_t,int) | | ossl_i2c_uint64_int | 1 | uint64_t |
| (unsigned char *,uint64_t,int) | | ossl_i2c_uint64_int | 2 | int |
+| (unsigned char *,unsigned char *,ntlmdata *,unsigned char **,unsigned int *) | | Curl_ntlm_core_mk_ntlmv2_resp | 0 | unsigned char * |
+| (unsigned char *,unsigned char *,ntlmdata *,unsigned char **,unsigned int *) | | Curl_ntlm_core_mk_ntlmv2_resp | 1 | unsigned char * |
+| (unsigned char *,unsigned char *,ntlmdata *,unsigned char **,unsigned int *) | | Curl_ntlm_core_mk_ntlmv2_resp | 2 | ntlmdata * |
+| (unsigned char *,unsigned char *,ntlmdata *,unsigned char **,unsigned int *) | | Curl_ntlm_core_mk_ntlmv2_resp | 3 | unsigned char ** |
+| (unsigned char *,unsigned char *,ntlmdata *,unsigned char **,unsigned int *) | | Curl_ntlm_core_mk_ntlmv2_resp | 4 | unsigned int * |
+| (unsigned char *,unsigned char *,unsigned char *,unsigned char *) | | Curl_ntlm_core_mk_lmv2_resp | 0 | unsigned char * |
+| (unsigned char *,unsigned char *,unsigned char *,unsigned char *) | | Curl_ntlm_core_mk_lmv2_resp | 1 | unsigned char * |
+| (unsigned char *,unsigned char *,unsigned char *,unsigned char *) | | Curl_ntlm_core_mk_lmv2_resp | 2 | unsigned char * |
+| (unsigned char *,unsigned char *,unsigned char *,unsigned char *) | | Curl_ntlm_core_mk_lmv2_resp | 3 | unsigned char * |
| (unsigned char *,void *) | | pitem_new | 0 | unsigned char * |
| (unsigned char *,void *) | | pitem_new | 1 | void * |
| (unsigned char) | | operator+= | 0 | unsigned char |
@@ -27586,7 +33100,14 @@ getSignatureParameterName
| (unsigned int *,const CAST_KEY *) | | CAST_encrypt | 0 | unsigned int * |
| (unsigned int *,const CAST_KEY *) | | CAST_encrypt | 1 | const CAST_KEY * |
| (unsigned int) | | Jim_IntHashFunction | 0 | unsigned int |
+| (unsigned int) | | curlx_uitous | 0 | unsigned int |
| (unsigned int) | | ssl3_get_cipher | 0 | unsigned int |
+| (unsigned int,char *,size_t *) | | uv_if_indextoiid | 0 | unsigned int |
+| (unsigned int,char *,size_t *) | | uv_if_indextoiid | 1 | char * |
+| (unsigned int,char *,size_t *) | | uv_if_indextoiid | 2 | size_t * |
+| (unsigned int,char *,size_t *) | | uv_if_indextoname | 0 | unsigned int |
+| (unsigned int,char *,size_t *) | | uv_if_indextoname | 1 | char * |
+| (unsigned int,char *,size_t *) | | uv_if_indextoname | 2 | size_t * |
| (unsigned int,int,int) | | ossl_blob_length | 0 | unsigned int |
| (unsigned int,int,int) | | ossl_blob_length | 1 | int |
| (unsigned int,int,int) | | ossl_blob_length | 2 | int |
@@ -27672,6 +33193,8 @@ getSignatureParameterName
| (unsigned long *,unsigned long *,unsigned long *,int,unsigned long *) | | bn_mul_low_recursive | 4 | unsigned long * |
| (unsigned long) | | BN_num_bits_word | 0 | unsigned long |
| (unsigned long) | | BUF_MEM_new_ex | 0 | unsigned long |
+| (unsigned long) | | curlx_ultouc | 0 | unsigned long |
+| (unsigned long) | | curlx_ultous | 0 | unsigned long |
| (unsigned long,BIGNUM *,BIGNUM *,int) | | BN_consttime_swap | 0 | unsigned long |
| (unsigned long,BIGNUM *,BIGNUM *,int) | | BN_consttime_swap | 1 | BIGNUM * |
| (unsigned long,BIGNUM *,BIGNUM *,int) | | BN_consttime_swap | 2 | BIGNUM * |
@@ -27692,9 +33215,524 @@ getSignatureParameterName
| (unsigned long[16],const unsigned long[16],const unsigned long[16],const unsigned long[16],const unsigned long[16],unsigned long) | | RSAZ_1024_mod_exp_avx2 | 5 | unsigned long |
| (unsigned short,int) | | dtls1_get_queue_priority | 0 | unsigned short |
| (unsigned short,int) | | dtls1_get_queue_priority | 1 | int |
+| (uv__io_t *,uv__io_cb,int) | | uv__io_init | 0 | uv__io_t * |
+| (uv__io_t *,uv__io_cb,int) | | uv__io_init | 1 | uv__io_cb |
+| (uv__io_t *,uv__io_cb,int) | | uv__io_init | 2 | int |
+| (uv_async_t *) | | uv__work_done | 0 | uv_async_t * |
+| (uv_check_t *,uv_check_cb) | | uv_check_start | 0 | uv_check_t * |
+| (uv_check_t *,uv_check_cb) | | uv_check_start | 1 | uv_check_cb |
+| (uv_connect_t *,uv_pipe_t *,const char *,size_t,unsigned int,uv_connect_cb) | | uv_pipe_connect2 | 0 | uv_connect_t * |
+| (uv_connect_t *,uv_pipe_t *,const char *,size_t,unsigned int,uv_connect_cb) | | uv_pipe_connect2 | 1 | uv_pipe_t * |
+| (uv_connect_t *,uv_pipe_t *,const char *,size_t,unsigned int,uv_connect_cb) | | uv_pipe_connect2 | 2 | const char * |
+| (uv_connect_t *,uv_pipe_t *,const char *,size_t,unsigned int,uv_connect_cb) | | uv_pipe_connect2 | 3 | size_t |
+| (uv_connect_t *,uv_pipe_t *,const char *,size_t,unsigned int,uv_connect_cb) | | uv_pipe_connect2 | 4 | unsigned int |
+| (uv_connect_t *,uv_pipe_t *,const char *,size_t,unsigned int,uv_connect_cb) | | uv_pipe_connect2 | 5 | uv_connect_cb |
+| (uv_connect_t *,uv_pipe_t *,const char *,uv_connect_cb) | | uv_pipe_connect | 0 | uv_connect_t * |
+| (uv_connect_t *,uv_pipe_t *,const char *,uv_connect_cb) | | uv_pipe_connect | 1 | uv_pipe_t * |
+| (uv_connect_t *,uv_pipe_t *,const char *,uv_connect_cb) | | uv_pipe_connect | 2 | const char * |
+| (uv_connect_t *,uv_pipe_t *,const char *,uv_connect_cb) | | uv_pipe_connect | 3 | uv_connect_cb |
+| (uv_connect_t *,uv_tcp_t *,const sockaddr *,unsigned int,uv_connect_cb) | | uv__tcp_connect | 0 | uv_connect_t * |
+| (uv_connect_t *,uv_tcp_t *,const sockaddr *,unsigned int,uv_connect_cb) | | uv__tcp_connect | 1 | uv_tcp_t * |
+| (uv_connect_t *,uv_tcp_t *,const sockaddr *,unsigned int,uv_connect_cb) | | uv__tcp_connect | 2 | const sockaddr * |
+| (uv_connect_t *,uv_tcp_t *,const sockaddr *,unsigned int,uv_connect_cb) | | uv__tcp_connect | 3 | unsigned int |
+| (uv_connect_t *,uv_tcp_t *,const sockaddr *,unsigned int,uv_connect_cb) | | uv__tcp_connect | 4 | uv_connect_cb |
+| (uv_connect_t *,uv_tcp_t *,const sockaddr *,uv_connect_cb) | | uv_tcp_connect | 0 | uv_connect_t * |
+| (uv_connect_t *,uv_tcp_t *,const sockaddr *,uv_connect_cb) | | uv_tcp_connect | 1 | uv_tcp_t * |
+| (uv_connect_t *,uv_tcp_t *,const sockaddr *,uv_connect_cb) | | uv_tcp_connect | 2 | const sockaddr * |
+| (uv_connect_t *,uv_tcp_t *,const sockaddr *,uv_connect_cb) | | uv_tcp_connect | 3 | uv_connect_cb |
+| (uv_cpu_info_t **,int *) | | uv_cpu_info | 0 | uv_cpu_info_t ** |
+| (uv_cpu_info_t **,int *) | | uv_cpu_info | 1 | int * |
+| (uv_env_item_t **,int *) | | uv_os_environ | 0 | uv_env_item_t ** |
+| (uv_env_item_t **,int *) | | uv_os_environ | 1 | int * |
+| (uv_env_item_t *,int) | | uv_os_free_environ | 0 | uv_env_item_t * |
+| (uv_env_item_t *,int) | | uv_os_free_environ | 1 | int |
+| (uv_fs_event_t *,char *,size_t *) | | uv_fs_event_getpath | 0 | uv_fs_event_t * |
+| (uv_fs_event_t *,char *,size_t *) | | uv_fs_event_getpath | 1 | char * |
+| (uv_fs_event_t *,char *,size_t *) | | uv_fs_event_getpath | 2 | size_t * |
+| (uv_fs_event_t *,uv_fs_event_cb,const char *,unsigned int) | | uv_fs_event_start | 0 | uv_fs_event_t * |
+| (uv_fs_event_t *,uv_fs_event_cb,const char *,unsigned int) | | uv_fs_event_start | 1 | uv_fs_event_cb |
+| (uv_fs_event_t *,uv_fs_event_cb,const char *,unsigned int) | | uv_fs_event_start | 2 | const char * |
+| (uv_fs_event_t *,uv_fs_event_cb,const char *,unsigned int) | | uv_fs_event_start | 3 | unsigned int |
+| (uv_fs_poll_t *) | | uv__fs_poll_close | 0 | uv_fs_poll_t * |
+| (uv_fs_poll_t *,char *,size_t *) | | uv_fs_poll_getpath | 0 | uv_fs_poll_t * |
+| (uv_fs_poll_t *,char *,size_t *) | | uv_fs_poll_getpath | 1 | char * |
+| (uv_fs_poll_t *,char *,size_t *) | | uv_fs_poll_getpath | 2 | size_t * |
+| (uv_fs_poll_t *,uv_fs_poll_cb,const char *,unsigned int) | | uv_fs_poll_start | 0 | uv_fs_poll_t * |
+| (uv_fs_poll_t *,uv_fs_poll_cb,const char *,unsigned int) | | uv_fs_poll_start | 1 | uv_fs_poll_cb |
+| (uv_fs_poll_t *,uv_fs_poll_cb,const char *,unsigned int) | | uv_fs_poll_start | 2 | const char * |
+| (uv_fs_poll_t *,uv_fs_poll_cb,const char *,unsigned int) | | uv_fs_poll_start | 3 | unsigned int |
+| (uv_fs_t *) | | uv_fs_get_statbuf | 0 | uv_fs_t * |
+| (uv_fs_t *,uv_dirent_t *) | | uv_fs_scandir_next | 0 | uv_fs_t * |
+| (uv_fs_t *,uv_dirent_t *) | | uv_fs_scandir_next | 1 | uv_dirent_t * |
+| (uv_handle_t *) | | uv__make_close_pending | 0 | uv_handle_t * |
+| (uv_handle_t *,int *) | | uv_recv_buffer_size | 0 | uv_handle_t * |
+| (uv_handle_t *,int *) | | uv_recv_buffer_size | 1 | int * |
+| (uv_handle_t *,int *) | | uv_send_buffer_size | 0 | uv_handle_t * |
+| (uv_handle_t *,int *) | | uv_send_buffer_size | 1 | int * |
+| (uv_handle_t *,int,int *) | | uv__socket_sockopt | 0 | uv_handle_t * |
+| (uv_handle_t *,int,int *) | | uv__socket_sockopt | 1 | int |
+| (uv_handle_t *,int,int *) | | uv__socket_sockopt | 2 | int * |
+| (uv_handle_t *,uv_close_cb) | | uv_close | 0 | uv_handle_t * |
+| (uv_handle_t *,uv_close_cb) | | uv_close | 1 | uv_close_cb |
+| (uv_handle_t *,void *) | | uv_handle_set_data | 0 | uv_handle_t * |
+| (uv_handle_t *,void *) | | uv_handle_set_data | 1 | void * |
+| (uv_idle_t *,uv_idle_cb) | | uv_idle_start | 0 | uv_idle_t * |
+| (uv_idle_t *,uv_idle_cb) | | uv_idle_start | 1 | uv_idle_cb |
+| (uv_interface_address_t **,int *) | | uv_interface_addresses | 0 | uv_interface_address_t ** |
+| (uv_interface_address_t **,int *) | | uv_interface_addresses | 1 | int * |
+| (uv_key_t *) | | uv_key_delete | 0 | uv_key_t * |
+| (uv_key_t *) | | uv_key_get | 0 | uv_key_t * |
+| (uv_key_t *,void *) | | uv_key_set | 0 | uv_key_t * |
+| (uv_key_t *,void *) | | uv_key_set | 1 | void * |
+| (uv_lib_t *,const char *,void **) | | uv_dlsym | 0 | uv_lib_t * |
+| (uv_lib_t *,const char *,void **) | | uv_dlsym | 1 | const char * |
+| (uv_lib_t *,const char *,void **) | | uv_dlsym | 2 | void ** |
+| (uv_loop_t *) | | uv__process_init | 0 | uv_loop_t * |
+| (uv_loop_t *) | | uv_loop_init | 0 | uv_loop_t * |
+| (uv_loop_t *,FILE *) | | uv_print_active_handles | 0 | uv_loop_t * |
+| (uv_loop_t *,FILE *) | | uv_print_active_handles | 1 | FILE * |
+| (uv_loop_t *,FILE *) | | uv_print_all_handles | 0 | uv_loop_t * |
+| (uv_loop_t *,FILE *) | | uv_print_all_handles | 1 | FILE * |
+| (uv_loop_t *,uv__io_t *) | | uv__io_close | 0 | uv_loop_t * |
+| (uv_loop_t *,uv__io_t *) | | uv__io_close | 1 | uv__io_t * |
+| (uv_loop_t *,uv__io_t *) | | uv__io_feed | 0 | uv_loop_t * |
+| (uv_loop_t *,uv__io_t *) | | uv__io_feed | 1 | uv__io_t * |
+| (uv_loop_t *,uv__io_t *,unsigned int) | | uv__io_start | 0 | uv_loop_t * |
+| (uv_loop_t *,uv__io_t *,unsigned int) | | uv__io_start | 1 | uv__io_t * |
+| (uv_loop_t *,uv__io_t *,unsigned int) | | uv__io_start | 2 | unsigned int |
+| (uv_loop_t *,uv__io_t *,unsigned int) | | uv__io_stop | 0 | uv_loop_t * |
+| (uv_loop_t *,uv__io_t *,unsigned int) | | uv__io_stop | 1 | uv__io_t * |
+| (uv_loop_t *,uv__io_t *,unsigned int) | | uv__io_stop | 2 | unsigned int |
+| (uv_loop_t *,uv__io_t *,unsigned int) | | uv__server_io | 0 | uv_loop_t * |
+| (uv_loop_t *,uv__io_t *,unsigned int) | | uv__server_io | 1 | uv__io_t * |
+| (uv_loop_t *,uv__io_t *,unsigned int) | | uv__server_io | 2 | unsigned int |
+| (uv_loop_t *,uv__io_t *,uv__io_cb,int,unsigned int) | | uv__io_init_start | 0 | uv_loop_t * |
+| (uv_loop_t *,uv__io_t *,uv__io_cb,int,unsigned int) | | uv__io_init_start | 1 | uv__io_t * |
+| (uv_loop_t *,uv__io_t *,uv__io_cb,int,unsigned int) | | uv__io_init_start | 2 | uv__io_cb |
+| (uv_loop_t *,uv__io_t *,uv__io_cb,int,unsigned int) | | uv__io_init_start | 3 | int |
+| (uv_loop_t *,uv__io_t *,uv__io_cb,int,unsigned int) | | uv__io_init_start | 4 | unsigned int |
+| (uv_loop_t *,uv__work *,uv__work_kind,..(*)(..),..(*)(..)) | | uv__work_submit | 0 | uv_loop_t * |
+| (uv_loop_t *,uv__work *,uv__work_kind,..(*)(..),..(*)(..)) | | uv__work_submit | 1 | uv__work * |
+| (uv_loop_t *,uv__work *,uv__work_kind,..(*)(..),..(*)(..)) | | uv__work_submit | 2 | uv__work_kind |
+| (uv_loop_t *,uv__work *,uv__work_kind,..(*)(..),..(*)(..)) | | uv__work_submit | 3 | ..(*)(..) |
+| (uv_loop_t *,uv__work *,uv__work_kind,..(*)(..),..(*)(..)) | | uv__work_submit | 4 | ..(*)(..) |
+| (uv_loop_t *,uv_async_t *,uv_async_cb) | | uv_async_init | 0 | uv_loop_t * |
+| (uv_loop_t *,uv_async_t *,uv_async_cb) | | uv_async_init | 1 | uv_async_t * |
+| (uv_loop_t *,uv_async_t *,uv_async_cb) | | uv_async_init | 2 | uv_async_cb |
+| (uv_loop_t *,uv_check_t *) | | uv_check_init | 0 | uv_loop_t * |
+| (uv_loop_t *,uv_check_t *) | | uv_check_init | 1 | uv_check_t * |
+| (uv_loop_t *,uv_fs_event_t *) | | uv_fs_event_init | 0 | uv_loop_t * |
+| (uv_loop_t *,uv_fs_event_t *) | | uv_fs_event_init | 1 | uv_fs_event_t * |
+| (uv_loop_t *,uv_fs_poll_t *) | | uv_fs_poll_init | 0 | uv_loop_t * |
+| (uv_loop_t *,uv_fs_poll_t *) | | uv_fs_poll_init | 1 | uv_fs_poll_t * |
+| (uv_loop_t *,uv_fs_t *) | | uv__fs_post | 0 | uv_loop_t * |
+| (uv_loop_t *,uv_fs_t *) | | uv__fs_post | 1 | uv_fs_t * |
+| (uv_loop_t *,uv_fs_t *) | | uv__iou_fs_close | 0 | uv_loop_t * |
+| (uv_loop_t *,uv_fs_t *) | | uv__iou_fs_close | 1 | uv_fs_t * |
+| (uv_loop_t *,uv_fs_t *) | | uv__iou_fs_ftruncate | 0 | uv_loop_t * |
+| (uv_loop_t *,uv_fs_t *) | | uv__iou_fs_ftruncate | 1 | uv_fs_t * |
+| (uv_loop_t *,uv_fs_t *) | | uv__iou_fs_link | 0 | uv_loop_t * |
+| (uv_loop_t *,uv_fs_t *) | | uv__iou_fs_link | 1 | uv_fs_t * |
+| (uv_loop_t *,uv_fs_t *) | | uv__iou_fs_mkdir | 0 | uv_loop_t * |
+| (uv_loop_t *,uv_fs_t *) | | uv__iou_fs_mkdir | 1 | uv_fs_t * |
+| (uv_loop_t *,uv_fs_t *) | | uv__iou_fs_open | 0 | uv_loop_t * |
+| (uv_loop_t *,uv_fs_t *) | | uv__iou_fs_open | 1 | uv_fs_t * |
+| (uv_loop_t *,uv_fs_t *) | | uv__iou_fs_rename | 0 | uv_loop_t * |
+| (uv_loop_t *,uv_fs_t *) | | uv__iou_fs_rename | 1 | uv_fs_t * |
+| (uv_loop_t *,uv_fs_t *) | | uv__iou_fs_symlink | 0 | uv_loop_t * |
+| (uv_loop_t *,uv_fs_t *) | | uv__iou_fs_symlink | 1 | uv_fs_t * |
+| (uv_loop_t *,uv_fs_t *) | | uv__iou_fs_unlink | 0 | uv_loop_t * |
+| (uv_loop_t *,uv_fs_t *) | | uv__iou_fs_unlink | 1 | uv_fs_t * |
+| (uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb) | | uv_fs_copyfile | 0 | uv_loop_t * |
+| (uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb) | | uv_fs_copyfile | 1 | uv_fs_t * |
+| (uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb) | | uv_fs_copyfile | 2 | const char * |
+| (uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb) | | uv_fs_copyfile | 3 | const char * |
+| (uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb) | | uv_fs_copyfile | 4 | int |
+| (uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb) | | uv_fs_copyfile | 5 | uv_fs_cb |
+| (uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb) | | uv_fs_symlink | 0 | uv_loop_t * |
+| (uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb) | | uv_fs_symlink | 1 | uv_fs_t * |
+| (uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb) | | uv_fs_symlink | 2 | const char * |
+| (uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb) | | uv_fs_symlink | 3 | const char * |
+| (uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb) | | uv_fs_symlink | 4 | int |
+| (uv_loop_t *,uv_fs_t *,const char *,const char *,int,uv_fs_cb) | | uv_fs_symlink | 5 | uv_fs_cb |
+| (uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb) | | uv_fs_link | 0 | uv_loop_t * |
+| (uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb) | | uv_fs_link | 1 | uv_fs_t * |
+| (uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb) | | uv_fs_link | 2 | const char * |
+| (uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb) | | uv_fs_link | 3 | const char * |
+| (uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb) | | uv_fs_link | 4 | uv_fs_cb |
+| (uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb) | | uv_fs_rename | 0 | uv_loop_t * |
+| (uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb) | | uv_fs_rename | 1 | uv_fs_t * |
+| (uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb) | | uv_fs_rename | 2 | const char * |
+| (uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb) | | uv_fs_rename | 3 | const char * |
+| (uv_loop_t *,uv_fs_t *,const char *,const char *,uv_fs_cb) | | uv_fs_rename | 4 | uv_fs_cb |
+| (uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb) | | uv_fs_lutime | 0 | uv_loop_t * |
+| (uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb) | | uv_fs_lutime | 1 | uv_fs_t * |
+| (uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb) | | uv_fs_lutime | 2 | const char * |
+| (uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb) | | uv_fs_lutime | 3 | double |
+| (uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb) | | uv_fs_lutime | 4 | double |
+| (uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb) | | uv_fs_lutime | 5 | uv_fs_cb |
+| (uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb) | | uv_fs_utime | 0 | uv_loop_t * |
+| (uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb) | | uv_fs_utime | 1 | uv_fs_t * |
+| (uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb) | | uv_fs_utime | 2 | const char * |
+| (uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb) | | uv_fs_utime | 3 | double |
+| (uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb) | | uv_fs_utime | 4 | double |
+| (uv_loop_t *,uv_fs_t *,const char *,double,double,uv_fs_cb) | | uv_fs_utime | 5 | uv_fs_cb |
+| (uv_loop_t *,uv_fs_t *,const char *,int,int,uv_fs_cb) | | uv_fs_open | 0 | uv_loop_t * |
+| (uv_loop_t *,uv_fs_t *,const char *,int,int,uv_fs_cb) | | uv_fs_open | 1 | uv_fs_t * |
+| (uv_loop_t *,uv_fs_t *,const char *,int,int,uv_fs_cb) | | uv_fs_open | 2 | const char * |
+| (uv_loop_t *,uv_fs_t *,const char *,int,int,uv_fs_cb) | | uv_fs_open | 3 | int |
+| (uv_loop_t *,uv_fs_t *,const char *,int,int,uv_fs_cb) | | uv_fs_open | 4 | int |
+| (uv_loop_t *,uv_fs_t *,const char *,int,int,uv_fs_cb) | | uv_fs_open | 5 | uv_fs_cb |
+| (uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb) | | uv_fs_access | 0 | uv_loop_t * |
+| (uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb) | | uv_fs_access | 1 | uv_fs_t * |
+| (uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb) | | uv_fs_access | 2 | const char * |
+| (uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb) | | uv_fs_access | 3 | int |
+| (uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb) | | uv_fs_access | 4 | uv_fs_cb |
+| (uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb) | | uv_fs_chmod | 0 | uv_loop_t * |
+| (uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb) | | uv_fs_chmod | 1 | uv_fs_t * |
+| (uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb) | | uv_fs_chmod | 2 | const char * |
+| (uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb) | | uv_fs_chmod | 3 | int |
+| (uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb) | | uv_fs_chmod | 4 | uv_fs_cb |
+| (uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb) | | uv_fs_mkdir | 0 | uv_loop_t * |
+| (uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb) | | uv_fs_mkdir | 1 | uv_fs_t * |
+| (uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb) | | uv_fs_mkdir | 2 | const char * |
+| (uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb) | | uv_fs_mkdir | 3 | int |
+| (uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb) | | uv_fs_mkdir | 4 | uv_fs_cb |
+| (uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb) | | uv_fs_scandir | 0 | uv_loop_t * |
+| (uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb) | | uv_fs_scandir | 1 | uv_fs_t * |
+| (uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb) | | uv_fs_scandir | 2 | const char * |
+| (uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb) | | uv_fs_scandir | 3 | int |
+| (uv_loop_t *,uv_fs_t *,const char *,int,uv_fs_cb) | | uv_fs_scandir | 4 | uv_fs_cb |
+| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_lstat | 0 | uv_loop_t * |
+| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_lstat | 1 | uv_fs_t * |
+| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_lstat | 2 | const char * |
+| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_lstat | 3 | uv_fs_cb |
+| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_mkdtemp | 0 | uv_loop_t * |
+| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_mkdtemp | 1 | uv_fs_t * |
+| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_mkdtemp | 2 | const char * |
+| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_mkdtemp | 3 | uv_fs_cb |
+| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_mkstemp | 0 | uv_loop_t * |
+| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_mkstemp | 1 | uv_fs_t * |
+| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_mkstemp | 2 | const char * |
+| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_mkstemp | 3 | uv_fs_cb |
+| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_opendir | 0 | uv_loop_t * |
+| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_opendir | 1 | uv_fs_t * |
+| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_opendir | 2 | const char * |
+| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_opendir | 3 | uv_fs_cb |
+| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_readlink | 0 | uv_loop_t * |
+| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_readlink | 1 | uv_fs_t * |
+| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_readlink | 2 | const char * |
+| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_readlink | 3 | uv_fs_cb |
+| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_realpath | 0 | uv_loop_t * |
+| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_realpath | 1 | uv_fs_t * |
+| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_realpath | 2 | const char * |
+| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_realpath | 3 | uv_fs_cb |
+| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_rmdir | 0 | uv_loop_t * |
+| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_rmdir | 1 | uv_fs_t * |
+| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_rmdir | 2 | const char * |
+| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_rmdir | 3 | uv_fs_cb |
+| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_stat | 0 | uv_loop_t * |
+| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_stat | 1 | uv_fs_t * |
+| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_stat | 2 | const char * |
+| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_stat | 3 | uv_fs_cb |
+| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_statfs | 0 | uv_loop_t * |
+| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_statfs | 1 | uv_fs_t * |
+| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_statfs | 2 | const char * |
+| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_statfs | 3 | uv_fs_cb |
+| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_unlink | 0 | uv_loop_t * |
+| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_unlink | 1 | uv_fs_t * |
+| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_unlink | 2 | const char * |
+| (uv_loop_t *,uv_fs_t *,const char *,uv_fs_cb) | | uv_fs_unlink | 3 | uv_fs_cb |
+| (uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb) | | uv_fs_chown | 0 | uv_loop_t * |
+| (uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb) | | uv_fs_chown | 1 | uv_fs_t * |
+| (uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb) | | uv_fs_chown | 2 | const char * |
+| (uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb) | | uv_fs_chown | 3 | uv_uid_t |
+| (uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb) | | uv_fs_chown | 4 | uv_gid_t |
+| (uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb) | | uv_fs_chown | 5 | uv_fs_cb |
+| (uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb) | | uv_fs_lchown | 0 | uv_loop_t * |
+| (uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb) | | uv_fs_lchown | 1 | uv_fs_t * |
+| (uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb) | | uv_fs_lchown | 2 | const char * |
+| (uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb) | | uv_fs_lchown | 3 | uv_uid_t |
+| (uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb) | | uv_fs_lchown | 4 | uv_gid_t |
+| (uv_loop_t *,uv_fs_t *,const char *,uv_uid_t,uv_gid_t,uv_fs_cb) | | uv_fs_lchown | 5 | uv_fs_cb |
+| (uv_loop_t *,uv_fs_t *,int) | | uv__iou_fs_read_or_write | 0 | uv_loop_t * |
+| (uv_loop_t *,uv_fs_t *,int) | | uv__iou_fs_read_or_write | 1 | uv_fs_t * |
+| (uv_loop_t *,uv_fs_t *,int) | | uv__iou_fs_read_or_write | 2 | int |
+| (uv_loop_t *,uv_fs_t *,int,int) | | uv__iou_fs_statx | 0 | uv_loop_t * |
+| (uv_loop_t *,uv_fs_t *,int,int) | | uv__iou_fs_statx | 1 | uv_fs_t * |
+| (uv_loop_t *,uv_fs_t *,int,int) | | uv__iou_fs_statx | 2 | int |
+| (uv_loop_t *,uv_fs_t *,int,int) | | uv__iou_fs_statx | 3 | int |
+| (uv_loop_t *,uv_fs_t *,uint32_t) | | uv__iou_fs_fsync_or_fdatasync | 0 | uv_loop_t * |
+| (uv_loop_t *,uv_fs_t *,uint32_t) | | uv__iou_fs_fsync_or_fdatasync | 1 | uv_fs_t * |
+| (uv_loop_t *,uv_fs_t *,uint32_t) | | uv__iou_fs_fsync_or_fdatasync | 2 | uint32_t |
+| (uv_loop_t *,uv_fs_t *,uv_dir_t *,uv_fs_cb) | | uv_fs_closedir | 0 | uv_loop_t * |
+| (uv_loop_t *,uv_fs_t *,uv_dir_t *,uv_fs_cb) | | uv_fs_closedir | 1 | uv_fs_t * |
+| (uv_loop_t *,uv_fs_t *,uv_dir_t *,uv_fs_cb) | | uv_fs_closedir | 2 | uv_dir_t * |
+| (uv_loop_t *,uv_fs_t *,uv_dir_t *,uv_fs_cb) | | uv_fs_closedir | 3 | uv_fs_cb |
+| (uv_loop_t *,uv_fs_t *,uv_dir_t *,uv_fs_cb) | | uv_fs_readdir | 0 | uv_loop_t * |
+| (uv_loop_t *,uv_fs_t *,uv_dir_t *,uv_fs_cb) | | uv_fs_readdir | 1 | uv_fs_t * |
+| (uv_loop_t *,uv_fs_t *,uv_dir_t *,uv_fs_cb) | | uv_fs_readdir | 2 | uv_dir_t * |
+| (uv_loop_t *,uv_fs_t *,uv_dir_t *,uv_fs_cb) | | uv_fs_readdir | 3 | uv_fs_cb |
+| (uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb) | | uv_fs_read | 0 | uv_loop_t * |
+| (uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb) | | uv_fs_read | 1 | uv_fs_t * |
+| (uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb) | | uv_fs_read | 2 | uv_file |
+| (uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb) | | uv_fs_read | 3 | const uv_buf_t[] |
+| (uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb) | | uv_fs_read | 4 | unsigned int |
+| (uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb) | | uv_fs_read | 5 | int64_t |
+| (uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb) | | uv_fs_read | 6 | uv_fs_cb |
+| (uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb) | | uv_fs_write | 0 | uv_loop_t * |
+| (uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb) | | uv_fs_write | 1 | uv_fs_t * |
+| (uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb) | | uv_fs_write | 2 | uv_file |
+| (uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb) | | uv_fs_write | 3 | const uv_buf_t[] |
+| (uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb) | | uv_fs_write | 4 | unsigned int |
+| (uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb) | | uv_fs_write | 5 | int64_t |
+| (uv_loop_t *,uv_fs_t *,uv_file,const uv_buf_t[],unsigned int,int64_t,uv_fs_cb) | | uv_fs_write | 6 | uv_fs_cb |
+| (uv_loop_t *,uv_fs_t *,uv_file,double,double,uv_fs_cb) | | uv_fs_futime | 0 | uv_loop_t * |
+| (uv_loop_t *,uv_fs_t *,uv_file,double,double,uv_fs_cb) | | uv_fs_futime | 1 | uv_fs_t * |
+| (uv_loop_t *,uv_fs_t *,uv_file,double,double,uv_fs_cb) | | uv_fs_futime | 2 | uv_file |
+| (uv_loop_t *,uv_fs_t *,uv_file,double,double,uv_fs_cb) | | uv_fs_futime | 3 | double |
+| (uv_loop_t *,uv_fs_t *,uv_file,double,double,uv_fs_cb) | | uv_fs_futime | 4 | double |
+| (uv_loop_t *,uv_fs_t *,uv_file,double,double,uv_fs_cb) | | uv_fs_futime | 5 | uv_fs_cb |
+| (uv_loop_t *,uv_fs_t *,uv_file,int64_t,uv_fs_cb) | | uv_fs_ftruncate | 0 | uv_loop_t * |
+| (uv_loop_t *,uv_fs_t *,uv_file,int64_t,uv_fs_cb) | | uv_fs_ftruncate | 1 | uv_fs_t * |
+| (uv_loop_t *,uv_fs_t *,uv_file,int64_t,uv_fs_cb) | | uv_fs_ftruncate | 2 | uv_file |
+| (uv_loop_t *,uv_fs_t *,uv_file,int64_t,uv_fs_cb) | | uv_fs_ftruncate | 3 | int64_t |
+| (uv_loop_t *,uv_fs_t *,uv_file,int64_t,uv_fs_cb) | | uv_fs_ftruncate | 4 | uv_fs_cb |
+| (uv_loop_t *,uv_fs_t *,uv_file,int,uv_fs_cb) | | uv_fs_fchmod | 0 | uv_loop_t * |
+| (uv_loop_t *,uv_fs_t *,uv_file,int,uv_fs_cb) | | uv_fs_fchmod | 1 | uv_fs_t * |
+| (uv_loop_t *,uv_fs_t *,uv_file,int,uv_fs_cb) | | uv_fs_fchmod | 2 | uv_file |
+| (uv_loop_t *,uv_fs_t *,uv_file,int,uv_fs_cb) | | uv_fs_fchmod | 3 | int |
+| (uv_loop_t *,uv_fs_t *,uv_file,int,uv_fs_cb) | | uv_fs_fchmod | 4 | uv_fs_cb |
+| (uv_loop_t *,uv_fs_t *,uv_file,uv_file,int64_t,size_t,uv_fs_cb) | | uv_fs_sendfile | 0 | uv_loop_t * |
+| (uv_loop_t *,uv_fs_t *,uv_file,uv_file,int64_t,size_t,uv_fs_cb) | | uv_fs_sendfile | 1 | uv_fs_t * |
+| (uv_loop_t *,uv_fs_t *,uv_file,uv_file,int64_t,size_t,uv_fs_cb) | | uv_fs_sendfile | 2 | uv_file |
+| (uv_loop_t *,uv_fs_t *,uv_file,uv_file,int64_t,size_t,uv_fs_cb) | | uv_fs_sendfile | 3 | uv_file |
+| (uv_loop_t *,uv_fs_t *,uv_file,uv_file,int64_t,size_t,uv_fs_cb) | | uv_fs_sendfile | 4 | int64_t |
+| (uv_loop_t *,uv_fs_t *,uv_file,uv_file,int64_t,size_t,uv_fs_cb) | | uv_fs_sendfile | 5 | size_t |
+| (uv_loop_t *,uv_fs_t *,uv_file,uv_file,int64_t,size_t,uv_fs_cb) | | uv_fs_sendfile | 6 | uv_fs_cb |
+| (uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb) | | uv_fs_close | 0 | uv_loop_t * |
+| (uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb) | | uv_fs_close | 1 | uv_fs_t * |
+| (uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb) | | uv_fs_close | 2 | uv_file |
+| (uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb) | | uv_fs_close | 3 | uv_fs_cb |
+| (uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb) | | uv_fs_fdatasync | 0 | uv_loop_t * |
+| (uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb) | | uv_fs_fdatasync | 1 | uv_fs_t * |
+| (uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb) | | uv_fs_fdatasync | 2 | uv_file |
+| (uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb) | | uv_fs_fdatasync | 3 | uv_fs_cb |
+| (uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb) | | uv_fs_fstat | 0 | uv_loop_t * |
+| (uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb) | | uv_fs_fstat | 1 | uv_fs_t * |
+| (uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb) | | uv_fs_fstat | 2 | uv_file |
+| (uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb) | | uv_fs_fstat | 3 | uv_fs_cb |
+| (uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb) | | uv_fs_fsync | 0 | uv_loop_t * |
+| (uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb) | | uv_fs_fsync | 1 | uv_fs_t * |
+| (uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb) | | uv_fs_fsync | 2 | uv_file |
+| (uv_loop_t *,uv_fs_t *,uv_file,uv_fs_cb) | | uv_fs_fsync | 3 | uv_fs_cb |
+| (uv_loop_t *,uv_fs_t *,uv_file,uv_uid_t,uv_gid_t,uv_fs_cb) | | uv_fs_fchown | 0 | uv_loop_t * |
+| (uv_loop_t *,uv_fs_t *,uv_file,uv_uid_t,uv_gid_t,uv_fs_cb) | | uv_fs_fchown | 1 | uv_fs_t * |
+| (uv_loop_t *,uv_fs_t *,uv_file,uv_uid_t,uv_gid_t,uv_fs_cb) | | uv_fs_fchown | 2 | uv_file |
+| (uv_loop_t *,uv_fs_t *,uv_file,uv_uid_t,uv_gid_t,uv_fs_cb) | | uv_fs_fchown | 3 | uv_uid_t |
+| (uv_loop_t *,uv_fs_t *,uv_file,uv_uid_t,uv_gid_t,uv_fs_cb) | | uv_fs_fchown | 4 | uv_gid_t |
+| (uv_loop_t *,uv_fs_t *,uv_file,uv_uid_t,uv_gid_t,uv_fs_cb) | | uv_fs_fchown | 5 | uv_fs_cb |
+| (uv_loop_t *,uv_getaddrinfo_t *,uv_getaddrinfo_cb,const char *,const char *,const addrinfo *) | | uv_getaddrinfo | 0 | uv_loop_t * |
+| (uv_loop_t *,uv_getaddrinfo_t *,uv_getaddrinfo_cb,const char *,const char *,const addrinfo *) | | uv_getaddrinfo | 1 | uv_getaddrinfo_t * |
+| (uv_loop_t *,uv_getaddrinfo_t *,uv_getaddrinfo_cb,const char *,const char *,const addrinfo *) | | uv_getaddrinfo | 2 | uv_getaddrinfo_cb |
+| (uv_loop_t *,uv_getaddrinfo_t *,uv_getaddrinfo_cb,const char *,const char *,const addrinfo *) | | uv_getaddrinfo | 3 | const char * |
+| (uv_loop_t *,uv_getaddrinfo_t *,uv_getaddrinfo_cb,const char *,const char *,const addrinfo *) | | uv_getaddrinfo | 4 | const char * |
+| (uv_loop_t *,uv_getaddrinfo_t *,uv_getaddrinfo_cb,const char *,const char *,const addrinfo *) | | uv_getaddrinfo | 5 | const addrinfo * |
+| (uv_loop_t *,uv_getnameinfo_t *,uv_getnameinfo_cb,const sockaddr *,int) | | uv_getnameinfo | 0 | uv_loop_t * |
+| (uv_loop_t *,uv_getnameinfo_t *,uv_getnameinfo_cb,const sockaddr *,int) | | uv_getnameinfo | 1 | uv_getnameinfo_t * |
+| (uv_loop_t *,uv_getnameinfo_t *,uv_getnameinfo_cb,const sockaddr *,int) | | uv_getnameinfo | 2 | uv_getnameinfo_cb |
+| (uv_loop_t *,uv_getnameinfo_t *,uv_getnameinfo_cb,const sockaddr *,int) | | uv_getnameinfo | 3 | const sockaddr * |
+| (uv_loop_t *,uv_getnameinfo_t *,uv_getnameinfo_cb,const sockaddr *,int) | | uv_getnameinfo | 4 | int |
+| (uv_loop_t *,uv_idle_t *) | | uv_idle_init | 0 | uv_loop_t * |
+| (uv_loop_t *,uv_idle_t *) | | uv_idle_init | 1 | uv_idle_t * |
+| (uv_loop_t *,uv_loop_option,va_list) | | uv__loop_configure | 0 | uv_loop_t * |
+| (uv_loop_t *,uv_loop_option,va_list) | | uv__loop_configure | 1 | uv_loop_option |
+| (uv_loop_t *,uv_loop_option,va_list) | | uv__loop_configure | 2 | va_list |
+| (uv_loop_t *,uv_pipe_t *,int) | | uv_pipe_init | 0 | uv_loop_t * |
+| (uv_loop_t *,uv_pipe_t *,int) | | uv_pipe_init | 1 | uv_pipe_t * |
+| (uv_loop_t *,uv_pipe_t *,int) | | uv_pipe_init | 2 | int |
+| (uv_loop_t *,uv_poll_t *,int) | | uv_poll_init | 0 | uv_loop_t * |
+| (uv_loop_t *,uv_poll_t *,int) | | uv_poll_init | 1 | uv_poll_t * |
+| (uv_loop_t *,uv_poll_t *,int) | | uv_poll_init | 2 | int |
+| (uv_loop_t *,uv_poll_t *,uv_os_sock_t) | | uv_poll_init_socket | 0 | uv_loop_t * |
+| (uv_loop_t *,uv_poll_t *,uv_os_sock_t) | | uv_poll_init_socket | 1 | uv_poll_t * |
+| (uv_loop_t *,uv_poll_t *,uv_os_sock_t) | | uv_poll_init_socket | 2 | uv_os_sock_t |
+| (uv_loop_t *,uv_prepare_t *) | | uv_prepare_init | 0 | uv_loop_t * |
+| (uv_loop_t *,uv_prepare_t *) | | uv_prepare_init | 1 | uv_prepare_t * |
+| (uv_loop_t *,uv_process_t *,const uv_process_options_t *) | | uv_spawn | 0 | uv_loop_t * |
+| (uv_loop_t *,uv_process_t *,const uv_process_options_t *) | | uv_spawn | 1 | uv_process_t * |
+| (uv_loop_t *,uv_process_t *,const uv_process_options_t *) | | uv_spawn | 2 | const uv_process_options_t * |
+| (uv_loop_t *,uv_random_t *,void *,size_t,unsigned int,uv_random_cb) | | uv_random | 0 | uv_loop_t * |
+| (uv_loop_t *,uv_random_t *,void *,size_t,unsigned int,uv_random_cb) | | uv_random | 1 | uv_random_t * |
+| (uv_loop_t *,uv_random_t *,void *,size_t,unsigned int,uv_random_cb) | | uv_random | 2 | void * |
+| (uv_loop_t *,uv_random_t *,void *,size_t,unsigned int,uv_random_cb) | | uv_random | 3 | size_t |
+| (uv_loop_t *,uv_random_t *,void *,size_t,unsigned int,uv_random_cb) | | uv_random | 4 | unsigned int |
+| (uv_loop_t *,uv_random_t *,void *,size_t,unsigned int,uv_random_cb) | | uv_random | 5 | uv_random_cb |
+| (uv_loop_t *,uv_signal_t *) | | uv_signal_init | 0 | uv_loop_t * |
+| (uv_loop_t *,uv_signal_t *) | | uv_signal_init | 1 | uv_signal_t * |
+| (uv_loop_t *,uv_stream_t *,uv_handle_type) | | uv__stream_init | 0 | uv_loop_t * |
+| (uv_loop_t *,uv_stream_t *,uv_handle_type) | | uv__stream_init | 1 | uv_stream_t * |
+| (uv_loop_t *,uv_stream_t *,uv_handle_type) | | uv__stream_init | 2 | uv_handle_type |
+| (uv_loop_t *,uv_tcp_t *) | | uv_tcp_init | 0 | uv_loop_t * |
+| (uv_loop_t *,uv_tcp_t *) | | uv_tcp_init | 1 | uv_tcp_t * |
+| (uv_loop_t *,uv_tcp_t *,unsigned int) | | uv_tcp_init_ex | 0 | uv_loop_t * |
+| (uv_loop_t *,uv_tcp_t *,unsigned int) | | uv_tcp_init_ex | 1 | uv_tcp_t * |
+| (uv_loop_t *,uv_tcp_t *,unsigned int) | | uv_tcp_init_ex | 2 | unsigned int |
+| (uv_loop_t *,uv_timer_t *) | | uv_timer_init | 0 | uv_loop_t * |
+| (uv_loop_t *,uv_timer_t *) | | uv_timer_init | 1 | uv_timer_t * |
+| (uv_loop_t *,uv_tty_t *,int,uv_file,int) | | uv_tty_init | 0 | uv_loop_t * |
+| (uv_loop_t *,uv_tty_t *,int,uv_file,int) | | uv_tty_init | 1 | uv_tty_t * |
+| (uv_loop_t *,uv_tty_t *,int,uv_file,int) | | uv_tty_init | 2 | int |
+| (uv_loop_t *,uv_tty_t *,int,uv_file,int) | | uv_tty_init | 3 | uv_file |
+| (uv_loop_t *,uv_tty_t *,int,uv_file,int) | | uv_tty_init | 4 | int |
+| (uv_loop_t *,uv_udp_t *) | | uv_udp_init | 0 | uv_loop_t * |
+| (uv_loop_t *,uv_udp_t *) | | uv_udp_init | 1 | uv_udp_t * |
+| (uv_loop_t *,uv_udp_t *,unsigned int) | | uv_udp_init_ex | 0 | uv_loop_t * |
+| (uv_loop_t *,uv_udp_t *,unsigned int) | | uv_udp_init_ex | 1 | uv_udp_t * |
+| (uv_loop_t *,uv_udp_t *,unsigned int) | | uv_udp_init_ex | 2 | unsigned int |
+| (uv_loop_t *,uv_udp_t *,unsigned int,int) | | uv__udp_init_ex | 0 | uv_loop_t * |
+| (uv_loop_t *,uv_udp_t *,unsigned int,int) | | uv__udp_init_ex | 1 | uv_udp_t * |
+| (uv_loop_t *,uv_udp_t *,unsigned int,int) | | uv__udp_init_ex | 2 | unsigned int |
+| (uv_loop_t *,uv_udp_t *,unsigned int,int) | | uv__udp_init_ex | 3 | int |
+| (uv_loop_t *,uv_work_t *,uv_work_cb,uv_after_work_cb) | | uv_queue_work | 0 | uv_loop_t * |
+| (uv_loop_t *,uv_work_t *,uv_work_cb,uv_after_work_cb) | | uv_queue_work | 1 | uv_work_t * |
+| (uv_loop_t *,uv_work_t *,uv_work_cb,uv_after_work_cb) | | uv_queue_work | 2 | uv_work_cb |
+| (uv_loop_t *,uv_work_t *,uv_work_cb,uv_after_work_cb) | | uv_queue_work | 3 | uv_after_work_cb |
+| (uv_loop_t *,void *) | | uv_loop_set_data | 0 | uv_loop_t * |
+| (uv_loop_t *,void *) | | uv_loop_set_data | 1 | void * |
+| (uv_os_fd_t) | | uv_open_osfhandle | 0 | uv_os_fd_t |
+| (uv_pipe_t *) | | uv_pipe_pending_count | 0 | uv_pipe_t * |
+| (uv_pipe_t *,const char *) | | uv_pipe_bind | 0 | uv_pipe_t * |
+| (uv_pipe_t *,const char *) | | uv_pipe_bind | 1 | const char * |
+| (uv_pipe_t *,const char *,size_t,unsigned int) | | uv_pipe_bind2 | 0 | uv_pipe_t * |
+| (uv_pipe_t *,const char *,size_t,unsigned int) | | uv_pipe_bind2 | 1 | const char * |
+| (uv_pipe_t *,const char *,size_t,unsigned int) | | uv_pipe_bind2 | 2 | size_t |
+| (uv_pipe_t *,const char *,size_t,unsigned int) | | uv_pipe_bind2 | 3 | unsigned int |
+| (uv_pipe_t *,int,uv_connection_cb) | | uv__pipe_listen | 0 | uv_pipe_t * |
+| (uv_pipe_t *,int,uv_connection_cb) | | uv__pipe_listen | 1 | int |
+| (uv_pipe_t *,int,uv_connection_cb) | | uv__pipe_listen | 2 | uv_connection_cb |
+| (uv_pipe_t *,uv_file) | | uv_pipe_open | 0 | uv_pipe_t * |
+| (uv_pipe_t *,uv_file) | | uv_pipe_open | 1 | uv_file |
+| (uv_poll_t *,int,uv_poll_cb) | | uv_poll_start | 0 | uv_poll_t * |
+| (uv_poll_t *,int,uv_poll_cb) | | uv_poll_start | 1 | int |
+| (uv_poll_t *,int,uv_poll_cb) | | uv_poll_start | 2 | uv_poll_cb |
+| (uv_prepare_t *,uv_prepare_cb) | | uv_prepare_start | 0 | uv_prepare_t * |
+| (uv_prepare_t *,uv_prepare_cb) | | uv_prepare_start | 1 | uv_prepare_cb |
+| (uv_req_t *,void *) | | uv_req_set_data | 0 | uv_req_t * |
+| (uv_req_t *,void *) | | uv_req_set_data | 1 | void * |
+| (uv_sem_t *) | | uv_sem_destroy | 0 | uv_sem_t * |
+| (uv_sem_t *) | | uv_sem_post | 0 | uv_sem_t * |
+| (uv_sem_t *) | | uv_sem_trywait | 0 | uv_sem_t * |
+| (uv_sem_t *) | | uv_sem_wait | 0 | uv_sem_t * |
+| (uv_shutdown_t *,uv_stream_t *,uv_shutdown_cb) | | uv_shutdown | 0 | uv_shutdown_t * |
+| (uv_shutdown_t *,uv_stream_t *,uv_shutdown_cb) | | uv_shutdown | 1 | uv_stream_t * |
+| (uv_shutdown_t *,uv_stream_t *,uv_shutdown_cb) | | uv_shutdown | 2 | uv_shutdown_cb |
+| (uv_signal_t *,uv_signal_cb,int) | | uv_signal_start | 0 | uv_signal_t * |
+| (uv_signal_t *,uv_signal_cb,int) | | uv_signal_start | 1 | uv_signal_cb |
+| (uv_signal_t *,uv_signal_cb,int) | | uv_signal_start | 2 | int |
+| (uv_signal_t *,uv_signal_cb,int) | | uv_signal_start_oneshot | 0 | uv_signal_t * |
+| (uv_signal_t *,uv_signal_cb,int) | | uv_signal_start_oneshot | 1 | uv_signal_cb |
+| (uv_signal_t *,uv_signal_cb,int) | | uv_signal_start_oneshot | 2 | int |
+| (uv_stream_t *,int,int) | | uv__stream_open | 0 | uv_stream_t * |
+| (uv_stream_t *,int,int) | | uv__stream_open | 1 | int |
+| (uv_stream_t *,int,int) | | uv__stream_open | 2 | int |
+| (uv_stream_t *,int,uv_connection_cb) | | uv_listen | 0 | uv_stream_t * |
+| (uv_stream_t *,int,uv_connection_cb) | | uv_listen | 1 | int |
+| (uv_stream_t *,int,uv_connection_cb) | | uv_listen | 2 | uv_connection_cb |
+| (uv_stream_t *,uv_alloc_cb,uv_read_cb) | | uv__read_start | 0 | uv_stream_t * |
+| (uv_stream_t *,uv_alloc_cb,uv_read_cb) | | uv__read_start | 1 | uv_alloc_cb |
+| (uv_stream_t *,uv_alloc_cb,uv_read_cb) | | uv__read_start | 2 | uv_read_cb |
+| (uv_stream_t *,uv_alloc_cb,uv_read_cb) | | uv_read_start | 0 | uv_stream_t * |
+| (uv_stream_t *,uv_alloc_cb,uv_read_cb) | | uv_read_start | 1 | uv_alloc_cb |
+| (uv_stream_t *,uv_alloc_cb,uv_read_cb) | | uv_read_start | 2 | uv_read_cb |
+| (uv_stream_t *,uv_stream_t *) | | uv_accept | 0 | uv_stream_t * |
+| (uv_stream_t *,uv_stream_t *) | | uv_accept | 1 | uv_stream_t * |
+| (uv_tcp_t *,int,uv_connection_cb) | | uv__tcp_listen | 0 | uv_tcp_t * |
+| (uv_tcp_t *,int,uv_connection_cb) | | uv__tcp_listen | 1 | int |
+| (uv_tcp_t *,int,uv_connection_cb) | | uv__tcp_listen | 2 | uv_connection_cb |
+| (uv_tcp_t *,uv_close_cb) | | uv_tcp_close_reset | 0 | uv_tcp_t * |
+| (uv_tcp_t *,uv_close_cb) | | uv_tcp_close_reset | 1 | uv_close_cb |
+| (uv_tcp_t *,uv_os_sock_t) | | uv_tcp_open | 0 | uv_tcp_t * |
+| (uv_tcp_t *,uv_os_sock_t) | | uv_tcp_open | 1 | uv_os_sock_t |
+| (uv_thread_t *) | | uv_thread_detach | 0 | uv_thread_t * |
+| (uv_thread_t *) | | uv_thread_join | 0 | uv_thread_t * |
+| (uv_thread_t *,char *,char *,size_t) | | uv_thread_setaffinity | 0 | uv_thread_t * |
+| (uv_thread_t *,char *,char *,size_t) | | uv_thread_setaffinity | 1 | char * |
+| (uv_thread_t *,char *,char *,size_t) | | uv_thread_setaffinity | 2 | char * |
+| (uv_thread_t *,char *,char *,size_t) | | uv_thread_setaffinity | 3 | size_t |
+| (uv_thread_t *,char *,size_t) | | uv__thread_getname | 0 | uv_thread_t * |
+| (uv_thread_t *,char *,size_t) | | uv__thread_getname | 1 | char * |
+| (uv_thread_t *,char *,size_t) | | uv__thread_getname | 2 | size_t |
+| (uv_thread_t *,char *,size_t) | | uv_thread_getaffinity | 0 | uv_thread_t * |
+| (uv_thread_t *,char *,size_t) | | uv_thread_getaffinity | 1 | char * |
+| (uv_thread_t *,char *,size_t) | | uv_thread_getaffinity | 2 | size_t |
+| (uv_thread_t *,char *,size_t) | | uv_thread_getname | 0 | uv_thread_t * |
+| (uv_thread_t *,char *,size_t) | | uv_thread_getname | 1 | char * |
+| (uv_thread_t *,char *,size_t) | | uv_thread_getname | 2 | size_t |
+| (uv_timer_t *,uint64_t) | | uv_timer_set_repeat | 0 | uv_timer_t * |
+| (uv_timer_t *,uint64_t) | | uv_timer_set_repeat | 1 | uint64_t |
+| (uv_timer_t *,uv_timer_cb,uint64_t,uint64_t) | | uv_timer_start | 0 | uv_timer_t * |
+| (uv_timer_t *,uv_timer_cb,uint64_t,uint64_t) | | uv_timer_start | 1 | uv_timer_cb |
+| (uv_timer_t *,uv_timer_cb,uint64_t,uint64_t) | | uv_timer_start | 2 | uint64_t |
+| (uv_timer_t *,uv_timer_cb,uint64_t,uint64_t) | | uv_timer_start | 3 | uint64_t |
+| (uv_tty_t *,uv_tty_mode_t) | | uv_tty_set_mode | 0 | uv_tty_t * |
+| (uv_tty_t *,uv_tty_mode_t) | | uv_tty_set_mode | 1 | uv_tty_mode_t |
+| (uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,unsigned int,uv_udp_send_cb) | | uv__udp_send | 0 | uv_udp_send_t * |
+| (uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,unsigned int,uv_udp_send_cb) | | uv__udp_send | 1 | uv_udp_t * |
+| (uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,unsigned int,uv_udp_send_cb) | | uv__udp_send | 2 | const uv_buf_t[] |
+| (uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,unsigned int,uv_udp_send_cb) | | uv__udp_send | 3 | unsigned int |
+| (uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,unsigned int,uv_udp_send_cb) | | uv__udp_send | 4 | const sockaddr * |
+| (uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,unsigned int,uv_udp_send_cb) | | uv__udp_send | 5 | unsigned int |
+| (uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,unsigned int,uv_udp_send_cb) | | uv__udp_send | 6 | uv_udp_send_cb |
+| (uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,uv_udp_send_cb) | | uv_udp_send | 0 | uv_udp_send_t * |
+| (uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,uv_udp_send_cb) | | uv_udp_send | 1 | uv_udp_t * |
+| (uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,uv_udp_send_cb) | | uv_udp_send | 2 | const uv_buf_t[] |
+| (uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,uv_udp_send_cb) | | uv_udp_send | 3 | unsigned int |
+| (uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,uv_udp_send_cb) | | uv_udp_send | 4 | const sockaddr * |
+| (uv_udp_send_t *,uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,uv_udp_send_cb) | | uv_udp_send | 5 | uv_udp_send_cb |
+| (uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *) | | uv_udp_try_send | 0 | uv_udp_t * |
+| (uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *) | | uv_udp_try_send | 1 | const uv_buf_t[] |
+| (uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *) | | uv_udp_try_send | 2 | unsigned int |
+| (uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *) | | uv_udp_try_send | 3 | const sockaddr * |
+| (uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,unsigned int) | | uv__udp_try_send | 0 | uv_udp_t * |
+| (uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,unsigned int) | | uv__udp_try_send | 1 | const uv_buf_t[] |
+| (uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,unsigned int) | | uv__udp_try_send | 2 | unsigned int |
+| (uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,unsigned int) | | uv__udp_try_send | 3 | const sockaddr * |
+| (uv_udp_t *,const uv_buf_t[],unsigned int,const sockaddr *,unsigned int) | | uv__udp_try_send | 4 | unsigned int |
+| (uv_udp_t *,unsigned int,uv_buf_t *[],unsigned int[],sockaddr *[]) | | uv__udp_try_send2 | 0 | uv_udp_t * |
+| (uv_udp_t *,unsigned int,uv_buf_t *[],unsigned int[],sockaddr *[]) | | uv__udp_try_send2 | 1 | unsigned int |
+| (uv_udp_t *,unsigned int,uv_buf_t *[],unsigned int[],sockaddr *[]) | | uv__udp_try_send2 | 2 | uv_buf_t *[] |
+| (uv_udp_t *,unsigned int,uv_buf_t *[],unsigned int[],sockaddr *[]) | | uv__udp_try_send2 | 3 | unsigned int[] |
+| (uv_udp_t *,unsigned int,uv_buf_t *[],unsigned int[],sockaddr *[]) | | uv__udp_try_send2 | 4 | sockaddr *[] |
+| (uv_udp_t *,unsigned int,uv_buf_t *[],unsigned int[],sockaddr *[],unsigned int) | | uv_udp_try_send2 | 0 | uv_udp_t * |
+| (uv_udp_t *,unsigned int,uv_buf_t *[],unsigned int[],sockaddr *[],unsigned int) | | uv_udp_try_send2 | 1 | unsigned int |
+| (uv_udp_t *,unsigned int,uv_buf_t *[],unsigned int[],sockaddr *[],unsigned int) | | uv_udp_try_send2 | 2 | uv_buf_t *[] |
+| (uv_udp_t *,unsigned int,uv_buf_t *[],unsigned int[],sockaddr *[],unsigned int) | | uv_udp_try_send2 | 3 | unsigned int[] |
+| (uv_udp_t *,unsigned int,uv_buf_t *[],unsigned int[],sockaddr *[],unsigned int) | | uv_udp_try_send2 | 4 | sockaddr *[] |
+| (uv_udp_t *,unsigned int,uv_buf_t *[],unsigned int[],sockaddr *[],unsigned int) | | uv_udp_try_send2 | 5 | unsigned int |
+| (uv_udp_t *,uv_alloc_cb,uv_udp_recv_cb) | | uv__udp_recv_start | 0 | uv_udp_t * |
+| (uv_udp_t *,uv_alloc_cb,uv_udp_recv_cb) | | uv__udp_recv_start | 1 | uv_alloc_cb |
+| (uv_udp_t *,uv_alloc_cb,uv_udp_recv_cb) | | uv__udp_recv_start | 2 | uv_udp_recv_cb |
+| (uv_udp_t *,uv_alloc_cb,uv_udp_recv_cb) | | uv_udp_recv_start | 0 | uv_udp_t * |
+| (uv_udp_t *,uv_alloc_cb,uv_udp_recv_cb) | | uv_udp_recv_start | 1 | uv_alloc_cb |
+| (uv_udp_t *,uv_alloc_cb,uv_udp_recv_cb) | | uv_udp_recv_start | 2 | uv_udp_recv_cb |
+| (uv_udp_t *,uv_os_sock_t) | | uv_udp_open | 0 | uv_udp_t * |
+| (uv_udp_t *,uv_os_sock_t) | | uv_udp_open | 1 | uv_os_sock_t |
+| (uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_stream_t *,uv_write_cb) | | uv_write2 | 0 | uv_write_t * |
+| (uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_stream_t *,uv_write_cb) | | uv_write2 | 1 | uv_stream_t * |
+| (uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_stream_t *,uv_write_cb) | | uv_write2 | 2 | const uv_buf_t[] |
+| (uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_stream_t *,uv_write_cb) | | uv_write2 | 3 | unsigned int |
+| (uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_stream_t *,uv_write_cb) | | uv_write2 | 4 | uv_stream_t * |
+| (uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_stream_t *,uv_write_cb) | | uv_write2 | 5 | uv_write_cb |
+| (uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_write_cb) | | uv_write | 0 | uv_write_t * |
+| (uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_write_cb) | | uv_write | 1 | uv_stream_t * |
+| (uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_write_cb) | | uv_write | 2 | const uv_buf_t[] |
+| (uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_write_cb) | | uv_write | 3 | unsigned int |
+| (uv_write_t *,uv_stream_t *,const uv_buf_t[],unsigned int,uv_write_cb) | | uv_write | 4 | uv_write_cb |
| (vector &&) | vector | vector | 0 | vector && |
| (vector &&,const Allocator &) | vector | vector | 0 | vector && |
| (vector &&,const Allocator &) | vector | vector | 1 | const class:1 & |
+| (void *) | | Curl_cpool_upkeep | 0 | void * |
| (void *) | | ossl_kdf_data_new | 0 | void * |
| (void *,CRYPTO_THREAD_RETVAL *) | | ossl_crypto_thread_join | 0 | void * |
| (void *,CRYPTO_THREAD_RETVAL *) | | ossl_crypto_thread_join | 1 | CRYPTO_THREAD_RETVAL * |
@@ -27825,6 +33863,14 @@ getSignatureParameterName
| (void *,const unsigned char *,unsigned char *,const unsigned char *,size_t,block128_f) | | CRYPTO_128_wrap_pad | 3 | const unsigned char * |
| (void *,const unsigned char *,unsigned char *,const unsigned char *,size_t,block128_f) | | CRYPTO_128_wrap_pad | 4 | size_t |
| (void *,const unsigned char *,unsigned char *,const unsigned char *,size_t,block128_f) | | CRYPTO_128_wrap_pad | 5 | block128_f |
+| (void *,curl_off_t,curl_off_t,curl_off_t,curl_off_t) | | xferinfo_cb | 0 | void * |
+| (void *,curl_off_t,curl_off_t,curl_off_t,curl_off_t) | | xferinfo_cb | 1 | curl_off_t |
+| (void *,curl_off_t,curl_off_t,curl_off_t,curl_off_t) | | xferinfo_cb | 2 | curl_off_t |
+| (void *,curl_off_t,curl_off_t,curl_off_t,curl_off_t) | | xferinfo_cb | 3 | curl_off_t |
+| (void *,curl_off_t,curl_off_t,curl_off_t,curl_off_t) | | xferinfo_cb | 4 | curl_off_t |
+| (void *,curl_off_t,int) | | tool_mime_stdin_seek | 0 | void * |
+| (void *,curl_off_t,int) | | tool_mime_stdin_seek | 1 | curl_off_t |
+| (void *,curl_off_t,int) | | tool_mime_stdin_seek | 2 | int |
| (void *,int) | | DSO_dsobyaddr | 0 | void * |
| (void *,int) | | DSO_dsobyaddr | 1 | int |
| (void *,int) | | sqlite3_realloc | 0 | void * |
@@ -27841,6 +33887,10 @@ getSignatureParameterName
| (void *,int,size_t,size_t,size_t,uint64_t,const PROV_CIPHER_HW *) | | ossl_tdes_newctx | 6 | const PROV_CIPHER_HW * |
| (void *,size_t) | | JimDefaultAllocator | 0 | void * |
| (void *,size_t) | | JimDefaultAllocator | 1 | size_t |
+| (void *,size_t) | | uv__random_devurandom | 0 | void * |
+| (void *,size_t) | | uv__random_devurandom | 1 | size_t |
+| (void *,size_t) | | uv__random_getrandom | 0 | void * |
+| (void *,size_t) | | uv__random_getrandom | 1 | size_t |
| (void *,size_t,const EC_POINT *,const EC_KEY *,..(*)(..)) | | ECDH_compute_key | 0 | void * |
| (void *,size_t,const EC_POINT *,const EC_KEY *,..(*)(..)) | | ECDH_compute_key | 1 | size_t |
| (void *,size_t,const EC_POINT *,const EC_KEY *,..(*)(..)) | | ECDH_compute_key | 2 | const EC_POINT * |
@@ -27850,6 +33900,9 @@ getSignatureParameterName
| (void *,size_t,const char *,int) | | CRYPTO_secure_clear_free | 1 | size_t |
| (void *,size_t,const char *,int) | | CRYPTO_secure_clear_free | 2 | const char * |
| (void *,size_t,const char *,int) | | CRYPTO_secure_clear_free | 3 | int |
+| (void *,size_t,size_t) | | Curl_hash_str | 0 | void * |
+| (void *,size_t,size_t) | | Curl_hash_str | 1 | size_t |
+| (void *,size_t,size_t) | | Curl_hash_str | 2 | size_t |
| (void *,size_t,size_t,const char *,int) | | CRYPTO_clear_realloc | 0 | void * |
| (void *,size_t,size_t,const char *,int) | | CRYPTO_clear_realloc | 1 | size_t |
| (void *,size_t,size_t,const char *,int) | | CRYPTO_clear_realloc | 2 | size_t |
@@ -27964,6 +34017,14 @@ getSignatureParameterName
| (void *,void *,const unsigned char *,size_t,const OSSL_PARAM[]) | | ossl_cipher_generic_skey_einit | 2 | const unsigned char * |
| (void *,void *,const unsigned char *,size_t,const OSSL_PARAM[]) | | ossl_cipher_generic_skey_einit | 3 | size_t |
| (void *,void *,const unsigned char *,size_t,const OSSL_PARAM[]) | | ossl_cipher_generic_skey_einit | 4 | const OSSL_PARAM[] |
+| (voidp,z_size_t,z_size_t,gzFile) | | gzfread | 0 | voidp |
+| (voidp,z_size_t,z_size_t,gzFile) | | gzfread | 1 | z_size_t |
+| (voidp,z_size_t,z_size_t,gzFile) | | gzfread | 2 | z_size_t |
+| (voidp,z_size_t,z_size_t,gzFile) | | gzfread | 3 | gzFile |
+| (voidpc,z_size_t,z_size_t,gzFile) | | gzfwrite | 0 | voidpc |
+| (voidpc,z_size_t,z_size_t,gzFile) | | gzfwrite | 1 | z_size_t |
+| (voidpc,z_size_t,z_size_t,gzFile) | | gzfwrite | 2 | z_size_t |
+| (voidpc,z_size_t,z_size_t,gzFile) | | gzfwrite | 3 | gzFile |
| (wchar_t *) | CStringT | CStringT | 0 | wchar_t * |
| (wchar_t) | | operator+= | 0 | wchar_t |
| (wchar_t) | CComBSTR | Append | 0 | wchar_t |
@@ -27974,6 +34035,33 @@ getSignatureParameterName
| (wchar_t,const CStringT &) | | operator+ | 1 | const CStringT & |
| (wchar_t,int) | CStringT | CStringT | 0 | wchar_t |
| (wchar_t,int) | CStringT | CStringT | 1 | int |
+| (z_streamp) | | deflateResetKeep | 0 | z_streamp |
+| (z_streamp) | | inflateCodesUsed | 0 | z_streamp |
+| (z_streamp) | | inflateMark | 0 | z_streamp |
+| (z_streamp,Bytef *,uInt *) | | deflateGetDictionary | 0 | z_streamp |
+| (z_streamp,Bytef *,uInt *) | | deflateGetDictionary | 1 | Bytef * |
+| (z_streamp,Bytef *,uInt *) | | deflateGetDictionary | 2 | uInt * |
+| (z_streamp,Bytef *,uInt *) | | inflateGetDictionary | 0 | z_streamp |
+| (z_streamp,Bytef *,uInt *) | | inflateGetDictionary | 1 | Bytef * |
+| (z_streamp,Bytef *,uInt *) | | inflateGetDictionary | 2 | uInt * |
+| (z_streamp,const Bytef *,uInt) | | deflateSetDictionary | 0 | z_streamp |
+| (z_streamp,const Bytef *,uInt) | | deflateSetDictionary | 1 | const Bytef * |
+| (z_streamp,const Bytef *,uInt) | | deflateSetDictionary | 2 | uInt |
+| (z_streamp,gz_headerp) | | deflateSetHeader | 0 | z_streamp |
+| (z_streamp,gz_headerp) | | deflateSetHeader | 1 | gz_headerp |
+| (z_streamp,int *) | | deflateUsed | 0 | z_streamp |
+| (z_streamp,int *) | | deflateUsed | 1 | int * |
+| (z_streamp,uLong) | | deflateBound | 0 | z_streamp |
+| (z_streamp,uLong) | | deflateBound | 1 | uLong |
+| (z_streamp,unsigned int *,int *) | | deflatePending | 0 | z_streamp |
+| (z_streamp,unsigned int *,int *) | | deflatePending | 1 | unsigned int * |
+| (z_streamp,unsigned int *,int *) | | deflatePending | 2 | int * |
+| (z_streamp,unsigned int) | | inflate_fast | 0 | z_streamp |
+| (z_streamp,unsigned int) | | inflate_fast | 1 | unsigned int |
+| (z_streamp,z_streamp) | | deflateCopy | 0 | z_streamp |
+| (z_streamp,z_streamp) | | deflateCopy | 1 | z_streamp |
+| (z_streamp,z_streamp) | | inflateCopy | 0 | z_streamp |
+| (z_streamp,z_streamp) | | inflateCopy | 1 | z_streamp |
getParameterTypeName
| arrayassignment.cpp:3:6:3:9 | sink | 0 | int |
| arrayassignment.cpp:4:6:4:9 | sink | 0 | MyInt |
diff --git a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected
index 0b825a0a855b..b9ffaf71656b 100644
--- a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected
+++ b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected
@@ -58,6 +58,77 @@
#-----| Type = [LongType] unsigned long
#-----| getParameter(1): [Parameter] (unnamed parameter 1)
#-----| Type = [ScopedEnum] align_val_t
+arm.cpp:
+# 6| [TopLevelFunction] uint8x8_t vadd_u8(uint8x8_t, uint8x8_t)
+# 6| :
+# 6| getParameter(0): [Parameter] a
+# 6| Type = [CTypedefType] uint8x8_t
+# 6| getParameter(1): [Parameter] b
+# 6| Type = [CTypedefType] uint8x8_t
+# 6| getEntryPoint(): [BlockStmt] { ... }
+# 7| getStmt(0): [ReturnStmt] return ...
+# 7| getExpr(): [AddExpr] ... + ...
+# 7| Type = [GNUVectorType] __attribute((neon_vector_type(8))) unsigned char
+# 7| ValueCategory = prvalue
+# 7| getLeftOperand(): [VariableAccess] a
+# 7| Type = [CTypedefType] uint8x8_t
+# 7| ValueCategory = prvalue(load)
+# 7| getRightOperand(): [VariableAccess] b
+# 7| Type = [CTypedefType] uint8x8_t
+# 7| ValueCategory = prvalue(load)
+# 12| [TopLevelFunction] uint16x8_t __builtin_aarch64_uaddlv8qi_uuu(uint8x8_t, uint8x8_t)
+# 12| :
+# 12| getParameter(0): [Parameter] (unnamed parameter 0)
+# 12| Type = [CTypedefType] uint8x8_t
+# 12| getParameter(1): [Parameter] (unnamed parameter 1)
+# 12| Type = [CTypedefType] uint8x8_t
+# 14| [TopLevelFunction] uint16x8_t vaddl_u8(uint8x8_t, uint8x8_t)
+# 14| :
+# 14| getParameter(0): [Parameter] a
+# 14| Type = [CTypedefType] uint8x8_t
+# 14| getParameter(1): [Parameter] b
+# 14| Type = [CTypedefType] uint8x8_t
+# 14| getEntryPoint(): [BlockStmt] { ... }
+# 15| getStmt(0): [ReturnStmt] return ...
+# 15| getExpr(): [FunctionCall] call to __builtin_aarch64_uaddlv8qi_uuu
+# 15| Type = [CTypedefType] uint16x8_t
+# 15| ValueCategory = prvalue
+# 15| getArgument(0): [VariableAccess] a
+# 15| Type = [CTypedefType] uint8x8_t
+# 15| ValueCategory = prvalue(load)
+# 15| getArgument(1): [VariableAccess] b
+# 15| Type = [CTypedefType] uint8x8_t
+# 15| ValueCategory = prvalue(load)
+# 18| [TopLevelFunction] uint16x8_t arm_add(uint8x8_t, uint8x8_t)
+# 18| :
+# 18| getParameter(0): [Parameter] a
+# 18| Type = [CTypedefType] uint8x8_t
+# 18| getParameter(1): [Parameter] b
+# 18| Type = [CTypedefType] uint8x8_t
+# 18| getEntryPoint(): [BlockStmt] { ... }
+# 19| getStmt(0): [DeclStmt] declaration
+# 19| getDeclarationEntry(0): [VariableDeclarationEntry] definition of c
+# 19| Type = [CTypedefType] uint8x8_t
+# 19| getVariable().getInitializer(): [Initializer] initializer for c
+# 19| getExpr(): [FunctionCall] call to vadd_u8
+# 19| Type = [CTypedefType] uint8x8_t
+# 19| ValueCategory = prvalue
+# 19| getArgument(0): [VariableAccess] a
+# 19| Type = [CTypedefType] uint8x8_t
+# 19| ValueCategory = prvalue(load)
+# 19| getArgument(1): [VariableAccess] b
+# 19| Type = [CTypedefType] uint8x8_t
+# 19| ValueCategory = prvalue(load)
+# 20| getStmt(1): [ReturnStmt] return ...
+# 20| getExpr(): [FunctionCall] call to vaddl_u8
+# 20| Type = [CTypedefType] uint16x8_t
+# 20| ValueCategory = prvalue
+# 20| getArgument(0): [VariableAccess] a
+# 20| Type = [CTypedefType] uint8x8_t
+# 20| ValueCategory = prvalue(load)
+# 20| getArgument(1): [VariableAccess] c
+# 20| Type = [CTypedefType] uint8x8_t
+# 20| ValueCategory = prvalue(load)
bad_asts.cpp:
# 5| [CopyAssignmentOperator] Bad::S& Bad::S::operator=(Bad::S const&)
# 5| :
diff --git a/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected b/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected
index 20d593e2379a..fbd0db5e7966 100644
--- a/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected
+++ b/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected
@@ -1,3 +1,86 @@
+arm.cpp:
+# 6| uint8x8_t vadd_u8(uint8x8_t, uint8x8_t)
+# 6| Block 0
+# 6| v6_1(void) = EnterFunction :
+# 6| m6_2(unknown) = AliasedDefinition :
+# 6| m6_3(unknown) = InitializeNonLocal :
+# 6| m6_4(unknown) = Chi : total:m6_2, partial:m6_3
+# 6| r6_5(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[a] :
+# 6| m6_6(__attribute((neon_vector_type(8))) unsigned char) = InitializeParameter[a] : &:r6_5
+# 6| r6_7(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[b] :
+# 6| m6_8(__attribute((neon_vector_type(8))) unsigned char) = InitializeParameter[b] : &:r6_7
+# 7| r7_1(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[#return] :
+# 7| r7_2(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[a] :
+# 7| r7_3(__attribute((neon_vector_type(8))) unsigned char) = Load[a] : &:r7_2, m6_6
+# 7| r7_4(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[b] :
+# 7| r7_5(__attribute((neon_vector_type(8))) unsigned char) = Load[b] : &:r7_4, m6_8
+# 7| r7_6(__attribute((neon_vector_type(8))) unsigned char) = Add : r7_3, r7_5
+# 7| m7_7(__attribute((neon_vector_type(8))) unsigned char) = Store[#return] : &:r7_1, r7_6
+# 6| r6_9(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[#return] :
+# 6| v6_10(void) = ReturnValue : &:r6_9, m7_7
+# 6| v6_11(void) = AliasedUse : m6_3
+# 6| v6_12(void) = ExitFunction :
+
+# 14| uint16x8_t vaddl_u8(uint8x8_t, uint8x8_t)
+# 14| Block 0
+# 14| v14_1(void) = EnterFunction :
+# 14| m14_2(unknown) = AliasedDefinition :
+# 14| m14_3(unknown) = InitializeNonLocal :
+# 14| m14_4(unknown) = Chi : total:m14_2, partial:m14_3
+# 14| r14_5(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[a] :
+# 14| m14_6(__attribute((neon_vector_type(8))) unsigned char) = InitializeParameter[a] : &:r14_5
+# 14| r14_7(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[b] :
+# 14| m14_8(__attribute((neon_vector_type(8))) unsigned char) = InitializeParameter[b] : &:r14_7
+# 15| r15_1(glval<__attribute((neon_vector_type(8))) unsigned short>) = VariableAddress[#return] :
+# 15| r15_2(glval) = FunctionAddress[__builtin_aarch64_uaddlv8qi_uuu] :
+# 15| r15_3(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[a] :
+# 15| r15_4(__attribute((neon_vector_type(8))) unsigned char) = Load[a] : &:r15_3, m14_6
+# 15| r15_5(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[b] :
+# 15| r15_6(__attribute((neon_vector_type(8))) unsigned char) = Load[b] : &:r15_5, m14_8
+# 15| r15_7(__attribute((neon_vector_type(8))) unsigned short) = Call[__builtin_aarch64_uaddlv8qi_uuu] : func:r15_2, 0:r15_4, 1:r15_6
+# 15| m15_8(unknown) = ^CallSideEffect : ~m14_4
+# 15| m15_9(unknown) = Chi : total:m14_4, partial:m15_8
+# 15| m15_10(__attribute((neon_vector_type(8))) unsigned short) = Store[#return] : &:r15_1, r15_7
+# 14| r14_9(glval<__attribute((neon_vector_type(8))) unsigned short>) = VariableAddress[#return] :
+# 14| v14_10(void) = ReturnValue : &:r14_9, m15_10
+# 14| v14_11(void) = AliasedUse : ~m15_9
+# 14| v14_12(void) = ExitFunction :
+
+# 18| uint16x8_t arm_add(uint8x8_t, uint8x8_t)
+# 18| Block 0
+# 18| v18_1(void) = EnterFunction :
+# 18| m18_2(unknown) = AliasedDefinition :
+# 18| m18_3(unknown) = InitializeNonLocal :
+# 18| m18_4(unknown) = Chi : total:m18_2, partial:m18_3
+# 18| r18_5(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[a] :
+# 18| m18_6(__attribute((neon_vector_type(8))) unsigned char) = InitializeParameter[a] : &:r18_5
+# 18| r18_7(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[b] :
+# 18| m18_8(__attribute((neon_vector_type(8))) unsigned char) = InitializeParameter[b] : &:r18_7
+# 19| r19_1(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[c] :
+# 19| r19_2(glval) = FunctionAddress[vadd_u8] :
+# 19| r19_3(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[a] :
+# 19| r19_4(__attribute((neon_vector_type(8))) unsigned char) = Load[a] : &:r19_3, m18_6
+# 19| r19_5(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[b] :
+# 19| r19_6(__attribute((neon_vector_type(8))) unsigned char) = Load[b] : &:r19_5, m18_8
+# 19| r19_7(__attribute((neon_vector_type(8))) unsigned char) = Call[vadd_u8] : func:r19_2, 0:r19_4, 1:r19_6
+# 19| m19_8(unknown) = ^CallSideEffect : ~m18_4
+# 19| m19_9(unknown) = Chi : total:m18_4, partial:m19_8
+# 19| m19_10(__attribute((neon_vector_type(8))) unsigned char) = Store[c] : &:r19_1, r19_7
+# 20| r20_1(glval<__attribute((neon_vector_type(8))) unsigned short>) = VariableAddress[#return] :
+# 20| r20_2(glval) = FunctionAddress[vaddl_u8] :
+# 20| r20_3(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[a] :
+# 20| r20_4(__attribute((neon_vector_type(8))) unsigned char) = Load[a] : &:r20_3, m18_6
+# 20| r20_5(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[c] :
+# 20| r20_6(__attribute((neon_vector_type(8))) unsigned char) = Load[c] : &:r20_5, m19_10
+# 20| r20_7(__attribute((neon_vector_type(8))) unsigned short) = Call[vaddl_u8] : func:r20_2, 0:r20_4, 1:r20_6
+# 20| m20_8(unknown) = ^CallSideEffect : ~m19_9
+# 20| m20_9(unknown) = Chi : total:m19_9, partial:m20_8
+# 20| m20_10(__attribute((neon_vector_type(8))) unsigned short) = Store[#return] : &:r20_1, r20_7
+# 18| r18_9(glval<__attribute((neon_vector_type(8))) unsigned short>) = VariableAddress[#return] :
+# 18| v18_10(void) = ReturnValue : &:r18_9, m20_10
+# 18| v18_11(void) = AliasedUse : ~m20_9
+# 18| v18_12(void) = ExitFunction :
+
bad_asts.cpp:
# 9| int Bad::S::MemberFunction(int)
# 9| Block 0
diff --git a/cpp/ql/test/library-tests/ir/ir/arm.cpp b/cpp/ql/test/library-tests/ir/ir/arm.cpp
new file mode 100644
index 000000000000..36e20715bc57
--- /dev/null
+++ b/cpp/ql/test/library-tests/ir/ir/arm.cpp
@@ -0,0 +1,21 @@
+// semmle-extractor-options: --edg --target --edg linux_arm64
+
+typedef __Uint8x8_t uint8x8_t;
+typedef __Uint16x8_t uint16x8_t;
+
+uint8x8_t vadd_u8(uint8x8_t a, uint8x8_t b) {
+ return a + b;
+}
+
+// Workaround: the frontend only exposes this when the arm_neon.h
+// header is encountered.
+uint16x8_t __builtin_aarch64_uaddlv8qi_uuu(uint8x8_t, uint8x8_t);
+
+uint16x8_t vaddl_u8(uint8x8_t a, uint8x8_t b) {
+ return __builtin_aarch64_uaddlv8qi_uuu (a, b);
+}
+
+uint16x8_t arm_add(uint8x8_t a, uint8x8_t b) {
+ uint8x8_t c = vadd_u8(a, b);
+ return vaddl_u8(a, c);
+}
diff --git a/cpp/ql/test/library-tests/ir/ir/raw_ir.expected b/cpp/ql/test/library-tests/ir/ir/raw_ir.expected
index 11d74a2a26bd..978d05d4b165 100644
--- a/cpp/ql/test/library-tests/ir/ir/raw_ir.expected
+++ b/cpp/ql/test/library-tests/ir/ir/raw_ir.expected
@@ -1,3 +1,80 @@
+arm.cpp:
+# 6| uint8x8_t vadd_u8(uint8x8_t, uint8x8_t)
+# 6| Block 0
+# 6| v6_1(void) = EnterFunction :
+# 6| mu6_2(unknown) = AliasedDefinition :
+# 6| mu6_3(unknown) = InitializeNonLocal :
+# 6| r6_4(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[a] :
+# 6| mu6_5(__attribute((neon_vector_type(8))) unsigned char) = InitializeParameter[a] : &:r6_4
+# 6| r6_6(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[b] :
+# 6| mu6_7(__attribute((neon_vector_type(8))) unsigned char) = InitializeParameter[b] : &:r6_6
+# 7| r7_1(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[#return] :
+# 7| r7_2(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[a] :
+# 7| r7_3(__attribute((neon_vector_type(8))) unsigned char) = Load[a] : &:r7_2, ~m?
+# 7| r7_4(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[b] :
+# 7| r7_5(__attribute((neon_vector_type(8))) unsigned char) = Load[b] : &:r7_4, ~m?
+# 7| r7_6(__attribute((neon_vector_type(8))) unsigned char) = Add : r7_3, r7_5
+# 7| mu7_7(__attribute((neon_vector_type(8))) unsigned char) = Store[#return] : &:r7_1, r7_6
+# 6| r6_8(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[#return] :
+# 6| v6_9(void) = ReturnValue : &:r6_8, ~m?
+# 6| v6_10(void) = AliasedUse : ~m?
+# 6| v6_11(void) = ExitFunction :
+
+# 14| uint16x8_t vaddl_u8(uint8x8_t, uint8x8_t)
+# 14| Block 0
+# 14| v14_1(void) = EnterFunction :
+# 14| mu14_2(unknown) = AliasedDefinition :
+# 14| mu14_3(unknown) = InitializeNonLocal :
+# 14| r14_4(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[a] :
+# 14| mu14_5(__attribute((neon_vector_type(8))) unsigned char) = InitializeParameter[a] : &:r14_4
+# 14| r14_6(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[b] :
+# 14| mu14_7(__attribute((neon_vector_type(8))) unsigned char) = InitializeParameter[b] : &:r14_6
+# 15| r15_1(glval<__attribute((neon_vector_type(8))) unsigned short>) = VariableAddress[#return] :
+# 15| r15_2(glval) = FunctionAddress[__builtin_aarch64_uaddlv8qi_uuu] :
+# 15| r15_3(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[a] :
+# 15| r15_4(__attribute((neon_vector_type(8))) unsigned char) = Load[a] : &:r15_3, ~m?
+# 15| r15_5(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[b] :
+# 15| r15_6(__attribute((neon_vector_type(8))) unsigned char) = Load[b] : &:r15_5, ~m?
+# 15| r15_7(__attribute((neon_vector_type(8))) unsigned short) = Call[__builtin_aarch64_uaddlv8qi_uuu] : func:r15_2, 0:r15_4, 1:r15_6
+# 15| mu15_8(unknown) = ^CallSideEffect : ~m?
+# 15| mu15_9(__attribute((neon_vector_type(8))) unsigned short) = Store[#return] : &:r15_1, r15_7
+# 14| r14_8(glval<__attribute((neon_vector_type(8))) unsigned short>) = VariableAddress[#return] :
+# 14| v14_9(void) = ReturnValue : &:r14_8, ~m?
+# 14| v14_10(void) = AliasedUse : ~m?
+# 14| v14_11(void) = ExitFunction :
+
+# 18| uint16x8_t arm_add(uint8x8_t, uint8x8_t)
+# 18| Block 0
+# 18| v18_1(void) = EnterFunction :
+# 18| mu18_2(unknown) = AliasedDefinition :
+# 18| mu18_3(unknown) = InitializeNonLocal :
+# 18| r18_4(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[a] :
+# 18| mu18_5(__attribute((neon_vector_type(8))) unsigned char) = InitializeParameter[a] : &:r18_4
+# 18| r18_6(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[b] :
+# 18| mu18_7(__attribute((neon_vector_type(8))) unsigned char) = InitializeParameter[b] : &:r18_6
+# 19| r19_1(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[c] :
+# 19| r19_2(glval) = FunctionAddress[vadd_u8] :
+# 19| r19_3(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[a] :
+# 19| r19_4(__attribute((neon_vector_type(8))) unsigned char) = Load[a] : &:r19_3, ~m?
+# 19| r19_5(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[b] :
+# 19| r19_6(__attribute((neon_vector_type(8))) unsigned char) = Load[b] : &:r19_5, ~m?
+# 19| r19_7(__attribute((neon_vector_type(8))) unsigned char) = Call[vadd_u8] : func:r19_2, 0:r19_4, 1:r19_6
+# 19| mu19_8(unknown) = ^CallSideEffect : ~m?
+# 19| mu19_9(__attribute((neon_vector_type(8))) unsigned char) = Store[c] : &:r19_1, r19_7
+# 20| r20_1(glval<__attribute((neon_vector_type(8))) unsigned short>) = VariableAddress[#return] :
+# 20| r20_2(glval) = FunctionAddress[vaddl_u8] :
+# 20| r20_3(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[a] :
+# 20| r20_4(__attribute((neon_vector_type(8))) unsigned char) = Load[a] : &:r20_3, ~m?
+# 20| r20_5(glval<__attribute((neon_vector_type(8))) unsigned char>) = VariableAddress[c] :
+# 20| r20_6(__attribute((neon_vector_type(8))) unsigned char) = Load[c] : &:r20_5, ~m?
+# 20| r20_7(__attribute((neon_vector_type(8))) unsigned short) = Call[vaddl_u8] : func:r20_2, 0:r20_4, 1:r20_6
+# 20| mu20_8(unknown) = ^CallSideEffect : ~m?
+# 20| mu20_9(__attribute((neon_vector_type(8))) unsigned short) = Store[#return] : &:r20_1, r20_7
+# 18| r18_8(glval<__attribute((neon_vector_type(8))) unsigned short>) = VariableAddress[#return] :
+# 18| v18_9(void) = ReturnValue : &:r18_8, ~m?
+# 18| v18_10(void) = AliasedUse : ~m?
+# 18| v18_11(void) = ExitFunction :
+
bad_asts.cpp:
# 9| int Bad::S::MemberFunction(int)
# 9| Block 0
diff --git a/cpp/ql/test/library-tests/lambdas/syntax/empty_declarator.expected b/cpp/ql/test/library-tests/lambdas/syntax/empty_declarator.expected
new file mode 100644
index 000000000000..1beb3eed3b39
--- /dev/null
+++ b/cpp/ql/test/library-tests/lambdas/syntax/empty_declarator.expected
@@ -0,0 +1,11 @@
+| parameters.cpp:2:5:2:23 | [...](...){...} | with list | 2 |
+| parameters.cpp:4:5:4:22 | [...](...){...} | with list | 1 |
+| parameters.cpp:6:5:6:17 | [...](...){...} | with list | 1 |
+| parameters.cpp:8:5:8:20 | [...](...){...} | with list | 0 |
+| parameters.cpp:10:5:10:26 | [...](...){...} | with list | 0 |
+| parameters.cpp:11:5:11:24 | [...](...){...} | without list | 0 |
+| parameters.cpp:13:5:13:20 | [...](...){...} | with list | 0 |
+| parameters.cpp:16:5:18:5 | [...](...){...} | with list | 0 |
+| parameters.cpp:20:5:22:5 | [...](...){...} | without list | 0 |
+| parameters.cpp:24:5:24:10 | [...](...){...} | without list | 0 |
+| parameters.cpp:25:5:25:14 | [...](...){...} | with list | 0 |
diff --git a/cpp/ql/test/library-tests/lambdas/syntax/empty_declarator.ql b/cpp/ql/test/library-tests/lambdas/syntax/empty_declarator.ql
new file mode 100644
index 000000000000..ae2043687a0a
--- /dev/null
+++ b/cpp/ql/test/library-tests/lambdas/syntax/empty_declarator.ql
@@ -0,0 +1,5 @@
+import cpp
+
+from LambdaExpression e, string parameterList
+where if e.hasParameterList() then parameterList = "with list" else parameterList = "without list"
+select e, parameterList, e.getLambdaFunction().getNumberOfParameters()
diff --git a/cpp/ql/test/library-tests/lambdas/syntax/parameters.cpp b/cpp/ql/test/library-tests/lambdas/syntax/parameters.cpp
new file mode 100644
index 000000000000..6d9bca191b16
--- /dev/null
+++ b/cpp/ql/test/library-tests/lambdas/syntax/parameters.cpp
@@ -0,0 +1,26 @@
+void test_lambda_declarator() {
+ [=](int, float) { };
+
+ [](int x = 42) { };
+
+ [](int x) { };
+
+ []() mutable { };
+
+ []() [[nodiscard]] { };
+ [] [[nodiscard]] { };
+
+ []() -> void { };
+
+ int i;
+ [&i]() {
+ i += 1;
+ };
+
+ [&i] {
+ i += 1;
+ };
+
+ [] { };
+ [=] () { };
+}
\ No newline at end of file
diff --git a/cpp/ql/test/library-tests/stmt/leave/leave.cpp b/cpp/ql/test/library-tests/stmt/leave/leave.cpp
new file mode 100644
index 000000000000..f81f63d4a922
--- /dev/null
+++ b/cpp/ql/test/library-tests/stmt/leave/leave.cpp
@@ -0,0 +1,28 @@
+//semmle-extractor-options: --microsoft
+void leave_try_finally_test(bool condition){
+ __try {
+ if(condition){
+ __leave;
+ }
+ }
+ __finally {
+ }
+}
+
+int except_handler();
+
+void leave_try_except_test(bool condition){
+ __try {
+ try {
+ if(condition)
+ __leave;
+ }
+ catch(...) {
+ }
+ if(condition){
+ __leave;
+ }
+ }
+ __except (except_handler()) {
+ }
+}
diff --git a/cpp/ql/test/library-tests/stmt/leave/leave.expected b/cpp/ql/test/library-tests/stmt/leave/leave.expected
new file mode 100644
index 000000000000..d33c0876597f
--- /dev/null
+++ b/cpp/ql/test/library-tests/stmt/leave/leave.expected
@@ -0,0 +1,3 @@
+| leave.cpp:5:8:5:15 | __leave; | leave.cpp:3:5:7:5 | __try { ... } __finally { ... } |
+| leave.cpp:18:17:18:24 | __leave; | leave.cpp:15:5:25:5 | __try { ... } __except( ... ) { ... } |
+| leave.cpp:23:13:23:20 | __leave; | leave.cpp:15:5:25:5 | __try { ... } __except( ... ) { ... } |
diff --git a/cpp/ql/test/library-tests/stmt/leave/leave.ql b/cpp/ql/test/library-tests/stmt/leave/leave.ql
new file mode 100644
index 000000000000..c863b64d3510
--- /dev/null
+++ b/cpp/ql/test/library-tests/stmt/leave/leave.ql
@@ -0,0 +1,4 @@
+import cpp
+
+from LeaveStmt s
+select s, s.getEnclosingTry()
diff --git a/cpp/ql/test/library-tests/templates/type_instantiations/types.expected b/cpp/ql/test/library-tests/templates/type_instantiations/types.expected
index 3539e52eecfb..a86ab5e7bbd5 100644
--- a/cpp/ql/test/library-tests/templates/type_instantiations/types.expected
+++ b/cpp/ql/test/library-tests/templates/type_instantiations/types.expected
@@ -25,6 +25,7 @@
| file://:0:0:0:0 | __float128 |
| file://:0:0:0:0 | __fp16 |
| file://:0:0:0:0 | __int128 |
+| file://:0:0:0:0 | __mfp8 |
| file://:0:0:0:0 | __va_list_tag |
| file://:0:0:0:0 | __va_list_tag & |
| file://:0:0:0:0 | __va_list_tag && |
diff --git a/cpp/ql/test/library-tests/type_sizes/type_sizes.expected b/cpp/ql/test/library-tests/type_sizes/type_sizes.expected
index b7bc9e04fe34..08e8b26f5256 100644
--- a/cpp/ql/test/library-tests/type_sizes/type_sizes.expected
+++ b/cpp/ql/test/library-tests/type_sizes/type_sizes.expected
@@ -46,6 +46,7 @@
| file://:0:0:0:0 | __float128 | 16 |
| file://:0:0:0:0 | __fp16 | 2 |
| file://:0:0:0:0 | __int128 | 16 |
+| file://:0:0:0:0 | __mfp8 | 1 |
| file://:0:0:0:0 | __va_list_tag | 24 |
| file://:0:0:0:0 | __va_list_tag & | 8 |
| file://:0:0:0:0 | __va_list_tag && | 8 |
diff --git a/cpp/ql/test/library-tests/unspecified_type/types/unspecified_type.expected b/cpp/ql/test/library-tests/unspecified_type/types/unspecified_type.expected
index 00ae3fa5d8f3..2e5091754b99 100644
--- a/cpp/ql/test/library-tests/unspecified_type/types/unspecified_type.expected
+++ b/cpp/ql/test/library-tests/unspecified_type/types/unspecified_type.expected
@@ -27,6 +27,7 @@
| file://:0:0:0:0 | __float128 | __float128 |
| file://:0:0:0:0 | __fp16 | __fp16 |
| file://:0:0:0:0 | __int128 | __int128 |
+| file://:0:0:0:0 | __mfp8 | __mfp8 |
| file://:0:0:0:0 | __va_list_tag & | __va_list_tag & |
| file://:0:0:0:0 | __va_list_tag && | __va_list_tag && |
| file://:0:0:0:0 | auto | auto |
diff --git a/cpp/ql/test/library-tests/variables/variables/types.expected b/cpp/ql/test/library-tests/variables/variables/types.expected
index 6ecf14875ca4..1d091ac2571b 100644
--- a/cpp/ql/test/library-tests/variables/variables/types.expected
+++ b/cpp/ql/test/library-tests/variables/variables/types.expected
@@ -26,6 +26,7 @@
| __float128 | Float128Type | | | | |
| __fp16 | BinaryFloatingPointType, RealNumberType | | | | |
| __int128 | Int128Type | | | | |
+| __mfp8 | BinaryFloatingPointType, RealNumberType | | | | |
| __va_list_tag | DirectAccessHolder, MetricClass, Struct, StructLikeClass | | | | |
| __va_list_tag & | LValueReferenceType, PointerOrArrayOrReferenceType, PointerOrArrayOrReferenceTypeIndirection | | __va_list_tag | | |
| __va_list_tag && | PointerOrArrayOrReferenceType, PointerOrArrayOrReferenceTypeIndirection, RValueReferenceType | | __va_list_tag | | |
diff --git a/csharp/ql/campaigns/Solorigate/lib/qlpack.yml b/csharp/ql/campaigns/Solorigate/lib/qlpack.yml
index 212ac56d39d6..a86abb4812b6 100644
--- a/csharp/ql/campaigns/Solorigate/lib/qlpack.yml
+++ b/csharp/ql/campaigns/Solorigate/lib/qlpack.yml
@@ -1,5 +1,5 @@
name: codeql/csharp-solorigate-all
-version: 1.7.42
+version: 1.7.43-dev
groups:
- csharp
- solorigate
diff --git a/csharp/ql/campaigns/Solorigate/src/qlpack.yml b/csharp/ql/campaigns/Solorigate/src/qlpack.yml
index 16bf35874035..caf1e66033e4 100644
--- a/csharp/ql/campaigns/Solorigate/src/qlpack.yml
+++ b/csharp/ql/campaigns/Solorigate/src/qlpack.yml
@@ -1,5 +1,5 @@
name: codeql/csharp-solorigate-queries
-version: 1.7.42
+version: 1.7.43-dev
groups:
- csharp
- solorigate
diff --git a/csharp/ql/integration-tests/posix/query-suite/csharp-code-quality.qls.expected b/csharp/ql/integration-tests/posix/query-suite/csharp-code-quality.qls.expected
index 14934899e0d8..89e7cff7f29e 100644
--- a/csharp/ql/integration-tests/posix/query-suite/csharp-code-quality.qls.expected
+++ b/csharp/ql/integration-tests/posix/query-suite/csharp-code-quality.qls.expected
@@ -2,6 +2,8 @@ ql/csharp/ql/src/API Abuse/CallToGCCollect.ql
ql/csharp/ql/src/API Abuse/FormatInvalid.ql
ql/csharp/ql/src/API Abuse/NoDisposeCallOnLocalIDisposable.ql
ql/csharp/ql/src/Bad Practices/Control-Flow/ConstantCondition.ql
+ql/csharp/ql/src/CSI/NullAlways.ql
+ql/csharp/ql/src/CSI/NullMaybe.ql
ql/csharp/ql/src/Dead Code/DeadStoreOfLocal.ql
ql/csharp/ql/src/Language Abuse/MissedReadonlyOpportunity.ql
ql/csharp/ql/src/Likely Bugs/Collections/ContainerLengthCmpOffByOne.ql
@@ -11,6 +13,7 @@ ql/csharp/ql/src/Likely Bugs/EqualityCheckOnFloats.ql
ql/csharp/ql/src/Likely Bugs/ReferenceEqualsOnValueTypes.ql
ql/csharp/ql/src/Likely Bugs/SelfAssignment.ql
ql/csharp/ql/src/Likely Bugs/UncheckedCastInEquals.ql
+ql/csharp/ql/src/Performance/StringConcatenationInLoop.ql
ql/csharp/ql/src/Performance/UseTryGetValue.ql
ql/csharp/ql/src/Useless code/DefaultToString.ql
ql/csharp/ql/src/Useless code/IntGetHashCode.ql
diff --git a/csharp/ql/lib/qlpack.yml b/csharp/ql/lib/qlpack.yml
index 84b613c84979..464284c56cb4 100644
--- a/csharp/ql/lib/qlpack.yml
+++ b/csharp/ql/lib/qlpack.yml
@@ -1,5 +1,5 @@
name: codeql/csharp-all
-version: 5.1.8
+version: 5.1.9-dev
groups: csharp
dbscheme: semmlecode.csharp.dbscheme
extractor: csharp
diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/Nullness.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/Nullness.qll
index a990455f4307..7e8ed0aadc04 100644
--- a/csharp/ql/lib/semmle/code/csharp/dataflow/Nullness.qll
+++ b/csharp/ql/lib/semmle/code/csharp/dataflow/Nullness.qll
@@ -544,8 +544,13 @@ class Dereference extends G::DereferenceableExpr {
p.hasExtensionMethodModifier() and
not emc.isConditional()
|
- p.fromSource() // assume all non-source extension methods perform a dereference
- implies
+ // Assume all non-source extension methods on
+ // (1) nullable types are null-safe
+ // (2) non-nullable types are doing a dereference.
+ p.fromLibrary() and
+ not p.getAnnotatedType().isNullableRefType()
+ or
+ p.fromSource() and
exists(
Ssa::ImplicitParameterDefinition def,
AssignableDefinitions::ImplicitParameterDefinition pdef
diff --git a/csharp/ql/lib/semmle/code/csharp/frameworks/system/Diagnostics.qll b/csharp/ql/lib/semmle/code/csharp/frameworks/system/Diagnostics.qll
index 14d7497ec330..b5c036fa9f40 100644
--- a/csharp/ql/lib/semmle/code/csharp/frameworks/system/Diagnostics.qll
+++ b/csharp/ql/lib/semmle/code/csharp/frameworks/system/Diagnostics.qll
@@ -41,9 +41,7 @@ class SystemDiagnosticsDebugClass extends SystemDiagnosticsClass {
/** Gets an `Assert(bool, ...)` method. */
Method getAssertMethod() {
result.getDeclaringType() = this and
- result.hasName("Assert") and
- result.getParameter(0).getType() instanceof BoolType and
- result.getReturnType() instanceof VoidType
+ result.hasName("Assert")
}
}
diff --git a/csharp/ql/src/CSI/NullAlways.ql b/csharp/ql/src/CSI/NullAlways.ql
index e52abdc3cd5a..1696f857fde5 100644
--- a/csharp/ql/src/CSI/NullAlways.ql
+++ b/csharp/ql/src/CSI/NullAlways.ql
@@ -9,6 +9,7 @@
* correctness
* exceptions
* external/cwe/cwe-476
+ * quality
*/
import csharp
diff --git a/csharp/ql/src/CSI/NullMaybe.ql b/csharp/ql/src/CSI/NullMaybe.ql
index bb886f199290..c69df839958b 100644
--- a/csharp/ql/src/CSI/NullMaybe.ql
+++ b/csharp/ql/src/CSI/NullMaybe.ql
@@ -10,6 +10,7 @@
* correctness
* exceptions
* external/cwe/cwe-476
+ * quality
*/
import csharp
diff --git a/csharp/ql/src/Performance/StringConcatenationInLoop.ql b/csharp/ql/src/Performance/StringConcatenationInLoop.ql
index aba7d3b74368..b1b420434e94 100644
--- a/csharp/ql/src/Performance/StringConcatenationInLoop.ql
+++ b/csharp/ql/src/Performance/StringConcatenationInLoop.ql
@@ -7,6 +7,7 @@
* @id cs/string-concatenation-in-loop
* @tags efficiency
* maintainability
+ * quality
*/
import csharp
diff --git a/csharp/ql/src/Security Features/CWE-134/UncontrolledFormatString.ql b/csharp/ql/src/Security Features/CWE-134/UncontrolledFormatString.ql
index b99839226c59..3fc132eb3016 100644
--- a/csharp/ql/src/Security Features/CWE-134/UncontrolledFormatString.ql
+++ b/csharp/ql/src/Security Features/CWE-134/UncontrolledFormatString.ql
@@ -4,7 +4,7 @@
* and cause a denial of service.
* @kind path-problem
* @problem.severity error
- * @security-severity 9.3
+ * @security-severity 7.3
* @precision high
* @id cs/uncontrolled-format-string
* @tags security
diff --git a/csharp/ql/src/change-notes/2025-06-03-dereferece-extension-method.md b/csharp/ql/src/change-notes/2025-06-03-dereferece-extension-method.md
new file mode 100644
index 000000000000..b12ec9768d5a
--- /dev/null
+++ b/csharp/ql/src/change-notes/2025-06-03-dereferece-extension-method.md
@@ -0,0 +1,4 @@
+---
+category: minorAnalysis
+---
+* The queries `cs/dereferenced-value-is-always-null` and `cs/dereferenced-value-may-be-null` have been improved to reduce false positives. The queries no longer assume that expressions are dereferenced when passed as the receiver (`this` parameter) to extension methods where that parameter is a nullable type.
diff --git a/csharp/ql/src/change-notes/2025-06-06-reduce-CWE-134-for-memory-safe-languages.md b/csharp/ql/src/change-notes/2025-06-06-reduce-CWE-134-for-memory-safe-languages.md
new file mode 100644
index 000000000000..60006391ac61
--- /dev/null
+++ b/csharp/ql/src/change-notes/2025-06-06-reduce-CWE-134-for-memory-safe-languages.md
@@ -0,0 +1,4 @@
+---
+category: queryMetadata
+---
+* Adjusts the `@security-severity` from 9.3 to 7.3 for `cs/uncontrolled-format-string` to align `CWE-134` severity for memory safe languages to better reflect their impact.
diff --git a/csharp/ql/src/codeql-suites/csharp-security-and-quality.qls b/csharp/ql/src/codeql-suites/csharp-security-and-quality.qls
index 5bb3a54f6eec..b224499edce2 100644
--- a/csharp/ql/src/codeql-suites/csharp-security-and-quality.qls
+++ b/csharp/ql/src/codeql-suites/csharp-security-and-quality.qls
@@ -1,4 +1,143 @@
- description: Security-and-quality queries for C#
- queries: .
-- apply: security-and-quality-selectors.yml
- from: codeql/suite-helpers
+- include:
+ kind:
+ - problem
+ - path-problem
+ precision:
+ - high
+ - very-high
+ tags contain:
+ - security
+- include:
+ kind:
+ - problem
+ - path-problem
+ precision: medium
+ problem.severity:
+ - error
+ - warning
+ tags contain:
+ - security
+- include:
+ id:
+ - cs/asp/response-write
+ - cs/call-to-gc
+ - cs/call-to-object-tostring
+ - cs/call-to-obsolete-method
+ - cs/call-to-unmanaged-code
+ - cs/cast-from-abstract-to-concrete-collection
+ - cs/cast-of-this-to-type-parameter
+ - cs/catch-nullreferenceexception
+ - cs/catch-of-all-exceptions
+ - cs/chained-type-tests
+ - cs/class-implements-icloneable
+ - cs/class-missing-equals
+ - cs/class-name-comparison
+ - cs/class-name-matches-base-class
+ - cs/coalesce-of-identical-expressions
+ - cs/comparison-of-identical-expressions
+ - cs/complex-block
+ - cs/complex-condition
+ - cs/constant-comparison
+ - cs/constant-condition
+ - cs/coupled-types
+ - cs/dereferenced-value-is-always-null
+ - cs/dereferenced-value-may-be-null
+ - cs/dispose-not-called-on-throw
+ - cs/downcast-of-this
+ - cs/empty-block
+ - cs/empty-catch-block
+ - cs/empty-collection
+ - cs/empty-lock-statement
+ - cs/equality-on-floats
+ - cs/equals-on-arrays
+ - cs/equals-on-unrelated-types
+ - cs/equals-uses-as
+ - cs/equals-uses-is
+ - cs/expose-implementation
+ - cs/field-masks-base-field
+ - cs/gethashcode-is-not-defined
+ - cs/impossible-array-cast
+ - cs/inconsistent-compareto-and-equals
+ - cs/inconsistent-equals-and-gethashcode
+ - cs/inconsistent-lock-sequence
+ - cs/index-out-of-bounds
+ - cs/inefficient-containskey
+ - cs/invalid-dynamic-call
+ - cs/invalid-string-formatting
+ - cs/linq/inconsistent-enumeration
+ - cs/linq/missed-all
+ - cs/linq/missed-cast
+ - cs/linq/missed-oftype
+ - cs/linq/missed-select
+ - cs/linq/missed-where
+ - cs/linq/useless-select
+ - cs/local-not-disposed
+ - cs/local-shadows-member
+ - cs/lock-this
+ - cs/locked-wait
+ - cs/loss-of-precision
+ - cs/mishandling-japanese-era
+ - cs/misleading-indentation
+ - cs/missed-readonly-modifier
+ - cs/missed-ternary-operator
+ - cs/missed-using-statement
+ - cs/nested-if-statements
+ - cs/nested-loops-with-same-variable
+ - cs/non-short-circuit
+ - cs/null-argument-to-equals
+ - cs/path-combine
+ - cs/recursive-equals-call
+ - cs/recursive-operator-equals-call
+ - cs/reference-equality-on-valuetypes
+ - cs/reference-equality-with-object
+ - cs/rethrown-exception-variable
+ - cs/self-assignment
+ - cs/simplifiable-boolean-expression
+ - cs/static-field-written-by-instance
+ - cs/string-concatenation-in-loop
+ - cs/stringbuilder-creation-in-loop
+ - cs/stringbuilder-initialized-with-character
+ - cs/test-for-negative-container-size
+ - cs/too-many-ref-parameters
+ - cs/type-test-of-this
+ - cs/unchecked-cast-in-equals
+ - cs/unmanaged-code
+ - cs/unsafe-double-checked-lock
+ - cs/unsafe-sync-on-field
+ - cs/unsafe-year-construction
+ - cs/unsynchronized-getter
+ - cs/unsynchronized-static-access
+ - cs/unused-collection
+ - cs/unused-label
+ - cs/unused-property-value
+ - cs/useless-assignment-to-local
+ - cs/useless-cast-to-self
+ - cs/useless-gethashcode-call
+ - cs/useless-if-statement
+ - cs/useless-tostring-call
+ - cs/useless-type-test
+ - cs/useless-upcast
+ - cs/virtual-call-in-constructor
+ - cs/wrong-compareto-signature
+ - cs/wrong-equals-signature
+ - cs/xmldoc/missing-summary
+- include:
+ kind:
+ - diagnostic
+- include:
+ kind:
+ - metric
+ tags contain:
+ - summary
+- exclude:
+ deprecated: //
+- exclude:
+ query path:
+ - /^experimental\/.*/
+ - Metrics/Summaries/FrameworkCoverage.ql
+- exclude:
+ tags contain:
+ - modeleditor
+ - modelgenerator
diff --git a/csharp/ql/src/qlpack.yml b/csharp/ql/src/qlpack.yml
index 24cacd047ce0..6437a730f150 100644
--- a/csharp/ql/src/qlpack.yml
+++ b/csharp/ql/src/qlpack.yml
@@ -1,5 +1,5 @@
name: codeql/csharp-queries
-version: 1.2.2
+version: 1.2.3-dev
groups:
- csharp
- queries
diff --git a/csharp/ql/test/query-tests/Nullness/A.cs b/csharp/ql/test/query-tests/Nullness/A.cs
index 51bbc280e3c8..12f5d74d5a29 100644
--- a/csharp/ql/test/query-tests/Nullness/A.cs
+++ b/csharp/ql/test/query-tests/Nullness/A.cs
@@ -5,7 +5,7 @@ class A
public void Lock()
{
object synchronizedAlways = null;
- lock (synchronizedAlways) // BAD (always)
+ lock (synchronizedAlways) // $ Alert[cs/dereferenced-value-is-always-null]
{
synchronizedAlways.GetHashCode(); // GOOD
}
@@ -14,7 +14,7 @@ public void Lock()
public void ArrayAssignTest()
{
int[] arrayNull = null;
- arrayNull[0] = 10; // BAD (always)
+ arrayNull[0] = 10; // $ Alert[cs/dereferenced-value-is-always-null]
int[] arrayOk;
arrayOk = new int[10];
@@ -28,10 +28,10 @@ public void Access()
object methodAccess = null;
object methodCall = null;
- Console.WriteLine(arrayAccess[1]); // BAD (always)
- Console.WriteLine(fieldAccess.Length); // BAD (always)
- Func tmp = methodAccess.ToString; // BAD (always)
- Console.WriteLine(methodCall.ToString()); // BAD (always)
+ Console.WriteLine(arrayAccess[1]); // $ Alert[cs/dereferenced-value-is-always-null]
+ Console.WriteLine(fieldAccess.Length); // $ Alert[cs/dereferenced-value-is-always-null]
+ Func tmp = methodAccess.ToString; // $ Alert[cs/dereferenced-value-is-always-null]
+ Console.WriteLine(methodCall.ToString()); // $ Alert[cs/dereferenced-value-is-always-null]
Console.WriteLine(arrayAccess[1]); // GOOD
Console.WriteLine(fieldAccess.Length); // GOOD
@@ -47,7 +47,7 @@ public void OutOrRef()
object varRef = null;
TestMethod2(ref varRef);
- varRef.ToString(); // BAD (always)
+ varRef.ToString(); // $ Alert[cs/dereferenced-value-is-always-null]
varRef = null;
TestMethod3(ref varRef);
diff --git a/csharp/ql/test/query-tests/Nullness/Assert.cs b/csharp/ql/test/query-tests/Nullness/Assert.cs
index 0236977aa393..86a99708a1f5 100644
--- a/csharp/ql/test/query-tests/Nullness/Assert.cs
+++ b/csharp/ql/test/query-tests/Nullness/Assert.cs
@@ -12,7 +12,7 @@ void Fn(bool b)
s = b ? null : "";
Assert.IsNull(s);
- Console.WriteLine(s.Length); // BAD (always)
+ Console.WriteLine(s.Length); // $ Alert[cs/dereferenced-value-is-always-null]
s = b ? null : "";
Assert.IsNotNull(s);
@@ -20,7 +20,7 @@ void Fn(bool b)
s = b ? null : "";
Assert.IsTrue(s == null);
- Console.WriteLine(s.Length); // BAD (always)
+ Console.WriteLine(s.Length); // $ Alert[cs/dereferenced-value-is-always-null]
s = b ? null : "";
Assert.IsTrue(s != null);
@@ -28,7 +28,7 @@ void Fn(bool b)
s = b ? null : "";
Assert.IsFalse(s != null);
- Console.WriteLine(s.Length); // BAD (always)
+ Console.WriteLine(s.Length); // $ Alert[cs/dereferenced-value-is-always-null]
s = b ? null : "";
Assert.IsFalse(s == null);
@@ -44,10 +44,10 @@ void Fn(bool b)
s = b ? null : "";
Assert.IsTrue(s == null && b);
- Console.WriteLine(s.Length); // BAD (always)
+ Console.WriteLine(s.Length); // $ Alert[cs/dereferenced-value-is-always-null]
s = b ? null : "";
Assert.IsFalse(s != null || !b);
- Console.WriteLine(s.Length); // BAD (always)
+ Console.WriteLine(s.Length); // $ Alert[cs/dereferenced-value-is-always-null]
}
}
diff --git a/csharp/ql/test/query-tests/Nullness/B.cs b/csharp/ql/test/query-tests/Nullness/B.cs
index 76ebb6ffd8ee..946bacecefba 100644
--- a/csharp/ql/test/query-tests/Nullness/B.cs
+++ b/csharp/ql/test/query-tests/Nullness/B.cs
@@ -10,7 +10,7 @@ public void OperatorCall()
B neqCallAlways = null;
if (eqCallAlways == null)
- eqCallAlways.ToString(); // BAD (always)
+ eqCallAlways.ToString(); // $ Alert[cs/dereferenced-value-is-always-null]
if (b2 != null)
b2.ToString(); // GOOD
@@ -21,7 +21,7 @@ public void OperatorCall()
if (neqCallAlways != null) { }
else
- neqCallAlways.ToString(); // BAD (always)
+ neqCallAlways.ToString(); // $ Alert[cs/dereferenced-value-is-always-null]
}
public static bool operator ==(B b1, B b2)
diff --git a/csharp/ql/test/query-tests/Nullness/C.cs b/csharp/ql/test/query-tests/Nullness/C.cs
index 805d9e2cae4f..405dceb74d5a 100644
--- a/csharp/ql/test/query-tests/Nullness/C.cs
+++ b/csharp/ql/test/query-tests/Nullness/C.cs
@@ -15,7 +15,7 @@ public void NotTest()
if (!(o != null))
{
- o.GetHashCode(); // BAD (always)
+ o.GetHashCode(); // $ Alert[cs/dereferenced-value-is-always-null]
}
}
@@ -39,7 +39,7 @@ public void AssertTest()
{
var s = Maybe() ? null : "";
Debug.Assert(s == null);
- s.ToString(); // BAD (always)
+ s.ToString(); // $ Alert[cs/dereferenced-value-is-always-null]
s = Maybe() ? null : "";
Debug.Assert(s != null);
@@ -50,22 +50,22 @@ public void AssertNullTest()
{
var o1 = new object();
AssertNull(o1);
- o1.ToString(); // BAD (always) (false negative)
+ o1.ToString(); // $ MISSING: Alert[cs/dereferenced-value-is-always-null]
var o2 = Maybe() ? null : "";
Assert.IsNull(o2);
- o2.ToString(); // BAD (always)
+ o2.ToString(); // $ Alert[cs/dereferenced-value-is-always-null]
}
public void AssertNotNullTest()
{
- var o1 = Maybe() ? null : new object();
+ var o1 = Maybe() ? null : new object(); // $ Source[cs/dereferenced-value-may-be-null]
AssertNonNull(o1);
- o1.ToString(); // GOOD (false positive)
+ o1.ToString(); // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null]
- var o2 = Maybe() ? null : new object();
+ var o2 = Maybe() ? null : new object(); // $ Source[cs/dereferenced-value-may-be-null]
AssertNonNull(o1);
- o2.ToString(); // BAD (maybe)
+ o2.ToString(); // $ Alert[cs/dereferenced-value-may-be-null]
var o3 = Maybe() ? null : new object();
Assert.IsNotNull(o3);
@@ -91,16 +91,16 @@ public void InstanceOf()
public void Lock()
{
- var o = Maybe() ? null : new object();
- lock (o) // BAD (maybe)
+ var o = Maybe() ? null : new object(); // $ Source[cs/dereferenced-value-may-be-null]
+ lock (o) // $ Alert[cs/dereferenced-value-may-be-null]
o.ToString(); // GOOD
}
public void Foreach(IEnumerable list)
{
if (Maybe())
- list = null;
- foreach (var x in list) // BAD (maybe)
+ list = null; // $ Source[cs/dereferenced-value-may-be-null]
+ foreach (var x in list) // $ Alert[cs/dereferenced-value-may-be-null]
{
x.ToString(); // GOOD
list.ToString(); // GOOD
@@ -159,7 +159,7 @@ public void DoWhile()
s = null;
do
{
- s.ToString(); // BAD (always)
+ s.ToString(); // $ Alert[cs/dereferenced-value-is-always-null]
s = null;
}
while (s != null);
@@ -167,15 +167,15 @@ public void DoWhile()
s = null;
do
{
- s.ToString(); // BAD (always)
+ s.ToString(); // $ Alert[cs/dereferenced-value-is-always-null]
}
while (s != null);
s = "";
do
{
- s.ToString(); // BAD (maybe)
- s = null;
+ s.ToString(); // $ Alert[cs/dereferenced-value-may-be-null]
+ s = null; // $ Source[cs/dereferenced-value-may-be-null]
}
while (true);
}
@@ -193,15 +193,15 @@ public void While()
s = null;
while (b)
{
- s.ToString(); // BAD (always)
+ s.ToString(); // $ Alert[cs/dereferenced-value-is-always-null]
s = null;
}
s = "";
while (true)
{
- s.ToString(); // BAD (maybe)
- s = null;
+ s.ToString(); // $ Alert[cs/dereferenced-value-may-be-null]
+ s = null; // $ Source[cs/dereferenced-value-may-be-null]
}
}
@@ -215,12 +215,12 @@ public void If()
}
if (s == null)
- s.ToString(); // BAD (always)
+ s.ToString(); // $ Alert[cs/dereferenced-value-is-always-null]
s = "";
if (s != null && s.Length % 2 == 0)
- s = null;
- s.ToString(); // BAD (maybe)
+ s = null; // $ Source[cs/dereferenced-value-may-be-null]
+ s.ToString(); // $ Alert[cs/dereferenced-value-may-be-null]
}
public void For()
@@ -230,23 +230,23 @@ public void For()
{
s.ToString(); // GOOD
}
- s.ToString(); // BAD (always)
+ s.ToString(); // $ Alert[cs/dereferenced-value-is-always-null]
for (s = null; s == null; s = null)
{
- s.ToString(); // BAD (always)
+ s.ToString(); // $ Alert[cs/dereferenced-value-is-always-null]
}
- for (s = ""; ; s = null)
+ for (s = ""; ; s = null) // $ Source[cs/dereferenced-value-may-be-null]
{
- s.ToString(); // BAD (maybe)
+ s.ToString(); // $ Alert[cs/dereferenced-value-may-be-null]
}
}
public void ArrayAssignTest()
{
int[] a = null;
- a[0] = 10; // BAD (always)
+ a[0] = 10; // $ Alert[cs/dereferenced-value-is-always-null]
a = new int[10];
a[0] = 42; // GOOD
@@ -257,8 +257,8 @@ public void Access()
int[] ia = null;
string[] sa = null;
- ia[1] = 0; // BAD (always)
- var temp = sa.Length; // BAD (always)
+ ia[1] = 0; // $ Alert[cs/dereferenced-value-is-always-null]
+ var temp = sa.Length; // $ Alert[cs/dereferenced-value-is-always-null]
ia[1] = 0; // BAD (always), but not first
temp = sa.Length; // BAD (always), but not first
diff --git a/csharp/ql/test/query-tests/Nullness/D.cs b/csharp/ql/test/query-tests/Nullness/D.cs
index 40419b7f5775..ffc4fd193c77 100644
--- a/csharp/ql/test/query-tests/Nullness/D.cs
+++ b/csharp/ql/test/query-tests/Nullness/D.cs
@@ -14,22 +14,22 @@ public D(bool b, bool f)
public void Caller()
{
Callee1(new object());
- Callee1(null);
+ Callee1(null); // $ Source[cs/dereferenced-value-may-be-null]
Callee2(new object());
}
public void Callee1(object param)
{
- param.ToString(); // BAD (maybe)
+ param.ToString(); // $ Alert[cs/dereferenced-value-may-be-null]
}
- public void Callee2(object param)
+ public void Callee2(object param) // $ Source[cs/dereferenced-value-may-be-null]
{
if (param != null)
{
param.ToString(); // GOOD
}
- param.ToString(); // BAD (maybe)
+ param.ToString(); // $ Alert[cs/dereferenced-value-may-be-null]
}
private static bool CustomIsNull(object x)
@@ -55,54 +55,54 @@ public void NullGuards()
if ((2 > 1 && o4 != null) != false)
o4.ToString(); // GOOD
- var o5 = (o4 != null) ? "" : null;
+ var o5 = (o4 != null) ? "" : null; // $ Source[cs/dereferenced-value-may-be-null]
if (o5 != null)
o4.ToString(); // GOOD
if (o4 != null)
- o5.ToString(); // GOOD (false positive)
+ o5.ToString(); // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null]
var o6 = maybe ? null : "";
if (!CustomIsNull(o6))
o6.ToString(); // GOOD
- var o7 = maybe ? null : "";
+ var o7 = maybe ? null : ""; // $ Source[cs/dereferenced-value-may-be-null]
var ok = o7 != null && 2 > 1;
if (ok)
o7.ToString(); // GOOD
else
- o7.ToString(); // BAD (maybe)
+ o7.ToString(); // $ Alert[cs/dereferenced-value-may-be-null]
- var o8 = maybe ? null : "";
+ var o8 = maybe ? null : ""; // $ Source[cs/dereferenced-value-may-be-null]
int track = o8 == null ? 42 : 1 + 1;
if (track == 2)
o8.ToString(); // GOOD
if (track != 42)
o8.ToString(); // GOOD
if (track < 42)
- o8.ToString(); // GOOD (false positive)
+ o8.ToString(); // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null]
if (track <= 41)
- o8.ToString(); // GOOD (false positive)
+ o8.ToString(); // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null]
}
public void Deref(int i)
{
- int[] xs = maybe ? null : new int[2];
+ int[] xs = maybe ? null : new int[2]; // $ Source[cs/dereferenced-value-may-be-null]
if (i > 1)
- xs[0] = 5; // BAD (maybe)
+ xs[0] = 5; // $ Alert[cs/dereferenced-value-may-be-null]
if (i > 2)
- maybe = xs[1] > 5; // BAD (maybe)
+ maybe = xs[1] > 5; // $ Alert[cs/dereferenced-value-may-be-null]
if (i > 3)
{
- var l = xs.Length; // BAD (maybe)
+ var l = xs.Length; // $ Alert[cs/dereferenced-value-may-be-null]
}
if (i > 4)
- foreach (var _ in xs) ; // BAD (maybe)
+ foreach (var _ in xs) ; // $ Alert[cs/dereferenced-value-may-be-null]
if (i > 5)
- lock (xs) // BAD (maybe)
+ lock (xs) // $ Alert[cs/dereferenced-value-may-be-null]
xs.ToString(); // Not reported - same basic block
if (i > 6)
@@ -117,12 +117,12 @@ public void F(bool b)
var x = b ? null : "abc";
x = x == null ? "" : x;
if (x == null)
- x.ToString(); // BAD (always)
+ x.ToString(); // $ Alert[cs/dereferenced-value-is-always-null]
else
x.ToString(); // GOOD
}
- public void LengthGuard(int[] a, int[] b)
+ public void LengthGuard(int[] a, int[] b) // $ Source[cs/dereferenced-value-may-be-null]
{
int alen = a == null ? 0 : a.Length; // GOOD
int blen = b == null ? 0 : b.Length; // GOOD
@@ -131,8 +131,8 @@ public void LengthGuard(int[] a, int[] b)
{
for (int i = 0; i < alen; i++)
{
- sum += a[i]; // GOOD (false positive)
- sum += b[i]; // GOOD (false positive)
+ sum += a[i]; // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null]
+ sum += b[i]; // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null]
}
}
int alen2;
@@ -142,13 +142,13 @@ public void LengthGuard(int[] a, int[] b)
alen2 = 0;
for (int i = 1; i <= alen2; ++i)
{
- sum += a[i - 1]; // GOOD (false positive)
+ sum += a[i - 1]; // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null]
}
}
- public void MissedGuard(object obj)
+ public void MissedGuard(object obj) // $ Source[cs/dereferenced-value-may-be-null]
{
- obj.ToString(); // BAD (maybe)
+ obj.ToString(); // $ Alert[cs/dereferenced-value-may-be-null]
var x = obj != null ? 1 : 0;
}
@@ -160,7 +160,7 @@ private object MkMaybe()
public void Exceptions()
{
- object obj = null;
+ object obj = null; // $ Source[cs/dereferenced-value-may-be-null]
try
{
obj = MkMaybe();
@@ -168,7 +168,7 @@ public void Exceptions()
catch (Exception e)
{
}
- obj.ToString(); // BAD (maybe)
+ obj.ToString(); // $ Alert[cs/dereferenced-value-may-be-null]
object obj2 = null;
try
@@ -194,7 +194,7 @@ public void ClearNotNull()
{
var o = new Object();
if (o == null)
- o.ToString(); // BAD (always)
+ o.ToString(); // $ Alert[cs/dereferenced-value-is-always-null]
o.ToString(); // GOOD
try
@@ -204,7 +204,7 @@ public void ClearNotNull()
catch (Exception e)
{
if (e == null)
- e.ToString(); // BAD (always)
+ e.ToString(); // $ Alert[cs/dereferenced-value-is-always-null]
e.ToString(); // GOOD
}
@@ -214,12 +214,12 @@ public void ClearNotNull()
var o3 = "abc";
if (o3 == null)
- o3.ToString(); // BAD (always)
+ o3.ToString(); // $ Alert[cs/dereferenced-value-is-always-null]
o3.ToString(); // GOOD
var o4 = "" + null;
if (o4 == null)
- o4.ToString(); // BAD (always)
+ o4.ToString(); // $ Alert[cs/dereferenced-value-is-always-null]
o4.ToString(); // GOOD
}
@@ -237,25 +237,25 @@ public void CorrelatedConditions(bool cond, int num)
if (flag)
o.ToString(); // GOOD
- o = null;
+ o = null; // $ Source[cs/dereferenced-value-may-be-null]
var other = maybe ? null : "";
if (other == null)
o = "";
if (other != null)
- o.ToString(); // BAD (always) (reported as maybe)
+ o.ToString(); // $ Alert[cs/dereferenced-value-may-be-null] (always - but reported as maybe)
else
- o.ToString(); // GOOD (false positive)
+ o.ToString(); // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null]
- var o2 = (num < 0) ? null : "";
+ var o2 = (num < 0) ? null : ""; // $ Source[cs/dereferenced-value-may-be-null]
if (num < 0)
o2 = "";
else
- o2.ToString(); // GOOD (false positive)
+ o2.ToString(); // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null]
}
public void TrackingVariable(int[] a)
{
- object o = null;
+ object o = null; // $ Source[cs/dereferenced-value-may-be-null]
object other = null;
if (maybe)
{
@@ -264,9 +264,9 @@ public void TrackingVariable(int[] a)
}
if (other is string)
- o.ToString(); // GOOD (false positive)
+ o.ToString(); // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null]
- o = null;
+ o = null; // $ Source[cs/dereferenced-value-may-be-null]
int count = 0;
var found = false;
for (var i = 0; i < a.Length; i++)
@@ -280,7 +280,7 @@ public void TrackingVariable(int[] a)
}
if (a[i] > 10000)
{
- o = null;
+ o = null; // $ Source[cs/dereferenced-value-may-be-null]
count = 0;
if (2 > i) { }
found = false;
@@ -288,20 +288,20 @@ public void TrackingVariable(int[] a)
}
if (count > 3)
- o.ToString(); // GOOD (false positive)
+ o.ToString(); // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null]
if (found)
- o.ToString(); // GOOD (false positive)
+ o.ToString(); // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null]
- object prev = null;
+ object prev = null; // $ Source[cs/dereferenced-value-may-be-null]
for (var i = 0; i < a.Length; ++i)
{
if (i != 0)
- prev.ToString(); // GOOD (false positive)
+ prev.ToString(); // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null]
prev = a[i];
}
- string s = null;
+ string s = null; // $ Source[cs/dereferenced-value-may-be-null]
{
var s_null = true;
foreach (var i in a)
@@ -310,10 +310,10 @@ public void TrackingVariable(int[] a)
s = "" + a;
}
if (!s_null)
- s.ToString(); // GOOD (false positive)
+ s.ToString(); // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null]
}
- object r = null;
+ object r = null; // $ Source[cs/dereferenced-value-may-be-null]
var stat = MyStatus.INIT;
while (stat == MyStatus.INIT && stat != MyStatus.READY)
{
@@ -321,7 +321,7 @@ public void TrackingVariable(int[] a)
if (stat == MyStatus.INIT)
stat = MyStatus.READY;
}
- r.ToString(); // GOOD (false positive)
+ r.ToString(); // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null]
}
public enum MyStatus
@@ -348,28 +348,28 @@ public void G(object obj)
public void LoopCorr(int iters)
{
- int[] a = null;
+ int[] a = null; // $ Source[cs/dereferenced-value-may-be-null]
if (iters > 0)
a = new int[iters];
for (var i = 0; i < iters; ++i)
- a[i] = 0; // GOOD (false positive)
+ a[i] = 0; // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null]
if (iters > 0)
{
- string last = null;
+ string last = null; // $ Source[cs/dereferenced-value-may-be-null]
for (var i = 0; i < iters; i++)
last = "abc";
- last.ToString(); // GOOD (false positive)
+ last.ToString(); // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null]
}
- int[] b = maybe ? null : new int[iters];
+ int[] b = maybe ? null : new int[iters]; // $ Source[cs/dereferenced-value-may-be-null]
if (iters > 0 && (b == null || b.Length < iters))
throw new Exception();
for (var i = 0; i < iters; ++i)
{
- b[i] = 0; // GOOD (false positive)
+ b[i] = 0; // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null]
}
}
@@ -382,33 +382,33 @@ void Test(Exception e, bool b)
if (ioe != null)
ioe = e;
else
- ioe.ToString(); // BAD (always)
+ ioe.ToString(); // $ Alert[cs/dereferenced-value-is-always-null]
}
- public void LengthGuard2(int[] a, int[] b)
+ public void LengthGuard2(int[] a, int[] b) // $ Source[cs/dereferenced-value-may-be-null]
{
int alen = a == null ? 0 : a.Length; // GOOD
int sum = 0;
int i;
for (i = 0; i < alen; i++)
{
- sum += a[i]; // GOOD (false positive)
+ sum += a[i]; // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null]
}
int blen = b == null ? 0 : b.Length; // GOOD
for (i = 0; i < blen; i++)
{
- sum += b[i]; // GOOD (false positive)
+ sum += b[i]; // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null]
}
i = -3;
}
- public void CorrConds2(object x, object y)
+ public void CorrConds2(object x, object y) // $ Source[cs/dereferenced-value-may-be-null]
{
if ((x != null && y == null) || (x == null && y != null))
return;
if (x != null)
- y.ToString(); // GOOD (false positive)
+ y.ToString(); // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null]
if (y != null)
- x.ToString(); // GOOD (false positive)
+ x.ToString(); // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null]
}
}
diff --git a/csharp/ql/test/query-tests/Nullness/E.cs b/csharp/ql/test/query-tests/Nullness/E.cs
index ec1fa1613923..f8264523b687 100644
--- a/csharp/ql/test/query-tests/Nullness/E.cs
+++ b/csharp/ql/test/query-tests/Nullness/E.cs
@@ -6,12 +6,12 @@ public class E
{
public void Ex1(long[][][] a1, int ix, int len)
{
- long[][] a2 = null;
+ long[][] a2 = null; // $ Source[cs/dereferenced-value-may-be-null]
var haveA2 = ix < len && (a2 = a1[ix]) != null;
- long[] a3 = null;
- var haveA3 = haveA2 && (a3 = a2[ix]) != null; // GOOD (FALSE POSITIVE)
+ long[] a3 = null; // $ Source[cs/dereferenced-value-may-be-null]
+ var haveA3 = haveA2 && (a3 = a2[ix]) != null; // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null]
if (haveA3)
- a3[0] = 0; // GOOD (FALSE POSITIVE)
+ a3[0] = 0; // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null]
}
public void Ex2(bool x, bool y)
@@ -20,11 +20,11 @@ public void Ex2(bool x, bool y)
var s2 = (s1 == null) ? null : "";
if (s2 == null)
{
- s1 = y ? null : "";
+ s1 = y ? null : ""; // $ Source[cs/dereferenced-value-may-be-null]
s2 = (s1 == null) ? null : "";
}
if (s2 != null)
- s1.ToString(); // GOOD (FALSE POSITIVE)
+ s1.ToString(); // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null]
}
public void Ex3(IEnumerable ss)
@@ -48,7 +48,7 @@ public void Ex4(IEnumerable list, int step)
{
int index = 0;
var result = new List>();
- List slice = null;
+ List slice = null; // $ Source[cs/dereferenced-value-may-be-null]
var iter = list.GetEnumerator();
while (iter.MoveNext())
{
@@ -58,19 +58,19 @@ public void Ex4(IEnumerable list, int step)
slice = new List();
result.Add(slice);
}
- slice.Add(str); // GOOD (FALSE POSITIVE)
+ slice.Add(str); // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null]
++index;
}
}
- public void Ex5(bool hasArr, int[] arr)
+ public void Ex5(bool hasArr, int[] arr) // $ Source[cs/dereferenced-value-may-be-null]
{
int arrLen = 0;
if (hasArr)
arrLen = arr == null ? 0 : arr.Length;
if (arrLen > 0)
- arr[0] = 0; // GOOD (FALSE POSITIVE)
+ arr[0] = 0; // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null]
}
public const int MY_CONST_A = 1;
@@ -104,12 +104,12 @@ public void Ex6(int[] vals, bool b1, bool b2)
public void Ex7(int[] arr1)
{
- int[] arr2 = null;
+ int[] arr2 = null; // $ Source[cs/dereferenced-value-may-be-null]
if (arr1.Length > 0)
arr2 = new int[arr1.Length];
for (var i = 0; i < arr1.Length; i++)
- arr2[i] = arr1[i]; // GOOD (FALSE POSITIVE)
+ arr2[i] = arr1[i]; // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null]
}
public void Ex8(int x, int lim)
@@ -122,7 +122,7 @@ public void Ex8(int x, int lim)
int j = 0;
while (!stop && j < lim)
{
- int step = (j * obj.GetHashCode()) % 10; // GOOD (FALSE POSITIVE)
+ int step = (j * obj.GetHashCode()) % 10; // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null]
if (step == 0)
{
obj.ToString(); // GOOD
@@ -134,7 +134,7 @@ public void Ex8(int x, int lim)
}
else
{
- obj = null;
+ obj = null; // $ Source[cs/dereferenced-value-may-be-null]
}
continue;
}
@@ -149,33 +149,33 @@ public void Ex9(bool cond, object obj1)
{
return;
}
- object obj2 = obj1;
+ object obj2 = obj1; // $ Source[cs/dereferenced-value-may-be-null]
if (obj2 != null && obj2.GetHashCode() % 5 > 2)
{
obj2.ToString(); // GOOD
cond = true;
}
if (cond)
- obj2.ToString(); // GOOD (FALSE POSITIVE)
+ obj2.ToString(); // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null]
}
- public void Ex10(int[] a)
+ public void Ex10(int[] a) // $ Source[cs/dereferenced-value-may-be-null]
{
int n = a == null ? 0 : a.Length;
for (var i = 0; i < n; i++)
{
- int x = a[i]; // GOOD (FALSE POSITIVE)
+ int x = a[i]; // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null]
if (x > 7)
a = new int[n];
}
}
- public void Ex11(object obj, bool b1)
+ public void Ex11(object obj, bool b1) // $ Source[cs/dereferenced-value-may-be-null]
{
bool b2 = obj == null ? false : b1;
if (b2 == null)
{
- obj.ToString(); // GOOD (FALSE POSITIVE)
+ obj.ToString(); // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null]
}
if (obj == null)
{
@@ -183,61 +183,61 @@ public void Ex11(object obj, bool b1)
}
if (b1 == null)
{
- obj.ToString(); // GOOD (FALSE POSITIVE)
+ obj.ToString(); // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null]
}
}
- public void Ex12(object o)
+ public void Ex12(object o) // $ Source[cs/dereferenced-value-may-be-null]
{
- var i = o.GetHashCode(); // BAD (maybe)
+ var i = o.GetHashCode(); // $ Alert[cs/dereferenced-value-may-be-null]
var s = o?.ToString();
}
public void Ex13(bool b)
{
- var o = b ? null : "";
+ var o = b ? null : ""; // $ Source[cs/dereferenced-value-may-be-null]
o.M1(); // GOOD
if (b)
- o.M2(); // BAD (maybe)
+ o.M2(); // $ Alert[cs/dereferenced-value-may-be-null]
else
- o.Select(x => x); // BAD (maybe)
+ o.Select(x => x); // $ Alert[cs/dereferenced-value-may-be-null]
}
public int Ex14(string s)
{
if (s is string)
return s.Length;
- return s.GetHashCode(); // BAD (always)
+ return s.GetHashCode(); // $ Alert[cs/dereferenced-value-is-always-null]
}
public void Ex15(bool b)
{
var x = "";
if (b)
- x = null;
- x.ToString(); // BAD (maybe)
+ x = null; // $ Source[cs/dereferenced-value-may-be-null]
+ x.ToString(); // $ Alert[cs/dereferenced-value-may-be-null]
if (b)
- x.ToString(); // BAD (always)
+ x.ToString(); // $ Alert[cs/dereferenced-value-is-always-null]
}
public void Ex16(bool b)
{
var x = "";
if (b)
- x = null;
+ x = null; // $ Source[cs/dereferenced-value-may-be-null]
if (b)
- x.ToString(); // BAD (always)
- x.ToString(); // BAD (maybe)
+ x.ToString(); // $ Alert[cs/dereferenced-value-is-always-null]
+ x.ToString(); // $ Alert[cs/dereferenced-value-may-be-null]
}
- public int Ex17(int? i)
+ public int Ex17(int? i) // $ Source[cs/dereferenced-value-may-be-null]
{
- return i.Value; // BAD (maybe)
+ return i.Value; // $ Alert[cs/dereferenced-value-may-be-null]
}
- public int Ex18(int? i)
+ public int Ex18(int? i) // $ Source[cs/dereferenced-value-may-be-null]
{
- return (int)i; // BAD (maybe)
+ return (int)i; // $ Alert[cs/dereferenced-value-may-be-null]
}
public int Ex19(int? i)
@@ -280,9 +280,9 @@ public void Ex23(bool b)
{
if (b)
b.ToString();
- var o = Make();
+ var o = Make(); // $ Source[cs/dereferenced-value-may-be-null]
o?.ToString();
- o.ToString(); // BAD (maybe)
+ o.ToString(); // $ Alert[cs/dereferenced-value-may-be-null]
if (b)
b.ToString();
}
@@ -298,8 +298,8 @@ public void Ex24(bool b)
public void Ex25(object o)
{
- var s = o as string;
- s.ToString(); // BAD (maybe)
+ var s = o as string; // $ Source[cs/dereferenced-value-may-be-null]
+ s.ToString(); // $ Alert[cs/dereferenced-value-may-be-null]
}
private long? l;
@@ -320,15 +320,15 @@ static void Ex27(string s1, string s2)
{
if ((s1 ?? s2) is null)
{
- s1.ToString(); // BAD (always)
- s2.ToString(); // BAD (always)
+ s1.ToString(); // $ Alert[cs/dereferenced-value-is-always-null]
+ s2.ToString(); // $ Alert[cs/dereferenced-value-is-always-null]
}
}
static void Ex28()
{
var x = (string)null ?? null;
- x.ToString(); // BAD (always)
+ x.ToString(); // $ Alert[cs/dereferenced-value-is-always-null]
}
static void Ex29(string s)
@@ -339,14 +339,14 @@ static void Ex29(string s)
static void Ex30(string s, object o)
{
- var x = s ?? o as string;
- x.ToString(); // BAD (maybe)
+ var x = s ?? o as string; // $ Source[cs/dereferenced-value-may-be-null]
+ x.ToString(); // $ Alert[cs/dereferenced-value-may-be-null]
}
static void Ex31(string s, object o)
{
- dynamic x = s ?? o as string;
- x.ToString(); // BAD (maybe)
+ dynamic x = s ?? o as string; // $ Source[cs/dereferenced-value-may-be-null]
+ x.ToString(); // $ Alert[cs/dereferenced-value-may-be-null]
}
static void Ex32(string s, object o)
@@ -363,7 +363,7 @@ static void Ex33(string s, object o)
x.ToString(); // GOOD
}
- static int Ex34(string s = null) => s.Length; // BAD (maybe)
+ static int Ex34(string s = null) => s.Length; // $ Alert[cs/dereferenced-value-may-be-null]
static int Ex35(string s = "null") => s.Length; // GOOD
@@ -371,19 +371,19 @@ static int Ex36(object o)
{
if (o is string)
{
- var s = o as string;
- return s.Length; // GOOD (FALSE POSITIVE)
+ var s = o as string; // $ Source[cs/dereferenced-value-may-be-null]
+ return s.Length; // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null]
}
return -1;
}
- static bool Ex37(E e1, E e2)
+ static bool Ex37(E e1, E e2) // $ Source[cs/dereferenced-value-may-be-null]
{
if ((e1 == null && e2 != null) || (e1 != null && e2 == null))
return false;
if (e1 == null && e2 == null)
return true;
- return e1.Long == e2.Long; // GOOD (FALSE POSITIVE)
+ return e1.Long == e2.Long; // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null]
}
int Ex38(int? i)
@@ -402,7 +402,7 @@ int Ex40()
{
int? i = null;
i ??= null;
- return i.Value; // BAD (always)
+ return i.Value; // $ Alert[cs/dereferenced-value-is-always-null]
}
int Ex41()
@@ -414,20 +414,20 @@ int Ex41()
static bool Ex42(int? i, IEnumerable @is)
{
- return @is.Any(j => j == i.Value); // BAD (maybe)
+ return @is.Any(j => j == i.Value); // $ Alert[cs/dereferenced-value-may-be-null]
}
static bool Ex43(int? i, IEnumerable @is)
{
if (i.HasValue)
- return @is.Any(j => j == i.Value); // GOOD (FALSE POSITIVE)
+ return @is.Any(j => j == i.Value); // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null]
return false;
}
static bool Ex44(int? i, IEnumerable @is)
{
if (i.HasValue)
- @is = @is.Where(j => j == i.Value); // BAD (always)
+ @is = @is.Where(j => j == i.Value); // $ Alert[cs/dereferenced-value-may-be-null]
i = null;
return @is.Any();
}
@@ -436,12 +436,12 @@ static void Ex45(string s)
{
if (s is null)
{
- s.ToString(); // BAD (always)
+ s.ToString(); // $ Alert[cs/dereferenced-value-is-always-null]
}
if (s is not not null)
{
- s.ToString(); // BAD (always) (FALSE NEGATIVE)
+ s.ToString(); // $ MISSING: Alert[cs/dereferenced-value-is-always-null]
}
if (s is not null)
diff --git a/csharp/ql/test/query-tests/Nullness/F.cs b/csharp/ql/test/query-tests/Nullness/F.cs
new file mode 100644
index 000000000000..b5d6b66b9496
--- /dev/null
+++ b/csharp/ql/test/query-tests/Nullness/F.cs
@@ -0,0 +1,16 @@
+using Library;
+
+public class F
+{
+ public void M1()
+ {
+ object o = null;
+ o.Accept(); // $ Alert[cs/dereferenced-value-is-always-null]
+ }
+
+ public void M2()
+ {
+ object? o = null;
+ o.AcceptNullable();
+ }
+}
diff --git a/csharp/ql/test/query-tests/Nullness/Forwarding.cs b/csharp/ql/test/query-tests/Nullness/Forwarding.cs
index fc7b69da490f..122c5036567b 100644
--- a/csharp/ql/test/query-tests/Nullness/Forwarding.cs
+++ b/csharp/ql/test/query-tests/Nullness/Forwarding.cs
@@ -33,11 +33,11 @@ void Fn()
if (IsNotNullWrong(s))
{
- Console.WriteLine(s.Length); // BAD (always)
+ Console.WriteLine(s.Length); // $ Alert[cs/dereferenced-value-is-always-null]
}
AssertIsNotNull(s);
- Console.WriteLine(s.Length); // GOOD (false positive)
+ Console.WriteLine(s.Length); // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-is-always-null]
}
bool IsNotNull(object o)
diff --git a/csharp/ql/test/query-tests/Nullness/GuardedString.cs b/csharp/ql/test/query-tests/Nullness/GuardedString.cs
index b5b74cf19cab..797955d95eb6 100644
--- a/csharp/ql/test/query-tests/Nullness/GuardedString.cs
+++ b/csharp/ql/test/query-tests/Nullness/GuardedString.cs
@@ -4,7 +4,7 @@ class GuardedStringTest
{
void Fn(bool b)
{
- string s = b ? null : "";
+ string s = b ? null : ""; // $ Source[cs/dereferenced-value-may-be-null]
if (!string.IsNullOrEmpty(s))
{
@@ -32,7 +32,7 @@ void Fn(bool b)
Console.WriteLine(s.Length); // GOOD
if (s?.Length != 0)
- Console.WriteLine(s.Length); // BAD (maybe)
+ Console.WriteLine(s.Length); // $ Alert[cs/dereferenced-value-may-be-null]
else
Console.WriteLine(s.Length); // GOOD
}
diff --git a/csharp/ql/test/query-tests/Nullness/Implications.expected b/csharp/ql/test/query-tests/Nullness/Implications.expected
index dbb6ab23a9aa..ec660dd44a42 100644
--- a/csharp/ql/test/query-tests/Nullness/Implications.expected
+++ b/csharp/ql/test/query-tests/Nullness/Implications.expected
@@ -1305,6 +1305,10 @@
| E.cs:442:13:442:29 | ... is ... | true | E.cs:442:13:442:13 | access to parameter s | non-null |
| E.cs:447:13:447:25 | ... is ... | true | E.cs:447:13:447:13 | access to parameter s | non-null |
| E.cs:452:13:452:23 | ... is ... | true | E.cs:452:13:452:13 | access to parameter s | non-null |
+| F.cs:8:9:8:9 | access to local variable o | non-null | F.cs:7:20:7:23 | null | non-null |
+| F.cs:8:9:8:9 | access to local variable o | null | F.cs:7:20:7:23 | null | null |
+| F.cs:14:9:14:9 | access to local variable o | non-null | F.cs:13:21:13:24 | null | non-null |
+| F.cs:14:9:14:9 | access to local variable o | null | F.cs:13:21:13:24 | null | null |
| Forwarding.cs:9:13:9:30 | !... | false | Forwarding.cs:9:14:9:30 | call to method IsNullOrEmpty | true |
| Forwarding.cs:9:13:9:30 | !... | true | Forwarding.cs:9:14:9:30 | call to method IsNullOrEmpty | false |
| Forwarding.cs:9:14:9:14 | access to local variable s | empty | Forwarding.cs:7:20:7:23 | null | empty |
diff --git a/csharp/ql/test/query-tests/Nullness/NullAlways.expected b/csharp/ql/test/query-tests/Nullness/NullAlways.expected
index ec8a78e817b5..e2e594b2e2c1 100644
--- a/csharp/ql/test/query-tests/Nullness/NullAlways.expected
+++ b/csharp/ql/test/query-tests/Nullness/NullAlways.expected
@@ -38,6 +38,7 @@
| E.cs:331:9:331:9 | access to local variable x | Variable $@ is always null at this dereference. | E.cs:330:13:330:13 | x | x |
| E.cs:405:16:405:16 | access to local variable i | Variable $@ is always null at this dereference. | E.cs:403:14:403:14 | i | i |
| E.cs:439:13:439:13 | access to parameter s | Variable $@ is always null at this dereference. | E.cs:435:29:435:29 | s | s |
+| F.cs:8:9:8:9 | access to local variable o | Variable $@ is always null at this dereference. | F.cs:7:16:7:16 | o | o |
| Forwarding.cs:36:31:36:31 | access to local variable s | Variable $@ is always null at this dereference. | Forwarding.cs:7:16:7:16 | s | s |
| Forwarding.cs:40:27:40:27 | access to local variable s | Variable $@ is always null at this dereference. | Forwarding.cs:7:16:7:16 | s | s |
| NullAlwaysBad.cs:9:30:9:30 | access to parameter s | Variable $@ is always null at this dereference. | NullAlwaysBad.cs:7:29:7:29 | s | s |
diff --git a/csharp/ql/test/query-tests/Nullness/NullAlways.qlref b/csharp/ql/test/query-tests/Nullness/NullAlways.qlref
index 16785ed3e7ad..9f937e609520 100644
--- a/csharp/ql/test/query-tests/Nullness/NullAlways.qlref
+++ b/csharp/ql/test/query-tests/Nullness/NullAlways.qlref
@@ -1 +1,2 @@
-CSI/NullAlways.ql
+query: CSI/NullAlways.ql
+postprocess: utils/test/InlineExpectationsTestQuery.ql
diff --git a/csharp/ql/test/query-tests/Nullness/NullAlwaysBad.cs b/csharp/ql/test/query-tests/Nullness/NullAlwaysBad.cs
index 6f0d486f1c77..107a4f3381ef 100644
--- a/csharp/ql/test/query-tests/Nullness/NullAlwaysBad.cs
+++ b/csharp/ql/test/query-tests/Nullness/NullAlwaysBad.cs
@@ -6,7 +6,7 @@ class Bad
{
void DoPrint(string s)
{
- if (s != null || s.Length > 0)
+ if (s != null || s.Length > 0) // $ Alert[cs/dereferenced-value-is-always-null]
Console.WriteLine(s);
}
}
diff --git a/csharp/ql/test/query-tests/Nullness/NullMaybe.expected b/csharp/ql/test/query-tests/Nullness/NullMaybe.expected
index 631c2cd77660..876cde548b6a 100644
--- a/csharp/ql/test/query-tests/Nullness/NullMaybe.expected
+++ b/csharp/ql/test/query-tests/Nullness/NullMaybe.expected
@@ -1,457 +1,92 @@
-nodes
-| A.cs:7:16:7:40 | SSA def(synchronizedAlways) |
-| A.cs:8:15:8:32 | access to local variable synchronizedAlways |
-| A.cs:10:13:10:30 | access to local variable synchronizedAlways |
-| A.cs:16:15:16:30 | SSA def(arrayNull) |
-| A.cs:17:9:17:17 | access to local variable arrayNull |
-| A.cs:26:15:26:32 | SSA def(arrayAccess) |
-| A.cs:27:18:27:35 | SSA def(fieldAccess) |
-| A.cs:28:16:28:34 | SSA def(methodAccess) |
-| A.cs:29:16:29:32 | SSA def(methodCall) |
-| A.cs:31:27:31:37 | access to local variable arrayAccess |
-| A.cs:32:27:32:37 | access to local variable fieldAccess |
-| A.cs:33:28:33:39 | access to local variable methodAccess |
-| A.cs:34:27:34:36 | access to local variable methodCall |
-| A.cs:36:27:36:37 | access to local variable arrayAccess |
-| A.cs:37:27:37:37 | access to local variable fieldAccess |
-| A.cs:38:15:38:26 | access to local variable methodAccess |
-| A.cs:39:27:39:36 | access to local variable methodCall |
-| A.cs:48:16:48:28 | SSA def(varRef) |
-| A.cs:50:9:50:14 | access to local variable varRef |
-| Assert.cs:13:9:13:25 | [b (line 7): false] SSA def(s) |
-| Assert.cs:13:9:13:25 | [b (line 7): true] SSA def(s) |
-| Assert.cs:15:27:15:27 | access to local variable s |
-| Assert.cs:15:27:15:27 | access to local variable s |
-| Assert.cs:21:9:21:25 | [b (line 7): false] SSA def(s) |
-| Assert.cs:21:9:21:25 | [b (line 7): true] SSA def(s) |
-| Assert.cs:23:27:23:27 | access to local variable s |
-| Assert.cs:23:27:23:27 | access to local variable s |
-| Assert.cs:29:9:29:25 | [b (line 7): false] SSA def(s) |
-| Assert.cs:29:9:29:25 | [b (line 7): true] SSA def(s) |
-| Assert.cs:31:27:31:27 | access to local variable s |
-| Assert.cs:31:27:31:27 | access to local variable s |
-| Assert.cs:45:9:45:25 | [b (line 7): true] SSA def(s) |
-| Assert.cs:46:23:46:36 | [true, b (line 7): true] ... && ... |
-| Assert.cs:46:36:46:36 | [b (line 7): true] access to parameter b |
-| Assert.cs:47:27:47:27 | access to local variable s |
-| Assert.cs:49:9:49:25 | [b (line 7): true] SSA def(s) |
-| Assert.cs:50:24:50:38 | [false] ... \|\| ... |
-| Assert.cs:50:37:50:38 | [false] !... |
-| Assert.cs:50:38:50:38 | [b (line 7): true] access to parameter b |
-| Assert.cs:51:27:51:27 | access to local variable s |
-| B.cs:7:11:7:29 | SSA def(eqCallAlways) |
-| B.cs:10:11:10:30 | SSA def(neqCallAlways) |
-| B.cs:13:13:13:24 | access to local variable eqCallAlways |
-| B.cs:13:13:13:36 | ...; |
-| B.cs:15:9:16:26 | if (...) ... |
-| B.cs:16:13:16:26 | ...; |
-| B.cs:18:9:20:26 | if (...) ... |
-| B.cs:18:25:18:27 | {...} |
-| B.cs:20:13:20:26 | ...; |
-| B.cs:22:9:24:37 | if (...) ... |
-| B.cs:24:13:24:25 | access to local variable neqCallAlways |
-| C.cs:10:16:10:23 | SSA def(o) |
-| C.cs:11:13:11:30 | [false] !... |
-| C.cs:11:15:11:29 | [true] !... |
-| C.cs:11:17:11:28 | [false] !... |
-| C.cs:16:9:19:9 | if (...) ... |
-| C.cs:16:13:16:24 | [true] !... |
-| C.cs:18:13:18:13 | access to local variable o |
-| C.cs:40:13:40:35 | SSA def(s) |
-| C.cs:42:9:42:9 | access to local variable s |
-| C.cs:55:13:55:36 | SSA def(o2) |
-| C.cs:57:9:57:10 | access to local variable o2 |
-| C.cs:62:13:62:46 | SSA def(o1) |
-| C.cs:64:9:64:10 | access to local variable o1 |
-| C.cs:66:13:66:46 | SSA def(o2) |
-| C.cs:68:9:68:10 | access to local variable o2 |
-| C.cs:94:13:94:45 | SSA def(o) |
-| C.cs:95:15:95:15 | access to local variable o |
-| C.cs:96:13:96:13 | access to local variable o |
-| C.cs:102:13:102:23 | SSA def(list) |
-| C.cs:103:9:107:9 | foreach (... ... in ...) ... |
-| C.cs:103:22:103:22 | Int32 x |
-| C.cs:103:27:103:30 | access to parameter list |
-| C.cs:103:27:103:30 | access to parameter list |
-| C.cs:106:13:106:16 | access to parameter list |
-| C.cs:159:9:159:16 | SSA def(s) |
-| C.cs:162:13:162:13 | access to local variable s |
-| C.cs:167:9:167:16 | SSA def(s) |
-| C.cs:170:13:170:13 | access to local variable s |
-| C.cs:177:13:177:13 | access to local variable s |
-| C.cs:178:13:178:20 | SSA def(s) |
-| C.cs:193:9:193:16 | SSA def(s) |
-| C.cs:196:13:196:13 | access to local variable s |
-| C.cs:197:13:197:20 | [b (line 192): true] SSA def(s) |
-| C.cs:201:16:201:19 | true |
-| C.cs:203:13:203:13 | access to local variable s |
-| C.cs:204:13:204:20 | SSA def(s) |
-| C.cs:210:13:210:35 | SSA def(s) |
-| C.cs:214:13:214:20 | SSA def(s) |
-| C.cs:217:9:218:25 | if (...) ... |
-| C.cs:218:13:218:13 | access to local variable s |
-| C.cs:222:13:222:20 | SSA def(s) |
-| C.cs:223:9:223:9 | access to local variable s |
-| C.cs:229:22:229:22 | access to local variable s |
-| C.cs:229:33:229:40 | SSA def(s) |
-| C.cs:233:9:233:9 | access to local variable s |
-| C.cs:235:14:235:21 | SSA def(s) |
-| C.cs:235:24:235:24 | access to local variable s |
-| C.cs:235:35:235:42 | SSA def(s) |
-| C.cs:237:13:237:13 | access to local variable s |
-| C.cs:240:24:240:31 | SSA def(s) |
-| C.cs:242:13:242:13 | access to local variable s |
-| C.cs:248:15:248:22 | SSA def(a) |
-| C.cs:249:9:249:9 | access to local variable a |
-| C.cs:257:15:257:23 | SSA def(ia) |
-| C.cs:258:18:258:26 | SSA def(sa) |
-| C.cs:260:9:260:10 | access to local variable ia |
-| C.cs:261:20:261:21 | access to local variable sa |
-| C.cs:263:9:263:10 | access to local variable ia |
-| C.cs:264:16:264:17 | access to local variable sa |
-| D.cs:17:17:17:20 | null |
-| D.cs:23:9:23:13 | access to parameter param |
-| D.cs:26:32:26:36 | SSA param(param) |
-| D.cs:32:9:32:13 | access to parameter param |
-| D.cs:58:13:58:41 | SSA def(o5) |
-| D.cs:61:9:62:26 | if (...) ... |
-| D.cs:62:13:62:14 | access to local variable o5 |
-| D.cs:68:13:68:34 | SSA def(o7) |
-| D.cs:69:18:69:36 | ... && ... |
-| D.cs:73:13:73:14 | access to local variable o7 |
-| D.cs:75:13:75:34 | SSA def(o8) |
-| D.cs:76:21:76:43 | ... ? ... : ... |
-| D.cs:76:34:76:35 | 42 |
-| D.cs:79:9:80:26 | if (...) ... |
-| D.cs:81:9:82:26 | if (...) ... |
-| D.cs:82:13:82:14 | access to local variable o8 |
-| D.cs:82:13:82:26 | ...; |
-| D.cs:83:9:84:26 | if (...) ... |
-| D.cs:84:13:84:14 | access to local variable o8 |
-| D.cs:89:15:89:44 | SSA def(xs) |
-| D.cs:91:13:91:14 | access to local variable xs |
-| D.cs:91:13:91:22 | ...; |
-| D.cs:93:9:94:30 | if (...) ... |
-| D.cs:94:13:94:30 | ...; |
-| D.cs:94:21:94:22 | access to local variable xs |
-| D.cs:96:9:99:9 | if (...) ... |
-| D.cs:97:9:99:9 | {...} |
-| D.cs:98:21:98:22 | access to local variable xs |
-| D.cs:101:9:102:35 | if (...) ... |
-| D.cs:102:13:102:35 | foreach (... ... in ...) ... |
-| D.cs:102:26:102:26 | Int32 _ |
-| D.cs:102:31:102:32 | access to local variable xs |
-| D.cs:102:31:102:32 | access to local variable xs |
-| D.cs:104:9:106:30 | if (...) ... |
-| D.cs:105:19:105:20 | access to local variable xs |
-| D.cs:106:17:106:18 | access to local variable xs |
-| D.cs:118:9:118:30 | SSA def(x) |
-| D.cs:120:13:120:13 | access to local variable x |
-| D.cs:125:35:125:35 | SSA param(a) |
-| D.cs:125:35:125:35 | SSA param(a) |
-| D.cs:125:44:125:44 | SSA param(b) |
-| D.cs:127:20:127:43 | ... ? ... : ... |
-| D.cs:127:20:127:43 | ... ? ... : ... |
-| D.cs:127:32:127:32 | 0 |
-| D.cs:127:32:127:32 | 0 |
-| D.cs:127:36:127:36 | access to parameter a |
-| D.cs:128:20:128:43 | ... ? ... : ... |
-| D.cs:128:20:128:43 | ... ? ... : ... |
-| D.cs:128:32:128:32 | 0 |
-| D.cs:128:32:128:32 | 0 |
-| D.cs:128:36:128:36 | access to parameter b |
-| D.cs:131:9:137:9 | {...} |
-| D.cs:131:9:137:9 | {...} |
-| D.cs:132:29:132:29 | access to local variable i |
-| D.cs:132:29:132:29 | access to local variable i |
-| D.cs:133:13:136:13 | {...} |
-| D.cs:133:13:136:13 | {...} |
-| D.cs:134:24:134:24 | access to parameter a |
-| D.cs:135:24:135:24 | access to parameter b |
-| D.cs:138:9:138:18 | ... ...; |
-| D.cs:142:13:142:22 | ...; |
-| D.cs:143:9:146:9 | for (...;...;...) ... |
-| D.cs:143:25:143:25 | access to local variable i |
-| D.cs:144:9:146:9 | {...} |
-| D.cs:145:20:145:20 | access to parameter a |
-| D.cs:149:36:149:38 | SSA param(obj) |
-| D.cs:151:9:151:11 | access to parameter obj |
-| D.cs:163:16:163:25 | SSA def(obj) |
-| D.cs:168:9:170:9 | [exception: Exception] catch (...) {...} |
-| D.cs:168:26:168:26 | [exception: Exception] Exception e |
-| D.cs:171:9:171:11 | access to local variable obj |
-| D.cs:240:9:240:16 | SSA def(o) |
-| D.cs:241:21:241:37 | ... ? ... : ... |
-| D.cs:241:29:241:32 | null |
-| D.cs:241:36:241:37 | "" |
-| D.cs:244:9:247:25 | if (...) ... |
-| D.cs:245:13:245:13 | access to local variable o |
-| D.cs:247:13:247:13 | access to local variable o |
-| D.cs:249:13:249:38 | SSA def(o2) |
-| D.cs:253:13:253:14 | access to local variable o2 |
-| D.cs:258:16:258:23 | SSA def(o) |
-| D.cs:266:9:267:25 | if (...) ... |
-| D.cs:266:13:266:27 | [true] ... is ... |
-| D.cs:267:13:267:13 | access to local variable o |
-| D.cs:269:9:269:16 | SSA def(o) |
-| D.cs:272:25:272:25 | access to local variable i |
-| D.cs:272:39:272:39 | access to local variable i |
-| D.cs:273:9:288:9 | {...} |
-| D.cs:281:13:287:13 | if (...) ... |
-| D.cs:283:17:283:24 | SSA def(o) |
-| D.cs:285:28:285:30 | {...} |
-| D.cs:286:17:286:30 | ...; |
-| D.cs:290:9:291:25 | if (...) ... |
-| D.cs:291:13:291:13 | access to local variable o |
-| D.cs:291:13:291:25 | ...; |
-| D.cs:293:9:294:25 | if (...) ... |
-| D.cs:294:13:294:13 | access to local variable o |
-| D.cs:296:16:296:26 | SSA def(prev) |
-| D.cs:297:25:297:25 | access to local variable i |
-| D.cs:298:9:302:9 | {...} |
-| D.cs:300:17:300:20 | access to local variable prev |
-| D.cs:304:16:304:23 | SSA def(s) |
-| D.cs:307:13:311:13 | foreach (... ... in ...) ... |
-| D.cs:312:13:313:29 | if (...) ... |
-| D.cs:312:17:312:23 | [true] !... |
-| D.cs:313:17:313:17 | access to local variable s |
-| D.cs:316:16:316:23 | SSA def(r) |
-| D.cs:318:16:318:19 | access to local variable stat |
-| D.cs:318:16:318:62 | [false] ... && ... |
-| D.cs:318:41:318:44 | access to local variable stat |
-| D.cs:324:9:324:9 | access to local variable r |
-| D.cs:351:15:351:22 | SSA def(a) |
-| D.cs:355:9:356:21 | for (...;...;...) ... |
-| D.cs:355:25:355:25 | access to local variable i |
-| D.cs:356:13:356:13 | access to local variable a |
-| D.cs:356:13:356:21 | ...; |
-| D.cs:360:20:360:30 | SSA def(last) |
-| D.cs:361:29:361:29 | access to local variable i |
-| D.cs:363:13:363:16 | access to local variable last |
-| D.cs:366:15:366:47 | SSA def(b) |
-| D.cs:367:13:367:56 | [false] ... && ... |
-| D.cs:370:9:373:9 | for (...;...;...) ... |
-| D.cs:370:25:370:25 | access to local variable i |
-| D.cs:371:9:373:9 | {...} |
-| D.cs:372:13:372:13 | access to local variable b |
-| D.cs:378:19:378:28 | SSA def(ioe) |
-| D.cs:382:9:385:27 | if (...) ... |
-| D.cs:385:13:385:15 | access to local variable ioe |
-| D.cs:388:36:388:36 | SSA param(a) |
-| D.cs:388:45:388:45 | SSA param(b) |
-| D.cs:390:20:390:43 | ... ? ... : ... |
-| D.cs:390:20:390:43 | ... ? ... : ... |
-| D.cs:390:32:390:32 | 0 |
-| D.cs:390:32:390:32 | 0 |
-| D.cs:390:36:390:36 | access to parameter a |
-| D.cs:393:21:393:21 | access to local variable i |
-| D.cs:393:21:393:21 | access to local variable i |
-| D.cs:394:9:396:9 | {...} |
-| D.cs:394:9:396:9 | {...} |
-| D.cs:395:20:395:20 | access to parameter a |
-| D.cs:397:9:397:44 | ... ...; |
-| D.cs:397:20:397:43 | ... ? ... : ... |
-| D.cs:397:32:397:32 | 0 |
-| D.cs:398:21:398:21 | access to local variable i |
-| D.cs:399:9:401:9 | {...} |
-| D.cs:400:20:400:20 | access to parameter b |
-| D.cs:405:35:405:35 | SSA param(x) |
-| D.cs:405:35:405:35 | SSA param(x) |
-| D.cs:405:35:405:35 | SSA param(x) |
-| D.cs:405:45:405:45 | SSA param(y) |
-| D.cs:405:45:405:45 | SSA param(y) |
-| D.cs:405:45:405:45 | SSA param(y) |
-| D.cs:407:13:407:64 | [false] ... \|\| ... |
-| D.cs:407:13:407:64 | [false] ... \|\| ... |
-| D.cs:407:14:407:35 | [false] ... && ... |
-| D.cs:407:14:407:35 | [false] ... && ... |
-| D.cs:407:42:407:42 | access to parameter x |
-| D.cs:407:42:407:42 | access to parameter x |
-| D.cs:407:42:407:63 | [false] ... && ... |
-| D.cs:407:42:407:63 | [false] ... && ... |
-| D.cs:407:55:407:55 | access to parameter y |
-| D.cs:407:55:407:55 | access to parameter y |
-| D.cs:409:9:410:25 | if (...) ... |
-| D.cs:409:9:410:25 | if (...) ... |
-| D.cs:410:13:410:13 | access to parameter y |
-| D.cs:411:9:412:25 | if (...) ... |
-| D.cs:412:13:412:13 | access to parameter x |
-| E.cs:9:18:9:26 | SSA def(a2) |
-| E.cs:10:22:10:54 | ... && ... |
-| E.cs:11:16:11:24 | SSA def(a3) |
-| E.cs:12:22:12:52 | ... && ... |
-| E.cs:12:38:12:39 | access to local variable a2 |
-| E.cs:14:13:14:14 | access to local variable a3 |
-| E.cs:23:13:23:30 | SSA def(s1) |
-| E.cs:24:18:24:41 | ... ? ... : ... |
-| E.cs:24:33:24:36 | null |
-| E.cs:26:9:27:26 | if (...) ... |
-| E.cs:27:13:27:14 | access to local variable s1 |
-| E.cs:51:22:51:33 | SSA def(slice) |
-| E.cs:53:16:53:19 | access to local variable iter |
-| E.cs:54:9:63:9 | {...} |
-| E.cs:61:13:61:17 | access to local variable slice |
-| E.cs:61:13:61:27 | ...; |
-| E.cs:66:40:66:42 | SSA param(arr) |
-| E.cs:70:13:70:50 | ...; |
-| E.cs:70:22:70:49 | ... ? ... : ... |
-| E.cs:70:36:70:36 | 0 |
-| E.cs:72:9:73:23 | if (...) ... |
-| E.cs:73:13:73:15 | access to parameter arr |
-| E.cs:107:15:107:25 | SSA def(arr2) |
-| E.cs:111:9:112:30 | for (...;...;...) ... |
-| E.cs:111:25:111:25 | access to local variable i |
-| E.cs:112:13:112:16 | access to local variable arr2 |
-| E.cs:112:13:112:30 | ...; |
-| E.cs:120:16:120:20 | [true] !... |
-| E.cs:120:17:120:20 | access to local variable stop |
-| E.cs:121:9:143:9 | {...} |
-| E.cs:123:20:123:24 | [false] !... |
-| E.cs:123:20:123:24 | [true] !... |
-| E.cs:123:20:123:35 | [false] ... && ... |
-| E.cs:123:20:123:35 | [true] ... && ... |
-| E.cs:123:21:123:24 | access to local variable stop |
-| E.cs:123:29:123:29 | access to local variable j |
-| E.cs:124:13:142:13 | {...} |
-| E.cs:125:33:125:35 | access to local variable obj |
-| E.cs:128:21:128:23 | access to local variable obj |
-| E.cs:137:25:137:34 | SSA def(obj) |
-| E.cs:139:21:139:29 | continue; |
-| E.cs:141:17:141:26 | ...; |
-| E.cs:152:16:152:26 | SSA def(obj2) |
-| E.cs:153:13:153:54 | [false] ... && ... |
-| E.cs:158:9:159:28 | if (...) ... |
-| E.cs:159:13:159:16 | access to local variable obj2 |
-| E.cs:162:28:162:28 | SSA param(a) |
-| E.cs:164:17:164:40 | ... ? ... : ... |
-| E.cs:164:29:164:29 | 0 |
-| E.cs:165:25:165:25 | access to local variable i |
-| E.cs:165:32:165:32 | access to local variable i |
-| E.cs:166:9:170:9 | {...} |
-| E.cs:167:21:167:21 | access to parameter a |
-| E.cs:173:29:173:31 | SSA param(obj) |
-| E.cs:173:29:173:31 | SSA param(obj) |
-| E.cs:175:19:175:42 | ... ? ... : ... |
-| E.cs:175:33:175:37 | false |
-| E.cs:177:9:179:9 | {...} |
-| E.cs:178:13:178:15 | access to parameter obj |
-| E.cs:180:9:183:9 | if (...) ... |
-| E.cs:181:9:183:9 | {...} |
-| E.cs:184:9:187:9 | if (...) ... |
-| E.cs:186:13:186:15 | access to parameter obj |
-| E.cs:190:29:190:29 | SSA param(o) |
-| E.cs:192:17:192:17 | access to parameter o |
-| E.cs:198:13:198:29 | [b (line 196): false] SSA def(o) |
-| E.cs:198:13:198:29 | [b (line 196): true] SSA def(o) |
-| E.cs:201:13:201:13 | access to local variable o |
-| E.cs:203:13:203:13 | access to local variable o |
-| E.cs:206:28:206:28 | SSA param(s) |
-| E.cs:208:13:208:23 | [false] ... is ... |
-| E.cs:210:16:210:16 | access to parameter s |
-| E.cs:217:13:217:20 | [b (line 213): true] SSA def(x) |
-| E.cs:218:9:218:9 | access to local variable x |
-| E.cs:220:13:220:13 | access to local variable x |
-| E.cs:227:13:227:20 | [b (line 223): true] SSA def(x) |
-| E.cs:229:13:229:13 | access to local variable x |
-| E.cs:229:13:229:25 | ...; |
-| E.cs:230:9:230:9 | access to local variable x |
-| E.cs:233:26:233:26 | SSA param(i) |
-| E.cs:235:16:235:16 | access to parameter i |
-| E.cs:238:26:238:26 | SSA param(i) |
-| E.cs:240:21:240:21 | access to parameter i |
-| E.cs:283:13:283:22 | [b (line 279): false] SSA def(o) |
-| E.cs:283:13:283:22 | [b (line 279): true] SSA def(o) |
-| E.cs:285:9:285:9 | access to local variable o |
-| E.cs:285:9:285:9 | access to local variable o |
-| E.cs:301:13:301:27 | SSA def(s) |
-| E.cs:302:9:302:9 | access to local variable s |
-| E.cs:319:29:319:30 | SSA param(s1) |
-| E.cs:321:13:321:30 | [true] ... is ... |
-| E.cs:321:14:321:21 | ... ?? ... |
-| E.cs:321:20:321:21 | access to parameter s2 |
-| E.cs:323:13:323:14 | access to parameter s1 |
-| E.cs:330:13:330:36 | SSA def(x) |
-| E.cs:331:9:331:9 | access to local variable x |
-| E.cs:342:13:342:32 | SSA def(x) |
-| E.cs:343:9:343:9 | access to local variable x |
-| E.cs:348:17:348:36 | SSA def(x) |
-| E.cs:349:9:349:9 | access to local variable x |
-| E.cs:366:28:366:28 | SSA param(s) |
-| E.cs:366:41:366:41 | access to parameter s |
-| E.cs:374:17:374:31 | SSA def(s) |
-| E.cs:375:20:375:20 | access to local variable s |
-| E.cs:380:24:380:25 | SSA param(e1) |
-| E.cs:380:24:380:25 | SSA param(e1) |
-| E.cs:380:24:380:25 | SSA param(e1) |
-| E.cs:380:30:380:31 | SSA param(e2) |
-| E.cs:380:30:380:31 | SSA param(e2) |
-| E.cs:380:30:380:31 | SSA param(e2) |
-| E.cs:382:13:382:68 | [false] ... \|\| ... |
-| E.cs:382:13:382:68 | [false] ... \|\| ... |
-| E.cs:382:14:382:37 | [false] ... && ... |
-| E.cs:382:14:382:37 | [false] ... && ... |
-| E.cs:382:28:382:29 | access to parameter e2 |
-| E.cs:382:28:382:29 | access to parameter e2 |
-| E.cs:382:44:382:45 | access to parameter e1 |
-| E.cs:382:44:382:45 | access to parameter e1 |
-| E.cs:382:44:382:67 | [false] ... && ... |
-| E.cs:382:44:382:67 | [false] ... && ... |
-| E.cs:384:9:385:24 | if (...) ... |
-| E.cs:384:9:385:24 | if (...) ... |
-| E.cs:384:13:384:36 | [false] ... && ... |
-| E.cs:384:13:384:36 | [false] ... && ... |
-| E.cs:384:27:384:28 | access to parameter e2 |
-| E.cs:386:16:386:17 | access to parameter e1 |
-| E.cs:386:27:386:28 | access to parameter e2 |
-| E.cs:404:9:404:18 | SSA def(i) |
-| E.cs:404:9:404:18 | SSA def(i) |
-| E.cs:405:16:405:16 | access to local variable i |
-| E.cs:417:24:417:40 | SSA capture def(i) |
-| E.cs:417:34:417:34 | access to parameter i |
-| E.cs:423:28:423:44 | SSA capture def(i) |
-| E.cs:423:38:423:38 | access to parameter i |
-| E.cs:430:29:430:45 | SSA capture def(i) |
-| E.cs:430:39:430:39 | access to parameter i |
-| E.cs:435:29:435:29 | SSA param(s) |
-| E.cs:437:13:437:21 | [true] ... is ... |
-| E.cs:439:13:439:13 | access to parameter s |
-| Forwarding.cs:7:16:7:23 | SSA def(s) |
-| Forwarding.cs:9:13:9:30 | [false] !... |
-| Forwarding.cs:14:9:17:9 | if (...) ... |
-| Forwarding.cs:19:9:22:9 | if (...) ... |
-| Forwarding.cs:19:13:19:23 | [false] !... |
-| Forwarding.cs:24:9:27:9 | if (...) ... |
-| Forwarding.cs:29:9:32:9 | if (...) ... |
-| Forwarding.cs:34:9:37:9 | if (...) ... |
-| Forwarding.cs:35:9:37:9 | {...} |
-| Forwarding.cs:36:31:36:31 | access to local variable s |
-| Forwarding.cs:40:27:40:27 | access to local variable s |
-| GuardedString.cs:7:16:7:32 | SSA def(s) |
-| GuardedString.cs:9:13:9:36 | [false] !... |
-| GuardedString.cs:14:9:17:9 | if (...) ... |
-| GuardedString.cs:14:13:14:41 | [false] !... |
-| GuardedString.cs:19:9:20:40 | if (...) ... |
-| GuardedString.cs:19:26:19:26 | 0 |
-| GuardedString.cs:22:9:23:40 | if (...) ... |
-| GuardedString.cs:22:25:22:25 | 0 |
-| GuardedString.cs:25:9:26:40 | if (...) ... |
-| GuardedString.cs:25:26:25:26 | 0 |
-| GuardedString.cs:28:9:29:40 | if (...) ... |
-| GuardedString.cs:28:25:28:26 | 10 |
-| GuardedString.cs:31:9:32:40 | if (...) ... |
-| GuardedString.cs:31:26:31:27 | 10 |
-| GuardedString.cs:34:9:37:40 | if (...) ... |
-| GuardedString.cs:34:26:34:26 | 0 |
-| GuardedString.cs:35:31:35:31 | access to local variable s |
-| NullAlwaysBad.cs:7:29:7:29 | SSA param(s) |
-| NullAlwaysBad.cs:9:30:9:30 | access to parameter s |
-| NullMaybeBad.cs:7:27:7:27 | access to parameter o |
-| NullMaybeBad.cs:13:17:13:20 | null |
-| Params.cs:14:17:14:20 | access to parameter args |
-| Params.cs:20:12:20:15 | null |
-| StringConcatenation.cs:14:16:14:23 | SSA def(s) |
-| StringConcatenation.cs:15:16:15:16 | access to local variable s |
-| StringConcatenation.cs:16:17:16:17 | access to local variable s |
+#select
+| C.cs:64:9:64:10 | access to local variable o1 | C.cs:62:13:62:46 | SSA def(o1) | C.cs:64:9:64:10 | access to local variable o1 | Variable $@ may be null at this access because of $@ assignment. | C.cs:62:13:62:14 | o1 | o1 | C.cs:62:13:62:46 | Object o1 = ... | this |
+| C.cs:68:9:68:10 | access to local variable o2 | C.cs:66:13:66:46 | SSA def(o2) | C.cs:68:9:68:10 | access to local variable o2 | Variable $@ may be null at this access because of $@ assignment. | C.cs:66:13:66:14 | o2 | o2 | C.cs:66:13:66:46 | Object o2 = ... | this |
+| C.cs:95:15:95:15 | access to local variable o | C.cs:94:13:94:45 | SSA def(o) | C.cs:95:15:95:15 | access to local variable o | Variable $@ may be null at this access because of $@ assignment. | C.cs:94:13:94:13 | o | o | C.cs:94:13:94:45 | Object o = ... | this |
+| C.cs:103:27:103:30 | access to parameter list | C.cs:102:13:102:23 | SSA def(list) | C.cs:103:27:103:30 | access to parameter list | Variable $@ may be null at this access because of $@ assignment. | C.cs:99:42:99:45 | list | list | C.cs:102:13:102:23 | ... = ... | this |
+| C.cs:177:13:177:13 | access to local variable s | C.cs:178:13:178:20 | SSA def(s) | C.cs:177:13:177:13 | access to local variable s | Variable $@ may be null at this access because of $@ assignment. | C.cs:151:13:151:13 | s | s | C.cs:178:13:178:20 | ... = ... | this |
+| C.cs:203:13:203:13 | access to local variable s | C.cs:204:13:204:20 | SSA def(s) | C.cs:203:13:203:13 | access to local variable s | Variable $@ may be null at this access because of $@ assignment. | C.cs:185:13:185:13 | s | s | C.cs:204:13:204:20 | ... = ... | this |
+| C.cs:223:9:223:9 | access to local variable s | C.cs:222:13:222:20 | SSA def(s) | C.cs:223:9:223:9 | access to local variable s | Variable $@ may be null at this access because of $@ assignment. | C.cs:210:13:210:13 | s | s | C.cs:222:13:222:20 | ... = ... | this |
+| C.cs:242:13:242:13 | access to local variable s | C.cs:240:24:240:31 | SSA def(s) | C.cs:242:13:242:13 | access to local variable s | Variable $@ may be null at this access because of $@ assignment. | C.cs:228:16:228:16 | s | s | C.cs:240:24:240:31 | ... = ... | this |
+| D.cs:23:9:23:13 | access to parameter param | D.cs:17:17:17:20 | null | D.cs:23:9:23:13 | access to parameter param | Variable $@ may be null at this access because of $@ null argument. | D.cs:21:32:21:36 | param | param | D.cs:17:17:17:20 | null | this |
+| D.cs:32:9:32:13 | access to parameter param | D.cs:26:32:26:36 | SSA param(param) | D.cs:32:9:32:13 | access to parameter param | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:26:32:26:36 | param | param | D.cs:28:13:28:25 | ... != ... | this |
+| D.cs:62:13:62:14 | access to local variable o5 | D.cs:58:13:58:41 | SSA def(o5) | D.cs:62:13:62:14 | access to local variable o5 | Variable $@ may be null at this access because of $@ assignment. | D.cs:58:13:58:14 | o5 | o5 | D.cs:58:13:58:41 | String o5 = ... | this |
+| D.cs:73:13:73:14 | access to local variable o7 | D.cs:68:13:68:34 | SSA def(o7) | D.cs:73:13:73:14 | access to local variable o7 | Variable $@ may be null at this access because of $@ assignment. | D.cs:68:13:68:14 | o7 | o7 | D.cs:68:13:68:34 | String o7 = ... | this |
+| D.cs:82:13:82:14 | access to local variable o8 | D.cs:75:13:75:34 | SSA def(o8) | D.cs:82:13:82:14 | access to local variable o8 | Variable $@ may be null at this access because of $@ assignment. | D.cs:75:13:75:14 | o8 | o8 | D.cs:75:13:75:34 | String o8 = ... | this |
+| D.cs:84:13:84:14 | access to local variable o8 | D.cs:75:13:75:34 | SSA def(o8) | D.cs:84:13:84:14 | access to local variable o8 | Variable $@ may be null at this access because of $@ assignment. | D.cs:75:13:75:14 | o8 | o8 | D.cs:75:13:75:34 | String o8 = ... | this |
+| D.cs:91:13:91:14 | access to local variable xs | D.cs:89:15:89:44 | SSA def(xs) | D.cs:91:13:91:14 | access to local variable xs | Variable $@ may be null at this access because of $@ assignment. | D.cs:89:15:89:16 | xs | xs | D.cs:89:15:89:44 | Int32[] xs = ... | this |
+| D.cs:94:21:94:22 | access to local variable xs | D.cs:89:15:89:44 | SSA def(xs) | D.cs:94:21:94:22 | access to local variable xs | Variable $@ may be null at this access because of $@ assignment. | D.cs:89:15:89:16 | xs | xs | D.cs:89:15:89:44 | Int32[] xs = ... | this |
+| D.cs:98:21:98:22 | access to local variable xs | D.cs:89:15:89:44 | SSA def(xs) | D.cs:98:21:98:22 | access to local variable xs | Variable $@ may be null at this access because of $@ assignment. | D.cs:89:15:89:16 | xs | xs | D.cs:89:15:89:44 | Int32[] xs = ... | this |
+| D.cs:102:31:102:32 | access to local variable xs | D.cs:89:15:89:44 | SSA def(xs) | D.cs:102:31:102:32 | access to local variable xs | Variable $@ may be null at this access because of $@ assignment. | D.cs:89:15:89:16 | xs | xs | D.cs:89:15:89:44 | Int32[] xs = ... | this |
+| D.cs:105:19:105:20 | access to local variable xs | D.cs:89:15:89:44 | SSA def(xs) | D.cs:105:19:105:20 | access to local variable xs | Variable $@ may be null at this access because of $@ assignment. | D.cs:89:15:89:16 | xs | xs | D.cs:89:15:89:44 | Int32[] xs = ... | this |
+| D.cs:134:24:134:24 | access to parameter a | D.cs:125:35:125:35 | SSA param(a) | D.cs:134:24:134:24 | access to parameter a | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:125:35:125:35 | a | a | D.cs:127:20:127:28 | ... == ... | this |
+| D.cs:134:24:134:24 | access to parameter a | D.cs:125:35:125:35 | SSA param(a) | D.cs:134:24:134:24 | access to parameter a | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:125:35:125:35 | a | a | D.cs:139:13:139:21 | ... != ... | this |
+| D.cs:135:24:135:24 | access to parameter b | D.cs:125:44:125:44 | SSA param(b) | D.cs:135:24:135:24 | access to parameter b | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:125:44:125:44 | b | b | D.cs:128:20:128:28 | ... == ... | this |
+| D.cs:145:20:145:20 | access to parameter a | D.cs:125:35:125:35 | SSA param(a) | D.cs:145:20:145:20 | access to parameter a | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:125:35:125:35 | a | a | D.cs:127:20:127:28 | ... == ... | this |
+| D.cs:145:20:145:20 | access to parameter a | D.cs:125:35:125:35 | SSA param(a) | D.cs:145:20:145:20 | access to parameter a | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:125:35:125:35 | a | a | D.cs:139:13:139:21 | ... != ... | this |
+| D.cs:151:9:151:11 | access to parameter obj | D.cs:149:36:149:38 | SSA param(obj) | D.cs:151:9:151:11 | access to parameter obj | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:149:36:149:38 | obj | obj | D.cs:152:17:152:27 | ... != ... | this |
+| D.cs:171:9:171:11 | access to local variable obj | D.cs:163:16:163:25 | SSA def(obj) | D.cs:171:9:171:11 | access to local variable obj | Variable $@ may be null at this access because of $@ assignment. | D.cs:163:16:163:18 | obj | obj | D.cs:163:16:163:25 | Object obj = ... | this |
+| D.cs:245:13:245:13 | access to local variable o | D.cs:240:9:240:16 | SSA def(o) | D.cs:245:13:245:13 | access to local variable o | Variable $@ may be null at this access because of $@ assignment. | D.cs:228:16:228:16 | o | o | D.cs:240:9:240:16 | ... = ... | this |
+| D.cs:247:13:247:13 | access to local variable o | D.cs:240:9:240:16 | SSA def(o) | D.cs:247:13:247:13 | access to local variable o | Variable $@ may be null at this access because of $@ assignment. | D.cs:228:16:228:16 | o | o | D.cs:240:9:240:16 | ... = ... | this |
+| D.cs:253:13:253:14 | access to local variable o2 | D.cs:249:13:249:38 | SSA def(o2) | D.cs:253:13:253:14 | access to local variable o2 | Variable $@ may be null at this access because of $@ assignment. | D.cs:249:13:249:14 | o2 | o2 | D.cs:249:13:249:38 | String o2 = ... | this |
+| D.cs:267:13:267:13 | access to local variable o | D.cs:258:16:258:23 | SSA def(o) | D.cs:267:13:267:13 | access to local variable o | Variable $@ may be null at this access because of $@ assignment. | D.cs:258:16:258:16 | o | o | D.cs:258:16:258:23 | Object o = ... | this |
+| D.cs:291:13:291:13 | access to local variable o | D.cs:269:9:269:16 | SSA def(o) | D.cs:291:13:291:13 | access to local variable o | Variable $@ may be null at this access because of $@ assignment. | D.cs:258:16:258:16 | o | o | D.cs:269:9:269:16 | ... = ... | this |
+| D.cs:291:13:291:13 | access to local variable o | D.cs:283:17:283:24 | SSA def(o) | D.cs:291:13:291:13 | access to local variable o | Variable $@ may be null at this access because of $@ assignment. | D.cs:258:16:258:16 | o | o | D.cs:283:17:283:24 | ... = ... | this |
+| D.cs:294:13:294:13 | access to local variable o | D.cs:269:9:269:16 | SSA def(o) | D.cs:294:13:294:13 | access to local variable o | Variable $@ may be null at this access because of $@ assignment. | D.cs:258:16:258:16 | o | o | D.cs:269:9:269:16 | ... = ... | this |
+| D.cs:294:13:294:13 | access to local variable o | D.cs:283:17:283:24 | SSA def(o) | D.cs:294:13:294:13 | access to local variable o | Variable $@ may be null at this access because of $@ assignment. | D.cs:258:16:258:16 | o | o | D.cs:283:17:283:24 | ... = ... | this |
+| D.cs:300:17:300:20 | access to local variable prev | D.cs:296:16:296:26 | SSA def(prev) | D.cs:300:17:300:20 | access to local variable prev | Variable $@ may be null at this access because of $@ assignment. | D.cs:296:16:296:19 | prev | prev | D.cs:296:16:296:26 | Object prev = ... | this |
+| D.cs:313:17:313:17 | access to local variable s | D.cs:304:16:304:23 | SSA def(s) | D.cs:313:17:313:17 | access to local variable s | Variable $@ may be null at this access because of $@ assignment. | D.cs:304:16:304:16 | s | s | D.cs:304:16:304:23 | String s = ... | this |
+| D.cs:324:9:324:9 | access to local variable r | D.cs:316:16:316:23 | SSA def(r) | D.cs:324:9:324:9 | access to local variable r | Variable $@ may be null at this access because of $@ assignment. | D.cs:316:16:316:16 | r | r | D.cs:316:16:316:23 | Object r = ... | this |
+| D.cs:356:13:356:13 | access to local variable a | D.cs:351:15:351:22 | SSA def(a) | D.cs:356:13:356:13 | access to local variable a | Variable $@ may be null at this access because of $@ assignment. | D.cs:351:15:351:15 | a | a | D.cs:351:15:351:22 | Int32[] a = ... | this |
+| D.cs:363:13:363:16 | access to local variable last | D.cs:360:20:360:30 | SSA def(last) | D.cs:363:13:363:16 | access to local variable last | Variable $@ may be null at this access because of $@ assignment. | D.cs:360:20:360:23 | last | last | D.cs:360:20:360:30 | String last = ... | this |
+| D.cs:372:13:372:13 | access to local variable b | D.cs:366:15:366:47 | SSA def(b) | D.cs:372:13:372:13 | access to local variable b | Variable $@ may be null at this access because of $@ assignment. | D.cs:366:15:366:15 | b | b | D.cs:366:15:366:47 | Int32[] b = ... | this |
+| D.cs:395:20:395:20 | access to parameter a | D.cs:388:36:388:36 | SSA param(a) | D.cs:395:20:395:20 | access to parameter a | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:388:36:388:36 | a | a | D.cs:390:20:390:28 | ... == ... | this |
+| D.cs:400:20:400:20 | access to parameter b | D.cs:388:45:388:45 | SSA param(b) | D.cs:400:20:400:20 | access to parameter b | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:388:45:388:45 | b | b | D.cs:397:20:397:28 | ... == ... | this |
+| D.cs:410:13:410:13 | access to parameter y | D.cs:405:45:405:45 | SSA param(y) | D.cs:410:13:410:13 | access to parameter y | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:405:45:405:45 | y | y | D.cs:407:27:407:35 | ... == ... | this |
+| D.cs:410:13:410:13 | access to parameter y | D.cs:405:45:405:45 | SSA param(y) | D.cs:410:13:410:13 | access to parameter y | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:405:45:405:45 | y | y | D.cs:407:55:407:63 | ... != ... | this |
+| D.cs:410:13:410:13 | access to parameter y | D.cs:405:45:405:45 | SSA param(y) | D.cs:410:13:410:13 | access to parameter y | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:405:45:405:45 | y | y | D.cs:411:13:411:21 | ... != ... | this |
+| D.cs:412:13:412:13 | access to parameter x | D.cs:405:35:405:35 | SSA param(x) | D.cs:412:13:412:13 | access to parameter x | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:405:35:405:35 | x | x | D.cs:407:14:407:22 | ... != ... | this |
+| D.cs:412:13:412:13 | access to parameter x | D.cs:405:35:405:35 | SSA param(x) | D.cs:412:13:412:13 | access to parameter x | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:405:35:405:35 | x | x | D.cs:407:42:407:50 | ... == ... | this |
+| D.cs:412:13:412:13 | access to parameter x | D.cs:405:35:405:35 | SSA param(x) | D.cs:412:13:412:13 | access to parameter x | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:405:35:405:35 | x | x | D.cs:409:13:409:21 | ... != ... | this |
+| E.cs:12:38:12:39 | access to local variable a2 | E.cs:9:18:9:26 | SSA def(a2) | E.cs:12:38:12:39 | access to local variable a2 | Variable $@ may be null at this access because of $@ assignment. | E.cs:9:18:9:19 | a2 | a2 | E.cs:9:18:9:26 | Int64[][] a2 = ... | this |
+| E.cs:14:13:14:14 | access to local variable a3 | E.cs:11:16:11:24 | SSA def(a3) | E.cs:14:13:14:14 | access to local variable a3 | Variable $@ may be null at this access because of $@ assignment. | E.cs:11:16:11:17 | a3 | a3 | E.cs:11:16:11:24 | Int64[] a3 = ... | this |
+| E.cs:27:13:27:14 | access to local variable s1 | E.cs:23:13:23:30 | SSA def(s1) | E.cs:27:13:27:14 | access to local variable s1 | Variable $@ may be null at this access because of $@ assignment. | E.cs:19:13:19:14 | s1 | s1 | E.cs:23:13:23:30 | ... = ... | this |
+| E.cs:61:13:61:17 | access to local variable slice | E.cs:51:22:51:33 | SSA def(slice) | E.cs:61:13:61:17 | access to local variable slice | Variable $@ may be null at this access because of $@ assignment. | E.cs:51:22:51:26 | slice | slice | E.cs:51:22:51:33 | List slice = ... | this |
+| E.cs:73:13:73:15 | access to parameter arr | E.cs:66:40:66:42 | SSA param(arr) | E.cs:73:13:73:15 | access to parameter arr | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:66:40:66:42 | arr | arr | E.cs:70:22:70:32 | ... == ... | this |
+| E.cs:112:13:112:16 | access to local variable arr2 | E.cs:107:15:107:25 | SSA def(arr2) | E.cs:112:13:112:16 | access to local variable arr2 | Variable $@ may be null at this access because of $@ assignment. | E.cs:107:15:107:18 | arr2 | arr2 | E.cs:107:15:107:25 | Int32[] arr2 = ... | this |
+| E.cs:125:33:125:35 | access to local variable obj | E.cs:137:25:137:34 | SSA def(obj) | E.cs:125:33:125:35 | access to local variable obj | Variable $@ may be null at this access because of $@ assignment. | E.cs:119:13:119:15 | obj | obj | E.cs:137:25:137:34 | ... = ... | this |
+| E.cs:159:13:159:16 | access to local variable obj2 | E.cs:152:16:152:26 | SSA def(obj2) | E.cs:159:13:159:16 | access to local variable obj2 | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:152:16:152:19 | obj2 | obj2 | E.cs:153:13:153:24 | ... != ... | this |
+| E.cs:167:21:167:21 | access to parameter a | E.cs:162:28:162:28 | SSA param(a) | E.cs:167:21:167:21 | access to parameter a | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:162:28:162:28 | a | a | E.cs:164:17:164:25 | ... == ... | this |
+| E.cs:178:13:178:15 | access to parameter obj | E.cs:173:29:173:31 | SSA param(obj) | E.cs:178:13:178:15 | access to parameter obj | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:173:29:173:31 | obj | obj | E.cs:175:19:175:29 | ... == ... | this |
+| E.cs:178:13:178:15 | access to parameter obj | E.cs:173:29:173:31 | SSA param(obj) | E.cs:178:13:178:15 | access to parameter obj | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:173:29:173:31 | obj | obj | E.cs:180:13:180:23 | ... == ... | this |
+| E.cs:186:13:186:15 | access to parameter obj | E.cs:173:29:173:31 | SSA param(obj) | E.cs:186:13:186:15 | access to parameter obj | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:173:29:173:31 | obj | obj | E.cs:175:19:175:29 | ... == ... | this |
+| E.cs:186:13:186:15 | access to parameter obj | E.cs:173:29:173:31 | SSA param(obj) | E.cs:186:13:186:15 | access to parameter obj | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:173:29:173:31 | obj | obj | E.cs:180:13:180:23 | ... == ... | this |
+| E.cs:192:17:192:17 | access to parameter o | E.cs:190:29:190:29 | SSA param(o) | E.cs:192:17:192:17 | access to parameter o | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:190:29:190:29 | o | o | E.cs:193:17:193:17 | access to parameter o | this |
+| E.cs:201:13:201:13 | access to local variable o | E.cs:198:13:198:29 | [b (line 196): true] SSA def(o) | E.cs:201:13:201:13 | access to local variable o | Variable $@ may be null at this access because of $@ assignment. | E.cs:198:13:198:13 | o | o | E.cs:198:13:198:29 | String o = ... | this |
+| E.cs:203:13:203:13 | access to local variable o | E.cs:198:13:198:29 | [b (line 196): false] SSA def(o) | E.cs:203:13:203:13 | access to local variable o | Variable $@ may be null at this access because of $@ assignment. | E.cs:198:13:198:13 | o | o | E.cs:198:13:198:29 | String o = ... | this |
+| E.cs:218:9:218:9 | access to local variable x | E.cs:217:13:217:20 | [b (line 213): true] SSA def(x) | E.cs:218:9:218:9 | access to local variable x | Variable $@ may be null at this access because of $@ assignment. | E.cs:215:13:215:13 | x | x | E.cs:217:13:217:20 | ... = ... | this |
+| E.cs:230:9:230:9 | access to local variable x | E.cs:227:13:227:20 | [b (line 223): true] SSA def(x) | E.cs:230:9:230:9 | access to local variable x | Variable $@ may be null at this access because of $@ assignment. | E.cs:225:13:225:13 | x | x | E.cs:227:13:227:20 | ... = ... | this |
+| E.cs:235:16:235:16 | access to parameter i | E.cs:233:26:233:26 | SSA param(i) | E.cs:235:16:235:16 | access to parameter i | Variable $@ may be null at this access because it has a nullable type. | E.cs:233:26:233:26 | i | i | E.cs:233:26:233:26 | i | this |
+| E.cs:240:21:240:21 | access to parameter i | E.cs:238:26:238:26 | SSA param(i) | E.cs:240:21:240:21 | access to parameter i | Variable $@ may be null at this access because it has a nullable type. | E.cs:238:26:238:26 | i | i | E.cs:238:26:238:26 | i | this |
+| E.cs:285:9:285:9 | access to local variable o | E.cs:283:13:283:22 | [b (line 279): false] SSA def(o) | E.cs:285:9:285:9 | access to local variable o | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:283:13:283:13 | o | o | E.cs:284:9:284:9 | access to local variable o | this |
+| E.cs:285:9:285:9 | access to local variable o | E.cs:283:13:283:22 | [b (line 279): true] SSA def(o) | E.cs:285:9:285:9 | access to local variable o | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:283:13:283:13 | o | o | E.cs:284:9:284:9 | access to local variable o | this |
+| E.cs:302:9:302:9 | access to local variable s | E.cs:301:13:301:27 | SSA def(s) | E.cs:302:9:302:9 | access to local variable s | Variable $@ may be null at this access because of $@ assignment. | E.cs:301:13:301:13 | s | s | E.cs:301:13:301:27 | String s = ... | this |
+| E.cs:343:9:343:9 | access to local variable x | E.cs:342:13:342:32 | SSA def(x) | E.cs:343:9:343:9 | access to local variable x | Variable $@ may be null at this access because of $@ assignment. | E.cs:342:13:342:13 | x | x | E.cs:342:13:342:32 | String x = ... | this |
+| E.cs:349:9:349:9 | access to local variable x | E.cs:348:17:348:36 | SSA def(x) | E.cs:349:9:349:9 | access to local variable x | Variable $@ may be null at this access because of $@ assignment. | E.cs:348:17:348:17 | x | x | E.cs:348:17:348:36 | dynamic x = ... | this |
+| E.cs:366:41:366:41 | access to parameter s | E.cs:366:28:366:28 | SSA param(s) | E.cs:366:41:366:41 | access to parameter s | Variable $@ may be null at this access because the parameter has a null default value. | E.cs:366:28:366:28 | s | s | E.cs:366:32:366:35 | null | this |
+| E.cs:375:20:375:20 | access to local variable s | E.cs:374:17:374:31 | SSA def(s) | E.cs:375:20:375:20 | access to local variable s | Variable $@ may be null at this access because of $@ assignment. | E.cs:374:17:374:17 | s | s | E.cs:374:17:374:31 | String s = ... | this |
+| E.cs:386:16:386:17 | access to parameter e1 | E.cs:380:24:380:25 | SSA param(e1) | E.cs:386:16:386:17 | access to parameter e1 | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:380:24:380:25 | e1 | e1 | E.cs:382:14:382:23 | ... == ... | this |
+| E.cs:386:16:386:17 | access to parameter e1 | E.cs:380:24:380:25 | SSA param(e1) | E.cs:386:16:386:17 | access to parameter e1 | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:380:24:380:25 | e1 | e1 | E.cs:382:44:382:53 | ... != ... | this |
+| E.cs:386:16:386:17 | access to parameter e1 | E.cs:380:24:380:25 | SSA param(e1) | E.cs:386:16:386:17 | access to parameter e1 | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:380:24:380:25 | e1 | e1 | E.cs:384:13:384:22 | ... == ... | this |
+| E.cs:386:27:386:28 | access to parameter e2 | E.cs:380:30:380:31 | SSA param(e2) | E.cs:386:27:386:28 | access to parameter e2 | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:380:30:380:31 | e2 | e2 | E.cs:382:28:382:37 | ... != ... | this |
+| E.cs:386:27:386:28 | access to parameter e2 | E.cs:380:30:380:31 | SSA param(e2) | E.cs:386:27:386:28 | access to parameter e2 | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:380:30:380:31 | e2 | e2 | E.cs:382:58:382:67 | ... == ... | this |
+| E.cs:386:27:386:28 | access to parameter e2 | E.cs:380:30:380:31 | SSA param(e2) | E.cs:386:27:386:28 | access to parameter e2 | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:380:30:380:31 | e2 | e2 | E.cs:384:27:384:36 | ... == ... | this |
+| E.cs:417:34:417:34 | access to parameter i | E.cs:417:24:417:40 | SSA capture def(i) | E.cs:417:34:417:34 | access to parameter i | Variable $@ may be null at this access because it has a nullable type. | E.cs:415:27:415:27 | i | i | E.cs:415:27:415:27 | i | this |
+| E.cs:423:38:423:38 | access to parameter i | E.cs:423:28:423:44 | SSA capture def(i) | E.cs:423:38:423:38 | access to parameter i | Variable $@ may be null at this access because it has a nullable type. | E.cs:420:27:420:27 | i | i | E.cs:420:27:420:27 | i | this |
+| E.cs:430:39:430:39 | access to parameter i | E.cs:430:29:430:45 | SSA capture def(i) | E.cs:430:39:430:39 | access to parameter i | Variable $@ may be null at this access because it has a nullable type. | E.cs:427:27:427:27 | i | i | E.cs:427:27:427:27 | i | this |
+| GuardedString.cs:35:31:35:31 | access to local variable s | GuardedString.cs:7:16:7:32 | SSA def(s) | GuardedString.cs:35:31:35:31 | access to local variable s | Variable $@ may be null at this access because of $@ assignment. | GuardedString.cs:7:16:7:16 | s | s | GuardedString.cs:7:16:7:32 | String s = ... | this |
+| NullMaybeBad.cs:7:27:7:27 | access to parameter o | NullMaybeBad.cs:13:17:13:20 | null | NullMaybeBad.cs:7:27:7:27 | access to parameter o | Variable $@ may be null at this access because of $@ null argument. | NullMaybeBad.cs:5:25:5:25 | o | o | NullMaybeBad.cs:13:17:13:20 | null | this |
+| Params.cs:14:17:14:20 | access to parameter args | Params.cs:20:12:20:15 | null | Params.cs:14:17:14:20 | access to parameter args | Variable $@ may be null at this access because of $@ null argument. | Params.cs:12:36:12:39 | args | args | Params.cs:20:12:20:15 | null | this |
+| StringConcatenation.cs:16:17:16:17 | access to local variable s | StringConcatenation.cs:14:16:14:23 | SSA def(s) | StringConcatenation.cs:16:17:16:17 | access to local variable s | Variable $@ may be null at this access because of $@ assignment. | StringConcatenation.cs:14:16:14:16 | s | s | StringConcatenation.cs:14:16:14:23 | String s = ... | this |
edges
| A.cs:7:16:7:40 | SSA def(synchronizedAlways) | A.cs:8:15:8:32 | access to local variable synchronizedAlways |
| A.cs:7:16:7:40 | SSA def(synchronizedAlways) | A.cs:10:13:10:30 | access to local variable synchronizedAlways |
@@ -784,150 +419,518 @@ edges
| E.cs:380:24:380:25 | SSA param(e1) | E.cs:382:28:382:29 | access to parameter e2 |
| E.cs:380:24:380:25 | SSA param(e1) | E.cs:382:28:382:29 | access to parameter e2 |
| E.cs:380:30:380:31 | SSA param(e2) | E.cs:382:14:382:37 | [false] ... && ... |
-| E.cs:380:30:380:31 | SSA param(e2) | E.cs:382:14:382:37 | [false] ... && ... |
-| E.cs:380:30:380:31 | SSA param(e2) | E.cs:382:14:382:37 | [false] ... && ... |
-| E.cs:380:30:380:31 | SSA param(e2) | E.cs:382:28:382:29 | access to parameter e2 |
-| E.cs:380:30:380:31 | SSA param(e2) | E.cs:382:28:382:29 | access to parameter e2 |
-| E.cs:380:30:380:31 | SSA param(e2) | E.cs:382:28:382:29 | access to parameter e2 |
-| E.cs:382:13:382:68 | [false] ... \|\| ... | E.cs:384:9:385:24 | if (...) ... |
-| E.cs:382:13:382:68 | [false] ... \|\| ... | E.cs:384:9:385:24 | if (...) ... |
-| E.cs:382:14:382:37 | [false] ... && ... | E.cs:382:44:382:45 | access to parameter e1 |
-| E.cs:382:14:382:37 | [false] ... && ... | E.cs:382:44:382:45 | access to parameter e1 |
-| E.cs:382:28:382:29 | access to parameter e2 | E.cs:382:14:382:37 | [false] ... && ... |
-| E.cs:382:28:382:29 | access to parameter e2 | E.cs:382:14:382:37 | [false] ... && ... |
-| E.cs:382:44:382:45 | access to parameter e1 | E.cs:382:44:382:67 | [false] ... && ... |
-| E.cs:382:44:382:45 | access to parameter e1 | E.cs:382:44:382:67 | [false] ... && ... |
-| E.cs:382:44:382:67 | [false] ... && ... | E.cs:382:13:382:68 | [false] ... \|\| ... |
-| E.cs:382:44:382:67 | [false] ... && ... | E.cs:382:13:382:68 | [false] ... \|\| ... |
-| E.cs:384:9:385:24 | if (...) ... | E.cs:384:13:384:36 | [false] ... && ... |
-| E.cs:384:9:385:24 | if (...) ... | E.cs:384:27:384:28 | access to parameter e2 |
-| E.cs:384:13:384:36 | [false] ... && ... | E.cs:386:16:386:17 | access to parameter e1 |
-| E.cs:384:13:384:36 | [false] ... && ... | E.cs:386:27:386:28 | access to parameter e2 |
-| E.cs:384:27:384:28 | access to parameter e2 | E.cs:384:13:384:36 | [false] ... && ... |
-| E.cs:404:9:404:18 | SSA def(i) | E.cs:405:16:405:16 | access to local variable i |
-| E.cs:404:9:404:18 | SSA def(i) | E.cs:405:16:405:16 | access to local variable i |
-| E.cs:417:24:417:40 | SSA capture def(i) | E.cs:417:34:417:34 | access to parameter i |
-| E.cs:423:28:423:44 | SSA capture def(i) | E.cs:423:38:423:38 | access to parameter i |
-| E.cs:430:29:430:45 | SSA capture def(i) | E.cs:430:39:430:39 | access to parameter i |
-| E.cs:435:29:435:29 | SSA param(s) | E.cs:437:13:437:21 | [true] ... is ... |
-| E.cs:437:13:437:21 | [true] ... is ... | E.cs:439:13:439:13 | access to parameter s |
-| Forwarding.cs:7:16:7:23 | SSA def(s) | Forwarding.cs:9:13:9:30 | [false] !... |
-| Forwarding.cs:9:13:9:30 | [false] !... | Forwarding.cs:14:9:17:9 | if (...) ... |
-| Forwarding.cs:14:9:17:9 | if (...) ... | Forwarding.cs:19:9:22:9 | if (...) ... |
-| Forwarding.cs:19:9:22:9 | if (...) ... | Forwarding.cs:19:13:19:23 | [false] !... |
-| Forwarding.cs:19:13:19:23 | [false] !... | Forwarding.cs:24:9:27:9 | if (...) ... |
-| Forwarding.cs:24:9:27:9 | if (...) ... | Forwarding.cs:29:9:32:9 | if (...) ... |
-| Forwarding.cs:29:9:32:9 | if (...) ... | Forwarding.cs:34:9:37:9 | if (...) ... |
-| Forwarding.cs:34:9:37:9 | if (...) ... | Forwarding.cs:35:9:37:9 | {...} |
-| Forwarding.cs:34:9:37:9 | if (...) ... | Forwarding.cs:36:31:36:31 | access to local variable s |
-| Forwarding.cs:35:9:37:9 | {...} | Forwarding.cs:40:27:40:27 | access to local variable s |
-| GuardedString.cs:7:16:7:32 | SSA def(s) | GuardedString.cs:9:13:9:36 | [false] !... |
-| GuardedString.cs:9:13:9:36 | [false] !... | GuardedString.cs:14:9:17:9 | if (...) ... |
-| GuardedString.cs:14:9:17:9 | if (...) ... | GuardedString.cs:14:13:14:41 | [false] !... |
-| GuardedString.cs:14:13:14:41 | [false] !... | GuardedString.cs:19:9:20:40 | if (...) ... |
-| GuardedString.cs:19:9:20:40 | if (...) ... | GuardedString.cs:19:26:19:26 | 0 |
-| GuardedString.cs:19:26:19:26 | 0 | GuardedString.cs:22:9:23:40 | if (...) ... |
-| GuardedString.cs:22:9:23:40 | if (...) ... | GuardedString.cs:22:25:22:25 | 0 |
-| GuardedString.cs:22:25:22:25 | 0 | GuardedString.cs:25:9:26:40 | if (...) ... |
-| GuardedString.cs:25:9:26:40 | if (...) ... | GuardedString.cs:25:26:25:26 | 0 |
-| GuardedString.cs:25:26:25:26 | 0 | GuardedString.cs:28:9:29:40 | if (...) ... |
-| GuardedString.cs:28:9:29:40 | if (...) ... | GuardedString.cs:28:25:28:26 | 10 |
-| GuardedString.cs:28:25:28:26 | 10 | GuardedString.cs:31:9:32:40 | if (...) ... |
-| GuardedString.cs:31:9:32:40 | if (...) ... | GuardedString.cs:31:26:31:27 | 10 |
-| GuardedString.cs:31:26:31:27 | 10 | GuardedString.cs:34:9:37:40 | if (...) ... |
-| GuardedString.cs:34:9:37:40 | if (...) ... | GuardedString.cs:34:26:34:26 | 0 |
-| GuardedString.cs:34:26:34:26 | 0 | GuardedString.cs:35:31:35:31 | access to local variable s |
-| NullAlwaysBad.cs:7:29:7:29 | SSA param(s) | NullAlwaysBad.cs:9:30:9:30 | access to parameter s |
-| NullMaybeBad.cs:13:17:13:20 | null | NullMaybeBad.cs:7:27:7:27 | access to parameter o |
-| Params.cs:20:12:20:15 | null | Params.cs:14:17:14:20 | access to parameter args |
-| StringConcatenation.cs:14:16:14:23 | SSA def(s) | StringConcatenation.cs:15:16:15:16 | access to local variable s |
-| StringConcatenation.cs:15:16:15:16 | access to local variable s | StringConcatenation.cs:16:17:16:17 | access to local variable s |
-#select
-| C.cs:64:9:64:10 | access to local variable o1 | C.cs:62:13:62:46 | SSA def(o1) | C.cs:64:9:64:10 | access to local variable o1 | Variable $@ may be null at this access because of $@ assignment. | C.cs:62:13:62:14 | o1 | o1 | C.cs:62:13:62:46 | Object o1 = ... | this |
-| C.cs:68:9:68:10 | access to local variable o2 | C.cs:66:13:66:46 | SSA def(o2) | C.cs:68:9:68:10 | access to local variable o2 | Variable $@ may be null at this access because of $@ assignment. | C.cs:66:13:66:14 | o2 | o2 | C.cs:66:13:66:46 | Object o2 = ... | this |
-| C.cs:95:15:95:15 | access to local variable o | C.cs:94:13:94:45 | SSA def(o) | C.cs:95:15:95:15 | access to local variable o | Variable $@ may be null at this access because of $@ assignment. | C.cs:94:13:94:13 | o | o | C.cs:94:13:94:45 | Object o = ... | this |
-| C.cs:103:27:103:30 | access to parameter list | C.cs:102:13:102:23 | SSA def(list) | C.cs:103:27:103:30 | access to parameter list | Variable $@ may be null at this access because of $@ assignment. | C.cs:99:42:99:45 | list | list | C.cs:102:13:102:23 | ... = ... | this |
-| C.cs:177:13:177:13 | access to local variable s | C.cs:178:13:178:20 | SSA def(s) | C.cs:177:13:177:13 | access to local variable s | Variable $@ may be null at this access because of $@ assignment. | C.cs:151:13:151:13 | s | s | C.cs:178:13:178:20 | ... = ... | this |
-| C.cs:203:13:203:13 | access to local variable s | C.cs:204:13:204:20 | SSA def(s) | C.cs:203:13:203:13 | access to local variable s | Variable $@ may be null at this access because of $@ assignment. | C.cs:185:13:185:13 | s | s | C.cs:204:13:204:20 | ... = ... | this |
-| C.cs:223:9:223:9 | access to local variable s | C.cs:222:13:222:20 | SSA def(s) | C.cs:223:9:223:9 | access to local variable s | Variable $@ may be null at this access because of $@ assignment. | C.cs:210:13:210:13 | s | s | C.cs:222:13:222:20 | ... = ... | this |
-| C.cs:242:13:242:13 | access to local variable s | C.cs:240:24:240:31 | SSA def(s) | C.cs:242:13:242:13 | access to local variable s | Variable $@ may be null at this access because of $@ assignment. | C.cs:228:16:228:16 | s | s | C.cs:240:24:240:31 | ... = ... | this |
-| D.cs:23:9:23:13 | access to parameter param | D.cs:17:17:17:20 | null | D.cs:23:9:23:13 | access to parameter param | Variable $@ may be null at this access because of $@ null argument. | D.cs:21:32:21:36 | param | param | D.cs:17:17:17:20 | null | this |
-| D.cs:32:9:32:13 | access to parameter param | D.cs:26:32:26:36 | SSA param(param) | D.cs:32:9:32:13 | access to parameter param | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:26:32:26:36 | param | param | D.cs:28:13:28:25 | ... != ... | this |
-| D.cs:62:13:62:14 | access to local variable o5 | D.cs:58:13:58:41 | SSA def(o5) | D.cs:62:13:62:14 | access to local variable o5 | Variable $@ may be null at this access because of $@ assignment. | D.cs:58:13:58:14 | o5 | o5 | D.cs:58:13:58:41 | String o5 = ... | this |
-| D.cs:73:13:73:14 | access to local variable o7 | D.cs:68:13:68:34 | SSA def(o7) | D.cs:73:13:73:14 | access to local variable o7 | Variable $@ may be null at this access because of $@ assignment. | D.cs:68:13:68:14 | o7 | o7 | D.cs:68:13:68:34 | String o7 = ... | this |
-| D.cs:82:13:82:14 | access to local variable o8 | D.cs:75:13:75:34 | SSA def(o8) | D.cs:82:13:82:14 | access to local variable o8 | Variable $@ may be null at this access because of $@ assignment. | D.cs:75:13:75:14 | o8 | o8 | D.cs:75:13:75:34 | String o8 = ... | this |
-| D.cs:84:13:84:14 | access to local variable o8 | D.cs:75:13:75:34 | SSA def(o8) | D.cs:84:13:84:14 | access to local variable o8 | Variable $@ may be null at this access because of $@ assignment. | D.cs:75:13:75:14 | o8 | o8 | D.cs:75:13:75:34 | String o8 = ... | this |
-| D.cs:91:13:91:14 | access to local variable xs | D.cs:89:15:89:44 | SSA def(xs) | D.cs:91:13:91:14 | access to local variable xs | Variable $@ may be null at this access because of $@ assignment. | D.cs:89:15:89:16 | xs | xs | D.cs:89:15:89:44 | Int32[] xs = ... | this |
-| D.cs:94:21:94:22 | access to local variable xs | D.cs:89:15:89:44 | SSA def(xs) | D.cs:94:21:94:22 | access to local variable xs | Variable $@ may be null at this access because of $@ assignment. | D.cs:89:15:89:16 | xs | xs | D.cs:89:15:89:44 | Int32[] xs = ... | this |
-| D.cs:98:21:98:22 | access to local variable xs | D.cs:89:15:89:44 | SSA def(xs) | D.cs:98:21:98:22 | access to local variable xs | Variable $@ may be null at this access because of $@ assignment. | D.cs:89:15:89:16 | xs | xs | D.cs:89:15:89:44 | Int32[] xs = ... | this |
-| D.cs:102:31:102:32 | access to local variable xs | D.cs:89:15:89:44 | SSA def(xs) | D.cs:102:31:102:32 | access to local variable xs | Variable $@ may be null at this access because of $@ assignment. | D.cs:89:15:89:16 | xs | xs | D.cs:89:15:89:44 | Int32[] xs = ... | this |
-| D.cs:105:19:105:20 | access to local variable xs | D.cs:89:15:89:44 | SSA def(xs) | D.cs:105:19:105:20 | access to local variable xs | Variable $@ may be null at this access because of $@ assignment. | D.cs:89:15:89:16 | xs | xs | D.cs:89:15:89:44 | Int32[] xs = ... | this |
-| D.cs:134:24:134:24 | access to parameter a | D.cs:125:35:125:35 | SSA param(a) | D.cs:134:24:134:24 | access to parameter a | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:125:35:125:35 | a | a | D.cs:127:20:127:28 | ... == ... | this |
-| D.cs:134:24:134:24 | access to parameter a | D.cs:125:35:125:35 | SSA param(a) | D.cs:134:24:134:24 | access to parameter a | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:125:35:125:35 | a | a | D.cs:139:13:139:21 | ... != ... | this |
-| D.cs:135:24:135:24 | access to parameter b | D.cs:125:44:125:44 | SSA param(b) | D.cs:135:24:135:24 | access to parameter b | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:125:44:125:44 | b | b | D.cs:128:20:128:28 | ... == ... | this |
-| D.cs:145:20:145:20 | access to parameter a | D.cs:125:35:125:35 | SSA param(a) | D.cs:145:20:145:20 | access to parameter a | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:125:35:125:35 | a | a | D.cs:127:20:127:28 | ... == ... | this |
-| D.cs:145:20:145:20 | access to parameter a | D.cs:125:35:125:35 | SSA param(a) | D.cs:145:20:145:20 | access to parameter a | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:125:35:125:35 | a | a | D.cs:139:13:139:21 | ... != ... | this |
-| D.cs:151:9:151:11 | access to parameter obj | D.cs:149:36:149:38 | SSA param(obj) | D.cs:151:9:151:11 | access to parameter obj | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:149:36:149:38 | obj | obj | D.cs:152:17:152:27 | ... != ... | this |
-| D.cs:171:9:171:11 | access to local variable obj | D.cs:163:16:163:25 | SSA def(obj) | D.cs:171:9:171:11 | access to local variable obj | Variable $@ may be null at this access because of $@ assignment. | D.cs:163:16:163:18 | obj | obj | D.cs:163:16:163:25 | Object obj = ... | this |
-| D.cs:245:13:245:13 | access to local variable o | D.cs:240:9:240:16 | SSA def(o) | D.cs:245:13:245:13 | access to local variable o | Variable $@ may be null at this access because of $@ assignment. | D.cs:228:16:228:16 | o | o | D.cs:240:9:240:16 | ... = ... | this |
-| D.cs:247:13:247:13 | access to local variable o | D.cs:240:9:240:16 | SSA def(o) | D.cs:247:13:247:13 | access to local variable o | Variable $@ may be null at this access because of $@ assignment. | D.cs:228:16:228:16 | o | o | D.cs:240:9:240:16 | ... = ... | this |
-| D.cs:253:13:253:14 | access to local variable o2 | D.cs:249:13:249:38 | SSA def(o2) | D.cs:253:13:253:14 | access to local variable o2 | Variable $@ may be null at this access because of $@ assignment. | D.cs:249:13:249:14 | o2 | o2 | D.cs:249:13:249:38 | String o2 = ... | this |
-| D.cs:267:13:267:13 | access to local variable o | D.cs:258:16:258:23 | SSA def(o) | D.cs:267:13:267:13 | access to local variable o | Variable $@ may be null at this access because of $@ assignment. | D.cs:258:16:258:16 | o | o | D.cs:258:16:258:23 | Object o = ... | this |
-| D.cs:291:13:291:13 | access to local variable o | D.cs:269:9:269:16 | SSA def(o) | D.cs:291:13:291:13 | access to local variable o | Variable $@ may be null at this access because of $@ assignment. | D.cs:258:16:258:16 | o | o | D.cs:269:9:269:16 | ... = ... | this |
-| D.cs:291:13:291:13 | access to local variable o | D.cs:283:17:283:24 | SSA def(o) | D.cs:291:13:291:13 | access to local variable o | Variable $@ may be null at this access because of $@ assignment. | D.cs:258:16:258:16 | o | o | D.cs:283:17:283:24 | ... = ... | this |
-| D.cs:294:13:294:13 | access to local variable o | D.cs:269:9:269:16 | SSA def(o) | D.cs:294:13:294:13 | access to local variable o | Variable $@ may be null at this access because of $@ assignment. | D.cs:258:16:258:16 | o | o | D.cs:269:9:269:16 | ... = ... | this |
-| D.cs:294:13:294:13 | access to local variable o | D.cs:283:17:283:24 | SSA def(o) | D.cs:294:13:294:13 | access to local variable o | Variable $@ may be null at this access because of $@ assignment. | D.cs:258:16:258:16 | o | o | D.cs:283:17:283:24 | ... = ... | this |
-| D.cs:300:17:300:20 | access to local variable prev | D.cs:296:16:296:26 | SSA def(prev) | D.cs:300:17:300:20 | access to local variable prev | Variable $@ may be null at this access because of $@ assignment. | D.cs:296:16:296:19 | prev | prev | D.cs:296:16:296:26 | Object prev = ... | this |
-| D.cs:313:17:313:17 | access to local variable s | D.cs:304:16:304:23 | SSA def(s) | D.cs:313:17:313:17 | access to local variable s | Variable $@ may be null at this access because of $@ assignment. | D.cs:304:16:304:16 | s | s | D.cs:304:16:304:23 | String s = ... | this |
-| D.cs:324:9:324:9 | access to local variable r | D.cs:316:16:316:23 | SSA def(r) | D.cs:324:9:324:9 | access to local variable r | Variable $@ may be null at this access because of $@ assignment. | D.cs:316:16:316:16 | r | r | D.cs:316:16:316:23 | Object r = ... | this |
-| D.cs:356:13:356:13 | access to local variable a | D.cs:351:15:351:22 | SSA def(a) | D.cs:356:13:356:13 | access to local variable a | Variable $@ may be null at this access because of $@ assignment. | D.cs:351:15:351:15 | a | a | D.cs:351:15:351:22 | Int32[] a = ... | this |
-| D.cs:363:13:363:16 | access to local variable last | D.cs:360:20:360:30 | SSA def(last) | D.cs:363:13:363:16 | access to local variable last | Variable $@ may be null at this access because of $@ assignment. | D.cs:360:20:360:23 | last | last | D.cs:360:20:360:30 | String last = ... | this |
-| D.cs:372:13:372:13 | access to local variable b | D.cs:366:15:366:47 | SSA def(b) | D.cs:372:13:372:13 | access to local variable b | Variable $@ may be null at this access because of $@ assignment. | D.cs:366:15:366:15 | b | b | D.cs:366:15:366:47 | Int32[] b = ... | this |
-| D.cs:395:20:395:20 | access to parameter a | D.cs:388:36:388:36 | SSA param(a) | D.cs:395:20:395:20 | access to parameter a | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:388:36:388:36 | a | a | D.cs:390:20:390:28 | ... == ... | this |
-| D.cs:400:20:400:20 | access to parameter b | D.cs:388:45:388:45 | SSA param(b) | D.cs:400:20:400:20 | access to parameter b | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:388:45:388:45 | b | b | D.cs:397:20:397:28 | ... == ... | this |
-| D.cs:410:13:410:13 | access to parameter y | D.cs:405:45:405:45 | SSA param(y) | D.cs:410:13:410:13 | access to parameter y | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:405:45:405:45 | y | y | D.cs:407:27:407:35 | ... == ... | this |
-| D.cs:410:13:410:13 | access to parameter y | D.cs:405:45:405:45 | SSA param(y) | D.cs:410:13:410:13 | access to parameter y | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:405:45:405:45 | y | y | D.cs:407:55:407:63 | ... != ... | this |
-| D.cs:410:13:410:13 | access to parameter y | D.cs:405:45:405:45 | SSA param(y) | D.cs:410:13:410:13 | access to parameter y | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:405:45:405:45 | y | y | D.cs:411:13:411:21 | ... != ... | this |
-| D.cs:412:13:412:13 | access to parameter x | D.cs:405:35:405:35 | SSA param(x) | D.cs:412:13:412:13 | access to parameter x | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:405:35:405:35 | x | x | D.cs:407:14:407:22 | ... != ... | this |
-| D.cs:412:13:412:13 | access to parameter x | D.cs:405:35:405:35 | SSA param(x) | D.cs:412:13:412:13 | access to parameter x | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:405:35:405:35 | x | x | D.cs:407:42:407:50 | ... == ... | this |
-| D.cs:412:13:412:13 | access to parameter x | D.cs:405:35:405:35 | SSA param(x) | D.cs:412:13:412:13 | access to parameter x | Variable $@ may be null at this access as suggested by $@ null check. | D.cs:405:35:405:35 | x | x | D.cs:409:13:409:21 | ... != ... | this |
-| E.cs:12:38:12:39 | access to local variable a2 | E.cs:9:18:9:26 | SSA def(a2) | E.cs:12:38:12:39 | access to local variable a2 | Variable $@ may be null at this access because of $@ assignment. | E.cs:9:18:9:19 | a2 | a2 | E.cs:9:18:9:26 | Int64[][] a2 = ... | this |
-| E.cs:14:13:14:14 | access to local variable a3 | E.cs:11:16:11:24 | SSA def(a3) | E.cs:14:13:14:14 | access to local variable a3 | Variable $@ may be null at this access because of $@ assignment. | E.cs:11:16:11:17 | a3 | a3 | E.cs:11:16:11:24 | Int64[] a3 = ... | this |
-| E.cs:27:13:27:14 | access to local variable s1 | E.cs:23:13:23:30 | SSA def(s1) | E.cs:27:13:27:14 | access to local variable s1 | Variable $@ may be null at this access because of $@ assignment. | E.cs:19:13:19:14 | s1 | s1 | E.cs:23:13:23:30 | ... = ... | this |
-| E.cs:61:13:61:17 | access to local variable slice | E.cs:51:22:51:33 | SSA def(slice) | E.cs:61:13:61:17 | access to local variable slice | Variable $@ may be null at this access because of $@ assignment. | E.cs:51:22:51:26 | slice | slice | E.cs:51:22:51:33 | List slice = ... | this |
-| E.cs:73:13:73:15 | access to parameter arr | E.cs:66:40:66:42 | SSA param(arr) | E.cs:73:13:73:15 | access to parameter arr | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:66:40:66:42 | arr | arr | E.cs:70:22:70:32 | ... == ... | this |
-| E.cs:112:13:112:16 | access to local variable arr2 | E.cs:107:15:107:25 | SSA def(arr2) | E.cs:112:13:112:16 | access to local variable arr2 | Variable $@ may be null at this access because of $@ assignment. | E.cs:107:15:107:18 | arr2 | arr2 | E.cs:107:15:107:25 | Int32[] arr2 = ... | this |
-| E.cs:125:33:125:35 | access to local variable obj | E.cs:137:25:137:34 | SSA def(obj) | E.cs:125:33:125:35 | access to local variable obj | Variable $@ may be null at this access because of $@ assignment. | E.cs:119:13:119:15 | obj | obj | E.cs:137:25:137:34 | ... = ... | this |
-| E.cs:159:13:159:16 | access to local variable obj2 | E.cs:152:16:152:26 | SSA def(obj2) | E.cs:159:13:159:16 | access to local variable obj2 | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:152:16:152:19 | obj2 | obj2 | E.cs:153:13:153:24 | ... != ... | this |
-| E.cs:167:21:167:21 | access to parameter a | E.cs:162:28:162:28 | SSA param(a) | E.cs:167:21:167:21 | access to parameter a | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:162:28:162:28 | a | a | E.cs:164:17:164:25 | ... == ... | this |
-| E.cs:178:13:178:15 | access to parameter obj | E.cs:173:29:173:31 | SSA param(obj) | E.cs:178:13:178:15 | access to parameter obj | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:173:29:173:31 | obj | obj | E.cs:175:19:175:29 | ... == ... | this |
-| E.cs:178:13:178:15 | access to parameter obj | E.cs:173:29:173:31 | SSA param(obj) | E.cs:178:13:178:15 | access to parameter obj | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:173:29:173:31 | obj | obj | E.cs:180:13:180:23 | ... == ... | this |
-| E.cs:186:13:186:15 | access to parameter obj | E.cs:173:29:173:31 | SSA param(obj) | E.cs:186:13:186:15 | access to parameter obj | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:173:29:173:31 | obj | obj | E.cs:175:19:175:29 | ... == ... | this |
-| E.cs:186:13:186:15 | access to parameter obj | E.cs:173:29:173:31 | SSA param(obj) | E.cs:186:13:186:15 | access to parameter obj | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:173:29:173:31 | obj | obj | E.cs:180:13:180:23 | ... == ... | this |
-| E.cs:192:17:192:17 | access to parameter o | E.cs:190:29:190:29 | SSA param(o) | E.cs:192:17:192:17 | access to parameter o | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:190:29:190:29 | o | o | E.cs:193:17:193:17 | access to parameter o | this |
-| E.cs:201:13:201:13 | access to local variable o | E.cs:198:13:198:29 | [b (line 196): true] SSA def(o) | E.cs:201:13:201:13 | access to local variable o | Variable $@ may be null at this access because of $@ assignment. | E.cs:198:13:198:13 | o | o | E.cs:198:13:198:29 | String o = ... | this |
-| E.cs:203:13:203:13 | access to local variable o | E.cs:198:13:198:29 | [b (line 196): false] SSA def(o) | E.cs:203:13:203:13 | access to local variable o | Variable $@ may be null at this access because of $@ assignment. | E.cs:198:13:198:13 | o | o | E.cs:198:13:198:29 | String o = ... | this |
-| E.cs:218:9:218:9 | access to local variable x | E.cs:217:13:217:20 | [b (line 213): true] SSA def(x) | E.cs:218:9:218:9 | access to local variable x | Variable $@ may be null at this access because of $@ assignment. | E.cs:215:13:215:13 | x | x | E.cs:217:13:217:20 | ... = ... | this |
-| E.cs:230:9:230:9 | access to local variable x | E.cs:227:13:227:20 | [b (line 223): true] SSA def(x) | E.cs:230:9:230:9 | access to local variable x | Variable $@ may be null at this access because of $@ assignment. | E.cs:225:13:225:13 | x | x | E.cs:227:13:227:20 | ... = ... | this |
-| E.cs:235:16:235:16 | access to parameter i | E.cs:233:26:233:26 | SSA param(i) | E.cs:235:16:235:16 | access to parameter i | Variable $@ may be null at this access because it has a nullable type. | E.cs:233:26:233:26 | i | i | E.cs:233:26:233:26 | i | this |
-| E.cs:240:21:240:21 | access to parameter i | E.cs:238:26:238:26 | SSA param(i) | E.cs:240:21:240:21 | access to parameter i | Variable $@ may be null at this access because it has a nullable type. | E.cs:238:26:238:26 | i | i | E.cs:238:26:238:26 | i | this |
-| E.cs:285:9:285:9 | access to local variable o | E.cs:283:13:283:22 | [b (line 279): false] SSA def(o) | E.cs:285:9:285:9 | access to local variable o | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:283:13:283:13 | o | o | E.cs:284:9:284:9 | access to local variable o | this |
-| E.cs:285:9:285:9 | access to local variable o | E.cs:283:13:283:22 | [b (line 279): true] SSA def(o) | E.cs:285:9:285:9 | access to local variable o | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:283:13:283:13 | o | o | E.cs:284:9:284:9 | access to local variable o | this |
-| E.cs:302:9:302:9 | access to local variable s | E.cs:301:13:301:27 | SSA def(s) | E.cs:302:9:302:9 | access to local variable s | Variable $@ may be null at this access because of $@ assignment. | E.cs:301:13:301:13 | s | s | E.cs:301:13:301:27 | String s = ... | this |
-| E.cs:343:9:343:9 | access to local variable x | E.cs:342:13:342:32 | SSA def(x) | E.cs:343:9:343:9 | access to local variable x | Variable $@ may be null at this access because of $@ assignment. | E.cs:342:13:342:13 | x | x | E.cs:342:13:342:32 | String x = ... | this |
-| E.cs:349:9:349:9 | access to local variable x | E.cs:348:17:348:36 | SSA def(x) | E.cs:349:9:349:9 | access to local variable x | Variable $@ may be null at this access because of $@ assignment. | E.cs:348:17:348:17 | x | x | E.cs:348:17:348:36 | dynamic x = ... | this |
-| E.cs:366:41:366:41 | access to parameter s | E.cs:366:28:366:28 | SSA param(s) | E.cs:366:41:366:41 | access to parameter s | Variable $@ may be null at this access because the parameter has a null default value. | E.cs:366:28:366:28 | s | s | E.cs:366:32:366:35 | null | this |
-| E.cs:375:20:375:20 | access to local variable s | E.cs:374:17:374:31 | SSA def(s) | E.cs:375:20:375:20 | access to local variable s | Variable $@ may be null at this access because of $@ assignment. | E.cs:374:17:374:17 | s | s | E.cs:374:17:374:31 | String s = ... | this |
-| E.cs:386:16:386:17 | access to parameter e1 | E.cs:380:24:380:25 | SSA param(e1) | E.cs:386:16:386:17 | access to parameter e1 | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:380:24:380:25 | e1 | e1 | E.cs:382:14:382:23 | ... == ... | this |
-| E.cs:386:16:386:17 | access to parameter e1 | E.cs:380:24:380:25 | SSA param(e1) | E.cs:386:16:386:17 | access to parameter e1 | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:380:24:380:25 | e1 | e1 | E.cs:382:44:382:53 | ... != ... | this |
-| E.cs:386:16:386:17 | access to parameter e1 | E.cs:380:24:380:25 | SSA param(e1) | E.cs:386:16:386:17 | access to parameter e1 | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:380:24:380:25 | e1 | e1 | E.cs:384:13:384:22 | ... == ... | this |
-| E.cs:386:27:386:28 | access to parameter e2 | E.cs:380:30:380:31 | SSA param(e2) | E.cs:386:27:386:28 | access to parameter e2 | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:380:30:380:31 | e2 | e2 | E.cs:382:28:382:37 | ... != ... | this |
-| E.cs:386:27:386:28 | access to parameter e2 | E.cs:380:30:380:31 | SSA param(e2) | E.cs:386:27:386:28 | access to parameter e2 | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:380:30:380:31 | e2 | e2 | E.cs:382:58:382:67 | ... == ... | this |
-| E.cs:386:27:386:28 | access to parameter e2 | E.cs:380:30:380:31 | SSA param(e2) | E.cs:386:27:386:28 | access to parameter e2 | Variable $@ may be null at this access as suggested by $@ null check. | E.cs:380:30:380:31 | e2 | e2 | E.cs:384:27:384:36 | ... == ... | this |
-| E.cs:417:34:417:34 | access to parameter i | E.cs:417:24:417:40 | SSA capture def(i) | E.cs:417:34:417:34 | access to parameter i | Variable $@ may be null at this access because it has a nullable type. | E.cs:415:27:415:27 | i | i | E.cs:415:27:415:27 | i | this |
-| E.cs:423:38:423:38 | access to parameter i | E.cs:423:28:423:44 | SSA capture def(i) | E.cs:423:38:423:38 | access to parameter i | Variable $@ may be null at this access because it has a nullable type. | E.cs:420:27:420:27 | i | i | E.cs:420:27:420:27 | i | this |
-| E.cs:430:39:430:39 | access to parameter i | E.cs:430:29:430:45 | SSA capture def(i) | E.cs:430:39:430:39 | access to parameter i | Variable $@ may be null at this access because it has a nullable type. | E.cs:427:27:427:27 | i | i | E.cs:427:27:427:27 | i | this |
-| GuardedString.cs:35:31:35:31 | access to local variable s | GuardedString.cs:7:16:7:32 | SSA def(s) | GuardedString.cs:35:31:35:31 | access to local variable s | Variable $@ may be null at this access because of $@ assignment. | GuardedString.cs:7:16:7:16 | s | s | GuardedString.cs:7:16:7:32 | String s = ... | this |
-| NullMaybeBad.cs:7:27:7:27 | access to parameter o | NullMaybeBad.cs:13:17:13:20 | null | NullMaybeBad.cs:7:27:7:27 | access to parameter o | Variable $@ may be null at this access because of $@ null argument. | NullMaybeBad.cs:5:25:5:25 | o | o | NullMaybeBad.cs:13:17:13:20 | null | this |
-| Params.cs:14:17:14:20 | access to parameter args | Params.cs:20:12:20:15 | null | Params.cs:14:17:14:20 | access to parameter args | Variable $@ may be null at this access because of $@ null argument. | Params.cs:12:36:12:39 | args | args | Params.cs:20:12:20:15 | null | this |
-| StringConcatenation.cs:16:17:16:17 | access to local variable s | StringConcatenation.cs:14:16:14:23 | SSA def(s) | StringConcatenation.cs:16:17:16:17 | access to local variable s | Variable $@ may be null at this access because of $@ assignment. | StringConcatenation.cs:14:16:14:16 | s | s | StringConcatenation.cs:14:16:14:23 | String s = ... | this |
+| E.cs:380:30:380:31 | SSA param(e2) | E.cs:382:14:382:37 | [false] ... && ... |
+| E.cs:380:30:380:31 | SSA param(e2) | E.cs:382:14:382:37 | [false] ... && ... |
+| E.cs:380:30:380:31 | SSA param(e2) | E.cs:382:28:382:29 | access to parameter e2 |
+| E.cs:380:30:380:31 | SSA param(e2) | E.cs:382:28:382:29 | access to parameter e2 |
+| E.cs:380:30:380:31 | SSA param(e2) | E.cs:382:28:382:29 | access to parameter e2 |
+| E.cs:382:13:382:68 | [false] ... \|\| ... | E.cs:384:9:385:24 | if (...) ... |
+| E.cs:382:13:382:68 | [false] ... \|\| ... | E.cs:384:9:385:24 | if (...) ... |
+| E.cs:382:14:382:37 | [false] ... && ... | E.cs:382:44:382:45 | access to parameter e1 |
+| E.cs:382:14:382:37 | [false] ... && ... | E.cs:382:44:382:45 | access to parameter e1 |
+| E.cs:382:28:382:29 | access to parameter e2 | E.cs:382:14:382:37 | [false] ... && ... |
+| E.cs:382:28:382:29 | access to parameter e2 | E.cs:382:14:382:37 | [false] ... && ... |
+| E.cs:382:44:382:45 | access to parameter e1 | E.cs:382:44:382:67 | [false] ... && ... |
+| E.cs:382:44:382:45 | access to parameter e1 | E.cs:382:44:382:67 | [false] ... && ... |
+| E.cs:382:44:382:67 | [false] ... && ... | E.cs:382:13:382:68 | [false] ... \|\| ... |
+| E.cs:382:44:382:67 | [false] ... && ... | E.cs:382:13:382:68 | [false] ... \|\| ... |
+| E.cs:384:9:385:24 | if (...) ... | E.cs:384:13:384:36 | [false] ... && ... |
+| E.cs:384:9:385:24 | if (...) ... | E.cs:384:27:384:28 | access to parameter e2 |
+| E.cs:384:13:384:36 | [false] ... && ... | E.cs:386:16:386:17 | access to parameter e1 |
+| E.cs:384:13:384:36 | [false] ... && ... | E.cs:386:27:386:28 | access to parameter e2 |
+| E.cs:384:27:384:28 | access to parameter e2 | E.cs:384:13:384:36 | [false] ... && ... |
+| E.cs:404:9:404:18 | SSA def(i) | E.cs:405:16:405:16 | access to local variable i |
+| E.cs:404:9:404:18 | SSA def(i) | E.cs:405:16:405:16 | access to local variable i |
+| E.cs:417:24:417:40 | SSA capture def(i) | E.cs:417:34:417:34 | access to parameter i |
+| E.cs:423:28:423:44 | SSA capture def(i) | E.cs:423:38:423:38 | access to parameter i |
+| E.cs:430:29:430:45 | SSA capture def(i) | E.cs:430:39:430:39 | access to parameter i |
+| E.cs:435:29:435:29 | SSA param(s) | E.cs:437:13:437:21 | [true] ... is ... |
+| E.cs:437:13:437:21 | [true] ... is ... | E.cs:439:13:439:13 | access to parameter s |
+| F.cs:7:16:7:23 | SSA def(o) | F.cs:8:9:8:9 | access to local variable o |
+| Forwarding.cs:7:16:7:23 | SSA def(s) | Forwarding.cs:9:13:9:30 | [false] !... |
+| Forwarding.cs:9:13:9:30 | [false] !... | Forwarding.cs:14:9:17:9 | if (...) ... |
+| Forwarding.cs:14:9:17:9 | if (...) ... | Forwarding.cs:19:9:22:9 | if (...) ... |
+| Forwarding.cs:19:9:22:9 | if (...) ... | Forwarding.cs:19:13:19:23 | [false] !... |
+| Forwarding.cs:19:13:19:23 | [false] !... | Forwarding.cs:24:9:27:9 | if (...) ... |
+| Forwarding.cs:24:9:27:9 | if (...) ... | Forwarding.cs:29:9:32:9 | if (...) ... |
+| Forwarding.cs:29:9:32:9 | if (...) ... | Forwarding.cs:34:9:37:9 | if (...) ... |
+| Forwarding.cs:34:9:37:9 | if (...) ... | Forwarding.cs:35:9:37:9 | {...} |
+| Forwarding.cs:34:9:37:9 | if (...) ... | Forwarding.cs:36:31:36:31 | access to local variable s |
+| Forwarding.cs:35:9:37:9 | {...} | Forwarding.cs:40:27:40:27 | access to local variable s |
+| GuardedString.cs:7:16:7:32 | SSA def(s) | GuardedString.cs:9:13:9:36 | [false] !... |
+| GuardedString.cs:9:13:9:36 | [false] !... | GuardedString.cs:14:9:17:9 | if (...) ... |
+| GuardedString.cs:14:9:17:9 | if (...) ... | GuardedString.cs:14:13:14:41 | [false] !... |
+| GuardedString.cs:14:13:14:41 | [false] !... | GuardedString.cs:19:9:20:40 | if (...) ... |
+| GuardedString.cs:19:9:20:40 | if (...) ... | GuardedString.cs:19:26:19:26 | 0 |
+| GuardedString.cs:19:26:19:26 | 0 | GuardedString.cs:22:9:23:40 | if (...) ... |
+| GuardedString.cs:22:9:23:40 | if (...) ... | GuardedString.cs:22:25:22:25 | 0 |
+| GuardedString.cs:22:25:22:25 | 0 | GuardedString.cs:25:9:26:40 | if (...) ... |
+| GuardedString.cs:25:9:26:40 | if (...) ... | GuardedString.cs:25:26:25:26 | 0 |
+| GuardedString.cs:25:26:25:26 | 0 | GuardedString.cs:28:9:29:40 | if (...) ... |
+| GuardedString.cs:28:9:29:40 | if (...) ... | GuardedString.cs:28:25:28:26 | 10 |
+| GuardedString.cs:28:25:28:26 | 10 | GuardedString.cs:31:9:32:40 | if (...) ... |
+| GuardedString.cs:31:9:32:40 | if (...) ... | GuardedString.cs:31:26:31:27 | 10 |
+| GuardedString.cs:31:26:31:27 | 10 | GuardedString.cs:34:9:37:40 | if (...) ... |
+| GuardedString.cs:34:9:37:40 | if (...) ... | GuardedString.cs:34:26:34:26 | 0 |
+| GuardedString.cs:34:26:34:26 | 0 | GuardedString.cs:35:31:35:31 | access to local variable s |
+| NullAlwaysBad.cs:7:29:7:29 | SSA param(s) | NullAlwaysBad.cs:9:30:9:30 | access to parameter s |
+| NullMaybeBad.cs:13:17:13:20 | null | NullMaybeBad.cs:7:27:7:27 | access to parameter o |
+| Params.cs:20:12:20:15 | null | Params.cs:14:17:14:20 | access to parameter args |
+| StringConcatenation.cs:14:16:14:23 | SSA def(s) | StringConcatenation.cs:15:16:15:16 | access to local variable s |
+| StringConcatenation.cs:15:16:15:16 | access to local variable s | StringConcatenation.cs:16:17:16:17 | access to local variable s |
+nodes
+| A.cs:7:16:7:40 | SSA def(synchronizedAlways) |
+| A.cs:8:15:8:32 | access to local variable synchronizedAlways |
+| A.cs:10:13:10:30 | access to local variable synchronizedAlways |
+| A.cs:16:15:16:30 | SSA def(arrayNull) |
+| A.cs:17:9:17:17 | access to local variable arrayNull |
+| A.cs:26:15:26:32 | SSA def(arrayAccess) |
+| A.cs:27:18:27:35 | SSA def(fieldAccess) |
+| A.cs:28:16:28:34 | SSA def(methodAccess) |
+| A.cs:29:16:29:32 | SSA def(methodCall) |
+| A.cs:31:27:31:37 | access to local variable arrayAccess |
+| A.cs:32:27:32:37 | access to local variable fieldAccess |
+| A.cs:33:28:33:39 | access to local variable methodAccess |
+| A.cs:34:27:34:36 | access to local variable methodCall |
+| A.cs:36:27:36:37 | access to local variable arrayAccess |
+| A.cs:37:27:37:37 | access to local variable fieldAccess |
+| A.cs:38:15:38:26 | access to local variable methodAccess |
+| A.cs:39:27:39:36 | access to local variable methodCall |
+| A.cs:48:16:48:28 | SSA def(varRef) |
+| A.cs:50:9:50:14 | access to local variable varRef |
+| Assert.cs:13:9:13:25 | [b (line 7): false] SSA def(s) |
+| Assert.cs:13:9:13:25 | [b (line 7): true] SSA def(s) |
+| Assert.cs:15:27:15:27 | access to local variable s |
+| Assert.cs:15:27:15:27 | access to local variable s |
+| Assert.cs:21:9:21:25 | [b (line 7): false] SSA def(s) |
+| Assert.cs:21:9:21:25 | [b (line 7): true] SSA def(s) |
+| Assert.cs:23:27:23:27 | access to local variable s |
+| Assert.cs:23:27:23:27 | access to local variable s |
+| Assert.cs:29:9:29:25 | [b (line 7): false] SSA def(s) |
+| Assert.cs:29:9:29:25 | [b (line 7): true] SSA def(s) |
+| Assert.cs:31:27:31:27 | access to local variable s |
+| Assert.cs:31:27:31:27 | access to local variable s |
+| Assert.cs:45:9:45:25 | [b (line 7): true] SSA def(s) |
+| Assert.cs:46:23:46:36 | [true, b (line 7): true] ... && ... |
+| Assert.cs:46:36:46:36 | [b (line 7): true] access to parameter b |
+| Assert.cs:47:27:47:27 | access to local variable s |
+| Assert.cs:49:9:49:25 | [b (line 7): true] SSA def(s) |
+| Assert.cs:50:24:50:38 | [false] ... \|\| ... |
+| Assert.cs:50:37:50:38 | [false] !... |
+| Assert.cs:50:38:50:38 | [b (line 7): true] access to parameter b |
+| Assert.cs:51:27:51:27 | access to local variable s |
+| B.cs:7:11:7:29 | SSA def(eqCallAlways) |
+| B.cs:10:11:10:30 | SSA def(neqCallAlways) |
+| B.cs:13:13:13:24 | access to local variable eqCallAlways |
+| B.cs:13:13:13:36 | ...; |
+| B.cs:15:9:16:26 | if (...) ... |
+| B.cs:16:13:16:26 | ...; |
+| B.cs:18:9:20:26 | if (...) ... |
+| B.cs:18:25:18:27 | {...} |
+| B.cs:20:13:20:26 | ...; |
+| B.cs:22:9:24:37 | if (...) ... |
+| B.cs:24:13:24:25 | access to local variable neqCallAlways |
+| C.cs:10:16:10:23 | SSA def(o) |
+| C.cs:11:13:11:30 | [false] !... |
+| C.cs:11:15:11:29 | [true] !... |
+| C.cs:11:17:11:28 | [false] !... |
+| C.cs:16:9:19:9 | if (...) ... |
+| C.cs:16:13:16:24 | [true] !... |
+| C.cs:18:13:18:13 | access to local variable o |
+| C.cs:40:13:40:35 | SSA def(s) |
+| C.cs:42:9:42:9 | access to local variable s |
+| C.cs:55:13:55:36 | SSA def(o2) |
+| C.cs:57:9:57:10 | access to local variable o2 |
+| C.cs:62:13:62:46 | SSA def(o1) |
+| C.cs:64:9:64:10 | access to local variable o1 |
+| C.cs:66:13:66:46 | SSA def(o2) |
+| C.cs:68:9:68:10 | access to local variable o2 |
+| C.cs:94:13:94:45 | SSA def(o) |
+| C.cs:95:15:95:15 | access to local variable o |
+| C.cs:96:13:96:13 | access to local variable o |
+| C.cs:102:13:102:23 | SSA def(list) |
+| C.cs:103:9:107:9 | foreach (... ... in ...) ... |
+| C.cs:103:22:103:22 | Int32 x |
+| C.cs:103:27:103:30 | access to parameter list |
+| C.cs:103:27:103:30 | access to parameter list |
+| C.cs:106:13:106:16 | access to parameter list |
+| C.cs:159:9:159:16 | SSA def(s) |
+| C.cs:162:13:162:13 | access to local variable s |
+| C.cs:167:9:167:16 | SSA def(s) |
+| C.cs:170:13:170:13 | access to local variable s |
+| C.cs:177:13:177:13 | access to local variable s |
+| C.cs:178:13:178:20 | SSA def(s) |
+| C.cs:193:9:193:16 | SSA def(s) |
+| C.cs:196:13:196:13 | access to local variable s |
+| C.cs:197:13:197:20 | [b (line 192): true] SSA def(s) |
+| C.cs:201:16:201:19 | true |
+| C.cs:203:13:203:13 | access to local variable s |
+| C.cs:204:13:204:20 | SSA def(s) |
+| C.cs:210:13:210:35 | SSA def(s) |
+| C.cs:214:13:214:20 | SSA def(s) |
+| C.cs:217:9:218:25 | if (...) ... |
+| C.cs:218:13:218:13 | access to local variable s |
+| C.cs:222:13:222:20 | SSA def(s) |
+| C.cs:223:9:223:9 | access to local variable s |
+| C.cs:229:22:229:22 | access to local variable s |
+| C.cs:229:33:229:40 | SSA def(s) |
+| C.cs:233:9:233:9 | access to local variable s |
+| C.cs:235:14:235:21 | SSA def(s) |
+| C.cs:235:24:235:24 | access to local variable s |
+| C.cs:235:35:235:42 | SSA def(s) |
+| C.cs:237:13:237:13 | access to local variable s |
+| C.cs:240:24:240:31 | SSA def(s) |
+| C.cs:242:13:242:13 | access to local variable s |
+| C.cs:248:15:248:22 | SSA def(a) |
+| C.cs:249:9:249:9 | access to local variable a |
+| C.cs:257:15:257:23 | SSA def(ia) |
+| C.cs:258:18:258:26 | SSA def(sa) |
+| C.cs:260:9:260:10 | access to local variable ia |
+| C.cs:261:20:261:21 | access to local variable sa |
+| C.cs:263:9:263:10 | access to local variable ia |
+| C.cs:264:16:264:17 | access to local variable sa |
+| D.cs:17:17:17:20 | null |
+| D.cs:23:9:23:13 | access to parameter param |
+| D.cs:26:32:26:36 | SSA param(param) |
+| D.cs:32:9:32:13 | access to parameter param |
+| D.cs:58:13:58:41 | SSA def(o5) |
+| D.cs:61:9:62:26 | if (...) ... |
+| D.cs:62:13:62:14 | access to local variable o5 |
+| D.cs:68:13:68:34 | SSA def(o7) |
+| D.cs:69:18:69:36 | ... && ... |
+| D.cs:73:13:73:14 | access to local variable o7 |
+| D.cs:75:13:75:34 | SSA def(o8) |
+| D.cs:76:21:76:43 | ... ? ... : ... |
+| D.cs:76:34:76:35 | 42 |
+| D.cs:79:9:80:26 | if (...) ... |
+| D.cs:81:9:82:26 | if (...) ... |
+| D.cs:82:13:82:14 | access to local variable o8 |
+| D.cs:82:13:82:26 | ...; |
+| D.cs:83:9:84:26 | if (...) ... |
+| D.cs:84:13:84:14 | access to local variable o8 |
+| D.cs:89:15:89:44 | SSA def(xs) |
+| D.cs:91:13:91:14 | access to local variable xs |
+| D.cs:91:13:91:22 | ...; |
+| D.cs:93:9:94:30 | if (...) ... |
+| D.cs:94:13:94:30 | ...; |
+| D.cs:94:21:94:22 | access to local variable xs |
+| D.cs:96:9:99:9 | if (...) ... |
+| D.cs:97:9:99:9 | {...} |
+| D.cs:98:21:98:22 | access to local variable xs |
+| D.cs:101:9:102:35 | if (...) ... |
+| D.cs:102:13:102:35 | foreach (... ... in ...) ... |
+| D.cs:102:26:102:26 | Int32 _ |
+| D.cs:102:31:102:32 | access to local variable xs |
+| D.cs:102:31:102:32 | access to local variable xs |
+| D.cs:104:9:106:30 | if (...) ... |
+| D.cs:105:19:105:20 | access to local variable xs |
+| D.cs:106:17:106:18 | access to local variable xs |
+| D.cs:118:9:118:30 | SSA def(x) |
+| D.cs:120:13:120:13 | access to local variable x |
+| D.cs:125:35:125:35 | SSA param(a) |
+| D.cs:125:35:125:35 | SSA param(a) |
+| D.cs:125:44:125:44 | SSA param(b) |
+| D.cs:127:20:127:43 | ... ? ... : ... |
+| D.cs:127:20:127:43 | ... ? ... : ... |
+| D.cs:127:32:127:32 | 0 |
+| D.cs:127:32:127:32 | 0 |
+| D.cs:127:36:127:36 | access to parameter a |
+| D.cs:128:20:128:43 | ... ? ... : ... |
+| D.cs:128:20:128:43 | ... ? ... : ... |
+| D.cs:128:32:128:32 | 0 |
+| D.cs:128:32:128:32 | 0 |
+| D.cs:128:36:128:36 | access to parameter b |
+| D.cs:131:9:137:9 | {...} |
+| D.cs:131:9:137:9 | {...} |
+| D.cs:132:29:132:29 | access to local variable i |
+| D.cs:132:29:132:29 | access to local variable i |
+| D.cs:133:13:136:13 | {...} |
+| D.cs:133:13:136:13 | {...} |
+| D.cs:134:24:134:24 | access to parameter a |
+| D.cs:135:24:135:24 | access to parameter b |
+| D.cs:138:9:138:18 | ... ...; |
+| D.cs:142:13:142:22 | ...; |
+| D.cs:143:9:146:9 | for (...;...;...) ... |
+| D.cs:143:25:143:25 | access to local variable i |
+| D.cs:144:9:146:9 | {...} |
+| D.cs:145:20:145:20 | access to parameter a |
+| D.cs:149:36:149:38 | SSA param(obj) |
+| D.cs:151:9:151:11 | access to parameter obj |
+| D.cs:163:16:163:25 | SSA def(obj) |
+| D.cs:168:9:170:9 | [exception: Exception] catch (...) {...} |
+| D.cs:168:26:168:26 | [exception: Exception] Exception e |
+| D.cs:171:9:171:11 | access to local variable obj |
+| D.cs:240:9:240:16 | SSA def(o) |
+| D.cs:241:21:241:37 | ... ? ... : ... |
+| D.cs:241:29:241:32 | null |
+| D.cs:241:36:241:37 | "" |
+| D.cs:244:9:247:25 | if (...) ... |
+| D.cs:245:13:245:13 | access to local variable o |
+| D.cs:247:13:247:13 | access to local variable o |
+| D.cs:249:13:249:38 | SSA def(o2) |
+| D.cs:253:13:253:14 | access to local variable o2 |
+| D.cs:258:16:258:23 | SSA def(o) |
+| D.cs:266:9:267:25 | if (...) ... |
+| D.cs:266:13:266:27 | [true] ... is ... |
+| D.cs:267:13:267:13 | access to local variable o |
+| D.cs:269:9:269:16 | SSA def(o) |
+| D.cs:272:25:272:25 | access to local variable i |
+| D.cs:272:39:272:39 | access to local variable i |
+| D.cs:273:9:288:9 | {...} |
+| D.cs:281:13:287:13 | if (...) ... |
+| D.cs:283:17:283:24 | SSA def(o) |
+| D.cs:285:28:285:30 | {...} |
+| D.cs:286:17:286:30 | ...; |
+| D.cs:290:9:291:25 | if (...) ... |
+| D.cs:291:13:291:13 | access to local variable o |
+| D.cs:291:13:291:25 | ...; |
+| D.cs:293:9:294:25 | if (...) ... |
+| D.cs:294:13:294:13 | access to local variable o |
+| D.cs:296:16:296:26 | SSA def(prev) |
+| D.cs:297:25:297:25 | access to local variable i |
+| D.cs:298:9:302:9 | {...} |
+| D.cs:300:17:300:20 | access to local variable prev |
+| D.cs:304:16:304:23 | SSA def(s) |
+| D.cs:307:13:311:13 | foreach (... ... in ...) ... |
+| D.cs:312:13:313:29 | if (...) ... |
+| D.cs:312:17:312:23 | [true] !... |
+| D.cs:313:17:313:17 | access to local variable s |
+| D.cs:316:16:316:23 | SSA def(r) |
+| D.cs:318:16:318:19 | access to local variable stat |
+| D.cs:318:16:318:62 | [false] ... && ... |
+| D.cs:318:41:318:44 | access to local variable stat |
+| D.cs:324:9:324:9 | access to local variable r |
+| D.cs:351:15:351:22 | SSA def(a) |
+| D.cs:355:9:356:21 | for (...;...;...) ... |
+| D.cs:355:25:355:25 | access to local variable i |
+| D.cs:356:13:356:13 | access to local variable a |
+| D.cs:356:13:356:21 | ...; |
+| D.cs:360:20:360:30 | SSA def(last) |
+| D.cs:361:29:361:29 | access to local variable i |
+| D.cs:363:13:363:16 | access to local variable last |
+| D.cs:366:15:366:47 | SSA def(b) |
+| D.cs:367:13:367:56 | [false] ... && ... |
+| D.cs:370:9:373:9 | for (...;...;...) ... |
+| D.cs:370:25:370:25 | access to local variable i |
+| D.cs:371:9:373:9 | {...} |
+| D.cs:372:13:372:13 | access to local variable b |
+| D.cs:378:19:378:28 | SSA def(ioe) |
+| D.cs:382:9:385:27 | if (...) ... |
+| D.cs:385:13:385:15 | access to local variable ioe |
+| D.cs:388:36:388:36 | SSA param(a) |
+| D.cs:388:45:388:45 | SSA param(b) |
+| D.cs:390:20:390:43 | ... ? ... : ... |
+| D.cs:390:20:390:43 | ... ? ... : ... |
+| D.cs:390:32:390:32 | 0 |
+| D.cs:390:32:390:32 | 0 |
+| D.cs:390:36:390:36 | access to parameter a |
+| D.cs:393:21:393:21 | access to local variable i |
+| D.cs:393:21:393:21 | access to local variable i |
+| D.cs:394:9:396:9 | {...} |
+| D.cs:394:9:396:9 | {...} |
+| D.cs:395:20:395:20 | access to parameter a |
+| D.cs:397:9:397:44 | ... ...; |
+| D.cs:397:20:397:43 | ... ? ... : ... |
+| D.cs:397:32:397:32 | 0 |
+| D.cs:398:21:398:21 | access to local variable i |
+| D.cs:399:9:401:9 | {...} |
+| D.cs:400:20:400:20 | access to parameter b |
+| D.cs:405:35:405:35 | SSA param(x) |
+| D.cs:405:35:405:35 | SSA param(x) |
+| D.cs:405:35:405:35 | SSA param(x) |
+| D.cs:405:45:405:45 | SSA param(y) |
+| D.cs:405:45:405:45 | SSA param(y) |
+| D.cs:405:45:405:45 | SSA param(y) |
+| D.cs:407:13:407:64 | [false] ... \|\| ... |
+| D.cs:407:13:407:64 | [false] ... \|\| ... |
+| D.cs:407:14:407:35 | [false] ... && ... |
+| D.cs:407:14:407:35 | [false] ... && ... |
+| D.cs:407:42:407:42 | access to parameter x |
+| D.cs:407:42:407:42 | access to parameter x |
+| D.cs:407:42:407:63 | [false] ... && ... |
+| D.cs:407:42:407:63 | [false] ... && ... |
+| D.cs:407:55:407:55 | access to parameter y |
+| D.cs:407:55:407:55 | access to parameter y |
+| D.cs:409:9:410:25 | if (...) ... |
+| D.cs:409:9:410:25 | if (...) ... |
+| D.cs:410:13:410:13 | access to parameter y |
+| D.cs:411:9:412:25 | if (...) ... |
+| D.cs:412:13:412:13 | access to parameter x |
+| E.cs:9:18:9:26 | SSA def(a2) |
+| E.cs:10:22:10:54 | ... && ... |
+| E.cs:11:16:11:24 | SSA def(a3) |
+| E.cs:12:22:12:52 | ... && ... |
+| E.cs:12:38:12:39 | access to local variable a2 |
+| E.cs:14:13:14:14 | access to local variable a3 |
+| E.cs:23:13:23:30 | SSA def(s1) |
+| E.cs:24:18:24:41 | ... ? ... : ... |
+| E.cs:24:33:24:36 | null |
+| E.cs:26:9:27:26 | if (...) ... |
+| E.cs:27:13:27:14 | access to local variable s1 |
+| E.cs:51:22:51:33 | SSA def(slice) |
+| E.cs:53:16:53:19 | access to local variable iter |
+| E.cs:54:9:63:9 | {...} |
+| E.cs:61:13:61:17 | access to local variable slice |
+| E.cs:61:13:61:27 | ...; |
+| E.cs:66:40:66:42 | SSA param(arr) |
+| E.cs:70:13:70:50 | ...; |
+| E.cs:70:22:70:49 | ... ? ... : ... |
+| E.cs:70:36:70:36 | 0 |
+| E.cs:72:9:73:23 | if (...) ... |
+| E.cs:73:13:73:15 | access to parameter arr |
+| E.cs:107:15:107:25 | SSA def(arr2) |
+| E.cs:111:9:112:30 | for (...;...;...) ... |
+| E.cs:111:25:111:25 | access to local variable i |
+| E.cs:112:13:112:16 | access to local variable arr2 |
+| E.cs:112:13:112:30 | ...; |
+| E.cs:120:16:120:20 | [true] !... |
+| E.cs:120:17:120:20 | access to local variable stop |
+| E.cs:121:9:143:9 | {...} |
+| E.cs:123:20:123:24 | [false] !... |
+| E.cs:123:20:123:24 | [true] !... |
+| E.cs:123:20:123:35 | [false] ... && ... |
+| E.cs:123:20:123:35 | [true] ... && ... |
+| E.cs:123:21:123:24 | access to local variable stop |
+| E.cs:123:29:123:29 | access to local variable j |
+| E.cs:124:13:142:13 | {...} |
+| E.cs:125:33:125:35 | access to local variable obj |
+| E.cs:128:21:128:23 | access to local variable obj |
+| E.cs:137:25:137:34 | SSA def(obj) |
+| E.cs:139:21:139:29 | continue; |
+| E.cs:141:17:141:26 | ...; |
+| E.cs:152:16:152:26 | SSA def(obj2) |
+| E.cs:153:13:153:54 | [false] ... && ... |
+| E.cs:158:9:159:28 | if (...) ... |
+| E.cs:159:13:159:16 | access to local variable obj2 |
+| E.cs:162:28:162:28 | SSA param(a) |
+| E.cs:164:17:164:40 | ... ? ... : ... |
+| E.cs:164:29:164:29 | 0 |
+| E.cs:165:25:165:25 | access to local variable i |
+| E.cs:165:32:165:32 | access to local variable i |
+| E.cs:166:9:170:9 | {...} |
+| E.cs:167:21:167:21 | access to parameter a |
+| E.cs:173:29:173:31 | SSA param(obj) |
+| E.cs:173:29:173:31 | SSA param(obj) |
+| E.cs:175:19:175:42 | ... ? ... : ... |
+| E.cs:175:33:175:37 | false |
+| E.cs:177:9:179:9 | {...} |
+| E.cs:178:13:178:15 | access to parameter obj |
+| E.cs:180:9:183:9 | if (...) ... |
+| E.cs:181:9:183:9 | {...} |
+| E.cs:184:9:187:9 | if (...) ... |
+| E.cs:186:13:186:15 | access to parameter obj |
+| E.cs:190:29:190:29 | SSA param(o) |
+| E.cs:192:17:192:17 | access to parameter o |
+| E.cs:198:13:198:29 | [b (line 196): false] SSA def(o) |
+| E.cs:198:13:198:29 | [b (line 196): true] SSA def(o) |
+| E.cs:201:13:201:13 | access to local variable o |
+| E.cs:203:13:203:13 | access to local variable o |
+| E.cs:206:28:206:28 | SSA param(s) |
+| E.cs:208:13:208:23 | [false] ... is ... |
+| E.cs:210:16:210:16 | access to parameter s |
+| E.cs:217:13:217:20 | [b (line 213): true] SSA def(x) |
+| E.cs:218:9:218:9 | access to local variable x |
+| E.cs:220:13:220:13 | access to local variable x |
+| E.cs:227:13:227:20 | [b (line 223): true] SSA def(x) |
+| E.cs:229:13:229:13 | access to local variable x |
+| E.cs:229:13:229:25 | ...; |
+| E.cs:230:9:230:9 | access to local variable x |
+| E.cs:233:26:233:26 | SSA param(i) |
+| E.cs:235:16:235:16 | access to parameter i |
+| E.cs:238:26:238:26 | SSA param(i) |
+| E.cs:240:21:240:21 | access to parameter i |
+| E.cs:283:13:283:22 | [b (line 279): false] SSA def(o) |
+| E.cs:283:13:283:22 | [b (line 279): true] SSA def(o) |
+| E.cs:285:9:285:9 | access to local variable o |
+| E.cs:285:9:285:9 | access to local variable o |
+| E.cs:301:13:301:27 | SSA def(s) |
+| E.cs:302:9:302:9 | access to local variable s |
+| E.cs:319:29:319:30 | SSA param(s1) |
+| E.cs:321:13:321:30 | [true] ... is ... |
+| E.cs:321:14:321:21 | ... ?? ... |
+| E.cs:321:20:321:21 | access to parameter s2 |
+| E.cs:323:13:323:14 | access to parameter s1 |
+| E.cs:330:13:330:36 | SSA def(x) |
+| E.cs:331:9:331:9 | access to local variable x |
+| E.cs:342:13:342:32 | SSA def(x) |
+| E.cs:343:9:343:9 | access to local variable x |
+| E.cs:348:17:348:36 | SSA def(x) |
+| E.cs:349:9:349:9 | access to local variable x |
+| E.cs:366:28:366:28 | SSA param(s) |
+| E.cs:366:41:366:41 | access to parameter s |
+| E.cs:374:17:374:31 | SSA def(s) |
+| E.cs:375:20:375:20 | access to local variable s |
+| E.cs:380:24:380:25 | SSA param(e1) |
+| E.cs:380:24:380:25 | SSA param(e1) |
+| E.cs:380:24:380:25 | SSA param(e1) |
+| E.cs:380:30:380:31 | SSA param(e2) |
+| E.cs:380:30:380:31 | SSA param(e2) |
+| E.cs:380:30:380:31 | SSA param(e2) |
+| E.cs:382:13:382:68 | [false] ... \|\| ... |
+| E.cs:382:13:382:68 | [false] ... \|\| ... |
+| E.cs:382:14:382:37 | [false] ... && ... |
+| E.cs:382:14:382:37 | [false] ... && ... |
+| E.cs:382:28:382:29 | access to parameter e2 |
+| E.cs:382:28:382:29 | access to parameter e2 |
+| E.cs:382:44:382:45 | access to parameter e1 |
+| E.cs:382:44:382:45 | access to parameter e1 |
+| E.cs:382:44:382:67 | [false] ... && ... |
+| E.cs:382:44:382:67 | [false] ... && ... |
+| E.cs:384:9:385:24 | if (...) ... |
+| E.cs:384:9:385:24 | if (...) ... |
+| E.cs:384:13:384:36 | [false] ... && ... |
+| E.cs:384:13:384:36 | [false] ... && ... |
+| E.cs:384:27:384:28 | access to parameter e2 |
+| E.cs:386:16:386:17 | access to parameter e1 |
+| E.cs:386:27:386:28 | access to parameter e2 |
+| E.cs:404:9:404:18 | SSA def(i) |
+| E.cs:404:9:404:18 | SSA def(i) |
+| E.cs:405:16:405:16 | access to local variable i |
+| E.cs:417:24:417:40 | SSA capture def(i) |
+| E.cs:417:34:417:34 | access to parameter i |
+| E.cs:423:28:423:44 | SSA capture def(i) |
+| E.cs:423:38:423:38 | access to parameter i |
+| E.cs:430:29:430:45 | SSA capture def(i) |
+| E.cs:430:39:430:39 | access to parameter i |
+| E.cs:435:29:435:29 | SSA param(s) |
+| E.cs:437:13:437:21 | [true] ... is ... |
+| E.cs:439:13:439:13 | access to parameter s |
+| F.cs:7:16:7:23 | SSA def(o) |
+| F.cs:8:9:8:9 | access to local variable o |
+| Forwarding.cs:7:16:7:23 | SSA def(s) |
+| Forwarding.cs:9:13:9:30 | [false] !... |
+| Forwarding.cs:14:9:17:9 | if (...) ... |
+| Forwarding.cs:19:9:22:9 | if (...) ... |
+| Forwarding.cs:19:13:19:23 | [false] !... |
+| Forwarding.cs:24:9:27:9 | if (...) ... |
+| Forwarding.cs:29:9:32:9 | if (...) ... |
+| Forwarding.cs:34:9:37:9 | if (...) ... |
+| Forwarding.cs:35:9:37:9 | {...} |
+| Forwarding.cs:36:31:36:31 | access to local variable s |
+| Forwarding.cs:40:27:40:27 | access to local variable s |
+| GuardedString.cs:7:16:7:32 | SSA def(s) |
+| GuardedString.cs:9:13:9:36 | [false] !... |
+| GuardedString.cs:14:9:17:9 | if (...) ... |
+| GuardedString.cs:14:13:14:41 | [false] !... |
+| GuardedString.cs:19:9:20:40 | if (...) ... |
+| GuardedString.cs:19:26:19:26 | 0 |
+| GuardedString.cs:22:9:23:40 | if (...) ... |
+| GuardedString.cs:22:25:22:25 | 0 |
+| GuardedString.cs:25:9:26:40 | if (...) ... |
+| GuardedString.cs:25:26:25:26 | 0 |
+| GuardedString.cs:28:9:29:40 | if (...) ... |
+| GuardedString.cs:28:25:28:26 | 10 |
+| GuardedString.cs:31:9:32:40 | if (...) ... |
+| GuardedString.cs:31:26:31:27 | 10 |
+| GuardedString.cs:34:9:37:40 | if (...) ... |
+| GuardedString.cs:34:26:34:26 | 0 |
+| GuardedString.cs:35:31:35:31 | access to local variable s |
+| NullAlwaysBad.cs:7:29:7:29 | SSA param(s) |
+| NullAlwaysBad.cs:9:30:9:30 | access to parameter s |
+| NullMaybeBad.cs:7:27:7:27 | access to parameter o |
+| NullMaybeBad.cs:13:17:13:20 | null |
+| Params.cs:14:17:14:20 | access to parameter args |
+| Params.cs:20:12:20:15 | null |
+| StringConcatenation.cs:14:16:14:23 | SSA def(s) |
+| StringConcatenation.cs:15:16:15:16 | access to local variable s |
+| StringConcatenation.cs:16:17:16:17 | access to local variable s |
diff --git a/csharp/ql/test/query-tests/Nullness/NullMaybe.qlref b/csharp/ql/test/query-tests/Nullness/NullMaybe.qlref
index caf2eefb3d8f..6615576178c6 100644
--- a/csharp/ql/test/query-tests/Nullness/NullMaybe.qlref
+++ b/csharp/ql/test/query-tests/Nullness/NullMaybe.qlref
@@ -1 +1,2 @@
-CSI/NullMaybe.ql
+query: CSI/NullMaybe.ql
+postprocess: utils/test/InlineExpectationsTestQuery.ql
diff --git a/csharp/ql/test/query-tests/Nullness/NullMaybeBad.cs b/csharp/ql/test/query-tests/Nullness/NullMaybeBad.cs
index 9950bc3c1ee8..433a4edc1126 100644
--- a/csharp/ql/test/query-tests/Nullness/NullMaybeBad.cs
+++ b/csharp/ql/test/query-tests/Nullness/NullMaybeBad.cs
@@ -4,12 +4,12 @@ class Bad
{
void DoPrint(object o)
{
- Console.WriteLine(o.ToString());
+ Console.WriteLine(o.ToString()); // $ Alert[cs/dereferenced-value-may-be-null]
}
void M()
{
DoPrint("Hello");
- DoPrint(null);
+ DoPrint(null); // $ Source[cs/dereferenced-value-may-be-null]
}
}
diff --git a/csharp/ql/test/query-tests/Nullness/Params.cs b/csharp/ql/test/query-tests/Nullness/Params.cs
index 17c9cf861d7b..b7f2c9e46e8a 100644
--- a/csharp/ql/test/query-tests/Nullness/Params.cs
+++ b/csharp/ql/test/query-tests/Nullness/Params.cs
@@ -11,12 +11,12 @@ public void M1(params string[] args)
public void M2(params string[] args)
{
- var l = args.Length; // Good
+ var l = args.Length; // $ SPURIOUS (false positive): Alert[cs/dereferenced-value-may-be-null]
}
public void M()
{
M1("a", "b", "c", null);
- M2(null);
+ M2(null); // $ Source[cs/dereferenced-value-may-be-null]
}
-}
\ No newline at end of file
+}
diff --git a/csharp/ql/test/query-tests/Nullness/StringConcatenation.cs b/csharp/ql/test/query-tests/Nullness/StringConcatenation.cs
index 394ea9077693..1cc8f146aec7 100644
--- a/csharp/ql/test/query-tests/Nullness/StringConcatenation.cs
+++ b/csharp/ql/test/query-tests/Nullness/StringConcatenation.cs
@@ -11,9 +11,9 @@ void StringAdded()
void StringMaybeNull()
{
- string s = null;
+ string s = null; // $ Source[cs/dereferenced-value-may-be-null]
while (s != "")
- s = s.Trim(); // BAD (maybe)
+ s = s.Trim(); // $ Alert[cs/dereferenced-value-may-be-null]
}
void StringNotNull()
diff --git a/csharp/ql/test/query-tests/Nullness/options b/csharp/ql/test/query-tests/Nullness/options
index ca78c4312494..1039aa6de18c 100644
--- a/csharp/ql/test/query-tests/Nullness/options
+++ b/csharp/ql/test/query-tests/Nullness/options
@@ -1,3 +1,4 @@
semmle-extractor-options: /nostdlib /noconfig
semmle-extractor-options: --load-sources-from-project:${testdir}/../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj
-semmle-extractor-options: ${testdir}/../../resources/stubs/Microsoft.VisualStudio.TestTools.UnitTesting.cs
\ No newline at end of file
+semmle-extractor-options: ${testdir}/../../resources/stubs/Microsoft.VisualStudio.TestTools.UnitTesting.cs
+semmle-extractor-options: ${testdir}/../../resources/stubs/Library.cs
diff --git a/csharp/ql/test/resources/stubs/Library.cs b/csharp/ql/test/resources/stubs/Library.cs
new file mode 100644
index 000000000000..0efffd3f21b7
--- /dev/null
+++ b/csharp/ql/test/resources/stubs/Library.cs
@@ -0,0 +1,13 @@
+namespace Library;
+
+/*
+ * This file is for making stubs for library methods used for testing purposes.
+ * The file is located in the stubs folder, because then the code is not
+ * recognized as being from source.
+ */
+public static class MyExtensions
+{
+ public static void Accept(this object o) { }
+
+ public static void AcceptNullable(this object? o) { }
+}
diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.19.4.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.19.4.rst
index 754b6d2c4dad..51ff05b0c3b1 100644
--- a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.19.4.rst
+++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.19.4.rst
@@ -79,4 +79,4 @@ JavaScript/TypeScript
* Added taint-steps for :code:`Array.prototype.toReversed`.
* Added taint-steps for :code:`Array.prototype.toSorted`.
* Added support for :code:`String.prototype.matchAll`.
-* Added taint-steps for :code:`Array.prototype.reverse`.
+* Added taint-steps for :code:`Array.prototype.reverse`.
diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.22.0.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.22.0.rst
new file mode 100644
index 000000000000..04920497e4ea
--- /dev/null
+++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.22.0.rst
@@ -0,0 +1,82 @@
+.. _codeql-cli-2.22.0:
+
+==========================
+CodeQL 2.22.0 (2025-06-11)
+==========================
+
+.. contents:: Contents
+ :depth: 2
+ :local:
+ :backlinks: none
+
+This is an overview of changes in the CodeQL CLI and relevant CodeQL query and library packs. For additional updates on changes to the CodeQL code scanning experience, check out the `code scanning section on the GitHub blog `__, `relevant GitHub Changelog updates `__, `changes in the CodeQL extension for Visual Studio Code `__, and the `CodeQL Action changelog `__.
+
+Security Coverage
+-----------------
+
+CodeQL 2.22.0 runs a total of 450 security queries when configured with the Default suite (covering 165 CWE). The Extended suite enables an additional 128 queries (covering 33 more CWE). 1 security query has been added with this release.
+
+CodeQL CLI
+----------
+
+Breaking Changes
+~~~~~~~~~~~~~~~~
+
+* A number of breaking changes have been made to the C and C++ CodeQL test environment as used by :code:`codeql test run`\ :
+
+ * Options starting with a :code:`/` are no longer supported by
+ :code:`semmle-extractor-options`. Any option starting with a :code:`/` should be replaced by the equivalent option starting with a :code:`-`, e.g., :code:`/D` should be replaced by :code:`-D`.
+ * Preprocessor command line options of the form :code:`-D#` are no longer supported by :code:`semmle-extractor-options`. :code:`-D=` should be used instead.
+ * The :code:`/Fp` and :code:`-o` options are no longer supported by
+ :code:`semmle-extractor-options`. The options should be omitted.
+ * The :code:`-emit-pch`, :code:`-include-pch`, :code:`/Yc`, and :code:`/Yu` options, and the
+ :code:`--preinclude` option taking a pre-compiled header as its argument, are no longer supported by :code:`semmle-extractor-options`. Any test that makes use of this should be replaced by a test that invokes the CodeQL CLI with the
+ :code:`create database` option and that runs the relevant queries on the created database.
+
+Query Packs
+-----------
+
+Minor Analysis Improvements
+~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Python
+""""""
+
+* Added SQL injection models from the :code:`pandas` PyPI package.
+
+New Queries
+~~~~~~~~~~~
+
+Golang
+""""""
+
+* Query (:code:`go/html-template-escaping-bypass-xss`) has been promoted to the main query suite. This query finds potential cross-site scripting (XSS) vulnerabilities when using the :code:`html/template` package, caused by user input being cast to a type which bypasses the HTML autoescaping. It was originally contributed to the experimental query pack by @gagliardetto in `https://github.com/github/codeql-go/pull/493 `_.
+
+Language Libraries
+------------------
+
+Minor Analysis Improvements
+~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Golang
+""""""
+
+* The first argument of :code:`Client.Query` in :code:`cloud.google.com/go/bigquery` is now recognized as a SQL injection sink.
+
+JavaScript/TypeScript
+"""""""""""""""""""""
+
+* Added taint flow through the :code:`URL` constructor from the :code:`url` package, improving the identification of SSRF vulnerabilities.
+
+Swift
+"""""
+
+* Updated to allow analysis of Swift 6.1.2.
+
+New Features
+~~~~~~~~~~~~
+
+C/C++
+"""""
+
+* Added a predicate :code:`getReferencedMember` to :code:`UsingDeclarationEntry`, which yields a member depending on a type template parameter.
diff --git a/docs/codeql/codeql-overview/codeql-changelog/index.rst b/docs/codeql/codeql-overview/codeql-changelog/index.rst
index be6d2582d6ec..af427fd69150 100644
--- a/docs/codeql/codeql-overview/codeql-changelog/index.rst
+++ b/docs/codeql/codeql-overview/codeql-changelog/index.rst
@@ -11,6 +11,7 @@ A list of queries for each suite and language `is available here .
+* Query (`go/html-template-escaping-bypass-xss`) has been promoted to the main query suite. This query finds potential cross-site scripting (XSS) vulnerabilities when using the `html/template` package, caused by user input being cast to a type which bypasses the HTML autoescaping. It was originally contributed to the experimental query pack by @gagliardetto in https://github.com/github/codeql-go/pull/493.
## 1.2.1
diff --git a/go/ql/src/change-notes/released/1.3.0.md b/go/ql/src/change-notes/released/1.3.0.md
index fe0c5a7af3c4..84afeabc50de 100644
--- a/go/ql/src/change-notes/released/1.3.0.md
+++ b/go/ql/src/change-notes/released/1.3.0.md
@@ -2,4 +2,4 @@
### New Queries
-* Query (`go/html-template-escaping-bypass-xss`) has been promoted to the main query suite. This query finds potential cross-site scripting (XSS) vulnerabilities when using the `html/template` package, caused by user input being cast to a type which bypasses the HTML autoescaping. It was originally contributed to the experimental query pack by @gagliardetto in .
+* Query (`go/html-template-escaping-bypass-xss`) has been promoted to the main query suite. This query finds potential cross-site scripting (XSS) vulnerabilities when using the `html/template` package, caused by user input being cast to a type which bypasses the HTML autoescaping. It was originally contributed to the experimental query pack by @gagliardetto in https://github.com/github/codeql-go/pull/493.
diff --git a/go/ql/src/qlpack.yml b/go/ql/src/qlpack.yml
index 8278ece9be56..874d6e093fce 100644
--- a/go/ql/src/qlpack.yml
+++ b/go/ql/src/qlpack.yml
@@ -1,5 +1,5 @@
name: codeql/go-queries
-version: 1.3.0
+version: 1.3.1-dev
groups:
- go
- queries
diff --git a/java/ql/integration-tests/java/query-suite/java-code-scanning.qls.expected b/java/ql/integration-tests/java/query-suite/java-code-scanning.qls.expected
index a8ce00aca6c5..3290e0d84b0e 100644
--- a/java/ql/integration-tests/java/query-suite/java-code-scanning.qls.expected
+++ b/java/ql/integration-tests/java/query-suite/java-code-scanning.qls.expected
@@ -12,7 +12,6 @@ ql/java/ql/src/Security/CWE/CWE-023/PartialPathTraversalFromRemote.ql
ql/java/ql/src/Security/CWE/CWE-074/JndiInjection.ql
ql/java/ql/src/Security/CWE/CWE-074/XsltInjection.ql
ql/java/ql/src/Security/CWE/CWE-078/ExecTainted.ql
-ql/java/ql/src/Security/CWE/CWE-078/ExecUnescaped.ql
ql/java/ql/src/Security/CWE/CWE-079/XSS.ql
ql/java/ql/src/Security/CWE/CWE-089/SqlTainted.ql
ql/java/ql/src/Security/CWE/CWE-090/LdapInjection.ql
diff --git a/java/ql/lib/change-notes/2025-06-12-assert-cfg.md b/java/ql/lib/change-notes/2025-06-12-assert-cfg.md
new file mode 100644
index 000000000000..69219633166e
--- /dev/null
+++ b/java/ql/lib/change-notes/2025-06-12-assert-cfg.md
@@ -0,0 +1,4 @@
+---
+category: minorAnalysis
+---
+* Java `assert` statements are now assumed to be executed for the purpose of analysing control flow. This improves precision for a number of queries.
diff --git a/java/ql/lib/qlpack.yml b/java/ql/lib/qlpack.yml
index b8d73e706429..35f35a391c5f 100644
--- a/java/ql/lib/qlpack.yml
+++ b/java/ql/lib/qlpack.yml
@@ -1,5 +1,5 @@
name: codeql/java-all
-version: 7.3.1
+version: 7.3.2-dev
groups: java
dbscheme: config/semmlecode.dbscheme
extractor: java
diff --git a/java/ql/lib/semmle/code/java/ControlFlowGraph.qll b/java/ql/lib/semmle/code/java/ControlFlowGraph.qll
index e3c7ed6e5d9e..0d9d685cc716 100644
--- a/java/ql/lib/semmle/code/java/ControlFlowGraph.qll
+++ b/java/ql/lib/semmle/code/java/ControlFlowGraph.qll
@@ -327,12 +327,18 @@ private module ControlFlowGraphImpl {
)
}
+ private ThrowableType assertionError() { result.hasQualifiedName("java.lang", "AssertionError") }
+
/**
* Gets an exception type that may be thrown during execution of the
* body or the resources (if any) of `try`.
*/
private ThrowableType thrownInBody(TryStmt try) {
- exists(AstNode n | mayThrow(n, result) |
+ exists(AstNode n |
+ mayThrow(n, result)
+ or
+ n instanceof AssertStmt and result = assertionError()
+ |
n.getEnclosingStmt().getEnclosingStmt+() = try.getBlock() or
n.(Expr).getParent*() = try.getAResource()
)
@@ -394,10 +400,7 @@ private module ControlFlowGraphImpl {
exists(LogicExpr logexpr |
logexpr.(BinaryExpr).getLeftOperand() = b
or
- // Cannot use LogicExpr.getAnOperand or BinaryExpr.getAnOperand as they remove parentheses.
- logexpr.(BinaryExpr).getRightOperand() = b and inBooleanContext(logexpr)
- or
- logexpr.(UnaryExpr).getExpr() = b and inBooleanContext(logexpr)
+ logexpr.getAnOperand() = b and inBooleanContext(logexpr)
)
or
exists(ConditionalExpr condexpr |
@@ -407,6 +410,8 @@ private module ControlFlowGraphImpl {
inBooleanContext(condexpr)
)
or
+ exists(AssertStmt assertstmt | assertstmt.getExpr() = b)
+ or
exists(SwitchExpr switch |
inBooleanContext(switch) and
switch.getAResult() = b
@@ -672,8 +677,6 @@ private module ControlFlowGraphImpl {
this instanceof EmptyStmt
or
this instanceof LocalTypeDeclStmt
- or
- this instanceof AssertStmt
}
/** Gets child nodes in their order of execution. Indexing starts at either -1 or 0. */
@@ -744,8 +747,6 @@ private module ControlFlowGraphImpl {
or
index = 0 and result = this.(ThrowStmt).getExpr()
or
- index = 0 and result = this.(AssertStmt).getExpr()
- or
result = this.(RecordPatternExpr).getSubPattern(index)
}
@@ -807,9 +808,12 @@ private module ControlFlowGraphImpl {
or
result = first(n.(SynchronizedStmt).getExpr())
or
+ result = first(n.(AssertStmt).getExpr())
+ or
result.asStmt() = n and
not n instanceof PostOrderNode and
- not n instanceof SynchronizedStmt
+ not n instanceof SynchronizedStmt and
+ not n instanceof AssertStmt
or
result.asExpr() = n and n instanceof SwitchExpr
}
@@ -1112,7 +1116,22 @@ private module ControlFlowGraphImpl {
// `return` statements give rise to a `Return` completion
last.asStmt() = n.(ReturnStmt) and completion = ReturnCompletion()
or
- // `throw` statements or throwing calls give rise to ` Throw` completion
+ exists(AssertStmt assertstmt | assertstmt = n |
+ // `assert` statements may complete normally - we use the `AssertStmt` itself
+ // to represent this outcome
+ last.asStmt() = assertstmt and completion = NormalCompletion()
+ or
+ // `assert` statements may throw
+ completion = ThrowCompletion(assertionError()) and
+ (
+ last(assertstmt.getMessage(), last, NormalCompletion())
+ or
+ not exists(assertstmt.getMessage()) and
+ last(assertstmt.getExpr(), last, BooleanCompletion(false, _))
+ )
+ )
+ or
+ // `throw` statements or throwing calls give rise to `Throw` completion
exists(ThrowableType tt | mayThrow(n, tt) |
last = n.getCfgNode() and completion = ThrowCompletion(tt)
)
@@ -1520,6 +1539,17 @@ private module ControlFlowGraphImpl {
exists(int i | last(s.getVariable(i), n, completion) and result = first(s.getVariable(i + 1)))
)
or
+ // Assert statements:
+ exists(AssertStmt assertstmt |
+ last(assertstmt.getExpr(), n, completion) and
+ completion = BooleanCompletion(true, _) and
+ result.asStmt() = assertstmt
+ or
+ last(assertstmt.getExpr(), n, completion) and
+ completion = BooleanCompletion(false, _) and
+ result = first(assertstmt.getMessage())
+ )
+ or
// When expressions:
exists(WhenExpr whenexpr |
n.asExpr() = whenexpr and
diff --git a/java/ql/lib/semmle/code/java/dataflow/Nullness.qll b/java/ql/lib/semmle/code/java/dataflow/Nullness.qll
index 786207d34865..36ad96c497f0 100644
--- a/java/ql/lib/semmle/code/java/dataflow/Nullness.qll
+++ b/java/ql/lib/semmle/code/java/dataflow/Nullness.qll
@@ -141,8 +141,6 @@ private ControlFlowNode varDereference(SsaVariable v, VarAccess va) {
private ControlFlowNode ensureNotNull(SsaVariable v) {
result = varDereference(v, _)
or
- result.asStmt().(AssertStmt).getExpr() = nullGuard(v, true, false)
- or
exists(AssertTrueMethod m | result.asCall() = m.getACheck(nullGuard(v, true, false)))
or
exists(AssertFalseMethod m | result.asCall() = m.getACheck(nullGuard(v, false, false)))
diff --git a/java/ql/lib/semmle/code/java/frameworks/Assertions.qll b/java/ql/lib/semmle/code/java/frameworks/Assertions.qll
index e7f86b9bfd81..e1601c854e4e 100644
--- a/java/ql/lib/semmle/code/java/frameworks/Assertions.qll
+++ b/java/ql/lib/semmle/code/java/frameworks/Assertions.qll
@@ -110,11 +110,17 @@ predicate assertFail(BasicBlock bb, ControlFlowNode n) {
(
exists(AssertTrueMethod m |
n.asExpr() = m.getACheck(any(BooleanLiteral b | b.getBooleanValue() = false))
- ) or
+ )
+ or
exists(AssertFalseMethod m |
n.asExpr() = m.getACheck(any(BooleanLiteral b | b.getBooleanValue() = true))
- ) or
- exists(AssertFailMethod m | n.asExpr() = m.getACheck()) or
- n.asStmt().(AssertStmt).getExpr().(BooleanLiteral).getBooleanValue() = false
+ )
+ or
+ exists(AssertFailMethod m | n.asExpr() = m.getACheck())
+ or
+ exists(AssertStmt a |
+ n.asExpr() = a.getExpr() and
+ a.getExpr().(BooleanLiteral).getBooleanValue() = false
+ )
)
}
diff --git a/java/ql/src/Security/CWE/CWE-078/ExecUnescaped.ql b/java/ql/src/Security/CWE/CWE-078/ExecUnescaped.ql
index d50f583bbfe3..afa675c7f7b2 100644
--- a/java/ql/src/Security/CWE/CWE-078/ExecUnescaped.ql
+++ b/java/ql/src/Security/CWE/CWE-078/ExecUnescaped.ql
@@ -5,7 +5,7 @@
* @kind problem
* @problem.severity error
* @security-severity 9.8
- * @precision high
+ * @precision medium
* @id java/concatenated-command-line
* @tags security
* external/cwe/cwe-078
diff --git a/java/ql/src/Security/CWE/CWE-134/ExternallyControlledFormatString.ql b/java/ql/src/Security/CWE/CWE-134/ExternallyControlledFormatString.ql
index fc5af977a331..ffb191327a2b 100644
--- a/java/ql/src/Security/CWE/CWE-134/ExternallyControlledFormatString.ql
+++ b/java/ql/src/Security/CWE/CWE-134/ExternallyControlledFormatString.ql
@@ -3,7 +3,7 @@
* @description Using external input in format strings can lead to exceptions or information leaks.
* @kind path-problem
* @problem.severity error
- * @security-severity 9.3
+ * @security-severity 7.3
* @precision high
* @id java/tainted-format-string
* @tags security
diff --git a/java/ql/src/change-notes/2025-06-06-reduce-CWE-134-for-memory-safe-languages.md b/java/ql/src/change-notes/2025-06-06-reduce-CWE-134-for-memory-safe-languages.md
new file mode 100644
index 000000000000..6ab4beb72905
--- /dev/null
+++ b/java/ql/src/change-notes/2025-06-06-reduce-CWE-134-for-memory-safe-languages.md
@@ -0,0 +1,4 @@
+---
+category: queryMetadata
+---
+* Adjusts the `@security-severity` from 9.3 to 7.3 for `java/tainted-format-string` to align `CWE-134` severity for memory safe languages to better reflect their impact.
diff --git a/java/ql/src/change-notes/2025-06-10-reduce-precision-for-building-cmdline-with-string-concatenation.md b/java/ql/src/change-notes/2025-06-10-reduce-precision-for-building-cmdline-with-string-concatenation.md
new file mode 100644
index 000000000000..392e1965defa
--- /dev/null
+++ b/java/ql/src/change-notes/2025-06-10-reduce-precision-for-building-cmdline-with-string-concatenation.md
@@ -0,0 +1,4 @@
+---
+category: queryMetadata
+---
+* Adjusts the `@precision` from high to medium for `java/concatenated-command-line` because it is producing false positive alerts when the concatenated strings are hard-coded.
diff --git a/java/ql/src/qlpack.yml b/java/ql/src/qlpack.yml
index 4ea0bc399ca8..a0b518b6876f 100644
--- a/java/ql/src/qlpack.yml
+++ b/java/ql/src/qlpack.yml
@@ -1,5 +1,5 @@
name: codeql/java-queries
-version: 1.5.2
+version: 1.5.3-dev
groups:
- java
- queries
diff --git a/javascript/extractor/src/com/semmle/js/extractor/ScopeManager.java b/javascript/extractor/src/com/semmle/js/extractor/ScopeManager.java
index e7306e77e016..43e70160fe8f 100644
--- a/javascript/extractor/src/com/semmle/js/extractor/ScopeManager.java
+++ b/javascript/extractor/src/com/semmle/js/extractor/ScopeManager.java
@@ -426,7 +426,6 @@ public Void visit(Identifier nd, Void v) {
// cases where we turn on the 'declKind' flags
@Override
public Void visit(FunctionDeclaration nd, Void v) {
- if (nd.hasDeclareKeyword() && !isInTypeScriptDeclarationFile()) return null;
// strict mode functions are block-scoped, non-strict mode ones aren't
if (blockscope == isStrict) visit(nd.getId(), DeclKind.var);
return null;
@@ -434,7 +433,6 @@ public Void visit(FunctionDeclaration nd, Void v) {
@Override
public Void visit(ClassDeclaration nd, Void c) {
- if (nd.hasDeclareKeyword() && !isInTypeScriptDeclarationFile()) return null;
if (blockscope) visit(nd.getClassDef().getId(), DeclKind.varAndType);
return null;
}
@@ -483,7 +481,6 @@ public Void visit(EnhancedForStatement nd, Void v) {
@Override
public Void visit(VariableDeclaration nd, Void v) {
- if (nd.hasDeclareKeyword() && !isInTypeScriptDeclarationFile()) return null;
// in block scoping mode, only process 'let'; in non-block scoping
// mode, only process non-'let'
if (blockscope == nd.isBlockScoped(ecmaVersion)) visit(nd.getDeclarations());
@@ -518,8 +515,7 @@ public Void visit(ClassBody nd, Void c) {
@Override
public Void visit(NamespaceDeclaration nd, Void c) {
if (blockscope) return null;
- boolean isAmbientOutsideDtsFile = nd.hasDeclareKeyword() && !isInTypeScriptDeclarationFile();
- boolean hasVariable = nd.isInstantiated() && !isAmbientOutsideDtsFile;
+ boolean hasVariable = nd.isInstantiated();
visit(nd.getName(), hasVariable ? DeclKind.varAndNamespace : DeclKind.namespace);
return null;
}
diff --git a/javascript/extractor/tests/ts/output/trap/conditionalTypes.ts.trap b/javascript/extractor/tests/ts/output/trap/conditionalTypes.ts.trap
index 0751d283e6cc..2a1c0efbd441 100644
--- a/javascript/extractor/tests/ts/output/trap/conditionalTypes.ts.trap
+++ b/javascript/extractor/tests/ts/output/trap/conditionalTypes.ts.trap
@@ -8434,1316 +8434,1316 @@ namespacedecl(#22807,#22182)
scopes(#22808,9)
scopenodes(#22805,#22808)
scopenesting(#22808,#20000)
-#22809=@"local_type_name;{Unpacked};{#22808}"
-local_type_names(#22809,"Unpacked",#22808)
-#22810=@"local_type_name;{T0};{#22808}"
-local_type_names(#22810,"T0",#22808)
-#22811=@"local_type_name;{T1};{#22808}"
-local_type_names(#22811,"T1",#22808)
-#22812=@"local_type_name;{T2};{#22808}"
-local_type_names(#22812,"T2",#22808)
-#22813=@"local_type_name;{T3};{#22808}"
-local_type_names(#22813,"T3",#22808)
-#22814=@"local_type_name;{T4};{#22808}"
-local_type_names(#22814,"T4",#22808)
-#22815=@"local_type_name;{T5};{#22808}"
-local_type_names(#22815,"T5",#22808)
-#22816=@"local_type_name;{Foo};{#22808}"
-local_type_names(#22816,"Foo",#22808)
-#22817=@"local_type_name;{T10};{#22808}"
-local_type_names(#22817,"T10",#22808)
-#22818=@"local_type_name;{T11};{#22808}"
-local_type_names(#22818,"T11",#22808)
-#22819=@"local_type_name;{Bar};{#22808}"
-local_type_names(#22819,"Bar",#22808)
-#22820=@"local_type_name;{T20};{#22808}"
-local_type_names(#22820,"T20",#22808)
-#22821=@"local_type_name;{T21};{#22808}"
-local_type_names(#22821,"T21",#22808)
-#22822=@"local_type_name;{T30};{#22808}"
-local_type_names(#22822,"T30",#22808)
-#22823=@"local_type_name;{AnyFunction};{#22808}"
-local_type_names(#22823,"AnyFunction",#22808)
-#22824=@"local_type_name;{ReturnType};{#22808}"
-local_type_names(#22824,"ReturnType",#22808)
-#22825=*
-stmts(#22825,35,#22805,0,"type Un ... \n T;")
-#22826=@"loc,{#10000},73,3,77,6"
-locations_default(#22826,#10000,73,3,77,6)
-hasLocation(#22825,#22826)
-stmt_containers(#22825,#22805)
-#22827=*
-typeexprs(#22827,1,#22825,0,"Unpacked")
-hasLocation(#22827,#21482)
-enclosing_stmt(#22827,#22825)
-expr_containers(#22827,#22805)
-literals("Unpacked","Unpacked",#22827)
-typedecl(#22827,#22809)
+#22809=@"var;{foo};{#22808}"
+variables(#22809,"foo",#22808)
+#22810=@"local_type_name;{Unpacked};{#22808}"
+local_type_names(#22810,"Unpacked",#22808)
+#22811=@"local_type_name;{T0};{#22808}"
+local_type_names(#22811,"T0",#22808)
+#22812=@"local_type_name;{T1};{#22808}"
+local_type_names(#22812,"T1",#22808)
+#22813=@"local_type_name;{T2};{#22808}"
+local_type_names(#22813,"T2",#22808)
+#22814=@"local_type_name;{T3};{#22808}"
+local_type_names(#22814,"T3",#22808)
+#22815=@"local_type_name;{T4};{#22808}"
+local_type_names(#22815,"T4",#22808)
+#22816=@"local_type_name;{T5};{#22808}"
+local_type_names(#22816,"T5",#22808)
+#22817=@"local_type_name;{Foo};{#22808}"
+local_type_names(#22817,"Foo",#22808)
+#22818=@"local_type_name;{T10};{#22808}"
+local_type_names(#22818,"T10",#22808)
+#22819=@"local_type_name;{T11};{#22808}"
+local_type_names(#22819,"T11",#22808)
+#22820=@"local_type_name;{Bar};{#22808}"
+local_type_names(#22820,"Bar",#22808)
+#22821=@"local_type_name;{T20};{#22808}"
+local_type_names(#22821,"T20",#22808)
+#22822=@"local_type_name;{T21};{#22808}"
+local_type_names(#22822,"T21",#22808)
+#22823=@"local_type_name;{T30};{#22808}"
+local_type_names(#22823,"T30",#22808)
+#22824=@"local_type_name;{AnyFunction};{#22808}"
+local_type_names(#22824,"AnyFunction",#22808)
+#22825=@"local_type_name;{ReturnType};{#22808}"
+local_type_names(#22825,"ReturnType",#22808)
+#22826=*
+stmts(#22826,35,#22805,0,"type Un ... \n T;")
+#22827=@"loc,{#10000},73,3,77,6"
+locations_default(#22827,#10000,73,3,77,6)
+hasLocation(#22826,#22827)
+stmt_containers(#22826,#22805)
#22828=*
-scopes(#22828,12)
-scopenodes(#22825,#22828)
-scopenesting(#22828,#22808)
-#22829=@"local_type_name;{T};{#22828}"
-local_type_names(#22829,"T",#22828)
-#22830=*
-typeexprs(#22830,22,#22825,2,"T")
-hasLocation(#22830,#21486)
-enclosing_stmt(#22830,#22825)
-expr_containers(#22830,#22805)
+typeexprs(#22828,1,#22826,0,"Unpacked")
+hasLocation(#22828,#21482)
+enclosing_stmt(#22828,#22826)
+expr_containers(#22828,#22805)
+literals("Unpacked","Unpacked",#22828)
+typedecl(#22828,#22810)
+#22829=*
+scopes(#22829,12)
+scopenodes(#22826,#22829)
+scopenesting(#22829,#22808)
+#22830=@"local_type_name;{T};{#22829}"
+local_type_names(#22830,"T",#22829)
#22831=*
-typeexprs(#22831,1,#22830,0,"T")
+typeexprs(#22831,22,#22826,2,"T")
hasLocation(#22831,#21486)
-enclosing_stmt(#22831,#22825)
+enclosing_stmt(#22831,#22826)
expr_containers(#22831,#22805)
-literals("T","T",#22831)
-typedecl(#22831,#22829)
#22832=*
-typeexprs(#22832,28,#22825,1,"T exten ... :\n T")
-#22833=@"loc,{#10000},74,5,77,5"
-locations_default(#22833,#10000,74,5,77,5)
-hasLocation(#22832,#22833)
-enclosing_stmt(#22832,#22825)
+typeexprs(#22832,1,#22831,0,"T")
+hasLocation(#22832,#21486)
+enclosing_stmt(#22832,#22826)
expr_containers(#22832,#22805)
-#22834=*
-typeexprs(#22834,0,#22832,0,"T")
-hasLocation(#22834,#21492)
-enclosing_stmt(#22834,#22825)
-expr_containers(#22834,#22805)
-literals("T","T",#22834)
-typebind(#22834,#22829)
+literals("T","T",#22832)
+typedecl(#22832,#22830)
+#22833=*
+typeexprs(#22833,28,#22826,1,"T exten ... :\n T")
+#22834=@"loc,{#10000},74,5,77,5"
+locations_default(#22834,#10000,74,5,77,5)
+hasLocation(#22833,#22834)
+enclosing_stmt(#22833,#22826)
+expr_containers(#22833,#22805)
#22835=*
-scopes(#22835,16)
-scopenodes(#22832,#22835)
-scopenesting(#22835,#22828)
-#22836=@"local_type_name;{U};{#22835}"
-local_type_names(#22836,"U",#22835)
-#22837=*
-typeexprs(#22837,6,#22832,1,"(infer U)[]")
-#22838=@"loc,{#10000},74,15,74,25"
-locations_default(#22838,#10000,74,15,74,25)
-hasLocation(#22837,#22838)
-enclosing_stmt(#22837,#22825)
-expr_containers(#22837,#22805)
-#22839=*
-typeexprs(#22839,10,#22837,0,"(infer U)")
-#22840=@"loc,{#10000},74,15,74,23"
-locations_default(#22840,#10000,74,15,74,23)
-hasLocation(#22839,#22840)
-enclosing_stmt(#22839,#22825)
-expr_containers(#22839,#22805)
-#22841=*
-typeexprs(#22841,29,#22839,0,"infer U")
-#22842=@"loc,{#10000},74,16,74,22"
-locations_default(#22842,#10000,74,16,74,22)
-hasLocation(#22841,#22842)
-enclosing_stmt(#22841,#22825)
-expr_containers(#22841,#22805)
-#22843=*
-typeexprs(#22843,22,#22841,0,"U")
-hasLocation(#22843,#21500)
-enclosing_stmt(#22843,#22825)
-expr_containers(#22843,#22805)
+typeexprs(#22835,0,#22833,0,"T")
+hasLocation(#22835,#21492)
+enclosing_stmt(#22835,#22826)
+expr_containers(#22835,#22805)
+literals("T","T",#22835)
+typebind(#22835,#22830)
+#22836=*
+scopes(#22836,16)
+scopenodes(#22833,#22836)
+scopenesting(#22836,#22829)
+#22837=@"local_type_name;{U};{#22836}"
+local_type_names(#22837,"U",#22836)
+#22838=*
+typeexprs(#22838,6,#22833,1,"(infer U)[]")
+#22839=@"loc,{#10000},74,15,74,25"
+locations_default(#22839,#10000,74,15,74,25)
+hasLocation(#22838,#22839)
+enclosing_stmt(#22838,#22826)
+expr_containers(#22838,#22805)
+#22840=*
+typeexprs(#22840,10,#22838,0,"(infer U)")
+#22841=@"loc,{#10000},74,15,74,23"
+locations_default(#22841,#10000,74,15,74,23)
+hasLocation(#22840,#22841)
+enclosing_stmt(#22840,#22826)
+expr_containers(#22840,#22805)
+#22842=*
+typeexprs(#22842,29,#22840,0,"infer U")
+#22843=@"loc,{#10000},74,16,74,22"
+locations_default(#22843,#10000,74,16,74,22)
+hasLocation(#22842,#22843)
+enclosing_stmt(#22842,#22826)
+expr_containers(#22842,#22805)
#22844=*
-typeexprs(#22844,1,#22843,0,"U")
+typeexprs(#22844,22,#22842,0,"U")
hasLocation(#22844,#21500)
-enclosing_stmt(#22844,#22825)
+enclosing_stmt(#22844,#22826)
expr_containers(#22844,#22805)
-literals("U","U",#22844)
-typedecl(#22844,#22836)
#22845=*
-typeexprs(#22845,0,#22832,2,"U")
-hasLocation(#22845,#21510)
-enclosing_stmt(#22845,#22825)
+typeexprs(#22845,1,#22844,0,"U")
+hasLocation(#22845,#21500)
+enclosing_stmt(#22845,#22826)
expr_containers(#22845,#22805)
literals("U","U",#22845)
-typebind(#22845,#22836)
+typedecl(#22845,#22837)
#22846=*
-typeexprs(#22846,28,#22832,3,"T exten ... :\n T")
-#22847=@"loc,{#10000},75,5,77,5"
-locations_default(#22847,#10000,75,5,77,5)
-hasLocation(#22846,#22847)
-enclosing_stmt(#22846,#22825)
+typeexprs(#22846,0,#22833,2,"U")
+hasLocation(#22846,#21510)
+enclosing_stmt(#22846,#22826)
expr_containers(#22846,#22805)
-#22848=*
-typeexprs(#22848,0,#22846,0,"T")
-hasLocation(#22848,#21514)
-enclosing_stmt(#22848,#22825)
-expr_containers(#22848,#22805)
-literals("T","T",#22848)
-typebind(#22848,#22829)
+literals("U","U",#22846)
+typebind(#22846,#22837)
+#22847=*
+typeexprs(#22847,28,#22833,3,"T exten ... :\n T")
+#22848=@"loc,{#10000},75,5,77,5"
+locations_default(#22848,#10000,75,5,77,5)
+hasLocation(#22847,#22848)
+enclosing_stmt(#22847,#22826)
+expr_containers(#22847,#22805)
#22849=*
-scopes(#22849,16)
-scopenodes(#22846,#22849)
-scopenesting(#22849,#22828)
-#22850=@"local_type_name;{U};{#22849}"
-local_type_names(#22850,"U",#22849)
-#22851=*
-typeexprs(#22851,23,#22846,1,"(...arg ... infer U")
-#22852=@"loc,{#10000},75,15,75,41"
-locations_default(#22852,#10000,75,15,75,41)
-hasLocation(#22851,#22852)
-enclosing_stmt(#22851,#22825)
-expr_containers(#22851,#22805)
-#22853=*
-exprs(#22853,9,#22851,0,"(...arg ... infer U")
-hasLocation(#22853,#22852)
-enclosing_stmt(#22853,#22825)
-expr_containers(#22853,#22805)
+typeexprs(#22849,0,#22847,0,"T")
+hasLocation(#22849,#21514)
+enclosing_stmt(#22849,#22826)
+expr_containers(#22849,#22805)
+literals("T","T",#22849)
+typebind(#22849,#22830)
+#22850=*
+scopes(#22850,16)
+scopenodes(#22847,#22850)
+scopenesting(#22850,#22829)
+#22851=@"local_type_name;{U};{#22850}"
+local_type_names(#22851,"U",#22850)
+#22852=*
+typeexprs(#22852,23,#22847,1,"(...arg ... infer U")
+#22853=@"loc,{#10000},75,15,75,41"
+locations_default(#22853,#10000,75,15,75,41)
+hasLocation(#22852,#22853)
+enclosing_stmt(#22852,#22826)
+expr_containers(#22852,#22805)
#22854=*
-scopes(#22854,1)
-scopenodes(#22853,#22854)
-scopenesting(#22854,#22849)
-#22855=@"var;{args};{#22854}"
-variables(#22855,"args",#22854)
-#22856=*
-exprs(#22856,78,#22853,0,"args")
-hasLocation(#22856,#21522)
-expr_containers(#22856,#22853)
-literals("args","args",#22856)
-decl(#22856,#22855)
-#22857=@"var;{arguments};{#22854}"
-variables(#22857,"arguments",#22854)
-is_arguments_object(#22857)
-#22858=*
-typeexprs(#22858,29,#22853,-3,"infer U")
-#22859=@"loc,{#10000},75,35,75,41"
-locations_default(#22859,#10000,75,35,75,41)
-hasLocation(#22858,#22859)
-expr_containers(#22858,#22853)
-#22860=*
-typeexprs(#22860,22,#22858,0,"U")
-hasLocation(#22860,#21538)
-expr_containers(#22860,#22853)
+exprs(#22854,9,#22852,0,"(...arg ... infer U")
+hasLocation(#22854,#22853)
+enclosing_stmt(#22854,#22826)
+expr_containers(#22854,#22805)
+#22855=*
+scopes(#22855,1)
+scopenodes(#22854,#22855)
+scopenesting(#22855,#22850)
+#22856=@"var;{args};{#22855}"
+variables(#22856,"args",#22855)
+#22857=*
+exprs(#22857,78,#22854,0,"args")
+hasLocation(#22857,#21522)
+expr_containers(#22857,#22854)
+literals("args","args",#22857)
+decl(#22857,#22856)
+#22858=@"var;{arguments};{#22855}"
+variables(#22858,"arguments",#22855)
+is_arguments_object(#22858)
+#22859=*
+typeexprs(#22859,29,#22854,-3,"infer U")
+#22860=@"loc,{#10000},75,35,75,41"
+locations_default(#22860,#10000,75,35,75,41)
+hasLocation(#22859,#22860)
+expr_containers(#22859,#22854)
#22861=*
-typeexprs(#22861,1,#22860,0,"U")
+typeexprs(#22861,22,#22859,0,"U")
hasLocation(#22861,#21538)
-expr_containers(#22861,#22853)
-literals("U","U",#22861)
-typedecl(#22861,#22850)
+expr_containers(#22861,#22854)
#22862=*
-typeexprs(#22862,6,#22853,-6,"any[]")
-#22863=@"loc,{#10000},75,25,75,29"
-locations_default(#22863,#10000,75,25,75,29)
-hasLocation(#22862,#22863)
-expr_containers(#22862,#22853)
-#22864=*
-typeexprs(#22864,2,#22862,0,"any")
-hasLocation(#22864,#21526)
-expr_containers(#22864,#22853)
-literals("any","any",#22864)
-has_rest_parameter(#22853)
+typeexprs(#22862,1,#22861,0,"U")
+hasLocation(#22862,#21538)
+expr_containers(#22862,#22854)
+literals("U","U",#22862)
+typedecl(#22862,#22851)
+#22863=*
+typeexprs(#22863,6,#22854,-6,"any[]")
+#22864=@"loc,{#10000},75,25,75,29"
+locations_default(#22864,#10000,75,25,75,29)
+hasLocation(#22863,#22864)
+expr_containers(#22863,#22854)
#22865=*
-typeexprs(#22865,0,#22846,2,"U")
-hasLocation(#22865,#21542)
-enclosing_stmt(#22865,#22825)
-expr_containers(#22865,#22805)
-literals("U","U",#22865)
-typebind(#22865,#22850)
+typeexprs(#22865,2,#22863,0,"any")
+hasLocation(#22865,#21526)
+expr_containers(#22865,#22854)
+literals("any","any",#22865)
+has_rest_parameter(#22854)
#22866=*
-typeexprs(#22866,28,#22846,3,"T exten ... :\n T")
-#22867=@"loc,{#10000},76,5,77,5"
-locations_default(#22867,#10000,76,5,77,5)
-hasLocation(#22866,#22867)
-enclosing_stmt(#22866,#22825)
+typeexprs(#22866,0,#22847,2,"U")
+hasLocation(#22866,#21542)
+enclosing_stmt(#22866,#22826)
expr_containers(#22866,#22805)
-#22868=*
-typeexprs(#22868,0,#22866,0,"T")
-hasLocation(#22868,#21546)
-enclosing_stmt(#22868,#22825)
-expr_containers(#22868,#22805)
-literals("T","T",#22868)
-typebind(#22868,#22829)
+literals("U","U",#22866)
+typebind(#22866,#22851)
+#22867=*
+typeexprs(#22867,28,#22847,3,"T exten ... :\n T")
+#22868=@"loc,{#10000},76,5,77,5"
+locations_default(#22868,#10000,76,5,77,5)
+hasLocation(#22867,#22868)
+enclosing_stmt(#22867,#22826)
+expr_containers(#22867,#22805)
#22869=*
-scopes(#22869,16)
-scopenodes(#22866,#22869)
-scopenesting(#22869,#22828)
-#22870=@"local_type_name;{U};{#22869}"
-local_type_names(#22870,"U",#22869)
-#22871=*
-typeexprs(#22871,14,#22866,1,"Promise")
-#22872=@"loc,{#10000},76,15,76,30"
-locations_default(#22872,#10000,76,15,76,30)
-hasLocation(#22871,#22872)
-enclosing_stmt(#22871,#22825)
-expr_containers(#22871,#22805)
-#22873=*
-typeexprs(#22873,0,#22871,-1,"Promise")
-hasLocation(#22873,#21550)
-enclosing_stmt(#22873,#22825)
-expr_containers(#22873,#22805)
-literals("Promise","Promise",#22873)
+typeexprs(#22869,0,#22867,0,"T")
+hasLocation(#22869,#21546)
+enclosing_stmt(#22869,#22826)
+expr_containers(#22869,#22805)
+literals("T","T",#22869)
+typebind(#22869,#22830)
+#22870=*
+scopes(#22870,16)
+scopenodes(#22867,#22870)
+scopenesting(#22870,#22829)
+#22871=@"local_type_name;{U};{#22870}"
+local_type_names(#22871,"U",#22870)
+#22872=*
+typeexprs(#22872,14,#22867,1,"Promise")
+#22873=@"loc,{#10000},76,15,76,30"
+locations_default(#22873,#10000,76,15,76,30)
+hasLocation(#22872,#22873)
+enclosing_stmt(#22872,#22826)
+expr_containers(#22872,#22805)
#22874=*
-typeexprs(#22874,29,#22871,0,"infer U")
-#22875=@"loc,{#10000},76,23,76,29"
-locations_default(#22875,#10000,76,23,76,29)
-hasLocation(#22874,#22875)
-enclosing_stmt(#22874,#22825)
+typeexprs(#22874,0,#22872,-1,"Promise")
+hasLocation(#22874,#21550)
+enclosing_stmt(#22874,#22826)
expr_containers(#22874,#22805)
-#22876=*
-typeexprs(#22876,22,#22874,0,"U")
-hasLocation(#22876,#21556)
-enclosing_stmt(#22876,#22825)
-expr_containers(#22876,#22805)
+literals("Promise","Promise",#22874)
+#22875=*
+typeexprs(#22875,29,#22872,0,"infer U")
+#22876=@"loc,{#10000},76,23,76,29"
+locations_default(#22876,#10000,76,23,76,29)
+hasLocation(#22875,#22876)
+enclosing_stmt(#22875,#22826)
+expr_containers(#22875,#22805)
#22877=*
-typeexprs(#22877,1,#22876,0,"U")
+typeexprs(#22877,22,#22875,0,"U")
hasLocation(#22877,#21556)
-enclosing_stmt(#22877,#22825)
+enclosing_stmt(#22877,#22826)
expr_containers(#22877,#22805)
-literals("U","U",#22877)
-typedecl(#22877,#22870)
#22878=*
-typeexprs(#22878,0,#22866,2,"U")
-hasLocation(#22878,#21562)
-enclosing_stmt(#22878,#22825)
+typeexprs(#22878,1,#22877,0,"U")
+hasLocation(#22878,#21556)
+enclosing_stmt(#22878,#22826)
expr_containers(#22878,#22805)
literals("U","U",#22878)
-typebind(#22878,#22870)
+typedecl(#22878,#22871)
#22879=*
-typeexprs(#22879,0,#22866,3,"T")
-hasLocation(#22879,#21566)
-enclosing_stmt(#22879,#22825)
+typeexprs(#22879,0,#22867,2,"U")
+hasLocation(#22879,#21562)
+enclosing_stmt(#22879,#22826)
expr_containers(#22879,#22805)
-literals("T","T",#22879)
-typebind(#22879,#22829)
+literals("U","U",#22879)
+typebind(#22879,#22871)
#22880=*
-stmts(#22880,35,#22805,1,"type T0 ... tring>;")
-#22881=@"loc,{#10000},79,3,79,29"
-locations_default(#22881,#10000,79,3,79,29)
-hasLocation(#22880,#22881)
-stmt_containers(#22880,#22805)
-#22882=*
-typeexprs(#22882,1,#22880,0,"T0")
-hasLocation(#22882,#21572)
-enclosing_stmt(#22882,#22880)
-expr_containers(#22882,#22805)
-literals("T0","T0",#22882)
-typedecl(#22882,#22810)
+typeexprs(#22880,0,#22867,3,"T")
+hasLocation(#22880,#21566)
+enclosing_stmt(#22880,#22826)
+expr_containers(#22880,#22805)
+literals("T","T",#22880)
+typebind(#22880,#22830)
+#22881=*
+stmts(#22881,35,#22805,1,"type T0 ... tring>;")
+#22882=@"loc,{#10000},79,3,79,29"
+locations_default(#22882,#10000,79,3,79,29)
+hasLocation(#22881,#22882)
+stmt_containers(#22881,#22805)
#22883=*
-typeexprs(#22883,14,#22880,1,"Unpacked")
-#22884=@"loc,{#10000},79,13,79,28"
-locations_default(#22884,#10000,79,13,79,28)
-hasLocation(#22883,#22884)
-enclosing_stmt(#22883,#22880)
+typeexprs(#22883,1,#22881,0,"T0")
+hasLocation(#22883,#21572)
+enclosing_stmt(#22883,#22881)
expr_containers(#22883,#22805)
-#22885=*
-typeexprs(#22885,0,#22883,-1,"Unpacked")
-hasLocation(#22885,#21576)
-enclosing_stmt(#22885,#22880)
-expr_containers(#22885,#22805)
-literals("Unpacked","Unpacked",#22885)
-typebind(#22885,#22809)
+literals("T0","T0",#22883)
+typedecl(#22883,#22811)
+#22884=*
+typeexprs(#22884,14,#22881,1,"Unpacked")
+#22885=@"loc,{#10000},79,13,79,28"
+locations_default(#22885,#10000,79,13,79,28)
+hasLocation(#22884,#22885)
+enclosing_stmt(#22884,#22881)
+expr_containers(#22884,#22805)
#22886=*
-typeexprs(#22886,2,#22883,0,"string")
-hasLocation(#22886,#21580)
-enclosing_stmt(#22886,#22880)
+typeexprs(#22886,0,#22884,-1,"Unpacked")
+hasLocation(#22886,#21576)
+enclosing_stmt(#22886,#22881)
expr_containers(#22886,#22805)
-literals("string","string",#22886)
+literals("Unpacked","Unpacked",#22886)
+typebind(#22886,#22810)
#22887=*
-stmts(#22887,35,#22805,2,"type T1 ... ing[]>;")
-#22888=@"loc,{#10000},80,3,80,31"
-locations_default(#22888,#10000,80,3,80,31)
-hasLocation(#22887,#22888)
-stmt_containers(#22887,#22805)
-#22889=*
-typeexprs(#22889,1,#22887,0,"T1")
-hasLocation(#22889,#21588)
-enclosing_stmt(#22889,#22887)
-expr_containers(#22889,#22805)
-literals("T1","T1",#22889)
-typedecl(#22889,#22811)
+typeexprs(#22887,2,#22884,0,"string")
+hasLocation(#22887,#21580)
+enclosing_stmt(#22887,#22881)
+expr_containers(#22887,#22805)
+literals("string","string",#22887)
+#22888=*
+stmts(#22888,35,#22805,2,"type T1 ... ing[]>;")
+#22889=@"loc,{#10000},80,3,80,31"
+locations_default(#22889,#10000,80,3,80,31)
+hasLocation(#22888,#22889)
+stmt_containers(#22888,#22805)
#22890=*
-typeexprs(#22890,14,#22887,1,"Unpacked")
-#22891=@"loc,{#10000},80,13,80,30"
-locations_default(#22891,#10000,80,13,80,30)
-hasLocation(#22890,#22891)
-enclosing_stmt(#22890,#22887)
+typeexprs(#22890,1,#22888,0,"T1")
+hasLocation(#22890,#21588)
+enclosing_stmt(#22890,#22888)
expr_containers(#22890,#22805)
-#22892=*
-typeexprs(#22892,0,#22890,-1,"Unpacked")
-hasLocation(#22892,#21592)
-enclosing_stmt(#22892,#22887)
-expr_containers(#22892,#22805)
-literals("Unpacked","Unpacked",#22892)
-typebind(#22892,#22809)
+literals("T1","T1",#22890)
+typedecl(#22890,#22812)
+#22891=*
+typeexprs(#22891,14,#22888,1,"Unpacked")
+#22892=@"loc,{#10000},80,13,80,30"
+locations_default(#22892,#10000,80,13,80,30)
+hasLocation(#22891,#22892)
+enclosing_stmt(#22891,#22888)
+expr_containers(#22891,#22805)
#22893=*
-typeexprs(#22893,6,#22890,0,"string[]")
-#22894=@"loc,{#10000},80,22,80,29"
-locations_default(#22894,#10000,80,22,80,29)
-hasLocation(#22893,#22894)
-enclosing_stmt(#22893,#22887)
+typeexprs(#22893,0,#22891,-1,"Unpacked")
+hasLocation(#22893,#21592)
+enclosing_stmt(#22893,#22888)
expr_containers(#22893,#22805)
-#22895=*
-typeexprs(#22895,2,#22893,0,"string")
-hasLocation(#22895,#21596)
-enclosing_stmt(#22895,#22887)
-expr_containers(#22895,#22805)
-literals("string","string",#22895)
+literals("Unpacked","Unpacked",#22893)
+typebind(#22893,#22810)
+#22894=*
+typeexprs(#22894,6,#22891,0,"string[]")
+#22895=@"loc,{#10000},80,22,80,29"
+locations_default(#22895,#10000,80,22,80,29)
+hasLocation(#22894,#22895)
+enclosing_stmt(#22894,#22888)
+expr_containers(#22894,#22805)
#22896=*
-stmts(#22896,35,#22805,3,"type T2 ... tring>;")
-#22897=@"loc,{#10000},81,3,81,35"
-locations_default(#22897,#10000,81,3,81,35)
-hasLocation(#22896,#22897)
-stmt_containers(#22896,#22805)
-#22898=*
-typeexprs(#22898,1,#22896,0,"T2")
-hasLocation(#22898,#21608)
-enclosing_stmt(#22898,#22896)
-expr_containers(#22898,#22805)
-literals("T2","T2",#22898)
-typedecl(#22898,#22812)
+typeexprs(#22896,2,#22894,0,"string")
+hasLocation(#22896,#21596)
+enclosing_stmt(#22896,#22888)
+expr_containers(#22896,#22805)
+literals("string","string",#22896)
+#22897=*
+stmts(#22897,35,#22805,3,"type T2 ... tring>;")
+#22898=@"loc,{#10000},81,3,81,35"
+locations_default(#22898,#10000,81,3,81,35)
+hasLocation(#22897,#22898)
+stmt_containers(#22897,#22805)
#22899=*
-typeexprs(#22899,14,#22896,1,"Unpacke ... string>")
-#22900=@"loc,{#10000},81,13,81,34"
-locations_default(#22900,#10000,81,13,81,34)
-hasLocation(#22899,#22900)
-enclosing_stmt(#22899,#22896)
+typeexprs(#22899,1,#22897,0,"T2")
+hasLocation(#22899,#21608)
+enclosing_stmt(#22899,#22897)
expr_containers(#22899,#22805)
-#22901=*
-typeexprs(#22901,0,#22899,-1,"Unpacked")
-hasLocation(#22901,#21612)
-enclosing_stmt(#22901,#22896)
-expr_containers(#22901,#22805)
-literals("Unpacked","Unpacked",#22901)
-typebind(#22901,#22809)
+literals("T2","T2",#22899)
+typedecl(#22899,#22813)
+#22900=*
+typeexprs(#22900,14,#22897,1,"Unpacke ... string>")
+#22901=@"loc,{#10000},81,13,81,34"
+locations_default(#22901,#10000,81,13,81,34)
+hasLocation(#22900,#22901)
+enclosing_stmt(#22900,#22897)
+expr_containers(#22900,#22805)
#22902=*
-typeexprs(#22902,23,#22899,0,"() => string")
-#22903=@"loc,{#10000},81,22,81,33"
-locations_default(#22903,#10000,81,22,81,33)
-hasLocation(#22902,#22903)
-enclosing_stmt(#22902,#22896)
+typeexprs(#22902,0,#22900,-1,"Unpacked")
+hasLocation(#22902,#21612)
+enclosing_stmt(#22902,#22897)
expr_containers(#22902,#22805)
-#22904=*
-exprs(#22904,9,#22902,0,"() => string")
-hasLocation(#22904,#22903)
-enclosing_stmt(#22904,#22896)
-expr_containers(#22904,#22805)
+literals("Unpacked","Unpacked",#22902)
+typebind(#22902,#22810)
+#22903=*
+typeexprs(#22903,23,#22900,0,"() => string")
+#22904=@"loc,{#10000},81,22,81,33"
+locations_default(#22904,#10000,81,22,81,33)
+hasLocation(#22903,#22904)
+enclosing_stmt(#22903,#22897)
+expr_containers(#22903,#22805)
#22905=*
-scopes(#22905,1)
-scopenodes(#22904,#22905)
-scopenesting(#22905,#22808)
-#22906=@"var;{arguments};{#22905}"
-variables(#22906,"arguments",#22905)
-is_arguments_object(#22906)
-#22907=*
-typeexprs(#22907,2,#22904,-3,"string")
-hasLocation(#22907,#21622)
-expr_containers(#22907,#22904)
-literals("string","string",#22907)
+exprs(#22905,9,#22903,0,"() => string")
+hasLocation(#22905,#22904)
+enclosing_stmt(#22905,#22897)
+expr_containers(#22905,#22805)
+#22906=*
+scopes(#22906,1)
+scopenodes(#22905,#22906)
+scopenesting(#22906,#22808)
+#22907=@"var;{arguments};{#22906}"
+variables(#22907,"arguments",#22906)
+is_arguments_object(#22907)
#22908=*
-stmts(#22908,35,#22805,4,"type T3 ... ring>>;")
-#22909=@"loc,{#10000},82,3,82,38"
-locations_default(#22909,#10000,82,3,82,38)
-hasLocation(#22908,#22909)
-stmt_containers(#22908,#22805)
-#22910=*
-typeexprs(#22910,1,#22908,0,"T3")
-hasLocation(#22910,#21630)
-enclosing_stmt(#22910,#22908)
-expr_containers(#22910,#22805)
-literals("T3","T3",#22910)
-typedecl(#22910,#22813)
+typeexprs(#22908,2,#22905,-3,"string")
+hasLocation(#22908,#21622)
+expr_containers(#22908,#22905)
+literals("string","string",#22908)
+#22909=*
+stmts(#22909,35,#22805,4,"type T3 ... ring>>;")
+#22910=@"loc,{#10000},82,3,82,38"
+locations_default(#22910,#10000,82,3,82,38)
+hasLocation(#22909,#22910)
+stmt_containers(#22909,#22805)
#22911=*
-typeexprs(#22911,14,#22908,1,"Unpacke ... tring>>")
-#22912=@"loc,{#10000},82,13,82,37"
-locations_default(#22912,#10000,82,13,82,37)
-hasLocation(#22911,#22912)
-enclosing_stmt(#22911,#22908)
+typeexprs(#22911,1,#22909,0,"T3")
+hasLocation(#22911,#21630)
+enclosing_stmt(#22911,#22909)
expr_containers(#22911,#22805)
-#22913=*
-typeexprs(#22913,0,#22911,-1,"Unpacked")
-hasLocation(#22913,#21634)
-enclosing_stmt(#22913,#22908)
-expr_containers(#22913,#22805)
-literals("Unpacked","Unpacked",#22913)
-typebind(#22913,#22809)
+literals("T3","T3",#22911)
+typedecl(#22911,#22814)
+#22912=*
+typeexprs(#22912,14,#22909,1,"Unpacke ... tring>>")
+#22913=@"loc,{#10000},82,13,82,37"
+locations_default(#22913,#10000,82,13,82,37)
+hasLocation(#22912,#22913)
+enclosing_stmt(#22912,#22909)
+expr_containers(#22912,#22805)
#22914=*
-typeexprs(#22914,14,#22911,0,"Promise")
-#22915=@"loc,{#10000},82,22,82,36"
-locations_default(#22915,#10000,82,22,82,36)
-hasLocation(#22914,#22915)
-enclosing_stmt(#22914,#22908)
+typeexprs(#22914,0,#22912,-1,"Unpacked")
+hasLocation(#22914,#21634)
+enclosing_stmt(#22914,#22909)
expr_containers(#22914,#22805)
-#22916=*
-typeexprs(#22916,0,#22914,-1,"Promise")
-hasLocation(#22916,#21638)
-enclosing_stmt(#22916,#22908)
-expr_containers(#22916,#22805)
-literals("Promise","Promise",#22916)
+literals("Unpacked","Unpacked",#22914)
+typebind(#22914,#22810)
+#22915=*
+typeexprs(#22915,14,#22912,0,"Promise")
+#22916=@"loc,{#10000},82,22,82,36"
+locations_default(#22916,#10000,82,22,82,36)
+hasLocation(#22915,#22916)
+enclosing_stmt(#22915,#22909)
+expr_containers(#22915,#22805)
#22917=*
-typeexprs(#22917,2,#22914,0,"string")
-hasLocation(#22917,#21642)
-enclosing_stmt(#22917,#22908)
+typeexprs(#22917,0,#22915,-1,"Promise")
+hasLocation(#22917,#21638)
+enclosing_stmt(#22917,#22909)
expr_containers(#22917,#22805)
-literals("string","string",#22917)
+literals("Promise","Promise",#22917)
#22918=*
-stmts(#22918,35,#22805,5,"type T4 ... ng>[]>;")
-#22919=@"loc,{#10000},83,3,83,40"
-locations_default(#22919,#10000,83,3,83,40)
-hasLocation(#22918,#22919)
-stmt_containers(#22918,#22805)
-#22920=*
-typeexprs(#22920,1,#22918,0,"T4")
-hasLocation(#22920,#21652)
-enclosing_stmt(#22920,#22918)
-expr_containers(#22920,#22805)
-literals("T4","T4",#22920)
-typedecl(#22920,#22814)
+typeexprs(#22918,2,#22915,0,"string")
+hasLocation(#22918,#21642)
+enclosing_stmt(#22918,#22909)
+expr_containers(#22918,#22805)
+literals("string","string",#22918)
+#22919=*
+stmts(#22919,35,#22805,5,"type T4 ... ng>[]>;")
+#22920=@"loc,{#10000},83,3,83,40"
+locations_default(#22920,#10000,83,3,83,40)
+hasLocation(#22919,#22920)
+stmt_containers(#22919,#22805)
#22921=*
-typeexprs(#22921,14,#22918,1,"Unpacke ... ing>[]>")
-#22922=@"loc,{#10000},83,13,83,39"
-locations_default(#22922,#10000,83,13,83,39)
-hasLocation(#22921,#22922)
-enclosing_stmt(#22921,#22918)
+typeexprs(#22921,1,#22919,0,"T4")
+hasLocation(#22921,#21652)
+enclosing_stmt(#22921,#22919)
expr_containers(#22921,#22805)
-#22923=*
-typeexprs(#22923,0,#22921,-1,"Unpacked")
-hasLocation(#22923,#21656)
-enclosing_stmt(#22923,#22918)
-expr_containers(#22923,#22805)
-literals("Unpacked","Unpacked",#22923)
-typebind(#22923,#22809)
+literals("T4","T4",#22921)
+typedecl(#22921,#22815)
+#22922=*
+typeexprs(#22922,14,#22919,1,"Unpacke ... ing>[]>")
+#22923=@"loc,{#10000},83,13,83,39"
+locations_default(#22923,#10000,83,13,83,39)
+hasLocation(#22922,#22923)
+enclosing_stmt(#22922,#22919)
+expr_containers(#22922,#22805)
#22924=*
-typeexprs(#22924,6,#22921,0,"Promise[]")
-#22925=@"loc,{#10000},83,22,83,38"
-locations_default(#22925,#10000,83,22,83,38)
-hasLocation(#22924,#22925)
-enclosing_stmt(#22924,#22918)
+typeexprs(#22924,0,#22922,-1,"Unpacked")
+hasLocation(#22924,#21656)
+enclosing_stmt(#22924,#22919)
expr_containers(#22924,#22805)
-#22926=*
-typeexprs(#22926,14,#22924,0,"Promise")
-#22927=@"loc,{#10000},83,22,83,36"
-locations_default(#22927,#10000,83,22,83,36)
-hasLocation(#22926,#22927)
-enclosing_stmt(#22926,#22918)
-expr_containers(#22926,#22805)
-#22928=*
-typeexprs(#22928,0,#22926,-1,"Promise")
-hasLocation(#22928,#21660)
-enclosing_stmt(#22928,#22918)
-expr_containers(#22928,#22805)
-literals("Promise","Promise",#22928)
+literals("Unpacked","Unpacked",#22924)
+typebind(#22924,#22810)
+#22925=*
+typeexprs(#22925,6,#22922,0,"Promise[]")
+#22926=@"loc,{#10000},83,22,83,38"
+locations_default(#22926,#10000,83,22,83,38)
+hasLocation(#22925,#22926)
+enclosing_stmt(#22925,#22919)
+expr_containers(#22925,#22805)
+#22927=*
+typeexprs(#22927,14,#22925,0,"Promise")
+#22928=@"loc,{#10000},83,22,83,36"
+locations_default(#22928,#10000,83,22,83,36)
+hasLocation(#22927,#22928)
+enclosing_stmt(#22927,#22919)
+expr_containers(#22927,#22805)
#22929=*
-typeexprs(#22929,2,#22926,0,"string")
-hasLocation(#22929,#21664)
-enclosing_stmt(#22929,#22918)
+typeexprs(#22929,0,#22927,-1,"Promise")
+hasLocation(#22929,#21660)
+enclosing_stmt(#22929,#22919)
expr_containers(#22929,#22805)
-literals("string","string",#22929)
+literals("Promise","Promise",#22929)
#22930=*
-stmts(#22930,35,#22805,6,"type T5 ... g>[]>>;")
-#22931=@"loc,{#10000},84,3,84,50"
-locations_default(#22931,#10000,84,3,84,50)
-hasLocation(#22930,#22931)
-stmt_containers(#22930,#22805)
-#22932=*
-typeexprs(#22932,1,#22930,0,"T5")
-hasLocation(#22932,#21678)
-enclosing_stmt(#22932,#22930)
-expr_containers(#22932,#22805)
-literals("T5","T5",#22932)
-typedecl(#22932,#22815)
+typeexprs(#22930,2,#22927,0,"string")
+hasLocation(#22930,#21664)
+enclosing_stmt(#22930,#22919)
+expr_containers(#22930,#22805)
+literals("string","string",#22930)
+#22931=*
+stmts(#22931,35,#22805,6,"type T5 ... g>[]>>;")
+#22932=@"loc,{#10000},84,3,84,50"
+locations_default(#22932,#10000,84,3,84,50)
+hasLocation(#22931,#22932)
+stmt_containers(#22931,#22805)
#22933=*
-typeexprs(#22933,14,#22930,1,"Unpacke ... ng>[]>>")
-#22934=@"loc,{#10000},84,13,84,49"
-locations_default(#22934,#10000,84,13,84,49)
-hasLocation(#22933,#22934)
-enclosing_stmt(#22933,#22930)
+typeexprs(#22933,1,#22931,0,"T5")
+hasLocation(#22933,#21678)
+enclosing_stmt(#22933,#22931)
expr_containers(#22933,#22805)
-#22935=*
-typeexprs(#22935,0,#22933,-1,"Unpacked")
-hasLocation(#22935,#21682)
-enclosing_stmt(#22935,#22930)
-expr_containers(#22935,#22805)
-literals("Unpacked","Unpacked",#22935)
-typebind(#22935,#22809)
+literals("T5","T5",#22933)
+typedecl(#22933,#22816)
+#22934=*
+typeexprs(#22934,14,#22931,1,"Unpacke ... ng>[]>>")
+#22935=@"loc,{#10000},84,13,84,49"
+locations_default(#22935,#10000,84,13,84,49)
+hasLocation(#22934,#22935)
+enclosing_stmt(#22934,#22931)
+expr_containers(#22934,#22805)
#22936=*
-typeexprs(#22936,14,#22933,0,"Unpacke ... ing>[]>")
-#22937=@"loc,{#10000},84,22,84,48"
-locations_default(#22937,#10000,84,22,84,48)
-hasLocation(#22936,#22937)
-enclosing_stmt(#22936,#22930)
+typeexprs(#22936,0,#22934,-1,"Unpacked")
+hasLocation(#22936,#21682)
+enclosing_stmt(#22936,#22931)
expr_containers(#22936,#22805)
-#22938=*
-typeexprs(#22938,0,#22936,-1,"Unpacked")
-hasLocation(#22938,#21686)
-enclosing_stmt(#22938,#22930)
-expr_containers(#22938,#22805)
-literals("Unpacked","Unpacked",#22938)
-typebind(#22938,#22809)
+literals("Unpacked","Unpacked",#22936)
+typebind(#22936,#22810)
+#22937=*
+typeexprs(#22937,14,#22934,0,"Unpacke ... ing>[]>")
+#22938=@"loc,{#10000},84,22,84,48"
+locations_default(#22938,#10000,84,22,84,48)
+hasLocation(#22937,#22938)
+enclosing_stmt(#22937,#22931)
+expr_containers(#22937,#22805)
#22939=*
-typeexprs(#22939,6,#22936,0,"Promise[]")
-#22940=@"loc,{#10000},84,31,84,47"
-locations_default(#22940,#10000,84,31,84,47)
-hasLocation(#22939,#22940)
-enclosing_stmt(#22939,#22930)
+typeexprs(#22939,0,#22937,-1,"Unpacked")
+hasLocation(#22939,#21686)
+enclosing_stmt(#22939,#22931)
expr_containers(#22939,#22805)
-#22941=*
-typeexprs(#22941,14,#22939,0,"Promise")
-#22942=@"loc,{#10000},84,31,84,45"
-locations_default(#22942,#10000,84,31,84,45)
-hasLocation(#22941,#22942)
-enclosing_stmt(#22941,#22930)
-expr_containers(#22941,#22805)
-#22943=*
-typeexprs(#22943,0,#22941,-1,"Promise")
-hasLocation(#22943,#21690)
-enclosing_stmt(#22943,#22930)
-expr_containers(#22943,#22805)
-literals("Promise","Promise",#22943)
+literals("Unpacked","Unpacked",#22939)
+typebind(#22939,#22810)
+#22940=*
+typeexprs(#22940,6,#22937,0,"Promise[]")
+#22941=@"loc,{#10000},84,31,84,47"
+locations_default(#22941,#10000,84,31,84,47)
+hasLocation(#22940,#22941)
+enclosing_stmt(#22940,#22931)
+expr_containers(#22940,#22805)
+#22942=*
+typeexprs(#22942,14,#22940,0,"Promise")
+#22943=@"loc,{#10000},84,31,84,45"
+locations_default(#22943,#10000,84,31,84,45)
+hasLocation(#22942,#22943)
+enclosing_stmt(#22942,#22931)
+expr_containers(#22942,#22805)
#22944=*
-typeexprs(#22944,2,#22941,0,"string")
-hasLocation(#22944,#21694)
-enclosing_stmt(#22944,#22930)
+typeexprs(#22944,0,#22942,-1,"Promise")
+hasLocation(#22944,#21690)
+enclosing_stmt(#22944,#22931)
expr_containers(#22944,#22805)
-literals("string","string",#22944)
+literals("Promise","Promise",#22944)
#22945=*
-stmts(#22945,35,#22805,7,"type Fo ... never;")
-#22946=@"loc,{#10000},86,3,86,65"
-locations_default(#22946,#10000,86,3,86,65)
-hasLocation(#22945,#22946)
-stmt_containers(#22945,#22805)
-#22947=*
-typeexprs(#22947,1,#22945,0,"Foo")
-hasLocation(#22947,#21710)
-enclosing_stmt(#22947,#22945)
-expr_containers(#22947,#22805)
-literals("Foo","Foo",#22947)
-typedecl(#22947,#22816)
+typeexprs(#22945,2,#22942,0,"string")
+hasLocation(#22945,#21694)
+enclosing_stmt(#22945,#22931)
+expr_containers(#22945,#22805)
+literals("string","string",#22945)
+#22946=*
+stmts(#22946,35,#22805,7,"type Fo ... never;")
+#22947=@"loc,{#10000},86,3,86,65"
+locations_default(#22947,#10000,86,3,86,65)
+hasLocation(#22946,#22947)
+stmt_containers(#22946,#22805)
#22948=*
-scopes(#22948,12)
-scopenodes(#22945,#22948)
-scopenesting(#22948,#22808)
-#22949=@"local_type_name;{T};{#22948}"
-local_type_names(#22949,"T",#22948)
-#22950=*
-typeexprs(#22950,22,#22945,2,"T")
-hasLocation(#22950,#21714)
-enclosing_stmt(#22950,#22945)
-expr_containers(#22950,#22805)
+typeexprs(#22948,1,#22946,0,"Foo")
+hasLocation(#22948,#21710)
+enclosing_stmt(#22948,#22946)
+expr_containers(#22948,#22805)
+literals("Foo","Foo",#22948)
+typedecl(#22948,#22817)
+#22949=*
+scopes(#22949,12)
+scopenodes(#22946,#22949)
+scopenesting(#22949,#22808)
+#22950=@"local_type_name;{T};{#22949}"
+local_type_names(#22950,"T",#22949)
#22951=*
-typeexprs(#22951,1,#22950,0,"T")
+typeexprs(#22951,22,#22946,2,"T")
hasLocation(#22951,#21714)
-enclosing_stmt(#22951,#22945)
+enclosing_stmt(#22951,#22946)
expr_containers(#22951,#22805)
-literals("T","T",#22951)
-typedecl(#22951,#22949)
#22952=*
-typeexprs(#22952,28,#22945,1,"T exten ... : never")
-#22953=@"loc,{#10000},86,17,86,64"
-locations_default(#22953,#10000,86,17,86,64)
-hasLocation(#22952,#22953)
-enclosing_stmt(#22952,#22945)
+typeexprs(#22952,1,#22951,0,"T")
+hasLocation(#22952,#21714)
+enclosing_stmt(#22952,#22946)
expr_containers(#22952,#22805)
-#22954=*
-typeexprs(#22954,0,#22952,0,"T")
-hasLocation(#22954,#21720)
-enclosing_stmt(#22954,#22945)
-expr_containers(#22954,#22805)
-literals("T","T",#22954)
-typebind(#22954,#22949)
+literals("T","T",#22952)
+typedecl(#22952,#22950)
+#22953=*
+typeexprs(#22953,28,#22946,1,"T exten ... : never")
+#22954=@"loc,{#10000},86,17,86,64"
+locations_default(#22954,#10000,86,17,86,64)
+hasLocation(#22953,#22954)
+enclosing_stmt(#22953,#22946)
+expr_containers(#22953,#22805)
#22955=*
-typeexprs(#22955,21,#22952,1,"{ a: in ... fer U }")
-#22956=@"loc,{#10000},86,27,86,52"
-locations_default(#22956,#10000,86,27,86,52)
-hasLocation(#22955,#22956)
-enclosing_stmt(#22955,#22945)
+typeexprs(#22955,0,#22953,0,"T")
+hasLocation(#22955,#21720)
+enclosing_stmt(#22955,#22946)
expr_containers(#22955,#22805)
-#22957=*
-properties(#22957,#22955,0,8,"a: infer U,")
-#22958=@"loc,{#10000},86,29,86,39"
-locations_default(#22958,#10000,86,29,86,39)
-hasLocation(#22957,#22958)
-#22959=*
-exprs(#22959,0,#22957,0,"a")
-hasLocation(#22959,#21726)
-enclosing_stmt(#22959,#22945)
-expr_containers(#22959,#22805)
-literals("a","a",#22959)
-is_abstract_member(#22957)
+literals("T","T",#22955)
+typebind(#22955,#22950)
+#22956=*
+typeexprs(#22956,21,#22953,1,"{ a: in ... fer U }")
+#22957=@"loc,{#10000},86,27,86,52"
+locations_default(#22957,#10000,86,27,86,52)
+hasLocation(#22956,#22957)
+enclosing_stmt(#22956,#22946)
+expr_containers(#22956,#22805)
+#22958=*
+properties(#22958,#22956,0,8,"a: infer U,")
+#22959=@"loc,{#10000},86,29,86,39"
+locations_default(#22959,#10000,86,29,86,39)
+hasLocation(#22958,#22959)
#22960=*
-typeexprs(#22960,29,#22957,2,"infer U")
-#22961=@"loc,{#10000},86,32,86,38"
-locations_default(#22961,#10000,86,32,86,38)
-hasLocation(#22960,#22961)
-enclosing_stmt(#22960,#22945)
+exprs(#22960,0,#22958,0,"a")
+hasLocation(#22960,#21726)
+enclosing_stmt(#22960,#22946)
expr_containers(#22960,#22805)
-#22962=*
-typeexprs(#22962,22,#22960,0,"U")
-hasLocation(#22962,#21732)
-enclosing_stmt(#22962,#22945)
-expr_containers(#22962,#22805)
+literals("a","a",#22960)
+is_abstract_member(#22958)
+#22961=*
+typeexprs(#22961,29,#22958,2,"infer U")
+#22962=@"loc,{#10000},86,32,86,38"
+locations_default(#22962,#10000,86,32,86,38)
+hasLocation(#22961,#22962)
+enclosing_stmt(#22961,#22946)
+expr_containers(#22961,#22805)
#22963=*
-typeexprs(#22963,1,#22962,0,"U")
+typeexprs(#22963,22,#22961,0,"U")
hasLocation(#22963,#21732)
-enclosing_stmt(#22963,#22945)
+enclosing_stmt(#22963,#22946)
expr_containers(#22963,#22805)
-literals("U","U",#22963)
#22964=*
-properties(#22964,#22955,1,8,"b: infer U")
-#22965=@"loc,{#10000},86,41,86,50"
-locations_default(#22965,#10000,86,41,86,50)
-hasLocation(#22964,#22965)
-#22966=*
-exprs(#22966,0,#22964,0,"b")
-hasLocation(#22966,#21736)
-enclosing_stmt(#22966,#22945)
-expr_containers(#22966,#22805)
-literals("b","b",#22966)
-is_abstract_member(#22964)
+typeexprs(#22964,1,#22963,0,"U")
+hasLocation(#22964,#21732)
+enclosing_stmt(#22964,#22946)
+expr_containers(#22964,#22805)
+literals("U","U",#22964)
+#22965=*
+properties(#22965,#22956,1,8,"b: infer U")
+#22966=@"loc,{#10000},86,41,86,50"
+locations_default(#22966,#10000,86,41,86,50)
+hasLocation(#22965,#22966)
#22967=*
-typeexprs(#22967,29,#22964,2,"infer U")
-#22968=@"loc,{#10000},86,44,86,50"
-locations_default(#22968,#10000,86,44,86,50)
-hasLocation(#22967,#22968)
-enclosing_stmt(#22967,#22945)
+exprs(#22967,0,#22965,0,"b")
+hasLocation(#22967,#21736)
+enclosing_stmt(#22967,#22946)
expr_containers(#22967,#22805)
-#22969=*
-typeexprs(#22969,22,#22967,0,"U")
-hasLocation(#22969,#21742)
-enclosing_stmt(#22969,#22945)
-expr_containers(#22969,#22805)
+literals("b","b",#22967)
+is_abstract_member(#22965)
+#22968=*
+typeexprs(#22968,29,#22965,2,"infer U")
+#22969=@"loc,{#10000},86,44,86,50"
+locations_default(#22969,#10000,86,44,86,50)
+hasLocation(#22968,#22969)
+enclosing_stmt(#22968,#22946)
+expr_containers(#22968,#22805)
#22970=*
-typeexprs(#22970,1,#22969,0,"U")
+typeexprs(#22970,22,#22968,0,"U")
hasLocation(#22970,#21742)
-enclosing_stmt(#22970,#22945)
+enclosing_stmt(#22970,#22946)
expr_containers(#22970,#22805)
-literals("U","U",#22970)
#22971=*
-typeexprs(#22971,0,#22952,2,"U")
-hasLocation(#22971,#21748)
-enclosing_stmt(#22971,#22945)
+typeexprs(#22971,1,#22970,0,"U")
+hasLocation(#22971,#21742)
+enclosing_stmt(#22971,#22946)
expr_containers(#22971,#22805)
literals("U","U",#22971)
#22972=*
-typeexprs(#22972,2,#22952,3,"never")
-hasLocation(#22972,#21752)
-enclosing_stmt(#22972,#22945)
+typeexprs(#22972,0,#22953,2,"U")
+hasLocation(#22972,#21748)
+enclosing_stmt(#22972,#22946)
expr_containers(#22972,#22805)
-literals("never","never",#22972)
+literals("U","U",#22972)
#22973=*
-stmts(#22973,35,#22805,8,"type T1 ... ing }>;")
-#22974=@"loc,{#10000},87,3,87,43"
-locations_default(#22974,#10000,87,3,87,43)
-hasLocation(#22973,#22974)
-stmt_containers(#22973,#22805)
-#22975=*
-typeexprs(#22975,1,#22973,0,"T10")
-hasLocation(#22975,#21758)
-enclosing_stmt(#22975,#22973)
-expr_containers(#22975,#22805)
-literals("T10","T10",#22975)
-typedecl(#22975,#22817)
+typeexprs(#22973,2,#22953,3,"never")
+hasLocation(#22973,#21752)
+enclosing_stmt(#22973,#22946)
+expr_containers(#22973,#22805)
+literals("never","never",#22973)
+#22974=*
+stmts(#22974,35,#22805,8,"type T1 ... ing }>;")
+#22975=@"loc,{#10000},87,3,87,43"
+locations_default(#22975,#10000,87,3,87,43)
+hasLocation(#22974,#22975)
+stmt_containers(#22974,#22805)
#22976=*
-typeexprs(#22976,14,#22973,1,"Foo<{ a ... ring }>")
-#22977=@"loc,{#10000},87,14,87,42"
-locations_default(#22977,#10000,87,14,87,42)
-hasLocation(#22976,#22977)
-enclosing_stmt(#22976,#22973)
+typeexprs(#22976,1,#22974,0,"T10")
+hasLocation(#22976,#21758)
+enclosing_stmt(#22976,#22974)
expr_containers(#22976,#22805)
-#22978=*
-typeexprs(#22978,0,#22976,-1,"Foo")
-hasLocation(#22978,#21762)
-enclosing_stmt(#22978,#22973)
-expr_containers(#22978,#22805)
-literals("Foo","Foo",#22978)
-typebind(#22978,#22816)
+literals("T10","T10",#22976)
+typedecl(#22976,#22818)
+#22977=*
+typeexprs(#22977,14,#22974,1,"Foo<{ a ... ring }>")
+#22978=@"loc,{#10000},87,14,87,42"
+locations_default(#22978,#10000,87,14,87,42)
+hasLocation(#22977,#22978)
+enclosing_stmt(#22977,#22974)
+expr_containers(#22977,#22805)
#22979=*
-typeexprs(#22979,21,#22976,0,"{ a: st ... tring }")
-#22980=@"loc,{#10000},87,18,87,41"
-locations_default(#22980,#10000,87,18,87,41)
-hasLocation(#22979,#22980)
-enclosing_stmt(#22979,#22973)
+typeexprs(#22979,0,#22977,-1,"Foo")
+hasLocation(#22979,#21762)
+enclosing_stmt(#22979,#22974)
expr_containers(#22979,#22805)
-#22981=*
-properties(#22981,#22979,0,8,"a: string,")
-#22982=@"loc,{#10000},87,20,87,29"
-locations_default(#22982,#10000,87,20,87,29)
-hasLocation(#22981,#22982)
-#22983=*
-exprs(#22983,0,#22981,0,"a")
-hasLocation(#22983,#21768)
-enclosing_stmt(#22983,#22973)
-expr_containers(#22983,#22805)
-literals("a","a",#22983)
-is_abstract_member(#22981)
+literals("Foo","Foo",#22979)
+typebind(#22979,#22817)
+#22980=*
+typeexprs(#22980,21,#22977,0,"{ a: st ... tring }")
+#22981=@"loc,{#10000},87,18,87,41"
+locations_default(#22981,#10000,87,18,87,41)
+hasLocation(#22980,#22981)
+enclosing_stmt(#22980,#22974)
+expr_containers(#22980,#22805)
+#22982=*
+properties(#22982,#22980,0,8,"a: string,")
+#22983=@"loc,{#10000},87,20,87,29"
+locations_default(#22983,#10000,87,20,87,29)
+hasLocation(#22982,#22983)
#22984=*
-typeexprs(#22984,2,#22981,2,"string")
-hasLocation(#22984,#21772)
-enclosing_stmt(#22984,#22973)
+exprs(#22984,0,#22982,0,"a")
+hasLocation(#22984,#21768)
+enclosing_stmt(#22984,#22974)
expr_containers(#22984,#22805)
-literals("string","string",#22984)
+literals("a","a",#22984)
+is_abstract_member(#22982)
#22985=*
-properties(#22985,#22979,1,8,"b: string")
-#22986=@"loc,{#10000},87,31,87,39"
-locations_default(#22986,#10000,87,31,87,39)
-hasLocation(#22985,#22986)
-#22987=*
-exprs(#22987,0,#22985,0,"b")
-hasLocation(#22987,#21776)
-enclosing_stmt(#22987,#22973)
-expr_containers(#22987,#22805)
-literals("b","b",#22987)
-is_abstract_member(#22985)
+typeexprs(#22985,2,#22982,2,"string")
+hasLocation(#22985,#21772)
+enclosing_stmt(#22985,#22974)
+expr_containers(#22985,#22805)
+literals("string","string",#22985)
+#22986=*
+properties(#22986,#22980,1,8,"b: string")
+#22987=@"loc,{#10000},87,31,87,39"
+locations_default(#22987,#10000,87,31,87,39)
+hasLocation(#22986,#22987)
#22988=*
-typeexprs(#22988,2,#22985,2,"string")
-hasLocation(#22988,#21780)
-enclosing_stmt(#22988,#22973)
+exprs(#22988,0,#22986,0,"b")
+hasLocation(#22988,#21776)
+enclosing_stmt(#22988,#22974)
expr_containers(#22988,#22805)
-literals("string","string",#22988)
+literals("b","b",#22988)
+is_abstract_member(#22986)
#22989=*
-stmts(#22989,35,#22805,9,"type T1 ... ber }>;")
-#22990=@"loc,{#10000},88,3,88,43"
-locations_default(#22990,#10000,88,3,88,43)
-hasLocation(#22989,#22990)
-stmt_containers(#22989,#22805)
-#22991=*
-typeexprs(#22991,1,#22989,0,"T11")
-hasLocation(#22991,#21790)
-enclosing_stmt(#22991,#22989)
-expr_containers(#22991,#22805)
-literals("T11","T11",#22991)
-typedecl(#22991,#22818)
+typeexprs(#22989,2,#22986,2,"string")
+hasLocation(#22989,#21780)
+enclosing_stmt(#22989,#22974)
+expr_containers(#22989,#22805)
+literals("string","string",#22989)
+#22990=*
+stmts(#22990,35,#22805,9,"type T1 ... ber }>;")
+#22991=@"loc,{#10000},88,3,88,43"
+locations_default(#22991,#10000,88,3,88,43)
+hasLocation(#22990,#22991)
+stmt_containers(#22990,#22805)
#22992=*
-typeexprs(#22992,14,#22989,1,"Foo<{ a ... mber }>")
-#22993=@"loc,{#10000},88,14,88,42"
-locations_default(#22993,#10000,88,14,88,42)
-hasLocation(#22992,#22993)
-enclosing_stmt(#22992,#22989)
+typeexprs(#22992,1,#22990,0,"T11")
+hasLocation(#22992,#21790)
+enclosing_stmt(#22992,#22990)
expr_containers(#22992,#22805)
-#22994=*
-typeexprs(#22994,0,#22992,-1,"Foo")
-hasLocation(#22994,#21794)
-enclosing_stmt(#22994,#22989)
-expr_containers(#22994,#22805)
-literals("Foo","Foo",#22994)
-typebind(#22994,#22816)
+literals("T11","T11",#22992)
+typedecl(#22992,#22819)
+#22993=*
+typeexprs(#22993,14,#22990,1,"Foo<{ a ... mber }>")
+#22994=@"loc,{#10000},88,14,88,42"
+locations_default(#22994,#10000,88,14,88,42)
+hasLocation(#22993,#22994)
+enclosing_stmt(#22993,#22990)
+expr_containers(#22993,#22805)
#22995=*
-typeexprs(#22995,21,#22992,0,"{ a: st ... umber }")
-#22996=@"loc,{#10000},88,18,88,41"
-locations_default(#22996,#10000,88,18,88,41)
-hasLocation(#22995,#22996)
-enclosing_stmt(#22995,#22989)
+typeexprs(#22995,0,#22993,-1,"Foo")
+hasLocation(#22995,#21794)
+enclosing_stmt(#22995,#22990)
expr_containers(#22995,#22805)
-#22997=*
-properties(#22997,#22995,0,8,"a: string,")
-#22998=@"loc,{#10000},88,20,88,29"
-locations_default(#22998,#10000,88,20,88,29)
-hasLocation(#22997,#22998)
-#22999=*
-exprs(#22999,0,#22997,0,"a")
-hasLocation(#22999,#21800)
-enclosing_stmt(#22999,#22989)
-expr_containers(#22999,#22805)
-literals("a","a",#22999)
-is_abstract_member(#22997)
+literals("Foo","Foo",#22995)
+typebind(#22995,#22817)
+#22996=*
+typeexprs(#22996,21,#22993,0,"{ a: st ... umber }")
+#22997=@"loc,{#10000},88,18,88,41"
+locations_default(#22997,#10000,88,18,88,41)
+hasLocation(#22996,#22997)
+enclosing_stmt(#22996,#22990)
+expr_containers(#22996,#22805)
+#22998=*
+properties(#22998,#22996,0,8,"a: string,")
+#22999=@"loc,{#10000},88,20,88,29"
+locations_default(#22999,#10000,88,20,88,29)
+hasLocation(#22998,#22999)
#23000=*
-typeexprs(#23000,2,#22997,2,"string")
-hasLocation(#23000,#21804)
-enclosing_stmt(#23000,#22989)
+exprs(#23000,0,#22998,0,"a")
+hasLocation(#23000,#21800)
+enclosing_stmt(#23000,#22990)
expr_containers(#23000,#22805)
-literals("string","string",#23000)
+literals("a","a",#23000)
+is_abstract_member(#22998)
#23001=*
-properties(#23001,#22995,1,8,"b: number")
-#23002=@"loc,{#10000},88,31,88,39"
-locations_default(#23002,#10000,88,31,88,39)
-hasLocation(#23001,#23002)
-#23003=*
-exprs(#23003,0,#23001,0,"b")
-hasLocation(#23003,#21808)
-enclosing_stmt(#23003,#22989)
-expr_containers(#23003,#22805)
-literals("b","b",#23003)
-is_abstract_member(#23001)
+typeexprs(#23001,2,#22998,2,"string")
+hasLocation(#23001,#21804)
+enclosing_stmt(#23001,#22990)
+expr_containers(#23001,#22805)
+literals("string","string",#23001)
+#23002=*
+properties(#23002,#22996,1,8,"b: number")
+#23003=@"loc,{#10000},88,31,88,39"
+locations_default(#23003,#10000,88,31,88,39)
+hasLocation(#23002,#23003)
#23004=*
-typeexprs(#23004,2,#23001,2,"number")
-hasLocation(#23004,#21812)
-enclosing_stmt(#23004,#22989)
+exprs(#23004,0,#23002,0,"b")
+hasLocation(#23004,#21808)
+enclosing_stmt(#23004,#22990)
expr_containers(#23004,#22805)
-literals("number","number",#23004)
+literals("b","b",#23004)
+is_abstract_member(#23002)
#23005=*
-stmts(#23005,35,#22805,10,"type Ba ... never;")
-#23006=@"loc,{#10000},90,3,90,91"
-locations_default(#23006,#10000,90,3,90,91)
-hasLocation(#23005,#23006)
-stmt_containers(#23005,#22805)
-#23007=*
-typeexprs(#23007,1,#23005,0,"Bar")
-hasLocation(#23007,#21822)
-enclosing_stmt(#23007,#23005)
-expr_containers(#23007,#22805)
-literals("Bar","Bar",#23007)
-typedecl(#23007,#22819)
+typeexprs(#23005,2,#23002,2,"number")
+hasLocation(#23005,#21812)
+enclosing_stmt(#23005,#22990)
+expr_containers(#23005,#22805)
+literals("number","number",#23005)
+#23006=*
+stmts(#23006,35,#22805,10,"type Ba ... never;")
+#23007=@"loc,{#10000},90,3,90,91"
+locations_default(#23007,#10000,90,3,90,91)
+hasLocation(#23006,#23007)
+stmt_containers(#23006,#22805)
#23008=*
-scopes(#23008,12)
-scopenodes(#23005,#23008)
-scopenesting(#23008,#22808)
-#23009=@"local_type_name;{T};{#23008}"
-local_type_names(#23009,"T",#23008)
-#23010=*
-typeexprs(#23010,22,#23005,2,"T")
-hasLocation(#23010,#21826)
-enclosing_stmt(#23010,#23005)
-expr_containers(#23010,#22805)
+typeexprs(#23008,1,#23006,0,"Bar")
+hasLocation(#23008,#21822)
+enclosing_stmt(#23008,#23006)
+expr_containers(#23008,#22805)
+literals("Bar","Bar",#23008)
+typedecl(#23008,#22820)
+#23009=*
+scopes(#23009,12)
+scopenodes(#23006,#23009)
+scopenesting(#23009,#22808)
+#23010=@"local_type_name;{T};{#23009}"
+local_type_names(#23010,"T",#23009)
#23011=*
-typeexprs(#23011,1,#23010,0,"T")
+typeexprs(#23011,22,#23006,2,"T")
hasLocation(#23011,#21826)
-enclosing_stmt(#23011,#23005)
+enclosing_stmt(#23011,#23006)
expr_containers(#23011,#22805)
-literals("T","T",#23011)
-typedecl(#23011,#23009)
#23012=*
-typeexprs(#23012,28,#23005,1,"T exten ... : never")
-#23013=@"loc,{#10000},90,17,90,90"
-locations_default(#23013,#10000,90,17,90,90)
-hasLocation(#23012,#23013)
-enclosing_stmt(#23012,#23005)
+typeexprs(#23012,1,#23011,0,"T")
+hasLocation(#23012,#21826)
+enclosing_stmt(#23012,#23006)
expr_containers(#23012,#22805)
-#23014=*
-typeexprs(#23014,0,#23012,0,"T")
-hasLocation(#23014,#21832)
-enclosing_stmt(#23014,#23005)
-expr_containers(#23014,#22805)
-literals("T","T",#23014)
-typebind(#23014,#23009)
+literals("T","T",#23012)
+typedecl(#23012,#23010)
+#23013=*
+typeexprs(#23013,28,#23006,1,"T exten ... : never")
+#23014=@"loc,{#10000},90,17,90,90"
+locations_default(#23014,#10000,90,17,90,90)
+hasLocation(#23013,#23014)
+enclosing_stmt(#23013,#23006)
+expr_containers(#23013,#22805)
#23015=*
-typeexprs(#23015,21,#23012,1,"{ a: (x ... void }")
-#23016=@"loc,{#10000},90,27,90,78"
-locations_default(#23016,#10000,90,27,90,78)
-hasLocation(#23015,#23016)
-enclosing_stmt(#23015,#23005)
+typeexprs(#23015,0,#23013,0,"T")
+hasLocation(#23015,#21832)
+enclosing_stmt(#23015,#23006)
expr_containers(#23015,#22805)
-#23017=*
-properties(#23017,#23015,0,8,"a: (x: ... > void,")
-#23018=@"loc,{#10000},90,29,90,52"
-locations_default(#23018,#10000,90,29,90,52)
-hasLocation(#23017,#23018)
-#23019=*
-exprs(#23019,0,#23017,0,"a")
-hasLocation(#23019,#21838)
-enclosing_stmt(#23019,#23005)
-expr_containers(#23019,#22805)
-literals("a","a",#23019)
-is_abstract_member(#23017)
+literals("T","T",#23015)
+typebind(#23015,#23010)
+#23016=*
+typeexprs(#23016,21,#23013,1,"{ a: (x ... void }")
+#23017=@"loc,{#10000},90,27,90,78"
+locations_default(#23017,#10000,90,27,90,78)
+hasLocation(#23016,#23017)
+enclosing_stmt(#23016,#23006)
+expr_containers(#23016,#22805)
+#23018=*
+properties(#23018,#23016,0,8,"a: (x: ... > void,")
+#23019=@"loc,{#10000},90,29,90,52"
+locations_default(#23019,#10000,90,29,90,52)
+hasLocation(#23018,#23019)
#23020=*
-typeexprs(#23020,23,#23017,2,"(x: infer U) => void")
-#23021=@"loc,{#10000},90,32,90,51"
-locations_default(#23021,#10000,90,32,90,51)
-hasLocation(#23020,#23021)
-enclosing_stmt(#23020,#23005)
+exprs(#23020,0,#23018,0,"a")
+hasLocation(#23020,#21838)
+enclosing_stmt(#23020,#23006)
expr_containers(#23020,#22805)
-#23022=*
-exprs(#23022,9,#23020,0,"(x: infer U) => void")
-hasLocation(#23022,#23021)
-enclosing_stmt(#23022,#23005)
-expr_containers(#23022,#22805)
+literals("a","a",#23020)
+is_abstract_member(#23018)
+#23021=*
+typeexprs(#23021,23,#23018,2,"(x: infer U) => void")
+#23022=@"loc,{#10000},90,32,90,51"
+locations_default(#23022,#10000,90,32,90,51)
+hasLocation(#23021,#23022)
+enclosing_stmt(#23021,#23006)
+expr_containers(#23021,#22805)
#23023=*
-scopes(#23023,1)
-scopenodes(#23022,#23023)
-scopenesting(#23023,#23008)
-#23024=@"var;{x};{#23023}"
-variables(#23024,"x",#23023)
-#23025=*
-exprs(#23025,78,#23022,0,"x")
-hasLocation(#23025,#21844)
-expr_containers(#23025,#23022)
-literals("x","x",#23025)
-decl(#23025,#23024)
-#23026=@"var;{arguments};{#23023}"
-variables(#23026,"arguments",#23023)
-is_arguments_object(#23026)
-#23027=*
-typeexprs(#23027,2,#23022,-3,"void")
-hasLocation(#23027,#21856)
-expr_containers(#23027,#23022)
-literals("void","void",#23027)
+exprs(#23023,9,#23021,0,"(x: infer U) => void")
+hasLocation(#23023,#23022)
+enclosing_stmt(#23023,#23006)
+expr_containers(#23023,#22805)
+#23024=*
+scopes(#23024,1)
+scopenodes(#23023,#23024)
+scopenesting(#23024,#23009)
+#23025=@"var;{x};{#23024}"
+variables(#23025,"x",#23024)
+#23026=*
+exprs(#23026,78,#23023,0,"x")
+hasLocation(#23026,#21844)
+expr_containers(#23026,#23023)
+literals("x","x",#23026)
+decl(#23026,#23025)
+#23027=@"var;{arguments};{#23024}"
+variables(#23027,"arguments",#23024)
+is_arguments_object(#23027)
#23028=*
-typeexprs(#23028,29,#23022,-6,"infer U")
-#23029=@"loc,{#10000},90,36,90,42"
-locations_default(#23029,#10000,90,36,90,42)
-hasLocation(#23028,#23029)
-expr_containers(#23028,#23022)
-#23030=*
-typeexprs(#23030,22,#23028,0,"U")
-hasLocation(#23030,#21850)
-expr_containers(#23030,#23022)
+typeexprs(#23028,2,#23023,-3,"void")
+hasLocation(#23028,#21856)
+expr_containers(#23028,#23023)
+literals("void","void",#23028)
+#23029=*
+typeexprs(#23029,29,#23023,-6,"infer U")
+#23030=@"loc,{#10000},90,36,90,42"
+locations_default(#23030,#10000,90,36,90,42)
+hasLocation(#23029,#23030)
+expr_containers(#23029,#23023)
#23031=*
-typeexprs(#23031,1,#23030,0,"U")
+typeexprs(#23031,22,#23029,0,"U")
hasLocation(#23031,#21850)
-expr_containers(#23031,#23022)
-literals("U","U",#23031)
+expr_containers(#23031,#23023)
#23032=*
-properties(#23032,#23015,1,8,"b: (x: ... => void")
-#23033=@"loc,{#10000},90,54,90,76"
-locations_default(#23033,#10000,90,54,90,76)
-hasLocation(#23032,#23033)
-#23034=*
-exprs(#23034,0,#23032,0,"b")
-hasLocation(#23034,#21860)
-enclosing_stmt(#23034,#23005)
-expr_containers(#23034,#22805)
-literals("b","b",#23034)
-is_abstract_member(#23032)
+typeexprs(#23032,1,#23031,0,"U")
+hasLocation(#23032,#21850)
+expr_containers(#23032,#23023)
+literals("U","U",#23032)
+#23033=*
+properties(#23033,#23016,1,8,"b: (x: ... => void")
+#23034=@"loc,{#10000},90,54,90,76"
+locations_default(#23034,#10000,90,54,90,76)
+hasLocation(#23033,#23034)
#23035=*
-typeexprs(#23035,23,#23032,2,"(x: infer U) => void")
-#23036=@"loc,{#10000},90,57,90,76"
-locations_default(#23036,#10000,90,57,90,76)
-hasLocation(#23035,#23036)
-enclosing_stmt(#23035,#23005)
+exprs(#23035,0,#23033,0,"b")
+hasLocation(#23035,#21860)
+enclosing_stmt(#23035,#23006)
expr_containers(#23035,#22805)
-#23037=*
-exprs(#23037,9,#23035,0,"(x: infer U) => void")
-hasLocation(#23037,#23036)
-enclosing_stmt(#23037,#23005)
-expr_containers(#23037,#22805)
+literals("b","b",#23035)
+is_abstract_member(#23033)
+#23036=*
+typeexprs(#23036,23,#23033,2,"(x: infer U) => void")
+#23037=@"loc,{#10000},90,57,90,76"
+locations_default(#23037,#10000,90,57,90,76)
+hasLocation(#23036,#23037)
+enclosing_stmt(#23036,#23006)
+expr_containers(#23036,#22805)
#23038=*
-scopes(#23038,1)
-scopenodes(#23037,#23038)
-scopenesting(#23038,#23008)
-#23039=@"var;{x};{#23038}"
-variables(#23039,"x",#23038)
-#23040=*
-exprs(#23040,78,#23037,0,"x")
-hasLocation(#23040,#21866)
-expr_containers(#23040,#23037)
-literals("x","x",#23040)
-decl(#23040,#23039)
-#23041=@"var;{arguments};{#23038}"
-variables(#23041,"arguments",#23038)
-is_arguments_object(#23041)
-#23042=*
-typeexprs(#23042,2,#23037,-3,"void")
-hasLocation(#23042,#21878)
-expr_containers(#23042,#23037)
-literals("void","void",#23042)
+exprs(#23038,9,#23036,0,"(x: infer U) => void")
+hasLocation(#23038,#23037)
+enclosing_stmt(#23038,#23006)
+expr_containers(#23038,#22805)
+#23039=*
+scopes(#23039,1)
+scopenodes(#23038,#23039)
+scopenesting(#23039,#23009)
+#23040=@"var;{x};{#23039}"
+variables(#23040,"x",#23039)
+#23041=*
+exprs(#23041,78,#23038,0,"x")
+hasLocation(#23041,#21866)
+expr_containers(#23041,#23038)
+literals("x","x",#23041)
+decl(#23041,#23040)
+#23042=@"var;{arguments};{#23039}"
+variables(#23042,"arguments",#23039)
+is_arguments_object(#23042)
#23043=*
-typeexprs(#23043,29,#23037,-6,"infer U")
-#23044=@"loc,{#10000},90,61,90,67"
-locations_default(#23044,#10000,90,61,90,67)
-hasLocation(#23043,#23044)
-expr_containers(#23043,#23037)
-#23045=*
-typeexprs(#23045,22,#23043,0,"U")
-hasLocation(#23045,#21872)
-expr_containers(#23045,#23037)
+typeexprs(#23043,2,#23038,-3,"void")
+hasLocation(#23043,#21878)
+expr_containers(#23043,#23038)
+literals("void","void",#23043)
+#23044=*
+typeexprs(#23044,29,#23038,-6,"infer U")
+#23045=@"loc,{#10000},90,61,90,67"
+locations_default(#23045,#10000,90,61,90,67)
+hasLocation(#23044,#23045)
+expr_containers(#23044,#23038)
#23046=*
-typeexprs(#23046,1,#23045,0,"U")
+typeexprs(#23046,22,#23044,0,"U")
hasLocation(#23046,#21872)
-expr_containers(#23046,#23037)
-literals("U","U",#23046)
+expr_containers(#23046,#23038)
#23047=*
-typeexprs(#23047,0,#23012,2,"U")
-hasLocation(#23047,#21884)
-enclosing_stmt(#23047,#23005)
-expr_containers(#23047,#22805)
+typeexprs(#23047,1,#23046,0,"U")
+hasLocation(#23047,#21872)
+expr_containers(#23047,#23038)
literals("U","U",#23047)
#23048=*
-typeexprs(#23048,2,#23012,3,"never")
-hasLocation(#23048,#21888)
-enclosing_stmt(#23048,#23005)
+typeexprs(#23048,0,#23013,2,"U")
+hasLocation(#23048,#21884)
+enclosing_stmt(#23048,#23006)
expr_containers(#23048,#22805)
-literals("never","never",#23048)
+literals("U","U",#23048)
#23049=*
-stmts(#23049,35,#22805,11,"type T2 ... oid }>;")
-#23050=@"loc,{#10000},91,3,91,69"
-locations_default(#23050,#10000,91,3,91,69)
-hasLocation(#23049,#23050)
-stmt_containers(#23049,#22805)
-#23051=*
-typeexprs(#23051,1,#23049,0,"T20")
-hasLocation(#23051,#21894)
-enclosing_stmt(#23051,#23049)
-expr_containers(#23051,#22805)
-literals("T20","T20",#23051)
-typedecl(#23051,#22820)
+typeexprs(#23049,2,#23013,3,"never")
+hasLocation(#23049,#21888)
+enclosing_stmt(#23049,#23006)
+expr_containers(#23049,#22805)
+literals("never","never",#23049)
+#23050=*
+stmts(#23050,35,#22805,11,"type T2 ... oid }>;")
+#23051=@"loc,{#10000},91,3,91,69"
+locations_default(#23051,#10000,91,3,91,69)
+hasLocation(#23050,#23051)
+stmt_containers(#23050,#22805)
#23052=*
-typeexprs(#23052,14,#23049,1,"Bar<{ a ... void }>")
-#23053=@"loc,{#10000},91,14,91,68"
-locations_default(#23053,#10000,91,14,91,68)
-hasLocation(#23052,#23053)
-enclosing_stmt(#23052,#23049)
+typeexprs(#23052,1,#23050,0,"T20")
+hasLocation(#23052,#21894)
+enclosing_stmt(#23052,#23050)
expr_containers(#23052,#22805)
-#23054=*
-typeexprs(#23054,0,#23052,-1,"Bar")
-hasLocation(#23054,#21898)
-enclosing_stmt(#23054,#23049)
-expr_containers(#23054,#22805)
-literals("Bar","Bar",#23054)
-typebind(#23054,#22819)
+literals("T20","T20",#23052)
+typedecl(#23052,#22821)
+#23053=*
+typeexprs(#23053,14,#23050,1,"Bar<{ a ... void }>")
+#23054=@"loc,{#10000},91,14,91,68"
+locations_default(#23054,#10000,91,14,91,68)
+hasLocation(#23053,#23054)
+enclosing_stmt(#23053,#23050)
+expr_containers(#23053,#22805)
#23055=*
-typeexprs(#23055,21,#23052,0,"{ a: (x ... void }")
-#23056=@"loc,{#10000},91,18,91,67"
-locations_default(#23056,#10000,91,18,91,67)
-hasLocation(#23055,#23056)
-enclosing_stmt(#23055,#23049)
+typeexprs(#23055,0,#23053,-1,"Bar")
+hasLocation(#23055,#21898)
+enclosing_stmt(#23055,#23050)
expr_containers(#23055,#22805)
-#23057=*
-properties(#23057,#23055,0,8,"a: (x: ... > void,")
-#23058=@"loc,{#10000},91,20,91,42"
-locations_default(#23058,#10000,91,20,91,42)
-hasLocation(#23057,#23058)
-#23059=*
-exprs(#23059,0,#23057,0,"a")
-hasLocation(#23059,#21904)
-enclosing_stmt(#23059,#23049)
-expr_containers(#23059,#22805)
-literals("a","a",#23059)
-is_abstract_member(#23057)
+literals("Bar","Bar",#23055)
+typebind(#23055,#22820)
+#23056=*
+typeexprs(#23056,21,#23053,0,"{ a: (x ... void }")
+#23057=@"loc,{#10000},91,18,91,67"
+locations_default(#23057,#10000,91,18,91,67)
+hasLocation(#23056,#23057)
+enclosing_stmt(#23056,#23050)
+expr_containers(#23056,#22805)
+#23058=*
+properties(#23058,#23056,0,8,"a: (x: ... > void,")
+#23059=@"loc,{#10000},91,20,91,42"
+locations_default(#23059,#10000,91,20,91,42)
+hasLocation(#23058,#23059)
#23060=*
-typeexprs(#23060,23,#23057,2,"(x: string) => void")
-#23061=@"loc,{#10000},91,23,91,41"
-locations_default(#23061,#10000,91,23,91,41)
-hasLocation(#23060,#23061)
-enclosing_stmt(#23060,#23049)
+exprs(#23060,0,#23058,0,"a")
+hasLocation(#23060,#21904)
+enclosing_stmt(#23060,#23050)
expr_containers(#23060,#22805)
-#23062=*
-exprs(#23062,9,#23060,0,"(x: string) => void")
-hasLocation(#23062,#23061)
-enclosing_stmt(#23062,#23049)
-expr_containers(#23062,#22805)
+literals("a","a",#23060)
+is_abstract_member(#23058)
+#23061=*
+typeexprs(#23061,23,#23058,2,"(x: string) => void")
+#23062=@"loc,{#10000},91,23,91,41"
+locations_default(#23062,#10000,91,23,91,41)
+hasLocation(#23061,#23062)
+enclosing_stmt(#23061,#23050)
+expr_containers(#23061,#22805)
#23063=*
-scopes(#23063,1)
-scopenodes(#23062,#23063)
-scopenesting(#23063,#22808)
-#23064=@"var;{x};{#23063}"
-variables(#23064,"x",#23063)
-#23065=*
-exprs(#23065,78,#23062,0,"x")
-hasLocation(#23065,#21910)
-expr_containers(#23065,#23062)
-literals("x","x",#23065)
-decl(#23065,#23064)
-#23066=@"var;{arguments};{#23063}"
-variables(#23066,"arguments",#23063)
-is_arguments_object(#23066)
-#23067=*
-typeexprs(#23067,2,#23062,-3,"void")
-hasLocation(#23067,#21920)
-expr_containers(#23067,#23062)
-literals("void","void",#23067)
+exprs(#23063,9,#23061,0,"(x: string) => void")
+hasLocation(#23063,#23062)
+enclosing_stmt(#23063,#23050)
+expr_containers(#23063,#22805)
+#23064=*
+scopes(#23064,1)
+scopenodes(#23063,#23064)
+scopenesting(#23064,#22808)
+#23065=@"var;{x};{#23064}"
+variables(#23065,"x",#23064)
+#23066=*
+exprs(#23066,78,#23063,0,"x")
+hasLocation(#23066,#21910)
+expr_containers(#23066,#23063)
+literals("x","x",#23066)
+decl(#23066,#23065)
+#23067=@"var;{arguments};{#23064}"
+variables(#23067,"arguments",#23064)
+is_arguments_object(#23067)
#23068=*
-typeexprs(#23068,2,#23062,-6,"string")
-hasLocation(#23068,#21914)
-expr_containers(#23068,#23062)
-literals("string","string",#23068)
+typeexprs(#23068,2,#23063,-3,"void")
+hasLocation(#23068,#21920)
+expr_containers(#23068,#23063)
+literals("void","void",#23068)
#23069=*
-properties(#23069,#23055,1,8,"b: (x: ... => void")
-#23070=@"loc,{#10000},91,44,91,65"
-locations_default(#23070,#10000,91,44,91,65)
-hasLocation(#23069,#23070)
-#23071=*
-exprs(#23071,0,#23069,0,"b")
-hasLocation(#23071,#21924)
-enclosing_stmt(#23071,#23049)
-expr_containers(#23071,#22805)
-literals("b","b",#23071)
-is_abstract_member(#23069)
+typeexprs(#23069,2,#23063,-6,"string")
+hasLocation(#23069,#21914)
+expr_containers(#23069,#23063)
+literals("string","string",#23069)
+#23070=*
+properties(#23070,#23056,1,8,"b: (x: ... => void")
+#23071=@"loc,{#10000},91,44,91,65"
+locations_default(#23071,#10000,91,44,91,65)
+hasLocation(#23070,#23071)
#23072=*
-typeexprs(#23072,23,#23069,2,"(x: string) => void")
-#23073=@"loc,{#10000},91,47,91,65"
-locations_default(#23073,#10000,91,47,91,65)
-hasLocation(#23072,#23073)
-enclosing_stmt(#23072,#23049)
+exprs(#23072,0,#23070,0,"b")
+hasLocation(#23072,#21924)
+enclosing_stmt(#23072,#23050)
expr_containers(#23072,#22805)
-#23074=*
-exprs(#23074,9,#23072,0,"(x: string) => void")
-hasLocation(#23074,#23073)
-enclosing_stmt(#23074,#23049)
-expr_containers(#23074,#22805)
+literals("b","b",#23072)
+is_abstract_member(#23070)
+#23073=*
+typeexprs(#23073,23,#23070,2,"(x: string) => void")
+#23074=@"loc,{#10000},91,47,91,65"
+locations_default(#23074,#10000,91,47,91,65)
+hasLocation(#23073,#23074)
+enclosing_stmt(#23073,#23050)
+expr_containers(#23073,#22805)
#23075=*
-scopes(#23075,1)
-scopenodes(#23074,#23075)
-scopenesting(#23075,#22808)
-#23076=@"var;{x};{#23075}"
-variables(#23076,"x",#23075)
-#23077=*
-exprs(#23077,78,#23074,0,"x")
-hasLocation(#23077,#21930)
-expr_containers(#23077,#23074)
-literals("x","x",#23077)
-decl(#23077,#23076)
-#23078=@"var;{arguments};{#23075}"
-variables(#23078,"arguments",#23075)
-is_arguments_object(#23078)
-#23079=*
-typeexprs(#23079,2,#23074,-3,"void")
-hasLocation(#23079,#21940)
-expr_containers(#23079,#23074)
-literals("void","void",#23079)
+exprs(#23075,9,#23073,0,"(x: string) => void")
+hasLocation(#23075,#23074)
+enclosing_stmt(#23075,#23050)
+expr_containers(#23075,#22805)
+#23076=*
+scopes(#23076,1)
+scopenodes(#23075,#23076)
+scopenesting(#23076,#22808)
+#23077=@"var;{x};{#23076}"
+variables(#23077,"x",#23076)
+#23078=*
+exprs(#23078,78,#23075,0,"x")
+hasLocation(#23078,#21930)
+expr_containers(#23078,#23075)
+literals("x","x",#23078)
+decl(#23078,#23077)
+#23079=@"var;{arguments};{#23076}"
+variables(#23079,"arguments",#23076)
+is_arguments_object(#23079)
#23080=*
-typeexprs(#23080,2,#23074,-6,"string")
-hasLocation(#23080,#21934)
-expr_containers(#23080,#23074)
-literals("string","string",#23080)
+typeexprs(#23080,2,#23075,-3,"void")
+hasLocation(#23080,#21940)
+expr_containers(#23080,#23075)
+literals("void","void",#23080)
#23081=*
-stmts(#23081,35,#22805,12,"type T2 ... oid }>;")
-#23082=@"loc,{#10000},92,3,92,69"
-locations_default(#23082,#10000,92,3,92,69)
-hasLocation(#23081,#23082)
-stmt_containers(#23081,#22805)
-#23083=*
-typeexprs(#23083,1,#23081,0,"T21")
-hasLocation(#23083,#21950)
-enclosing_stmt(#23083,#23081)
-expr_containers(#23083,#22805)
-literals("T21","T21",#23083)
-typedecl(#23083,#22821)
+typeexprs(#23081,2,#23075,-6,"string")
+hasLocation(#23081,#21934)
+expr_containers(#23081,#23075)
+literals("string","string",#23081)
+#23082=*
+stmts(#23082,35,#22805,12,"type T2 ... oid }>;")
+#23083=@"loc,{#10000},92,3,92,69"
+locations_default(#23083,#10000,92,3,92,69)
+hasLocation(#23082,#23083)
+stmt_containers(#23082,#22805)
#23084=*
-typeexprs(#23084,14,#23081,1,"Bar<{ a ... void }>")
-#23085=@"loc,{#10000},92,14,92,68"
-locations_default(#23085,#10000,92,14,92,68)
-hasLocation(#23084,#23085)
-enclosing_stmt(#23084,#23081)
+typeexprs(#23084,1,#23082,0,"T21")
+hasLocation(#23084,#21950)
+enclosing_stmt(#23084,#23082)
expr_containers(#23084,#22805)
-#23086=*
-typeexprs(#23086,0,#23084,-1,"Bar")
-hasLocation(#23086,#21954)
-enclosing_stmt(#23086,#23081)
-expr_containers(#23086,#22805)
-literals("Bar","Bar",#23086)
-typebind(#23086,#22819)
+literals("T21","T21",#23084)
+typedecl(#23084,#22822)
+#23085=*
+typeexprs(#23085,14,#23082,1,"Bar<{ a ... void }>")
+#23086=@"loc,{#10000},92,14,92,68"
+locations_default(#23086,#10000,92,14,92,68)
+hasLocation(#23085,#23086)
+enclosing_stmt(#23085,#23082)
+expr_containers(#23085,#22805)
#23087=*
-typeexprs(#23087,21,#23084,0,"{ a: (x ... void }")
-#23088=@"loc,{#10000},92,18,92,67"
-locations_default(#23088,#10000,92,18,92,67)
-hasLocation(#23087,#23088)
-enclosing_stmt(#23087,#23081)
+typeexprs(#23087,0,#23085,-1,"Bar")
+hasLocation(#23087,#21954)
+enclosing_stmt(#23087,#23082)
expr_containers(#23087,#22805)
-#23089=*
-properties(#23089,#23087,0,8,"a: (x: ... > void,")
-#23090=@"loc,{#10000},92,20,92,42"
-locations_default(#23090,#10000,92,20,92,42)
-hasLocation(#23089,#23090)
-#23091=*
-exprs(#23091,0,#23089,0,"a")
-hasLocation(#23091,#21960)
-enclosing_stmt(#23091,#23081)
-expr_containers(#23091,#22805)
-literals("a","a",#23091)
-is_abstract_member(#23089)
+literals("Bar","Bar",#23087)
+typebind(#23087,#22820)
+#23088=*
+typeexprs(#23088,21,#23085,0,"{ a: (x ... void }")
+#23089=@"loc,{#10000},92,18,92,67"
+locations_default(#23089,#10000,92,18,92,67)
+hasLocation(#23088,#23089)
+enclosing_stmt(#23088,#23082)
+expr_containers(#23088,#22805)
+#23090=*
+properties(#23090,#23088,0,8,"a: (x: ... > void,")
+#23091=@"loc,{#10000},92,20,92,42"
+locations_default(#23091,#10000,92,20,92,42)
+hasLocation(#23090,#23091)
#23092=*
-typeexprs(#23092,23,#23089,2,"(x: string) => void")
-#23093=@"loc,{#10000},92,23,92,41"
-locations_default(#23093,#10000,92,23,92,41)
-hasLocation(#23092,#23093)
-enclosing_stmt(#23092,#23081)
+exprs(#23092,0,#23090,0,"a")
+hasLocation(#23092,#21960)
+enclosing_stmt(#23092,#23082)
expr_containers(#23092,#22805)
-#23094=*
-exprs(#23094,9,#23092,0,"(x: string) => void")
-hasLocation(#23094,#23093)
-enclosing_stmt(#23094,#23081)
-expr_containers(#23094,#22805)
+literals("a","a",#23092)
+is_abstract_member(#23090)
+#23093=*
+typeexprs(#23093,23,#23090,2,"(x: string) => void")
+#23094=@"loc,{#10000},92,23,92,41"
+locations_default(#23094,#10000,92,23,92,41)
+hasLocation(#23093,#23094)
+enclosing_stmt(#23093,#23082)
+expr_containers(#23093,#22805)
#23095=*
-scopes(#23095,1)
-scopenodes(#23094,#23095)
-scopenesting(#23095,#22808)
-#23096=@"var;{x};{#23095}"
-variables(#23096,"x",#23095)
-#23097=*
-exprs(#23097,78,#23094,0,"x")
-hasLocation(#23097,#21966)
-expr_containers(#23097,#23094)
-literals("x","x",#23097)
-decl(#23097,#23096)
-#23098=@"var;{arguments};{#23095}"
-variables(#23098,"arguments",#23095)
-is_arguments_object(#23098)
-#23099=*
-typeexprs(#23099,2,#23094,-3,"void")
-hasLocation(#23099,#21976)
-expr_containers(#23099,#23094)
-literals("void","void",#23099)
+exprs(#23095,9,#23093,0,"(x: string) => void")
+hasLocation(#23095,#23094)
+enclosing_stmt(#23095,#23082)
+expr_containers(#23095,#22805)
+#23096=*
+scopes(#23096,1)
+scopenodes(#23095,#23096)
+scopenesting(#23096,#22808)
+#23097=@"var;{x};{#23096}"
+variables(#23097,"x",#23096)
+#23098=*
+exprs(#23098,78,#23095,0,"x")
+hasLocation(#23098,#21966)
+expr_containers(#23098,#23095)
+literals("x","x",#23098)
+decl(#23098,#23097)
+#23099=@"var;{arguments};{#23096}"
+variables(#23099,"arguments",#23096)
+is_arguments_object(#23099)
#23100=*
-typeexprs(#23100,2,#23094,-6,"string")
-hasLocation(#23100,#21970)
-expr_containers(#23100,#23094)
-literals("string","string",#23100)
+typeexprs(#23100,2,#23095,-3,"void")
+hasLocation(#23100,#21976)
+expr_containers(#23100,#23095)
+literals("void","void",#23100)
#23101=*
-properties(#23101,#23087,1,8,"b: (x: ... => void")
-#23102=@"loc,{#10000},92,44,92,65"
-locations_default(#23102,#10000,92,44,92,65)
-hasLocation(#23101,#23102)
-#23103=*
-exprs(#23103,0,#23101,0,"b")
-hasLocation(#23103,#21980)
-enclosing_stmt(#23103,#23081)
-expr_containers(#23103,#22805)
-literals("b","b",#23103)
-is_abstract_member(#23101)
+typeexprs(#23101,2,#23095,-6,"string")
+hasLocation(#23101,#21970)
+expr_containers(#23101,#23095)
+literals("string","string",#23101)
+#23102=*
+properties(#23102,#23088,1,8,"b: (x: ... => void")
+#23103=@"loc,{#10000},92,44,92,65"
+locations_default(#23103,#10000,92,44,92,65)
+hasLocation(#23102,#23103)
#23104=*
-typeexprs(#23104,23,#23101,2,"(x: number) => void")
-#23105=@"loc,{#10000},92,47,92,65"
-locations_default(#23105,#10000,92,47,92,65)
-hasLocation(#23104,#23105)
-enclosing_stmt(#23104,#23081)
+exprs(#23104,0,#23102,0,"b")
+hasLocation(#23104,#21980)
+enclosing_stmt(#23104,#23082)
expr_containers(#23104,#22805)
-#23106=*
-exprs(#23106,9,#23104,0,"(x: number) => void")
-hasLocation(#23106,#23105)
-enclosing_stmt(#23106,#23081)
-expr_containers(#23106,#22805)
+literals("b","b",#23104)
+is_abstract_member(#23102)
+#23105=*
+typeexprs(#23105,23,#23102,2,"(x: number) => void")
+#23106=@"loc,{#10000},92,47,92,65"
+locations_default(#23106,#10000,92,47,92,65)
+hasLocation(#23105,#23106)
+enclosing_stmt(#23105,#23082)
+expr_containers(#23105,#22805)
#23107=*
-scopes(#23107,1)
-scopenodes(#23106,#23107)
-scopenesting(#23107,#22808)
-#23108=@"var;{x};{#23107}"
-variables(#23108,"x",#23107)
-#23109=*
-exprs(#23109,78,#23106,0,"x")
-hasLocation(#23109,#21986)
-expr_containers(#23109,#23106)
-literals("x","x",#23109)
-decl(#23109,#23108)
-#23110=@"var;{arguments};{#23107}"
-variables(#23110,"arguments",#23107)
-is_arguments_object(#23110)
-#23111=*
-typeexprs(#23111,2,#23106,-3,"void")
-hasLocation(#23111,#21996)
-expr_containers(#23111,#23106)
-literals("void","void",#23111)
+exprs(#23107,9,#23105,0,"(x: number) => void")
+hasLocation(#23107,#23106)
+enclosing_stmt(#23107,#23082)
+expr_containers(#23107,#22805)
+#23108=*
+scopes(#23108,1)
+scopenodes(#23107,#23108)
+scopenesting(#23108,#22808)
+#23109=@"var;{x};{#23108}"
+variables(#23109,"x",#23108)
+#23110=*
+exprs(#23110,78,#23107,0,"x")
+hasLocation(#23110,#21986)
+expr_containers(#23110,#23107)
+literals("x","x",#23110)
+decl(#23110,#23109)
+#23111=@"var;{arguments};{#23108}"
+variables(#23111,"arguments",#23108)
+is_arguments_object(#23111)
#23112=*
-typeexprs(#23112,2,#23106,-6,"number")
-hasLocation(#23112,#21990)
-expr_containers(#23112,#23106)
-literals("number","number",#23112)
+typeexprs(#23112,2,#23107,-3,"void")
+hasLocation(#23112,#21996)
+expr_containers(#23112,#23107)
+literals("void","void",#23112)
#23113=*
-stmts(#23113,17,#22805,13,"declare ... number;")
-#23114=@"loc,{#10000},94,3,94,42"
-locations_default(#23114,#10000,94,3,94,42)
-hasLocation(#23113,#23114)
-stmt_containers(#23113,#22805)
-has_declare_keyword(#23113)
-#23115=*
-exprs(#23115,78,#23113,-1,"foo")
-hasLocation(#23115,#22008)
-expr_containers(#23115,#23113)
-literals("foo","foo",#23115)
-#23116=@"var;{foo};{#20000}"
-variables(#23116,"foo",#20000)
-decl(#23115,#23116)
+typeexprs(#23113,2,#23107,-6,"number")
+hasLocation(#23113,#21990)
+expr_containers(#23113,#23107)
+literals("number","number",#23113)
+#23114=*
+stmts(#23114,17,#22805,13,"declare ... number;")
+#23115=@"loc,{#10000},94,3,94,42"
+locations_default(#23115,#10000,94,3,94,42)
+hasLocation(#23114,#23115)
+stmt_containers(#23114,#22805)
+has_declare_keyword(#23114)
+#23116=*
+exprs(#23116,78,#23114,-1,"foo")
+hasLocation(#23116,#22008)
+expr_containers(#23116,#23114)
+literals("foo","foo",#23116)
+decl(#23116,#22809)
#23117=*
scopes(#23117,1)
-scopenodes(#23113,#23117)
+scopenodes(#23114,#23117)
scopenesting(#23117,#22808)
#23118=@"var;{x};{#23117}"
variables(#23118,"x",#23117)
#23119=*
-exprs(#23119,78,#23113,0,"x")
+exprs(#23119,78,#23114,0,"x")
hasLocation(#23119,#22012)
-expr_containers(#23119,#23113)
+expr_containers(#23119,#23114)
literals("x","x",#23119)
decl(#23119,#23118)
#23120=@"var;{arguments};{#23117}"
variables(#23120,"arguments",#23117)
is_arguments_object(#23120)
#23121=*
-typeexprs(#23121,2,#23113,-3,"number")
+typeexprs(#23121,2,#23114,-3,"number")
hasLocation(#23121,#22022)
-expr_containers(#23121,#23113)
+expr_containers(#23121,#23114)
literals("number","number",#23121)
#23122=*
-typeexprs(#23122,2,#23113,-6,"string")
+typeexprs(#23122,2,#23114,-6,"string")
hasLocation(#23122,#22016)
-expr_containers(#23122,#23113)
+expr_containers(#23122,#23114)
literals("string","string",#23122)
#23123=*
stmts(#23123,17,#22805,14,"declare ... string;")
@@ -9757,7 +9757,7 @@ exprs(#23125,78,#23123,-1,"foo")
hasLocation(#23125,#22030)
expr_containers(#23125,#23123)
literals("foo","foo",#23125)
-decl(#23125,#23116)
+decl(#23125,#22809)
#23126=*
scopes(#23126,1)
scopenodes(#23123,#23126)
@@ -9795,7 +9795,7 @@ exprs(#23134,78,#23132,-1,"foo")
hasLocation(#23134,#22052)
expr_containers(#23134,#23132)
literals("foo","foo",#23134)
-decl(#23134,#23116)
+decl(#23134,#22809)
#23135=*
scopes(#23135,1)
scopenodes(#23132,#23135)
@@ -9855,7 +9855,7 @@ hasLocation(#23149,#22080)
enclosing_stmt(#23149,#23147)
expr_containers(#23149,#22805)
literals("T30","T30",#23149)
-typedecl(#23149,#22822)
+typedecl(#23149,#22823)
#23150=*
typeexprs(#23150,14,#23147,1,"ReturnT ... of foo>")
#23151=@"loc,{#10000},97,14,97,35"
@@ -9869,7 +9869,7 @@ hasLocation(#23152,#22084)
enclosing_stmt(#23152,#23147)
expr_containers(#23152,#22805)
literals("ReturnType","ReturnType",#23152)
-typebind(#23152,#22824)
+typebind(#23152,#22825)
#23153=*
typeexprs(#23153,16,#23150,0,"typeof foo")
#23154=@"loc,{#10000},97,25,97,34"
@@ -9883,7 +9883,7 @@ hasLocation(#23155,#22090)
enclosing_stmt(#23155,#23147)
expr_containers(#23155,#22805)
literals("foo","foo",#23155)
-bind(#23155,#23116)
+bind(#23155,#22809)
#23156=*
stmts(#23156,35,#22805,17,"type An ... => any;")
#23157=@"loc,{#10000},99,3,99,45"
@@ -9896,7 +9896,7 @@ hasLocation(#23158,#22098)
enclosing_stmt(#23158,#23156)
expr_containers(#23158,#22805)
literals("AnyFunction","AnyFunction",#23158)
-typedecl(#23158,#22823)
+typedecl(#23158,#22824)
#23159=*
typeexprs(#23159,23,#23156,1,"(...arg ... => any")
#23160=@"loc,{#10000},99,22,99,44"
@@ -9953,7 +9953,7 @@ hasLocation(#23172,#22126)
enclosing_stmt(#23172,#23170)
expr_containers(#23172,#22805)
literals("ReturnType","ReturnType",#23172)
-typedecl(#23172,#22824)
+typedecl(#23172,#22825)
#23173=*
scopes(#23173,12)
scopenodes(#23170,#23173)
@@ -9980,7 +9980,7 @@ hasLocation(#23178,#22134)
enclosing_stmt(#23178,#23170)
expr_containers(#23178,#22805)
literals("AnyFunction","AnyFunction",#23178)
-typebind(#23178,#22823)
+typebind(#23178,#22824)
#23179=*
typeexprs(#23179,28,#23170,1,"T exten ... R : any")
#23180=@"loc,{#10000},100,44,100,90"
@@ -10084,21 +10084,21 @@ successor(#23156,#23170)
successor(#23147,#23156)
successor(#23132,#23147)
successor(#23123,#23132)
-successor(#23113,#23123)
-successor(#23081,#23113)
-successor(#23049,#23081)
-successor(#23005,#23049)
-successor(#22989,#23005)
-successor(#22973,#22989)
-successor(#22945,#22973)
-successor(#22930,#22945)
-successor(#22918,#22930)
-successor(#22908,#22918)
-successor(#22896,#22908)
-successor(#22887,#22896)
-successor(#22880,#22887)
-successor(#22825,#22880)
-successor(#22805,#22825)
+successor(#23114,#23123)
+successor(#23082,#23114)
+successor(#23050,#23082)
+successor(#23006,#23050)
+successor(#22990,#23006)
+successor(#22974,#22990)
+successor(#22946,#22974)
+successor(#22931,#22946)
+successor(#22919,#22931)
+successor(#22909,#22919)
+successor(#22897,#22909)
+successor(#22888,#22897)
+successor(#22881,#22888)
+successor(#22826,#22881)
+successor(#22805,#22826)
successor(#22185,#22183)
successor(#22777,#22807)
successor(#22770,#22777)
diff --git a/javascript/extractor/tests/ts/output/trap/declareClass.ts.trap b/javascript/extractor/tests/ts/output/trap/declareClass.ts.trap
index 6bc9fb5ffb25..83ada22ef89a 100644
--- a/javascript/extractor/tests/ts/output/trap/declareClass.ts.trap
+++ b/javascript/extractor/tests/ts/output/trap/declareClass.ts.trap
@@ -50,61 +50,64 @@ toplevels(#20001,0)
#20016=@"loc,{#10000},1,1,2,0"
locations_default(#20016,#10000,1,1,2,0)
hasLocation(#20001,#20016)
-#20017=*
-stmts(#20017,26,#20001,0,"declare class C {}")
-hasLocation(#20017,#20003)
-stmt_containers(#20017,#20001)
-has_declare_keyword(#20017)
-#20018=*
-exprs(#20018,78,#20017,0,"C")
-hasLocation(#20018,#20009)
-enclosing_stmt(#20018,#20017)
-expr_containers(#20018,#20001)
-literals("C","C",#20018)
-#20019=@"var;{C};{#20000}"
-variables(#20019,"C",#20000)
-decl(#20018,#20019)
+#20017=@"var;{C};{#20000}"
+variables(#20017,"C",#20000)
+#20018=@"local_type_name;{C};{#20000}"
+local_type_names(#20018,"C",#20000)
+#20019=*
+stmts(#20019,26,#20001,0,"declare class C {}")
+hasLocation(#20019,#20003)
+stmt_containers(#20019,#20001)
+has_declare_keyword(#20019)
#20020=*
-scopes(#20020,10)
-scopenodes(#20017,#20020)
-scopenesting(#20020,#20000)
+exprs(#20020,78,#20019,0,"C")
+hasLocation(#20020,#20009)
+enclosing_stmt(#20020,#20019)
+expr_containers(#20020,#20001)
+literals("C","C",#20020)
+decl(#20020,#20017)
+typedecl(#20020,#20018)
#20021=*
-properties(#20021,#20017,2,0,"constructor() {}")
-#20022=@"loc,{#10000},1,17,1,16"
-locations_default(#20022,#10000,1,17,1,16)
-hasLocation(#20021,#20022)
-#20023=*
-exprs(#20023,0,#20021,0,"constructor")
-hasLocation(#20023,#20022)
-enclosing_stmt(#20023,#20017)
-expr_containers(#20023,#20001)
-literals("constructor","constructor",#20023)
+scopes(#20021,10)
+scopenodes(#20019,#20021)
+scopenesting(#20021,#20000)
+#20022=*
+properties(#20022,#20019,2,0,"constructor() {}")
+#20023=@"loc,{#10000},1,17,1,16"
+locations_default(#20023,#10000,1,17,1,16)
+hasLocation(#20022,#20023)
#20024=*
-exprs(#20024,9,#20021,1,"() {}")
-hasLocation(#20024,#20022)
-enclosing_stmt(#20024,#20017)
+exprs(#20024,0,#20022,0,"constructor")
+hasLocation(#20024,#20023)
+enclosing_stmt(#20024,#20019)
expr_containers(#20024,#20001)
+literals("constructor","constructor",#20024)
#20025=*
-scopes(#20025,1)
-scopenodes(#20024,#20025)
-scopenesting(#20025,#20020)
-#20026=@"var;{arguments};{#20025}"
-variables(#20026,"arguments",#20025)
-is_arguments_object(#20026)
-#20027=*
-stmts(#20027,1,#20024,-2,"{}")
-hasLocation(#20027,#20022)
-stmt_containers(#20027,#20024)
-is_method(#20021)
+exprs(#20025,9,#20022,1,"() {}")
+hasLocation(#20025,#20023)
+enclosing_stmt(#20025,#20019)
+expr_containers(#20025,#20001)
+#20026=*
+scopes(#20026,1)
+scopenodes(#20025,#20026)
+scopenesting(#20026,#20021)
+#20027=@"var;{arguments};{#20026}"
+variables(#20027,"arguments",#20026)
+is_arguments_object(#20027)
#20028=*
-entry_cfg_node(#20028,#20001)
-#20029=@"loc,{#10000},1,1,1,0"
-locations_default(#20029,#10000,1,1,1,0)
-hasLocation(#20028,#20029)
-#20030=*
-exit_cfg_node(#20030,#20001)
-hasLocation(#20030,#20015)
-successor(#20017,#20030)
-successor(#20028,#20017)
+stmts(#20028,1,#20025,-2,"{}")
+hasLocation(#20028,#20023)
+stmt_containers(#20028,#20025)
+is_method(#20022)
+#20029=*
+entry_cfg_node(#20029,#20001)
+#20030=@"loc,{#10000},1,1,1,0"
+locations_default(#20030,#10000,1,1,1,0)
+hasLocation(#20029,#20030)
+#20031=*
+exit_cfg_node(#20031,#20001)
+hasLocation(#20031,#20015)
+successor(#20019,#20031)
+successor(#20029,#20019)
numlines(#10000,1,1,0)
filetype(#10000,"typescript")
diff --git a/javascript/extractor/tests/ts/output/trap/functiondecorators.ts.trap b/javascript/extractor/tests/ts/output/trap/functiondecorators.ts.trap
index 89cd17604433..00276bb64641 100644
--- a/javascript/extractor/tests/ts/output/trap/functiondecorators.ts.trap
+++ b/javascript/extractor/tests/ts/output/trap/functiondecorators.ts.trap
@@ -584,62 +584,63 @@ toplevels(#20001,0)
#20221=@"loc,{#10000},1,1,16,0"
locations_default(#20221,#10000,1,1,16,0)
hasLocation(#20001,#20221)
-#20222=@"var;{C};{#20000}"
-variables(#20222,"C",#20000)
-#20223=@"local_type_name;{C};{#20000}"
-local_type_names(#20223,"C",#20000)
-#20224=*
-stmts(#20224,18,#20001,0,"declare var A : any;")
-hasLocation(#20224,#20003)
-stmt_containers(#20224,#20001)
-has_declare_keyword(#20224)
-#20225=*
-exprs(#20225,64,#20224,0,"A : any")
-#20226=@"loc,{#10000},1,13,1,19"
-locations_default(#20226,#10000,1,13,1,19)
-hasLocation(#20225,#20226)
-enclosing_stmt(#20225,#20224)
-expr_containers(#20225,#20001)
+#20222=@"var;{A};{#20000}"
+variables(#20222,"A",#20000)
+#20223=@"var;{B};{#20000}"
+variables(#20223,"B",#20000)
+#20224=@"var;{C};{#20000}"
+variables(#20224,"C",#20000)
+variables(#20224,"C",#20000)
+#20225=@"local_type_name;{C};{#20000}"
+local_type_names(#20225,"C",#20000)
+#20226=*
+stmts(#20226,18,#20001,0,"declare var A : any;")
+hasLocation(#20226,#20003)
+stmt_containers(#20226,#20001)
+has_declare_keyword(#20226)
#20227=*
-exprs(#20227,78,#20225,0,"A")
-hasLocation(#20227,#20037)
-enclosing_stmt(#20227,#20224)
+exprs(#20227,64,#20226,0,"A : any")
+#20228=@"loc,{#10000},1,13,1,19"
+locations_default(#20228,#10000,1,13,1,19)
+hasLocation(#20227,#20228)
+enclosing_stmt(#20227,#20226)
expr_containers(#20227,#20001)
-literals("A","A",#20227)
-#20228=@"var;{A};{#20000}"
-variables(#20228,"A",#20000)
-decl(#20227,#20228)
#20229=*
-typeexprs(#20229,2,#20225,2,"any")
-hasLocation(#20229,#20041)
-enclosing_stmt(#20229,#20224)
+exprs(#20229,78,#20227,0,"A")
+hasLocation(#20229,#20037)
+enclosing_stmt(#20229,#20226)
expr_containers(#20229,#20001)
-literals("any","any",#20229)
+literals("A","A",#20229)
+decl(#20229,#20222)
#20230=*
-stmts(#20230,18,#20001,1,"declare var B : any;")
-hasLocation(#20230,#20005)
-stmt_containers(#20230,#20001)
-has_declare_keyword(#20230)
+typeexprs(#20230,2,#20227,2,"any")
+hasLocation(#20230,#20041)
+enclosing_stmt(#20230,#20226)
+expr_containers(#20230,#20001)
+literals("any","any",#20230)
#20231=*
-exprs(#20231,64,#20230,0,"B : any")
-#20232=@"loc,{#10000},2,13,2,19"
-locations_default(#20232,#10000,2,13,2,19)
-hasLocation(#20231,#20232)
-enclosing_stmt(#20231,#20230)
-expr_containers(#20231,#20001)
-#20233=*
-exprs(#20233,78,#20231,0,"B")
-hasLocation(#20233,#20049)
-enclosing_stmt(#20233,#20230)
-expr_containers(#20233,#20001)
-literals("B","B",#20233)
-#20234=@"var;{B};{#20000}"
-variables(#20234,"B",#20000)
-decl(#20233,#20234)
+stmts(#20231,18,#20001,1,"declare var B : any;")
+hasLocation(#20231,#20005)
+stmt_containers(#20231,#20001)
+has_declare_keyword(#20231)
+#20232=*
+exprs(#20232,64,#20231,0,"B : any")
+#20233=@"loc,{#10000},2,13,2,19"
+locations_default(#20233,#10000,2,13,2,19)
+hasLocation(#20232,#20233)
+enclosing_stmt(#20232,#20231)
+expr_containers(#20232,#20001)
+#20234=*
+exprs(#20234,78,#20232,0,"B")
+hasLocation(#20234,#20049)
+enclosing_stmt(#20234,#20231)
+expr_containers(#20234,#20001)
+literals("B","B",#20234)
+decl(#20234,#20223)
#20235=*
-typeexprs(#20235,2,#20231,2,"any")
+typeexprs(#20235,2,#20232,2,"any")
hasLocation(#20235,#20053)
-enclosing_stmt(#20235,#20230)
+enclosing_stmt(#20235,#20231)
expr_containers(#20235,#20001)
literals("any","any",#20235)
#20236=*
@@ -660,7 +661,7 @@ hasLocation(#20239,#20061)
enclosing_stmt(#20239,#20236)
expr_containers(#20239,#20001)
literals("C","C",#20239)
-decl(#20239,#20222)
+decl(#20239,#20224)
#20240=*
typeexprs(#20240,2,#20237,2,"any")
hasLocation(#20240,#20065)
@@ -679,8 +680,8 @@ hasLocation(#20243,#20071)
enclosing_stmt(#20243,#20241)
expr_containers(#20243,#20001)
literals("C","C",#20243)
-decl(#20243,#20222)
-typedecl(#20243,#20223)
+decl(#20243,#20224)
+typedecl(#20243,#20225)
#20244=*
scopes(#20244,10)
scopenodes(#20241,#20244)
@@ -769,7 +770,7 @@ exprs(#20266,79,#20265,0,"A")
hasLocation(#20266,#20093)
expr_containers(#20266,#20258)
literals("A","A",#20266)
-bind(#20266,#20228)
+bind(#20266,#20222)
#20267=*
stmts(#20267,1,#20258,-2,"{}")
#20268=@"loc,{#10000},7,12,7,13"
@@ -825,7 +826,7 @@ exprs(#20281,79,#20279,0,"A")
hasLocation(#20281,#20109)
expr_containers(#20281,#20272)
literals("A","A",#20281)
-bind(#20281,#20228)
+bind(#20281,#20222)
#20282=*
exprs(#20282,94,#20277,1,"@B")
#20283=@"loc,{#10000},8,9,8,10"
@@ -837,7 +838,7 @@ exprs(#20284,79,#20282,0,"B")
hasLocation(#20284,#20113)
expr_containers(#20284,#20272)
literals("B","B",#20284)
-bind(#20284,#20234)
+bind(#20284,#20223)
#20285=*
stmts(#20285,1,#20272,-2,"{}")
#20286=@"loc,{#10000},8,16,8,17"
@@ -899,7 +900,7 @@ exprs(#20300,79,#20299,0,"A")
hasLocation(#20300,#20133)
expr_containers(#20300,#20290)
literals("A","A",#20300)
-bind(#20300,#20228)
+bind(#20300,#20222)
#20301=*
stmts(#20301,1,#20290,-2,"{}")
#20302=@"loc,{#10000},10,18,10,19"
@@ -963,7 +964,7 @@ exprs(#20317,79,#20315,0,"A")
hasLocation(#20317,#20153)
expr_containers(#20317,#20306)
literals("A","A",#20317)
-bind(#20317,#20228)
+bind(#20317,#20222)
#20318=*
exprs(#20318,94,#20313,1,"@B")
#20319=@"loc,{#10000},11,15,11,16"
@@ -975,7 +976,7 @@ exprs(#20320,79,#20318,0,"B")
hasLocation(#20320,#20157)
expr_containers(#20320,#20306)
literals("B","B",#20320)
-bind(#20320,#20234)
+bind(#20320,#20223)
#20321=*
stmts(#20321,1,#20306,-2,"{}")
#20322=@"loc,{#10000},11,22,11,23"
@@ -1037,7 +1038,7 @@ exprs(#20336,79,#20335,0,"A")
hasLocation(#20336,#20173)
expr_containers(#20336,#20326)
literals("A","A",#20336)
-bind(#20336,#20228)
+bind(#20336,#20222)
#20337=*
exprs(#20337,104,#20326,-12,"@B")
#20338=@"loc,{#10000},13,12,13,13"
@@ -1053,7 +1054,7 @@ exprs(#20340,79,#20339,0,"B")
hasLocation(#20340,#20181)
expr_containers(#20340,#20326)
literals("B","B",#20340)
-bind(#20340,#20234)
+bind(#20340,#20223)
#20341=*
stmts(#20341,1,#20326,-2,"{}")
#20342=@"loc,{#10000},13,18,13,19"
@@ -1115,7 +1116,7 @@ exprs(#20356,79,#20355,0,"A")
hasLocation(#20356,#20197)
expr_containers(#20356,#20346)
literals("A","A",#20356)
-bind(#20356,#20228)
+bind(#20356,#20222)
#20357=*
exprs(#20357,104,#20346,-12,"@B @C")
#20358=@"loc,{#10000},14,12,14,16"
@@ -1133,7 +1134,7 @@ exprs(#20361,79,#20359,0,"B")
hasLocation(#20361,#20205)
expr_containers(#20361,#20346)
literals("B","B",#20361)
-bind(#20361,#20234)
+bind(#20361,#20223)
#20362=*
exprs(#20362,94,#20357,1,"@C")
#20363=@"loc,{#10000},14,15,14,16"
@@ -1145,7 +1146,7 @@ exprs(#20364,79,#20362,0,"C")
hasLocation(#20364,#20209)
expr_containers(#20364,#20346)
literals("C","C",#20364)
-bind(#20364,#20222)
+bind(#20364,#20224)
#20365=*
stmts(#20365,1,#20346,-2,"{}")
#20366=@"loc,{#10000},14,22,14,23"
@@ -1349,8 +1350,8 @@ successor(#20265,#20263)
successor(#20263,#20281)
successor(#20241,#20266)
successor(#20236,#20243)
-successor(#20230,#20236)
-successor(#20224,#20230)
-successor(#20374,#20224)
+successor(#20231,#20236)
+successor(#20226,#20231)
+successor(#20374,#20226)
numlines(#10000,15,12,0)
filetype(#10000,"typescript")
diff --git a/javascript/extractor/tests/ts/output/trap/nobody.ts.trap b/javascript/extractor/tests/ts/output/trap/nobody.ts.trap
index 44a32603e097..717d79423abd 100644
--- a/javascript/extractor/tests/ts/output/trap/nobody.ts.trap
+++ b/javascript/extractor/tests/ts/output/trap/nobody.ts.trap
@@ -694,506 +694,509 @@ toplevels(#20001,0)
#20252=@"loc,{#10000},2,1,30,0"
locations_default(#20252,#10000,2,1,30,0)
hasLocation(#20001,#20252)
-#20253=@"var;{C};{#20000}"
-variables(#20253,"C",#20000)
-#20254=@"local_type_name;{C};{#20000}"
-local_type_names(#20254,"C",#20000)
-#20255=*
-stmts(#20255,17,#20001,0,"declare ... on f();")
-hasLocation(#20255,#20020)
-stmt_containers(#20255,#20001)
-has_declare_keyword(#20255)
-#20256=*
-exprs(#20256,78,#20255,-1,"f")
-hasLocation(#20256,#20079)
-expr_containers(#20256,#20255)
-literals("f","f",#20256)
-#20257=@"var;{f};{#20000}"
-variables(#20257,"f",#20000)
-decl(#20256,#20257)
+#20253=@"var;{f};{#20000}"
+variables(#20253,"f",#20000)
+#20254=@"var;{C};{#20000}"
+variables(#20254,"C",#20000)
+#20255=@"var;{D};{#20000}"
+variables(#20255,"D",#20000)
+#20256=@"local_type_name;{C};{#20000}"
+local_type_names(#20256,"C",#20000)
+#20257=@"local_type_name;{D};{#20000}"
+local_type_names(#20257,"D",#20000)
#20258=*
-scopes(#20258,1)
-scopenodes(#20255,#20258)
-scopenesting(#20258,#20000)
-#20259=@"var;{arguments};{#20258}"
-variables(#20259,"arguments",#20258)
-is_arguments_object(#20259)
+stmts(#20258,17,#20001,0,"declare ... on f();")
+hasLocation(#20258,#20020)
+stmt_containers(#20258,#20001)
+has_declare_keyword(#20258)
+#20259=*
+exprs(#20259,78,#20258,-1,"f")
+hasLocation(#20259,#20079)
+expr_containers(#20259,#20258)
+literals("f","f",#20259)
+decl(#20259,#20253)
#20260=*
-stmts(#20260,26,#20001,1,"abstrac ... mber;\n}")
-#20261=@"loc,{#10000},4,1,15,1"
-locations_default(#20261,#10000,4,1,15,1)
-hasLocation(#20260,#20261)
-stmt_containers(#20260,#20001)
-is_abstract_class(#20260)
+scopes(#20260,1)
+scopenodes(#20258,#20260)
+scopenesting(#20260,#20000)
+#20261=@"var;{arguments};{#20260}"
+variables(#20261,"arguments",#20260)
+is_arguments_object(#20261)
#20262=*
-exprs(#20262,78,#20260,0,"C")
-hasLocation(#20262,#20091)
-enclosing_stmt(#20262,#20260)
-expr_containers(#20262,#20001)
-literals("C","C",#20262)
-decl(#20262,#20253)
-typedecl(#20262,#20254)
-#20263=*
-scopes(#20263,10)
-scopenodes(#20260,#20263)
-scopenesting(#20263,#20000)
+stmts(#20262,26,#20001,1,"abstrac ... mber;\n}")
+#20263=@"loc,{#10000},4,1,15,1"
+locations_default(#20263,#10000,4,1,15,1)
+hasLocation(#20262,#20263)
+stmt_containers(#20262,#20001)
+is_abstract_class(#20262)
#20264=*
-properties(#20264,#20260,2,0,"abstract h();")
-#20265=@"loc,{#10000},6,3,6,15"
-locations_default(#20265,#10000,6,3,6,15)
-hasLocation(#20264,#20265)
+exprs(#20264,78,#20262,0,"C")
+hasLocation(#20264,#20091)
+enclosing_stmt(#20264,#20262)
+expr_containers(#20264,#20001)
+literals("C","C",#20264)
+decl(#20264,#20254)
+typedecl(#20264,#20256)
+#20265=*
+scopes(#20265,10)
+scopenodes(#20262,#20265)
+scopenesting(#20265,#20000)
#20266=*
-exprs(#20266,0,#20264,0,"h")
-hasLocation(#20266,#20097)
-enclosing_stmt(#20266,#20260)
-expr_containers(#20266,#20001)
-literals("h","h",#20266)
-#20267=*
-exprs(#20267,9,#20264,1,"abstract h();")
-hasLocation(#20267,#20265)
-enclosing_stmt(#20267,#20260)
-expr_containers(#20267,#20001)
+properties(#20266,#20262,2,0,"abstract h();")
+#20267=@"loc,{#10000},6,3,6,15"
+locations_default(#20267,#10000,6,3,6,15)
+hasLocation(#20266,#20267)
#20268=*
-scopes(#20268,1)
-scopenodes(#20267,#20268)
-scopenesting(#20268,#20263)
-#20269=@"var;{arguments};{#20268}"
-variables(#20269,"arguments",#20268)
-is_arguments_object(#20269)
-is_method(#20264)
-is_abstract_member(#20264)
+exprs(#20268,0,#20266,0,"h")
+hasLocation(#20268,#20097)
+enclosing_stmt(#20268,#20262)
+expr_containers(#20268,#20001)
+literals("h","h",#20268)
+#20269=*
+exprs(#20269,9,#20266,1,"abstract h();")
+hasLocation(#20269,#20267)
+enclosing_stmt(#20269,#20262)
+expr_containers(#20269,#20001)
#20270=*
-properties(#20270,#20260,3,0,"g(x: nu ... number;")
-#20271=@"loc,{#10000},9,3,9,23"
-locations_default(#20271,#10000,9,3,9,23)
-hasLocation(#20270,#20271)
+scopes(#20270,1)
+scopenodes(#20269,#20270)
+scopenesting(#20270,#20265)
+#20271=@"var;{arguments};{#20270}"
+variables(#20271,"arguments",#20270)
+is_arguments_object(#20271)
+is_method(#20266)
+is_abstract_member(#20266)
#20272=*
-exprs(#20272,0,#20270,0,"g")
-hasLocation(#20272,#20105)
-enclosing_stmt(#20272,#20260)
-expr_containers(#20272,#20001)
-literals("g","g",#20272)
-#20273=*
-exprs(#20273,9,#20270,1,"g(x: nu ... number;")
-hasLocation(#20273,#20271)
-enclosing_stmt(#20273,#20260)
-expr_containers(#20273,#20001)
+properties(#20272,#20262,3,0,"g(x: nu ... number;")
+#20273=@"loc,{#10000},9,3,9,23"
+locations_default(#20273,#10000,9,3,9,23)
+hasLocation(#20272,#20273)
#20274=*
-scopes(#20274,1)
-scopenodes(#20273,#20274)
-scopenesting(#20274,#20263)
-#20275=@"var;{x};{#20274}"
-variables(#20275,"x",#20274)
+exprs(#20274,0,#20272,0,"g")
+hasLocation(#20274,#20105)
+enclosing_stmt(#20274,#20262)
+expr_containers(#20274,#20001)
+literals("g","g",#20274)
+#20275=*
+exprs(#20275,9,#20272,1,"g(x: nu ... number;")
+hasLocation(#20275,#20273)
+enclosing_stmt(#20275,#20262)
+expr_containers(#20275,#20001)
#20276=*
-exprs(#20276,78,#20273,0,"x")
-hasLocation(#20276,#20109)
-expr_containers(#20276,#20273)
-literals("x","x",#20276)
-decl(#20276,#20275)
-#20277=@"var;{arguments};{#20274}"
-variables(#20277,"arguments",#20274)
-is_arguments_object(#20277)
+scopes(#20276,1)
+scopenodes(#20275,#20276)
+scopenesting(#20276,#20265)
+#20277=@"var;{x};{#20276}"
+variables(#20277,"x",#20276)
#20278=*
-typeexprs(#20278,2,#20273,-3,"number")
-hasLocation(#20278,#20119)
-expr_containers(#20278,#20273)
-literals("number","number",#20278)
-#20279=*
-typeexprs(#20279,2,#20273,-6,"number")
-hasLocation(#20279,#20113)
-expr_containers(#20279,#20273)
-literals("number","number",#20279)
-is_method(#20270)
+exprs(#20278,78,#20275,0,"x")
+hasLocation(#20278,#20109)
+expr_containers(#20278,#20275)
+literals("x","x",#20278)
+decl(#20278,#20277)
+#20279=@"var;{arguments};{#20276}"
+variables(#20279,"arguments",#20276)
+is_arguments_object(#20279)
#20280=*
-properties(#20280,#20260,4,0,"g(x: st ... string;")
-#20281=@"loc,{#10000},10,3,10,23"
-locations_default(#20281,#10000,10,3,10,23)
-hasLocation(#20280,#20281)
+typeexprs(#20280,2,#20275,-3,"number")
+hasLocation(#20280,#20119)
+expr_containers(#20280,#20275)
+literals("number","number",#20280)
+#20281=*
+typeexprs(#20281,2,#20275,-6,"number")
+hasLocation(#20281,#20113)
+expr_containers(#20281,#20275)
+literals("number","number",#20281)
+is_method(#20272)
#20282=*
-exprs(#20282,0,#20280,0,"g")
-hasLocation(#20282,#20123)
-enclosing_stmt(#20282,#20260)
-expr_containers(#20282,#20001)
-literals("g","g",#20282)
-#20283=*
-exprs(#20283,9,#20280,1,"g(x: st ... string;")
-hasLocation(#20283,#20281)
-enclosing_stmt(#20283,#20260)
-expr_containers(#20283,#20001)
+properties(#20282,#20262,4,0,"g(x: st ... string;")
+#20283=@"loc,{#10000},10,3,10,23"
+locations_default(#20283,#10000,10,3,10,23)
+hasLocation(#20282,#20283)
#20284=*
-scopes(#20284,1)
-scopenodes(#20283,#20284)
-scopenesting(#20284,#20263)
-#20285=@"var;{x};{#20284}"
-variables(#20285,"x",#20284)
+exprs(#20284,0,#20282,0,"g")
+hasLocation(#20284,#20123)
+enclosing_stmt(#20284,#20262)
+expr_containers(#20284,#20001)
+literals("g","g",#20284)
+#20285=*
+exprs(#20285,9,#20282,1,"g(x: st ... string;")
+hasLocation(#20285,#20283)
+enclosing_stmt(#20285,#20262)
+expr_containers(#20285,#20001)
#20286=*
-exprs(#20286,78,#20283,0,"x")
-hasLocation(#20286,#20127)
-expr_containers(#20286,#20283)
-literals("x","x",#20286)
-decl(#20286,#20285)
-#20287=@"var;{arguments};{#20284}"
-variables(#20287,"arguments",#20284)
-is_arguments_object(#20287)
+scopes(#20286,1)
+scopenodes(#20285,#20286)
+scopenesting(#20286,#20265)
+#20287=@"var;{x};{#20286}"
+variables(#20287,"x",#20286)
#20288=*
-typeexprs(#20288,2,#20283,-3,"string")
-hasLocation(#20288,#20137)
-expr_containers(#20288,#20283)
-literals("string","string",#20288)
-#20289=*
-typeexprs(#20289,2,#20283,-6,"string")
-hasLocation(#20289,#20131)
-expr_containers(#20289,#20283)
-literals("string","string",#20289)
-is_method(#20280)
+exprs(#20288,78,#20285,0,"x")
+hasLocation(#20288,#20127)
+expr_containers(#20288,#20285)
+literals("x","x",#20288)
+decl(#20288,#20287)
+#20289=@"var;{arguments};{#20286}"
+variables(#20289,"arguments",#20286)
+is_arguments_object(#20289)
#20290=*
-properties(#20290,#20260,5,0,"g(x: any) {}")
-#20291=@"loc,{#10000},11,3,11,14"
-locations_default(#20291,#10000,11,3,11,14)
-hasLocation(#20290,#20291)
+typeexprs(#20290,2,#20285,-3,"string")
+hasLocation(#20290,#20137)
+expr_containers(#20290,#20285)
+literals("string","string",#20290)
+#20291=*
+typeexprs(#20291,2,#20285,-6,"string")
+hasLocation(#20291,#20131)
+expr_containers(#20291,#20285)
+literals("string","string",#20291)
+is_method(#20282)
#20292=*
-exprs(#20292,0,#20290,0,"g")
-hasLocation(#20292,#20141)
-enclosing_stmt(#20292,#20260)
-expr_containers(#20292,#20001)
-literals("g","g",#20292)
-#20293=*
-exprs(#20293,9,#20290,1,"g(x: any) {}")
-hasLocation(#20293,#20291)
-enclosing_stmt(#20293,#20260)
-expr_containers(#20293,#20001)
+properties(#20292,#20262,5,0,"g(x: any) {}")
+#20293=@"loc,{#10000},11,3,11,14"
+locations_default(#20293,#10000,11,3,11,14)
+hasLocation(#20292,#20293)
#20294=*
-scopes(#20294,1)
-scopenodes(#20293,#20294)
-scopenesting(#20294,#20263)
-#20295=@"var;{x};{#20294}"
-variables(#20295,"x",#20294)
+exprs(#20294,0,#20292,0,"g")
+hasLocation(#20294,#20141)
+enclosing_stmt(#20294,#20262)
+expr_containers(#20294,#20001)
+literals("g","g",#20294)
+#20295=*
+exprs(#20295,9,#20292,1,"g(x: any) {}")
+hasLocation(#20295,#20293)
+enclosing_stmt(#20295,#20262)
+expr_containers(#20295,#20001)
#20296=*
-exprs(#20296,78,#20293,0,"x")
-hasLocation(#20296,#20145)
-expr_containers(#20296,#20293)
-literals("x","x",#20296)
-decl(#20296,#20295)
-#20297=@"var;{arguments};{#20294}"
-variables(#20297,"arguments",#20294)
-is_arguments_object(#20297)
+scopes(#20296,1)
+scopenodes(#20295,#20296)
+scopenesting(#20296,#20265)
+#20297=@"var;{x};{#20296}"
+variables(#20297,"x",#20296)
#20298=*
-typeexprs(#20298,2,#20293,-6,"any")
-hasLocation(#20298,#20149)
-expr_containers(#20298,#20293)
-literals("any","any",#20298)
-#20299=*
-stmts(#20299,1,#20293,-2,"{}")
-#20300=@"loc,{#10000},11,13,11,14"
-locations_default(#20300,#10000,11,13,11,14)
-hasLocation(#20299,#20300)
-stmt_containers(#20299,#20293)
-is_method(#20290)
+exprs(#20298,78,#20295,0,"x")
+hasLocation(#20298,#20145)
+expr_containers(#20298,#20295)
+literals("x","x",#20298)
+decl(#20298,#20297)
+#20299=@"var;{arguments};{#20296}"
+variables(#20299,"arguments",#20296)
+is_arguments_object(#20299)
+#20300=*
+typeexprs(#20300,2,#20295,-6,"any")
+hasLocation(#20300,#20149)
+expr_containers(#20300,#20295)
+literals("any","any",#20300)
#20301=*
-properties(#20301,#20260,6,8,"abstract x: number;")
-#20302=@"loc,{#10000},14,3,14,21"
-locations_default(#20302,#10000,14,3,14,21)
+stmts(#20301,1,#20295,-2,"{}")
+#20302=@"loc,{#10000},11,13,11,14"
+locations_default(#20302,#10000,11,13,11,14)
hasLocation(#20301,#20302)
+stmt_containers(#20301,#20295)
+is_method(#20292)
#20303=*
-#20304=*
-exprs(#20304,0,#20301,0,"x")
-hasLocation(#20304,#20159)
-expr_containers(#20304,#20303)
-literals("x","x",#20304)
-is_abstract_member(#20301)
+properties(#20303,#20262,6,8,"abstract x: number;")
+#20304=@"loc,{#10000},14,3,14,21"
+locations_default(#20304,#10000,14,3,14,21)
+hasLocation(#20303,#20304)
#20305=*
-typeexprs(#20305,2,#20301,2,"number")
-hasLocation(#20305,#20163)
-enclosing_stmt(#20305,#20260)
-expr_containers(#20305,#20001)
-literals("number","number",#20305)
#20306=*
-properties(#20306,#20260,7,0,"constructor() {}")
-#20307=@"loc,{#10000},4,18,4,17"
-locations_default(#20307,#10000,4,18,4,17)
-hasLocation(#20306,#20307)
+exprs(#20306,0,#20303,0,"x")
+hasLocation(#20306,#20159)
+expr_containers(#20306,#20305)
+literals("x","x",#20306)
+is_abstract_member(#20303)
+#20307=*
+typeexprs(#20307,2,#20303,2,"number")
+hasLocation(#20307,#20163)
+enclosing_stmt(#20307,#20262)
+expr_containers(#20307,#20001)
+literals("number","number",#20307)
#20308=*
-exprs(#20308,0,#20306,0,"constructor")
-hasLocation(#20308,#20307)
-enclosing_stmt(#20308,#20260)
-expr_containers(#20308,#20001)
-literals("constructor","constructor",#20308)
-exprs(#20303,9,#20306,1,"() {}")
-hasLocation(#20303,#20307)
-enclosing_stmt(#20303,#20260)
-expr_containers(#20303,#20001)
-#20309=*
-scopes(#20309,1)
-scopenodes(#20303,#20309)
-scopenesting(#20309,#20263)
-#20310=@"var;{arguments};{#20309}"
-variables(#20310,"arguments",#20309)
-is_arguments_object(#20310)
+properties(#20308,#20262,7,0,"constructor() {}")
+#20309=@"loc,{#10000},4,18,4,17"
+locations_default(#20309,#10000,4,18,4,17)
+hasLocation(#20308,#20309)
+#20310=*
+exprs(#20310,0,#20308,0,"constructor")
+hasLocation(#20310,#20309)
+enclosing_stmt(#20310,#20262)
+expr_containers(#20310,#20001)
+literals("constructor","constructor",#20310)
+exprs(#20305,9,#20308,1,"() {}")
+hasLocation(#20305,#20309)
+enclosing_stmt(#20305,#20262)
+expr_containers(#20305,#20001)
#20311=*
-stmts(#20311,1,#20303,-2,"{}")
-hasLocation(#20311,#20307)
-stmt_containers(#20311,#20303)
-is_method(#20306)
-#20312=*
-stmts(#20312,26,#20001,2,"declare ... mber;\n}")
-#20313=@"loc,{#10000},18,1,29,1"
-locations_default(#20313,#10000,18,1,29,1)
-hasLocation(#20312,#20313)
-stmt_containers(#20312,#20001)
-has_declare_keyword(#20312)
-is_abstract_class(#20312)
+scopes(#20311,1)
+scopenodes(#20305,#20311)
+scopenesting(#20311,#20265)
+#20312=@"var;{arguments};{#20311}"
+variables(#20312,"arguments",#20311)
+is_arguments_object(#20312)
+#20313=*
+stmts(#20313,1,#20305,-2,"{}")
+hasLocation(#20313,#20309)
+stmt_containers(#20313,#20305)
+is_method(#20308)
#20314=*
-exprs(#20314,78,#20312,0,"D")
-hasLocation(#20314,#20174)
-enclosing_stmt(#20314,#20312)
-expr_containers(#20314,#20001)
-literals("D","D",#20314)
-#20315=@"var;{D};{#20000}"
-variables(#20315,"D",#20000)
-decl(#20314,#20315)
+stmts(#20314,26,#20001,2,"declare ... mber;\n}")
+#20315=@"loc,{#10000},18,1,29,1"
+locations_default(#20315,#10000,18,1,29,1)
+hasLocation(#20314,#20315)
+stmt_containers(#20314,#20001)
+has_declare_keyword(#20314)
+is_abstract_class(#20314)
#20316=*
-scopes(#20316,10)
-scopenodes(#20312,#20316)
-scopenesting(#20316,#20000)
+exprs(#20316,78,#20314,0,"D")
+hasLocation(#20316,#20174)
+enclosing_stmt(#20316,#20314)
+expr_containers(#20316,#20001)
+literals("D","D",#20316)
+decl(#20316,#20255)
+typedecl(#20316,#20257)
#20317=*
-properties(#20317,#20312,2,0,"abstract h();")
-#20318=@"loc,{#10000},20,3,20,15"
-locations_default(#20318,#10000,20,3,20,15)
-hasLocation(#20317,#20318)
-#20319=*
-exprs(#20319,0,#20317,0,"h")
-hasLocation(#20319,#20180)
-enclosing_stmt(#20319,#20312)
-expr_containers(#20319,#20001)
-literals("h","h",#20319)
+scopes(#20317,10)
+scopenodes(#20314,#20317)
+scopenesting(#20317,#20000)
+#20318=*
+properties(#20318,#20314,2,0,"abstract h();")
+#20319=@"loc,{#10000},20,3,20,15"
+locations_default(#20319,#10000,20,3,20,15)
+hasLocation(#20318,#20319)
#20320=*
-exprs(#20320,9,#20317,1,"abstract h();")
-hasLocation(#20320,#20318)
-enclosing_stmt(#20320,#20312)
+exprs(#20320,0,#20318,0,"h")
+hasLocation(#20320,#20180)
+enclosing_stmt(#20320,#20314)
expr_containers(#20320,#20001)
+literals("h","h",#20320)
#20321=*
-scopes(#20321,1)
-scopenodes(#20320,#20321)
-scopenesting(#20321,#20316)
-#20322=@"var;{arguments};{#20321}"
-variables(#20322,"arguments",#20321)
-is_arguments_object(#20322)
-is_method(#20317)
-is_abstract_member(#20317)
-#20323=*
-properties(#20323,#20312,3,0,"g(x: nu ... number;")
-#20324=@"loc,{#10000},23,3,23,23"
-locations_default(#20324,#10000,23,3,23,23)
-hasLocation(#20323,#20324)
-#20325=*
-exprs(#20325,0,#20323,0,"g")
-hasLocation(#20325,#20188)
-enclosing_stmt(#20325,#20312)
-expr_containers(#20325,#20001)
-literals("g","g",#20325)
+exprs(#20321,9,#20318,1,"abstract h();")
+hasLocation(#20321,#20319)
+enclosing_stmt(#20321,#20314)
+expr_containers(#20321,#20001)
+#20322=*
+scopes(#20322,1)
+scopenodes(#20321,#20322)
+scopenesting(#20322,#20317)
+#20323=@"var;{arguments};{#20322}"
+variables(#20323,"arguments",#20322)
+is_arguments_object(#20323)
+is_method(#20318)
+is_abstract_member(#20318)
+#20324=*
+properties(#20324,#20314,3,0,"g(x: nu ... number;")
+#20325=@"loc,{#10000},23,3,23,23"
+locations_default(#20325,#10000,23,3,23,23)
+hasLocation(#20324,#20325)
#20326=*
-exprs(#20326,9,#20323,1,"g(x: nu ... number;")
-hasLocation(#20326,#20324)
-enclosing_stmt(#20326,#20312)
+exprs(#20326,0,#20324,0,"g")
+hasLocation(#20326,#20188)
+enclosing_stmt(#20326,#20314)
expr_containers(#20326,#20001)
+literals("g","g",#20326)
#20327=*
-scopes(#20327,1)
-scopenodes(#20326,#20327)
-scopenesting(#20327,#20316)
-#20328=@"var;{x};{#20327}"
-variables(#20328,"x",#20327)
-#20329=*
-exprs(#20329,78,#20326,0,"x")
-hasLocation(#20329,#20192)
-expr_containers(#20329,#20326)
-literals("x","x",#20329)
-decl(#20329,#20328)
-#20330=@"var;{arguments};{#20327}"
-variables(#20330,"arguments",#20327)
-is_arguments_object(#20330)
-#20331=*
-typeexprs(#20331,2,#20326,-3,"number")
-hasLocation(#20331,#20202)
-expr_containers(#20331,#20326)
-literals("number","number",#20331)
+exprs(#20327,9,#20324,1,"g(x: nu ... number;")
+hasLocation(#20327,#20325)
+enclosing_stmt(#20327,#20314)
+expr_containers(#20327,#20001)
+#20328=*
+scopes(#20328,1)
+scopenodes(#20327,#20328)
+scopenesting(#20328,#20317)
+#20329=@"var;{x};{#20328}"
+variables(#20329,"x",#20328)
+#20330=*
+exprs(#20330,78,#20327,0,"x")
+hasLocation(#20330,#20192)
+expr_containers(#20330,#20327)
+literals("x","x",#20330)
+decl(#20330,#20329)
+#20331=@"var;{arguments};{#20328}"
+variables(#20331,"arguments",#20328)
+is_arguments_object(#20331)
#20332=*
-typeexprs(#20332,2,#20326,-6,"number")
-hasLocation(#20332,#20196)
-expr_containers(#20332,#20326)
+typeexprs(#20332,2,#20327,-3,"number")
+hasLocation(#20332,#20202)
+expr_containers(#20332,#20327)
literals("number","number",#20332)
-is_method(#20323)
#20333=*
-properties(#20333,#20312,4,0,"g(x: st ... string;")
-#20334=@"loc,{#10000},24,3,24,23"
-locations_default(#20334,#10000,24,3,24,23)
-hasLocation(#20333,#20334)
-#20335=*
-exprs(#20335,0,#20333,0,"g")
-hasLocation(#20335,#20206)
-enclosing_stmt(#20335,#20312)
-expr_containers(#20335,#20001)
-literals("g","g",#20335)
+typeexprs(#20333,2,#20327,-6,"number")
+hasLocation(#20333,#20196)
+expr_containers(#20333,#20327)
+literals("number","number",#20333)
+is_method(#20324)
+#20334=*
+properties(#20334,#20314,4,0,"g(x: st ... string;")
+#20335=@"loc,{#10000},24,3,24,23"
+locations_default(#20335,#10000,24,3,24,23)
+hasLocation(#20334,#20335)
#20336=*
-exprs(#20336,9,#20333,1,"g(x: st ... string;")
-hasLocation(#20336,#20334)
-enclosing_stmt(#20336,#20312)
+exprs(#20336,0,#20334,0,"g")
+hasLocation(#20336,#20206)
+enclosing_stmt(#20336,#20314)
expr_containers(#20336,#20001)
+literals("g","g",#20336)
#20337=*
-scopes(#20337,1)
-scopenodes(#20336,#20337)
-scopenesting(#20337,#20316)
-#20338=@"var;{x};{#20337}"
-variables(#20338,"x",#20337)
-#20339=*
-exprs(#20339,78,#20336,0,"x")
-hasLocation(#20339,#20210)
-expr_containers(#20339,#20336)
-literals("x","x",#20339)
-decl(#20339,#20338)
-#20340=@"var;{arguments};{#20337}"
-variables(#20340,"arguments",#20337)
-is_arguments_object(#20340)
-#20341=*
-typeexprs(#20341,2,#20336,-3,"string")
-hasLocation(#20341,#20220)
-expr_containers(#20341,#20336)
-literals("string","string",#20341)
+exprs(#20337,9,#20334,1,"g(x: st ... string;")
+hasLocation(#20337,#20335)
+enclosing_stmt(#20337,#20314)
+expr_containers(#20337,#20001)
+#20338=*
+scopes(#20338,1)
+scopenodes(#20337,#20338)
+scopenesting(#20338,#20317)
+#20339=@"var;{x};{#20338}"
+variables(#20339,"x",#20338)
+#20340=*
+exprs(#20340,78,#20337,0,"x")
+hasLocation(#20340,#20210)
+expr_containers(#20340,#20337)
+literals("x","x",#20340)
+decl(#20340,#20339)
+#20341=@"var;{arguments};{#20338}"
+variables(#20341,"arguments",#20338)
+is_arguments_object(#20341)
#20342=*
-typeexprs(#20342,2,#20336,-6,"string")
-hasLocation(#20342,#20214)
-expr_containers(#20342,#20336)
+typeexprs(#20342,2,#20337,-3,"string")
+hasLocation(#20342,#20220)
+expr_containers(#20342,#20337)
literals("string","string",#20342)
-is_method(#20333)
#20343=*
-properties(#20343,#20312,5,0,"g(x: any) {}")
-#20344=@"loc,{#10000},25,3,25,14"
-locations_default(#20344,#10000,25,3,25,14)
-hasLocation(#20343,#20344)
-#20345=*
-exprs(#20345,0,#20343,0,"g")
-hasLocation(#20345,#20224)
-enclosing_stmt(#20345,#20312)
-expr_containers(#20345,#20001)
-literals("g","g",#20345)
+typeexprs(#20343,2,#20337,-6,"string")
+hasLocation(#20343,#20214)
+expr_containers(#20343,#20337)
+literals("string","string",#20343)
+is_method(#20334)
+#20344=*
+properties(#20344,#20314,5,0,"g(x: any) {}")
+#20345=@"loc,{#10000},25,3,25,14"
+locations_default(#20345,#10000,25,3,25,14)
+hasLocation(#20344,#20345)
#20346=*
-exprs(#20346,9,#20343,1,"g(x: any) {}")
-hasLocation(#20346,#20344)
-enclosing_stmt(#20346,#20312)
+exprs(#20346,0,#20344,0,"g")
+hasLocation(#20346,#20224)
+enclosing_stmt(#20346,#20314)
expr_containers(#20346,#20001)
+literals("g","g",#20346)
#20347=*
-scopes(#20347,1)
-scopenodes(#20346,#20347)
-scopenesting(#20347,#20316)
-#20348=@"var;{x};{#20347}"
-variables(#20348,"x",#20347)
-#20349=*
-exprs(#20349,78,#20346,0,"x")
-hasLocation(#20349,#20228)
-expr_containers(#20349,#20346)
-literals("x","x",#20349)
-decl(#20349,#20348)
-#20350=@"var;{arguments};{#20347}"
-variables(#20350,"arguments",#20347)
-is_arguments_object(#20350)
-#20351=*
-typeexprs(#20351,2,#20346,-6,"any")
-hasLocation(#20351,#20232)
-expr_containers(#20351,#20346)
-literals("any","any",#20351)
+exprs(#20347,9,#20344,1,"g(x: any) {}")
+hasLocation(#20347,#20345)
+enclosing_stmt(#20347,#20314)
+expr_containers(#20347,#20001)
+#20348=*
+scopes(#20348,1)
+scopenodes(#20347,#20348)
+scopenesting(#20348,#20317)
+#20349=@"var;{x};{#20348}"
+variables(#20349,"x",#20348)
+#20350=*
+exprs(#20350,78,#20347,0,"x")
+hasLocation(#20350,#20228)
+expr_containers(#20350,#20347)
+literals("x","x",#20350)
+decl(#20350,#20349)
+#20351=@"var;{arguments};{#20348}"
+variables(#20351,"arguments",#20348)
+is_arguments_object(#20351)
#20352=*
-stmts(#20352,1,#20346,-2,"{}")
-#20353=@"loc,{#10000},25,13,25,14"
-locations_default(#20353,#10000,25,13,25,14)
-hasLocation(#20352,#20353)
-stmt_containers(#20352,#20346)
-is_method(#20343)
-#20354=*
-properties(#20354,#20312,6,8,"abstract x: number;")
-#20355=@"loc,{#10000},28,3,28,21"
-locations_default(#20355,#10000,28,3,28,21)
-hasLocation(#20354,#20355)
-#20356=*
+typeexprs(#20352,2,#20347,-6,"any")
+hasLocation(#20352,#20232)
+expr_containers(#20352,#20347)
+literals("any","any",#20352)
+#20353=*
+stmts(#20353,1,#20347,-2,"{}")
+#20354=@"loc,{#10000},25,13,25,14"
+locations_default(#20354,#10000,25,13,25,14)
+hasLocation(#20353,#20354)
+stmt_containers(#20353,#20347)
+is_method(#20344)
+#20355=*
+properties(#20355,#20314,6,8,"abstract x: number;")
+#20356=@"loc,{#10000},28,3,28,21"
+locations_default(#20356,#10000,28,3,28,21)
+hasLocation(#20355,#20356)
#20357=*
-exprs(#20357,0,#20354,0,"x")
-hasLocation(#20357,#20242)
-expr_containers(#20357,#20356)
-literals("x","x",#20357)
-is_abstract_member(#20354)
#20358=*
-typeexprs(#20358,2,#20354,2,"number")
-hasLocation(#20358,#20246)
-enclosing_stmt(#20358,#20312)
-expr_containers(#20358,#20001)
-literals("number","number",#20358)
+exprs(#20358,0,#20355,0,"x")
+hasLocation(#20358,#20242)
+expr_containers(#20358,#20357)
+literals("x","x",#20358)
+is_abstract_member(#20355)
#20359=*
-properties(#20359,#20312,7,0,"constructor() {}")
-#20360=@"loc,{#10000},18,26,18,25"
-locations_default(#20360,#10000,18,26,18,25)
-hasLocation(#20359,#20360)
-#20361=*
-exprs(#20361,0,#20359,0,"constructor")
-hasLocation(#20361,#20360)
-enclosing_stmt(#20361,#20312)
-expr_containers(#20361,#20001)
-literals("constructor","constructor",#20361)
-exprs(#20356,9,#20359,1,"() {}")
-hasLocation(#20356,#20360)
-enclosing_stmt(#20356,#20312)
-expr_containers(#20356,#20001)
+typeexprs(#20359,2,#20355,2,"number")
+hasLocation(#20359,#20246)
+enclosing_stmt(#20359,#20314)
+expr_containers(#20359,#20001)
+literals("number","number",#20359)
+#20360=*
+properties(#20360,#20314,7,0,"constructor() {}")
+#20361=@"loc,{#10000},18,26,18,25"
+locations_default(#20361,#10000,18,26,18,25)
+hasLocation(#20360,#20361)
#20362=*
-scopes(#20362,1)
-scopenodes(#20356,#20362)
-scopenesting(#20362,#20316)
-#20363=@"var;{arguments};{#20362}"
-variables(#20363,"arguments",#20362)
-is_arguments_object(#20363)
-#20364=*
-stmts(#20364,1,#20356,-2,"{}")
-hasLocation(#20364,#20360)
-stmt_containers(#20364,#20356)
-is_method(#20359)
+exprs(#20362,0,#20360,0,"constructor")
+hasLocation(#20362,#20361)
+enclosing_stmt(#20362,#20314)
+expr_containers(#20362,#20001)
+literals("constructor","constructor",#20362)
+exprs(#20357,9,#20360,1,"() {}")
+hasLocation(#20357,#20361)
+enclosing_stmt(#20357,#20314)
+expr_containers(#20357,#20001)
+#20363=*
+scopes(#20363,1)
+scopenodes(#20357,#20363)
+scopenesting(#20363,#20317)
+#20364=@"var;{arguments};{#20363}"
+variables(#20364,"arguments",#20363)
+is_arguments_object(#20364)
#20365=*
-entry_cfg_node(#20365,#20001)
-#20366=@"loc,{#10000},2,1,2,0"
-locations_default(#20366,#10000,2,1,2,0)
-hasLocation(#20365,#20366)
-#20367=*
-exit_cfg_node(#20367,#20001)
-hasLocation(#20367,#20251)
-successor(#20312,#20367)
-successor(#20303,#20306)
+stmts(#20365,1,#20357,-2,"{}")
+hasLocation(#20365,#20361)
+stmt_containers(#20365,#20357)
+is_method(#20360)
+#20366=*
+entry_cfg_node(#20366,#20001)
+#20367=@"loc,{#10000},2,1,2,0"
+locations_default(#20367,#10000,2,1,2,0)
+hasLocation(#20366,#20367)
#20368=*
-entry_cfg_node(#20368,#20303)
-hasLocation(#20368,#20307)
+exit_cfg_node(#20368,#20001)
+hasLocation(#20368,#20251)
+successor(#20314,#20368)
+successor(#20305,#20308)
#20369=*
-exit_cfg_node(#20369,#20303)
-hasLocation(#20369,#20307)
-successor(#20311,#20369)
-successor(#20368,#20311)
-successor(#20308,#20303)
-successor(#20306,#20260)
-successor(#20293,#20290)
+entry_cfg_node(#20369,#20305)
+hasLocation(#20369,#20309)
#20370=*
-entry_cfg_node(#20370,#20293)
-#20371=@"loc,{#10000},11,3,11,2"
-locations_default(#20371,#10000,11,3,11,2)
-hasLocation(#20370,#20371)
-#20372=*
-exit_cfg_node(#20372,#20293)
-#20373=@"loc,{#10000},11,15,11,14"
-locations_default(#20373,#10000,11,15,11,14)
-hasLocation(#20372,#20373)
-successor(#20299,#20372)
-successor(#20296,#20299)
-successor(#20370,#20296)
-successor(#20292,#20293)
-successor(#20290,#20308)
-successor(#20280,#20292)
-successor(#20270,#20280)
-successor(#20264,#20270)
-successor(#20262,#20264)
-successor(#20260,#20312)
-successor(#20255,#20262)
-successor(#20365,#20255)
+exit_cfg_node(#20370,#20305)
+hasLocation(#20370,#20309)
+successor(#20313,#20370)
+successor(#20369,#20313)
+successor(#20310,#20305)
+successor(#20308,#20262)
+successor(#20295,#20292)
+#20371=*
+entry_cfg_node(#20371,#20295)
+#20372=@"loc,{#10000},11,3,11,2"
+locations_default(#20372,#10000,11,3,11,2)
+hasLocation(#20371,#20372)
+#20373=*
+exit_cfg_node(#20373,#20295)
+#20374=@"loc,{#10000},11,15,11,14"
+locations_default(#20374,#10000,11,15,11,14)
+hasLocation(#20373,#20374)
+successor(#20301,#20373)
+successor(#20298,#20301)
+successor(#20371,#20298)
+successor(#20294,#20295)
+successor(#20292,#20310)
+successor(#20282,#20294)
+successor(#20272,#20282)
+successor(#20266,#20272)
+successor(#20264,#20266)
+successor(#20262,#20314)
+successor(#20258,#20264)
+successor(#20366,#20258)
numlines(#10000,29,15,8)
filetype(#10000,"typescript")
diff --git a/javascript/extractor/tests/ts/output/trap/thisparameter.ts.trap b/javascript/extractor/tests/ts/output/trap/thisparameter.ts.trap
index 0e766cf77b99..27b075f05c76 100644
--- a/javascript/extractor/tests/ts/output/trap/thisparameter.ts.trap
+++ b/javascript/extractor/tests/ts/output/trap/thisparameter.ts.trap
@@ -425,146 +425,146 @@ hasLocation(#20001,#20158)
variables(#20159,"declaration",#20000)
#20160=@"var;{f};{#20000}"
variables(#20160,"f",#20000)
-#20161=@"var;{C};{#20000}"
-variables(#20161,"C",#20000)
-#20162=@"local_type_name;{C};{#20000}"
-local_type_names(#20162,"C",#20000)
-#20163=@"local_type_name;{I};{#20000}"
-local_type_names(#20163,"I",#20000)
-#20164=*
-stmts(#20164,17,#20001,0,"functio ... ber) {}")
-hasLocation(#20164,#20003)
-stmt_containers(#20164,#20001)
+#20161=@"var;{ambient};{#20000}"
+variables(#20161,"ambient",#20000)
+#20162=@"var;{C};{#20000}"
+variables(#20162,"C",#20000)
+#20163=@"local_type_name;{C};{#20000}"
+local_type_names(#20163,"C",#20000)
+#20164=@"local_type_name;{I};{#20000}"
+local_type_names(#20164,"I",#20000)
#20165=*
-exprs(#20165,78,#20164,-1,"declaration")
-hasLocation(#20165,#20033)
-expr_containers(#20165,#20164)
-literals("declaration","declaration",#20165)
-decl(#20165,#20159)
+stmts(#20165,17,#20001,0,"functio ... ber) {}")
+hasLocation(#20165,#20003)
+stmt_containers(#20165,#20001)
#20166=*
-scopes(#20166,1)
-scopenodes(#20164,#20166)
-scopenesting(#20166,#20000)
-#20167=@"var;{x};{#20166}"
-variables(#20167,"x",#20166)
-#20168=*
-exprs(#20168,78,#20164,0,"x")
-hasLocation(#20168,#20045)
-expr_containers(#20168,#20164)
-literals("x","x",#20168)
-decl(#20168,#20167)
-#20169=@"var;{arguments};{#20166}"
-variables(#20169,"arguments",#20166)
-is_arguments_object(#20169)
-#20170=*
-typeexprs(#20170,2,#20164,-4,"void")
-hasLocation(#20170,#20041)
-expr_containers(#20170,#20164)
-literals("void","void",#20170)
+exprs(#20166,78,#20165,-1,"declaration")
+hasLocation(#20166,#20033)
+expr_containers(#20166,#20165)
+literals("declaration","declaration",#20166)
+decl(#20166,#20159)
+#20167=*
+scopes(#20167,1)
+scopenodes(#20165,#20167)
+scopenesting(#20167,#20000)
+#20168=@"var;{x};{#20167}"
+variables(#20168,"x",#20167)
+#20169=*
+exprs(#20169,78,#20165,0,"x")
+hasLocation(#20169,#20045)
+expr_containers(#20169,#20165)
+literals("x","x",#20169)
+decl(#20169,#20168)
+#20170=@"var;{arguments};{#20167}"
+variables(#20170,"arguments",#20167)
+is_arguments_object(#20170)
#20171=*
-typeexprs(#20171,2,#20164,-6,"number")
-hasLocation(#20171,#20049)
-expr_containers(#20171,#20164)
-literals("number","number",#20171)
+typeexprs(#20171,2,#20165,-4,"void")
+hasLocation(#20171,#20041)
+expr_containers(#20171,#20165)
+literals("void","void",#20171)
#20172=*
-stmts(#20172,1,#20164,-2,"{}")
-#20173=@"loc,{#10000},1,45,1,46"
-locations_default(#20173,#10000,1,45,1,46)
-hasLocation(#20172,#20173)
-stmt_containers(#20172,#20164)
-#20174=*
-stmts(#20174,18,#20001,1,"var f = ... ber) {}")
-hasLocation(#20174,#20007)
-stmt_containers(#20174,#20001)
+typeexprs(#20172,2,#20165,-6,"number")
+hasLocation(#20172,#20049)
+expr_containers(#20172,#20165)
+literals("number","number",#20172)
+#20173=*
+stmts(#20173,1,#20165,-2,"{}")
+#20174=@"loc,{#10000},1,45,1,46"
+locations_default(#20174,#10000,1,45,1,46)
+hasLocation(#20173,#20174)
+stmt_containers(#20173,#20165)
#20175=*
-exprs(#20175,64,#20174,0,"f = fun ... ber) {}")
-#20176=@"loc,{#10000},3,5,3,44"
-locations_default(#20176,#10000,3,5,3,44)
-hasLocation(#20175,#20176)
-enclosing_stmt(#20175,#20174)
-expr_containers(#20175,#20001)
-#20177=*
-exprs(#20177,78,#20175,0,"f")
-hasLocation(#20177,#20059)
-enclosing_stmt(#20177,#20174)
-expr_containers(#20177,#20001)
-literals("f","f",#20177)
-decl(#20177,#20160)
+stmts(#20175,18,#20001,1,"var f = ... ber) {}")
+hasLocation(#20175,#20007)
+stmt_containers(#20175,#20001)
+#20176=*
+exprs(#20176,64,#20175,0,"f = fun ... ber) {}")
+#20177=@"loc,{#10000},3,5,3,44"
+locations_default(#20177,#10000,3,5,3,44)
+hasLocation(#20176,#20177)
+enclosing_stmt(#20176,#20175)
+expr_containers(#20176,#20001)
#20178=*
-exprs(#20178,9,#20175,1,"functio ... ber) {}")
-#20179=@"loc,{#10000},3,9,3,44"
-locations_default(#20179,#10000,3,9,3,44)
-hasLocation(#20178,#20179)
-enclosing_stmt(#20178,#20174)
+exprs(#20178,78,#20176,0,"f")
+hasLocation(#20178,#20059)
+enclosing_stmt(#20178,#20175)
expr_containers(#20178,#20001)
-#20180=*
-scopes(#20180,1)
-scopenodes(#20178,#20180)
-scopenesting(#20180,#20000)
-#20181=@"var;{x};{#20180}"
-variables(#20181,"x",#20180)
-#20182=*
-exprs(#20182,78,#20178,0,"x")
-hasLocation(#20182,#20075)
-expr_containers(#20182,#20178)
-literals("x","x",#20182)
-decl(#20182,#20181)
-#20183=@"var;{arguments};{#20180}"
-variables(#20183,"arguments",#20180)
-is_arguments_object(#20183)
-#20184=*
-typeexprs(#20184,2,#20178,-4,"string")
-hasLocation(#20184,#20071)
-expr_containers(#20184,#20178)
-literals("string","string",#20184)
+literals("f","f",#20178)
+decl(#20178,#20160)
+#20179=*
+exprs(#20179,9,#20176,1,"functio ... ber) {}")
+#20180=@"loc,{#10000},3,9,3,44"
+locations_default(#20180,#10000,3,9,3,44)
+hasLocation(#20179,#20180)
+enclosing_stmt(#20179,#20175)
+expr_containers(#20179,#20001)
+#20181=*
+scopes(#20181,1)
+scopenodes(#20179,#20181)
+scopenesting(#20181,#20000)
+#20182=@"var;{x};{#20181}"
+variables(#20182,"x",#20181)
+#20183=*
+exprs(#20183,78,#20179,0,"x")
+hasLocation(#20183,#20075)
+expr_containers(#20183,#20179)
+literals("x","x",#20183)
+decl(#20183,#20182)
+#20184=@"var;{arguments};{#20181}"
+variables(#20184,"arguments",#20181)
+is_arguments_object(#20184)
#20185=*
-typeexprs(#20185,2,#20178,-6,"number")
-hasLocation(#20185,#20079)
-expr_containers(#20185,#20178)
-literals("number","number",#20185)
+typeexprs(#20185,2,#20179,-4,"string")
+hasLocation(#20185,#20071)
+expr_containers(#20185,#20179)
+literals("string","string",#20185)
#20186=*
-stmts(#20186,1,#20178,-2,"{}")
-#20187=@"loc,{#10000},3,43,3,44"
-locations_default(#20187,#10000,3,43,3,44)
-hasLocation(#20186,#20187)
-stmt_containers(#20186,#20178)
-#20188=*
-stmts(#20188,17,#20001,2,"declare ... umber);")
-hasLocation(#20188,#20011)
-stmt_containers(#20188,#20001)
-has_declare_keyword(#20188)
+typeexprs(#20186,2,#20179,-6,"number")
+hasLocation(#20186,#20079)
+expr_containers(#20186,#20179)
+literals("number","number",#20186)
+#20187=*
+stmts(#20187,1,#20179,-2,"{}")
+#20188=@"loc,{#10000},3,43,3,44"
+locations_default(#20188,#10000,3,43,3,44)
+hasLocation(#20187,#20188)
+stmt_containers(#20187,#20179)
#20189=*
-exprs(#20189,78,#20188,-1,"ambient")
-hasLocation(#20189,#20091)
-expr_containers(#20189,#20188)
-literals("ambient","ambient",#20189)
-#20190=@"var;{ambient};{#20000}"
-variables(#20190,"ambient",#20000)
-decl(#20189,#20190)
+stmts(#20189,17,#20001,2,"declare ... umber);")
+hasLocation(#20189,#20011)
+stmt_containers(#20189,#20001)
+has_declare_keyword(#20189)
+#20190=*
+exprs(#20190,78,#20189,-1,"ambient")
+hasLocation(#20190,#20091)
+expr_containers(#20190,#20189)
+literals("ambient","ambient",#20190)
+decl(#20190,#20161)
#20191=*
scopes(#20191,1)
-scopenodes(#20188,#20191)
+scopenodes(#20189,#20191)
scopenesting(#20191,#20000)
#20192=@"var;{x};{#20191}"
variables(#20192,"x",#20191)
#20193=*
-exprs(#20193,78,#20188,0,"x")
+exprs(#20193,78,#20189,0,"x")
hasLocation(#20193,#20103)
-expr_containers(#20193,#20188)
+expr_containers(#20193,#20189)
literals("x","x",#20193)
decl(#20193,#20192)
#20194=@"var;{arguments};{#20191}"
variables(#20194,"arguments",#20191)
is_arguments_object(#20194)
#20195=*
-typeexprs(#20195,2,#20188,-4,"string")
+typeexprs(#20195,2,#20189,-4,"string")
hasLocation(#20195,#20099)
-expr_containers(#20195,#20188)
+expr_containers(#20195,#20189)
literals("string","string",#20195)
#20196=*
-typeexprs(#20196,2,#20188,-6,"number")
+typeexprs(#20196,2,#20189,-6,"number")
hasLocation(#20196,#20107)
-expr_containers(#20196,#20188)
+expr_containers(#20196,#20189)
literals("number","number",#20196)
#20197=*
stmts(#20197,26,#20001,3,"class C ... C) {}\n}")
@@ -578,8 +578,8 @@ hasLocation(#20199,#20115)
enclosing_stmt(#20199,#20197)
expr_containers(#20199,#20001)
literals("C","C",#20199)
-decl(#20199,#20161)
-typedecl(#20199,#20162)
+decl(#20199,#20162)
+typedecl(#20199,#20163)
#20200=*
scopes(#20200,10)
scopenodes(#20197,#20200)
@@ -612,7 +612,7 @@ typeexprs(#20207,0,#20204,-4,"C")
hasLocation(#20207,#20127)
expr_containers(#20207,#20204)
literals("C","C",#20207)
-typebind(#20207,#20162)
+typebind(#20207,#20163)
#20208=*
stmts(#20208,1,#20204,-2,"{}")
#20209=@"loc,{#10000},8,19,8,20"
@@ -660,7 +660,7 @@ hasLocation(#20219,#20138)
enclosing_stmt(#20219,#20217)
expr_containers(#20219,#20001)
literals("I","I",#20219)
-typedecl(#20219,#20163)
+typedecl(#20219,#20164)
#20220=*
properties(#20220,#20217,2,0,"method(this: I);")
#20221=@"loc,{#10000},12,3,12,18"
@@ -689,7 +689,7 @@ typeexprs(#20226,0,#20223,-4,"I")
hasLocation(#20226,#20150)
expr_containers(#20226,#20223)
literals("I","I",#20226)
-typebind(#20226,#20163)
+typebind(#20226,#20164)
is_method(#20220)
is_abstract_member(#20220)
#20227=*
@@ -729,37 +729,37 @@ successor(#20203,#20204)
successor(#20201,#20212)
successor(#20199,#20203)
successor(#20197,#20217)
-successor(#20188,#20199)
-successor(#20174,#20177)
-successor(#20178,#20175)
+successor(#20189,#20199)
+successor(#20175,#20178)
+successor(#20179,#20176)
#20236=*
-entry_cfg_node(#20236,#20178)
+entry_cfg_node(#20236,#20179)
#20237=@"loc,{#10000},3,9,3,8"
locations_default(#20237,#10000,3,9,3,8)
hasLocation(#20236,#20237)
#20238=*
-exit_cfg_node(#20238,#20178)
+exit_cfg_node(#20238,#20179)
#20239=@"loc,{#10000},3,45,3,44"
locations_default(#20239,#10000,3,45,3,44)
hasLocation(#20238,#20239)
-successor(#20186,#20238)
-successor(#20182,#20186)
-successor(#20236,#20182)
-successor(#20177,#20178)
-successor(#20175,#20188)
-successor(#20164,#20174)
+successor(#20187,#20238)
+successor(#20183,#20187)
+successor(#20236,#20183)
+successor(#20178,#20179)
+successor(#20176,#20189)
+successor(#20165,#20175)
#20240=*
-entry_cfg_node(#20240,#20164)
+entry_cfg_node(#20240,#20165)
hasLocation(#20240,#20228)
#20241=*
-exit_cfg_node(#20241,#20164)
+exit_cfg_node(#20241,#20165)
#20242=@"loc,{#10000},1,47,1,46"
locations_default(#20242,#10000,1,47,1,46)
hasLocation(#20241,#20242)
-successor(#20172,#20241)
-successor(#20168,#20172)
-successor(#20240,#20168)
-successor(#20165,#20164)
-successor(#20227,#20165)
+successor(#20173,#20241)
+successor(#20169,#20173)
+successor(#20240,#20169)
+successor(#20166,#20165)
+successor(#20227,#20166)
numlines(#10000,14,9,0)
filetype(#10000,"typescript")
diff --git a/javascript/ql/integration-tests/query-suite/javascript-code-quality.qls.expected b/javascript/ql/integration-tests/query-suite/javascript-code-quality.qls.expected
index 876b5f25fa28..bf646822ddc4 100644
--- a/javascript/ql/integration-tests/query-suite/javascript-code-quality.qls.expected
+++ b/javascript/ql/integration-tests/query-suite/javascript-code-quality.qls.expected
@@ -1,6 +1,9 @@
ql/javascript/ql/src/Declarations/IneffectiveParameterType.ql
+ql/javascript/ql/src/Declarations/SuspiciousMethodNameDeclaration.ql
ql/javascript/ql/src/Expressions/ExprHasNoEffect.ql
ql/javascript/ql/src/Expressions/MissingAwait.ql
ql/javascript/ql/src/LanguageFeatures/SpuriousArguments.ql
+ql/javascript/ql/src/LanguageFeatures/TemplateSyntaxInStringLiteral.ql
ql/javascript/ql/src/Quality/UnhandledErrorInStreamPipeline.ql
+ql/javascript/ql/src/RegExp/DuplicateCharacterInCharacterClass.ql
ql/javascript/ql/src/RegExp/RegExpAlwaysMatches.ql
diff --git a/javascript/ql/integration-tests/query-suite/not_included_in_qls.expected b/javascript/ql/integration-tests/query-suite/not_included_in_qls.expected
index 34c4df3d6fae..c80c3fc76da1 100644
--- a/javascript/ql/integration-tests/query-suite/not_included_in_qls.expected
+++ b/javascript/ql/integration-tests/query-suite/not_included_in_qls.expected
@@ -147,4 +147,3 @@ ql/javascript/ql/src/meta/extraction-metrics/FileData.ql
ql/javascript/ql/src/meta/extraction-metrics/MissingMetrics.ql
ql/javascript/ql/src/meta/extraction-metrics/PhaseTimings.ql
ql/javascript/ql/src/meta/types/TypedExprs.ql
-ql/javascript/ql/src/meta/types/TypesWithQualifiedName.ql
diff --git a/javascript/ql/lib/Expressions/ExprHasNoEffect.qll b/javascript/ql/lib/Expressions/ExprHasNoEffect.qll
index eff5fa7fc989..9813d9b32ed9 100644
--- a/javascript/ql/lib/Expressions/ExprHasNoEffect.qll
+++ b/javascript/ql/lib/Expressions/ExprHasNoEffect.qll
@@ -22,6 +22,9 @@ predicate inVoidContext(Expr e) {
)
)
or
+ // propagate void context through parenthesized expressions
+ inVoidContext(e.getParent().(ParExpr))
+ or
exists(SeqExpr seq, int i, int n |
e = seq.getOperand(i) and
n = seq.getNumOperands()
@@ -129,6 +132,19 @@ predicate noSideEffects(Expr e) {
)
}
+/**
+ * Holds if `e` is a compound expression that may contain sub-expressions with side effects.
+ * We should not flag these directly as useless since we want to flag only the innermost
+ * expressions that actually have no effect.
+ */
+predicate isCompoundExpression(Expr e) {
+ e instanceof LogicalBinaryExpr
+ or
+ e instanceof SeqExpr
+ or
+ e instanceof ParExpr
+}
+
/**
* Holds if the expression `e` should be reported as having no effect.
*/
@@ -145,6 +161,7 @@ predicate hasNoEffect(Expr e) {
not isDeclaration(e) and
// exclude DOM properties, which sometimes have magical auto-update properties
not isDomProperty(e.(PropAccess).getPropertyName()) and
+ not isCompoundExpression(e) and
// exclude xUnit.js annotations
not e instanceof XUnitAnnotation and
// exclude common patterns that are most likely intentional
@@ -157,7 +174,17 @@ predicate hasNoEffect(Expr e) {
not exists(fe.getName())
) and
// exclude block-level flow type annotations. For example: `(name: empty)`.
- not e.(ParExpr).getExpression().getLastToken().getNextToken().getValue() = ":" and
+ not exists(ParExpr parent |
+ e.getParent() = parent and
+ e.getLastToken().getNextToken().getValue() = ":"
+ ) and
+ // exclude expressions that are part of a conditional expression
+ not exists(ConditionalExpr cond | e = cond.getABranch() |
+ e instanceof NullLiteral or
+ e.(GlobalVarAccess).getName() = "undefined" or
+ e.(NumberLiteral).getIntValue() = 0 or
+ e instanceof VoidExpr
+ ) and
// exclude the first statement of a try block
not e = any(TryStmt stmt).getBody().getStmt(0).(ExprStmt).getExpr() and
// exclude expressions that are alone in a file, and file doesn't contain a function.
diff --git a/javascript/ql/lib/definitions.qll b/javascript/ql/lib/definitions.qll
index 2cc9313d3132..2f1c99b7c606 100644
--- a/javascript/ql/lib/definitions.qll
+++ b/javascript/ql/lib/definitions.qll
@@ -153,17 +153,7 @@ private predicate jsdocTypeLookup(JSDocNamedTypeExpr ref, AstNode decl, string k
kind = "T"
}
-/**
- * Gets an element, of kind `kind`, that element `e` uses, if any.
- *
- * The `kind` is a string representing what kind of use it is:
- * - `"M"` for function and method calls
- * - `"T"` for uses of types
- * - `"V"` for variable accesses
- * - `"I"` for imports
- */
-cached
-AstNode definitionOf(Locatable e, string kind) {
+private AstNode definitionOfRaw(Locatable e, string kind) {
variableDefLookup(e, result, kind)
or
// prefer definitions over declarations
@@ -179,3 +169,46 @@ AstNode definitionOf(Locatable e, string kind) {
or
jsdocTypeLookup(e, result, kind)
}
+
+/** Gets a more useful node to show for something that resolves to `node`. */
+private AstNode redirectOnce(AstNode node) {
+ exists(ConstructorDeclaration ctor |
+ ctor.isSynthetic() and
+ node = ctor.getBody() and
+ result = ctor.getDeclaringClass()
+ )
+ or
+ exists(ClassDefinition cls |
+ node = cls and
+ result = cls.getIdentifier()
+ )
+ or
+ exists(FunctionDeclStmt decl |
+ node = decl and
+ result = decl.getIdentifier()
+ )
+ or
+ exists(MethodDeclaration member |
+ not member instanceof ConstructorDeclaration and
+ node = member.getBody() and
+ result = member.getNameExpr()
+ )
+}
+
+private AstNode redirect(AstNode node) {
+ node = definitionOfRaw(_, _) and
+ result = redirectOnce*(node) and
+ not exists(redirectOnce(result))
+}
+
+/**
+ * Gets an element, of kind `kind`, that element `e` uses, if any.
+ *
+ * The `kind` is a string representing what kind of use it is:
+ * - `"M"` for function and method calls
+ * - `"T"` for uses of types
+ * - `"V"` for variable accesses
+ * - `"I"` for imports
+ */
+cached
+AstNode definitionOf(Locatable e, string kind) { result = redirect(definitionOfRaw(e, kind)) }
diff --git a/javascript/ql/lib/qlpack.yml b/javascript/ql/lib/qlpack.yml
index c015b3679f16..b367ab885490 100644
--- a/javascript/ql/lib/qlpack.yml
+++ b/javascript/ql/lib/qlpack.yml
@@ -1,5 +1,5 @@
name: codeql/javascript-all
-version: 2.6.5
+version: 2.6.6-dev
groups: javascript
dbscheme: semmlecode.javascript.dbscheme
extractor: javascript
diff --git a/javascript/ql/lib/semmle/javascript/ApiGraphs.qll b/javascript/ql/lib/semmle/javascript/ApiGraphs.qll
index 3e882251cbf7..3bb04f2686be 100644
--- a/javascript/ql/lib/semmle/javascript/ApiGraphs.qll
+++ b/javascript/ql/lib/semmle/javascript/ApiGraphs.qll
@@ -649,11 +649,13 @@ module API {
/** Gets a node corresponding to an import of module `m` without taking into account types from models. */
Node getAModuleImportRaw(string m) {
result = Impl::MkModuleImport(m) or
- result = Impl::MkModuleImport(m).(Node).getMember("default")
+ result = Impl::MkModuleImport(m).(Node).getMember("default") or
+ result = Impl::MkTypeUse(m, "")
}
/** Gets a node whose type has the given qualified name, not including types from models. */
Node getANodeOfTypeRaw(string moduleName, string exportedName) {
+ exportedName != "" and
result = Impl::MkTypeUse(moduleName, exportedName).(Node).getInstance()
or
exportedName = "" and
@@ -749,18 +751,14 @@ module API {
MkModuleImport(string m) {
imports(_, m)
or
- any(TypeAnnotation n).hasQualifiedName(m, _)
- or
- any(Type t).hasUnderlyingType(m, _)
+ any(TypeAnnotation n).hasUnderlyingType(m, _)
} or
MkClassInstance(DataFlow::ClassNode cls) { needsDefNode(cls) } or
MkDef(DataFlow::Node nd) { rhs(_, _, nd) } or
MkUse(DataFlow::Node nd) { use(_, _, nd) } or
/** A use of a TypeScript type. */
MkTypeUse(string moduleName, string exportName) {
- any(TypeAnnotation n).hasQualifiedName(moduleName, exportName)
- or
- any(Type t).hasUnderlyingType(moduleName, exportName)
+ any(TypeAnnotation n).hasUnderlyingType(moduleName, exportName)
} or
MkSyntheticCallbackArg(DataFlow::Node src, int bound, DataFlow::InvokeNode nd) {
trackUseNode(src, true, bound, "").flowsTo(nd.getCalleeNode())
diff --git a/javascript/ql/lib/semmle/javascript/Closure.qll b/javascript/ql/lib/semmle/javascript/Closure.qll
index 40aee266379c..c31698333393 100644
--- a/javascript/ql/lib/semmle/javascript/Closure.qll
+++ b/javascript/ql/lib/semmle/javascript/Closure.qll
@@ -5,17 +5,49 @@
import javascript
module Closure {
+ /** A call to `goog.require` */
+ class RequireCallExpr extends CallExpr {
+ RequireCallExpr() { this.getCallee().(PropAccess).getQualifiedName() = "goog.require" }
+
+ /** Gets the imported namespace name. */
+ string getClosureNamespace() { result = this.getArgument(0).getStringValue() }
+ }
+
+ /** A call to `goog.provide` */
+ class ProvideCallExpr extends CallExpr {
+ ProvideCallExpr() { this.getCallee().(PropAccess).getQualifiedName() = "goog.provide" }
+
+ /** Gets the imported namespace name. */
+ string getClosureNamespace() { result = this.getArgument(0).getStringValue() }
+ }
+
+ /** A call to `goog.module` or `goog.declareModuleId`. */
+ private class ModuleDeclarationCall extends CallExpr {
+ private string kind;
+
+ ModuleDeclarationCall() {
+ this.getCallee().(PropAccess).getQualifiedName() = kind and
+ kind = ["goog.module", "goog.declareModuleId"]
+ }
+
+ /** Gets the declared namespace. */
+ string getClosureNamespace() { result = this.getArgument(0).getStringValue() }
+
+ /** Gets the string `goog.module` or `goog.declareModuleId` depending on which method is being called. */
+ string getModuleKind() { result = kind }
+ }
+
/**
* A reference to a Closure namespace.
*/
- class ClosureNamespaceRef extends DataFlow::Node instanceof ClosureNamespaceRef::Range {
+ deprecated class ClosureNamespaceRef extends DataFlow::Node instanceof ClosureNamespaceRef::Range {
/**
* Gets the namespace being referenced.
*/
string getClosureNamespace() { result = super.getClosureNamespace() }
}
- module ClosureNamespaceRef {
+ deprecated module ClosureNamespaceRef {
/**
* A reference to a Closure namespace.
*
@@ -32,10 +64,10 @@ module Closure {
/**
* A data flow node that returns the value of a closure namespace.
*/
- class ClosureNamespaceAccess extends ClosureNamespaceRef instanceof ClosureNamespaceAccess::Range {
- }
+ deprecated class ClosureNamespaceAccess extends ClosureNamespaceRef instanceof ClosureNamespaceAccess::Range
+ { }
- module ClosureNamespaceAccess {
+ deprecated module ClosureNamespaceAccess {
/**
* A data flow node that returns the value of a closure namespace.
*
@@ -47,7 +79,7 @@ module Closure {
/**
* A call to a method on the `goog.` namespace, as a closure reference.
*/
- abstract private class DefaultNamespaceRef extends DataFlow::MethodCallNode,
+ abstract deprecated private class DefaultNamespaceRef extends DataFlow::MethodCallNode,
ClosureNamespaceRef::Range
{
DefaultNamespaceRef() { this = DataFlow::globalVarRef("goog").getAMethodCall() }
@@ -59,14 +91,14 @@ module Closure {
* Holds if `node` is the data flow node corresponding to the expression in
* a top-level expression statement.
*/
- private predicate isTopLevelExpr(DataFlow::Node node) {
+ deprecated private predicate isTopLevelExpr(DataFlow::Node node) {
any(TopLevel tl).getAChildStmt().(ExprStmt).getExpr().flow() = node
}
/**
* A top-level call to `goog.provide`.
*/
- private class DefaultClosureProvideCall extends DefaultNamespaceRef {
+ deprecated private class DefaultClosureProvideCall extends DefaultNamespaceRef {
DefaultClosureProvideCall() {
this.getMethodName() = "provide" and
isTopLevelExpr(this)
@@ -76,13 +108,14 @@ module Closure {
/**
* A top-level call to `goog.provide`.
*/
- class ClosureProvideCall extends ClosureNamespaceRef, DataFlow::MethodCallNode instanceof DefaultClosureProvideCall
+ deprecated class ClosureProvideCall extends ClosureNamespaceRef, DataFlow::MethodCallNode instanceof DefaultClosureProvideCall
{ }
/**
* A call to `goog.require`.
*/
- private class DefaultClosureRequireCall extends DefaultNamespaceRef, ClosureNamespaceAccess::Range
+ deprecated private class DefaultClosureRequireCall extends DefaultNamespaceRef,
+ ClosureNamespaceAccess::Range
{
DefaultClosureRequireCall() { this.getMethodName() = "require" }
}
@@ -90,13 +123,13 @@ module Closure {
/**
* A call to `goog.require`.
*/
- class ClosureRequireCall extends ClosureNamespaceAccess, DataFlow::MethodCallNode instanceof DefaultClosureRequireCall
+ deprecated class ClosureRequireCall extends ClosureNamespaceAccess, DataFlow::MethodCallNode instanceof DefaultClosureRequireCall
{ }
/**
* A top-level call to `goog.module` or `goog.declareModuleId`.
*/
- private class DefaultClosureModuleDeclaration extends DefaultNamespaceRef {
+ deprecated private class DefaultClosureModuleDeclaration extends DefaultNamespaceRef {
DefaultClosureModuleDeclaration() {
(this.getMethodName() = "module" or this.getMethodName() = "declareModuleId") and
isTopLevelExpr(this)
@@ -106,41 +139,29 @@ module Closure {
/**
* A top-level call to `goog.module` or `goog.declareModuleId`.
*/
- class ClosureModuleDeclaration extends ClosureNamespaceRef, DataFlow::MethodCallNode instanceof DefaultClosureModuleDeclaration
+ deprecated class ClosureModuleDeclaration extends ClosureNamespaceRef, DataFlow::MethodCallNode instanceof DefaultClosureModuleDeclaration
{ }
- private GlobalVariable googVariable() { variables(result, "goog", any(GlobalScope sc)) }
-
- pragma[nomagic]
- private MethodCallExpr googModuleDeclExpr() {
- result.getReceiver() = googVariable().getAnAccess() and
- result.getMethodName() = ["module", "declareModuleId"]
- }
-
- pragma[nomagic]
- private MethodCallExpr googModuleDeclExprInContainer(StmtContainer container) {
- result = googModuleDeclExpr() and
- container = result.getContainer()
- }
-
pragma[noinline]
- private ClosureRequireCall getARequireInTopLevel(ClosureModule m) { result.getTopLevel() = m }
+ private RequireCallExpr getARequireInTopLevel(ClosureModule m) { result.getTopLevel() = m }
/**
* A module using the Closure module system, declared using `goog.module()` or `goog.declareModuleId()`.
*/
class ClosureModule extends Module {
- ClosureModule() { exists(googModuleDeclExprInContainer(this)) }
+ private ModuleDeclarationCall decl;
+
+ ClosureModule() { decl.getTopLevel() = this }
/**
* Gets the call to `goog.module` or `goog.declareModuleId` in this module.
*/
- ClosureModuleDeclaration getModuleDeclaration() { result.getTopLevel() = this }
+ deprecated ClosureModuleDeclaration getModuleDeclaration() { result.getTopLevel() = this }
/**
* Gets the namespace of this module.
*/
- string getClosureNamespace() { result = this.getModuleDeclaration().getClosureNamespace() }
+ string getClosureNamespace() { result = decl.getClosureNamespace() }
override Module getAnImportedModule() {
result.(ClosureModule).getClosureNamespace() =
@@ -156,7 +177,7 @@ module Closure {
* Has no result for ES6 modules using `goog.declareModuleId`.
*/
Variable getExportsVariable() {
- this.getModuleDeclaration().getMethodName() = "module" and
+ decl.getModuleKind() = "goog.module" and
result = this.getScope().getVariable("exports")
}
@@ -185,15 +206,15 @@ module Closure {
ClosureScript() {
not this instanceof ClosureModule and
(
- any(ClosureProvideCall provide).getTopLevel() = this
+ any(ProvideCallExpr provide).getTopLevel() = this
or
- any(ClosureRequireCall require).getTopLevel() = this
+ any(RequireCallExpr require).getTopLevel() = this
)
}
/** Gets the identifier of a namespace required by this module. */
string getARequiredNamespace() {
- exists(ClosureRequireCall require |
+ exists(RequireCallExpr require |
require.getTopLevel() = this and
result = require.getClosureNamespace()
)
@@ -201,7 +222,7 @@ module Closure {
/** Gets the identifer of a namespace provided by this module. */
string getAProvidedNamespace() {
- exists(ClosureProvideCall require |
+ exists(ProvideCallExpr require |
require.getTopLevel() = this and
result = require.getClosureNamespace()
)
@@ -213,7 +234,13 @@ module Closure {
*/
pragma[noinline]
predicate isClosureNamespace(string name) {
- exists(string namespace | namespace = any(ClosureNamespaceRef ref).getClosureNamespace() |
+ exists(string namespace |
+ namespace =
+ [
+ any(RequireCallExpr ref).getClosureNamespace(),
+ any(ModuleDeclarationCall c).getClosureNamespace()
+ ]
+ |
name = namespace.substring(0, namespace.indexOf("."))
or
name = namespace
diff --git a/javascript/ql/lib/semmle/javascript/ES2015Modules.qll b/javascript/ql/lib/semmle/javascript/ES2015Modules.qll
index 379403eb0ee7..e7534449f55b 100644
--- a/javascript/ql/lib/semmle/javascript/ES2015Modules.qll
+++ b/javascript/ql/lib/semmle/javascript/ES2015Modules.qll
@@ -180,6 +180,9 @@ deprecated private class LiteralImportPath extends PathExpr, ConstantString {
* ```
*/
class ImportSpecifier extends Expr, @import_specifier {
+ /** Gets the import declaration in which this specifier appears. */
+ ImportDeclaration getImportDeclaration() { result.getASpecifier() = this }
+
/** Gets the imported symbol; undefined for default and namespace import specifiers. */
Identifier getImported() { result = this.getChildExpr(0) }
diff --git a/javascript/ql/lib/semmle/javascript/Expr.qll b/javascript/ql/lib/semmle/javascript/Expr.qll
index 8695c893f815..d7fe610b4f11 100644
--- a/javascript/ql/lib/semmle/javascript/Expr.qll
+++ b/javascript/ql/lib/semmle/javascript/Expr.qll
@@ -4,6 +4,7 @@
import javascript
private import semmle.javascript.internal.CachedStages
+private import semmle.javascript.internal.TypeResolution
/**
* A program element that is either an expression or a type annotation.
@@ -1017,7 +1018,11 @@ class InvokeExpr extends @invokeexpr, Expr {
* Note that the resolved function may be overridden in a subclass and thus is not
* necessarily the actual target of this invocation at runtime.
*/
- Function getResolvedCallee() { result = this.getResolvedCalleeName().getImplementation() }
+ Function getResolvedCallee() {
+ TypeResolution::callTarget(this, result)
+ or
+ result = this.getResolvedCalleeName().getImplementation()
+ }
}
/**
diff --git a/javascript/ql/lib/semmle/javascript/GlobalAccessPaths.qll b/javascript/ql/lib/semmle/javascript/GlobalAccessPaths.qll
index 35ba8cfe601a..4a461961f8af 100644
--- a/javascript/ql/lib/semmle/javascript/GlobalAccessPaths.qll
+++ b/javascript/ql/lib/semmle/javascript/GlobalAccessPaths.qll
@@ -34,7 +34,7 @@ module AccessPath {
not this.accessesGlobal(_) and
not this instanceof DataFlow::PropRead and
not this instanceof PropertyProjection and
- not this instanceof Closure::ClosureNamespaceAccess and
+ not this.asExpr() instanceof Closure::RequireCallExpr and
not this = DataFlow::parameterNode(any(ImmediatelyInvokedFunctionExpr iife).getAParameter()) and
not FlowSteps::identityFunctionStep(_, this)
}
@@ -139,8 +139,8 @@ module AccessPath {
result = join(fromReference(prop.getBase(), root), "[number]")
)
or
- exists(Closure::ClosureNamespaceAccess acc | node = acc |
- result = acc.getClosureNamespace() and
+ exists(Closure::RequireCallExpr req | node = req.flow() |
+ result = req.getClosureNamespace() and
root.isGlobal()
)
or
diff --git a/javascript/ql/lib/semmle/javascript/JSDoc.qll b/javascript/ql/lib/semmle/javascript/JSDoc.qll
index 10970a2e8b04..85b7695cd70e 100644
--- a/javascript/ql/lib/semmle/javascript/JSDoc.qll
+++ b/javascript/ql/lib/semmle/javascript/JSDoc.qll
@@ -33,6 +33,9 @@ class JSDoc extends @jsdoc, Locatable {
result.getTitle() = title
}
+ /** Gets the element to which this JSDoc comment is attached */
+ Documentable getDocumentedElement() { result.getDocumentation() = this }
+
override string toString() { result = this.getComment().toString() }
}
@@ -299,6 +302,41 @@ class JSDocIdentifierTypeExpr extends @jsdoc_identifier_type_expr, JSDocTypeExpr
override predicate isRawFunction() { this.getName() = "Function" }
}
+private AstNode getAncestorInScope(Documentable doc) {
+ any(JSDocLocalTypeAccess t).getJSDocComment() = doc.getDocumentation() and // restrict to cases where we need this
+ result = doc.getParent()
+ or
+ exists(AstNode mid |
+ mid = getAncestorInScope(doc) and
+ not mid = any(Scope s).getScopeElement() and
+ result = mid.getParent()
+ )
+}
+
+private Scope getScope(Documentable doc) { result.getScopeElement() = getAncestorInScope(doc) }
+
+pragma[nomagic]
+private predicate shouldResolveName(TopLevel top, string name) {
+ exists(JSDocLocalTypeAccess access |
+ access.getName() = name and
+ access.getTopLevel() = top
+ )
+}
+
+private LexicalName getOwnLocal(Scope scope, string name, DeclarationSpace space) {
+ scope = result.getScope() and
+ name = result.getName() and
+ space = result.getDeclarationSpace() and
+ shouldResolveName(scope.getScopeElement().getTopLevel(), name) // restrict size of predicate
+}
+
+private LexicalName resolveLocal(Scope scope, string name, DeclarationSpace space) {
+ result = getOwnLocal(scope, name, space)
+ or
+ result = resolveLocal(scope.getOuterScope(), name, space) and
+ not exists(getOwnLocal(scope, name, space))
+}
+
/**
* An unqualified identifier in a JSDoc type expression.
*
@@ -311,6 +349,12 @@ class JSDocIdentifierTypeExpr extends @jsdoc_identifier_type_expr, JSDocTypeExpr
*/
class JSDocLocalTypeAccess extends JSDocIdentifierTypeExpr {
JSDocLocalTypeAccess() { not this = any(JSDocQualifiedTypeAccess a).getNameNode() }
+
+ /** Gets a variable, type-name, or namespace that this expression may resolve to. */
+ LexicalName getALexicalName() {
+ result =
+ resolveLocal(getScope(this.getJSDocComment().getDocumentedElement()), this.getName(), _)
+ }
}
/**
@@ -371,7 +415,7 @@ class JSDocNamedTypeExpr extends JSDocTypeExpr {
* - `foo.bar.Baz` has prefix `foo` and suffix `.bar.Baz`.
* - `Baz` has prefix `Baz` and an empty suffix.
*/
- predicate hasNameParts(string prefix, string suffix) {
+ deprecated predicate hasNameParts(string prefix, string suffix) {
not this = any(JSDocQualifiedTypeAccess a).getBase() and // restrict size of predicate
exists(string regex, string name | regex = "([^.]+)(.*)" |
name = this.getRawName() and
@@ -379,46 +423,6 @@ class JSDocNamedTypeExpr extends JSDocTypeExpr {
suffix = name.regexpCapture(regex, 2)
)
}
-
- pragma[noinline]
- pragma[nomagic]
- private predicate hasNamePartsAndEnv(string prefix, string suffix, JSDoc::Environment env) {
- // Force join ordering
- this.hasNameParts(prefix, suffix) and
- env.isContainerInScope(this.getContainer())
- }
-
- /**
- * Gets the qualified name of this name by resolving its prefix, if any.
- */
- cached
- private string resolvedName() {
- exists(string prefix, string suffix, JSDoc::Environment env |
- this.hasNamePartsAndEnv(prefix, suffix, env) and
- result = env.resolveAlias(prefix) + suffix
- )
- }
-
- override predicate hasQualifiedName(string globalName) {
- globalName = this.resolvedName()
- or
- not exists(this.resolvedName()) and
- globalName = this.getRawName()
- }
-
- override DataFlow::ClassNode getClass() {
- exists(string name |
- this.hasQualifiedName(name) and
- result.hasQualifiedName(name)
- )
- or
- // Handle case where a local variable has a reference to the class,
- // but the class doesn't have a globally qualified name.
- exists(string alias, JSDoc::Environment env |
- this.hasNamePartsAndEnv(alias, "", env) and
- result.getAClassReference().flowsTo(env.getNodeFromAlias(alias))
- )
- }
}
/**
@@ -447,12 +451,6 @@ class JSDocAppliedTypeExpr extends @jsdoc_applied_type_expr, JSDocTypeExpr {
* For example, in `Array`, `string` is the only argument type.
*/
JSDocTypeExpr getAnArgument() { result = this.getArgument(_) }
-
- override predicate hasQualifiedName(string globalName) {
- this.getHead().hasQualifiedName(globalName)
- }
-
- override DataFlow::ClassNode getClass() { result = this.getHead().getClass() }
}
/**
@@ -472,8 +470,6 @@ class JSDocNullableTypeExpr extends @jsdoc_nullable_type_expr, JSDocTypeExpr {
predicate isPrefix() { jsdoc_prefix_qualifier(this) }
override JSDocTypeExpr getAnUnderlyingType() { result = this.getTypeExpr().getAnUnderlyingType() }
-
- override DataFlow::ClassNode getClass() { result = this.getTypeExpr().getClass() }
}
/**
@@ -493,8 +489,6 @@ class JSDocNonNullableTypeExpr extends @jsdoc_non_nullable_type_expr, JSDocTypeE
predicate isPrefix() { jsdoc_prefix_qualifier(this) }
override JSDocTypeExpr getAnUnderlyingType() { result = this.getTypeExpr().getAnUnderlyingType() }
-
- override DataFlow::ClassNode getClass() { result = this.getTypeExpr().getClass() }
}
/**
@@ -599,8 +593,6 @@ class JSDocOptionalParameterTypeExpr extends @jsdoc_optional_type_expr, JSDocTyp
override JSDocTypeExpr getAnUnderlyingType() {
result = this.getUnderlyingType().getAnUnderlyingType()
}
-
- override DataFlow::ClassNode getClass() { result = this.getUnderlyingType().getClass() }
}
/**
@@ -635,7 +627,7 @@ module JSDoc {
/**
* A statement container which may declare JSDoc name aliases.
*/
- class Environment extends StmtContainer {
+ deprecated class Environment extends StmtContainer {
/**
* Gets the fully qualified name aliased by the given unqualified name
* within this container.
@@ -685,7 +677,7 @@ module JSDoc {
}
pragma[noinline]
- private predicate isTypenamePrefix(string name) {
+ deprecated private predicate isTypenamePrefix(string name) {
any(JSDocNamedTypeExpr expr).hasNameParts(name, _)
}
}
diff --git a/javascript/ql/lib/semmle/javascript/TypeAnnotations.qll b/javascript/ql/lib/semmle/javascript/TypeAnnotations.qll
index d10b60b92b5b..318ad2f8873e 100644
--- a/javascript/ql/lib/semmle/javascript/TypeAnnotations.qll
+++ b/javascript/ql/lib/semmle/javascript/TypeAnnotations.qll
@@ -4,6 +4,8 @@
import javascript
private import internal.StmtContainers
+private import internal.NameResolution
+private import internal.UnderlyingTypes
/**
* A type annotation, either in the form of a TypeScript type or a JSDoc comment.
@@ -75,14 +77,38 @@ class TypeAnnotation extends @type_annotation, NodeInStmtContainer {
TypeAnnotation getAnUnderlyingType() { result = this }
/**
+ * DEPRECATED. Use `hasUnderlyingType` instead.
+ *
* Holds if this is a reference to the type with qualified name `globalName` relative to the global scope.
*/
- predicate hasQualifiedName(string globalName) { none() }
+ deprecated predicate hasQualifiedName(string globalName) {
+ UnderlyingTypes::nodeHasUnderlyingType(this, globalName)
+ }
/**
+ * DEPRECATED. Use `hasUnderlyingType` instead.
+ *
* Holds if this is a reference to the type exported from `moduleName` under the name `exportedName`.
*/
- predicate hasQualifiedName(string moduleName, string exportedName) { none() }
+ deprecated predicate hasQualifiedName(string moduleName, string exportedName) {
+ UnderlyingTypes::nodeHasUnderlyingType(this, moduleName, exportedName)
+ }
+
+ /**
+ * Holds if this is a reference to the type with qualified name `globalName` relative to the global scope,
+ * or is declared as a subtype thereof, or is a union or intersection containing such a type.
+ */
+ final predicate hasUnderlyingType(string globalName) {
+ UnderlyingTypes::nodeHasUnderlyingType(this, globalName)
+ }
+
+ /**
+ * Holds if this is a reference to the type exported from `moduleName` under the name `exportedName`,
+ * or is declared as a subtype thereof, or is a union or intersection containing such a type.
+ */
+ final predicate hasUnderlyingType(string moduleName, string exportedName) {
+ UnderlyingTypes::nodeHasUnderlyingType(this, moduleName, exportedName)
+ }
/** Gets the statement in which this type appears. */
Stmt getEnclosingStmt() { none() }
@@ -107,5 +133,5 @@ class TypeAnnotation extends @type_annotation, NodeInStmtContainer {
*
* This unfolds nullability modifiers and generic type applications.
*/
- DataFlow::ClassNode getClass() { none() }
+ final DataFlow::ClassNode getClass() { UnderlyingTypes::nodeHasUnderlyingClassType(this, result) }
}
diff --git a/javascript/ql/lib/semmle/javascript/TypeScript.qll b/javascript/ql/lib/semmle/javascript/TypeScript.qll
index 4be331ed6a50..ab670700c24b 100644
--- a/javascript/ql/lib/semmle/javascript/TypeScript.qll
+++ b/javascript/ql/lib/semmle/javascript/TypeScript.qll
@@ -1,4 +1,5 @@
import javascript
+private import semmle.javascript.internal.UnderlyingTypes
/**
* A statement that defines a namespace, that is, a namespace declaration or enum declaration.
@@ -575,10 +576,6 @@ class TypeExpr extends ExprOrType, @typeexpr, TypeAnnotation {
override Function getEnclosingFunction() { result = ExprOrType.super.getEnclosingFunction() }
override TopLevel getTopLevel() { result = ExprOrType.super.getTopLevel() }
-
- override DataFlow::ClassNode getClass() {
- result.getAstNode() = this.getType().(ClassType).getClass()
- }
}
/**
@@ -698,58 +695,9 @@ class TypeAccess extends @typeaccess, TypeExpr, TypeRef {
*/
TypeName getTypeName() { ast_node_symbol(this, result) }
- override predicate hasQualifiedName(string globalName) {
- this.getTypeName().hasQualifiedName(globalName)
- or
- exists(LocalTypeAccess local | local = this |
- not exists(local.getLocalTypeName()) and // Without a local type name, the type is looked up in the global scope.
- globalName = local.getName()
- )
- }
-
- override predicate hasQualifiedName(string moduleName, string exportedName) {
- this.getTypeName().hasQualifiedName(moduleName, exportedName)
- or
- exists(ImportDeclaration imprt, ImportSpecifier spec |
- moduleName = getImportName(imprt) and
- spec = imprt.getASpecifier()
- |
- spec.getImportedName() = exportedName and
- this = spec.getLocal().(TypeDecl).getLocalTypeName().getAnAccess()
- or
- (spec instanceof ImportNamespaceSpecifier or spec instanceof ImportDefaultSpecifier) and
- this =
- spec.getLocal().(LocalNamespaceDecl).getLocalNamespaceName().getAMemberAccess(exportedName)
- )
- or
- exists(ImportEqualsDeclaration imprt |
- moduleName = getImportName(imprt.getImportedEntity()) and
- this =
- imprt
- .getIdentifier()
- .(LocalNamespaceDecl)
- .getLocalNamespaceName()
- .getAMemberAccess(exportedName)
- )
- }
-
override string getAPrimaryQlClass() { result = "TypeAccess" }
}
-/**
- * Gets a suitable name for the library imported by `imprt`.
- *
- * For relative imports, this is the snapshot-relative path to the imported module.
- * For non-relative imports, it is the import path itself.
- */
-private string getImportName(Import imprt) {
- exists(string path | path = imprt.getImportedPathString() |
- if path.regexpMatch("[./].*")
- then result = imprt.getImportedModule().getFile().getRelativePath()
- else result = path
- )
-}
-
/** An identifier that is used as part of a type, such as `Date`. */
class LocalTypeAccess extends @local_type_access, TypeAccess, Identifier, LexicalAccess {
override predicate isStringy() { this.getName() = "String" }
@@ -822,14 +770,6 @@ class GenericTypeExpr extends @generic_typeexpr, TypeExpr {
/** Gets the number of type arguments. This is always at least one. */
int getNumTypeArgument() { result = count(this.getATypeArgument()) }
- override predicate hasQualifiedName(string globalName) {
- this.getTypeAccess().hasQualifiedName(globalName)
- }
-
- override predicate hasQualifiedName(string moduleName, string exportedName) {
- this.getTypeAccess().hasQualifiedName(moduleName, exportedName)
- }
-
override string getAPrimaryQlClass() { result = "GenericTypeExpr" }
}
diff --git a/javascript/ql/lib/semmle/javascript/Variables.qll b/javascript/ql/lib/semmle/javascript/Variables.qll
index 1eeb735124b5..2f9905f86e17 100644
--- a/javascript/ql/lib/semmle/javascript/Variables.qll
+++ b/javascript/ql/lib/semmle/javascript/Variables.qll
@@ -27,6 +27,12 @@ class Scope extends @scope {
result = this.getAVariable() and
result.getName() = name
}
+
+ /** Gets the local type name with the given name declared in this scope. */
+ LocalTypeName getLocalTypeName(string name) {
+ result.getScope() = this and
+ result.getName() = name
+ }
}
/**
@@ -128,8 +134,26 @@ class Variable extends @variable, LexicalName {
/** Gets the scope this variable is declared in. */
override Scope getScope() { variables(this, _, result) }
+ /**
+ * Holds if this variable is declared in the top-level of a module using a `declare` statement.
+ *
+ * For example:
+ * ```js
+ * declare var $: any;
+ * ```
+ *
+ * Such variables are generally treated as a global variables, except for type-checking related purposes.
+ */
+ pragma[nomagic]
+ predicate isTopLevelWithAmbientDeclaration() {
+ this.getScope() instanceof ModuleScope and
+ forex(VarDecl decl | decl = this.getADeclaration() | decl.isAmbient())
+ }
+
/** Holds if this is a global variable. */
- predicate isGlobal() { this.getScope() instanceof GlobalScope }
+ predicate isGlobal() {
+ this.getScope() instanceof GlobalScope or this.isTopLevelWithAmbientDeclaration()
+ }
/**
* Holds if this is a variable exported from a TypeScript namespace.
diff --git a/javascript/ql/lib/semmle/javascript/ViewComponentInput.qll b/javascript/ql/lib/semmle/javascript/ViewComponentInput.qll
index bc80826de5c9..7ab04ad5bd26 100644
--- a/javascript/ql/lib/semmle/javascript/ViewComponentInput.qll
+++ b/javascript/ql/lib/semmle/javascript/ViewComponentInput.qll
@@ -3,6 +3,7 @@
*/
private import javascript
+private import semmle.javascript.internal.TypeResolution
/**
* An input to a view component, such as React props.
@@ -14,34 +15,11 @@ abstract class ViewComponentInput extends DataFlow::Node {
private class ViewComponentInputAsThreatModelSource extends ThreatModelSource::Range instanceof ViewComponentInput
{
- ViewComponentInputAsThreatModelSource() { not isSafeType(this.asExpr().getType()) }
+ ViewComponentInputAsThreatModelSource() {
+ not TypeResolution::valueHasSanitizingPrimitiveType(this.asExpr())
+ }
final override string getThreatModel() { result = "view-component-input" }
final override string getSourceType() { result = ViewComponentInput.super.getSourceType() }
}
-
-private predicate isSafeType(Type t) {
- t instanceof NumberLikeType
- or
- t instanceof BooleanLikeType
- or
- t instanceof UndefinedType
- or
- t instanceof NullType
- or
- t instanceof VoidType
- or
- hasSafeTypes(t, t.(UnionType).getNumElementType())
- or
- isSafeType(t.(IntersectionType).getAnElementType())
-}
-
-/** Hold if the first `n` components of `t` are safe types. */
-private predicate hasSafeTypes(UnionType t, int n) {
- isSafeType(t.getElementType(0)) and
- n = 1
- or
- isSafeType(t.getElementType(n - 1)) and
- hasSafeTypes(t, n - 1)
-}
diff --git a/javascript/ql/lib/semmle/javascript/dataflow/DataFlow.qll b/javascript/ql/lib/semmle/javascript/dataflow/DataFlow.qll
index 46801bd1ad7e..df3d0d5ff8ba 100644
--- a/javascript/ql/lib/semmle/javascript/dataflow/DataFlow.qll
+++ b/javascript/ql/lib/semmle/javascript/dataflow/DataFlow.qll
@@ -27,6 +27,9 @@ private import internal.PreCallGraphStep
private import semmle.javascript.internal.CachedStages
private import semmle.javascript.dataflow.internal.DataFlowPrivate as Private
private import semmle.javascript.dataflow.internal.VariableOrThis
+private import semmle.javascript.internal.NameResolution
+private import semmle.javascript.internal.UnderlyingTypes
+private import semmle.javascript.internal.TypeResolution
module DataFlow {
/**
@@ -189,26 +192,6 @@ module DataFlow {
FlowSteps::identityFunctionStep(result, this)
}
- /**
- * Gets the static type of this node as determined by the TypeScript type system.
- */
- private Type getType() {
- exists(AST::ValueNode node |
- this = TValueNode(node) and
- ast_node_type(node, result)
- )
- or
- exists(BindingPattern pattern |
- this = lvalueNode(pattern) and
- ast_node_type(pattern, result)
- )
- or
- exists(MethodDefinition def |
- this = TThisNode(def.getInit()) and
- ast_node_type(def.getDeclaringClass(), result)
- )
- }
-
/**
* Gets the type annotation describing the type of this node,
* provided that a static type could not be found.
@@ -229,6 +212,15 @@ module DataFlow {
)
}
+ private NameResolution::Node getNameResolutionNode() {
+ this = valueNode(result)
+ or
+ exists(PropertyPattern pattern |
+ result = pattern.getValuePattern() and
+ this = TPropNode(pattern)
+ )
+ }
+
/**
* Holds if this node is annotated with the given named type,
* or is declared as a subtype thereof, or is a union or intersection containing such a type.
@@ -236,9 +228,10 @@ module DataFlow {
cached
predicate hasUnderlyingType(string globalName) {
Stages::TypeTracking::ref() and
- this.getType().hasUnderlyingType(globalName)
- or
- this.getFallbackTypeAnnotation().getAnUnderlyingType().hasQualifiedName(globalName)
+ exists(NameResolution::Node type |
+ TypeResolution::valueHasType(this.getNameResolutionNode(), type) and
+ UnderlyingTypes::nodeHasUnderlyingType(type, globalName)
+ )
}
/**
@@ -248,9 +241,11 @@ module DataFlow {
cached
predicate hasUnderlyingType(string moduleName, string typeName) {
Stages::TypeTracking::ref() and
- this.getType().hasUnderlyingType(moduleName, typeName)
- or
- this.getFallbackTypeAnnotation().getAnUnderlyingType().hasQualifiedName(moduleName, typeName)
+ moduleName != "global" and
+ exists(NameResolution::Node type |
+ TypeResolution::valueHasType(this.getNameResolutionNode(), type) and
+ UnderlyingTypes::nodeHasUnderlyingType(type, moduleName, typeName)
+ )
}
/**
diff --git a/javascript/ql/lib/semmle/javascript/dataflow/Sources.qll b/javascript/ql/lib/semmle/javascript/dataflow/Sources.qll
index 06729815e9a4..f861488a046c 100644
--- a/javascript/ql/lib/semmle/javascript/dataflow/Sources.qll
+++ b/javascript/ql/lib/semmle/javascript/dataflow/Sources.qll
@@ -333,7 +333,14 @@ module SourceNode {
astNode instanceof TaggedTemplateExpr or
astNode instanceof Templating::PipeRefExpr or
astNode instanceof Templating::TemplateVarRefExpr or
- astNode instanceof StringLiteral
+ astNode instanceof StringLiteral or
+ astNode instanceof TypeAssertion or
+ astNode instanceof SatisfiesExpr
+ )
+ or
+ exists(VariableDeclarator decl |
+ exists(decl.getTypeAnnotation()) and
+ this = DataFlow::valueNode(decl.getBindingPattern())
)
or
DataFlow::parameterNode(this, _)
diff --git a/javascript/ql/lib/semmle/javascript/dataflow/internal/Contents.qll b/javascript/ql/lib/semmle/javascript/dataflow/internal/Contents.qll
index 5cf5bf1e48eb..a5af2737c186 100644
--- a/javascript/ql/lib/semmle/javascript/dataflow/internal/Contents.qll
+++ b/javascript/ql/lib/semmle/javascript/dataflow/internal/Contents.qll
@@ -179,6 +179,9 @@ module Public {
/** Holds if this represents values stored at an unknown array index. */
predicate isUnknownArrayElement() { this = MkArrayElementUnknown() }
+ /** Holds if this represents the value of a resolved promise. */
+ predicate isPromiseValue() { this = MkPromiseValue() }
+
/** Holds if this represents values stored in a `Map` at an unknown key. */
predicate isMapValueWithUnknownKey() { this = MkMapValueWithUnknownKey() }
@@ -266,6 +269,11 @@ module Public {
or
this = ContentSet::anyCapturedContent() and
result instanceof Private::MkCapturedContent
+ or
+ // Although data flow will never use the special `Awaited` ContentSet in a read or store step,
+ // it may appear in type-tracking and type resolution, and here it helps to treat is as `Awaited[value]`.
+ this = MkAwaited() and
+ result = MkPromiseValue()
}
/** Gets the singleton content to be accessed. */
diff --git a/javascript/ql/lib/semmle/javascript/frameworks/Nest.qll b/javascript/ql/lib/semmle/javascript/frameworks/Nest.qll
index dd6e1a7d9159..d6bcb9ddd400 100644
--- a/javascript/ql/lib/semmle/javascript/frameworks/Nest.qll
+++ b/javascript/ql/lib/semmle/javascript/frameworks/Nest.qll
@@ -5,6 +5,8 @@
import javascript
private import semmle.javascript.security.dataflow.ServerSideUrlRedirectCustomizations
private import semmle.javascript.dataflow.internal.PreCallGraphStep
+private import semmle.javascript.internal.NameResolution
+private import semmle.javascript.internal.TypeResolution
/**
* Provides classes and predicates for reasoning about [Nest](https://nestjs.com/).
@@ -133,7 +135,9 @@ module NestJS {
hasSanitizingPipe(this, false)
or
hasSanitizingPipe(this, true) and
- isSanitizingType(this.getParameter().getType().unfold())
+ // Note: we could consider types with class-validator decorators to be sanitized here, but instead we consider the root
+ // object to be tainted, but omit taint steps for the individual properties names that have sanitizing decorators. See ClassValidator.qll.
+ TypeResolution::isSanitizingPrimitiveType(this.getParameter().getTypeAnnotation())
}
}
@@ -209,19 +213,6 @@ module NestJS {
dependsOnType = true
}
- /**
- * Holds if a parameter of type `t` is considered sanitized, provided it has been checked by `ValidationPipe`
- * (which relies on metadata emitted by the TypeScript compiler).
- */
- private predicate isSanitizingType(Type t) {
- t instanceof NumberType
- or
- t instanceof BooleanType
- //
- // Note: we could consider types with class-validator decorators to be sanitized here, but instead we consider the root
- // object to be tainted, but omit taint steps for the individual properties names that have sanitizing decorators. See ClassValidator.qll.
- }
-
/**
* A user-defined pipe class, for example:
* ```js
@@ -237,7 +228,7 @@ module NestJS {
CustomPipeClass() {
exists(ClassDefinition cls |
this = cls.flow() and
- cls.getASuperInterface().hasQualifiedName("@nestjs/common", "PipeTransform")
+ cls.getASuperInterface().hasUnderlyingType("@nestjs/common", "PipeTransform")
)
}
@@ -327,14 +318,6 @@ module NestJS {
}
}
- private predicate isStringType(Type type) {
- type instanceof StringType
- or
- type instanceof AnyType
- or
- isStringType(type.(PromiseType).getElementType().unfold())
- }
-
/**
* A return value from a route handler, seen as an argument to `res.send()`.
*
@@ -353,10 +336,10 @@ module NestJS {
ReturnValueAsResponseSend() {
handler.isReturnValueReflected() and
this = handler.getAReturn() and
- // Only returned strings are sinks
- not exists(Type type |
- type = this.asExpr().getType() and
- not isStringType(type.unfold())
+ // Only returned strings are sinks. If we can find a type for the return value, it must be string-like.
+ not exists(NameResolution::Node type |
+ TypeResolution::valueHasType(this.asExpr(), type) and
+ not TypeResolution::hasUnderlyingStringOrAnyType(type)
)
}
diff --git a/javascript/ql/lib/semmle/javascript/frameworks/data/internal/ApiGraphModelsSpecific.qll b/javascript/ql/lib/semmle/javascript/frameworks/data/internal/ApiGraphModelsSpecific.qll
index c06490b84368..5e9846e9ad55 100644
--- a/javascript/ql/lib/semmle/javascript/frameworks/data/internal/ApiGraphModelsSpecific.qll
+++ b/javascript/ql/lib/semmle/javascript/frameworks/data/internal/ApiGraphModelsSpecific.qll
@@ -60,9 +60,7 @@ predicate isPackageUsed(string package) {
or
package = any(JS::Import imp).getImportedPathString()
or
- any(JS::TypeName t).hasQualifiedName(package, _)
- or
- any(JS::TypeAnnotation t).hasQualifiedName(package, _)
+ any(JS::TypeAnnotation t).hasUnderlyingType(package, _)
or
exists(JS::PackageJson json | json.getPackageName() = package)
}
@@ -138,7 +136,7 @@ API::Node getExtraNodeFromType(string type) {
parseRelevantTypeString(type, package, qualifiedName)
|
qualifiedName = "" and
- result = [API::moduleImport(package), API::moduleExport(package)]
+ result = [API::Internal::getAModuleImportRaw(package), API::moduleExport(package)]
or
// Access instance of a type based on type annotations
result = API::Internal::getANodeOfTypeRaw(package, qualifiedName)
diff --git a/javascript/ql/lib/semmle/javascript/frameworks/jQuery.qll b/javascript/ql/lib/semmle/javascript/frameworks/jQuery.qll
index 4fad4ae1b059..70beadbfa573 100644
--- a/javascript/ql/lib/semmle/javascript/frameworks/jQuery.qll
+++ b/javascript/ql/lib/semmle/javascript/frameworks/jQuery.qll
@@ -60,11 +60,7 @@ private predicate neverReturnsJQuery(string name) {
decl.getBaseName() = "jQuery" and
decl.getName() = name
|
- not decl.getDocumentation()
- .getATagByTitle("return")
- .getType()
- .getAnUnderlyingType()
- .hasQualifiedName("jQuery")
+ not decl.getDocumentation().getATagByTitle("return").getType().hasUnderlyingType("jQuery")
)
}
@@ -414,6 +410,8 @@ module JQuery {
this = DataFlow::moduleImport(["jquery", "zepto", "cash-dom"])
or
this.hasUnderlyingType("JQueryStatic")
+ or
+ this.hasUnderlyingType("jquery", "")
}
}
}
diff --git a/javascript/ql/lib/semmle/javascript/internal/NameResolution.qll b/javascript/ql/lib/semmle/javascript/internal/NameResolution.qll
new file mode 100644
index 000000000000..96e72108e2ec
--- /dev/null
+++ b/javascript/ql/lib/semmle/javascript/internal/NameResolution.qll
@@ -0,0 +1,512 @@
+/**
+ * Provides name resolution and propagates type information.
+ */
+
+private import javascript
+
+/**
+ * Provides name resolution and propagates type information.
+ */
+module NameResolution {
+ private class NodeBase =
+ @expr or @typeexpr or @lexical_name or @toplevel or @function_decl_stmt or @class_decl_stmt or
+ @namespace_declaration or @enum_declaration or @interface_declaration or
+ @type_alias_declaration or @jsdoc_type_expr;
+
+ /**
+ * A node in a graph which we use to perform name and type resolution.
+ */
+ class Node extends NodeBase {
+ string toString() {
+ result = this.(AstNode).toString()
+ or
+ result = this.(LexicalName).toString()
+ or
+ result = this.(JSDocTypeExpr).toString()
+ }
+
+ Location getLocation() {
+ result = this.(AstNode).getLocation()
+ or
+ result = this.(LocalVariableLike).getLocation()
+ or
+ result = this.(JSDocTypeExpr).getLocation()
+ }
+ }
+
+ private signature predicate nodeSig(Node node);
+
+ /**
+ * A module top-level, or a `module {}` or `enum {}` statement.
+ */
+ private class ModuleLike extends AstNode {
+ ModuleLike() {
+ this instanceof Module
+ or
+ this instanceof NamespaceDefinition // `module {}` or `enum {}` statement
+ }
+ }
+
+ /**
+ * A local variable, or a top-level variable that acts as a global variable due to an ambient declaration.
+ */
+ class LocalVariableLike extends Variable {
+ LocalVariableLike() { this.isLocal() or this.isTopLevelWithAmbientDeclaration() }
+
+ Location getLocation() {
+ result =
+ min(Location loc |
+ loc = this.getADeclaration().getLocation()
+ |
+ loc order by loc.getStartLine(), loc.getStartColumn()
+ )
+ }
+ }
+
+ /**
+ * Holds if values/namespaces/types in `node1` can flow to values/namespaces/types in `node2`.
+ *
+ * May also include some type-specific steps in cases where this is harmless when tracking values.
+ */
+ private predicate commonStep(Node node1, Node node2) {
+ // Import paths are part of the graph and has an incoming edge from the imported module, if found.
+ // This ensures we can also use the PathExpr as a source when working with external (unresolved) modules.
+ exists(Import imprt |
+ node1 = imprt.getImportedModule() and
+ node2 = imprt.getImportedPathExpr()
+ )
+ or
+ exists(ImportNamespaceSpecifier spec |
+ node1 = spec.getImportDeclaration().getImportedPathExpr() and
+ node2 = spec.getLocal()
+ )
+ or
+ exists(ExportNamespaceSpecifier spec |
+ node1 = spec.getExportDeclaration().(ReExportDeclaration).getImportedPath() and
+ node2 = spec
+ )
+ or
+ exists(ExportAssignDeclaration assign |
+ node1 = assign.getExpression() and
+ node2 = assign.getContainer()
+ )
+ or
+ exists(ImportEqualsDeclaration imprt |
+ node1 = imprt.getImportedEntity() and
+ node2 = imprt.getIdentifier()
+ )
+ or
+ exists(ExternalModuleReference ref |
+ node1 = ref.getImportedPathExpr() and
+ node2 = ref
+ )
+ or
+ exists(ImportTypeExpr imprt |
+ node1 = imprt.getPathExpr() and // TODO: ImportTypeExpr does not seem to be resolved to a Module
+ node2 = imprt
+ )
+ or
+ exists(ClassOrInterface cls |
+ node1 = cls and
+ node2 = cls.getIdentifier()
+ )
+ or
+ exists(NamespaceDefinition def |
+ node1 = def and
+ node2 = def.getIdentifier()
+ )
+ or
+ exists(Function fun |
+ node1 = fun and
+ node2 = fun.getIdentifier()
+ )
+ or
+ exists(EnumMember def |
+ node1 = def.getInitializer() and
+ node2 = def.getIdentifier()
+ )
+ or
+ exists(TypeAliasDeclaration alias |
+ node1 = alias.getDefinition() and
+ node2 = alias.getIdentifier()
+ )
+ or
+ exists(VariableDeclarator decl |
+ node1 = decl.getInit() and
+ node2 = decl.getBindingPattern()
+ )
+ or
+ exists(ParenthesizedTypeExpr type |
+ node1 = type.getElementType() and
+ node2 = type
+ )
+ or
+ exists(ParenthesisExpr expr |
+ node1 = expr.getExpression() and
+ node2 = expr
+ )
+ or
+ exists(NonNullAssertion assertion |
+ // For the time being we don't use this for nullness analysis, so just
+ // propagate through these assertions.
+ node1 = assertion.getExpression() and
+ node2 = assertion
+ )
+ or
+ exists(FunctionTypeExpr fun |
+ node1 = fun.getFunction() and
+ node2 = fun
+ )
+ or
+ exists(TypeofTypeExpr type |
+ node1 = type.getExpressionName() and
+ node2 = type
+ )
+ or
+ exists(Closure::RequireCallExpr req |
+ node1.(Closure::ClosureModule).getClosureNamespace() = req.getClosureNamespace() and
+ node2 = req
+ )
+ or
+ exists(Closure::ClosureModule mod |
+ node1 = mod.getExportsVariable() and
+ node2 = mod
+ )
+ or
+ exists(ImmediatelyInvokedFunctionExpr fun, int i |
+ node1 = fun.getArgument(i) and
+ node2 = fun.getParameter(i)
+ )
+ }
+
+ /**
+ * Holds if there is a read from `node1` to `node2` that accesses the member `name`.
+ */
+ predicate readStep(Node node1, string name, Node node2) {
+ exists(QualifiedTypeAccess access |
+ node1 = access.getQualifier() and
+ name = access.getIdentifier().getName() and
+ node2 = access
+ )
+ or
+ exists(QualifiedNamespaceAccess access |
+ node1 = access.getQualifier() and
+ name = access.getIdentifier().getName() and
+ node2 = access
+ )
+ or
+ exists(QualifiedVarTypeAccess access |
+ node1 = access.getQualifier() and
+ name = access.getIdentifier().getName() and
+ node2 = access
+ )
+ or
+ exists(PropAccess access |
+ node1 = access.getBase() and
+ name = access.getPropertyName() and
+ node2 = access
+ )
+ or
+ exists(ObjectPattern pattern |
+ node1 = pattern and
+ node2 = pattern.getPropertyPatternByName(name).getValuePattern()
+ )
+ or
+ exists(ImportSpecifier spec |
+ node1 = spec.getImportDeclaration().getImportedPathExpr() and
+ name = spec.getImportedName() and
+ node2 = spec.getLocal()
+ )
+ or
+ exists(SelectiveReExportDeclaration exprt, ExportSpecifier spec |
+ spec = exprt.getASpecifier() and
+ node1 = exprt.getImportedPath() and
+ name = spec.getLocalName() and
+ node2 = spec.getLocal()
+ )
+ or
+ exists(JSDocQualifiedTypeAccess expr |
+ node1 = expr.getBase() and
+ name = expr.getName() and
+ node2 = expr
+ )
+ }
+
+ private signature module TypeResolutionInputSig {
+ /**
+ * Holds if flow is permitted through the given variable.
+ */
+ predicate isRelevantVariable(LexicalName var);
+ }
+
+ /**
+ * A local variable with exactly one definition, not counting implicit initialization.
+ */
+ private class EffectivelyConstantVariable extends LocalVariableLike {
+ EffectivelyConstantVariable() {
+ count(SsaExplicitDefinition ssa | ssa.getSourceVariable() = this) <= 1 // count may be zero if ambient
+ }
+ }
+
+ /** Configuration for propagating values and namespaces */
+ private module ValueConfig implements TypeResolutionInputSig {
+ predicate isRelevantVariable(LexicalName var) {
+ var instanceof EffectivelyConstantVariable
+ or
+ // We merge the namespace and value declaration spaces as it seems there is
+ // no need to distinguish them in practice.
+ var instanceof LocalNamespaceName
+ }
+ }
+
+ /**
+ * Associates information about values, such as references to a class, module, or namespace.
+ */
+ module ValueFlow = FlowImpl;
+
+ private module TypeConfig implements TypeResolutionInputSig {
+ predicate isRelevantVariable(LexicalName var) { var instanceof LocalTypeName }
+ }
+
+ /**
+ * Associates nodes with information about types.
+ */
+ module TypeFlow = FlowImpl;
+
+ /**
+ * Generates a directed graph for tracking type names or value names back toward their definition.
+ * The ultimate definition might not be in the database, but the graph lets us track as far as we can.
+ *
+ * The module parameter determines whether types or values should be tracked.
+ *
+ * The example below illustrates the need for two separate instantiations of this module.
+ * When tracking through the nodes corresponding to `X`, we need to remember whether a type or value was tracked.
+ *
+ * ```ts
+ * // lib.ts
+ * class C1 {}
+ * class C2 {}
+ *
+ * const X = C1;
+ * type X = C2;
+ *
+ * export { X }
+ *
+ * // use.ts
+ * import { X } from "./lib"
+ *
+ * var x1 = X // should refer to C1
+ * var x2: X; // should refer to C2
+ * ```
+ */
+ private module FlowImpl {
+ /**
+ * Gets the exported member of `mod` named `name`.
+ */
+ Node getModuleExport(ModuleLike mod, string name) {
+ exists(ExportDeclaration exprt |
+ mod = exprt.getContainer() and
+ exprt.exportsAs(result, name) and
+ S::isRelevantVariable(result)
+ )
+ or
+ exists(ExportNamespaceSpecifier spec |
+ result = spec and
+ mod = spec.getContainer() and
+ name = spec.getExportedName()
+ )
+ or
+ exists(SelectiveReExportDeclaration exprt, ExportSpecifier spec |
+ // `export { A as B } from 'blah'`
+ // This is not covered by `exportsAs` above because neither A or B is a LexicalName
+ // (both are property names) so it doesn't fit the interface of `exportsAs`.
+ spec = exprt.getASpecifier() and
+ mod = exprt.getContainer() and
+ name = spec.getExportedName() and
+ result = spec.getLocal()
+ )
+ or
+ exists(EnumDeclaration enum |
+ mod = enum and
+ result = enum.getMemberByName(name).getIdentifier()
+ )
+ or
+ storeToVariable(result, name, mod.(Closure::ClosureModule).getExportsVariable())
+ }
+
+ /**
+ * Holds if `value` is stored in `target.prop`. Only needs to recognise assignments
+ * that are also recognised by JSDoc tooling such as the Closure compiler.
+ */
+ private predicate storeToVariable(Expr value, string prop, LocalVariableLike target) {
+ exists(AssignExpr assign |
+ // target.name = value
+ assign.getLhs().(PropAccess).accesses(target.getAnAccess(), prop) and
+ value = assign.getRhs()
+ )
+ or
+ // target = { name: value }
+ value = target.getAnAssignedExpr().(ObjectExpr).getPropertyByName(prop).getInit()
+ }
+
+ /** Steps that only apply for this configuration. */
+ private predicate specificStep(Node node1, Node node2) {
+ exists(LexicalName var | S::isRelevantVariable(var) |
+ node1.(LexicalDecl).getALexicalName() = var and
+ node2 = var
+ or
+ node1 = var and
+ node2.(LexicalAccess).getALexicalName() = var
+ or
+ node1 = var and
+ node2.(JSDocLocalTypeAccess).getALexicalName() = var
+ )
+ or
+ exists(Node base, string name, ModuleLike mod |
+ readStep(base, name, node2) and
+ base = trackModule(mod) and
+ node1 = getModuleExport(mod, name)
+ )
+ }
+
+ /**
+ * Holds if data should propagate from `node1` to `node2`.
+ */
+ pragma[inline]
+ predicate step(Node node1, Node node2) {
+ commonStep(node1, node2)
+ or
+ specificStep(node1, node2)
+ }
+
+ /** Helps track flow from a particular set of source nodes. */
+ module Track {
+ /** Gets the set of nodes reachable from `source`. */
+ Node track(Node source) {
+ isSource(source) and
+ result = source
+ or
+ step(track(source), result)
+ }
+ }
+
+ signature class AstNodeSig extends AstNode;
+
+ /** Helps track flow from a particular set of source nodes. */
+ module TrackNode {
+ /** Gets the set of nodes reachable from `source`. */
+ Node track(Source source) {
+ result = source
+ or
+ step(track(source), result)
+ }
+ }
+ }
+
+ /**
+ * Gets a node to which the given module flows.
+ */
+ predicate trackModule = ValueFlow::TrackNode::track/1;
+
+ /**
+ * Holds if `moduleName` appears to start with a package name, as opposed to a relative file import.
+ */
+ bindingset[moduleName]
+ private predicate isExternalModuleName(string moduleName) {
+ not moduleName.regexpMatch("^(\\.|/).*")
+ }
+
+ bindingset[name]
+ private string normalizeModuleName(string name) {
+ result =
+ name.regexpReplaceAll("^node:", "")
+ .regexpReplaceAll("\\.[cm]?[jt]sx?$", "")
+ .regexpReplaceAll("/(index)?$", "")
+ }
+
+ /** Appends a name onto a qualified name */
+ bindingset[a, b]
+ string append(string a, string b) {
+ if b = "default"
+ then result = a
+ else (
+ (if a = "" or b = "" then result = a + b else result = a + "." + b) and
+ result.length() < 100
+ )
+ }
+
+ private predicate needsQualifiedName(Node node) {
+ node = any(JSDocLocalTypeAccess t).getALexicalName().(Variable)
+ or
+ exists(Node prev | needsQualifiedName(prev) |
+ ValueFlow::step(node, prev)
+ or
+ readStep(node, _, prev)
+ )
+ }
+
+ /**
+ * Holds if `node` is a reference to the given module, or a qualified name rooted in that module.
+ *
+ * If `qualifiedName` is empty, `node` refers to the module itself.
+ *
+ * If `mod` is the string `"global"`, `node` refers to a global access path.
+ *
+ * Unlike `trackModule`, this is intended to track uses of external packages.
+ */
+ predicate nodeRefersToModule(Node node, string mod, string qualifiedName) {
+ exists(Expr path |
+ path = any(Import imprt).getImportedPathExpr() or
+ path = any(ReExportDeclaration e).getImportedPath()
+ |
+ node = path and
+ mod = normalizeModuleName(path.getStringValue()) and
+ isExternalModuleName(mod) and
+ qualifiedName = ""
+ )
+ or
+ mod = "global" and
+ exists(LocalNamespaceAccess access |
+ node = access and
+ not exists(access.getLocalNamespaceName()) and
+ access.getName() = qualifiedName
+ )
+ or
+ mod = "global" and
+ exists(JSDocLocalTypeAccess access |
+ node = access and
+ not exists(access.getALexicalName()) and
+ access.getName() = qualifiedName
+ )
+ or
+ mod = "global" and
+ exists(GlobalVarAccess access |
+ node = access and
+ needsQualifiedName(access) and // restrict number of qualified names we generate
+ access.getName() = qualifiedName
+ )
+ or
+ mod = "global" and
+ qualifiedName = node.(Closure::RequireCallExpr).getClosureNamespace()
+ or
+ // Additionally track through bulk re-exports (`export * from 'mod`).
+ // These are normally handled by 'exportAs' which supports various shadowing rules,
+ // but has no effect when the ultimate re-exported module is not resolved to a Module.
+ // We propagate external module refs through bulk re-exports and ignore shadowing rules.
+ exists(BulkReExportDeclaration reExport |
+ nodeRefersToModule(reExport.getImportedPath(), mod, qualifiedName) and
+ node = reExport.getContainer()
+ )
+ or
+ exists(Node mid |
+ nodeRefersToModule(mid, mod, qualifiedName) and
+ ValueFlow::step(mid, node)
+ )
+ or
+ exists(Node mid, string prefix, string step |
+ nodeRefersToModule(mid, mod, prefix) and
+ readStep(mid, step, node) and
+ qualifiedName = append(prefix, step)
+ )
+ }
+}
diff --git a/javascript/ql/lib/semmle/javascript/internal/TypeResolution.qll b/javascript/ql/lib/semmle/javascript/internal/TypeResolution.qll
new file mode 100644
index 000000000000..ddf5757a38cc
--- /dev/null
+++ b/javascript/ql/lib/semmle/javascript/internal/TypeResolution.qll
@@ -0,0 +1,422 @@
+private import javascript
+private import semmle.javascript.internal.NameResolution::NameResolution
+private import semmle.javascript.internal.UnderlyingTypes
+private import semmle.javascript.dataflow.internal.sharedlib.SummaryTypeTracker as SummaryTypeTracker
+
+module TypeResolution {
+ predicate trackClassValue = ValueFlow::TrackNode::track/1;
+
+ predicate trackType = TypeFlow::TrackNode::track/1;
+
+ /**
+ * Gets a node that has `fun` as an underlying type.
+ *
+ * We track through underlying types as an approximate way to handle calls to a type
+ * that is a union/intersection involving functions.
+ */
+ Node trackUnderlyingFunctionType(Function fun) {
+ result = fun
+ or
+ exists(Node mid | mid = trackUnderlyingFunctionType(fun) |
+ TypeFlow::step(mid, result)
+ or
+ UnderlyingTypes::underlyingTypeStep(mid, result)
+ )
+ }
+
+ predicate trackFunctionValue = ValueFlow::TrackNode::track/1;
+
+ /**
+ * Gets the representative for the type containing the given member.
+ *
+ * For non-static members this is simply the enclosing type declaration.
+ *
+ * For static members we use the class's `Variable` as representative for the type of the class object.
+ */
+ private Node getMemberBase(MemberDeclaration member) {
+ if member.isStatic()
+ then result = member.getDeclaringClass().getVariable()
+ else result = member.getDeclaringType()
+ }
+
+ /**
+ * Holds if `host` is a type with a `content` of type `memberType`, not counting inherited members.
+ */
+ private predicate typeOwnMember(Node host, DataFlow::Content content, Node memberType) {
+ exists(MemberDeclaration decl | host = getMemberBase(decl) |
+ exists(FieldDeclaration field |
+ decl = field and
+ content.asPropertyName() = field.getName() and
+ memberType = field.getTypeAnnotation()
+ )
+ or
+ exists(MethodDeclaration method |
+ decl = method and
+ content.asPropertyName() = method.getName()
+ |
+ not method instanceof AccessorMethodDeclaration and
+ memberType = method.getBody() // use the Function as representative for the function type
+ or
+ method instanceof GetterMethodDeclaration and
+ memberType = method.getBody().getReturnTypeAnnotation()
+ )
+ or
+ decl instanceof IndexSignature and
+ memberType = decl.(IndexSignature).getBody().getReturnTypeAnnotation() and
+ content.isUnknownArrayElement()
+ )
+ or
+ // Ad-hoc support for array types. We don't support generics in general currently, we just special-case arrays and promises.
+ content.isUnknownArrayElement() and
+ (
+ memberType = host.(ArrayTypeExpr).getElementType()
+ or
+ exists(GenericTypeExpr type |
+ host = type and
+ type.getTypeAccess().(LocalTypeAccess).getName() = ["Array", "ReadonlyArray"] and
+ memberType = type.getTypeArgument(0)
+ )
+ or
+ exists(JSDocAppliedTypeExpr type |
+ host = type and
+ type.getHead().(JSDocLocalTypeAccess).getName() = "Array" and
+ memberType = type.getArgument(0)
+ )
+ )
+ or
+ content.isPromiseValue() and
+ memberType = unwrapPromiseType(host)
+ }
+
+ /**
+ * Holds if `host` is a type with a `content` of type `memberType`, possible due to inheritance.
+ */
+ private predicate typeMember(Node host, DataFlow::Content content, Node memberType) {
+ typeOwnMember(host, content, memberType)
+ or
+ // Inherit members from base types
+ not typeOwnMember(host, content, _) and
+ exists(ClassOrInterface baseType | typeMember(baseType, content, memberType) |
+ host.(ClassDefinition).getSuperClass() = trackClassValue(baseType)
+ or
+ host.(ClassOrInterface).getASuperInterface() = trackType(baseType)
+ )
+ }
+
+ /**
+ * Holds `use` refers to `host`, and `host` has type members.
+ *
+ * Currently steps through unions and intersections, which acts as a basic
+ * approximation to the unions/intersection of objects.
+ */
+ private predicate typeMemberHostReaches(Node host, Node use) {
+ typeMember(host, _, _) and
+ use = host
+ or
+ exists(Node mid | typeMemberHostReaches(host, mid) |
+ TypeFlow::step(mid, use)
+ or
+ UnderlyingTypes::underlyingTypeStep(mid, use)
+ )
+ }
+
+ /**
+ * Holds if there is a read from from `object` to `member` that reads `contents`.
+ */
+ private predicate valueReadStep(Node object, DataFlow::ContentSet contents, Node member) {
+ member.(PropAccess).accesses(object, contents.asPropertyName())
+ or
+ object.(ObjectPattern).getPropertyPatternByName(contents.asPropertyName()).getValuePattern() =
+ member
+ or
+ member.(AwaitExpr).getOperand() = object and
+ contents = DataFlow::ContentSet::promiseValue()
+ or
+ SummaryTypeTracker::basicLoadStep(object.(AST::ValueNode).flow(),
+ member.(AST::ValueNode).flow(), contents)
+ }
+
+ predicate callTarget(InvokeExpr call, Function target) {
+ exists(ClassDefinition cls |
+ valueHasType(call.(NewExpr).getCallee(), trackClassValue(cls)) and
+ target = cls.getConstructor().getBody()
+ )
+ or
+ valueHasType(call.getCallee(), trackFunctionValue(target))
+ or
+ valueHasType(call.getCallee(), trackUnderlyingFunctionType(target)) and
+ (
+ call instanceof NewExpr and
+ target = any(ConstructorTypeExpr t).getFunction()
+ or
+ call instanceof CallExpr and
+ target = any(PlainFunctionTypeExpr t).getFunction()
+ )
+ or
+ exists(InterfaceDefinition interface, CallSignature sig |
+ valueHasType(call.getCallee(), trackType(interface)) and
+ sig = interface.getACallSignature() and
+ target = sig.getBody()
+ |
+ call instanceof NewExpr and
+ sig instanceof ConstructorCallSignature
+ or
+ call instanceof CallExpr and
+ sig instanceof FunctionCallSignature
+ )
+ }
+
+ private predicate functionReturnType(Function func, Node returnType) {
+ returnType = func.getReturnTypeAnnotation()
+ or
+ not exists(func.getReturnTypeAnnotation()) and
+ exists(Function functionType |
+ contextualType(func, trackUnderlyingFunctionType(functionType)) and
+ returnType = functionType.getReturnTypeAnnotation()
+ )
+ }
+
+ bindingset[name]
+ private predicate isPromiseTypeName(string name) {
+ name.regexpMatch(".?(Promise|Thenable)(Like)?")
+ }
+
+ private Node unwrapPromiseType(Node promiseType) {
+ exists(GenericTypeExpr type |
+ promiseType = type and
+ isPromiseTypeName(type.getTypeAccess().(LocalTypeAccess).getName()) and
+ result = type.getTypeArgument(0)
+ )
+ or
+ exists(JSDocAppliedTypeExpr type |
+ promiseType = type and
+ isPromiseTypeName(type.getHead().(JSDocLocalTypeAccess).getName()) and
+ result = type.getArgument(0)
+ )
+ }
+
+ predicate contextualType(Node value, Node type) {
+ exists(LocalVariableLike v |
+ type = v.getADeclaration().getTypeAnnotation() and
+ value = v.getAnAssignedExpr()
+ )
+ or
+ exists(InvokeExpr call, Function target, int i |
+ callTarget(call, target) and
+ value = call.getArgument(i) and
+ type = target.getParameter(i).getTypeAnnotation()
+ )
+ or
+ exists(Function lambda, Node returnType |
+ value = lambda.getAReturnedExpr() and
+ functionReturnType(lambda, returnType)
+ |
+ not lambda.isAsyncOrGenerator() and
+ type = returnType
+ or
+ lambda.isAsync() and
+ type = unwrapPromiseType(returnType)
+ )
+ or
+ exists(ObjectExpr object, Node objectType, Node host, string name |
+ contextualType(object, objectType) and
+ typeMemberHostReaches(host, objectType) and
+ typeMember(host, any(DataFlow::Content c | c.asPropertyName() = name), type) and
+ value = object.getPropertyByName(name).getInit()
+ )
+ or
+ exists(ArrayExpr array, Node arrayType, Node host |
+ contextualType(array, arrayType) and
+ typeMemberHostReaches(host, arrayType) and
+ typeMember(host, any(DataFlow::Content c | c.isUnknownArrayElement()), type) and
+ value = array.getAnElement()
+ )
+ }
+
+ /**
+ * Holds if `value` has the given `type`.
+ */
+ predicate valueHasType(Node value, Node type) {
+ value.(BindingPattern).getTypeAnnotation() = type
+ or
+ value.(TypeAssertion).getTypeAnnotation() = type
+ or
+ value.(SatisfiesExpr).getTypeAnnotation() = type
+ or
+ exists(VarDecl decl |
+ // ValueFlow::step is restricted to variables with at most one assignment. Allow the type annotation
+ // of a variable to propagate to its uses, even if the variable has multiple assignments.
+ type = decl.getTypeAnnotation() and
+ value = decl.getVariable().(LocalVariableLike).getAnAccess()
+ )
+ or
+ exists(MemberDeclaration member |
+ value.(ThisExpr).getBindingContainer() = member.getInit() and
+ type = getMemberBase(member)
+ )
+ or
+ exists(ClassDefinition cls |
+ value = cls and
+ type = cls.getVariable()
+ )
+ or
+ exists(FunctionDeclStmt fun |
+ value = fun and
+ type = fun.getVariable()
+ )
+ or
+ exists(Function target | callTarget(value, target) |
+ type = target.getReturnTypeAnnotation()
+ or
+ exists(ClassDefinition cls |
+ target = cls.getConstructor().getBody() and
+ type = cls
+ )
+ )
+ or
+ // Contextual typing for parameters
+ exists(Function lambda, Function functionType, int i |
+ contextualType(lambda, trackUnderlyingFunctionType(functionType))
+ or
+ exists(InterfaceDefinition interface |
+ contextualType(lambda, trackType(interface)) and
+ functionType = interface.getACallSignature().getBody()
+ )
+ |
+ value = lambda.getParameter(i) and
+ not exists(value.(Parameter).getTypeAnnotation()) and
+ type = functionType.getParameter(i).getTypeAnnotation()
+ )
+ or
+ exists(Node mid | valueHasType(mid, type) | ValueFlow::step(mid, value))
+ or
+ exists(Node mid, Node midType, DataFlow::ContentSet contents, Node host |
+ valueReadStep(mid, contents, value) and
+ valueHasType(mid, midType) and
+ typeMemberHostReaches(host, midType) and
+ typeMember(host, contents.getAReadContent(), type)
+ )
+ }
+
+ signature predicate nodeSig(Node node);
+
+ /**
+ * Tracks types that have a certain property, in the sense that:
+ * - an intersection type has the property if any member has the property
+ * - a union type has the property if all its members have the property
+ */
+ module TrackMustProp {
+ predicate hasProperty(Node node) {
+ directlyHasProperty(node)
+ or
+ exists(Node mid |
+ hasProperty(mid) and
+ TypeFlow::step(mid, node)
+ )
+ or
+ unionHasProp(node)
+ or
+ hasProperty(node.(IntersectionTypeExpr).getAnElementType())
+ or
+ exists(ConditionalTypeExpr cond |
+ node = cond and
+ hasProperty(cond.getTrueType()) and
+ hasProperty(cond.getFalseType())
+ )
+ }
+
+ private predicate unionHasProp(UnionTypeExpr node, int n) {
+ hasProperty(node.getElementType(0)) and n = 1
+ or
+ unionHasProp(node, n - 1) and
+ hasProperty(node.getElementType(n - 1))
+ }
+
+ private predicate unionHasProp(UnionTypeExpr node) {
+ unionHasProp(node, node.getNumElementType())
+ }
+ }
+
+ module ValueHasProperty {
+ predicate valueHasProperty(Node value) {
+ exists(Node type |
+ valueHasType(value, type) and
+ typeHasProperty(type)
+ )
+ }
+ }
+
+ private predicate isSanitizingPrimitiveTypeBase(Node node) {
+ node.(TypeExpr).isNumbery()
+ or
+ node.(TypeExpr).isBooleany()
+ or
+ node.(TypeExpr).isNull()
+ or
+ node.(TypeExpr).isUndefined()
+ or
+ node.(TypeExpr).isVoid()
+ or
+ node.(TypeExpr).isNever()
+ or
+ node.(TypeExpr).isBigInt()
+ or
+ node.(TypeExpr).isSymbol()
+ or
+ node instanceof LiteralTypeExpr
+ or
+ node = any(EnumMember m).getIdentifier() // enum members are constant
+ or
+ node instanceof EnumDeclaration // enums are unions of constants
+ }
+
+ /**
+ * Holds if `node` refers to a type that is considered untaintable (if actually enforced at runtime).
+ *
+ * Specifically, the types `number`, `boolean`, `null`, `undefined`, `void`, `never`, as well as literal types (`"foo"`)
+ * and enums and enum members have this property.
+ */
+ predicate isSanitizingPrimitiveType =
+ TrackMustProp::hasProperty/1;
+
+ /**
+ * Holds if `value` has a type that is considered untaintable (if actually enforced at runtime).
+ *
+ * See `isSanitizingPrimitiveType`.
+ */
+ predicate valueHasSanitizingPrimitiveType =
+ ValueHasProperty::valueHasProperty/1;
+
+ private predicate isPromiseBase(Node node) { exists(unwrapPromiseType(node)) }
+
+ /**
+ * Holds if the given type is a Promise object. Does not hold for unions unless all parts of the union are promises.
+ */
+ predicate isPromiseType = TrackMustProp::hasProperty/1;
+
+ /**
+ * Holds if the given value has a type that implied it is a Promise object. Does not hold for unions unless all parts of the union are promises.
+ */
+ predicate valueHasPromiseType = ValueHasProperty::valueHasProperty/1;
+
+ /**
+ * Holds if `type` contains `string` or `any`, possibly wrapped in a promise.
+ */
+ predicate hasUnderlyingStringOrAnyType(Node type) {
+ type.(TypeAnnotation).isStringy()
+ or
+ type.(TypeAnnotation).isAny()
+ or
+ type instanceof StringLiteralTypeExpr
+ or
+ type instanceof TemplateLiteralTypeExpr
+ or
+ exists(Node mid | hasUnderlyingStringOrAnyType(mid) |
+ TypeFlow::step(mid, type)
+ or
+ UnderlyingTypes::underlyingTypeStep(mid, type)
+ or
+ type = unwrapPromiseType(mid)
+ )
+ }
+}
diff --git a/javascript/ql/lib/semmle/javascript/internal/UnderlyingTypes.qll b/javascript/ql/lib/semmle/javascript/internal/UnderlyingTypes.qll
new file mode 100644
index 000000000000..8f6628278c4f
--- /dev/null
+++ b/javascript/ql/lib/semmle/javascript/internal/UnderlyingTypes.qll
@@ -0,0 +1,128 @@
+/**
+ * Provides name resolution and propagates type information.
+ */
+
+private import javascript
+private import semmle.javascript.internal.NameResolution::NameResolution
+
+/**
+ * Provides name resolution and propagates type information.
+ */
+module UnderlyingTypes {
+ private predicate subtypeStep(Node node1, Node node2) {
+ exists(ClassOrInterface cls |
+ (
+ node1 = cls.getSuperClass() or
+ node1 = cls.getASuperInterface()
+ ) and
+ node2 = cls
+ )
+ }
+
+ predicate underlyingTypeStep(Node node1, Node node2) {
+ exists(UnionOrIntersectionTypeExpr type |
+ node1 = type.getAnElementType() and
+ node2 = type
+ )
+ or
+ exists(ReadonlyTypeExpr type |
+ node1 = type.getElementType() and
+ node2 = type
+ )
+ or
+ exists(OptionalTypeExpr type |
+ node1 = type.getElementType() and
+ node2 = type
+ )
+ or
+ exists(GenericTypeExpr type |
+ node1 = type.getTypeAccess() and
+ node2 = type
+ )
+ or
+ exists(ExpressionWithTypeArguments e |
+ node1 = e.getExpression() and
+ node2 = e
+ )
+ or
+ exists(JSDocUnionTypeExpr type |
+ node1 = type.getAnAlternative() and
+ node2 = type
+ )
+ or
+ exists(JSDocNonNullableTypeExpr type |
+ node1 = type.getTypeExpr() and
+ node2 = type
+ )
+ or
+ exists(JSDocNullableTypeExpr type |
+ node1 = type.getTypeExpr() and
+ node2 = type
+ )
+ or
+ exists(JSDocAppliedTypeExpr type |
+ node1 = type.getHead() and
+ node2 = type
+ )
+ or
+ exists(JSDocOptionalParameterTypeExpr type |
+ node1 = type.getUnderlyingType() and
+ node2 = type
+ )
+ }
+
+ predicate nodeHasUnderlyingType(Node node, string mod, string name) {
+ nodeRefersToModule(node, mod, name)
+ or
+ exists(JSDocLocalTypeAccess type |
+ node = type and
+ not exists(type.getALexicalName()) and
+ not type = any(JSDocQualifiedTypeAccess t).getBase() and
+ name = type.getName() and
+ mod = "global"
+ )
+ or
+ exists(LocalTypeAccess type |
+ node = type and
+ not exists(type.getLocalTypeName()) and
+ name = type.getName() and
+ mod = "global"
+ )
+ or
+ exists(Node mid | nodeHasUnderlyingType(mid, mod, name) |
+ TypeFlow::step(mid, node)
+ or
+ underlyingTypeStep(mid, node)
+ or
+ subtypeStep(mid, node)
+ )
+ }
+
+ pragma[nomagic]
+ predicate nodeHasUnderlyingType(Node node, string name) {
+ nodeHasUnderlyingType(node, "global", name)
+ }
+
+ predicate nodeHasUnderlyingClassType(Node node, DataFlow::ClassNode cls) {
+ node = cls.getAstNode()
+ or
+ exists(string name |
+ classHasGlobalName(cls, name) and
+ nodeHasUnderlyingType(node, name)
+ )
+ or
+ exists(Node mid | nodeHasUnderlyingClassType(mid, cls) |
+ TypeFlow::step(mid, node)
+ or
+ underlyingTypeStep(mid, node)
+ // Note: unlike for external types, we do not use subtype steps here.
+ // The caller is responsible for handling the class hierarchy.
+ )
+ }
+
+ pragma[nomagic]
+ private predicate classHasGlobalName(DataFlow::ClassNode cls, string name) {
+ cls.flowsTo(AccessPath::getAnAssignmentTo(name)) and
+ not cls.getTopLevel().isExterns() // don't propagate externs classes
+ }
+}
diff --git a/javascript/ql/src/Declarations/SuspiciousMethodNameDeclaration.qhelp b/javascript/ql/src/Declarations/SuspiciousMethodNameDeclaration.qhelp
index e59f290ae6df..652d8b544d0f 100644
--- a/javascript/ql/src/Declarations/SuspiciousMethodNameDeclaration.qhelp
+++ b/javascript/ql/src/Declarations/SuspiciousMethodNameDeclaration.qhelp
@@ -4,50 +4,73 @@
-In TypeScript the keywords constructor
and new
for
-member declarations are used to declare constructors in classes and interfaces
-respectively.
-However, a member declaration with the name new
in an interface
-or constructor
in a class, will declare an ordinary method named
-new
or constructor
rather than a constructor.
-Similarly, the keyword function
is used to declare functions in
-some contexts. However, using the name function
for a class
-or interface member declaration declares a method named function
.
+In TypeScript, certain keywords have special meanings for member declarations, and misusing them can create confusion:
+
+
+
+In classes, use constructor
rather than new
to declare constructors. Using new
within a class creates a method named "new" and not a constructor signature.
+In interfaces, use new
rather than constructor
to declare constructor signatures. Using constructor
within an interface creates a method named "constructor" and not a constructor signature.
+Similarly, the keyword function
is used to declare functions in some contexts. However, using the name function
for a class or interface member declaration declares a method named "function".
+
+
+
+When these keywords are misused, TypeScript will interpret them as regular method names rather than their intended special syntax, leading to code that may not work as expected.
-Declare classes as classes and not as interfaces.
-Use the keyword constructor
to declare constructors in a class,
-use the keyword new
to declare constructors inside interfaces,
-and don't use function
when declaring a call signature in an
-interface.
+Consider following these guidelines for clearer code:
+
+For classes, use constructor
to declare constructors.
+For interfaces, use new
to declare constructor signatures (call signatures that create new instances).
+Avoid accidentally creating methods named function
by misusing the function
keyword within class or interface declarations.
+
+
-The below example declares an interface Point
with 2 fields
-and a method called constructor
. The interface does not declare
-a class Point
with a constructor, which was likely what the
-developer meant to create.
+The following examples show common mistakes when using these keywords:
-
-The below example is a fixed version of the above, where the interface is
-instead declared as a class, thereby describing the type the developer meant
-in the first place.
+This interface mistakenly uses constructor
, which creates a method named "constructor" instead of a constructor signature:
+
+
+Use new
for constructor signatures in interfaces:
+
+
+This class mistakenly uses new
, which creates a method named "new" instead of a constructor:
+
+
+
+
+Use constructor
for constructors in classes:
+
+
+
+
+This interface uses function
as a method name, which declares a method named "function" rather than declaring a function:
+
+
+
+
+Use a descriptive method name instead:
+
+
+
+TypeScript Handbook: Classes - Constructors .
TypeScript specification: Constructor Type Literals .
TypeScript specification: Constructor Parameters .
diff --git a/javascript/ql/src/Declarations/SuspiciousMethodNameDeclaration.ql b/javascript/ql/src/Declarations/SuspiciousMethodNameDeclaration.ql
index c185e5c4d04e..fafa234f5f78 100644
--- a/javascript/ql/src/Declarations/SuspiciousMethodNameDeclaration.ql
+++ b/javascript/ql/src/Declarations/SuspiciousMethodNameDeclaration.ql
@@ -6,7 +6,9 @@
* @problem.severity warning
* @id js/suspicious-method-name-declaration
* @precision high
- * @tags correctness
+ * @tags quality
+ * reliability
+ * correctness
* typescript
* methods
*/
diff --git a/javascript/ql/src/Declarations/examples/SuspiciousMethodNameDeclaration.ts b/javascript/ql/src/Declarations/examples/SuspiciousMethodNameDeclaration.ts
index b7b925aa15a9..6558267cef4b 100644
--- a/javascript/ql/src/Declarations/examples/SuspiciousMethodNameDeclaration.ts
+++ b/javascript/ql/src/Declarations/examples/SuspiciousMethodNameDeclaration.ts
@@ -1,6 +1,6 @@
-declare class Point {
+// BAD: Using 'constructor' in an interface creates a method, not a constructor signature
+interface Point {
x: number;
y: number;
- constructor(x : number, y: number);
+ constructor(x: number, y: number); // This is just a method named "constructor"
}
-
diff --git a/javascript/ql/src/Declarations/examples/SuspiciousMethodNameDeclarationClass.ts b/javascript/ql/src/Declarations/examples/SuspiciousMethodNameDeclarationClass.ts
new file mode 100644
index 000000000000..2a078c8b468b
--- /dev/null
+++ b/javascript/ql/src/Declarations/examples/SuspiciousMethodNameDeclarationClass.ts
@@ -0,0 +1,6 @@
+// BAD: Using 'new' in a class creates a method, not a constructor
+class Point {
+ x: number;
+ y: number;
+ new(x: number, y: number) {}; // This is just a method named "new"
+}
diff --git a/javascript/ql/src/Declarations/examples/SuspiciousMethodNameDeclarationClassFixed.ts b/javascript/ql/src/Declarations/examples/SuspiciousMethodNameDeclarationClassFixed.ts
new file mode 100644
index 000000000000..0e072a4e0316
--- /dev/null
+++ b/javascript/ql/src/Declarations/examples/SuspiciousMethodNameDeclarationClassFixed.ts
@@ -0,0 +1,9 @@
+// GOOD: Using 'constructor' for constructors in classes
+class Point {
+ x: number;
+ y: number;
+ constructor(x: number, y: number) { // This is a proper constructor
+ this.x = x;
+ this.y = y;
+ }
+}
diff --git a/javascript/ql/src/Declarations/examples/SuspiciousMethodNameDeclarationFixed.ts b/javascript/ql/src/Declarations/examples/SuspiciousMethodNameDeclarationFixed.ts
index 850038f4dbfe..d5dacdbb9515 100644
--- a/javascript/ql/src/Declarations/examples/SuspiciousMethodNameDeclarationFixed.ts
+++ b/javascript/ql/src/Declarations/examples/SuspiciousMethodNameDeclarationFixed.ts
@@ -1,4 +1,6 @@
+// GOOD: Using 'new' for constructor signatures in interfaces
interface Point {
x: number;
y: number;
+ new(x: number, y: number): Point; // This is a proper constructor signature
}
diff --git a/javascript/ql/src/Declarations/examples/SuspiciousMethodNameDeclarationFunction.ts b/javascript/ql/src/Declarations/examples/SuspiciousMethodNameDeclarationFunction.ts
new file mode 100644
index 000000000000..37749d4ff85b
--- /dev/null
+++ b/javascript/ql/src/Declarations/examples/SuspiciousMethodNameDeclarationFunction.ts
@@ -0,0 +1,4 @@
+// BAD: Using 'function' as a method name is confusing
+interface Calculator {
+ function(a: number, b: number): number; // This is just a method named "function"
+}
diff --git a/javascript/ql/src/Declarations/examples/SuspiciousMethodNameDeclarationFunctionFixed.ts b/javascript/ql/src/Declarations/examples/SuspiciousMethodNameDeclarationFunctionFixed.ts
new file mode 100644
index 000000000000..a5b3b747faa4
--- /dev/null
+++ b/javascript/ql/src/Declarations/examples/SuspiciousMethodNameDeclarationFunctionFixed.ts
@@ -0,0 +1,4 @@
+// GOOD: Using descriptive method names instead of 'function'
+interface Calculator {
+ calculate(a: number, b: number): number; // Clear, descriptive method name
+}
diff --git a/javascript/ql/src/Expressions/MissingAwait.ql b/javascript/ql/src/Expressions/MissingAwait.ql
index d97c006a7bd1..a16d31ee2a57 100644
--- a/javascript/ql/src/Expressions/MissingAwait.ql
+++ b/javascript/ql/src/Expressions/MissingAwait.ql
@@ -10,6 +10,7 @@
*/
import javascript
+private import semmle.javascript.internal.TypeResolution
/**
* Holds if `call` is a call to an `async` function.
@@ -28,7 +29,7 @@ predicate isPromise(DataFlow::SourceNode node, boolean nullable) {
isAsyncCall(node, nullable)
or
not isAsyncCall(node, _) and
- node.asExpr().getType() instanceof PromiseType and
+ TypeResolution::valueHasPromiseType(node.asExpr()) and
nullable = true
}
diff --git a/javascript/ql/src/LanguageFeatures/TemplateSyntaxInStringLiteral.ql b/javascript/ql/src/LanguageFeatures/TemplateSyntaxInStringLiteral.ql
index f22b97795607..f6824cfd9587 100644
--- a/javascript/ql/src/LanguageFeatures/TemplateSyntaxInStringLiteral.ql
+++ b/javascript/ql/src/LanguageFeatures/TemplateSyntaxInStringLiteral.ql
@@ -5,7 +5,10 @@
* @problem.severity warning
* @id js/template-syntax-in-string-literal
* @precision high
- * @tags correctness
+ * @tags quality
+ * reliability
+ * correctness
+ * language-features
*/
import javascript
@@ -74,8 +77,8 @@ class CandidateStringLiteral extends StringLiteral {
*/
predicate hasObjectProvidingTemplateVariables(CandidateStringLiteral lit) {
exists(DataFlow::CallNode call, DataFlow::ObjectLiteralNode obj |
- call.getAnArgument().getALocalSource() = obj and
- call.getAnArgument().asExpr() = lit and
+ call.getAnArgument() = [lit.flow(), StringConcatenation::getRoot(lit.flow())] and
+ obj.flowsTo(call.getAnArgument()) and
forex(string name | name = lit.getAReferencedVariable() | exists(obj.getAPropertyWrite(name)))
)
}
@@ -91,12 +94,38 @@ VarDecl getDeclIn(Variable v, Scope scope, string name, CandidateTopLevel tl) {
result.getTopLevel() = tl
}
+/**
+ * Tracks data flow from a string literal that may flow to a replace operation.
+ */
+DataFlow::SourceNode trackStringWithTemplateSyntax(
+ CandidateStringLiteral lit, DataFlow::TypeTracker t
+) {
+ t.start() and result = lit.flow() and exists(lit.getAReferencedVariable())
+ or
+ exists(DataFlow::TypeTracker t2 | result = trackStringWithTemplateSyntax(lit, t2).track(t2, t))
+}
+
+/**
+ * Gets a string literal that flows to a replace operation.
+ */
+DataFlow::SourceNode trackStringWithTemplateSyntax(CandidateStringLiteral lit) {
+ result = trackStringWithTemplateSyntax(lit, DataFlow::TypeTracker::end())
+}
+
+/**
+ * Holds if the string literal flows to a replace method call.
+ */
+predicate hasReplaceMethodCall(CandidateStringLiteral lit) {
+ trackStringWithTemplateSyntax(lit).getAMethodCall() instanceof StringReplaceCall
+}
+
from CandidateStringLiteral lit, Variable v, Scope s, string name, VarDecl decl
where
decl = getDeclIn(v, s, name, lit.getTopLevel()) and
lit.getAReferencedVariable() = name and
lit.isInScope(s) and
not hasObjectProvidingTemplateVariables(lit) and
- not lit.getStringValue() = "${" + name + "}"
+ not lit.getStringValue() = "${" + name + "}" and
+ not hasReplaceMethodCall(lit)
select lit, "This string is not a template literal, but appears to reference the variable $@.",
decl, v.getName()
diff --git a/javascript/ql/src/RegExp/DuplicateCharacterInCharacterClass.qhelp b/javascript/ql/src/RegExp/DuplicateCharacterInCharacterClass.qhelp
index 30ef990ec0cd..f94cced3d09a 100644
--- a/javascript/ql/src/RegExp/DuplicateCharacterInCharacterClass.qhelp
+++ b/javascript/ql/src/RegExp/DuplicateCharacterInCharacterClass.qhelp
@@ -5,26 +5,42 @@
-Character classes in regular expressions represent sets of characters, so there is no need to specify
-the same character twice in one character class. Duplicate characters in character classes are at best
-useless, and may even indicate a latent bug.
+Character classes in regular expressions (denoted by square brackets []
) represent sets of characters where the pattern matches any single character from that set. Since character classes are sets, specifying the same character multiple times is redundant and often indicates a programming error.
+
+Common mistakes include:
+
+
+Using square brackets []
instead of parentheses ()
for grouping alternatives
+Misunderstanding that special regex characters like |
, *
, +
, ()
, and -
work differently when appearing inside a character class
+Accidentally duplicating characters or escape sequences that represent the same character
+
+
-If the character was accidentally duplicated, remove it. If the character class was meant to be a
-group, replace the brackets with parentheses.
+
+Examine each duplicate character to determine the intended behavior:
+
+
+If you see |
inside square brackets (e.g., [a|b|c]
): This is usually a mistake. The author likely intended alternation. Replace the character class with a group: (a|b|c)
+If trying to match alternative strings, use parentheses ()
for grouping instead of square brackets
+If the duplicate was truly accidental, remove the redundant characters
+If trying to use special regex operators inside square brackets, note that most operators (like |
) are treated as literal characters
+
+
+Note that simply removing |
characters from character classes is rarely the correct fix. Instead, analyze the pattern to understand what the author intended to match.
+
-In the following example, the character class [password|pwd]
contains two instances each
-of the characters d
, p
, s
, and w
. The programmer
-most likely meant to write (password|pwd)
(a pattern that matches either the string
-"password"
or the string "pwd"
), and accidentally mistyped the enclosing
-brackets.
+Example 1: Confusing character classes with groups
+
+
+The pattern [password|pwd]
does not match "password" or "pwd" as intended. Instead, it matches any single character from the set {p, a, s, w, o, r, d, |}
. Note that |
has no special meaning inside character classes.
@@ -33,10 +49,23 @@ brackets.
To fix this problem, the regular expression should be rewritten to /(password|pwd) =/
.
+
+Example 2: CSS unit matching
+
+
+The pattern r?e[m|x]
appears to be trying to match "rem" or "rex", but actually matches "re" followed by any of the characters {m, |, x}
. The correct pattern should be r?e(m|x)
or r?e[mx]
.
+
+
+
+Similarly, v[h|w|min|max]
should be v(h|w|min|max)
to properly match "vh", "vw", "vmin", or "vmax".
+
+
Mozilla Developer Network: JavaScript Regular Expressions .
+MDN: Character Classes - Details on how character classes work.
+MDN: Groups and Ranges - Proper use of grouping with parentheses.
diff --git a/javascript/ql/src/RegExp/DuplicateCharacterInCharacterClass.ql b/javascript/ql/src/RegExp/DuplicateCharacterInCharacterClass.ql
index 06b6d218acab..00366590fcb5 100644
--- a/javascript/ql/src/RegExp/DuplicateCharacterInCharacterClass.ql
+++ b/javascript/ql/src/RegExp/DuplicateCharacterInCharacterClass.ql
@@ -5,7 +5,8 @@
* @kind problem
* @problem.severity warning
* @id js/regex/duplicate-in-character-class
- * @tags reliability
+ * @tags quality
+ * reliability
* correctness
* regular-expressions
* @precision very-high
diff --git a/javascript/ql/src/change-notes/2025-05-30-dom-property-access.md b/javascript/ql/src/change-notes/2025-05-30-dom-property-access.md
new file mode 100644
index 000000000000..2dcb16a8327b
--- /dev/null
+++ b/javascript/ql/src/change-notes/2025-05-30-dom-property-access.md
@@ -0,0 +1,4 @@
+---
+category: minorAnalysis
+---
+* The `js/useless-expression` query now correctly flags only the innermost expressions with no effect, avoiding duplicate alerts on compound expressions.
diff --git a/javascript/ql/src/change-notes/2025-06-12-string-interpolation.md b/javascript/ql/src/change-notes/2025-06-12-string-interpolation.md
new file mode 100644
index 000000000000..446ecf0fcb2a
--- /dev/null
+++ b/javascript/ql/src/change-notes/2025-06-12-string-interpolation.md
@@ -0,0 +1,4 @@
+---
+category: minorAnalysis
+---
+* Fixed false positives in the `js/template-syntax-in-string-literal` query where template syntax in string concatenation and "manual string interpolation" patterns were incorrectly flagged.
diff --git a/javascript/ql/src/change-notes/2025-06-12-suspicious-method-name.md b/javascript/ql/src/change-notes/2025-06-12-suspicious-method-name.md
new file mode 100644
index 000000000000..dfee27ffdd33
--- /dev/null
+++ b/javascript/ql/src/change-notes/2025-06-12-suspicious-method-name.md
@@ -0,0 +1,4 @@
+---
+category: queryMetadata
+---
+* Added `reliability` tag to the `js/suspicious-method-name-declaration` query.
diff --git a/javascript/ql/src/change-notes/2025-06-12-template-syntax-metadata.md b/javascript/ql/src/change-notes/2025-06-12-template-syntax-metadata.md
new file mode 100644
index 000000000000..f29f602095d9
--- /dev/null
+++ b/javascript/ql/src/change-notes/2025-06-12-template-syntax-metadata.md
@@ -0,0 +1,4 @@
+---
+category: queryMetadata
+---
+* Added `reliability` and `language-features` tags to the `js/template-syntax-in-string-literal` query.
diff --git a/javascript/ql/src/meta/alerts/CallGraph.ql b/javascript/ql/src/meta/alerts/CallGraph.ql
index 364d81e32c90..c721e72f6404 100644
--- a/javascript/ql/src/meta/alerts/CallGraph.ql
+++ b/javascript/ql/src/meta/alerts/CallGraph.ql
@@ -12,7 +12,10 @@ import javascript
from DataFlow::Node invoke, Function f, string kind
where
- invoke.(DataFlow::InvokeNode).getACallee() = f and kind = "Call"
- or
- invoke.(DataFlow::PropRef).getAnAccessorCallee().getFunction() = f and kind = "Accessor call"
+ (
+ invoke.(DataFlow::InvokeNode).getACallee() = f and kind = "Call"
+ or
+ invoke.(DataFlow::PropRef).getAnAccessorCallee().getFunction() = f and kind = "Accessor call"
+ ) and
+ not f.getTopLevel().isExterns()
select invoke, kind + " to $@", f, f.describe()
diff --git a/javascript/ql/src/meta/types/TypesWithQualifiedName.ql b/javascript/ql/src/meta/types/TypesWithQualifiedName.ql
deleted file mode 100644
index db23d2a807ef..000000000000
--- a/javascript/ql/src/meta/types/TypesWithQualifiedName.ql
+++ /dev/null
@@ -1,14 +0,0 @@
-/**
- * @name Types with qualified name
- * @description The number of type annotations with a qualified name
- * @kind metric
- * @metricType project
- * @metricAggregate sum
- * @tags meta
- * @id js/meta/types-with-qualified-name
- */
-
-import javascript
-import meta.MetaMetrics
-
-select projectRoot(), count(TypeAnnotation t | t.hasQualifiedName(_) or t.hasQualifiedName(_, _))
diff --git a/javascript/ql/src/qlpack.yml b/javascript/ql/src/qlpack.yml
index 6fff98f1f34d..0bfacd0c21e3 100644
--- a/javascript/ql/src/qlpack.yml
+++ b/javascript/ql/src/qlpack.yml
@@ -1,5 +1,5 @@
name: codeql/javascript-queries
-version: 1.6.2
+version: 1.6.3-dev
groups:
- javascript
- queries
diff --git a/javascript/ql/test/library-tests/CallGraphs/AnnotatedTest/types.ts b/javascript/ql/test/library-tests/CallGraphs/AnnotatedTest/types.ts
new file mode 100644
index 000000000000..6dd94bcf1952
--- /dev/null
+++ b/javascript/ql/test/library-tests/CallGraphs/AnnotatedTest/types.ts
@@ -0,0 +1,27 @@
+namespace NS {
+ export class C {
+ /** name:NS.C.m */
+ m() { }
+ }
+
+ export class D extends C { }
+}
+
+function t1(c: NS.C, d: NS.D) {
+ /** calls:NS.C.m */
+ c.m();
+
+ /** calls:NS.C.m */
+ d.m();
+}
+
+async function t2(cp: Promise) {
+ const c = await cp;
+ /** calls:NS.C.m */
+ c.m();
+
+ cp.then(c2 => {
+ /** calls:NS.C.m */
+ c2.m();
+ })
+}
diff --git a/javascript/ql/test/library-tests/DataFlow/tests.expected b/javascript/ql/test/library-tests/DataFlow/tests.expected
index 55c6771eef02..26ba8c46a993 100644
--- a/javascript/ql/test/library-tests/DataFlow/tests.expected
+++ b/javascript/ql/test/library-tests/DataFlow/tests.expected
@@ -1514,6 +1514,7 @@ sources
| tst2.ts:7:1:9:1 | return of function setX |
| tst2.ts:8:3:8:5 | A.x |
| tst2.ts:11:11:11:13 | A.x |
+| tst2.ts:11:11:11:23 | A.x as number |
| tst2.ts:13:1:13:40 | class S ... ing> {} |
| tst2.ts:13:26:13:29 | List |
| tst2.ts:13:39:13:38 | (...arg ... rgs); } |
@@ -1522,6 +1523,7 @@ sources
| tst2.ts:13:39:13:38 | super(...args) |
| tst2.ts:13:39:13:38 | this |
| tst2.ts:15:11:15:13 | A.x |
+| tst2.ts:15:11:15:30 | A.x satisfies number |
| tst.js:1:1:1:0 | this |
| tst.js:1:1:1:24 | import ... m 'fs'; |
| tst.js:1:10:1:11 | fs |
diff --git a/javascript/ql/test/library-tests/JSDoc/NameResolution/test.expected b/javascript/ql/test/library-tests/JSDoc/NameResolution/test.expected
index 97730513195b..7c015994aafe 100644
--- a/javascript/ql/test/library-tests/JSDoc/NameResolution/test.expected
+++ b/javascript/ql/test/library-tests/JSDoc/NameResolution/test.expected
@@ -1,10 +1,10 @@
-| bar.js:5:14:5:14 | x | x |
+| bar.js:5:14:5:14 | x | ns.very.long.namespace |
| bar.js:5:14:5:18 | x.Foo | ns.very.long.namespace.Foo |
-| bar.js:12:14:12:17 | iife | iife |
+| bar.js:12:14:12:17 | iife | IIFE |
| bar.js:12:14:12:21 | iife.Foo | IIFE.Foo |
| closure.js:8:12:8:15 | goog | goog |
| closure.js:8:12:8:19 | goog.net | goog.net |
| closure.js:8:12:8:28 | goog.net.SomeType | goog.net.SomeType |
-| closure.js:9:12:9:14 | net | net |
+| closure.js:9:12:9:14 | net | goog.net |
| closure.js:9:12:9:23 | net.SomeType | goog.net.SomeType |
| closure.js:10:12:10:19 | SomeType | goog.net.SomeType |
diff --git a/javascript/ql/test/library-tests/JSDoc/NameResolution/test.ql b/javascript/ql/test/library-tests/JSDoc/NameResolution/test.ql
index 1b7ebfdd501a..bb1de953169b 100644
--- a/javascript/ql/test/library-tests/JSDoc/NameResolution/test.ql
+++ b/javascript/ql/test/library-tests/JSDoc/NameResolution/test.ql
@@ -1,3 +1,3 @@
import javascript
-query string test_hasQualifiedName(JSDocNamedTypeExpr expr) { expr.hasQualifiedName(result) }
+query string test_hasUnderlyingType(JSDocNamedTypeExpr expr) { expr.hasUnderlyingType(result) }
diff --git a/javascript/ql/test/library-tests/TypeAnnotations/JSDoc/JSDocTypeAnnotations.expected b/javascript/ql/test/library-tests/TypeAnnotations/JSDoc/JSDocTypeAnnotations.expected
index 8ac3eea2be5f..06afe15ee183 100644
--- a/javascript/ql/test/library-tests/TypeAnnotations/JSDoc/JSDocTypeAnnotations.expected
+++ b/javascript/ql/test/library-tests/TypeAnnotations/JSDoc/JSDocTypeAnnotations.expected
@@ -2,13 +2,14 @@ test_isString
| tst.js:2:12:2:17 | string |
test_isNumber
| tst.js:3:12:3:17 | number |
-test_QualifiedName
+test_hasUnderlyingType
| VarType | tst.js:9:13:9:19 | VarType |
| boolean | tst.js:5:14:5:20 | boolean |
| foo | tst.js:4:12:4:14 | foo |
| foo.bar | tst.js:4:12:4:18 | foo.bar |
| foo.bar.baz | tst.js:4:12:4:22 | foo.bar.baz |
| number | tst.js:3:12:3:17 | number |
+| number | tst.js:3:12:3:18 | number? |
| string | tst.js:2:12:2:17 | string |
test_ParameterType
| tst.js:7:12:7:12 | x | tst.js:2:12:2:17 | string |
diff --git a/javascript/ql/test/library-tests/TypeAnnotations/JSDoc/JSDocTypeAnnotations.ql b/javascript/ql/test/library-tests/TypeAnnotations/JSDoc/JSDocTypeAnnotations.ql
index 829435e3220c..fd223ee5a533 100644
--- a/javascript/ql/test/library-tests/TypeAnnotations/JSDoc/JSDocTypeAnnotations.ql
+++ b/javascript/ql/test/library-tests/TypeAnnotations/JSDoc/JSDocTypeAnnotations.ql
@@ -4,7 +4,7 @@ query TypeAnnotation test_isString() { result.isString() }
query TypeAnnotation test_isNumber() { result.isNumber() }
-query TypeAnnotation test_QualifiedName(string name) { result.hasQualifiedName(name) }
+query TypeAnnotation test_hasUnderlyingType(string name) { result.hasUnderlyingType(name) }
query TypeAnnotation test_ParameterType(Parameter p) { result = p.getTypeAnnotation() }
diff --git a/javascript/ql/test/library-tests/TypeAnnotations/TSUnresolvedQualifiedName/QualifiedNames.ql b/javascript/ql/test/library-tests/TypeAnnotations/TSUnresolvedQualifiedName/QualifiedNames.ql
index e9d66a4afe09..b4d324377bef 100644
--- a/javascript/ql/test/library-tests/TypeAnnotations/TSUnresolvedQualifiedName/QualifiedNames.ql
+++ b/javascript/ql/test/library-tests/TypeAnnotations/TSUnresolvedQualifiedName/QualifiedNames.ql
@@ -1,5 +1,5 @@
import javascript
from TypeAnnotation type, string mod, string name
-where type.hasQualifiedName(mod, name)
+where type.hasUnderlyingType(mod, name)
select type, mod, name
diff --git a/javascript/ql/test/library-tests/TypeScript/Ambients/Ambients.expected b/javascript/ql/test/library-tests/TypeScript/Ambients/Ambients.expected
index 7a60484a5f72..63e749e97be8 100644
--- a/javascript/ql/test/library-tests/TypeScript/Ambients/Ambients.expected
+++ b/javascript/ql/test/library-tests/TypeScript/Ambients/Ambients.expected
@@ -1 +1,7 @@
-| tst.ts:38:3:38:19 | resolveAmbient(x) | x should not resolve to a global |
+| tst.ts:22:3:22:18 | resolveGlobal(x) | x should resolve to a global variable |
+| tst.ts:23:3:23:18 | resolveGlobal(y) | y should resolve to a global variable |
+| tst.ts:24:3:24:18 | resolveGlobal(z) | z should resolve to a global variable |
+| tst.ts:25:3:25:18 | resolveGlobal(w) | w should resolve to a global variable |
+| tst.ts:39:3:39:18 | resolveGlobal(y) | y should resolve to a global variable |
+| tst.ts:40:3:40:18 | resolveGlobal(z) | z should resolve to a global variable |
+| tst.ts:41:3:41:18 | resolveGlobal(w) | w should resolve to a global variable |
diff --git a/javascript/ql/test/library-tests/TypeScript/CallResolution/CallTarget.expected b/javascript/ql/test/library-tests/TypeScript/CallResolution/CallTarget.expected
index a91505e3f034..69374cbf4bf8 100644
--- a/javascript/ql/test/library-tests/TypeScript/CallResolution/CallTarget.expected
+++ b/javascript/ql/test/library-tests/TypeScript/CallResolution/CallTarget.expected
@@ -1,16 +1,36 @@
-| tst.ts:52:3:52:23 | obj.sim ... od(str) | TestInterface.simpleMethod in global scope | no concrete target |
-| tst.ts:53:3:53:24 | obj.gen ... od(str) | TestInterface.genericMethod in global scope | no concrete target |
-| tst.ts:54:3:54:24 | obj.gen ... od(num) | TestInterface.genericMethod in global scope | no concrete target |
-| tst.ts:55:3:55:27 | obj.ove ... od(num) | TestInterface.overloadedMethod in global scope | no concrete target |
-| tst.ts:56:3:56:27 | obj.ove ... od(str) | TestInterface.overloadedMethod in global scope | no concrete target |
-| tst.ts:57:3:57:26 | obj.ove ... hod([]) | TestInterface.overloadedMethod in global scope | no concrete target |
-| tst.ts:58:3:58:36 | obj.gen ... ([num]) | TestInterface.genericOverloadedMethod in global scope | no concrete target |
-| tst.ts:59:3:59:39 | obj.gen ... : str}) | TestInterface.genericOverloadedMethod in global scope | no concrete target |
-| tst.ts:60:3:60:34 | obj.gen ... od(num) | TestInterface.genericOverloadedMethod in global scope | no concrete target |
+| tst.ts:52:3:52:23 | obj.sim ... od(str) | TestInterface.simpleMethod in global scope | simpleM ... number; |
+| tst.ts:53:3:53:24 | obj.gen ... od(str) | TestInterface.genericMethod in global scope | generic ... T): T; |
+| tst.ts:54:3:54:24 | obj.gen ... od(num) | TestInterface.genericMethod in global scope | generic ... T): T; |
+| tst.ts:55:3:55:27 | obj.ove ... od(num) | TestInterface.overloadedMethod in global scope | overloa ... ): any; |
+| tst.ts:55:3:55:27 | obj.ove ... od(num) | TestInterface.overloadedMethod in global scope | overloa ... number; |
+| tst.ts:55:3:55:27 | obj.ove ... od(num) | TestInterface.overloadedMethod in global scope | overloa ... string; |
+| tst.ts:56:3:56:27 | obj.ove ... od(str) | TestInterface.overloadedMethod in global scope | overloa ... ): any; |
+| tst.ts:56:3:56:27 | obj.ove ... od(str) | TestInterface.overloadedMethod in global scope | overloa ... number; |
+| tst.ts:56:3:56:27 | obj.ove ... od(str) | TestInterface.overloadedMethod in global scope | overloa ... string; |
+| tst.ts:57:3:57:26 | obj.ove ... hod([]) | TestInterface.overloadedMethod in global scope | overloa ... ): any; |
+| tst.ts:57:3:57:26 | obj.ove ... hod([]) | TestInterface.overloadedMethod in global scope | overloa ... number; |
+| tst.ts:57:3:57:26 | obj.ove ... hod([]) | TestInterface.overloadedMethod in global scope | overloa ... string; |
+| tst.ts:58:3:58:36 | obj.gen ... ([num]) | TestInterface.genericOverloadedMethod in global scope | generic ... ): any; |
+| tst.ts:58:3:58:36 | obj.gen ... ([num]) | TestInterface.genericOverloadedMethod in global scope | generic ... T>): T; |
+| tst.ts:58:3:58:36 | obj.gen ... ([num]) | TestInterface.genericOverloadedMethod in global scope | generic ... []): T; |
+| tst.ts:59:3:59:39 | obj.gen ... : str}) | TestInterface.genericOverloadedMethod in global scope | generic ... ): any; |
+| tst.ts:59:3:59:39 | obj.gen ... : str}) | TestInterface.genericOverloadedMethod in global scope | generic ... T>): T; |
+| tst.ts:59:3:59:39 | obj.gen ... : str}) | TestInterface.genericOverloadedMethod in global scope | generic ... []): T; |
+| tst.ts:60:3:60:34 | obj.gen ... od(num) | TestInterface.genericOverloadedMethod in global scope | generic ... ): any; |
+| tst.ts:60:3:60:34 | obj.gen ... od(num) | TestInterface.genericOverloadedMethod in global scope | generic ... T>): T; |
+| tst.ts:60:3:60:34 | obj.gen ... od(num) | TestInterface.genericOverloadedMethod in global scope | generic ... []): T; |
| tst.ts:64:3:64:23 | obj.sim ... od(str) | TestClass.simpleMethod in global scope | simpleM ... ength } |
| tst.ts:65:3:65:24 | obj.gen ... od(str) | TestClass.genericMethod in global scope | generic ... rn x; } |
| tst.ts:66:3:66:24 | obj.gen ... od(num) | TestClass.genericMethod in global scope | generic ... rn x; } |
+| tst.ts:67:3:67:27 | obj.ove ... od(num) | TestClass.overloadedMethod in global scope | overloa ... number; |
| tst.ts:67:3:67:27 | obj.ove ... od(num) | TestClass.overloadedMethod in global scope | overloa ... rn x; } |
+| tst.ts:67:3:67:27 | obj.ove ... od(num) | TestClass.overloadedMethod in global scope | overloa ... string; |
+| tst.ts:68:3:68:27 | obj.ove ... od(str) | TestClass.overloadedMethod in global scope | overloa ... number; |
| tst.ts:68:3:68:27 | obj.ove ... od(str) | TestClass.overloadedMethod in global scope | overloa ... rn x; } |
+| tst.ts:68:3:68:27 | obj.ove ... od(str) | TestClass.overloadedMethod in global scope | overloa ... string; |
+| tst.ts:69:3:69:36 | obj.gen ... ([num]) | TestClass.genericOverloadedMethod in global scope | generic ... T>): T; |
+| tst.ts:69:3:69:36 | obj.gen ... ([num]) | TestClass.genericOverloadedMethod in global scope | generic ... []): T; |
| tst.ts:69:3:69:36 | obj.gen ... ([num]) | TestClass.genericOverloadedMethod in global scope | generic ... null; } |
+| tst.ts:70:3:70:39 | obj.gen ... : str}) | TestClass.genericOverloadedMethod in global scope | generic ... T>): T; |
+| tst.ts:70:3:70:39 | obj.gen ... : str}) | TestClass.genericOverloadedMethod in global scope | generic ... []): T; |
| tst.ts:70:3:70:39 | obj.gen ... : str}) | TestClass.genericOverloadedMethod in global scope | generic ... null; } |
diff --git a/javascript/ql/test/library-tests/TypeScript/HasQualifiedNameFallback/Test.expected b/javascript/ql/test/library-tests/TypeScript/HasQualifiedNameFallback/Test.expected
index 5ee97e2dfb59..3781aea96e20 100644
--- a/javascript/ql/test/library-tests/TypeScript/HasQualifiedNameFallback/Test.expected
+++ b/javascript/ql/test/library-tests/TypeScript/HasQualifiedNameFallback/Test.expected
@@ -1,13 +1,15 @@
-hasQualifiedNameModule
-| default-import | default | tst.ts:11:9:11:21 | DefaultImport |
+hasUnderlyingTypeModule
+| default-import | | tst.ts:11:9:11:21 | DefaultImport |
+| global | UnresolvedName | tst.ts:12:9:12:22 | UnresolvedName |
+| import-assign | | tst.ts:10:9:10:11 | asn |
| import-assign | Foo | tst.ts:10:9:10:15 | asn.Foo |
| named-import | Name1 | tst.ts:7:9:7:13 | Name1 |
| named-import | Name1 | tst.ts:13:9:13:13 | Name1 |
| named-import | Name1 | tst.ts:13:9:13:21 | Name1 |
| named-import | Name2 | tst.ts:8:9:8:13 | Name2 |
+| namespace-import | | tst.ts:9:9:9:17 | namespace |
| namespace-import | Foo | tst.ts:9:9:9:21 | namespace.Foo |
-| tst.ts | ExportedClass | relative.ts:4:8:4:20 | ExportedClass |
-hasQualifiedNameGlobal
+hasUnderlyingTypeGlobal
| UnresolvedName | tst.ts:12:9:12:22 | UnresolvedName |
paramExample
| tst.ts:7:5:7:6 | x1 |
diff --git a/javascript/ql/test/library-tests/TypeScript/HasQualifiedNameFallback/Test.ql b/javascript/ql/test/library-tests/TypeScript/HasQualifiedNameFallback/Test.ql
index 2b63e171f1e9..199749ed3f60 100644
--- a/javascript/ql/test/library-tests/TypeScript/HasQualifiedNameFallback/Test.ql
+++ b/javascript/ql/test/library-tests/TypeScript/HasQualifiedNameFallback/Test.ql
@@ -1,13 +1,13 @@
import javascript
-query TypeAnnotation hasQualifiedNameModule(string moduleName, string member) {
- result.hasQualifiedName(moduleName, member)
+query TypeAnnotation hasUnderlyingTypeModule(string moduleName, string member) {
+ result.hasUnderlyingType(moduleName, member)
}
-query TypeAnnotation hasQualifiedNameGlobal(string globalName) {
- result.hasQualifiedName(globalName)
+query TypeAnnotation hasUnderlyingTypeGlobal(string globalName) {
+ result.hasUnderlyingType(globalName)
}
query Parameter paramExample() {
- result.getTypeAnnotation().hasQualifiedName("named-import", "Name1")
+ result.getTypeAnnotation().hasUnderlyingType("named-import", "Name1")
}
diff --git a/javascript/ql/test/library-tests/TypeScript/HasUnderlyingType/HasUnderlyingType.expected b/javascript/ql/test/library-tests/TypeScript/HasUnderlyingType/HasUnderlyingType.expected
index a9123b1ef55b..91eb164f394c 100644
--- a/javascript/ql/test/library-tests/TypeScript/HasUnderlyingType/HasUnderlyingType.expected
+++ b/javascript/ql/test/library-tests/TypeScript/HasUnderlyingType/HasUnderlyingType.expected
@@ -5,6 +5,6 @@
| tst.ts:8:14:8:16 | arg | Sub in global scope |
underlyingTypeNode
| foo | | file://:0:0:0:0 | use moduleImport("foo").getMember("exports") |
+| foo | | file://:0:0:0:0 | use moduleImport("foo").getMember("exports").getMember("") |
| foo | | foo.ts:1:8:1:10 | use moduleImport("foo").getMember("exports").getMember("default") |
-| foo | Bar | foo.ts:3:1:5:1 | use moduleImport("foo").getMember("exports").getMember("Bar").getInstance() |
| foo | Bar | foo.ts:3:12:3:12 | use moduleImport("foo").getMember("exports").getMember("Bar").getInstance() |
diff --git a/javascript/ql/test/library-tests/UnderlyingTypes/calls.ts b/javascript/ql/test/library-tests/UnderlyingTypes/calls.ts
new file mode 100644
index 000000000000..68509e4a1c63
--- /dev/null
+++ b/javascript/ql/test/library-tests/UnderlyingTypes/calls.ts
@@ -0,0 +1,32 @@
+import * as express from 'express';
+
+function getRequest(): express.Request { }
+
+function t1() {
+ getRequest(); // $ hasUnderlyingType='express'.Request
+}
+
+declare function getRequestAmbient(): express.Request;
+
+function t2() {
+ getRequestAmbient(); // $ hasUnderlyingType='express'.Request
+}
+
+class C {
+ method(): express.Request { }
+}
+
+function t3(c: C) {
+ c.method(); // $ hasUnderlyingType='express'.Request
+ new C().method(); // $ hasUnderlyingType='express'.Request
+}
+
+function callback(fn: (req: express.Request) => void) { // $ SPURIOUS: hasUnderlyingType='express'.Request // req seems to be a SourceNode
+}
+
+function t4() {
+ callback(function (
+ req // $ hasUnderlyingType='express'.Request
+ ) { }
+ );
+}
diff --git a/javascript/ql/test/library-tests/UnderlyingTypes/closure.es.js b/javascript/ql/test/library-tests/UnderlyingTypes/closure.es.js
new file mode 100644
index 000000000000..cb140ec63c97
--- /dev/null
+++ b/javascript/ql/test/library-tests/UnderlyingTypes/closure.es.js
@@ -0,0 +1,5 @@
+goog.declareModuleId("closure.es")
+
+const Bar = goog.require('closure.reexported.Bar');
+
+export { Bar }
diff --git a/javascript/ql/test/library-tests/UnderlyingTypes/closure.lib.js b/javascript/ql/test/library-tests/UnderlyingTypes/closure.lib.js
new file mode 100644
index 000000000000..ffd67593202c
--- /dev/null
+++ b/javascript/ql/test/library-tests/UnderlyingTypes/closure.lib.js
@@ -0,0 +1,3 @@
+goog.module("closure.lib")
+
+exports.Foo = goog.require('closure.reexported.Foo');
diff --git a/javascript/ql/test/library-tests/UnderlyingTypes/closure.use.js b/javascript/ql/test/library-tests/UnderlyingTypes/closure.use.js
new file mode 100644
index 000000000000..22fc397cf3d0
--- /dev/null
+++ b/javascript/ql/test/library-tests/UnderlyingTypes/closure.use.js
@@ -0,0 +1,16 @@
+goog.module("closure.use")
+
+const lib = goog.require("closure.lib");
+const es = goog.require("closure.es");
+
+/**
+ * @param {lib.Foo} x
+ */
+function t1(x) { // $ hasUnderlyingType=closure.reexported.Foo hasUnderlyingType=closure.lib.Foo
+}
+
+/**
+ * @param {es.Bar} x
+ */
+function t2(x) { // $ hasUnderlyingType=closure.reexported.Bar hasUnderlyingType=closure.es.Bar
+}
diff --git a/javascript/ql/test/library-tests/UnderlyingTypes/contextualTypes.ts b/javascript/ql/test/library-tests/UnderlyingTypes/contextualTypes.ts
new file mode 100644
index 000000000000..cc461c5c7dda
--- /dev/null
+++ b/javascript/ql/test/library-tests/UnderlyingTypes/contextualTypes.ts
@@ -0,0 +1,45 @@
+import * as express from 'express';
+
+interface Options {
+ handle(req: express.Request): void; // $ hasUnderlyingType='express'.Request
+}
+
+declare function doSomething(options: Options);
+
+function t1() {
+ doSomething({
+ handle(req) { // $ hasUnderlyingType='express'.Request
+ }
+ });
+}
+
+function t2(callback: ((opts: Options) => void) | undefined) {
+ callback({
+ handle(req) { } // $ hasUnderlyingType='express'.Request
+ })
+ callback!({
+ handle(req) { } // $ hasUnderlyingType='express'.Request
+ })
+}
+
+function t3(): Options {
+ return {
+ handle(req) { } // $ hasUnderlyingType='express'.Request
+ }
+}
+
+function t4(): Options[] {
+ return [
+ {
+ handle(req) { } // $ hasUnderlyingType='express'.Request
+ }
+ ]
+}
+
+async function t5(): Promise {
+ return {
+ handle(req) { // $ hasUnderlyingType='express'.Request
+
+ }
+ }
+}
diff --git a/javascript/ql/test/library-tests/UnderlyingTypes/expressBulkExport.ts b/javascript/ql/test/library-tests/UnderlyingTypes/expressBulkExport.ts
new file mode 100644
index 000000000000..47ef09acc6e5
--- /dev/null
+++ b/javascript/ql/test/library-tests/UnderlyingTypes/expressBulkExport.ts
@@ -0,0 +1 @@
+export * from 'express';
diff --git a/javascript/ql/test/library-tests/UnderlyingTypes/expressBulkExport.use.ts b/javascript/ql/test/library-tests/UnderlyingTypes/expressBulkExport.use.ts
new file mode 100644
index 000000000000..bb94da47faf9
--- /dev/null
+++ b/javascript/ql/test/library-tests/UnderlyingTypes/expressBulkExport.use.ts
@@ -0,0 +1,7 @@
+import { Request, Response } from './expressBulkExport';
+
+function t1(req: Request) { // $ hasUnderlyingType='express'.Request
+}
+
+function t2(res: Response) { // $ hasUnderlyingType='express'.Response
+}
diff --git a/javascript/ql/test/library-tests/UnderlyingTypes/expressExportAssign.ts b/javascript/ql/test/library-tests/UnderlyingTypes/expressExportAssign.ts
new file mode 100644
index 000000000000..8aa013bcde09
--- /dev/null
+++ b/javascript/ql/test/library-tests/UnderlyingTypes/expressExportAssign.ts
@@ -0,0 +1,2 @@
+import E = require('express');
+export = E;
diff --git a/javascript/ql/test/library-tests/UnderlyingTypes/expressExportAssign.use.ts b/javascript/ql/test/library-tests/UnderlyingTypes/expressExportAssign.use.ts
new file mode 100644
index 000000000000..da65575a443a
--- /dev/null
+++ b/javascript/ql/test/library-tests/UnderlyingTypes/expressExportAssign.use.ts
@@ -0,0 +1,4 @@
+import { Request } from "./expressExportAssign";
+
+function t1(req: Request) { // $ hasUnderlyingType='express'.Request
+}
diff --git a/javascript/ql/test/library-tests/UnderlyingTypes/expressExportAssignWrapper.ts b/javascript/ql/test/library-tests/UnderlyingTypes/expressExportAssignWrapper.ts
new file mode 100644
index 000000000000..23c22e445914
--- /dev/null
+++ b/javascript/ql/test/library-tests/UnderlyingTypes/expressExportAssignWrapper.ts
@@ -0,0 +1,5 @@
+import Express = require('express');
+namespace Wrapper {
+ export import E = Express;
+}
+export = Wrapper;
diff --git a/javascript/ql/test/library-tests/UnderlyingTypes/expressExportAssignWrapper.use.ts b/javascript/ql/test/library-tests/UnderlyingTypes/expressExportAssignWrapper.use.ts
new file mode 100644
index 000000000000..7bcf4b419e95
--- /dev/null
+++ b/javascript/ql/test/library-tests/UnderlyingTypes/expressExportAssignWrapper.use.ts
@@ -0,0 +1,4 @@
+import { E } from "./expressExportAssignWrapper";
+
+function t1(req: E.Request) { // $ hasUnderlyingType='express'.Request
+}
diff --git a/javascript/ql/test/library-tests/UnderlyingTypes/expressSelectiveExport.ts b/javascript/ql/test/library-tests/UnderlyingTypes/expressSelectiveExport.ts
new file mode 100644
index 000000000000..c8aaf3bb9956
--- /dev/null
+++ b/javascript/ql/test/library-tests/UnderlyingTypes/expressSelectiveExport.ts
@@ -0,0 +1,2 @@
+export { Request } from 'express';
+export { Response as R } from 'express';
diff --git a/javascript/ql/test/library-tests/UnderlyingTypes/expressSelectiveExport.use.ts b/javascript/ql/test/library-tests/UnderlyingTypes/expressSelectiveExport.use.ts
new file mode 100644
index 000000000000..41ce42e3b1fa
--- /dev/null
+++ b/javascript/ql/test/library-tests/UnderlyingTypes/expressSelectiveExport.use.ts
@@ -0,0 +1,10 @@
+import { Request, Response, R } from './expressSelectiveExport';
+
+function t1(req: Request) { // $ hasUnderlyingType='express'.Request
+}
+
+function t2(res: Response) { // none, not exported
+}
+
+function t3(res: R) { // $ hasUnderlyingType='express'.Response
+}
diff --git a/javascript/ql/test/library-tests/UnderlyingTypes/expressWrapperExport.ts b/javascript/ql/test/library-tests/UnderlyingTypes/expressWrapperExport.ts
new file mode 100644
index 000000000000..6fae12f06847
--- /dev/null
+++ b/javascript/ql/test/library-tests/UnderlyingTypes/expressWrapperExport.ts
@@ -0,0 +1 @@
+export * as wrapper from 'express';
diff --git a/javascript/ql/test/library-tests/UnderlyingTypes/expressWrapperExport.use.ts b/javascript/ql/test/library-tests/UnderlyingTypes/expressWrapperExport.use.ts
new file mode 100644
index 000000000000..62f7e519ff0e
--- /dev/null
+++ b/javascript/ql/test/library-tests/UnderlyingTypes/expressWrapperExport.use.ts
@@ -0,0 +1,29 @@
+import { Request, Response, wrapper } from './expressWrapperExport';
+import * as w from './expressWrapperExport';
+
+function t1(req: Request) { // none
+}
+
+function t2(res: Response) { // none
+}
+
+function t3(req: wrapper.Request) { // $ hasUnderlyingType='express'.Request
+}
+
+function t4(res: wrapper.Response) { // $ hasUnderlyingType='express'.Response
+}
+
+function t5(req: w.wrapper.Request) { // $ hasUnderlyingType='express'.Request
+}
+
+function t6(res: w.wrapper.Response) { // $ hasUnderlyingType='express'.Response
+}
+
+function t7(req: w.Request) { // none
+}
+
+function t8(res: w.Response) { // none
+}
+
+function t9(e: typeof w.wrapper) { // $ hasUnderlyingType='express'
+}
diff --git a/javascript/ql/test/library-tests/UnderlyingTypes/generics.ts b/javascript/ql/test/library-tests/UnderlyingTypes/generics.ts
new file mode 100644
index 000000000000..26e4499f4da2
--- /dev/null
+++ b/javascript/ql/test/library-tests/UnderlyingTypes/generics.ts
@@ -0,0 +1,46 @@
+import * as express from 'express';
+
+type Box1 = {
+ value: T;
+ other: string;
+};
+function t1(b: Box1) {
+ b.value; // $ MISSING: hasUnderlyingType='express'.Request
+ b.other;
+}
+
+interface Box2 {
+ value: T;
+ other: string;
+}
+function t2(b: Box2) {
+ b.value; // $ MISSING: hasUnderlyingType='express'.Request
+ b.other;
+}
+
+class Box3 {
+ value: T;
+ other: string;
+}
+function t3(b: Box3) {
+ b.value; // $ MISSING: hasUnderlyingType='express'.Request
+ b.other;
+}
+
+abstract class Box4 {
+ abstract getValue(): T;
+ abstract getOther(): string;
+}
+function t4(b: Box4) {
+ b.getValue(); // $ MISSING: hasUnderlyingType='express'.Request
+ b.getOther();
+}
+
+type Box5 = {
+ value: T & { blah: string };
+ other: string;
+};
+function t5(b: Box5) {
+ b.value; // $ MISSING: hasUnderlyingType='express'.Request
+ b.other;
+}
diff --git a/javascript/ql/test/library-tests/UnderlyingTypes/globals.ts b/javascript/ql/test/library-tests/UnderlyingTypes/globals.ts
new file mode 100644
index 000000000000..8fc6546c70f3
--- /dev/null
+++ b/javascript/ql/test/library-tests/UnderlyingTypes/globals.ts
@@ -0,0 +1,10 @@
+function t1(el: HTMLElement) { } // $ hasUnderlyingType=HTMLElement
+
+/**
+ * @param {HTMLInputElement} el
+ */
+function t2(el) { // $ hasUnderlyingType=HTMLInputElement
+}
+
+function t3(req: Express.Request) { // $ hasUnderlyingType=Express.Request
+}
diff --git a/javascript/ql/test/library-tests/UnderlyingTypes/jsdoc.js b/javascript/ql/test/library-tests/UnderlyingTypes/jsdoc.js
new file mode 100644
index 000000000000..662faeb52c9a
--- /dev/null
+++ b/javascript/ql/test/library-tests/UnderlyingTypes/jsdoc.js
@@ -0,0 +1,14 @@
+import * as e from 'express';
+import { Response } from 'express';
+
+/**
+ * @param {e.Request} req
+ */
+function t1(req) { // $ hasUnderlyingType='express'.Request
+}
+
+/**
+ * @param {Response} res
+ */
+function t2(res) { // $ hasUnderlyingType='express'.Response
+}
diff --git a/javascript/ql/test/library-tests/UnderlyingTypes/namedImport.ts b/javascript/ql/test/library-tests/UnderlyingTypes/namedImport.ts
new file mode 100644
index 000000000000..56b1d43d399d
--- /dev/null
+++ b/javascript/ql/test/library-tests/UnderlyingTypes/namedImport.ts
@@ -0,0 +1,4 @@
+import { Request } from 'express';
+
+function t1(req: Request) { // $ hasUnderlyingType='express'.Request
+}
diff --git a/javascript/ql/test/library-tests/UnderlyingTypes/namespaceDecls.ts b/javascript/ql/test/library-tests/UnderlyingTypes/namespaceDecls.ts
new file mode 100644
index 000000000000..bd8811dfe7aa
--- /dev/null
+++ b/javascript/ql/test/library-tests/UnderlyingTypes/namespaceDecls.ts
@@ -0,0 +1,27 @@
+import Express = require('express');
+
+namespace A {
+ export import E = Express;
+}
+namespace B {
+ export import Q = A
+}
+namespace C {
+ import E = Express;
+ export const A = E;
+}
+
+function t1(x: A.E.Request) { // $ hasUnderlyingType='express'.Request
+}
+
+function t2(x: B.Q.E.Request) { // $ hasUnderlyingType='express'.Request
+}
+
+function t3(x: typeof Express) { // $ hasUnderlyingType='express'
+}
+
+function t4(x: typeof A.E) { // $ hasUnderlyingType='express'
+}
+
+function t5(x: typeof C.A) { // $ hasUnderlyingType='express'
+}
diff --git a/javascript/ql/test/library-tests/UnderlyingTypes/namespaceImport.ts b/javascript/ql/test/library-tests/UnderlyingTypes/namespaceImport.ts
new file mode 100644
index 000000000000..f2f96865f390
--- /dev/null
+++ b/javascript/ql/test/library-tests/UnderlyingTypes/namespaceImport.ts
@@ -0,0 +1,15 @@
+import * as express from 'express';
+
+function t1(e: typeof express) { // $ hasUnderlyingType='express'
+}
+
+function t2(req: express.Request) { // $ hasUnderlyingType='express'.Request
+}
+
+function t3(req: Request) { // $ hasUnderlyingType=Request // not in scope, refers to a global
+}
+
+type E = typeof express;
+
+function t4(e: E) { // $ hasUnderlyingType='express'
+}
diff --git a/javascript/ql/test/library-tests/UnderlyingTypes/props.ts b/javascript/ql/test/library-tests/UnderlyingTypes/props.ts
new file mode 100644
index 000000000000..1aded75ae95f
--- /dev/null
+++ b/javascript/ql/test/library-tests/UnderlyingTypes/props.ts
@@ -0,0 +1,16 @@
+import * as express from 'express';
+
+interface Foo {
+ req: express.Request;
+ e: typeof express;
+}
+
+function t1(f: Foo) {
+ f.req; // $ hasUnderlyingType='express'.Request
+ f.e; // $ hasUnderlyingType='express'
+
+ const {
+ req, // $ hasUnderlyingType='express'.Request
+ e // $ hasUnderlyingType='express'
+ } = f;
+}
diff --git a/javascript/ql/test/library-tests/UnderlyingTypes/subtype.ts b/javascript/ql/test/library-tests/UnderlyingTypes/subtype.ts
new file mode 100644
index 000000000000..a23b85e3b81e
--- /dev/null
+++ b/javascript/ql/test/library-tests/UnderlyingTypes/subtype.ts
@@ -0,0 +1,20 @@
+import * as express from 'express';
+
+interface MyRequest extends express.Request {
+
+}
+
+function t1(req: MyRequest) { // $ hasUnderlyingType='express'.Request
+}
+
+class MyRequestClass extends express.Request {
+}
+
+function t2(req: MyRequestClass) { // $ hasUnderlyingType='express'.Request
+}
+
+class MyRequestClass2 implements express.Request {
+}
+
+function t3(req: MyRequestClass2) { // $ hasUnderlyingType='express'.Request
+}
diff --git a/javascript/ql/test/library-tests/UnderlyingTypes/test.expected b/javascript/ql/test/library-tests/UnderlyingTypes/test.expected
new file mode 100644
index 000000000000..9525a32706b4
--- /dev/null
+++ b/javascript/ql/test/library-tests/UnderlyingTypes/test.expected
@@ -0,0 +1,54 @@
+| calls.ts:6:5:6:16 | getRequest() | 'express'.Request |
+| calls.ts:12:5:12:23 | getRequestAmbient() | 'express'.Request |
+| calls.ts:20:5:20:14 | c.method() | 'express'.Request |
+| calls.ts:21:5:21:20 | new C().method() | 'express'.Request |
+| calls.ts:24:24:24:26 | req | 'express'.Request |
+| calls.ts:29:9:29:11 | req | 'express'.Request |
+| closure.use.js:9:13:9:13 | x | closure.lib.Foo |
+| closure.use.js:9:13:9:13 | x | closure.reexported.Foo |
+| closure.use.js:15:13:15:13 | x | closure.es.Bar |
+| closure.use.js:15:13:15:13 | x | closure.reexported.Bar |
+| contextualTypes.ts:4:12:4:14 | req | 'express'.Request |
+| contextualTypes.ts:11:16:11:18 | req | 'express'.Request |
+| contextualTypes.ts:18:16:18:18 | req | 'express'.Request |
+| contextualTypes.ts:21:16:21:18 | req | 'express'.Request |
+| contextualTypes.ts:27:16:27:18 | req | 'express'.Request |
+| contextualTypes.ts:34:20:34:22 | req | 'express'.Request |
+| contextualTypes.ts:41:16:41:18 | req | 'express'.Request |
+| expressBulkExport.use.ts:3:13:3:15 | req | 'express'.Request |
+| expressBulkExport.use.ts:6:13:6:15 | res | 'express'.Response |
+| expressExportAssign.use.ts:3:13:3:15 | req | 'express'.Request |
+| expressExportAssignWrapper.use.ts:3:13:3:15 | req | 'express'.Request |
+| expressSelectiveExport.use.ts:3:13:3:15 | req | 'express'.Request |
+| expressSelectiveExport.use.ts:9:13:9:15 | res | 'express'.Response |
+| expressWrapperExport.use.ts:10:13:10:15 | req | 'express'.Request |
+| expressWrapperExport.use.ts:13:13:13:15 | res | 'express'.Response |
+| expressWrapperExport.use.ts:16:13:16:15 | req | 'express'.Request |
+| expressWrapperExport.use.ts:19:13:19:15 | res | 'express'.Response |
+| expressWrapperExport.use.ts:28:13:28:13 | e | 'express' |
+| globals.ts:1:13:1:14 | el | HTMLElement |
+| globals.ts:6:13:6:14 | el | HTMLInputElement |
+| globals.ts:9:13:9:15 | req | Express.Request |
+| jsdoc.js:7:13:7:15 | req | 'express'.Request |
+| jsdoc.js:13:13:13:15 | res | 'express'.Response |
+| namedImport.ts:3:13:3:15 | req | 'express'.Request |
+| namespaceDecls.ts:14:13:14:13 | x | 'express'.Request |
+| namespaceDecls.ts:17:13:17:13 | x | 'express'.Request |
+| namespaceDecls.ts:20:13:20:13 | x | 'express' |
+| namespaceDecls.ts:23:13:23:13 | x | 'express' |
+| namespaceDecls.ts:26:13:26:13 | x | 'express' |
+| namespaceImport.ts:3:13:3:13 | e | 'express' |
+| namespaceImport.ts:6:13:6:15 | req | 'express'.Request |
+| namespaceImport.ts:9:13:9:15 | req | Request |
+| namespaceImport.ts:14:13:14:13 | e | 'express' |
+| props.ts:9:5:9:9 | f.req | 'express'.Request |
+| props.ts:10:5:10:7 | f.e | 'express' |
+| props.ts:13:9:13:11 | req | 'express'.Request |
+| props.ts:14:9:14:9 | e | 'express' |
+| subtype.ts:7:13:7:15 | req | 'express'.Request |
+| subtype.ts:13:13:13:15 | req | 'express'.Request |
+| subtype.ts:19:13:19:15 | req | 'express'.Request |
+| typeCast.ts:4:16:4:35 | e as express.Request | 'express'.Request |
+| typeCast.ts:5:16:5:33 | e | 'express'.Request |
+| typeCast.ts:6:16:6:42 | e satis ... Request | 'express'.Request |
+| varAssignment.ts:4:9:4:11 | req | 'express'.Request |
diff --git a/javascript/ql/test/library-tests/UnderlyingTypes/test.ql b/javascript/ql/test/library-tests/UnderlyingTypes/test.ql
new file mode 100644
index 000000000000..d3074111f919
--- /dev/null
+++ b/javascript/ql/test/library-tests/UnderlyingTypes/test.ql
@@ -0,0 +1,15 @@
+import javascript
+
+bindingset[x, y]
+private string join(string x, string y) {
+ if x = "" or y = "" then result = x + y else result = x + "." + y
+}
+
+query predicate hasUnderlyingType(DataFlow::SourceNode node, string value) {
+ node.hasUnderlyingType(value)
+ or
+ exists(string mod, string name |
+ node.hasUnderlyingType(mod, name) and
+ value = join("'" + mod + "'", name)
+ )
+}
diff --git a/javascript/ql/test/library-tests/UnderlyingTypes/test.qlref b/javascript/ql/test/library-tests/UnderlyingTypes/test.qlref
new file mode 100644
index 000000000000..ab6773f15f90
--- /dev/null
+++ b/javascript/ql/test/library-tests/UnderlyingTypes/test.qlref
@@ -0,0 +1,2 @@
+query: test.ql
+postprocess: utils/test/InlineExpectationsTestQuery.ql
diff --git a/javascript/ql/test/library-tests/UnderlyingTypes/tsconfig.json b/javascript/ql/test/library-tests/UnderlyingTypes/tsconfig.json
new file mode 100644
index 000000000000..82194fc7ab06
--- /dev/null
+++ b/javascript/ql/test/library-tests/UnderlyingTypes/tsconfig.json
@@ -0,0 +1,3 @@
+{
+ "include": ["."]
+}
diff --git a/javascript/ql/test/library-tests/UnderlyingTypes/typeCast.ts b/javascript/ql/test/library-tests/UnderlyingTypes/typeCast.ts
new file mode 100644
index 000000000000..09b6105d0126
--- /dev/null
+++ b/javascript/ql/test/library-tests/UnderlyingTypes/typeCast.ts
@@ -0,0 +1,7 @@
+import * as express from 'express';
+
+function t1(e) {
+ var req1 = e as express.Request; // $ hasUnderlyingType='express'.Request
+ var req2 = e; // $ hasUnderlyingType='express'.Request
+ var req3 = e satisfies express.Request; // $ hasUnderlyingType='express'.Request
+}
diff --git a/javascript/ql/test/library-tests/UnderlyingTypes/varAssignment.ts b/javascript/ql/test/library-tests/UnderlyingTypes/varAssignment.ts
new file mode 100644
index 000000000000..c7160e16561e
--- /dev/null
+++ b/javascript/ql/test/library-tests/UnderlyingTypes/varAssignment.ts
@@ -0,0 +1,5 @@
+import * as express from 'express';
+
+function t1(e) {
+ var req: express.Request = e; // $ hasUnderlyingType='express'.Request
+}
diff --git a/javascript/ql/test/library-tests/frameworks/Nest/test.expected b/javascript/ql/test/library-tests/frameworks/Nest/test.expected
index ff12967bec69..db49fc95eba9 100644
--- a/javascript/ql/test/library-tests/frameworks/Nest/test.expected
+++ b/javascript/ql/test/library-tests/frameworks/Nest/test.expected
@@ -71,6 +71,9 @@ responseSendArgument
| local/customPipe.ts:37:16:37:31 | '' + unsanitized |
| local/customPipe.ts:42:16:42:31 | '' + unsanitized |
| local/customPipe.ts:48:16:48:31 | '' + unsanitized |
+| local/routes.ts:7:12:7:16 | 'foo' |
+| local/routes.ts:12:12:12:16 | 'foo' |
+| local/routes.ts:17:12:17:16 | 'foo' |
| local/routes.ts:32:31:32:31 | x |
| local/routes.ts:33:31:33:38 | queryObj |
| local/routes.ts:34:31:34:34 | name |
diff --git a/javascript/ql/test/query-tests/Declarations/SuspiciousMethodNameDeclaration/SuspiciousMethodNameDeclaration.expected b/javascript/ql/test/query-tests/Declarations/SuspiciousMethodNameDeclaration/SuspiciousMethodNameDeclaration.expected
index 3c827d16fce6..ee80f65d1adf 100644
--- a/javascript/ql/test/query-tests/Declarations/SuspiciousMethodNameDeclaration/SuspiciousMethodNameDeclaration.expected
+++ b/javascript/ql/test/query-tests/Declarations/SuspiciousMethodNameDeclaration/SuspiciousMethodNameDeclaration.expected
@@ -2,3 +2,14 @@
| tst.ts:16:3:16:21 | function(): number; | The member name 'function' does not declare a function, it declares a method named 'function'. |
| tst.ts:37:3:37:21 | function(): number; | The member name 'function' does not declare a function, it declares a method named 'function'. |
| tst.ts:48:3:48:13 | new(): Quz; | The member name 'new' does not declare a constructor, but 'constructor' does in class declarations. |
+| tst.ts:60:3:60:21 | function(): number; | The member name 'function' does not declare a function, it declares a method named 'function'. |
+| tst.ts:64:3:64:24 | constru ... number; | The member name 'constructor' does not declare a constructor in interfaces, but it does in classes. |
+| tst.ts:74:3:74:30 | functio ... string; | The member name 'function' does not declare a function, it declares a method named 'function'. |
+| tst.ts:75:3:75:30 | functio ... number; | The member name 'function' does not declare a function, it declares a method named 'function'. |
+| tst.ts:76:3:76:24 | functio ... ): any; | The member name 'function' does not declare a function, it declares a method named 'function'. |
+| tst.ts:80:3:80:23 | abstrac ... : void; | The member name 'new' does not declare a constructor, but 'constructor' does in class declarations. |
+| tst.ts:84:3:84:30 | abstrac ... number; | The member name 'function' does not declare a function, it declares a method named 'function'. |
+| tst.ts:93:5:93:21 | function(): void; | The member name 'function' does not declare a function, it declares a method named 'function'. |
+| tst.ts:98:3:98:21 | function(): number; | The member name 'function' does not declare a function, it declares a method named 'function'. |
+| tst.ts:110:3:110:24 | constru ... number; | The member name 'constructor' does not declare a constructor in interfaces, but it does in classes. |
+| tst.ts:116:3:116:24 | constru ... number; | The member name 'constructor' does not declare a constructor in interfaces, but it does in classes. |
diff --git a/javascript/ql/test/query-tests/Declarations/SuspiciousMethodNameDeclaration/tst.ts b/javascript/ql/test/query-tests/Declarations/SuspiciousMethodNameDeclaration/tst.ts
index e958681f9352..12a6087b3a33 100644
--- a/javascript/ql/test/query-tests/Declarations/SuspiciousMethodNameDeclaration/tst.ts
+++ b/javascript/ql/test/query-tests/Declarations/SuspiciousMethodNameDeclaration/tst.ts
@@ -50,3 +50,70 @@ declare class Quz {
var bla = new Foo();
var blab = new Baz();
+
+
+interface X {
+ constructor: () => string; // Just a property, not a method.
+}
+
+type A = {
+ function(): number; // $ Alert
+};
+
+type B = {
+ constructor(): number; // $ Alert
+ new(): number;
+};
+
+class StaticMethods {
+ static function(): void {}
+ static new(): void {}
+}
+
+interface Overloaded {
+ function(x: string): string; // $Alert
+ function(x: number): number; // $Alert
+ function(x: any): any; // $Alert
+}
+
+abstract class AbstractFoo {
+ abstract new(): void; // $Alert
+}
+
+abstract class AbstractFooFunction {
+ abstract function(): number; // $Alert
+}
+
+abstract class AbstractFooConstructor {
+ constructor(){}
+}
+
+declare module "some-module" {
+ interface ModuleInterface {
+ function(): void; // $Alert
+ }
+}
+
+type Intersection = {
+ function(): number; // $Alert
+} & {
+ other(): string;
+};
+
+type Union = {
+ new(): number;
+} | {
+ valid(): string;
+};
+
+type Union2 = {
+ constructor(): number; // $Alert
+} | {
+ valid(): string;
+};
+
+type Intersection2 = {
+ constructor(): number; // $Alert
+} & {
+ other(): string;
+};
diff --git a/javascript/ql/test/query-tests/Expressions/ExprHasNoEffect/ExprHasNoEffect.expected b/javascript/ql/test/query-tests/Expressions/ExprHasNoEffect/ExprHasNoEffect.expected
index 853e781c88e2..f1beafe0037a 100644
--- a/javascript/ql/test/query-tests/Expressions/ExprHasNoEffect/ExprHasNoEffect.expected
+++ b/javascript/ql/test/query-tests/Expressions/ExprHasNoEffect/ExprHasNoEffect.expected
@@ -1,3 +1,4 @@
+| dom.js:2:33:2:50 | a.clientTop === !0 | This expression has no effect. |
| try.js:22:9:22:26 | x.ordinaryProperty | This expression has no effect. |
| tst2.js:2:4:2:4 | 0 | This expression has no effect. |
| tst.js:3:1:3:2 | 23 | This expression has no effect. |
@@ -11,4 +12,4 @@
| tst.js:50:3:50:36 | new Err ... age(e)) | This expression has no effect. |
| tst.js:61:2:61:20 | o.trivialNonGetter1 | This expression has no effect. |
| tst.js:77:24:77:24 | o | This expression has no effect. |
-| uselessfn.js:1:1:1:26 | (functi ... .");\\n}) | This expression has no effect. |
+| uselessfn.js:1:2:1:26 | functio ... d.");\\n} | This expression has no effect. |
diff --git a/javascript/ql/test/query-tests/Expressions/ExprHasNoEffect/dom.js b/javascript/ql/test/query-tests/Expressions/ExprHasNoEffect/dom.js
new file mode 100644
index 000000000000..5d22e4a0bed2
--- /dev/null
+++ b/javascript/ql/test/query-tests/Expressions/ExprHasNoEffect/dom.js
@@ -0,0 +1,7 @@
+function f(){
+ a.clientTop && a.clientTop, a.clientTop === !0; //$Alert
+ a && a.clientTop;
+ a.clientTop, a.clientTop;
+ if(a) return a.clientTop && a.clientTop, a.clientTop === !0;
+ if(b) return b && (b.clientTop, b.clientTop && b.clientTop), null;
+}
diff --git a/javascript/ql/test/query-tests/Expressions/ExprHasNoEffect/tst.js b/javascript/ql/test/query-tests/Expressions/ExprHasNoEffect/tst.js
index a91759e553f1..6de5ac9a236a 100644
--- a/javascript/ql/test/query-tests/Expressions/ExprHasNoEffect/tst.js
+++ b/javascript/ql/test/query-tests/Expressions/ExprHasNoEffect/tst.js
@@ -79,4 +79,9 @@ function g() {
consume(testSomeCondition() ? o :
doSomethingDangerous());
+
+ ("release" === isRelease() ? warning() : null);
+ "release" === isRelease() ? warning() : null;
+ "release" === isRelease() ? warning() : 0;
+ "release" === isRelease() ? warning() : undefined;
};
diff --git a/javascript/ql/test/query-tests/Expressions/ExprHasNoEffect/uselessfn.js b/javascript/ql/test/query-tests/Expressions/ExprHasNoEffect/uselessfn.js
index 341644bf6498..e47a25458d44 100644
--- a/javascript/ql/test/query-tests/Expressions/ExprHasNoEffect/uselessfn.js
+++ b/javascript/ql/test/query-tests/Expressions/ExprHasNoEffect/uselessfn.js
@@ -1,3 +1,3 @@
(function f() { // $ Alert
console.log("I'm never called.");
-})
\ No newline at end of file
+})
diff --git a/javascript/ql/test/query-tests/LanguageFeatures/TemplateSyntaxInStringLiteral/TemplateSyntaxInStringLiteral.js b/javascript/ql/test/query-tests/LanguageFeatures/TemplateSyntaxInStringLiteral/TemplateSyntaxInStringLiteral.js
index d21a662dc5e8..9e0993278c16 100644
--- a/javascript/ql/test/query-tests/LanguageFeatures/TemplateSyntaxInStringLiteral/TemplateSyntaxInStringLiteral.js
+++ b/javascript/ql/test/query-tests/LanguageFeatures/TemplateSyntaxInStringLiteral/TemplateSyntaxInStringLiteral.js
@@ -40,4 +40,30 @@ function foo1() {
writer.emit("Name: ${name}, Date: ${date}.", data);
writer.emit("Name: ${name}, Date: ${date}, ${foobar}", data); // $ Alert - `foobar` is not in `data`.
-}
\ No newline at end of file
+}
+
+function a(actual, expected, description) {
+ assert(false, "a", description, "expected (" +
+ typeof expected + ") ${expected} but got (" + typeof actual + ") ${actual}", {
+ expected: expected,
+ actual: actual
+ });
+}
+
+function replacer(str, name) {
+ return str.replace("${name}", name);
+}
+
+function replacerAll(str, name) {
+ return str.replaceAll("${name}", name);
+}
+
+function manualInterpolation(name) {
+ let str = "Name: ${name}";
+ let result1 = replacer(str, name);
+ console.log(result1);
+
+ str = "Name: ${name} and again: ${name}";
+ let result2 = replacerAll(str, name);
+ console.log(result2);
+}
diff --git a/javascript/ql/test/query-tests/RegExp/DuplicateCharacterInCharacterClass/DuplicateCharacterInCharacterClass.expected b/javascript/ql/test/query-tests/RegExp/DuplicateCharacterInCharacterClass/DuplicateCharacterInCharacterClass.expected
index 1857b9cc4df4..96f2cf20fd96 100644
--- a/javascript/ql/test/query-tests/RegExp/DuplicateCharacterInCharacterClass/DuplicateCharacterInCharacterClass.expected
+++ b/javascript/ql/test/query-tests/RegExp/DuplicateCharacterInCharacterClass/DuplicateCharacterInCharacterClass.expected
@@ -7,3 +7,39 @@
| tst.js:8:3:8:3 | a | Character 'a' is $@. | tst.js:8:5:8:5 | a | repeated in the same character class |
| tst.js:9:3:9:6 | \\x0a | Character '\\x0a' is $@. | tst.js:9:7:9:10 | \\x0a | repeated in the same character class |
| tst.js:10:3:10:8 | \\u000a | Character '\\u000a' is $@. | tst.js:10:9:10:10 | \\n | repeated in the same character class |
+| tst.js:15:4:15:4 | \| | Character '\|' is $@. | tst.js:15:6:15:6 | \| | repeated in the same character class |
+| tst.js:16:3:16:3 | : | Character ':' is $@. | tst.js:16:9:16:9 | : | repeated in the same character class |
+| tst.js:17:4:17:4 | ^ | Character '^' is $@. | tst.js:17:11:17:11 | ^ | repeated in the same character class |
+| tst.js:17:5:17:5 | s | Character 's' is $@. | tst.js:17:12:17:12 | s | repeated in the same character class |
+| tst.js:17:6:17:6 | t | Character 't' is $@. | tst.js:17:13:17:13 | t | repeated in the same character class |
+| tst.js:17:6:17:6 | t | Character 't' is $@. | tst.js:17:15:17:15 | t | repeated in the same character class |
+| tst.js:17:6:17:6 | t | Character 't' is $@. | tst.js:17:19:17:19 | t | repeated in the same character class |
+| tst.js:17:7:17:7 | y | Character 'y' is $@. | tst.js:17:20:17:20 | y | repeated in the same character class |
+| tst.js:17:8:17:8 | l | Character 'l' is $@. | tst.js:17:21:17:21 | l | repeated in the same character class |
+| tst.js:17:9:17:9 | e | Character 'e' is $@. | tst.js:17:22:17:22 | e | repeated in the same character class |
+| tst.js:18:3:18:3 | . | Character '.' is $@. | tst.js:18:5:18:5 | . | repeated in the same character class |
+| tst.js:19:6:19:6 | \u0645 | Character '\u0645' is $@. | tst.js:19:8:19:8 | \u0645 | repeated in the same character class |
+| tst.js:22:3:22:4 | \\p | Character '\\p' is $@. | tst.js:22:15:22:16 | \\p | repeated in the same character class |
+| tst.js:22:5:22:5 | { | Character '{' is $@. | tst.js:22:17:22:17 | { | repeated in the same character class |
+| tst.js:22:7:22:7 | e | Character 'e' is $@. | tst.js:22:10:22:10 | e | repeated in the same character class |
+| tst.js:22:8:22:8 | t | Character 't' is $@. | tst.js:22:9:22:9 | t | repeated in the same character class |
+| tst.js:22:12:22:12 | } | Character '}' is $@. | tst.js:22:23:22:23 | } | repeated in the same character class |
+| tst.js:22:13:22:13 | & | Character '&' is $@. | tst.js:22:14:22:14 | & | repeated in the same character class |
+| tst.js:22:21:22:21 | I | Character 'I' is $@. | tst.js:22:22:22:22 | I | repeated in the same character class |
+| tst.js:26:3:26:4 | \\p | Character '\\p' is $@. | tst.js:26:13:26:14 | \\p | repeated in the same character class |
+| tst.js:26:5:26:5 | { | Character '{' is $@. | tst.js:26:15:26:15 | { | repeated in the same character class |
+| tst.js:26:7:26:7 | e | Character 'e' is $@. | tst.js:26:10:26:10 | e | repeated in the same character class |
+| tst.js:26:7:26:7 | e | Character 'e' is $@. | tst.js:26:17:26:17 | e | repeated in the same character class |
+| tst.js:26:7:26:7 | e | Character 'e' is $@. | tst.js:26:28:26:28 | e | repeated in the same character class |
+| tst.js:26:8:26:8 | t | Character 't' is $@. | tst.js:26:9:26:9 | t | repeated in the same character class |
+| tst.js:26:11:26:11 | r | Character 'r' is $@. | tst.js:26:29:26:29 | r | repeated in the same character class |
+| tst.js:26:12:26:12 | } | Character '}' is $@. | tst.js:26:30:26:30 | } | repeated in the same character class |
+| tst.js:26:20:26:20 | m | Character 'm' is $@. | tst.js:26:26:26:26 | m | repeated in the same character class |
+| tst.js:28:3:28:3 | / | Character '/' is $@. | tst.js:28:5:28:5 | / | repeated in the same character class |
+| tst.js:30:4:30:4 | ^ | Character '^' is $@. | tst.js:30:5:30:5 | ^ | repeated in the same character class |
+| tst.js:31:4:31:4 | * | Character '*' is $@. | tst.js:31:5:31:5 | * | repeated in the same character class |
+| tst.js:33:5:33:5 | \| | Character '\|' is $@. | tst.js:33:6:33:7 | \\\| | repeated in the same character class |
+| tst_replace.js:3:26:3:26 | n | Character 'n' is $@. | tst_replace.js:3:28:3:28 | n | repeated in the same character class |
+| tst_replace.js:11:18:11:18 | n | Character 'n' is $@. | tst_replace.js:11:20:11:20 | n | repeated in the same character class |
+| tst_replace.js:25:18:25:18 | n | Character 'n' is $@. | tst_replace.js:25:20:25:20 | n | repeated in the same character class |
+| tst_replace.js:42:18:42:18 | n | Character 'n' is $@. | tst_replace.js:42:20:42:20 | n | repeated in the same character class |
diff --git a/javascript/ql/test/query-tests/RegExp/DuplicateCharacterInCharacterClass/tst.js b/javascript/ql/test/query-tests/RegExp/DuplicateCharacterInCharacterClass/tst.js
index c87c7140a16c..fe291137c8a6 100644
--- a/javascript/ql/test/query-tests/RegExp/DuplicateCharacterInCharacterClass/tst.js
+++ b/javascript/ql/test/query-tests/RegExp/DuplicateCharacterInCharacterClass/tst.js
@@ -3,12 +3,31 @@
/[\uDC3A\uDC3C]/;
/[??]/; // $ Alert
/[\u003F\u003f]/; // $ Alert
-/[\u003F?]/; // $ Alert
+/[\u003F?]/; // $ Alert -- \u003F evaluates to ?, which is the same as ? in the character class
/[\x3f\u003f]/; // $ Alert
/[aaa]/; // $ Alert
/[\x0a\x0a]/; // $ Alert
-/[\u000a\n]/; // $ Alert
+/[\u000a\n]/; // $ Alert -- \u000a evaluates to \n, which is the same as \n in the character class
/[\u{ff}]/;
/[\u{12340}-\u{12345}]/u;
new RegExp("[\u{12340}-\u{12345}]", "u");
const regex = /\b(?:https?:\/\/|mailto:|www\.)(?:[\S--[\p{P}<>]]|\/|[\S--[\[\]]]+[\S--[\p{P}<>]])+|\b[\S--[@\p{Ps}\p{Pe}<>]]+@([\S--[\p{P}<>]]+(?:\.[\S--[\p{P}<>]]+)+)/gmv;
+/[a|b|c]/; // $ Alert -- Repeated | character in character class, which has no special meaning in this context
+/[:alnum:]/; // $ Alert -- JavaScript does not support POSIX character classes like `[:alnum:]` in regular expressions, thus characters in the class are treated as literals
+/[(^style|^staticStyle)]/; // $ Alert
+/[.x.]/i; // $ Alert -- Repeated . character in character class
+/^[يفمأمسند]/i; // $ Alert -- م duplicate
+/[\u{1F600}-\u{1F64F}]/u;
+/[\p{Letter}&&\p{ASCII}]/v; // && is an intersection operator while /v flag is present
+/[\p{Letter}&&\p{ASCII}]/; // $ Alert -- without /v flag, && is not a valid operator and treated as member of character class thus duplicate
+/[\p{Decimal_Number}&&[0-9A-F]]/v;
+/[\p{Letter}--[aeiouAEIOU]]/v;
+/[\p{Letter}\p{Decimal_Number}]/v; // Union operation between two character classes only with /v flag
+/[\p{Letter}\p{Decimal_Number}]/; // $ Alert -- without /v flag, this is not a valid operation and treated as member of character class thus duplicate
+/[\[\]]/;
+/[/[/]]/; // $ Alert
+/[^^abc]/; // First `^` is a negation operator, second treated as literal `^` is a member of character class
+/[^^^abc]/; // $ Alert -- Second and third `^` are treated as literals thus duplicates
+/[^**]/; // $ Alert
+/[-a-z]/; // Matches `-` and range `a-z` no duplicate
+/^[:|\|]/ // $ Alert -- `|` is treated as a literal character in the character class, thus duplicate even with escape character
diff --git a/javascript/ql/test/query-tests/RegExp/DuplicateCharacterInCharacterClass/tst_replace.js b/javascript/ql/test/query-tests/RegExp/DuplicateCharacterInCharacterClass/tst_replace.js
new file mode 100644
index 000000000000..afd526007b02
--- /dev/null
+++ b/javascript/ql/test/query-tests/RegExp/DuplicateCharacterInCharacterClass/tst_replace.js
@@ -0,0 +1,44 @@
+function reg(){
+ const nonIdPattern = 'a-z';
+ const basePattern = /[]/.source; // $ SPURIOUS:Alert
+ const finalPattern = basePattern.replace(//g, nonIdPattern);
+ console.log(finalPattern);
+ const regex2 = new RegExp(finalPattern);
+}
+
+function reg1(){
+ const nonIdPattern = 'a-z';
+ const reg = /[]/; // $ SPURIOUS:Alert
+ const basePattern = reg.source;
+ const finalPattern = basePattern.replace(//g, nonIdPattern);
+ console.log(finalPattern);
+ const regex2 = new RegExp(finalPattern);
+}
+
+function replacer(reg1, reg2){
+ const basePattern = reg1.source;
+ const finalPattern = basePattern.replace(//g, reg2);
+ return new RegExp(finalPattern);
+}
+function reg2(){
+ const nonIdPattern = 'a-z';
+ const reg = /[]/; // $ SPURIOUS:Alert
+ replacer(reg, nonIdPattern);
+}
+
+
+function replacer3(str, reg2){
+ const finalPattern = str.replace(//g, reg2);
+ return new RegExp(finalPattern);
+}
+
+function replacer2(reg1, reg2){
+ const basePattern = reg1.source;
+ return replacer3(basePattern, reg2);
+}
+
+function reg3(){
+ const nonIdPattern = 'a-z';
+ const reg = /[]/; // $ SPURIOUS:Alert
+ replacer2(reg, nonIdPattern);
+}
diff --git a/javascript/ql/test/query-tests/Security/CWE-079/DomBasedXss/Xss.expected b/javascript/ql/test/query-tests/Security/CWE-079/DomBasedXss/Xss.expected
index 6ba8ab703bff..0f5659492116 100644
--- a/javascript/ql/test/query-tests/Security/CWE-079/DomBasedXss/Xss.expected
+++ b/javascript/ql/test/query-tests/Security/CWE-079/DomBasedXss/Xss.expected
@@ -62,6 +62,8 @@
| dragAndDrop.ts:73:29:73:39 | droppedHtml | dragAndDrop.ts:71:27:71:61 | e.dataT ... /html') | dragAndDrop.ts:73:29:73:39 | droppedHtml | Cross-site scripting vulnerability due to $@. | dragAndDrop.ts:71:27:71:61 | e.dataT ... /html') | user-provided value |
| event-handler-receiver.js:2:31:2:83 | ' ' | event-handler-receiver.js:2:49:2:61 | location.href | event-handler-receiver.js:2:31:2:83 | ' ' | Cross-site scripting vulnerability due to $@. | event-handler-receiver.js:2:49:2:61 | location.href | user-provided value |
| express.js:6:15:6:33 | req.param("wobble") | express.js:6:15:6:33 | req.param("wobble") | express.js:6:15:6:33 | req.param("wobble") | Cross-site scripting vulnerability due to $@. | express.js:6:15:6:33 | req.param("wobble") | user-provided value |
+| jquery-declare-any.ts:6:7:6:17 | window.name | jquery-declare-any.ts:6:7:6:17 | window.name | jquery-declare-any.ts:6:7:6:17 | window.name | Cross-site scripting vulnerability due to $@. | jquery-declare-any.ts:6:7:6:17 | window.name | user-provided value |
+| jquery-declare-type.ts:6:7:6:17 | window.name | jquery-declare-type.ts:6:7:6:17 | window.name | jquery-declare-type.ts:6:7:6:17 | window.name | Cross-site scripting vulnerability due to $@. | jquery-declare-type.ts:6:7:6:17 | window.name | user-provided value |
| jquery.js:7:5:7:34 | "" | jquery.js:2:17:2:40 | documen ... .search | jquery.js:7:5:7:34 | "
" | Cross-site scripting vulnerability due to $@. | jquery.js:2:17:2:40 | documen ... .search | user-provided value |
| jquery.js:8:18:8:34 | "XSS: " + tainted | jquery.js:2:17:2:40 | documen ... .search | jquery.js:8:18:8:34 | "XSS: " + tainted | Cross-site scripting vulnerability due to $@. | jquery.js:2:17:2:40 | documen ... .search | user-provided value |
| jquery.js:10:5:10:40 | "
" + ... " " | jquery.js:10:13:10:20 | location | jquery.js:10:5:10:40 | "
" + ... " " | Cross-site scripting vulnerability due to $@. | jquery.js:10:13:10:20 | location | user-provided value |
@@ -954,6 +956,8 @@ nodes
| event-handler-receiver.js:2:31:2:83 | '
' | semmle.label | '
' |
| event-handler-receiver.js:2:49:2:61 | location.href | semmle.label | location.href |
| express.js:6:15:6:33 | req.param("wobble") | semmle.label | req.param("wobble") |
+| jquery-declare-any.ts:6:7:6:17 | window.name | semmle.label | window.name |
+| jquery-declare-type.ts:6:7:6:17 | window.name | semmle.label | window.name |
| jquery.js:2:7:2:40 | tainted | semmle.label | tainted |
| jquery.js:2:17:2:40 | documen ... .search | semmle.label | documen ... .search |
| jquery.js:4:5:4:11 | tainted | semmle.label | tainted |
diff --git a/javascript/ql/test/query-tests/Security/CWE-079/DomBasedXss/XssWithAdditionalSources.expected b/javascript/ql/test/query-tests/Security/CWE-079/DomBasedXss/XssWithAdditionalSources.expected
index 0ed15b8d92ab..c031b7c1810c 100644
--- a/javascript/ql/test/query-tests/Security/CWE-079/DomBasedXss/XssWithAdditionalSources.expected
+++ b/javascript/ql/test/query-tests/Security/CWE-079/DomBasedXss/XssWithAdditionalSources.expected
@@ -182,6 +182,8 @@ nodes
| hana.js:85:35:85:54 | tableRows[0].comment | semmle.label | tableRows[0].comment |
| hana.js:90:33:90:34 | rs | semmle.label | rs |
| hana.js:90:33:90:45 | rs[0].comment | semmle.label | rs[0].comment |
+| jquery-declare-any.ts:6:7:6:17 | window.name | semmle.label | window.name |
+| jquery-declare-type.ts:6:7:6:17 | window.name | semmle.label | window.name |
| jquery.js:2:7:2:40 | tainted | semmle.label | tainted |
| jquery.js:2:17:2:40 | documen ... .search | semmle.label | documen ... .search |
| jquery.js:4:5:4:11 | tainted | semmle.label | tainted |
diff --git a/javascript/ql/test/query-tests/Security/CWE-079/DomBasedXss/jquery-declare-any.ts b/javascript/ql/test/query-tests/Security/CWE-079/DomBasedXss/jquery-declare-any.ts
new file mode 100644
index 000000000000..df8267bba306
--- /dev/null
+++ b/javascript/ql/test/query-tests/Security/CWE-079/DomBasedXss/jquery-declare-any.ts
@@ -0,0 +1,7 @@
+import 'dummy';
+
+declare var $: any;
+
+function t() {
+ $(window.name); // $ Alert
+}
diff --git a/javascript/ql/test/query-tests/Security/CWE-079/DomBasedXss/jquery-declare-type.ts b/javascript/ql/test/query-tests/Security/CWE-079/DomBasedXss/jquery-declare-type.ts
new file mode 100644
index 000000000000..c866f71a1eb9
--- /dev/null
+++ b/javascript/ql/test/query-tests/Security/CWE-079/DomBasedXss/jquery-declare-type.ts
@@ -0,0 +1,7 @@
+import 'dummy';
+
+declare var $: JQueryStatic;
+
+function t() {
+ $(window.name); // $ Alert
+}
diff --git a/javascript/ql/test/query-tests/Security/CWE-079/UnsafeHtmlConstruction/UnsafeHtmlConstruction.expected b/javascript/ql/test/query-tests/Security/CWE-079/UnsafeHtmlConstruction/UnsafeHtmlConstruction.expected
index 499cf6cce49d..4f757d1a9313 100644
--- a/javascript/ql/test/query-tests/Security/CWE-079/UnsafeHtmlConstruction/UnsafeHtmlConstruction.expected
+++ b/javascript/ql/test/query-tests/Security/CWE-079/UnsafeHtmlConstruction/UnsafeHtmlConstruction.expected
@@ -22,7 +22,6 @@
| main.js:111:37:111:37 | x | main.js:98:43:98:43 | x | main.js:111:37:111:37 | x | This markdown rendering which depends on $@ might later allow $@. | main.js:98:43:98:43 | x | library input | main.js:112:24:112:26 | svg | cross-site scripting |
| main.js:117:34:117:34 | s | main.js:116:47:116:47 | s | main.js:117:34:117:34 | s | This markdown rendering which depends on $@ might later allow $@. | main.js:116:47:116:47 | s | library input | main.js:118:53:118:56 | html | cross-site scripting |
| typed.ts:2:29:2:29 | s | typed.ts:1:39:1:39 | s | typed.ts:2:29:2:29 | s | This HTML construction which depends on $@ might later allow $@. | typed.ts:1:39:1:39 | s | library input | typed.ts:3:31:3:34 | html | cross-site scripting |
-| typed.ts:8:40:8:40 | s | typed.ts:6:43:6:43 | s | typed.ts:8:40:8:40 | s | This HTML construction which depends on $@ might later allow $@. | typed.ts:6:43:6:43 | s | library input | typed.ts:8:29:8:52 | "
... /span>" | cross-site scripting |
edges
| jquery-plugin.js:11:27:11:31 | stuff | jquery-plugin.js:14:31:14:35 | stuff | provenance | |
| jquery-plugin.js:11:34:11:40 | options | jquery-plugin.js:12:31:12:37 | options | provenance | |
@@ -69,7 +68,6 @@ edges
| main.js:98:43:98:43 | x | main.js:111:37:111:37 | x | provenance | |
| main.js:116:47:116:47 | s | main.js:117:34:117:34 | s | provenance | |
| typed.ts:1:39:1:39 | s | typed.ts:2:29:2:29 | s | provenance | |
-| typed.ts:6:43:6:43 | s | typed.ts:8:40:8:40 | s | provenance | |
nodes
| jquery-plugin.js:11:27:11:31 | stuff | semmle.label | stuff |
| jquery-plugin.js:11:34:11:40 | options | semmle.label | options |
@@ -128,6 +126,4 @@ nodes
| main.js:117:34:117:34 | s | semmle.label | s |
| typed.ts:1:39:1:39 | s | semmle.label | s |
| typed.ts:2:29:2:29 | s | semmle.label | s |
-| typed.ts:6:43:6:43 | s | semmle.label | s |
-| typed.ts:8:40:8:40 | s | semmle.label | s |
subpaths
diff --git a/javascript/ql/test/query-tests/Security/CWE-079/UnsafeHtmlConstruction/typed.ts b/javascript/ql/test/query-tests/Security/CWE-079/UnsafeHtmlConstruction/typed.ts
index 1c50460050cf..8c166fb243ff 100644
--- a/javascript/ql/test/query-tests/Security/CWE-079/UnsafeHtmlConstruction/typed.ts
+++ b/javascript/ql/test/query-tests/Security/CWE-079/UnsafeHtmlConstruction/typed.ts
@@ -3,9 +3,9 @@ export function basicHtmlConstruction(s: string) { // $ Source
document.body.innerHTML = html;
}
-export function insertIntoCreatedDocument(s: string) { // $ Source
+export function insertIntoCreatedDocument(s: string) {
const newDoc = document.implementation.createHTMLDocument("");
- newDoc.body.innerHTML = "" + s + " "; // $ SPURIOUS: Alert - inserted into document disconnected from the main DOM.
+ newDoc.body.innerHTML = "" + s + " "; // OK - inserted into document disconnected from the main DOM.
}
export function id(s: string) {
@@ -17,4 +17,3 @@ export function notVulnerable() {
const html = "" + s + " ";
document.body.innerHTML = html;
}
-
\ No newline at end of file
diff --git a/javascript/ql/test/query-tests/definitions/definitions.expected b/javascript/ql/test/query-tests/definitions/definitions.expected
index 081db47c3faa..cb91ac6e37ce 100644
--- a/javascript/ql/test/query-tests/definitions/definitions.expected
+++ b/javascript/ql/test/query-tests/definitions/definitions.expected
@@ -1,36 +1,36 @@
| b.js:3:3:3:3 | x | b.js:2:7:2:7 | x | V |
-| b.js:7:1:7:1 | f | b.js:1:1:5:1 | functio ... ar x;\\n} | M |
-| b.js:8:1:8:1 | g | a.js:2:1:2:15 | function g() {} | M |
+| b.js:7:1:7:1 | f | b.js:1:10:1:10 | f | M |
+| b.js:8:1:8:1 | g | a.js:2:10:2:10 | g | M |
| client.ts:1:22:1:30 | "./tslib" | tslib.ts:1:1:10:0 | | I |
-| client.ts:7:19:7:19 | C | tslib.ts:1:8:3:1 | class C {\\n m() {}\\n} | T |
-| client.ts:8:10:8:10 | C | client.ts:3:1:5:1 | class C {\\n m() {}\\n} | T |
-| client.ts:9:16:9:16 | C | client.ts:3:1:5:1 | class C {\\n m() {}\\n} | T |
-| client.ts:10:16:10:16 | C | tslib.ts:6:10:8:3 | class C ... {}\\n } | T |
-| client.ts:13:25:13:25 | C | client.ts:3:1:5:1 | class C {\\n m() {}\\n} | T |
-| client.ts:13:35:13:35 | C | tslib.ts:1:8:3:1 | class C {\\n m() {}\\n} | T |
-| client.ts:13:47:13:47 | C | tslib.ts:6:10:8:3 | class C ... {}\\n } | T |
+| client.ts:7:19:7:19 | C | tslib.ts:1:14:1:14 | C | T |
+| client.ts:8:10:8:10 | C | client.ts:3:7:3:7 | C | T |
+| client.ts:9:16:9:16 | C | client.ts:3:7:3:7 | C | T |
+| client.ts:10:16:10:16 | C | tslib.ts:6:16:6:16 | C | T |
+| client.ts:13:25:13:25 | C | client.ts:3:7:3:7 | C | T |
+| client.ts:13:35:13:35 | C | tslib.ts:1:14:1:14 | C | T |
+| client.ts:13:47:13:47 | C | tslib.ts:6:16:6:16 | C | T |
| client.ts:14:3:14:3 | x | client.ts:13:22:13:22 | x | V |
-| client.ts:14:5:14:5 | m | client.ts:4:3:4:8 | m() {} | M |
+| client.ts:14:5:14:5 | m | client.ts:4:3:4:3 | m | M |
| client.ts:15:3:15:3 | y | client.ts:13:28:13:28 | y | V |
-| client.ts:15:5:15:5 | m | tslib.ts:2:3:2:8 | m() {} | M |
+| client.ts:15:5:15:5 | m | tslib.ts:2:3:2:3 | m | M |
| client.ts:16:3:16:3 | z | client.ts:13:38:13:38 | z | V |
-| client.ts:16:5:16:5 | m | tslib.ts:7:5:7:10 | m() {} | M |
+| client.ts:16:5:16:5 | m | tslib.ts:7:5:7:5 | m | M |
| d.js:1:17:1:21 | './c' | c.js:1:1:1:20 | | I |
-| d.js:10:1:10:1 | A | d.js:7:1:9:1 | functio ... = 42;\\n} | V |
-| d.js:16:19:16:23 | Super | d.js:12:1:14:1 | class S ... () {}\\n} | V |
+| d.js:10:1:10:1 | A | d.js:7:10:7:10 | A | V |
+| d.js:16:19:16:23 | Super | d.js:12:7:12:11 | Super | V |
| d.js:16:25:16:24 | args | d.js:16:25:16:24 | args | V |
| d.js:20:1:20:1 | o | d.js:3:9:5:1 | {\\n f: ... () {}\\n} | V |
| d.js:20:3:20:3 | f | d.js:4:3:4:18 | f: function() {} | M |
-| d.js:22:13:22:13 | A | d.js:7:1:9:1 | functio ... = 42;\\n} | M |
+| d.js:22:13:22:13 | A | d.js:7:10:7:10 | A | M |
| d.js:23:1:23:1 | a | d.js:22:5:22:5 | a | V |
| d.js:23:3:23:3 | x | d.js:8:3:8:8 | this.x | M |
| d.js:24:1:24:1 | a | d.js:22:5:22:5 | a | V |
| d.js:24:3:24:3 | g | d.js:10:1:10:13 | A.prototype.g | M |
-| d.js:26:13:26:15 | Sub | d.js:16:1:18:1 | class S ... () {}\\n} | M |
+| d.js:26:13:26:15 | Sub | d.js:16:7:16:9 | Sub | M |
| d.js:27:1:27:1 | x | d.js:26:5:26:5 | x | V |
| d.js:27:3:27:3 | m | d.js:13:3:13:3 | m | M |
| d.js:28:1:28:1 | x | d.js:26:5:26:5 | x | V |
| d.js:28:3:28:3 | n | d.js:17:3:17:3 | n | M |
| tst.js:1:19:1:23 | './m' | m.js:1:1:2:0 | | I |
-| tst.js:3:5:3:5 | A | m.js:1:8:1:17 | class A {} | M |
+| tst.js:3:5:3:5 | A | m.js:1:14:1:14 | A | M |
| tst.js:5:15:5:19 | './m' | m.js:1:1:2:0 | | I |
diff --git a/misc/codegen/codegen.py b/misc/codegen/codegen.py
index ae3a67d3fba6..7510405cd7fb 100755
--- a/misc/codegen/codegen.py
+++ b/misc/codegen/codegen.py
@@ -1,5 +1,5 @@
#!/usr/bin/env python3
-""" Driver script to run all code generation """
+"""Driver script to run all code generation"""
import argparse
import logging
@@ -9,7 +9,7 @@
import typing
import shlex
-if 'BUILD_WORKSPACE_DIRECTORY' not in os.environ:
+if "BUILD_WORKSPACE_DIRECTORY" not in os.environ:
# we are not running with `bazel run`, set up module search path
_repo_root = pathlib.Path(__file__).resolve().parents[2]
sys.path.append(str(_repo_root))
@@ -29,57 +29,105 @@ def _parse_args() -> argparse.Namespace:
conf = None
p = argparse.ArgumentParser(description="Code generation suite")
- p.add_argument("--generate", type=lambda x: x.split(","),
- help="specify what targets to generate as a comma separated list, choosing among dbscheme, ql, "
- "trap, cpp and rust")
- p.add_argument("--verbose", "-v", action="store_true", help="print more information")
+ p.add_argument(
+ "--generate",
+ type=lambda x: x.split(","),
+ help="specify what targets to generate as a comma separated list, choosing among dbscheme, ql, "
+ "trap, cpp and rust",
+ )
+ p.add_argument(
+ "--verbose", "-v", action="store_true", help="print more information"
+ )
p.add_argument("--quiet", "-q", action="store_true", help="only print errors")
- p.add_argument("--configuration-file", "-c", type=_abspath, default=conf,
- help="A configuration file to load options from. By default, the first codegen.conf file found by "
- "going up directories from the current location. If present all paths provided in options are "
- "considered relative to its directory")
- p.add_argument("--root-dir", type=_abspath,
- help="the directory that should be regarded as the root of the language pack codebase. Used to "
- "compute QL imports and in some comments and as root for relative paths provided as options. "
- "If not provided it defaults to the directory of the configuration file, if any")
+ p.add_argument(
+ "--configuration-file",
+ "-c",
+ type=_abspath,
+ default=conf,
+ help="A configuration file to load options from. By default, the first codegen.conf file found by "
+ "going up directories from the current location. If present all paths provided in options are "
+ "considered relative to its directory",
+ )
+ p.add_argument(
+ "--root-dir",
+ type=_abspath,
+ help="the directory that should be regarded as the root of the language pack codebase. Used to "
+ "compute QL imports and in some comments and as root for relative paths provided as options. "
+ "If not provided it defaults to the directory of the configuration file, if any",
+ )
path_arguments = [
- p.add_argument("--schema",
- help="input schema file (default schema.py)"),
- p.add_argument("--dbscheme",
- help="output file for dbscheme generation, input file for trap generation"),
- p.add_argument("--ql-output",
- help="output directory for generated QL files"),
- p.add_argument("--ql-stub-output",
- help="output directory for QL stub/customization files. Defines also the "
- "generated qll file importing every class file"),
- p.add_argument("--ql-test-output",
- help="output directory for QL generated extractor test files"),
- p.add_argument("--ql-cfg-output",
- help="output directory for QL CFG layer (optional)."),
- p.add_argument("--cpp-output",
- help="output directory for generated C++ files, required if trap or cpp is provided to "
- "--generate"),
- p.add_argument("--rust-output",
- help="output directory for generated Rust files, required if rust is provided to "
- "--generate"),
- p.add_argument("--generated-registry",
- help="registry file containing information about checked-in generated code. A .gitattributes"
- "file is generated besides it to mark those files with linguist-generated=true. Must"
- "be in a directory containing all generated code."),
+ p.add_argument("--schema", help="input schema file (default schema.py)"),
+ p.add_argument(
+ "--dbscheme",
+ help="output file for dbscheme generation, input file for trap generation",
+ ),
+ p.add_argument("--ql-output", help="output directory for generated QL files"),
+ p.add_argument(
+ "--ql-stub-output",
+ help="output directory for QL stub/customization files. Defines also the "
+ "generated qll file importing every class file",
+ ),
+ p.add_argument(
+ "--ql-test-output",
+ help="output directory for QL generated extractor test files",
+ ),
+ p.add_argument(
+ "--ql-cfg-output", help="output directory for QL CFG layer (optional)."
+ ),
+ p.add_argument(
+ "--cpp-output",
+ help="output directory for generated C++ files, required if trap or cpp is provided to "
+ "--generate",
+ ),
+ p.add_argument(
+ "--rust-output",
+ help="output directory for generated Rust files, required if rust is provided to "
+ "--generate",
+ ),
+ p.add_argument(
+ "--generated-registry",
+ help="registry file containing information about checked-in generated code. A .gitattributes"
+ "file is generated besides it to mark those files with linguist-generated=true. Must"
+ "be in a directory containing all generated code.",
+ ),
]
- p.add_argument("--script-name",
- help="script name to put in header comments of generated files. By default, the path of this "
- "script relative to the root directory")
- p.add_argument("--trap-library",
- help="path to the trap library from an include directory, required if generating C++ trap bindings"),
- p.add_argument("--ql-format", action="store_true", default=True,
- help="use codeql to autoformat QL files (which is the default)")
- p.add_argument("--no-ql-format", action="store_false", dest="ql_format", help="do not format QL files")
- p.add_argument("--codeql-binary", default="codeql", help="command to use for QL formatting (default %(default)s)")
- p.add_argument("--force", "-f", action="store_true",
- help="generate all files without skipping unchanged files and overwriting modified ones")
- p.add_argument("--use-current-directory", action="store_true",
- help="do not consider paths as relative to --root-dir or the configuration directory")
+ p.add_argument(
+ "--script-name",
+ help="script name to put in header comments of generated files. By default, the path of this "
+ "script relative to the root directory",
+ )
+ p.add_argument(
+ "--trap-library",
+ help="path to the trap library from an include directory, required if generating C++ trap bindings",
+ ),
+ p.add_argument(
+ "--ql-format",
+ action="store_true",
+ default=True,
+ help="use codeql to autoformat QL files (which is the default)",
+ )
+ p.add_argument(
+ "--no-ql-format",
+ action="store_false",
+ dest="ql_format",
+ help="do not format QL files",
+ )
+ p.add_argument(
+ "--codeql-binary",
+ default="codeql",
+ help="command to use for QL formatting (default %(default)s)",
+ )
+ p.add_argument(
+ "--force",
+ "-f",
+ action="store_true",
+ help="generate all files without skipping unchanged files and overwriting modified ones",
+ )
+ p.add_argument(
+ "--use-current-directory",
+ action="store_true",
+ help="do not consider paths as relative to --root-dir or the configuration directory",
+ )
opts = p.parse_args()
if opts.configuration_file is not None:
with open(opts.configuration_file) as config:
@@ -97,7 +145,15 @@ def _parse_args() -> argparse.Namespace:
for arg in path_arguments:
path = getattr(opts, arg.dest)
if path is not None:
- setattr(opts, arg.dest, _abspath(path) if opts.use_current_directory else (opts.root_dir / path))
+ setattr(
+ opts,
+ arg.dest,
+ (
+ _abspath(path)
+ if opts.use_current_directory
+ else (opts.root_dir / path)
+ ),
+ )
if not opts.script_name:
opts.script_name = paths.exe_file.relative_to(opts.root_dir)
return opts
@@ -115,7 +171,7 @@ def run():
log_level = logging.ERROR
else:
log_level = logging.INFO
- logging.basicConfig(format="{levelname} {message}", style='{', level=log_level)
+ logging.basicConfig(format="{levelname} {message}", style="{", level=log_level)
for target in opts.generate:
generate(target, opts, render.Renderer(opts.script_name))
diff --git a/misc/codegen/generators/cppgen.py b/misc/codegen/generators/cppgen.py
index 1a9a64663c19..cf99167fa46d 100644
--- a/misc/codegen/generators/cppgen.py
+++ b/misc/codegen/generators/cppgen.py
@@ -49,7 +49,11 @@ def _get_trap_name(cls: schema.Class, p: schema.Property) -> str | None:
return inflection.pluralize(trap_name)
-def _get_field(cls: schema.Class, p: schema.Property, add_or_none_except: typing.Optional[str] = None) -> cpp.Field:
+def _get_field(
+ cls: schema.Class,
+ p: schema.Property,
+ add_or_none_except: typing.Optional[str] = None,
+) -> cpp.Field:
args = dict(
field_name=p.name + ("_" if p.name in cpp.cpp_keywords else ""),
base_type=_get_type(p.type, add_or_none_except),
@@ -83,14 +87,15 @@ def _get_class(self, name: str) -> cpp.Class:
bases=[self._get_class(b) for b in cls.bases],
fields=[
_get_field(cls, p, self._add_or_none_except)
- for p in cls.properties if "cpp_skip" not in p.pragmas and not p.synth
+ for p in cls.properties
+ if "cpp_skip" not in p.pragmas and not p.synth
],
final=not cls.derived,
trap_name=trap_name,
)
def get_classes(self):
- ret = {'': []}
+ ret = {"": []}
for k, cls in self._classmap.items():
if not cls.synth:
ret.setdefault(cls.group, []).append(self._get_class(cls.name))
@@ -102,6 +107,12 @@ def generate(opts, renderer):
processor = Processor(schemaloader.load_file(opts.schema))
out = opts.cpp_output
for dir, classes in processor.get_classes().items():
- renderer.render(cpp.ClassList(classes, opts.schema,
- include_parent=bool(dir),
- trap_library=opts.trap_library), out / dir / "TrapClasses")
+ renderer.render(
+ cpp.ClassList(
+ classes,
+ opts.schema,
+ include_parent=bool(dir),
+ trap_library=opts.trap_library,
+ ),
+ out / dir / "TrapClasses",
+ )
diff --git a/misc/codegen/generators/dbschemegen.py b/misc/codegen/generators/dbschemegen.py
index f861972cdd68..c28fce746b97 100755
--- a/misc/codegen/generators/dbschemegen.py
+++ b/misc/codegen/generators/dbschemegen.py
@@ -13,6 +13,7 @@
as columns
The type hierarchy will be translated to corresponding `union` declarations.
"""
+
import typing
import inflection
@@ -29,7 +30,7 @@ class Error(Exception):
def dbtype(typename: str, add_or_none_except: typing.Optional[str] = None) -> str:
- """ translate a type to a dbscheme counterpart, using `@lower_underscore` format for classes.
+ """translate a type to a dbscheme counterpart, using `@lower_underscore` format for classes.
For class types, appends an underscore followed by `null` if provided
"""
if typename[0].isupper():
@@ -42,12 +43,18 @@ def dbtype(typename: str, add_or_none_except: typing.Optional[str] = None) -> st
return typename
-def cls_to_dbscheme(cls: schema.Class, lookup: typing.Dict[str, schema.Class], add_or_none_except: typing.Optional[str] = None):
- """ Yield all dbscheme entities needed to model class `cls` """
+def cls_to_dbscheme(
+ cls: schema.Class,
+ lookup: typing.Dict[str, schema.Class],
+ add_or_none_except: typing.Optional[str] = None,
+):
+ """Yield all dbscheme entities needed to model class `cls`"""
if cls.synth:
return
if cls.derived:
- yield Union(dbtype(cls.name), (dbtype(c) for c in cls.derived if not lookup[c].synth))
+ yield Union(
+ dbtype(cls.name), (dbtype(c) for c in cls.derived if not lookup[c].synth)
+ )
dir = pathlib.Path(cls.group) if cls.group else None
# output a table specific to a class only if it is a leaf class or it has 1-to-1 properties
# Leaf classes need a table to bind the `@` ids
@@ -61,9 +68,11 @@ def cls_to_dbscheme(cls: schema.Class, lookup: typing.Dict[str, schema.Class], a
name=inflection.tableize(cls.name),
columns=[
Column("id", type=dbtype(cls.name), binding=binding),
- ] + [
+ ]
+ + [
Column(f.name, dbtype(f.type, add_or_none_except))
- for f in cls.properties if f.is_single and not f.synth
+ for f in cls.properties
+ if f.is_single and not f.synth
],
dir=dir,
)
@@ -74,28 +83,37 @@ def cls_to_dbscheme(cls: schema.Class, lookup: typing.Dict[str, schema.Class], a
continue
if f.is_unordered:
yield Table(
- name=overridden_table_name or inflection.tableize(f"{cls.name}_{f.name}"),
+ name=overridden_table_name
+ or inflection.tableize(f"{cls.name}_{f.name}"),
columns=[
Column("id", type=dbtype(cls.name)),
- Column(inflection.singularize(f.name), dbtype(f.type, add_or_none_except)),
+ Column(
+ inflection.singularize(f.name),
+ dbtype(f.type, add_or_none_except),
+ ),
],
dir=dir,
)
elif f.is_repeated:
yield Table(
keyset=KeySet(["id", "index"]),
- name=overridden_table_name or inflection.tableize(f"{cls.name}_{f.name}"),
+ name=overridden_table_name
+ or inflection.tableize(f"{cls.name}_{f.name}"),
columns=[
Column("id", type=dbtype(cls.name)),
Column("index", type="int"),
- Column(inflection.singularize(f.name), dbtype(f.type, add_or_none_except)),
+ Column(
+ inflection.singularize(f.name),
+ dbtype(f.type, add_or_none_except),
+ ),
],
dir=dir,
)
elif f.is_optional:
yield Table(
keyset=KeySet(["id"]),
- name=overridden_table_name or inflection.tableize(f"{cls.name}_{f.name}"),
+ name=overridden_table_name
+ or inflection.tableize(f"{cls.name}_{f.name}"),
columns=[
Column("id", type=dbtype(cls.name)),
Column(f.name, dbtype(f.type, add_or_none_except)),
@@ -105,7 +123,8 @@ def cls_to_dbscheme(cls: schema.Class, lookup: typing.Dict[str, schema.Class], a
elif f.is_predicate:
yield Table(
keyset=KeySet(["id"]),
- name=overridden_table_name or inflection.underscore(f"{cls.name}_{f.name}"),
+ name=overridden_table_name
+ or inflection.underscore(f"{cls.name}_{f.name}"),
columns=[
Column("id", type=dbtype(cls.name)),
],
@@ -119,33 +138,46 @@ def check_name_conflicts(decls: list[Table | Union]):
match decl:
case Table(name=name):
if name in names:
- raise Error(f"Duplicate table name: {
- name}, you can use `@ql.db_table_name` on a property to resolve this")
+ raise Error(
+ f"Duplicate table name: {
+ name}, you can use `@ql.db_table_name` on a property to resolve this"
+ )
names.add(name)
def get_declarations(data: schema.Schema):
add_or_none_except = data.root_class.name if data.null else None
- declarations = [d for cls in data.classes.values() if not cls.imported for d in cls_to_dbscheme(cls,
- data.classes, add_or_none_except)]
+ declarations = [
+ d
+ for cls in data.classes.values()
+ if not cls.imported
+ for d in cls_to_dbscheme(cls, data.classes, add_or_none_except)
+ ]
if data.null:
property_classes = {
- prop.type for cls in data.classes.values() for prop in cls.properties
+ prop.type
+ for cls in data.classes.values()
+ for prop in cls.properties
if cls.name != data.null and prop.type and prop.type[0].isupper()
}
declarations += [
- Union(dbtype(t, data.null), [dbtype(t), dbtype(data.null)]) for t in sorted(property_classes)
+ Union(dbtype(t, data.null), [dbtype(t), dbtype(data.null)])
+ for t in sorted(property_classes)
]
check_name_conflicts(declarations)
return declarations
-def get_includes(data: schema.Schema, include_dir: pathlib.Path, root_dir: pathlib.Path):
+def get_includes(
+ data: schema.Schema, include_dir: pathlib.Path, root_dir: pathlib.Path
+):
includes = []
for inc in data.includes:
inc = include_dir / inc
with open(inc) as inclusion:
- includes.append(SchemeInclude(src=inc.relative_to(root_dir), data=inclusion.read()))
+ includes.append(
+ SchemeInclude(src=inc.relative_to(root_dir), data=inclusion.read())
+ )
return includes
@@ -155,8 +187,10 @@ def generate(opts, renderer):
data = schemaloader.load_file(input)
- dbscheme = Scheme(src=input.name,
- includes=get_includes(data, include_dir=input.parent, root_dir=input.parent),
- declarations=get_declarations(data))
+ dbscheme = Scheme(
+ src=input.name,
+ includes=get_includes(data, include_dir=input.parent, root_dir=input.parent),
+ declarations=get_declarations(data),
+ )
renderer.render(dbscheme, out)
diff --git a/misc/codegen/generators/qlgen.py b/misc/codegen/generators/qlgen.py
index 7e898135d01f..991c21990d46 100755
--- a/misc/codegen/generators/qlgen.py
+++ b/misc/codegen/generators/qlgen.py
@@ -19,6 +19,7 @@
* one `.ql` test query for all single properties and on `_.ql` test query for each optional or
repeated property
"""
+
# TODO this should probably be split in different generators now: ql, qltest, maybe qlsynth
import logging
@@ -70,7 +71,7 @@ class NoClasses(Error):
abbreviations.update({f"{k}s": f"{v}s" for k, v in abbreviations.items()})
-_abbreviations_re = re.compile("|".join(fr"\b{abbr}\b" for abbr in abbreviations))
+_abbreviations_re = re.compile("|".join(rf"\b{abbr}\b" for abbr in abbreviations))
def _humanize(s: str) -> str:
@@ -98,11 +99,17 @@ def _get_doc(cls: schema.Class, prop: schema.Property, plural=None):
return format.format(**{noun: transform(noun) for noun in nouns})
prop_name = _humanize(prop.name)
- class_name = cls.pragmas.get("ql_default_doc_name", _humanize(inflection.underscore(cls.name)))
+ class_name = cls.pragmas.get(
+ "ql_default_doc_name", _humanize(inflection.underscore(cls.name))
+ )
if prop.is_predicate:
return f"this {class_name} {prop_name}"
if plural is not None:
- prop_name = inflection.pluralize(prop_name) if plural else inflection.singularize(prop_name)
+ prop_name = (
+ inflection.pluralize(prop_name)
+ if plural
+ else inflection.singularize(prop_name)
+ )
return f"{prop_name} of this {class_name}"
@@ -114,8 +121,12 @@ def _type_is_hideable(t: str, lookup: typing.Dict[str, schema.ClassBase]) -> boo
return False
-def get_ql_property(cls: schema.Class, prop: schema.Property, lookup: typing.Dict[str, schema.ClassBase],
- prev_child: str = "") -> ql.Property:
+def get_ql_property(
+ cls: schema.Class,
+ prop: schema.Property,
+ lookup: typing.Dict[str, schema.ClassBase],
+ prev_child: str = "",
+) -> ql.Property:
args = dict(
type=prop.type if not prop.is_predicate else "predicate",
@@ -133,12 +144,15 @@ def get_ql_property(cls: schema.Class, prop: schema.Property, lookup: typing.Dic
ql_name = prop.pragmas.get("ql_name", prop.name)
db_table_name = prop.pragmas.get("ql_db_table_name")
if db_table_name and prop.is_single:
- raise Error(f"`db_table_name` pragma is not supported for single properties, but {cls.name}.{prop.name} has it")
+ raise Error(
+ f"`db_table_name` pragma is not supported for single properties, but {cls.name}.{prop.name} has it"
+ )
if prop.is_single:
args.update(
singular=inflection.camelize(ql_name),
tablename=inflection.tableize(cls.name),
- tableparams=["this"] + ["result" if p is prop else "_" for p in cls.properties if p.is_single],
+ tableparams=["this"]
+ + ["result" if p is prop else "_" for p in cls.properties if p.is_single],
doc=_get_doc(cls, prop),
)
elif prop.is_repeated:
@@ -146,7 +160,11 @@ def get_ql_property(cls: schema.Class, prop: schema.Property, lookup: typing.Dic
singular=inflection.singularize(inflection.camelize(ql_name)),
plural=inflection.pluralize(inflection.camelize(ql_name)),
tablename=db_table_name or inflection.tableize(f"{cls.name}_{prop.name}"),
- tableparams=["this", "index", "result"] if not prop.is_unordered else ["this", "result"],
+ tableparams=(
+ ["this", "index", "result"]
+ if not prop.is_unordered
+ else ["this", "result"]
+ ),
doc=_get_doc(cls, prop, plural=False),
doc_plural=_get_doc(cls, prop, plural=True),
)
@@ -169,7 +187,9 @@ def get_ql_property(cls: schema.Class, prop: schema.Property, lookup: typing.Dic
return ql.Property(**args)
-def get_ql_class(cls: schema.Class, lookup: typing.Dict[str, schema.ClassBase]) -> ql.Class:
+def get_ql_class(
+ cls: schema.Class, lookup: typing.Dict[str, schema.ClassBase]
+) -> ql.Class:
if "ql_name" in cls.pragmas:
raise Error("ql_name is not supported yet for classes, only for properties")
prev_child = ""
@@ -195,12 +215,14 @@ def get_ql_class(cls: schema.Class, lookup: typing.Dict[str, schema.ClassBase])
)
-def get_ql_cfg_class(cls: schema.Class, lookup: typing.Dict[str, ql.Class]) -> ql.CfgClass:
+def get_ql_cfg_class(
+ cls: schema.Class, lookup: typing.Dict[str, ql.Class]
+) -> ql.CfgClass:
return ql.CfgClass(
name=cls.name,
bases=[base for base in cls.bases if lookup[base.base].cfg],
properties=cls.properties,
- doc=cls.doc
+ doc=cls.doc,
)
@@ -214,24 +236,33 @@ def _to_db_type(x: str) -> str:
def get_ql_synth_class_db(name: str) -> ql.Synth.FinalClassDb:
- return _final_db_class_lookup.setdefault(name, ql.Synth.FinalClassDb(name=name,
- params=[
- ql.Synth.Param("id", _to_db_type(name))]))
+ return _final_db_class_lookup.setdefault(
+ name,
+ ql.Synth.FinalClassDb(
+ name=name, params=[ql.Synth.Param("id", _to_db_type(name))]
+ ),
+ )
def get_ql_synth_class(cls: schema.Class):
if cls.derived:
- return ql.Synth.NonFinalClass(name=cls.name, derived=sorted(cls.derived),
- root=not cls.bases)
+ return ql.Synth.NonFinalClass(
+ name=cls.name, derived=sorted(cls.derived), root=not cls.bases
+ )
if cls.synth and cls.synth.from_class is not None:
source = cls.synth.from_class
get_ql_synth_class_db(source).subtract_type(cls.name)
- return ql.Synth.FinalClassDerivedSynth(name=cls.name,
- params=[ql.Synth.Param("id", _to_db_type(source))])
+ return ql.Synth.FinalClassDerivedSynth(
+ name=cls.name, params=[ql.Synth.Param("id", _to_db_type(source))]
+ )
if cls.synth and cls.synth.on_arguments is not None:
- return ql.Synth.FinalClassFreshSynth(name=cls.name,
- params=[ql.Synth.Param(k, _to_db_type(v))
- for k, v in cls.synth.on_arguments.items()])
+ return ql.Synth.FinalClassFreshSynth(
+ name=cls.name,
+ params=[
+ ql.Synth.Param(k, _to_db_type(v))
+ for k, v in cls.synth.on_arguments.items()
+ ],
+ )
return get_ql_synth_class_db(cls.name)
@@ -250,7 +281,13 @@ def get_types_used_by(cls: ql.Class, is_impl: bool) -> typing.Iterable[str]:
def get_classes_used_by(cls: ql.Class, is_impl: bool) -> typing.List[str]:
- return sorted(set(t for t in get_types_used_by(cls, is_impl) if t[0].isupper() and (is_impl or t != cls.name)))
+ return sorted(
+ set(
+ t
+ for t in get_types_used_by(cls, is_impl)
+ if t[0].isupper() and (is_impl or t != cls.name)
+ )
+ )
def format(codeql, files):
@@ -265,7 +302,8 @@ def format(codeql, files):
codeql_path = shutil.which(codeql)
if not codeql_path:
raise FormatError(
- f"`{codeql}` not found in PATH. Either install it, or pass `-- --codeql-binary` with a full path")
+ f"`{codeql}` not found in PATH. Either install it, or pass `-- --codeql-binary` with a full path"
+ )
codeql = codeql_path
res = subprocess.run(format_cmd, stderr=subprocess.PIPE, text=True)
if res.returncode:
@@ -281,16 +319,22 @@ def _get_path(cls: schema.Class) -> pathlib.Path:
def _get_path_impl(cls: schema.Class) -> pathlib.Path:
- return pathlib.Path(cls.group or "", "internal", cls.name+"Impl").with_suffix(".qll")
+ return pathlib.Path(cls.group or "", "internal", cls.name + "Impl").with_suffix(
+ ".qll"
+ )
def _get_path_public(cls: schema.Class) -> pathlib.Path:
- return pathlib.Path(cls.group or "", "internal" if "ql_internal" in cls.pragmas else "", cls.name).with_suffix(".qll")
+ return pathlib.Path(
+ cls.group or "", "internal" if "ql_internal" in cls.pragmas else "", cls.name
+ ).with_suffix(".qll")
-def _get_all_properties(cls: schema.Class, lookup: typing.Dict[str, schema.Class],
- already_seen: typing.Optional[typing.Set[int]] = None) -> \
- typing.Iterable[typing.Tuple[schema.Class, schema.Property]]:
+def _get_all_properties(
+ cls: schema.Class,
+ lookup: typing.Dict[str, schema.Class],
+ already_seen: typing.Optional[typing.Set[int]] = None,
+) -> typing.Iterable[typing.Tuple[schema.Class, schema.Property]]:
# deduplicate using ids
if already_seen is None:
already_seen = set()
@@ -304,14 +348,19 @@ def _get_all_properties(cls: schema.Class, lookup: typing.Dict[str, schema.Class
yield cls, p
-def _get_all_properties_to_be_tested(cls: schema.Class, lookup: typing.Dict[str, schema.Class]) -> \
- typing.Iterable[ql.PropertyForTest]:
+def _get_all_properties_to_be_tested(
+ cls: schema.Class, lookup: typing.Dict[str, schema.Class]
+) -> typing.Iterable[ql.PropertyForTest]:
for c, p in _get_all_properties(cls, lookup):
if not ("qltest_skip" in c.pragmas or "qltest_skip" in p.pragmas):
# TODO here operations are duplicated, but should be better if we split ql and qltest generation
p = get_ql_property(c, p, lookup)
- yield ql.PropertyForTest(p.getter, is_total=p.is_single or p.is_predicate,
- type=p.type if not p.is_predicate else None, is_indexed=p.is_indexed)
+ yield ql.PropertyForTest(
+ p.getter,
+ is_total=p.is_single or p.is_predicate,
+ type=p.type if not p.is_predicate else None,
+ is_indexed=p.is_indexed,
+ )
if p.is_repeated and not p.is_optional:
yield ql.PropertyForTest(f"getNumberOf{p.plural}", type="int")
elif p.is_optional and not p.is_repeated:
@@ -324,33 +373,45 @@ def _partition_iter(x, pred):
def _partition(l, pred):
- """ partitions a list according to boolean predicate """
+ """partitions a list according to boolean predicate"""
return map(list, _partition_iter(l, pred))
-def _is_in_qltest_collapsed_hierarchy(cls: schema.Class, lookup: typing.Dict[str, schema.Class]):
- return "qltest_collapse_hierarchy" in cls.pragmas or _is_under_qltest_collapsed_hierarchy(cls, lookup)
+def _is_in_qltest_collapsed_hierarchy(
+ cls: schema.Class, lookup: typing.Dict[str, schema.Class]
+):
+ return (
+ "qltest_collapse_hierarchy" in cls.pragmas
+ or _is_under_qltest_collapsed_hierarchy(cls, lookup)
+ )
-def _is_under_qltest_collapsed_hierarchy(cls: schema.Class, lookup: typing.Dict[str, schema.Class]):
+def _is_under_qltest_collapsed_hierarchy(
+ cls: schema.Class, lookup: typing.Dict[str, schema.Class]
+):
return "qltest_uncollapse_hierarchy" not in cls.pragmas and any(
- _is_in_qltest_collapsed_hierarchy(lookup[b], lookup) for b in cls.bases)
+ _is_in_qltest_collapsed_hierarchy(lookup[b], lookup) for b in cls.bases
+ )
def should_skip_qltest(cls: schema.Class, lookup: typing.Dict[str, schema.Class]):
- return "qltest_skip" in cls.pragmas or not (
- cls.final or "qltest_collapse_hierarchy" in cls.pragmas) or _is_under_qltest_collapsed_hierarchy(
- cls, lookup)
+ return (
+ "qltest_skip" in cls.pragmas
+ or not (cls.final or "qltest_collapse_hierarchy" in cls.pragmas)
+ or _is_under_qltest_collapsed_hierarchy(cls, lookup)
+ )
-def _get_stub(cls: schema.Class, base_import: str, generated_import_prefix: str) -> ql.Stub:
+def _get_stub(
+ cls: schema.Class, base_import: str, generated_import_prefix: str
+) -> ql.Stub:
if isinstance(cls.synth, schema.SynthInfo):
if cls.synth.from_class is not None:
accessors = [
ql.SynthUnderlyingAccessor(
argument="Entity",
type=_to_db_type(cls.synth.from_class),
- constructorparams=["result"]
+ constructorparams=["result"],
)
]
elif cls.synth.on_arguments is not None:
@@ -358,28 +419,39 @@ def _get_stub(cls: schema.Class, base_import: str, generated_import_prefix: str)
ql.SynthUnderlyingAccessor(
argument=inflection.camelize(arg),
type=_to_db_type(type),
- constructorparams=["result" if a == arg else "_" for a in cls.synth.on_arguments]
- ) for arg, type in cls.synth.on_arguments.items()
+ constructorparams=[
+ "result" if a == arg else "_" for a in cls.synth.on_arguments
+ ],
+ )
+ for arg, type in cls.synth.on_arguments.items()
]
else:
accessors = []
- return ql.Stub(name=cls.name, base_import=base_import, import_prefix=generated_import_prefix,
- doc=cls.doc, synth_accessors=accessors)
+ return ql.Stub(
+ name=cls.name,
+ base_import=base_import,
+ import_prefix=generated_import_prefix,
+ doc=cls.doc,
+ synth_accessors=accessors,
+ )
def _get_class_public(cls: schema.Class) -> ql.ClassPublic:
- return ql.ClassPublic(name=cls.name, doc=cls.doc, internal="ql_internal" in cls.pragmas)
+ return ql.ClassPublic(
+ name=cls.name, doc=cls.doc, internal="ql_internal" in cls.pragmas
+ )
_stub_qldoc_header = "// the following QLdoc is generated: if you need to edit it, do it in the schema file\n "
_class_qldoc_re = re.compile(
rf"(?P(?:{re.escape(_stub_qldoc_header)})?/\*\*.*?\*/\s*|^\s*)(?:class\s+(?P\w+))?",
- re.MULTILINE | re.DOTALL)
+ re.MULTILINE | re.DOTALL,
+)
def _patch_class_qldoc(cls: str, qldoc: str, stub_file: pathlib.Path):
- """ Replace or insert `qldoc` as the QLdoc of class `cls` in `stub_file` """
+ """Replace or insert `qldoc` as the QLdoc of class `cls` in `stub_file`"""
if not qldoc or not stub_file.exists():
return
qldoc = "\n ".join(l.rstrip() for l in qldoc.splitlines())
@@ -415,7 +487,11 @@ def generate(opts, renderer):
data = schemaloader.load_file(input)
- classes = {name: get_ql_class(cls, data.classes) for name, cls in data.classes.items() if not cls.imported}
+ classes = {
+ name: get_ql_class(cls, data.classes)
+ for name, cls in data.classes.items()
+ if not cls.imported
+ }
if not classes:
raise NoClasses
root = next(iter(classes.values()))
@@ -429,28 +505,47 @@ def generate(opts, renderer):
cfg_classes = []
generated_import_prefix = get_import(out, opts.root_dir)
registry = opts.generated_registry or pathlib.Path(
- os.path.commonpath((out, stub_out, test_out)), ".generated.list")
+ os.path.commonpath((out, stub_out, test_out)), ".generated.list"
+ )
- with renderer.manage(generated=generated, stubs=stubs, registry=registry,
- force=opts.force) as renderer:
+ with renderer.manage(
+ generated=generated, stubs=stubs, registry=registry, force=opts.force
+ ) as renderer:
- db_classes = [cls for name, cls in classes.items() if not data.classes[name].synth]
- renderer.render(ql.DbClasses(classes=db_classes, imports=sorted(set(pre_imports.values()))), out / "Raw.qll")
+ db_classes = [
+ cls for name, cls in classes.items() if not data.classes[name].synth
+ ]
+ renderer.render(
+ ql.DbClasses(classes=db_classes, imports=sorted(set(pre_imports.values()))),
+ out / "Raw.qll",
+ )
- classes_by_dir_and_name = sorted(classes.values(), key=lambda cls: (cls.dir, cls.name))
+ classes_by_dir_and_name = sorted(
+ classes.values(), key=lambda cls: (cls.dir, cls.name)
+ )
for c in classes_by_dir_and_name:
- path = get_import(stub_out / c.dir / "internal" /
- c.name if c.internal else stub_out / c.path, opts.root_dir)
+ path = get_import(
+ (
+ stub_out / c.dir / "internal" / c.name
+ if c.internal
+ else stub_out / c.path
+ ),
+ opts.root_dir,
+ )
imports[c.name] = path
- path_impl = get_import(stub_out / c.dir / "internal" / c.name, opts.root_dir)
+ path_impl = get_import(
+ stub_out / c.dir / "internal" / c.name, opts.root_dir
+ )
imports_impl[c.name + "Impl"] = path_impl + "Impl"
if c.cfg:
cfg_classes.append(get_ql_cfg_class(c, classes))
for c in classes.values():
qll = out / c.path.with_suffix(".qll")
- c.imports = [imports[t] if t in imports else imports_impl[t] +
- "::Impl as " + t for t in get_classes_used_by(c, is_impl=True)]
+ c.imports = [
+ imports[t] if t in imports else imports_impl[t] + "::Impl as " + t
+ for t in get_classes_used_by(c, is_impl=True)
+ ]
classes_used_by[c.name] = get_classes_used_by(c, is_impl=False)
c.import_prefix = generated_import_prefix
renderer.render(c, qll)
@@ -458,7 +553,7 @@ def generate(opts, renderer):
if cfg_out:
cfg_classes_val = ql.CfgClasses(
include_file_import=get_import(include_file, opts.root_dir),
- classes=cfg_classes
+ classes=cfg_classes,
)
cfg_qll = cfg_out / "CfgNodes.qll"
renderer.render(cfg_classes_val, cfg_qll)
@@ -475,7 +570,7 @@ def generate(opts, renderer):
if not renderer.is_customized_stub(stub_file):
renderer.render(stub, stub_file)
else:
- qldoc = renderer.render_str(stub, template='ql_stub_class_qldoc')
+ qldoc = renderer.render_str(stub, template="ql_stub_class_qldoc")
_patch_class_qldoc(c.name, qldoc, stub_file)
class_public = _get_class_public(c)
path_public = _get_path_public(c)
@@ -484,18 +579,31 @@ def generate(opts, renderer):
renderer.render(class_public, class_public_file)
# for example path/to/elements -> path/to/elements.qll
- renderer.render(ql.ImportList([i for name, i in imports.items() if name not in classes or not classes[name].internal]),
- include_file)
+ renderer.render(
+ ql.ImportList(
+ [
+ i
+ for name, i in imports.items()
+ if name not in classes or not classes[name].internal
+ ]
+ ),
+ include_file,
+ )
elements_module = get_import(include_file, opts.root_dir)
renderer.render(
ql.GetParentImplementation(
classes=list(classes.values()),
- imports=[elements_module] + [i for name,
- i in imports.items() if name in classes and classes[name].internal],
+ imports=[elements_module]
+ + [
+ i
+ for name, i in imports.items()
+ if name in classes and classes[name].internal
+ ],
),
- out / 'ParentChild.qll')
+ out / "ParentChild.qll",
+ )
if test_out:
for c in data.classes.values():
@@ -507,39 +615,61 @@ def generate(opts, renderer):
test_with = data.classes[test_with_name] if test_with_name else c
test_dir = test_out / test_with.group / test_with.name
test_dir.mkdir(parents=True, exist_ok=True)
- if all(f.suffix in (".txt", ".ql", ".actual", ".expected") for f in test_dir.glob("*.*")):
+ if all(
+ f.suffix in (".txt", ".ql", ".actual", ".expected")
+ for f in test_dir.glob("*.*")
+ ):
log.warning(f"no test source in {test_dir.relative_to(test_out)}")
- renderer.render(ql.MissingTestInstructions(),
- test_dir / missing_test_source_filename)
+ renderer.render(
+ ql.MissingTestInstructions(),
+ test_dir / missing_test_source_filename,
+ )
continue
- total_props, partial_props = _partition(_get_all_properties_to_be_tested(c, data.classes),
- lambda p: p.is_total)
- renderer.render(ql.ClassTester(class_name=c.name,
- properties=total_props,
- elements_module=elements_module,
- # in case of collapsed hierarchies we want to see the actual QL class in results
- show_ql_class="qltest_collapse_hierarchy" in c.pragmas),
- test_dir / f"{c.name}.ql")
+ total_props, partial_props = _partition(
+ _get_all_properties_to_be_tested(c, data.classes),
+ lambda p: p.is_total,
+ )
+ renderer.render(
+ ql.ClassTester(
+ class_name=c.name,
+ properties=total_props,
+ elements_module=elements_module,
+ # in case of collapsed hierarchies we want to see the actual QL class in results
+ show_ql_class="qltest_collapse_hierarchy" in c.pragmas,
+ ),
+ test_dir / f"{c.name}.ql",
+ )
for p in partial_props:
- renderer.render(ql.PropertyTester(class_name=c.name,
- elements_module=elements_module,
- property=p), test_dir / f"{c.name}_{p.getter}.ql")
+ renderer.render(
+ ql.PropertyTester(
+ class_name=c.name,
+ elements_module=elements_module,
+ property=p,
+ ),
+ test_dir / f"{c.name}_{p.getter}.ql",
+ )
final_synth_types = []
non_final_synth_types = []
constructor_imports = []
synth_constructor_imports = []
stubs = {}
- for cls in sorted((cls for cls in data.classes.values() if not cls.imported),
- key=lambda cls: (cls.group, cls.name)):
+ for cls in sorted(
+ (cls for cls in data.classes.values() if not cls.imported),
+ key=lambda cls: (cls.group, cls.name),
+ ):
synth_type = get_ql_synth_class(cls)
if synth_type.is_final:
final_synth_types.append(synth_type)
if synth_type.has_params:
- stub_file = stub_out / cls.group / "internal" / f"{cls.name}Constructor.qll"
+ stub_file = (
+ stub_out / cls.group / "internal" / f"{cls.name}Constructor.qll"
+ )
if not renderer.is_customized_stub(stub_file):
# stub rendering must be postponed as we might not have yet all subtracted synth types in `synth_type`
- stubs[stub_file] = ql.Synth.ConstructorStub(synth_type, import_prefix=generated_import_prefix)
+ stubs[stub_file] = ql.Synth.ConstructorStub(
+ synth_type, import_prefix=generated_import_prefix
+ )
constructor_import = get_import(stub_file, opts.root_dir)
constructor_imports.append(constructor_import)
if synth_type.is_synth:
@@ -549,9 +679,20 @@ def generate(opts, renderer):
for stub_file, data in stubs.items():
renderer.render(data, stub_file)
- renderer.render(ql.Synth.Types(root.name, generated_import_prefix,
- final_synth_types, non_final_synth_types), out / "Synth.qll")
- renderer.render(ql.ImportList(constructor_imports), out / "SynthConstructors.qll")
- renderer.render(ql.ImportList(synth_constructor_imports), out / "PureSynthConstructors.qll")
+ renderer.render(
+ ql.Synth.Types(
+ root.name,
+ generated_import_prefix,
+ final_synth_types,
+ non_final_synth_types,
+ ),
+ out / "Synth.qll",
+ )
+ renderer.render(
+ ql.ImportList(constructor_imports), out / "SynthConstructors.qll"
+ )
+ renderer.render(
+ ql.ImportList(synth_constructor_imports), out / "PureSynthConstructors.qll"
+ )
if opts.ql_format:
format(opts.codeql_binary, renderer.written)
diff --git a/misc/codegen/generators/rustgen.py b/misc/codegen/generators/rustgen.py
index d7025830bcbd..1f373151d6ad 100644
--- a/misc/codegen/generators/rustgen.py
+++ b/misc/codegen/generators/rustgen.py
@@ -55,7 +55,8 @@ def _get_field(cls: schema.Class, p: schema.Property) -> rust.Field:
def _get_properties(
- cls: schema.Class, lookup: dict[str, schema.ClassBase],
+ cls: schema.Class,
+ lookup: dict[str, schema.ClassBase],
) -> typing.Iterable[tuple[schema.Class, schema.Property]]:
for b in cls.bases:
yield from _get_properties(lookup[b], lookup)
@@ -92,8 +93,9 @@ def _get_class(self, name: str) -> rust.Class:
# only generate detached fields in the actual class defining them, not the derived ones
if c is cls:
# TODO lift this restriction if required (requires change in dbschemegen as well)
- assert c.derived or not p.is_single, \
- f"property {p.name} in concrete class marked as detached but not optional"
+ assert (
+ c.derived or not p.is_single
+ ), f"property {p.name} in concrete class marked as detached but not optional"
detached_fields.append(_get_field(c, p))
elif not cls.derived:
# for non-detached ones, only generate fields in the concrete classes
@@ -123,10 +125,12 @@ def generate(opts, renderer):
processor = Processor(schemaloader.load_file(opts.schema))
out = opts.rust_output
groups = set()
- with renderer.manage(generated=out.rglob("*.rs"),
- stubs=(),
- registry=out / ".generated.list",
- force=opts.force) as renderer:
+ with renderer.manage(
+ generated=out.rglob("*.rs"),
+ stubs=(),
+ registry=out / ".generated.list",
+ force=opts.force,
+ ) as renderer:
for group, classes in processor.get_classes().items():
group = group or "top"
groups.add(group)
diff --git a/misc/codegen/generators/rusttestgen.py b/misc/codegen/generators/rusttestgen.py
index e7a23fedacdc..a46d2584127b 100644
--- a/misc/codegen/generators/rusttestgen.py
+++ b/misc/codegen/generators/rusttestgen.py
@@ -42,7 +42,9 @@ def _get_code(doc: list[str]) -> list[str]:
code.append(f"// {line}")
case _, True:
code.append(line)
- assert not adding_code, "Unterminated code block in docstring:\n " + "\n ".join(doc)
+ assert not adding_code, "Unterminated code block in docstring:\n " + "\n ".join(
+ doc
+ )
if has_code:
return code
return []
@@ -51,15 +53,19 @@ def _get_code(doc: list[str]) -> list[str]:
def generate(opts, renderer):
assert opts.ql_test_output
schema = schemaloader.load_file(opts.schema)
- with renderer.manage(generated=opts.ql_test_output.rglob("gen_*.rs"),
- stubs=(),
- registry=opts.ql_test_output / ".generated_tests.list",
- force=opts.force) as renderer:
+ with renderer.manage(
+ generated=opts.ql_test_output.rglob("gen_*.rs"),
+ stubs=(),
+ registry=opts.ql_test_output / ".generated_tests.list",
+ force=opts.force,
+ ) as renderer:
for cls in schema.classes.values():
if cls.imported:
continue
- if (qlgen.should_skip_qltest(cls, schema.classes) or
- "rust_skip_doc_test" in cls.pragmas):
+ if (
+ qlgen.should_skip_qltest(cls, schema.classes)
+ or "rust_skip_doc_test" in cls.pragmas
+ ):
continue
code = _get_code(cls.doc)
for p in schema.iter_properties(cls.name):
@@ -79,5 +85,10 @@ def generate(opts, renderer):
code = [indent + l for l in code]
test_with_name = typing.cast(str, cls.pragmas.get("qltest_test_with"))
test_with = schema.classes[test_with_name] if test_with_name else cls
- test = opts.ql_test_output / test_with.group / test_with.name / f"gen_{test_name}.rs"
+ test = (
+ opts.ql_test_output
+ / test_with.group
+ / test_with.name
+ / f"gen_{test_name}.rs"
+ )
renderer.render(TestCode(code="\n".join(code), function=fn), test)
diff --git a/misc/codegen/generators/trapgen.py b/misc/codegen/generators/trapgen.py
index e22b3e4e0e73..1f33fd4a0ff8 100755
--- a/misc/codegen/generators/trapgen.py
+++ b/misc/codegen/generators/trapgen.py
@@ -86,13 +86,18 @@ def generate(opts, renderer):
for dir, entries in traps.items():
dir = dir or pathlib.Path()
relative_gen_dir = pathlib.Path(*[".." for _ in dir.parents])
- renderer.render(cpp.TrapList(entries, opts.dbscheme, trap_library, relative_gen_dir), out / dir / "TrapEntries")
+ renderer.render(
+ cpp.TrapList(entries, opts.dbscheme, trap_library, relative_gen_dir),
+ out / dir / "TrapEntries",
+ )
tags = []
for tag in toposort_flatten(tag_graph):
- tags.append(cpp.Tag(
- name=get_tag_name(tag),
- bases=[get_tag_name(b) for b in sorted(tag_graph[tag])],
- id=tag,
- ))
+ tags.append(
+ cpp.Tag(
+ name=get_tag_name(tag),
+ bases=[get_tag_name(b) for b in sorted(tag_graph[tag])],
+ id=tag,
+ )
+ )
renderer.render(cpp.TagList(tags, opts.dbscheme), out / "TrapTags")
diff --git a/misc/codegen/lib/cpp.py b/misc/codegen/lib/cpp.py
index eed7aba045cb..2b8c504caacd 100644
--- a/misc/codegen/lib/cpp.py
+++ b/misc/codegen/lib/cpp.py
@@ -4,20 +4,111 @@
from typing import List, ClassVar
# taken from https://en.cppreference.com/w/cpp/keyword
-cpp_keywords = {"alignas", "alignof", "and", "and_eq", "asm", "atomic_cancel", "atomic_commit", "atomic_noexcept",
- "auto", "bitand", "bitor", "bool", "break", "case", "catch", "char", "char8_t", "char16_t", "char32_t",
- "class", "compl", "concept", "const", "consteval", "constexpr", "constinit", "const_cast", "continue",
- "co_await", "co_return", "co_yield", "decltype", "default", "delete", "do", "double", "dynamic_cast",
- "else", "enum", "explicit", "export", "extern", "false", "float", "for", "friend", "goto", "if",
- "inline", "int", "long", "mutable", "namespace", "new", "noexcept", "not", "not_eq", "nullptr",
- "operator", "or", "or_eq", "private", "protected", "public", "reflexpr", "register", "reinterpret_cast",
- "requires", "return", "short", "signed", "sizeof", "static", "static_assert", "static_cast", "struct",
- "switch", "synchronized", "template", "this", "thread_local", "throw", "true", "try", "typedef",
- "typeid", "typename", "union", "unsigned", "using", "virtual", "void", "volatile", "wchar_t", "while",
- "xor", "xor_eq"}
+cpp_keywords = {
+ "alignas",
+ "alignof",
+ "and",
+ "and_eq",
+ "asm",
+ "atomic_cancel",
+ "atomic_commit",
+ "atomic_noexcept",
+ "auto",
+ "bitand",
+ "bitor",
+ "bool",
+ "break",
+ "case",
+ "catch",
+ "char",
+ "char8_t",
+ "char16_t",
+ "char32_t",
+ "class",
+ "compl",
+ "concept",
+ "const",
+ "consteval",
+ "constexpr",
+ "constinit",
+ "const_cast",
+ "continue",
+ "co_await",
+ "co_return",
+ "co_yield",
+ "decltype",
+ "default",
+ "delete",
+ "do",
+ "double",
+ "dynamic_cast",
+ "else",
+ "enum",
+ "explicit",
+ "export",
+ "extern",
+ "false",
+ "float",
+ "for",
+ "friend",
+ "goto",
+ "if",
+ "inline",
+ "int",
+ "long",
+ "mutable",
+ "namespace",
+ "new",
+ "noexcept",
+ "not",
+ "not_eq",
+ "nullptr",
+ "operator",
+ "or",
+ "or_eq",
+ "private",
+ "protected",
+ "public",
+ "reflexpr",
+ "register",
+ "reinterpret_cast",
+ "requires",
+ "return",
+ "short",
+ "signed",
+ "sizeof",
+ "static",
+ "static_assert",
+ "static_cast",
+ "struct",
+ "switch",
+ "synchronized",
+ "template",
+ "this",
+ "thread_local",
+ "throw",
+ "true",
+ "try",
+ "typedef",
+ "typeid",
+ "typename",
+ "union",
+ "unsigned",
+ "using",
+ "virtual",
+ "void",
+ "volatile",
+ "wchar_t",
+ "while",
+ "xor",
+ "xor_eq",
+}
_field_overrides = [
- (re.compile(r"(start|end)_(line|column)|(.*_)?index|width|num_.*"), {"base_type": "unsigned"}),
+ (
+ re.compile(r"(start|end)_(line|column)|(.*_)?index|width|num_.*"),
+ {"base_type": "unsigned"},
+ ),
(re.compile(r"(.*)_"), lambda m: {"field_name": m[1]}),
]
@@ -108,7 +199,7 @@ def has_bases(self):
@dataclass
class TrapList:
- template: ClassVar = 'trap_traps'
+ template: ClassVar = "trap_traps"
extensions = ["h", "cpp"]
traps: List[Trap]
source: str
@@ -118,7 +209,7 @@ class TrapList:
@dataclass
class TagList:
- template: ClassVar = 'trap_tags'
+ template: ClassVar = "trap_tags"
extensions = ["h"]
tags: List[Tag]
@@ -127,7 +218,7 @@ class TagList:
@dataclass
class ClassBase:
- ref: 'Class'
+ ref: "Class"
first: bool = False
@@ -140,7 +231,9 @@ class Class:
trap_name: str = None
def __post_init__(self):
- self.bases = [ClassBase(c) for c in sorted(self.bases, key=lambda cls: cls.name)]
+ self.bases = [
+ ClassBase(c) for c in sorted(self.bases, key=lambda cls: cls.name)
+ ]
if self.bases:
self.bases[0].first = True
diff --git a/misc/codegen/lib/dbscheme.py b/misc/codegen/lib/dbscheme.py
index eee0191b6788..03c9878d7f11 100644
--- a/misc/codegen/lib/dbscheme.py
+++ b/misc/codegen/lib/dbscheme.py
@@ -1,4 +1,4 @@
-""" dbscheme format representation """
+"""dbscheme format representation"""
import logging
import pathlib
@@ -100,7 +100,7 @@ class SchemeInclude:
@dataclass
class Scheme:
- template: ClassVar = 'dbscheme'
+ template: ClassVar = "dbscheme"
src: str
includes: List[SchemeInclude]
diff --git a/misc/codegen/lib/paths.py b/misc/codegen/lib/paths.py
index b102987a2267..f56bbb9d8171 100644
--- a/misc/codegen/lib/paths.py
+++ b/misc/codegen/lib/paths.py
@@ -1,4 +1,4 @@
-""" module providing useful filesystem paths """
+"""module providing useful filesystem paths"""
import pathlib
import sys
@@ -7,13 +7,15 @@
_this_file = pathlib.Path(__file__).resolve()
try:
- workspace_dir = pathlib.Path(os.environ['BUILD_WORKSPACE_DIRECTORY']).resolve() # <- means we are using bazel run
- root_dir = workspace_dir / 'swift'
+ workspace_dir = pathlib.Path(
+ os.environ["BUILD_WORKSPACE_DIRECTORY"]
+ ).resolve() # <- means we are using bazel run
+ root_dir = workspace_dir / "swift"
except KeyError:
root_dir = _this_file.parents[2]
workspace_dir = root_dir.parent
-lib_dir = _this_file.parents[2] / 'codegen' / 'lib'
-templates_dir = _this_file.parents[2] / 'codegen' / 'templates'
+lib_dir = _this_file.parents[2] / "codegen" / "lib"
+templates_dir = _this_file.parents[2] / "codegen" / "templates"
exe_file = pathlib.Path(sys.argv[0]).resolve()
diff --git a/misc/codegen/lib/ql.py b/misc/codegen/lib/ql.py
index 0200477eb32c..7537aac995c5 100644
--- a/misc/codegen/lib/ql.py
+++ b/misc/codegen/lib/ql.py
@@ -100,7 +100,7 @@ def __str__(self):
@dataclass
class Class:
- template: ClassVar = 'ql_class'
+ template: ClassVar = "ql_class"
name: str
bases: List[Base] = field(default_factory=list)
@@ -116,7 +116,12 @@ class Class:
cfg: bool = False
def __post_init__(self):
- def get_bases(bases): return [Base(str(b), str(prev)) for b, prev in zip(bases, itertools.chain([""], bases))]
+ def get_bases(bases):
+ return [
+ Base(str(b), str(prev))
+ for b, prev in zip(bases, itertools.chain([""], bases))
+ ]
+
self.bases = get_bases(self.bases)
self.bases_impl = get_bases(self.bases_impl)
if self.properties:
@@ -164,7 +169,7 @@ def __post_init__(self):
@dataclass
class Stub:
- template: ClassVar = 'ql_stub'
+ template: ClassVar = "ql_stub"
name: str
base_import: str
@@ -183,7 +188,7 @@ def has_qldoc(self) -> bool:
@dataclass
class ClassPublic:
- template: ClassVar = 'ql_class_public'
+ template: ClassVar = "ql_class_public"
name: str
imports: List[str] = field(default_factory=list)
@@ -197,7 +202,7 @@ def has_qldoc(self) -> bool:
@dataclass
class DbClasses:
- template: ClassVar = 'ql_db'
+ template: ClassVar = "ql_db"
classes: List[Class] = field(default_factory=list)
imports: List[str] = field(default_factory=list)
@@ -205,14 +210,14 @@ class DbClasses:
@dataclass
class ImportList:
- template: ClassVar = 'ql_imports'
+ template: ClassVar = "ql_imports"
imports: List[str] = field(default_factory=list)
@dataclass
class GetParentImplementation:
- template: ClassVar = 'ql_parent'
+ template: ClassVar = "ql_parent"
classes: List[Class] = field(default_factory=list)
imports: List[str] = field(default_factory=list)
@@ -234,7 +239,7 @@ class TesterBase:
@dataclass
class ClassTester(TesterBase):
- template: ClassVar = 'ql_test_class'
+ template: ClassVar = "ql_test_class"
properties: List[PropertyForTest] = field(default_factory=list)
show_ql_class: bool = False
@@ -242,14 +247,14 @@ class ClassTester(TesterBase):
@dataclass
class PropertyTester(TesterBase):
- template: ClassVar = 'ql_test_property'
+ template: ClassVar = "ql_test_property"
property: PropertyForTest
@dataclass
class MissingTestInstructions:
- template: ClassVar = 'ql_test_missing'
+ template: ClassVar = "ql_test_missing"
class Synth:
@@ -306,7 +311,9 @@ class FinalClassDb(FinalClass):
subtracted_synth_types: List["Synth.Class"] = field(default_factory=list)
def subtract_type(self, type: str):
- self.subtracted_synth_types.append(Synth.Class(type, first=not self.subtracted_synth_types))
+ self.subtracted_synth_types.append(
+ Synth.Class(type, first=not self.subtracted_synth_types)
+ )
@property
def has_subtracted_synth_types(self) -> bool:
@@ -357,6 +364,6 @@ class CfgClass:
@dataclass
class CfgClasses:
- template: ClassVar = 'ql_cfg_nodes'
+ template: ClassVar = "ql_cfg_nodes"
include_file_import: Optional[str] = None
classes: List[CfgClass] = field(default_factory=list)
diff --git a/misc/codegen/lib/render.py b/misc/codegen/lib/render.py
index ac43a515de10..5ab746107ee7 100644
--- a/misc/codegen/lib/render.py
+++ b/misc/codegen/lib/render.py
@@ -1,4 +1,4 @@
-""" template renderer module, wrapping around `pystache.Renderer`
+"""template renderer module, wrapping around `pystache.Renderer`
`pystache` is a python mustache engine, and mustache is a template language. More information on
@@ -23,14 +23,21 @@ class Error(Exception):
class Renderer:
- """ Template renderer using mustache templates in the `templates` directory """
+ """Template renderer using mustache templates in the `templates` directory"""
def __init__(self, generator: pathlib.Path):
- self._r = pystache.Renderer(search_dirs=str(paths.templates_dir), escape=lambda u: u)
+ self._r = pystache.Renderer(
+ search_dirs=str(paths.templates_dir), escape=lambda u: u
+ )
self._generator = generator
- def render(self, data: object, output: typing.Optional[pathlib.Path], template: typing.Optional[str] = None):
- """ Render `data` to `output`.
+ def render(
+ self,
+ data: object,
+ output: typing.Optional[pathlib.Path],
+ template: typing.Optional[str] = None,
+ ):
+ """Render `data` to `output`.
`data` must have a `template` attribute denoting which template to use from the template directory.
@@ -58,13 +65,18 @@ def _do_write(self, mnemonic: str, contents: str, output: pathlib.Path):
out.write(contents)
log.debug(f"{mnemonic}: generated {output.name}")
- def manage(self, generated: typing.Iterable[pathlib.Path], stubs: typing.Iterable[pathlib.Path],
- registry: pathlib.Path, force: bool = False) -> "RenderManager":
+ def manage(
+ self,
+ generated: typing.Iterable[pathlib.Path],
+ stubs: typing.Iterable[pathlib.Path],
+ registry: pathlib.Path,
+ force: bool = False,
+ ) -> "RenderManager":
return RenderManager(self._generator, generated, stubs, registry, force)
class RenderManager(Renderer):
- """ A context manager allowing to manage checked in generated files and their cleanup, able
+ """A context manager allowing to manage checked in generated files and their cleanup, able
to skip unneeded writes.
This is done by using and updating a checked in list of generated files that assigns two
@@ -74,6 +86,7 @@ class RenderManager(Renderer):
* the other is the hash of the actual file after code generation has finished. This will be
different from the above because of post-processing like QL formatting. This hash is used
to detect invalid modification of generated files"""
+
written: typing.Set[pathlib.Path]
@dataclass
@@ -82,12 +95,18 @@ class Hashes:
pre contains the hash of a file as rendered, post is the hash after
postprocessing (for example QL formatting)
"""
+
pre: str
post: typing.Optional[str] = None
- def __init__(self, generator: pathlib.Path, generated: typing.Iterable[pathlib.Path],
- stubs: typing.Iterable[pathlib.Path],
- registry: pathlib.Path, force: bool = False):
+ def __init__(
+ self,
+ generator: pathlib.Path,
+ generated: typing.Iterable[pathlib.Path],
+ stubs: typing.Iterable[pathlib.Path],
+ registry: pathlib.Path,
+ force: bool = False,
+ ):
super().__init__(generator)
self._registry_path = registry
self._force = force
@@ -142,10 +161,14 @@ def _process_generated(self, generated: typing.Iterable[pathlib.Path]):
if self._force:
pass
elif rel_path not in self._hashes:
- log.warning(f"{rel_path} marked as generated but absent from the registry")
+ log.warning(
+ f"{rel_path} marked as generated but absent from the registry"
+ )
elif self._hashes[rel_path].post != self._hash_file(f):
- raise Error(f"{rel_path} is generated but was modified, please revert the file "
- "or pass --force to overwrite")
+ raise Error(
+ f"{rel_path} is generated but was modified, please revert the file "
+ "or pass --force to overwrite"
+ )
def _process_stubs(self, stubs: typing.Iterable[pathlib.Path]):
for f in stubs:
@@ -159,8 +182,10 @@ def _process_stubs(self, stubs: typing.Iterable[pathlib.Path]):
elif rel_path not in self._hashes:
log.warning(f"{rel_path} marked as stub but absent from the registry")
elif self._hashes[rel_path].post != self._hash_file(f):
- raise Error(f"{rel_path} is a stub marked as generated, but it was modified, "
- "please remove the `// generated` header, revert the file or pass --force to overwrite it")
+ raise Error(
+ f"{rel_path} is a stub marked as generated, but it was modified, "
+ "please remove the `// generated` header, revert the file or pass --force to overwrite it"
+ )
@staticmethod
def is_customized_stub(file: pathlib.Path) -> bool:
@@ -191,13 +216,17 @@ def _load_registry(self):
for line in reg:
if line.strip():
filename, prehash, posthash = line.split()
- self._hashes[pathlib.Path(filename)] = self.Hashes(prehash, posthash)
+ self._hashes[pathlib.Path(filename)] = self.Hashes(
+ prehash, posthash
+ )
except FileNotFoundError:
pass
def _dump_registry(self):
self._registry_path.parent.mkdir(parents=True, exist_ok=True)
- with open(self._registry_path, 'w') as out, open(self._registry_path.parent / ".gitattributes", "w") as attrs:
+ with open(self._registry_path, "w") as out, open(
+ self._registry_path.parent / ".gitattributes", "w"
+ ) as attrs:
print(f"/{self._registry_path.name}", "linguist-generated", file=attrs)
print("/.gitattributes", "linguist-generated", file=attrs)
for f, hashes in sorted(self._hashes.items()):
diff --git a/misc/codegen/lib/schema.py b/misc/codegen/lib/schema.py
index 5178e61d3844..efcfb5c5fc2e 100644
--- a/misc/codegen/lib/schema.py
+++ b/misc/codegen/lib/schema.py
@@ -1,4 +1,5 @@
-""" schema format representation """
+"""schema format representation"""
+
import abc
import typing
from collections.abc import Iterable
@@ -52,7 +53,11 @@ def is_optional(self) -> bool:
@property
def is_repeated(self) -> bool:
- return self.kind in (self.Kind.REPEATED, self.Kind.REPEATED_OPTIONAL, self.Kind.REPEATED_UNORDERED)
+ return self.kind in (
+ self.Kind.REPEATED,
+ self.Kind.REPEATED_OPTIONAL,
+ self.Kind.REPEATED_UNORDERED,
+ )
@property
def is_unordered(self) -> bool:
@@ -74,10 +79,11 @@ def has_builtin_type(self) -> bool:
SingleProperty = functools.partial(Property, Property.Kind.SINGLE)
OptionalProperty = functools.partial(Property, Property.Kind.OPTIONAL)
RepeatedProperty = functools.partial(Property, Property.Kind.REPEATED)
-RepeatedOptionalProperty = functools.partial(
- Property, Property.Kind.REPEATED_OPTIONAL)
+RepeatedOptionalProperty = functools.partial(Property, Property.Kind.REPEATED_OPTIONAL)
PredicateProperty = functools.partial(Property, Property.Kind.PREDICATE)
-RepeatedUnorderedProperty = functools.partial(Property, Property.Kind.REPEATED_UNORDERED)
+RepeatedUnorderedProperty = functools.partial(
+ Property, Property.Kind.REPEATED_UNORDERED
+)
@dataclass
@@ -197,9 +203,9 @@ def _make_property(arg: object) -> Property:
class PropertyModifier(abc.ABC):
- """ Modifier of `Property` objects.
- Being on the right of `|` it will trigger construction of a `Property` from
- the left operand.
+ """Modifier of `Property` objects.
+ Being on the right of `|` it will trigger construction of a `Property` from
+ the left operand.
"""
def __ror__(self, other: object) -> Property:
@@ -210,11 +216,9 @@ def __ror__(self, other: object) -> Property:
def __invert__(self) -> "PropertyModifier":
return self.negate()
- def modify(self, prop: Property):
- ...
+ def modify(self, prop: Property): ...
- def negate(self) -> "PropertyModifier":
- ...
+ def negate(self) -> "PropertyModifier": ...
def split_doc(doc):
@@ -224,7 +228,11 @@ def split_doc(doc):
lines = doc.splitlines()
# Determine minimum indentation (first line doesn't count):
strippedlines = (line.lstrip() for line in lines[1:])
- indents = [len(line) - len(stripped) for line, stripped in zip(lines[1:], strippedlines) if stripped]
+ indents = [
+ len(line) - len(stripped)
+ for line, stripped in zip(lines[1:], strippedlines)
+ if stripped
+ ]
# Remove indentation (first line is special):
trimmed = [lines[0].strip()]
if indents:
diff --git a/misc/codegen/lib/schemadefs.py b/misc/codegen/lib/schemadefs.py
index b0cf2b038a8d..5841b9ac874d 100644
--- a/misc/codegen/lib/schemadefs.py
+++ b/misc/codegen/lib/schemadefs.py
@@ -39,7 +39,9 @@ class _DocModifier(_schema.PropertyModifier, metaclass=_DocModifierMetaclass):
def modify(self, prop: _schema.Property):
if self.doc and ("\n" in self.doc or self.doc[-1] == "."):
- raise _schema.Error("No newlines or trailing dots are allowed in doc, did you intend to use desc?")
+ raise _schema.Error(
+ "No newlines or trailing dots are allowed in doc, did you intend to use desc?"
+ )
prop.doc = self.doc
def negate(self) -> _schema.PropertyModifier:
@@ -73,10 +75,13 @@ def include(source: str):
@_dataclass
class _Namespace:
- """ simple namespacing mechanism """
+ """simple namespacing mechanism"""
+
_name: str
- def add(self, pragma: _Union["_PragmaBase", "_Parametrized"], key: str | None = None):
+ def add(
+ self, pragma: _Union["_PragmaBase", "_Parametrized"], key: str | None = None
+ ):
self.__dict__[pragma.pragma] = pragma
pragma.pragma = key or f"{self._name}_{pragma.pragma}"
@@ -110,15 +115,18 @@ def _apply(self, pragmas: _Dict[str, object]) -> None:
@_dataclass
class _ClassPragma(_PragmaBase):
- """ A class pragma.
+ """A class pragma.
For schema classes it acts as a python decorator with `@`.
"""
+
inherited: bool = False
def __call__(self, cls: type) -> type:
- """ use this pragma as a decorator on classes """
+ """use this pragma as a decorator on classes"""
if self.inherited:
- setattr(cls, f"{_schema.inheritable_pragma_prefix}{self.pragma}", self.value)
+ setattr(
+ cls, f"{_schema.inheritable_pragma_prefix}{self.pragma}", self.value
+ )
else:
# not using hasattr as we don't want to land on inherited pragmas
if "_pragmas" not in cls.__dict__:
@@ -129,9 +137,10 @@ def __call__(self, cls: type) -> type:
@_dataclass
class _PropertyPragma(_PragmaBase, _schema.PropertyModifier):
- """ A property pragma.
+ """A property pragma.
It functions similarly to a `_PropertyModifier` with `|`, adding the pragma.
"""
+
remove: bool = False
def modify(self, prop: _schema.Property):
@@ -149,21 +158,23 @@ def _apply(self, pragmas: _Dict[str, object]) -> None:
@_dataclass
class _Pragma(_ClassPragma, _PropertyPragma):
- """ A class or property pragma.
+ """A class or property pragma.
For properties, it functions similarly to a `_PropertyModifier` with `|`, adding the pragma.
For schema classes it acts as a python decorator with `@`.
"""
class _Parametrized[P, **Q, T]:
- """ A parametrized pragma.
+ """A parametrized pragma.
Needs to be applied to a parameter to give a pragma.
"""
def __init__(self, pragma_instance: P, factory: _Callable[Q, T]):
self.pragma_instance = pragma_instance
self.factory = factory
- self.__signature__ = _inspect.signature(self.factory).replace(return_annotation=type(self.pragma_instance))
+ self.__signature__ = _inspect.signature(self.factory).replace(
+ return_annotation=type(self.pragma_instance)
+ )
@property
def pragma(self):
@@ -187,7 +198,8 @@ def modify(self, prop: _schema.Property):
K = _schema.Property.Kind
if prop.kind != K.SINGLE:
raise _schema.Error(
- "optional should only be applied to simple property types")
+ "optional should only be applied to simple property types"
+ )
prop.kind = K.OPTIONAL
@@ -200,7 +212,8 @@ def modify(self, prop: _schema.Property):
prop.kind = K.REPEATED_OPTIONAL
else:
raise _schema.Error(
- "list should only be applied to simple or optional property types")
+ "list should only be applied to simple or optional property types"
+ )
class _Setifier(_schema.PropertyModifier):
@@ -212,7 +225,7 @@ def modify(self, prop: _schema.Property):
class _TypeModifier:
- """ Modifies types using get item notation """
+ """Modifies types using get item notation"""
def __init__(self, modifier: _schema.PropertyModifier):
self.modifier = modifier
@@ -242,7 +255,11 @@ def __getitem__(self, item):
qltest.add(_ClassPragma("skip"))
qltest.add(_ClassPragma("collapse_hierarchy"))
qltest.add(_ClassPragma("uncollapse_hierarchy"))
-qltest.add(_Parametrized(_ClassPragma("test_with", inherited=True), factory=_schema.get_type_name))
+qltest.add(
+ _Parametrized(
+ _ClassPragma("test_with", inherited=True), factory=_schema.get_type_name
+ )
+)
ql.add(_Parametrized(_ClassPragma("default_doc_name"), factory=lambda doc: doc))
ql.add(_ClassPragma("hideable", inherited=True))
@@ -255,15 +272,33 @@ def __getitem__(self, item):
rust.add(_PropertyPragma("detach"))
rust.add(_Pragma("skip_doc_test"))
-rust.add(_Parametrized(_ClassPragma("doc_test_signature"), factory=lambda signature: signature))
+rust.add(
+ _Parametrized(
+ _ClassPragma("doc_test_signature"), factory=lambda signature: signature
+ )
+)
-group = _Parametrized(_ClassPragma("group", inherited=True), factory=lambda group: group)
+group = _Parametrized(
+ _ClassPragma("group", inherited=True), factory=lambda group: group
+)
-synth.add(_Parametrized(_ClassPragma("from_class"), factory=lambda ref: _schema.SynthInfo(
- from_class=_schema.get_type_name(ref))), key="synth")
-synth.add(_Parametrized(_ClassPragma("on_arguments"), factory=lambda **kwargs:
- _schema.SynthInfo(on_arguments={k: _schema.get_type_name(t) for k, t in kwargs.items()})), key="synth")
+synth.add(
+ _Parametrized(
+ _ClassPragma("from_class"),
+ factory=lambda ref: _schema.SynthInfo(from_class=_schema.get_type_name(ref)),
+ ),
+ key="synth",
+)
+synth.add(
+ _Parametrized(
+ _ClassPragma("on_arguments"),
+ factory=lambda **kwargs: _schema.SynthInfo(
+ on_arguments={k: _schema.get_type_name(t) for k, t in kwargs.items()}
+ ),
+ ),
+ key="synth",
+)
@_dataclass(frozen=True)
@@ -283,7 +318,12 @@ def modify(self, prop: _schema.Property):
drop = object()
-def annotate(annotated_cls: type, add_bases: _Iterable[type] | None = None, replace_bases: _Dict[type, type] | None = None, cfg: bool = False) -> _Callable[[type], _PropertyModifierList]:
+def annotate(
+ annotated_cls: type,
+ add_bases: _Iterable[type] | None = None,
+ replace_bases: _Dict[type, type] | None = None,
+ cfg: bool = False,
+) -> _Callable[[type], _PropertyModifierList]:
"""
Add or modify schema annotations after a class has been defined previously.
@@ -291,6 +331,7 @@ def annotate(annotated_cls: type, add_bases: _Iterable[type] | None = None, repl
`replace_bases` can be used to replace bases on the annotated class.
"""
+
def decorator(cls: type) -> _PropertyModifierList:
if cls.__name__ != "_":
raise _schema.Error("Annotation classes must be named _")
@@ -299,7 +340,9 @@ def decorator(cls: type) -> _PropertyModifierList:
for p, v in cls.__dict__.get("_pragmas", {}).items():
_ClassPragma(p, value=v)(annotated_cls)
if replace_bases:
- annotated_cls.__bases__ = tuple(replace_bases.get(b, b) for b in annotated_cls.__bases__)
+ annotated_cls.__bases__ = tuple(
+ replace_bases.get(b, b) for b in annotated_cls.__bases__
+ )
if add_bases:
annotated_cls.__bases__ += tuple(add_bases)
annotated_cls.__cfg__ = cfg
@@ -312,9 +355,12 @@ def decorator(cls: type) -> _PropertyModifierList:
elif p in annotated_cls.__annotations__:
annotated_cls.__annotations__[p] |= a
elif isinstance(a, (_PropertyModifierList, _PropertyModifierList)):
- raise _schema.Error(f"annotated property {p} not present in annotated class "
- f"{annotated_cls.__name__}")
+ raise _schema.Error(
+ f"annotated property {p} not present in annotated class "
+ f"{annotated_cls.__name__}"
+ )
else:
annotated_cls.__annotations__[p] = a
return _
+
return decorator
diff --git a/misc/codegen/loaders/dbschemeloader.py b/misc/codegen/loaders/dbschemeloader.py
index f6fbab50499c..a9b599ef0c3c 100644
--- a/misc/codegen/loaders/dbschemeloader.py
+++ b/misc/codegen/loaders/dbschemeloader.py
@@ -12,9 +12,13 @@ class _Re:
"|"
r"^(?P@\w+)\s*=\s*(?P@\w+(?:\s*\|\s*@\w+)*)\s*;?"
)
- field = re.compile(r"(?m)[\w\s]*\s(?P\w+)\s*:\s*(?P@?\w+)(?P[\s+ref)?")
+ field = re.compile(
+ r"(?m)[\w\s]*\s(?P]\w+)\s*:\s*(?P@?\w+)(?P[\s+ref)?"
+ )
key = re.compile(r"@\w+")
- comment = re.compile(r"(?m)(?s)/\*.*?\*/|//(?!dir=)[^\n]*$") # lookahead avoid ignoring metadata like //dir=foo
+ comment = re.compile(
+ r"(?m)(?s)/\*.*?\*/|//(?!dir=)[^\n]*$"
+ ) # lookahead avoid ignoring metadata like //dir=foo
def _get_column(match):
diff --git a/misc/codegen/loaders/schemaloader.py b/misc/codegen/loaders/schemaloader.py
index 3b5f20cbbede..eaf08a04f571 100644
--- a/misc/codegen/loaders/schemaloader.py
+++ b/misc/codegen/loaders/schemaloader.py
@@ -1,4 +1,5 @@
-""" schema loader """
+"""schema loader"""
+
import sys
import inflection
@@ -33,37 +34,56 @@ def _get_class(cls: type) -> schema.Class:
raise schema.Error(f"Only class definitions allowed in schema, found {cls}")
# we must check that going to dbscheme names and back is preserved
# In particular this will not happen if uppercase acronyms are included in the name
- to_underscore_and_back = inflection.camelize(inflection.underscore(cls.__name__), uppercase_first_letter=True)
+ to_underscore_and_back = inflection.camelize(
+ inflection.underscore(cls.__name__), uppercase_first_letter=True
+ )
if cls.__name__ != to_underscore_and_back:
- raise schema.Error(f"Class name must be upper camel-case, without capitalized acronyms, found {cls.__name__} "
- f"instead of {to_underscore_and_back}")
- if len({g for g in (getattr(b, f"{schema.inheritable_pragma_prefix}group", None)
- for b in cls.__bases__) if g}) > 1:
+ raise schema.Error(
+ f"Class name must be upper camel-case, without capitalized acronyms, found {cls.__name__} "
+ f"instead of {to_underscore_and_back}"
+ )
+ if (
+ len(
+ {
+ g
+ for g in (
+ getattr(b, f"{schema.inheritable_pragma_prefix}group", None)
+ for b in cls.__bases__
+ )
+ if g
+ }
+ )
+ > 1
+ ):
raise schema.Error(f"Bases with mixed groups for {cls.__name__}")
pragmas = {
# dir and getattr inherit from bases
- a[len(schema.inheritable_pragma_prefix):]: getattr(cls, a)
- for a in dir(cls) if a.startswith(schema.inheritable_pragma_prefix)
+ a[len(schema.inheritable_pragma_prefix) :]: getattr(cls, a)
+ for a in dir(cls)
+ if a.startswith(schema.inheritable_pragma_prefix)
}
pragmas |= cls.__dict__.get("_pragmas", {})
derived = {d.__name__ for d in cls.__subclasses__()}
if "null" in pragmas and derived:
raise schema.Error(f"Null class cannot be derived")
- return schema.Class(name=cls.__name__,
- bases=[b.__name__ for b in cls.__bases__ if b is not object],
- derived=derived,
- pragmas=pragmas,
- cfg=cls.__cfg__ if hasattr(cls, "__cfg__") else False,
- # in the following we don't use `getattr` to avoid inheriting
- properties=[
- a | _PropertyNamer(n)
- for n, a in cls.__dict__.get("__annotations__", {}).items()
- ],
- doc=schema.split_doc(cls.__doc__),
- )
-
-
-def _toposort_classes_by_group(classes: typing.Dict[str, schema.Class]) -> typing.Dict[str, schema.Class]:
+ return schema.Class(
+ name=cls.__name__,
+ bases=[b.__name__ for b in cls.__bases__ if b is not object],
+ derived=derived,
+ pragmas=pragmas,
+ cfg=cls.__cfg__ if hasattr(cls, "__cfg__") else False,
+ # in the following we don't use `getattr` to avoid inheriting
+ properties=[
+ a | _PropertyNamer(n)
+ for n, a in cls.__dict__.get("__annotations__", {}).items()
+ ],
+ doc=schema.split_doc(cls.__doc__),
+ )
+
+
+def _toposort_classes_by_group(
+ classes: typing.Dict[str, schema.Class],
+) -> typing.Dict[str, schema.Class]:
groups = {}
ret = {}
@@ -79,7 +99,7 @@ def _toposort_classes_by_group(classes: typing.Dict[str, schema.Class]) -> typin
def _fill_synth_information(classes: typing.Dict[str, schema.Class]):
- """ Take a dictionary where the `synth` field is filled for all explicitly synthesized classes
+ """Take a dictionary where the `synth` field is filled for all explicitly synthesized classes
and update it so that all non-final classes that have only synthesized final descendants
get `True` as` value for the `synth` field
"""
@@ -109,7 +129,7 @@ def fill_is_synth(name: str):
def _fill_hideable_information(classes: typing.Dict[str, schema.Class]):
- """ Update the class map propagating the `hideable` attribute upwards in the hierarchy """
+ """Update the class map propagating the `hideable` attribute upwards in the hierarchy"""
todo = [cls for cls in classes.values() if "ql_hideable" in cls.pragmas]
while todo:
cls = todo.pop()
@@ -123,10 +143,14 @@ def _fill_hideable_information(classes: typing.Dict[str, schema.Class]):
def _check_test_with(classes: typing.Dict[str, schema.Class]):
for cls in classes.values():
test_with = typing.cast(str, cls.pragmas.get("qltest_test_with"))
- transitive_test_with = test_with and classes[test_with].pragmas.get("qltest_test_with")
+ transitive_test_with = test_with and classes[test_with].pragmas.get(
+ "qltest_test_with"
+ )
if test_with and transitive_test_with:
- raise schema.Error(f"{cls.name} has test_with {test_with} which in turn "
- f"has test_with {transitive_test_with}, use that directly")
+ raise schema.Error(
+ f"{cls.name} has test_with {test_with} which in turn "
+ f"has test_with {transitive_test_with}, use that directly"
+ )
def load(m: types.ModuleType) -> schema.Schema:
@@ -136,6 +160,7 @@ def load(m: types.ModuleType) -> schema.Schema:
known = {"int", "string", "boolean"}
known.update(n for n in m.__dict__ if not n.startswith("__"))
import misc.codegen.lib.schemadefs as defs
+
null = None
for name, data in m.__dict__.items():
if hasattr(defs, name):
@@ -152,21 +177,26 @@ def load(m: types.ModuleType) -> schema.Schema:
continue
cls = _get_class(data)
if classes and not cls.bases:
- raise schema.Error(
- f"Only one root class allowed, found second root {name}")
+ raise schema.Error(f"Only one root class allowed, found second root {name}")
cls.check_types(known)
classes[name] = cls
if "null" in cls.pragmas:
del cls.pragmas["null"]
if null is not None:
- raise schema.Error(f"Null class {null} already defined, second null class {name} not allowed")
+ raise schema.Error(
+ f"Null class {null} already defined, second null class {name} not allowed"
+ )
null = name
_fill_synth_information(classes)
_fill_hideable_information(classes)
_check_test_with(classes)
- return schema.Schema(includes=includes, classes=imported_classes | _toposort_classes_by_group(classes), null=null)
+ return schema.Schema(
+ includes=includes,
+ classes=imported_classes | _toposort_classes_by_group(classes),
+ null=null,
+ )
def load_file(path: pathlib.Path) -> schema.Schema:
diff --git a/misc/codegen/templates/rust_classes.mustache b/misc/codegen/templates/rust_classes.mustache
index 0fa29b1eb690..77a0335da518 100644
--- a/misc/codegen/templates/rust_classes.mustache
+++ b/misc/codegen/templates/rust_classes.mustache
@@ -63,8 +63,8 @@ pub struct {{name}} {
impl {{name}} {
{{#detached_fields}}
- pub fn emit_{{singular_field_name}}(id: trap::Label], {{#is_repeated}}{{^is_unordered}}i: usize, {{/is_unordered}}{{/is_repeated}}value: {{base_type}}, out: &mut trap::Writer) {
- out.add_tuple("{{table_name}}", vec![id.into(), {{#is_repeated}}{{^is_unordered}}i.into(), {{/is_unordered}}{{/is_repeated}}value.into()]);
+ pub fn emit_{{singular_field_name}}(id: trap::Label{{^is_predicate}}{{#is_repeated}}{{^is_unordered}}, i: usize{{/is_unordered}}{{/is_repeated}}, value: {{base_type}}{{/is_predicate}}, out: &mut trap::Writer) {
+ out.add_tuple("{{table_name}}", vec![id.into(){{^is_predicate}}{{#is_repeated}}{{^is_unordered}}, i.into(){{/is_unordered}}{{/is_repeated}}, value.into(){{/is_predicate}}]);
}
{{/detached_fields}}
}
diff --git a/misc/codegen/test/test_cpp.py b/misc/codegen/test/test_cpp.py
index c4bee337a4f7..77295bb0d828 100644
--- a/misc/codegen/test/test_cpp.py
+++ b/misc/codegen/test/test_cpp.py
@@ -17,34 +17,49 @@ def test_field_name():
assert f.field_name == "foo"
-@pytest.mark.parametrize("type,expected", [
- ("std::string", "trapQuoted(value)"),
- ("bool", '(value ? "true" : "false")'),
- ("something_else", "value"),
-])
+@pytest.mark.parametrize(
+ "type,expected",
+ [
+ ("std::string", "trapQuoted(value)"),
+ ("bool", '(value ? "true" : "false")'),
+ ("something_else", "value"),
+ ],
+)
def test_field_get_streamer(type, expected):
f = cpp.Field("name", type)
assert f.get_streamer()("value") == expected
-@pytest.mark.parametrize("is_optional,is_repeated,is_predicate,expected", [
- (False, False, False, True),
- (True, False, False, False),
- (False, True, False, False),
- (True, True, False, False),
- (False, False, True, False),
-])
+@pytest.mark.parametrize(
+ "is_optional,is_repeated,is_predicate,expected",
+ [
+ (False, False, False, True),
+ (True, False, False, False),
+ (False, True, False, False),
+ (True, True, False, False),
+ (False, False, True, False),
+ ],
+)
def test_field_is_single(is_optional, is_repeated, is_predicate, expected):
- f = cpp.Field("name", "type", is_optional=is_optional, is_repeated=is_repeated, is_predicate=is_predicate)
+ f = cpp.Field(
+ "name",
+ "type",
+ is_optional=is_optional,
+ is_repeated=is_repeated,
+ is_predicate=is_predicate,
+ )
assert f.is_single is expected
-@pytest.mark.parametrize("is_optional,is_repeated,expected", [
- (False, False, "bar"),
- (True, False, "std::optional"),
- (False, True, "std::vector"),
- (True, True, "std::vector>"),
-])
+@pytest.mark.parametrize(
+ "is_optional,is_repeated,expected",
+ [
+ (False, False, "bar"),
+ (True, False, "std::optional"),
+ (False, True, "std::vector"),
+ (True, True, "std::vector>"),
+ ],
+)
def test_field_modal_types(is_optional, is_repeated, expected):
f = cpp.Field("name", "bar", is_optional=is_optional, is_repeated=is_repeated)
assert f.type == expected
@@ -69,11 +84,9 @@ def test_tag_has_first_base_marked():
assert t.bases == expected
-@pytest.mark.parametrize("bases,expected", [
- ([], False),
- (["a"], True),
- (["a", "b"], True)
-])
+@pytest.mark.parametrize(
+ "bases,expected", [([], False), (["a"], True), (["a", "b"], True)]
+)
def test_tag_has_bases(bases, expected):
t = cpp.Tag("name", bases, "id")
assert t.has_bases is expected
@@ -91,11 +104,9 @@ def test_class_has_first_base_marked():
assert c.bases == expected
-@pytest.mark.parametrize("bases,expected", [
- ([], False),
- (["a"], True),
- (["a", "b"], True)
-])
+@pytest.mark.parametrize(
+ "bases,expected", [([], False), (["a"], True), (["a", "b"], True)]
+)
def test_class_has_bases(bases, expected):
t = cpp.Class("name", [cpp.Class(b) for b in bases])
assert t.has_bases is expected
@@ -113,5 +124,5 @@ def test_class_single_fields():
assert c.single_fields == fields[::2]
-if __name__ == '__main__':
+if __name__ == "__main__":
sys.exit(pytest.main([__file__] + sys.argv[1:]))
diff --git a/misc/codegen/test/test_cppgen.py b/misc/codegen/test/test_cppgen.py
index 063940322412..8d0d4605b052 100644
--- a/misc/codegen/test/test_cppgen.py
+++ b/misc/codegen/test/test_cppgen.py
@@ -18,7 +18,10 @@ def ret(classes):
assert isinstance(g, cpp.ClassList), f
assert g.include_parent is (f.parent != output_dir)
assert f.name == "TrapClasses", f
- return {str(f.parent.relative_to(output_dir)): g.classes for f, g in generated.items()}
+ return {
+ str(f.parent.relative_to(output_dir)): g.classes
+ for f, g in generated.items()
+ }
return ret
@@ -38,129 +41,193 @@ def test_empty(generate):
def test_empty_class(generate):
- assert generate([
- schema.Class(name="MyClass"),
- ]) == [
- cpp.Class(name="MyClass", final=True, trap_name="MyClasses")
- ]
+ assert generate(
+ [
+ schema.Class(name="MyClass"),
+ ]
+ ) == [cpp.Class(name="MyClass", final=True, trap_name="MyClasses")]
def test_two_class_hierarchy(generate):
base = cpp.Class(name="A")
- assert generate([
- schema.Class(name="A", derived={"B"}),
- schema.Class(name="B", bases=["A"]),
- ]) == [
+ assert generate(
+ [
+ schema.Class(name="A", derived={"B"}),
+ schema.Class(name="B", bases=["A"]),
+ ]
+ ) == [
base,
cpp.Class(name="B", bases=[base], final=True, trap_name="Bs"),
]
-@pytest.mark.parametrize("type,expected", [
- ("a", "a"),
- ("string", "std::string"),
- ("boolean", "bool"),
- ("MyClass", "TrapLabel"),
-])
-@pytest.mark.parametrize("property_cls,optional,repeated,unordered,trap_name", [
- (schema.SingleProperty, False, False, False, None),
- (schema.OptionalProperty, True, False, False, "MyClassProps"),
- (schema.RepeatedProperty, False, True, False, "MyClassProps"),
- (schema.RepeatedOptionalProperty, True, True, False, "MyClassProps"),
- (schema.RepeatedUnorderedProperty, False, True, True, "MyClassProps"),
-])
-def test_class_with_field(generate, type, expected, property_cls, optional, repeated, unordered, trap_name):
- assert generate([
- schema.Class(name="MyClass", properties=[property_cls("prop", type)]),
- ]) == [
- cpp.Class(name="MyClass",
- fields=[cpp.Field("prop", expected, is_optional=optional,
- is_repeated=repeated, is_unordered=unordered, trap_name=trap_name)],
- trap_name="MyClasses",
- final=True)
+@pytest.mark.parametrize(
+ "type,expected",
+ [
+ ("a", "a"),
+ ("string", "std::string"),
+ ("boolean", "bool"),
+ ("MyClass", "TrapLabel"),
+ ],
+)
+@pytest.mark.parametrize(
+ "property_cls,optional,repeated,unordered,trap_name",
+ [
+ (schema.SingleProperty, False, False, False, None),
+ (schema.OptionalProperty, True, False, False, "MyClassProps"),
+ (schema.RepeatedProperty, False, True, False, "MyClassProps"),
+ (schema.RepeatedOptionalProperty, True, True, False, "MyClassProps"),
+ (schema.RepeatedUnorderedProperty, False, True, True, "MyClassProps"),
+ ],
+)
+def test_class_with_field(
+ generate, type, expected, property_cls, optional, repeated, unordered, trap_name
+):
+ assert generate(
+ [
+ schema.Class(name="MyClass", properties=[property_cls("prop", type)]),
+ ]
+ ) == [
+ cpp.Class(
+ name="MyClass",
+ fields=[
+ cpp.Field(
+ "prop",
+ expected,
+ is_optional=optional,
+ is_repeated=repeated,
+ is_unordered=unordered,
+ trap_name=trap_name,
+ )
+ ],
+ trap_name="MyClasses",
+ final=True,
+ )
]
def test_class_field_with_null(generate, input):
input.null = "Null"
a = cpp.Class(name="A")
- assert generate([
- schema.Class(name="A", derived={"B"}),
- schema.Class(name="B", bases=["A"], properties=[
- schema.SingleProperty("x", "A"),
- schema.SingleProperty("y", "B"),
- ])
- ]) == [
+ assert generate(
+ [
+ schema.Class(name="A", derived={"B"}),
+ schema.Class(
+ name="B",
+ bases=["A"],
+ properties=[
+ schema.SingleProperty("x", "A"),
+ schema.SingleProperty("y", "B"),
+ ],
+ ),
+ ]
+ ) == [
a,
- cpp.Class(name="B", bases=[a], final=True, trap_name="Bs",
- fields=[
- cpp.Field("x", "TrapLabel"),
- cpp.Field("y", "TrapLabel"),
- ]),
+ cpp.Class(
+ name="B",
+ bases=[a],
+ final=True,
+ trap_name="Bs",
+ fields=[
+ cpp.Field("x", "TrapLabel"),
+ cpp.Field("y", "TrapLabel"),
+ ],
+ ),
]
def test_class_with_predicate(generate):
- assert generate([
- schema.Class(name="MyClass", properties=[
- schema.PredicateProperty("prop")]),
- ]) == [
- cpp.Class(name="MyClass",
- fields=[
- cpp.Field("prop", "bool", trap_name="MyClassProp", is_predicate=True)],
- trap_name="MyClasses",
- final=True)
+ assert generate(
+ [
+ schema.Class(name="MyClass", properties=[schema.PredicateProperty("prop")]),
+ ]
+ ) == [
+ cpp.Class(
+ name="MyClass",
+ fields=[
+ cpp.Field("prop", "bool", trap_name="MyClassProp", is_predicate=True)
+ ],
+ trap_name="MyClasses",
+ final=True,
+ )
]
-@pytest.mark.parametrize("name",
- ["start_line", "start_column", "end_line", "end_column", "index", "num_whatever", "width"])
+@pytest.mark.parametrize(
+ "name",
+ [
+ "start_line",
+ "start_column",
+ "end_line",
+ "end_column",
+ "index",
+ "num_whatever",
+ "width",
+ ],
+)
def test_class_with_overridden_unsigned_field(generate, name):
- assert generate([
- schema.Class(name="MyClass", properties=[
- schema.SingleProperty(name, "bar")]),
- ]) == [
- cpp.Class(name="MyClass",
- fields=[cpp.Field(name, "unsigned")],
- trap_name="MyClasses",
- final=True)
+ assert generate(
+ [
+ schema.Class(
+ name="MyClass", properties=[schema.SingleProperty(name, "bar")]
+ ),
+ ]
+ ) == [
+ cpp.Class(
+ name="MyClass",
+ fields=[cpp.Field(name, "unsigned")],
+ trap_name="MyClasses",
+ final=True,
+ )
]
def test_class_with_overridden_underscore_field(generate):
- assert generate([
- schema.Class(name="MyClass", properties=[
- schema.SingleProperty("something_", "bar")]),
- ]) == [
- cpp.Class(name="MyClass",
- fields=[cpp.Field("something", "bar")],
- trap_name="MyClasses",
- final=True)
+ assert generate(
+ [
+ schema.Class(
+ name="MyClass", properties=[schema.SingleProperty("something_", "bar")]
+ ),
+ ]
+ ) == [
+ cpp.Class(
+ name="MyClass",
+ fields=[cpp.Field("something", "bar")],
+ trap_name="MyClasses",
+ final=True,
+ )
]
@pytest.mark.parametrize("name", cpp.cpp_keywords)
def test_class_with_keyword_field(generate, name):
- assert generate([
- schema.Class(name="MyClass", properties=[
- schema.SingleProperty(name, "bar")]),
- ]) == [
- cpp.Class(name="MyClass",
- fields=[cpp.Field(name + "_", "bar")],
- trap_name="MyClasses",
- final=True)
+ assert generate(
+ [
+ schema.Class(
+ name="MyClass", properties=[schema.SingleProperty(name, "bar")]
+ ),
+ ]
+ ) == [
+ cpp.Class(
+ name="MyClass",
+ fields=[cpp.Field(name + "_", "bar")],
+ trap_name="MyClasses",
+ final=True,
+ )
]
def test_classes_with_dirs(generate_grouped):
cbase = cpp.Class(name="CBase")
- assert generate_grouped([
- schema.Class(name="A"),
- schema.Class(name="B", pragmas={"group": "foo"}),
- schema.Class(name="CBase", derived={"C"}, pragmas={"group": "bar"}),
- schema.Class(name="C", bases=["CBase"], pragmas={"group": "bar"}),
- schema.Class(name="D", pragmas={"group": "foo/bar/baz"}),
- ]) == {
+ assert generate_grouped(
+ [
+ schema.Class(name="A"),
+ schema.Class(name="B", pragmas={"group": "foo"}),
+ schema.Class(name="CBase", derived={"C"}, pragmas={"group": "bar"}),
+ schema.Class(name="C", bases=["CBase"], pragmas={"group": "bar"}),
+ schema.Class(name="D", pragmas={"group": "foo/bar/baz"}),
+ ]
+ ) == {
".": [cpp.Class(name="A", trap_name="As", final=True)],
"foo": [cpp.Class(name="B", trap_name="Bs", final=True)],
"bar": [cbase, cpp.Class(name="C", bases=[cbase], trap_name="Cs", final=True)],
@@ -169,81 +236,126 @@ def test_classes_with_dirs(generate_grouped):
def test_cpp_skip_pragma(generate):
- assert generate([
- schema.Class(name="A", properties=[
- schema.SingleProperty("x", "foo"),
- schema.SingleProperty("y", "bar", pragmas=["x", "cpp_skip", "y"]),
- ])
- ]) == [
- cpp.Class(name="A", final=True, trap_name="As", fields=[
- cpp.Field("x", "foo"),
- ]),
+ assert generate(
+ [
+ schema.Class(
+ name="A",
+ properties=[
+ schema.SingleProperty("x", "foo"),
+ schema.SingleProperty("y", "bar", pragmas=["x", "cpp_skip", "y"]),
+ ],
+ )
+ ]
+ ) == [
+ cpp.Class(
+ name="A",
+ final=True,
+ trap_name="As",
+ fields=[
+ cpp.Field("x", "foo"),
+ ],
+ ),
]
def test_synth_classes_ignored(generate):
- assert generate([
- schema.Class(
- name="W",
- pragmas={"synth": schema.SynthInfo()},
- ),
- schema.Class(
- name="X",
- pragmas={"synth": schema.SynthInfo(from_class="A")},
- ),
- schema.Class(
- name="Y",
- pragmas={"synth": schema.SynthInfo(on_arguments={"a": "A", "b": "int"})},
- ),
- schema.Class(
- name="Z",
- ),
- ]) == [
+ assert generate(
+ [
+ schema.Class(
+ name="W",
+ pragmas={"synth": schema.SynthInfo()},
+ ),
+ schema.Class(
+ name="X",
+ pragmas={"synth": schema.SynthInfo(from_class="A")},
+ ),
+ schema.Class(
+ name="Y",
+ pragmas={
+ "synth": schema.SynthInfo(on_arguments={"a": "A", "b": "int"})
+ },
+ ),
+ schema.Class(
+ name="Z",
+ ),
+ ]
+ ) == [
cpp.Class(name="Z", final=True, trap_name="Zs"),
]
def test_synth_properties_ignored(generate):
- assert generate([
- schema.Class(
+ assert generate(
+ [
+ schema.Class(
+ name="X",
+ properties=[
+ schema.SingleProperty("x", "a"),
+ schema.SingleProperty("y", "b", synth=True),
+ schema.SingleProperty("z", "c"),
+ schema.OptionalProperty("foo", "bar", synth=True),
+ schema.RepeatedProperty("baz", "bazz", synth=True),
+ schema.RepeatedOptionalProperty("bazzz", "bazzzz", synth=True),
+ schema.RepeatedUnorderedProperty("bazzzzz", "bazzzzzz", synth=True),
+ ],
+ ),
+ ]
+ ) == [
+ cpp.Class(
name="X",
- properties=[
- schema.SingleProperty("x", "a"),
- schema.SingleProperty("y", "b", synth=True),
- schema.SingleProperty("z", "c"),
- schema.OptionalProperty("foo", "bar", synth=True),
- schema.RepeatedProperty("baz", "bazz", synth=True),
- schema.RepeatedOptionalProperty("bazzz", "bazzzz", synth=True),
- schema.RepeatedUnorderedProperty("bazzzzz", "bazzzzzz", synth=True),
+ final=True,
+ trap_name="Xes",
+ fields=[
+ cpp.Field("x", "a"),
+ cpp.Field("z", "c"),
],
),
- ]) == [
- cpp.Class(name="X", final=True, trap_name="Xes", fields=[
- cpp.Field("x", "a"),
- cpp.Field("z", "c"),
- ]),
]
def test_properties_with_custom_db_table_names(generate):
- assert generate([
- schema.Class("Obj", properties=[
- schema.OptionalProperty("x", "a", pragmas={"ql_db_table_name": "foo"}),
- schema.RepeatedProperty("y", "b", pragmas={"ql_db_table_name": "bar"}),
- schema.RepeatedOptionalProperty("z", "c", pragmas={"ql_db_table_name": "baz"}),
- schema.PredicateProperty("p", pragmas={"ql_db_table_name": "hello"}),
- schema.RepeatedUnorderedProperty("q", "d", pragmas={"ql_db_table_name": "world"}),
- ]),
- ]) == [
- cpp.Class(name="Obj", final=True, trap_name="Objs", fields=[
- cpp.Field("x", "a", is_optional=True, trap_name="Foo"),
- cpp.Field("y", "b", is_repeated=True, trap_name="Bar"),
- cpp.Field("z", "c", is_repeated=True, is_optional=True, trap_name="Baz"),
- cpp.Field("p", "bool", is_predicate=True, trap_name="Hello"),
- cpp.Field("q", "d", is_repeated=True, is_unordered=True, trap_name="World"),
- ]),
+ assert generate(
+ [
+ schema.Class(
+ "Obj",
+ properties=[
+ schema.OptionalProperty(
+ "x", "a", pragmas={"ql_db_table_name": "foo"}
+ ),
+ schema.RepeatedProperty(
+ "y", "b", pragmas={"ql_db_table_name": "bar"}
+ ),
+ schema.RepeatedOptionalProperty(
+ "z", "c", pragmas={"ql_db_table_name": "baz"}
+ ),
+ schema.PredicateProperty(
+ "p", pragmas={"ql_db_table_name": "hello"}
+ ),
+ schema.RepeatedUnorderedProperty(
+ "q", "d", pragmas={"ql_db_table_name": "world"}
+ ),
+ ],
+ ),
+ ]
+ ) == [
+ cpp.Class(
+ name="Obj",
+ final=True,
+ trap_name="Objs",
+ fields=[
+ cpp.Field("x", "a", is_optional=True, trap_name="Foo"),
+ cpp.Field("y", "b", is_repeated=True, trap_name="Bar"),
+ cpp.Field(
+ "z", "c", is_repeated=True, is_optional=True, trap_name="Baz"
+ ),
+ cpp.Field("p", "bool", is_predicate=True, trap_name="Hello"),
+ cpp.Field(
+ "q", "d", is_repeated=True, is_unordered=True, trap_name="World"
+ ),
+ ],
+ ),
]
-if __name__ == '__main__':
+if __name__ == "__main__":
sys.exit(pytest.main([__file__] + sys.argv[1:]))
diff --git a/misc/codegen/test/test_dbscheme.py b/misc/codegen/test/test_dbscheme.py
index e2635ecee5ac..2ba7a269c6e8 100644
--- a/misc/codegen/test/test_dbscheme.py
+++ b/misc/codegen/test/test_dbscheme.py
@@ -14,12 +14,15 @@ def test_dbcolumn_keyword_name(keyword):
assert dbscheme.Column(keyword, "some_type").name == keyword + "_"
-@pytest.mark.parametrize("type,binding,lhstype,rhstype", [
- ("builtin_type", False, "builtin_type", "builtin_type ref"),
- ("builtin_type", True, "builtin_type", "builtin_type ref"),
- ("@at_type", False, "int", "@at_type ref"),
- ("@at_type", True, "unique int", "@at_type"),
-])
+@pytest.mark.parametrize(
+ "type,binding,lhstype,rhstype",
+ [
+ ("builtin_type", False, "builtin_type", "builtin_type ref"),
+ ("builtin_type", True, "builtin_type", "builtin_type ref"),
+ ("@at_type", False, "int", "@at_type ref"),
+ ("@at_type", True, "unique int", "@at_type"),
+ ],
+)
def test_dbcolumn_types(type, binding, lhstype, rhstype):
col = dbscheme.Column("foo", type, binding)
assert col.lhstype == lhstype
@@ -34,7 +37,11 @@ def test_keyset_has_first_id_marked():
def test_table_has_first_column_marked():
- columns = [dbscheme.Column("a", "x"), dbscheme.Column("b", "y", binding=True), dbscheme.Column("c", "z")]
+ columns = [
+ dbscheme.Column("a", "x"),
+ dbscheme.Column("b", "y", binding=True),
+ dbscheme.Column("c", "z"),
+ ]
expected = deepcopy(columns)
table = dbscheme.Table("foo", columns)
expected[0].first = True
@@ -48,5 +55,5 @@ def test_union_has_first_case_marked():
assert [c.type for c in u.rhs] == rhs
-if __name__ == '__main__':
+if __name__ == "__main__":
sys.exit(pytest.main([__file__] + sys.argv[1:]))
diff --git a/misc/codegen/test/test_dbschemegen.py b/misc/codegen/test/test_dbschemegen.py
index 653ad7fc8a39..7ae1941fe8d1 100644
--- a/misc/codegen/test/test_dbschemegen.py
+++ b/misc/codegen/test/test_dbschemegen.py
@@ -8,10 +8,12 @@
InputExpectedPair = collections.namedtuple("InputExpectedPair", ("input", "expected"))
-@pytest.fixture(params=[
- InputExpectedPair(None, None),
- InputExpectedPair("foodir", pathlib.Path("foodir")),
-])
+@pytest.fixture(
+ params=[
+ InputExpectedPair(None, None),
+ InputExpectedPair("foodir", pathlib.Path("foodir")),
+ ]
+)
def dir_param(request):
return request.param
@@ -21,7 +23,7 @@ def generate(opts, input, renderer):
def func(classes, null=None):
input.classes = {cls.name: cls for cls in classes}
input.null = null
- (out, data), = run_generation(dbschemegen.generate, opts, renderer).items()
+ ((out, data),) = run_generation(dbschemegen.generate, opts, renderer).items()
assert out is opts.dbscheme
return data
@@ -48,23 +50,26 @@ def test_includes(input, opts, generate):
dbscheme.SchemeInclude(
src=pathlib.Path(i),
data=i + " data",
- ) for i in includes
+ )
+ for i in includes
],
declarations=[],
)
def test_empty_final_class(generate, dir_param):
- assert generate([
- schema.Class("Object", pragmas={"group": dir_param.input}),
- ]) == dbscheme.Scheme(
+ assert generate(
+ [
+ schema.Class("Object", pragmas={"group": dir_param.input}),
+ ]
+ ) == dbscheme.Scheme(
src=schema_file.name,
includes=[],
declarations=[
dbscheme.Table(
name="objects",
columns=[
- dbscheme.Column('id', '@object', binding=True),
+ dbscheme.Column("id", "@object", binding=True),
],
dir=dir_param.expected,
)
@@ -73,218 +78,279 @@ def test_empty_final_class(generate, dir_param):
def test_final_class_with_single_scalar_field(generate, dir_param):
- assert generate([
- schema.Class("Object", pragmas={"group": dir_param.input}, properties=[
- schema.SingleProperty("foo", "bar"),
- ]),
- ]) == dbscheme.Scheme(
+ assert generate(
+ [
+ schema.Class(
+ "Object",
+ pragmas={"group": dir_param.input},
+ properties=[
+ schema.SingleProperty("foo", "bar"),
+ ],
+ ),
+ ]
+ ) == dbscheme.Scheme(
src=schema_file.name,
includes=[],
declarations=[
dbscheme.Table(
name="objects",
columns=[
- dbscheme.Column('id', '@object', binding=True),
- dbscheme.Column('foo', 'bar'),
- ], dir=dir_param.expected,
+ dbscheme.Column("id", "@object", binding=True),
+ dbscheme.Column("foo", "bar"),
+ ],
+ dir=dir_param.expected,
)
],
)
def test_final_class_with_single_class_field(generate, dir_param):
- assert generate([
- schema.Class("Object", pragmas={"group": dir_param.input}, properties=[
- schema.SingleProperty("foo", "Bar"),
- ]),
- ]) == dbscheme.Scheme(
+ assert generate(
+ [
+ schema.Class(
+ "Object",
+ pragmas={"group": dir_param.input},
+ properties=[
+ schema.SingleProperty("foo", "Bar"),
+ ],
+ ),
+ ]
+ ) == dbscheme.Scheme(
src=schema_file.name,
includes=[],
declarations=[
dbscheme.Table(
name="objects",
columns=[
- dbscheme.Column('id', '@object', binding=True),
- dbscheme.Column('foo', '@bar'),
- ], dir=dir_param.expected,
+ dbscheme.Column("id", "@object", binding=True),
+ dbscheme.Column("foo", "@bar"),
+ ],
+ dir=dir_param.expected,
)
],
)
def test_final_class_with_optional_field(generate, dir_param):
- assert generate([
- schema.Class("Object", pragmas={"group": dir_param.input}, properties=[
- schema.OptionalProperty("foo", "bar"),
- ]),
- ]) == dbscheme.Scheme(
+ assert generate(
+ [
+ schema.Class(
+ "Object",
+ pragmas={"group": dir_param.input},
+ properties=[
+ schema.OptionalProperty("foo", "bar"),
+ ],
+ ),
+ ]
+ ) == dbscheme.Scheme(
src=schema_file.name,
includes=[],
declarations=[
dbscheme.Table(
name="objects",
columns=[
- dbscheme.Column('id', '@object', binding=True),
- ], dir=dir_param.expected,
+ dbscheme.Column("id", "@object", binding=True),
+ ],
+ dir=dir_param.expected,
),
dbscheme.Table(
name="object_foos",
keyset=dbscheme.KeySet(["id"]),
columns=[
- dbscheme.Column('id', '@object'),
- dbscheme.Column('foo', 'bar'),
- ], dir=dir_param.expected,
+ dbscheme.Column("id", "@object"),
+ dbscheme.Column("foo", "bar"),
+ ],
+ dir=dir_param.expected,
),
],
)
-@pytest.mark.parametrize("property_cls", [schema.RepeatedProperty, schema.RepeatedOptionalProperty])
+@pytest.mark.parametrize(
+ "property_cls", [schema.RepeatedProperty, schema.RepeatedOptionalProperty]
+)
def test_final_class_with_repeated_field(generate, property_cls, dir_param):
- assert generate([
- schema.Class("Object", pragmas={"group": dir_param.input}, properties=[
- property_cls("foo", "bar"),
- ]),
- ]) == dbscheme.Scheme(
+ assert generate(
+ [
+ schema.Class(
+ "Object",
+ pragmas={"group": dir_param.input},
+ properties=[
+ property_cls("foo", "bar"),
+ ],
+ ),
+ ]
+ ) == dbscheme.Scheme(
src=schema_file.name,
includes=[],
declarations=[
dbscheme.Table(
name="objects",
columns=[
- dbscheme.Column('id', '@object', binding=True),
- ], dir=dir_param.expected,
+ dbscheme.Column("id", "@object", binding=True),
+ ],
+ dir=dir_param.expected,
),
dbscheme.Table(
name="object_foos",
keyset=dbscheme.KeySet(["id", "index"]),
columns=[
- dbscheme.Column('id', '@object'),
- dbscheme.Column('index', 'int'),
- dbscheme.Column('foo', 'bar'),
- ], dir=dir_param.expected,
+ dbscheme.Column("id", "@object"),
+ dbscheme.Column("index", "int"),
+ dbscheme.Column("foo", "bar"),
+ ],
+ dir=dir_param.expected,
),
],
)
def test_final_class_with_repeated_unordered_field(generate, dir_param):
- assert generate([
- schema.Class("Object", pragmas={"group": dir_param.input}, properties=[
- schema.RepeatedUnorderedProperty("foo", "bar"),
- ]),
- ]) == dbscheme.Scheme(
+ assert generate(
+ [
+ schema.Class(
+ "Object",
+ pragmas={"group": dir_param.input},
+ properties=[
+ schema.RepeatedUnorderedProperty("foo", "bar"),
+ ],
+ ),
+ ]
+ ) == dbscheme.Scheme(
src=schema_file.name,
includes=[],
declarations=[
dbscheme.Table(
name="objects",
columns=[
- dbscheme.Column('id', '@object', binding=True),
- ], dir=dir_param.expected,
+ dbscheme.Column("id", "@object", binding=True),
+ ],
+ dir=dir_param.expected,
),
dbscheme.Table(
name="object_foos",
columns=[
- dbscheme.Column('id', '@object'),
- dbscheme.Column('foo', 'bar'),
- ], dir=dir_param.expected,
+ dbscheme.Column("id", "@object"),
+ dbscheme.Column("foo", "bar"),
+ ],
+ dir=dir_param.expected,
),
],
)
def test_final_class_with_predicate_field(generate, dir_param):
- assert generate([
- schema.Class("Object", pragmas={"group": dir_param.input}, properties=[
- schema.PredicateProperty("foo"),
- ]),
- ]) == dbscheme.Scheme(
+ assert generate(
+ [
+ schema.Class(
+ "Object",
+ pragmas={"group": dir_param.input},
+ properties=[
+ schema.PredicateProperty("foo"),
+ ],
+ ),
+ ]
+ ) == dbscheme.Scheme(
src=schema_file.name,
includes=[],
declarations=[
dbscheme.Table(
name="objects",
columns=[
- dbscheme.Column('id', '@object', binding=True),
- ], dir=dir_param.expected,
+ dbscheme.Column("id", "@object", binding=True),
+ ],
+ dir=dir_param.expected,
),
dbscheme.Table(
name="object_foo",
keyset=dbscheme.KeySet(["id"]),
columns=[
- dbscheme.Column('id', '@object'),
- ], dir=dir_param.expected,
+ dbscheme.Column("id", "@object"),
+ ],
+ dir=dir_param.expected,
),
],
)
def test_final_class_with_more_fields(generate, dir_param):
- assert generate([
- schema.Class("Object", pragmas={"group": dir_param.input}, properties=[
- schema.SingleProperty("one", "x"),
- schema.SingleProperty("two", "y"),
- schema.OptionalProperty("three", "z"),
- schema.RepeatedProperty("four", "u"),
- schema.RepeatedOptionalProperty("five", "v"),
- schema.PredicateProperty("six"),
- ]),
- ]) == dbscheme.Scheme(
+ assert generate(
+ [
+ schema.Class(
+ "Object",
+ pragmas={"group": dir_param.input},
+ properties=[
+ schema.SingleProperty("one", "x"),
+ schema.SingleProperty("two", "y"),
+ schema.OptionalProperty("three", "z"),
+ schema.RepeatedProperty("four", "u"),
+ schema.RepeatedOptionalProperty("five", "v"),
+ schema.PredicateProperty("six"),
+ ],
+ ),
+ ]
+ ) == dbscheme.Scheme(
src=schema_file.name,
includes=[],
declarations=[
dbscheme.Table(
name="objects",
columns=[
- dbscheme.Column('id', '@object', binding=True),
- dbscheme.Column('one', 'x'),
- dbscheme.Column('two', 'y'),
- ], dir=dir_param.expected,
+ dbscheme.Column("id", "@object", binding=True),
+ dbscheme.Column("one", "x"),
+ dbscheme.Column("two", "y"),
+ ],
+ dir=dir_param.expected,
),
dbscheme.Table(
name="object_threes",
keyset=dbscheme.KeySet(["id"]),
columns=[
- dbscheme.Column('id', '@object'),
- dbscheme.Column('three', 'z'),
- ], dir=dir_param.expected,
+ dbscheme.Column("id", "@object"),
+ dbscheme.Column("three", "z"),
+ ],
+ dir=dir_param.expected,
),
dbscheme.Table(
name="object_fours",
keyset=dbscheme.KeySet(["id", "index"]),
columns=[
- dbscheme.Column('id', '@object'),
- dbscheme.Column('index', 'int'),
- dbscheme.Column('four', 'u'),
- ], dir=dir_param.expected,
+ dbscheme.Column("id", "@object"),
+ dbscheme.Column("index", "int"),
+ dbscheme.Column("four", "u"),
+ ],
+ dir=dir_param.expected,
),
dbscheme.Table(
name="object_fives",
keyset=dbscheme.KeySet(["id", "index"]),
columns=[
- dbscheme.Column('id', '@object'),
- dbscheme.Column('index', 'int'),
- dbscheme.Column('five', 'v'),
- ], dir=dir_param.expected,
+ dbscheme.Column("id", "@object"),
+ dbscheme.Column("index", "int"),
+ dbscheme.Column("five", "v"),
+ ],
+ dir=dir_param.expected,
),
dbscheme.Table(
name="object_six",
keyset=dbscheme.KeySet(["id"]),
columns=[
- dbscheme.Column('id', '@object'),
- ], dir=dir_param.expected,
+ dbscheme.Column("id", "@object"),
+ ],
+ dir=dir_param.expected,
),
],
)
def test_empty_class_with_derived(generate):
- assert generate([
- schema.Class(name="Base", derived={"Left", "Right"}),
- schema.Class(name="Left", bases=["Base"]),
- schema.Class(name="Right", bases=["Base"]),
- ]) == dbscheme.Scheme(
+ assert generate(
+ [
+ schema.Class(name="Base", derived={"Left", "Right"}),
+ schema.Class(name="Left", bases=["Base"]),
+ schema.Class(name="Right", bases=["Base"]),
+ ]
+ ) == dbscheme.Scheme(
src=schema_file.name,
includes=[],
declarations=[
@@ -305,17 +371,20 @@ def test_empty_class_with_derived(generate):
def test_class_with_derived_and_single_property(generate, dir_param):
- assert generate([
- schema.Class(
- name="Base",
- derived={"Left", "Right"},
- pragmas={"group": dir_param.input},
- properties=[
- schema.SingleProperty("single", "Prop"),
- ]),
- schema.Class(name="Left", bases=["Base"]),
- schema.Class(name="Right", bases=["Base"]),
- ]) == dbscheme.Scheme(
+ assert generate(
+ [
+ schema.Class(
+ name="Base",
+ derived={"Left", "Right"},
+ pragmas={"group": dir_param.input},
+ properties=[
+ schema.SingleProperty("single", "Prop"),
+ ],
+ ),
+ schema.Class(name="Left", bases=["Base"]),
+ schema.Class(name="Right", bases=["Base"]),
+ ]
+ ) == dbscheme.Scheme(
src=schema_file.name,
includes=[],
declarations=[
@@ -327,8 +396,8 @@ def test_class_with_derived_and_single_property(generate, dir_param):
name="bases",
keyset=dbscheme.KeySet(["id"]),
columns=[
- dbscheme.Column('id', '@base'),
- dbscheme.Column('single', '@prop'),
+ dbscheme.Column("id", "@base"),
+ dbscheme.Column("single", "@prop"),
],
dir=dir_param.expected,
),
@@ -345,17 +414,20 @@ def test_class_with_derived_and_single_property(generate, dir_param):
def test_class_with_derived_and_optional_property(generate, dir_param):
- assert generate([
- schema.Class(
- name="Base",
- derived={"Left", "Right"},
- pragmas={"group": dir_param.input},
- properties=[
- schema.OptionalProperty("opt", "Prop"),
- ]),
- schema.Class(name="Left", bases=["Base"]),
- schema.Class(name="Right", bases=["Base"]),
- ]) == dbscheme.Scheme(
+ assert generate(
+ [
+ schema.Class(
+ name="Base",
+ derived={"Left", "Right"},
+ pragmas={"group": dir_param.input},
+ properties=[
+ schema.OptionalProperty("opt", "Prop"),
+ ],
+ ),
+ schema.Class(name="Left", bases=["Base"]),
+ schema.Class(name="Right", bases=["Base"]),
+ ]
+ ) == dbscheme.Scheme(
src=schema_file.name,
includes=[],
declarations=[
@@ -367,8 +439,8 @@ def test_class_with_derived_and_optional_property(generate, dir_param):
name="base_opts",
keyset=dbscheme.KeySet(["id"]),
columns=[
- dbscheme.Column('id', '@base'),
- dbscheme.Column('opt', '@prop'),
+ dbscheme.Column("id", "@base"),
+ dbscheme.Column("opt", "@prop"),
],
dir=dir_param.expected,
),
@@ -385,17 +457,20 @@ def test_class_with_derived_and_optional_property(generate, dir_param):
def test_class_with_derived_and_repeated_property(generate, dir_param):
- assert generate([
- schema.Class(
- name="Base",
- pragmas={"group": dir_param.input},
- derived={"Left", "Right"},
- properties=[
- schema.RepeatedProperty("rep", "Prop"),
- ]),
- schema.Class(name="Left", bases=["Base"]),
- schema.Class(name="Right", bases=["Base"]),
- ]) == dbscheme.Scheme(
+ assert generate(
+ [
+ schema.Class(
+ name="Base",
+ pragmas={"group": dir_param.input},
+ derived={"Left", "Right"},
+ properties=[
+ schema.RepeatedProperty("rep", "Prop"),
+ ],
+ ),
+ schema.Class(name="Left", bases=["Base"]),
+ schema.Class(name="Right", bases=["Base"]),
+ ]
+ ) == dbscheme.Scheme(
src=schema_file.name,
includes=[],
declarations=[
@@ -407,9 +482,9 @@ def test_class_with_derived_and_repeated_property(generate, dir_param):
name="base_reps",
keyset=dbscheme.KeySet(["id", "index"]),
columns=[
- dbscheme.Column('id', '@base'),
- dbscheme.Column('index', 'int'),
- dbscheme.Column('rep', '@prop'),
+ dbscheme.Column("id", "@base"),
+ dbscheme.Column("index", "int"),
+ dbscheme.Column("rep", "@prop"),
],
dir=dir_param.expected,
),
@@ -426,38 +501,41 @@ def test_class_with_derived_and_repeated_property(generate, dir_param):
def test_null_class(generate):
- assert generate([
- schema.Class(
- name="Base",
- derived={"W", "X", "Y", "Z", "Null"},
- ),
- schema.Class(
- name="W",
- bases=["Base"],
- properties=[
- schema.SingleProperty("w", "W"),
- schema.SingleProperty("x", "X"),
- schema.OptionalProperty("y", "Y"),
- schema.RepeatedProperty("z", "Z"),
- ]
- ),
- schema.Class(
- name="X",
- bases=["Base"],
- ),
- schema.Class(
- name="Y",
- bases=["Base"],
- ),
- schema.Class(
- name="Z",
- bases=["Base"],
- ),
- schema.Class(
- name="Null",
- bases=["Base"],
- ),
- ], null="Null") == dbscheme.Scheme(
+ assert generate(
+ [
+ schema.Class(
+ name="Base",
+ derived={"W", "X", "Y", "Z", "Null"},
+ ),
+ schema.Class(
+ name="W",
+ bases=["Base"],
+ properties=[
+ schema.SingleProperty("w", "W"),
+ schema.SingleProperty("x", "X"),
+ schema.OptionalProperty("y", "Y"),
+ schema.RepeatedProperty("z", "Z"),
+ ],
+ ),
+ schema.Class(
+ name="X",
+ bases=["Base"],
+ ),
+ schema.Class(
+ name="Y",
+ bases=["Base"],
+ ),
+ schema.Class(
+ name="Z",
+ bases=["Base"],
+ ),
+ schema.Class(
+ name="Null",
+ bases=["Base"],
+ ),
+ ],
+ null="Null",
+ ) == dbscheme.Scheme(
src=schema_file.name,
includes=[],
declarations=[
@@ -468,50 +546,50 @@ def test_null_class(generate):
dbscheme.Table(
name="ws",
columns=[
- dbscheme.Column('id', '@w', binding=True),
- dbscheme.Column('w', '@w_or_none'),
- dbscheme.Column('x', '@x_or_none'),
+ dbscheme.Column("id", "@w", binding=True),
+ dbscheme.Column("w", "@w_or_none"),
+ dbscheme.Column("x", "@x_or_none"),
],
),
dbscheme.Table(
name="w_ies",
keyset=dbscheme.KeySet(["id"]),
columns=[
- dbscheme.Column('id', '@w'),
- dbscheme.Column('y', '@y_or_none'),
+ dbscheme.Column("id", "@w"),
+ dbscheme.Column("y", "@y_or_none"),
],
),
dbscheme.Table(
name="w_zs",
keyset=dbscheme.KeySet(["id", "index"]),
columns=[
- dbscheme.Column('id', '@w'),
- dbscheme.Column('index', 'int'),
- dbscheme.Column('z', '@z_or_none'),
+ dbscheme.Column("id", "@w"),
+ dbscheme.Column("index", "int"),
+ dbscheme.Column("z", "@z_or_none"),
],
),
dbscheme.Table(
name="xes",
columns=[
- dbscheme.Column('id', '@x', binding=True),
+ dbscheme.Column("id", "@x", binding=True),
],
),
dbscheme.Table(
name="ys",
columns=[
- dbscheme.Column('id', '@y', binding=True),
+ dbscheme.Column("id", "@y", binding=True),
],
),
dbscheme.Table(
name="zs",
columns=[
- dbscheme.Column('id', '@z', binding=True),
+ dbscheme.Column("id", "@z", binding=True),
],
),
dbscheme.Table(
name="nulls",
columns=[
- dbscheme.Column('id', '@null', binding=True),
+ dbscheme.Column("id", "@null", binding=True),
],
),
dbscheme.Union(
@@ -535,11 +613,15 @@ def test_null_class(generate):
def test_synth_classes_ignored(generate):
- assert generate([
- schema.Class(name="A", pragmas={"synth": schema.SynthInfo()}),
- schema.Class(name="B", pragmas={"synth": schema.SynthInfo(from_class="A")}),
- schema.Class(name="C", pragmas={"synth": schema.SynthInfo(on_arguments={"x": "A"})}),
- ]) == dbscheme.Scheme(
+ assert generate(
+ [
+ schema.Class(name="A", pragmas={"synth": schema.SynthInfo()}),
+ schema.Class(name="B", pragmas={"synth": schema.SynthInfo(from_class="A")}),
+ schema.Class(
+ name="C", pragmas={"synth": schema.SynthInfo(on_arguments={"x": "A"})}
+ ),
+ ]
+ ) == dbscheme.Scheme(
src=schema_file.name,
includes=[],
declarations=[],
@@ -547,11 +629,13 @@ def test_synth_classes_ignored(generate):
def test_synth_derived_classes_ignored(generate):
- assert generate([
- schema.Class(name="A", derived={"B", "C"}),
- schema.Class(name="B", bases=["A"], pragmas={"synth": schema.SynthInfo()}),
- schema.Class(name="C", bases=["A"]),
- ]) == dbscheme.Scheme(
+ assert generate(
+ [
+ schema.Class(name="A", derived={"B", "C"}),
+ schema.Class(name="B", bases=["A"], pragmas={"synth": schema.SynthInfo()}),
+ schema.Class(name="C", bases=["A"]),
+ ]
+ ) == dbscheme.Scheme(
src=schema_file.name,
includes=[],
declarations=[
@@ -561,23 +645,28 @@ def test_synth_derived_classes_ignored(generate):
columns=[
dbscheme.Column("id", "@c", binding=True),
],
- )
+ ),
],
)
def test_synth_properties_ignored(generate):
- assert generate([
- schema.Class(name="A", properties=[
- schema.SingleProperty("x", "a"),
- schema.SingleProperty("y", "b", synth=True),
- schema.SingleProperty("z", "c"),
- schema.OptionalProperty("foo", "bar", synth=True),
- schema.RepeatedProperty("baz", "bazz", synth=True),
- schema.RepeatedOptionalProperty("bazzz", "bazzzz", synth=True),
- schema.RepeatedUnorderedProperty("bazzzzz", "bazzzzzz", synth=True),
- ]),
- ]) == dbscheme.Scheme(
+ assert generate(
+ [
+ schema.Class(
+ name="A",
+ properties=[
+ schema.SingleProperty("x", "a"),
+ schema.SingleProperty("y", "b", synth=True),
+ schema.SingleProperty("z", "c"),
+ schema.OptionalProperty("foo", "bar", synth=True),
+ schema.RepeatedProperty("baz", "bazz", synth=True),
+ schema.RepeatedOptionalProperty("bazzz", "bazzzz", synth=True),
+ schema.RepeatedUnorderedProperty("bazzzzz", "bazzzzzz", synth=True),
+ ],
+ ),
+ ]
+ ) == dbscheme.Scheme(
src=schema_file.name,
includes=[],
declarations=[
@@ -595,24 +684,44 @@ def test_synth_properties_ignored(generate):
def test_table_conflict(generate):
with pytest.raises(dbschemegen.Error):
- generate([
- schema.Class("Foo", properties=[
- schema.OptionalProperty("bar", "FooBar"),
- ]),
- schema.Class("FooBar"),
- ])
+ generate(
+ [
+ schema.Class(
+ "Foo",
+ properties=[
+ schema.OptionalProperty("bar", "FooBar"),
+ ],
+ ),
+ schema.Class("FooBar"),
+ ]
+ )
def test_table_name_overrides(generate):
- assert generate([
- schema.Class("Obj", properties=[
- schema.OptionalProperty("x", "a", pragmas={"ql_db_table_name": "foo"}),
- schema.RepeatedProperty("y", "b", pragmas={"ql_db_table_name": "bar"}),
- schema.RepeatedOptionalProperty("z", "c", pragmas={"ql_db_table_name": "baz"}),
- schema.PredicateProperty("p", pragmas={"ql_db_table_name": "hello"}),
- schema.RepeatedUnorderedProperty("q", "d", pragmas={"ql_db_table_name": "world"}),
- ]),
- ]) == dbscheme.Scheme(
+ assert generate(
+ [
+ schema.Class(
+ "Obj",
+ properties=[
+ schema.OptionalProperty(
+ "x", "a", pragmas={"ql_db_table_name": "foo"}
+ ),
+ schema.RepeatedProperty(
+ "y", "b", pragmas={"ql_db_table_name": "bar"}
+ ),
+ schema.RepeatedOptionalProperty(
+ "z", "c", pragmas={"ql_db_table_name": "baz"}
+ ),
+ schema.PredicateProperty(
+ "p", pragmas={"ql_db_table_name": "hello"}
+ ),
+ schema.RepeatedUnorderedProperty(
+ "q", "d", pragmas={"ql_db_table_name": "world"}
+ ),
+ ],
+ ),
+ ]
+ ) == dbscheme.Scheme(
src=schema_file.name,
includes=[],
declarations=[
@@ -666,5 +775,5 @@ def test_table_name_overrides(generate):
)
-if __name__ == '__main__':
+if __name__ == "__main__":
sys.exit(pytest.main([__file__] + sys.argv[1:]))
diff --git a/misc/codegen/test/test_dbschemelaoder.py b/misc/codegen/test/test_dbschemelaoder.py
index ab4efbff75a1..e9079b699b93 100644
--- a/misc/codegen/test/test_dbschemelaoder.py
+++ b/misc/codegen/test/test_dbschemelaoder.py
@@ -22,26 +22,42 @@ def test_load_empty(load):
def test_load_one_empty_table(load):
- assert load("""
+ assert (
+ load(
+ """
test_foos();
-""") == [
- dbscheme.Table(name="test_foos", columns=[])
- ]
+"""
+ )
+ == [dbscheme.Table(name="test_foos", columns=[])]
+ )
def test_load_table_with_keyset(load):
- assert load("""
+ assert (
+ load(
+ """
#keyset[x, y,z]
test_foos();
-""") == [
- dbscheme.Table(name="test_foos", columns=[], keyset=dbscheme.KeySet(["x", "y", "z"]))
- ]
+"""
+ )
+ == [
+ dbscheme.Table(
+ name="test_foos", columns=[], keyset=dbscheme.KeySet(["x", "y", "z"])
+ )
+ ]
+ )
expected_columns = [
("int foo: int ref", dbscheme.Column(schema_name="foo", type="int", binding=False)),
- (" int bar : int ref", dbscheme.Column(schema_name="bar", type="int", binding=False)),
- ("str baz_: str ref", dbscheme.Column(schema_name="baz", type="str", binding=False)),
+ (
+ " int bar : int ref",
+ dbscheme.Column(schema_name="bar", type="int", binding=False),
+ ),
+ (
+ "str baz_: str ref",
+ dbscheme.Column(schema_name="baz", type="str", binding=False),
+ ),
("int x: @foo ref", dbscheme.Column(schema_name="x", type="@foo", binding=False)),
("int y: @foo", dbscheme.Column(schema_name="y", type="@foo", binding=True)),
("unique int z: @foo", dbscheme.Column(schema_name="z", type="@foo", binding=True)),
@@ -50,42 +66,58 @@ def test_load_table_with_keyset(load):
@pytest.mark.parametrize("column,expected", expected_columns)
def test_load_table_with_column(load, column, expected):
- assert load(f"""
+ assert (
+ load(
+ f"""
foos(
{column}
);
-""") == [
- dbscheme.Table(name="foos", columns=[deepcopy(expected)])
- ]
+"""
+ )
+ == [dbscheme.Table(name="foos", columns=[deepcopy(expected)])]
+ )
def test_load_table_with_multiple_columns(load):
columns = ",\n".join(c for c, _ in expected_columns)
expected = [deepcopy(e) for _, e in expected_columns]
- assert load(f"""
+ assert (
+ load(
+ f"""
foos(
{columns}
);
-""") == [
- dbscheme.Table(name="foos", columns=expected)
- ]
+"""
+ )
+ == [dbscheme.Table(name="foos", columns=expected)]
+ )
def test_load_table_with_multiple_columns_and_dir(load):
columns = ",\n".join(c for c, _ in expected_columns)
expected = [deepcopy(e) for _, e in expected_columns]
- assert load(f"""
+ assert (
+ load(
+ f"""
foos( //dir=foo/bar/baz
{columns}
);
-""") == [
- dbscheme.Table(name="foos", columns=expected, dir=pathlib.Path("foo/bar/baz"))
- ]
+"""
+ )
+ == [
+ dbscheme.Table(
+ name="foos", columns=expected, dir=pathlib.Path("foo/bar/baz")
+ )
+ ]
+ )
def test_load_multiple_table_with_columns(load):
tables = [f"table{i}({col});" for i, (col, _) in enumerate(expected_columns)]
- expected = [dbscheme.Table(name=f"table{i}", columns=[deepcopy(e)]) for i, (_, e) in enumerate(expected_columns)]
+ expected = [
+ dbscheme.Table(name=f"table{i}", columns=[deepcopy(e)])
+ for i, (_, e) in enumerate(expected_columns)
+ ]
assert load("\n".join(tables)) == expected
@@ -96,28 +128,41 @@ def test_union(load):
def test_table_and_union(load):
- assert load("""
+ assert (
+ load(
+ """
foos();
-@foo = @bar | @baz | @bla;""") == [
- dbscheme.Table(name="foos", columns=[]),
- dbscheme.Union(lhs="@foo", rhs=["@bar", "@baz", "@bla"]),
- ]
+@foo = @bar | @baz | @bla;"""
+ )
+ == [
+ dbscheme.Table(name="foos", columns=[]),
+ dbscheme.Union(lhs="@foo", rhs=["@bar", "@baz", "@bla"]),
+ ]
+ )
def test_comments_ignored(load):
- assert load("""
+ assert (
+ load(
+ """
// fake_table();
foos(/* x */unique /*y*/int/*
z
*/ id/* */: /* * */ @bar/*,
int ignored: int ref*/);
-@foo = @bar | @baz | @bla; // | @xxx""") == [
- dbscheme.Table(name="foos", columns=[dbscheme.Column(schema_name="id", type="@bar", binding=True)]),
- dbscheme.Union(lhs="@foo", rhs=["@bar", "@baz", "@bla"]),
- ]
-
-
-if __name__ == '__main__':
+@foo = @bar | @baz | @bla; // | @xxx"""
+ )
+ == [
+ dbscheme.Table(
+ name="foos",
+ columns=[dbscheme.Column(schema_name="id", type="@bar", binding=True)],
+ ),
+ dbscheme.Union(lhs="@foo", rhs=["@bar", "@baz", "@bla"]),
+ ]
+ )
+
+
+if __name__ == "__main__":
sys.exit(pytest.main([__file__] + sys.argv[1:]))
diff --git a/misc/codegen/test/test_ql.py b/misc/codegen/test/test_ql.py
index e326e65a9e4f..406c6134a477 100644
--- a/misc/codegen/test/test_ql.py
+++ b/misc/codegen/test/test_ql.py
@@ -34,37 +34,55 @@ def test_property_unordered_getter(name, expected_getter):
assert prop.getter == expected_getter
-@pytest.mark.parametrize("plural,expected", [
- (None, False),
- ("", False),
- ("X", True),
-])
+@pytest.mark.parametrize(
+ "plural,expected",
+ [
+ (None, False),
+ ("", False),
+ ("X", True),
+ ],
+)
def test_property_is_repeated(plural, expected):
prop = ql.Property("foo", "Foo", "props", ["result"], plural=plural)
assert prop.is_repeated is expected
-@pytest.mark.parametrize("plural,unordered,expected", [
- (None, False, False),
- ("", False, False),
- ("X", False, True),
- ("X", True, False),
-])
+@pytest.mark.parametrize(
+ "plural,unordered,expected",
+ [
+ (None, False, False),
+ ("", False, False),
+ ("X", False, True),
+ ("X", True, False),
+ ],
+)
def test_property_is_indexed(plural, unordered, expected):
- prop = ql.Property("foo", "Foo", "props", ["result"], plural=plural, is_unordered=unordered)
+ prop = ql.Property(
+ "foo", "Foo", "props", ["result"], plural=plural, is_unordered=unordered
+ )
assert prop.is_indexed is expected
-@pytest.mark.parametrize("is_optional,is_predicate,plural,expected", [
- (False, False, None, True),
- (False, False, "", True),
- (False, False, "X", False),
- (True, False, None, False),
- (False, True, None, False),
-])
+@pytest.mark.parametrize(
+ "is_optional,is_predicate,plural,expected",
+ [
+ (False, False, None, True),
+ (False, False, "", True),
+ (False, False, "X", False),
+ (True, False, None, False),
+ (False, True, None, False),
+ ],
+)
def test_property_is_single(is_optional, is_predicate, plural, expected):
- prop = ql.Property("foo", "Foo", "props", ["result"], plural=plural,
- is_predicate=is_predicate, is_optional=is_optional)
+ prop = ql.Property(
+ "foo",
+ "Foo",
+ "props",
+ ["result"],
+ plural=plural,
+ is_predicate=is_predicate,
+ is_optional=is_optional,
+ )
assert prop.is_single is expected
@@ -85,7 +103,12 @@ def test_property_predicate_getter():
def test_class_processes_bases():
bases = ["B", "Ab", "C", "Aa"]
- expected = [ql.Base("B"), ql.Base("Ab", prev="B"), ql.Base("C", prev="Ab"), ql.Base("Aa", prev="C")]
+ expected = [
+ ql.Base("B"),
+ ql.Base("Ab", prev="B"),
+ ql.Base("C", prev="Ab"),
+ ql.Base("Aa", prev="C"),
+ ]
cls = ql.Class("Foo", bases=bases)
assert cls.bases == expected
@@ -110,7 +133,9 @@ def test_non_root_class():
assert not cls.root
-@pytest.mark.parametrize("prev_child,is_child", [(None, False), ("", True), ("x", True)])
+@pytest.mark.parametrize(
+ "prev_child,is_child", [(None, False), ("", True), ("x", True)]
+)
def test_is_child(prev_child, is_child):
p = ql.Property("Foo", "int", prev_child=prev_child)
assert p.is_child is is_child
@@ -122,22 +147,27 @@ def test_empty_class_no_children():
def test_class_no_children():
- cls = ql.Class("Class", properties=[ql.Property("Foo", "int"), ql.Property("Bar", "string")])
+ cls = ql.Class(
+ "Class", properties=[ql.Property("Foo", "int"), ql.Property("Bar", "string")]
+ )
assert cls.has_children is False
def test_class_with_children():
- cls = ql.Class("Class", properties=[ql.Property("Foo", "int"), ql.Property("Child", "x", prev_child=""),
- ql.Property("Bar", "string")])
+ cls = ql.Class(
+ "Class",
+ properties=[
+ ql.Property("Foo", "int"),
+ ql.Property("Child", "x", prev_child=""),
+ ql.Property("Bar", "string"),
+ ],
+ )
assert cls.has_children is True
-@pytest.mark.parametrize("doc,expected",
- [
- (["foo", "bar"], True),
- (["foo", "bar"], True),
- ([], False)
- ])
+@pytest.mark.parametrize(
+ "doc,expected", [(["foo", "bar"], True), (["foo", "bar"], True), ([], False)]
+)
def test_has_doc(doc, expected):
stub = ql.Stub("Class", base_import="foo", import_prefix="bar", doc=doc)
assert stub.has_qldoc is expected
@@ -150,5 +180,5 @@ def test_synth_accessor_has_first_constructor_param_marked():
assert [p.param for p in x.constructorparams] == params
-if __name__ == '__main__':
+if __name__ == "__main__":
sys.exit(pytest.main([__file__] + sys.argv[1:]))
diff --git a/misc/codegen/test/test_qlgen.py b/misc/codegen/test/test_qlgen.py
index 75e587fbd5eb..43617d5f9e42 100644
--- a/misc/codegen/test/test_qlgen.py
+++ b/misc/codegen/test/test_qlgen.py
@@ -17,22 +17,28 @@ def run_mock():
# these are lambdas so that they will use patched paths when called
-def stub_path(): return paths.root_dir / "ql/lib/stub/path"
+def stub_path():
+ return paths.root_dir / "ql/lib/stub/path"
-def ql_output_path(): return paths.root_dir / "ql/lib/other/path"
+def ql_output_path():
+ return paths.root_dir / "ql/lib/other/path"
-def ql_test_output_path(): return paths.root_dir / "ql/test/path"
+def ql_test_output_path():
+ return paths.root_dir / "ql/test/path"
-def generated_registry_path(): return paths.root_dir / "ql/registry.list"
+def generated_registry_path():
+ return paths.root_dir / "ql/registry.list"
-def import_file(): return stub_path().with_suffix(".qll")
+def import_file():
+ return stub_path().with_suffix(".qll")
-def children_file(): return ql_output_path() / "ParentChild.qll"
+def children_file():
+ return ql_output_path() / "ParentChild.qll"
stub_import = "stub.path"
@@ -63,7 +69,9 @@ def generate(input, qlgen_opts, renderer, render_manager):
def func(classes):
input.classes = {cls.name: cls for cls in classes}
- return run_managed_generation(qlgen.generate, qlgen_opts, renderer, render_manager)
+ return run_managed_generation(
+ qlgen.generate, qlgen_opts, renderer, render_manager
+ )
return func
@@ -109,20 +117,38 @@ def _filter_generated_classes(ret, output_test_files=False):
except ValueError:
assert False, f"{f} is in wrong directory"
if output_test_files:
- return {
- str(f): ret[ql_test_output_path() / f]
- for f in test_files
- }
- base_files -= {pathlib.Path(f"{name}.qll") for name in
- ("Raw", "Synth", "SynthConstructors", "PureSynthConstructors")}
- stub_files = {pathlib.Path(f.parent.parent, f.stem + ".qll") if f.parent.name ==
- "internal" and pathlib.Path(f.parent.parent, f.stem + ".qll") in base_files else f for f in stub_files}
+ return {str(f): ret[ql_test_output_path() / f] for f in test_files}
+ base_files -= {
+ pathlib.Path(f"{name}.qll")
+ for name in ("Raw", "Synth", "SynthConstructors", "PureSynthConstructors")
+ }
+ stub_files = {
+ (
+ pathlib.Path(f.parent.parent, f.stem + ".qll")
+ if f.parent.name == "internal"
+ and pathlib.Path(f.parent.parent, f.stem + ".qll") in base_files
+ else f
+ )
+ for f in stub_files
+ }
assert base_files <= stub_files
return {
- str(f): (ret[stub_path() / "internal" / f] if stub_path() / "internal" / f in ret else ret[stub_path() / f],
- ret[stub_path() / pathlib.Path(f.parent, "internal" if not f.parent.name ==
- "internal" else "", f.stem + "Impl.qll")],
- ret[ql_output_path() / f])
+ str(f): (
+ (
+ ret[stub_path() / "internal" / f]
+ if stub_path() / "internal" / f in ret
+ else ret[stub_path() / f]
+ ),
+ ret[
+ stub_path()
+ / pathlib.Path(
+ f.parent,
+ "internal" if not f.parent.name == "internal" else "",
+ f.stem + "Impl.qll",
+ )
+ ],
+ ret[ql_output_path() / f],
+ )
for f in base_files
}
@@ -148,8 +174,12 @@ def a_ql_class(**kwargs):
def a_ql_stub(*, name, import_prefix="", **kwargs):
- return ql.Stub(name=name, **kwargs, import_prefix=gen_import,
- base_import=f"{gen_import_prefix}{import_prefix}{name}")
+ return ql.Stub(
+ name=name,
+ **kwargs,
+ import_prefix=gen_import,
+ base_import=f"{gen_import_prefix}{import_prefix}{name}",
+ )
def a_ql_class_public(*, name, **kwargs):
@@ -157,347 +187,674 @@ def a_ql_class_public(*, name, **kwargs):
def test_one_empty_class(generate_classes):
- assert generate_classes([
- schema.Class("A")
- ]) == {
- "A.qll": (a_ql_class_public(name="A"),
- a_ql_stub(name="A"),
- a_ql_class(name="A", final=True, imports=[stub_import_prefix + "A"]))
+ assert generate_classes([schema.Class("A")]) == {
+ "A.qll": (
+ a_ql_class_public(name="A"),
+ a_ql_stub(name="A"),
+ a_ql_class(name="A", final=True, imports=[stub_import_prefix + "A"]),
+ )
}
def test_one_empty_internal_class(generate_classes):
- assert generate_classes([
- schema.Class("A", pragmas=["ql_internal"])
- ]) == {
- "A.qll": (a_ql_class_public(name="A", internal=True),
- a_ql_stub(name="A"),
- a_ql_class(name="A", final=True, internal=True, imports=[stub_import_prefix_internal + "A"])),
+ assert generate_classes([schema.Class("A", pragmas=["ql_internal"])]) == {
+ "A.qll": (
+ a_ql_class_public(name="A", internal=True),
+ a_ql_stub(name="A"),
+ a_ql_class(
+ name="A",
+ final=True,
+ internal=True,
+ imports=[stub_import_prefix_internal + "A"],
+ ),
+ ),
}
def test_hierarchy(generate_classes):
- assert generate_classes([
- schema.Class("D", bases=["B", "C"]),
- schema.Class("C", bases=["A"], derived={"D"}),
- schema.Class("B", bases=["A"], derived={"D"}),
- schema.Class("A", derived={"B", "C"}),
- ]) == {
- "A.qll": (a_ql_class_public(name="A"), a_ql_stub(name="A"), a_ql_class(name="A", imports=[stub_import_prefix + "A"])),
- "B.qll": (a_ql_class_public(name="B", imports=[stub_import_prefix + "A"]), a_ql_stub(name="B"), a_ql_class(name="B", bases=["A"], bases_impl=["AImpl::A"], imports=[stub_import_prefix_internal + "AImpl::Impl as AImpl"])),
- "C.qll": (a_ql_class_public(name="C", imports=[stub_import_prefix + "A"]), a_ql_stub(name="C"), a_ql_class(name="C", bases=["A"], bases_impl=["AImpl::A"], imports=[stub_import_prefix_internal + "AImpl::Impl as AImpl"])),
- "D.qll": (a_ql_class_public(name="D", imports=[stub_import_prefix + "B", stub_import_prefix + "C"]), a_ql_stub(name="D"), a_ql_class(name="D", final=True, bases=["B", "C"], bases_impl=["BImpl::B", "CImpl::C"],
- imports=[stub_import_prefix_internal + cls + "Impl::Impl as " + cls + "Impl" for cls in "BC"])),
+ assert generate_classes(
+ [
+ schema.Class("D", bases=["B", "C"]),
+ schema.Class("C", bases=["A"], derived={"D"}),
+ schema.Class("B", bases=["A"], derived={"D"}),
+ schema.Class("A", derived={"B", "C"}),
+ ]
+ ) == {
+ "A.qll": (
+ a_ql_class_public(name="A"),
+ a_ql_stub(name="A"),
+ a_ql_class(name="A", imports=[stub_import_prefix + "A"]),
+ ),
+ "B.qll": (
+ a_ql_class_public(name="B", imports=[stub_import_prefix + "A"]),
+ a_ql_stub(name="B"),
+ a_ql_class(
+ name="B",
+ bases=["A"],
+ bases_impl=["AImpl::A"],
+ imports=[stub_import_prefix_internal + "AImpl::Impl as AImpl"],
+ ),
+ ),
+ "C.qll": (
+ a_ql_class_public(name="C", imports=[stub_import_prefix + "A"]),
+ a_ql_stub(name="C"),
+ a_ql_class(
+ name="C",
+ bases=["A"],
+ bases_impl=["AImpl::A"],
+ imports=[stub_import_prefix_internal + "AImpl::Impl as AImpl"],
+ ),
+ ),
+ "D.qll": (
+ a_ql_class_public(
+ name="D", imports=[stub_import_prefix + "B", stub_import_prefix + "C"]
+ ),
+ a_ql_stub(name="D"),
+ a_ql_class(
+ name="D",
+ final=True,
+ bases=["B", "C"],
+ bases_impl=["BImpl::B", "CImpl::C"],
+ imports=[
+ stub_import_prefix_internal + cls + "Impl::Impl as " + cls + "Impl"
+ for cls in "BC"
+ ],
+ ),
+ ),
}
def test_hierarchy_imports(generate_import_list):
- assert generate_import_list([
- schema.Class("D", bases=["B", "C"]),
- schema.Class("C", bases=["A"], derived={"D"}),
- schema.Class("B", bases=["A"], derived={"D"}),
- schema.Class("A", derived={"B", "C"}),
- ]) == ql.ImportList([stub_import_prefix + cls for cls in "ABCD"])
+ assert generate_import_list(
+ [
+ schema.Class("D", bases=["B", "C"]),
+ schema.Class("C", bases=["A"], derived={"D"}),
+ schema.Class("B", bases=["A"], derived={"D"}),
+ schema.Class("A", derived={"B", "C"}),
+ ]
+ ) == ql.ImportList([stub_import_prefix + cls for cls in "ABCD"])
def test_internal_not_in_import_list(generate_import_list):
- assert generate_import_list([
- schema.Class("D", bases=["B", "C"]),
- schema.Class("C", bases=["A"], derived={"D"}, pragmas=["ql_internal"]),
- schema.Class("B", bases=["A"], derived={"D"}),
- schema.Class("A", derived={"B", "C"}, pragmas=["ql_internal"]),
- ]) == ql.ImportList([stub_import_prefix + cls for cls in "BD"])
+ assert generate_import_list(
+ [
+ schema.Class("D", bases=["B", "C"]),
+ schema.Class("C", bases=["A"], derived={"D"}, pragmas=["ql_internal"]),
+ schema.Class("B", bases=["A"], derived={"D"}),
+ schema.Class("A", derived={"B", "C"}, pragmas=["ql_internal"]),
+ ]
+ ) == ql.ImportList([stub_import_prefix + cls for cls in "BD"])
def test_hierarchy_children(generate_children_implementations):
- assert generate_children_implementations([
- schema.Class("A", derived={"B", "C"}, pragmas=["ql_internal"]),
- schema.Class("B", bases=["A"], derived={"D"}),
- schema.Class("C", bases=["A"], derived={"D"}, pragmas=["ql_internal"]),
- schema.Class("D", bases=["B", "C"]),
- ]) == ql.GetParentImplementation(
- classes=[a_ql_class(name="A", internal=True, imports=[stub_import_prefix_internal + "A"]),
- a_ql_class(name="B", bases=["A"], bases_impl=["AImpl::A"], imports=[
- stub_import_prefix_internal + "AImpl::Impl as AImpl"]),
- a_ql_class(name="C", bases=["A"], bases_impl=["AImpl::A"], imports=[
- stub_import_prefix_internal + "AImpl::Impl as AImpl"], internal=True),
- a_ql_class(name="D", final=True, bases=["B", "C"], bases_impl=["BImpl::B", "CImpl::C"],
- imports=[stub_import_prefix_internal + cls + "Impl::Impl as " + cls + "Impl" for cls in "BC"]),
- ],
+ assert generate_children_implementations(
+ [
+ schema.Class("A", derived={"B", "C"}, pragmas=["ql_internal"]),
+ schema.Class("B", bases=["A"], derived={"D"}),
+ schema.Class("C", bases=["A"], derived={"D"}, pragmas=["ql_internal"]),
+ schema.Class("D", bases=["B", "C"]),
+ ]
+ ) == ql.GetParentImplementation(
+ classes=[
+ a_ql_class(
+ name="A", internal=True, imports=[stub_import_prefix_internal + "A"]
+ ),
+ a_ql_class(
+ name="B",
+ bases=["A"],
+ bases_impl=["AImpl::A"],
+ imports=[stub_import_prefix_internal + "AImpl::Impl as AImpl"],
+ ),
+ a_ql_class(
+ name="C",
+ bases=["A"],
+ bases_impl=["AImpl::A"],
+ imports=[stub_import_prefix_internal + "AImpl::Impl as AImpl"],
+ internal=True,
+ ),
+ a_ql_class(
+ name="D",
+ final=True,
+ bases=["B", "C"],
+ bases_impl=["BImpl::B", "CImpl::C"],
+ imports=[
+ stub_import_prefix_internal + cls + "Impl::Impl as " + cls + "Impl"
+ for cls in "BC"
+ ],
+ ),
+ ],
imports=[stub_import] + [stub_import_prefix_internal + cls for cls in "AC"],
)
def test_single_property(generate_classes):
- assert generate_classes([
- schema.Class("MyObject", properties=[
- schema.SingleProperty("foo", "bar")]),
- ]) == {
- "MyObject.qll": (a_ql_class_public(name="MyObject"),
- a_ql_stub(name="MyObject"),
- a_ql_class(name="MyObject", final=True,
- properties=[
- ql.Property(singular="Foo", type="bar", tablename="my_objects",
- tableparams=["this", "result"], doc="foo of this my object"),
- ],
- imports=[stub_import_prefix + "MyObject"])),
+ assert generate_classes(
+ [
+ schema.Class("MyObject", properties=[schema.SingleProperty("foo", "bar")]),
+ ]
+ ) == {
+ "MyObject.qll": (
+ a_ql_class_public(name="MyObject"),
+ a_ql_stub(name="MyObject"),
+ a_ql_class(
+ name="MyObject",
+ final=True,
+ properties=[
+ ql.Property(
+ singular="Foo",
+ type="bar",
+ tablename="my_objects",
+ tableparams=["this", "result"],
+ doc="foo of this my object",
+ ),
+ ],
+ imports=[stub_import_prefix + "MyObject"],
+ ),
+ ),
}
def test_internal_property(generate_classes):
- assert generate_classes([
- schema.Class("MyObject", properties=[
- schema.SingleProperty("foo", "bar", pragmas=["ql_internal"])]),
- ]) == {
- "MyObject.qll": (a_ql_class_public(name="MyObject"),
- a_ql_stub(name="MyObject"),
- a_ql_class(name="MyObject", final=True,
- properties=[
- ql.Property(singular="Foo", type="bar", tablename="my_objects",
- tableparams=["this", "result"], doc="foo of this my object",
- internal=True),
- ],
- imports=[stub_import_prefix + "MyObject"])),
+ assert generate_classes(
+ [
+ schema.Class(
+ "MyObject",
+ properties=[
+ schema.SingleProperty("foo", "bar", pragmas=["ql_internal"])
+ ],
+ ),
+ ]
+ ) == {
+ "MyObject.qll": (
+ a_ql_class_public(name="MyObject"),
+ a_ql_stub(name="MyObject"),
+ a_ql_class(
+ name="MyObject",
+ final=True,
+ properties=[
+ ql.Property(
+ singular="Foo",
+ type="bar",
+ tablename="my_objects",
+ tableparams=["this", "result"],
+ doc="foo of this my object",
+ internal=True,
+ ),
+ ],
+ imports=[stub_import_prefix + "MyObject"],
+ ),
+ ),
}
def test_children(generate_classes):
- assert generate_classes([
- schema.Class("FakeRoot"),
- schema.Class("MyObject", properties=[
- schema.SingleProperty("a", "int"),
- schema.SingleProperty("child_1", "int", is_child=True),
- schema.RepeatedProperty("bs", "int"),
- schema.RepeatedProperty("children", "int", is_child=True),
- schema.OptionalProperty("c", "int"),
- schema.OptionalProperty("child_3", "int", is_child=True),
- schema.RepeatedOptionalProperty("d", "int"),
- schema.RepeatedOptionalProperty("child_4", "int", is_child=True),
- ]),
- ]) == {
- "FakeRoot.qll": (a_ql_class_public(name="FakeRoot"), a_ql_stub(name="FakeRoot"), a_ql_class(name="FakeRoot", final=True, imports=[stub_import_prefix + "FakeRoot"])),
- "MyObject.qll": (a_ql_class_public(name="MyObject"),
- a_ql_stub(name="MyObject"),
- a_ql_class(name="MyObject", final=True,
- properties=[
- ql.Property(singular="A", type="int", tablename="my_objects",
- tableparams=["this", "result", "_"],
- doc="a of this my object"),
- ql.Property(singular="Child1", type="int", tablename="my_objects",
- tableparams=["this", "_", "result"], prev_child="",
- doc="child 1 of this my object"),
- ql.Property(singular="B", plural="Bs", type="int",
- tablename="my_object_bs",
- tableparams=["this", "index", "result"],
- doc="b of this my object",
- doc_plural="bs of this my object"),
- ql.Property(singular="Child", plural="Children", type="int",
- tablename="my_object_children",
- tableparams=["this", "index", "result"], prev_child="Child1",
- doc="child of this my object",
- doc_plural="children of this my object"),
- ql.Property(singular="C", type="int", tablename="my_object_cs",
- tableparams=["this", "result"], is_optional=True,
- doc="c of this my object"),
- ql.Property(singular="Child3", type="int",
- tablename="my_object_child_3s",
- tableparams=["this", "result"], is_optional=True,
- prev_child="Child", doc="child 3 of this my object"),
- ql.Property(singular="D", plural="Ds", type="int",
- tablename="my_object_ds",
- tableparams=["this", "index", "result"], is_optional=True,
- doc="d of this my object",
- doc_plural="ds of this my object"),
- ql.Property(singular="Child4", plural="Child4s", type="int",
- tablename="my_object_child_4s",
- tableparams=["this", "index", "result"], is_optional=True,
- prev_child="Child3", doc="child 4 of this my object",
- doc_plural="child 4s of this my object"),
- ],
- imports=[stub_import_prefix + "MyObject"])),
+ assert generate_classes(
+ [
+ schema.Class("FakeRoot"),
+ schema.Class(
+ "MyObject",
+ properties=[
+ schema.SingleProperty("a", "int"),
+ schema.SingleProperty("child_1", "int", is_child=True),
+ schema.RepeatedProperty("bs", "int"),
+ schema.RepeatedProperty("children", "int", is_child=True),
+ schema.OptionalProperty("c", "int"),
+ schema.OptionalProperty("child_3", "int", is_child=True),
+ schema.RepeatedOptionalProperty("d", "int"),
+ schema.RepeatedOptionalProperty("child_4", "int", is_child=True),
+ ],
+ ),
+ ]
+ ) == {
+ "FakeRoot.qll": (
+ a_ql_class_public(name="FakeRoot"),
+ a_ql_stub(name="FakeRoot"),
+ a_ql_class(
+ name="FakeRoot", final=True, imports=[stub_import_prefix + "FakeRoot"]
+ ),
+ ),
+ "MyObject.qll": (
+ a_ql_class_public(name="MyObject"),
+ a_ql_stub(name="MyObject"),
+ a_ql_class(
+ name="MyObject",
+ final=True,
+ properties=[
+ ql.Property(
+ singular="A",
+ type="int",
+ tablename="my_objects",
+ tableparams=["this", "result", "_"],
+ doc="a of this my object",
+ ),
+ ql.Property(
+ singular="Child1",
+ type="int",
+ tablename="my_objects",
+ tableparams=["this", "_", "result"],
+ prev_child="",
+ doc="child 1 of this my object",
+ ),
+ ql.Property(
+ singular="B",
+ plural="Bs",
+ type="int",
+ tablename="my_object_bs",
+ tableparams=["this", "index", "result"],
+ doc="b of this my object",
+ doc_plural="bs of this my object",
+ ),
+ ql.Property(
+ singular="Child",
+ plural="Children",
+ type="int",
+ tablename="my_object_children",
+ tableparams=["this", "index", "result"],
+ prev_child="Child1",
+ doc="child of this my object",
+ doc_plural="children of this my object",
+ ),
+ ql.Property(
+ singular="C",
+ type="int",
+ tablename="my_object_cs",
+ tableparams=["this", "result"],
+ is_optional=True,
+ doc="c of this my object",
+ ),
+ ql.Property(
+ singular="Child3",
+ type="int",
+ tablename="my_object_child_3s",
+ tableparams=["this", "result"],
+ is_optional=True,
+ prev_child="Child",
+ doc="child 3 of this my object",
+ ),
+ ql.Property(
+ singular="D",
+ plural="Ds",
+ type="int",
+ tablename="my_object_ds",
+ tableparams=["this", "index", "result"],
+ is_optional=True,
+ doc="d of this my object",
+ doc_plural="ds of this my object",
+ ),
+ ql.Property(
+ singular="Child4",
+ plural="Child4s",
+ type="int",
+ tablename="my_object_child_4s",
+ tableparams=["this", "index", "result"],
+ is_optional=True,
+ prev_child="Child3",
+ doc="child 4 of this my object",
+ doc_plural="child 4s of this my object",
+ ),
+ ],
+ imports=[stub_import_prefix + "MyObject"],
+ ),
+ ),
}
def test_single_properties(generate_classes):
- assert generate_classes([
- schema.Class("MyObject", properties=[
- schema.SingleProperty("one", "x"),
- schema.SingleProperty("two", "y"),
- schema.SingleProperty("three", "z"),
- ]),
- ]) == {
- "MyObject.qll": (a_ql_class_public(name="MyObject"),
- a_ql_stub(name="MyObject"),
- a_ql_class(name="MyObject", final=True,
- properties=[
- ql.Property(singular="One", type="x", tablename="my_objects",
- tableparams=["this", "result", "_", "_"],
- doc="one of this my object"),
- ql.Property(singular="Two", type="y", tablename="my_objects",
- tableparams=["this", "_", "result", "_"],
- doc="two of this my object"),
- ql.Property(singular="Three", type="z", tablename="my_objects",
- tableparams=["this", "_", "_", "result"],
- doc="three of this my object"),
- ],
- imports=[stub_import_prefix + "MyObject"])),
+ assert generate_classes(
+ [
+ schema.Class(
+ "MyObject",
+ properties=[
+ schema.SingleProperty("one", "x"),
+ schema.SingleProperty("two", "y"),
+ schema.SingleProperty("three", "z"),
+ ],
+ ),
+ ]
+ ) == {
+ "MyObject.qll": (
+ a_ql_class_public(name="MyObject"),
+ a_ql_stub(name="MyObject"),
+ a_ql_class(
+ name="MyObject",
+ final=True,
+ properties=[
+ ql.Property(
+ singular="One",
+ type="x",
+ tablename="my_objects",
+ tableparams=["this", "result", "_", "_"],
+ doc="one of this my object",
+ ),
+ ql.Property(
+ singular="Two",
+ type="y",
+ tablename="my_objects",
+ tableparams=["this", "_", "result", "_"],
+ doc="two of this my object",
+ ),
+ ql.Property(
+ singular="Three",
+ type="z",
+ tablename="my_objects",
+ tableparams=["this", "_", "_", "result"],
+ doc="three of this my object",
+ ),
+ ],
+ imports=[stub_import_prefix + "MyObject"],
+ ),
+ ),
}
@pytest.mark.parametrize("is_child,prev_child", [(False, None), (True, "")])
def test_optional_property(generate_classes, is_child, prev_child):
- assert generate_classes([
- schema.Class("FakeRoot"),
- schema.Class("MyObject", properties=[
- schema.OptionalProperty("foo", "bar", is_child=is_child)]),
- ]) == {
- "FakeRoot.qll": (a_ql_class_public(name="FakeRoot"), a_ql_stub(name="FakeRoot"), a_ql_class(name="FakeRoot", final=True, imports=[stub_import_prefix + "FakeRoot"])),
- "MyObject.qll": (a_ql_class_public(name="MyObject"),
- a_ql_stub(name="MyObject"),
- a_ql_class(name="MyObject", final=True, properties=[
- ql.Property(singular="Foo", type="bar", tablename="my_object_foos",
- tableparams=["this", "result"],
- is_optional=True, prev_child=prev_child, doc="foo of this my object"),
- ],
- imports=[stub_import_prefix + "MyObject"])),
+ assert generate_classes(
+ [
+ schema.Class("FakeRoot"),
+ schema.Class(
+ "MyObject",
+ properties=[schema.OptionalProperty("foo", "bar", is_child=is_child)],
+ ),
+ ]
+ ) == {
+ "FakeRoot.qll": (
+ a_ql_class_public(name="FakeRoot"),
+ a_ql_stub(name="FakeRoot"),
+ a_ql_class(
+ name="FakeRoot", final=True, imports=[stub_import_prefix + "FakeRoot"]
+ ),
+ ),
+ "MyObject.qll": (
+ a_ql_class_public(name="MyObject"),
+ a_ql_stub(name="MyObject"),
+ a_ql_class(
+ name="MyObject",
+ final=True,
+ properties=[
+ ql.Property(
+ singular="Foo",
+ type="bar",
+ tablename="my_object_foos",
+ tableparams=["this", "result"],
+ is_optional=True,
+ prev_child=prev_child,
+ doc="foo of this my object",
+ ),
+ ],
+ imports=[stub_import_prefix + "MyObject"],
+ ),
+ ),
}
@pytest.mark.parametrize("is_child,prev_child", [(False, None), (True, "")])
def test_repeated_property(generate_classes, is_child, prev_child):
- assert generate_classes([
- schema.Class("FakeRoot"),
- schema.Class("MyObject", properties=[
- schema.RepeatedProperty("foo", "bar", is_child=is_child)]),
- ]) == {
- "FakeRoot.qll": (a_ql_class_public(name="FakeRoot"), a_ql_stub(name="FakeRoot"), a_ql_class(name="FakeRoot", final=True, imports=[stub_import_prefix + "FakeRoot"])),
- "MyObject.qll": (a_ql_class_public(name="MyObject"),
- a_ql_stub(name="MyObject"),
- a_ql_class(name="MyObject", final=True, properties=[
- ql.Property(singular="Foo", plural="Foos", type="bar", tablename="my_object_foos",
- tableparams=["this", "index", "result"], prev_child=prev_child,
- doc="foo of this my object", doc_plural="foos of this my object"),
- ],
- imports=[stub_import_prefix + "MyObject"])),
+ assert generate_classes(
+ [
+ schema.Class("FakeRoot"),
+ schema.Class(
+ "MyObject",
+ properties=[schema.RepeatedProperty("foo", "bar", is_child=is_child)],
+ ),
+ ]
+ ) == {
+ "FakeRoot.qll": (
+ a_ql_class_public(name="FakeRoot"),
+ a_ql_stub(name="FakeRoot"),
+ a_ql_class(
+ name="FakeRoot", final=True, imports=[stub_import_prefix + "FakeRoot"]
+ ),
+ ),
+ "MyObject.qll": (
+ a_ql_class_public(name="MyObject"),
+ a_ql_stub(name="MyObject"),
+ a_ql_class(
+ name="MyObject",
+ final=True,
+ properties=[
+ ql.Property(
+ singular="Foo",
+ plural="Foos",
+ type="bar",
+ tablename="my_object_foos",
+ tableparams=["this", "index", "result"],
+ prev_child=prev_child,
+ doc="foo of this my object",
+ doc_plural="foos of this my object",
+ ),
+ ],
+ imports=[stub_import_prefix + "MyObject"],
+ ),
+ ),
}
def test_repeated_unordered_property(generate_classes):
- assert generate_classes([
- schema.Class("FakeRoot"),
- schema.Class("MyObject", properties=[
- schema.RepeatedUnorderedProperty("foo", "bar")]),
- ]) == {
- "FakeRoot.qll": (a_ql_class_public(name="FakeRoot"), a_ql_stub(name="FakeRoot"), a_ql_class(name="FakeRoot", final=True, imports=[stub_import_prefix + "FakeRoot"])),
- "MyObject.qll": (a_ql_class_public(name="MyObject"),
- a_ql_stub(name="MyObject"),
- a_ql_class(name="MyObject", final=True, properties=[
- ql.Property(singular="Foo", plural="Foos", type="bar", tablename="my_object_foos",
- tableparams=["this", "result"], is_unordered=True,
- doc="foo of this my object", doc_plural="foos of this my object"),
- ],
- imports=[stub_import_prefix + "MyObject"])),
+ assert generate_classes(
+ [
+ schema.Class("FakeRoot"),
+ schema.Class(
+ "MyObject", properties=[schema.RepeatedUnorderedProperty("foo", "bar")]
+ ),
+ ]
+ ) == {
+ "FakeRoot.qll": (
+ a_ql_class_public(name="FakeRoot"),
+ a_ql_stub(name="FakeRoot"),
+ a_ql_class(
+ name="FakeRoot", final=True, imports=[stub_import_prefix + "FakeRoot"]
+ ),
+ ),
+ "MyObject.qll": (
+ a_ql_class_public(name="MyObject"),
+ a_ql_stub(name="MyObject"),
+ a_ql_class(
+ name="MyObject",
+ final=True,
+ properties=[
+ ql.Property(
+ singular="Foo",
+ plural="Foos",
+ type="bar",
+ tablename="my_object_foos",
+ tableparams=["this", "result"],
+ is_unordered=True,
+ doc="foo of this my object",
+ doc_plural="foos of this my object",
+ ),
+ ],
+ imports=[stub_import_prefix + "MyObject"],
+ ),
+ ),
}
@pytest.mark.parametrize("is_child,prev_child", [(False, None), (True, "")])
def test_repeated_optional_property(generate_classes, is_child, prev_child):
- assert generate_classes([
- schema.Class("FakeRoot"),
- schema.Class("MyObject", properties=[
- schema.RepeatedOptionalProperty("foo", "bar", is_child=is_child)]),
- ]) == {
-
- "FakeRoot.qll": (a_ql_class_public(name="FakeRoot"), a_ql_stub(name="FakeRoot"), a_ql_class(name="FakeRoot", final=True, imports=[stub_import_prefix + "FakeRoot"])),
- "MyObject.qll": (a_ql_class_public(name="MyObject"),
- a_ql_stub(name="MyObject"),
- a_ql_class(name="MyObject", final=True, properties=[
- ql.Property(singular="Foo", plural="Foos", type="bar", tablename="my_object_foos",
- tableparams=["this", "index", "result"], is_optional=True,
- prev_child=prev_child, doc="foo of this my object",
- doc_plural="foos of this my object"),
- ],
- imports=[stub_import_prefix + "MyObject"])),
+ assert generate_classes(
+ [
+ schema.Class("FakeRoot"),
+ schema.Class(
+ "MyObject",
+ properties=[
+ schema.RepeatedOptionalProperty("foo", "bar", is_child=is_child)
+ ],
+ ),
+ ]
+ ) == {
+ "FakeRoot.qll": (
+ a_ql_class_public(name="FakeRoot"),
+ a_ql_stub(name="FakeRoot"),
+ a_ql_class(
+ name="FakeRoot", final=True, imports=[stub_import_prefix + "FakeRoot"]
+ ),
+ ),
+ "MyObject.qll": (
+ a_ql_class_public(name="MyObject"),
+ a_ql_stub(name="MyObject"),
+ a_ql_class(
+ name="MyObject",
+ final=True,
+ properties=[
+ ql.Property(
+ singular="Foo",
+ plural="Foos",
+ type="bar",
+ tablename="my_object_foos",
+ tableparams=["this", "index", "result"],
+ is_optional=True,
+ prev_child=prev_child,
+ doc="foo of this my object",
+ doc_plural="foos of this my object",
+ ),
+ ],
+ imports=[stub_import_prefix + "MyObject"],
+ ),
+ ),
}
def test_predicate_property(generate_classes):
- assert generate_classes([
- schema.Class("MyObject", properties=[
- schema.PredicateProperty("is_foo")]),
- ]) == {
- "MyObject.qll": (a_ql_class_public(name="MyObject"),
- a_ql_stub(name="MyObject"),
- a_ql_class(name="MyObject", final=True, properties=[
- ql.Property(singular="isFoo", type="predicate", tablename="my_object_is_foo",
- tableparams=["this"], is_predicate=True, doc="this my object is foo"),
- ],
- imports=[stub_import_prefix + "MyObject"])),
+ assert generate_classes(
+ [
+ schema.Class("MyObject", properties=[schema.PredicateProperty("is_foo")]),
+ ]
+ ) == {
+ "MyObject.qll": (
+ a_ql_class_public(name="MyObject"),
+ a_ql_stub(name="MyObject"),
+ a_ql_class(
+ name="MyObject",
+ final=True,
+ properties=[
+ ql.Property(
+ singular="isFoo",
+ type="predicate",
+ tablename="my_object_is_foo",
+ tableparams=["this"],
+ is_predicate=True,
+ doc="this my object is foo",
+ ),
+ ],
+ imports=[stub_import_prefix + "MyObject"],
+ ),
+ ),
}
@pytest.mark.parametrize("is_child,prev_child", [(False, None), (True, "")])
def test_single_class_property(generate_classes, is_child, prev_child):
- assert generate_classes([
- schema.Class("Bar"),
- schema.Class("MyObject", properties=[
- schema.SingleProperty("foo", "Bar", is_child=is_child)]),
- ]) == {
- "MyObject.qll": (a_ql_class_public(name="MyObject", imports=[stub_import_prefix + "Bar"]),
- a_ql_stub(name="MyObject"),
- a_ql_class(
- name="MyObject", final=True, imports=[stub_import_prefix + "Bar", stub_import_prefix + "MyObject"], properties=[
- ql.Property(singular="Foo", type="Bar", tablename="my_objects",
- tableparams=[
- "this", "result"],
- prev_child=prev_child, doc="foo of this my object",
- type_is_codegen_class=True),
- ],
- )),
- "Bar.qll": (a_ql_class_public(name="Bar"), a_ql_stub(name="Bar"), a_ql_class(name="Bar", final=True, imports=[stub_import_prefix + "Bar"])),
+ assert generate_classes(
+ [
+ schema.Class("Bar"),
+ schema.Class(
+ "MyObject",
+ properties=[schema.SingleProperty("foo", "Bar", is_child=is_child)],
+ ),
+ ]
+ ) == {
+ "MyObject.qll": (
+ a_ql_class_public(name="MyObject", imports=[stub_import_prefix + "Bar"]),
+ a_ql_stub(name="MyObject"),
+ a_ql_class(
+ name="MyObject",
+ final=True,
+ imports=[stub_import_prefix + "Bar", stub_import_prefix + "MyObject"],
+ properties=[
+ ql.Property(
+ singular="Foo",
+ type="Bar",
+ tablename="my_objects",
+ tableparams=["this", "result"],
+ prev_child=prev_child,
+ doc="foo of this my object",
+ type_is_codegen_class=True,
+ ),
+ ],
+ ),
+ ),
+ "Bar.qll": (
+ a_ql_class_public(name="Bar"),
+ a_ql_stub(name="Bar"),
+ a_ql_class(name="Bar", final=True, imports=[stub_import_prefix + "Bar"]),
+ ),
}
def test_class_with_doc(generate_classes):
doc = ["Very important class.", "Very."]
- assert generate_classes([
- schema.Class("A", doc=doc),
- ]) == {
- "A.qll": (a_ql_class_public(name="A", doc=doc), a_ql_stub(name="A", doc=doc), a_ql_class(name="A", final=True, doc=doc, imports=[stub_import_prefix + "A"])),
+ assert generate_classes(
+ [
+ schema.Class("A", doc=doc),
+ ]
+ ) == {
+ "A.qll": (
+ a_ql_class_public(name="A", doc=doc),
+ a_ql_stub(name="A", doc=doc),
+ a_ql_class(
+ name="A", final=True, doc=doc, imports=[stub_import_prefix + "A"]
+ ),
+ ),
}
def test_class_dir(generate_classes):
dir = "another/rel/path"
- assert generate_classes([
- schema.Class("A", derived={"B"}, pragmas={"group": dir}),
- schema.Class("B", bases=["A"]),
- ]) == {
+ assert generate_classes(
+ [
+ schema.Class("A", derived={"B"}, pragmas={"group": dir}),
+ schema.Class("B", bases=["A"]),
+ ]
+ ) == {
f"{dir}/A.qll": (
- a_ql_class_public(name="A"), a_ql_stub(name="A", import_prefix="another.rel.path."), a_ql_class(name="A", dir=pathlib.Path(dir), imports=[stub_import_prefix + "another.rel.path.A"])),
- "B.qll": (a_ql_class_public(name="B", imports=[stub_import_prefix + "another.rel.path.A"]),
- a_ql_stub(name="B"),
- a_ql_class(name="B", final=True, bases=["A"], bases_impl=["AImpl::A"],
- imports=[stub_import_prefix + "another.rel.path.internal.AImpl::Impl as AImpl"])),
+ a_ql_class_public(name="A"),
+ a_ql_stub(name="A", import_prefix="another.rel.path."),
+ a_ql_class(
+ name="A",
+ dir=pathlib.Path(dir),
+ imports=[stub_import_prefix + "another.rel.path.A"],
+ ),
+ ),
+ "B.qll": (
+ a_ql_class_public(
+ name="B", imports=[stub_import_prefix + "another.rel.path.A"]
+ ),
+ a_ql_stub(name="B"),
+ a_ql_class(
+ name="B",
+ final=True,
+ bases=["A"],
+ bases_impl=["AImpl::A"],
+ imports=[
+ stub_import_prefix
+ + "another.rel.path.internal.AImpl::Impl as AImpl"
+ ],
+ ),
+ ),
}
def test_root_element_cannot_have_children(generate_classes):
with pytest.raises(qlgen.RootElementHasChildren):
- generate_classes([
- schema.Class('A', properties=[schema.SingleProperty("x", is_child=True)])
- ])
+ generate_classes(
+ [schema.Class("A", properties=[schema.SingleProperty("x", is_child=True)])]
+ )
def test_class_dir_imports(generate_import_list):
dir = "another/rel/path"
- assert generate_import_list([
- schema.Class("A", derived={"B"}, pragmas={"group": dir}),
- schema.Class("B", bases=["A"]),
- ]) == ql.ImportList([
- stub_import_prefix + "B",
- stub_import_prefix + "another.rel.path.A",
- ])
+ assert generate_import_list(
+ [
+ schema.Class("A", derived={"B"}, pragmas={"group": dir}),
+ schema.Class("B", bases=["A"]),
+ ]
+ ) == ql.ImportList(
+ [
+ stub_import_prefix + "B",
+ stub_import_prefix + "another.rel.path.A",
+ ]
+ )
def test_format(opts, generate, render_manager, run_mock):
@@ -507,10 +864,21 @@ def test_format(opts, generate, render_manager, run_mock):
pathlib.Path("bar.qll"),
pathlib.Path("y", "baz.txt"),
]
- generate([schema.Class('A')])
+ generate([schema.Class("A")])
assert run_mock.mock_calls == [
- mock.call([opts.codeql_binary, "query", "format", "--in-place", "--", "x/foo.ql", "bar.qll"],
- stderr=subprocess.PIPE, text=True),
+ mock.call(
+ [
+ opts.codeql_binary,
+ "query",
+ "format",
+ "--in-place",
+ "--",
+ "x/foo.ql",
+ "bar.qll",
+ ],
+ stderr=subprocess.PIPE,
+ text=True,
+ ),
]
@@ -523,7 +891,7 @@ def test_format_error(opts, generate, render_manager, run_mock):
pathlib.Path("y", "baz.txt"),
]
with pytest.raises(qlgen.FormatError):
- generate([schema.Class('A')])
+ generate([schema.Class("A")])
def test_format_no_codeql(opts, generate, render_manager, run_mock):
@@ -532,7 +900,7 @@ def test_format_no_codeql(opts, generate, render_manager, run_mock):
pathlib.Path("bar.qll"),
]
with pytest.raises(qlgen.FormatError):
- generate([schema.Class('A')])
+ generate([schema.Class("A")])
def test_format_no_codeql_in_path(opts, generate, render_manager, run_mock):
@@ -541,7 +909,7 @@ def test_format_no_codeql_in_path(opts, generate, render_manager, run_mock):
pathlib.Path("bar.qll"),
]
with pytest.raises(qlgen.FormatError):
- generate([schema.Class('A')])
+ generate([schema.Class("A")])
@pytest.mark.parametrize("force", [False, True])
@@ -561,23 +929,29 @@ def test_manage_parameters(opts, generate, renderer, force):
write(test_a)
write(test_b)
write(test_c)
- generate([schema.Class('A')])
+ generate([schema.Class("A")])
assert renderer.mock_calls == [
- mock.call.manage(generated={ql_a, ql_b, test_a, test_b, import_file()}, stubs={stub_a, stub_b},
- registry=opts.generated_registry, force=force)
+ mock.call.manage(
+ generated={ql_a, ql_b, test_a, test_b, import_file()},
+ stubs={stub_a, stub_b},
+ registry=opts.generated_registry,
+ force=force,
+ )
]
def test_modified_stub_skipped(qlgen_opts, generate, render_manager):
stub = qlgen_opts.ql_stub_output / "AImpl.qll"
render_manager.is_customized_stub.side_effect = lambda f: f == stub
- assert stub not in generate([schema.Class('A')])
+ assert stub not in generate([schema.Class("A")])
def test_test_missing_source(generate_tests):
- generate_tests([
- schema.Class("A"),
- ]) == {
+ generate_tests(
+ [
+ schema.Class("A"),
+ ]
+ ) == {
"A/MISSING_SOURCE.txt": ql.MissingTestInstructions(),
}
@@ -592,144 +966,236 @@ def a_ql_property_tester(**kwargs):
def test_test_source_present(opts, generate_tests):
write(opts.ql_test_output / "A" / "test.swift")
- assert generate_tests([
- schema.Class("A"),
- ]) == {
+ assert generate_tests(
+ [
+ schema.Class("A"),
+ ]
+ ) == {
"A/A.ql": a_ql_class_tester(class_name="A"),
}
def test_test_source_present_with_dir(opts, generate_tests):
write(opts.ql_test_output / "foo" / "A" / "test.swift")
- assert generate_tests([
- schema.Class("A", pragmas={"group": "foo"}),
- ]) == {
+ assert generate_tests(
+ [
+ schema.Class("A", pragmas={"group": "foo"}),
+ ]
+ ) == {
"foo/A/A.ql": a_ql_class_tester(class_name="A"),
}
def test_test_total_properties(opts, generate_tests):
write(opts.ql_test_output / "B" / "test.swift")
- assert generate_tests([
- schema.Class("A", derived={"B"}, properties=[
- schema.SingleProperty("x", "string"),
- ]),
- schema.Class("B", bases=["A"], properties=[
- schema.PredicateProperty("y", "int"),
- ]),
- ]) == {
- "B/B.ql": a_ql_class_tester(class_name="B", properties=[
- ql.PropertyForTest(getter="getX", type="string"),
- ql.PropertyForTest(getter="y"),
- ])
+ assert generate_tests(
+ [
+ schema.Class(
+ "A",
+ derived={"B"},
+ properties=[
+ schema.SingleProperty("x", "string"),
+ ],
+ ),
+ schema.Class(
+ "B",
+ bases=["A"],
+ properties=[
+ schema.PredicateProperty("y", "int"),
+ ],
+ ),
+ ]
+ ) == {
+ "B/B.ql": a_ql_class_tester(
+ class_name="B",
+ properties=[
+ ql.PropertyForTest(getter="getX", type="string"),
+ ql.PropertyForTest(getter="y"),
+ ],
+ )
}
def test_test_partial_properties(opts, generate_tests):
write(opts.ql_test_output / "B" / "test.swift")
- assert generate_tests([
- schema.Class("A", derived={"B", "C"}, properties=[
- schema.OptionalProperty("x", "string"),
- ]),
- schema.Class("B", bases=["A"], properties=[
- schema.RepeatedProperty("y", "bool"),
- schema.RepeatedOptionalProperty("z", "int"),
- schema.RepeatedUnorderedProperty("w", "string"),
- ]),
- ]) == {
- "B/B.ql": a_ql_class_tester(class_name="B", properties=[
- ql.PropertyForTest(getter="hasX"),
- ql.PropertyForTest(getter="getNumberOfYs", type="int"),
- ql.PropertyForTest(getter="getNumberOfWs", type="int"),
- ]),
- "B/B_getX.ql": a_ql_property_tester(class_name="B",
- property=ql.PropertyForTest(getter="getX", is_total=False,
- type="string")),
- "B/B_getY.ql": a_ql_property_tester(class_name="B",
- property=ql.PropertyForTest(getter="getY", is_total=False,
- is_indexed=True,
- type="bool")),
- "B/B_getZ.ql": a_ql_property_tester(class_name="B",
- property=ql.PropertyForTest(getter="getZ", is_total=False,
- is_indexed=True,
- type="int")),
- "B/B_getAW.ql": a_ql_property_tester(class_name="B",
- property=ql.PropertyForTest(getter="getAW", is_total=False,
- type="string")),
+ assert generate_tests(
+ [
+ schema.Class(
+ "A",
+ derived={"B", "C"},
+ properties=[
+ schema.OptionalProperty("x", "string"),
+ ],
+ ),
+ schema.Class(
+ "B",
+ bases=["A"],
+ properties=[
+ schema.RepeatedProperty("y", "bool"),
+ schema.RepeatedOptionalProperty("z", "int"),
+ schema.RepeatedUnorderedProperty("w", "string"),
+ ],
+ ),
+ ]
+ ) == {
+ "B/B.ql": a_ql_class_tester(
+ class_name="B",
+ properties=[
+ ql.PropertyForTest(getter="hasX"),
+ ql.PropertyForTest(getter="getNumberOfYs", type="int"),
+ ql.PropertyForTest(getter="getNumberOfWs", type="int"),
+ ],
+ ),
+ "B/B_getX.ql": a_ql_property_tester(
+ class_name="B",
+ property=ql.PropertyForTest(getter="getX", is_total=False, type="string"),
+ ),
+ "B/B_getY.ql": a_ql_property_tester(
+ class_name="B",
+ property=ql.PropertyForTest(
+ getter="getY", is_total=False, is_indexed=True, type="bool"
+ ),
+ ),
+ "B/B_getZ.ql": a_ql_property_tester(
+ class_name="B",
+ property=ql.PropertyForTest(
+ getter="getZ", is_total=False, is_indexed=True, type="int"
+ ),
+ ),
+ "B/B_getAW.ql": a_ql_property_tester(
+ class_name="B",
+ property=ql.PropertyForTest(getter="getAW", is_total=False, type="string"),
+ ),
}
def test_test_properties_deduplicated(opts, generate_tests):
write(opts.ql_test_output / "Final" / "test.swift")
- assert generate_tests([
- schema.Class("Base", derived={"A", "B"}, properties=[
- schema.SingleProperty("x", "string"),
- schema.RepeatedProperty("y", "bool"),
- ]),
- schema.Class("A", bases=["Base"], derived={"Final"}),
- schema.Class("B", bases=["Base"], derived={"Final"}),
- schema.Class("Final", bases=["A", "B"]),
- ]) == {
- "Final/Final.ql": a_ql_class_tester(class_name="Final", properties=[
- ql.PropertyForTest(getter="getX", type="string"),
- ql.PropertyForTest(getter="getNumberOfYs", type="int"),
- ]),
- "Final/Final_getY.ql": a_ql_property_tester(class_name="Final",
- property=ql.PropertyForTest(getter="getY", is_total=False,
- is_indexed=True,
- type="bool")),
+ assert generate_tests(
+ [
+ schema.Class(
+ "Base",
+ derived={"A", "B"},
+ properties=[
+ schema.SingleProperty("x", "string"),
+ schema.RepeatedProperty("y", "bool"),
+ ],
+ ),
+ schema.Class("A", bases=["Base"], derived={"Final"}),
+ schema.Class("B", bases=["Base"], derived={"Final"}),
+ schema.Class("Final", bases=["A", "B"]),
+ ]
+ ) == {
+ "Final/Final.ql": a_ql_class_tester(
+ class_name="Final",
+ properties=[
+ ql.PropertyForTest(getter="getX", type="string"),
+ ql.PropertyForTest(getter="getNumberOfYs", type="int"),
+ ],
+ ),
+ "Final/Final_getY.ql": a_ql_property_tester(
+ class_name="Final",
+ property=ql.PropertyForTest(
+ getter="getY", is_total=False, is_indexed=True, type="bool"
+ ),
+ ),
}
def test_test_properties_skipped(opts, generate_tests):
write(opts.ql_test_output / "Derived" / "test.swift")
- assert generate_tests([
- schema.Class("Base", derived={"Derived"}, properties=[
- schema.SingleProperty("x", "string", pragmas=["qltest_skip", "foo"]),
- schema.RepeatedProperty("y", "int", pragmas=["bar", "qltest_skip"]),
- ]),
- schema.Class("Derived", bases=["Base"], properties=[
- schema.PredicateProperty("a", pragmas=["qltest_skip"]),
- schema.OptionalProperty(
- "b", "int", pragmas=["bar", "qltest_skip", "baz"]),
- ]),
- ]) == {
+ assert generate_tests(
+ [
+ schema.Class(
+ "Base",
+ derived={"Derived"},
+ properties=[
+ schema.SingleProperty(
+ "x", "string", pragmas=["qltest_skip", "foo"]
+ ),
+ schema.RepeatedProperty("y", "int", pragmas=["bar", "qltest_skip"]),
+ ],
+ ),
+ schema.Class(
+ "Derived",
+ bases=["Base"],
+ properties=[
+ schema.PredicateProperty("a", pragmas=["qltest_skip"]),
+ schema.OptionalProperty(
+ "b", "int", pragmas=["bar", "qltest_skip", "baz"]
+ ),
+ ],
+ ),
+ ]
+ ) == {
"Derived/Derived.ql": a_ql_class_tester(class_name="Derived"),
}
def test_test_base_class_skipped(opts, generate_tests):
write(opts.ql_test_output / "Derived" / "test.swift")
- assert generate_tests([
- schema.Class("Base", derived={"Derived"}, pragmas=["qltest_skip", "foo"], properties=[
- schema.SingleProperty("x", "string"),
- schema.RepeatedProperty("y", "int"),
- ]),
- schema.Class("Derived", bases=["Base"]),
- ]) == {
+ assert generate_tests(
+ [
+ schema.Class(
+ "Base",
+ derived={"Derived"},
+ pragmas=["qltest_skip", "foo"],
+ properties=[
+ schema.SingleProperty("x", "string"),
+ schema.RepeatedProperty("y", "int"),
+ ],
+ ),
+ schema.Class("Derived", bases=["Base"]),
+ ]
+ ) == {
"Derived/Derived.ql": a_ql_class_tester(class_name="Derived"),
}
def test_test_final_class_skipped(opts, generate_tests):
write(opts.ql_test_output / "Derived" / "test.swift")
- assert generate_tests([
- schema.Class("Base", derived={"Derived"}),
- schema.Class("Derived", bases=["Base"], pragmas=["qltest_skip", "foo"], properties=[
- schema.SingleProperty("x", "string"),
- schema.RepeatedProperty("y", "int"),
- ]),
- ]) == {}
+ assert (
+ generate_tests(
+ [
+ schema.Class("Base", derived={"Derived"}),
+ schema.Class(
+ "Derived",
+ bases=["Base"],
+ pragmas=["qltest_skip", "foo"],
+ properties=[
+ schema.SingleProperty("x", "string"),
+ schema.RepeatedProperty("y", "int"),
+ ],
+ ),
+ ]
+ )
+ == {}
+ )
def test_test_class_hierarchy_collapse(opts, generate_tests):
write(opts.ql_test_output / "Base" / "test.swift")
- assert generate_tests([
- schema.Class("Base", derived={"D1", "D2"}, pragmas=["foo", "qltest_collapse_hierarchy"]),
- schema.Class("D1", bases=["Base"], properties=[schema.SingleProperty("x", "string")]),
- schema.Class("D2", bases=["Base"], derived={"D3"}, properties=[schema.SingleProperty("y", "string")]),
- schema.Class("D3", bases=["D2"], properties=[schema.SingleProperty("z", "string")]),
- ]) == {
+ assert generate_tests(
+ [
+ schema.Class(
+ "Base",
+ derived={"D1", "D2"},
+ pragmas=["foo", "qltest_collapse_hierarchy"],
+ ),
+ schema.Class(
+ "D1", bases=["Base"], properties=[schema.SingleProperty("x", "string")]
+ ),
+ schema.Class(
+ "D2",
+ bases=["Base"],
+ derived={"D3"},
+ properties=[schema.SingleProperty("y", "string")],
+ ),
+ schema.Class(
+ "D3", bases=["D2"], properties=[schema.SingleProperty("z", "string")]
+ ),
+ ]
+ ) == {
"Base/Base.ql": a_ql_class_tester(class_name="Base", show_ql_class=True),
}
@@ -737,13 +1203,26 @@ def test_test_class_hierarchy_collapse(opts, generate_tests):
def test_test_class_hierarchy_uncollapse(opts, generate_tests):
for d in ("Base", "D3", "D4"):
write(opts.ql_test_output / d / "test.swift")
- assert generate_tests([
- schema.Class("Base", derived={"D1", "D2"}, pragmas=["foo", "qltest_collapse_hierarchy"]),
- schema.Class("D1", bases=["Base"], properties=[schema.SingleProperty("x", "string")]),
- schema.Class("D2", bases=["Base"], derived={"D3", "D4"}, pragmas=["qltest_uncollapse_hierarchy", "bar"]),
- schema.Class("D3", bases=["D2"]),
- schema.Class("D4", bases=["D2"]),
- ]) == {
+ assert generate_tests(
+ [
+ schema.Class(
+ "Base",
+ derived={"D1", "D2"},
+ pragmas=["foo", "qltest_collapse_hierarchy"],
+ ),
+ schema.Class(
+ "D1", bases=["Base"], properties=[schema.SingleProperty("x", "string")]
+ ),
+ schema.Class(
+ "D2",
+ bases=["Base"],
+ derived={"D3", "D4"},
+ pragmas=["qltest_uncollapse_hierarchy", "bar"],
+ ),
+ schema.Class("D3", bases=["D2"]),
+ schema.Class("D4", bases=["D2"]),
+ ]
+ ) == {
"Base/Base.ql": a_ql_class_tester(class_name="Base", show_ql_class=True),
"D3/D3.ql": a_ql_class_tester(class_name="D3"),
"D4/D4.ql": a_ql_class_tester(class_name="D4"),
@@ -753,12 +1232,22 @@ def test_test_class_hierarchy_uncollapse(opts, generate_tests):
def test_test_class_hierarchy_uncollapse_at_final(opts, generate_tests):
for d in ("Base", "D3"):
write(opts.ql_test_output / d / "test.swift")
- assert generate_tests([
- schema.Class("Base", derived={"D1", "D2"}, pragmas=["foo", "qltest_collapse_hierarchy"]),
- schema.Class("D1", bases=["Base"], properties=[schema.SingleProperty("x", "string")]),
- schema.Class("D2", bases=["Base"], derived={"D3"}),
- schema.Class("D3", bases=["D2"], pragmas=["qltest_uncollapse_hierarchy", "bar"]),
- ]) == {
+ assert generate_tests(
+ [
+ schema.Class(
+ "Base",
+ derived={"D1", "D2"},
+ pragmas=["foo", "qltest_collapse_hierarchy"],
+ ),
+ schema.Class(
+ "D1", bases=["Base"], properties=[schema.SingleProperty("x", "string")]
+ ),
+ schema.Class("D2", bases=["Base"], derived={"D3"}),
+ schema.Class(
+ "D3", bases=["D2"], pragmas=["qltest_uncollapse_hierarchy", "bar"]
+ ),
+ ]
+ ) == {
"Base/Base.ql": a_ql_class_tester(class_name="Base", show_ql_class=True),
"D3/D3.ql": a_ql_class_tester(class_name="D3"),
}
@@ -766,11 +1255,13 @@ def test_test_class_hierarchy_uncollapse_at_final(opts, generate_tests):
def test_test_with(opts, generate_tests):
write(opts.ql_test_output / "B" / "test.swift")
- assert generate_tests([
- schema.Class("Base", derived={"A", "B"}),
- schema.Class("A", bases=["Base"], pragmas={"qltest_test_with": "B"}),
- schema.Class("B", bases=["Base"]),
- ]) == {
+ assert generate_tests(
+ [
+ schema.Class("Base", derived={"A", "B"}),
+ schema.Class("A", bases=["Base"], pragmas={"qltest_test_with": "B"}),
+ schema.Class("B", bases=["Base"]),
+ ]
+ ) == {
"B/A.ql": a_ql_class_tester(class_name="A"),
"B/B.ql": a_ql_class_tester(class_name="B"),
}
@@ -778,291 +1269,605 @@ def test_test_with(opts, generate_tests):
def test_property_description(generate_classes):
description = ["Lorem", "Ipsum"]
- assert generate_classes([
- schema.Class("MyObject", properties=[
- schema.SingleProperty("foo", "bar", description=description),
- ]),
- ]) == {
- "MyObject.qll": (a_ql_class_public(name="MyObject"),
- a_ql_stub(name="MyObject"),
- a_ql_class(name="MyObject", final=True,
- properties=[
- ql.Property(singular="Foo", type="bar", tablename="my_objects",
- tableparams=["this", "result"],
- doc="foo of this my object",
- description=description),
- ],
- imports=[stub_import_prefix + "MyObject"])),
+ assert generate_classes(
+ [
+ schema.Class(
+ "MyObject",
+ properties=[
+ schema.SingleProperty("foo", "bar", description=description),
+ ],
+ ),
+ ]
+ ) == {
+ "MyObject.qll": (
+ a_ql_class_public(name="MyObject"),
+ a_ql_stub(name="MyObject"),
+ a_ql_class(
+ name="MyObject",
+ final=True,
+ properties=[
+ ql.Property(
+ singular="Foo",
+ type="bar",
+ tablename="my_objects",
+ tableparams=["this", "result"],
+ doc="foo of this my object",
+ description=description,
+ ),
+ ],
+ imports=[stub_import_prefix + "MyObject"],
+ ),
+ ),
}
def test_property_doc_override(generate_classes):
- assert generate_classes([
- schema.Class("MyObject", properties=[
- schema.SingleProperty("foo", "bar", doc="baz")]),
- ]) == {
- "MyObject.qll": (a_ql_class_public(name="MyObject"),
- a_ql_stub(name="MyObject"),
- a_ql_class(name="MyObject", final=True,
- properties=[
- ql.Property(singular="Foo", type="bar", tablename="my_objects",
- tableparams=["this", "result"], doc="baz"),
- ],
- imports=[stub_import_prefix + "MyObject"])),
+ assert generate_classes(
+ [
+ schema.Class(
+ "MyObject", properties=[schema.SingleProperty("foo", "bar", doc="baz")]
+ ),
+ ]
+ ) == {
+ "MyObject.qll": (
+ a_ql_class_public(name="MyObject"),
+ a_ql_stub(name="MyObject"),
+ a_ql_class(
+ name="MyObject",
+ final=True,
+ properties=[
+ ql.Property(
+ singular="Foo",
+ type="bar",
+ tablename="my_objects",
+ tableparams=["this", "result"],
+ doc="baz",
+ ),
+ ],
+ imports=[stub_import_prefix + "MyObject"],
+ ),
+ ),
}
def test_repeated_property_doc_override(generate_classes):
- assert generate_classes([
- schema.Class("MyObject", properties=[
- schema.RepeatedProperty("x", "int", doc="children of this"),
- schema.RepeatedOptionalProperty("y", "int", doc="child of this")]),
- ]) == {
- "MyObject.qll": (a_ql_class_public(name="MyObject"),
- a_ql_stub(name="MyObject"),
- a_ql_class(name="MyObject", final=True,
- properties=[
- ql.Property(singular="X", plural="Xes", type="int",
- tablename="my_object_xes",
- tableparams=["this", "index", "result"],
- doc="child of this", doc_plural="children of this"),
- ql.Property(singular="Y", plural="Ys", type="int",
- tablename="my_object_ies", is_optional=True,
- tableparams=["this", "index", "result"],
- doc="child of this", doc_plural="children of this"),
- ],
- imports=[stub_import_prefix + "MyObject"])),
+ assert generate_classes(
+ [
+ schema.Class(
+ "MyObject",
+ properties=[
+ schema.RepeatedProperty("x", "int", doc="children of this"),
+ schema.RepeatedOptionalProperty("y", "int", doc="child of this"),
+ ],
+ ),
+ ]
+ ) == {
+ "MyObject.qll": (
+ a_ql_class_public(name="MyObject"),
+ a_ql_stub(name="MyObject"),
+ a_ql_class(
+ name="MyObject",
+ final=True,
+ properties=[
+ ql.Property(
+ singular="X",
+ plural="Xes",
+ type="int",
+ tablename="my_object_xes",
+ tableparams=["this", "index", "result"],
+ doc="child of this",
+ doc_plural="children of this",
+ ),
+ ql.Property(
+ singular="Y",
+ plural="Ys",
+ type="int",
+ tablename="my_object_ies",
+ is_optional=True,
+ tableparams=["this", "index", "result"],
+ doc="child of this",
+ doc_plural="children of this",
+ ),
+ ],
+ imports=[stub_import_prefix + "MyObject"],
+ ),
+ ),
}
@pytest.mark.parametrize("abbr,expected", list(qlgen.abbreviations.items()))
def test_property_doc_abbreviations(generate_classes, abbr, expected):
expected_doc = f"foo {expected} bar of this object"
- assert generate_classes([
- schema.Class("Object", properties=[
- schema.SingleProperty(f"foo_{abbr}_bar", "baz")]),
- ]) == {
- "Object.qll": (a_ql_class_public(name="Object"),
- a_ql_stub(name="Object"),
- a_ql_class(name="Object", final=True,
- properties=[
- ql.Property(singular=f"Foo{abbr.capitalize()}Bar", type="baz",
- tablename="objects",
- tableparams=["this", "result"], doc=expected_doc),
- ],
- imports=[stub_import_prefix + "Object"])),
+ assert generate_classes(
+ [
+ schema.Class(
+ "Object", properties=[schema.SingleProperty(f"foo_{abbr}_bar", "baz")]
+ ),
+ ]
+ ) == {
+ "Object.qll": (
+ a_ql_class_public(name="Object"),
+ a_ql_stub(name="Object"),
+ a_ql_class(
+ name="Object",
+ final=True,
+ properties=[
+ ql.Property(
+ singular=f"Foo{abbr.capitalize()}Bar",
+ type="baz",
+ tablename="objects",
+ tableparams=["this", "result"],
+ doc=expected_doc,
+ ),
+ ],
+ imports=[stub_import_prefix + "Object"],
+ ),
+ ),
}
@pytest.mark.parametrize("abbr,expected", list(qlgen.abbreviations.items()))
-def test_property_doc_abbreviations_ignored_if_within_word(generate_classes, abbr, expected):
+def test_property_doc_abbreviations_ignored_if_within_word(
+ generate_classes, abbr, expected
+):
expected_doc = f"foo {abbr}acadabra bar of this object"
- assert generate_classes([
- schema.Class("Object", properties=[
- schema.SingleProperty(f"foo_{abbr}acadabra_bar", "baz")]),
- ]) == {
- "Object.qll": (a_ql_class_public(name="Object"),
- a_ql_stub(name="Object"),
- a_ql_class(name="Object", final=True,
- properties=[
- ql.Property(singular=f"Foo{abbr.capitalize()}acadabraBar", type="baz",
- tablename="objects",
- tableparams=["this", "result"], doc=expected_doc),
- ],
- imports=[stub_import_prefix + "Object"])),
+ assert generate_classes(
+ [
+ schema.Class(
+ "Object",
+ properties=[schema.SingleProperty(f"foo_{abbr}acadabra_bar", "baz")],
+ ),
+ ]
+ ) == {
+ "Object.qll": (
+ a_ql_class_public(name="Object"),
+ a_ql_stub(name="Object"),
+ a_ql_class(
+ name="Object",
+ final=True,
+ properties=[
+ ql.Property(
+ singular=f"Foo{abbr.capitalize()}acadabraBar",
+ type="baz",
+ tablename="objects",
+ tableparams=["this", "result"],
+ doc=expected_doc,
+ ),
+ ],
+ imports=[stub_import_prefix + "Object"],
+ ),
+ ),
}
def test_repeated_property_doc_override_with_format(generate_classes):
- assert generate_classes([
- schema.Class("MyObject", properties=[
- schema.RepeatedProperty("x", "int", doc="special {children} of this"),
- schema.RepeatedOptionalProperty("y", "int", doc="special {child} of this")]),
- ]) == {
- "MyObject.qll": (a_ql_class_public(name="MyObject"),
- a_ql_stub(name="MyObject"),
- a_ql_class(name="MyObject", final=True,
- properties=[
- ql.Property(singular="X", plural="Xes", type="int",
- tablename="my_object_xes",
- tableparams=["this", "index", "result"],
- doc="special child of this",
- doc_plural="special children of this"),
- ql.Property(singular="Y", plural="Ys", type="int",
- tablename="my_object_ies", is_optional=True,
- tableparams=["this", "index", "result"],
- doc="special child of this",
- doc_plural="special children of this"),
- ],
- imports=[stub_import_prefix + "MyObject"])),
+ assert generate_classes(
+ [
+ schema.Class(
+ "MyObject",
+ properties=[
+ schema.RepeatedProperty(
+ "x", "int", doc="special {children} of this"
+ ),
+ schema.RepeatedOptionalProperty(
+ "y", "int", doc="special {child} of this"
+ ),
+ ],
+ ),
+ ]
+ ) == {
+ "MyObject.qll": (
+ a_ql_class_public(name="MyObject"),
+ a_ql_stub(name="MyObject"),
+ a_ql_class(
+ name="MyObject",
+ final=True,
+ properties=[
+ ql.Property(
+ singular="X",
+ plural="Xes",
+ type="int",
+ tablename="my_object_xes",
+ tableparams=["this", "index", "result"],
+ doc="special child of this",
+ doc_plural="special children of this",
+ ),
+ ql.Property(
+ singular="Y",
+ plural="Ys",
+ type="int",
+ tablename="my_object_ies",
+ is_optional=True,
+ tableparams=["this", "index", "result"],
+ doc="special child of this",
+ doc_plural="special children of this",
+ ),
+ ],
+ imports=[stub_import_prefix + "MyObject"],
+ ),
+ ),
}
def test_repeated_property_doc_override_with_multiple_formats(generate_classes):
- assert generate_classes([
- schema.Class("MyObject", properties=[
- schema.RepeatedProperty("x", "int", doc="{cat} or {dog}"),
- schema.RepeatedOptionalProperty("y", "int", doc="{cats} or {dogs}")]),
- ]) == {
- "MyObject.qll": (a_ql_class_public(name="MyObject"),
- a_ql_stub(name="MyObject"),
- a_ql_class(name="MyObject", final=True,
- properties=[
- ql.Property(singular="X", plural="Xes", type="int",
- tablename="my_object_xes",
- tableparams=["this", "index", "result"],
- doc="cat or dog", doc_plural="cats or dogs"),
- ql.Property(singular="Y", plural="Ys", type="int",
- tablename="my_object_ies", is_optional=True,
- tableparams=["this", "index", "result"],
- doc="cat or dog", doc_plural="cats or dogs"),
- ],
- imports=[stub_import_prefix + "MyObject"])),
+ assert generate_classes(
+ [
+ schema.Class(
+ "MyObject",
+ properties=[
+ schema.RepeatedProperty("x", "int", doc="{cat} or {dog}"),
+ schema.RepeatedOptionalProperty("y", "int", doc="{cats} or {dogs}"),
+ ],
+ ),
+ ]
+ ) == {
+ "MyObject.qll": (
+ a_ql_class_public(name="MyObject"),
+ a_ql_stub(name="MyObject"),
+ a_ql_class(
+ name="MyObject",
+ final=True,
+ properties=[
+ ql.Property(
+ singular="X",
+ plural="Xes",
+ type="int",
+ tablename="my_object_xes",
+ tableparams=["this", "index", "result"],
+ doc="cat or dog",
+ doc_plural="cats or dogs",
+ ),
+ ql.Property(
+ singular="Y",
+ plural="Ys",
+ type="int",
+ tablename="my_object_ies",
+ is_optional=True,
+ tableparams=["this", "index", "result"],
+ doc="cat or dog",
+ doc_plural="cats or dogs",
+ ),
+ ],
+ imports=[stub_import_prefix + "MyObject"],
+ ),
+ ),
}
def test_property_doc_override_with_format(generate_classes):
- assert generate_classes([
- schema.Class("MyObject", properties=[
- schema.SingleProperty("foo", "bar", doc="special {baz} of this")]),
- ]) == {
- "MyObject.qll": (a_ql_class_public(name="MyObject"),
- a_ql_stub(name="MyObject"),
- a_ql_class(name="MyObject", final=True,
- properties=[
- ql.Property(singular="Foo", type="bar", tablename="my_objects",
- tableparams=["this", "result"], doc="special baz of this"),
- ],
- imports=[stub_import_prefix + "MyObject"])),
+ assert generate_classes(
+ [
+ schema.Class(
+ "MyObject",
+ properties=[
+ schema.SingleProperty("foo", "bar", doc="special {baz} of this")
+ ],
+ ),
+ ]
+ ) == {
+ "MyObject.qll": (
+ a_ql_class_public(name="MyObject"),
+ a_ql_stub(name="MyObject"),
+ a_ql_class(
+ name="MyObject",
+ final=True,
+ properties=[
+ ql.Property(
+ singular="Foo",
+ type="bar",
+ tablename="my_objects",
+ tableparams=["this", "result"],
+ doc="special baz of this",
+ ),
+ ],
+ imports=[stub_import_prefix + "MyObject"],
+ ),
+ ),
}
def test_property_on_class_with_default_doc_name(generate_classes):
- assert generate_classes([
- schema.Class("MyObject", properties=[
- schema.SingleProperty("foo", "bar")],
- pragmas={"ql_default_doc_name": "baz"}),
- ]) == {
- "MyObject.qll": (a_ql_class_public(name="MyObject"),
- a_ql_stub(name="MyObject"),
- a_ql_class(name="MyObject", final=True,
- properties=[
- ql.Property(singular="Foo", type="bar", tablename="my_objects",
- tableparams=["this", "result"], doc="foo of this baz"),
- ],
- imports=[stub_import_prefix + "MyObject"])),
+ assert generate_classes(
+ [
+ schema.Class(
+ "MyObject",
+ properties=[schema.SingleProperty("foo", "bar")],
+ pragmas={"ql_default_doc_name": "baz"},
+ ),
+ ]
+ ) == {
+ "MyObject.qll": (
+ a_ql_class_public(name="MyObject"),
+ a_ql_stub(name="MyObject"),
+ a_ql_class(
+ name="MyObject",
+ final=True,
+ properties=[
+ ql.Property(
+ singular="Foo",
+ type="bar",
+ tablename="my_objects",
+ tableparams=["this", "result"],
+ doc="foo of this baz",
+ ),
+ ],
+ imports=[stub_import_prefix + "MyObject"],
+ ),
+ ),
}
def test_stub_on_class_with_synth_from_class(generate_classes):
- assert generate_classes([
- schema.Class("MyObject", pragmas={"synth": schema.SynthInfo(from_class="A")},
- properties=[schema.SingleProperty("foo", "bar")]),
- ]) == {
- "MyObject.qll": (a_ql_class_public(name="MyObject"), a_ql_stub(name="MyObject", synth_accessors=[
- ql.SynthUnderlyingAccessor(argument="Entity", type="Raw::A", constructorparams=["result"]),
- ]),
- a_ql_class(name="MyObject", final=True, properties=[
- ql.Property(singular="Foo", type="bar", tablename="my_objects", synth=True,
- tableparams=["this", "result"], doc="foo of this my object"),
- ], imports=[stub_import_prefix + "MyObject"])),
+ assert generate_classes(
+ [
+ schema.Class(
+ "MyObject",
+ pragmas={"synth": schema.SynthInfo(from_class="A")},
+ properties=[schema.SingleProperty("foo", "bar")],
+ ),
+ ]
+ ) == {
+ "MyObject.qll": (
+ a_ql_class_public(name="MyObject"),
+ a_ql_stub(
+ name="MyObject",
+ synth_accessors=[
+ ql.SynthUnderlyingAccessor(
+ argument="Entity", type="Raw::A", constructorparams=["result"]
+ ),
+ ],
+ ),
+ a_ql_class(
+ name="MyObject",
+ final=True,
+ properties=[
+ ql.Property(
+ singular="Foo",
+ type="bar",
+ tablename="my_objects",
+ synth=True,
+ tableparams=["this", "result"],
+ doc="foo of this my object",
+ ),
+ ],
+ imports=[stub_import_prefix + "MyObject"],
+ ),
+ ),
}
def test_stub_on_class_with_synth_on_arguments(generate_classes):
- assert generate_classes([
- schema.Class("MyObject", pragmas={"synth": schema.SynthInfo(on_arguments={"base": "A", "index": "int", "label": "string"})},
- properties=[schema.SingleProperty("foo", "bar")]),
- ]) == {
- "MyObject.qll": (a_ql_class_public(name="MyObject"), a_ql_stub(name="MyObject", synth_accessors=[
- ql.SynthUnderlyingAccessor(argument="Base", type="Raw::A", constructorparams=["result", "_", "_"]),
- ql.SynthUnderlyingAccessor(argument="Index", type="int", constructorparams=["_", "result", "_"]),
- ql.SynthUnderlyingAccessor(argument="Label", type="string", constructorparams=["_", "_", "result"]),
- ]),
- a_ql_class(name="MyObject", final=True, properties=[
- ql.Property(singular="Foo", type="bar", tablename="my_objects", synth=True,
- tableparams=["this", "result"], doc="foo of this my object"),
- ], imports=[stub_import_prefix + "MyObject"])),
+ assert generate_classes(
+ [
+ schema.Class(
+ "MyObject",
+ pragmas={
+ "synth": schema.SynthInfo(
+ on_arguments={"base": "A", "index": "int", "label": "string"}
+ )
+ },
+ properties=[schema.SingleProperty("foo", "bar")],
+ ),
+ ]
+ ) == {
+ "MyObject.qll": (
+ a_ql_class_public(name="MyObject"),
+ a_ql_stub(
+ name="MyObject",
+ synth_accessors=[
+ ql.SynthUnderlyingAccessor(
+ argument="Base",
+ type="Raw::A",
+ constructorparams=["result", "_", "_"],
+ ),
+ ql.SynthUnderlyingAccessor(
+ argument="Index",
+ type="int",
+ constructorparams=["_", "result", "_"],
+ ),
+ ql.SynthUnderlyingAccessor(
+ argument="Label",
+ type="string",
+ constructorparams=["_", "_", "result"],
+ ),
+ ],
+ ),
+ a_ql_class(
+ name="MyObject",
+ final=True,
+ properties=[
+ ql.Property(
+ singular="Foo",
+ type="bar",
+ tablename="my_objects",
+ synth=True,
+ tableparams=["this", "result"],
+ doc="foo of this my object",
+ ),
+ ],
+ imports=[stub_import_prefix + "MyObject"],
+ ),
+ ),
}
def test_synth_property(generate_classes):
- assert generate_classes([
- schema.Class("MyObject", properties=[
- schema.SingleProperty("foo", "bar", synth=True)]),
- ]) == {
- "MyObject.qll": (a_ql_class_public(name="MyObject"),
- a_ql_stub(name="MyObject"),
- a_ql_class(name="MyObject", final=True,
- properties=[
- ql.Property(singular="Foo", type="bar", tablename="my_objects",
- synth=True,
- tableparams=["this", "result"], doc="foo of this my object"),
- ],
- imports=[stub_import_prefix + "MyObject"])),
+ assert generate_classes(
+ [
+ schema.Class(
+ "MyObject", properties=[schema.SingleProperty("foo", "bar", synth=True)]
+ ),
+ ]
+ ) == {
+ "MyObject.qll": (
+ a_ql_class_public(name="MyObject"),
+ a_ql_stub(name="MyObject"),
+ a_ql_class(
+ name="MyObject",
+ final=True,
+ properties=[
+ ql.Property(
+ singular="Foo",
+ type="bar",
+ tablename="my_objects",
+ synth=True,
+ tableparams=["this", "result"],
+ doc="foo of this my object",
+ ),
+ ],
+ imports=[stub_import_prefix + "MyObject"],
+ ),
+ ),
}
def test_hideable_class(generate_classes):
- assert generate_classes([
- schema.Class("MyObject", pragmas=["ql_hideable"]),
- ]) == {
- "MyObject.qll": (a_ql_class_public(name="MyObject"), a_ql_stub(name="MyObject"), a_ql_class(name="MyObject", final=True, hideable=True, imports=[stub_import_prefix + "MyObject"])),
+ assert generate_classes(
+ [
+ schema.Class("MyObject", pragmas=["ql_hideable"]),
+ ]
+ ) == {
+ "MyObject.qll": (
+ a_ql_class_public(name="MyObject"),
+ a_ql_stub(name="MyObject"),
+ a_ql_class(
+ name="MyObject",
+ final=True,
+ hideable=True,
+ imports=[stub_import_prefix + "MyObject"],
+ ),
+ ),
}
def test_hideable_property(generate_classes):
- assert generate_classes([
- schema.Class("MyObject", pragmas=["ql_hideable"]),
- schema.Class("Other", properties=[
- schema.SingleProperty("x", "MyObject"),
- ]),
- ]) == {
- "MyObject.qll": (a_ql_class_public(name="MyObject"), a_ql_stub(name="MyObject"), a_ql_class(name="MyObject", final=True, hideable=True, imports=[stub_import_prefix + "MyObject"])),
- "Other.qll": (a_ql_class_public(name="Other", imports=[stub_import_prefix + "MyObject"]),
- a_ql_stub(name="Other"),
- a_ql_class(name="Other", imports=[stub_import_prefix + "MyObject", stub_import_prefix + "Other"],
- final=True, properties=[
- ql.Property(singular="X", type="MyObject", tablename="others",
- type_is_hideable=True,
- type_is_codegen_class=True,
- tableparams=["this", "result"], doc="x of this other"),
- ])),
+ assert generate_classes(
+ [
+ schema.Class("MyObject", pragmas=["ql_hideable"]),
+ schema.Class(
+ "Other",
+ properties=[
+ schema.SingleProperty("x", "MyObject"),
+ ],
+ ),
+ ]
+ ) == {
+ "MyObject.qll": (
+ a_ql_class_public(name="MyObject"),
+ a_ql_stub(name="MyObject"),
+ a_ql_class(
+ name="MyObject",
+ final=True,
+ hideable=True,
+ imports=[stub_import_prefix + "MyObject"],
+ ),
+ ),
+ "Other.qll": (
+ a_ql_class_public(name="Other", imports=[stub_import_prefix + "MyObject"]),
+ a_ql_stub(name="Other"),
+ a_ql_class(
+ name="Other",
+ imports=[stub_import_prefix + "MyObject", stub_import_prefix + "Other"],
+ final=True,
+ properties=[
+ ql.Property(
+ singular="X",
+ type="MyObject",
+ tablename="others",
+ type_is_hideable=True,
+ type_is_codegen_class=True,
+ tableparams=["this", "result"],
+ doc="x of this other",
+ ),
+ ],
+ ),
+ ),
}
def test_property_with_custom_db_table_name(generate_classes):
- assert generate_classes([
- schema.Class("Obj", properties=[
- schema.OptionalProperty("x", "a", pragmas={"ql_db_table_name": "foo"}),
- schema.RepeatedProperty("y", "b", pragmas={"ql_db_table_name": "bar"}),
- schema.RepeatedOptionalProperty("z", "c", pragmas={"ql_db_table_name": "baz"}),
- schema.PredicateProperty("p", pragmas={"ql_db_table_name": "hello"}),
- schema.RepeatedUnorderedProperty("q", "d", pragmas={"ql_db_table_name": "world"}),
- ]),
- ]) == {
- "Obj.qll": (a_ql_class_public(name="Obj"),
- a_ql_stub(name="Obj"),
- a_ql_class(name="Obj", final=True, properties=[
- ql.Property(singular="X", type="a", tablename="foo",
- tableparams=["this", "result"],
- is_optional=True, doc="x of this obj"),
- ql.Property(singular="Y", plural="Ys", type="b", tablename="bar",
- tableparams=["this", "index", "result"],
- doc="y of this obj", doc_plural="ys of this obj"),
- ql.Property(singular="Z", plural="Zs", type="c", tablename="baz",
- tableparams=["this", "index", "result"],
- is_optional=True, doc="z of this obj", doc_plural="zs of this obj"),
- ql.Property(singular="p", type="predicate", tablename="hello",
- tableparams=["this"], is_predicate=True,
- doc="this obj p"),
- ql.Property(singular="Q", plural="Qs", type="d", tablename="world",
- tableparams=["this", "result"], is_unordered=True,
- doc="q of this obj", doc_plural="qs of this obj"),
- ],
- imports=[stub_import_prefix + "Obj"])),
+ assert generate_classes(
+ [
+ schema.Class(
+ "Obj",
+ properties=[
+ schema.OptionalProperty(
+ "x", "a", pragmas={"ql_db_table_name": "foo"}
+ ),
+ schema.RepeatedProperty(
+ "y", "b", pragmas={"ql_db_table_name": "bar"}
+ ),
+ schema.RepeatedOptionalProperty(
+ "z", "c", pragmas={"ql_db_table_name": "baz"}
+ ),
+ schema.PredicateProperty(
+ "p", pragmas={"ql_db_table_name": "hello"}
+ ),
+ schema.RepeatedUnorderedProperty(
+ "q", "d", pragmas={"ql_db_table_name": "world"}
+ ),
+ ],
+ ),
+ ]
+ ) == {
+ "Obj.qll": (
+ a_ql_class_public(name="Obj"),
+ a_ql_stub(name="Obj"),
+ a_ql_class(
+ name="Obj",
+ final=True,
+ properties=[
+ ql.Property(
+ singular="X",
+ type="a",
+ tablename="foo",
+ tableparams=["this", "result"],
+ is_optional=True,
+ doc="x of this obj",
+ ),
+ ql.Property(
+ singular="Y",
+ plural="Ys",
+ type="b",
+ tablename="bar",
+ tableparams=["this", "index", "result"],
+ doc="y of this obj",
+ doc_plural="ys of this obj",
+ ),
+ ql.Property(
+ singular="Z",
+ plural="Zs",
+ type="c",
+ tablename="baz",
+ tableparams=["this", "index", "result"],
+ is_optional=True,
+ doc="z of this obj",
+ doc_plural="zs of this obj",
+ ),
+ ql.Property(
+ singular="p",
+ type="predicate",
+ tablename="hello",
+ tableparams=["this"],
+ is_predicate=True,
+ doc="this obj p",
+ ),
+ ql.Property(
+ singular="Q",
+ plural="Qs",
+ type="d",
+ tablename="world",
+ tableparams=["this", "result"],
+ is_unordered=True,
+ doc="q of this obj",
+ doc_plural="qs of this obj",
+ ),
+ ],
+ imports=[stub_import_prefix + "Obj"],
+ ),
+ ),
}
-if __name__ == '__main__':
+if __name__ == "__main__":
sys.exit(pytest.main([__file__] + sys.argv[1:]))
diff --git a/misc/codegen/test/test_render.py b/misc/codegen/test/test_render.py
index 21378e715bb2..74803c2300c4 100644
--- a/misc/codegen/test/test_render.py
+++ b/misc/codegen/test/test_render.py
@@ -46,7 +46,10 @@ def write_registry(file, *files_and_hashes):
def assert_registry(file, *files_and_hashes):
assert_file(file, create_registry(files_and_hashes))
files = [file.name, ".gitattributes"] + [f for f, _, _ in files_and_hashes]
- assert_file(file.parent / ".gitattributes", "\n".join(f"/{f} linguist-generated" for f in files) + "\n")
+ assert_file(
+ file.parent / ".gitattributes",
+ "\n".join(f"/{f} linguist-generated" for f in files) + "\n",
+ )
def hash(text):
@@ -56,11 +59,11 @@ def hash(text):
def test_constructor(pystache_renderer_cls, sut):
- pystache_init, = pystache_renderer_cls.mock_calls
- assert set(pystache_init.kwargs) == {'search_dirs', 'escape'}
- assert pystache_init.kwargs['search_dirs'] == str(paths.templates_dir)
+ (pystache_init,) = pystache_renderer_cls.mock_calls
+ assert set(pystache_init.kwargs) == {"search_dirs", "escape"}
+ assert pystache_init.kwargs["search_dirs"] == str(paths.templates_dir)
an_object = object()
- assert pystache_init.kwargs['escape'](an_object) is an_object
+ assert pystache_init.kwargs["escape"](an_object) is an_object
def test_render(pystache_renderer, sut):
@@ -218,7 +221,9 @@ def test_managed_render_with_skipping_of_stub_file(pystache_renderer, sut):
some_processed_output = "// generated some processed output"
registry = paths.root_dir / "a/registry.list"
write(stub, some_processed_output)
- write_registry(registry, ("some/stub.txt", hash(some_output), hash(some_processed_output)))
+ write_registry(
+ registry, ("some/stub.txt", hash(some_output), hash(some_processed_output))
+ )
pystache_renderer.render_name.side_effect = (some_output,)
@@ -227,7 +232,9 @@ def test_managed_render_with_skipping_of_stub_file(pystache_renderer, sut):
assert renderer.written == set()
assert_file(stub, some_processed_output)
- assert_registry(registry, ("some/stub.txt", hash(some_output), hash(some_processed_output)))
+ assert_registry(
+ registry, ("some/stub.txt", hash(some_output), hash(some_processed_output))
+ )
assert pystache_renderer.mock_calls == [
mock.call.render_name(data.template, data, generator=generator),
]
@@ -238,13 +245,17 @@ def test_managed_render_with_modified_generated_file(pystache_renderer, sut):
some_processed_output = "// some processed output"
registry = paths.root_dir / "a/registry.list"
write(output, "// something else")
- write_registry(registry, ("some/output.txt", "whatever", hash(some_processed_output)))
+ write_registry(
+ registry, ("some/output.txt", "whatever", hash(some_processed_output))
+ )
with pytest.raises(render.Error):
sut.manage(generated=(output,), stubs=(), registry=registry)
-def test_managed_render_with_modified_stub_file_still_marked_as_generated(pystache_renderer, sut):
+def test_managed_render_with_modified_stub_file_still_marked_as_generated(
+ pystache_renderer, sut
+):
stub = paths.root_dir / "a/some/stub.txt"
some_processed_output = "// generated some processed output"
registry = paths.root_dir / "a/registry.list"
@@ -255,7 +266,9 @@ def test_managed_render_with_modified_stub_file_still_marked_as_generated(pystac
sut.manage(generated=(), stubs=(stub,), registry=registry)
-def test_managed_render_with_modified_stub_file_not_marked_as_generated(pystache_renderer, sut):
+def test_managed_render_with_modified_stub_file_not_marked_as_generated(
+ pystache_renderer, sut
+):
stub = paths.root_dir / "a/some/stub.txt"
some_processed_output = "// generated some processed output"
registry = paths.root_dir / "a/registry.list"
@@ -272,7 +285,9 @@ class MyError(Exception):
pass
-def test_managed_render_exception_drops_written_and_inexsistent_from_registry(pystache_renderer, sut):
+def test_managed_render_exception_drops_written_and_inexsistent_from_registry(
+ pystache_renderer, sut
+):
data = mock.Mock(spec=("template",))
text = "some text"
pystache_renderer.render_name.side_effect = (text,)
@@ -281,11 +296,9 @@ def test_managed_render_exception_drops_written_and_inexsistent_from_registry(py
write(output, text)
write(paths.root_dir / "a/a")
write(paths.root_dir / "a/c")
- write_registry(registry,
- "aaa",
- ("some/output.txt", "whatever", hash(text)),
- "bbb",
- "ccc")
+ write_registry(
+ registry, "aaa", ("some/output.txt", "whatever", hash(text)), "bbb", "ccc"
+ )
with pytest.raises(MyError):
with sut.manage(generated=(), stubs=(), registry=registry) as renderer:
@@ -299,17 +312,14 @@ def test_managed_render_drops_inexsistent_from_registry(pystache_renderer, sut):
registry = paths.root_dir / "a/registry.list"
write(paths.root_dir / "a/a")
write(paths.root_dir / "a/c")
- write_registry(registry,
- ("a", hash(''), hash('')),
- "bbb",
- ("c", hash(''), hash('')))
+ write_registry(
+ registry, ("a", hash(""), hash("")), "bbb", ("c", hash(""), hash(""))
+ )
with sut.manage(generated=(), stubs=(), registry=registry):
pass
- assert_registry(registry,
- ("a", hash(''), hash('')),
- ("c", hash(''), hash('')))
+ assert_registry(registry, ("a", hash(""), hash("")), ("c", hash(""), hash("")))
def test_managed_render_exception_does_not_erase(pystache_renderer, sut):
@@ -321,7 +331,9 @@ def test_managed_render_exception_does_not_erase(pystache_renderer, sut):
write_registry(registry)
with pytest.raises(MyError):
- with sut.manage(generated=(output,), stubs=(stub,), registry=registry) as renderer:
+ with sut.manage(
+ generated=(output,), stubs=(stub,), registry=registry
+ ) as renderer:
raise MyError
assert output.is_file()
@@ -333,14 +345,15 @@ def test_render_with_extensions(pystache_renderer, sut):
data.template = "test_template"
data.extensions = ["foo", "bar", "baz"]
output = pathlib.Path("my", "test", "file")
- expected_outputs = [pathlib.Path("my", "test", p) for p in ("file.foo", "file.bar", "file.baz")]
+ expected_outputs = [
+ pathlib.Path("my", "test", p) for p in ("file.foo", "file.bar", "file.baz")
+ ]
rendered = [f"text{i}" for i in range(len(expected_outputs))]
pystache_renderer.render_name.side_effect = rendered
sut.render(data, output)
expected_templates = ["test_template_foo", "test_template_bar", "test_template_baz"]
assert pystache_renderer.mock_calls == [
- mock.call.render_name(t, data, generator=generator)
- for t in expected_templates
+ mock.call.render_name(t, data, generator=generator) for t in expected_templates
]
for expected_output, expected_contents in zip(expected_outputs, rendered):
assert_file(expected_output, expected_contents)
@@ -356,7 +369,9 @@ def test_managed_render_with_force_not_skipping_generated_file(pystache_renderer
pystache_renderer.render_name.side_effect = (some_output,)
- with sut.manage(generated=(output,), stubs=(), registry=registry, force=True) as renderer:
+ with sut.manage(
+ generated=(output,), stubs=(), registry=registry, force=True
+ ) as renderer:
renderer.render(data, output)
assert renderer.written == {output}
assert_file(output, some_output)
@@ -374,11 +389,15 @@ def test_managed_render_with_force_not_skipping_stub_file(pystache_renderer, sut
some_processed_output = "// generated some processed output"
registry = paths.root_dir / "a/registry.list"
write(stub, some_processed_output)
- write_registry(registry, ("some/stub.txt", hash(some_output), hash(some_processed_output)))
+ write_registry(
+ registry, ("some/stub.txt", hash(some_output), hash(some_processed_output))
+ )
pystache_renderer.render_name.side_effect = (some_output,)
- with sut.manage(generated=(), stubs=(stub,), registry=registry, force=True) as renderer:
+ with sut.manage(
+ generated=(), stubs=(stub,), registry=registry, force=True
+ ) as renderer:
renderer.render(data, stub)
assert renderer.written == {stub}
assert_file(stub, some_output)
@@ -394,13 +413,17 @@ def test_managed_render_with_force_ignores_modified_generated_file(sut):
some_processed_output = "// some processed output"
registry = paths.root_dir / "a/registry.list"
write(output, "// something else")
- write_registry(registry, ("some/output.txt", "whatever", hash(some_processed_output)))
+ write_registry(
+ registry, ("some/output.txt", "whatever", hash(some_processed_output))
+ )
with sut.manage(generated=(output,), stubs=(), registry=registry, force=True):
pass
-def test_managed_render_with_force_ignores_modified_stub_file_still_marked_as_generated(sut):
+def test_managed_render_with_force_ignores_modified_stub_file_still_marked_as_generated(
+ sut,
+):
stub = paths.root_dir / "a/some/stub.txt"
some_processed_output = "// generated some processed output"
registry = paths.root_dir / "a/registry.list"
@@ -411,5 +434,5 @@ def test_managed_render_with_force_ignores_modified_stub_file_still_marked_as_ge
pass
-if __name__ == '__main__':
+if __name__ == "__main__":
sys.exit(pytest.main([__file__] + sys.argv[1:]))
diff --git a/misc/codegen/test/test_schemaloader.py b/misc/codegen/test/test_schemaloader.py
index 1c8bfba271b2..5e8ba91b742a 100644
--- a/misc/codegen/test/test_schemaloader.py
+++ b/misc/codegen/test/test_schemaloader.py
@@ -26,9 +26,9 @@ class MyClass:
pass
assert data.classes == {
- 'MyClass': schema.Class('MyClass'),
+ "MyClass": schema.Class("MyClass"),
}
- assert data.root_class is data.classes['MyClass']
+ assert data.root_class is data.classes["MyClass"]
def test_two_empty_classes():
@@ -41,10 +41,10 @@ class MyClass2(MyClass1):
pass
assert data.classes == {
- 'MyClass1': schema.Class('MyClass1', derived={'MyClass2'}),
- 'MyClass2': schema.Class('MyClass2', bases=['MyClass1']),
+ "MyClass1": schema.Class("MyClass1", derived={"MyClass2"}),
+ "MyClass2": schema.Class("MyClass2", bases=["MyClass1"]),
}
- assert data.root_class is data.classes['MyClass1']
+ assert data.root_class is data.classes["MyClass1"]
def test_no_external_bases():
@@ -52,6 +52,7 @@ class A:
pass
with pytest.raises(schema.Error):
+
@load
class data:
class MyClass(A):
@@ -60,6 +61,7 @@ class MyClass(A):
def test_no_multiple_roots():
with pytest.raises(schema.Error):
+
@load
class data:
class MyClass1:
@@ -85,10 +87,10 @@ class D(B, C):
pass
assert data.classes == {
- 'A': schema.Class('A', derived={'B', 'C'}),
- 'B': schema.Class('B', bases=['A'], derived={'D'}),
- 'C': schema.Class('C', bases=['A'], derived={'D'}),
- 'D': schema.Class('D', bases=['B', 'C']),
+ "A": schema.Class("A", derived={"B", "C"}),
+ "B": schema.Class("B", bases=["A"], derived={"D"}),
+ "C": schema.Class("C", bases=["A"], derived={"D"}),
+ "D": schema.Class("D", bases=["B", "C"]),
}
@@ -101,7 +103,7 @@ class A:
pass
assert data.classes == {
- 'A': schema.Class('A', pragmas={"group": "xxx"}),
+ "A": schema.Class("A", pragmas={"group": "xxx"}),
}
@@ -114,7 +116,7 @@ class A:
class B(A):
pass
- @defs.group('xxx')
+ @defs.group("xxx")
class C(A):
pass
@@ -122,25 +124,26 @@ class D(B, C):
pass
assert data.classes == {
- 'A': schema.Class('A', derived={'B', 'C'}),
- 'B': schema.Class('B', bases=['A'], derived={'D'}),
- 'C': schema.Class('C', bases=['A'], derived={'D'}, pragmas={"group": "xxx"}),
- 'D': schema.Class('D', bases=['B', 'C'], pragmas={"group": "xxx"}),
+ "A": schema.Class("A", derived={"B", "C"}),
+ "B": schema.Class("B", bases=["A"], derived={"D"}),
+ "C": schema.Class("C", bases=["A"], derived={"D"}, pragmas={"group": "xxx"}),
+ "D": schema.Class("D", bases=["B", "C"], pragmas={"group": "xxx"}),
}
def test_no_mixed_groups_in_bases():
with pytest.raises(schema.Error):
+
@load
class data:
class A:
pass
- @defs.group('x')
+ @defs.group("x")
class B(A):
pass
- @defs.group('y')
+ @defs.group("y")
class C(A):
pass
@@ -153,6 +156,7 @@ class D(B, C):
def test_lowercase_rejected():
with pytest.raises(schema.Error):
+
@load
class data:
class aLowerCase:
@@ -171,14 +175,17 @@ class A:
six: defs.set[defs.string]
assert data.classes == {
- 'A': schema.Class('A', properties=[
- schema.SingleProperty('one', 'string'),
- schema.OptionalProperty('two', 'int'),
- schema.RepeatedProperty('three', 'boolean'),
- schema.RepeatedOptionalProperty('four', 'string'),
- schema.PredicateProperty('five'),
- schema.RepeatedUnorderedProperty('six', 'string'),
- ]),
+ "A": schema.Class(
+ "A",
+ properties=[
+ schema.SingleProperty("one", "string"),
+ schema.OptionalProperty("two", "int"),
+ schema.RepeatedProperty("three", "boolean"),
+ schema.RepeatedOptionalProperty("four", "string"),
+ schema.PredicateProperty("five"),
+ schema.RepeatedUnorderedProperty("six", "string"),
+ ],
+ ),
}
@@ -199,14 +206,18 @@ class B(A):
five: defs.set[A]
assert data.classes == {
- 'A': schema.Class('A', derived={'B'}),
- 'B': schema.Class('B', bases=['A'], properties=[
- schema.SingleProperty('one', 'A'),
- schema.OptionalProperty('two', 'A'),
- schema.RepeatedProperty('three', 'A'),
- schema.RepeatedOptionalProperty('four', 'A'),
- schema.RepeatedUnorderedProperty('five', 'A'),
- ]),
+ "A": schema.Class("A", derived={"B"}),
+ "B": schema.Class(
+ "B",
+ bases=["A"],
+ properties=[
+ schema.SingleProperty("one", "A"),
+ schema.OptionalProperty("two", "A"),
+ schema.RepeatedProperty("three", "A"),
+ schema.RepeatedOptionalProperty("four", "A"),
+ schema.RepeatedUnorderedProperty("five", "A"),
+ ],
+ ),
}
@@ -221,20 +232,31 @@ class A:
five: defs.set["A"]
assert data.classes == {
- 'A': schema.Class('A', properties=[
- schema.SingleProperty('one', 'A'),
- schema.OptionalProperty('two', 'A'),
- schema.RepeatedProperty('three', 'A'),
- schema.RepeatedOptionalProperty('four', 'A'),
- schema.RepeatedUnorderedProperty('five', 'A'),
- ]),
+ "A": schema.Class(
+ "A",
+ properties=[
+ schema.SingleProperty("one", "A"),
+ schema.OptionalProperty("two", "A"),
+ schema.RepeatedProperty("three", "A"),
+ schema.RepeatedOptionalProperty("four", "A"),
+ schema.RepeatedUnorderedProperty("five", "A"),
+ ],
+ ),
}
-@pytest.mark.parametrize("spec", [lambda t: t, lambda t: defs.optional[t], lambda t: defs.list[t],
- lambda t: defs.list[defs.optional[t]]])
+@pytest.mark.parametrize(
+ "spec",
+ [
+ lambda t: t,
+ lambda t: defs.optional[t],
+ lambda t: defs.list[t],
+ lambda t: defs.list[defs.optional[t]],
+ ],
+)
def test_string_reference_dangling(spec):
with pytest.raises(schema.Error):
+
@load
class data:
class A:
@@ -251,18 +273,24 @@ class A:
four: defs.list[defs.optional["A"]] | defs.child
assert data.classes == {
- 'A': schema.Class('A', properties=[
- schema.SingleProperty('one', 'A', is_child=True),
- schema.OptionalProperty('two', 'A', is_child=True),
- schema.RepeatedProperty('three', 'A', is_child=True),
- schema.RepeatedOptionalProperty('four', 'A', is_child=True),
- ]),
+ "A": schema.Class(
+ "A",
+ properties=[
+ schema.SingleProperty("one", "A", is_child=True),
+ schema.OptionalProperty("two", "A", is_child=True),
+ schema.RepeatedProperty("three", "A", is_child=True),
+ schema.RepeatedOptionalProperty("four", "A", is_child=True),
+ ],
+ ),
}
-@pytest.mark.parametrize("spec", [defs.string, defs.int, defs.boolean, defs.predicate, defs.set["A"]])
+@pytest.mark.parametrize(
+ "spec", [defs.string, defs.int, defs.boolean, defs.predicate, defs.set["A"]]
+)
def test_builtin_predicate_and_set_children_not_allowed(spec):
with pytest.raises(schema.Error):
+
@load
class data:
class A:
@@ -291,9 +319,12 @@ class A:
x: defs.string | pragma
assert data.classes == {
- 'A': schema.Class('A', properties=[
- schema.SingleProperty('x', 'string', pragmas=[expected]),
- ]),
+ "A": schema.Class(
+ "A",
+ properties=[
+ schema.SingleProperty("x", "string", pragmas=[expected]),
+ ],
+ ),
}
@@ -308,9 +339,16 @@ class A:
x: spec
assert data.classes == {
- 'A': schema.Class('A', properties=[
- schema.SingleProperty('x', 'string', pragmas=[expected for _, expected in _property_pragmas]),
- ]),
+ "A": schema.Class(
+ "A",
+ properties=[
+ schema.SingleProperty(
+ "x",
+ "string",
+ pragmas=[expected for _, expected in _property_pragmas],
+ ),
+ ],
+ ),
}
@@ -323,7 +361,7 @@ class A:
pass
assert data.classes == {
- 'A': schema.Class('A', pragmas=[expected]),
+ "A": schema.Class("A", pragmas=[expected]),
}
@@ -340,7 +378,7 @@ class A:
apply_pragmas(A)
assert data.classes == {
- 'A': schema.Class('A', pragmas=[e for _, e in _pragmas]),
+ "A": schema.Class("A", pragmas=[e for _, e in _pragmas]),
}
@@ -355,8 +393,10 @@ class B(A):
pass
assert data.classes == {
- 'A': schema.Class('A', derived={'B'}, pragmas={"synth": True}),
- 'B': schema.Class('B', bases=['A'], pragmas={"synth": schema.SynthInfo(from_class="A")}),
+ "A": schema.Class("A", derived={"B"}, pragmas={"synth": True}),
+ "B": schema.Class(
+ "B", bases=["A"], pragmas={"synth": schema.SynthInfo(from_class="A")}
+ ),
}
@@ -371,13 +411,16 @@ class B(A):
pass
assert data.classes == {
- 'A': schema.Class('A', derived={'B'}, pragmas={"synth": schema.SynthInfo(from_class="B")}),
- 'B': schema.Class('B', bases=['A']),
+ "A": schema.Class(
+ "A", derived={"B"}, pragmas={"synth": schema.SynthInfo(from_class="B")}
+ ),
+ "B": schema.Class("B", bases=["A"]),
}
def test_synth_from_class_dangling():
with pytest.raises(schema.Error):
+
@load
class data:
@defs.synth.from_class("X")
@@ -396,8 +439,12 @@ class B(A):
pass
assert data.classes == {
- 'A': schema.Class('A', derived={'B'}, pragmas={"synth": True}),
- 'B': schema.Class('B', bases=['A'], pragmas={"synth": schema.SynthInfo(on_arguments={'a': 'A', 'i': 'int'})}),
+ "A": schema.Class("A", derived={"B"}, pragmas={"synth": True}),
+ "B": schema.Class(
+ "B",
+ bases=["A"],
+ pragmas={"synth": schema.SynthInfo(on_arguments={"a": "A", "i": "int"})},
+ ),
}
@@ -415,13 +462,18 @@ class B(A):
pass
assert data.classes == {
- 'A': schema.Class('A', derived={'B'}, pragmas={"synth": schema.SynthInfo(on_arguments={'b': 'B', 'i': 'int'})}),
- 'B': schema.Class('B', bases=['A']),
+ "A": schema.Class(
+ "A",
+ derived={"B"},
+ pragmas={"synth": schema.SynthInfo(on_arguments={"b": "B", "i": "int"})},
+ ),
+ "B": schema.Class("B", bases=["A"]),
}
def test_synth_class_on_dangling():
with pytest.raises(schema.Error):
+
@load
class data:
@defs.synth.on_arguments(s=defs.string, a="A", i=defs.int)
@@ -453,12 +505,25 @@ class C(Root):
pass
assert data.classes == {
- 'Root': schema.Class('Root', derived={'Base', 'C'}),
- 'Base': schema.Class('Base', bases=['Root'], derived={'Intermediate', 'B'}, pragmas={"synth": True}),
- 'Intermediate': schema.Class('Intermediate', bases=['Base'], derived={'A'}, pragmas={"synth": True}),
- 'A': schema.Class('A', bases=['Intermediate'], pragmas={"synth": schema.SynthInfo(on_arguments={'a': 'Base', 'i': 'int'})}),
- 'B': schema.Class('B', bases=['Base'], pragmas={"synth": schema.SynthInfo(from_class='Base')}),
- 'C': schema.Class('C', bases=['Root']),
+ "Root": schema.Class("Root", derived={"Base", "C"}),
+ "Base": schema.Class(
+ "Base",
+ bases=["Root"],
+ derived={"Intermediate", "B"},
+ pragmas={"synth": True},
+ ),
+ "Intermediate": schema.Class(
+ "Intermediate", bases=["Base"], derived={"A"}, pragmas={"synth": True}
+ ),
+ "A": schema.Class(
+ "A",
+ bases=["Intermediate"],
+ pragmas={"synth": schema.SynthInfo(on_arguments={"a": "Base", "i": "int"})},
+ ),
+ "B": schema.Class(
+ "B", bases=["Base"], pragmas={"synth": schema.SynthInfo(from_class="Base")}
+ ),
+ "C": schema.Class("C", bases=["Root"]),
}
@@ -479,9 +544,7 @@ class data:
class A:
"""Very important class."""
- assert data.classes == {
- 'A': schema.Class('A', doc=["Very important class."])
- }
+ assert data.classes == {"A": schema.Class("A", doc=["Very important class."])}
def test_property_docstring():
@@ -491,7 +554,14 @@ class A:
x: int | defs.desc("very important property.")
assert data.classes == {
- 'A': schema.Class('A', properties=[schema.SingleProperty('x', 'int', description=["very important property."])])
+ "A": schema.Class(
+ "A",
+ properties=[
+ schema.SingleProperty(
+ "x", "int", description=["very important property."]
+ )
+ ],
+ )
}
@@ -502,21 +572,27 @@ class A:
"""Very important
class."""
- assert data.classes == {
- 'A': schema.Class('A', doc=["Very important", "class."])
- }
+ assert data.classes == {"A": schema.Class("A", doc=["Very important", "class."])}
def test_property_docstring_newline():
@load
class data:
class A:
- x: int | defs.desc("""very important
- property.""")
+ x: int | defs.desc(
+ """very important
+ property."""
+ )
assert data.classes == {
- 'A': schema.Class('A',
- properties=[schema.SingleProperty('x', 'int', description=["very important", "property."])])
+ "A": schema.Class(
+ "A",
+ properties=[
+ schema.SingleProperty(
+ "x", "int", description=["very important", "property."]
+ )
+ ],
+ )
}
@@ -530,23 +606,30 @@ class A:
"""
- assert data.classes == {
- 'A': schema.Class('A', doc=["Very important class."])
- }
+ assert data.classes == {"A": schema.Class("A", doc=["Very important class."])}
def test_property_docstring_stripped():
@load
class data:
class A:
- x: int | defs.desc("""
+ x: int | defs.desc(
+ """
very important property.
- """)
+ """
+ )
assert data.classes == {
- 'A': schema.Class('A', properties=[schema.SingleProperty('x', 'int', description=["very important property."])])
+ "A": schema.Class(
+ "A",
+ properties=[
+ schema.SingleProperty(
+ "x", "int", description=["very important property."]
+ )
+ ],
+ )
}
@@ -559,7 +642,9 @@ class A:
As said, very important."""
assert data.classes == {
- 'A': schema.Class('A', doc=["Very important class.", "", "As said, very important."])
+ "A": schema.Class(
+ "A", doc=["Very important class.", "", "As said, very important."]
+ )
}
@@ -567,13 +652,27 @@ def test_property_docstring_split():
@load
class data:
class A:
- x: int | defs.desc("""very important property.
+ x: int | defs.desc(
+ """very important property.
- Very very important.""")
+ Very very important."""
+ )
assert data.classes == {
- 'A': schema.Class('A', properties=[
- schema.SingleProperty('x', 'int', description=["very important property.", "", "Very very important."])])
+ "A": schema.Class(
+ "A",
+ properties=[
+ schema.SingleProperty(
+ "x",
+ "int",
+ description=[
+ "very important property.",
+ "",
+ "Very very important.",
+ ],
+ )
+ ],
+ )
}
@@ -587,7 +686,9 @@ class A:
"""
assert data.classes == {
- 'A': schema.Class('A', doc=["Very important class.", " As said, very important."])
+ "A": schema.Class(
+ "A", doc=["Very important class.", " As said, very important."]
+ )
}
@@ -595,14 +696,24 @@ def test_property_docstring_indent():
@load
class data:
class A:
- x: int | defs.desc("""
+ x: int | defs.desc(
+ """
very important property.
Very very important.
- """)
+ """
+ )
assert data.classes == {
- 'A': schema.Class('A', properties=[
- schema.SingleProperty('x', 'int', description=["very important property.", " Very very important."])])
+ "A": schema.Class(
+ "A",
+ properties=[
+ schema.SingleProperty(
+ "x",
+ "int",
+ description=["very important property.", " Very very important."],
+ )
+ ],
+ )
}
@@ -613,13 +724,13 @@ class A:
x: int | defs.doc("y")
assert data.classes == {
- 'A': schema.Class('A', properties=[
- schema.SingleProperty('x', 'int', doc="y")]),
+ "A": schema.Class("A", properties=[schema.SingleProperty("x", "int", doc="y")]),
}
def test_property_doc_override_no_newlines():
with pytest.raises(schema.Error):
+
@load
class data:
class A:
@@ -628,6 +739,7 @@ class A:
def test_property_doc_override_no_trailing_dot():
with pytest.raises(schema.Error):
+
@load
class data:
class A:
@@ -642,7 +754,7 @@ class A:
pass
assert data.classes == {
- 'A': schema.Class('A', pragmas={"ql_default_doc_name": "b"}),
+ "A": schema.Class("A", pragmas={"ql_default_doc_name": "b"}),
}
@@ -653,7 +765,12 @@ class A:
x: optional[int] | defs.ql.db_table_name("foo")
assert data.classes == {
- 'A': schema.Class('A', properties=[schema.OptionalProperty("x", "int", pragmas={"ql_db_table_name": "foo"})]),
+ "A": schema.Class(
+ "A",
+ properties=[
+ schema.OptionalProperty("x", "int", pragmas={"ql_db_table_name": "foo"})
+ ],
+ ),
}
@@ -668,15 +785,16 @@ class Null(Root):
pass
assert data.classes == {
- 'Root': schema.Class('Root', derived={'Null'}),
- 'Null': schema.Class('Null', bases=['Root']),
+ "Root": schema.Class("Root", derived={"Null"}),
+ "Null": schema.Class("Null", bases=["Root"]),
}
- assert data.null == 'Null'
+ assert data.null == "Null"
assert data.null_class is data.classes[data.null]
def test_null_class_cannot_be_derived():
with pytest.raises(schema.Error):
+
@load
class data:
class Root:
@@ -692,6 +810,7 @@ class Impossible(Null):
def test_null_class_cannot_be_defined_multiple_times():
with pytest.raises(schema.Error):
+
@load
class data:
class Root:
@@ -708,6 +827,7 @@ class Null2(Root):
def test_uppercase_acronyms_are_rejected():
with pytest.raises(schema.Error):
+
@load
class data:
class Root:
@@ -737,10 +857,18 @@ class NonHideable(Root):
pass
assert data.classes == {
- "Root": schema.Class("Root", derived={"A", "IndirectlyHideable", "NonHideable"}, pragmas=["ql_hideable"]),
+ "Root": schema.Class(
+ "Root",
+ derived={"A", "IndirectlyHideable", "NonHideable"},
+ pragmas=["ql_hideable"],
+ ),
"A": schema.Class("A", bases=["Root"], derived={"B"}, pragmas=["ql_hideable"]),
- "IndirectlyHideable": schema.Class("IndirectlyHideable", bases=["Root"], derived={"B"}, pragmas=["ql_hideable"]),
- "B": schema.Class("B", bases=["A", "IndirectlyHideable"], pragmas=["ql_hideable"]),
+ "IndirectlyHideable": schema.Class(
+ "IndirectlyHideable", bases=["Root"], derived={"B"}, pragmas=["ql_hideable"]
+ ),
+ "B": schema.Class(
+ "B", bases=["A", "IndirectlyHideable"], pragmas=["ql_hideable"]
+ ),
"NonHideable": schema.Class("NonHideable", bases=["Root"]),
}
@@ -771,7 +899,9 @@ class E(B):
assert data.classes == {
"Root": schema.Class("Root", derived=set("ABCD")),
"A": schema.Class("A", bases=["Root"]),
- "B": schema.Class("B", bases=["Root"], pragmas={"qltest_test_with": "A"}, derived={'E'}),
+ "B": schema.Class(
+ "B", bases=["Root"], pragmas={"qltest_test_with": "A"}, derived={"E"}
+ ),
"C": schema.Class("C", bases=["Root"], pragmas={"qltest_test_with": "D"}),
"D": schema.Class("D", bases=["Root"]),
"E": schema.Class("E", bases=["B"], pragmas={"qltest_test_with": "A"}),
@@ -782,10 +912,10 @@ def test_annotate_docstring():
@load
class data:
class Root:
- """ old docstring """
+ """old docstring"""
class A(Root):
- """ A docstring """
+ """A docstring"""
@defs.annotate(Root)
class _:
@@ -819,7 +949,15 @@ class _:
pass
assert data.classes == {
- "Root": schema.Class("Root", pragmas=["qltest_skip", "cpp_skip", "ql_hideable", "qltest_collapse_hierarchy"]),
+ "Root": schema.Class(
+ "Root",
+ pragmas=[
+ "qltest_skip",
+ "cpp_skip",
+ "ql_hideable",
+ "qltest_collapse_hierarchy",
+ ],
+ ),
}
@@ -837,11 +975,16 @@ class _:
z: defs.string
assert data.classes == {
- "Root": schema.Class("Root", properties=[
- schema.SingleProperty("x", "int", doc="foo"),
- schema.OptionalProperty("y", "Root", pragmas=["ql_internal"], is_child=True),
- schema.SingleProperty("z", "string"),
- ]),
+ "Root": schema.Class(
+ "Root",
+ properties=[
+ schema.SingleProperty("x", "int", doc="foo"),
+ schema.OptionalProperty(
+ "y", "Root", pragmas=["ql_internal"], is_child=True
+ ),
+ schema.SingleProperty("z", "string"),
+ ],
+ ),
}
@@ -860,16 +1003,20 @@ class _:
z: defs._ | ~defs.synth | ~defs.doc
assert data.classes == {
- "Root": schema.Class("Root", properties=[
- schema.SingleProperty("x", "int"),
- schema.OptionalProperty("y", "Root"),
- schema.SingleProperty("z", "string"),
- ]),
+ "Root": schema.Class(
+ "Root",
+ properties=[
+ schema.SingleProperty("x", "int"),
+ schema.OptionalProperty("y", "Root"),
+ schema.SingleProperty("z", "string"),
+ ],
+ ),
}
def test_annotate_non_existing_field():
with pytest.raises(schema.Error):
+
@load
class data:
class Root:
@@ -882,6 +1029,7 @@ class _:
def test_annotate_not_underscore():
with pytest.raises(schema.Error):
+
@load
class data:
class Root:
@@ -916,6 +1064,7 @@ class Derived(A, B):
@defs.annotate(Derived, replace_bases={B: C})
class _:
pass
+
assert data.classes == {
"Root": schema.Class("Root", derived={"A", "B"}),
"A": schema.Class("A", bases=["Root"], derived={"Derived"}),
@@ -946,6 +1095,7 @@ class Derived(A):
@defs.annotate(Derived, add_bases=(B, C))
class _:
pass
+
assert data.classes == {
"Root": schema.Class("Root", derived={"A", "B", "C"}),
"A": schema.Class("A", bases=["Root"], derived={"Derived"}),
@@ -968,15 +1118,19 @@ class _:
y: defs.drop
assert data.classes == {
- "Root": schema.Class("Root", properties=[
- schema.SingleProperty("x", "int"),
- schema.SingleProperty("z", "boolean"),
- ]),
+ "Root": schema.Class(
+ "Root",
+ properties=[
+ schema.SingleProperty("x", "int"),
+ schema.SingleProperty("z", "boolean"),
+ ],
+ ),
}
def test_test_with_unknown_string():
with pytest.raises(schema.Error):
+
@load
class data:
class Root:
@@ -989,6 +1143,7 @@ class A(Root):
def test_test_with_unknown_class():
with pytest.raises(schema.Error):
+
class B:
pass
@@ -1004,6 +1159,7 @@ class A(Root):
def test_test_with_double():
with pytest.raises(schema.Error):
+
class B:
pass
@@ -1024,5 +1180,5 @@ class C(Root):
pass
-if __name__ == '__main__':
+if __name__ == "__main__":
sys.exit(pytest.main([__file__] + sys.argv[1:]))
diff --git a/misc/codegen/test/test_trapgen.py b/misc/codegen/test/test_trapgen.py
index a81f40e0dd83..590c83aa7347 100644
--- a/misc/codegen/test/test_trapgen.py
+++ b/misc/codegen/test/test_trapgen.py
@@ -17,10 +17,16 @@ def ret(entities):
dirs = {f.parent for f in generated}
assert all(isinstance(f, pathlib.Path) for f in generated)
assert all(f.name in ("TrapEntries", "TrapTags") for f in generated)
- assert set(f for f in generated if f.name == "TrapTags") == {output_dir / "TrapTags"}
- return ({
- str(d.relative_to(output_dir)): generated[d / "TrapEntries"] for d in dirs
- }, generated[output_dir / "TrapTags"])
+ assert set(f for f in generated if f.name == "TrapTags") == {
+ output_dir / "TrapTags"
+ }
+ return (
+ {
+ str(d.relative_to(output_dir)): generated[d / "TrapEntries"]
+ for d in dirs
+ },
+ generated[output_dir / "TrapTags"],
+ )
return ret
@@ -65,87 +71,130 @@ def test_empty_tags(generate_tags):
def test_one_empty_table_rejected(generate_traps):
with pytest.raises(AssertionError):
- generate_traps([
- dbscheme.Table(name="foos", columns=[]),
- ])
+ generate_traps(
+ [
+ dbscheme.Table(name="foos", columns=[]),
+ ]
+ )
def test_one_table(generate_traps):
- assert generate_traps([
- dbscheme.Table(name="foos", columns=[dbscheme.Column("bla", "int")]),
- ]) == [
+ assert generate_traps(
+ [
+ dbscheme.Table(name="foos", columns=[dbscheme.Column("bla", "int")]),
+ ]
+ ) == [
cpp.Trap("foos", name="Foos", fields=[cpp.Field("bla", "int")]),
]
def test_one_table(generate_traps):
- assert generate_traps([
- dbscheme.Table(name="foos", columns=[dbscheme.Column("bla", "int")]),
- ]) == [
+ assert generate_traps(
+ [
+ dbscheme.Table(name="foos", columns=[dbscheme.Column("bla", "int")]),
+ ]
+ ) == [
cpp.Trap("foos", name="Foos", fields=[cpp.Field("bla", "int")]),
]
def test_one_table_with_id(generate_traps):
- assert generate_traps([
- dbscheme.Table(name="foos", columns=[
- dbscheme.Column("bla", "int", binding=True)]),
- ]) == [
- cpp.Trap("foos", name="Foos", fields=[cpp.Field(
- "bla", "int")], id=cpp.Field("bla", "int")),
+ assert generate_traps(
+ [
+ dbscheme.Table(
+ name="foos", columns=[dbscheme.Column("bla", "int", binding=True)]
+ ),
+ ]
+ ) == [
+ cpp.Trap(
+ "foos",
+ name="Foos",
+ fields=[cpp.Field("bla", "int")],
+ id=cpp.Field("bla", "int"),
+ ),
]
def test_one_table_with_two_binding_first_is_id(generate_traps):
- assert generate_traps([
- dbscheme.Table(name="foos", columns=[
- dbscheme.Column("x", "a", binding=True),
- dbscheme.Column("y", "b", binding=True),
- ]),
- ]) == [
- cpp.Trap("foos", name="Foos", fields=[
- cpp.Field("x", "a"),
- cpp.Field("y", "b"),
- ], id=cpp.Field("x", "a")),
+ assert generate_traps(
+ [
+ dbscheme.Table(
+ name="foos",
+ columns=[
+ dbscheme.Column("x", "a", binding=True),
+ dbscheme.Column("y", "b", binding=True),
+ ],
+ ),
+ ]
+ ) == [
+ cpp.Trap(
+ "foos",
+ name="Foos",
+ fields=[
+ cpp.Field("x", "a"),
+ cpp.Field("y", "b"),
+ ],
+ id=cpp.Field("x", "a"),
+ ),
]
-@pytest.mark.parametrize("column,field", [
- (dbscheme.Column("x", "string"), cpp.Field("x", "std::string")),
- (dbscheme.Column("y", "boolean"), cpp.Field("y", "bool")),
- (dbscheme.Column("z", "@db_type"), cpp.Field("z", "TrapLabel")),
-])
+@pytest.mark.parametrize(
+ "column,field",
+ [
+ (dbscheme.Column("x", "string"), cpp.Field("x", "std::string")),
+ (dbscheme.Column("y", "boolean"), cpp.Field("y", "bool")),
+ (dbscheme.Column("z", "@db_type"), cpp.Field("z", "TrapLabel")),
+ ],
+)
def test_one_table_special_types(generate_traps, column, field):
- assert generate_traps([
- dbscheme.Table(name="foos", columns=[column]),
- ]) == [
+ assert generate_traps(
+ [
+ dbscheme.Table(name="foos", columns=[column]),
+ ]
+ ) == [
cpp.Trap("foos", name="Foos", fields=[field]),
]
-@pytest.mark.parametrize("name", ["start_line", "start_column", "end_line", "end_column", "index", "num_whatever"])
+@pytest.mark.parametrize(
+ "name",
+ ["start_line", "start_column", "end_line", "end_column", "index", "num_whatever"],
+)
def test_one_table_overridden_unsigned_field(generate_traps, name):
- assert generate_traps([
- dbscheme.Table(name="foos", columns=[dbscheme.Column(name, "bar")]),
- ]) == [
+ assert generate_traps(
+ [
+ dbscheme.Table(name="foos", columns=[dbscheme.Column(name, "bar")]),
+ ]
+ ) == [
cpp.Trap("foos", name="Foos", fields=[cpp.Field(name, "unsigned")]),
]
def test_one_table_overridden_underscore_named_field(generate_traps):
- assert generate_traps([
- dbscheme.Table(name="foos", columns=[dbscheme.Column("whatever_", "bar")]),
- ]) == [
+ assert generate_traps(
+ [
+ dbscheme.Table(name="foos", columns=[dbscheme.Column("whatever_", "bar")]),
+ ]
+ ) == [
cpp.Trap("foos", name="Foos", fields=[cpp.Field("whatever", "bar")]),
]
def test_tables_with_dir(generate_grouped_traps):
- assert generate_grouped_traps([
- dbscheme.Table(name="x", columns=[dbscheme.Column("i", "int")]),
- dbscheme.Table(name="y", columns=[dbscheme.Column("i", "int")], dir=pathlib.Path("foo")),
- dbscheme.Table(name="z", columns=[dbscheme.Column("i", "int")], dir=pathlib.Path("foo/bar")),
- ]) == {
+ assert generate_grouped_traps(
+ [
+ dbscheme.Table(name="x", columns=[dbscheme.Column("i", "int")]),
+ dbscheme.Table(
+ name="y", columns=[dbscheme.Column("i", "int")], dir=pathlib.Path("foo")
+ ),
+ dbscheme.Table(
+ name="z",
+ columns=[dbscheme.Column("i", "int")],
+ dir=pathlib.Path("foo/bar"),
+ ),
+ ]
+ ) == {
".": [cpp.Trap("x", name="X", fields=[cpp.Field("i", "int")])],
"foo": [cpp.Trap("y", name="Y", fields=[cpp.Field("i", "int")])],
"foo/bar": [cpp.Trap("z", name="Z", fields=[cpp.Field("i", "int")])],
@@ -153,15 +202,22 @@ def test_tables_with_dir(generate_grouped_traps):
def test_one_table_no_tags(generate_tags):
- assert generate_tags([
- dbscheme.Table(name="foos", columns=[dbscheme.Column("bla", "int")]),
- ]) == []
+ assert (
+ generate_tags(
+ [
+ dbscheme.Table(name="foos", columns=[dbscheme.Column("bla", "int")]),
+ ]
+ )
+ == []
+ )
def test_one_union_tags(generate_tags):
- assert generate_tags([
- dbscheme.Union(lhs="@left_hand_side", rhs=["@b", "@a", "@c"]),
- ]) == [
+ assert generate_tags(
+ [
+ dbscheme.Union(lhs="@left_hand_side", rhs=["@b", "@a", "@c"]),
+ ]
+ ) == [
cpp.Tag(name="LeftHandSide", bases=[], id="@left_hand_side"),
cpp.Tag(name="A", bases=["LeftHandSide"], id="@a"),
cpp.Tag(name="B", bases=["LeftHandSide"], id="@b"),
@@ -170,11 +226,13 @@ def test_one_union_tags(generate_tags):
def test_multiple_union_tags(generate_tags):
- assert generate_tags([
- dbscheme.Union(lhs="@d", rhs=["@a"]),
- dbscheme.Union(lhs="@a", rhs=["@b", "@c"]),
- dbscheme.Union(lhs="@e", rhs=["@c", "@f"]),
- ]) == [
+ assert generate_tags(
+ [
+ dbscheme.Union(lhs="@d", rhs=["@a"]),
+ dbscheme.Union(lhs="@a", rhs=["@b", "@c"]),
+ dbscheme.Union(lhs="@e", rhs=["@c", "@f"]),
+ ]
+ ) == [
cpp.Tag(name="D", bases=[], id="@d"),
cpp.Tag(name="E", bases=[], id="@e"),
cpp.Tag(name="A", bases=["D"], id="@a"),
@@ -184,5 +242,5 @@ def test_multiple_union_tags(generate_tags):
]
-if __name__ == '__main__':
+if __name__ == "__main__":
sys.exit(pytest.main([__file__] + sys.argv[1:]))
diff --git a/misc/codegen/test/utils.py b/misc/codegen/test/utils.py
index e33500711f25..094455d3d14d 100644
--- a/misc/codegen/test/utils.py
+++ b/misc/codegen/test/utils.py
@@ -39,8 +39,9 @@ def opts():
@pytest.fixture(autouse=True)
def override_paths(tmp_path):
- with mock.patch("misc.codegen.lib.paths.root_dir", tmp_path), \
- mock.patch("misc.codegen.lib.paths.exe_file", tmp_path / "exe"):
+ with mock.patch("misc.codegen.lib.paths.root_dir", tmp_path), mock.patch(
+ "misc.codegen.lib.paths.exe_file", tmp_path / "exe"
+ ):
yield
diff --git a/misc/scripts/models-as-data/bulk_generate_mad.py b/misc/scripts/models-as-data/bulk_generate_mad.py
old mode 100644
new mode 100755
index 22a872dc2bf2..91286c52526a
--- a/misc/scripts/models-as-data/bulk_generate_mad.py
+++ b/misc/scripts/models-as-data/bulk_generate_mad.py
@@ -1,3 +1,4 @@
+#!/usr/bin/env python3
"""
Experimental script for bulk generation of MaD models based on a list of projects.
@@ -7,15 +8,31 @@
import os.path
import subprocess
import sys
-from typing import NotRequired, TypedDict, List
+from typing import Required, TypedDict, List, Callable, Optional
from concurrent.futures import ThreadPoolExecutor, as_completed
import time
import argparse
-import json
-import requests
import zipfile
import tarfile
-from functools import cmp_to_key
+import shutil
+
+
+def missing_module(module_name: str) -> None:
+ print(
+ f"ERROR: {module_name} is not installed. Please install it with 'pip install {module_name}'."
+ )
+ sys.exit(1)
+
+
+try:
+ import yaml
+except ImportError:
+ missing_module("pyyaml")
+
+try:
+ import requests
+except ImportError:
+ missing_module("requests")
import generate_mad as mad
@@ -28,22 +45,18 @@
# A project to generate models for
-class Project(TypedDict):
- """
- Type definition for projects (acquired via a GitHub repo) to model.
-
- Attributes:
- name: The name of the project
- git_repo: URL to the git repository
- git_tag: Optional Git tag to check out
- """
-
- name: str
- git_repo: NotRequired[str]
- git_tag: NotRequired[str]
- with_sinks: NotRequired[bool]
- with_sinks: NotRequired[bool]
- with_summaries: NotRequired[bool]
+Project = TypedDict(
+ "Project",
+ {
+ "name": Required[str],
+ "git-repo": str,
+ "git-tag": str,
+ "with-sinks": bool,
+ "with-sources": bool,
+ "with-summaries": bool,
+ },
+ total=False,
+)
def should_generate_sinks(project: Project) -> bool:
@@ -63,14 +76,14 @@ def clone_project(project: Project) -> str:
Shallow clone a project into the build directory.
Args:
- project: A dictionary containing project information with 'name', 'git_repo', and optional 'git_tag' keys.
+ project: A dictionary containing project information with 'name', 'git-repo', and optional 'git-tag' keys.
Returns:
The path to the cloned project directory.
"""
name = project["name"]
- repo_url = project["git_repo"]
- git_tag = project.get("git_tag")
+ repo_url = project["git-repo"]
+ git_tag = project.get("git-tag")
# Determine target directory
target_dir = os.path.join(build_dir, name)
@@ -103,6 +116,37 @@ def clone_project(project: Project) -> str:
return target_dir
+def run_in_parallel[T, U](
+ func: Callable[[T], U],
+ items: List[T],
+ *,
+ on_error=lambda item, exc: None,
+ error_summary=lambda failures: None,
+ max_workers=8,
+) -> List[Optional[U]]:
+ if not items:
+ return []
+ max_workers = min(max_workers, len(items))
+ results = [None for _ in range(len(items))]
+ with ThreadPoolExecutor(max_workers=max_workers) as executor:
+ # Start cloning tasks and keep track of them
+ futures = {
+ executor.submit(func, item): index for index, item in enumerate(items)
+ }
+ # Process results as they complete
+ for future in as_completed(futures):
+ index = futures[future]
+ try:
+ results[index] = future.result()
+ except Exception as e:
+ on_error(items[index], e)
+ failed = [item for item, result in zip(items, results) if result is None]
+ if failed:
+ error_summary(failed)
+ sys.exit(1)
+ return results
+
+
def clone_projects(projects: List[Project]) -> List[tuple[Project, str]]:
"""
Clone all projects in parallel.
@@ -114,40 +158,19 @@ def clone_projects(projects: List[Project]) -> List[tuple[Project, str]]:
List of (project, project_dir) pairs in the same order as the input projects
"""
start_time = time.time()
- max_workers = min(8, len(projects)) # Use at most 8 threads
- project_dirs_map = {} # Map to store results by project name
-
- with ThreadPoolExecutor(max_workers=max_workers) as executor:
- # Start cloning tasks and keep track of them
- future_to_project = {
- executor.submit(clone_project, project): project for project in projects
- }
-
- # Process results as they complete
- for future in as_completed(future_to_project):
- project = future_to_project[future]
- try:
- project_dir = future.result()
- project_dirs_map[project["name"]] = (project, project_dir)
- except Exception as e:
- print(f"ERROR: Failed to clone {project['name']}: {e}")
-
- if len(project_dirs_map) != len(projects):
- failed_projects = [
- project["name"]
- for project in projects
- if project["name"] not in project_dirs_map
- ]
- print(
- f"ERROR: Only {len(project_dirs_map)} out of {len(projects)} projects were cloned successfully. Failed projects: {', '.join(failed_projects)}"
- )
- sys.exit(1)
-
- project_dirs = [project_dirs_map[project["name"]] for project in projects]
-
+ dirs = run_in_parallel(
+ clone_project,
+ projects,
+ on_error=lambda project, exc: print(
+ f"ERROR: Failed to clone project {project['name']}: {exc}"
+ ),
+ error_summary=lambda failures: print(
+ f"ERROR: Failed to clone {len(failures)} projects: {', '.join(p['name'] for p in failures)}"
+ ),
+ )
clone_time = time.time() - start_time
print(f"Cloning completed in {clone_time:.2f} seconds")
- return project_dirs
+ return list(zip(projects, dirs))
def build_database(
@@ -159,7 +182,7 @@ def build_database(
Args:
language: The language for which to build the database (e.g., "rust").
extractor_options: Additional options for the extractor.
- project: A dictionary containing project information with 'name' and 'git_repo' keys.
+ project: A dictionary containing project information with 'name' and 'git-repo' keys.
project_dir: Path to the CodeQL database.
Returns:
@@ -200,7 +223,7 @@ def build_database(
return database_dir
-def generate_models(config, project: Project, database_dir: str) -> None:
+def generate_models(config, args, project: Project, database_dir: str) -> None:
"""
Generate models for a project.
@@ -218,6 +241,8 @@ def generate_models(config, project: Project, database_dir: str) -> None:
generator.generateSources = should_generate_sources(project)
generator.generateSummaries = should_generate_summaries(project)
generator.setenvironment(database=database_dir, folder=name)
+ generator.threads = args.codeql_threads
+ generator.ram = args.codeql_ram
generator.run()
@@ -307,35 +332,48 @@ def pretty_name_from_artifact_name(artifact_name: str) -> str:
def download_dca_databases(
- experiment_name: str, pat: str, projects: List[Project]
+ language: str,
+ experiment_names: list[str],
+ pat: str,
+ projects: List[Project],
) -> List[tuple[Project, str | None]]:
"""
Download databases from a DCA experiment.
Args:
- experiment_name: The name of the DCA experiment to download databases from.
+ experiment_names: The names of the DCA experiments to download databases from.
pat: Personal Access Token for GitHub API authentication.
projects: List of projects to download databases for.
Returns:
List of (project_name, database_dir) pairs, where database_dir is None if the download failed.
"""
- database_results = {}
print("\n=== Finding projects ===")
- response = get_json_from_github(
- f"https://raw.githubusercontent.com/github/codeql-dca-main/data/{experiment_name}/reports/downloads.json",
- pat,
- )
- targets = response["targets"]
project_map = {project["name"]: project for project in projects}
- for data in targets.values():
- downloads = data["downloads"]
- analyzed_database = downloads["analyzed_database"]
- artifact_name = analyzed_database["artifact_name"]
- pretty_name = pretty_name_from_artifact_name(artifact_name)
+ analyzed_databases = {}
+ for experiment_name in experiment_names:
+ response = get_json_from_github(
+ f"https://raw.githubusercontent.com/github/codeql-dca-main/data/{experiment_name}/reports/downloads.json",
+ pat,
+ )
+ targets = response["targets"]
+ for data in targets.values():
+ downloads = data["downloads"]
+ analyzed_database = downloads["analyzed_database"]
+ artifact_name = analyzed_database["artifact_name"]
+ pretty_name = pretty_name_from_artifact_name(artifact_name)
+
+ if not pretty_name in project_map:
+ print(f"Skipping {pretty_name} as it is not in the list of projects")
+ continue
+
+ if pretty_name in analyzed_databases:
+ print(
+ f"Skipping previous database {analyzed_databases[pretty_name]['artifact_name']} for {pretty_name}"
+ )
- if not pretty_name in project_map:
- print(f"Skipping {pretty_name} as it is not in the list of projects")
- continue
+ analyzed_databases[pretty_name] = analyzed_database
+ def download_and_decompress(analyzed_database: dict) -> str:
+ artifact_name = analyzed_database["artifact_name"]
repository = analyzed_database["repository"]
run_id = analyzed_database["run_id"]
print(f"=== Finding artifact: {artifact_name} ===")
@@ -351,27 +389,40 @@ def download_dca_databases(
artifact_zip_location = download_artifact(
archive_download_url, artifact_name, pat
)
- print(f"=== Extracting artifact: {artifact_name} ===")
+ print(f"=== Decompressing artifact: {artifact_name} ===")
# The database is in a zip file, which contains a tar.gz file with the DB
# First we open the zip file
with zipfile.ZipFile(artifact_zip_location, "r") as zip_ref:
artifact_unzipped_location = os.path.join(build_dir, artifact_name)
+ # clean up any remnants of previous runs
+ shutil.rmtree(artifact_unzipped_location, ignore_errors=True)
# And then we extract it to build_dir/artifact_name
zip_ref.extractall(artifact_unzipped_location)
- # And then we iterate over the contents of the extracted directory
- # and extract the tar.gz files inside it
- for entry in os.listdir(artifact_unzipped_location):
- artifact_tar_location = os.path.join(artifact_unzipped_location, entry)
- with tarfile.open(artifact_tar_location, "r:gz") as tar_ref:
- # And we just untar it to the same directory as the zip file
- tar_ref.extractall(artifact_unzipped_location)
- database_results[pretty_name] = os.path.join(
- artifact_unzipped_location, remove_extension(entry)
- )
+ # And then we extract the language tar.gz file inside it
+ artifact_tar_location = os.path.join(
+ artifact_unzipped_location, f"{language}.tar.gz"
+ )
+ with tarfile.open(artifact_tar_location, "r:gz") as tar_ref:
+ # And we just untar it to the same directory as the zip file
+ tar_ref.extractall(artifact_unzipped_location)
+ ret = os.path.join(artifact_unzipped_location, language)
+ print(f"Decompression complete: {ret}")
+ return ret
+
+ results = run_in_parallel(
+ download_and_decompress,
+ list(analyzed_databases.values()),
+ on_error=lambda db, exc: print(
+ f"ERROR: Failed to download and decompress {db["artifact_name"]}: {exc}"
+ ),
+ error_summary=lambda failures: print(
+ f"ERROR: Failed to download {len(failures)} databases: {', '.join(item[0] for item in failures)}"
+ ),
+ )
- print(f"\n=== Extracted {len(database_results)} databases ===")
+ print(f"\n=== Fetched {len(results)} databases ===")
- return [(project, database_results[project["name"]]) for project in projects]
+ return [(project_map[n], r) for n, r in zip(analyzed_databases, results)]
def get_mad_destination_for_project(config, name: str) -> str:
@@ -400,33 +451,18 @@ def main(config, args) -> None:
if not os.path.exists(build_dir):
os.makedirs(build_dir)
- # Check if any of the MaD directories contain working directory changes in git
- for project in projects:
- mad_dir = get_mad_destination_for_project(config, project["name"])
- if os.path.exists(mad_dir):
- git_status_output = subprocess.check_output(
- ["git", "status", "-s", mad_dir], text=True
- ).strip()
- if git_status_output:
- print(
- f"""ERROR: Working directory changes detected in {mad_dir}.
-
-Before generating new models, the existing models are deleted.
-
-To avoid loss of data, please commit your changes."""
- )
- sys.exit(1)
-
database_results = []
match get_strategy(config):
case "repo":
extractor_options = config.get("extractor_options", [])
database_results = build_databases_from_projects(
- language, extractor_options, projects
+ language,
+ extractor_options,
+ projects,
)
case "dca":
- experiment_name = args.dca
- if experiment_name is None:
+ experiment_names = args.dca
+ if experiment_names is None:
print("ERROR: --dca argument is required for DCA strategy")
sys.exit(1)
@@ -439,7 +475,10 @@ def main(config, args) -> None:
with open(args.pat, "r") as f:
pat = f.read().strip()
database_results = download_dca_databases(
- experiment_name, pat, projects
+ language,
+ experiment_names,
+ pat,
+ projects,
)
# Generate models for all projects
@@ -463,7 +502,7 @@ def main(config, args) -> None:
for project, database_dir in database_results:
if database_dir is not None:
- generate_models(config, project, database_dir)
+ generate_models(config, args, project, database_dir)
if __name__ == "__main__":
@@ -474,14 +513,26 @@ def main(config, args) -> None:
parser.add_argument(
"--dca",
type=str,
- help="Name of a DCA run that built all the projects",
- required=False,
+ help="Name of a DCA run that built all the projects. Can be repeated, with sources taken from all provided runs, "
+ "the last provided ones having priority",
+ action="append",
)
parser.add_argument(
"--pat",
type=str,
help="Path to a file containing the PAT token required to grab DCA databases (the same as the one you use for DCA)",
- required=False,
+ )
+ parser.add_argument(
+ "--codeql-ram",
+ type=int,
+ help="What `--ram` value to pass to `codeql` while generating models (by default the flag is not passed)",
+ default=None,
+ )
+ parser.add_argument(
+ "--codeql-threads",
+ type=int,
+ help="What `--threads` value to pass to `codeql` (default %(default)s)",
+ default=0,
)
args = parser.parse_args()
@@ -492,9 +543,9 @@ def main(config, args) -> None:
sys.exit(1)
try:
with open(args.config, "r") as f:
- config = json.load(f)
- except json.JSONDecodeError as e:
- print(f"ERROR: Failed to parse JSON file {args.config}: {e}")
+ config = yaml.safe_load(f)
+ except yaml.YAMLError as e:
+ print(f"ERROR: Failed to parse YAML file {args.config}: {e}")
sys.exit(1)
main(config, args)
diff --git a/misc/scripts/models-as-data/generate_mad.py b/misc/scripts/models-as-data/generate_mad.py
index a5f8ffc8fa05..818721ed43b6 100755
--- a/misc/scripts/models-as-data/generate_mad.py
+++ b/misc/scripts/models-as-data/generate_mad.py
@@ -62,6 +62,8 @@ def __init__(self, language):
self.generateTypeBasedSummaries = False
self.dryRun = False
self.dirname = "modelgenerator"
+ self.ram = 2**15
+ self.threads = 8
def setenvironment(self, database, folder):
@@ -138,8 +140,12 @@ def runQuery(self, query):
queryFile = os.path.join(self.codeQlRoot, f"{self.language}/ql/src/utils/{self.dirname}", query)
resultBqrs = os.path.join(self.workDir, "out.bqrs")
- helpers.run_cmd(['codeql', 'query', 'run', queryFile, '--database',
- self.database, '--output', resultBqrs, '--threads', '8', '--ram', '32768'], "Failed to generate " + query)
+ cmd = ['codeql', 'query', 'run', queryFile, '--database', self.database, '--output', resultBqrs]
+ if self.threads is not None:
+ cmd += ["--threads", str(self.threads)]
+ if self.ram is not None:
+ cmd += ["--ram", str(self.ram)]
+ helpers.run_cmd(cmd, "Failed to generate " + query)
return helpers.readData(self.workDir, resultBqrs)
@@ -214,4 +220,4 @@ def run(self):
self.save(typeBasedContent, ".typebased.model.yml")
if __name__ == '__main__':
- Generator.make().run()
\ No newline at end of file
+ Generator.make().run()
diff --git a/misc/suite-helpers/qlpack.yml b/misc/suite-helpers/qlpack.yml
index 3ee266732fb6..848e808db344 100644
--- a/misc/suite-helpers/qlpack.yml
+++ b/misc/suite-helpers/qlpack.yml
@@ -1,4 +1,4 @@
name: codeql/suite-helpers
-version: 1.0.25
+version: 1.0.26-dev
groups: shared
warnOnImplicitThis: true
diff --git a/python/ql/integration-tests/query-suite/python-code-quality.qls.expected b/python/ql/integration-tests/query-suite/python-code-quality.qls.expected
index b81d300d0241..c2168cab937b 100644
--- a/python/ql/integration-tests/query-suite/python-code-quality.qls.expected
+++ b/python/ql/integration-tests/query-suite/python-code-quality.qls.expected
@@ -1,3 +1,4 @@
+ql/python/ql/src/Functions/IterReturnsNonSelf.ql
ql/python/ql/src/Functions/NonCls.ql
ql/python/ql/src/Functions/NonSelf.ql
ql/python/ql/src/Functions/ReturnConsistentTupleSizes.ql
diff --git a/python/ql/lib/qlpack.yml b/python/ql/lib/qlpack.yml
index 4b1d284def3b..ffd394c25441 100644
--- a/python/ql/lib/qlpack.yml
+++ b/python/ql/lib/qlpack.yml
@@ -1,5 +1,5 @@
name: codeql/python-all
-version: 4.0.9
+version: 4.0.10-dev
groups: python
dbscheme: semmlecode.python.dbscheme
extractor: python
diff --git a/python/ql/src/Functions/IterReturnsNonSelf.qhelp b/python/ql/src/Functions/IterReturnsNonSelf.qhelp
index f614d912ff0a..0ad5a05fdf48 100644
--- a/python/ql/src/Functions/IterReturnsNonSelf.qhelp
+++ b/python/ql/src/Functions/IterReturnsNonSelf.qhelp
@@ -3,34 +3,27 @@
"qhelp.dtd">
-The __iter__
method of an iterator should return self.
-This is important so that iterators can be used as sequences in any context
-that expect a sequence. To do so requires that __iter__
is
-idempotent on iterators.
-
-
-Note that sequences and mapping should return a new iterator, it is just the returned
-iterator that must obey this constraint.
+
Iterator classes (classes defining a __next__
method) should have an __iter__
method that returns the iterator itself.
+This ensures that the object is also an iterable; and behaves as expected when used anywhere an iterator or iterable is expected, such as in for
loops.
+
+
-Make the __iter__
return self unless the class should not be an iterator,
-in which case rename the next
(Python 2) or __next__
(Python 3)
-to something else.
+Ensure that the __iter__
method returns self
, or is otherwise equivalent as an iterator to self
.
-In this example the Counter
class's __iter__
method does not
-return self (or even an iterator). This will cause the program to fail when anyone attempts
-to use the iterator in a for
loop or in
statement.
-
+In the following example, the MyRange
class's __iter__
method does not return self
.
+This would lead to unexpected results when used with a for
loop or in
statement.
+
- Python Language Reference: object.__iter__ .
- Python Standard Library: Iterators .
+ Python Language Reference: object.__iter__ .
+ Python Standard Library: Iterators .
diff --git a/python/ql/src/Functions/IterReturnsNonSelf.ql b/python/ql/src/Functions/IterReturnsNonSelf.ql
index 385677a57630..d6501a803a30 100644
--- a/python/ql/src/Functions/IterReturnsNonSelf.ql
+++ b/python/ql/src/Functions/IterReturnsNonSelf.ql
@@ -4,6 +4,7 @@
* @kind problem
* @tags reliability
* correctness
+ * quality
* @problem.severity error
* @sub-severity low
* @precision high
@@ -11,20 +12,79 @@
*/
import python
+import semmle.python.ApiGraphs
-Function iter_method(ClassValue t) { result = t.lookup("__iter__").(FunctionValue).getScope() }
+/** Gets the __iter__ method of `c`. */
+Function iterMethod(Class c) { result = c.getAMethod() and result.getName() = "__iter__" }
-predicate is_self(Name value, Function f) { value.getVariable() = f.getArg(0).(Name).getVariable() }
+/** Gets the `__next__` method of `c`. */
+Function nextMethod(Class c) { result = c.getAMethod() and result.getName() = "__next__" }
-predicate returns_non_self(Function f) {
+/** Holds if `var` is a variable referring to the `self` parameter of `f`. */
+predicate isSelfVar(Function f, Name var) { var.getVariable() = f.getArg(0).(Name).getVariable() }
+
+/** Holds if `e` is an expression that an iter function `f` should return. */
+predicate isGoodReturn(Function f, Expr e) {
+ isSelfVar(f, e)
+ or
+ exists(DataFlow::CallCfgNode call, DataFlow::AttrRead read, DataFlow::Node selfNode |
+ e = call.asExpr()
+ |
+ call = API::builtin("iter").getACall() and
+ call.getArg(0) = read and
+ read.accesses(selfNode, "__next__") and
+ isSelfVar(f, selfNode.asExpr()) and
+ call.getArg(1).asExpr() instanceof None
+ )
+}
+
+/** Holds if the iter method `f` does not return `self` or an equivalent. */
+predicate returnsNonSelf(Function f) {
exists(f.getFallthroughNode())
or
- exists(Return r | r.getScope() = f and not is_self(r.getValue(), f))
+ exists(Return r | r.getScope() = f and not isGoodReturn(f, r.getValue()))
+}
+
+/** Holds if `iter` and `next` methods are wrappers around some field. */
+predicate iterWrapperMethods(Function iter, Function next) {
+ exists(string field |
+ exists(Return r, DataFlow::Node self, DataFlow::AttrRead read |
+ r.getScope() = iter and
+ r.getValue() = [iterCall(read).asExpr(), read.asExpr()] and
+ read.accesses(self, field) and
+ isSelfVar(iter, self.asExpr())
+ ) and
+ exists(Return r, DataFlow::Node self, DataFlow::AttrRead read |
+ r.getScope() = next and
+ r.getValue() = nextCall(read).asExpr() and
+ read.accesses(self, field) and
+ isSelfVar(next, self.asExpr())
+ )
+ )
+}
+
+/** Gets a call to `iter(arg)` or `arg.__iter__()`. */
+private DataFlow::CallCfgNode iterCall(DataFlow::Node arg) {
+ result.(DataFlow::MethodCallNode).calls(arg, "__iter__")
+ or
+ result = API::builtin("iter").getACall() and
+ arg = result.getArg(0) and
+ not exists(result.getArg(1))
+}
+
+/** Gets a call to `next(arg)` or `arg.__next__()`. */
+private DataFlow::CallCfgNode nextCall(DataFlow::Node arg) {
+ result.(DataFlow::MethodCallNode).calls(arg, "__next__")
or
- exists(Return r | r.getScope() = f and not exists(r.getValue()))
+ result = API::builtin("next").getACall() and
+ arg = result.getArg(0)
}
-from ClassValue t, Function iter
-where t.isIterator() and iter = iter_method(t) and returns_non_self(iter)
-select t, "Class " + t.getName() + " is an iterator but its $@ method does not return 'self'.",
- iter, iter.getName()
+from Class c, Function iter, Function next
+where
+ next = nextMethod(c) and
+ iter = iterMethod(c) and
+ returnsNonSelf(iter) and
+ not iterWrapperMethods(iter, next)
+select iter, "Iter method of iterator $@ does not return `" + iter.getArg(0).getName() + "`.", c,
+ c.getName()
diff --git a/python/ql/src/Functions/IterReturnsNonSelf.py b/python/ql/src/Functions/examples/IterReturnsNonSelf.py
similarity index 65%
rename from python/ql/src/Functions/IterReturnsNonSelf.py
rename to python/ql/src/Functions/examples/IterReturnsNonSelf.py
index 6251b87aba7b..20ba5eb18215 100644
--- a/python/ql/src/Functions/IterReturnsNonSelf.py
+++ b/python/ql/src/Functions/examples/IterReturnsNonSelf.py
@@ -4,10 +4,10 @@ def __init__(self, low, high):
self.high = high
def __iter__(self):
- return self.current
+ return (self.current, self.high) # BAD: does not return `self`.
- def next(self):
+ def __next__(self):
if self.current > self.high:
- raise StopIteration
+ return None
self.current += 1
return self.current - 1
\ No newline at end of file
diff --git a/python/ql/src/change-notes/2025-05-23-iter-not-return-self.md b/python/ql/src/change-notes/2025-05-23-iter-not-return-self.md
new file mode 100644
index 000000000000..80b8313a72b8
--- /dev/null
+++ b/python/ql/src/change-notes/2025-05-23-iter-not-return-self.md
@@ -0,0 +1,4 @@
+---
+category: minorAnalysis
+---
+* The `py/iter-returns-non-self` query has been modernized, and no longer alerts for certain cases where an equivalent iterator is returned.
\ No newline at end of file
diff --git a/python/ql/src/qlpack.yml b/python/ql/src/qlpack.yml
index 54dfe59df779..2fa2d2204b9b 100644
--- a/python/ql/src/qlpack.yml
+++ b/python/ql/src/qlpack.yml
@@ -1,5 +1,5 @@
name: codeql/python-queries
-version: 1.5.2
+version: 1.5.3-dev
groups:
- python
- queries
diff --git a/python/ql/test/query-tests/Functions/general/IterReturnsNonSelf.expected b/python/ql/test/query-tests/Functions/general/IterReturnsNonSelf.expected
deleted file mode 100644
index 9fd22c1df612..000000000000
--- a/python/ql/test/query-tests/Functions/general/IterReturnsNonSelf.expected
+++ /dev/null
@@ -1 +0,0 @@
-| protocols.py:54:1:54:29 | class AlmostIterator | Class AlmostIterator is an iterator but its $@ method does not return 'self'. | protocols.py:62:5:62:23 | Function __iter__ | __iter__ |
diff --git a/python/ql/test/query-tests/Functions/iterators/IterReturnsNonSelf.expected b/python/ql/test/query-tests/Functions/iterators/IterReturnsNonSelf.expected
new file mode 100644
index 000000000000..a21f8de68a59
--- /dev/null
+++ b/python/ql/test/query-tests/Functions/iterators/IterReturnsNonSelf.expected
@@ -0,0 +1,2 @@
+| test.py:5:5:5:23 | Function __iter__ | Iter method of iterator $@ does not return `self`. | test.py:1:1:1:11 | Class Bad1 | Bad1 |
+| test.py:51:5:51:23 | Function __iter__ | Iter method of iterator $@ does not return `self`. | test.py:42:1:42:21 | Class FalsePositive1 | FalsePositive1 |
diff --git a/python/ql/test/query-tests/Functions/general/IterReturnsNonSelf.qlref b/python/ql/test/query-tests/Functions/iterators/IterReturnsNonSelf.qlref
similarity index 100%
rename from python/ql/test/query-tests/Functions/general/IterReturnsNonSelf.qlref
rename to python/ql/test/query-tests/Functions/iterators/IterReturnsNonSelf.qlref
diff --git a/python/ql/test/query-tests/Functions/iterators/test.py b/python/ql/test/query-tests/Functions/iterators/test.py
new file mode 100644
index 000000000000..ced389967e41
--- /dev/null
+++ b/python/ql/test/query-tests/Functions/iterators/test.py
@@ -0,0 +1,53 @@
+class Bad1:
+ def __next__(self):
+ return 0
+
+ def __iter__(self): # BAD: Iter does not return self
+ yield 0
+
+class Good1:
+ def __next__(self):
+ return 0
+
+ def __iter__(self): # GOOD: iter returns self
+ return self
+
+class Good2:
+ def __init__(self):
+ self._it = iter([0,0,0])
+
+ def __next__(self):
+ return next(self._it)
+
+ def __iter__(self): # GOOD: iter and next are wrappers around a field
+ return self._it.__iter__()
+
+class Good3:
+ def __init__(self):
+ self._it = iter([0,0,0])
+
+ def __next__(self):
+ return self._it.__next__()
+
+ def __iter__(self): # GOOD: iter and next are wrappers around a field
+ return self._it
+
+class Good4:
+ def __next__(self):
+ return 0
+
+ def __iter__(self): # GOOD: this is an equivalent iterator to `self`.
+ return iter(self.__next__, None)
+
+class FalsePositive1:
+ def __init__(self):
+ self._it = None
+
+ def __next__(self):
+ if self._it is None:
+ self._it = iter(self)
+ return next(self._it)
+
+ def __iter__(self): # SPURIOUS, GOOD: implementation of next ensures the iterator is equivalent to the one returned by iter, but this is not detected.
+ yield 0
+ yield 0
\ No newline at end of file
diff --git a/ruby/ql/lib/qlpack.yml b/ruby/ql/lib/qlpack.yml
index 1ed20c1ddcfd..ab4215ced208 100644
--- a/ruby/ql/lib/qlpack.yml
+++ b/ruby/ql/lib/qlpack.yml
@@ -1,5 +1,5 @@
name: codeql/ruby-all
-version: 4.1.8
+version: 4.1.9-dev
groups: ruby
extractor: ruby
dbscheme: ruby.dbscheme
diff --git a/ruby/ql/src/qlpack.yml b/ruby/ql/src/qlpack.yml
index d3963ed7ea47..b6053c7a9ef6 100644
--- a/ruby/ql/src/qlpack.yml
+++ b/ruby/ql/src/qlpack.yml
@@ -1,5 +1,5 @@
name: codeql/ruby-queries
-version: 1.3.2
+version: 1.3.3-dev
groups:
- ruby
- queries
diff --git a/rust/ast-generator/README.md b/rust/ast-generator/README.md
index 17d75c6445d6..21193bdee1c5 100644
--- a/rust/ast-generator/README.md
+++ b/rust/ast-generator/README.md
@@ -8,7 +8,7 @@ It uses:
Both are fetched by bazel while building. In order to have proper IDE support and being
able to run cargo tooling in this crate, you can run
```bash
-bazel run //rust/ast-generator:inject_sources
+bazel run //rust/ast-generator:inject-sources
```
which will create the missing sources. Be aware that bazel will still use the source taken
directly from `rust-analyzer`, not the one in your working copy. Those should not need to be
diff --git a/rust/ast-generator/src/main.rs b/rust/ast-generator/src/main.rs
index 83999711161d..70741c83382c 100644
--- a/rust/ast-generator/src/main.rs
+++ b/rust/ast-generator/src/main.rs
@@ -114,7 +114,9 @@ fn node_src_to_schema_class(
let (ty, child) = match &f.ty {
FieldType::String => ("optional[string]".to_string(), false),
FieldType::Predicate => ("predicate".to_string(), false),
- FieldType::Optional(ty) => (format!("optional[\"{}\"]", class_name(ty)), true),
+ FieldType::Optional(ty) | FieldType::Body(ty) => {
+ (format!("optional[\"{}\"]", class_name(ty)), true)
+ }
FieldType::List(ty) => (format!("list[\"{}\"]", class_name(ty)), true),
};
SchemaField {
@@ -169,6 +171,7 @@ enum FieldType {
String,
Predicate,
Optional(String),
+ Body(String),
List(String),
}
@@ -177,158 +180,95 @@ struct FieldInfo {
ty: FieldType,
}
+impl FieldInfo {
+ pub fn optional(name: &str, ty: &str) -> FieldInfo {
+ FieldInfo {
+ name: name.to_string(),
+ ty: FieldType::Optional(ty.to_string()),
+ }
+ }
+
+ pub fn body(name: &str, ty: &str) -> FieldInfo {
+ FieldInfo {
+ name: name.to_string(),
+ ty: FieldType::Body(ty.to_string()),
+ }
+ }
+
+ pub fn string(name: &str) -> FieldInfo {
+ FieldInfo {
+ name: name.to_string(),
+ ty: FieldType::String,
+ }
+ }
+
+ pub fn predicate(name: &str) -> FieldInfo {
+ FieldInfo {
+ name: name.to_string(),
+ ty: FieldType::Predicate,
+ }
+ }
+
+ pub fn list(name: &str, ty: &str) -> FieldInfo {
+ FieldInfo {
+ name: name.to_string(),
+ ty: FieldType::List(ty.to_string()),
+ }
+ }
+}
+
fn get_additional_fields(node: &AstNodeSrc) -> Vec {
match node.name.as_str() {
- "Name" | "NameRef" | "Lifetime" => vec![FieldInfo {
- name: "text".to_string(),
- ty: FieldType::String,
- }],
- "Abi" => vec![FieldInfo {
- name: "abi_string".to_string(),
- ty: FieldType::String,
- }],
- "Literal" => vec![FieldInfo {
- name: "text_value".to_string(),
- ty: FieldType::String,
- }],
- "PrefixExpr" => vec![FieldInfo {
- name: "operator_name".to_string(),
- ty: FieldType::String,
- }],
+ "Name" | "NameRef" | "Lifetime" => vec![FieldInfo::string("text")],
+ "Abi" => vec![FieldInfo::string("abi_string")],
+ "Literal" => vec![FieldInfo::string("text_value")],
+ "PrefixExpr" => vec![FieldInfo::string("operator_name")],
"BinExpr" => vec![
- FieldInfo {
- name: "lhs".to_string(),
- ty: FieldType::Optional("Expr".to_string()),
- },
- FieldInfo {
- name: "rhs".to_string(),
- ty: FieldType::Optional("Expr".to_string()),
- },
- FieldInfo {
- name: "operator_name".to_string(),
- ty: FieldType::String,
- },
+ FieldInfo::optional("lhs", "Expr"),
+ FieldInfo::optional("rhs", "Expr"),
+ FieldInfo::string("operator_name"),
],
"IfExpr" => vec![
- FieldInfo {
- name: "then_branch".to_string(),
- ty: FieldType::Optional("BlockExpr".to_string()),
- },
- FieldInfo {
- name: "else_branch".to_string(),
- ty: FieldType::Optional("ElseBranch".to_string()),
- },
- FieldInfo {
- name: "condition".to_string(),
- ty: FieldType::Optional("Expr".to_string()),
- },
+ FieldInfo::optional("then_branch", "BlockExpr"),
+ FieldInfo::optional("else_branch", "ElseBranch"),
+ FieldInfo::optional("condition", "Expr"),
],
"RangeExpr" => vec![
- FieldInfo {
- name: "start".to_string(),
- ty: FieldType::Optional("Expr".to_string()),
- },
- FieldInfo {
- name: "end".to_string(),
- ty: FieldType::Optional("Expr".to_string()),
- },
- FieldInfo {
- name: "operator_name".to_string(),
- ty: FieldType::String,
- },
+ FieldInfo::optional("start", "Expr"),
+ FieldInfo::optional("end", "Expr"),
+ FieldInfo::string("operator_name"),
],
"RangePat" => vec![
- FieldInfo {
- name: "start".to_string(),
- ty: FieldType::Optional("Pat".to_string()),
- },
- FieldInfo {
- name: "end".to_string(),
- ty: FieldType::Optional("Pat".to_string()),
- },
- FieldInfo {
- name: "operator_name".to_string(),
- ty: FieldType::String,
- },
+ FieldInfo::optional("start", "Pat"),
+ FieldInfo::optional("end", "Pat"),
+ FieldInfo::string("operator_name"),
],
"IndexExpr" => vec![
- FieldInfo {
- name: "index".to_string(),
- ty: FieldType::Optional("Expr".to_string()),
- },
- FieldInfo {
- name: "base".to_string(),
- ty: FieldType::Optional("Expr".to_string()),
- },
+ FieldInfo::optional("index", "Expr"),
+ FieldInfo::optional("base", "Expr"),
],
"Impl" => vec![
- FieldInfo {
- name: "trait_".to_string(),
- ty: FieldType::Optional("Type".to_string()),
- },
- FieldInfo {
- name: "self_ty".to_string(),
- ty: FieldType::Optional("Type".to_string()),
- },
+ FieldInfo::optional("trait_", "Type"),
+ FieldInfo::optional("self_ty", "Type"),
],
- "ForExpr" => vec![FieldInfo {
- name: "iterable".to_string(),
- ty: FieldType::Optional("Expr".to_string()),
- }],
- "WhileExpr" => vec![FieldInfo {
- name: "condition".to_string(),
- ty: FieldType::Optional("Expr".to_string()),
- }],
- "MatchGuard" => vec![FieldInfo {
- name: "condition".to_string(),
- ty: FieldType::Optional("Expr".to_string()),
- }],
+ "ForExpr" => vec![FieldInfo::optional("iterable", "Expr")],
+ "WhileExpr" => vec![FieldInfo::optional("condition", "Expr")],
+ "MatchGuard" => vec![FieldInfo::optional("condition", "Expr")],
"MacroDef" => vec![
- FieldInfo {
- name: "args".to_string(),
- ty: FieldType::Optional("TokenTree".to_string()),
- },
- FieldInfo {
- name: "body".to_string(),
- ty: FieldType::Optional("TokenTree".to_string()),
- },
+ FieldInfo::body("args", "TokenTree"),
+ FieldInfo::body("body", "TokenTree"),
],
- "FormatArgsExpr" => vec![FieldInfo {
- name: "args".to_string(),
- ty: FieldType::List("FormatArgsArg".to_string()),
- }],
- "ArgList" => vec![FieldInfo {
- name: "args".to_string(),
- ty: FieldType::List("Expr".to_string()),
- }],
- "Fn" => vec![FieldInfo {
- name: "body".to_string(),
- ty: FieldType::Optional("BlockExpr".to_string()),
- }],
- "Const" => vec![FieldInfo {
- name: "body".to_string(),
- ty: FieldType::Optional("Expr".to_string()),
- }],
- "Static" => vec![FieldInfo {
- name: "body".to_string(),
- ty: FieldType::Optional("Expr".to_string()),
- }],
- "ClosureExpr" => vec![FieldInfo {
- name: "body".to_string(),
- ty: FieldType::Optional("Expr".to_string()),
- }],
- "ArrayExpr" => vec![FieldInfo {
- name: "is_semicolon".to_string(),
- ty: FieldType::Predicate,
- }],
- "SelfParam" => vec![FieldInfo {
- name: "is_amp".to_string(),
- ty: FieldType::Predicate,
- }],
- "UseTree" => vec![FieldInfo {
- name: "is_star".to_string(),
- ty: FieldType::Predicate,
- }],
+ "MacroCall" => vec![FieldInfo::body("token_tree", "TokenTree")],
+ "FormatArgsExpr" => vec![FieldInfo::list("args", "FormatArgsArg")],
+ "ArgList" => vec![FieldInfo::list("args", "Expr")],
+ "Fn" => vec![FieldInfo::body("body", "BlockExpr")],
+ "Const" => vec![FieldInfo::body("body", "Expr")],
+ "Static" => vec![FieldInfo::body("body", "Expr")],
+ "Param" => vec![FieldInfo::body("pat", "Pat")],
+ "ClosureExpr" => vec![FieldInfo::optional("body", "Expr")],
+ "ArrayExpr" => vec![FieldInfo::predicate("is_semicolon")],
+ "SelfParam" => vec![FieldInfo::predicate("is_amp")],
+ "UseTree" => vec![FieldInfo::predicate("is_star")],
_ => vec![],
}
}
@@ -352,9 +292,11 @@ fn get_fields(node: &AstNodeSrc) -> Vec {
result.extend(get_additional_fields(node));
for field in &node.fields {
- match (node.name.as_str(), field.method_name().as_str()) {
+ let name = field.method_name();
+ match (node.name.as_str(), name.as_str()) {
("ArrayExpr", "expr") // The ArrayExpr type also has an 'exprs' field
| ("PathSegment", "ty" | "path_type") // these are broken, handling them manually
+ | ("Param", "pat") | ("MacroCall", "token_tree") // handled manually to use `body`
=> continue,
_ => {}
}
@@ -367,61 +309,30 @@ fn get_fields(node: &AstNodeSrc) -> Vec {
Cardinality::Many => FieldType::List(ty.clone()),
},
};
- result.push(FieldInfo {
- name: field.method_name(),
- ty,
- });
+ result.push(FieldInfo { name, ty });
}
for trait_ in &node.traits {
match trait_.as_str() {
- "HasAttrs" => result.push(FieldInfo {
- name: "attrs".to_owned(),
- ty: FieldType::List("Attr".to_owned()),
- }),
- "HasName" => result.push(FieldInfo {
- name: "name".to_owned(),
- ty: FieldType::Optional("Name".to_owned()),
- }),
- "HasVisibility" => result.push(FieldInfo {
- name: "visibility".to_owned(),
- ty: FieldType::Optional("Visibility".to_owned()),
- }),
+ "HasAttrs" => result.push(FieldInfo::list("attrs", "Attr")),
+ "HasName" => result.push(FieldInfo::optional("name", "Name")),
+ "HasVisibility" => result.push(FieldInfo::optional("visibility", "Visibility")),
"HasGenericParams" => {
- result.push(FieldInfo {
- name: "generic_param_list".to_owned(),
- ty: FieldType::Optional("GenericParamList".to_owned()),
- });
- result.push(FieldInfo {
- name: "where_clause".to_owned(),
- ty: FieldType::Optional("WhereClause".to_owned()),
- })
+ result.push(FieldInfo::optional(
+ "generic_param_list",
+ "GenericParamList",
+ ));
+ result.push(FieldInfo::optional("where_clause", "WhereClause"))
+ }
+ "HasGenericArgs" => {
+ result.push(FieldInfo::optional("generic_arg_list", "GenericArgList"))
}
- "HasGenericArgs" => result.push(FieldInfo {
- name: "generic_arg_list".to_owned(),
- ty: FieldType::Optional("GenericArgList".to_owned()),
- }),
- "HasTypeBounds" => result.push(FieldInfo {
- name: "type_bound_list".to_owned(),
- ty: FieldType::Optional("TypeBoundList".to_owned()),
- }),
- "HasModuleItem" => result.push(FieldInfo {
- name: "items".to_owned(),
- ty: FieldType::List("Item".to_owned()),
- }),
+ "HasTypeBounds" => result.push(FieldInfo::optional("type_bound_list", "TypeBoundList")),
+ "HasModuleItem" => result.push(FieldInfo::list("items", "Item")),
"HasLoopBody" => {
- result.push(FieldInfo {
- name: "label".to_owned(),
- ty: FieldType::Optional("Label".to_owned()),
- });
- result.push(FieldInfo {
- name: "loop_body".to_owned(),
- ty: FieldType::Optional("BlockExpr".to_owned()),
- })
+ result.push(FieldInfo::optional("label", "Label"));
+ result.push(FieldInfo::optional("loop_body", "BlockExpr"))
}
- "HasArgList" => result.push(FieldInfo {
- name: "arg_list".to_owned(),
- ty: FieldType::Optional("ArgList".to_owned()),
- }),
+ "HasArgList" => result.push(FieldInfo::optional("arg_list", "ArgList")),
"HasDocComments" => {}
_ => panic!("Unknown trait {}", trait_),
@@ -455,6 +366,7 @@ struct ExtractorNodeFieldInfo {
predicate: bool,
optional: bool,
list: bool,
+ body: bool,
}
#[derive(Serialize)]
@@ -518,6 +430,13 @@ fn field_info_to_extractor_info(name: &str, field: &FieldInfo) -> ExtractorNodeF
optional: true,
..Default::default()
},
+ FieldType::Body(ty) => ExtractorNodeFieldInfo {
+ name,
+ method: field.name.clone(),
+ snake_case_ty: to_lower_snake_case(ty),
+ body: true,
+ ..Default::default()
+ },
FieldType::List(ty) => ExtractorNodeFieldInfo {
name,
method: field.name.clone(),
diff --git a/rust/ast-generator/templates/extractor.mustache b/rust/ast-generator/templates/extractor.mustache
index b94f8a6043a7..ab1fd4b0d378 100644
--- a/rust/ast-generator/templates/extractor.mustache
+++ b/rust/ast-generator/templates/extractor.mustache
@@ -36,23 +36,27 @@ impl Translator<'_> {
pub(crate) fn emit_{{snake_case_name}}(&mut self, node: &ast::{{ast_name}}) -> Option> {
pre_emit!({{name}}, self, node);
- if self.should_be_excluded(node) { return None; }
{{#has_attrs}}
- if self.should_be_excluded_attrs(node) { return None; }
+ if self.should_be_excluded(node) { return None; }
{{/has_attrs}}
{{#fields}}
- {{#predicate}}
- let {{name}} = node.{{method}}().is_some();
- {{/predicate}}
- {{#string}}
- let {{name}} = node.try_get_text();
- {{/string}}
- {{#list}}
- let {{name}} = node.{{method}}().filter_map(|x| self.emit_{{snake_case_ty}}(&x)).collect();
- {{/list}}
- {{#optional}}
- let {{name}} = node.{{method}}().and_then(|x| self.emit_{{snake_case_ty}}(&x));
- {{/optional}}
+ let {{name}} =
+ {{#predicate}}
+ node.{{method}}().is_some()
+ {{/predicate}}
+ {{#string}}
+ node.try_get_text()
+ {{/string}}
+ {{#list}}
+ node.{{method}}().filter_map(|x| self.emit_{{snake_case_ty}}(&x)).collect()
+ {{/list}}
+ {{#optional}}
+ node.{{method}}().and_then(|x| self.emit_{{snake_case_ty}}(&x))
+ {{/optional}}
+ {{#body}}
+ if self.should_skip_bodies() { None } else { node.{{method}}().and_then(|x| self.emit_{{snake_case_ty}}(&x)) }
+ {{/body}}
+ ;
{{/fields}}
let label = self.trap.emit(generated::{{name}} {
id: TrapId::Star,
diff --git a/rust/bulk_generation_targets.yml b/rust/bulk_generation_targets.yml
new file mode 100644
index 000000000000..15e38c7a18e6
--- /dev/null
+++ b/rust/bulk_generation_targets.yml
@@ -0,0 +1,24 @@
+strategy: dca
+language: rust
+destination: rust/ql/lib/ext/generated
+# targets must have name specified and corresponding to the name in the DCA suite
+# they can optionally specify any of
+# with-sinks: false
+# with-sources: false
+# with-summaries: false
+# if a target has a dependency in this same list, it should be listed after that dependency
+targets:
+- name: rust
+- name: libc
+- name: log
+- name: memchr
+- name: once_cell
+- name: rand
+- name: smallvec
+- name: serde
+- name: tokio
+- name: reqwest
+- name: rocket
+- name: actix-web
+- name: hyper
+- name: clap
diff --git a/rust/downgrades/aa9a0bda17c76b804ad9e108d43da15f6beaf2a7/old.dbscheme b/rust/downgrades/aa9a0bda17c76b804ad9e108d43da15f6beaf2a7/old.dbscheme
new file mode 100644
index 000000000000..aa9a0bda17c7
--- /dev/null
+++ b/rust/downgrades/aa9a0bda17c76b804ad9e108d43da15f6beaf2a7/old.dbscheme
@@ -0,0 +1,3616 @@
+// generated by codegen, do not edit
+
+// from ../shared/tree-sitter-extractor/src/generator/prefix.dbscheme
+/*- Files and folders -*/
+
+/**
+ * The location of an element.
+ * 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(
+ unique int id: @location_default,
+ int file: @file ref,
+ int beginLine: int ref,
+ int beginColumn: int ref,
+ int endLine: int ref,
+ int endColumn: int ref
+);
+
+files(
+ unique int id: @file,
+ string name: string ref
+);
+
+folders(
+ unique int id: @folder,
+ string name: string ref
+);
+
+@container = @file | @folder
+
+containerparent(
+ int parent: @container ref,
+ unique int child: @container ref
+);
+
+/*- Empty location -*/
+
+empty_location(
+ int location: @location_default ref
+);
+
+/*- Source location prefix -*/
+
+/**
+ * The source location of the snapshot.
+ */
+sourceLocationPrefix(string prefix : string ref);
+
+/*- Diagnostic messages -*/
+
+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
+);
+
+/*- Diagnostic messages: severity -*/
+
+case @diagnostic.severity of
+ 10 = @diagnostic_debug
+| 20 = @diagnostic_info
+| 30 = @diagnostic_warning
+| 40 = @diagnostic_error
+;
+
+/*- YAML -*/
+
+#keyset[parent, idx]
+yaml (unique int id: @yaml_node,
+ int kind: int ref,
+ int parent: @yaml_node_parent ref,
+ int idx: int ref,
+ string tag: string ref,
+ string tostring: string ref);
+
+case @yaml_node.kind of
+ 0 = @yaml_scalar_node
+| 1 = @yaml_mapping_node
+| 2 = @yaml_sequence_node
+| 3 = @yaml_alias_node
+;
+
+@yaml_collection_node = @yaml_mapping_node | @yaml_sequence_node;
+
+@yaml_node_parent = @yaml_collection_node | @file;
+
+yaml_anchors (unique int node: @yaml_node ref,
+ string anchor: string ref);
+
+yaml_aliases (unique int alias: @yaml_alias_node ref,
+ string target: string ref);
+
+yaml_scalars (unique int scalar: @yaml_scalar_node ref,
+ int style: int ref,
+ string value: string ref);
+
+yaml_errors (unique int id: @yaml_error,
+ string message: string ref);
+
+yaml_locations(unique int locatable: @yaml_locatable ref,
+ int location: @location_default ref);
+
+@yaml_locatable = @yaml_node | @yaml_error;
+
+
+// from prefix.dbscheme
+#keyset[id]
+locatable_locations(
+ int id: @locatable ref,
+ int location: @location_default ref
+);
+
+
+// from schema
+
+@element =
+ @extractor_step
+| @locatable
+| @named_crate
+| @unextracted
+;
+
+extractor_steps(
+ unique int id: @extractor_step,
+ string action: string ref,
+ int duration_ms: int ref
+);
+
+#keyset[id]
+extractor_step_files(
+ int id: @extractor_step ref,
+ int file: @file ref
+);
+
+@locatable =
+ @ast_node
+| @crate
+;
+
+named_crates(
+ unique int id: @named_crate,
+ string name: string ref,
+ int crate: @crate ref
+);
+
+@unextracted =
+ @missing
+| @unimplemented
+;
+
+@ast_node =
+ @abi
+| @addressable
+| @arg_list
+| @asm_dir_spec
+| @asm_operand
+| @asm_operand_expr
+| @asm_option
+| @asm_piece
+| @asm_reg_spec
+| @assoc_item
+| @assoc_item_list
+| @attr
+| @callable
+| @closure_binder
+| @expr
+| @extern_item
+| @extern_item_list
+| @field_list
+| @format_args_arg
+| @generic_arg
+| @generic_arg_list
+| @generic_param
+| @generic_param_list
+| @item_list
+| @label
+| @let_else
+| @macro_items
+| @match_arm
+| @match_arm_list
+| @match_guard
+| @meta
+| @name
+| @param_base
+| @param_list
+| @parenthesized_arg_list
+| @pat
+| @path
+| @path_segment
+| @rename
+| @resolvable
+| @ret_type_repr
+| @return_type_syntax
+| @source_file
+| @stmt
+| @stmt_list
+| @struct_expr_field
+| @struct_expr_field_list
+| @struct_field
+| @struct_pat_field
+| @struct_pat_field_list
+| @token
+| @token_tree
+| @tuple_field
+| @type_bound
+| @type_bound_list
+| @type_repr
+| @use_bound_generic_arg
+| @use_bound_generic_args
+| @use_tree
+| @use_tree_list
+| @variant_def
+| @variant_list
+| @visibility
+| @where_clause
+| @where_pred
+;
+
+crates(
+ unique int id: @crate
+);
+
+#keyset[id]
+crate_names(
+ int id: @crate ref,
+ string name: string ref
+);
+
+#keyset[id]
+crate_versions(
+ int id: @crate ref,
+ string version: string ref
+);
+
+#keyset[id, index]
+crate_cfg_options(
+ int id: @crate ref,
+ int index: int ref,
+ string cfg_option: string ref
+);
+
+#keyset[id, index]
+crate_named_dependencies(
+ int id: @crate ref,
+ int index: int ref,
+ int named_dependency: @named_crate ref
+);
+
+missings(
+ unique int id: @missing
+);
+
+unimplementeds(
+ unique int id: @unimplemented
+);
+
+abis(
+ unique int id: @abi
+);
+
+#keyset[id]
+abi_abi_strings(
+ int id: @abi ref,
+ string abi_string: string ref
+);
+
+@addressable =
+ @item
+| @variant
+;
+
+#keyset[id]
+addressable_extended_canonical_paths(
+ int id: @addressable ref,
+ string extended_canonical_path: string ref
+);
+
+#keyset[id]
+addressable_crate_origins(
+ int id: @addressable ref,
+ string crate_origin: string ref
+);
+
+arg_lists(
+ unique int id: @arg_list
+);
+
+#keyset[id, index]
+arg_list_args(
+ int id: @arg_list ref,
+ int index: int ref,
+ int arg: @expr ref
+);
+
+asm_dir_specs(
+ unique int id: @asm_dir_spec
+);
+
+@asm_operand =
+ @asm_const
+| @asm_label
+| @asm_reg_operand
+| @asm_sym
+;
+
+asm_operand_exprs(
+ unique int id: @asm_operand_expr
+);
+
+#keyset[id]
+asm_operand_expr_in_exprs(
+ int id: @asm_operand_expr ref,
+ int in_expr: @expr ref
+);
+
+#keyset[id]
+asm_operand_expr_out_exprs(
+ int id: @asm_operand_expr ref,
+ int out_expr: @expr ref
+);
+
+asm_options(
+ unique int id: @asm_option
+);
+
+#keyset[id]
+asm_option_is_raw(
+ int id: @asm_option ref
+);
+
+@asm_piece =
+ @asm_clobber_abi
+| @asm_operand_named
+| @asm_options_list
+;
+
+asm_reg_specs(
+ unique int id: @asm_reg_spec
+);
+
+#keyset[id]
+asm_reg_spec_identifiers(
+ int id: @asm_reg_spec ref,
+ int identifier: @name_ref ref
+);
+
+@assoc_item =
+ @const
+| @function
+| @macro_call
+| @type_alias
+;
+
+assoc_item_lists(
+ unique int id: @assoc_item_list
+);
+
+#keyset[id, index]
+assoc_item_list_assoc_items(
+ int id: @assoc_item_list ref,
+ int index: int ref,
+ int assoc_item: @assoc_item ref
+);
+
+#keyset[id, index]
+assoc_item_list_attrs(
+ int id: @assoc_item_list ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+attrs(
+ unique int id: @attr
+);
+
+#keyset[id]
+attr_meta(
+ int id: @attr ref,
+ int meta: @meta ref
+);
+
+@callable =
+ @closure_expr
+| @function
+;
+
+#keyset[id]
+callable_param_lists(
+ int id: @callable ref,
+ int param_list: @param_list ref
+);
+
+#keyset[id, index]
+callable_attrs(
+ int id: @callable ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+closure_binders(
+ unique int id: @closure_binder
+);
+
+#keyset[id]
+closure_binder_generic_param_lists(
+ int id: @closure_binder ref,
+ int generic_param_list: @generic_param_list ref
+);
+
+@expr =
+ @array_expr_internal
+| @asm_expr
+| @await_expr
+| @become_expr
+| @binary_expr
+| @break_expr
+| @call_expr_base
+| @cast_expr
+| @closure_expr
+| @continue_expr
+| @field_expr
+| @format_args_expr
+| @if_expr
+| @index_expr
+| @labelable_expr
+| @let_expr
+| @literal_expr
+| @macro_block_expr
+| @macro_expr
+| @match_expr
+| @offset_of_expr
+| @paren_expr
+| @path_expr_base
+| @prefix_expr
+| @range_expr
+| @ref_expr
+| @return_expr
+| @struct_expr
+| @try_expr
+| @tuple_expr
+| @underscore_expr
+| @yeet_expr
+| @yield_expr
+;
+
+@extern_item =
+ @function
+| @macro_call
+| @static
+| @type_alias
+;
+
+extern_item_lists(
+ unique int id: @extern_item_list
+);
+
+#keyset[id, index]
+extern_item_list_attrs(
+ int id: @extern_item_list ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id, index]
+extern_item_list_extern_items(
+ int id: @extern_item_list ref,
+ int index: int ref,
+ int extern_item: @extern_item ref
+);
+
+@field_list =
+ @struct_field_list
+| @tuple_field_list
+;
+
+format_args_args(
+ unique int id: @format_args_arg
+);
+
+#keyset[id]
+format_args_arg_exprs(
+ int id: @format_args_arg ref,
+ int expr: @expr ref
+);
+
+#keyset[id]
+format_args_arg_names(
+ int id: @format_args_arg ref,
+ int name: @name ref
+);
+
+@generic_arg =
+ @assoc_type_arg
+| @const_arg
+| @lifetime_arg
+| @type_arg
+;
+
+generic_arg_lists(
+ unique int id: @generic_arg_list
+);
+
+#keyset[id, index]
+generic_arg_list_generic_args(
+ int id: @generic_arg_list ref,
+ int index: int ref,
+ int generic_arg: @generic_arg ref
+);
+
+@generic_param =
+ @const_param
+| @lifetime_param
+| @type_param
+;
+
+generic_param_lists(
+ unique int id: @generic_param_list
+);
+
+#keyset[id, index]
+generic_param_list_generic_params(
+ int id: @generic_param_list ref,
+ int index: int ref,
+ int generic_param: @generic_param ref
+);
+
+item_lists(
+ unique int id: @item_list
+);
+
+#keyset[id, index]
+item_list_attrs(
+ int id: @item_list ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id, index]
+item_list_items(
+ int id: @item_list ref,
+ int index: int ref,
+ int item: @item ref
+);
+
+labels(
+ unique int id: @label
+);
+
+#keyset[id]
+label_lifetimes(
+ int id: @label ref,
+ int lifetime: @lifetime ref
+);
+
+let_elses(
+ unique int id: @let_else
+);
+
+#keyset[id]
+let_else_block_exprs(
+ int id: @let_else ref,
+ int block_expr: @block_expr ref
+);
+
+macro_items(
+ unique int id: @macro_items
+);
+
+#keyset[id, index]
+macro_items_items(
+ int id: @macro_items ref,
+ int index: int ref,
+ int item: @item ref
+);
+
+match_arms(
+ unique int id: @match_arm
+);
+
+#keyset[id, index]
+match_arm_attrs(
+ int id: @match_arm ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+match_arm_exprs(
+ int id: @match_arm ref,
+ int expr: @expr ref
+);
+
+#keyset[id]
+match_arm_guards(
+ int id: @match_arm ref,
+ int guard: @match_guard ref
+);
+
+#keyset[id]
+match_arm_pats(
+ int id: @match_arm ref,
+ int pat: @pat ref
+);
+
+match_arm_lists(
+ unique int id: @match_arm_list
+);
+
+#keyset[id, index]
+match_arm_list_arms(
+ int id: @match_arm_list ref,
+ int index: int ref,
+ int arm: @match_arm ref
+);
+
+#keyset[id, index]
+match_arm_list_attrs(
+ int id: @match_arm_list ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+match_guards(
+ unique int id: @match_guard
+);
+
+#keyset[id]
+match_guard_conditions(
+ int id: @match_guard ref,
+ int condition: @expr ref
+);
+
+meta(
+ unique int id: @meta
+);
+
+#keyset[id]
+meta_exprs(
+ int id: @meta ref,
+ int expr: @expr ref
+);
+
+#keyset[id]
+meta_is_unsafe(
+ int id: @meta ref
+);
+
+#keyset[id]
+meta_paths(
+ int id: @meta ref,
+ int path: @path ref
+);
+
+#keyset[id]
+meta_token_trees(
+ int id: @meta ref,
+ int token_tree: @token_tree ref
+);
+
+names(
+ unique int id: @name
+);
+
+#keyset[id]
+name_texts(
+ int id: @name ref,
+ string text: string ref
+);
+
+@param_base =
+ @param
+| @self_param
+;
+
+#keyset[id, index]
+param_base_attrs(
+ int id: @param_base ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+param_base_type_reprs(
+ int id: @param_base ref,
+ int type_repr: @type_repr ref
+);
+
+param_lists(
+ unique int id: @param_list
+);
+
+#keyset[id, index]
+param_list_params(
+ int id: @param_list ref,
+ int index: int ref,
+ int param: @param ref
+);
+
+#keyset[id]
+param_list_self_params(
+ int id: @param_list ref,
+ int self_param: @self_param ref
+);
+
+parenthesized_arg_lists(
+ unique int id: @parenthesized_arg_list
+);
+
+#keyset[id, index]
+parenthesized_arg_list_type_args(
+ int id: @parenthesized_arg_list ref,
+ int index: int ref,
+ int type_arg: @type_arg ref
+);
+
+@pat =
+ @box_pat
+| @const_block_pat
+| @ident_pat
+| @literal_pat
+| @macro_pat
+| @or_pat
+| @paren_pat
+| @path_pat
+| @range_pat
+| @ref_pat
+| @rest_pat
+| @slice_pat
+| @struct_pat
+| @tuple_pat
+| @tuple_struct_pat
+| @wildcard_pat
+;
+
+paths(
+ unique int id: @path
+);
+
+#keyset[id]
+path_qualifiers(
+ int id: @path ref,
+ int qualifier: @path ref
+);
+
+#keyset[id]
+path_segments_(
+ int id: @path ref,
+ int segment: @path_segment ref
+);
+
+path_segments(
+ unique int id: @path_segment
+);
+
+#keyset[id]
+path_segment_generic_arg_lists(
+ int id: @path_segment ref,
+ int generic_arg_list: @generic_arg_list ref
+);
+
+#keyset[id]
+path_segment_identifiers(
+ int id: @path_segment ref,
+ int identifier: @name_ref ref
+);
+
+#keyset[id]
+path_segment_parenthesized_arg_lists(
+ int id: @path_segment ref,
+ int parenthesized_arg_list: @parenthesized_arg_list ref
+);
+
+#keyset[id]
+path_segment_ret_types(
+ int id: @path_segment ref,
+ int ret_type: @ret_type_repr ref
+);
+
+#keyset[id]
+path_segment_return_type_syntaxes(
+ int id: @path_segment ref,
+ int return_type_syntax: @return_type_syntax ref
+);
+
+#keyset[id]
+path_segment_type_reprs(
+ int id: @path_segment ref,
+ int type_repr: @type_repr ref
+);
+
+#keyset[id]
+path_segment_trait_type_reprs(
+ int id: @path_segment ref,
+ int trait_type_repr: @path_type_repr ref
+);
+
+renames(
+ unique int id: @rename
+);
+
+#keyset[id]
+rename_names(
+ int id: @rename ref,
+ int name: @name ref
+);
+
+@resolvable =
+ @method_call_expr
+| @path_ast_node
+;
+
+#keyset[id]
+resolvable_resolved_paths(
+ int id: @resolvable ref,
+ string resolved_path: string ref
+);
+
+#keyset[id]
+resolvable_resolved_crate_origins(
+ int id: @resolvable ref,
+ string resolved_crate_origin: string ref
+);
+
+ret_type_reprs(
+ unique int id: @ret_type_repr
+);
+
+#keyset[id]
+ret_type_repr_type_reprs(
+ int id: @ret_type_repr ref,
+ int type_repr: @type_repr ref
+);
+
+return_type_syntaxes(
+ unique int id: @return_type_syntax
+);
+
+source_files(
+ unique int id: @source_file
+);
+
+#keyset[id, index]
+source_file_attrs(
+ int id: @source_file ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id, index]
+source_file_items(
+ int id: @source_file ref,
+ int index: int ref,
+ int item: @item ref
+);
+
+@stmt =
+ @expr_stmt
+| @item
+| @let_stmt
+;
+
+stmt_lists(
+ unique int id: @stmt_list
+);
+
+#keyset[id, index]
+stmt_list_attrs(
+ int id: @stmt_list ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id, index]
+stmt_list_statements(
+ int id: @stmt_list ref,
+ int index: int ref,
+ int statement: @stmt ref
+);
+
+#keyset[id]
+stmt_list_tail_exprs(
+ int id: @stmt_list ref,
+ int tail_expr: @expr ref
+);
+
+struct_expr_fields(
+ unique int id: @struct_expr_field
+);
+
+#keyset[id, index]
+struct_expr_field_attrs(
+ int id: @struct_expr_field ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+struct_expr_field_exprs(
+ int id: @struct_expr_field ref,
+ int expr: @expr ref
+);
+
+#keyset[id]
+struct_expr_field_identifiers(
+ int id: @struct_expr_field ref,
+ int identifier: @name_ref ref
+);
+
+struct_expr_field_lists(
+ unique int id: @struct_expr_field_list
+);
+
+#keyset[id, index]
+struct_expr_field_list_attrs(
+ int id: @struct_expr_field_list ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id, index]
+struct_expr_field_list_fields(
+ int id: @struct_expr_field_list ref,
+ int index: int ref,
+ int field: @struct_expr_field ref
+);
+
+#keyset[id]
+struct_expr_field_list_spreads(
+ int id: @struct_expr_field_list ref,
+ int spread: @expr ref
+);
+
+struct_fields(
+ unique int id: @struct_field
+);
+
+#keyset[id, index]
+struct_field_attrs(
+ int id: @struct_field ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+struct_field_defaults(
+ int id: @struct_field ref,
+ int default: @expr ref
+);
+
+#keyset[id]
+struct_field_is_unsafe(
+ int id: @struct_field ref
+);
+
+#keyset[id]
+struct_field_names(
+ int id: @struct_field ref,
+ int name: @name ref
+);
+
+#keyset[id]
+struct_field_type_reprs(
+ int id: @struct_field ref,
+ int type_repr: @type_repr ref
+);
+
+#keyset[id]
+struct_field_visibilities(
+ int id: @struct_field ref,
+ int visibility: @visibility ref
+);
+
+struct_pat_fields(
+ unique int id: @struct_pat_field
+);
+
+#keyset[id, index]
+struct_pat_field_attrs(
+ int id: @struct_pat_field ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+struct_pat_field_identifiers(
+ int id: @struct_pat_field ref,
+ int identifier: @name_ref ref
+);
+
+#keyset[id]
+struct_pat_field_pats(
+ int id: @struct_pat_field ref,
+ int pat: @pat ref
+);
+
+struct_pat_field_lists(
+ unique int id: @struct_pat_field_list
+);
+
+#keyset[id, index]
+struct_pat_field_list_fields(
+ int id: @struct_pat_field_list ref,
+ int index: int ref,
+ int field: @struct_pat_field ref
+);
+
+#keyset[id]
+struct_pat_field_list_rest_pats(
+ int id: @struct_pat_field_list ref,
+ int rest_pat: @rest_pat ref
+);
+
+@token =
+ @comment
+;
+
+token_trees(
+ unique int id: @token_tree
+);
+
+tuple_fields(
+ unique int id: @tuple_field
+);
+
+#keyset[id, index]
+tuple_field_attrs(
+ int id: @tuple_field ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+tuple_field_type_reprs(
+ int id: @tuple_field ref,
+ int type_repr: @type_repr ref
+);
+
+#keyset[id]
+tuple_field_visibilities(
+ int id: @tuple_field ref,
+ int visibility: @visibility ref
+);
+
+type_bounds(
+ unique int id: @type_bound
+);
+
+#keyset[id]
+type_bound_is_async(
+ int id: @type_bound ref
+);
+
+#keyset[id]
+type_bound_is_const(
+ int id: @type_bound ref
+);
+
+#keyset[id]
+type_bound_lifetimes(
+ int id: @type_bound ref,
+ int lifetime: @lifetime ref
+);
+
+#keyset[id]
+type_bound_type_reprs(
+ int id: @type_bound ref,
+ int type_repr: @type_repr ref
+);
+
+#keyset[id]
+type_bound_use_bound_generic_args(
+ int id: @type_bound ref,
+ int use_bound_generic_args: @use_bound_generic_args ref
+);
+
+type_bound_lists(
+ unique int id: @type_bound_list
+);
+
+#keyset[id, index]
+type_bound_list_bounds(
+ int id: @type_bound_list ref,
+ int index: int ref,
+ int bound: @type_bound ref
+);
+
+@type_repr =
+ @array_type_repr
+| @dyn_trait_type_repr
+| @fn_ptr_type_repr
+| @for_type_repr
+| @impl_trait_type_repr
+| @infer_type_repr
+| @macro_type_repr
+| @never_type_repr
+| @paren_type_repr
+| @path_type_repr
+| @ptr_type_repr
+| @ref_type_repr
+| @slice_type_repr
+| @tuple_type_repr
+;
+
+@use_bound_generic_arg =
+ @lifetime
+| @name_ref
+;
+
+use_bound_generic_args(
+ unique int id: @use_bound_generic_args
+);
+
+#keyset[id, index]
+use_bound_generic_args_use_bound_generic_args(
+ int id: @use_bound_generic_args ref,
+ int index: int ref,
+ int use_bound_generic_arg: @use_bound_generic_arg ref
+);
+
+use_trees(
+ unique int id: @use_tree
+);
+
+#keyset[id]
+use_tree_is_glob(
+ int id: @use_tree ref
+);
+
+#keyset[id]
+use_tree_paths(
+ int id: @use_tree ref,
+ int path: @path ref
+);
+
+#keyset[id]
+use_tree_renames(
+ int id: @use_tree ref,
+ int rename: @rename ref
+);
+
+#keyset[id]
+use_tree_use_tree_lists(
+ int id: @use_tree ref,
+ int use_tree_list: @use_tree_list ref
+);
+
+use_tree_lists(
+ unique int id: @use_tree_list
+);
+
+#keyset[id, index]
+use_tree_list_use_trees(
+ int id: @use_tree_list ref,
+ int index: int ref,
+ int use_tree: @use_tree ref
+);
+
+@variant_def =
+ @struct
+| @union
+| @variant
+;
+
+variant_lists(
+ unique int id: @variant_list
+);
+
+#keyset[id, index]
+variant_list_variants(
+ int id: @variant_list ref,
+ int index: int ref,
+ int variant: @variant ref
+);
+
+visibilities(
+ unique int id: @visibility
+);
+
+#keyset[id]
+visibility_paths(
+ int id: @visibility ref,
+ int path: @path ref
+);
+
+where_clauses(
+ unique int id: @where_clause
+);
+
+#keyset[id, index]
+where_clause_predicates(
+ int id: @where_clause ref,
+ int index: int ref,
+ int predicate: @where_pred ref
+);
+
+where_preds(
+ unique int id: @where_pred
+);
+
+#keyset[id]
+where_pred_generic_param_lists(
+ int id: @where_pred ref,
+ int generic_param_list: @generic_param_list ref
+);
+
+#keyset[id]
+where_pred_lifetimes(
+ int id: @where_pred ref,
+ int lifetime: @lifetime ref
+);
+
+#keyset[id]
+where_pred_type_reprs(
+ int id: @where_pred ref,
+ int type_repr: @type_repr ref
+);
+
+#keyset[id]
+where_pred_type_bound_lists(
+ int id: @where_pred ref,
+ int type_bound_list: @type_bound_list ref
+);
+
+array_expr_internals(
+ unique int id: @array_expr_internal
+);
+
+#keyset[id, index]
+array_expr_internal_attrs(
+ int id: @array_expr_internal ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id, index]
+array_expr_internal_exprs(
+ int id: @array_expr_internal ref,
+ int index: int ref,
+ int expr: @expr ref
+);
+
+#keyset[id]
+array_expr_internal_is_semicolon(
+ int id: @array_expr_internal ref
+);
+
+array_type_reprs(
+ unique int id: @array_type_repr
+);
+
+#keyset[id]
+array_type_repr_const_args(
+ int id: @array_type_repr ref,
+ int const_arg: @const_arg ref
+);
+
+#keyset[id]
+array_type_repr_element_type_reprs(
+ int id: @array_type_repr ref,
+ int element_type_repr: @type_repr ref
+);
+
+asm_clobber_abis(
+ unique int id: @asm_clobber_abi
+);
+
+asm_consts(
+ unique int id: @asm_const
+);
+
+#keyset[id]
+asm_const_exprs(
+ int id: @asm_const ref,
+ int expr: @expr ref
+);
+
+#keyset[id]
+asm_const_is_const(
+ int id: @asm_const ref
+);
+
+asm_exprs(
+ unique int id: @asm_expr
+);
+
+#keyset[id, index]
+asm_expr_asm_pieces(
+ int id: @asm_expr ref,
+ int index: int ref,
+ int asm_piece: @asm_piece ref
+);
+
+#keyset[id, index]
+asm_expr_attrs(
+ int id: @asm_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id, index]
+asm_expr_templates(
+ int id: @asm_expr ref,
+ int index: int ref,
+ int template: @expr ref
+);
+
+asm_labels(
+ unique int id: @asm_label
+);
+
+#keyset[id]
+asm_label_block_exprs(
+ int id: @asm_label ref,
+ int block_expr: @block_expr ref
+);
+
+asm_operand_nameds(
+ unique int id: @asm_operand_named
+);
+
+#keyset[id]
+asm_operand_named_asm_operands(
+ int id: @asm_operand_named ref,
+ int asm_operand: @asm_operand ref
+);
+
+#keyset[id]
+asm_operand_named_names(
+ int id: @asm_operand_named ref,
+ int name: @name ref
+);
+
+asm_options_lists(
+ unique int id: @asm_options_list
+);
+
+#keyset[id, index]
+asm_options_list_asm_options(
+ int id: @asm_options_list ref,
+ int index: int ref,
+ int asm_option: @asm_option ref
+);
+
+asm_reg_operands(
+ unique int id: @asm_reg_operand
+);
+
+#keyset[id]
+asm_reg_operand_asm_dir_specs(
+ int id: @asm_reg_operand ref,
+ int asm_dir_spec: @asm_dir_spec ref
+);
+
+#keyset[id]
+asm_reg_operand_asm_operand_exprs(
+ int id: @asm_reg_operand ref,
+ int asm_operand_expr: @asm_operand_expr ref
+);
+
+#keyset[id]
+asm_reg_operand_asm_reg_specs(
+ int id: @asm_reg_operand ref,
+ int asm_reg_spec: @asm_reg_spec ref
+);
+
+asm_syms(
+ unique int id: @asm_sym
+);
+
+#keyset[id]
+asm_sym_paths(
+ int id: @asm_sym ref,
+ int path: @path ref
+);
+
+assoc_type_args(
+ unique int id: @assoc_type_arg
+);
+
+#keyset[id]
+assoc_type_arg_const_args(
+ int id: @assoc_type_arg ref,
+ int const_arg: @const_arg ref
+);
+
+#keyset[id]
+assoc_type_arg_generic_arg_lists(
+ int id: @assoc_type_arg ref,
+ int generic_arg_list: @generic_arg_list ref
+);
+
+#keyset[id]
+assoc_type_arg_identifiers(
+ int id: @assoc_type_arg ref,
+ int identifier: @name_ref ref
+);
+
+#keyset[id]
+assoc_type_arg_param_lists(
+ int id: @assoc_type_arg ref,
+ int param_list: @param_list ref
+);
+
+#keyset[id]
+assoc_type_arg_ret_types(
+ int id: @assoc_type_arg ref,
+ int ret_type: @ret_type_repr ref
+);
+
+#keyset[id]
+assoc_type_arg_return_type_syntaxes(
+ int id: @assoc_type_arg ref,
+ int return_type_syntax: @return_type_syntax ref
+);
+
+#keyset[id]
+assoc_type_arg_type_reprs(
+ int id: @assoc_type_arg ref,
+ int type_repr: @type_repr ref
+);
+
+#keyset[id]
+assoc_type_arg_type_bound_lists(
+ int id: @assoc_type_arg ref,
+ int type_bound_list: @type_bound_list ref
+);
+
+await_exprs(
+ unique int id: @await_expr
+);
+
+#keyset[id, index]
+await_expr_attrs(
+ int id: @await_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+await_expr_exprs(
+ int id: @await_expr ref,
+ int expr: @expr ref
+);
+
+become_exprs(
+ unique int id: @become_expr
+);
+
+#keyset[id, index]
+become_expr_attrs(
+ int id: @become_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+become_expr_exprs(
+ int id: @become_expr ref,
+ int expr: @expr ref
+);
+
+binary_exprs(
+ unique int id: @binary_expr
+);
+
+#keyset[id, index]
+binary_expr_attrs(
+ int id: @binary_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+binary_expr_lhs(
+ int id: @binary_expr ref,
+ int lhs: @expr ref
+);
+
+#keyset[id]
+binary_expr_operator_names(
+ int id: @binary_expr ref,
+ string operator_name: string ref
+);
+
+#keyset[id]
+binary_expr_rhs(
+ int id: @binary_expr ref,
+ int rhs: @expr ref
+);
+
+box_pats(
+ unique int id: @box_pat
+);
+
+#keyset[id]
+box_pat_pats(
+ int id: @box_pat ref,
+ int pat: @pat ref
+);
+
+break_exprs(
+ unique int id: @break_expr
+);
+
+#keyset[id, index]
+break_expr_attrs(
+ int id: @break_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+break_expr_exprs(
+ int id: @break_expr ref,
+ int expr: @expr ref
+);
+
+#keyset[id]
+break_expr_lifetimes(
+ int id: @break_expr ref,
+ int lifetime: @lifetime ref
+);
+
+@call_expr_base =
+ @call_expr
+| @method_call_expr
+;
+
+#keyset[id]
+call_expr_base_arg_lists(
+ int id: @call_expr_base ref,
+ int arg_list: @arg_list ref
+);
+
+#keyset[id, index]
+call_expr_base_attrs(
+ int id: @call_expr_base ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+cast_exprs(
+ unique int id: @cast_expr
+);
+
+#keyset[id, index]
+cast_expr_attrs(
+ int id: @cast_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+cast_expr_exprs(
+ int id: @cast_expr ref,
+ int expr: @expr ref
+);
+
+#keyset[id]
+cast_expr_type_reprs(
+ int id: @cast_expr ref,
+ int type_repr: @type_repr ref
+);
+
+closure_exprs(
+ unique int id: @closure_expr
+);
+
+#keyset[id]
+closure_expr_bodies(
+ int id: @closure_expr ref,
+ int body: @expr ref
+);
+
+#keyset[id]
+closure_expr_closure_binders(
+ int id: @closure_expr ref,
+ int closure_binder: @closure_binder ref
+);
+
+#keyset[id]
+closure_expr_is_async(
+ int id: @closure_expr ref
+);
+
+#keyset[id]
+closure_expr_is_const(
+ int id: @closure_expr ref
+);
+
+#keyset[id]
+closure_expr_is_gen(
+ int id: @closure_expr ref
+);
+
+#keyset[id]
+closure_expr_is_move(
+ int id: @closure_expr ref
+);
+
+#keyset[id]
+closure_expr_is_static(
+ int id: @closure_expr ref
+);
+
+#keyset[id]
+closure_expr_ret_types(
+ int id: @closure_expr ref,
+ int ret_type: @ret_type_repr ref
+);
+
+comments(
+ unique int id: @comment,
+ int parent: @ast_node ref,
+ string text: string ref
+);
+
+const_args(
+ unique int id: @const_arg
+);
+
+#keyset[id]
+const_arg_exprs(
+ int id: @const_arg ref,
+ int expr: @expr ref
+);
+
+const_block_pats(
+ unique int id: @const_block_pat
+);
+
+#keyset[id]
+const_block_pat_block_exprs(
+ int id: @const_block_pat ref,
+ int block_expr: @block_expr ref
+);
+
+#keyset[id]
+const_block_pat_is_const(
+ int id: @const_block_pat ref
+);
+
+const_params(
+ unique int id: @const_param
+);
+
+#keyset[id, index]
+const_param_attrs(
+ int id: @const_param ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+const_param_default_vals(
+ int id: @const_param ref,
+ int default_val: @const_arg ref
+);
+
+#keyset[id]
+const_param_is_const(
+ int id: @const_param ref
+);
+
+#keyset[id]
+const_param_names(
+ int id: @const_param ref,
+ int name: @name ref
+);
+
+#keyset[id]
+const_param_type_reprs(
+ int id: @const_param ref,
+ int type_repr: @type_repr ref
+);
+
+continue_exprs(
+ unique int id: @continue_expr
+);
+
+#keyset[id, index]
+continue_expr_attrs(
+ int id: @continue_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+continue_expr_lifetimes(
+ int id: @continue_expr ref,
+ int lifetime: @lifetime ref
+);
+
+dyn_trait_type_reprs(
+ unique int id: @dyn_trait_type_repr
+);
+
+#keyset[id]
+dyn_trait_type_repr_type_bound_lists(
+ int id: @dyn_trait_type_repr ref,
+ int type_bound_list: @type_bound_list ref
+);
+
+expr_stmts(
+ unique int id: @expr_stmt
+);
+
+#keyset[id]
+expr_stmt_exprs(
+ int id: @expr_stmt ref,
+ int expr: @expr ref
+);
+
+field_exprs(
+ unique int id: @field_expr
+);
+
+#keyset[id, index]
+field_expr_attrs(
+ int id: @field_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+field_expr_containers(
+ int id: @field_expr ref,
+ int container: @expr ref
+);
+
+#keyset[id]
+field_expr_identifiers(
+ int id: @field_expr ref,
+ int identifier: @name_ref ref
+);
+
+fn_ptr_type_reprs(
+ unique int id: @fn_ptr_type_repr
+);
+
+#keyset[id]
+fn_ptr_type_repr_abis(
+ int id: @fn_ptr_type_repr ref,
+ int abi: @abi ref
+);
+
+#keyset[id]
+fn_ptr_type_repr_is_async(
+ int id: @fn_ptr_type_repr ref
+);
+
+#keyset[id]
+fn_ptr_type_repr_is_const(
+ int id: @fn_ptr_type_repr ref
+);
+
+#keyset[id]
+fn_ptr_type_repr_is_unsafe(
+ int id: @fn_ptr_type_repr ref
+);
+
+#keyset[id]
+fn_ptr_type_repr_param_lists(
+ int id: @fn_ptr_type_repr ref,
+ int param_list: @param_list ref
+);
+
+#keyset[id]
+fn_ptr_type_repr_ret_types(
+ int id: @fn_ptr_type_repr ref,
+ int ret_type: @ret_type_repr ref
+);
+
+for_type_reprs(
+ unique int id: @for_type_repr
+);
+
+#keyset[id]
+for_type_repr_generic_param_lists(
+ int id: @for_type_repr ref,
+ int generic_param_list: @generic_param_list ref
+);
+
+#keyset[id]
+for_type_repr_type_reprs(
+ int id: @for_type_repr ref,
+ int type_repr: @type_repr ref
+);
+
+format_args_exprs(
+ unique int id: @format_args_expr
+);
+
+#keyset[id, index]
+format_args_expr_args(
+ int id: @format_args_expr ref,
+ int index: int ref,
+ int arg: @format_args_arg ref
+);
+
+#keyset[id, index]
+format_args_expr_attrs(
+ int id: @format_args_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+format_args_expr_templates(
+ int id: @format_args_expr ref,
+ int template: @expr ref
+);
+
+ident_pats(
+ unique int id: @ident_pat
+);
+
+#keyset[id, index]
+ident_pat_attrs(
+ int id: @ident_pat ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+ident_pat_is_mut(
+ int id: @ident_pat ref
+);
+
+#keyset[id]
+ident_pat_is_ref(
+ int id: @ident_pat ref
+);
+
+#keyset[id]
+ident_pat_names(
+ int id: @ident_pat ref,
+ int name: @name ref
+);
+
+#keyset[id]
+ident_pat_pats(
+ int id: @ident_pat ref,
+ int pat: @pat ref
+);
+
+if_exprs(
+ unique int id: @if_expr
+);
+
+#keyset[id, index]
+if_expr_attrs(
+ int id: @if_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+if_expr_conditions(
+ int id: @if_expr ref,
+ int condition: @expr ref
+);
+
+#keyset[id]
+if_expr_elses(
+ int id: @if_expr ref,
+ int else: @expr ref
+);
+
+#keyset[id]
+if_expr_thens(
+ int id: @if_expr ref,
+ int then: @block_expr ref
+);
+
+impl_trait_type_reprs(
+ unique int id: @impl_trait_type_repr
+);
+
+#keyset[id]
+impl_trait_type_repr_type_bound_lists(
+ int id: @impl_trait_type_repr ref,
+ int type_bound_list: @type_bound_list ref
+);
+
+index_exprs(
+ unique int id: @index_expr
+);
+
+#keyset[id, index]
+index_expr_attrs(
+ int id: @index_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+index_expr_bases(
+ int id: @index_expr ref,
+ int base: @expr ref
+);
+
+#keyset[id]
+index_expr_indices(
+ int id: @index_expr ref,
+ int index: @expr ref
+);
+
+infer_type_reprs(
+ unique int id: @infer_type_repr
+);
+
+@item =
+ @const
+| @enum
+| @extern_block
+| @extern_crate
+| @function
+| @impl
+| @macro_call
+| @macro_def
+| @macro_rules
+| @module
+| @static
+| @struct
+| @trait
+| @trait_alias
+| @type_alias
+| @union
+| @use
+;
+
+#keyset[id]
+item_attribute_macro_expansions(
+ int id: @item ref,
+ int attribute_macro_expansion: @macro_items ref
+);
+
+@labelable_expr =
+ @block_expr
+| @looping_expr
+;
+
+#keyset[id]
+labelable_expr_labels(
+ int id: @labelable_expr ref,
+ int label: @label ref
+);
+
+let_exprs(
+ unique int id: @let_expr
+);
+
+#keyset[id, index]
+let_expr_attrs(
+ int id: @let_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+let_expr_scrutinees(
+ int id: @let_expr ref,
+ int scrutinee: @expr ref
+);
+
+#keyset[id]
+let_expr_pats(
+ int id: @let_expr ref,
+ int pat: @pat ref
+);
+
+let_stmts(
+ unique int id: @let_stmt
+);
+
+#keyset[id, index]
+let_stmt_attrs(
+ int id: @let_stmt ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+let_stmt_initializers(
+ int id: @let_stmt ref,
+ int initializer: @expr ref
+);
+
+#keyset[id]
+let_stmt_let_elses(
+ int id: @let_stmt ref,
+ int let_else: @let_else ref
+);
+
+#keyset[id]
+let_stmt_pats(
+ int id: @let_stmt ref,
+ int pat: @pat ref
+);
+
+#keyset[id]
+let_stmt_type_reprs(
+ int id: @let_stmt ref,
+ int type_repr: @type_repr ref
+);
+
+lifetimes(
+ unique int id: @lifetime
+);
+
+#keyset[id]
+lifetime_texts(
+ int id: @lifetime ref,
+ string text: string ref
+);
+
+lifetime_args(
+ unique int id: @lifetime_arg
+);
+
+#keyset[id]
+lifetime_arg_lifetimes(
+ int id: @lifetime_arg ref,
+ int lifetime: @lifetime ref
+);
+
+lifetime_params(
+ unique int id: @lifetime_param
+);
+
+#keyset[id, index]
+lifetime_param_attrs(
+ int id: @lifetime_param ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+lifetime_param_lifetimes(
+ int id: @lifetime_param ref,
+ int lifetime: @lifetime ref
+);
+
+#keyset[id]
+lifetime_param_type_bound_lists(
+ int id: @lifetime_param ref,
+ int type_bound_list: @type_bound_list ref
+);
+
+literal_exprs(
+ unique int id: @literal_expr
+);
+
+#keyset[id, index]
+literal_expr_attrs(
+ int id: @literal_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+literal_expr_text_values(
+ int id: @literal_expr ref,
+ string text_value: string ref
+);
+
+literal_pats(
+ unique int id: @literal_pat
+);
+
+#keyset[id]
+literal_pat_literals(
+ int id: @literal_pat ref,
+ int literal: @literal_expr ref
+);
+
+macro_block_exprs(
+ unique int id: @macro_block_expr
+);
+
+#keyset[id]
+macro_block_expr_tail_exprs(
+ int id: @macro_block_expr ref,
+ int tail_expr: @expr ref
+);
+
+#keyset[id, index]
+macro_block_expr_statements(
+ int id: @macro_block_expr ref,
+ int index: int ref,
+ int statement: @stmt ref
+);
+
+macro_exprs(
+ unique int id: @macro_expr
+);
+
+#keyset[id]
+macro_expr_macro_calls(
+ int id: @macro_expr ref,
+ int macro_call: @macro_call ref
+);
+
+macro_pats(
+ unique int id: @macro_pat
+);
+
+#keyset[id]
+macro_pat_macro_calls(
+ int id: @macro_pat ref,
+ int macro_call: @macro_call ref
+);
+
+macro_type_reprs(
+ unique int id: @macro_type_repr
+);
+
+#keyset[id]
+macro_type_repr_macro_calls(
+ int id: @macro_type_repr ref,
+ int macro_call: @macro_call ref
+);
+
+match_exprs(
+ unique int id: @match_expr
+);
+
+#keyset[id, index]
+match_expr_attrs(
+ int id: @match_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+match_expr_scrutinees(
+ int id: @match_expr ref,
+ int scrutinee: @expr ref
+);
+
+#keyset[id]
+match_expr_match_arm_lists(
+ int id: @match_expr ref,
+ int match_arm_list: @match_arm_list ref
+);
+
+name_refs(
+ unique int id: @name_ref
+);
+
+#keyset[id]
+name_ref_texts(
+ int id: @name_ref ref,
+ string text: string ref
+);
+
+never_type_reprs(
+ unique int id: @never_type_repr
+);
+
+offset_of_exprs(
+ unique int id: @offset_of_expr
+);
+
+#keyset[id, index]
+offset_of_expr_attrs(
+ int id: @offset_of_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id, index]
+offset_of_expr_fields(
+ int id: @offset_of_expr ref,
+ int index: int ref,
+ int field: @name_ref ref
+);
+
+#keyset[id]
+offset_of_expr_type_reprs(
+ int id: @offset_of_expr ref,
+ int type_repr: @type_repr ref
+);
+
+or_pats(
+ unique int id: @or_pat
+);
+
+#keyset[id, index]
+or_pat_pats(
+ int id: @or_pat ref,
+ int index: int ref,
+ int pat: @pat ref
+);
+
+params(
+ unique int id: @param
+);
+
+#keyset[id]
+param_pats(
+ int id: @param ref,
+ int pat: @pat ref
+);
+
+paren_exprs(
+ unique int id: @paren_expr
+);
+
+#keyset[id, index]
+paren_expr_attrs(
+ int id: @paren_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+paren_expr_exprs(
+ int id: @paren_expr ref,
+ int expr: @expr ref
+);
+
+paren_pats(
+ unique int id: @paren_pat
+);
+
+#keyset[id]
+paren_pat_pats(
+ int id: @paren_pat ref,
+ int pat: @pat ref
+);
+
+paren_type_reprs(
+ unique int id: @paren_type_repr
+);
+
+#keyset[id]
+paren_type_repr_type_reprs(
+ int id: @paren_type_repr ref,
+ int type_repr: @type_repr ref
+);
+
+@path_ast_node =
+ @path_expr
+| @path_pat
+| @struct_expr
+| @struct_pat
+| @tuple_struct_pat
+;
+
+#keyset[id]
+path_ast_node_paths(
+ int id: @path_ast_node ref,
+ int path: @path ref
+);
+
+@path_expr_base =
+ @path_expr
+;
+
+path_type_reprs(
+ unique int id: @path_type_repr
+);
+
+#keyset[id]
+path_type_repr_paths(
+ int id: @path_type_repr ref,
+ int path: @path ref
+);
+
+prefix_exprs(
+ unique int id: @prefix_expr
+);
+
+#keyset[id, index]
+prefix_expr_attrs(
+ int id: @prefix_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+prefix_expr_exprs(
+ int id: @prefix_expr ref,
+ int expr: @expr ref
+);
+
+#keyset[id]
+prefix_expr_operator_names(
+ int id: @prefix_expr ref,
+ string operator_name: string ref
+);
+
+ptr_type_reprs(
+ unique int id: @ptr_type_repr
+);
+
+#keyset[id]
+ptr_type_repr_is_const(
+ int id: @ptr_type_repr ref
+);
+
+#keyset[id]
+ptr_type_repr_is_mut(
+ int id: @ptr_type_repr ref
+);
+
+#keyset[id]
+ptr_type_repr_type_reprs(
+ int id: @ptr_type_repr ref,
+ int type_repr: @type_repr ref
+);
+
+range_exprs(
+ unique int id: @range_expr
+);
+
+#keyset[id, index]
+range_expr_attrs(
+ int id: @range_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+range_expr_ends(
+ int id: @range_expr ref,
+ int end: @expr ref
+);
+
+#keyset[id]
+range_expr_operator_names(
+ int id: @range_expr ref,
+ string operator_name: string ref
+);
+
+#keyset[id]
+range_expr_starts(
+ int id: @range_expr ref,
+ int start: @expr ref
+);
+
+range_pats(
+ unique int id: @range_pat
+);
+
+#keyset[id]
+range_pat_ends(
+ int id: @range_pat ref,
+ int end: @pat ref
+);
+
+#keyset[id]
+range_pat_operator_names(
+ int id: @range_pat ref,
+ string operator_name: string ref
+);
+
+#keyset[id]
+range_pat_starts(
+ int id: @range_pat ref,
+ int start: @pat ref
+);
+
+ref_exprs(
+ unique int id: @ref_expr
+);
+
+#keyset[id, index]
+ref_expr_attrs(
+ int id: @ref_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+ref_expr_exprs(
+ int id: @ref_expr ref,
+ int expr: @expr ref
+);
+
+#keyset[id]
+ref_expr_is_const(
+ int id: @ref_expr ref
+);
+
+#keyset[id]
+ref_expr_is_mut(
+ int id: @ref_expr ref
+);
+
+#keyset[id]
+ref_expr_is_raw(
+ int id: @ref_expr ref
+);
+
+ref_pats(
+ unique int id: @ref_pat
+);
+
+#keyset[id]
+ref_pat_is_mut(
+ int id: @ref_pat ref
+);
+
+#keyset[id]
+ref_pat_pats(
+ int id: @ref_pat ref,
+ int pat: @pat ref
+);
+
+ref_type_reprs(
+ unique int id: @ref_type_repr
+);
+
+#keyset[id]
+ref_type_repr_is_mut(
+ int id: @ref_type_repr ref
+);
+
+#keyset[id]
+ref_type_repr_lifetimes(
+ int id: @ref_type_repr ref,
+ int lifetime: @lifetime ref
+);
+
+#keyset[id]
+ref_type_repr_type_reprs(
+ int id: @ref_type_repr ref,
+ int type_repr: @type_repr ref
+);
+
+rest_pats(
+ unique int id: @rest_pat
+);
+
+#keyset[id, index]
+rest_pat_attrs(
+ int id: @rest_pat ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+return_exprs(
+ unique int id: @return_expr
+);
+
+#keyset[id, index]
+return_expr_attrs(
+ int id: @return_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+return_expr_exprs(
+ int id: @return_expr ref,
+ int expr: @expr ref
+);
+
+self_params(
+ unique int id: @self_param
+);
+
+#keyset[id]
+self_param_is_ref(
+ int id: @self_param ref
+);
+
+#keyset[id]
+self_param_is_mut(
+ int id: @self_param ref
+);
+
+#keyset[id]
+self_param_lifetimes(
+ int id: @self_param ref,
+ int lifetime: @lifetime ref
+);
+
+#keyset[id]
+self_param_names(
+ int id: @self_param ref,
+ int name: @name ref
+);
+
+slice_pats(
+ unique int id: @slice_pat
+);
+
+#keyset[id, index]
+slice_pat_pats(
+ int id: @slice_pat ref,
+ int index: int ref,
+ int pat: @pat ref
+);
+
+slice_type_reprs(
+ unique int id: @slice_type_repr
+);
+
+#keyset[id]
+slice_type_repr_type_reprs(
+ int id: @slice_type_repr ref,
+ int type_repr: @type_repr ref
+);
+
+struct_field_lists(
+ unique int id: @struct_field_list
+);
+
+#keyset[id, index]
+struct_field_list_fields(
+ int id: @struct_field_list ref,
+ int index: int ref,
+ int field: @struct_field ref
+);
+
+try_exprs(
+ unique int id: @try_expr
+);
+
+#keyset[id, index]
+try_expr_attrs(
+ int id: @try_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+try_expr_exprs(
+ int id: @try_expr ref,
+ int expr: @expr ref
+);
+
+tuple_exprs(
+ unique int id: @tuple_expr
+);
+
+#keyset[id, index]
+tuple_expr_attrs(
+ int id: @tuple_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id, index]
+tuple_expr_fields(
+ int id: @tuple_expr ref,
+ int index: int ref,
+ int field: @expr ref
+);
+
+tuple_field_lists(
+ unique int id: @tuple_field_list
+);
+
+#keyset[id, index]
+tuple_field_list_fields(
+ int id: @tuple_field_list ref,
+ int index: int ref,
+ int field: @tuple_field ref
+);
+
+tuple_pats(
+ unique int id: @tuple_pat
+);
+
+#keyset[id, index]
+tuple_pat_fields(
+ int id: @tuple_pat ref,
+ int index: int ref,
+ int field: @pat ref
+);
+
+tuple_type_reprs(
+ unique int id: @tuple_type_repr
+);
+
+#keyset[id, index]
+tuple_type_repr_fields(
+ int id: @tuple_type_repr ref,
+ int index: int ref,
+ int field: @type_repr ref
+);
+
+type_args(
+ unique int id: @type_arg
+);
+
+#keyset[id]
+type_arg_type_reprs(
+ int id: @type_arg ref,
+ int type_repr: @type_repr ref
+);
+
+type_params(
+ unique int id: @type_param
+);
+
+#keyset[id, index]
+type_param_attrs(
+ int id: @type_param ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+type_param_default_types(
+ int id: @type_param ref,
+ int default_type: @type_repr ref
+);
+
+#keyset[id]
+type_param_names(
+ int id: @type_param ref,
+ int name: @name ref
+);
+
+#keyset[id]
+type_param_type_bound_lists(
+ int id: @type_param ref,
+ int type_bound_list: @type_bound_list ref
+);
+
+underscore_exprs(
+ unique int id: @underscore_expr
+);
+
+#keyset[id, index]
+underscore_expr_attrs(
+ int id: @underscore_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+variants(
+ unique int id: @variant
+);
+
+#keyset[id, index]
+variant_attrs(
+ int id: @variant ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+variant_discriminants(
+ int id: @variant ref,
+ int discriminant: @expr ref
+);
+
+#keyset[id]
+variant_field_lists(
+ int id: @variant ref,
+ int field_list: @field_list ref
+);
+
+#keyset[id]
+variant_names(
+ int id: @variant ref,
+ int name: @name ref
+);
+
+#keyset[id]
+variant_visibilities(
+ int id: @variant ref,
+ int visibility: @visibility ref
+);
+
+wildcard_pats(
+ unique int id: @wildcard_pat
+);
+
+yeet_exprs(
+ unique int id: @yeet_expr
+);
+
+#keyset[id, index]
+yeet_expr_attrs(
+ int id: @yeet_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+yeet_expr_exprs(
+ int id: @yeet_expr ref,
+ int expr: @expr ref
+);
+
+yield_exprs(
+ unique int id: @yield_expr
+);
+
+#keyset[id, index]
+yield_expr_attrs(
+ int id: @yield_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+yield_expr_exprs(
+ int id: @yield_expr ref,
+ int expr: @expr ref
+);
+
+block_exprs(
+ unique int id: @block_expr
+);
+
+#keyset[id, index]
+block_expr_attrs(
+ int id: @block_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+block_expr_is_async(
+ int id: @block_expr ref
+);
+
+#keyset[id]
+block_expr_is_const(
+ int id: @block_expr ref
+);
+
+#keyset[id]
+block_expr_is_gen(
+ int id: @block_expr ref
+);
+
+#keyset[id]
+block_expr_is_move(
+ int id: @block_expr ref
+);
+
+#keyset[id]
+block_expr_is_try(
+ int id: @block_expr ref
+);
+
+#keyset[id]
+block_expr_is_unsafe(
+ int id: @block_expr ref
+);
+
+#keyset[id]
+block_expr_stmt_lists(
+ int id: @block_expr ref,
+ int stmt_list: @stmt_list ref
+);
+
+call_exprs(
+ unique int id: @call_expr
+);
+
+#keyset[id]
+call_expr_functions(
+ int id: @call_expr ref,
+ int function: @expr ref
+);
+
+consts(
+ unique int id: @const
+);
+
+#keyset[id, index]
+const_attrs(
+ int id: @const ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+const_bodies(
+ int id: @const ref,
+ int body: @expr ref
+);
+
+#keyset[id]
+const_is_const(
+ int id: @const ref
+);
+
+#keyset[id]
+const_is_default(
+ int id: @const ref
+);
+
+#keyset[id]
+const_names(
+ int id: @const ref,
+ int name: @name ref
+);
+
+#keyset[id]
+const_type_reprs(
+ int id: @const ref,
+ int type_repr: @type_repr ref
+);
+
+#keyset[id]
+const_visibilities(
+ int id: @const ref,
+ int visibility: @visibility ref
+);
+
+#keyset[id]
+const_has_implementation(
+ int id: @const ref
+);
+
+enums(
+ unique int id: @enum
+);
+
+#keyset[id, index]
+enum_attrs(
+ int id: @enum ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+enum_generic_param_lists(
+ int id: @enum ref,
+ int generic_param_list: @generic_param_list ref
+);
+
+#keyset[id]
+enum_names(
+ int id: @enum ref,
+ int name: @name ref
+);
+
+#keyset[id]
+enum_variant_lists(
+ int id: @enum ref,
+ int variant_list: @variant_list ref
+);
+
+#keyset[id]
+enum_visibilities(
+ int id: @enum ref,
+ int visibility: @visibility ref
+);
+
+#keyset[id]
+enum_where_clauses(
+ int id: @enum ref,
+ int where_clause: @where_clause ref
+);
+
+extern_blocks(
+ unique int id: @extern_block
+);
+
+#keyset[id]
+extern_block_abis(
+ int id: @extern_block ref,
+ int abi: @abi ref
+);
+
+#keyset[id, index]
+extern_block_attrs(
+ int id: @extern_block ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+extern_block_extern_item_lists(
+ int id: @extern_block ref,
+ int extern_item_list: @extern_item_list ref
+);
+
+#keyset[id]
+extern_block_is_unsafe(
+ int id: @extern_block ref
+);
+
+extern_crates(
+ unique int id: @extern_crate
+);
+
+#keyset[id, index]
+extern_crate_attrs(
+ int id: @extern_crate ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+extern_crate_identifiers(
+ int id: @extern_crate ref,
+ int identifier: @name_ref ref
+);
+
+#keyset[id]
+extern_crate_renames(
+ int id: @extern_crate ref,
+ int rename: @rename ref
+);
+
+#keyset[id]
+extern_crate_visibilities(
+ int id: @extern_crate ref,
+ int visibility: @visibility ref
+);
+
+functions(
+ unique int id: @function
+);
+
+#keyset[id]
+function_abis(
+ int id: @function ref,
+ int abi: @abi ref
+);
+
+#keyset[id]
+function_bodies(
+ int id: @function ref,
+ int body: @block_expr ref
+);
+
+#keyset[id]
+function_generic_param_lists(
+ int id: @function ref,
+ int generic_param_list: @generic_param_list ref
+);
+
+#keyset[id]
+function_is_async(
+ int id: @function ref
+);
+
+#keyset[id]
+function_is_const(
+ int id: @function ref
+);
+
+#keyset[id]
+function_is_default(
+ int id: @function ref
+);
+
+#keyset[id]
+function_is_gen(
+ int id: @function ref
+);
+
+#keyset[id]
+function_is_unsafe(
+ int id: @function ref
+);
+
+#keyset[id]
+function_names(
+ int id: @function ref,
+ int name: @name ref
+);
+
+#keyset[id]
+function_ret_types(
+ int id: @function ref,
+ int ret_type: @ret_type_repr ref
+);
+
+#keyset[id]
+function_visibilities(
+ int id: @function ref,
+ int visibility: @visibility ref
+);
+
+#keyset[id]
+function_where_clauses(
+ int id: @function ref,
+ int where_clause: @where_clause ref
+);
+
+#keyset[id]
+function_has_implementation(
+ int id: @function ref
+);
+
+impls(
+ unique int id: @impl
+);
+
+#keyset[id]
+impl_assoc_item_lists(
+ int id: @impl ref,
+ int assoc_item_list: @assoc_item_list ref
+);
+
+#keyset[id, index]
+impl_attrs(
+ int id: @impl ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+impl_generic_param_lists(
+ int id: @impl ref,
+ int generic_param_list: @generic_param_list ref
+);
+
+#keyset[id]
+impl_is_const(
+ int id: @impl ref
+);
+
+#keyset[id]
+impl_is_default(
+ int id: @impl ref
+);
+
+#keyset[id]
+impl_is_unsafe(
+ int id: @impl ref
+);
+
+#keyset[id]
+impl_self_ties(
+ int id: @impl ref,
+ int self_ty: @type_repr ref
+);
+
+#keyset[id]
+impl_traits(
+ int id: @impl ref,
+ int trait: @type_repr ref
+);
+
+#keyset[id]
+impl_visibilities(
+ int id: @impl ref,
+ int visibility: @visibility ref
+);
+
+#keyset[id]
+impl_where_clauses(
+ int id: @impl ref,
+ int where_clause: @where_clause ref
+);
+
+@looping_expr =
+ @for_expr
+| @loop_expr
+| @while_expr
+;
+
+#keyset[id]
+looping_expr_loop_bodies(
+ int id: @looping_expr ref,
+ int loop_body: @block_expr ref
+);
+
+macro_calls(
+ unique int id: @macro_call
+);
+
+#keyset[id, index]
+macro_call_attrs(
+ int id: @macro_call ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+macro_call_paths(
+ int id: @macro_call ref,
+ int path: @path ref
+);
+
+#keyset[id]
+macro_call_token_trees(
+ int id: @macro_call ref,
+ int token_tree: @token_tree ref
+);
+
+#keyset[id]
+macro_call_macro_call_expansions(
+ int id: @macro_call ref,
+ int macro_call_expansion: @ast_node ref
+);
+
+macro_defs(
+ unique int id: @macro_def
+);
+
+#keyset[id]
+macro_def_args(
+ int id: @macro_def ref,
+ int args: @token_tree ref
+);
+
+#keyset[id, index]
+macro_def_attrs(
+ int id: @macro_def ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+macro_def_bodies(
+ int id: @macro_def ref,
+ int body: @token_tree ref
+);
+
+#keyset[id]
+macro_def_names(
+ int id: @macro_def ref,
+ int name: @name ref
+);
+
+#keyset[id]
+macro_def_visibilities(
+ int id: @macro_def ref,
+ int visibility: @visibility ref
+);
+
+macro_rules(
+ unique int id: @macro_rules
+);
+
+#keyset[id, index]
+macro_rules_attrs(
+ int id: @macro_rules ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+macro_rules_names(
+ int id: @macro_rules ref,
+ int name: @name ref
+);
+
+#keyset[id]
+macro_rules_token_trees(
+ int id: @macro_rules ref,
+ int token_tree: @token_tree ref
+);
+
+#keyset[id]
+macro_rules_visibilities(
+ int id: @macro_rules ref,
+ int visibility: @visibility ref
+);
+
+method_call_exprs(
+ unique int id: @method_call_expr
+);
+
+#keyset[id]
+method_call_expr_generic_arg_lists(
+ int id: @method_call_expr ref,
+ int generic_arg_list: @generic_arg_list ref
+);
+
+#keyset[id]
+method_call_expr_identifiers(
+ int id: @method_call_expr ref,
+ int identifier: @name_ref ref
+);
+
+#keyset[id]
+method_call_expr_receivers(
+ int id: @method_call_expr ref,
+ int receiver: @expr ref
+);
+
+modules(
+ unique int id: @module
+);
+
+#keyset[id, index]
+module_attrs(
+ int id: @module ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+module_item_lists(
+ int id: @module ref,
+ int item_list: @item_list ref
+);
+
+#keyset[id]
+module_names(
+ int id: @module ref,
+ int name: @name ref
+);
+
+#keyset[id]
+module_visibilities(
+ int id: @module ref,
+ int visibility: @visibility ref
+);
+
+path_exprs(
+ unique int id: @path_expr
+);
+
+#keyset[id, index]
+path_expr_attrs(
+ int id: @path_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+path_pats(
+ unique int id: @path_pat
+);
+
+statics(
+ unique int id: @static
+);
+
+#keyset[id, index]
+static_attrs(
+ int id: @static ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+static_bodies(
+ int id: @static ref,
+ int body: @expr ref
+);
+
+#keyset[id]
+static_is_mut(
+ int id: @static ref
+);
+
+#keyset[id]
+static_is_static(
+ int id: @static ref
+);
+
+#keyset[id]
+static_is_unsafe(
+ int id: @static ref
+);
+
+#keyset[id]
+static_names(
+ int id: @static ref,
+ int name: @name ref
+);
+
+#keyset[id]
+static_type_reprs(
+ int id: @static ref,
+ int type_repr: @type_repr ref
+);
+
+#keyset[id]
+static_visibilities(
+ int id: @static ref,
+ int visibility: @visibility ref
+);
+
+structs(
+ unique int id: @struct
+);
+
+#keyset[id, index]
+struct_attrs(
+ int id: @struct ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+struct_field_lists_(
+ int id: @struct ref,
+ int field_list: @field_list ref
+);
+
+#keyset[id]
+struct_generic_param_lists(
+ int id: @struct ref,
+ int generic_param_list: @generic_param_list ref
+);
+
+#keyset[id]
+struct_names(
+ int id: @struct ref,
+ int name: @name ref
+);
+
+#keyset[id]
+struct_visibilities(
+ int id: @struct ref,
+ int visibility: @visibility ref
+);
+
+#keyset[id]
+struct_where_clauses(
+ int id: @struct ref,
+ int where_clause: @where_clause ref
+);
+
+struct_exprs(
+ unique int id: @struct_expr
+);
+
+#keyset[id]
+struct_expr_struct_expr_field_lists(
+ int id: @struct_expr ref,
+ int struct_expr_field_list: @struct_expr_field_list ref
+);
+
+struct_pats(
+ unique int id: @struct_pat
+);
+
+#keyset[id]
+struct_pat_struct_pat_field_lists(
+ int id: @struct_pat ref,
+ int struct_pat_field_list: @struct_pat_field_list ref
+);
+
+traits(
+ unique int id: @trait
+);
+
+#keyset[id]
+trait_assoc_item_lists(
+ int id: @trait ref,
+ int assoc_item_list: @assoc_item_list ref
+);
+
+#keyset[id, index]
+trait_attrs(
+ int id: @trait ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+trait_generic_param_lists(
+ int id: @trait ref,
+ int generic_param_list: @generic_param_list ref
+);
+
+#keyset[id]
+trait_is_auto(
+ int id: @trait ref
+);
+
+#keyset[id]
+trait_is_unsafe(
+ int id: @trait ref
+);
+
+#keyset[id]
+trait_names(
+ int id: @trait ref,
+ int name: @name ref
+);
+
+#keyset[id]
+trait_type_bound_lists(
+ int id: @trait ref,
+ int type_bound_list: @type_bound_list ref
+);
+
+#keyset[id]
+trait_visibilities(
+ int id: @trait ref,
+ int visibility: @visibility ref
+);
+
+#keyset[id]
+trait_where_clauses(
+ int id: @trait ref,
+ int where_clause: @where_clause ref
+);
+
+trait_aliases(
+ unique int id: @trait_alias
+);
+
+#keyset[id, index]
+trait_alias_attrs(
+ int id: @trait_alias ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+trait_alias_generic_param_lists(
+ int id: @trait_alias ref,
+ int generic_param_list: @generic_param_list ref
+);
+
+#keyset[id]
+trait_alias_names(
+ int id: @trait_alias ref,
+ int name: @name ref
+);
+
+#keyset[id]
+trait_alias_type_bound_lists(
+ int id: @trait_alias ref,
+ int type_bound_list: @type_bound_list ref
+);
+
+#keyset[id]
+trait_alias_visibilities(
+ int id: @trait_alias ref,
+ int visibility: @visibility ref
+);
+
+#keyset[id]
+trait_alias_where_clauses(
+ int id: @trait_alias ref,
+ int where_clause: @where_clause ref
+);
+
+tuple_struct_pats(
+ unique int id: @tuple_struct_pat
+);
+
+#keyset[id, index]
+tuple_struct_pat_fields(
+ int id: @tuple_struct_pat ref,
+ int index: int ref,
+ int field: @pat ref
+);
+
+type_aliases(
+ unique int id: @type_alias
+);
+
+#keyset[id, index]
+type_alias_attrs(
+ int id: @type_alias ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+type_alias_generic_param_lists(
+ int id: @type_alias ref,
+ int generic_param_list: @generic_param_list ref
+);
+
+#keyset[id]
+type_alias_is_default(
+ int id: @type_alias ref
+);
+
+#keyset[id]
+type_alias_names(
+ int id: @type_alias ref,
+ int name: @name ref
+);
+
+#keyset[id]
+type_alias_type_reprs(
+ int id: @type_alias ref,
+ int type_repr: @type_repr ref
+);
+
+#keyset[id]
+type_alias_type_bound_lists(
+ int id: @type_alias ref,
+ int type_bound_list: @type_bound_list ref
+);
+
+#keyset[id]
+type_alias_visibilities(
+ int id: @type_alias ref,
+ int visibility: @visibility ref
+);
+
+#keyset[id]
+type_alias_where_clauses(
+ int id: @type_alias ref,
+ int where_clause: @where_clause ref
+);
+
+unions(
+ unique int id: @union
+);
+
+#keyset[id, index]
+union_attrs(
+ int id: @union ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+union_generic_param_lists(
+ int id: @union ref,
+ int generic_param_list: @generic_param_list ref
+);
+
+#keyset[id]
+union_names(
+ int id: @union ref,
+ int name: @name ref
+);
+
+#keyset[id]
+union_struct_field_lists(
+ int id: @union ref,
+ int struct_field_list: @struct_field_list ref
+);
+
+#keyset[id]
+union_visibilities(
+ int id: @union ref,
+ int visibility: @visibility ref
+);
+
+#keyset[id]
+union_where_clauses(
+ int id: @union ref,
+ int where_clause: @where_clause ref
+);
+
+uses(
+ unique int id: @use
+);
+
+#keyset[id, index]
+use_attrs(
+ int id: @use ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+use_use_trees(
+ int id: @use ref,
+ int use_tree: @use_tree ref
+);
+
+#keyset[id]
+use_visibilities(
+ int id: @use ref,
+ int visibility: @visibility ref
+);
+
+for_exprs(
+ unique int id: @for_expr
+);
+
+#keyset[id, index]
+for_expr_attrs(
+ int id: @for_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+for_expr_iterables(
+ int id: @for_expr ref,
+ int iterable: @expr ref
+);
+
+#keyset[id]
+for_expr_pats(
+ int id: @for_expr ref,
+ int pat: @pat ref
+);
+
+loop_exprs(
+ unique int id: @loop_expr
+);
+
+#keyset[id, index]
+loop_expr_attrs(
+ int id: @loop_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+while_exprs(
+ unique int id: @while_expr
+);
+
+#keyset[id, index]
+while_expr_attrs(
+ int id: @while_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+while_expr_conditions(
+ int id: @while_expr ref,
+ int condition: @expr ref
+);
diff --git a/rust/downgrades/aa9a0bda17c76b804ad9e108d43da15f6beaf2a7/rust.dbscheme b/rust/downgrades/aa9a0bda17c76b804ad9e108d43da15f6beaf2a7/rust.dbscheme
new file mode 100644
index 000000000000..a1005655e9ef
--- /dev/null
+++ b/rust/downgrades/aa9a0bda17c76b804ad9e108d43da15f6beaf2a7/rust.dbscheme
@@ -0,0 +1,3606 @@
+// generated by codegen, do not edit
+
+// from ../shared/tree-sitter-extractor/src/generator/prefix.dbscheme
+/*- Files and folders -*/
+
+/**
+ * The location of an element.
+ * 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(
+ unique int id: @location_default,
+ int file: @file ref,
+ int beginLine: int ref,
+ int beginColumn: int ref,
+ int endLine: int ref,
+ int endColumn: int ref
+);
+
+files(
+ unique int id: @file,
+ string name: string ref
+);
+
+folders(
+ unique int id: @folder,
+ string name: string ref
+);
+
+@container = @file | @folder
+
+containerparent(
+ int parent: @container ref,
+ unique int child: @container ref
+);
+
+/*- Empty location -*/
+
+empty_location(
+ int location: @location_default ref
+);
+
+/*- Source location prefix -*/
+
+/**
+ * The source location of the snapshot.
+ */
+sourceLocationPrefix(string prefix : string ref);
+
+/*- Diagnostic messages -*/
+
+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
+);
+
+/*- Diagnostic messages: severity -*/
+
+case @diagnostic.severity of
+ 10 = @diagnostic_debug
+| 20 = @diagnostic_info
+| 30 = @diagnostic_warning
+| 40 = @diagnostic_error
+;
+
+/*- YAML -*/
+
+#keyset[parent, idx]
+yaml (unique int id: @yaml_node,
+ int kind: int ref,
+ int parent: @yaml_node_parent ref,
+ int idx: int ref,
+ string tag: string ref,
+ string tostring: string ref);
+
+case @yaml_node.kind of
+ 0 = @yaml_scalar_node
+| 1 = @yaml_mapping_node
+| 2 = @yaml_sequence_node
+| 3 = @yaml_alias_node
+;
+
+@yaml_collection_node = @yaml_mapping_node | @yaml_sequence_node;
+
+@yaml_node_parent = @yaml_collection_node | @file;
+
+yaml_anchors (unique int node: @yaml_node ref,
+ string anchor: string ref);
+
+yaml_aliases (unique int alias: @yaml_alias_node ref,
+ string target: string ref);
+
+yaml_scalars (unique int scalar: @yaml_scalar_node ref,
+ int style: int ref,
+ string value: string ref);
+
+yaml_errors (unique int id: @yaml_error,
+ string message: string ref);
+
+yaml_locations(unique int locatable: @yaml_locatable ref,
+ int location: @location_default ref);
+
+@yaml_locatable = @yaml_node | @yaml_error;
+
+
+// from prefix.dbscheme
+#keyset[id]
+locatable_locations(
+ int id: @locatable ref,
+ int location: @location_default ref
+);
+
+
+// from schema
+
+@element =
+ @extractor_step
+| @locatable
+| @named_crate
+| @unextracted
+;
+
+extractor_steps(
+ unique int id: @extractor_step,
+ string action: string ref,
+ int duration_ms: int ref
+);
+
+#keyset[id]
+extractor_step_files(
+ int id: @extractor_step ref,
+ int file: @file ref
+);
+
+@locatable =
+ @ast_node
+| @crate
+;
+
+named_crates(
+ unique int id: @named_crate,
+ string name: string ref,
+ int crate: @crate ref
+);
+
+@unextracted =
+ @missing
+| @unimplemented
+;
+
+@ast_node =
+ @abi
+| @addressable
+| @arg_list
+| @asm_dir_spec
+| @asm_operand
+| @asm_operand_expr
+| @asm_option
+| @asm_piece
+| @asm_reg_spec
+| @assoc_item
+| @assoc_item_list
+| @attr
+| @callable
+| @closure_binder
+| @expr
+| @extern_item
+| @extern_item_list
+| @field_list
+| @format_args_arg
+| @generic_arg
+| @generic_arg_list
+| @generic_param
+| @generic_param_list
+| @item_list
+| @label
+| @let_else
+| @macro_items
+| @match_arm
+| @match_arm_list
+| @match_guard
+| @meta
+| @name
+| @param_base
+| @param_list
+| @parenthesized_arg_list
+| @pat
+| @path
+| @path_segment
+| @rename
+| @resolvable
+| @ret_type_repr
+| @return_type_syntax
+| @source_file
+| @stmt
+| @stmt_list
+| @struct_expr_field
+| @struct_expr_field_list
+| @struct_field
+| @struct_pat_field
+| @struct_pat_field_list
+| @token
+| @token_tree
+| @tuple_field
+| @type_bound
+| @type_bound_list
+| @type_repr
+| @use_bound_generic_arg
+| @use_bound_generic_args
+| @use_tree
+| @use_tree_list
+| @variant_def
+| @variant_list
+| @visibility
+| @where_clause
+| @where_pred
+;
+
+crates(
+ unique int id: @crate
+);
+
+#keyset[id]
+crate_names(
+ int id: @crate ref,
+ string name: string ref
+);
+
+#keyset[id]
+crate_versions(
+ int id: @crate ref,
+ string version: string ref
+);
+
+#keyset[id, index]
+crate_cfg_options(
+ int id: @crate ref,
+ int index: int ref,
+ string cfg_option: string ref
+);
+
+#keyset[id, index]
+crate_named_dependencies(
+ int id: @crate ref,
+ int index: int ref,
+ int named_dependency: @named_crate ref
+);
+
+missings(
+ unique int id: @missing
+);
+
+unimplementeds(
+ unique int id: @unimplemented
+);
+
+abis(
+ unique int id: @abi
+);
+
+#keyset[id]
+abi_abi_strings(
+ int id: @abi ref,
+ string abi_string: string ref
+);
+
+@addressable =
+ @item
+| @variant
+;
+
+#keyset[id]
+addressable_extended_canonical_paths(
+ int id: @addressable ref,
+ string extended_canonical_path: string ref
+);
+
+#keyset[id]
+addressable_crate_origins(
+ int id: @addressable ref,
+ string crate_origin: string ref
+);
+
+arg_lists(
+ unique int id: @arg_list
+);
+
+#keyset[id, index]
+arg_list_args(
+ int id: @arg_list ref,
+ int index: int ref,
+ int arg: @expr ref
+);
+
+asm_dir_specs(
+ unique int id: @asm_dir_spec
+);
+
+@asm_operand =
+ @asm_const
+| @asm_label
+| @asm_reg_operand
+| @asm_sym
+;
+
+asm_operand_exprs(
+ unique int id: @asm_operand_expr
+);
+
+#keyset[id]
+asm_operand_expr_in_exprs(
+ int id: @asm_operand_expr ref,
+ int in_expr: @expr ref
+);
+
+#keyset[id]
+asm_operand_expr_out_exprs(
+ int id: @asm_operand_expr ref,
+ int out_expr: @expr ref
+);
+
+asm_options(
+ unique int id: @asm_option
+);
+
+#keyset[id]
+asm_option_is_raw(
+ int id: @asm_option ref
+);
+
+@asm_piece =
+ @asm_clobber_abi
+| @asm_operand_named
+| @asm_options_list
+;
+
+asm_reg_specs(
+ unique int id: @asm_reg_spec
+);
+
+#keyset[id]
+asm_reg_spec_identifiers(
+ int id: @asm_reg_spec ref,
+ int identifier: @name_ref ref
+);
+
+@assoc_item =
+ @const
+| @function
+| @macro_call
+| @type_alias
+;
+
+assoc_item_lists(
+ unique int id: @assoc_item_list
+);
+
+#keyset[id, index]
+assoc_item_list_assoc_items(
+ int id: @assoc_item_list ref,
+ int index: int ref,
+ int assoc_item: @assoc_item ref
+);
+
+#keyset[id, index]
+assoc_item_list_attrs(
+ int id: @assoc_item_list ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+attrs(
+ unique int id: @attr
+);
+
+#keyset[id]
+attr_meta(
+ int id: @attr ref,
+ int meta: @meta ref
+);
+
+@callable =
+ @closure_expr
+| @function
+;
+
+#keyset[id]
+callable_param_lists(
+ int id: @callable ref,
+ int param_list: @param_list ref
+);
+
+#keyset[id, index]
+callable_attrs(
+ int id: @callable ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+closure_binders(
+ unique int id: @closure_binder
+);
+
+#keyset[id]
+closure_binder_generic_param_lists(
+ int id: @closure_binder ref,
+ int generic_param_list: @generic_param_list ref
+);
+
+@expr =
+ @array_expr_internal
+| @asm_expr
+| @await_expr
+| @become_expr
+| @binary_expr
+| @break_expr
+| @call_expr_base
+| @cast_expr
+| @closure_expr
+| @continue_expr
+| @field_expr
+| @format_args_expr
+| @if_expr
+| @index_expr
+| @labelable_expr
+| @let_expr
+| @literal_expr
+| @macro_block_expr
+| @macro_expr
+| @match_expr
+| @offset_of_expr
+| @paren_expr
+| @path_expr_base
+| @prefix_expr
+| @range_expr
+| @ref_expr
+| @return_expr
+| @struct_expr
+| @try_expr
+| @tuple_expr
+| @underscore_expr
+| @yeet_expr
+| @yield_expr
+;
+
+@extern_item =
+ @function
+| @macro_call
+| @static
+| @type_alias
+;
+
+extern_item_lists(
+ unique int id: @extern_item_list
+);
+
+#keyset[id, index]
+extern_item_list_attrs(
+ int id: @extern_item_list ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id, index]
+extern_item_list_extern_items(
+ int id: @extern_item_list ref,
+ int index: int ref,
+ int extern_item: @extern_item ref
+);
+
+@field_list =
+ @struct_field_list
+| @tuple_field_list
+;
+
+format_args_args(
+ unique int id: @format_args_arg
+);
+
+#keyset[id]
+format_args_arg_exprs(
+ int id: @format_args_arg ref,
+ int expr: @expr ref
+);
+
+#keyset[id]
+format_args_arg_names(
+ int id: @format_args_arg ref,
+ int name: @name ref
+);
+
+@generic_arg =
+ @assoc_type_arg
+| @const_arg
+| @lifetime_arg
+| @type_arg
+;
+
+generic_arg_lists(
+ unique int id: @generic_arg_list
+);
+
+#keyset[id, index]
+generic_arg_list_generic_args(
+ int id: @generic_arg_list ref,
+ int index: int ref,
+ int generic_arg: @generic_arg ref
+);
+
+@generic_param =
+ @const_param
+| @lifetime_param
+| @type_param
+;
+
+generic_param_lists(
+ unique int id: @generic_param_list
+);
+
+#keyset[id, index]
+generic_param_list_generic_params(
+ int id: @generic_param_list ref,
+ int index: int ref,
+ int generic_param: @generic_param ref
+);
+
+item_lists(
+ unique int id: @item_list
+);
+
+#keyset[id, index]
+item_list_attrs(
+ int id: @item_list ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id, index]
+item_list_items(
+ int id: @item_list ref,
+ int index: int ref,
+ int item: @item ref
+);
+
+labels(
+ unique int id: @label
+);
+
+#keyset[id]
+label_lifetimes(
+ int id: @label ref,
+ int lifetime: @lifetime ref
+);
+
+let_elses(
+ unique int id: @let_else
+);
+
+#keyset[id]
+let_else_block_exprs(
+ int id: @let_else ref,
+ int block_expr: @block_expr ref
+);
+
+macro_items(
+ unique int id: @macro_items
+);
+
+#keyset[id, index]
+macro_items_items(
+ int id: @macro_items ref,
+ int index: int ref,
+ int item: @item ref
+);
+
+match_arms(
+ unique int id: @match_arm
+);
+
+#keyset[id, index]
+match_arm_attrs(
+ int id: @match_arm ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+match_arm_exprs(
+ int id: @match_arm ref,
+ int expr: @expr ref
+);
+
+#keyset[id]
+match_arm_guards(
+ int id: @match_arm ref,
+ int guard: @match_guard ref
+);
+
+#keyset[id]
+match_arm_pats(
+ int id: @match_arm ref,
+ int pat: @pat ref
+);
+
+match_arm_lists(
+ unique int id: @match_arm_list
+);
+
+#keyset[id, index]
+match_arm_list_arms(
+ int id: @match_arm_list ref,
+ int index: int ref,
+ int arm: @match_arm ref
+);
+
+#keyset[id, index]
+match_arm_list_attrs(
+ int id: @match_arm_list ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+match_guards(
+ unique int id: @match_guard
+);
+
+#keyset[id]
+match_guard_conditions(
+ int id: @match_guard ref,
+ int condition: @expr ref
+);
+
+meta(
+ unique int id: @meta
+);
+
+#keyset[id]
+meta_exprs(
+ int id: @meta ref,
+ int expr: @expr ref
+);
+
+#keyset[id]
+meta_is_unsafe(
+ int id: @meta ref
+);
+
+#keyset[id]
+meta_paths(
+ int id: @meta ref,
+ int path: @path ref
+);
+
+#keyset[id]
+meta_token_trees(
+ int id: @meta ref,
+ int token_tree: @token_tree ref
+);
+
+names(
+ unique int id: @name
+);
+
+#keyset[id]
+name_texts(
+ int id: @name ref,
+ string text: string ref
+);
+
+@param_base =
+ @param
+| @self_param
+;
+
+#keyset[id, index]
+param_base_attrs(
+ int id: @param_base ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+param_base_type_reprs(
+ int id: @param_base ref,
+ int type_repr: @type_repr ref
+);
+
+param_lists(
+ unique int id: @param_list
+);
+
+#keyset[id, index]
+param_list_params(
+ int id: @param_list ref,
+ int index: int ref,
+ int param: @param ref
+);
+
+#keyset[id]
+param_list_self_params(
+ int id: @param_list ref,
+ int self_param: @self_param ref
+);
+
+parenthesized_arg_lists(
+ unique int id: @parenthesized_arg_list
+);
+
+#keyset[id, index]
+parenthesized_arg_list_type_args(
+ int id: @parenthesized_arg_list ref,
+ int index: int ref,
+ int type_arg: @type_arg ref
+);
+
+@pat =
+ @box_pat
+| @const_block_pat
+| @ident_pat
+| @literal_pat
+| @macro_pat
+| @or_pat
+| @paren_pat
+| @path_pat
+| @range_pat
+| @ref_pat
+| @rest_pat
+| @slice_pat
+| @struct_pat
+| @tuple_pat
+| @tuple_struct_pat
+| @wildcard_pat
+;
+
+paths(
+ unique int id: @path
+);
+
+#keyset[id]
+path_qualifiers(
+ int id: @path ref,
+ int qualifier: @path ref
+);
+
+#keyset[id]
+path_segments_(
+ int id: @path ref,
+ int segment: @path_segment ref
+);
+
+path_segments(
+ unique int id: @path_segment
+);
+
+#keyset[id]
+path_segment_generic_arg_lists(
+ int id: @path_segment ref,
+ int generic_arg_list: @generic_arg_list ref
+);
+
+#keyset[id]
+path_segment_identifiers(
+ int id: @path_segment ref,
+ int identifier: @name_ref ref
+);
+
+#keyset[id]
+path_segment_parenthesized_arg_lists(
+ int id: @path_segment ref,
+ int parenthesized_arg_list: @parenthesized_arg_list ref
+);
+
+#keyset[id]
+path_segment_ret_types(
+ int id: @path_segment ref,
+ int ret_type: @ret_type_repr ref
+);
+
+#keyset[id]
+path_segment_return_type_syntaxes(
+ int id: @path_segment ref,
+ int return_type_syntax: @return_type_syntax ref
+);
+
+#keyset[id]
+path_segment_type_reprs(
+ int id: @path_segment ref,
+ int type_repr: @type_repr ref
+);
+
+#keyset[id]
+path_segment_trait_type_reprs(
+ int id: @path_segment ref,
+ int trait_type_repr: @path_type_repr ref
+);
+
+renames(
+ unique int id: @rename
+);
+
+#keyset[id]
+rename_names(
+ int id: @rename ref,
+ int name: @name ref
+);
+
+@resolvable =
+ @method_call_expr
+| @path_ast_node
+;
+
+#keyset[id]
+resolvable_resolved_paths(
+ int id: @resolvable ref,
+ string resolved_path: string ref
+);
+
+#keyset[id]
+resolvable_resolved_crate_origins(
+ int id: @resolvable ref,
+ string resolved_crate_origin: string ref
+);
+
+ret_type_reprs(
+ unique int id: @ret_type_repr
+);
+
+#keyset[id]
+ret_type_repr_type_reprs(
+ int id: @ret_type_repr ref,
+ int type_repr: @type_repr ref
+);
+
+return_type_syntaxes(
+ unique int id: @return_type_syntax
+);
+
+source_files(
+ unique int id: @source_file
+);
+
+#keyset[id, index]
+source_file_attrs(
+ int id: @source_file ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id, index]
+source_file_items(
+ int id: @source_file ref,
+ int index: int ref,
+ int item: @item ref
+);
+
+@stmt =
+ @expr_stmt
+| @item
+| @let_stmt
+;
+
+stmt_lists(
+ unique int id: @stmt_list
+);
+
+#keyset[id, index]
+stmt_list_attrs(
+ int id: @stmt_list ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id, index]
+stmt_list_statements(
+ int id: @stmt_list ref,
+ int index: int ref,
+ int statement: @stmt ref
+);
+
+#keyset[id]
+stmt_list_tail_exprs(
+ int id: @stmt_list ref,
+ int tail_expr: @expr ref
+);
+
+struct_expr_fields(
+ unique int id: @struct_expr_field
+);
+
+#keyset[id, index]
+struct_expr_field_attrs(
+ int id: @struct_expr_field ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+struct_expr_field_exprs(
+ int id: @struct_expr_field ref,
+ int expr: @expr ref
+);
+
+#keyset[id]
+struct_expr_field_identifiers(
+ int id: @struct_expr_field ref,
+ int identifier: @name_ref ref
+);
+
+struct_expr_field_lists(
+ unique int id: @struct_expr_field_list
+);
+
+#keyset[id, index]
+struct_expr_field_list_attrs(
+ int id: @struct_expr_field_list ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id, index]
+struct_expr_field_list_fields(
+ int id: @struct_expr_field_list ref,
+ int index: int ref,
+ int field: @struct_expr_field ref
+);
+
+#keyset[id]
+struct_expr_field_list_spreads(
+ int id: @struct_expr_field_list ref,
+ int spread: @expr ref
+);
+
+struct_fields(
+ unique int id: @struct_field
+);
+
+#keyset[id, index]
+struct_field_attrs(
+ int id: @struct_field ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+struct_field_defaults(
+ int id: @struct_field ref,
+ int default: @expr ref
+);
+
+#keyset[id]
+struct_field_is_unsafe(
+ int id: @struct_field ref
+);
+
+#keyset[id]
+struct_field_names(
+ int id: @struct_field ref,
+ int name: @name ref
+);
+
+#keyset[id]
+struct_field_type_reprs(
+ int id: @struct_field ref,
+ int type_repr: @type_repr ref
+);
+
+#keyset[id]
+struct_field_visibilities(
+ int id: @struct_field ref,
+ int visibility: @visibility ref
+);
+
+struct_pat_fields(
+ unique int id: @struct_pat_field
+);
+
+#keyset[id, index]
+struct_pat_field_attrs(
+ int id: @struct_pat_field ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+struct_pat_field_identifiers(
+ int id: @struct_pat_field ref,
+ int identifier: @name_ref ref
+);
+
+#keyset[id]
+struct_pat_field_pats(
+ int id: @struct_pat_field ref,
+ int pat: @pat ref
+);
+
+struct_pat_field_lists(
+ unique int id: @struct_pat_field_list
+);
+
+#keyset[id, index]
+struct_pat_field_list_fields(
+ int id: @struct_pat_field_list ref,
+ int index: int ref,
+ int field: @struct_pat_field ref
+);
+
+#keyset[id]
+struct_pat_field_list_rest_pats(
+ int id: @struct_pat_field_list ref,
+ int rest_pat: @rest_pat ref
+);
+
+@token =
+ @comment
+;
+
+token_trees(
+ unique int id: @token_tree
+);
+
+tuple_fields(
+ unique int id: @tuple_field
+);
+
+#keyset[id, index]
+tuple_field_attrs(
+ int id: @tuple_field ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+tuple_field_type_reprs(
+ int id: @tuple_field ref,
+ int type_repr: @type_repr ref
+);
+
+#keyset[id]
+tuple_field_visibilities(
+ int id: @tuple_field ref,
+ int visibility: @visibility ref
+);
+
+type_bounds(
+ unique int id: @type_bound
+);
+
+#keyset[id]
+type_bound_is_async(
+ int id: @type_bound ref
+);
+
+#keyset[id]
+type_bound_is_const(
+ int id: @type_bound ref
+);
+
+#keyset[id]
+type_bound_lifetimes(
+ int id: @type_bound ref,
+ int lifetime: @lifetime ref
+);
+
+#keyset[id]
+type_bound_type_reprs(
+ int id: @type_bound ref,
+ int type_repr: @type_repr ref
+);
+
+#keyset[id]
+type_bound_use_bound_generic_args(
+ int id: @type_bound ref,
+ int use_bound_generic_args: @use_bound_generic_args ref
+);
+
+type_bound_lists(
+ unique int id: @type_bound_list
+);
+
+#keyset[id, index]
+type_bound_list_bounds(
+ int id: @type_bound_list ref,
+ int index: int ref,
+ int bound: @type_bound ref
+);
+
+@type_repr =
+ @array_type_repr
+| @dyn_trait_type_repr
+| @fn_ptr_type_repr
+| @for_type_repr
+| @impl_trait_type_repr
+| @infer_type_repr
+| @macro_type_repr
+| @never_type_repr
+| @paren_type_repr
+| @path_type_repr
+| @ptr_type_repr
+| @ref_type_repr
+| @slice_type_repr
+| @tuple_type_repr
+;
+
+@use_bound_generic_arg =
+ @lifetime
+| @name_ref
+;
+
+use_bound_generic_args(
+ unique int id: @use_bound_generic_args
+);
+
+#keyset[id, index]
+use_bound_generic_args_use_bound_generic_args(
+ int id: @use_bound_generic_args ref,
+ int index: int ref,
+ int use_bound_generic_arg: @use_bound_generic_arg ref
+);
+
+use_trees(
+ unique int id: @use_tree
+);
+
+#keyset[id]
+use_tree_is_glob(
+ int id: @use_tree ref
+);
+
+#keyset[id]
+use_tree_paths(
+ int id: @use_tree ref,
+ int path: @path ref
+);
+
+#keyset[id]
+use_tree_renames(
+ int id: @use_tree ref,
+ int rename: @rename ref
+);
+
+#keyset[id]
+use_tree_use_tree_lists(
+ int id: @use_tree ref,
+ int use_tree_list: @use_tree_list ref
+);
+
+use_tree_lists(
+ unique int id: @use_tree_list
+);
+
+#keyset[id, index]
+use_tree_list_use_trees(
+ int id: @use_tree_list ref,
+ int index: int ref,
+ int use_tree: @use_tree ref
+);
+
+@variant_def =
+ @struct
+| @union
+| @variant
+;
+
+variant_lists(
+ unique int id: @variant_list
+);
+
+#keyset[id, index]
+variant_list_variants(
+ int id: @variant_list ref,
+ int index: int ref,
+ int variant: @variant ref
+);
+
+visibilities(
+ unique int id: @visibility
+);
+
+#keyset[id]
+visibility_paths(
+ int id: @visibility ref,
+ int path: @path ref
+);
+
+where_clauses(
+ unique int id: @where_clause
+);
+
+#keyset[id, index]
+where_clause_predicates(
+ int id: @where_clause ref,
+ int index: int ref,
+ int predicate: @where_pred ref
+);
+
+where_preds(
+ unique int id: @where_pred
+);
+
+#keyset[id]
+where_pred_generic_param_lists(
+ int id: @where_pred ref,
+ int generic_param_list: @generic_param_list ref
+);
+
+#keyset[id]
+where_pred_lifetimes(
+ int id: @where_pred ref,
+ int lifetime: @lifetime ref
+);
+
+#keyset[id]
+where_pred_type_reprs(
+ int id: @where_pred ref,
+ int type_repr: @type_repr ref
+);
+
+#keyset[id]
+where_pred_type_bound_lists(
+ int id: @where_pred ref,
+ int type_bound_list: @type_bound_list ref
+);
+
+array_expr_internals(
+ unique int id: @array_expr_internal
+);
+
+#keyset[id, index]
+array_expr_internal_attrs(
+ int id: @array_expr_internal ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id, index]
+array_expr_internal_exprs(
+ int id: @array_expr_internal ref,
+ int index: int ref,
+ int expr: @expr ref
+);
+
+#keyset[id]
+array_expr_internal_is_semicolon(
+ int id: @array_expr_internal ref
+);
+
+array_type_reprs(
+ unique int id: @array_type_repr
+);
+
+#keyset[id]
+array_type_repr_const_args(
+ int id: @array_type_repr ref,
+ int const_arg: @const_arg ref
+);
+
+#keyset[id]
+array_type_repr_element_type_reprs(
+ int id: @array_type_repr ref,
+ int element_type_repr: @type_repr ref
+);
+
+asm_clobber_abis(
+ unique int id: @asm_clobber_abi
+);
+
+asm_consts(
+ unique int id: @asm_const
+);
+
+#keyset[id]
+asm_const_exprs(
+ int id: @asm_const ref,
+ int expr: @expr ref
+);
+
+#keyset[id]
+asm_const_is_const(
+ int id: @asm_const ref
+);
+
+asm_exprs(
+ unique int id: @asm_expr
+);
+
+#keyset[id, index]
+asm_expr_asm_pieces(
+ int id: @asm_expr ref,
+ int index: int ref,
+ int asm_piece: @asm_piece ref
+);
+
+#keyset[id, index]
+asm_expr_attrs(
+ int id: @asm_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id, index]
+asm_expr_templates(
+ int id: @asm_expr ref,
+ int index: int ref,
+ int template: @expr ref
+);
+
+asm_labels(
+ unique int id: @asm_label
+);
+
+#keyset[id]
+asm_label_block_exprs(
+ int id: @asm_label ref,
+ int block_expr: @block_expr ref
+);
+
+asm_operand_nameds(
+ unique int id: @asm_operand_named
+);
+
+#keyset[id]
+asm_operand_named_asm_operands(
+ int id: @asm_operand_named ref,
+ int asm_operand: @asm_operand ref
+);
+
+#keyset[id]
+asm_operand_named_names(
+ int id: @asm_operand_named ref,
+ int name: @name ref
+);
+
+asm_options_lists(
+ unique int id: @asm_options_list
+);
+
+#keyset[id, index]
+asm_options_list_asm_options(
+ int id: @asm_options_list ref,
+ int index: int ref,
+ int asm_option: @asm_option ref
+);
+
+asm_reg_operands(
+ unique int id: @asm_reg_operand
+);
+
+#keyset[id]
+asm_reg_operand_asm_dir_specs(
+ int id: @asm_reg_operand ref,
+ int asm_dir_spec: @asm_dir_spec ref
+);
+
+#keyset[id]
+asm_reg_operand_asm_operand_exprs(
+ int id: @asm_reg_operand ref,
+ int asm_operand_expr: @asm_operand_expr ref
+);
+
+#keyset[id]
+asm_reg_operand_asm_reg_specs(
+ int id: @asm_reg_operand ref,
+ int asm_reg_spec: @asm_reg_spec ref
+);
+
+asm_syms(
+ unique int id: @asm_sym
+);
+
+#keyset[id]
+asm_sym_paths(
+ int id: @asm_sym ref,
+ int path: @path ref
+);
+
+assoc_type_args(
+ unique int id: @assoc_type_arg
+);
+
+#keyset[id]
+assoc_type_arg_const_args(
+ int id: @assoc_type_arg ref,
+ int const_arg: @const_arg ref
+);
+
+#keyset[id]
+assoc_type_arg_generic_arg_lists(
+ int id: @assoc_type_arg ref,
+ int generic_arg_list: @generic_arg_list ref
+);
+
+#keyset[id]
+assoc_type_arg_identifiers(
+ int id: @assoc_type_arg ref,
+ int identifier: @name_ref ref
+);
+
+#keyset[id]
+assoc_type_arg_param_lists(
+ int id: @assoc_type_arg ref,
+ int param_list: @param_list ref
+);
+
+#keyset[id]
+assoc_type_arg_ret_types(
+ int id: @assoc_type_arg ref,
+ int ret_type: @ret_type_repr ref
+);
+
+#keyset[id]
+assoc_type_arg_return_type_syntaxes(
+ int id: @assoc_type_arg ref,
+ int return_type_syntax: @return_type_syntax ref
+);
+
+#keyset[id]
+assoc_type_arg_type_reprs(
+ int id: @assoc_type_arg ref,
+ int type_repr: @type_repr ref
+);
+
+#keyset[id]
+assoc_type_arg_type_bound_lists(
+ int id: @assoc_type_arg ref,
+ int type_bound_list: @type_bound_list ref
+);
+
+await_exprs(
+ unique int id: @await_expr
+);
+
+#keyset[id, index]
+await_expr_attrs(
+ int id: @await_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+await_expr_exprs(
+ int id: @await_expr ref,
+ int expr: @expr ref
+);
+
+become_exprs(
+ unique int id: @become_expr
+);
+
+#keyset[id, index]
+become_expr_attrs(
+ int id: @become_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+become_expr_exprs(
+ int id: @become_expr ref,
+ int expr: @expr ref
+);
+
+binary_exprs(
+ unique int id: @binary_expr
+);
+
+#keyset[id, index]
+binary_expr_attrs(
+ int id: @binary_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+binary_expr_lhs(
+ int id: @binary_expr ref,
+ int lhs: @expr ref
+);
+
+#keyset[id]
+binary_expr_operator_names(
+ int id: @binary_expr ref,
+ string operator_name: string ref
+);
+
+#keyset[id]
+binary_expr_rhs(
+ int id: @binary_expr ref,
+ int rhs: @expr ref
+);
+
+box_pats(
+ unique int id: @box_pat
+);
+
+#keyset[id]
+box_pat_pats(
+ int id: @box_pat ref,
+ int pat: @pat ref
+);
+
+break_exprs(
+ unique int id: @break_expr
+);
+
+#keyset[id, index]
+break_expr_attrs(
+ int id: @break_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+break_expr_exprs(
+ int id: @break_expr ref,
+ int expr: @expr ref
+);
+
+#keyset[id]
+break_expr_lifetimes(
+ int id: @break_expr ref,
+ int lifetime: @lifetime ref
+);
+
+@call_expr_base =
+ @call_expr
+| @method_call_expr
+;
+
+#keyset[id]
+call_expr_base_arg_lists(
+ int id: @call_expr_base ref,
+ int arg_list: @arg_list ref
+);
+
+#keyset[id, index]
+call_expr_base_attrs(
+ int id: @call_expr_base ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+cast_exprs(
+ unique int id: @cast_expr
+);
+
+#keyset[id, index]
+cast_expr_attrs(
+ int id: @cast_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+cast_expr_exprs(
+ int id: @cast_expr ref,
+ int expr: @expr ref
+);
+
+#keyset[id]
+cast_expr_type_reprs(
+ int id: @cast_expr ref,
+ int type_repr: @type_repr ref
+);
+
+closure_exprs(
+ unique int id: @closure_expr
+);
+
+#keyset[id]
+closure_expr_bodies(
+ int id: @closure_expr ref,
+ int body: @expr ref
+);
+
+#keyset[id]
+closure_expr_closure_binders(
+ int id: @closure_expr ref,
+ int closure_binder: @closure_binder ref
+);
+
+#keyset[id]
+closure_expr_is_async(
+ int id: @closure_expr ref
+);
+
+#keyset[id]
+closure_expr_is_const(
+ int id: @closure_expr ref
+);
+
+#keyset[id]
+closure_expr_is_gen(
+ int id: @closure_expr ref
+);
+
+#keyset[id]
+closure_expr_is_move(
+ int id: @closure_expr ref
+);
+
+#keyset[id]
+closure_expr_is_static(
+ int id: @closure_expr ref
+);
+
+#keyset[id]
+closure_expr_ret_types(
+ int id: @closure_expr ref,
+ int ret_type: @ret_type_repr ref
+);
+
+comments(
+ unique int id: @comment,
+ int parent: @ast_node ref,
+ string text: string ref
+);
+
+const_args(
+ unique int id: @const_arg
+);
+
+#keyset[id]
+const_arg_exprs(
+ int id: @const_arg ref,
+ int expr: @expr ref
+);
+
+const_block_pats(
+ unique int id: @const_block_pat
+);
+
+#keyset[id]
+const_block_pat_block_exprs(
+ int id: @const_block_pat ref,
+ int block_expr: @block_expr ref
+);
+
+#keyset[id]
+const_block_pat_is_const(
+ int id: @const_block_pat ref
+);
+
+const_params(
+ unique int id: @const_param
+);
+
+#keyset[id, index]
+const_param_attrs(
+ int id: @const_param ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+const_param_default_vals(
+ int id: @const_param ref,
+ int default_val: @const_arg ref
+);
+
+#keyset[id]
+const_param_is_const(
+ int id: @const_param ref
+);
+
+#keyset[id]
+const_param_names(
+ int id: @const_param ref,
+ int name: @name ref
+);
+
+#keyset[id]
+const_param_type_reprs(
+ int id: @const_param ref,
+ int type_repr: @type_repr ref
+);
+
+continue_exprs(
+ unique int id: @continue_expr
+);
+
+#keyset[id, index]
+continue_expr_attrs(
+ int id: @continue_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+continue_expr_lifetimes(
+ int id: @continue_expr ref,
+ int lifetime: @lifetime ref
+);
+
+dyn_trait_type_reprs(
+ unique int id: @dyn_trait_type_repr
+);
+
+#keyset[id]
+dyn_trait_type_repr_type_bound_lists(
+ int id: @dyn_trait_type_repr ref,
+ int type_bound_list: @type_bound_list ref
+);
+
+expr_stmts(
+ unique int id: @expr_stmt
+);
+
+#keyset[id]
+expr_stmt_exprs(
+ int id: @expr_stmt ref,
+ int expr: @expr ref
+);
+
+field_exprs(
+ unique int id: @field_expr
+);
+
+#keyset[id, index]
+field_expr_attrs(
+ int id: @field_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+field_expr_containers(
+ int id: @field_expr ref,
+ int container: @expr ref
+);
+
+#keyset[id]
+field_expr_identifiers(
+ int id: @field_expr ref,
+ int identifier: @name_ref ref
+);
+
+fn_ptr_type_reprs(
+ unique int id: @fn_ptr_type_repr
+);
+
+#keyset[id]
+fn_ptr_type_repr_abis(
+ int id: @fn_ptr_type_repr ref,
+ int abi: @abi ref
+);
+
+#keyset[id]
+fn_ptr_type_repr_is_async(
+ int id: @fn_ptr_type_repr ref
+);
+
+#keyset[id]
+fn_ptr_type_repr_is_const(
+ int id: @fn_ptr_type_repr ref
+);
+
+#keyset[id]
+fn_ptr_type_repr_is_unsafe(
+ int id: @fn_ptr_type_repr ref
+);
+
+#keyset[id]
+fn_ptr_type_repr_param_lists(
+ int id: @fn_ptr_type_repr ref,
+ int param_list: @param_list ref
+);
+
+#keyset[id]
+fn_ptr_type_repr_ret_types(
+ int id: @fn_ptr_type_repr ref,
+ int ret_type: @ret_type_repr ref
+);
+
+for_type_reprs(
+ unique int id: @for_type_repr
+);
+
+#keyset[id]
+for_type_repr_generic_param_lists(
+ int id: @for_type_repr ref,
+ int generic_param_list: @generic_param_list ref
+);
+
+#keyset[id]
+for_type_repr_type_reprs(
+ int id: @for_type_repr ref,
+ int type_repr: @type_repr ref
+);
+
+format_args_exprs(
+ unique int id: @format_args_expr
+);
+
+#keyset[id, index]
+format_args_expr_args(
+ int id: @format_args_expr ref,
+ int index: int ref,
+ int arg: @format_args_arg ref
+);
+
+#keyset[id, index]
+format_args_expr_attrs(
+ int id: @format_args_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+format_args_expr_templates(
+ int id: @format_args_expr ref,
+ int template: @expr ref
+);
+
+ident_pats(
+ unique int id: @ident_pat
+);
+
+#keyset[id, index]
+ident_pat_attrs(
+ int id: @ident_pat ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+ident_pat_is_mut(
+ int id: @ident_pat ref
+);
+
+#keyset[id]
+ident_pat_is_ref(
+ int id: @ident_pat ref
+);
+
+#keyset[id]
+ident_pat_names(
+ int id: @ident_pat ref,
+ int name: @name ref
+);
+
+#keyset[id]
+ident_pat_pats(
+ int id: @ident_pat ref,
+ int pat: @pat ref
+);
+
+if_exprs(
+ unique int id: @if_expr
+);
+
+#keyset[id, index]
+if_expr_attrs(
+ int id: @if_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+if_expr_conditions(
+ int id: @if_expr ref,
+ int condition: @expr ref
+);
+
+#keyset[id]
+if_expr_elses(
+ int id: @if_expr ref,
+ int else: @expr ref
+);
+
+#keyset[id]
+if_expr_thens(
+ int id: @if_expr ref,
+ int then: @block_expr ref
+);
+
+impl_trait_type_reprs(
+ unique int id: @impl_trait_type_repr
+);
+
+#keyset[id]
+impl_trait_type_repr_type_bound_lists(
+ int id: @impl_trait_type_repr ref,
+ int type_bound_list: @type_bound_list ref
+);
+
+index_exprs(
+ unique int id: @index_expr
+);
+
+#keyset[id, index]
+index_expr_attrs(
+ int id: @index_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+index_expr_bases(
+ int id: @index_expr ref,
+ int base: @expr ref
+);
+
+#keyset[id]
+index_expr_indices(
+ int id: @index_expr ref,
+ int index: @expr ref
+);
+
+infer_type_reprs(
+ unique int id: @infer_type_repr
+);
+
+@item =
+ @const
+| @enum
+| @extern_block
+| @extern_crate
+| @function
+| @impl
+| @macro_call
+| @macro_def
+| @macro_rules
+| @module
+| @static
+| @struct
+| @trait
+| @trait_alias
+| @type_alias
+| @union
+| @use
+;
+
+#keyset[id]
+item_attribute_macro_expansions(
+ int id: @item ref,
+ int attribute_macro_expansion: @macro_items ref
+);
+
+@labelable_expr =
+ @block_expr
+| @looping_expr
+;
+
+#keyset[id]
+labelable_expr_labels(
+ int id: @labelable_expr ref,
+ int label: @label ref
+);
+
+let_exprs(
+ unique int id: @let_expr
+);
+
+#keyset[id, index]
+let_expr_attrs(
+ int id: @let_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+let_expr_scrutinees(
+ int id: @let_expr ref,
+ int scrutinee: @expr ref
+);
+
+#keyset[id]
+let_expr_pats(
+ int id: @let_expr ref,
+ int pat: @pat ref
+);
+
+let_stmts(
+ unique int id: @let_stmt
+);
+
+#keyset[id, index]
+let_stmt_attrs(
+ int id: @let_stmt ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+let_stmt_initializers(
+ int id: @let_stmt ref,
+ int initializer: @expr ref
+);
+
+#keyset[id]
+let_stmt_let_elses(
+ int id: @let_stmt ref,
+ int let_else: @let_else ref
+);
+
+#keyset[id]
+let_stmt_pats(
+ int id: @let_stmt ref,
+ int pat: @pat ref
+);
+
+#keyset[id]
+let_stmt_type_reprs(
+ int id: @let_stmt ref,
+ int type_repr: @type_repr ref
+);
+
+lifetimes(
+ unique int id: @lifetime
+);
+
+#keyset[id]
+lifetime_texts(
+ int id: @lifetime ref,
+ string text: string ref
+);
+
+lifetime_args(
+ unique int id: @lifetime_arg
+);
+
+#keyset[id]
+lifetime_arg_lifetimes(
+ int id: @lifetime_arg ref,
+ int lifetime: @lifetime ref
+);
+
+lifetime_params(
+ unique int id: @lifetime_param
+);
+
+#keyset[id, index]
+lifetime_param_attrs(
+ int id: @lifetime_param ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+lifetime_param_lifetimes(
+ int id: @lifetime_param ref,
+ int lifetime: @lifetime ref
+);
+
+#keyset[id]
+lifetime_param_type_bound_lists(
+ int id: @lifetime_param ref,
+ int type_bound_list: @type_bound_list ref
+);
+
+literal_exprs(
+ unique int id: @literal_expr
+);
+
+#keyset[id, index]
+literal_expr_attrs(
+ int id: @literal_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+literal_expr_text_values(
+ int id: @literal_expr ref,
+ string text_value: string ref
+);
+
+literal_pats(
+ unique int id: @literal_pat
+);
+
+#keyset[id]
+literal_pat_literals(
+ int id: @literal_pat ref,
+ int literal: @literal_expr ref
+);
+
+macro_block_exprs(
+ unique int id: @macro_block_expr
+);
+
+#keyset[id]
+macro_block_expr_tail_exprs(
+ int id: @macro_block_expr ref,
+ int tail_expr: @expr ref
+);
+
+#keyset[id, index]
+macro_block_expr_statements(
+ int id: @macro_block_expr ref,
+ int index: int ref,
+ int statement: @stmt ref
+);
+
+macro_exprs(
+ unique int id: @macro_expr
+);
+
+#keyset[id]
+macro_expr_macro_calls(
+ int id: @macro_expr ref,
+ int macro_call: @macro_call ref
+);
+
+macro_pats(
+ unique int id: @macro_pat
+);
+
+#keyset[id]
+macro_pat_macro_calls(
+ int id: @macro_pat ref,
+ int macro_call: @macro_call ref
+);
+
+macro_type_reprs(
+ unique int id: @macro_type_repr
+);
+
+#keyset[id]
+macro_type_repr_macro_calls(
+ int id: @macro_type_repr ref,
+ int macro_call: @macro_call ref
+);
+
+match_exprs(
+ unique int id: @match_expr
+);
+
+#keyset[id, index]
+match_expr_attrs(
+ int id: @match_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+match_expr_scrutinees(
+ int id: @match_expr ref,
+ int scrutinee: @expr ref
+);
+
+#keyset[id]
+match_expr_match_arm_lists(
+ int id: @match_expr ref,
+ int match_arm_list: @match_arm_list ref
+);
+
+name_refs(
+ unique int id: @name_ref
+);
+
+#keyset[id]
+name_ref_texts(
+ int id: @name_ref ref,
+ string text: string ref
+);
+
+never_type_reprs(
+ unique int id: @never_type_repr
+);
+
+offset_of_exprs(
+ unique int id: @offset_of_expr
+);
+
+#keyset[id, index]
+offset_of_expr_attrs(
+ int id: @offset_of_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id, index]
+offset_of_expr_fields(
+ int id: @offset_of_expr ref,
+ int index: int ref,
+ int field: @name_ref ref
+);
+
+#keyset[id]
+offset_of_expr_type_reprs(
+ int id: @offset_of_expr ref,
+ int type_repr: @type_repr ref
+);
+
+or_pats(
+ unique int id: @or_pat
+);
+
+#keyset[id, index]
+or_pat_pats(
+ int id: @or_pat ref,
+ int index: int ref,
+ int pat: @pat ref
+);
+
+params(
+ unique int id: @param
+);
+
+#keyset[id]
+param_pats(
+ int id: @param ref,
+ int pat: @pat ref
+);
+
+paren_exprs(
+ unique int id: @paren_expr
+);
+
+#keyset[id, index]
+paren_expr_attrs(
+ int id: @paren_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+paren_expr_exprs(
+ int id: @paren_expr ref,
+ int expr: @expr ref
+);
+
+paren_pats(
+ unique int id: @paren_pat
+);
+
+#keyset[id]
+paren_pat_pats(
+ int id: @paren_pat ref,
+ int pat: @pat ref
+);
+
+paren_type_reprs(
+ unique int id: @paren_type_repr
+);
+
+#keyset[id]
+paren_type_repr_type_reprs(
+ int id: @paren_type_repr ref,
+ int type_repr: @type_repr ref
+);
+
+@path_ast_node =
+ @path_expr
+| @path_pat
+| @struct_expr
+| @struct_pat
+| @tuple_struct_pat
+;
+
+#keyset[id]
+path_ast_node_paths(
+ int id: @path_ast_node ref,
+ int path: @path ref
+);
+
+@path_expr_base =
+ @path_expr
+;
+
+path_type_reprs(
+ unique int id: @path_type_repr
+);
+
+#keyset[id]
+path_type_repr_paths(
+ int id: @path_type_repr ref,
+ int path: @path ref
+);
+
+prefix_exprs(
+ unique int id: @prefix_expr
+);
+
+#keyset[id, index]
+prefix_expr_attrs(
+ int id: @prefix_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+prefix_expr_exprs(
+ int id: @prefix_expr ref,
+ int expr: @expr ref
+);
+
+#keyset[id]
+prefix_expr_operator_names(
+ int id: @prefix_expr ref,
+ string operator_name: string ref
+);
+
+ptr_type_reprs(
+ unique int id: @ptr_type_repr
+);
+
+#keyset[id]
+ptr_type_repr_is_const(
+ int id: @ptr_type_repr ref
+);
+
+#keyset[id]
+ptr_type_repr_is_mut(
+ int id: @ptr_type_repr ref
+);
+
+#keyset[id]
+ptr_type_repr_type_reprs(
+ int id: @ptr_type_repr ref,
+ int type_repr: @type_repr ref
+);
+
+range_exprs(
+ unique int id: @range_expr
+);
+
+#keyset[id, index]
+range_expr_attrs(
+ int id: @range_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+range_expr_ends(
+ int id: @range_expr ref,
+ int end: @expr ref
+);
+
+#keyset[id]
+range_expr_operator_names(
+ int id: @range_expr ref,
+ string operator_name: string ref
+);
+
+#keyset[id]
+range_expr_starts(
+ int id: @range_expr ref,
+ int start: @expr ref
+);
+
+range_pats(
+ unique int id: @range_pat
+);
+
+#keyset[id]
+range_pat_ends(
+ int id: @range_pat ref,
+ int end: @pat ref
+);
+
+#keyset[id]
+range_pat_operator_names(
+ int id: @range_pat ref,
+ string operator_name: string ref
+);
+
+#keyset[id]
+range_pat_starts(
+ int id: @range_pat ref,
+ int start: @pat ref
+);
+
+ref_exprs(
+ unique int id: @ref_expr
+);
+
+#keyset[id, index]
+ref_expr_attrs(
+ int id: @ref_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+ref_expr_exprs(
+ int id: @ref_expr ref,
+ int expr: @expr ref
+);
+
+#keyset[id]
+ref_expr_is_const(
+ int id: @ref_expr ref
+);
+
+#keyset[id]
+ref_expr_is_mut(
+ int id: @ref_expr ref
+);
+
+#keyset[id]
+ref_expr_is_raw(
+ int id: @ref_expr ref
+);
+
+ref_pats(
+ unique int id: @ref_pat
+);
+
+#keyset[id]
+ref_pat_is_mut(
+ int id: @ref_pat ref
+);
+
+#keyset[id]
+ref_pat_pats(
+ int id: @ref_pat ref,
+ int pat: @pat ref
+);
+
+ref_type_reprs(
+ unique int id: @ref_type_repr
+);
+
+#keyset[id]
+ref_type_repr_is_mut(
+ int id: @ref_type_repr ref
+);
+
+#keyset[id]
+ref_type_repr_lifetimes(
+ int id: @ref_type_repr ref,
+ int lifetime: @lifetime ref
+);
+
+#keyset[id]
+ref_type_repr_type_reprs(
+ int id: @ref_type_repr ref,
+ int type_repr: @type_repr ref
+);
+
+rest_pats(
+ unique int id: @rest_pat
+);
+
+#keyset[id, index]
+rest_pat_attrs(
+ int id: @rest_pat ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+return_exprs(
+ unique int id: @return_expr
+);
+
+#keyset[id, index]
+return_expr_attrs(
+ int id: @return_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+return_expr_exprs(
+ int id: @return_expr ref,
+ int expr: @expr ref
+);
+
+self_params(
+ unique int id: @self_param
+);
+
+#keyset[id]
+self_param_is_ref(
+ int id: @self_param ref
+);
+
+#keyset[id]
+self_param_is_mut(
+ int id: @self_param ref
+);
+
+#keyset[id]
+self_param_lifetimes(
+ int id: @self_param ref,
+ int lifetime: @lifetime ref
+);
+
+#keyset[id]
+self_param_names(
+ int id: @self_param ref,
+ int name: @name ref
+);
+
+slice_pats(
+ unique int id: @slice_pat
+);
+
+#keyset[id, index]
+slice_pat_pats(
+ int id: @slice_pat ref,
+ int index: int ref,
+ int pat: @pat ref
+);
+
+slice_type_reprs(
+ unique int id: @slice_type_repr
+);
+
+#keyset[id]
+slice_type_repr_type_reprs(
+ int id: @slice_type_repr ref,
+ int type_repr: @type_repr ref
+);
+
+struct_field_lists(
+ unique int id: @struct_field_list
+);
+
+#keyset[id, index]
+struct_field_list_fields(
+ int id: @struct_field_list ref,
+ int index: int ref,
+ int field: @struct_field ref
+);
+
+try_exprs(
+ unique int id: @try_expr
+);
+
+#keyset[id, index]
+try_expr_attrs(
+ int id: @try_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+try_expr_exprs(
+ int id: @try_expr ref,
+ int expr: @expr ref
+);
+
+tuple_exprs(
+ unique int id: @tuple_expr
+);
+
+#keyset[id, index]
+tuple_expr_attrs(
+ int id: @tuple_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id, index]
+tuple_expr_fields(
+ int id: @tuple_expr ref,
+ int index: int ref,
+ int field: @expr ref
+);
+
+tuple_field_lists(
+ unique int id: @tuple_field_list
+);
+
+#keyset[id, index]
+tuple_field_list_fields(
+ int id: @tuple_field_list ref,
+ int index: int ref,
+ int field: @tuple_field ref
+);
+
+tuple_pats(
+ unique int id: @tuple_pat
+);
+
+#keyset[id, index]
+tuple_pat_fields(
+ int id: @tuple_pat ref,
+ int index: int ref,
+ int field: @pat ref
+);
+
+tuple_type_reprs(
+ unique int id: @tuple_type_repr
+);
+
+#keyset[id, index]
+tuple_type_repr_fields(
+ int id: @tuple_type_repr ref,
+ int index: int ref,
+ int field: @type_repr ref
+);
+
+type_args(
+ unique int id: @type_arg
+);
+
+#keyset[id]
+type_arg_type_reprs(
+ int id: @type_arg ref,
+ int type_repr: @type_repr ref
+);
+
+type_params(
+ unique int id: @type_param
+);
+
+#keyset[id, index]
+type_param_attrs(
+ int id: @type_param ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+type_param_default_types(
+ int id: @type_param ref,
+ int default_type: @type_repr ref
+);
+
+#keyset[id]
+type_param_names(
+ int id: @type_param ref,
+ int name: @name ref
+);
+
+#keyset[id]
+type_param_type_bound_lists(
+ int id: @type_param ref,
+ int type_bound_list: @type_bound_list ref
+);
+
+underscore_exprs(
+ unique int id: @underscore_expr
+);
+
+#keyset[id, index]
+underscore_expr_attrs(
+ int id: @underscore_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+variants(
+ unique int id: @variant
+);
+
+#keyset[id, index]
+variant_attrs(
+ int id: @variant ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+variant_discriminants(
+ int id: @variant ref,
+ int discriminant: @expr ref
+);
+
+#keyset[id]
+variant_field_lists(
+ int id: @variant ref,
+ int field_list: @field_list ref
+);
+
+#keyset[id]
+variant_names(
+ int id: @variant ref,
+ int name: @name ref
+);
+
+#keyset[id]
+variant_visibilities(
+ int id: @variant ref,
+ int visibility: @visibility ref
+);
+
+wildcard_pats(
+ unique int id: @wildcard_pat
+);
+
+yeet_exprs(
+ unique int id: @yeet_expr
+);
+
+#keyset[id, index]
+yeet_expr_attrs(
+ int id: @yeet_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+yeet_expr_exprs(
+ int id: @yeet_expr ref,
+ int expr: @expr ref
+);
+
+yield_exprs(
+ unique int id: @yield_expr
+);
+
+#keyset[id, index]
+yield_expr_attrs(
+ int id: @yield_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+yield_expr_exprs(
+ int id: @yield_expr ref,
+ int expr: @expr ref
+);
+
+block_exprs(
+ unique int id: @block_expr
+);
+
+#keyset[id, index]
+block_expr_attrs(
+ int id: @block_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+block_expr_is_async(
+ int id: @block_expr ref
+);
+
+#keyset[id]
+block_expr_is_const(
+ int id: @block_expr ref
+);
+
+#keyset[id]
+block_expr_is_gen(
+ int id: @block_expr ref
+);
+
+#keyset[id]
+block_expr_is_move(
+ int id: @block_expr ref
+);
+
+#keyset[id]
+block_expr_is_try(
+ int id: @block_expr ref
+);
+
+#keyset[id]
+block_expr_is_unsafe(
+ int id: @block_expr ref
+);
+
+#keyset[id]
+block_expr_stmt_lists(
+ int id: @block_expr ref,
+ int stmt_list: @stmt_list ref
+);
+
+call_exprs(
+ unique int id: @call_expr
+);
+
+#keyset[id]
+call_expr_functions(
+ int id: @call_expr ref,
+ int function: @expr ref
+);
+
+consts(
+ unique int id: @const
+);
+
+#keyset[id, index]
+const_attrs(
+ int id: @const ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+const_bodies(
+ int id: @const ref,
+ int body: @expr ref
+);
+
+#keyset[id]
+const_is_const(
+ int id: @const ref
+);
+
+#keyset[id]
+const_is_default(
+ int id: @const ref
+);
+
+#keyset[id]
+const_names(
+ int id: @const ref,
+ int name: @name ref
+);
+
+#keyset[id]
+const_type_reprs(
+ int id: @const ref,
+ int type_repr: @type_repr ref
+);
+
+#keyset[id]
+const_visibilities(
+ int id: @const ref,
+ int visibility: @visibility ref
+);
+
+enums(
+ unique int id: @enum
+);
+
+#keyset[id, index]
+enum_attrs(
+ int id: @enum ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+enum_generic_param_lists(
+ int id: @enum ref,
+ int generic_param_list: @generic_param_list ref
+);
+
+#keyset[id]
+enum_names(
+ int id: @enum ref,
+ int name: @name ref
+);
+
+#keyset[id]
+enum_variant_lists(
+ int id: @enum ref,
+ int variant_list: @variant_list ref
+);
+
+#keyset[id]
+enum_visibilities(
+ int id: @enum ref,
+ int visibility: @visibility ref
+);
+
+#keyset[id]
+enum_where_clauses(
+ int id: @enum ref,
+ int where_clause: @where_clause ref
+);
+
+extern_blocks(
+ unique int id: @extern_block
+);
+
+#keyset[id]
+extern_block_abis(
+ int id: @extern_block ref,
+ int abi: @abi ref
+);
+
+#keyset[id, index]
+extern_block_attrs(
+ int id: @extern_block ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+extern_block_extern_item_lists(
+ int id: @extern_block ref,
+ int extern_item_list: @extern_item_list ref
+);
+
+#keyset[id]
+extern_block_is_unsafe(
+ int id: @extern_block ref
+);
+
+extern_crates(
+ unique int id: @extern_crate
+);
+
+#keyset[id, index]
+extern_crate_attrs(
+ int id: @extern_crate ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+extern_crate_identifiers(
+ int id: @extern_crate ref,
+ int identifier: @name_ref ref
+);
+
+#keyset[id]
+extern_crate_renames(
+ int id: @extern_crate ref,
+ int rename: @rename ref
+);
+
+#keyset[id]
+extern_crate_visibilities(
+ int id: @extern_crate ref,
+ int visibility: @visibility ref
+);
+
+functions(
+ unique int id: @function
+);
+
+#keyset[id]
+function_abis(
+ int id: @function ref,
+ int abi: @abi ref
+);
+
+#keyset[id]
+function_bodies(
+ int id: @function ref,
+ int body: @block_expr ref
+);
+
+#keyset[id]
+function_generic_param_lists(
+ int id: @function ref,
+ int generic_param_list: @generic_param_list ref
+);
+
+#keyset[id]
+function_is_async(
+ int id: @function ref
+);
+
+#keyset[id]
+function_is_const(
+ int id: @function ref
+);
+
+#keyset[id]
+function_is_default(
+ int id: @function ref
+);
+
+#keyset[id]
+function_is_gen(
+ int id: @function ref
+);
+
+#keyset[id]
+function_is_unsafe(
+ int id: @function ref
+);
+
+#keyset[id]
+function_names(
+ int id: @function ref,
+ int name: @name ref
+);
+
+#keyset[id]
+function_ret_types(
+ int id: @function ref,
+ int ret_type: @ret_type_repr ref
+);
+
+#keyset[id]
+function_visibilities(
+ int id: @function ref,
+ int visibility: @visibility ref
+);
+
+#keyset[id]
+function_where_clauses(
+ int id: @function ref,
+ int where_clause: @where_clause ref
+);
+
+impls(
+ unique int id: @impl
+);
+
+#keyset[id]
+impl_assoc_item_lists(
+ int id: @impl ref,
+ int assoc_item_list: @assoc_item_list ref
+);
+
+#keyset[id, index]
+impl_attrs(
+ int id: @impl ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+impl_generic_param_lists(
+ int id: @impl ref,
+ int generic_param_list: @generic_param_list ref
+);
+
+#keyset[id]
+impl_is_const(
+ int id: @impl ref
+);
+
+#keyset[id]
+impl_is_default(
+ int id: @impl ref
+);
+
+#keyset[id]
+impl_is_unsafe(
+ int id: @impl ref
+);
+
+#keyset[id]
+impl_self_ties(
+ int id: @impl ref,
+ int self_ty: @type_repr ref
+);
+
+#keyset[id]
+impl_traits(
+ int id: @impl ref,
+ int trait: @type_repr ref
+);
+
+#keyset[id]
+impl_visibilities(
+ int id: @impl ref,
+ int visibility: @visibility ref
+);
+
+#keyset[id]
+impl_where_clauses(
+ int id: @impl ref,
+ int where_clause: @where_clause ref
+);
+
+@looping_expr =
+ @for_expr
+| @loop_expr
+| @while_expr
+;
+
+#keyset[id]
+looping_expr_loop_bodies(
+ int id: @looping_expr ref,
+ int loop_body: @block_expr ref
+);
+
+macro_calls(
+ unique int id: @macro_call
+);
+
+#keyset[id, index]
+macro_call_attrs(
+ int id: @macro_call ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+macro_call_paths(
+ int id: @macro_call ref,
+ int path: @path ref
+);
+
+#keyset[id]
+macro_call_token_trees(
+ int id: @macro_call ref,
+ int token_tree: @token_tree ref
+);
+
+#keyset[id]
+macro_call_macro_call_expansions(
+ int id: @macro_call ref,
+ int macro_call_expansion: @ast_node ref
+);
+
+macro_defs(
+ unique int id: @macro_def
+);
+
+#keyset[id]
+macro_def_args(
+ int id: @macro_def ref,
+ int args: @token_tree ref
+);
+
+#keyset[id, index]
+macro_def_attrs(
+ int id: @macro_def ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+macro_def_bodies(
+ int id: @macro_def ref,
+ int body: @token_tree ref
+);
+
+#keyset[id]
+macro_def_names(
+ int id: @macro_def ref,
+ int name: @name ref
+);
+
+#keyset[id]
+macro_def_visibilities(
+ int id: @macro_def ref,
+ int visibility: @visibility ref
+);
+
+macro_rules(
+ unique int id: @macro_rules
+);
+
+#keyset[id, index]
+macro_rules_attrs(
+ int id: @macro_rules ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+macro_rules_names(
+ int id: @macro_rules ref,
+ int name: @name ref
+);
+
+#keyset[id]
+macro_rules_token_trees(
+ int id: @macro_rules ref,
+ int token_tree: @token_tree ref
+);
+
+#keyset[id]
+macro_rules_visibilities(
+ int id: @macro_rules ref,
+ int visibility: @visibility ref
+);
+
+method_call_exprs(
+ unique int id: @method_call_expr
+);
+
+#keyset[id]
+method_call_expr_generic_arg_lists(
+ int id: @method_call_expr ref,
+ int generic_arg_list: @generic_arg_list ref
+);
+
+#keyset[id]
+method_call_expr_identifiers(
+ int id: @method_call_expr ref,
+ int identifier: @name_ref ref
+);
+
+#keyset[id]
+method_call_expr_receivers(
+ int id: @method_call_expr ref,
+ int receiver: @expr ref
+);
+
+modules(
+ unique int id: @module
+);
+
+#keyset[id, index]
+module_attrs(
+ int id: @module ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+module_item_lists(
+ int id: @module ref,
+ int item_list: @item_list ref
+);
+
+#keyset[id]
+module_names(
+ int id: @module ref,
+ int name: @name ref
+);
+
+#keyset[id]
+module_visibilities(
+ int id: @module ref,
+ int visibility: @visibility ref
+);
+
+path_exprs(
+ unique int id: @path_expr
+);
+
+#keyset[id, index]
+path_expr_attrs(
+ int id: @path_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+path_pats(
+ unique int id: @path_pat
+);
+
+statics(
+ unique int id: @static
+);
+
+#keyset[id, index]
+static_attrs(
+ int id: @static ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+static_bodies(
+ int id: @static ref,
+ int body: @expr ref
+);
+
+#keyset[id]
+static_is_mut(
+ int id: @static ref
+);
+
+#keyset[id]
+static_is_static(
+ int id: @static ref
+);
+
+#keyset[id]
+static_is_unsafe(
+ int id: @static ref
+);
+
+#keyset[id]
+static_names(
+ int id: @static ref,
+ int name: @name ref
+);
+
+#keyset[id]
+static_type_reprs(
+ int id: @static ref,
+ int type_repr: @type_repr ref
+);
+
+#keyset[id]
+static_visibilities(
+ int id: @static ref,
+ int visibility: @visibility ref
+);
+
+structs(
+ unique int id: @struct
+);
+
+#keyset[id, index]
+struct_attrs(
+ int id: @struct ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+struct_field_lists_(
+ int id: @struct ref,
+ int field_list: @field_list ref
+);
+
+#keyset[id]
+struct_generic_param_lists(
+ int id: @struct ref,
+ int generic_param_list: @generic_param_list ref
+);
+
+#keyset[id]
+struct_names(
+ int id: @struct ref,
+ int name: @name ref
+);
+
+#keyset[id]
+struct_visibilities(
+ int id: @struct ref,
+ int visibility: @visibility ref
+);
+
+#keyset[id]
+struct_where_clauses(
+ int id: @struct ref,
+ int where_clause: @where_clause ref
+);
+
+struct_exprs(
+ unique int id: @struct_expr
+);
+
+#keyset[id]
+struct_expr_struct_expr_field_lists(
+ int id: @struct_expr ref,
+ int struct_expr_field_list: @struct_expr_field_list ref
+);
+
+struct_pats(
+ unique int id: @struct_pat
+);
+
+#keyset[id]
+struct_pat_struct_pat_field_lists(
+ int id: @struct_pat ref,
+ int struct_pat_field_list: @struct_pat_field_list ref
+);
+
+traits(
+ unique int id: @trait
+);
+
+#keyset[id]
+trait_assoc_item_lists(
+ int id: @trait ref,
+ int assoc_item_list: @assoc_item_list ref
+);
+
+#keyset[id, index]
+trait_attrs(
+ int id: @trait ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+trait_generic_param_lists(
+ int id: @trait ref,
+ int generic_param_list: @generic_param_list ref
+);
+
+#keyset[id]
+trait_is_auto(
+ int id: @trait ref
+);
+
+#keyset[id]
+trait_is_unsafe(
+ int id: @trait ref
+);
+
+#keyset[id]
+trait_names(
+ int id: @trait ref,
+ int name: @name ref
+);
+
+#keyset[id]
+trait_type_bound_lists(
+ int id: @trait ref,
+ int type_bound_list: @type_bound_list ref
+);
+
+#keyset[id]
+trait_visibilities(
+ int id: @trait ref,
+ int visibility: @visibility ref
+);
+
+#keyset[id]
+trait_where_clauses(
+ int id: @trait ref,
+ int where_clause: @where_clause ref
+);
+
+trait_aliases(
+ unique int id: @trait_alias
+);
+
+#keyset[id, index]
+trait_alias_attrs(
+ int id: @trait_alias ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+trait_alias_generic_param_lists(
+ int id: @trait_alias ref,
+ int generic_param_list: @generic_param_list ref
+);
+
+#keyset[id]
+trait_alias_names(
+ int id: @trait_alias ref,
+ int name: @name ref
+);
+
+#keyset[id]
+trait_alias_type_bound_lists(
+ int id: @trait_alias ref,
+ int type_bound_list: @type_bound_list ref
+);
+
+#keyset[id]
+trait_alias_visibilities(
+ int id: @trait_alias ref,
+ int visibility: @visibility ref
+);
+
+#keyset[id]
+trait_alias_where_clauses(
+ int id: @trait_alias ref,
+ int where_clause: @where_clause ref
+);
+
+tuple_struct_pats(
+ unique int id: @tuple_struct_pat
+);
+
+#keyset[id, index]
+tuple_struct_pat_fields(
+ int id: @tuple_struct_pat ref,
+ int index: int ref,
+ int field: @pat ref
+);
+
+type_aliases(
+ unique int id: @type_alias
+);
+
+#keyset[id, index]
+type_alias_attrs(
+ int id: @type_alias ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+type_alias_generic_param_lists(
+ int id: @type_alias ref,
+ int generic_param_list: @generic_param_list ref
+);
+
+#keyset[id]
+type_alias_is_default(
+ int id: @type_alias ref
+);
+
+#keyset[id]
+type_alias_names(
+ int id: @type_alias ref,
+ int name: @name ref
+);
+
+#keyset[id]
+type_alias_type_reprs(
+ int id: @type_alias ref,
+ int type_repr: @type_repr ref
+);
+
+#keyset[id]
+type_alias_type_bound_lists(
+ int id: @type_alias ref,
+ int type_bound_list: @type_bound_list ref
+);
+
+#keyset[id]
+type_alias_visibilities(
+ int id: @type_alias ref,
+ int visibility: @visibility ref
+);
+
+#keyset[id]
+type_alias_where_clauses(
+ int id: @type_alias ref,
+ int where_clause: @where_clause ref
+);
+
+unions(
+ unique int id: @union
+);
+
+#keyset[id, index]
+union_attrs(
+ int id: @union ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+union_generic_param_lists(
+ int id: @union ref,
+ int generic_param_list: @generic_param_list ref
+);
+
+#keyset[id]
+union_names(
+ int id: @union ref,
+ int name: @name ref
+);
+
+#keyset[id]
+union_struct_field_lists(
+ int id: @union ref,
+ int struct_field_list: @struct_field_list ref
+);
+
+#keyset[id]
+union_visibilities(
+ int id: @union ref,
+ int visibility: @visibility ref
+);
+
+#keyset[id]
+union_where_clauses(
+ int id: @union ref,
+ int where_clause: @where_clause ref
+);
+
+uses(
+ unique int id: @use
+);
+
+#keyset[id, index]
+use_attrs(
+ int id: @use ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+use_use_trees(
+ int id: @use ref,
+ int use_tree: @use_tree ref
+);
+
+#keyset[id]
+use_visibilities(
+ int id: @use ref,
+ int visibility: @visibility ref
+);
+
+for_exprs(
+ unique int id: @for_expr
+);
+
+#keyset[id, index]
+for_expr_attrs(
+ int id: @for_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+for_expr_iterables(
+ int id: @for_expr ref,
+ int iterable: @expr ref
+);
+
+#keyset[id]
+for_expr_pats(
+ int id: @for_expr ref,
+ int pat: @pat ref
+);
+
+loop_exprs(
+ unique int id: @loop_expr
+);
+
+#keyset[id, index]
+loop_expr_attrs(
+ int id: @loop_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+while_exprs(
+ unique int id: @while_expr
+);
+
+#keyset[id, index]
+while_expr_attrs(
+ int id: @while_expr ref,
+ int index: int ref,
+ int attr: @attr ref
+);
+
+#keyset[id]
+while_expr_conditions(
+ int id: @while_expr ref,
+ int condition: @expr ref
+);
diff --git a/rust/downgrades/aa9a0bda17c76b804ad9e108d43da15f6beaf2a7/upgrade.properties b/rust/downgrades/aa9a0bda17c76b804ad9e108d43da15f6beaf2a7/upgrade.properties
new file mode 100644
index 000000000000..5ae01660cb97
--- /dev/null
+++ b/rust/downgrades/aa9a0bda17c76b804ad9e108d43da15f6beaf2a7/upgrade.properties
@@ -0,0 +1,5 @@
+description: Remove `function_has_implementation` and `const_has_implementation` tables
+compatibility: full
+
+function_has_implementation.rel: delete
+const_has_implementation.rel: delete
diff --git a/rust/extractor/src/generated/.generated.list b/rust/extractor/src/generated/.generated.list
index cb687e1bff00..121c5b5a7aae 100644
--- a/rust/extractor/src/generated/.generated.list
+++ b/rust/extractor/src/generated/.generated.list
@@ -1,2 +1,2 @@
mod.rs 4bcb9def847469aae9d8649461546b7c21ec97cf6e63d3cf394e339915ce65d7 4bcb9def847469aae9d8649461546b7c21ec97cf6e63d3cf394e339915ce65d7
-top.rs 7f8a694078bc0cde1ce420544d0cf5b83bb297dd29ee4f9d7bcbb1572f0e815a 7f8a694078bc0cde1ce420544d0cf5b83bb297dd29ee4f9d7bcbb1572f0e815a
+top.rs 69c1fcaf0efea87feb898f32fdb7bcb842a22119b69ecedd61c2d946eb7e67de 69c1fcaf0efea87feb898f32fdb7bcb842a22119b69ecedd61c2d946eb7e67de
diff --git a/rust/extractor/src/generated/top.rs b/rust/extractor/src/generated/top.rs
index 6cece591734d..fd9b0ca6b91e 100644
--- a/rust/extractor/src/generated/top.rs
+++ b/rust/extractor/src/generated/top.rs
@@ -9084,6 +9084,12 @@ impl trap::TrapEntry for Const {
}
}
+impl Const {
+ pub fn emit_has_implementation(id: trap::Label, out: &mut trap::Writer) {
+ out.add_tuple("const_has_implementation", vec![id.into()]);
+ }
+}
+
impl trap::TrapClass for Const {
fn class_name() -> &'static str { "Const" }
}
@@ -9497,6 +9503,12 @@ impl trap::TrapEntry for Function {
}
}
+impl Function {
+ pub fn emit_has_implementation(id: trap::Label, out: &mut trap::Writer) {
+ out.add_tuple("function_has_implementation", vec![id.into()]);
+ }
+}
+
impl trap::TrapClass for Function {
fn class_name() -> &'static str { "Function" }
}
diff --git a/rust/extractor/src/translate/base.rs b/rust/extractor/src/translate/base.rs
index 8d971900497e..9e9123c45709 100644
--- a/rust/extractor/src/translate/base.rs
+++ b/rust/extractor/src/translate/base.rs
@@ -16,7 +16,7 @@ use ra_ap_ide_db::RootDatabase;
use ra_ap_ide_db::line_index::{LineCol, LineIndex};
use ra_ap_parser::SyntaxKind;
use ra_ap_span::TextSize;
-use ra_ap_syntax::ast::{Const, Fn, HasName, Param, Static};
+use ra_ap_syntax::ast::HasName;
use ra_ap_syntax::{
AstNode, NodeOrToken, SyntaxElementChildren, SyntaxError, SyntaxNode, SyntaxToken, TextRange,
ast,
@@ -38,6 +38,7 @@ macro_rules! post_emit {
$self.extract_macro_call_expanded($node, $label);
};
(Function, $self:ident, $node:ident, $label:ident) => {
+ $self.emit_function_has_implementation($node, $label);
$self.extract_canonical_origin($node, $label.into());
};
(Trait, $self:ident, $node:ident, $label:ident) => {
@@ -83,6 +84,9 @@ macro_rules! post_emit {
(PathSegment, $self:ident, $node:ident, $label:ident) => {
$self.extract_types_from_path_segment($node, $label.into());
};
+ (Const, $self:ident, $node:ident, $label:ident) => {
+ $self.emit_const_has_implementation($node, $label);
+ };
($($_:tt)*) => {};
}
@@ -644,7 +648,7 @@ impl<'a> Translator<'a> {
})();
}
- pub(crate) fn should_be_excluded_attrs(&self, item: &impl ast::HasAttrs) -> bool {
+ pub(crate) fn should_be_excluded(&self, item: &impl ast::HasAttrs) -> bool {
self.semantics.is_some_and(|sema| {
item.attrs().any(|attr| {
attr.as_simple_call().is_some_and(|(name, tokens)| {
@@ -654,46 +658,8 @@ impl<'a> Translator<'a> {
})
}
- pub(crate) fn should_be_excluded(&self, item: &impl ast::AstNode) -> bool {
- if self.source_kind == SourceKind::Library {
- let syntax = item.syntax();
- if syntax
- .parent()
- .and_then(Fn::cast)
- .and_then(|x| x.body())
- .is_some_and(|body| body.syntax() == syntax)
- {
- return true;
- }
- if syntax
- .parent()
- .and_then(Const::cast)
- .and_then(|x| x.body())
- .is_some_and(|body| body.syntax() == syntax)
- {
- return true;
- }
- if syntax
- .parent()
- .and_then(Static::cast)
- .and_then(|x| x.body())
- .is_some_and(|body| body.syntax() == syntax)
- {
- return true;
- }
- if syntax
- .parent()
- .and_then(Param::cast)
- .and_then(|x| x.pat())
- .is_some_and(|pat| pat.syntax() == syntax)
- {
- return true;
- }
- if syntax.kind() == SyntaxKind::TOKEN_TREE {
- return true;
- }
- }
- false
+ pub(crate) fn should_skip_bodies(&self) -> bool {
+ self.source_kind == SourceKind::Library
}
pub(crate) fn extract_types_from_path_segment(
@@ -799,4 +765,24 @@ impl<'a> Translator<'a> {
generated::Item::emit_attribute_macro_expansion(label, expanded, &mut self.trap.writer);
}
}
+
+ pub(crate) fn emit_function_has_implementation(
+ &mut self,
+ node: &ast::Fn,
+ label: Label,
+ ) {
+ if node.body().is_some() {
+ generated::Function::emit_has_implementation(label, &mut self.trap.writer);
+ }
+ }
+
+ pub(crate) fn emit_const_has_implementation(
+ &mut self,
+ node: &ast::Const,
+ label: Label,
+ ) {
+ if node.body().is_some() {
+ generated::Const::emit_has_implementation(label, &mut self.trap.writer);
+ }
+ }
}
diff --git a/rust/extractor/src/translate/generated.rs b/rust/extractor/src/translate/generated.rs
index cd0c2f9a9d96..be8f23f9cfbe 100644
--- a/rust/extractor/src/translate/generated.rs
+++ b/rust/extractor/src/translate/generated.rs
@@ -256,9 +256,6 @@ impl Translator<'_> {
}
pub(crate) fn emit_abi(&mut self, node: &ast::Abi) -> Option> {
pre_emit!(Abi, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let abi_string = node.try_get_text();
let label = self.trap.emit(generated::Abi {
id: TrapId::Star,
@@ -274,9 +271,6 @@ impl Translator<'_> {
node: &ast::ArgList,
) -> Option> {
pre_emit!(ArgList, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let args = node.args().filter_map(|x| self.emit_expr(&x)).collect();
let label = self.trap.emit(generated::ArgList {
id: TrapId::Star,
@@ -295,9 +289,6 @@ impl Translator<'_> {
if self.should_be_excluded(node) {
return None;
}
- if self.should_be_excluded_attrs(node) {
- return None;
- }
let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect();
let exprs = node.exprs().filter_map(|x| self.emit_expr(&x)).collect();
let is_semicolon = node.semicolon_token().is_some();
@@ -317,9 +308,6 @@ impl Translator<'_> {
node: &ast::ArrayType,
) -> Option> {
pre_emit!(ArrayTypeRepr, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let const_arg = node.const_arg().and_then(|x| self.emit_const_arg(&x));
let element_type_repr = node.ty().and_then(|x| self.emit_type(&x));
let label = self.trap.emit(generated::ArrayTypeRepr {
@@ -337,9 +325,6 @@ impl Translator<'_> {
node: &ast::AsmClobberAbi,
) -> Option> {
pre_emit!(AsmClobberAbi, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let label = self
.trap
.emit(generated::AsmClobberAbi { id: TrapId::Star });
@@ -353,9 +338,6 @@ impl Translator<'_> {
node: &ast::AsmConst,
) -> Option> {
pre_emit!(AsmConst, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let expr = node.expr().and_then(|x| self.emit_expr(&x));
let is_const = node.const_token().is_some();
let label = self.trap.emit(generated::AsmConst {
@@ -373,9 +355,6 @@ impl Translator<'_> {
node: &ast::AsmDirSpec,
) -> Option> {
pre_emit!(AsmDirSpec, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let label = self.trap.emit(generated::AsmDirSpec { id: TrapId::Star });
self.emit_location(label, node);
post_emit!(AsmDirSpec, self, node, label);
@@ -390,9 +369,6 @@ impl Translator<'_> {
if self.should_be_excluded(node) {
return None;
}
- if self.should_be_excluded_attrs(node) {
- return None;
- }
let asm_pieces = node
.asm_pieces()
.filter_map(|x| self.emit_asm_piece(&x))
@@ -415,9 +391,6 @@ impl Translator<'_> {
node: &ast::AsmLabel,
) -> Option> {
pre_emit!(AsmLabel, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let block_expr = node.block_expr().and_then(|x| self.emit_block_expr(&x));
let label = self.trap.emit(generated::AsmLabel {
id: TrapId::Star,
@@ -433,9 +406,6 @@ impl Translator<'_> {
node: &ast::AsmOperandExpr,
) -> Option> {
pre_emit!(AsmOperandExpr, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let in_expr = node.in_expr().and_then(|x| self.emit_expr(&x));
let out_expr = node.out_expr().and_then(|x| self.emit_expr(&x));
let label = self.trap.emit(generated::AsmOperandExpr {
@@ -453,9 +423,6 @@ impl Translator<'_> {
node: &ast::AsmOperandNamed,
) -> Option> {
pre_emit!(AsmOperandNamed, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let asm_operand = node.asm_operand().and_then(|x| self.emit_asm_operand(&x));
let name = node.name().and_then(|x| self.emit_name(&x));
let label = self.trap.emit(generated::AsmOperandNamed {
@@ -473,9 +440,6 @@ impl Translator<'_> {
node: &ast::AsmOption,
) -> Option> {
pre_emit!(AsmOption, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let is_raw = node.raw_token().is_some();
let label = self.trap.emit(generated::AsmOption {
id: TrapId::Star,
@@ -491,9 +455,6 @@ impl Translator<'_> {
node: &ast::AsmOptions,
) -> Option> {
pre_emit!(AsmOptionsList, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let asm_options = node
.asm_options()
.filter_map(|x| self.emit_asm_option(&x))
@@ -512,9 +473,6 @@ impl Translator<'_> {
node: &ast::AsmRegOperand,
) -> Option> {
pre_emit!(AsmRegOperand, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let asm_dir_spec = node.asm_dir_spec().and_then(|x| self.emit_asm_dir_spec(&x));
let asm_operand_expr = node
.asm_operand_expr()
@@ -536,9 +494,6 @@ impl Translator<'_> {
node: &ast::AsmRegSpec,
) -> Option> {
pre_emit!(AsmRegSpec, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let identifier = node.name_ref().and_then(|x| self.emit_name_ref(&x));
let label = self.trap.emit(generated::AsmRegSpec {
id: TrapId::Star,
@@ -551,9 +506,6 @@ impl Translator<'_> {
}
pub(crate) fn emit_asm_sym(&mut self, node: &ast::AsmSym) -> Option> {
pre_emit!(AsmSym, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let path = node.path().and_then(|x| self.emit_path(&x));
let label = self.trap.emit(generated::AsmSym {
id: TrapId::Star,
@@ -572,9 +524,6 @@ impl Translator<'_> {
if self.should_be_excluded(node) {
return None;
}
- if self.should_be_excluded_attrs(node) {
- return None;
- }
let assoc_items = node
.assoc_items()
.filter_map(|x| self.emit_assoc_item(&x))
@@ -595,9 +544,6 @@ impl Translator<'_> {
node: &ast::AssocTypeArg,
) -> Option> {
pre_emit!(AssocTypeArg, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let const_arg = node.const_arg().and_then(|x| self.emit_const_arg(&x));
let generic_arg_list = node
.generic_arg_list()
@@ -630,9 +576,6 @@ impl Translator<'_> {
}
pub(crate) fn emit_attr(&mut self, node: &ast::Attr) -> Option> {
pre_emit!(Attr, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let meta = node.meta().and_then(|x| self.emit_meta(&x));
let label = self.trap.emit(generated::Attr {
id: TrapId::Star,
@@ -651,9 +594,6 @@ impl Translator<'_> {
if self.should_be_excluded(node) {
return None;
}
- if self.should_be_excluded_attrs(node) {
- return None;
- }
let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect();
let expr = node.expr().and_then(|x| self.emit_expr(&x));
let label = self.trap.emit(generated::AwaitExpr {
@@ -674,9 +614,6 @@ impl Translator<'_> {
if self.should_be_excluded(node) {
return None;
}
- if self.should_be_excluded_attrs(node) {
- return None;
- }
let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect();
let expr = node.expr().and_then(|x| self.emit_expr(&x));
let label = self.trap.emit(generated::BecomeExpr {
@@ -697,9 +634,6 @@ impl Translator<'_> {
if self.should_be_excluded(node) {
return None;
}
- if self.should_be_excluded_attrs(node) {
- return None;
- }
let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect();
let lhs = node.lhs().and_then(|x| self.emit_expr(&x));
let operator_name = node.try_get_text();
@@ -724,9 +658,6 @@ impl Translator<'_> {
if self.should_be_excluded(node) {
return None;
}
- if self.should_be_excluded_attrs(node) {
- return None;
- }
let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect();
let is_async = node.async_token().is_some();
let is_const = node.const_token().is_some();
@@ -755,9 +686,6 @@ impl Translator<'_> {
}
pub(crate) fn emit_box_pat(&mut self, node: &ast::BoxPat) -> Option> {
pre_emit!(BoxPat, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let pat = node.pat().and_then(|x| self.emit_pat(&x));
let label = self.trap.emit(generated::BoxPat {
id: TrapId::Star,
@@ -776,9 +704,6 @@ impl Translator<'_> {
if self.should_be_excluded(node) {
return None;
}
- if self.should_be_excluded_attrs(node) {
- return None;
- }
let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect();
let expr = node.expr().and_then(|x| self.emit_expr(&x));
let lifetime = node.lifetime().and_then(|x| self.emit_lifetime(&x));
@@ -801,9 +726,6 @@ impl Translator<'_> {
if self.should_be_excluded(node) {
return None;
}
- if self.should_be_excluded_attrs(node) {
- return None;
- }
let arg_list = node.arg_list().and_then(|x| self.emit_arg_list(&x));
let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect();
let function = node.expr().and_then(|x| self.emit_expr(&x));
@@ -826,9 +748,6 @@ impl Translator<'_> {
if self.should_be_excluded(node) {
return None;
}
- if self.should_be_excluded_attrs(node) {
- return None;
- }
let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect();
let expr = node.expr().and_then(|x| self.emit_expr(&x));
let type_repr = node.ty().and_then(|x| self.emit_type(&x));
@@ -848,9 +767,6 @@ impl Translator<'_> {
node: &ast::ClosureBinder,
) -> Option> {
pre_emit!(ClosureBinder, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let generic_param_list = node
.generic_param_list()
.and_then(|x| self.emit_generic_param_list(&x));
@@ -871,9 +787,6 @@ impl Translator<'_> {
if self.should_be_excluded(node) {
return None;
}
- if self.should_be_excluded_attrs(node) {
- return None;
- }
let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect();
let body = node.body().and_then(|x| self.emit_expr(&x));
let closure_binder = node
@@ -909,11 +822,12 @@ impl Translator<'_> {
if self.should_be_excluded(node) {
return None;
}
- if self.should_be_excluded_attrs(node) {
- return None;
- }
let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect();
- let body = node.body().and_then(|x| self.emit_expr(&x));
+ let body = if self.should_skip_bodies() {
+ None
+ } else {
+ node.body().and_then(|x| self.emit_expr(&x))
+ };
let is_const = node.const_token().is_some();
let is_default = node.default_token().is_some();
let name = node.name().and_then(|x| self.emit_name(&x));
@@ -939,9 +853,6 @@ impl Translator<'_> {
node: &ast::ConstArg,
) -> Option> {
pre_emit!(ConstArg, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let expr = node.expr().and_then(|x| self.emit_expr(&x));
let label = self.trap.emit(generated::ConstArg {
id: TrapId::Star,
@@ -957,9 +868,6 @@ impl Translator<'_> {
node: &ast::ConstBlockPat,
) -> Option> {
pre_emit!(ConstBlockPat, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let block_expr = node.block_expr().and_then(|x| self.emit_block_expr(&x));
let is_const = node.const_token().is_some();
let label = self.trap.emit(generated::ConstBlockPat {
@@ -980,9 +888,6 @@ impl Translator<'_> {
if self.should_be_excluded(node) {
return None;
}
- if self.should_be_excluded_attrs(node) {
- return None;
- }
let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect();
let default_val = node.default_val().and_then(|x| self.emit_const_arg(&x));
let is_const = node.const_token().is_some();
@@ -1009,9 +914,6 @@ impl Translator<'_> {
if self.should_be_excluded(node) {
return None;
}
- if self.should_be_excluded_attrs(node) {
- return None;
- }
let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect();
let lifetime = node.lifetime().and_then(|x| self.emit_lifetime(&x));
let label = self.trap.emit(generated::ContinueExpr {
@@ -1029,9 +931,6 @@ impl Translator<'_> {
node: &ast::DynTraitType,
) -> Option> {
pre_emit!(DynTraitTypeRepr, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let type_bound_list = node
.type_bound_list()
.and_then(|x| self.emit_type_bound_list(&x));
@@ -1049,9 +948,6 @@ impl Translator<'_> {
if self.should_be_excluded(node) {
return None;
}
- if self.should_be_excluded_attrs(node) {
- return None;
- }
let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect();
let generic_param_list = node
.generic_param_list()
@@ -1079,9 +975,6 @@ impl Translator<'_> {
node: &ast::ExprStmt,
) -> Option> {
pre_emit!(ExprStmt, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let expr = node.expr().and_then(|x| self.emit_expr(&x));
let label = self.trap.emit(generated::ExprStmt {
id: TrapId::Star,
@@ -1100,9 +993,6 @@ impl Translator<'_> {
if self.should_be_excluded(node) {
return None;
}
- if self.should_be_excluded_attrs(node) {
- return None;
- }
let abi = node.abi().and_then(|x| self.emit_abi(&x));
let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect();
let extern_item_list = node
@@ -1129,9 +1019,6 @@ impl Translator<'_> {
if self.should_be_excluded(node) {
return None;
}
- if self.should_be_excluded_attrs(node) {
- return None;
- }
let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect();
let identifier = node.name_ref().and_then(|x| self.emit_name_ref(&x));
let rename = node.rename().and_then(|x| self.emit_rename(&x));
@@ -1156,9 +1043,6 @@ impl Translator<'_> {
if self.should_be_excluded(node) {
return None;
}
- if self.should_be_excluded_attrs(node) {
- return None;
- }
let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect();
let extern_items = node
.extern_items()
@@ -1182,9 +1066,6 @@ impl Translator<'_> {
if self.should_be_excluded(node) {
return None;
}
- if self.should_be_excluded_attrs(node) {
- return None;
- }
let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect();
let container = node.expr().and_then(|x| self.emit_expr(&x));
let identifier = node.name_ref().and_then(|x| self.emit_name_ref(&x));
@@ -1204,12 +1085,13 @@ impl Translator<'_> {
if self.should_be_excluded(node) {
return None;
}
- if self.should_be_excluded_attrs(node) {
- return None;
- }
let abi = node.abi().and_then(|x| self.emit_abi(&x));
let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect();
- let body = node.body().and_then(|x| self.emit_block_expr(&x));
+ let body = if self.should_skip_bodies() {
+ None
+ } else {
+ node.body().and_then(|x| self.emit_block_expr(&x))
+ };
let generic_param_list = node
.generic_param_list()
.and_then(|x| self.emit_generic_param_list(&x));
@@ -1250,9 +1132,6 @@ impl Translator<'_> {
node: &ast::FnPtrType,
) -> Option> {
pre_emit!(FnPtrTypeRepr, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let abi = node.abi().and_then(|x| self.emit_abi(&x));
let is_async = node.async_token().is_some();
let is_const = node.const_token().is_some();
@@ -1281,9 +1160,6 @@ impl Translator<'_> {
if self.should_be_excluded(node) {
return None;
}
- if self.should_be_excluded_attrs(node) {
- return None;
- }
let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect();
let iterable = node.iterable().and_then(|x| self.emit_expr(&x));
let label = node.label().and_then(|x| self.emit_label(&x));
@@ -1307,9 +1183,6 @@ impl Translator<'_> {
node: &ast::ForType,
) -> Option> {
pre_emit!(ForTypeRepr, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let generic_param_list = node
.generic_param_list()
.and_then(|x| self.emit_generic_param_list(&x));
@@ -1329,9 +1202,6 @@ impl Translator<'_> {
node: &ast::FormatArgsArg,
) -> Option> {
pre_emit!(FormatArgsArg, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let expr = node.expr().and_then(|x| self.emit_expr(&x));
let name = node.name().and_then(|x| self.emit_name(&x));
let label = self.trap.emit(generated::FormatArgsArg {
@@ -1352,9 +1222,6 @@ impl Translator<'_> {
if self.should_be_excluded(node) {
return None;
}
- if self.should_be_excluded_attrs(node) {
- return None;
- }
let args = node
.args()
.filter_map(|x| self.emit_format_args_arg(&x))
@@ -1377,9 +1244,6 @@ impl Translator<'_> {
node: &ast::GenericArgList,
) -> Option> {
pre_emit!(GenericArgList, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let generic_args = node
.generic_args()
.filter_map(|x| self.emit_generic_arg(&x))
@@ -1398,9 +1262,6 @@ impl Translator<'_> {
node: &ast::GenericParamList,
) -> Option> {
pre_emit!(GenericParamList, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let generic_params = node
.generic_params()
.filter_map(|x| self.emit_generic_param(&x))
@@ -1422,9 +1283,6 @@ impl Translator<'_> {
if self.should_be_excluded(node) {
return None;
}
- if self.should_be_excluded_attrs(node) {
- return None;
- }
let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect();
let is_mut = node.mut_token().is_some();
let is_ref = node.ref_token().is_some();
@@ -1448,9 +1306,6 @@ impl Translator<'_> {
if self.should_be_excluded(node) {
return None;
}
- if self.should_be_excluded_attrs(node) {
- return None;
- }
let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect();
let condition = node.condition().and_then(|x| self.emit_expr(&x));
let else_ = node.else_branch().and_then(|x| self.emit_else_branch(&x));
@@ -1472,9 +1327,6 @@ impl Translator<'_> {
if self.should_be_excluded(node) {
return None;
}
- if self.should_be_excluded_attrs(node) {
- return None;
- }
let assoc_item_list = node
.assoc_item_list()
.and_then(|x| self.emit_assoc_item_list(&x));
@@ -1512,9 +1364,6 @@ impl Translator<'_> {
node: &ast::ImplTraitType,
) -> Option> {
pre_emit!(ImplTraitTypeRepr, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let type_bound_list = node
.type_bound_list()
.and_then(|x| self.emit_type_bound_list(&x));
@@ -1535,9 +1384,6 @@ impl Translator<'_> {
if self.should_be_excluded(node) {
return None;
}
- if self.should_be_excluded_attrs(node) {
- return None;
- }
let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect();
let base = node.base().and_then(|x| self.emit_expr(&x));
let index = node.index().and_then(|x| self.emit_expr(&x));
@@ -1557,9 +1403,6 @@ impl Translator<'_> {
node: &ast::InferType,
) -> Option> {
pre_emit!(InferTypeRepr, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let label = self
.trap
.emit(generated::InferTypeRepr { id: TrapId::Star });
@@ -1576,9 +1419,6 @@ impl Translator<'_> {
if self.should_be_excluded(node) {
return None;
}
- if self.should_be_excluded_attrs(node) {
- return None;
- }
let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect();
let items = node.items().filter_map(|x| self.emit_item(&x)).collect();
let label = self.trap.emit(generated::ItemList {
@@ -1593,9 +1433,6 @@ impl Translator<'_> {
}
pub(crate) fn emit_label(&mut self, node: &ast::Label) -> Option> {
pre_emit!(Label, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let lifetime = node.lifetime().and_then(|x| self.emit_lifetime(&x));
let label = self.trap.emit(generated::Label {
id: TrapId::Star,
@@ -1611,9 +1448,6 @@ impl Translator<'_> {
node: &ast::LetElse,
) -> Option> {
pre_emit!(LetElse, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let block_expr = node.block_expr().and_then(|x| self.emit_block_expr(&x));
let label = self.trap.emit(generated::LetElse {
id: TrapId::Star,
@@ -1632,9 +1466,6 @@ impl Translator<'_> {
if self.should_be_excluded(node) {
return None;
}
- if self.should_be_excluded_attrs(node) {
- return None;
- }
let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect();
let scrutinee = node.expr().and_then(|x| self.emit_expr(&x));
let pat = node.pat().and_then(|x| self.emit_pat(&x));
@@ -1657,9 +1488,6 @@ impl Translator<'_> {
if self.should_be_excluded(node) {
return None;
}
- if self.should_be_excluded_attrs(node) {
- return None;
- }
let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect();
let initializer = node.initializer().and_then(|x| self.emit_expr(&x));
let let_else = node.let_else().and_then(|x| self.emit_let_else(&x));
@@ -1683,9 +1511,6 @@ impl Translator<'_> {
node: &ast::Lifetime,
) -> Option> {
pre_emit!(Lifetime, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let text = node.try_get_text();
let label = self.trap.emit(generated::Lifetime {
id: TrapId::Star,
@@ -1701,9 +1526,6 @@ impl Translator<'_> {
node: &ast::LifetimeArg,
) -> Option> {
pre_emit!(LifetimeArg, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let lifetime = node.lifetime().and_then(|x| self.emit_lifetime(&x));
let label = self.trap.emit(generated::LifetimeArg {
id: TrapId::Star,
@@ -1722,9 +1544,6 @@ impl Translator<'_> {
if self.should_be_excluded(node) {
return None;
}
- if self.should_be_excluded_attrs(node) {
- return None;
- }
let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect();
let lifetime = node.lifetime().and_then(|x| self.emit_lifetime(&x));
let type_bound_list = node
@@ -1749,9 +1568,6 @@ impl Translator<'_> {
if self.should_be_excluded(node) {
return None;
}
- if self.should_be_excluded_attrs(node) {
- return None;
- }
let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect();
let text_value = node.try_get_text();
let label = self.trap.emit(generated::LiteralExpr {
@@ -1769,9 +1585,6 @@ impl Translator<'_> {
node: &ast::LiteralPat,
) -> Option> {
pre_emit!(LiteralPat, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let literal = node.literal().and_then(|x| self.emit_literal(&x));
let label = self.trap.emit(generated::LiteralPat {
id: TrapId::Star,
@@ -1790,9 +1603,6 @@ impl Translator<'_> {
if self.should_be_excluded(node) {
return None;
}
- if self.should_be_excluded_attrs(node) {
- return None;
- }
let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect();
let label = node.label().and_then(|x| self.emit_label(&x));
let loop_body = node.loop_body().and_then(|x| self.emit_block_expr(&x));
@@ -1815,12 +1625,13 @@ impl Translator<'_> {
if self.should_be_excluded(node) {
return None;
}
- if self.should_be_excluded_attrs(node) {
- return None;
- }
let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect();
let path = node.path().and_then(|x| self.emit_path(&x));
- let token_tree = node.token_tree().and_then(|x| self.emit_token_tree(&x));
+ let token_tree = if self.should_skip_bodies() {
+ None
+ } else {
+ node.token_tree().and_then(|x| self.emit_token_tree(&x))
+ };
let label = self.trap.emit(generated::MacroCall {
id: TrapId::Star,
attrs,
@@ -1840,12 +1651,17 @@ impl Translator<'_> {
if self.should_be_excluded(node) {
return None;
}
- if self.should_be_excluded_attrs(node) {
- return None;
- }
- let args = node.args().and_then(|x| self.emit_token_tree(&x));
+ let args = if self.should_skip_bodies() {
+ None
+ } else {
+ node.args().and_then(|x| self.emit_token_tree(&x))
+ };
let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect();
- let body = node.body().and_then(|x| self.emit_token_tree(&x));
+ let body = if self.should_skip_bodies() {
+ None
+ } else {
+ node.body().and_then(|x| self.emit_token_tree(&x))
+ };
let name = node.name().and_then(|x| self.emit_name(&x));
let visibility = node.visibility().and_then(|x| self.emit_visibility(&x));
let label = self.trap.emit(generated::MacroDef {
@@ -1866,9 +1682,6 @@ impl Translator<'_> {
node: &ast::MacroExpr,
) -> Option> {
pre_emit!(MacroExpr, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let macro_call = node.macro_call().and_then(|x| self.emit_macro_call(&x));
let label = self.trap.emit(generated::MacroExpr {
id: TrapId::Star,
@@ -1884,9 +1697,6 @@ impl Translator<'_> {
node: &ast::MacroItems,
) -> Option> {
pre_emit!(MacroItems, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let items = node.items().filter_map(|x| self.emit_item(&x)).collect();
let label = self.trap.emit(generated::MacroItems {
id: TrapId::Star,
@@ -1902,9 +1712,6 @@ impl Translator<'_> {
node: &ast::MacroPat,
) -> Option> {
pre_emit!(MacroPat, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let macro_call = node.macro_call().and_then(|x| self.emit_macro_call(&x));
let label = self.trap.emit(generated::MacroPat {
id: TrapId::Star,
@@ -1923,9 +1730,6 @@ impl Translator<'_> {
if self.should_be_excluded(node) {
return None;
}
- if self.should_be_excluded_attrs(node) {
- return None;
- }
let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect();
let name = node.name().and_then(|x| self.emit_name(&x));
let token_tree = node.token_tree().and_then(|x| self.emit_token_tree(&x));
@@ -1947,9 +1751,6 @@ impl Translator<'_> {
node: &ast::MacroStmts,
) -> Option> {
pre_emit!(MacroBlockExpr, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let tail_expr = node.expr().and_then(|x| self.emit_expr(&x));
let statements = node
.statements()
@@ -1970,9 +1771,6 @@ impl Translator<'_> {
node: &ast::MacroType,
) -> Option> {
pre_emit!(MacroTypeRepr, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let macro_call = node.macro_call().and_then(|x| self.emit_macro_call(&x));
let label = self.trap.emit(generated::MacroTypeRepr {
id: TrapId::Star,
@@ -1991,9 +1789,6 @@ impl Translator<'_> {
if self.should_be_excluded(node) {
return None;
}
- if self.should_be_excluded_attrs(node) {
- return None;
- }
let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect();
let expr = node.expr().and_then(|x| self.emit_expr(&x));
let guard = node.guard().and_then(|x| self.emit_match_guard(&x));
@@ -2018,9 +1813,6 @@ impl Translator<'_> {
if self.should_be_excluded(node) {
return None;
}
- if self.should_be_excluded_attrs(node) {
- return None;
- }
let arms = node
.arms()
.filter_map(|x| self.emit_match_arm(&x))
@@ -2044,9 +1836,6 @@ impl Translator<'_> {
if self.should_be_excluded(node) {
return None;
}
- if self.should_be_excluded_attrs(node) {
- return None;
- }
let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect();
let scrutinee = node.expr().and_then(|x| self.emit_expr(&x));
let match_arm_list = node
@@ -2068,9 +1857,6 @@ impl Translator<'_> {
node: &ast::MatchGuard,
) -> Option> {
pre_emit!(MatchGuard, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let condition = node.condition().and_then(|x| self.emit_expr(&x));
let label = self.trap.emit(generated::MatchGuard {
id: TrapId::Star,
@@ -2083,9 +1869,6 @@ impl Translator<'_> {
}
pub(crate) fn emit_meta(&mut self, node: &ast::Meta) -> Option> {
pre_emit!(Meta, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let expr = node.expr().and_then(|x| self.emit_expr(&x));
let is_unsafe = node.unsafe_token().is_some();
let path = node.path().and_then(|x| self.emit_path(&x));
@@ -2110,9 +1893,6 @@ impl Translator<'_> {
if self.should_be_excluded(node) {
return None;
}
- if self.should_be_excluded_attrs(node) {
- return None;
- }
let arg_list = node.arg_list().and_then(|x| self.emit_arg_list(&x));
let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect();
let generic_arg_list = node
@@ -2138,9 +1918,6 @@ impl Translator<'_> {
if self.should_be_excluded(node) {
return None;
}
- if self.should_be_excluded_attrs(node) {
- return None;
- }
let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect();
let item_list = node.item_list().and_then(|x| self.emit_item_list(&x));
let name = node.name().and_then(|x| self.emit_name(&x));
@@ -2159,9 +1936,6 @@ impl Translator<'_> {
}
pub(crate) fn emit_name(&mut self, node: &ast::Name) -> Option> {
pre_emit!(Name, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let text = node.try_get_text();
let label = self.trap.emit(generated::Name {
id: TrapId::Star,
@@ -2177,9 +1951,6 @@ impl Translator<'_> {
node: &ast::NameRef,
) -> Option> {
pre_emit!(NameRef, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let text = node.try_get_text();
let label = self.trap.emit(generated::NameRef {
id: TrapId::Star,
@@ -2195,9 +1966,6 @@ impl Translator<'_> {
node: &ast::NeverType,
) -> Option> {
pre_emit!(NeverTypeRepr, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let label = self
.trap
.emit(generated::NeverTypeRepr { id: TrapId::Star });
@@ -2214,9 +1982,6 @@ impl Translator<'_> {
if self.should_be_excluded(node) {
return None;
}
- if self.should_be_excluded_attrs(node) {
- return None;
- }
let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect();
let fields = node
.fields()
@@ -2236,9 +2001,6 @@ impl Translator<'_> {
}
pub(crate) fn emit_or_pat(&mut self, node: &ast::OrPat) -> Option> {
pre_emit!(OrPat, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let pats = node.pats().filter_map(|x| self.emit_pat(&x)).collect();
let label = self.trap.emit(generated::OrPat {
id: TrapId::Star,
@@ -2254,11 +2016,12 @@ impl Translator<'_> {
if self.should_be_excluded(node) {
return None;
}
- if self.should_be_excluded_attrs(node) {
- return None;
- }
let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect();
- let pat = node.pat().and_then(|x| self.emit_pat(&x));
+ let pat = if self.should_skip_bodies() {
+ None
+ } else {
+ node.pat().and_then(|x| self.emit_pat(&x))
+ };
let type_repr = node.ty().and_then(|x| self.emit_type(&x));
let label = self.trap.emit(generated::Param {
id: TrapId::Star,
@@ -2276,9 +2039,6 @@ impl Translator<'_> {
node: &ast::ParamList,
) -> Option> {
pre_emit!(ParamList, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let params = node.params().filter_map(|x| self.emit_param(&x)).collect();
let self_param = node.self_param().and_then(|x| self.emit_self_param(&x));
let label = self.trap.emit(generated::ParamList {
@@ -2299,9 +2059,6 @@ impl Translator<'_> {
if self.should_be_excluded(node) {
return None;
}
- if self.should_be_excluded_attrs(node) {
- return None;
- }
let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect();
let expr = node.expr().and_then(|x| self.emit_expr(&x));
let label = self.trap.emit(generated::ParenExpr {
@@ -2319,9 +2076,6 @@ impl Translator<'_> {
node: &ast::ParenPat,
) -> Option> {
pre_emit!(ParenPat, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let pat = node.pat().and_then(|x| self.emit_pat(&x));
let label = self.trap.emit(generated::ParenPat {
id: TrapId::Star,
@@ -2337,9 +2091,6 @@ impl Translator<'_> {
node: &ast::ParenType,
) -> Option> {
pre_emit!(ParenTypeRepr, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let type_repr = node.ty().and_then(|x| self.emit_type(&x));
let label = self.trap.emit(generated::ParenTypeRepr {
id: TrapId::Star,
@@ -2355,9 +2106,6 @@ impl Translator<'_> {
node: &ast::ParenthesizedArgList,
) -> Option> {
pre_emit!(ParenthesizedArgList, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let type_args = node
.type_args()
.filter_map(|x| self.emit_type_arg(&x))
@@ -2373,9 +2121,6 @@ impl Translator<'_> {
}
pub(crate) fn emit_path(&mut self, node: &ast::Path) -> Option> {
pre_emit!(Path, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let qualifier = node.qualifier().and_then(|x| self.emit_path(&x));
let segment = node.segment().and_then(|x| self.emit_path_segment(&x));
let label = self.trap.emit(generated::Path {
@@ -2396,9 +2141,6 @@ impl Translator<'_> {
if self.should_be_excluded(node) {
return None;
}
- if self.should_be_excluded_attrs(node) {
- return None;
- }
let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect();
let path = node.path().and_then(|x| self.emit_path(&x));
let label = self.trap.emit(generated::PathExpr {
@@ -2416,9 +2158,6 @@ impl Translator<'_> {
node: &ast::PathPat,
) -> Option> {
pre_emit!(PathPat, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let path = node.path().and_then(|x| self.emit_path(&x));
let label = self.trap.emit(generated::PathPat {
id: TrapId::Star,
@@ -2434,9 +2173,6 @@ impl Translator<'_> {
node: &ast::PathSegment,
) -> Option> {
pre_emit!(PathSegment, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let generic_arg_list = node
.generic_arg_list()
.and_then(|x| self.emit_generic_arg_list(&x));
@@ -2466,9 +2202,6 @@ impl Translator<'_> {
node: &ast::PathType,
) -> Option> {
pre_emit!(PathTypeRepr, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let path = node.path().and_then(|x| self.emit_path(&x));
let label = self.trap.emit(generated::PathTypeRepr {
id: TrapId::Star,
@@ -2487,9 +2220,6 @@ impl Translator<'_> {
if self.should_be_excluded(node) {
return None;
}
- if self.should_be_excluded_attrs(node) {
- return None;
- }
let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect();
let expr = node.expr().and_then(|x| self.emit_expr(&x));
let operator_name = node.try_get_text();
@@ -2509,9 +2239,6 @@ impl Translator<'_> {
node: &ast::PtrType,
) -> Option> {
pre_emit!(PtrTypeRepr, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let is_const = node.const_token().is_some();
let is_mut = node.mut_token().is_some();
let type_repr = node.ty().and_then(|x| self.emit_type(&x));
@@ -2534,9 +2261,6 @@ impl Translator<'_> {
if self.should_be_excluded(node) {
return None;
}
- if self.should_be_excluded_attrs(node) {
- return None;
- }
let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect();
let end = node.end().and_then(|x| self.emit_expr(&x));
let operator_name = node.try_get_text();
@@ -2558,9 +2282,6 @@ impl Translator<'_> {
node: &ast::RangePat,
) -> Option> {
pre_emit!(RangePat, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let end = node.end().and_then(|x| self.emit_pat(&x));
let operator_name = node.try_get_text();
let start = node.start().and_then(|x| self.emit_pat(&x));
@@ -2580,9 +2301,6 @@ impl Translator<'_> {
node: &ast::RecordExpr,
) -> Option> {
pre_emit!(StructExpr, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let path = node.path().and_then(|x| self.emit_path(&x));
let struct_expr_field_list = node
.record_expr_field_list()
@@ -2605,9 +2323,6 @@ impl Translator<'_> {
if self.should_be_excluded(node) {
return None;
}
- if self.should_be_excluded_attrs(node) {
- return None;
- }
let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect();
let expr = node.expr().and_then(|x| self.emit_expr(&x));
let identifier = node.name_ref().and_then(|x| self.emit_name_ref(&x));
@@ -2630,9 +2345,6 @@ impl Translator<'_> {
if self.should_be_excluded(node) {
return None;
}
- if self.should_be_excluded_attrs(node) {
- return None;
- }
let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect();
let fields = node
.fields()
@@ -2658,9 +2370,6 @@ impl Translator<'_> {
if self.should_be_excluded(node) {
return None;
}
- if self.should_be_excluded_attrs(node) {
- return None;
- }
let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect();
let default = node.expr().and_then(|x| self.emit_expr(&x));
let is_unsafe = node.unsafe_token().is_some();
@@ -2686,9 +2395,6 @@ impl Translator<'_> {
node: &ast::RecordFieldList,
) -> Option> {
pre_emit!(StructFieldList, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let fields = node
.fields()
.filter_map(|x| self.emit_record_field(&x))
@@ -2707,9 +2413,6 @@ impl Translator<'_> {
node: &ast::RecordPat,
) -> Option> {
pre_emit!(StructPat, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let path = node.path().and_then(|x| self.emit_path(&x));
let struct_pat_field_list = node
.record_pat_field_list()
@@ -2732,9 +2435,6 @@ impl Translator<'_> {
if self.should_be_excluded(node) {
return None;
}
- if self.should_be_excluded_attrs(node) {
- return None;
- }
let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect();
let identifier = node.name_ref().and_then(|x| self.emit_name_ref(&x));
let pat = node.pat().and_then(|x| self.emit_pat(&x));
@@ -2754,9 +2454,6 @@ impl Translator<'_> {
node: &ast::RecordPatFieldList,
) -> Option> {
pre_emit!(StructPatFieldList, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let fields = node
.fields()
.filter_map(|x| self.emit_record_pat_field(&x))
@@ -2780,9 +2477,6 @@ impl Translator<'_> {
if self.should_be_excluded(node) {
return None;
}
- if self.should_be_excluded_attrs(node) {
- return None;
- }
let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect();
let expr = node.expr().and_then(|x| self.emit_expr(&x));
let is_const = node.const_token().is_some();
@@ -2803,9 +2497,6 @@ impl Translator<'_> {
}
pub(crate) fn emit_ref_pat(&mut self, node: &ast::RefPat) -> Option> {
pre_emit!(RefPat, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let is_mut = node.mut_token().is_some();
let pat = node.pat().and_then(|x| self.emit_pat(&x));
let label = self.trap.emit(generated::RefPat {
@@ -2823,9 +2514,6 @@ impl Translator<'_> {
node: &ast::RefType,
) -> Option> {
pre_emit!(RefTypeRepr, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let is_mut = node.mut_token().is_some();
let lifetime = node.lifetime().and_then(|x| self.emit_lifetime(&x));
let type_repr = node.ty().and_then(|x| self.emit_type(&x));
@@ -2842,9 +2530,6 @@ impl Translator<'_> {
}
pub(crate) fn emit_rename(&mut self, node: &ast::Rename) -> Option> {
pre_emit!(Rename, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let name = node.name().and_then(|x| self.emit_name(&x));
let label = self.trap.emit(generated::Rename {
id: TrapId::Star,
@@ -2863,9 +2548,6 @@ impl Translator<'_> {
if self.should_be_excluded(node) {
return None;
}
- if self.should_be_excluded_attrs(node) {
- return None;
- }
let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect();
let label = self.trap.emit(generated::RestPat {
id: TrapId::Star,
@@ -2881,9 +2563,6 @@ impl Translator<'_> {
node: &ast::RetType,
) -> Option> {
pre_emit!(RetTypeRepr, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let type_repr = node.ty().and_then(|x| self.emit_type(&x));
let label = self.trap.emit(generated::RetTypeRepr {
id: TrapId::Star,
@@ -2902,9 +2581,6 @@ impl Translator<'_> {
if self.should_be_excluded(node) {
return None;
}
- if self.should_be_excluded_attrs(node) {
- return None;
- }
let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect();
let expr = node.expr().and_then(|x| self.emit_expr(&x));
let label = self.trap.emit(generated::ReturnExpr {
@@ -2922,9 +2598,6 @@ impl Translator<'_> {
node: &ast::ReturnTypeSyntax,
) -> Option> {
pre_emit!(ReturnTypeSyntax, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let label = self
.trap
.emit(generated::ReturnTypeSyntax { id: TrapId::Star });
@@ -2941,9 +2614,6 @@ impl Translator<'_> {
if self.should_be_excluded(node) {
return None;
}
- if self.should_be_excluded_attrs(node) {
- return None;
- }
let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect();
let is_ref = node.amp_token().is_some();
let is_mut = node.mut_token().is_some();
@@ -2969,9 +2639,6 @@ impl Translator<'_> {
node: &ast::SlicePat,
) -> Option> {
pre_emit!(SlicePat, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let pats = node.pats().filter_map(|x| self.emit_pat(&x)).collect();
let label = self.trap.emit(generated::SlicePat {
id: TrapId::Star,
@@ -2987,9 +2654,6 @@ impl Translator<'_> {
node: &ast::SliceType,
) -> Option> {
pre_emit!(SliceTypeRepr, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let type_repr = node.ty().and_then(|x| self.emit_type(&x));
let label = self.trap.emit(generated::SliceTypeRepr {
id: TrapId::Star,
@@ -3008,9 +2672,6 @@ impl Translator<'_> {
if self.should_be_excluded(node) {
return None;
}
- if self.should_be_excluded_attrs(node) {
- return None;
- }
let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect();
let items = node.items().filter_map(|x| self.emit_item(&x)).collect();
let label = self.trap.emit(generated::SourceFile {
@@ -3028,11 +2689,12 @@ impl Translator<'_> {
if self.should_be_excluded(node) {
return None;
}
- if self.should_be_excluded_attrs(node) {
- return None;
- }
let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect();
- let body = node.body().and_then(|x| self.emit_expr(&x));
+ let body = if self.should_skip_bodies() {
+ None
+ } else {
+ node.body().and_then(|x| self.emit_expr(&x))
+ };
let is_mut = node.mut_token().is_some();
let is_static = node.static_token().is_some();
let is_unsafe = node.unsafe_token().is_some();
@@ -3063,9 +2725,6 @@ impl Translator<'_> {
if self.should_be_excluded(node) {
return None;
}
- if self.should_be_excluded_attrs(node) {
- return None;
- }
let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect();
let statements = node
.statements()
@@ -3088,9 +2747,6 @@ impl Translator<'_> {
if self.should_be_excluded(node) {
return None;
}
- if self.should_be_excluded_attrs(node) {
- return None;
- }
let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect();
let field_list = node.field_list().and_then(|x| self.emit_field_list(&x));
let generic_param_list = node
@@ -3118,9 +2774,6 @@ impl Translator<'_> {
node: &ast::TokenTree,
) -> Option> {
pre_emit!(TokenTree, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let label = self.trap.emit(generated::TokenTree { id: TrapId::Star });
self.emit_location(label, node);
post_emit!(TokenTree, self, node, label);
@@ -3132,9 +2785,6 @@ impl Translator<'_> {
if self.should_be_excluded(node) {
return None;
}
- if self.should_be_excluded_attrs(node) {
- return None;
- }
let assoc_item_list = node
.assoc_item_list()
.and_then(|x| self.emit_assoc_item_list(&x));
@@ -3175,9 +2825,6 @@ impl Translator<'_> {
if self.should_be_excluded(node) {
return None;
}
- if self.should_be_excluded_attrs(node) {
- return None;
- }
let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect();
let generic_param_list = node
.generic_param_list()
@@ -3210,9 +2857,6 @@ impl Translator<'_> {
if self.should_be_excluded(node) {
return None;
}
- if self.should_be_excluded_attrs(node) {
- return None;
- }
let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect();
let expr = node.expr().and_then(|x| self.emit_expr(&x));
let label = self.trap.emit(generated::TryExpr {
@@ -3233,9 +2877,6 @@ impl Translator<'_> {
if self.should_be_excluded(node) {
return None;
}
- if self.should_be_excluded_attrs(node) {
- return None;
- }
let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect();
let fields = node.fields().filter_map(|x| self.emit_expr(&x)).collect();
let label = self.trap.emit(generated::TupleExpr {
@@ -3256,9 +2897,6 @@ impl Translator<'_> {
if self.should_be_excluded(node) {
return None;
}
- if self.should_be_excluded_attrs(node) {
- return None;
- }
let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect();
let type_repr = node.ty().and_then(|x| self.emit_type(&x));
let visibility = node.visibility().and_then(|x| self.emit_visibility(&x));
@@ -3278,9 +2916,6 @@ impl Translator<'_> {
node: &ast::TupleFieldList,
) -> Option> {
pre_emit!(TupleFieldList, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let fields = node
.fields()
.filter_map(|x| self.emit_tuple_field(&x))
@@ -3299,9 +2934,6 @@ impl Translator<'_> {
node: &ast::TuplePat,
) -> Option> {
pre_emit!(TuplePat, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let fields = node.fields().filter_map(|x| self.emit_pat(&x)).collect();
let label = self.trap.emit(generated::TuplePat {
id: TrapId::Star,
@@ -3317,9 +2949,6 @@ impl Translator<'_> {
node: &ast::TupleStructPat,
) -> Option> {
pre_emit!(TupleStructPat, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let fields = node.fields().filter_map(|x| self.emit_pat(&x)).collect();
let path = node.path().and_then(|x| self.emit_path(&x));
let label = self.trap.emit(generated::TupleStructPat {
@@ -3337,9 +2966,6 @@ impl Translator<'_> {
node: &ast::TupleType,
) -> Option> {
pre_emit!(TupleTypeRepr, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let fields = node.fields().filter_map(|x| self.emit_type(&x)).collect();
let label = self.trap.emit(generated::TupleTypeRepr {
id: TrapId::Star,
@@ -3358,9 +2984,6 @@ impl Translator<'_> {
if self.should_be_excluded(node) {
return None;
}
- if self.should_be_excluded_attrs(node) {
- return None;
- }
let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect();
let generic_param_list = node
.generic_param_list()
@@ -3394,9 +3017,6 @@ impl Translator<'_> {
node: &ast::TypeArg,
) -> Option> {
pre_emit!(TypeArg, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let type_repr = node.ty().and_then(|x| self.emit_type(&x));
let label = self.trap.emit(generated::TypeArg {
id: TrapId::Star,
@@ -3412,9 +3032,6 @@ impl Translator<'_> {
node: &ast::TypeBound,
) -> Option> {
pre_emit!(TypeBound, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let is_async = node.async_token().is_some();
let is_const = node.const_token().is_some();
let lifetime = node.lifetime().and_then(|x| self.emit_lifetime(&x));
@@ -3440,9 +3057,6 @@ impl Translator<'_> {
node: &ast::TypeBoundList,
) -> Option> {
pre_emit!(TypeBoundList, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let bounds = node
.bounds()
.filter_map(|x| self.emit_type_bound(&x))
@@ -3464,9 +3078,6 @@ impl Translator<'_> {
if self.should_be_excluded(node) {
return None;
}
- if self.should_be_excluded_attrs(node) {
- return None;
- }
let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect();
let default_type = node.default_type().and_then(|x| self.emit_type(&x));
let name = node.name().and_then(|x| self.emit_name(&x));
@@ -3493,9 +3104,6 @@ impl Translator<'_> {
if self.should_be_excluded(node) {
return None;
}
- if self.should_be_excluded_attrs(node) {
- return None;
- }
let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect();
let label = self.trap.emit(generated::UnderscoreExpr {
id: TrapId::Star,
@@ -3511,9 +3119,6 @@ impl Translator<'_> {
if self.should_be_excluded(node) {
return None;
}
- if self.should_be_excluded_attrs(node) {
- return None;
- }
let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect();
let generic_param_list = node
.generic_param_list()
@@ -3543,9 +3148,6 @@ impl Translator<'_> {
if self.should_be_excluded(node) {
return None;
}
- if self.should_be_excluded_attrs(node) {
- return None;
- }
let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect();
let use_tree = node.use_tree().and_then(|x| self.emit_use_tree(&x));
let visibility = node.visibility().and_then(|x| self.emit_visibility(&x));
@@ -3565,9 +3167,6 @@ impl Translator<'_> {
node: &ast::UseBoundGenericArgs,
) -> Option> {
pre_emit!(UseBoundGenericArgs, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let use_bound_generic_args = node
.use_bound_generic_args()
.filter_map(|x| self.emit_use_bound_generic_arg(&x))
@@ -3586,9 +3185,6 @@ impl Translator<'_> {
node: &ast::UseTree,
) -> Option> {
pre_emit!(UseTree, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let is_glob = node.star_token().is_some();
let path = node.path().and_then(|x| self.emit_path(&x));
let rename = node.rename().and_then(|x| self.emit_rename(&x));
@@ -3612,9 +3208,6 @@ impl Translator<'_> {
node: &ast::UseTreeList,
) -> Option> {
pre_emit!(UseTreeList, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let use_trees = node
.use_trees()
.filter_map(|x| self.emit_use_tree(&x))
@@ -3636,9 +3229,6 @@ impl Translator<'_> {
if self.should_be_excluded(node) {
return None;
}
- if self.should_be_excluded_attrs(node) {
- return None;
- }
let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect();
let discriminant = node.expr().and_then(|x| self.emit_expr(&x));
let field_list = node.field_list().and_then(|x| self.emit_field_list(&x));
@@ -3662,9 +3252,6 @@ impl Translator<'_> {
node: &ast::VariantList,
) -> Option> {
pre_emit!(VariantList, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let variants = node
.variants()
.filter_map(|x| self.emit_variant(&x))
@@ -3683,9 +3270,6 @@ impl Translator<'_> {
node: &ast::Visibility,
) -> Option> {
pre_emit!(Visibility, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let path = node.path().and_then(|x| self.emit_path(&x));
let label = self.trap.emit(generated::Visibility {
id: TrapId::Star,
@@ -3701,9 +3285,6 @@ impl Translator<'_> {
node: &ast::WhereClause,
) -> Option> {
pre_emit!(WhereClause, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let predicates = node
.predicates()
.filter_map(|x| self.emit_where_pred(&x))
@@ -3722,9 +3303,6 @@ impl Translator<'_> {
node: &ast::WherePred,
) -> Option> {
pre_emit!(WherePred, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let generic_param_list = node
.generic_param_list()
.and_then(|x| self.emit_generic_param_list(&x));
@@ -3753,9 +3331,6 @@ impl Translator<'_> {
if self.should_be_excluded(node) {
return None;
}
- if self.should_be_excluded_attrs(node) {
- return None;
- }
let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect();
let condition = node.condition().and_then(|x| self.emit_expr(&x));
let label = node.label().and_then(|x| self.emit_label(&x));
@@ -3777,9 +3352,6 @@ impl Translator<'_> {
node: &ast::WildcardPat,
) -> Option> {
pre_emit!(WildcardPat, self, node);
- if self.should_be_excluded(node) {
- return None;
- }
let label = self.trap.emit(generated::WildcardPat { id: TrapId::Star });
self.emit_location(label, node);
post_emit!(WildcardPat, self, node, label);
@@ -3794,9 +3366,6 @@ impl Translator<'_> {
if self.should_be_excluded(node) {
return None;
}
- if self.should_be_excluded_attrs(node) {
- return None;
- }
let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect();
let expr = node.expr().and_then(|x| self.emit_expr(&x));
let label = self.trap.emit(generated::YeetExpr {
@@ -3817,9 +3386,6 @@ impl Translator<'_> {
if self.should_be_excluded(node) {
return None;
}
- if self.should_be_excluded_attrs(node) {
- return None;
- }
let attrs = node.attrs().filter_map(|x| self.emit_attr(&x)).collect();
let expr = node.expr().and_then(|x| self.emit_expr(&x));
let label = self.trap.emit(generated::YieldExpr {
diff --git a/rust/misc/bulk_generation_targets.json b/rust/misc/bulk_generation_targets.json
deleted file mode 100644
index 274d5dc5b361..000000000000
--- a/rust/misc/bulk_generation_targets.json
+++ /dev/null
@@ -1,75 +0,0 @@
-{
- "strategy": "repo",
- "language": "rust",
- "targets": [
- {
- "name": "libc",
- "git_repo": "https://github.com/rust-lang/libc",
- "git_tag": "0.2.172"
- },
- {
- "name": "log",
- "git_repo": "https://github.com/rust-lang/log",
- "git_tag": "0.4.27"
- },
- {
- "name": "memchr",
- "git_repo": "https://github.com/BurntSushi/memchr",
- "git_tag": "2.7.4"
- },
- {
- "name": "once_cell",
- "git_repo": "https://github.com/matklad/once_cell",
- "git_tag": "v1.21.3"
- },
- {
- "name": "rand",
- "git_repo": "https://github.com/rust-random/rand",
- "git_tag": "0.9.1"
- },
- {
- "name": "smallvec",
- "git_repo": "https://github.com/servo/rust-smallvec",
- "git_tag": "v1.15.0"
- },
- {
- "name": "serde",
- "git_repo": "https://github.com/serde-rs/serde",
- "git_tag": "v1.0.219"
- },
- {
- "name": "tokio",
- "git_repo": "https://github.com/tokio-rs/tokio",
- "git_tag": "tokio-1.45.0"
- },
- {
- "name": "reqwest",
- "git_repo": "https://github.com/seanmonstar/reqwest",
- "git_tag": "v0.12.15"
- },
- {
- "name": "rocket",
- "git_repo": "https://github.com/SergioBenitez/Rocket",
- "git_tag": "v0.5.1"
- },
- {
- "name": "actix-web",
- "git_repo": "https://github.com/actix/actix-web",
- "git_tag": "web-v4.11.0"
- },
- {
- "name": "hyper",
- "git_repo": "https://github.com/hyperium/hyper",
- "git_tag": "v1.6.0"
- },
- {
- "name": "clap",
- "git_repo": "https://github.com/clap-rs/clap",
- "git_tag": "v4.5.38"
- }
- ],
- "destination": "rust/ql/lib/ext/generated",
- "extractor_options": [
- "cargo_features='*'"
- ]
-}
\ No newline at end of file
diff --git a/rust/ql/.generated.list b/rust/ql/.generated.list
index eb60dccb3e6a..7c60da3abb77 100644
--- a/rust/ql/.generated.list
+++ b/rust/ql/.generated.list
@@ -1,4 +1,4 @@
-lib/codeql/rust/controlflow/internal/generated/CfgNodes.qll bd01b4d17625ee8c0da93231cf2291deb7e57db2c8aaa2c37968553c3144c47e 6e6ac58e09b84d02f461699a25ee80798a1bdc51c1836d9d75f5b52e93ae7ba6
+lib/codeql/rust/controlflow/internal/generated/CfgNodes.qll 6a103a6d04c951ca2f0c2989bed737cdbac56dd5ea9432b858da3416412bbf79 cf2bc67b65a1555de58bbd0a35b834b8867112a2f7c1951307c9416400ce70d0
lib/codeql/rust/elements/Abi.qll 485a2e79f6f7bfd1c02a6e795a71e62dede3c3e150149d5f8f18b761253b7208 6159ba175e7ead0dd2e3f2788f49516c306ee11b1a443bd4bdc00b7017d559bd
lib/codeql/rust/elements/Addressable.qll 13011bfd2e1556694c3d440cc34af8527da4df49ad92b62f2939d3699ff2cea5 ddb25935f7553a1a384b1abe2e4b4fa90ab50b952dadec32fd867afcb054f4be
lib/codeql/rust/elements/ArgList.qll 3d2f6f5542340b80a4c6e944ac17aba0d00727588bb66e501453ac0f80c82f83 afd52700bf5a337f19827846667cd0fb1fea5abbbcbc353828e292a727ea58c9
@@ -33,7 +33,7 @@ lib/codeql/rust/elements/BoxPat.qll 1b2c3fff171aa6aa238c9460b122f26c79e04577cea6
lib/codeql/rust/elements/BreakExpr.qll 7ca3807a20e9a9a988d1fd7abebf240325ed422fcb45c719ba46272f031f94db dffb7379d3f3ba220acfbd05eb7bb6cfd9cfda211e9c8b1f5240ca5fa61be3fc
lib/codeql/rust/elements/CallExpr.qll f336500ca7a611b164d48b90e80edb0c0d3816792b0ececce659ac1ff1ffeb3e f99a9c55466418ef53860c44d9f2d6161af4b492178ddd9e5870dff742b70ae5
lib/codeql/rust/elements/CallExprBase.qll 2846202b5208b541977500286951d96487bf555838c6c16cdd006a71e383745a c789d412bf099c624329379e0c7d94fa0d23ae2edea7a25a2ea0f3c0042ccf62
-lib/codeql/rust/elements/Callable.qll e1ed21a7e6bd2426f6ccd0e46cee506d8ebf90a6fdc4dca0979157da439853aa 02f6c09710116ce82157aec9a5ec706983c38e4d85cc631327baf8d409b018c6
+lib/codeql/rust/elements/Callable.qll 0f7f78c3bfabbe24962f6232b0440d27e51f06d2b8d341fc623ffbfbff173f47 5fd13aaa0eaf76ea0b47fa0641bd23eea20a069f0b3cbc1ee4e290e88321008a
lib/codeql/rust/elements/CastExpr.qll 2fe1f36ba31fa29de309baf0a665cfcae67b61c73345e8f9bbd41e8c235fec45 c5b4c1e9dc24eb2357799defcb2df25989075e3a80e8663b74204a1c1b70e29a
lib/codeql/rust/elements/ClosureBinder.qll 02c8e83bf07deaf7bf0233b76623ec7f1837be8b77fe7e1c23544edc7d85e3c4 2b114d9a6dede694324aebe3dac80a802d139cfacd39beb0f12b5b0a46ee6390
lib/codeql/rust/elements/ClosureExpr.qll 67e2a106e9154c90367b129987e574d2a9ecf5b297536627e43706675d35eaed d6a381132ddd589c5a7ce174f50f9620041ddf690e15a65ebfb05ff7e7c02de7
@@ -240,7 +240,6 @@ lib/codeql/rust/elements/internal/BlockExprImpl.qll 36ac09e4a6eeeec22919b62b1d00
lib/codeql/rust/elements/internal/BoxPatConstructor.qll 153f110ba25fd6c889092bfd16f73bb610fa60d6e0c8965d5f44d2446fcd48a2 9324cf0d8aa29945551bf8ab64801d598f57aab8cd4e19bcd4e9ef8a4a4e06eb
lib/codeql/rust/elements/internal/BreakExprConstructor.qll 356be043c28e0b34fdf925a119c945632ee883c6f5ebb9a27003c6a8d250afd9 bb77e66b04bb9489340e7506931559b94285c6904b6f9d2f83b214cba4f3cfd5
lib/codeql/rust/elements/internal/CallExprConstructor.qll 742b38e862e2cf82fd1ecc4d4fc5b4782a9c7c07f031452b2bae7aa59d5aa13a cad6e0a8be21d91b20ac2ec16cab9c30eae810b452c0f1992ed87d5c7f4144dc
-lib/codeql/rust/elements/internal/CallableImpl.qll 917a7d298583e15246428f32fba4cde6fc57a1790262731be27a96baddd8cf5e c5c0848024e0fe3fbb775e7750cf1a2c2dfa454a5aef0df55fec3d0a6fe99190
lib/codeql/rust/elements/internal/CastExprConstructor.qll f3d6e10c4731f38a384675aeab3fba47d17b9e15648293787092bb3247ed808d d738a7751dbadb70aa1dcffcf8af7fa61d4cf8029798369a7e8620013afff4ed
lib/codeql/rust/elements/internal/ClosureBinderConstructor.qll 6e376ab9d40308e95bcdaf1cc892472c92099d477720192cd382d2c4e0d9c8a1 60a0efe50203ad5bb97bdfc06d602182edcc48ac9670f2d27a9675bd9fd8e19f
lib/codeql/rust/elements/internal/ClosureBinderImpl.qll 9f6ce7068b5c17df44f00037ebb42e6c8fdbbbd09bf89951221fb04f378fbdf1 6e6e372e151fe0b0f17a5ea0ed774553b6ed0bf53e1d377e5ed24a0f98529735
@@ -492,13 +491,13 @@ lib/codeql/rust/elements/internal/generated/BlockExpr.qll 5a5ddbe34bc478a7bd9b0d
lib/codeql/rust/elements/internal/generated/BoxPat.qll 597bed52f7489e0addce3266f7bee5be7c53d2d1263eceec3a252d041ca0908f b8ccf363ca5f1a988547caf1fd266a55aec7cbf8623578deea99765d264b0151
lib/codeql/rust/elements/internal/generated/BreakExpr.qll 0f428a8b2f4209b134c2ffc3e1c93c30bc6b0e9c9172f140cefa88c1f77d8690 957b39f38ff6befe9061f55bc0b403c2f1c366dd0cf63b874bae6f8216576d76
lib/codeql/rust/elements/internal/generated/CallExpr.qll f1b8dae487077cc9d1dccf8c3cd61fd17afe860585f17ce8b860be4859be7ca4 6034fc03778e38802cdf3a6e460364b74e92912622581b31e6179951022bbbd6
-lib/codeql/rust/elements/internal/generated/CallExprBase.qll cce796e36847249f416629bacf3ea146313084de3374587412e66c10d2917b83 c219aa2174321c161a4a742ca0605521687ca9a5ca32db453a5c62db6f7784cc
-lib/codeql/rust/elements/internal/generated/Callable.qll b0502b5263b7bcd18e740f284f992c0e600e37d68556e3e0ba54a2ac42b94934 bda3e1eea11cacf5a9b932cd72efc2de6105103e8c575880fcd0cd89daadf068
+lib/codeql/rust/elements/internal/generated/CallExprBase.qll 2268e01d65015014c05166161bb28e5a1e78164d525ca16fc1e3106866cf231d b2f9b912153ba4d3e3612df4f74ac0e83077c31d5b31383bd277974081417a56
+lib/codeql/rust/elements/internal/generated/Callable.qll 9a8661aa018fd90a21529760c1dbc46c1ad3649e17b030e59ced0683fbf83f8a 8b573adfc23ec0ac91949da415e6a0c988fa02cbce9534d45ac98a5512d7b1ca
lib/codeql/rust/elements/internal/generated/CastExpr.qll ddc20054b0b339ad4d40298f3461490d25d00af87c876da5ffbc6a11c0832295 f4247307afcd74d80e926f29f8c57e78c50800984483e6b6003a44681e4a71f3
lib/codeql/rust/elements/internal/generated/ClosureBinder.qll ab199df96f525a083a0762fd654cd098802033c79700a593bb204a9a0c69ec01 86b33543e0886715830cfcdaca43b555a242a4f12a4caa18b88732d5afb584bd
lib/codeql/rust/elements/internal/generated/ClosureExpr.qll 34149bf82f107591e65738221e1407ec1dc9cc0dfb10ae7f761116fda45162de fd2fbc9a87fc0773c940db64013cf784d5e4137515cc1020e2076da329f5a952
lib/codeql/rust/elements/internal/generated/Comment.qll cd1ef861e3803618f9f78a4ac00516d50ecfecdca1c1d14304dc5327cbe07a3b 8b67345aeb15beb5895212228761ea3496297846c93fd2127b417406ae87c201
-lib/codeql/rust/elements/internal/generated/Const.qll ab494351d5807321114620194c54ebf6b5bacf322b710edf7558b3ee092967ae 057d6a13b6a479bd69a2f291a6718a97747a20f517b16060223a412bbadc6083
+lib/codeql/rust/elements/internal/generated/Const.qll 6300d7150d03f6bc2f0b29bb7d4a7bc1381c377644b0c61860733be685bac646 f5299a799a33fa28ca5b6d198f43a80696556144236df39124784211a1ad8285
lib/codeql/rust/elements/internal/generated/ConstArg.qll c52bf746f2dc89b8d71b8419736707bfcbb09cca424c3ba76e888e2add415bf6 89309a9df4fde23cfd3d8492908ccec4d90cc8457d35c507ef81371a369941b4
lib/codeql/rust/elements/internal/generated/ConstBlockPat.qll 7526d83ee9565d74776f42db58b1a2efff6fb324cfc7137f51f2206fee815d79 0ab3c22908ff790e7092e576a5df3837db33c32a7922a513a0f5e495729c1ac5
lib/codeql/rust/elements/internal/generated/ConstParam.qll 2e24198f636e4932c79f28c324f395ae5f61f713795ed4543e920913898e2815 5abe6d3df395c679c28a7720479bad455c53bc5ade9133f1ff113ea54dc66c11
@@ -524,7 +523,7 @@ lib/codeql/rust/elements/internal/generated/FormatArgsArg.qll c762a4af8609472e28
lib/codeql/rust/elements/internal/generated/FormatArgsExpr.qll 8aed8715a27d3af3de56ded4610c6792a25216b1544eb7e57c8b0b37c14bd9c1 590a2b0063d2ecd00bbbd1ce29603c8fd69972e34e6daddf309c915ce4ec1375
lib/codeql/rust/elements/internal/generated/FormatArgument.qll cd05153276e63e689c95d5537fbc7d892615f62e110323759ef02e23a7587407 be2a4531b498f01625effa4c631d51ee8857698b00cfb829074120a0f2696d57
lib/codeql/rust/elements/internal/generated/FormatTemplateVariableAccess.qll a6175214fad445df9234b3ee9bf5147da75baf82473fb8d384b455e3add0dac1 a928db0ff126b2e54a18f5c488232abd1bd6c5eda24591d3c3bb80c6ee71c770
-lib/codeql/rust/elements/internal/generated/Function.qll 6c04fffdc9de54cd01ff76f93aef5fcd3f2f779a2735523c9b1a859d394cefc9 af3c0f05c05ecd74560ab7b128a4a8e9822aa3cb80eddf304d51ea44725ac706
+lib/codeql/rust/elements/internal/generated/Function.qll befc4220bef166531e52625b08642f129115ae918a70021d69874dc794e41be7 e6433f67000eb5f3e02b209d7ee8018fea30abed9e7c491fa1fbbd9d998e98ae
lib/codeql/rust/elements/internal/generated/GenericArg.qll 908dadf36a631bc9f4423ab473d1344ed882c7f3f85ac169d82e0099ff6337d4 c6ef5358db3a0318987962a51cbe6b77ae9c0e39c1312a059306e40e86db7eb8
lib/codeql/rust/elements/internal/generated/GenericArgList.qll b8cd936bba6f28344e28c98acf38acb8ef43af6ecf8367d79ed487e5b9da17cb 8b14331261e49d004807285b02fca190aafd62bfb9378b05c7d9c1e95525fe7b
lib/codeql/rust/elements/internal/generated/GenericParam.qll 85ac027a42b3300febc9f7ede1098d3ffae7bac571cba6391bc00f9061780324 806cb9d1b0e93442bef180e362c4abc055ab31867ff34bac734b89d32bd82aa1
@@ -578,7 +577,7 @@ lib/codeql/rust/elements/internal/generated/ParamList.qll eaa0cd4402d3665013d47e
lib/codeql/rust/elements/internal/generated/ParenExpr.qll 812d2ff65079277f39f15c084657a955a960a7c1c0e96dd60472a58d56b945eb eb8c607f43e1fcbb41f37a10de203a1db806690e10ff4f04d48ed874189cb0eb
lib/codeql/rust/elements/internal/generated/ParenPat.qll 24f9dc7fce75827d6fddb856cd48f80168143151b27295c0bab6db5a06567a09 ebadbc6f5498e9ed754b39893ce0763840409a0721036a25b56e1ead7dcc09aa
lib/codeql/rust/elements/internal/generated/ParenTypeRepr.qll 03f5c5b96a37adeb845352d7fcea3e098da9050e534972d14ac0f70d60a2d776 ed3d6e5d02086523087adebce4e89e35461eb95f2a66d1d4100fe23fc691b126
-lib/codeql/rust/elements/internal/generated/ParentChild.qll e2c6aaaa1735113f160c0e178d682bff8e9ebc627632f73c0dd2d1f4f9d692a8 61cf70eb649f241e2fcd5e0ba34df63f3a14f07032811b9ae151721783a0fd20
+lib/codeql/rust/elements/internal/generated/ParentChild.qll 5278b74de04d54708f078fd813d83ae5f934fa12d420b188c1334e3a7c3b8324 61cf70eb649f241e2fcd5e0ba34df63f3a14f07032811b9ae151721783a0fd20
lib/codeql/rust/elements/internal/generated/ParenthesizedArgList.qll d901fdc8142a5b8847cc98fc2afcfd16428b8ace4fbffb457e761b5fd3901a77 5dbb0aea5a13f937da666ccb042494af8f11e776ade1459d16b70a4dd193f9fb
lib/codeql/rust/elements/internal/generated/Pat.qll 3605ac062be2f294ee73336e9669027b8b655f4ad55660e1eab35266275154ee 7f9400db2884d336dd1d21df2a8093759c2a110be9bf6482ce8e80ae0fd74ed4
lib/codeql/rust/elements/internal/generated/Path.qll 9b12afb46fc5a9ad3a811b05472621bbecccb900c47504feb7f29d96b28421ca bcacbffc36fb3e0c9b26523b5963af0ffa9fd6b19f00a2a31bdb2316071546bd
@@ -593,7 +592,7 @@ lib/codeql/rust/elements/internal/generated/PtrTypeRepr.qll 8d0ea4f6c7f8203340bf
lib/codeql/rust/elements/internal/generated/PureSynthConstructors.qll e5b8e69519012bbaae29dcb82d53f7f7ecce368c0358ec27ef6180b228a0057f e5b8e69519012bbaae29dcb82d53f7f7ecce368c0358ec27ef6180b228a0057f
lib/codeql/rust/elements/internal/generated/RangeExpr.qll 23cca03bf43535f33b22a38894f70d669787be4e4f5b8fe5c8f7b964d30e9027 18624cef6c6b679eeace2a98737e472432e0ead354cca02192b4d45330f047c9
lib/codeql/rust/elements/internal/generated/RangePat.qll 80826a6a6868a803aa2372e31c52a03e1811a3f1f2abdb469f91ca0bfdd9ecb6 34ee1e208c1690cba505dff2c588837c0cd91e185e2a87d1fe673191962276a9
-lib/codeql/rust/elements/internal/generated/Raw.qll 55ec0031a67964805e9dfb8d3190385e101178d1bcce1c4efd53d8f58d1cf0be d34faae700e7c2cb9e6eb2183244ff900a270c761676491d3ffe6a939903edd7
+lib/codeql/rust/elements/internal/generated/Raw.qll b6e439cc24f8c02fe73301cd2bc16d59dfd28e2a8a201388d8318c43937309e2 62139c3df2f6c4dca1c897b1384233ff0151b7e5fb1c41a178c5e8e41b5e7f05
lib/codeql/rust/elements/internal/generated/RefExpr.qll 7d995884e3dc1c25fc719f5d7253179344d63650e217e9ff6530285fe7a57f64 f2c3c12551deea4964b66553fb9b6423ee16fec53bd63db4796191aa60dc6c66
lib/codeql/rust/elements/internal/generated/RefPat.qll 456ede39837463ee22a630ec7ab6c8630d3664a8ea206fcc6e4f199e92fa564c 5622062765f32930465ba6b170e986706f159f6070f48adee3c20e24e8df4e05
lib/codeql/rust/elements/internal/generated/RefTypeRepr.qll 5b0663a6d234572fb3e467e276d019415caa95ef006438cc59b7af4e1783161e 0e27c8a8f0e323c0e4d6db01fca821bf07c0864d293cdf96fa891b10820c1e4b
@@ -730,7 +729,8 @@ test/extractor-tests/generated/BreakExpr/BreakExpr.ql cdde2855d98f658187c60b9edc
test/extractor-tests/generated/BreakExpr/BreakExpr_getAttr.ql c7690a9aab1923bf3c2fb06f0a1d441d480b3c91ee1df3a868bbbd96c4042053 c592dd077fb6e22b2d6ddcaec37da2c5a26ba92d84f5d1ae4c78a615b9013765
test/extractor-tests/generated/BreakExpr/BreakExpr_getExpr.ql 0358f4fe6a66da56177703cf0e991042729c5e34ae8b6dccbb827f95fe936c72 1cb2dd778c50e19fe04c5fdf3a08a502635ea8303e71ff38d03aa7dc53213986
test/extractor-tests/generated/BreakExpr/BreakExpr_getLifetime.ql ad83cc0db3c0f959fef6bb7ce0938d241a877e8cf84d15fb63879be2fe47238c 240b2fe2156b763d3a82fc64159615872db65b65ffb9ba2f3fd5d1ebd6c60f34
-test/extractor-tests/generated/CallExpr/CallExpr.ql ffb0cf1cb359a6dcbdf792a570c281e2d300779dca2dbc0f324990652adb972f 978a9e6c82758f9e8b334a682a02d6b893a6bf1db3cd85e9535839a9696b09b4
+test/extractor-tests/generated/CallExpr/CallExpr.ql cd38ec018b1afe9ae32ef94feca62295ad37c770c38b48a47bfb09697e7ee531 f6b0f2128cd5e63715f630c581d07b83678c298f7a7c56e38815e0d2c49ee36e
+test/extractor-tests/generated/CallExpr/CallExpr_getArg.ql 7d8d53ee4a0642f85d6bbfee6912fead699b5d117534d2b1803a670550894484 1782b33724b72afc9b7d99e3a52cacd4431ce1e12a7e43a7ac9872aad769b4ee
test/extractor-tests/generated/CallExpr/CallExpr_getArgList.ql b022e7b6b6db9932e787e37b7760c6a09c91140a0368940374a2c919688e0488 c20849c96b53c96f6f717efff5e8b4c0e900c0ef5d715cfbaf7101c7056ad8f4
test/extractor-tests/generated/CallExpr/CallExpr_getAttr.ql 1ace458070875b9ff2c671c2ee18392ea7bf6e51b68ee98d412c8606e8eb8d33 4c35da8255d2975cef4adee15623662441bb8f2e1d73582e4c193d1bc11cc1b5
test/extractor-tests/generated/CallExpr/CallExpr_getFunction.ql 060a6c8b5b85c839b14fe96f9e50291a7a0e5662a945f4f337070f782ec76715 e9a1e44433936146d87be939aa160848b9a7d7333c36da601fb7d1a66d71eb59
@@ -740,14 +740,15 @@ test/extractor-tests/generated/CastExpr/CastExpr_getExpr.ql c37186b8f3e3dab8ae28
test/extractor-tests/generated/CastExpr/CastExpr_getTypeRepr.ql ab6b0a61adc404c89c0e2e1962236a8e703fdc5092512bb4a5d9995af8e13c7b 4e7f6b6f58a1ef34ed45e31e35154dd8dc59054ebedcaa87200c84cc727ef1dd
test/extractor-tests/generated/ClosureBinder/ClosureBinder.ql 42516df87ac28c814d65f6739b2ede6eaa41c505d64756a3b8c7e0ca79895230 8b840f92ec033a4ef5edbe52bed909d8be0fffddf6d3e4bfaf9a8bc174fa2f2c
test/extractor-tests/generated/ClosureBinder/ClosureBinder_getGenericParamList.ql 71010c43a78a7abe8e63c94353f4b7eb97aca011755d200e7087467c1e3b7a68 2c834328f783ec5032544a692f7e23975bac0228b52b9f8fde46ef46a5f22a5f
-test/extractor-tests/generated/ClosureExpr/ClosureExpr.ql f25f9b32e5c0cd61e4b75053a5af4640a08b115ea5a4310ab95df450f6dfe1c4 9b731218857fa16776e29bce084c2ec1526b24e15f46d4f24047917d77d4646a
+test/extractor-tests/generated/ClosureExpr/ClosureExpr.ql 4d5f40935d07b0b24d77b93f56e9cea47666c5a3de84744641f9a4cb5d8d1319 b9a235c0a2d6a254d15f1fd1d0c8fdb6a7af51487b3826f26d8ca7a3b6cbc9b2
test/extractor-tests/generated/ClosureExpr/ClosureExpr_getAttr.ql f7f803afa4e2a5976c911fdf8a91ec607c2f998e22531b9c69a63d85579e34c3 1296acd0fb97e1484aa3f1d5ba09d18088001186f3ba5821eb3218a931ca0d54
test/extractor-tests/generated/ClosureExpr/ClosureExpr_getBody.ql 22a973a61274e87620e38338b29beef395818b95a88e2261fff197f7a78a8f76 bd28ed426e4d07823044db869aa8022dc81e8599d156e3e0e7cd49be914a1f36
test/extractor-tests/generated/ClosureExpr/ClosureExpr_getClosureBinder.ql cbfcf89b8efb5cb9b7bfbea26b5a78b3d4c7994cbf03d5ca60b61ee1b5cb4be5 621431277732ef79c585cb0b7199c49b14c597ee6b594a70d9e6966a09d40a9f
+test/extractor-tests/generated/ClosureExpr/ClosureExpr_getParam.ql c87b61e80dd62e031e8b310d8a4b781a468ecf2e5e81662be400f18bf33c5862 22abbc976a0e6f33c32c0e93cd0dd567cead13d82d561b9214275ea01b4a0573
test/extractor-tests/generated/ClosureExpr/ClosureExpr_getParamList.ql 68ce501516094512dd5bfed42a785474583a91312f704087cba801b02ba7b834 eacbf89d63159e7decfd84c2a1dc5c067dfce56a8157fbb52bc133e9702d266d
test/extractor-tests/generated/ClosureExpr/ClosureExpr_getRetType.ql c95bc7306b2d77aa05a6501b6321e6f1e7a48b7ad422ba082635ab20014288ae fe72d44c9819b42fff49b9092a9fb2bfafde6d3b9e4967547fb5298822f30bc3
test/extractor-tests/generated/Comment/Comment.ql 5428b8417a737f88f0d55d87de45c4693d81f03686f03da11dc5369e163d977b 8948c1860cde198d49cff7c74741f554a9e89f8af97bb94de80f3c62e1e29244
-test/extractor-tests/generated/Const/Const.ql 6794d0056060a82258d1e832ad265e2eb276206f0224a3f0eb9221e225370066 0a6134fb5a849ce9bd1a28de783460301cafca5773bd7caa4fb1f774f81b476a
+test/extractor-tests/generated/Const/Const.ql 7f9c9ce5b04391ff8f0d419a62972292b1d9811a978cceb129ef5a0f68a02fab c6c1dfa688248310cadd2d6d71d1a70a2b48f5b29ea2078f4dd51db59a0021c0
test/extractor-tests/generated/Const/Const_getAttr.ql bd6296dab00065db39663db8d09fe62146838875206ff9d8595d06d6439f5043 34cb55ca6d1f44e27d82a8b624f16f9408bae2485c85da94cc76327eed168577
test/extractor-tests/generated/Const/Const_getAttributeMacroExpansion.ql 82e86399d5cd72621dc8d9cd9f310d3dc7f2ecf208149dab0d202047ccbbd2f8 33df8c5b5044f49ec244e183c61c3b81fabd987f590ba6da4e18e08231343dc8
test/extractor-tests/generated/Const/Const_getBody.ql f50f79b7f42bb1043b79ec96f999fa4740c8014e6969a25812d5d023d7a5a5d8 90e5060ba9757f1021429ed4ec4913bc78747f3fc415456ef7e7fc284b8a0026
@@ -833,7 +834,7 @@ test/extractor-tests/generated/FormatArgsExpr/FormatTemplateVariableAccess.ql 27
test/extractor-tests/generated/FormatArgsExpr/Format_getArgumentRef.ql 634efdffaae4199aa9d95652cf081a8dc26e88224e24678845f8a67dc24ce090 d0302fee5c50403214771d5c6b896ba7c6e52be10c9bea59720ef2bb954e6f40
test/extractor-tests/generated/FormatArgsExpr/Format_getPrecisionArgument.ql 0d2140f84d0220b0c72c48c6bd272f4cfe1863d1797eddd16a6e238552a61e4d f4fe9b29697041e30764fa3dea44f125546bfb648f32c3474a1e922a4255c534
test/extractor-tests/generated/FormatArgsExpr/Format_getWidthArgument.ql 01ef27dd0bfab273e1ddc57ada0e079ece8a2bfd195ce413261006964b444093 acd0161f86010759417015c5b58044467a7f760f288ec4e8525458c54ae9a715
-test/extractor-tests/generated/Function/Function.ql 2efae1916e8f501668b3dbb2237cda788243fdd643683eda41b108dfdc578a90 6ec948518963985ec41b66e2b3b2b953e1da872dcd052a6d8c8f61c25bf09600
+test/extractor-tests/generated/Function/Function.ql 66e6a81a80cdf30652f00fae1b060e93b9d7c61b08cb3d3c1cac16cad445e769 97ace9f51b9ae933c79484b06b92355164ff3582cadfc6e3bac5c00072cdeff3
test/extractor-tests/generated/Function/Function_getAbi.ql e5c9c97de036ddd51cae5d99d41847c35c6b2eabbbd145f4467cb501edc606d8 0b81511528bd0ef9e63b19edfc3cb638d8af43eb87d018fad69d6ef8f8221454
test/extractor-tests/generated/Function/Function_getAttr.ql 44067ee11bdec8e91774ff10de0704a8c5c1b60816d587378e86bf3d82e1f660 b4bebf9441bda1f2d1e34e9261e07a7468cbabf53cf8047384f3c8b11869f04e
test/extractor-tests/generated/Function/Function_getAttributeMacroExpansion.ql 17a346a9e5d28af99522520d1af3852db4cae01fb3d290a65c5f84d8d039c345 36fb06b55370828d9bc379cf5fad7f383cdb6f6db6f7377660276943ab0e1ec8
@@ -842,6 +843,7 @@ test/extractor-tests/generated/Function/Function_getCrateOrigin.ql acec761c56b38
test/extractor-tests/generated/Function/Function_getExtendedCanonicalPath.ql 0bcdca25bb92424007cea950409d73ba681e3ffbea53e0508f1d630fccfa8bed ff28c3349f5fc007d5f144e549579bd04870973c0fabef4198edce0fba0ef421
test/extractor-tests/generated/Function/Function_getGenericParamList.ql 0b255791c153b7cb03a64f1b9ab5beccc832984251f37516e1d06ce311e71c2b d200f90d4dd6f8dfd22ce49203423715d5bef27436c56ee553097c668e71c5a1
test/extractor-tests/generated/Function/Function_getName.ql 3d9e0518075d161213485389efe0adf8a9e6352dd1c6233ef0403a9abbcc7ed1 841e644ecefff7e9a82f458bcf14d9976d6a6dbe9191755ead88374d7c086375
+test/extractor-tests/generated/Function/Function_getParam.ql ef0b46453512fef08fbcc2a15bc14ae319bbc4810a4e4ce03a5ca3b1e8859ca7 ce36d3974059c1cd63eb1d6b76111985087f40dd4fe0c716a00aa9a178c712c4
test/extractor-tests/generated/Function/Function_getParamList.ql f888802ab00defb58de59cc39d1e0518e3884db7eaf845f39dfa55befdda58b2 ba0d1a07676f1c987b820a3d126a563ecf9a3d53ac1115b87a5af487a8a03c3e
test/extractor-tests/generated/Function/Function_getRetType.ql b3a1ab90c8ebf0543e5db6a415896e44a02f984321f49bc409aec2657298942b cdfa37772e5026febb19c9bcd0d325688b0fbf2f6e7bba424b73eca38b9b3e38
test/extractor-tests/generated/Function/Function_getVisibility.ql 490b0a369c809a757d4835b97becf617b0399f16a63a2b06258c9a227d5cc415 25ceff15d3cd03821e1cb2c04cb8894bcd101eeca62b66b54d1751b628107818
@@ -965,7 +967,8 @@ test/extractor-tests/generated/Meta/Meta.ql 16f163f00ba2bbaa0a8c6f3f6710c860a8f6
test/extractor-tests/generated/Meta/Meta_getExpr.ql ec9ec61f5be7d65c32775fb5c068daea04f9db7d875293ed99cc1b2481db041f 77a0c52f1cb6ddc8fdb294d637f9eda1b7301ffa3067f0fca6272d894f57d3ee
test/extractor-tests/generated/Meta/Meta_getPath.ql aa9d4145a4e613c51b6e4637d57e3b7d0f66e0bb88f4ce959d598870814c06bb 2087e00686d502c0e2e89c88eae0fb354463576a9ae4101320981d3fd79b9078
test/extractor-tests/generated/Meta/Meta_getTokenTree.ql 1051c27ffd0d9a20436d684fde529b9ff55abe30d50e1d575b0318951e75bd34 983975672d928fb907676628384c949731da9807bf0c781bb7ec749d25733d2d
-test/extractor-tests/generated/MethodCallExpr/MethodCallExpr.ql d141f5a2ef95019aa64e8cb384ab4a45e7a93c941b84ef2e14c13377f159e4db 47a68fc874af6cc9a4b278a5aab1633a9db17300fd7dbd6dbe193d48d99144bc
+test/extractor-tests/generated/MethodCallExpr/MethodCallExpr.ql 85d3b8c794167f87840469e03d21aa00daf0998c28028f1c8848c7c4bd895db4 fa368ce4543c2544ecd2e636ade8d92849741226599290f59e0138a4a479357c
+test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getArg.ql 10a88c3bf63dfb26f43b9cd1ed7fceef0f436ce2eff4b5a816da369bf5b775d2 ee3b5043719591b4048ec32e21bb5fb3a9f83f0420ef18c338fc0ac28d0e3240
test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getArgList.ql 180e0b1715f5cd2be0de01bff3d3a45594b495b8250748d40ff7108d6c85923d bdadcdbecca5891287a47b6dd6b2fda62e07457718aef39212503ab63bc17783
test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getAttr.ql 2ce876a04a159efce83b863dffc47fbb714b95daea2b91fa6fbb623d28eed9ec 7bca1cd0e8fbceec0e640afb6800e1780eff5b5b402e71b9b169c0ba26966f96
test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getGenericArgList.ql 655db9a0501b1ef20d604cc4cd9d708371781291443e8dec97b70ec2914601d2 2fc7df0eca22dcef2f9f5c86d37ee43452d372a4c0f9f4da0194828c82ba93e0
diff --git a/rust/ql/.gitattributes b/rust/ql/.gitattributes
index 3326912c0ca8..65c3aae0e9e1 100644
--- a/rust/ql/.gitattributes
+++ b/rust/ql/.gitattributes
@@ -242,7 +242,6 @@
/lib/codeql/rust/elements/internal/BoxPatConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/BreakExprConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/CallExprConstructor.qll linguist-generated
-/lib/codeql/rust/elements/internal/CallableImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/CastExprConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/ClosureBinderConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/ClosureBinderImpl.qll linguist-generated
@@ -733,6 +732,7 @@
/test/extractor-tests/generated/BreakExpr/BreakExpr_getExpr.ql linguist-generated
/test/extractor-tests/generated/BreakExpr/BreakExpr_getLifetime.ql linguist-generated
/test/extractor-tests/generated/CallExpr/CallExpr.ql linguist-generated
+/test/extractor-tests/generated/CallExpr/CallExpr_getArg.ql linguist-generated
/test/extractor-tests/generated/CallExpr/CallExpr_getArgList.ql linguist-generated
/test/extractor-tests/generated/CallExpr/CallExpr_getAttr.ql linguist-generated
/test/extractor-tests/generated/CallExpr/CallExpr_getFunction.ql linguist-generated
@@ -746,6 +746,7 @@
/test/extractor-tests/generated/ClosureExpr/ClosureExpr_getAttr.ql linguist-generated
/test/extractor-tests/generated/ClosureExpr/ClosureExpr_getBody.ql linguist-generated
/test/extractor-tests/generated/ClosureExpr/ClosureExpr_getClosureBinder.ql linguist-generated
+/test/extractor-tests/generated/ClosureExpr/ClosureExpr_getParam.ql linguist-generated
/test/extractor-tests/generated/ClosureExpr/ClosureExpr_getParamList.ql linguist-generated
/test/extractor-tests/generated/ClosureExpr/ClosureExpr_getRetType.ql linguist-generated
/test/extractor-tests/generated/Comment/Comment.ql linguist-generated
@@ -844,6 +845,7 @@
/test/extractor-tests/generated/Function/Function_getExtendedCanonicalPath.ql linguist-generated
/test/extractor-tests/generated/Function/Function_getGenericParamList.ql linguist-generated
/test/extractor-tests/generated/Function/Function_getName.ql linguist-generated
+/test/extractor-tests/generated/Function/Function_getParam.ql linguist-generated
/test/extractor-tests/generated/Function/Function_getParamList.ql linguist-generated
/test/extractor-tests/generated/Function/Function_getRetType.ql linguist-generated
/test/extractor-tests/generated/Function/Function_getVisibility.ql linguist-generated
@@ -968,6 +970,7 @@
/test/extractor-tests/generated/Meta/Meta_getPath.ql linguist-generated
/test/extractor-tests/generated/Meta/Meta_getTokenTree.ql linguist-generated
/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr.ql linguist-generated
+/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getArg.ql linguist-generated
/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getArgList.ql linguist-generated
/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getAttr.ql linguist-generated
/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getGenericArgList.ql linguist-generated
diff --git a/rust/ql/lib/codeql/rust/controlflow/CfgNodes.qll b/rust/ql/lib/codeql/rust/controlflow/CfgNodes.qll
index a118cf6b4720..0c4ce51f6192 100644
--- a/rust/ql/lib/codeql/rust/controlflow/CfgNodes.qll
+++ b/rust/ql/lib/codeql/rust/controlflow/CfgNodes.qll
@@ -4,6 +4,7 @@
*/
private import rust
+private import codeql.rust.elements.Call
private import ControlFlowGraph
private import internal.ControlFlowGraphImpl as CfgImpl
private import internal.CfgNodes
@@ -162,6 +163,30 @@ final class CallExprBaseCfgNode extends Nodes::CallExprBaseCfgNode {
*/
final class MethodCallExprCfgNode extends CallExprBaseCfgNode, Nodes::MethodCallExprCfgNode { }
+/**
+ * A CFG node that calls a function.
+ *
+ * This class abstract over the different ways in which a function can be called in Rust.
+ */
+final class CallCfgNode extends ExprCfgNode {
+ private Call node;
+
+ CallCfgNode() { node = this.getAstNode() }
+
+ /** Gets the underlying `Call`. */
+ Call getCall() { result = node }
+
+ /** Gets the receiver of this call if it is a method call. */
+ ExprCfgNode getReceiver() {
+ any(ChildMapping mapping).hasCfgChild(node, node.getReceiver(), this, result)
+ }
+
+ /** Gets the `i`th argument of this call, if any. */
+ ExprCfgNode getArgument(int i) {
+ any(ChildMapping mapping).hasCfgChild(node, node.getArgument(i), this, result)
+ }
+}
+
/**
* A function call expression. For example:
* ```rust
diff --git a/rust/ql/lib/codeql/rust/controlflow/internal/CfgNodes.qll b/rust/ql/lib/codeql/rust/controlflow/internal/CfgNodes.qll
index e32028885110..dc08c0d32a78 100644
--- a/rust/ql/lib/codeql/rust/controlflow/internal/CfgNodes.qll
+++ b/rust/ql/lib/codeql/rust/controlflow/internal/CfgNodes.qll
@@ -59,7 +59,7 @@ class BreakExprTargetChildMapping extends ParentAstNode, Expr {
}
class CallExprBaseChildMapping extends ParentAstNode, CallExprBase {
- override predicate relevantChild(AstNode child) { child = this.getArgList().getAnArg() }
+ override predicate relevantChild(AstNode child) { child = this.getAnArg() }
}
class StructExprChildMapping extends ParentAstNode, StructExpr {
diff --git a/rust/ql/lib/codeql/rust/controlflow/internal/ControlFlowGraphImpl.qll b/rust/ql/lib/codeql/rust/controlflow/internal/ControlFlowGraphImpl.qll
index 522eaf59fe6d..58cb9f6a95f1 100644
--- a/rust/ql/lib/codeql/rust/controlflow/internal/ControlFlowGraphImpl.qll
+++ b/rust/ql/lib/codeql/rust/controlflow/internal/ControlFlowGraphImpl.qll
@@ -87,7 +87,7 @@ class CallableScopeTree extends StandardTree, PreOrderTree, PostOrderTree, Scope
i = 0 and
result = this.getParamList().getSelfParam()
or
- result = this.getParamList().getParam(i - 1)
+ result = this.getParam(i - 1)
or
i = this.getParamList().getNumberOfParams() + 1 and
result = this.getBody()
@@ -543,7 +543,7 @@ module ExprTrees {
class MethodCallExprTree extends StandardPostOrderTree, MethodCallExpr {
override AstNode getChildNode(int i) {
- if i = 0 then result = this.getReceiver() else result = this.getArgList().getArg(i - 1)
+ if i = 0 then result = this.getReceiver() else result = this.getArg(i - 1)
}
}
diff --git a/rust/ql/lib/codeql/rust/controlflow/internal/generated/CfgNodes.qll b/rust/ql/lib/codeql/rust/controlflow/internal/generated/CfgNodes.qll
index cfa37ed45394..36dd0fb304f2 100644
--- a/rust/ql/lib/codeql/rust/controlflow/internal/generated/CfgNodes.qll
+++ b/rust/ql/lib/codeql/rust/controlflow/internal/generated/CfgNodes.qll
@@ -722,6 +722,21 @@ module MakeCfgNodes Input> {
* Gets the number of attrs of this call expression base.
*/
int getNumberOfAttrs() { result = count(int i | exists(this.getAttr(i))) }
+
+ /**
+ * Gets the `index`th argument of this call expression base (0-based).
+ */
+ Expr getArg(int index) { result = node.getArg(index) }
+
+ /**
+ * Gets any of the arguments of this call expression base.
+ */
+ Expr getAnArg() { result = this.getArg(_) }
+
+ /**
+ * Gets the number of arguments of this call expression base.
+ */
+ int getNumberOfArgs() { result = count(int i | exists(this.getArg(i))) }
}
final private class ParentCastExpr extends ParentAstNode, CastExpr {
diff --git a/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowConsistency.qll b/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowConsistency.qll
index f0dc961a9f93..909d275dc11b 100644
--- a/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowConsistency.qll
+++ b/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowConsistency.qll
@@ -1,5 +1,8 @@
import codeql.rust.dataflow.DataFlow::DataFlow as DataFlow
private import rust
+private import codeql.rust.controlflow.ControlFlowGraph
+private import codeql.rust.controlflow.internal.Splitting
+private import codeql.rust.controlflow.CfgNodes as CfgNodes
private import codeql.rust.dataflow.internal.DataFlowImpl
private import codeql.rust.dataflow.internal.FlowSummaryImpl as FlowSummaryImpl
private import codeql.rust.dataflow.internal.Node as Node
@@ -26,6 +29,17 @@ private module Input implements InputSig {
}
predicate missingLocationExclude(RustDataFlow::Node n) { not exists(n.asExpr().getLocation()) }
+
+ predicate multipleArgumentCallExclude(Node::ArgumentNode arg, DataFlowCall call) {
+ // An argument such as `x` in `if !x { ... }` has two successors (and hence
+ // two calls); one for each Boolean outcome of `x`.
+ exists(CfgNodes::ExprCfgNode n |
+ arg.isArgumentOf(call, _) and
+ n = call.asCallCfgNode() and
+ arg.asExpr().getASuccessor(any(ConditionalSuccessor c)).getASuccessor*() = n and
+ n.getASplit() instanceof ConditionalCompletionSplitting::ConditionalCompletionSplit
+ )
+ }
}
import MakeConsistency
diff --git a/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowImpl.qll b/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowImpl.qll
index d0f7378bd3a1..2cf9cc216681 100644
--- a/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowImpl.qll
+++ b/rust/ql/lib/codeql/rust/dataflow/internal/DataFlowImpl.qll
@@ -8,6 +8,7 @@ private import codeql.util.Boolean
private import codeql.dataflow.DataFlow
private import codeql.dataflow.internal.DataFlowImpl
private import rust
+private import codeql.rust.elements.Call
private import SsaImpl as SsaImpl
private import codeql.rust.controlflow.internal.Scope as Scope
private import codeql.rust.internal.PathResolution
@@ -55,11 +56,7 @@ final class DataFlowCallable extends TDataFlowCallable {
final class DataFlowCall extends TDataFlowCall {
/** Gets the underlying call in the CFG, if any. */
- CallExprCfgNode asCallExprCfgNode() { result = this.asCallBaseExprCfgNode() }
-
- MethodCallExprCfgNode asMethodCallExprCfgNode() { result = this.asCallBaseExprCfgNode() }
-
- CallExprBaseCfgNode asCallBaseExprCfgNode() { this = TCall(result) }
+ CallCfgNode asCallCfgNode() { this = TCall(result) }
predicate isSummaryCall(
FlowSummaryImpl::Public::SummarizedCallable c, FlowSummaryImpl::Private::SummaryNode receiver
@@ -68,7 +65,7 @@ final class DataFlowCall extends TDataFlowCall {
}
DataFlowCallable getEnclosingCallable() {
- result = TCfgScope(this.asCallBaseExprCfgNode().getExpr().getEnclosingCfgScope())
+ result = TCfgScope(this.asCallCfgNode().getExpr().getEnclosingCfgScope())
or
exists(FlowSummaryImpl::Public::SummarizedCallable c |
this.isSummaryCall(c, _) and
@@ -77,7 +74,7 @@ final class DataFlowCall extends TDataFlowCall {
}
string toString() {
- result = this.asCallBaseExprCfgNode().toString()
+ result = this.asCallCfgNode().toString()
or
exists(
FlowSummaryImpl::Public::SummarizedCallable c, FlowSummaryImpl::Private::SummaryNode receiver
@@ -87,7 +84,7 @@ final class DataFlowCall extends TDataFlowCall {
)
}
- Location getLocation() { result = this.asCallBaseExprCfgNode().getLocation() }
+ Location getLocation() { result = this.asCallCfgNode().getLocation() }
}
/**
@@ -135,38 +132,23 @@ final class ParameterPosition extends TParameterPosition {
*/
final class ArgumentPosition extends ParameterPosition {
/** Gets the argument of `call` at this position, if any. */
- Expr getArgument(CallExprBase call) {
- result = call.getArgList().getArg(this.getPosition())
+ Expr getArgument(Call call) {
+ result = call.getArgument(this.getPosition())
or
- this.isSelf() and
- result = call.(MethodCallExpr).getReceiver()
+ result = call.getReceiver() and this.isSelf()
}
}
-/** Holds if `call` invokes a qualified path that resolves to a method. */
-private predicate callToMethod(CallExpr call) {
- exists(Path path |
- path = call.getFunction().(PathExpr).getPath() and
- path.hasQualifier() and
- resolvePath(path).(Function).getParamList().hasSelfParam()
- )
-}
-
/**
* Holds if `arg` is an argument of `call` at the position `pos`.
*
* Note that this does not hold for the receiever expression of a method call
* as the synthetic `ReceiverNode` is the argument for the `self` parameter.
*/
-predicate isArgumentForCall(ExprCfgNode arg, CallExprBaseCfgNode call, ParameterPosition pos) {
- if callToMethod(call.(CallExprCfgNode).getCallExpr())
- then
- // The first argument is for the `self` parameter
- arg = call.getArgument(0) and pos.isSelf()
- or
- // Succeeding arguments are shifted left
- arg = call.getArgument(pos.getPosition() + 1)
- else arg = call.getArgument(pos.getPosition())
+predicate isArgumentForCall(ExprCfgNode arg, CallCfgNode call, ParameterPosition pos) {
+ call.getArgument(pos.getPosition()) = arg
+ or
+ call.getReceiver() = arg and pos.isSelf() and not call.getCall().receiverImplicitlyBorrowed()
}
/** Provides logic related to SSA. */
@@ -419,9 +401,9 @@ module RustDataFlow implements InputSig {
/** Gets a viable implementation of the target of the given `Call`. */
DataFlowCallable viableCallable(DataFlowCall call) {
- result.asCfgScope() = call.asCallBaseExprCfgNode().getCallExprBase().getStaticTarget()
+ result.asCfgScope() = call.asCallCfgNode().getCall().getStaticTarget()
or
- result.asLibraryCallable().getACall() = call.asCallBaseExprCfgNode().getCallExprBase()
+ result.asLibraryCallable().getACall() = call.asCallCfgNode().getCall()
}
/**
@@ -812,7 +794,7 @@ module RustDataFlow implements InputSig {
*/
predicate lambdaCall(DataFlowCall call, LambdaCallKind kind, Node receiver) {
(
- receiver.asExpr() = call.asCallExprCfgNode().getFunction() and
+ receiver.asExpr() = call.asCallCfgNode().(CallExprCfgNode).getFunction() and
// All calls to complex expressions and local variable accesses are lambda call.
exists(Expr f | f = receiver.asExpr().getExpr() |
f instanceof PathExpr implies f = any(Variable v).getAnAccess()
@@ -976,7 +958,7 @@ private module Cached {
cached
newtype TDataFlowCall =
- TCall(CallExprBaseCfgNode c) { Stages::DataFlowStage::ref() } or
+ TCall(CallCfgNode c) { Stages::DataFlowStage::ref() } or
TSummaryCall(
FlowSummaryImpl::Public::SummarizedCallable c, FlowSummaryImpl::Private::SummaryNode receiver
) {
diff --git a/rust/ql/lib/codeql/rust/dataflow/internal/FlowSummaryImpl.qll b/rust/ql/lib/codeql/rust/dataflow/internal/FlowSummaryImpl.qll
index 62cc47dfc0d3..e46abc4dd371 100644
--- a/rust/ql/lib/codeql/rust/dataflow/internal/FlowSummaryImpl.qll
+++ b/rust/ql/lib/codeql/rust/dataflow/internal/FlowSummaryImpl.qll
@@ -68,29 +68,14 @@ module Input implements InputSig {
result = "Field" and
(
exists(Addressable a, int pos, string prefix |
- // TODO: calculate in QL
- arg = prefix + "(" + pos + ")" and
- (
- prefix = a.getExtendedCanonicalPath()
- or
- a = any(OptionEnum o).getSome() and
- prefix = "crate::option::Option::Some"
- or
- exists(string name |
- a = any(ResultEnum r).getVariant(name) and
- prefix = "crate::result::Result::" + name
- )
- )
+ arg = prefix + "(" + pos + ")" and prefix = a.getCanonicalPath()
|
c.(TupleFieldContent).isStructField(a, pos)
or
c.(TupleFieldContent).isVariantField(a, pos)
)
or
- exists(Addressable a, string field |
- // TODO: calculate in QL
- arg = a.getExtendedCanonicalPath() + "::" + field
- |
+ exists(Addressable a, string field | arg = a.getCanonicalPath() + "::" + field |
c.(StructFieldContent).isStructField(a, field)
or
c.(StructFieldContent).isVariantField(a, field)
@@ -153,7 +138,7 @@ private import Make as Impl
private module StepsInput implements Impl::Private::StepsInputSig {
DataFlowCall getACall(Public::SummarizedCallable sc) {
- result.asCallBaseExprCfgNode().getCallExprBase() = sc.(LibraryCallable).getACall()
+ result.asCallCfgNode().getCall() = sc.(LibraryCallable).getACall()
}
RustDataFlow::Node getSourceNode(Input::SourceBase source, Impl::Private::SummaryComponent sc) {
diff --git a/rust/ql/lib/codeql/rust/dataflow/internal/ModelsAsData.qll b/rust/ql/lib/codeql/rust/dataflow/internal/ModelsAsData.qll
index 57adae96d0ec..a879157af5e0 100644
--- a/rust/ql/lib/codeql/rust/dataflow/internal/ModelsAsData.qll
+++ b/rust/ql/lib/codeql/rust/dataflow/internal/ModelsAsData.qll
@@ -30,9 +30,9 @@
* - `ReturnValue`: the value returned by a function call.
* - `Element`: an element in a collection.
* - `Field[t::f]`: field `f` of the variant/struct with canonical path `t`, for example
- * `Field[crate::ihex::Record::Data::value]`.
+ * `Field[ihex::Record::Data::value]`.
* - `Field[t(i)]`: position `i` inside the variant/struct with canonical path `v`, for example
- * `Field[crate::option::Option::Some(0)]`.
+ * `Field[core::option::Option::Some(0)]`.
* - `Field[i]`: the `i`th element of a tuple.
* 4. The `kind` column is a tag that can be referenced from QL to determine to
* which classes the interpreted elements should be added. For example, for
diff --git a/rust/ql/lib/codeql/rust/dataflow/internal/Node.qll b/rust/ql/lib/codeql/rust/dataflow/internal/Node.qll
index 67782f0b7e00..939cb45a0ca5 100644
--- a/rust/ql/lib/codeql/rust/dataflow/internal/Node.qll
+++ b/rust/ql/lib/codeql/rust/dataflow/internal/Node.qll
@@ -224,13 +224,13 @@ abstract class ArgumentNode extends Node {
}
final class ExprArgumentNode extends ArgumentNode, ExprNode {
- private CallExprBaseCfgNode call_;
+ private CallCfgNode call_;
private RustDataFlow::ArgumentPosition pos_;
ExprArgumentNode() { isArgumentForCall(n, call_, pos_) }
override predicate isArgumentOf(DataFlowCall call, RustDataFlow::ArgumentPosition pos) {
- call.asCallBaseExprCfgNode() = call_ and pos = pos_
+ call.asCallCfgNode() = call_ and pos = pos_
}
}
@@ -239,7 +239,7 @@ final class ExprArgumentNode extends ArgumentNode, ExprNode {
* has taken place.
*/
final class ReceiverNode extends ArgumentNode, TReceiverNode {
- private MethodCallExprCfgNode n;
+ private CallCfgNode n;
ReceiverNode() { this = TReceiverNode(n, false) }
@@ -248,7 +248,7 @@ final class ReceiverNode extends ArgumentNode, TReceiverNode {
MethodCallExprCfgNode getMethodCall() { result = n }
override predicate isArgumentOf(DataFlowCall call, RustDataFlow::ArgumentPosition pos) {
- call.asMethodCallExprCfgNode() = n and pos = TSelfParameterPosition()
+ call.asCallCfgNode() = n and pos = TSelfParameterPosition()
}
override CfgScope getCfgScope() { result = n.getAstNode().getEnclosingCfgScope() }
@@ -281,7 +281,7 @@ final class ClosureArgumentNode extends ArgumentNode, ExprNode {
ClosureArgumentNode() { lambdaCallExpr(call_, _, this.asExpr()) }
override predicate isArgumentOf(DataFlowCall call, RustDataFlow::ArgumentPosition pos) {
- call.asCallExprCfgNode() = call_ and
+ call.asCallCfgNode() = call_ and
pos.isClosureSelf()
}
}
@@ -330,11 +330,11 @@ abstract class OutNode extends Node {
}
final private class ExprOutNode extends ExprNode, OutNode {
- ExprOutNode() { this.asExpr() instanceof CallExprBaseCfgNode }
+ ExprOutNode() { this.asExpr() instanceof CallCfgNode }
/** Gets the underlying call CFG node that includes this out node. */
override DataFlowCall getCall(ReturnKind kind) {
- result.asCallBaseExprCfgNode() = this.getCfgNode() and
+ result.asCallCfgNode() = this.getCfgNode() and
kind = TNormalReturnKind()
}
}
@@ -404,7 +404,7 @@ final class ExprPostUpdateNode extends PostUpdateNode, TExprPostUpdateNode {
}
final class ReceiverPostUpdateNode extends PostUpdateNode, TReceiverNode {
- private MethodCallExprCfgNode n;
+ private CallCfgNode n;
ReceiverPostUpdateNode() { this = TReceiverNode(n, true) }
@@ -467,11 +467,12 @@ newtype TNode =
any(FieldExprCfgNode access).getContainer(), //
any(TryExprCfgNode try).getExpr(), //
any(PrefixExprCfgNode pe | pe.getOperatorName() = "*").getExpr(), //
- any(AwaitExprCfgNode a).getExpr(), any(MethodCallExprCfgNode mc).getReceiver(), //
+ any(AwaitExprCfgNode a).getExpr(), //
+ any(MethodCallExprCfgNode mc).getReceiver(), //
getPostUpdateReverseStep(any(PostUpdateNode n).getPreUpdateNode().asExpr(), _)
]
} or
- TReceiverNode(MethodCallExprCfgNode mc, Boolean isPost) or
+ TReceiverNode(CallCfgNode mc, Boolean isPost) { mc.getCall().receiverImplicitlyBorrowed() } or
TSsaNode(SsaImpl::DataFlowIntegration::SsaNode node) or
TFlowSummaryNode(FlowSummaryImpl::Private::SummaryNode sn) or
TClosureSelfReferenceNode(CfgScope c) { lambdaCreationExpr(c, _) } or
diff --git a/rust/ql/lib/codeql/rust/elements/Call.qll b/rust/ql/lib/codeql/rust/elements/Call.qll
new file mode 100644
index 000000000000..a65fb3dadb07
--- /dev/null
+++ b/rust/ql/lib/codeql/rust/elements/Call.qll
@@ -0,0 +1,7 @@
+/**
+ * This module provides the public class `Call`.
+ */
+
+private import internal.CallImpl
+
+final class Call = Impl::Call;
diff --git a/rust/ql/lib/codeql/rust/elements/Callable.qll b/rust/ql/lib/codeql/rust/elements/Callable.qll
index c42262a1854a..11d029fff7df 100644
--- a/rust/ql/lib/codeql/rust/elements/Callable.qll
+++ b/rust/ql/lib/codeql/rust/elements/Callable.qll
@@ -6,6 +6,7 @@
private import internal.CallableImpl
import codeql.rust.elements.AstNode
import codeql.rust.elements.Attr
+import codeql.rust.elements.Param
import codeql.rust.elements.ParamList
/**
diff --git a/rust/ql/lib/codeql/rust/elements/internal/CallExprBaseImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/CallExprBaseImpl.qll
index c916b717bf65..b78720b08fa3 100644
--- a/rust/ql/lib/codeql/rust/elements/internal/CallExprBaseImpl.qll
+++ b/rust/ql/lib/codeql/rust/elements/internal/CallExprBaseImpl.qll
@@ -28,5 +28,7 @@ module Impl {
class CallExprBase extends Generated::CallExprBase {
/** Gets the static target of this call, if any. */
Callable getStaticTarget() { none() } // overridden by subclasses, but cannot be made abstract
+
+ override Expr getArg(int index) { result = this.getArgList().getArg(index) }
}
}
diff --git a/rust/ql/lib/codeql/rust/elements/internal/CallExprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/CallExprImpl.qll
index e9ec4339d1ac..e5262014ab49 100644
--- a/rust/ql/lib/codeql/rust/elements/internal/CallExprImpl.qll
+++ b/rust/ql/lib/codeql/rust/elements/internal/CallExprImpl.qll
@@ -55,7 +55,7 @@ module Impl {
pragma[nomagic]
private PathResolution::ItemNode getResolvedFunctionAndPos(int pos) {
result = getResolvedFunction(this) and
- exists(this.getArgList().getArg(pos))
+ exists(this.getArg(pos))
}
/**
diff --git a/rust/ql/lib/codeql/rust/elements/internal/CallImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/CallImpl.qll
new file mode 100644
index 000000000000..27dfd2a93fcf
--- /dev/null
+++ b/rust/ql/lib/codeql/rust/elements/internal/CallImpl.qll
@@ -0,0 +1,126 @@
+private import rust
+private import codeql.rust.internal.PathResolution
+private import codeql.rust.internal.TypeInference as TypeInference
+private import codeql.rust.elements.internal.ExprImpl::Impl as ExprImpl
+private import codeql.rust.elements.Operation
+
+module Impl {
+ /**
+ * An expression that calls a function.
+ *
+ * This class abstracts over the different ways in which a function can be called in Rust.
+ */
+ abstract class Call extends ExprImpl::Expr {
+ /** Gets the number of arguments _excluding_ any `self` argument. */
+ abstract int getNumberOfArguments();
+
+ /** Gets the receiver of this call if it is a method call. */
+ abstract Expr getReceiver();
+
+ /** Holds if the call has a receiver that might be implicitly borrowed. */
+ abstract predicate receiverImplicitlyBorrowed();
+
+ /** Gets the trait targeted by this call, if any. */
+ abstract Trait getTrait();
+
+ /** Gets the name of the method called if this call is a method call. */
+ abstract string getMethodName();
+
+ /** Gets the `i`th argument of this call, if any. */
+ abstract Expr getArgument(int i);
+
+ /** Gets the static target of this call, if any. */
+ Function getStaticTarget() {
+ result = TypeInference::resolveMethodCallTarget(this)
+ or
+ not exists(TypeInference::resolveMethodCallTarget(this)) and
+ result = this.(CallExpr).getStaticTarget()
+ }
+ }
+
+ /** Holds if the call expression dispatches to a trait method. */
+ private predicate callIsMethodCall(CallExpr call, Path qualifier, string methodName) {
+ exists(Path path, Function f |
+ path = call.getFunction().(PathExpr).getPath() and
+ f = resolvePath(path) and
+ f.getParamList().hasSelfParam() and
+ qualifier = path.getQualifier() and
+ path.getSegment().getIdentifier().getText() = methodName
+ )
+ }
+
+ private class CallExprCall extends Call instanceof CallExpr {
+ CallExprCall() { not callIsMethodCall(this, _, _) }
+
+ override string getMethodName() { none() }
+
+ override Expr getReceiver() { none() }
+
+ override Trait getTrait() { none() }
+
+ override predicate receiverImplicitlyBorrowed() { none() }
+
+ override int getNumberOfArguments() { result = super.getArgList().getNumberOfArgs() }
+
+ override Expr getArgument(int i) { result = super.getArgList().getArg(i) }
+ }
+
+ private class CallExprMethodCall extends Call instanceof CallExpr {
+ Path qualifier;
+ string methodName;
+
+ CallExprMethodCall() { callIsMethodCall(this, qualifier, methodName) }
+
+ override string getMethodName() { result = methodName }
+
+ override Expr getReceiver() { result = super.getArgList().getArg(0) }
+
+ override Trait getTrait() {
+ result = resolvePath(qualifier) and
+ // When the qualifier is `Self` and resolves to a trait, it's inside a
+ // trait method's default implementation. This is not a dispatch whose
+ // target is inferred from the type of the receiver, but should always
+ // resolve to the function in the trait block as path resolution does.
+ qualifier.toString() != "Self"
+ }
+
+ override predicate receiverImplicitlyBorrowed() { none() }
+
+ override int getNumberOfArguments() { result = super.getArgList().getNumberOfArgs() - 1 }
+
+ override Expr getArgument(int i) { result = super.getArgList().getArg(i + 1) }
+ }
+
+ private class MethodCallExprCall extends Call instanceof MethodCallExpr {
+ override string getMethodName() { result = super.getIdentifier().getText() }
+
+ override Expr getReceiver() { result = this.(MethodCallExpr).getReceiver() }
+
+ override Trait getTrait() { none() }
+
+ override predicate receiverImplicitlyBorrowed() { any() }
+
+ override int getNumberOfArguments() { result = super.getArgList().getNumberOfArgs() }
+
+ override Expr getArgument(int i) { result = super.getArgList().getArg(i) }
+ }
+
+ private class OperatorCall extends Call instanceof Operation {
+ Trait trait;
+ string methodName;
+
+ OperatorCall() { super.isOverloaded(trait, methodName) }
+
+ override string getMethodName() { result = methodName }
+
+ override Expr getReceiver() { result = super.getOperand(0) }
+
+ override Trait getTrait() { result = trait }
+
+ override predicate receiverImplicitlyBorrowed() { none() }
+
+ override int getNumberOfArguments() { result = super.getNumberOfOperands() - 1 }
+
+ override Expr getArgument(int i) { result = super.getOperand(1) and i = 0 }
+ }
+}
diff --git a/rust/ql/lib/codeql/rust/elements/internal/CallableImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/CallableImpl.qll
index d604b4d239f0..37e24a9150ce 100644
--- a/rust/ql/lib/codeql/rust/elements/internal/CallableImpl.qll
+++ b/rust/ql/lib/codeql/rust/elements/internal/CallableImpl.qll
@@ -1,4 +1,3 @@
-// generated by codegen, remove this comment if you wish to edit this file
/**
* This module provides a hand-modifiable wrapper around the generated class `Callable`.
*
@@ -12,8 +11,11 @@ private import codeql.rust.elements.internal.generated.Callable
* be referenced directly.
*/
module Impl {
+ // the following QLdoc is generated: if you need to edit it, do it in the schema file
/**
* A callable. Either a `Function` or a `ClosureExpr`.
*/
- class Callable extends Generated::Callable { }
+ class Callable extends Generated::Callable {
+ override Param getParam(int index) { result = this.getParamList().getParam(index) }
+ }
}
diff --git a/rust/ql/lib/codeql/rust/elements/internal/GenericArgListImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/GenericArgListImpl.qll
index eaba0f7ff6e8..d459ab13dc6e 100644
--- a/rust/ql/lib/codeql/rust/elements/internal/GenericArgListImpl.qll
+++ b/rust/ql/lib/codeql/rust/elements/internal/GenericArgListImpl.qll
@@ -26,6 +26,7 @@ module Impl {
override string toAbbreviatedString() { result = "<...>" }
/** Gets the `i`th type argument of this list. */
+ pragma[nomagic]
TypeRepr getTypeArg(int i) {
result =
rank[i + 1](TypeRepr res, int j |
@@ -37,5 +38,15 @@ module Impl {
/** Gets a type argument of this list. */
TypeRepr getATypeArg() { result = this.getTypeArg(_) }
+
+ /** Gets the associated type argument with the given `name`, if any. */
+ pragma[nomagic]
+ TypeRepr getAssocTypeArg(string name) {
+ exists(AssocTypeArg arg |
+ arg = this.getAGenericArg() and
+ result = arg.getTypeRepr() and
+ name = arg.getIdentifier().getText()
+ )
+ }
}
}
diff --git a/rust/ql/lib/codeql/rust/elements/internal/OperationImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/OperationImpl.qll
index c1ba794e8e43..71f861b013dd 100644
--- a/rust/ql/lib/codeql/rust/elements/internal/OperationImpl.qll
+++ b/rust/ql/lib/codeql/rust/elements/internal/OperationImpl.qll
@@ -8,75 +8,81 @@ private import rust
private import codeql.rust.elements.internal.ExprImpl::Impl as ExprImpl
/**
- * Holds if the operator `op` is overloaded to a trait with the canonical path
- * `path` and the method name `method`.
+ * Holds if the operator `op` with arity `arity` is overloaded to a trait with
+ * the canonical path `path` and the method name `method`.
*/
-private predicate isOverloaded(string op, string path, string method) {
- // Negation
- op = "-" and path = "core::ops::arith::Neg" and method = "neg"
- or
- // Not
- op = "!" and path = "core::ops::bit::Not" and method = "not"
- or
- // Dereference
- op = "*" and path = "core::ops::Deref" and method = "deref"
- or
- // Comparison operators
- op = "==" and path = "core::cmp::PartialEq" and method = "eq"
- or
- op = "!=" and path = "core::cmp::PartialEq" and method = "ne"
- or
- op = "<" and path = "core::cmp::PartialOrd" and method = "lt"
- or
- op = "<=" and path = "core::cmp::PartialOrd" and method = "le"
- or
- op = ">" and path = "core::cmp::PartialOrd" and method = "gt"
- or
- op = ">=" and path = "core::cmp::PartialOrd" and method = "ge"
- or
- // Arithmetic operators
- op = "+" and path = "core::ops::arith::Add" and method = "add"
- or
- op = "-" and path = "core::ops::arith::Sub" and method = "sub"
- or
- op = "*" and path = "core::ops::arith::Mul" and method = "mul"
- or
- op = "/" and path = "core::ops::arith::Div" and method = "div"
- or
- op = "%" and path = "core::ops::arith::Rem" and method = "rem"
- or
- // Arithmetic assignment expressions
- op = "+=" and path = "core::ops::arith::AddAssign" and method = "add_assign"
- or
- op = "-=" and path = "core::ops::arith::SubAssign" and method = "sub_assign"
- or
- op = "*=" and path = "core::ops::arith::MulAssign" and method = "mul_assign"
- or
- op = "/=" and path = "core::ops::arith::DivAssign" and method = "div_assign"
- or
- op = "%=" and path = "core::ops::arith::RemAssign" and method = "rem_assign"
- or
- // Bitwise operators
- op = "&" and path = "core::ops::bit::BitAnd" and method = "bitand"
- or
- op = "|" and path = "core::ops::bit::BitOr" and method = "bitor"
- or
- op = "^" and path = "core::ops::bit::BitXor" and method = "bitxor"
- or
- op = "<<" and path = "core::ops::bit::Shl" and method = "shl"
- or
- op = ">>" and path = "core::ops::bit::Shr" and method = "shr"
- or
- // Bitwise assignment operators
- op = "&=" and path = "core::ops::bit::BitAndAssign" and method = "bitand_assign"
- or
- op = "|=" and path = "core::ops::bit::BitOrAssign" and method = "bitor_assign"
- or
- op = "^=" and path = "core::ops::bit::BitXorAssign" and method = "bitxor_assign"
- or
- op = "<<=" and path = "core::ops::bit::ShlAssign" and method = "shl_assign"
- or
- op = ">>=" and path = "core::ops::bit::ShrAssign" and method = "shr_assign"
+private predicate isOverloaded(string op, int arity, string path, string method) {
+ arity = 1 and
+ (
+ // Negation
+ op = "-" and path = "core::ops::arith::Neg" and method = "neg"
+ or
+ // Not
+ op = "!" and path = "core::ops::bit::Not" and method = "not"
+ or
+ // Dereference
+ op = "*" and path = "core::ops::deref::Deref" and method = "deref"
+ )
+ or
+ arity = 2 and
+ (
+ // Comparison operators
+ op = "==" and path = "core::cmp::PartialEq" and method = "eq"
+ or
+ op = "!=" and path = "core::cmp::PartialEq" and method = "ne"
+ or
+ op = "<" and path = "core::cmp::PartialOrd" and method = "lt"
+ or
+ op = "<=" and path = "core::cmp::PartialOrd" and method = "le"
+ or
+ op = ">" and path = "core::cmp::PartialOrd" and method = "gt"
+ or
+ op = ">=" and path = "core::cmp::PartialOrd" and method = "ge"
+ or
+ // Arithmetic operators
+ op = "+" and path = "core::ops::arith::Add" and method = "add"
+ or
+ op = "-" and path = "core::ops::arith::Sub" and method = "sub"
+ or
+ op = "*" and path = "core::ops::arith::Mul" and method = "mul"
+ or
+ op = "/" and path = "core::ops::arith::Div" and method = "div"
+ or
+ op = "%" and path = "core::ops::arith::Rem" and method = "rem"
+ or
+ // Arithmetic assignment expressions
+ op = "+=" and path = "core::ops::arith::AddAssign" and method = "add_assign"
+ or
+ op = "-=" and path = "core::ops::arith::SubAssign" and method = "sub_assign"
+ or
+ op = "*=" and path = "core::ops::arith::MulAssign" and method = "mul_assign"
+ or
+ op = "/=" and path = "core::ops::arith::DivAssign" and method = "div_assign"
+ or
+ op = "%=" and path = "core::ops::arith::RemAssign" and method = "rem_assign"
+ or
+ // Bitwise operators
+ op = "&" and path = "core::ops::bit::BitAnd" and method = "bitand"
+ or
+ op = "|" and path = "core::ops::bit::BitOr" and method = "bitor"
+ or
+ op = "^" and path = "core::ops::bit::BitXor" and method = "bitxor"
+ or
+ op = "<<" and path = "core::ops::bit::Shl" and method = "shl"
+ or
+ op = ">>" and path = "core::ops::bit::Shr" and method = "shr"
+ or
+ // Bitwise assignment operators
+ op = "&=" and path = "core::ops::bit::BitAndAssign" and method = "bitand_assign"
+ or
+ op = "|=" and path = "core::ops::bit::BitOrAssign" and method = "bitor_assign"
+ or
+ op = "^=" and path = "core::ops::bit::BitXorAssign" and method = "bitxor_assign"
+ or
+ op = "<<=" and path = "core::ops::bit::ShlAssign" and method = "shl_assign"
+ or
+ op = ">>=" and path = "core::ops::bit::ShrAssign" and method = "shr_assign"
+ )
}
/**
@@ -109,7 +115,8 @@ module Impl {
* trait `trait`.
*/
predicate isOverloaded(Trait trait, string methodName) {
- isOverloaded(this.getOperatorName(), trait.getCanonicalPath(), methodName)
+ isOverloaded(this.getOperatorName(), this.getNumberOfOperands(), trait.getCanonicalPath(),
+ methodName)
}
}
}
diff --git a/rust/ql/lib/codeql/rust/elements/internal/VariableImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/VariableImpl.qll
index 790186bf2c9f..b645092a016a 100644
--- a/rust/ql/lib/codeql/rust/elements/internal/VariableImpl.qll
+++ b/rust/ql/lib/codeql/rust/elements/internal/VariableImpl.qll
@@ -95,9 +95,9 @@ module Impl {
not text.charAt(0).isUppercase() and
// exclude parameters from functions without a body as these are trait method declarations
// without implementations
- not exists(Function f | not f.hasBody() and f.getParamList().getAParam().getPat() = pat) and
+ not exists(Function f | not f.hasBody() and f.getAParam().getPat() = pat) and
// exclude parameters from function pointer types (e.g. `x` in `fn(x: i32) -> i32`)
- not exists(FnPtrTypeRepr fp | fp.getParamList().getParam(_).getPat() = pat)
+ not exists(FnPtrTypeRepr fp | fp.getParamList().getAParam().getPat() = pat)
)
}
diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/CallExprBase.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/CallExprBase.qll
index 046558c356d2..1d6364fb94f3 100644
--- a/rust/ql/lib/codeql/rust/elements/internal/generated/CallExprBase.qll
+++ b/rust/ql/lib/codeql/rust/elements/internal/generated/CallExprBase.qll
@@ -8,6 +8,7 @@ private import codeql.rust.elements.internal.generated.Synth
private import codeql.rust.elements.internal.generated.Raw
import codeql.rust.elements.ArgList
import codeql.rust.elements.Attr
+import codeql.rust.elements.Expr
import codeql.rust.elements.internal.ExprImpl::Impl as ExprImpl
/**
@@ -55,5 +56,20 @@ module Generated {
* Gets the number of attrs of this call expression base.
*/
final int getNumberOfAttrs() { result = count(int i | exists(this.getAttr(i))) }
+
+ /**
+ * Gets the `index`th argument of this call expression base (0-based).
+ */
+ Expr getArg(int index) { none() }
+
+ /**
+ * Gets any of the arguments of this call expression base.
+ */
+ final Expr getAnArg() { result = this.getArg(_) }
+
+ /**
+ * Gets the number of arguments of this call expression base.
+ */
+ final int getNumberOfArgs() { result = count(int i | exists(this.getArg(i))) }
}
}
diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/Callable.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/Callable.qll
index 710cfe2078e3..f42f711dcf82 100644
--- a/rust/ql/lib/codeql/rust/elements/internal/generated/Callable.qll
+++ b/rust/ql/lib/codeql/rust/elements/internal/generated/Callable.qll
@@ -8,6 +8,7 @@ private import codeql.rust.elements.internal.generated.Synth
private import codeql.rust.elements.internal.generated.Raw
import codeql.rust.elements.internal.AstNodeImpl::Impl as AstNodeImpl
import codeql.rust.elements.Attr
+import codeql.rust.elements.Param
import codeql.rust.elements.ParamList
/**
@@ -53,5 +54,20 @@ module Generated {
* Gets the number of attrs of this callable.
*/
final int getNumberOfAttrs() { result = count(int i | exists(this.getAttr(i))) }
+
+ /**
+ * Gets the `index`th parameter of this callable (0-based).
+ */
+ Param getParam(int index) { none() }
+
+ /**
+ * Gets any of the parameters of this callable.
+ */
+ final Param getAParam() { result = this.getParam(_) }
+
+ /**
+ * Gets the number of parameters of this callable.
+ */
+ final int getNumberOfParams() { result = count(int i | exists(this.getParam(i))) }
}
}
diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/Const.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/Const.qll
index 3ff3c77f04ed..29bda01a6fef 100644
--- a/rust/ql/lib/codeql/rust/elements/internal/generated/Const.qll
+++ b/rust/ql/lib/codeql/rust/elements/internal/generated/Const.qll
@@ -108,5 +108,15 @@ module Generated {
* Holds if `getVisibility()` exists.
*/
final predicate hasVisibility() { exists(this.getVisibility()) }
+
+ /**
+ * Holds if this constant has an implementation.
+ *
+ * This is the same as `hasBody` for source code, but for library code (for which we always skip
+ * the body), this will hold when the body was present in the original code.
+ */
+ predicate hasImplementation() {
+ Synth::convertConstToRaw(this).(Raw::Const).hasImplementation()
+ }
}
}
diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/Function.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/Function.qll
index 82914663b940..00c4cd38c32b 100644
--- a/rust/ql/lib/codeql/rust/elements/internal/generated/Function.qll
+++ b/rust/ql/lib/codeql/rust/elements/internal/generated/Function.qll
@@ -164,5 +164,15 @@ module Generated {
* Holds if `getWhereClause()` exists.
*/
final predicate hasWhereClause() { exists(this.getWhereClause()) }
+
+ /**
+ * Holds if this function has an implementation.
+ *
+ * This is the same as `hasBody` for source code, but for library code (for which we always skip
+ * the body), this will hold when the body was present in the original code.
+ */
+ predicate hasImplementation() {
+ Synth::convertFunctionToRaw(this).(Raw::Function).hasImplementation()
+ }
}
}
diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/Raw.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/Raw.qll
index c5344d351d4a..503691bb83be 100644
--- a/rust/ql/lib/codeql/rust/elements/internal/generated/Raw.qll
+++ b/rust/ql/lib/codeql/rust/elements/internal/generated/Raw.qll
@@ -3734,6 +3734,14 @@ module Raw {
* Gets the visibility of this const, if it exists.
*/
Visibility getVisibility() { const_visibilities(this, result) }
+
+ /**
+ * Holds if this constant has an implementation.
+ *
+ * This is the same as `hasBody` for source code, but for library code (for which we always skip
+ * the body), this will hold when the body was present in the original code.
+ */
+ predicate hasImplementation() { const_has_implementation(this) }
}
/**
@@ -3922,6 +3930,14 @@ module Raw {
* Gets the where clause of this function, if it exists.
*/
WhereClause getWhereClause() { function_where_clauses(this, result) }
+
+ /**
+ * Holds if this function has an implementation.
+ *
+ * This is the same as `hasBody` for source code, but for library code (for which we always skip
+ * the body), this will hold when the body was present in the original code.
+ */
+ predicate hasImplementation() { function_has_implementation(this) }
}
/**
diff --git a/rust/ql/lib/codeql/rust/frameworks/async-rs.model.yml b/rust/ql/lib/codeql/rust/frameworks/async-rs.model.yml
new file mode 100644
index 000000000000..35ab72f7ca11
--- /dev/null
+++ b/rust/ql/lib/codeql/rust/frameworks/async-rs.model.yml
@@ -0,0 +1,6 @@
+extensions:
+ - addsTo:
+ pack: codeql/rust-all
+ extensible: sourceModel
+ data:
+ - ["repo:https://github.com/async-rs/async-std:async-std", "::connect", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "remote", "manual"]
diff --git a/rust/ql/lib/codeql/rust/frameworks/futures.model.yml b/rust/ql/lib/codeql/rust/frameworks/futures.model.yml
index 1361ff9aeb2e..cb311a79e6f4 100644
--- a/rust/ql/lib/codeql/rust/frameworks/futures.model.yml
+++ b/rust/ql/lib/codeql/rust/frameworks/futures.model.yml
@@ -4,3 +4,16 @@ extensions:
extensible: summaryModel
data:
- ["repo:https://github.com/rust-lang/futures-rs:futures-executor", "crate::local_pool::block_on", "Argument[0]", "ReturnValue", "value", "manual"]
+ - ["repo:https://github.com/rust-lang/futures-rs:futures-util", "::new", "Argument[0]", "ReturnValue", "taint", "manual"]
+ - ["repo:https://github.com/rust-lang/futures-rs:futures-util", "crate::io::AsyncReadExt::read", "Argument[self]", "Argument[0].Reference", "taint", "manual"]
+ - ["repo:https://github.com/rust-lang/futures-rs:futures-util", "crate::io::AsyncReadExt::read", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"]
+ - ["repo:https://github.com/rust-lang/futures-rs:futures-util", "crate::io::AsyncReadExt::read_to_end", "Argument[self]", "Argument[0].Reference", "taint", "manual"]
+ - ["repo:https://github.com/rust-lang/futures-rs:futures-util", "crate::io::AsyncReadExt::read_to_end", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"]
+ - ["repo:https://github.com/rust-lang/futures-rs:futures-util", "crate::io::AsyncBufReadExt::read_line", "Argument[self]", "Argument[0].Reference", "taint", "manual"]
+ - ["repo:https://github.com/rust-lang/futures-rs:futures-util", "crate::io::AsyncBufReadExt::read_line", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"]
+ - ["repo:https://github.com/rust-lang/futures-rs:futures-util", "crate::io::AsyncBufReadExt::read_until", "Argument[self]", "Argument[1].Reference", "taint", "manual"]
+ - ["repo:https://github.com/rust-lang/futures-rs:futures-util", "crate::io::AsyncBufReadExt::read_until", "Argument[self].Reference", "Argument[1].Reference", "taint", "manual"]
+ - ["repo:https://github.com/rust-lang/futures-rs:futures-util", "crate::io::AsyncBufReadExt::fill_buf", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"]
+ - ["repo:https://github.com/rust-lang/futures-rs:futures-util", "crate::io::AsyncBufReadExt::lines", "Argument[self]", "ReturnValue", "taint", "manual"]
+ - ["repo:https://github.com/rust-lang/futures-rs:futures-util", "crate::stream::stream::StreamExt::next", "Argument[self]", "ReturnValue.Future.Field[core::option::Option::Some(0)]", "taint", "manual"]
+ - ["repo:https://github.com/rust-lang/futures-rs:futures-util", "::poll_fill_buf", "Argument[self].Reference", "ReturnValue.Field[core::task::poll::Poll::Ready(0)].Field[core::result::Result::Ok(0)]", "taint", "manual"]
diff --git a/rust/ql/lib/codeql/rust/frameworks/http.model.yml b/rust/ql/lib/codeql/rust/frameworks/http.model.yml
index 8cb7489fdf77..20da849182ed 100644
--- a/rust/ql/lib/codeql/rust/frameworks/http.model.yml
+++ b/rust/ql/lib/codeql/rust/frameworks/http.model.yml
@@ -3,10 +3,10 @@ extensions:
pack: codeql/rust-all
extensible: sourceModel
data:
- - ["repo:https://github.com/hyperium/hyper:hyper", "::send_request", "ReturnValue.Future.Field[crate::result::Result::Ok(0)]", "remote", "manual"]
- - ["repo:https://github.com/hyperium/hyper:hyper", "::send_request", "ReturnValue.Future.Field[crate::result::Result::Ok(0)]", "remote", "manual"]
- - ["repo:https://github.com/hyperium/hyper:hyper", "::try_send_request", "ReturnValue.Future.Field[crate::result::Result::Ok(0)]", "remote", "manual"]
- - ["repo:https://github.com/hyperium/hyper:hyper", "::try_send_request", "ReturnValue.Future.Field[crate::result::Result::Ok(0)]", "remote", "manual"]
+ - ["repo:https://github.com/hyperium/hyper:hyper", "::send_request", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "remote", "manual"]
+ - ["repo:https://github.com/hyperium/hyper:hyper", "::send_request", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "remote", "manual"]
+ - ["repo:https://github.com/hyperium/hyper:hyper", "::try_send_request", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "remote", "manual"]
+ - ["repo:https://github.com/hyperium/hyper:hyper", "::try_send_request", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "remote", "manual"]
- ["repo:https://github.com/hyperium/hyper:hyper", "::get", "ReturnValue.Future", "remote", "manual"]
- ["repo:https://github.com/hyperium/hyper:hyper", "::request", "ReturnValue.Future", "remote", "manual"]
- ["repo:https://github.com/hyperium/hyper-util:hyper-util", "::get", "ReturnValue.Future", "remote", "manual"]
diff --git a/rust/ql/lib/codeql/rust/frameworks/log.model.yml b/rust/ql/lib/codeql/rust/frameworks/log.model.yml
index 15f45c400934..14d5a92b243d 100644
--- a/rust/ql/lib/codeql/rust/frameworks/log.model.yml
+++ b/rust/ql/lib/codeql/rust/frameworks/log.model.yml
@@ -15,9 +15,9 @@ extensions:
- ["lang:std", "::write", "Argument[0]", "log-injection", "manual"]
- ["lang:std", "::write_all", "Argument[0]", "log-injection", "manual"]
- ["lang:core", "crate::panicking::panic_fmt", "Argument[0]", "log-injection", "manual"]
- - ["lang:core", "crate::panicking::assert_failed", "Argument[3].Field[crate::option::Option::Some(0)]", "log-injection", "manual"]
+ - ["lang:core", "crate::panicking::assert_failed", "Argument[3].Field[core::option::Option::Some(0)]", "log-injection", "manual"]
- ["lang:core", "::expect", "Argument[0]", "log-injection", "manual"]
- ["repo:https://github.com/DesmondWillowbrook/rs-log_err:log_err", "::log_expect", "Argument[0]", "log-injection", "manual"]
- - ["repo:https://github.com/DesmondWillowbrook/rs-log_err:log_err", "::log_unwrap", "Argument[self].Field[crate::result::Result::Err(0)]", "log-injection", "manual"]
+ - ["repo:https://github.com/DesmondWillowbrook/rs-log_err:log_err", "::log_unwrap", "Argument[self].Field[core::result::Result::Err(0)]", "log-injection", "manual"]
- ["repo:https://github.com/DesmondWillowbrook/rs-log_err:log_err", "::log_expect", "Argument[0]", "log-injection", "manual"]
- - ["repo:https://github.com/DesmondWillowbrook/rs-log_err:log_err", "::log_expect", "Argument[self].Field[crate::result::Result::Err(0)]", "log-injection", "manual"]
+ - ["repo:https://github.com/DesmondWillowbrook/rs-log_err:log_err", "::log_expect", "Argument[self].Field[core::result::Result::Err(0)]", "log-injection", "manual"]
diff --git a/rust/ql/lib/codeql/rust/frameworks/reqwest.model.yml b/rust/ql/lib/codeql/rust/frameworks/reqwest.model.yml
index f954d4ce7cce..dabbaf1d8f3a 100644
--- a/rust/ql/lib/codeql/rust/frameworks/reqwest.model.yml
+++ b/rust/ql/lib/codeql/rust/frameworks/reqwest.model.yml
@@ -3,8 +3,8 @@ extensions:
pack: codeql/rust-all
extensible: sourceModel
data:
- - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "crate::get", "ReturnValue.Future.Field[crate::result::Result::Ok(0)]", "remote", "manual"]
- - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "crate::blocking::get", "ReturnValue.Field[crate::result::Result::Ok(0)]", "remote", "manual"]
+ - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "crate::get", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "remote", "manual"]
+ - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "crate::blocking::get", "ReturnValue.Field[core::result::Result::Ok(0)]", "remote", "manual"]
- addsTo:
pack: codeql/rust-all
extensible: sinkModel
@@ -15,13 +15,13 @@ extensions:
pack: codeql/rust-all
extensible: summaryModel
data:
- - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::text", "Argument[self]", "ReturnValue.Future.Field[crate::result::Result::Ok(0)]", "taint", "manual"]
- - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::text_with_charset", "Argument[self]", "ReturnValue.Future.Field[crate::result::Result::Ok(0)]", "taint", "manual"]
- - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::bytes", "Argument[self]", "ReturnValue.Future.Field[crate::result::Result::Ok(0)]", "taint", "manual"]
- - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::chunk", "Argument[self]", "ReturnValue.Future.Field[crate::result::Result::Ok(0)].Field[crate::option::Option::Some(0)]", "taint", "manual"]
- - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::text", "Argument[self]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "taint", "manual"]
- - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::text_with_charset", "Argument[self]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "taint", "manual"]
- - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::bytes", "Argument[self]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "taint", "manual"]
- - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::text", "Argument[self]", "ReturnValue.Future.Field[crate::result::Result::Ok(0)]", "taint", "manual"]
- - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::bytes", "Argument[self]", "ReturnValue.Future.Field[crate::result::Result::Ok(0)]", "taint", "manual"]
- - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::chunk", "Argument[self]", "ReturnValue.Future.Field[crate::result::Result::Ok(0)].Field[crate::option::Option::Some(0)]", "taint", "manual"]
+ - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::text", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"]
+ - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::text_with_charset", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"]
+ - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::bytes", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"]
+ - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::chunk", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]", "taint", "manual"]
+ - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::text", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"]
+ - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::text_with_charset", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"]
+ - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::bytes", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"]
+ - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::text", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"]
+ - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::bytes", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"]
+ - ["repo:https://github.com/seanmonstar/reqwest:reqwest", "::chunk", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)].Field[core::option::Option::Some(0)]", "taint", "manual"]
diff --git a/rust/ql/lib/codeql/rust/frameworks/rusqlite.model.yml b/rust/ql/lib/codeql/rust/frameworks/rusqlite.model.yml
index 0d44bbdc9a3f..ba63d848f1fc 100644
--- a/rust/ql/lib/codeql/rust/frameworks/rusqlite.model.yml
+++ b/rust/ql/lib/codeql/rust/frameworks/rusqlite.model.yml
@@ -14,7 +14,7 @@ extensions:
pack: codeql/rust-all
extensible: sourceModel
data:
- - ["repo:https://github.com/rusqlite/rusqlite:rusqlite", "::get", "ReturnValue.Field[crate::result::Result::Ok(0)]", "database", "manual"]
+ - ["repo:https://github.com/rusqlite/rusqlite:rusqlite", "::get", "ReturnValue.Field[core::result::Result::Ok(0)]", "database", "manual"]
- ["repo:https://github.com/rusqlite/rusqlite:rusqlite", "::get_unwrap", "ReturnValue", "database", "manual"]
- - ["repo:https://github.com/rusqlite/rusqlite:rusqlite", "::get_ref", "ReturnValue.Field[crate::result::Result::Ok(0)]", "database", "manual"]
+ - ["repo:https://github.com/rusqlite/rusqlite:rusqlite", "::get_ref", "ReturnValue.Field[core::result::Result::Ok(0)]", "database", "manual"]
- ["repo:https://github.com/rusqlite/rusqlite:rusqlite", "::get_ref_unwrap", "ReturnValue", "database", "manual"]
diff --git a/rust/ql/lib/codeql/rust/frameworks/rustls.model.yml b/rust/ql/lib/codeql/rust/frameworks/rustls.model.yml
new file mode 100644
index 000000000000..2f8a1f529a61
--- /dev/null
+++ b/rust/ql/lib/codeql/rust/frameworks/rustls.model.yml
@@ -0,0 +1,14 @@
+extensions:
+ - addsTo:
+ pack: codeql/rust-all
+ extensible: sourceModel
+ data:
+ - ["repo:https://github.com/rustls/rustls:rustls", "::new", "ReturnValue.Field[core::result::Result::Ok(0)]", "remote", "manual"]
+ - addsTo:
+ pack: codeql/rust-all
+ extensible: summaryModel
+ data:
+ - ["repo:https://github.com/quininer/futures-rustls:futures-rustls", "::connect", "Argument[1]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"]
+ - ["repo:https://github.com/quininer/futures-rustls:futures-rustls", "::poll_read", "Argument[self].Reference", "Argument[1].Reference", "taint", "manual"]
+ - ["repo:https://github.com/rustls/rustls:rustls", "::reader", "Argument[self]", "ReturnValue", "taint", "manual"]
+ - ["repo:https://github.com/rustls/rustls:rustls", "::read", "Argument[self]", "Argument[0].Reference", "taint", "manual"]
diff --git a/rust/ql/lib/codeql/rust/frameworks/stdlib/Bultins.qll b/rust/ql/lib/codeql/rust/frameworks/stdlib/Builtins.qll
similarity index 100%
rename from rust/ql/lib/codeql/rust/frameworks/stdlib/Bultins.qll
rename to rust/ql/lib/codeql/rust/frameworks/stdlib/Builtins.qll
diff --git a/rust/ql/lib/codeql/rust/frameworks/stdlib/Stdlib.qll b/rust/ql/lib/codeql/rust/frameworks/stdlib/Stdlib.qll
index e7d9cac24e92..51a943190c53 100644
--- a/rust/ql/lib/codeql/rust/frameworks/stdlib/Stdlib.qll
+++ b/rust/ql/lib/codeql/rust/frameworks/stdlib/Stdlib.qll
@@ -49,3 +49,28 @@ class ResultEnum extends Enum {
/** Gets the `Err` variant. */
Variant getErr() { result = this.getVariant("Err") }
}
+
+/**
+ * The [`Future` trait][1].
+ *
+ * [1]: https://doc.rust-lang.org/std/future/trait.Future.html
+ */
+class FutureTrait extends Trait {
+ FutureTrait() { this.getCanonicalPath() = "core::future::future::Future" }
+
+ /** Gets the `Output` associated type. */
+ pragma[nomagic]
+ TypeAlias getOutputType() {
+ result = this.getAssocItemList().getAnAssocItem() and
+ result.getName().getText() = "Output"
+ }
+}
+
+/**
+ * The [`String` struct][1].
+ *
+ * [1]: https://doc.rust-lang.org/std/string/struct.String.html
+ */
+class StringStruct extends Struct {
+ StringStruct() { this.getCanonicalPath() = "alloc::string::String" }
+}
diff --git a/rust/ql/lib/codeql/rust/frameworks/stdlib/env.model.yml b/rust/ql/lib/codeql/rust/frameworks/stdlib/env.model.yml
index 8ca01fdc4224..4674188c3841 100644
--- a/rust/ql/lib/codeql/rust/frameworks/stdlib/env.model.yml
+++ b/rust/ql/lib/codeql/rust/frameworks/stdlib/env.model.yml
@@ -5,10 +5,10 @@ extensions:
data:
- ["lang:std", "crate::env::args", "ReturnValue.Element", "commandargs", "manual"]
- ["lang:std", "crate::env::args_os", "ReturnValue.Element", "commandargs", "manual"]
- - ["lang:std", "crate::env::current_dir", "ReturnValue.Field[crate::result::Result::Ok(0)]", "commandargs", "manual"]
- - ["lang:std", "crate::env::current_exe", "ReturnValue.Field[crate::result::Result::Ok(0)]", "commandargs", "manual"]
- - ["lang:std", "crate::env::home_dir", "ReturnValue.Field[crate::option::Option::Some(0)]", "commandargs", "manual"]
- - ["lang:std", "crate::env::var", "ReturnValue.Field[crate::result::Result::Ok(0)]", "environment", "manual"]
- - ["lang:std", "crate::env::var_os", "ReturnValue.Field[crate::option::Option::Some(0)]", "environment", "manual"]
+ - ["lang:std", "crate::env::current_dir", "ReturnValue.Field[core::result::Result::Ok(0)]", "commandargs", "manual"]
+ - ["lang:std", "crate::env::current_exe", "ReturnValue.Field[core::result::Result::Ok(0)]", "commandargs", "manual"]
+ - ["lang:std", "crate::env::home_dir", "ReturnValue.Field[core::option::Option::Some(0)]", "commandargs", "manual"]
+ - ["lang:std", "crate::env::var", "ReturnValue.Field[core::result::Result::Ok(0)]", "environment", "manual"]
+ - ["lang:std", "crate::env::var_os", "ReturnValue.Field[core::option::Option::Some(0)]", "environment", "manual"]
- ["lang:std", "crate::env::vars", "ReturnValue.Element", "environment", "manual"]
- ["lang:std", "crate::env::vars_os", "ReturnValue.Element", "environment", "manual"]
diff --git a/rust/ql/lib/codeql/rust/frameworks/stdlib/fs.model.yml b/rust/ql/lib/codeql/rust/frameworks/stdlib/fs.model.yml
index 436ff2002baa..72dabacca82e 100644
--- a/rust/ql/lib/codeql/rust/frameworks/stdlib/fs.model.yml
+++ b/rust/ql/lib/codeql/rust/frameworks/stdlib/fs.model.yml
@@ -3,13 +3,13 @@ extensions:
pack: codeql/rust-all
extensible: sourceModel
data:
- - ["lang:std", "crate::fs::read", "ReturnValue.Field[crate::result::Result::Ok(0)]", "file", "manual"]
- - ["lang:std", "crate::fs::read_to_string", "ReturnValue.Field[crate::result::Result::Ok(0)]", "file", "manual"]
- - ["lang:std", "crate::fs::read_link", "ReturnValue.Field[crate::result::Result::Ok(0)]", "file", "manual"]
+ - ["lang:std", "crate::fs::read", "ReturnValue.Field[core::result::Result::Ok(0)]", "file", "manual"]
+ - ["lang:std", "crate::fs::read_to_string", "ReturnValue.Field[core::result::Result::Ok(0)]", "file", "manual"]
+ - ["lang:std", "crate::fs::read_link", "ReturnValue.Field[core::result::Result::Ok(0)]", "file", "manual"]
- ["lang:std", "::path", "ReturnValue", "file", "manual"]
- ["lang:std", "::file_name", "ReturnValue", "file", "manual"]
- - ["lang:std", "::open", "ReturnValue.Field[crate::result::Result::Ok(0)]", "file", "manual"]
- - ["lang:std", "::open_buffered", "ReturnValue.Field[crate::result::Result::Ok(0)]", "file", "manual"]
+ - ["lang:std", "::open", "ReturnValue.Field[core::result::Result::Ok(0)]", "file", "manual"]
+ - ["lang:std", "::open_buffered", "ReturnValue.Field[core::result::Result::Ok(0)]", "file", "manual"]
- addsTo:
pack: codeql/rust-all
extensible: sinkModel
@@ -48,5 +48,5 @@ extensions:
- ["lang:std", "::from", "Argument[0]", "ReturnValue", "taint", "manual"]
- ["lang:std", "::join", "Argument[self]", "ReturnValue", "taint", "manual"]
- ["lang:std", "::join", "Argument[0]", "ReturnValue", "taint", "manual"]
- - ["lang:std", "::canonicalize", "Argument[self].OptionalStep[normalize-path]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "taint", "manual"]
- - ["lang:std", "::canonicalize", "Argument[self].OptionalBarrier[normalize-path]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "taint", "manual"]
+ - ["lang:std", "::canonicalize", "Argument[self].OptionalStep[normalize-path]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"]
+ - ["lang:std", "::canonicalize", "Argument[self].OptionalBarrier[normalize-path]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"]
diff --git a/rust/ql/lib/codeql/rust/frameworks/stdlib/io.model.yml b/rust/ql/lib/codeql/rust/frameworks/stdlib/io.model.yml
index e6b75aeb8d32..ded14103404e 100644
--- a/rust/ql/lib/codeql/rust/frameworks/stdlib/io.model.yml
+++ b/rust/ql/lib/codeql/rust/frameworks/stdlib/io.model.yml
@@ -9,7 +9,7 @@ extensions:
extensible: summaryModel
data:
- ["lang:std", "::new", "Argument[0]", "ReturnValue", "taint", "manual"]
- - ["lang:std", "::fill_buf", "Argument[self]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "taint", "manual"]
+ - ["lang:std", "::fill_buf", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"]
- ["lang:std", "::buffer", "Argument[self]", "ReturnValue", "taint", "manual"]
- ["lang:std", "::read", "Argument[self]", "Argument[0].Reference", "taint", "manual"]
- ["lang:std", "::read", "Argument[self]", "Argument[0].Reference", "taint", "manual"]
@@ -36,4 +36,4 @@ extensions:
- ["lang:std", "crate::io::Read::chain", "Argument[0]", "ReturnValue", "taint", "manual"]
- ["lang:std", "crate::io::Read::take", "Argument[self]", "ReturnValue", "taint", "manual"]
- ["lang:std", "::lock", "Argument[self]", "ReturnValue", "taint", "manual"]
- - ["lang:std", "::next", "Argument[self]", "ReturnValue.Field[crate::option::Option::Some(0)].Field[crate::result::Result::Ok(0)]", "taint", "manual"]
+ - ["lang:std", "::next", "Argument[self]", "ReturnValue.Field[core::option::Option::Some(0)].Field[core::result::Result::Ok(0)]", "taint", "manual"]
diff --git a/rust/ql/lib/codeql/rust/frameworks/stdlib/lang-alloc.model.yml b/rust/ql/lib/codeql/rust/frameworks/stdlib/lang-alloc.model.yml
index 77c33b47b0c2..af7253004df2 100644
--- a/rust/ql/lib/codeql/rust/frameworks/stdlib/lang-alloc.model.yml
+++ b/rust/ql/lib/codeql/rust/frameworks/stdlib/lang-alloc.model.yml
@@ -39,6 +39,6 @@ extensions:
- ["lang:alloc", "::as_str", "Argument[self]", "ReturnValue", "value", "manual"]
- ["lang:alloc", "::as_bytes", "Argument[self]", "ReturnValue", "value", "manual"]
- ["lang:alloc", "<_ as crate::string::ToString>::to_string", "Argument[self]", "ReturnValue", "taint", "manual"]
- - ["lang:alloc", "::parse", "Argument[self]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "taint", "manual"]
+ - ["lang:alloc", "::parse", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"]
- ["lang:alloc", "::trim", "Argument[self]", "ReturnValue.Reference", "taint", "manual"]
- ["lang:alloc", "::from", "Argument[0]", "ReturnValue", "value", "manual"]
diff --git a/rust/ql/lib/codeql/rust/frameworks/stdlib/lang-core.model.yml b/rust/ql/lib/codeql/rust/frameworks/stdlib/lang-core.model.yml
index 69b2236e3ce8..bb29e3f86c1e 100644
--- a/rust/ql/lib/codeql/rust/frameworks/stdlib/lang-core.model.yml
+++ b/rust/ql/lib/codeql/rust/frameworks/stdlib/lang-core.model.yml
@@ -7,29 +7,29 @@ extensions:
- ["lang:core", "<[_]>::iter", "Argument[Self].Element", "ReturnValue.Element", "value", "manual"]
- ["lang:core", "<[_]>::iter_mut", "Argument[Self].Element", "ReturnValue.Element", "value", "manual"]
- ["lang:core", "<[_]>::into_iter", "Argument[Self].Element", "ReturnValue.Element", "value", "manual"]
- - ["lang:core", "crate::iter::traits::iterator::Iterator::nth", "Argument[self].Element", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "manual"]
- - ["lang:core", "crate::iter::traits::iterator::Iterator::next", "Argument[self].Element", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "manual"]
+ - ["lang:core", "crate::iter::traits::iterator::Iterator::nth", "Argument[self].Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "manual"]
+ - ["lang:core", "crate::iter::traits::iterator::Iterator::next", "Argument[self].Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "manual"]
- ["lang:core", "crate::iter::traits::iterator::Iterator::collect", "Argument[self].Element", "ReturnValue.Element", "value", "manual"]
- ["lang:core", "crate::iter::traits::iterator::Iterator::map", "Argument[self].Element", "Argument[0].Parameter[0]", "value", "manual"]
- ["lang:core", "crate::iter::traits::iterator::Iterator::for_each", "Argument[self].Element", "Argument[0].Parameter[0]", "value", "manual"]
- - ["lang:core", "::nth", "Argument[self].Element", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "manual"]
- - ["lang:core", "::next", "Argument[self].Element", "ReturnValue.Field[crate::option::Option::Some(0)]", "value", "manual"]
+ - ["lang:core", "::nth", "Argument[self].Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "manual"]
+ - ["lang:core", "::next", "Argument[self].Element", "ReturnValue.Field[core::option::Option::Some(0)]", "value", "manual"]
- ["lang:core", "::collect", "Argument[self].Element", "ReturnValue.Element", "value", "manual"]
- ["lang:core", "::map", "Argument[self].Element", "Argument[0].Parameter[0]", "value", "manual"]
- ["lang:core", "::for_each", "Argument[self].Element", "Argument[0].Parameter[0]", "value", "manual"]
# Layout
- - ["lang:core", "::from_size_align", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "taint", "manual"]
+ - ["lang:core", "::from_size_align", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"]
- ["lang:core", "::from_size_align_unchecked", "Argument[0]", "ReturnValue", "taint", "manual"]
- - ["lang:core", "::array", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "taint", "manual"]
- - ["lang:core", "::repeat", "Argument[self]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[0]", "taint", "manual"]
- - ["lang:core", "::repeat", "Argument[0]", "ReturnValue.Field[crate::result::Result::Ok(0)].Field[0]", "taint", "manual"]
- - ["lang:core", "::repeat_packed", "Argument[self]", "ReturnValue.Field[crate::result::Result::Ok(0)]", "taint", "manual"]
- - ["lang:core", "