#ifndef EXAMPLE1_H #define EXAMPLE1_H //////////////////////////////// // Setup a Symbol Set typedef struct EX1_Ctx{ S64 foo; } EX1_Ctx; typedef void EX1_Hook(EX1_Ctx *ctx); typedef struct EX1_Command{ String8 name; String8 description; EX1_Hook *hook; } EX1_Command; #define SYMBOL_SET_DEFINE EX1_CommandSymbols #define EX1_CommandSymbols_Type EX1_Command #define EX1_CommandSymbols_section ".ex1CMD" #include "symbol_set.define.h" #define COMMAND_ID(N) SymbolID(EX1_CommandSymbols, N) #define COMMAND_DECL(N) SymbolDeclare(EX1_CommandSymbols, N) #define COMMAND_METADATA_FROM_ID(id) SymbolMetadataFromID(EX1_CommandSymbols, id) #define COMMAND_SCRIPT(N,desc) \ void cmdhook_##N(EX1_Ctx *ctx); \ SymbolDefine(EX1_CommandSymbols, N) = { str8_lit_const(#N), str8_lit_const(desc), cmdhook_##N };\ void cmdhook_##N(EX1_Ctx *ctx) #endif //EXAMPLE1_H