1 #ifndef __sq_SqModule_h 2 #define __sq_SqModule_h 3 4 5 #define SqModuleVersionMajor 1 6 #define SqModuleVersionMinor 1 7 #define SqModuleVersion ((SqModuleVersionMajor << 16) | (SqModuleVersionMinor)) 8 9 struct SqModule 10 { 11 int version; 12 char *name; 13 char *type; 14 int (*parseArgument)(int, char **); 15 void (*parseEnvironment)(void); 16 void (*printUsage)(void); 17 void (*printUsageNotes)(void); 18 void *(*makeInterface)(void); 19 struct SqModule *next; 20 }; 21 22 #define SqModuleDefine(TYPE, NAME) \ 23 struct SqModule TYPE##_##NAME= { \ 24 SqModuleVersion, \ 25 #NAME, \ 26 #TYPE, \ 27 TYPE##_parseArgument, \ 28 TYPE##_parseEnvironment, \ 29 TYPE##_printUsage, \ 30 TYPE##_printUsageNotes, \ 31 TYPE##_makeInterface, \ 32 0 \ 33 } 34 35 36 #endif /* __sq_SqModule_h */ 37