1include "spec/spec.td"
2
3class TypeDecl<string name> {
4  string Name = name;
5  string Decl = "";
6}
7
8class MacroDef<string name> {
9  string Name = name;
10  string Defn = "";
11}
12
13class SimpleMacroDef<string name, string value> : MacroDef<name> {
14  let Defn = !strconcat("#define ", name, " ", value);
15}
16
17class MacroDefineIfNot<string name, string value> : MacroDef<name> {
18  let Defn = !strconcat("#ifndef ", name, "\n",
19                        "#define " , name, " ", value, "\n",
20                        "#endif // ", name);
21}
22
23class PublicAPI<string name> {
24  string HeaderName = name;
25  list<MacroDef> Macros = [];
26  list<TypeDecl> TypeDeclarations = [];
27  list<string> Enumerations = [];
28  list<string> Structs = [];
29  list<string> Functions = [];
30}
31