ultimatepp/uppsrc/TCore/dd_cpp.h
mdelfede 263ff5f895 changed svn layout
git-svn-id: svn://ultimatepp.org/upp/trunk@281 f0d560ea-af0d-0410-9eb7-867de7ffcac7
2008-06-07 22:31:27 +00:00

105 lines
2.2 KiB
C

#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