#pragma BLITZ_APPROVE #define __EMP __EMP2 #define __EMP2 __EMP3 #define __EMP3 __EMP4 #define __EMP4 #define TABLE(n) #define TABLE_(n) const String& n() { static String s = #n; return s; } #define COLUMN(t, n, f) #define COLUMN_(t, n, f) const String& n() { static String s = #n; return s; } #define SCOLUMN(t, n) #define SCOLUMN_(tn, n) const String& n() { static String s = #n; return s; } #define NINDEX() #define TINDEX() #define SINDEX() #define LINK(rt) #define END_TABLE() #include TABLEFILE #undef TABLE #undef TABLE_ #undef COLUMN #undef COLUMN_ #undef SCOLUMN #undef SCOLUMN_ #undef NINDEX #undef TINDEX #undef SINDEX #undef END_TABLE #define TABLE(n) void Build##n(DataTable& table) { #define TABLE_(n) TABLE(n) #define COLUMN(t, n, f) if(table.FindColumn(n()) < 0) table.AddColumn(n(), ValueTypeNo(*(const t*)0), 0 f); #define COLUMN_(t, n, f) if(table.FindColumn(n()) < 0) table.AddColumn(n(), ValueTypeNo(*(const t*)0), 0 f); #define SCOLUMN(t, n) COLUMN(t, n, __EMP) #define SCOLUMN_(t, n) COLUMN(t, n, __EMP) #define NINDEX | DataTableColumn::NUMBER_INDEX #define TINDEX | DataTableColumn::DATETIME_INDEX #define SINDEX | DataTableColumn::STRING_INDEX #define END_TABLE() } #include TABLEFILE #undef TABLE #undef COLUMN #undef COLUMN_ #undef NINDEX #undef TINDEX #undef SINDEX #undef END_TABLE #ifdef BUILDPROC void BUILDPROC(DataBase& db) #else void BuildAllTables(DataBase& db) #endif { #define TABLE(n) Build##n(db.GetAdd(n())); #define COLUMN(t, n, f) #define COLUMN_(t, n, f) #define NINDEX __EMP #define TINDEX __EMP #define SINDEX __EMP #define END_TABLE() #include TABLEFILE #undef TABLE #undef COLUMN #undef COLUMN_ #undef LINK #undef END_TABLE #define TABLE(n) { DataTable& table = db[n()]; { #define COLUMN(t, n, f) } { const String& c = n(); f #define COLUMN_(t, n, f) } { const String& c = n(); f #define LINK(rt) table.Column(c).Link(db[rt()]); #define END_TABLE() } } #include TABLEFILE } #undef TABLE #undef TABLE_ #undef COLUMN #undef COLUMN_ #undef SCOLUMN #undef SCOLUMN_ #undef LINK #undef NINDEX #undef TINDEX #undef SINDEX #undef END_TABLE #undef TABLEFILE #undef __EMP #undef __EMP2 #undef __EMP3 #undef __EMP4 #ifdef BUILDPROC #undef BUILDPROC #endif