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