NXEngine v1.0.0.3
[NXEngine.git] / common / InitList.h
blob3ee0284d66b70554df2fe0295624261ba68572c4
2 #ifndef _INITLIST_H
3 #define _INITLIST_H
5 #define MAX_INIT_RECORDS 100
7 class InitList
9 public:
10 void AddFunction(void (*func)(void));
11 void AddFunction(bool (*func)(void));
12 void AddFunction(void *func);
13 bool CallFunctions();
15 private:
16 void *fFunctions[MAX_INIT_RECORDS];
17 int fCount; // counting on behavior of auto-initilization to 0
20 class InitAdder
22 public:
23 InitAdder(InitList *initlist, void (*func)(void)) { initlist->AddFunction(func); }
24 InitAdder(InitList *initlist, bool (*func)(void)) { initlist->AddFunction(func); }
25 InitAdder(InitList &initlist, void (*func)(void)) { initlist.AddFunction(func); }
26 InitAdder(InitList &initlist, bool (*func)(void)) { initlist.AddFunction(func); }
29 #define INITFUNC(TARGET) \
30 static void __InitFunc(void); \
31 static InitAdder _ia(TARGET, __InitFunc); \
32 static void __InitFunc(void) \
34 #endif