mirror of
https://github.com/github/codeql.git
synced 2025-12-17 09:13:20 +01:00
This is mostly cosmetic and for debugging, as the trap importer is perfectly happy with trap entries on the same line without spaces between them.
38 lines
1.0 KiB
Plaintext
38 lines
1.0 KiB
Plaintext
// generated by {{generator}} from {{source}}
|
|
// clang-format off
|
|
#include "./TrapClasses.h"
|
|
|
|
namespace codeql {
|
|
{{#classes}}
|
|
|
|
void {{name}}::emit({{^final}}TrapLabel<{{name}}Tag> id, {{/final}}std::ostream& out) const {
|
|
{{#trap_name}}
|
|
out << {{.}}Trap{id{{#single_fields}}, {{field_name}}{{/single_fields}}} << '\n';
|
|
{{/trap_name}}
|
|
{{#bases}}
|
|
{{ref.name}}::emit(id, out);
|
|
{{/bases}}
|
|
{{#fields}}
|
|
{{#is_predicate}}
|
|
if ({{field_name}}) out << {{trap_name}}Trap{id} << '\n';
|
|
{{/is_predicate}}
|
|
{{#is_optional}}
|
|
{{^is_repeated}}
|
|
if ({{field_name}}) out << {{trap_name}}Trap{id, *{{field_name}}} << '\n';
|
|
{{/is_repeated}}
|
|
{{/is_optional}}
|
|
{{#is_repeated}}
|
|
for (auto i = 0u; i < {{field_name}}.size(); ++i) {
|
|
{{^is_optional}}
|
|
out << {{trap_name}}Trap{id, i, {{field_name}}[i]} << '\n';
|
|
{{/is_optional}}
|
|
{{#is_optional}}
|
|
if ({{field_name}}[i]) out << {{trap_name}}Trap{id, i, *{{field_name}}[i]} << '\n';
|
|
{{/is_optional}}
|
|
}
|
|
{{/is_repeated}}
|
|
{{/fields}}
|
|
}
|
|
{{/classes}}
|
|
}
|