- Use structs as local namespaces in C code
struct Engine_Data {
struct State* currentState;
int someFlags;
};
static struct Engine_Data s;
Putting all static vars in a compilation unit into a single struct has advantages:
- Watching in a debugger is easy since there's a single state variable containing all state
- Transition from static to reusable objects is much easier since instance data is already encapsulated
struct Engine_vtable {
int (start)();
int (stop)();
};
/* Reusable class /
struct Engine {
struct Engine_vtable vtable;
struct Engine_Data s;
};
/* Initializer /
void Engine_Init(struct Engine e);
int main()
{
struct Engine engine;
Engine_Init(&engine);
}