enum token_type { TOKEN_INT, TOKEN_DOUBLE, TOKEN_STR, TOKEN_STR_END, TOKEN_CUSTOM }; enum transform_type { TRANSFORM_NONE, TRANSFORM_DIRECT, TRANSFORM_TO_STRING }; #define COLUMN_STYLE_ANY 1 #define COLUMN_STYLE_SSA 2 #define COLUMN_STYLE_ASS 4 #define COLUMN_EVENT_ANY 8 #define COLUMN_EVENT_SSA 16 #define COLUMN_EVENT_ASS 32 #define COLUMN_EVENT_ANY_READONLY 64 struct sub_ssa_token { int type; int offset; void *func; }; struct sub_ssa_save_column_temp_info { int width; char *format; }; typedef void* (*SubSsaReadColumnFunc)(void *obj, void *val); typedef void* (*SubSsaSaveColumnFunc)(void *obj); typedef double (*SubSsaSaveColumnFuncDouble)(void *obj); typedef void (*SubSsaReadColumnFuncDouble)(void *obj, double val); typedef void* (*SubSsaSaveColumnTransformFunc)(void *obj); typedef void* (*SubSsaReadColumnTransformFunc)(void *obj); struct krySubSSAColumnInfo { int column_type; char *name; char *separator; enum token_type type; int type_param; SubSsaSaveColumnFunc func_write; enum transform_type transform_type; SubSsaSaveColumnTransformFunc func_transform_write; SubSsaReadColumnFunc func_read; SubSsaReadColumnTransformFunc func_transform_read; void *data; }; typedef void (*TokenFunc)(char *offset, char *str); struct krySubSSAColumnInfo *sub_ssa_save_find_column(char *name, int mask); class krySubSSA { public: protected: enum krySubSSAColumnListWriteType { COLUMN_LIST_WRITE_STYLE_SSA, COLUMN_LIST_WRITE_STYLE_ASS, COLUMN_LIST_WRITE_EVENT_SSA, COLUMN_LIST_WRITE_EVENT_ASS }; enum krySubSSAColumnWriteType { COLUMN_WRITE_START, COLUMN_WRITE_END, COLUMN_WRITE_STYLE, COLUMN_WRITE_NAME, COLUMN_WRITE_TEXT }; GList *GetColumnListWrite(enum krySubSSAColumnListWriteType type); void FreeColumnListWrite(GList *list); krySubSSAColumnInfo *GetColumnWrite(enum krySubSSAColumnWriteType type); private: };