Files
codeql/misc/codegen/templates/trap_traps_h.mustache
2023-02-27 09:46:48 +01:00

46 lines
805 B
Plaintext

// generated by {{generator}} from {{source}}
// clang-format off
#pragma once
#include <iostream>
#include <string>
#include "{{trap_library_dir}}/TrapLabel.h"
#include "{{trap_library_dir}}/TrapTagTraits.h"
#include "{{gen_dir}}/TrapTags.h"
namespace codeql {
{{#traps}}
// {{table_name}}
struct {{name}}Trap {
static constexpr const char* NAME = "{{name}}Trap";
{{#fields}}
{{type}} {{field_name}}{};
{{/fields}}
template <typename F>
void forEachLabel(F f) {
{{#fields}}
{{#is_label}}
f("{{field_name}}", -1, {{field_name}});
{{/is_label}}
{{/fields}}
}
};
std::ostream &operator<<(std::ostream &out, const {{name}}Trap &e);
{{#id}}
namespace detail {
template<>
struct ToBindingTrapFunctor<{{type}}> {
using type = {{name}}Trap;
};
}
{{/id}}
{{/traps}}
}