diff --git a/code/meosdb/MeosSQL.cpp b/code/MeosSQL.cpp similarity index 75% rename from code/meosdb/MeosSQL.cpp rename to code/MeosSQL.cpp index 622fecf..9176b2f 100644 --- a/code/meosdb/MeosSQL.cpp +++ b/code/MeosSQL.cpp @@ -29,17 +29,28 @@ #include "MeosSQL.h" -#include "../oRunner.h" -#include "../oEvent.h" -#include "../meos_util.h" -#include "../RunnerDB.h" -#include "../progress.h" -#include "../metalist.h" -#include "../MeOSFeatures.h" -#include "../meosexception.h" -#include "../generalresult.h" +#include "oRunner.h" +#include "oEvent.h" +#include "meos_util.h" +#include "RunnerDB.h" +#include "progress.h" +#include "metalist.h" +#include "MeOSFeatures.h" +#include "meosexception.h" +#include "generalresult.h" +#include "mysqlwrapper.h" -using namespace mysqlpp; +extern oEvent* gEvent; + +wstring fromUTF(const char *w) { + const int buff_pre_alloc = 1024 * 8; + static wchar_t buff[buff_pre_alloc]; + int len = strlen(w); + len = min(len + 1, buff_pre_alloc - 10); + int wlen = MultiByteToWideChar(CP_UTF8, 0, w, len, buff, buff_pre_alloc); + buff[wlen - 1] = 0; + return buff; +} wstring fromUTF(const string w) { const int buff_pre_alloc = 1024*8; @@ -60,11 +71,12 @@ string toString(const wstring &w) { return output; } -MeosSQL::MeosSQL(void) +MeosSQL::MeosSQL() { monitorId=0; warnedOldVersion=false; buildVersion=getMeosBuild(); + con = make_shared(); } MeosSQL::~MeosSQL(void) @@ -120,18 +132,25 @@ string C_START_noid(string name) return "CREATE TABLE IF NOT EXISTS "+name+" ("; } +string engine() { + string eng = gEvent->getPropertyString("DatabaseEngine", "MyISAM"); + if (eng.empty()) + return eng; + return " ENGINE = " + makeValidFileName(eng, true); +} + string C_END() { return " Modified TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, " "Counter INT UNSIGNED NOT NULL DEFAULT 0, " - "INDEX(Counter), INDEX(Modified), Removed BOOL NOT NULL DEFAULT 0) " - "ENGINE = MyISAM CHARACTER SET utf8 COLLATE utf8_general_ci"; + "INDEX(Counter), INDEX(Modified), Removed BOOL NOT NULL DEFAULT 0)" + engine() + + " CHARACTER SET utf8 COLLATE utf8_general_ci"; } string C_END_noindex() { - return " Modified TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP) " - "ENGINE = MyISAM CHARACTER SET utf8 COLLATE utf8_general_ci"; + return " Modified TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP)" + + engine() + " CHARACTER SET utf8 COLLATE utf8_general_ci"; } string limitLength(const string &in, size_t max) { @@ -148,7 +167,6 @@ string limitLength(const wstring &in, size_t max) { return toString(in.substr(0, max)); } - bool MeosSQL::listCompetitions(oEvent *oe, bool keepConnection) { errorMessage.clear(); CmpDataBase=""; @@ -159,8 +177,8 @@ bool MeosSQL::listCompetitions(oEvent *oe, bool keepConnection) { if (!keepConnection) { try { - con.connect("", oe->MySQLServer.c_str(), oe->MySQLUser.c_str(), - oe->MySQLPassword.c_str(), oe->MySQLPort); + con->connect("", oe->MySQLServer, oe->MySQLUser, + oe->MySQLPassword, oe->MySQLPort); } catch (const Exception& er) { alert(string(er.what()) + " MySQL Error"); @@ -168,12 +186,12 @@ bool MeosSQL::listCompetitions(oEvent *oe, bool keepConnection) { } } - if (!con.connected()) { + if (!con->connected()) { errorMessage = "Internal error connecting to MySQL"; return false; } - string serverInfo = con.server_info(); + string serverInfo = con->server_info(); if (serverInfo < "5.0.3") { errorMessage = "Minst MySQL X krävs. Du använder version Y.#5.0.3#" + serverInfo; @@ -188,21 +206,34 @@ bool MeosSQL::listCompetitions(oEvent *oe, bool keepConnection) { //Store verified server name oe->serverName=serverName; - NoExceptions ne(con); - - if (!con.select_db("MeOSMain")){ - con.create_db("MeOSMain"); - con.select_db("MeOSMain"); + bool ok = false; + try { + con->select_db("MeOSMain"); + ok = true; + } + catch (const Exception &) { } - Query query = con.query(); + if (!ok) { + try { + con->create_db("MeOSMain"); + con->select_db("MeOSMain"); + } + catch (const Exception &er) { + alert(string(er.what()) + " MySQL Error"); + return false; + } + } + + auto query = con->query(); try{ - mysqlpp::Query queryset = con.query(); + auto queryset = con->query(); queryset << "SET NAMES UTF8"; queryset.execute(); } - catch (const mysqlpp::Exception& ){ + catch (const Exception& ){ + } query.reset(); @@ -219,7 +250,7 @@ bool MeosSQL::listCompetitions(oEvent *oe, bool keepConnection) { query.execute(); query.reset(); - Result res = query.store("DESCRIBE oEvent"); + auto res = query.store("DESCRIBE oEvent"); int nr = (int)res.num_rows(); if (nr == 9) { query.execute("ALTER TABLE oEvent ADD COLUMN " @@ -243,11 +274,11 @@ bool MeosSQL::listCompetitions(oEvent *oe, bool keepConnection) { try { query << "SELECT * FROM oEvent"; - Result res = query.store(); + auto res = query.store(); if (res) { for (int i=0; idbVersion) { CompetitionInfo ci; @@ -293,18 +324,23 @@ bool MeosSQL::listCompetitions(oEvent *oe, bool keepConnection) { return true; } +string MeosSQL::serverVersion() const { + string serverInfo = con->server_info(); + return "MySQL " + serverInfo; +} + bool MeosSQL::repairTables(const string &db, vector &output) { // Update list database; - con.select_db(db); + con->select_db(db); output.clear(); - if (!con.connected()) { + if (!con->connected()) { errorMessage = "Internal error connecting to MySQL"; return false; } - Query q = con.query(); - Result res = q.store("SHOW TABLES"); + auto q = con->query(); + auto res = q.store("SHOW TABLES"); int numtab = (int)res.num_rows(); vector tb; for (int k = 0; k < numtab; k++) @@ -315,8 +351,8 @@ bool MeosSQL::repairTables(const string &db, vector &output) { try { res = q.store(sql); string msg; - Row row = res.at(0); - for (size_t j = 0; j < row.size(); j++) { + auto row = res.at(0); + for (int j = 0; j < row.size(); j++) { string t = row.at(j).get_string(); if (!msg.empty()) msg += ", "; @@ -333,7 +369,7 @@ bool MeosSQL::repairTables(const string &db, vector &output) { return true; } -bool MeosSQL::createRunnerDB(oEvent *oe, Query &query) +bool MeosSQL::createRunnerDB(oEvent *oe, QueryWrapper &query) { query.reset(); @@ -359,11 +395,11 @@ bool MeosSQL::createRunnerDB(oEvent *oe, Query &query) } void MeosSQL::getColumns(const string &table, set &output) { - Query query = con.query(); + auto query = con->query(); output.clear(); - Result res = query.store("DESCRIBE " + table); - for (size_t k = 0; k < res.size(); k++) { - output.insert((const char *)res.at(k).at(0)); + auto res = query.store("DESCRIBE " + table); + for (int k = 0; k < res.num_rows(); k++) { + output.insert(res.at(k).at(0).c_str()); } } @@ -371,7 +407,7 @@ void MeosSQL::upgradeDB(const string &db, oDataContainer const * dc) { set eCol; getColumns(db, eCol); - Query query = con.query(); + auto query = con->query(); if (db == "oEvent") { if (!eCol.count("Annotation")) { @@ -402,11 +438,21 @@ void MeosSQL::upgradeDB(const string &db, oDataContainer const * dc) { query.execute(sql); } } + else if (db == "oCard") { + if (!eCol.count("Voltage")) { + string sql = "ALTER TABLE " + db + " "; + sql += "ADD COLUMN " + C_UINT("Voltage"); + sql = sql.substr(0, sql.length() - 2); + query.execute(sql); + } + } - // Ugrade table - string sqlAdd = dc->generateSQLDefinition(eCol); - if (!sqlAdd.empty()) { - query.execute("ALTER TABLE " + db + " " + sqlAdd); + if (dc) { + // Ugrade table + string sqlAdd = dc->generateSQLDefinition(eCol); + if (!sqlAdd.empty()) { + query.execute("ALTER TABLE " + db + " " + sqlAdd); + } } } @@ -414,33 +460,33 @@ bool MeosSQL::openDB(oEvent *oe) { clearReadTimes(); errorMessage.clear(); - if (!con.connected() && !listCompetitions(oe, false)) + if (!con->connected() && !listCompetitions(oe, false)) return false; - try{ - con.select_db("MeOSMain"); + try { + con->select_db("MeOSMain"); } - catch (const mysqlpp::Exception& er) { + catch (const Exception& er) { setDefaultDB(); alert(string(er.what()) + " MySQL Error. Select MeosMain"); return 0; } - monitorId=0; + monitorId = 0; string dbname(oe->currentNameId.begin(), oe->currentNameId.end());//WCS try { - Query query = con.query(); + auto query = con->query(); query << "SELECT * FROM oEvent WHERE NameId=" << quote << dbname; - Result res = query.store(); + auto res = query.store(); - if (res && res.num_rows()>=1) { - Row row=res.at(0); + if (res && res.num_rows() >= 1) { + auto row = res.at(0); int version = row["Version"]; if (version < oEvent::dbVersion) { query.reset(); - query << "UPDATE oEvent SET Version=" << oEvent::dbVersion << " WHERE Id=" << row["Id"]; + query << "UPDATE oEvent SET Version=" << oEvent::dbVersion << " WHERE Id=" << int(row["Id"]); query.execute(); } else if (version > oEvent::dbVersion) { @@ -453,42 +499,53 @@ bool MeosSQL::openDB(oEvent *oe) query.reset(); query << "DELETE FROM oEvent WHERE Id=" << row["Id"]; query.execute(); - con.drop_db(dbname); + con->drop_db(dbname); return openDB(oe); }*/ - oe->Id=row["Id"]; //Don't synchronize more here... + oe->Id = row["Id"]; //Don't synchronize more here... } else { query.reset(); query << "INSERT INTO oEvent SET Name='-', Date='', NameId=" << quote << dbname - << ", Version=" << oe->dbVersion; + << ", Version=" << oe->dbVersion; - ResNSel res=query.execute(); + ResNSel res = query.execute(); - if (res){ - oe->Id=static_cast(res.insert_id); + if (res) { + oe->Id = static_cast(res.insert_id); } } } - catch (const mysqlpp::Exception& er){ + catch (const Exception& er) { setDefaultDB(); alert(string(er.what()) + " MySQL Error. Select DB."); return 0; } - { - mysqlpp::NoExceptions ne(con); + bool ok = false; + try { + con->select_db(dbname); + ok = true; + } + catch (const Exception &) { + } - if (!con.select_db(dbname)){ - con.create_db(dbname); - con.select_db(dbname); + if (!ok) { + try { + con->create_db(dbname); + con->select_db(dbname); + } + catch (const Exception& er) { + setDefaultDB(); + alert(string(er.what()) + " MySQL Error. Select DB."); + return 0; } } CmpDataBase=dbname; - Query query = con.query(); + auto query = con->query(); try { //Real version of oEvent db query << C_START("oEvent") @@ -523,10 +580,15 @@ bool MeosSQL::openDB(oEvent *oe) query << C_START("oCard") << C_INT("CardNo") << C_UINT("ReadId") + << C_UINT("Voltage") << C_STRING("Punches", 16*190) << C_END(); query.execute(); + // Ugrade oRunner + upgradeDB("oCard", nullptr); + + query.reset(); query << C_START("oClass") << C_STRING("Name", 128) @@ -600,20 +662,20 @@ bool MeosSQL::openDB(oEvent *oe) query.reset(); query << "CREATE TABLE IF NOT EXISTS oCounter (" - << "CounterId INT NOT NULL, " - << C_UINT("oControl") - << C_UINT("oCourse") - << C_UINT("oClass") - << C_UINT("oCard") - << C_UINT("oClub") - << C_UINT("oPunch") - << C_UINT("oRunner") - << C_UINT("oTeam") - << C_UINT("oEvent") - << " Modified TIMESTAMP) ENGINE = MyISAM"; + << "CounterId INT NOT NULL, " + << C_UINT("oControl") + << C_UINT("oCourse") + << C_UINT("oClass") + << C_UINT("oCard") + << C_UINT("oClub") + << C_UINT("oPunch") + << C_UINT("oRunner") + << C_UINT("oTeam") + << C_UINT("oEvent") + << " Modified TIMESTAMP)" << engine(); query.execute(); - mysqlpp::Result res = query.store("SELECT CounterId FROM oCounter"); + auto res = query.store("SELECT CounterId FROM oCounter"); if (res.num_rows()==0) { query.reset(); query << "INSERT INTO oCounter SET CounterId=1, oPunch=1, oTeam=1, oRunner=1"; @@ -623,7 +685,7 @@ bool MeosSQL::openDB(oEvent *oe) // Create runner/club DB createRunnerDB(oe, query); } - catch (const mysqlpp::Exception& er){ + catch (const Exception& er){ alert(string(er.what()) + " MySQL Error."); return 0; } @@ -631,9 +693,9 @@ bool MeosSQL::openDB(oEvent *oe) return true; } -bool MeosSQL::getErrorMessage(char *bf) +bool MeosSQL::getErrorMessage(string &err) { - strcpy_s(bf, 256, errorMessage.c_str()); + err = errorMessage; return !errorMessage.empty(); } @@ -643,15 +705,14 @@ bool MeosSQL::closeDB() errorMessage.clear(); try { - con.close(); + con->close(); } - catch (const mysqlpp::Exception&) { + catch (const Exception&) { } return true; } - //CAN BE RUN IN A SEPARTE THREAD. Access nothing without thinking... //No other MySQL-call will take place in parallell. bool MeosSQL::reConnect() @@ -664,14 +725,14 @@ bool MeosSQL::reConnect() } try { - con.close(); + con->close(); } - catch (const mysqlpp::Exception&) { + catch (const Exception&) { } try { - con.connect("", serverName.c_str(), serverUser.c_str(), - serverPassword.c_str(), serverPort); + con->connect("", serverName, serverUser, + serverPassword, serverPort); } catch (const Exception& er) { errorMessage=er.what(); @@ -679,7 +740,7 @@ bool MeosSQL::reConnect() } try { - con.select_db(CmpDataBase); + con->select_db(CmpDataBase); } catch (const Exception& er) { errorMessage=er.what(); @@ -687,11 +748,11 @@ bool MeosSQL::reConnect() } try{ - mysqlpp::Query queryset = con.query(); + auto queryset = con->query(); queryset << "SET NAMES UTF8"; queryset.execute(); } - catch (const mysqlpp::Exception& ){ + catch (const Exception& ){ } return true; @@ -704,10 +765,18 @@ OpFailStatus MeosSQL::SyncUpdate(oEvent *oe) if (CmpDataBase.empty()) return opStatusFail; - try{ - con.select_db("MeOSMain"); - mysqlpp::Query queryset = con.query(); + try { + con->query().exec("SET sql_log_bin=off"); + } + catch (const Exception &ex) { + oe->gdiBase().addInfoBox("binlog", L"warn:mysqlbinlog#" + oe->gdiBase().widen(ex.what()), 10000); + } + + try{ + con->select_db("MeOSMain"); + + auto queryset = con->query(); queryset << "UPDATE oEvent SET Name=" << quote << limitLength(oe->Name, 128) << ", " << " Annotation=" << quote << limitLength(oe->Annotation, 128) << ", " << " Date=" << quote << toString(oe->Date) << ", " @@ -717,16 +786,16 @@ OpFailStatus MeosSQL::SyncUpdate(oEvent *oe) queryset.execute(); } - catch (const mysqlpp::Exception& er){ + catch (const Exception& er){ setDefaultDB(); alert(string(er.what()) + " [UPDATING oEvent]"); return opStatusFail; } try{ - con.select_db(CmpDataBase); + con->select_db(CmpDataBase); } - catch (const mysqlpp::Exception& er){ + catch (const Exception& er){ alert(string(er.what())+" [OPENING] "+CmpDataBase); return opStatusFail; } @@ -742,7 +811,7 @@ OpFailStatus MeosSQL::SyncUpdate(oEvent *oe) alert(ex.what()); } - mysqlpp::Query queryset = con.query(); + auto queryset = con->query(); queryset << " Name=" << quote << limitLength(oe->Name, 128) << ", " << " Annotation=" << quote << limitLength(oe->Annotation, 128) << ", " << " Date=" << quote << toString(oe->Date) << ", " @@ -757,7 +826,7 @@ OpFailStatus MeosSQL::SyncUpdate(oEvent *oe) } writeTime = true; try { - con.query().exec("DELETE FROM oCard"); + con->query().exec("DELETE FROM oCard"); { list::iterator it = oe->Cards.begin(); while (it != oe->Cards.end()) { @@ -767,7 +836,7 @@ OpFailStatus MeosSQL::SyncUpdate(oEvent *oe) } } - con.query().exec("DELETE FROM oClub"); + con->query().exec("DELETE FROM oClub"); { list::iterator it = oe->Clubs.begin(); while (it != oe->Clubs.end()) { @@ -776,7 +845,7 @@ OpFailStatus MeosSQL::SyncUpdate(oEvent *oe) ++it; } } - con.query().exec("DELETE FROM oControl"); + con->query().exec("DELETE FROM oControl"); { list::iterator it = oe->Controls.begin(); while (it != oe->Controls.end()) { @@ -785,7 +854,7 @@ OpFailStatus MeosSQL::SyncUpdate(oEvent *oe) ++it; } } - con.query().exec("DELETE FROM oCourse"); + con->query().exec("DELETE FROM oCourse"); { list::iterator it = oe->Courses.begin(); while (it != oe->Courses.end()) { @@ -794,7 +863,7 @@ OpFailStatus MeosSQL::SyncUpdate(oEvent *oe) ++it; } } - con.query().exec("DELETE FROM oClass"); + con->query().exec("DELETE FROM oClass"); { list::iterator it = oe->Classes.begin(); while (it != oe->Classes.end()) { @@ -803,7 +872,7 @@ OpFailStatus MeosSQL::SyncUpdate(oEvent *oe) ++it; } } - con.query().exec("DELETE FROM oRunner"); + con->query().exec("DELETE FROM oRunner"); { list::iterator it = oe->Runners.begin(); while (it != oe->Runners.end()) { @@ -813,7 +882,7 @@ OpFailStatus MeosSQL::SyncUpdate(oEvent *oe) } } - con.query().exec("DELETE FROM oTeam"); + con->query().exec("DELETE FROM oTeam"); { list::iterator it = oe->Teams.begin(); while (it != oe->Teams.end()) { @@ -823,7 +892,7 @@ OpFailStatus MeosSQL::SyncUpdate(oEvent *oe) } } - con.query().exec("DELETE FROM oPunch"); + con->query().exec("DELETE FROM oPunch"); { list::iterator it = oe->punches.begin(); while (it != oe->punches.end()) { @@ -864,14 +933,14 @@ OpFailStatus MeosSQL::uploadRunnerDB(oEvent *oe) int s2 = (1000 * rdb.size())/tz; // Reset databases - con.query().exec("DELETE FROM dbClub"); - con.query().exec("DELETE FROM dbRunner"); + con->query().exec("DELETE FROM dbClub"); + con->query().exec("DELETE FROM dbRunner"); for (size_t k = 0; kquery(); string setId = "Id=" + itos(cdb[k].Id) + ", "; query << "INSERT INTO dbClub SET " << setId << "Name=" << quote << toString(cdb[k].name) << cdb[k].getDCI().generateSQLSet(true); @@ -880,7 +949,7 @@ OpFailStatus MeosSQL::uploadRunnerDB(oEvent *oe) query.execute(); errorCount = 0; } - catch (const mysqlpp::Exception& ex) { + catch (const Exception& ex) { errorMessage = ex.what(); totErrorCount++; if (++errorCount > 5) @@ -899,7 +968,7 @@ OpFailStatus MeosSQL::uploadRunnerDB(oEvent *oe) rwdb[k].recode(rdb[k]); } - mysqlpp::Query query = con.query(); + auto query = con->query(); query << "INSERT INTO dbRunner SET " << "Name=" << quote << rdb[k].name << ", ExtId=" << rdb[k].extId << ", Club=" << rdb[k].clubNo << @@ -910,7 +979,7 @@ OpFailStatus MeosSQL::uploadRunnerDB(oEvent *oe) query.execute(); errorCount = 0; } - catch (const mysqlpp::Exception& ex) { + catch (const Exception& ex) { totErrorCount++; errorMessage = ex.what(); if (++errorCount > 5) @@ -921,11 +990,11 @@ OpFailStatus MeosSQL::uploadRunnerDB(oEvent *oe) pw.setProgress(s1 + (k*s2)/size); } - Result cnt = con.query().store("SELECT DATE_FORMAT(NOW(),'%Y-%m-%d %H:%i:%s')"); - string dateTime = cnt.at(0).at(0); + auto cnt = con->query().store("SELECT DATE_FORMAT(NOW(),'%Y-%m-%d %H:%i:%s')"); + string dateTime = cnt.at(0).at(0).get_string(); oe->runnerDB->setDataDate(dateTime); } - catch (const mysqlpp::Exception& er) { + catch (const Exception& er) { errorMessage = er.what(); return opStatusFail; } @@ -935,7 +1004,7 @@ OpFailStatus MeosSQL::uploadRunnerDB(oEvent *oe) return opStatusOK; } -bool MeosSQL::storeData(oDataInterface odi, const Row &row, unsigned long &revision) { +bool MeosSQL::storeData(oDataInterface odi, const RowWrapper &row, unsigned long &revision) { //errorMessage.clear(); list varint; list varstring; @@ -954,7 +1023,7 @@ bool MeosSQL::storeData(oDataInterface odi, const Row &row, unsigned long &revis } } else { - __int64 val = row[it_int->name].operator mysqlpp::ulonglong(); + __int64 val = row[it_int->name].ulonglong(); __int64 oldVal = *(it_int->data64); if (val != oldVal) { memcpy(it_int->data64, &val, 8); @@ -997,10 +1066,10 @@ OpFailStatus MeosSQL::SyncRead(oEvent *oe) { if (CmpDataBase.empty()) return opStatusFail; - if (!oe || !con.connected()) + if (!oe || !con->connected()) return opStatusFail; - if (oe->HasDBConnection) { + if (oe->hasDBConnection()) { //We already have established connectation, and just want to sync data. return SyncEvent(oe); } @@ -1011,13 +1080,13 @@ OpFailStatus MeosSQL::SyncRead(oEvent *oe) { ProgressWindow pw(oe->gdiBase().getHWNDTarget()); try { - con.select_db("MeOSMain"); + con->select_db("MeOSMain"); - Query query = con.query(); + auto query = con->query(); query << "SELECT * FROM oEvent WHERE Id=" << oe->Id; - Result res = query.store(); + auto res = query.store(); - Row row; + RowWrapper row; if (row=res.at(0)){ oe->Name = fromUTF(string(row["Name"])); oe->Annotation = fromUTF(string(row["Annotation"])); @@ -1026,15 +1095,15 @@ OpFailStatus MeosSQL::SyncRead(oEvent *oe) { oe->currentNameId = fromUTF(string(row["NameId"])); } - con.select_db(CmpDataBase); + con->select_db(CmpDataBase); } - catch (const mysqlpp::Exception& er){ + catch (const Exception& er){ setDefaultDB(); alert(string(er.what())+" [SYNCREAD oEvent]"); return opStatusFail; } - Query query = con.query(); + auto query = con->query(); int nRunner = 0; int nCard = 0; @@ -1045,7 +1114,7 @@ OpFailStatus MeosSQL::SyncRead(oEvent *oe) { int nSum = 1; try { - mysqlpp::Result cnt = query.store("SELECT COUNT(*) FROM dbClub"); + auto cnt = query.store("SELECT COUNT(*) FROM dbClub"); nClubDB = cnt.at(0).at(0); cnt = query.store("SELECT COUNT(*) FROM dbRunner"); @@ -1080,7 +1149,7 @@ OpFailStatus MeosSQL::SyncRead(oEvent *oe) { if (nSum > 400) pw.init(); } - catch (const mysqlpp::Exception& er){ + catch (const Exception& er){ alert(string(er.what())+" [SYNCREAD INFO]"); return opStatusFail; } @@ -1090,9 +1159,9 @@ OpFailStatus MeosSQL::SyncRead(oEvent *oe) { try { //Update oEvent query << "SELECT * FROM oEvent"; - Result res = query.store(); + auto res = query.store(); - Row row; + RowWrapper row; if (row=res.at(0)) { oe->Name = fromUTF(string(row["Name"])); oe->Annotation = fromUTF(string(row["Annotation"])); @@ -1127,7 +1196,7 @@ OpFailStatus MeosSQL::SyncRead(oEvent *oe) { errorMessage = "Unexpected error, oEvent table was empty"; return opStatusFail; } - catch (const mysqlpp::Exception& er){ + catch (const Exception& er){ alert(string(er.what())+" [SYNCREAD oEvent/Club]"); return opStatusFail; } @@ -1135,12 +1204,12 @@ OpFailStatus MeosSQL::SyncRead(oEvent *oe) { pw.setProgress(20); oe->sqlClubs.reset(); try { - ResUse res = query.use("SELECT * FROM oClub WHERE Removed=0"); + auto res = query.use("SELECT * FROM oClub WHERE Removed=0"); // Retreive result rows one by one. if (res){ // Get each row in result set. - Row row; + RowWrapper row; while (row = res.fetch_row()) { oClub c(oe, row["Id"]); @@ -1152,7 +1221,7 @@ OpFailStatus MeosSQL::SyncRead(oEvent *oe) { } catch (const EndOfResults&) { } - catch (const mysqlpp::Exception& er){ + catch (const Exception& er){ alert(string(er.what())+" [SYNCREAD oEvent/Club]"); return opStatusFail; } @@ -1161,11 +1230,11 @@ OpFailStatus MeosSQL::SyncRead(oEvent *oe) { oe->sqlControls.reset(); try { - ResUse res = query.use("SELECT * FROM oControl WHERE Removed=0"); + auto res = query.use("SELECT * FROM oControl WHERE Removed=0"); if (res) { // Get each row in result set. - Row row; + RowWrapper row; while (row = res.fetch_row()) { oControl c(oe, row["Id"]); @@ -1177,7 +1246,7 @@ OpFailStatus MeosSQL::SyncRead(oEvent *oe) { } catch (const EndOfResults& ) { } - catch (const mysqlpp::Exception& er){ + catch (const Exception& er){ alert(string(er.what())+" [SYNCREAD oEvent/Control]"); return opStatusFail; } @@ -1186,11 +1255,11 @@ OpFailStatus MeosSQL::SyncRead(oEvent *oe) { pw.setProgress(40); try{ - ResUse res = query.use("SELECT * FROM oCourse WHERE Removed=0"); + auto res = query.use("SELECT * FROM oCourse WHERE Removed=0"); if (res){ // Get each row in result set. - Row row; + RowWrapper row; set tmp; while (row = res.fetch_row()) { oCourse c(oe, row["Id"]); @@ -1202,7 +1271,7 @@ OpFailStatus MeosSQL::SyncRead(oEvent *oe) { } catch (const EndOfResults& ) { } - catch (const mysqlpp::Exception& er){ + catch (const Exception& er){ alert(string(er.what())+" [SYNCREAD oEvent/Course]"); return opStatusFail; } @@ -1211,10 +1280,10 @@ OpFailStatus MeosSQL::SyncRead(oEvent *oe) { oe->sqlClasses.reset(); try{ - ResUse res = query.use("SELECT * FROM oClass WHERE Removed=0"); + auto res = query.use("SELECT * FROM oClass WHERE Removed=0"); if (res) { - Row row; + RowWrapper row; while (row = res.fetch_row()) { oClass c(oe, row["Id"]); storeClass(row, c, false, false); @@ -1226,7 +1295,7 @@ OpFailStatus MeosSQL::SyncRead(oEvent *oe) { } catch (const EndOfResults& ) { } - catch (const mysqlpp::Exception& er){ + catch (const Exception& er){ alert(string(er.what())+" [SYNCREAD oEvent/Class]"); return opStatusFail; } @@ -1234,13 +1303,13 @@ OpFailStatus MeosSQL::SyncRead(oEvent *oe) { oe->sqlCards.reset(); try{ - ResUse res = query.use("SELECT * FROM oCard WHERE Removed=0"); + auto res = query.use("SELECT * FROM oCard WHERE Removed=0"); int counter = 0; pStart += pPart; pPart = (1000 * nCard) / nSum; if (res){ - Row row; + RowWrapper row; while (row = res.fetch_row()) { oCard c(oe, row["Id"]); storeCard(row, c); @@ -1256,20 +1325,20 @@ OpFailStatus MeosSQL::SyncRead(oEvent *oe) { } catch (const EndOfResults& ) { } - catch (const mysqlpp::Exception& er){ + catch (const Exception& er){ alert(string(er.what())+" [SYNCREAD oEvent/Card]"); return opStatusFail; } oe->sqlRunners.reset(); try{ - ResUse res = query.use("SELECT * FROM oRunner WHERE Removed=0"); + auto res = query.use("SELECT * FROM oRunner WHERE Removed=0"); int counter = 0; pStart += pPart; pPart = (1000 * nRunner) / nSum; if (res){ - Row row; + RowWrapper row; while (row = res.fetch_row()) { oRunner r(oe, row["Id"]); storeRunner(row, r, false, false, false, false); @@ -1284,7 +1353,7 @@ OpFailStatus MeosSQL::SyncRead(oEvent *oe) { } catch (const EndOfResults& ) { } - catch (const mysqlpp::Exception& er){ + catch (const Exception& er){ alert(string(er.what())+" [SYNCREAD oEvent/Runner]"); return opStatusFail; } @@ -1292,13 +1361,13 @@ OpFailStatus MeosSQL::SyncRead(oEvent *oe) { oe->sqlTeams.reset(); try{ - ResUse res = query.use("SELECT * FROM oTeam WHERE Removed=0"); + auto res = query.use("SELECT * FROM oTeam WHERE Removed=0"); int counter = 0; pStart += pPart; pPart = (1000 * nTeam) / nSum; if (res){ - Row row; + RowWrapper row; while (row = res.fetch_row()) { oTeam t(oe, row["Id"]); @@ -1325,7 +1394,7 @@ OpFailStatus MeosSQL::SyncRead(oEvent *oe) { } catch (const EndOfResults& ) { } - catch (const mysqlpp::Exception& er){ + catch (const Exception& er){ alert(string(er.what())+" [SYNCREAD oEvent/Team]"); return opStatusFail; } @@ -1335,7 +1404,7 @@ OpFailStatus MeosSQL::SyncRead(oEvent *oe) { if (nClubDB == 0 && nRunnerDB == 0) return retValue; // Not modified - Result cnt; + ResultWrapper cnt; // Note dbRunner is stored after dbClub if (nRunnerDB>0) cnt = query.store("SELECT DATE_FORMAT(MAX(Modified),'%Y-%m-%d %H:%i:%s') FROM dbRunner"); @@ -1346,13 +1415,13 @@ OpFailStatus MeosSQL::SyncRead(oEvent *oe) { oe->runnerDB->prepareLoadFromServer(nRunnerDB, nClubDB); - ResUse res = query.use("SELECT * FROM dbClub"); + auto res = query.use("SELECT * FROM dbClub"); int counter = 0; pStart += pPart; pPart = (1000 * nClubDB) / nSum; if (res) { - Row row; + RowWrapper row; while (row = res.fetch_row()) { oClub t(oe, row["Id"]); @@ -1369,19 +1438,19 @@ OpFailStatus MeosSQL::SyncRead(oEvent *oe) { } catch (const EndOfResults& ) { } - catch (const mysqlpp::Exception& er){ + catch (const Exception& er){ alert(string(er.what())+" [SYNCREAD dbClub]"); return opStatusFail; } try { - ResUse res = query.use("SELECT * FROM dbRunner"); + auto res = query.use("SELECT * FROM dbRunner"); int counter = 0; pStart += pPart; pPart = (1000 * nRunnerDB) / nSum; if (res) { - Row row; + RowWrapper row; while (row = res.fetch_row()) { string name = (string)row["Name"]; string ext = row["ExtId"]; @@ -1413,7 +1482,7 @@ OpFailStatus MeosSQL::SyncRead(oEvent *oe) { } catch (const EndOfResults& ) { } - catch (const mysqlpp::Exception& er) { + catch (const Exception& er) { alert(string(er.what())+" [SYNCREAD dbRunner]"); return opStatusFail; } @@ -1424,7 +1493,7 @@ OpFailStatus MeosSQL::SyncRead(oEvent *oe) { return retValue; } -void MeosSQL::storeClub(const Row &row, oClub &c) +void MeosSQL::storeClub(const RowWrapper &row, oClub &c) { string n = row["Name"]; c.internalSetName(fromUTF(n)); @@ -1433,14 +1502,13 @@ void MeosSQL::storeClub(const Row &row, oClub &c) c.counter = row["Counter"]; c.Removed = row["Removed"]; - c.oe->sqlClubs.changed = true; c.changedObject(); synchronized(c); storeData(c.getDI(), row, c.oe->dataRevision); } -void MeosSQL::storeControl(const Row &row, oControl &c) +void MeosSQL::storeControl(const RowWrapper &row, oControl &c) { c.Name = fromUTF((string)row["Name"]); c.setNumbers(fromUTF((string)row["Numbers"])); @@ -1451,7 +1519,6 @@ void MeosSQL::storeControl(const Row &row, oControl &c) c.counter = row["Counter"]; c.Removed = row["Removed"]; - c.oe->sqlControls.changed = true; if (c.changed || oldStat != c.Status) { c.oe->dataRevision++; c.changed = false; @@ -1463,26 +1530,22 @@ void MeosSQL::storeControl(const Row &row, oControl &c) storeData(c.getDI(), row, c.oe->dataRevision); } -void MeosSQL::storeCard(const Row &row, oCard &c) +void MeosSQL::storeCard(const RowWrapper &row, oCard &c) { c.cardNo = row["CardNo"]; c.readId = row["ReadId"]; + c.miliVolt = row["Voltage"]; c.importPunches(string(row["Punches"])); c.sqlUpdated = row["Modified"]; c.counter = row["Counter"]; c.Removed = row["Removed"]; - pRunner r = c.getOwner(); - if (r) { - r->sqlChanged = true; - } c.changedObject(); synchronized(c); - c.oe->sqlCards.changed = true; } -void MeosSQL::storePunch(const Row &row, oFreePunch &p, bool rehash) +void MeosSQL::storePunch(const RowWrapper &row, oFreePunch &p, bool rehash) { if (rehash) { p.setCardNo(row["CardNo"], true); @@ -1501,10 +1564,9 @@ void MeosSQL::storePunch(const Row &row, oFreePunch &p, bool rehash) p.changedObject(); synchronized(p); - p.oe->sqlPunches.changed = true; } -OpFailStatus MeosSQL::storeClass(const Row &row, oClass &c, +OpFailStatus MeosSQL::storeClass(const RowWrapper &row, oClass &c, bool readCourses, bool allowSubRead) { OpFailStatus success = opStatusOK; @@ -1560,14 +1622,12 @@ OpFailStatus MeosSQL::storeClass(const Row &row, oClass &c, storeData(c.getDI(), row, c.oe->dataRevision); c.changed = false; - c.changedObject(); - c.oe->sqlClasses.changed = true; synchronized(c); return success; } -OpFailStatus MeosSQL::storeCourse(const Row &row, oCourse &c, +OpFailStatus MeosSQL::storeCourse(const RowWrapper &row, oCourse &c, set &readControls, bool allowSubRead) { OpFailStatus success = opStatusOK; @@ -1603,12 +1663,11 @@ OpFailStatus MeosSQL::storeCourse(const Row &row, oCourse &c, c.oe->dataRevision++; c.changed = false; c.changedObject(); - c.oe->sqlCourses.changed = true; synchronized(c); return success; } -OpFailStatus MeosSQL::storeRunner(const Row &row, oRunner &r, +OpFailStatus MeosSQL::storeRunner(const RowWrapper &row, oRunner &r, bool readCourseCard, bool readClassClub, bool readRunners, @@ -1772,14 +1831,12 @@ OpFailStatus MeosSQL::storeRunner(const Row &row, oRunner &r, // Mark new class as changed r.changedObject(); - r.sqlChanged = true; - r.oe->sqlRunners.changed = true; synchronized(r); return success; } -OpFailStatus MeosSQL::storeTeam(const Row &row, oTeam &t, +OpFailStatus MeosSQL::storeTeam(const RowWrapper &row, oTeam &t, bool readRecursive, bool allowSubRead) { oEvent *oe=t.oe; @@ -1886,30 +1943,25 @@ OpFailStatus MeosSQL::storeTeam(const Row &row, oTeam &t, t.importRunners(pRns); } - // Mark new class as changed. - if (t.Class) - t.Class->markSQLChanged(-1,-1); - - t.sqlChanged = true; - t.oe->sqlTeams.changed = true; + t.changedObject(); // Also marks new class changed synchronized(t); return success; } -bool MeosSQL::Remove(oBase *ob) +bool MeosSQL::remove(oBase *ob) { errorMessage.clear(); if (CmpDataBase.empty()) return false; - if (!ob || !con.connected()) + if (!ob || !con->connected()) return false; if (!ob->Id) return true; //Not in DB. - Query query = con.query(); + auto query = con->query(); string oTable; @@ -1949,7 +2001,7 @@ bool MeosSQL::Remove(oBase *ob) ob->Removed = true; ob->changed = false; } - catch (const mysqlpp::Exception& er){ + catch (const Exception& er){ alert(string(er.what())+" [REMOVE " +oTable +"]"); return false; } @@ -1965,10 +2017,22 @@ OpFailStatus MeosSQL::syncUpdate(oRunner *r, bool forceWriteAll) if (CmpDataBase.empty()) return opStatusFail; - if (!r || !con.connected()) + if (!r || !con->connected()) return opStatusFail; - mysqlpp::Query queryset = con.query(); + if (r->Card && !r->Card->existInDB()) + syncUpdate(r->Card, forceWriteAll); + + if (r->Class && !r->Class->existInDB()) + syncUpdate(r->Class, forceWriteAll); + + if (r->Course && !r->Course->existInDB()) + syncUpdate(r->Course, forceWriteAll); + + if (r->Club && !r->Club->existInDB()) + syncUpdate(r->Club, forceWriteAll); + + auto queryset = con->query(); queryset << " Name=" << quote << toString(r->sName) << ", " << " CardNo=" << r->cardNumber << ", " << " StartNo=" << r->StartNo << ", " @@ -1995,7 +2059,7 @@ OpFailStatus MeosSQL::syncUpdate(oRunner *r, bool forceWriteAll) bool MeosSQL::isOld(int counter, const string &time, oBase *ob) { - return counter>ob->counter || time>ob->sqlUpdated; + return counter != ob->counter || time != ob->sqlUpdated; } OpFailStatus MeosSQL::syncRead(bool forceRead, oRunner *r) @@ -2020,7 +2084,7 @@ OpFailStatus MeosSQL::syncRead(bool forceRead, oRunner *r, bool readClassClub, b if (CmpDataBase.empty()) return opStatusFail; - if (!r || !con.connected()) + if (!r || !con->connected()) return opStatusFail; if (!forceRead) { @@ -2032,11 +2096,11 @@ OpFailStatus MeosSQL::syncRead(bool forceRead, oRunner *r, bool readClassClub, b } try { - Query query = con.query(); + auto query = con->query(); query << "SELECT * FROM oRunner WHERE Id=" << r->Id << andWhereOld(r); - Result res = query.store(); + auto res = query.store(); - Row row; + RowWrapper row; if (!res.empty()) { row=res.at(0); // Remotly changed update! @@ -2083,7 +2147,7 @@ OpFailStatus MeosSQL::syncRead(bool forceRead, oRunner *r, bool readClassClub, b return opStatusOK; } - catch (const mysqlpp::Exception& er){ + catch (const Exception& er){ alert(string(er.what())+" [SYNCREAD oRunner]"); return opStatusFail; } @@ -2097,13 +2161,13 @@ OpFailStatus MeosSQL::syncUpdate(oCard *c, bool forceWriteAll) if (CmpDataBase.empty()) return opStatusFail; - if (!c || !con.connected()) + if (!c || !con->connected()) return opStatusFail; - mysqlpp::Query queryset = con.query(); - queryset << " CardNo=" << c->cardNo << ", " - << " ReadId=" << c->readId << ", " - << " Punches=" << quote << c->getPunchString(); + auto queryset = con->query(); + queryset << " CardNo=" << c->cardNo + << ", ReadId=" << c->readId << ", Voltage=" << max(0, c->miliVolt) + << ", Punches=" << quote << c->getPunchString(); return syncUpdate(queryset, "oCard", c); } @@ -2114,7 +2178,7 @@ OpFailStatus MeosSQL::syncRead(bool forceRead, oCard *c) if (CmpDataBase.empty()) return opStatusFail; - if (!c || !con.connected()) + if (!c || !con->connected()) return opStatusFail; if (!forceRead) { @@ -2126,11 +2190,11 @@ OpFailStatus MeosSQL::syncRead(bool forceRead, oCard *c) } try{ - Query query = con.query(); + auto query = con->query(); query << "SELECT * FROM oCard WHERE Id=" << c->Id; - Result res = query.store(); + auto res = query.store(); - Row row; + RowWrapper row; if (!res.empty()){ row=res.at(0); if (!c->changed || isOld(row["Counter"], string(row["Modified"]), c)){ @@ -2156,7 +2220,7 @@ OpFailStatus MeosSQL::syncRead(bool forceRead, oCard *c) return opStatusOK; } - catch (const mysqlpp::Exception& er){ + catch (const Exception& er){ alert(string(er.what())+" [SYNCREAD oCard]"); return opStatusFail; } @@ -2171,10 +2235,22 @@ OpFailStatus MeosSQL::syncUpdate(oTeam *t, bool forceWriteAll) { if (CmpDataBase.empty()) return opStatusFail; - if (!t || !con.connected()) + if (!t || !con->connected()) return opStatusFail; - mysqlpp::Query queryset = con.query(); + if (t->Class && !t->Class->existInDB()) + syncUpdate(t->Class, forceWriteAll); + + if (t->Club && !t->Club->existInDB()) + syncUpdate(t->Club, forceWriteAll); + + for (int i = 0; i < t->Runners.size(); i++) { + if (t->Runners[i] && !t->Runners[i]->existInDB()) { + syncUpdate(t->Runners[i], forceWriteAll); + } + } + + auto queryset = con->query(); queryset << " Name=" << quote << toString(t->sName) << ", " << " Runners=" << quote << t->getRunners() << ", " @@ -2207,7 +2283,7 @@ OpFailStatus MeosSQL::syncRead(bool forceRead, oTeam *t, bool readRecursive) if (CmpDataBase.empty()) return opStatusFail; - if (!t || !con.connected()) + if (!t || !con->connected()) return opStatusFail; if (!forceRead) { @@ -2219,11 +2295,11 @@ OpFailStatus MeosSQL::syncRead(bool forceRead, oTeam *t, bool readRecursive) } try { - Query query = con.query(); + auto query = con->query(); query << "SELECT * FROM oTeam WHERE Id=" << t->Id << andWhereOld(t); - Result res = query.store(); + auto res = query.store(); - Row row; + RowWrapper row; if (!res.empty()) { row=res.at(0); @@ -2258,7 +2334,7 @@ OpFailStatus MeosSQL::syncRead(bool forceRead, oTeam *t, bool readRecursive) return opStatusOK; } - catch (const mysqlpp::Exception& er){ + catch (const Exception& er){ alert(string(er.what())+" [SYNCREAD oTeam]"); return opStatusFail; } @@ -2273,9 +2349,22 @@ OpFailStatus MeosSQL::syncUpdate(oClass *c, bool forceWriteAll) if (CmpDataBase.empty()) return opStatusFail; - if (!c || !con.connected()) + if (!c || !con->connected()) return opStatusFail; - mysqlpp::Query queryset = con.query(); + auto queryset = con->query(); + OpFailStatus ret = opStatusOK; + + // Ensure all courses are written to db + if (c->Course && !c->Course->existInDB()) { + ret = syncUpdate(c->Course, forceWriteAll); + } + for (auto &mc : c->MultiCourse) { + for (pCourse cc : mc) { + if (cc && !cc->existInDB()) { + ret = min(ret, syncUpdate(cc, forceWriteAll)); + } + } + } queryset << " Name=" << quote << toString(c->Name) << "," << " Course=" << c->getCourseId() << "," @@ -2297,7 +2386,7 @@ OpFailStatus MeosSQL::syncRead(bool forceRead, oClass *c, bool readCourses) if (CmpDataBase.empty()) return opStatusFail; - if (!c || !con.connected()) + if (!c || !con->connected()) return opStatusFail; if (!forceRead && !c->existInDB()) @@ -2307,11 +2396,11 @@ OpFailStatus MeosSQL::syncRead(bool forceRead, oClass *c, bool readCourses) return opStatusOK; try { - Query query = con.query(); + auto query = con->query(); query << "SELECT * FROM oClass WHERE Id=" << c->Id << andWhereOld(c); - Result res = query.store(); + auto res = query.store(); - Row row; + RowWrapper row; if (!res.empty()){ row=res.at(0); OpFailStatus success = opStatusOK; @@ -2343,7 +2432,7 @@ OpFailStatus MeosSQL::syncRead(bool forceRead, oClass *c, bool readCourses) return opStatusOK; } - catch (const mysqlpp::Exception& er){ + catch (const Exception& er){ alert(string(er.what())+" [SYNCREAD oClass]"); return opStatusFail; } @@ -2358,7 +2447,7 @@ OpFailStatus MeosSQL::syncReadClassCourses(oClass *c, const set &courses, return success; oEvent *oe = c->oe; try { - Query query = con.query(); + auto query = con->query(); string in; for(set::const_iterator it=courses.begin(); it!=courses.end(); ++it) { if (!in.empty()) @@ -2366,11 +2455,11 @@ OpFailStatus MeosSQL::syncReadClassCourses(oClass *c, const set &courses, in += itos(*it); } query << "SELECT Id, Counter, Modified FROM oCourse WHERE Id IN (" << in << ")"; - Result res = query.store(); + auto res = query.store(); set processedCourses(courses); set controlIds; - for (size_t k = 0; k < res.size(); k++) { - Row row = res.at(k); + for (int k = 0; k < res.num_rows(); k++) { + auto row = res.at(k); int id = row["Id"]; int counter = row["Counter"]; string modified = row["Modified"]; @@ -2409,7 +2498,7 @@ OpFailStatus MeosSQL::syncReadClassCourses(oClass *c, const set &courses, return success; } - catch (const mysqlpp::Exception& er){ + catch (const Exception& er){ alert(string(er.what())+" [SYNCREAD oClassCourse]"); return opStatusFail; } @@ -2420,7 +2509,7 @@ OpFailStatus MeosSQL::syncReadControls(oEvent *oe, const set &controls) { if (controls.empty()) return success; try { - Query query = con.query(); + auto query = con->query(); string in; for(set::const_iterator it=controls.begin(); it!=controls.end(); ++it) { if (!in.empty()) @@ -2428,10 +2517,10 @@ OpFailStatus MeosSQL::syncReadControls(oEvent *oe, const set &controls) { in += itos(*it); } query << "SELECT Id, Counter, Modified FROM oControl WHERE Id IN (" << in << ")"; - Result res = query.store(); + auto res = query.store(); set processedControls(controls); - for (size_t k = 0; k < res.size(); k++) { - Row row = res.at(k); + for (int k = 0; k < res.num_rows(); k++) { + RowWrapper row = res.at(k); int id = row["Id"]; int counter = row["Counter"]; string modified = row["Modified"]; @@ -2458,7 +2547,7 @@ OpFailStatus MeosSQL::syncReadControls(oEvent *oe, const set &controls) { return success; } - catch (const mysqlpp::Exception& er){ + catch (const Exception& er){ alert(string(er.what())+" [SYNCREAD oClass]"); return opStatusFail; } @@ -2472,9 +2561,9 @@ OpFailStatus MeosSQL::syncUpdate(oClub *c, bool forceWriteAll) if (CmpDataBase.empty()) return opStatusFail; - if (!c || !con.connected()) + if (!c || !con->connected()) return opStatusFail; - mysqlpp::Query queryset = con.query(); + auto queryset = con->query(); queryset << " Name=" << quote << toString(c->name) << c->getDI().generateSQLSet(forceWriteAll); @@ -2488,7 +2577,7 @@ OpFailStatus MeosSQL::syncRead(bool forceRead, oClub *c) if (CmpDataBase.empty()) return opStatusFail; - if (!c || !con.connected()) + if (!c || !con->connected()) return opStatusFail; if (!forceRead) { @@ -2499,11 +2588,11 @@ OpFailStatus MeosSQL::syncRead(bool forceRead, oClub *c) return opStatusOKSkipped; } try { - Query query = con.query(); + auto query = con->query(); query << "SELECT * FROM oClub WHERE Id=" << c->Id; - Result res = query.store(); + auto res = query.store(); - Row row; + RowWrapper row; if (!res.empty()) { row = res.at(0); if (!c->changed || isOld(row["Counter"], string(row["Modified"]), c)) { @@ -2528,7 +2617,7 @@ OpFailStatus MeosSQL::syncRead(bool forceRead, oClub *c) } return opStatusOK; } - catch (const mysqlpp::Exception& er) { + catch (const Exception& er) { alert(string(er.what()) + " [SYNCREAD oClub]"); return opStatusFail; } @@ -2542,10 +2631,10 @@ OpFailStatus MeosSQL::syncUpdate(oControl *c, bool forceWriteAll) { if (CmpDataBase.empty()) return opStatusFail; - if (!c || !con.connected()) + if (!c || !con->connected()) return opStatusFail; - mysqlpp::Query queryset = con.query(); + auto queryset = con->query(); queryset << " Name=" << quote << toString(c->Name) << ", " << " Numbers=" << quote << toString(c->codeNumbers()) << "," << " Status=" << c->Status @@ -2561,7 +2650,7 @@ OpFailStatus MeosSQL::syncRead(bool forceRead, oControl *c) if (CmpDataBase.empty()) return opStatusFail; - if (!c || !con.connected()) + if (!c || !con->connected()) return opStatusFail; if (!forceRead) { @@ -2573,11 +2662,11 @@ OpFailStatus MeosSQL::syncRead(bool forceRead, oControl *c) } try{ - Query query = con.query(); + auto query = con->query(); query << "SELECT * FROM oControl WHERE Id=" << c->Id << andWhereOld(c); - Result res = query.store(); + auto res = query.store(); - Row row; + RowWrapper row; if (!res.empty()){ row=res.at(0); @@ -2597,7 +2686,7 @@ OpFailStatus MeosSQL::syncRead(bool forceRead, oControl *c) return opStatusOK; } - catch (const mysqlpp::Exception& er){ + catch (const Exception& er){ alert(string(er.what())+" [SYNCREAD oControl]"); return opStatusFail; } @@ -2616,23 +2705,32 @@ OpFailStatus MeosSQL::syncUpdate(oCourse *c, bool forceWriteAll) if (isTMP) return opStatusFail; - if (!c || !con.connected()) + if (!c || !con->connected()) return opStatusFail; - mysqlpp::Query queryset = con.query(); + + OpFailStatus ret = OpFailStatus::opStatusOK; + // Check that controls are written + for (int i = 0; i < c->nControls; i++) { + if (c->Controls[i] && !c->Controls[i]->existInDB()) { + ret = min(ret, syncUpdate(c->Controls[i], forceWriteAll)); + } + } + + auto queryset = con->query(); queryset << " Name=" << quote << toString(c->Name) << ", " << " Length=" << unsigned(c->Length) << ", " << " Controls=" << quote << c->getControls() << ", " << " Legs=" << quote << c->getLegLengths() << c->getDI().generateSQLSet(true); - return syncUpdate(queryset, "oCourse", c); + return min(ret, syncUpdate(queryset, "oCourse", c)); } OpFailStatus MeosSQL::syncRead(bool forceRead, oCourse *c) { set controls; OpFailStatus res = syncReadCourse(forceRead, c, controls); - res = min( res, syncReadControls(c->oe, controls)); + res = min(res, syncReadControls(c->oe, controls)); return res; } @@ -2642,7 +2740,7 @@ OpFailStatus MeosSQL::syncReadCourse(bool forceRead, oCourse *c, set &readC if (CmpDataBase.empty()) return opStatusFail; - if (!c || !con.connected()) + if (!c || !con->connected()) return opStatusFail; bool isTMP = c->sqlUpdated == "TMP"; @@ -2659,11 +2757,11 @@ OpFailStatus MeosSQL::syncReadCourse(bool forceRead, oCourse *c, set &readC } try{ - Query query = con.query(); + auto query = con->query(); query << "SELECT * FROM oCourse WHERE Id=" << c->Id << andWhereOld(c); - Result res = query.store(); + ResultWrapper res = query.store(); - Row row; + RowWrapper row; if (!res.empty()) { row=res.at(0); @@ -2695,7 +2793,7 @@ OpFailStatus MeosSQL::syncReadCourse(bool forceRead, oCourse *c, set &readC return opStatusOK; } - catch (const mysqlpp::Exception& er){ + catch (const Exception& er){ alert(string(er.what())+" [SYNCREAD oCourse]"); return opStatusFail; } @@ -2712,11 +2810,11 @@ OpFailStatus MeosSQL::syncUpdate(oFreePunch *c, bool forceWriteAll) return opStatusFail; } - if (!c || !con.connected()) { + if (!c || !con->connected()) { errorMessage = "Not connected"; return opStatusFail; } - mysqlpp::Query queryset = con.query(); + auto queryset = con->query(); queryset << " CardNo=" << c->CardNo << ", " << " Type=" << c->Type << "," << " Time=" << c->Time; @@ -2731,7 +2829,7 @@ OpFailStatus MeosSQL::syncRead(bool forceRead, oFreePunch *c, bool rehash) if (CmpDataBase.empty()) return opStatusFail; - if (!c || !con.connected()) + if (!c || !con->connected()) return opStatusFail; if (!forceRead) { @@ -2743,11 +2841,11 @@ OpFailStatus MeosSQL::syncRead(bool forceRead, oFreePunch *c, bool rehash) } try{ - Query query = con.query(); + auto query = con->query(); query << "SELECT * FROM oPunch WHERE Id=" << c->Id << andWhereOld(c); - Result res = query.store(); + auto res = query.store(); - Row row; + RowWrapper row; if (!res.empty()) { row=res.at(0); OpFailStatus success = opStatusOK; @@ -2766,7 +2864,7 @@ OpFailStatus MeosSQL::syncRead(bool forceRead, oFreePunch *c, bool rehash) return opStatusOK; } - catch (const mysqlpp::Exception& er){ + catch (const Exception& er){ alert(string(er.what())+" [SYNCREAD oPunch]"); return opStatusFail; } @@ -2777,11 +2875,11 @@ OpFailStatus MeosSQL::updateTime(const char *oTable, oBase *ob) { errorMessage.clear(); - mysqlpp::Query query = con.query(); + auto query = con->query(); query << "SELECT Modified, Counter FROM " << oTable << " WHERE Id=" << ob->Id; - mysqlpp::Result res = query.store(); + auto res = query.store(); if (!res.empty()) { ob->sqlUpdated=res.at(0)["Modified"]; @@ -2800,15 +2898,15 @@ OpFailStatus MeosSQL::updateTime(const char *oTable, oBase *ob) static int nUpdate = 0; -mysqlpp::ResNSel MeosSQL::updateCounter(const char *oTable, int id, mysqlpp::Query *updateqry) { - Query query = con.query(); +ResNSel MeosSQL::updateCounter(const char *oTable, int id, QueryWrapper *updateqry) { + auto query = con->query(); try { query.exec(string("LOCK TABLES ") + oTable + string(" WRITE")); query << "SELECT MAX(Counter) FROM " << oTable; int counter; { - const mysqlpp::ColData c = query.store().at(0).at(0); + const auto c = query.store().at(0).at(0); bool null = c.is_null(); counter = null ? 1 : int(c) + 1; } @@ -2823,7 +2921,7 @@ mysqlpp::ResNSel MeosSQL::updateCounter(const char *oTable, int id, mysqlpp::Que query << " WHERE Id=" << id; - mysqlpp::ResNSel res = query.execute(); + ResNSel res = query.execute(); query.exec("UNLOCK TABLES"); @@ -2839,7 +2937,7 @@ mysqlpp::ResNSel MeosSQL::updateCounter(const char *oTable, int id, mysqlpp::Que } -OpFailStatus MeosSQL::syncUpdate(mysqlpp::Query &updateqry, +OpFailStatus MeosSQL::syncUpdate(QueryWrapper &updateqry, const char *oTable, oBase *ob) { nUpdate++; @@ -2855,20 +2953,22 @@ OpFailStatus MeosSQL::syncUpdate(mysqlpp::Query &updateqry, errorMessage.clear(); - if (!con.connected()) { + if (!con->connected()) { errorMessage = "Not connected"; return opStatusFail; } - mysqlpp::Query query = con.query(); + auto query = con->query(); try{ if (!ob->existInDB()) { + if (ob->isRemoved()) + return opStatusOK; bool setId = false; if (ob->Id > 0) { query << "SELECT Id FROM " << oTable << " WHERE Id=" << ob->Id; - Result res=query.store(); - if (res && res.num_rows()==0) + auto res=query.store(); + if (res.empty()) setId = true; else if (ob->isImplicitlyCreated()) { return opStatusWarning;//XXX Should we read this object? @@ -2888,7 +2988,7 @@ OpFailStatus MeosSQL::syncUpdate(mysqlpp::Query &updateqry, query << ", Modified='" << ob->getTimeStampN() << "'"; } - mysqlpp::ResNSel res=query.execute(); + ResNSel res=query.execute(); if (res) { if (ob->Id > 0 && ob->Id!=(int)res.insert_id) { ob->correctionNeeded = true; @@ -2909,22 +3009,24 @@ OpFailStatus MeosSQL::syncUpdate(mysqlpp::Query &updateqry, } else { - mysqlpp::ResNSel res = updateCounter(oTable, ob->Id, &updateqry); + ResNSel res = updateCounter(oTable, ob->Id, &updateqry); if (res){ if (res.rows==0){ query.reset(); query << "SELECT Id FROM " << oTable << " WHERE Id=" << ob->Id; - mysqlpp::Result store_res = query.store(); + auto store_res = query.store(); - if (store_res.num_rows()==0){ + if (store_res.num_rows()==0) { + if (ob->isRemoved()) + return opStatusOK; query.reset(); query << "INSERT INTO " << oTable << " SET " << updateqry.str() << ", Id=" << ob->Id; - res=query.execute(); - if (!res) { + ResNSel resx=query.execute(); + if (!resx) { errorMessage = "Unexpected error: insert failed"; return opStatusFail; } @@ -2937,7 +3039,7 @@ OpFailStatus MeosSQL::syncUpdate(mysqlpp::Query &updateqry, return updateTime(oTable, ob); } } - catch (const mysqlpp::Exception& er){ + catch (const Exception& er){ alert(string(er.what())+" [" + oTable + " \n\n(" + query.str() + ")]"); return opStatusFail; } @@ -2945,7 +3047,7 @@ OpFailStatus MeosSQL::syncUpdate(mysqlpp::Query &updateqry, return opStatusFail; } -bool MeosSQL::checkOldVersion(oEvent *oe, Row &row) { +bool MeosSQL::checkOldVersion(oEvent *oe, RowWrapper &row) { int dbv=int(row["BuildVersion"]); if ( dbvupdateChanged(); @@ -2958,20 +3060,20 @@ bool MeosSQL::checkOldVersion(oEvent *oe, Row &row) { OpFailStatus MeosSQL::SyncEvent(oEvent *oe) { errorMessage.clear(); OpFailStatus retValue = opStatusOK; - if (!con.connected()) + if (!con->connected()) return opStatusOK; bool oldVersion=false; try{ - Query query = con.query(); + auto query = con->query(); query << "SELECT * FROM oEvent"; query << " WHERE Counter>" << oe->counter; - Result res = query.store(); + auto res = query.store(); if (res && res.num_rows()>0) { - Row row=res.at(0); + auto row=res.at(0); string Modified=row["Modified"]; int counter = row["Counter"]; @@ -3014,7 +3116,7 @@ OpFailStatus MeosSQL::SyncEvent(oEvent *oe) { alert(ex.what()); } - mysqlpp::Query queryset = con.query(); + auto queryset = con->query(); queryset << " Name=" << quote << limitLength(oe->Name, 128) << ", " << " Annotation=" << quote << limitLength(oe->Annotation, 128) << ", " << " Date=" << quote << toString(oe->Date) << ", " @@ -3028,7 +3130,7 @@ OpFailStatus MeosSQL::SyncEvent(oEvent *oe) { syncUpdate(queryset, "oEvent", oe); // Update list database; - con.select_db("MeOSMain"); + con->select_db("MeOSMain"); queryset.reset(); queryset << "UPDATE oEvent SET Name=" << quote << limitLength(oe->Name, 128) << ", " << " Annotation=" << quote << limitLength(oe->Annotation, 128) << ", " @@ -3039,14 +3141,14 @@ OpFailStatus MeosSQL::SyncEvent(oEvent *oe) { queryset.execute(); //syncUpdate(queryset, "oEvent", oe, true); - con.select_db(CmpDataBase); + con->select_db(CmpDataBase); } } else if ( oe->isChanged() ){ string listEnc; encodeLists(oe, listEnc); - mysqlpp::Query queryset = con.query(); + auto queryset = con->query(); queryset << " Name=" << quote << limitLength(oe->Name, 128) << ", " << " Annotation=" << quote << limitLength(oe->Annotation, 128) << ", " << " Date=" << quote << toString(oe->Date) << "," @@ -3060,7 +3162,7 @@ OpFailStatus MeosSQL::SyncEvent(oEvent *oe) { syncUpdate(queryset, "oEvent", oe); // Update list database; - con.select_db("MeOSMain"); + con->select_db("MeOSMain"); queryset.reset(); queryset << "UPDATE oEvent SET Name=" << quote << limitLength(oe->Name, 128) << ", " << " Annotation=" << quote << limitLength(oe->Annotation, 128) << ", " @@ -3071,10 +3173,10 @@ OpFailStatus MeosSQL::SyncEvent(oEvent *oe) { queryset.execute(); //syncUpdate(queryset, "oEvent", oe, true); - con.select_db(CmpDataBase); + con->select_db(CmpDataBase); } } - catch (const mysqlpp::Exception& er){ + catch (const Exception& er){ setDefaultDB(); alert(string(er.what())+" [SYNCLIST oEvent]"); return opStatusFail; @@ -3099,23 +3201,20 @@ bool MeosSQL::syncListRunner(oEvent *oe) { errorMessage.clear(); - if (!con.connected()) + if (!con->connected()) return false; int maxCounterRunner = -1; try{ - Query query = con.query(); + auto query = con->query(); - /*query << "SELECT Id, Counter, Modified, Removed FROM oRunner"; - query << " WHERE Counter > " << oe->sqlCounterRunners; - query << " OR Modified > '" << oe->sqlUpdateRunners << "'";*/ - Result res = query.store(selectUpdated("oRunner", oe->sqlRunners)); + auto res = query.store(selectUpdated("oRunner", oe->sqlRunners)); if (res) { const auto nr = res.num_rows(); for (int i = 0; i < nr; i++) { OpFailStatus st = OpFailStatus::opUnreachable; - Row row=res.at(i); + auto row=res.at(i); int Id = row["Id"]; int counter = row["Counter"]; string modified = row["Modified"]; @@ -3134,7 +3233,6 @@ bool MeosSQL::syncListRunner(oEvent *oe) } r->changedObject(); - oe->sqlRunners.changed = true; } } else{ @@ -3157,7 +3255,7 @@ bool MeosSQL::syncListRunner(oEvent *oe) } } } - catch (const mysqlpp::Exception& er){ + catch (const Exception& er){ alert(string(er.what())+" [SYNCLIST oRunner]"); return false; } @@ -3171,19 +3269,19 @@ bool MeosSQL::syncListRunner(oEvent *oe) bool MeosSQL::syncListClass(oEvent *oe) { errorMessage.clear(); - if (!con.connected()) + if (!con->connected()) return false; int maxCounter = -1; try { - Query query = con.query(); - Result res = query.store(selectUpdated("oClass", oe->sqlClasses)); + auto query = con->query(); + auto res = query.store(selectUpdated("oClass", oe->sqlClasses)); if (res) { auto nr = res.num_rows(); for (int i = 0; i < nr; i++) { OpFailStatus st = OpFailStatus::opUnreachable; - Row row = res.at(i); + auto row = res.at(i); int counter = row["Counter"]; string modified = row["Modified"]; @@ -3219,7 +3317,7 @@ bool MeosSQL::syncListClass(oEvent *oe) { } } } - catch (const mysqlpp::Exception& er){ + catch (const Exception& er){ alert(string(er.what())+" [SYNCLIST oClass]"); return false; } @@ -3234,20 +3332,20 @@ bool MeosSQL::syncListClub(oEvent *oe) { errorMessage.clear(); - if (!con.connected()) + if (!con->connected()) return false; int maxCounter = -1; try { - Query query = con.query(); + auto query = con->query(); - Result res = query.store(selectUpdated("oClub", oe->sqlClubs)); + auto res = query.store(selectUpdated("oClub", oe->sqlClubs)); if (res) { const auto nr = res.num_rows(); for (int i = 0; i < nr; i++) { OpFailStatus st = OpFailStatus::opUnreachable; - Row row = res.at(i); + auto row = res.at(i); int counter = row["Counter"]; string modified = row["Modified"]; @@ -3280,7 +3378,7 @@ bool MeosSQL::syncListClub(oEvent *oe) } } } - catch (const mysqlpp::Exception& er) { + catch (const Exception& er) { alert(string(er.what()) + " [SYNCLIST oClub]"); return false; } @@ -3293,19 +3391,19 @@ bool MeosSQL::syncListClub(oEvent *oe) bool MeosSQL::syncListCourse(oEvent *oe) { errorMessage.clear(); - if (!con.connected()) + if (!con->connected()) return false; int maxCounter = -1; try { - Query query = con.query(); - Result res = query.store(selectUpdated("oCourse", oe->sqlCourses)); + auto query = con->query(); + auto res = query.store(selectUpdated("oCourse", oe->sqlCourses)); if (res) { set tmp; const auto nr = res.num_rows(); for (int i = 0; i < nr; i++) { OpFailStatus st = OpFailStatus::opUnreachable; - Row row = res.at(i); + auto row = res.at(i); int counter = row["Counter"]; string modified(row["Modified"]); @@ -3338,7 +3436,7 @@ bool MeosSQL::syncListCourse(oEvent *oe) { } } } - catch (const mysqlpp::Exception& er) { + catch (const Exception& er) { alert(string(er.what()) + " [SYNCLIST oCourse]"); return false; } @@ -3351,19 +3449,19 @@ bool MeosSQL::syncListCard(oEvent *oe) { errorMessage.clear(); - if (!con.connected()) + if (!con->connected()) return false; int maxCounter = -1; try { - Query query = con.query(); - Result res = query.store(selectUpdated("oCard", oe->sqlCards)); + auto query = con->query(); + auto res = query.store(selectUpdated("oCard", oe->sqlCards)); if (res) { const auto nr = res.num_rows(); for (int i = 0; i < nr; i++) { OpFailStatus st = OpFailStatus::opUnreachable; - Row row = res.at(i); + auto row = res.at(i); int counter = row["Counter"]; string modified(row["Modified"]); int Id = row["Id"]; @@ -3397,7 +3495,7 @@ bool MeosSQL::syncListCard(oEvent *oe) } } } - catch (const mysqlpp::Exception& er) { + catch (const Exception& er) { alert(string(er.what()) + " [SYNCLIST oCard]"); return false; } @@ -3410,19 +3508,19 @@ bool MeosSQL::syncListCard(oEvent *oe) bool MeosSQL::syncListControl(oEvent *oe) { errorMessage.clear(); - if (!con.connected()) + if (!con->connected()) return false; int maxCounter = -1; try { - Query query = con.query(); - Result res = query.store(selectUpdated("oControl", oe->sqlControls)); + auto query = con->query(); + auto res = query.store(selectUpdated("oControl", oe->sqlControls)); if (res) { const auto nr = res.num_rows(); for (int i = 0; i < nr; i++) { OpFailStatus st = OpFailStatus::opUnreachable; - Row row = res.at(i); + auto row = res.at(i); int counter = row["Counter"]; string modified(row["Modified"]); int Id = row["Id"]; @@ -3455,7 +3553,7 @@ bool MeosSQL::syncListControl(oEvent *oe) { } } } - catch (const mysqlpp::Exception& er) { + catch (const Exception& er) { alert(string(er.what()) + " [SYNCLIST oControl]"); return false; } @@ -3469,20 +3567,20 @@ bool MeosSQL::syncListPunch(oEvent *oe) { errorMessage.clear(); - if (!con.connected()) + if (!con->connected()) return false; int maxCounter = -1; try{ - Query query = con.query(); + auto query = con->query(); - Result res = query.store(selectUpdated("oPunch", oe->sqlPunches) + " ORDER BY Id"); + auto res = query.store(selectUpdated("oPunch", oe->sqlPunches) + " ORDER BY Id"); if (res) { auto nr = res.num_rows(); for(int i=0; iconnected()) return false; int maxCounterTeam = -1; try { - Query query = con.query(); - Result res = query.store(selectUpdated("oTeam", oe->sqlTeams)); + auto query = con->query(); + auto res = query.store(selectUpdated("oTeam", oe->sqlTeams)); if (res) { auto nr = res.num_rows(); for (int i = 0; i < nr; i++) { OpFailStatus st = OpFailStatus::opUnreachable; - Row row = res.at(i); + auto row = res.at(i); int counter = row["Counter"]; string modified(row["Modified"]); int Id = row["Id"]; @@ -3559,7 +3657,6 @@ bool MeosSQL::syncListTeam(oEvent *oe) { t->changedObject(); t->prepareRemove(); t->Removed = true; - oe->sqlTeams.changed = true; } } else { @@ -3586,7 +3683,7 @@ bool MeosSQL::syncListTeam(oEvent *oe) { } } } - catch (const mysqlpp::Exception& er){ + catch (const Exception& er){ alert(string(er.what())+" [SYNCLIST oTeam]"); return false; } @@ -3611,9 +3708,9 @@ bool MeosSQL::checkConnection(oEvent *oe) errorMessage.clear(); if (!oe) { - if (monitorId && con.connected()) { + if (monitorId && con->connected()) { try { - Query query = con.query(); + auto query = con->query(); query << "Update oMonitor SET Removed=1 WHERE Id = " << monitorId; query.execute(); } @@ -3627,25 +3724,25 @@ bool MeosSQL::checkConnection(oEvent *oe) oe->connectedClients.clear(); if (monitorId==0) { try { - Query query = con.query(); + auto query = con->query(); query << "INSERT INTO oMonitor SET Count=1, Client=" << quote << toString(oe->clientName); ResNSel res=query.execute(); if (res) monitorId=static_cast(res.insert_id); } - catch (const mysqlpp::Exception& er){ + catch (const Exception& er){ oe->connectedClients.push_back(L"Error: " + fromUTF(er.what())); return false; } } else { try { - Query query = con.query(); + auto query = con->query(); query << "Update oMonitor SET Count=Count+1, Client=" << quote << toString(oe->clientName) << " WHERE Id = " << monitorId; query.execute(); } - catch (const mysqlpp::Exception& er){ + catch (const Exception& er){ oe->connectedClients.push_back(L"Error: " + fromUTF(er.what())); return false; } @@ -3653,15 +3750,15 @@ bool MeosSQL::checkConnection(oEvent *oe) bool callback=false; try { - Query query = con.query(); + auto query = con->query(); query << "SELECT Id, Client FROM oMonitor WHERE Modified>TIMESTAMPADD(SECOND, -30, NOW())" " AND Removed=0 ORDER BY Client"; - Result res = query.store(); + auto res = query.store(); if (res) { for (int i=0; iconnectedClients.push_back(fromUTF(string(row["Client"]))); if (int(row["Id"])==monitorId) @@ -3669,7 +3766,7 @@ bool MeosSQL::checkConnection(oEvent *oe) } } } - catch (const mysqlpp::Exception& er){ + catch (const Exception& er){ oe->connectedClients.push_back(L"Error: " + fromUTF(er.what())); return false; } @@ -3684,10 +3781,10 @@ void MeosSQL::setDefaultDB() return; try { - if (!con.connected()) + if (!con->connected()) return; - con.select_db(CmpDataBase); + con->select_db(CmpDataBase); } catch(...) { } @@ -3707,27 +3804,27 @@ bool MeosSQL::dropDatabase(oEvent *oe) } try { - con.select_db("MeOSMain"); + con->select_db("MeOSMain"); } - catch (const mysqlpp::Exception& er) { + catch (const Exception& er) { alert(string(er.what()) + " MySQL Error. Select MeosMain"); setDefaultDB(); return 0; } try { - con.drop_db(CmpDataBase); + con->drop_db(CmpDataBase); } - catch (const mysqlpp::Exception& ) { + catch (const Exception& ) { //Don't care if we fail. } try { - Query query = con.query(); + auto query = con->query(); query << "DELETE FROM oEvent WHERE NameId=" << quote << CmpDataBase; query.execute(); } - catch (const mysqlpp::Exception& ) { + catch (const Exception& ) { //Don't care if we fail. } @@ -3736,9 +3833,9 @@ bool MeosSQL::dropDatabase(oEvent *oe) errorMessage.clear(); try { - con.close(); + con->close(); } - catch (const mysqlpp::Exception&) { + catch (const Exception&) { } return true; @@ -3828,11 +3925,11 @@ namespace { int MeosSQL::getModifiedMask(oEvent &oe) { try { - Query query = con.query(); + auto query = con->query(); int res = 0; - Result store_res = query.store("SELECT * FROM oCounter"); + auto store_res = query.store("SELECT * FROM oCounter"); if (store_res.num_rows()>0) { - Row r = store_res.at(0); + auto r = store_res.at(0); int ctrl = r["oControl"]; int crs = r["oCourse"]; int cls = r["oClass"]; @@ -3973,10 +4070,357 @@ void MeosSQL::updateCounters(OpFailStatus st, update.counter = max(counter, update.counter); update.updated = max(modified, update.updated); } - else if (st == opStatusOKSkipped) { + else /*if (st == opStatusOKSkipped)*/ { if (maxCounter < 0) maxCounter = counter; else maxCounter = min(counter, maxCounter); } } + +void MeosSQL::checkAgainstDB(const char *oTable, map &existing, vector> &idsToUpdate) { + idsToUpdate.clear(); + + auto query = con->query(); + query << "SELECT Id, Modified, Counter, Removed FROM " << oTable; + auto res = query.store(); + + if (res) { + for (int i = 0; i < res.num_rows(); i++) { + auto row = res.at(i); + int id = row["Id"]; + bool removed = row["Removed"]; + auto e = existing.find(id); + if (e == existing.end()) { + if (!removed) + idsToUpdate.emplace_back(id, nullptr); + } + else { + string modified = row["Modified"]; + int c = row["Counter"]; + if (modified != e->second->sqlUpdated || c != e->second->counter) + idsToUpdate.emplace_back(id, e->second); + + existing.erase(e); + } + } + + for (auto &e : existing) { + if (e.second->existInDB()) { + e.second->Removed = true; + pTeam t = dynamic_cast(e.second); + if (t) + t->prepareRemove(); + e.second->changedObject(); + e.second->oe->dataRevision++; + e.second->changed = false; + } + } + } +} + +template +bool MeosSQL::checkTableCheckSum(const char *oTable, const list &def, int p1, int p2, int p3) { + int csCounter1 = 0; + int csCounter2 = 0; + int csCounter3 = 0; + int csum = 0; + bool validT = false; + for (const T &ent : def) { + if (ent.isRemoved() || !ent.existInDB()) + continue; + int c = ent.counter; + int t = 0; + if (ent.sqlUpdated.length() > 8) { + int len = ent.sqlUpdated.length(); + if (ent.sqlUpdated[len - 3] == ':' && ent.sqlUpdated[len - 6] == ':') { + validT = true; + constexpr int zero = '0'; + int s = ent.sqlUpdated[len - 1] + 10 * ent.sqlUpdated[len - 2]; + int m = 60 * ent.sqlUpdated[len - 4] + 600 * ent.sqlUpdated[len - 5]; + t = s + m - (zero + 10 * zero + 60 * zero + 600 * zero); + } + } + csCounter1 += (ent.Id % p1) * (c % p2); + csCounter2 += ((ent.Id + 55) % p2) * ((c + 13) % p3); + csCounter3 += ((ent.Id + 11) % p3) * ((c + 17*t) % p1); + csum += c; + } + + auto query = con->query(); + query << "SELECT SUM((Id%" << p1 << ")*(Counter%" << p2 << ")), "; + query << "SUM(((Id+55)%" << p2 << ")*((Counter+13)%" << p3 << ")), "; + query << "SUM(((Id+11)%" << p3 << ")*((Counter+17*(second(Modified)+60*minute(Modified)))%" << p1 << ")) "; + query << "FROM " << oTable << " WHERE Removed<>1"; + auto res = query.store(); + + if (res) { + auto row = res.at(0); + int a = row[0]; + int b = row[1]; + int c = row[2]; + return csCounter1 == a && csCounter2 == b && (!validT || csCounter3 == c); + } + + return true; +} + +bool MeosSQL::checkConsistency(oEvent *oe, bool force) { + try { + bool doCheck = force; + + constexpr int numPrimes = 6; + static const int primes[numPrimes] = { 919, 1201, 1033, 907, 1049, 997 }; + static int checkCounter = 0; + int p1 = 0, p2 = 0, p3 = 0; + if (!doCheck) { + p1 = primes[checkCounter%numPrimes]; + p2 = primes[(checkCounter + 1) % numPrimes]; + p3 = primes[(checkCounter + 2) % numPrimes]; + checkCounter++; + } + + if (!doCheck) + doCheck = !checkTableCheckSum("oControl", oe->Controls, p1, p2, p3); + + if (!doCheck) + doCheck = !checkTableCheckSum("oCourse", oe->Courses, p1, p2, p3); + + if (!doCheck) + doCheck = !checkTableCheckSum("oClass", oe->Classes, p1, p2, p3); + + if (!doCheck) + doCheck = !checkTableCheckSum("oClub", oe->Clubs, p1, p2, p3); + + if (!doCheck) + doCheck = !checkTableCheckSum("oCard", oe->Cards, p1, p2, p3); + + if (!doCheck) + doCheck = !checkTableCheckSum("oRunner", oe->Runners, p1, p2, p3); + + if (!doCheck) + doCheck = !checkTableCheckSum("oTeam", oe->Teams, p1, p2, p3); + + if (!doCheck) + doCheck = !checkTableCheckSum("oPunch", oe->punches, p1, p2, p3); + + if (!doCheck) + return false; + + map bmap; + vector> needUpdate; + + auto setupMap = [&bmap](auto &list) { + bmap.clear(); + for (auto &it : list) { + if (!it.isRemoved()) { + bmap.emplace(it.Id, &it); + } + } + }; + + setupMap(oe->Controls); + checkAgainstDB("oControl", bmap, needUpdate); + for (auto id : needUpdate) { + if (!id.second) { + oControl or(oe, id.first); + or.setImplicitlyCreated(); + auto c = oe->addControl(or); + if (c != nullptr) + syncRead(true, c); + } + else { + id.second->counter = 0; + syncRead(true, (oControl *)id.second); + } + } + + setupMap(oe->Courses); + checkAgainstDB("oCourse", bmap, needUpdate); + for (auto id : needUpdate) { + if (!id.second) { + oCourse or(oe, id.first); + or.setImplicitlyCreated(); + auto c = oe->addCourse(or); + if (c != nullptr) + syncRead(true, c); + } + else { + id.second->counter = 0; + syncRead(true, (oCourse *)id.second); + } + } + + setupMap(oe->Classes); + checkAgainstDB("oClass", bmap, needUpdate); + for (auto id : needUpdate) { + if (!id.second) { + oClass or(oe, id.first); + or .setImplicitlyCreated(); + auto c = oe->addClass(or); + if (c != nullptr) + syncRead(true, c); + } + else { + id.second->counter = 0; + syncRead(true, (oClass *)id.second); + } + } + + setupMap(oe->Clubs); + checkAgainstDB("oClub", bmap, needUpdate); + for (auto id : needUpdate) { + if (!id.second) { + oClub or(oe, id.first); + or.setImplicitlyCreated(); + auto c = oe->addClub(or); + if (c != nullptr) + syncRead(true, c); + } + else { + id.second->counter = 0; + syncRead(true, (oClub *)id.second); + } + } + + setupMap(oe->Cards); + checkAgainstDB("oCard", bmap, needUpdate); + for (auto id : needUpdate) { + if (!id.second) { + oCard or (oe, id.first); + or .setImplicitlyCreated(); + auto c = oe->addCard(or ); + if (c != nullptr) + syncRead(true, c); + } + else { + id.second->counter = 0; + syncRead(true, (oCard *)id.second); + } + } + + setupMap(oe->Runners); + checkAgainstDB("oRunner", bmap, needUpdate); + for (auto id : needUpdate) { + if (!id.second) { + oRunner or (oe, id.first); + or .setImplicitlyCreated(); + syncRead(true, &or ); + oe->addRunner(or , false); + } + else { + id.second->counter = 0; + syncRead(true, (oRunner *)id.second); + } + } + + setupMap(oe->Teams); + checkAgainstDB("oTeam", bmap, needUpdate); + for (auto id : needUpdate) { + if (!id.second) { + oTeam ot(oe, id.first); + ot.setImplicitlyCreated(); + auto t = oe->addTeam(ot, false); + if (t) { + syncRead(true, t, false); + t->apply(oBase::ChangeType::Quiet, nullptr); + t->changed = false; + } + } + else { + id.second->counter = 0; + auto t = (oTeam *)id.second; + syncRead(true, t); + t->apply(oBase::ChangeType::Quiet, nullptr); + t->changed = false; + } + } + + setupMap(oe->punches); + checkAgainstDB("oPunch", bmap, needUpdate); + for (auto id : needUpdate) { + if (!id.second) { + oFreePunch p(oe, id.first); + p.setImplicitlyCreated(); + syncRead(true, &p, false); + oe->addFreePunch(p); + } + else { + id.second->counter = 0; + syncRead(true, (oFreePunch *)id.second); + } + } + + return true; + } + catch (const Exception &ex) { + throw meosException(ex.what()); + } +} + + +bool MeosSQL::synchronizeList(oEvent *oe, oListId lid) { + bool ret = false; + switch (lid) { + case oListId::oLRunnerId: + ret = syncListRunner(oe); + break; + case oListId::oLClassId: + ret = syncListClass(oe); + break; + case oListId::oLCourseId: + ret = syncListCourse(oe); + break; + case oListId::oLControlId: + ret = syncListControl(oe); + break; + case oListId::oLClubId: + ret = syncListClub(oe); + break; + case oListId::oLCardId: + ret = syncListCard(oe); + break; + case oListId::oLPunchId: + ret = syncListPunch(oe); + break; + case oListId::oLTeamId: + ret = syncListTeam(oe); + break; + } + + processMissingObjects(); + return ret; +} + +OpFailStatus MeosSQL::synchronizeUpdate(oBase *obj) { + if (typeid(*obj) == typeid(oRunner)) { + return syncUpdate((oRunner *)obj, false); + } + else if (typeid(*obj) == typeid(oClass)) { + return syncUpdate((oClass *)obj, false); + } + else if (typeid(*obj) == typeid(oCourse)) { + return syncUpdate((oCourse *)obj, false); + } + else if (typeid(*obj) == typeid(oControl)) { + return syncUpdate((oControl *)obj, false); + } + else if (typeid(*obj) == typeid(oClub)) { + return syncUpdate((oClub *)obj, false); + } + else if (typeid(*obj) == typeid(oCard)) { + return syncUpdate((oCard *)obj, false); + } + else if (typeid(*obj) == typeid(oFreePunch)) { + return syncUpdate((oFreePunch *)obj, false); + } + else if (typeid(*obj) == typeid(oEvent)) { + + return SyncUpdate((oEvent *)obj); + } + else if (typeid(*obj) == typeid(oTeam)) { + return syncUpdate((oTeam *)obj, false); + } + return OpFailStatus::opStatusFail; +} + diff --git a/code/meosdb/MeosSQL.h b/code/MeosSQL.h similarity index 73% rename from code/meosdb/MeosSQL.h rename to code/MeosSQL.h index 1e12dc2..9477d2f 100644 --- a/code/meosdb/MeosSQL.h +++ b/code/MeosSQL.h @@ -21,15 +21,17 @@ ************************************************************************/ -#pragma warning( disable : 4251) - -#include #include -#include "sqltypes.h" +#include +#include +#include + +using namespace std; + +#include "oEvent.h" class oRunner; -class oEvent; class oCard; class oClub; class oCourse; @@ -42,20 +44,29 @@ class oTeam; class oDataContainer; struct SqlUpdated; -namespace mysqlpp { - class Query; +namespace sqlwrapper { + class ResNSel; + class RowWrapper; + class QueryWrapper; + class ConnectionWrapper; } -using namespace std; +using namespace sqlwrapper; +enum OpFailStatus { + opStatusOKSkipped = 3, + opStatusOK = 2, + opStatusFail = 0, + opStatusWarning = 1, + opUnreachable = -1, +}; -class MeosSQL -{ +class MeosSQL { protected: bool warnedOldVersion; int monitorId; int buildVersion; - mysqlpp::Connection con; + shared_ptr con; string CmpDataBase; void alert(const string &s); bool writeTime = false; @@ -74,8 +85,8 @@ protected: OpFailStatus updateTime(const char *oTable, oBase *ob); // Update object in database with fixed query. If useId is false, Id is ignored (used - OpFailStatus syncUpdate(mysqlpp::Query &updateqry, const char *oTable, oBase *ob); - bool storeData(oDataInterface odi, const mysqlpp::Row &row, unsigned long &revision); + OpFailStatus syncUpdate(QueryWrapper &updateqry, const char *oTable, oBase *ob); + bool storeData(oDataInterface odi, const RowWrapper &row, unsigned long &revision); void importLists(oEvent *oe, const char *bf); void encodeLists(const oEvent *or, string &listEnc) const; @@ -84,7 +95,7 @@ protected: void setDefaultDB(); // Update the courses of a class. - OpFailStatus syncReadClassCourses(oClass *c,const set &courses, + OpFailStatus syncReadClassCourses(oClass *c, const set &courses, bool readRecursive); OpFailStatus syncRead(bool forceRead, oTeam *t, bool readRecursive); OpFailStatus syncRead(bool forceRead, oRunner *r, bool readClassClub, bool readCourseCard); @@ -92,23 +103,23 @@ protected: OpFailStatus syncRead(bool forceRead, oClass *c, bool readCourses); OpFailStatus syncReadControls(oEvent *oe, const set &controlIds); - void storeClub(const mysqlpp::Row &row, oClub &c); - void storeControl(const mysqlpp::Row &row, oControl &c); - void storeCard(const mysqlpp::Row &row, oCard &c); - void storePunch(const mysqlpp::Row &row, oFreePunch &p, bool rehash); + void storeClub(const RowWrapper &row, oClub &c); + void storeControl(const RowWrapper &row, oControl &c); + void storeCard(const RowWrapper &row, oCard &c); + void storePunch(const RowWrapper &row, oFreePunch &p, bool rehash); - OpFailStatus storeTeam(const mysqlpp::Row &row, oTeam &t, + OpFailStatus storeTeam(const RowWrapper &row, oTeam &t, bool readRecursive, bool allowSubRead); - OpFailStatus storeRunner(const mysqlpp::Row &row, oRunner &r, + OpFailStatus storeRunner(const RowWrapper &row, oRunner &r, bool readCourseCard, bool readClassClub, bool readRunners, bool allowSubRead); - OpFailStatus storeCourse(const mysqlpp::Row &row, oCourse &c, + OpFailStatus storeCourse(const RowWrapper &row, oCourse &c, set &readControls, bool allowSubRead); - OpFailStatus storeClass(const mysqlpp::Row &row, oClass &c, + OpFailStatus storeClass(const RowWrapper &row, oClass &c, bool readCourses, bool allowSubRead); @@ -117,13 +128,13 @@ protected: void upgradeDB(const string &db, oDataContainer const *odi); void warnOldDB(); - bool checkOldVersion(oEvent *oe, mysqlpp::Row &row); + bool checkOldVersion(oEvent *oe, RowWrapper &row); map, DWORD> readTimes; void synchronized(const oBase &entity); bool skipSynchronize(const oBase &entity) const; - mysqlpp::ResNSel updateCounter(const char *oTable, int id, mysqlpp::Query *updateqry); + ResNSel updateCounter(const char *oTable, int id, QueryWrapper *updateqry); string selectUpdated(const char *oTable, const SqlUpdated &updated); void addedFromDatabase(oBase *object); @@ -133,29 +144,10 @@ protected: const string &modified, SqlUpdated &update, int &maxCounter); -public: - void clearReadTimes(); + void checkAgainstDB(const char *oTable, map &existing, vector> &idsToUpdate); - bool dropDatabase(oEvent *oe); - bool checkConnection(oEvent *oe); - void processMissingObjects(); - - bool repairTables(const string &db, vector &output); - - bool getErrorMessage(char *bf); - bool reConnect(); - bool listCompetitions(oEvent *oe, bool keepConnection); - bool Remove(oBase *ob); - - // Create database of runners and clubs - bool createRunnerDB(oEvent *oe, mysqlpp::Query &query); - - // Upload runner database to server - OpFailStatus uploadRunnerDB(oEvent *oe); - - bool openDB(oEvent *oe); - - bool closeDB(); + template + bool checkTableCheckSum(const char *oTable, const list &def, int p1, int p2, int p3); bool syncListRunner(oEvent *oe); bool syncListClass(oEvent *oe); @@ -167,7 +159,6 @@ public: bool syncListTeam(oEvent *oe); OpFailStatus SyncEvent(oEvent *oe); - OpFailStatus SyncUpdate(oEvent *oe); OpFailStatus SyncRead(oEvent *oe); @@ -195,10 +186,39 @@ public: OpFailStatus syncUpdate(oTeam *t, bool forceWriteAll); OpFailStatus syncRead(bool forceRead, oTeam *t); + +public: + + bool synchronizeList(oEvent *oe, oListId lid); + OpFailStatus synchronizeUpdate(oBase *obj); + + bool checkConsistency(oEvent *oe, bool force); + void clearReadTimes(); + + bool dropDatabase(oEvent *oe); + bool checkConnection(oEvent *oe); + void processMissingObjects(); + + bool repairTables(const string &db, vector &output); + + bool getErrorMessage(string &err); + bool reConnect(); + bool listCompetitions(oEvent *oe, bool keepConnection); + bool remove(oBase *ob); + + // Create database of runners and clubs + bool createRunnerDB(oEvent *oe, QueryWrapper &query); + + // Upload runner database to server + OpFailStatus uploadRunnerDB(oEvent *oe); + + bool openDB(oEvent *oe); + bool closeDB(); + string serverVersion() const; + /** General interface. TypeId lookup */ OpFailStatus syncRead(bool forceRead, oBase *c); - int getModifiedMask(oEvent &oe); MeosSQL(void); diff --git a/code/RunnerDB.cpp b/code/RunnerDB.cpp index 8314d08..2189a11 100644 --- a/code/RunnerDB.cpp +++ b/code/RunnerDB.cpp @@ -1485,7 +1485,8 @@ pair oDBRunnerEntry::inputData(int id, const wstring &input, break; case TID_CLUB: - rd.clubNo = inputId; + if (inputId != -1) + rd.clubNo = inputId; output = input; break; } diff --git a/code/SportIdent.cpp b/code/SportIdent.cpp index 20d4d3c..353f84b 100644 --- a/code/SportIdent.cpp +++ b/code/SportIdent.cpp @@ -64,7 +64,7 @@ SI_StationInfo::SI_StationInfo() localZeroTime=0; } -SportIdent::SportIdent(HWND hWnd, DWORD Id) +SportIdent::SportIdent(HWND hWnd, DWORD Id, bool readVoltage) : readVoltage(readVoltage) { ClassId=Id; hWndNotify=hWnd; @@ -1301,6 +1301,7 @@ void SportIdent::getSI9DataExt(HANDLE hComm) BYTE b[128*5]; memset(b, 0, 128*5); BYTE c[16]; + int miliVolt = 0; // STX, 0xE1, 0x01, BN, CRC1, //CRC0, ETX debugLog(L"STARTREAD9 EXT-"); @@ -1309,7 +1310,7 @@ void SportIdent::getSI9DataExt(HANDLE hComm) int blocks_10_11_SIAC[5]={0,4,5,6,7}; int limit = 1; int *blocks = blocks_8_9_p_t; - + bool readBattery = false; DWORD written=0; for(int k=0; k < limit; k++){ @@ -1339,13 +1340,17 @@ void SportIdent::getSI9DataExt(HANDLE hComm) if (bf[0]==STX && bf[1]==0xEf) { if (checkCRC(bf+1, 200)) { memcpy(b+k*128, bf+6, 128); - if (k == 0) { int series = b[24] & 15; if (series == 15) { int nPunch = min(int(b[22]), 128); blocks = blocks_10_11_SIAC; limit = 1 + (nPunch+31) / 32; + + int cardNo = GetExtCardNumber(b); + if (cardNo > 8000000 && cardNo < 9000000) { + readBattery = readVoltage; + } } else { limit = 2; // Card 8, 9, p, t @@ -1365,14 +1370,95 @@ void SportIdent::getSI9DataExt(HANDLE hComm) } } + if (readBattery) { + c[0] = STX; + c[1] = 0xEA; + c[2] = 0x05; + c[3] = 0x7E; + c[4] = 0x05; + c[5] = 0x05; + c[6] = 0x05; + c[7] = 0x05; + c[10] = ETX; + setCRC(c + 1); + + written = 0; + WriteFile(hComm, c, 11, &written, NULL); // Measure batt voltage + + if (written == 11) { + BYTE bf[256]; + int read = readBytes(bf, 9, hComm); + if (read == 0) { + debugLog(L"TIMING"); + Sleep(300); + read = readBytes(bf, 9, hComm); + } + + if (read == 9) { + /*for (int i = 0; i < read; i++) { + char xx[20]; + sprintf_s(xx, "%02x ", bf[i]); + OutputDebugStringA(xx); + } + OutputDebugStringA("\n\n");*/ + + c[0] = STX; + c[1] = 0xEF; + c[2] = 0x01; + c[3] = 3; + setCRC(c + 1); + c[6] = ETX; + + written = 0; + WriteFile(hComm, c, 7, &written, NULL); + + memset(bf, 0, 256); + int read = readBytes(bf, 128 + 9, hComm); + if (read == 0) { + debugLog(L"TIMING"); + Sleep(300); + read = readBytes(bf, 128 + 9, hComm); + } + + if (bf[0] == STX && bf[1] == 0xEf) { + /* + for (int i = 0; i < read; i++) { + char xx[20]; + sprintf_s(xx, "%02x ", bf[i]); + OutputDebugStringA(xx); + if (i%20==19) + OutputDebugStringA("\n"); + } + OutputDebugStringA("\n\n"); + */ + if (checkCRC(bf + 1, 200)) { + BYTE battVoltageRow = bf[77]; + double voltage = 1.9 + (battVoltageRow * 0.09); + miliVolt = int(1000 * voltage); + + /*char xx[30]; + sprintf_s(xx, "V = %f\n\n", voltage); + OutputDebugStringA(xx);*/ + } + } + } + + } + //02 EA 05 7E 05 05 05 05 B2 31 03 + + } + + c[0]=ACK; WriteFile(hComm, c, 1, &written, NULL); debugLog(L"-ACK-"); SICard card(ConvertedTimeStatus::Hour24); - if (getCard9Data(b, card)) + if (getCard9Data(b, card)) { + card.miliVolt = miliVolt; addCard(card); + } } bool SportIdent::readSI6Block(HANDLE hComm, BYTE *data) @@ -1588,7 +1674,7 @@ bool SportIdent::getCard5Data(BYTE *data, SICard &card) return true; } -DWORD SportIdent::GetExtCardNumber(BYTE *data) const { +DWORD SportIdent::GetExtCardNumber(const BYTE *data) const { DWORD cnr = 0; BYTE *p = (BYTE *)&cnr; p[0] = data[27]; @@ -2073,7 +2159,7 @@ void checkport_si_thread(void *ptr) int *port=(int *)ptr; wchar_t bf[16]; swprintf_s(bf, 16, L"COM%d", *port); - SportIdent si(NULL, *port); + SportIdent si(NULL, *port, false); if (!si.openCom(bf)) *port=0; //No SI found here @@ -2360,7 +2446,7 @@ vector SICard::logHeader() return log; } -unsigned SICard::calculateHash() const { +unsigned int SICard::calculateHash() const { unsigned h = nPunch * 100000 + FinishPunch.Time; for (unsigned i = 0; i < nPunch; i++) { h = h * 31 + Punch[i].Code; diff --git a/code/SportIdent.h b/code/SportIdent.h index 2ec6571..713ba97 100644 --- a/code/SportIdent.h +++ b/code/SportIdent.h @@ -91,6 +91,7 @@ struct SICard wchar_t firstName[21]; wchar_t lastName[21]; wchar_t club[41]; + int miliVolt; // SIAC voltage char readOutTime[32]; bool punchOnly; ConvertedTimeStatus convertedTime; @@ -99,11 +100,10 @@ struct SICard int relativeFinishTime; bool statusOK; bool statusDNF; - vector codeLogData(gdioutput &converter, int row) const; static vector logHeader(); - unsigned calculateHash() const; + unsigned int calculateHash() const; bool isManualInput() const {return runnerId != 0;} string serializePunches() const; @@ -185,7 +185,7 @@ protected: bool getCard6Data(BYTE *data, SICard &card); bool getCard9Data(BYTE *data, SICard &card); - DWORD GetExtCardNumber(BYTE *data) const; + DWORD GetExtCardNumber(const BYTE *data) const; void getSI5Data(HANDLE hComm); void getSI5DataExt(HANDLE hComm); @@ -204,7 +204,7 @@ protected: DWORD ClassId; volatile int tcpPortOpen; - volatile unsigned int serverSocket; + volatile size_t serverSocket; bool MonitorTEST(SI_StationInfo &si); bool MonitorSI(SI_StationInfo &si); @@ -225,6 +225,8 @@ protected: set testCards; + bool readVoltage; + public: SI_StationInfo *findStation(const wstring &com); @@ -251,7 +253,7 @@ public: bool openComListen(const wchar_t *com, DWORD BaudRate); - SportIdent(HWND hWnd, DWORD Id); + SportIdent(HWND hWnd, DWORD Id, bool readVoltage); virtual ~SportIdent(); friend void start_si_thread(void *ptr); diff --git a/code/TabClass.cpp b/code/TabClass.cpp index cea9ec7..412b2f8 100644 --- a/code/TabClass.cpp +++ b/code/TabClass.cpp @@ -218,12 +218,19 @@ int TabClass::multiCB(gdioutput &gdi, int type, void *data) gdi.setInputStatus("CommonStartTime", gdi.isChecked(bi.id)); } else if (bi.id == "CoursePool") { + int nlegs = 1; + if (oe->getClass(ClassId)) + nlegs = max(1u, oe->getClass(ClassId)->getNumStages()); + string strId = "StageCourses_label"; gdi.setTextTranslate(strId, getCourseLabel(gdi.isChecked(bi.id)), true); - setLockForkingState(gdi, gdi.isChecked("CoursePool"), gdi.isChecked("LockForking")); + setLockForkingState(gdi, gdi.isChecked("CoursePool"), gdi.isChecked("LockForking"), nlegs); } else if (bi.id == "LockForking") { - setLockForkingState(gdi, gdi.isChecked("CoursePool"), gdi.isChecked(bi.id)); + int nlegs = 1; + if (oe->getClass(ClassId)) + nlegs = max(1u, oe->getClass(ClassId)->getNumStages()); + setLockForkingState(gdi, gdi.isChecked("CoursePool"), gdi.isChecked(bi.id), nlegs); } else if (bi.id == "DefineForking") { if (!checkClassSelected(gdi)) @@ -2714,7 +2721,7 @@ void TabClass::selectClass(gdioutput &gdi, int cid) if (gdi.hasWidget("LockForking")) { gdi.check("LockForking", pc->lockedForking()); - setLockForkingState(gdi, pc->hasCoursePool(), pc->lockedForking()); + setLockForkingState(gdi, *pc); } if (gdi.hasWidget("MCourses")) { @@ -4640,10 +4647,10 @@ void TabClass::writeDrawInfo(gdioutput &gdi, const DrawInfo &drawInfoIn) { } void TabClass::setLockForkingState(gdioutput &gdi, const oClass &c) { - setLockForkingState(gdi, c.hasCoursePool(), c.lockedForking()); + setLockForkingState(gdi, c.hasCoursePool(), c.lockedForking(), max(1u, c.getNumStages())); } -void TabClass::setLockForkingState(gdioutput &gdi, bool poolState, bool lockState) { +void TabClass::setLockForkingState(gdioutput &gdi, bool poolState, bool lockState, int nLegs) { if (gdi.hasWidget("DefineForking")) gdi.setInputStatus("DefineForking", !lockState && !poolState); @@ -4652,7 +4659,7 @@ void TabClass::setLockForkingState(gdioutput &gdi, bool poolState, bool lockStat int legno = 0; while (gdi.hasWidget("@Course" + itos(legno))) { - gdi.setInputStatus("@Course" + itos(legno++), !lockState || poolState); + gdi.setInputStatus("@Course" + itos(legno++), (!lockState || poolState) && legno < nLegs); } for (string s : {"MCourses", "StageCourses", "MAdd", "MRemove"}) { @@ -5045,14 +5052,15 @@ public: if (ii.id[0] == 'g') { int idNew = _wtoi(ii.text.c_str()); if (idNew != id) { - if (oe.getStartGroup(idNew).first == -1) { + if (oe.getStartGroup(idNew).firstStart == -1) { auto d = oe.getStartGroup(id); - oe.setStartGroup(idNew, d.first, d.second); - oe.setStartGroup(id, -1, -1); + oe.setStartGroup(idNew, d.firstStart, d.lastStart, d.name); + oe.setStartGroup(id, -1, -1, L""); string rowIx = ii.id.substr(5); gdi.getBaseInfo("group" + rowIx).setExtra(idNew); gdi.getBaseInfo("first" + rowIx).setExtra(idNew); gdi.getBaseInfo("last" + rowIx).setExtra(idNew); + gdi.getBaseInfo("gname" + rowIx).setExtra(idNew); gdi.getBaseInfo("D" + rowIx).setExtra(idNew); ii.setBgColor(colorDefault); } @@ -5063,13 +5071,18 @@ public: } else if (ii.id[0] == 'f') { auto d = oe.getStartGroup(id); - d.first = oe.getRelativeTime(ii.text); - oe.setStartGroup(id, d.first, d.second); + d.firstStart = oe.getRelativeTime(ii.text); + oe.setStartGroup(id, d.firstStart, d.lastStart, d.name); } else if (ii.id[0] == 'l') { auto d = oe.getStartGroup(id); - d.second = oe.getRelativeTime(ii.text); - oe.setStartGroup(id, d.first, d.second); + d.lastStart = oe.getRelativeTime(ii.text); + oe.setStartGroup(id, d.firstStart, d.lastStart, d.name); + } + else if (ii.id[0] == 'n') { + auto d = oe.getStartGroup(id); + d.name = ii.text; + oe.setStartGroup(id, d.firstStart, d.lastStart, d.name); } } else if (type == GuiEventType::GUI_BUTTON) { @@ -5079,16 +5092,16 @@ public: int length = 3600; for (auto &g : oe.getStartGroups(false)) { id = max(id, g.first+1); - firstStart = max(firstStart, g.second.second); - if (g.second.first < g.second.second) - length = min(length, g.second.second - g.second.first); + firstStart = max(firstStart, g.second.lastStart); + if (g.second.firstStart < g.second.lastStart) + length = min(length, g.second.lastStart - g.second.firstStart); } - oe.setStartGroup(id, firstStart, firstStart + length); + oe.setStartGroup(id, firstStart, firstStart + length, L""); tc->loadStartGroupSettings(gdi, false); } else if (info.id[0] == 'D') { int id = info.getExtraInt(); - oe.setStartGroup(id, -1, -1); + oe.setStartGroup(id, -1, -1, L""); tc->loadStartGroupSettings(gdi, false); } else if (info.id == "Save") { @@ -5121,7 +5134,8 @@ void TabClass::loadStartGroupSettings(gdioutput &gdi, bool reload) { int idPos = gdi.getCX(); int firstPos = idPos + gdi.scaleLength(120); int lastPos = firstPos + gdi.scaleLength(120); - int bPos = lastPos + gdi.scaleLength(120); + int namePos = lastPos + gdi.scaleLength(120); + int bPos = namePos + gdi.scaleLength(240); bool first = true; for (auto &g : sg) { @@ -5130,13 +5144,16 @@ void TabClass::loadStartGroupSettings(gdioutput &gdi, bool reload) { gdi.addString("", y, idPos, 0, "Id"); gdi.addString("", y, firstPos, 0, "Start"); gdi.addString("", y, lastPos, 0, "Slut"); + gdi.addString("", y, namePos, 0, "Namn"); first = false; } int cy = gdi.getCY(); string srow = itos(row++); gdi.addInput(idPos, cy, "group" + srow, itow(g.first), 8).setHandler(sgh).setExtra(g.first); - gdi.addInput(firstPos, cy, "first" + srow, oe->getAbsTime(g.second.first), 10).setHandler(sgh).setExtra(g.first); - gdi.addInput(lastPos, cy, "last" + srow, oe->getAbsTime(g.second.second), 8).setHandler(sgh).setExtra(g.first); + gdi.addInput(firstPos, cy, "first" + srow, oe->getAbsTime(g.second.firstStart), 10).setHandler(sgh).setExtra(g.first); + gdi.addInput(lastPos, cy, "last" + srow, oe->getAbsTime(g.second.lastStart), 8).setHandler(sgh).setExtra(g.first); + gdi.addInput(namePos, cy, "name" + srow, g.second.name, 20).setHandler(sgh).setExtra(g.first); + gdi.addButton(bPos, cy, "D" + srow, L"Ta bort").setHandler(sgh).setExtra(g.first); } diff --git a/code/TabClass.h b/code/TabClass.h index 48d79cb..80d57f3 100644 --- a/code/TabClass.h +++ b/code/TabClass.h @@ -150,7 +150,7 @@ class TabClass : static vector< pair > getPairOptions(); - void setLockForkingState(gdioutput &gdi, bool poolState, bool lockState); + void setLockForkingState(gdioutput &gdi, bool poolState, bool lockState, int nLegs); void setLockForkingState(gdioutput &gdi, const oClass &c); void loadBasicDrawSetup(gdioutput &gdi, int &bx, int &by, const wstring& firstStart, diff --git a/code/TabCompetition.cpp b/code/TabCompetition.cpp index 1d19bf7..ae74a60 100644 --- a/code/TabCompetition.cpp +++ b/code/TabCompetition.cpp @@ -44,7 +44,6 @@ #include "RunnerDB.h" #include "gdifonts.h" #include "meosException.h" -#include "meosdb/sqltypes.h" #include "socket.h" #include "iof30interface.h" #include "MeOSFeatures.h" @@ -54,6 +53,7 @@ #include "importformats.h" #include "HTMLWriter.h" #include "metalist.h" +#include "MeosSQL.h" #include #include @@ -255,7 +255,12 @@ void TabCompetition::loadConnectionPage(gdioutput &gdi) gdi.addString("", 1, "Ansluten till:"); gdi.addStringUT(1, oe->getServerName()).setColor(colorGreen); gdi.popX(); - gdi.dropLine(2); + gdi.dropLine(1.1); + string version = oe->sql().serverVersion(); + gdi.addString("", 0, "Server version: X#" + version); + gdi.dropLine(2.0); + gdi.popX(); + gdi.addInput("ClientName", oe->getClientName(), 16, 0, L"Klientnamn:"); gdi.dropLine(); gdi.addButton("SaveClient", "Ändra", CompetitionCB); @@ -291,6 +296,7 @@ void TabCompetition::loadConnectionPage(gdioutput &gdi) } gdi.dropLine(2); gdi.popX(); + if (oe->empty()) { wchar_t bf[260]; getUserFile(bf, L""); @@ -746,7 +752,7 @@ int TabCompetition::competitionCB(gdioutput &gdi, int type, void *data) wstring nameId = oe->getNameId(id); vector output; - repairTables(gdi.narrow(nameId), output); + oe->sql().repairTables(gdi.narrow(nameId), output); gdi.clearPage(true); gdi.addString("", boldLarge, "Reparerar tävlingsdatabasen"); gdi.dropLine(); @@ -895,7 +901,7 @@ int TabCompetition::competitionCB(gdioutput &gdi, int type, void *data) allTransfer.clear(); transferNoCompet = false; } - int id = (int)gdi.getData("PostEvent"); + int id = gdi.getDataInt("PostEvent"); oEvent::ChangedClassMethod method = oEvent::ChangedClassMethod(gdi.getSelectedItem("ChangeClassType").first); lastChangeClassType = method; @@ -1551,7 +1557,6 @@ int TabCompetition::competitionCB(gdioutput &gdi, int type, void *data) } } - bool drawn = false; if (createNew && startType>0) { gdi.scrollToBottom(); gdi.dropLine(); @@ -1561,7 +1566,6 @@ int TabCompetition::competitionCB(gdioutput &gdi, int type, void *data) oe->automaticDrawAll(gdi, formatTimeHMS(firstStart), L"0", L"0", oEvent::VacantPosition::Mixed, false, false, oEvent::DrawMethod::Random, 1); - drawn = true; break; case SMDrawn: @@ -1588,7 +1592,6 @@ int TabCompetition::competitionCB(gdioutput &gdi, int type, void *data) oe->automaticDrawAll(gdi, formatTimeHMS(firstStart), L"2:00", L"2", oEvent::VacantPosition::Mixed, true, false, oEvent::DrawMethod::MeOS, 1); - drawn = true; break; } } @@ -2147,7 +2150,7 @@ int TabCompetition::competitionCB(gdioutput &gdi, int type, void *data) oe->getRunnerDatabase().clearClubs(); oe->saveRunnerDatabase(L"database", true); if (oe->isClient()) { - msUploadRunnerDB(oe); + oe->sql().uploadRunnerDB(oe); } loadRunnerDB(gdi, 0, false); } diff --git a/code/TabCourse.cpp b/code/TabCourse.cpp index 3e751a3..c758f48 100644 --- a/code/TabCourse.cpp +++ b/code/TabCourse.cpp @@ -789,7 +789,7 @@ bool TabCourse::loadPage(gdioutput &gdi) { mlen = max(allCrs[k]->getControlsUI().length()/2+5, mlen); } - gdi.addInput("Controls", L"", max(48u, mlen), CourseCB, L"Kontroller:"); + gdi.addInput("Controls", L"", max(48, mlen), CourseCB, L"Kontroller:"); gdi.dropLine(0.3); gdi.addString("CourseExpanded", 0, "...").setColor(colorDarkGreen); gdi.dropLine(0.5); diff --git a/code/TabList.cpp b/code/TabList.cpp index 6a2f6b4..99e3adf 100644 --- a/code/TabList.cpp +++ b/code/TabList.cpp @@ -471,7 +471,7 @@ int TabList::listCB(gdioutput &gdi, int type, void *data) } } else if (bi.id == "DoRenameSaved") { - int ix = int(gdi.getData("ParamIx")); + int ix = gdi.getDataInt("ParamIx"); oListParam &par = oe->getListContainer().getParam(ix); wstring name = gdi.getText("Name"); par.setName(name); @@ -501,7 +501,7 @@ int TabList::listCB(gdioutput &gdi, int type, void *data) ListBoxInfo lbi; if (gdi.getSelectedItem("Merge", lbi)) { int mergeWidth = lbi.data; - int base = (int)gdi.getData("ParamIx"); + int base = gdi.getDataInt("ParamIx"); oe->synchronize(false); bool showTitle = gdi.isChecked("ShowTitle"); oe->getListContainer().mergeParam(mergeWidth, base, showTitle); diff --git a/code/TabRunner.cpp b/code/TabRunner.cpp index 91593b2..ac02777 100644 --- a/code/TabRunner.cpp +++ b/code/TabRunner.cpp @@ -256,8 +256,21 @@ void TabRunner::selectRunner(gdioutput &gdi, pRunner r) { } } oe->fillCourses(gdi, "RCourse", true); - wstring crsName = r->getCourse(false) ? r->getCourse(false)->getName() + L" " : L""; - gdi.addItem("RCourse", crsName + lang.tl("[Klassens bana]"), 0); + wstring crsName; + if (r->getCourse(false)) + crsName = r->getCourse(false)->getName(); + + wstring courseType = lang.tl("[Klassens bana]"); + pClass cClass = r->getClassRef(false); + if (cClass && (cClass->hasCoursePool() || r->getClassRef(true)->hasCoursePool())) { + if (!crsName.empty()) + courseType = L", ... "; + courseType += L"[" + lang.tl("Banpool") + L"]"; + } + else if (crsName.empty()) + crsName += L" "; + + gdi.addItem("RCourse", crsName + courseType, 0); gdi.selectItemByData("RCourse", r->getCourseId()); updateNumShort(gdi, r->getCourse(false), r); @@ -2136,7 +2149,7 @@ void TabRunner::listRunners(gdioutput &gdi, const vector &r, bool filte if (filterVacant && r[k]->isVacant()) continue; out.clear(); - sprintf_s(bf, "%d.", k+1); + sprintf_s(bf, "%d.", int(k+1)); gdi.addStringUT(yp, xp, 0, bf); gdi.addStringUT(yp, xp+gdi.scaleLength(40), 0, r[k]->getNameAndRace(true), gdi.scaleLength(190)); gdi.addStringUT(yp, xp+gdi.scaleLength(200), 0, r[k]->getClass(true), gdi.scaleLength(140)); diff --git a/code/TabSI.cpp b/code/TabSI.cpp index f66475d..cb58626 100644 --- a/code/TabSI.cpp +++ b/code/TabSI.cpp @@ -191,7 +191,7 @@ int TabSI::siCB(gdioutput &gdi, int type, void *data) ListBoxInfo lbi; if (gdi.getSelectedItem("ComPort", lbi)) { - swprintf_s(bf, 64, L"COM%d", lbi.data); + swprintf_s(bf, 64, L"COM%d", lbi.getDataInt()); wstring port = bf; if (lbi.text.substr(0, 3) == L"TCP") @@ -306,7 +306,7 @@ int TabSI::siCB(gdioutput &gdi, int type, void *data) if (lbi.text.substr(0, 3) == L"TCP") swprintf_s(bf, 64, L"TCP"); else - swprintf_s(bf, 64, L"COM%d", lbi.data); + swprintf_s(bf, 64, L"COM%d", lbi.getDataInt()); gdi.fillDown(); gdi.addStringUT(0, lang.tl(L"Hämtar information om ") + wstring(bf) + L"."); printSIInfo(gdi, bf); @@ -1214,7 +1214,7 @@ int TabSI::siCB(gdioutput &gdi, int type, void *data) wchar_t bf[64]; if (bi.text.substr(0,3)!=L"TCP") - swprintf_s(bf, 64, L"COM%d", bi.data); + swprintf_s(bf, 64, L"COM%d", bi.getDataInt()); else wcscpy_s(bf, L"TCP"); @@ -1631,7 +1631,7 @@ void TabSI::showReadPunches(gdioutput &gdi, vector &punches, setgetRunnerByCardNo(punches[k].card, punches[k].time, oEvent::CardLookupProperty::Any); @@ -1660,7 +1660,7 @@ void TabSI::showReadCards(gdioutput &gdi, vector &cards) int yp = gdi.getCY(); int xp = gdi.getCX(); for (size_t k=0;kgetRunnerByCardNo(cards[k].CardNumber, 0, oEvent::CardLookupProperty::Any); @@ -1678,7 +1678,7 @@ void TabSI::showReadCards(gdioutput &gdi, vector &cards) SportIdent &TabSI::getSI(const gdioutput &gdi) { if (!gSI) { HWND hWnd=gdi.getHWNDMain(); - gSI = new SportIdent(hWnd, 0); + gSI = new SportIdent(hWnd, 0, gEvent->getPropertyInt("ReadVoltageExp", 0) != 0); } return *gSI; } @@ -2343,6 +2343,7 @@ void TabSI::processInsertCard(const SICard &sic) pCard card = oe->allocateCard(runner); card->setReadId(sic); card->setCardNo(sic.CardNumber); + card->setMeasuredVoltage(sic.miliVolt); if (sic.CheckPunch.Code!=-1) card->addPunch(oPunch::PunchCheck, sic.CheckPunch.Time, 0); @@ -2372,7 +2373,7 @@ bool TabSI::processUnmatched(gdioutput &gdi, const SICard &csic, bool silent) card->setReadId(csic); card->setCardNo(csic.CardNumber); - + card->setMeasuredVoltage(csic.miliVolt); wstring info=lang.tl(L"Okänd bricka ") + itow(sic.CardNumber) + L"."; wstring warnings; @@ -2456,6 +2457,7 @@ bool TabSI::processCard(gdioutput &gdi, pRunner runner, const SICard &csic, bool // Choose course from pool pClass cls = runner->getClassRef(false); + pClass pclass = runner->getClassRef(true); if (cls && cls->hasCoursePool()) { unsigned leg=runner->legToRun(); @@ -2465,6 +2467,11 @@ bool TabSI::processCard(gdioutput &gdi, pRunner runner, const SICard &csic, bool runner->setCourseId(c->getId()); } } + else if (pclass && pclass != cls && pclass->hasCoursePool()) { + pCourse c = pclass->selectCourseFromPool(0, csic); + if (c) + runner->setCourseId(c->getId()); + } if (cls && cls->hasUnorderedLegs()) { pCourse crs = cls->selectParallelCourse(*runner, csic); @@ -2474,7 +2481,6 @@ bool TabSI::processCard(gdioutput &gdi, pRunner runner, const SICard &csic, bool } } - pClass pclass = runner->getClassRef(true); if (!runner->getCourse(false) && !csic.isManualInput() && !oe->getMeOSFeatures().hasFeature(MeOSFeatures::NoCourses)) { if (pclass && !pclass->hasMultiCourse() && !pclass->hasDirectResult()) { @@ -2522,6 +2528,7 @@ bool TabSI::processCard(gdioutput &gdi, pRunner runner, const SICard &csic, bool card->setReadId(csic); card->setCardNo(sic.CardNumber); + card->setMeasuredVoltage(sic.miliVolt); cardno = itow(sic.CardNumber); @@ -3738,7 +3745,7 @@ wstring TabSI::getCardInfo(bool param, vector &count) const { void TabSI::showRegisterHiredCards(gdioutput &gdi) { gdi.disableInput("Interactive"); - gdi.disableInput("Database"); + gdi.disableInput("Database", true); gdi.disableInput("PrintSplits"); gdi.disableInput("UseManualInput"); diff --git a/code/TabTeam.cpp b/code/TabTeam.cpp index 1499c74..88be705 100644 --- a/code/TabTeam.cpp +++ b/code/TabTeam.cpp @@ -891,7 +891,7 @@ int TabTeam::teamCB(gdioutput &gdi, int type, void *data) if (r == 0) { throw meosException("Ingen deltagare vald."); } - int leg = (int)gdi.getData("Leg"); + int leg = gdi.getDataInt("Leg"); pTeam t = oe->getTeam(teamId); processChangeRunner(gdi, t, leg, r); @@ -987,7 +987,7 @@ int TabTeam::teamCB(gdioutput &gdi, int type, void *data) else if (type == GUI_LINK) { TextInfo ti = dynamic_cast(*(BaseInfo *)data); if (ti.id == "SelectR") { - int leg = (int)gdi.getData("Leg"); + int leg = gdi.getDataInt("Leg"); pTeam t = oe->getTeam(teamId); int rid = ti.getExtraInt(); pRunner r = oe->getRunner(rid, 0); diff --git a/code/Table.cpp b/code/Table.cpp index aaed750..7f4ed5f 100644 --- a/code/Table.cpp +++ b/code/Table.cpp @@ -2118,13 +2118,14 @@ void Table::importClipboard(gdioutput &gdi) index = out[i].second; } } + try { if (index != -1) { if (cell.hasOwner()) cell.getOwner()->inputData(cell.id, table[k][j], index, output, false); cell.contents = output; } - else if (cell.type == cellCombo) { + else /*if (cell.type == cellCombo)*/ { if (cell.hasOwner()) cell.getOwner()->inputData(cell.id, table[k][j], index, output, false); cell.contents = output; diff --git a/code/Table.h b/code/Table.h index 34e9868..122f914 100644 --- a/code/Table.h +++ b/code/Table.h @@ -387,4 +387,4 @@ TID_RUNNER, TID_CLUB, TID_START, TID_TIME, TID_FINISH, TID_STATUS, TID_RUNNINGTIME, TID_PLACE, TID_POINTS, TID_CARD, TID_TEAM, TID_LEG, TID_CONTROL, TID_CODES, TID_FEE, TID_PAID, TID_INPUTTIME, TID_INPUTSTATUS, TID_INPUTPOINTS, TID_INPUTPLACE, -TID_NAME, TID_NATIONAL, TID_SEX, TID_YEAR, TID_INDEX, TID_ENTER, TID_STARTNO}; +TID_NAME, TID_NATIONAL, TID_SEX, TID_YEAR, TID_INDEX, TID_ENTER, TID_STARTNO, TID_VOLTAGE}; diff --git a/code/TimeStamp.cpp b/code/TimeStamp.cpp index b63b9f7..e834508 100644 --- a/code/TimeStamp.cpp +++ b/code/TimeStamp.cpp @@ -130,6 +130,15 @@ string TimeStamp::getStampStringN() const SYSTEMTIME st; FileTimeToSystemTime(&ft, &st); + if (st.wYear > 2021 || st.wYear < 2009) { + st.wYear = 2021; + st.wDay = 1; + st.wMonth = 1; + st.wHour = 2; + st.wMinute = 0; + st.wSecond = 0; + } + char bf[32]; sprintf_s(bf, "%d-%02d-%02d %02d:%02d:%02d", st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond); diff --git a/code/dll/libmySQL.dll b/code/dll/libmySQL.dll index 165a786..d78216c 100644 Binary files a/code/dll/libmySQL.dll and b/code/dll/libmySQL.dll differ diff --git a/code/dll/mysqlpp.dll b/code/dll/mysqlpp.dll deleted file mode 100644 index 1ba9365..0000000 Binary files a/code/dll/mysqlpp.dll and /dev/null differ diff --git a/code/dll64/libharu.dll b/code/dll64/libharu.dll new file mode 100644 index 0000000..3b5e194 Binary files /dev/null and b/code/dll64/libharu.dll differ diff --git a/code/dll64/libmysql.dll b/code/dll64/libmysql.dll new file mode 100644 index 0000000..dcc3fb0 Binary files /dev/null and b/code/dll64/libmysql.dll differ diff --git a/code/dll_debug/libmySQL.dll b/code/dll_debug/libmySQL.dll deleted file mode 100644 index 165a786..0000000 Binary files a/code/dll_debug/libmySQL.dll and /dev/null differ diff --git a/code/dll_debug/mysqlpp.dll b/code/dll_debug/mysqlpp.dll deleted file mode 100644 index 4159ed7..0000000 Binary files a/code/dll_debug/mysqlpp.dll and /dev/null differ diff --git a/code/english.lng b/code/english.lng index 7da2793..1cd63e3 100644 --- a/code/english.lng +++ b/code/english.lng @@ -2524,3 +2524,26 @@ Startgrupp med id X tilldelad Y finns inte = Starting group with ID X defined fo Använd om möjligt samma dator som användes vid senaste importen = If possible, use the same computer that was used to import the last time Tillåt borttagning av löpare (med mera) som raderats i den importerade tävlingen = Allow removal of competitors (etc) that has was deleted in the imported version. Varning: Kunde inte hitta föregående version av tävlingen (X) = Warning: Could not find the previous version of the competition (X) +ClassDefaultResult = Class, Default result +RunnerCoursePlace = Competitor's place on course +RunnerStagePlace = Competitor's place (on stage) +RunnerStagePoints = Competitor's points (on stage) +RunnerStageTime = Competitor's time (on stage) +RunnerStageStatus = Competitor's status (on stage) +RunnerStageTimeStatus = Competitor's time or status (on stage) +EFilterIncludeNotParticipating = Include not participating +RunnerStageNumber = Stage number earlier stage +Begränsa bredd (klipp text) = Limit width (crop text) +Håll ihop med = Keep together +Justering i sidled = Line adjustment +Minsta blockbredd = Least width +Relation till föregående = Relation to previous +Bantilldelning hänvisar till en löpare (X) som saknas i laget (Y) = Course assignment specifies a competitor (X) that is missing in the team (Y) +warn:mysqlbinlog = Performance warning: Could not disable binary logging. Uploading can be slow.\n\nX +Server version: X = Server version: X +prefsDatabaseEngine = Typ av databastabell för nya tävlingar (MySQL) +Startgrupperna X och Y överlappar = Start groups X and Y are overlapping +Batteristatus = Battery status +Low = Low +prefsReadVoltageExp = Read SIAC battery voltage +Spänning = Voltage diff --git a/code/gdioutput.cpp b/code/gdioutput.cpp index c3a8124..22af2b9 100644 --- a/code/gdioutput.cpp +++ b/code/gdioutput.cpp @@ -1167,12 +1167,12 @@ ButtonInfo &gdioutput::addButton(int x, int y, int w, const string &id, } bi.hWnd=CreateWindow(L"BUTTON", ttext.c_str(), WS_TABSTOP|WS_VISIBLE|WS_CHILD | WS_CLIPSIBLINGS |style|BS_NOTIFY, x-OffsetX, y, w, height, hWndTarget, NULL, - (HINSTANCE)GetWindowLong(hWndTarget, GWL_HINSTANCE), NULL); + (HINSTANCE)GetWindowLongPtr(hWndTarget, GWLP_HINSTANCE), NULL); } else { bi.hWnd=CreateWindow(L"BUTTON", ttext.c_str(), WS_TABSTOP|WS_VISIBLE|WS_CHILD | WS_CLIPSIBLINGS |style|BS_NOTIFY, x-OffsetX, y-OffsetY-1, w, height, hWndTarget, NULL, - (HINSTANCE)GetWindowLong(hWndTarget, GWL_HINSTANCE), NULL); + (HINSTANCE)GetWindowLongPtr(hWndTarget, GWLP_HINSTANCE), NULL); } SendMessage(bi.hWnd, WM_SETFONT, (WPARAM) getGUIFont(), 0); @@ -1265,12 +1265,6 @@ ButtonInfo &gdioutput::addCheckbox(int x, int y, const string &id, const wstring oy=0; } - /* - bi.hWnd=CreateWindowEx(0,"BUTTON", ttext.c_str(), WS_TABSTOP|WS_VISIBLE| - WS_CHILD|BS_AUTOCHECKBOX|BS_NOTIFY, - x-ox, y-oy, size.cx+30, size.cy+5, hWndTarget, NULL, - (HINSTANCE)GetWindowLong(hWndTarget, GWL_HINSTANCE), NULL); - */ int h = size.cy; SelectObject(hDC, getGUIFont()); GetTextExtentPoint32(hDC, ttext.c_str(), ttext.length(), &size); @@ -1279,7 +1273,7 @@ ButtonInfo &gdioutput::addCheckbox(int x, int y, const string &id, const wstring bi.hWnd=CreateWindowEx(0,L"BUTTON", L"", WS_TABSTOP|WS_VISIBLE| WS_CHILD | WS_CLIPSIBLINGS |BS_AUTOCHECKBOX|BS_NOTIFY, x-ox, y-oy + (size.cy-h)/2, h, h, hWndTarget, NULL, - (HINSTANCE)GetWindowLong(hWndTarget, GWL_HINSTANCE), NULL); + (HINSTANCE)GetWindowLongPtr(hWndTarget, GWLP_HINSTANCE), NULL); TextInfo &desc = addStringUT(y , x + (3*h)/2, 0, ttext, 0, checkBoxCallback); desc.id = "T" + id; @@ -1384,7 +1378,7 @@ InputInfo &gdioutput::addInput(int x, int y, const string &id, const wstring &te ii.hWnd=CreateWindowEx(WS_EX_CLIENTEDGE, L"EDIT", text.c_str(), WS_TABSTOP|WS_VISIBLE | WS_CHILD | WS_CLIPSIBLINGS | ES_AUTOHSCROLL | WS_BORDER, x-ox, y-oy, dim.first, dim.second, - hWndTarget, NULL, (HINSTANCE)GetWindowLong(hWndTarget, GWL_HINSTANCE), NULL); + hWndTarget, NULL, (HINSTANCE)GetWindowLongPtr(hWndTarget, GWLP_HINSTANCE), NULL); int mrg = scaleLength(4); updatePos(x, y, dim.first+mrg, dim.second+mrg); @@ -1438,7 +1432,7 @@ InputInfo &gdioutput::addInputBox(const string &id, int x, int y, int width, int ii.hWnd=CreateWindowEx(WS_EX_CLIENTEDGE, L"EDIT", text.c_str(), WS_HSCROLL|WS_VSCROLL| WS_TABSTOP|WS_VISIBLE|WS_CHILD | WS_CLIPSIBLINGS |ES_AUTOHSCROLL|ES_MULTILINE|ES_AUTOVSCROLL|WS_BORDER, x-ox, y-oy, width, height, hWndTarget, NULL, - (HINSTANCE)GetWindowLong(hWndTarget, GWL_HINSTANCE), NULL); + (HINSTANCE)GetWindowLongPtr(hWndTarget, GWLP_HINSTANCE), NULL); updatePos(x, y, width, height); @@ -1470,7 +1464,7 @@ ListBoxInfo &gdioutput::addListBox(const string &id, int width, int height, GUIC } LRESULT CALLBACK GetMsgProc(HWND hWnd, UINT iMsg, WPARAM wParam, LPARAM lParam) { - ListBoxInfo *lbi = (ListBoxInfo *)(GetWindowLongPtr(hWnd, GWL_USERDATA)); + ListBoxInfo *lbi = (ListBoxInfo *)(GetWindowLongPtr(hWnd, GWLP_USERDATA)); if (!lbi) { throw std::exception("Internal GDI error"); } @@ -1501,14 +1495,14 @@ void gdioutput::synchronizeListScroll(const string &id1, const string &id2) a->lbiSync = b; b->lbiSync = a; - SetWindowLongPtr(a->hWnd, GWL_USERDATA, LONG_PTR(a)); - SetWindowLongPtr(b->hWnd, GWL_USERDATA, LONG_PTR(b)); + SetWindowLongPtr(a->hWnd, GWLP_USERDATA, LONG_PTR(a)); + SetWindowLongPtr(b->hWnd, GWLP_USERDATA, LONG_PTR(b)); - a->originalProc = WNDPROC(GetWindowLongPtr(a->hWnd, GWL_WNDPROC)); - b->originalProc = WNDPROC(GetWindowLongPtr(b->hWnd, GWL_WNDPROC)); + a->originalProc = WNDPROC(GetWindowLongPtr(a->hWnd, GWLP_WNDPROC)); + b->originalProc = WNDPROC(GetWindowLongPtr(b->hWnd, GWLP_WNDPROC)); - SetWindowLongPtr(a->hWnd, GWL_WNDPROC, LONG_PTR(GetMsgProc)); - SetWindowLongPtr(b->hWnd, GWL_WNDPROC, LONG_PTR(GetMsgProc)); + SetWindowLongPtr(a->hWnd, GWLP_WNDPROC, LONG_PTR(GetMsgProc)); + SetWindowLongPtr(b->hWnd, GWLP_WNDPROC, LONG_PTR(GetMsgProc)); } ListBoxInfo &gdioutput::addListBox(int x, int y, const string &id, int width, int height, GUICALLBACK cb, @@ -1528,7 +1522,7 @@ ListBoxInfo &gdioutput::addListBox(int x, int y, const string &id, int width, in lbi.hWnd=CreateWindowEx(WS_EX_CLIENTEDGE, L"LISTBOX", L"", style, x-ox, y-oy, int(width*scale), int(height*scale), hWndTarget, NULL, - (HINSTANCE)GetWindowLong(hWndTarget, GWL_HINSTANCE), NULL); + (HINSTANCE)GetWindowLongPtr(hWndTarget, GWLP_HINSTANCE), NULL); updatePos(x, y, int(scale*(width+5)), int(scale * (height+2))); SendMessage(lbi.hWnd, WM_SETFONT, (WPARAM) getGUIFont(), 0); @@ -1617,7 +1611,7 @@ ListBoxInfo &gdioutput::addSelection(int x, int y, const string &id, int width, lbi.hWnd=CreateWindowEx(WS_EX_CLIENTEDGE, L"COMBOBOX", L"", WS_TABSTOP|WS_VISIBLE | WS_CHILD | WS_CLIPSIBLINGS |WS_BORDER|CBS_DROPDOWNLIST|WS_VSCROLL , x-ox, y-oy, int(scale*width), int(scale*height), hWndTarget, NULL, - (HINSTANCE)GetWindowLong(hWndTarget, GWL_HINSTANCE), NULL); + (HINSTANCE)GetWindowLongPtr(hWndTarget, GWLP_HINSTANCE), NULL); updatePos(x, y, int(scale*(width+5)), int(scale*30)); @@ -1659,7 +1653,7 @@ ListBoxInfo &gdioutput::addCombo(int x, int y, const string &id, int width, int lbi.hWnd=CreateWindowEx(WS_EX_CLIENTEDGE, L"COMBOBOX", L"", WS_TABSTOP|WS_VISIBLE | WS_CHILD | WS_CLIPSIBLINGS |WS_BORDER|CBS_DROPDOWN |CBS_AUTOHSCROLL, x-ox, y-oy, int(scale*width), int(scale*height), hWndTarget, NULL, - (HINSTANCE)GetWindowLong(hWndTarget, GWL_HINSTANCE), NULL); + (HINSTANCE)GetWindowLongPtr(hWndTarget, GWLP_HINSTANCE), NULL); updatePos(x, y, int(scale * (width+5)), getButtonHeight()+scaleLength(5)); @@ -1791,7 +1785,7 @@ bool gdioutput::getSelectedItem(const string &id, ListBoxInfo &lbi) { pair gdioutput::getSelectedItem(const string &id) { ListBoxInfo lbi; bool ret = getSelectedItem(id, lbi); - return make_pair(lbi.data, ret); + return make_pair(lbi.getDataInt(), ret); } pair gdioutput::getSelectedItem(const char *id) { @@ -2116,7 +2110,7 @@ LRESULT gdioutput::ProcessMsg(UINT iMessage, LPARAM lParam, WPARAM wParam) return 0; } -void gdioutput::processButtonMessage(ButtonInfo &bi, DWORD wParam) +void gdioutput::processButtonMessage(ButtonInfo &bi, WPARAM wParam) { WORD hwParam = HIWORD(wParam); @@ -2164,7 +2158,7 @@ void gdioutput::processButtonMessage(ButtonInfo &bi, DWORD wParam) } } -void gdioutput::processEditMessage(InputInfo &bi, DWORD wParam) +void gdioutput::processEditMessage(InputInfo &bi, WPARAM wParam) { WORD hwParam = HIWORD(wParam); @@ -2208,7 +2202,7 @@ void gdioutput::processEditMessage(InputInfo &bi, DWORD wParam) } } -void gdioutput::processComboMessage(ListBoxInfo &bi, DWORD wParam) +void gdioutput::processComboMessage(ListBoxInfo &bi, WPARAM wParam) { WORD hwParam = HIWORD(wParam); int index; @@ -2325,7 +2319,7 @@ void gdioutput::keyCommand(KeyCommandCode code) { #endif -void gdioutput::processListMessage(ListBoxInfo &bi, DWORD wParam) +void gdioutput::processListMessage(ListBoxInfo &bi, WPARAM wParam) { WORD hwParam = HIWORD(wParam); int index; @@ -5415,7 +5409,7 @@ wstring gdioutput::browseForSave(const vector< pair > &filter, of.lStructSize = sizeof(of); of.hwndOwner = hWndTarget; - of.hInstance = (HINSTANCE)GetWindowLong(hWndTarget, GWL_HINSTANCE); + of.hInstance = (HINSTANCE)GetWindowLongPtr(hWndTarget, GWLP_HINSTANCE); of.lpstrFilter = sFilter.c_str(); of.lpstrCustomFilter = NULL; of.nMaxCustFilter = 0; @@ -5477,7 +5471,7 @@ wstring gdioutput::browseForOpen(const vector< pair > &filter, of.lStructSize = sizeof(of); of.hwndOwner = hWndTarget; - of.hInstance = (HINSTANCE)GetWindowLong(hWndTarget, GWL_HINSTANCE); + of.hInstance = (HINSTANCE)GetWindowLongPtr(hWndTarget, GWLP_HINSTANCE); of.lpstrFilter = sFilter.c_str(); of.lpstrCustomFilter = NULL; of.nMaxCustFilter = 0; @@ -5587,7 +5581,7 @@ void gdioutput::init(HWND hWnd, HWND hMain, HWND hTab) hWndToolTip = CreateWindow(TOOLTIPS_CLASS, (LPWSTR) NULL, TTS_ALWAYSTIP, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, - NULL, (HMENU) NULL, (HINSTANCE)GetWindowLong(hWndTarget, GWL_HINSTANCE), NULL); + NULL, (HMENU) NULL, (HINSTANCE)GetWindowLongPtr(hWndTarget, GWLP_HINSTANCE), NULL); } ToolInfo &gdioutput::addToolTip(const string &tipId, const wstring &tip, HWND hWnd, RECT *rc) { @@ -5615,7 +5609,7 @@ ToolInfo &gdioutput::addToolTip(const string &tipId, const wstring &tip, HWND hW } ti.hwnd = hWndTarget; - ti.hinst = (HINSTANCE)GetWindowLong(hWndTarget, GWL_HINSTANCE); + ti.hinst = (HINSTANCE)GetWindowLongPtr(hWndTarget, GWLP_HINSTANCE); info.name = tipId; ti.lpszText = (LPWSTR)toolTips.back().tip.c_str(); @@ -7094,7 +7088,7 @@ AutoCompleteInfo &gdioutput::addAutoComplete(const string &key) { HWND hWnd = CreateWindowEx(WS_EX_CLIENTEDGE, L"AUTOCOMPLETE", L"", WS_VISIBLE | WS_CHILD | WS_CLIPSIBLINGS| WS_BORDER , pt.x, pt.y, scaleLength(350), height, hWndTarget, NULL, - (HINSTANCE)GetWindowLong(hWndTarget, GWL_HINSTANCE), NULL); + (HINSTANCE)GetWindowLongPtr(hWndTarget, GWLP_HINSTANCE), NULL); autoCompleteInfo.reset(new AutoCompleteInfo(hWnd, key, *this)); diff --git a/code/gdioutput.h b/code/gdioutput.h index 7c7cedc..e7f646e 100644 --- a/code/gdioutput.h +++ b/code/gdioutput.h @@ -225,10 +225,10 @@ protected: void initCommon(double scale, const wstring &font); - void processButtonMessage(ButtonInfo &bi, DWORD wParam); - void processEditMessage(InputInfo &bi, DWORD wParam); - void processComboMessage(ListBoxInfo &bi, DWORD wParam); - void processListMessage(ListBoxInfo &bi, DWORD wParam); + void processButtonMessage(ButtonInfo &bi, WPARAM wParam); + void processEditMessage(InputInfo &bi, WPARAM wParam); + void processComboMessage(ListBoxInfo &bi, WPARAM wParam); + void processListMessage(ListBoxInfo &bi, WPARAM wParam); void doEnter(); void doEscape(); @@ -543,6 +543,8 @@ public: void setData(const string &id, const string &data); void *getData(const string &id) const; + int getDataInt(const string &id) const { return int(size_t(getData(id))); } + bool getData(const string &id, string &out) const; diff --git a/code/gdistructures.h b/code/gdistructures.h index b3307e9..71307d1 100644 --- a/code/gdistructures.h +++ b/code/gdistructures.h @@ -59,12 +59,15 @@ public: BaseInfo &setExtra(const wchar_t *e) {extra=(void *)e; dataString = true; return *this;} - BaseInfo &setExtra(int e) {extra = (void *)(e); return *this;} + BaseInfo &setExtra(int e) {extra = (void *)size_t(e); return *this;} BaseInfo &setExtra(size_t e) {extra = (void *)(e); return *this;} +#ifdef _M_X64 + BaseInfo &setExtra(unsigned int e) { extra = (void *)size_t(e); return *this; } +#endif bool isExtraString() const {return dataString;} wchar_t *getExtra() const {assert(extra == 0 || dataString); return (wchar_t *)extra;} - int getExtraInt() const {return int(extra);} + int getExtraInt() const {return (int)size_t(extra);} size_t getExtraSize() const {return size_t(extra);} GuiHandler &getHandler() const; @@ -293,6 +296,8 @@ public: updateLastData(0) {} wstring text; size_t data; + int getDataInt() const { return (int)data; } + int index; bool changed() const {return text!=original;} void ignore(bool ig) {ignoreCheck=ig;} diff --git a/code/iof30interface.cpp b/code/iof30interface.cpp index 84855d1..768634c 100644 --- a/code/iof30interface.cpp +++ b/code/iof30interface.cpp @@ -38,6 +38,22 @@ wstring &getFirst(wstring &inout, int maxNames); wstring getMeosCompectVersion(); +vector parseSGTimes(const oEvent &oe, const wstring &name) { + vector parts; + vector times; + split(name, L" -‒–—‐", parts); + for (auto &p : parts) { + for (auto &c : p) { + if (c == '.') + c = ':'; + } + int t = oe.getRelativeTime(p); + if (t > 0) + times.push_back(t); + } + return times; +} + IOF30Interface::IOF30Interface(oEvent *oe, bool forceSplitFee) : oe(*oe), useGMT(false), teamsAsIndividual(false), entrySourceId(1), unrollLoops(true), includeStageRaceInfo(true) { @@ -136,6 +152,116 @@ void IOF30Interface::readCourseData(gdioutput &gdi, const xmlobject &xo, bool up classAssignmentObsolete(gdi, xAssignment, courses, coursesFamilies); } + auto matchCoursePattern = [](const vector &p1, const vector &p2) { + for (int j = 0; j < p1.size(); j++) { + if (p1[j] != p2[j] && p1[j] != -1 && p2[j] != -1) + return false; + } + return true; + }; + + // Try to reconstruct + for (auto &bibLegCourse : classToBibLegCourse) { + pClass pc = oe.getClass(bibLegCourse.first); + if (!pc || bibLegCourse.second.empty()) + continue; + + // Get collection of courses + set classCourses; + for (auto &blc : bibLegCourse.second) + classCourses.insert(get(blc)->getId()); + + vector presentCrs; + pc->getCourses(-1, presentCrs); + + // Check if we have the same set of courses + bool sameSet = presentCrs.size() == classCourses.size(); + for (pCourse crs : presentCrs) { + if (!classCourses.count(crs->getId())) { + sameSet = false; + break; + } + } + + if (sameSet) + continue; // Do not touch forking if same set + + int fallBackCrs = *classCourses.begin(); + map>> bibToLegCourseId; + for (auto &blc : bibLegCourse.second) { + int bib = get<0>(blc); + int leg = get<1>(blc); + int crsId = get<2>(blc)->getId(); + bibToLegCourseId[bib].emplace_back(leg, crsId); + } + + int width = 0; + for (auto &blcid : bibToLegCourseId) { + sort(blcid.second.begin(), blcid.second.end()); + width = max(width, blcid.second.back().first); + } + + vector> coursePattern; + int offset = bibToLegCourseId.begin()->first; + for (auto &blcid : bibToLegCourseId) { + int bib = blcid.first; + while (coursePattern.size() <= bib - offset) + coursePattern.emplace_back(width + 1, -1); + for (auto &legCrsId : blcid.second) { + coursePattern.back()[legCrsId.first] = legCrsId.second; + } + } + + int period = 1; + while (period < coursePattern.size()) { + if (matchCoursePattern(coursePattern[0], coursePattern[period])) { + // Check if pattern is OK + bool ok = true; + for (int off = 0; off < period; off++) { + for (int c = off + period; c < coursePattern.size(); c++) { + if (!matchCoursePattern(coursePattern[off], coursePattern[c])) { + ok = false; + break; + } + } + if (!ok) + break; + } + + if (ok) // Found OK pattern + break; + } + period++; + } + + // Add any missing courses for incomplete patterns. Need not result in a fair forking + for (int leg = 0; leg < coursePattern[0].size(); leg++) { + vector crsLeg; + for (int i = 0; i < period; i++) { + int crs = coursePattern[i][leg]; + if (crs != -1) + crsLeg.push_back(crs); + } + if (crsLeg.empty()) + crsLeg.push_back(fallBackCrs); + int rot = 0; + for (int i = 0; i < period; i++) { + if (coursePattern[i][leg] == -1) + coursePattern[i][leg] = crsLeg[(rot++) % crsLeg.size()]; // Take courses from this leg + } + } + + int patternStart = (offset - 1) % period; + + if (pc->getNumStages() == 0) { + pc->setNumStages(coursePattern[0].size()); + } + for (int leg = 0; leg < pc->getNumStages() && leg < coursePattern[0].size(); leg++) { + pc->clearStageCourses(leg); + for (int m = 0; m < period; m++) + pc->addStageCourse(leg, coursePattern[(patternStart + m)%period][leg], -1); + } + } } void IOF30Interface::classCourseAssignment(gdioutput &gdi, xmlList &xAssignment, @@ -386,6 +512,8 @@ void IOF30Interface::teamCourseAssignment(gdioutput &gdi, xmlList &xAssignment, vector allT; oe.getTeams(0, allT, false); + map firstBib2Class; + map bib2Team; map, pTeam> nameClass2Team; for (size_t k = 0; k < allT.size(); k++) { @@ -401,18 +529,22 @@ void IOF30Interface::teamCourseAssignment(gdioutput &gdi, xmlList &xAssignment, pTeam t = 0; wstring teamText; wstring bib; + int iBib = -1; + int iClass = -1; xTAssignment.getObjectString("BibNumber", bib); if (!bib.empty()) { teamText = bib; + iBib = _wtoi(bib.c_str()); t = bib2Team[bib]; if (t == nullptr) { - int ibib = _wtoi(bib.c_str()); - if (ibib > 0) { - wstring bib2 = itow(ibib); + if (iBib > 0) { + wstring bib2 = itow(iBib); t = bib2Team[bib2]; } } + if (t != nullptr) + iClass = t->getClassId(false); } if (t == 0) { @@ -421,27 +553,74 @@ void IOF30Interface::teamCourseAssignment(gdioutput &gdi, xmlList &xAssignment, if (!team.empty()) { wstring cls; xTAssignment.getObjectString("ClassName", cls); + auto pcls = oe.getClass(cls); + if (pcls) + iClass = pcls->getId(); + t = nameClass2Team[make_pair(team, cls)]; teamText = team + L" / " + cls; } } - if (t == 0) { + if (iBib > 0 && iClass <= 0) { + if (firstBib2Class.empty()) { + map classId2FirstBib; + + auto insertClsBib = [&](int cls, int b) { + auto res = classId2FirstBib.find(cls); + if (res == classId2FirstBib.end()) + classId2FirstBib.emplace(cls, b); + else + res->second = min(res->second, b); + }; + + for (pTeam t : allT) { + int b = _wtoi(t->getBib().c_str()); + if (b <= 0) + continue; + int cls = t->getClassId(false); + if (cls > 0) + insertClsBib(cls, b); + } + vector allC; + oe.getClasses(allC, false); + for (pClass c : allC) { + int b = _wtoi(c->getDCI().getString("Bib").c_str()); + if (b > 0) + insertClsBib(c->getId(), b); + } + + // No check for overlapping classes + for (auto cfb : classId2FirstBib) { + firstBib2Class[cfb.second] = cfb.first; + } + } + + auto res = firstBib2Class.upper_bound(iBib); + if (res != firstBib2Class.begin()) { + --res; + iClass = res->second; + } + } + + if (t == 0 && (iBib<=0 || iClass<=0)) { gdi.addString("", 0, L"Varning: Laget 'X' finns inte.#" + teamText).setColor(colorRed); continue; } xmlList teamMemberAssignment; xTAssignment.getObjects("TeamMemberCourseAssignment", teamMemberAssignment); - assignTeamCourse(gdi, *t, teamMemberAssignment, courses); + assignTeamCourse(gdi, t, iClass, iBib, teamMemberAssignment, courses); } } -void IOF30Interface::assignTeamCourse(gdioutput &gdi, oTeam &team, xmlList &xAssignment, +void IOF30Interface::assignTeamCourse(gdioutput &gdi, oTeam *team, int iClass, int iBib, xmlList &xAssignment, const map &courses) { - if (!team.getClassRef(false)) + pClass cls = oe.getClass(iClass); + if (!cls) return; + for (size_t k = 0; k getLegNumberLinear(leg, legorder); + int legId = cls->getLegNumberLinear(leg, legorder); if (legId>=0) { - pRunner r = team.getRunner(legId); - if (r == 0) { - r = oe.addRunner(lang.tl(L"N.N."), team.getClubId(), team.getClassId(false), 0, 0, false); - if (r) { - r->setEntrySource(entrySourceId); - r->flagEntryTouched(true); + + classToBibLegCourse[iClass].emplace_back(iBib, legId, c); + + if (team) { + pRunner r = team->getRunner(legId); + if (r == 0) { + r = oe.addRunner(lang.tl(L"N.N."), team->getClubId(), team->getClassId(false), 0, 0, false); + if (r) { + r->setEntrySource(entrySourceId); + r->flagEntryTouched(true); + } + team->setRunner(legId, r, false); + r = team->getRunner(legId); + } + if (r) { + r->setCourseId(c->getId()); } - team.setRunner(legId, r, false); - r = team.getRunner(legId); - } - if (r) { - r->setCourseId(c->getId()); } } else - gdi.addString("", 0, L"Bantilldelning för 'X' hänvisar till en sträcka som inte finns#" + team.getClass(false)).setColor(colorRed); + gdi.addString("", 0, L"Bantilldelning för 'X' hänvisar till en sträcka som inte finns#" + cls->getName()).setColor(colorRed); } else { wstring name; xAssignment[k].getObjectString("TeamMemberName", name); - if (!name.empty()) { - for (int j = 0; j < team.getNumRunners(); j++) { - pRunner r = team.getRunner(j); - if (r && r->getName() == name) { - r->setCourseId(c->getId()); - break; + bool done = false; + if (team) { + if (!name.empty()) { + for (int j = 0; j < team->getNumRunners(); j++) { + pRunner r = team->getRunner(j); + if (r && r->getName() == name) { + r->setCourseId(c->getId()); + done = true; + break; + } } } } + if (!done) { + gdi.addString("", 0, L"Bantilldelning hänvisar till en löpare (X) som saknas i laget (Y)#" + + name + L"#" + team->getName()).setColor(colorRed); + } } } } @@ -787,6 +979,8 @@ void IOF30Interface::readEntryList(gdioutput &gdi, xmlobject &xo, bool removeNon vector allR; vector allT; oe.getRunners(0, 0, allR, false); + oe.getStartGroups(true); // Setup transient data for start groups + for (size_t k = 0; k < allR.size(); k++) { if (allR[k]->getEntrySource() == entrySourceId) allR[k]->flagEntryTouched(false); @@ -807,7 +1001,7 @@ void IOF30Interface::readEntryList(gdioutput &gdi, xmlobject &xo, bool removeNon else entFail++; } - + xo.getObjects("TeamEntry", pEntries); for (size_t k = 0; k < pEntries.size(); k++) { xmlList races; @@ -849,6 +1043,8 @@ void IOF30Interface::readEntryList(gdioutput &gdi, xmlobject &xo, bool removeNon entFail++; } + oe.updateStartGroups(); // Store any updated start groups + bool hasMulti = false; for (map > >::iterator it = personId2TeamLeg.begin(); it != personId2TeamLeg.end(); ++it) { @@ -1416,21 +1612,10 @@ void IOF30Interface::readEvent(gdioutput &gdi, const xmlobject &xo, bool anySG = false; // This is a "hack" to interpret services of the from "XXXX 14:00 - 15:00 XXXX" as a start group. for (auto &srv : services) { - vector parts; - split(srv.name, L" -‒–—‐", parts); - vector times; - for (auto &p : parts) { - for (auto &c : p) { - if (c == '.') - c = ':'; - } - int t = oe.getRelativeTime(p); - if (t > 0) - times.push_back(t); - } + vector times = parseSGTimes(oe, srv.name); int ts = times.size(); if (ts >= 2 && times[ts - 2] < times[ts - 1]) { - oe.setStartGroup(srv.id, times[ts - 2], times[ts - 1]); + oe.setStartGroup(srv.id, times[ts - 2], times[ts - 1], L""); anySG = true; } } @@ -1844,6 +2029,22 @@ pRunner IOF30Interface::readPersonEntry(gdioutput &gdi, xmlobject &xo, pTeam tea if (xx.is("TimePresentation")) { hasTime = xx.getObjectBool(nullptr); } + else if (xx.is("StartGroup")) { + int groupId = xx.getObjectInt("Id"); + if (groupId > 0) { + wstring groupName; + xx.getObjectString("Name", groupName); + if (oe.getStartGroup(groupId).firstStart == -1) { + vector times = parseSGTimes(oe, groupName); + int ts = times.size(); + if (ts >= 2 && times[ts - 2] < times[ts - 1]) + oe.setStartGroup(groupId, times[ts - 2], times[ts - 1], groupName); + else + oe.setStartGroup(groupId, 3600, 3600 * 2, groupName); + } + r->setStartGroup(groupId); + } + } } } if (!hasTime) @@ -3970,7 +4171,7 @@ void IOF30Interface::bindClassCourse(oClass &pc, const vector< vector > pc.setCourse(crs[0][0]); else { unsigned ns = pc.getNumStages(); - ns = max(ns, crs.size()); + ns = max(ns, crs.size()); pc.setNumStages(ns); for (size_t k = 0; k < crs.size(); k++) { pc.clearStageCourses(k); diff --git a/code/iof30interface.h b/code/iof30interface.h index 7b8f5ad..dd41852 100644 --- a/code/iof30interface.h +++ b/code/iof30interface.h @@ -24,6 +24,7 @@ #include #include #include +#include class oEvent; class xmlobject; @@ -141,6 +142,8 @@ class IOF30Interface { vector feeStatistics; + map>> classToBibLegCourse; + static void getAgeLevels(const vector &fees, const vector &ix, int &normalIx, int &redIx, wstring &youthLimit, wstring &seniorLimit); @@ -266,7 +269,7 @@ class IOF30Interface { void teamCourseAssignment(gdioutput &gdi, xmlList &xAssignment, const map &courses); - void assignTeamCourse(gdioutput &gdi, oTeam &t, xmlList &xAssignment, + void assignTeamCourse(gdioutput &gdi, oTeam *t, int iClass, int iBib, xmlList &xAssignment, const map &courses); pCourse findCourse(gdioutput &gdi, const map &courses, diff --git a/code/lib/libmysql.lib b/code/lib/libmysql.lib new file mode 100644 index 0000000..62a71e3 Binary files /dev/null and b/code/lib/libmysql.lib differ diff --git a/code/lib64/RestBed.lib b/code/lib64/RestBed.lib new file mode 100644 index 0000000..2fd30cd Binary files /dev/null and b/code/lib64/RestBed.lib differ diff --git a/code/lib64/libharu.lib b/code/lib64/libharu.lib new file mode 100644 index 0000000..3323cf6 Binary files /dev/null and b/code/lib64/libharu.lib differ diff --git a/code/lib64/libmysql.lib b/code/lib64/libmysql.lib new file mode 100644 index 0000000..e325a34 Binary files /dev/null and b/code/lib64/libmysql.lib differ diff --git a/code/lib64/libpng.lib b/code/lib64/libpng.lib new file mode 100644 index 0000000..c720d21 Binary files /dev/null and b/code/lib64/libpng.lib differ diff --git a/code/lib64/zlibstat.lib b/code/lib64/zlibstat.lib new file mode 100644 index 0000000..3edc5f4 Binary files /dev/null and b/code/lib64/zlibstat.lib differ diff --git a/code/lib_db/libmysql.lib b/code/lib_db/libmysql.lib new file mode 100644 index 0000000..62a71e3 Binary files /dev/null and b/code/lib_db/libmysql.lib differ diff --git a/code/listeditor.cpp b/code/listeditor.cpp index 6773c10..450bb95 100644 --- a/code/listeditor.cpp +++ b/code/listeditor.cpp @@ -35,6 +35,8 @@ #include "tabbase.h" #include "CommDlg.h" #include "generalresult.h" +#include "gdiconstants.h" +#include "autocomplete.h" ListEditor::ListEditor(oEvent *oe_) { oe = oe_; @@ -46,6 +48,12 @@ ListEditor::ListEditor(oEvent *oe_) { oe->loadGeneralResults(false, true); } +namespace { + const wstring &getSearchString() { + return lang.tl(L"Sök (X)#Ctrl+F"); + } +} + ListEditor::~ListEditor() { setCurrentList(0); } @@ -301,7 +309,42 @@ static void getPosFromId(int id, int &groupIx, int &lineIx, int &ix) { int ListEditor::editList(gdioutput &gdi, int type, BaseInfo &data) { int lineIx, groupIx, ix; - if (type == GUI_BUTTON) { + + if (type == GUI_EVENT) { + EventInfo &ev = *(EventInfo *)(&data); + if (ev.getKeyCommand() == KC_FIND) { + gdi.setInputFocus("SearchText", true); + } + else if (ev.getKeyCommand() == KC_FINDBACK) { + gdi.setInputFocus("SearchText", false); + } + } + else if (type == GUI_FOCUS) { + InputInfo &ii = *(InputInfo *)(&data); + + if (ii.text == getSearchString()) { + ((InputInfo *)gdi.setText("SearchText", L""))->setFgColor(colorDefault); + } + } + else if (type == GUI_INPUTCHANGE) { + InputInfo &ii = *(InputInfo *)(&data); + bool show = false; + if (ii.text.length() > 1) { + vector rec; + MetaList::getAutoComplete(ii.text, rec); + if (!rec.empty()) { + auto &ac = gdi.addAutoComplete(ii.id); + ac.setAutoCompleteHandler(this); + ac.setData(rec); + ac.show(); + show = true; + } + } + if (!show) { + gdi.clearAutoComplete(ii.id); + } + } + else if (type == GUI_BUTTON) { ButtonInfo bi = dynamic_cast(data); ButtonInfo &biSrc = dynamic_cast(data); @@ -406,7 +449,7 @@ int ListEditor::editList(gdioutput &gdi, int type, BaseInfo &data) { gdi.getData("CurrentId", id); getPosFromId(id, groupIx, lineIx, ix); - if (bi.id == "MoveLeft") + if (bi.id == "MoveLeft") currentList->moveOnRow(groupIx, lineIx, ix, -1); else if (bi.id == "MoveRight") currentList->moveOnRow(groupIx, lineIx, ix, 1); @@ -434,10 +477,15 @@ int ListEditor::editList(gdioutput &gdi, int type, BaseInfo &data) { mlp.setText(str); gdi.getSelectedItem("AlignType", lbi); - mlp.align(EPostType(lbi.data), gdi.isChecked("BlockAlign")); + mlp.align(EPostType(lbi.data)); + + mlp.limitBlockWidth(gdi.isChecked("LimitBlockWidth")); mlp.alignText(gdi.getText("AlignText")); - mlp.mergePrevious(gdi.isChecked("MergeText")); + auto relPrev = gdi.getSelectedItem("RelPrevious"); + mlp.packWithPrevious(relPrev.first == 2); + mlp.mergePrevious(relPrev.first == 1); + gdi.getSelectedItem("TextAdjust", lbi); mlp.setTextAdjust(lbi.data); @@ -466,15 +514,19 @@ int ListEditor::editList(gdioutput &gdi, int type, BaseInfo &data) { mlp.setResultModule(""); mlp.setBlock(gdi.getTextNo("BlockSize")); - mlp.indent(gdi.getTextNo("MinIndeent")); + mlp.indent(gdi.getTextNo("MinIndent")); gdi.getSelectedItem("Fonts", lbi); mlp.setFont(gdiFonts(lbi.data)); makeDirty(gdi, MakeDirty, MakeDirty); + if (!gdi.hasData("NoRedraw") || force) { gdi.restore("BeginListEdit", false); show(gdi); } + + if (bi.id != "Apply") + editListPost(gdi, mlp, bi.getExtraInt()); } else if (bi.id == "ApplyListProp") { wstring name = gdi.getText("Name"); @@ -628,8 +680,7 @@ int ListEditor::editList(gdioutput &gdi, int type, BaseInfo &data) { gdi.pushX(); vector< pair > lists; oe->getListContainer().getLists(lists, true, false, false); - reverse(lists.begin(), lists.end()); - + gdi.fillRight(); gdi.addSelection("OpenList", 250, 400, editListCB, L"Välj lista:"); gdi.addItem("OpenList", lists); @@ -728,8 +779,10 @@ int ListEditor::editList(gdioutput &gdi, int type, BaseInfo &data) { } else if (type == GUI_LISTBOX) { ListBoxInfo &lbi = dynamic_cast(data); - - if (lbi.id == "AlignType") { + if (lbi.id == "RelPrevious") { + updateAlign(gdi, lbi.data); + } + else if (lbi.id == "AlignType") { gdi.setInputStatus("AlignText", lbi.data == lString); if (lbi.data == lString) { int ix = lbi.text.find_first_of(L":"); @@ -740,31 +793,7 @@ int ListEditor::editList(gdioutput &gdi, int type, BaseInfo &data) { gdi.setText("AlignText", L""); } else if (lbi.id == "Type") { - EPostType type = EPostType(lbi.data); - gdi.setTextTranslate("TUseLeg", getIndexDescription(type), true); - if (type == lResultModuleNumber || type == lResultModuleTime || - type == lResultModuleNumberTeam || type == lResultModuleTimeTeam) { - gdi.check("UseLeg", true); - gdi.disableInput("UseLeg"); - - if (gdi.hasWidget("UseResultModule")) { - gdi.check("UseResultModule", true); - gdi.disableInput("UseResultModule"); - } - gdi.enableInput("Leg"); - if (gdi.getText("Leg").empty()) - gdi.setText("Leg", L"0"); - } - else { - gdi.enableInput("UseLeg"); - if (gdi.getTextNo("Leg") == 0) { - gdi.setText("Leg", L""); - gdi.enableInput("UseLeg"); - gdi.enableInput("UseResultModule", true); - gdi.check("UseLeg", false); - gdi.disableInput("Leg"); - } - } + updateType(lbi.data, gdi); } else if (lbi.id == "SubType") { oListInfo::EBaseType subType = oListInfo::EBaseType(lbi.data); @@ -797,6 +826,39 @@ int ListEditor::editList(gdioutput &gdi, int type, BaseInfo &data) { return 0; } +void ListEditor::updateType(int iType, gdioutput & gdi) { + EPostType type = EPostType(iType); + gdi.setTextTranslate("TUseLeg", getIndexDescription(type), true); + if (type == lResultModuleNumber || type == lResultModuleTime || + type == lResultModuleNumberTeam || type == lResultModuleTimeTeam) { + gdi.check("UseLeg", true); + gdi.disableInput("UseLeg"); + + if (gdi.hasWidget("UseResultModule")) { + gdi.check("UseResultModule", true); + gdi.disableInput("UseResultModule"); + } + gdi.enableInput("Leg"); + if (gdi.getText("Leg").empty()) + gdi.setText("Leg", L"0"); + } + else { + gdi.enableInput("UseLeg"); + if (gdi.getTextNo("Leg") == 0) { + gdi.setText("Leg", L""); + gdi.enableInput("UseLeg"); + gdi.enableInput("UseResultModule", true); + gdi.check("UseLeg", false); + gdi.disableInput("Leg"); + } + } + + gdi.restore("Example", false); + int margin = gdi.scaleLength(10); + showExample(gdi, margin, type); + gdi.refreshFast(); +} + void ListEditor::checkUnsaved(gdioutput &gdi) { if (gdi.hasData("IsEditing")) { if (gdi.isInputChanged("")) { @@ -812,6 +874,22 @@ void ListEditor::checkUnsaved(gdioutput &gdi) { } } +void ListEditor::updateAlign(gdioutput &gdi, int val) { + gdi.setInputStatus("AlignType", val != 1); + gdi.setInputStatus("AlignText", val != 1); + + gdi.setInputStatus("BlockSize", val != 1); + gdi.setInputStatus("LimitBlockWidth", val != 1); + + gdi.setInputStatus("TextAdjust", val != 1); + gdi.setInputStatus("MinIndent", val != 1); + + gdi.setInputStatus("Color", val != 1); + gdi.setInputStatus("Fonts", val != 1); + + + +} void ListEditor::editListPost(gdioutput &gdi, const MetaListPost &mlp, int id) { checkUnsaved(gdi); gdi.restore("EditList", false); @@ -832,8 +910,13 @@ void ListEditor::editListPost(gdioutput &gdi, const MetaListPost &mlp, int id) { gdi.addString("", boldLarge, "Listpost").setColor(colorDarkGrey); gdi.setCX(gdi.getCX() + gdi.scaleLength(20)); - gdi.addButton("MoveLeft", "<< Flytta vänster", editListCB); - gdi.addButton("MoveRight", "Flytta höger >>", editListCB); + gdi.addButton("MoveLeft", "<< Flytta vänster", editListCB).setExtra(id-1); + if (ix == 0) + gdi.setInputStatus("MoveLeft", false); + + gdi.addButton("MoveRight", "Flytta höger >>", editListCB).setExtra(id+1); + if (ix + 1 == currentList->getNumPostsOnLine(groupIx, lineIx)) + gdi.setInputStatus("MoveRight", false); gdi.dropLine(3); gdi.popX(); @@ -857,16 +940,61 @@ void ListEditor::editListPost(gdioutput &gdi, const MetaListPost &mlp, int id) { sort(types.begin(), types.end()); gdi.pushX(); - gdi.fillRight(); int boxY = gdi.getCY(); - gdi.addSelection("Type", 290, 500, editListCB, L"Typ:"); + gdi.fillRight(); + gdi.addString("", 0, L"Typ:"); + gdi.fillDown(); + gdi.registerEvent("SearchRunner", editListCB).setKeyCommand(KC_FIND); + gdi.registerEvent("SearchRunnerBack", editListCB).setKeyCommand(KC_FINDBACK); + + gdi.addInput("SearchText", getSearchString(), 26, editListCB, L"", + L"Sök symbol.").isEdit(false) + .setBgColor(colorLightCyan).ignore(true); + + gdi.dropLine(-0.1); + gdi.popX(); + gdi.fillRight(); + gdi.addSelection("Type", 290, 500, editListCB); + gdi.dropLine(-1); gdi.addItem("Type", types); gdi.selectItemByData("Type", currentType); gdi.addInput("Text", mlp.getText(), 16, 0, L"Egen text:", L"Använd symbolen X där MeOS ska fylla i typens data."); + gdi.setInputFocus("Text", true); + ((InputInfo *)gdi.setText("SearchText", getSearchString()))->setFgColor(colorGreyBlue); int boxX = gdi.getCX(); gdi.popX(); gdi.fillRight(); gdi.dropLine(3); + + if (hasResultModule) { + gdi.addCheckbox("UseResultModule", "Data from result module (X)#" + currentList->getResultModule(), 0, !mlp.getResultModule().empty()); + gdi.dropLine(1.5); + gdi.popX(); + } + + int leg = mlp.getLeg(); + gdi.addCheckbox("UseLeg", getIndexDescription(storedType), editListCB, leg != -1); + gdi.dropLine(-0.2); + gdi.setCX(gdi.getCX() + gdi.getLineHeight() * 5); + if (storedType == lResultModuleNumber || storedType == lResultModuleTime || storedType == lResultModuleTimeTeam || storedType == lResultModuleNumberTeam) + gdi.addInput("Leg", leg >= 0 ? itow(leg) : L"0", 4); + else + gdi.addInput("Leg", leg >= 0 ? itow(leg + 1) : L"", 4); + + gdi.enableInput("Leg", leg != -1); + + if (storedType == lResultModuleNumber || storedType == lResultModuleTime || + storedType == lResultModuleTimeTeam || storedType == lResultModuleNumberTeam) { + gdi.check("UseLeg", true); + gdi.disableInput("UseLeg"); + if (gdi.hasWidget("UseResultModule")) { + gdi.check("UseResultModule", true); + gdi.disableInput("UseResultModule"); + } + } + + gdi.popX(); + gdi.dropLine(2.5); currentList->getAlignTypes(mlp, types, currentType); sort(types.begin(), types.end()); gdi.addSelection("AlignType", 290, 500, editListCB, L"Justera mot:"); @@ -879,43 +1007,19 @@ void ListEditor::editListPost(gdioutput &gdi, const MetaListPost &mlp, int id) { gdi.popX(); gdi.dropLine(3); gdi.fillRight(); - gdi.addCheckbox("BlockAlign", "Justera blockvis:", 0, mlp.getAlignBlock()); + gdi.addString("", 0, "Minsta blockbredd:"); gdi.dropLine(-0.2); gdi.addInput("BlockSize", itow(mlp.getBlockWidth()), 5, 0, L"", L"Blockbredd"); - gdi.dropLine(2.1); + gdi.dropLine(0.2); + gdi.addCheckbox("LimitBlockWidth", "Begränsa bredd (klipp text)", 0, mlp.getLimitBlockWidth()); + gdi.dropLine(1.9); gdi.popX(); gdi.fillRight(); - if (hasResultModule) { - gdi.addCheckbox("UseResultModule", "Data from result module (X)#" + currentList->getResultModule(), 0, !mlp.getResultModule().empty()); - gdi.dropLine(1.5); - gdi.popX(); - } - - int leg = mlp.getLeg(); - gdi.addCheckbox("UseLeg", getIndexDescription(storedType), editListCB, leg != -1); - gdi.dropLine(-0.2); - gdi.setCX(gdi.getCX() + gdi.getLineHeight() * 5); - if (storedType == lResultModuleNumber || storedType == lResultModuleTime || storedType == lResultModuleTimeTeam || storedType == lResultModuleNumberTeam) - gdi.addInput("Leg", leg>=0 ? itow(leg) : L"0", 4); - else - gdi.addInput("Leg", leg>=0 ? itow(leg + 1) : L"", 4); - - if (storedType == lResultModuleNumber || storedType == lResultModuleTime || storedType == lResultModuleTimeTeam || storedType == lResultModuleNumberTeam) { - gdi.check("UseLeg", true); - gdi.disableInput("UseLeg"); - if (gdi.hasWidget("UseResultModule")) { - gdi.check("UseResultModule", true); - gdi.disableInput("UseResultModule"); - } - } + gdi.dropLine(2); - if (ix>0) { - gdi.popX(); - gdi.addCheckbox("MergeText", "Slå ihop text med föregående", 0, mlp.isMergePrevious()); - gdi.dropLine(2); - } + int maxY = gdi.getCY(); gdi.popX(); gdi.fillDown(); @@ -925,13 +1029,28 @@ void ListEditor::editListPost(gdioutput &gdi, const MetaListPost &mlp, int id) { gdi.addString("", 1, "Formateringsregler"); gdi.dropLine(0.5); gdi.fillRight(); - gdi.addInput("MinIndeent", itow(mlp.getMinimalIndent()), 7, 0, L"Minsta intabbning:"); + int val = 0; + if (ix>0) { + gdi.popX(); + gdi.addSelection("RelPrevious", 100, 100, editListCB, L"Relation till föregående:"); + gdi.addItem("RelPrevious", lang.tl("Ingen"), 0); + gdi.addItem("RelPrevious", lang.tl("Slå ihop text"), 1); + gdi.addItem("RelPrevious", lang.tl("Håll ihop med"), 2); + gdi.autoGrow("RelPrevious"); + val = mlp.isMergePrevious() ? 1 : (mlp.getPackWithPrevious() ? 2 : 0); + gdi.selectItemByData("RelPrevious", val); + } + + + gdi.addInput("MinIndent", itow(mlp.getMinimalIndent()), 7, 0, L"Justering i sidled:"); + gdi.popX(); + gdi.dropLine(3); vector< pair > fonts; int currentFont; mlp.getFonts(fonts, currentFont); - gdi.addSelection("Fonts", 150, 500, 0, L"Format:"); + gdi.addSelection("Fonts", 200, 500, 0, L"Format:"); gdi.addItem("Fonts", fonts); gdi.selectItemByData("Fonts", currentFont); int maxX = gdi.getCX(); @@ -939,7 +1058,7 @@ void ListEditor::editListPost(gdioutput &gdi, const MetaListPost &mlp, int id) { gdi.popX(); gdi.dropLine(3); - gdi.addSelection("TextAdjust", 150, 100, 0, L"Textjustering:"); + gdi.addSelection("TextAdjust", 130, 100, 0, L"Textjustering:"); gdi.addItem("TextAdjust", lang.tl("Vänster"), 0); gdi.addItem("TextAdjust", lang.tl("Höger"), textRight); gdi.addItem("TextAdjust", lang.tl("Centrera"), textCenter); @@ -966,22 +1085,66 @@ void ListEditor::editListPost(gdioutput &gdi, const MetaListPost &mlp, int id) { maxY = max(maxY, gdi.getCY()); maxX = max(gdi.getCX(), maxX); - gdi.fillDown(); - gdi.popX(); - gdi.setData("IsEditing", 1); - RECT rc; rc.top = y1; rc.left = x1; rc.right = maxX + gdi.scaleLength(6); - rc.bottom = maxY + gdi.scaleLength(6); + rc.bottom = maxY + gdi.scaleLength(6) + gdi.getLineHeight()*4; gdi.addRectangle(rc, colorLightBlue, true); + gdi.setData("IsEditing", 1); + gdi.setCX(x1); + gdi.setCY(maxY); + showExample(gdi, margin, mlp); + + updateAlign(gdi, val); gdi.scrollToBottom(); gdi.refresh(); } +void ListEditor::showExample(gdioutput &gdi, int margin, const MetaListPost &mlp) { + int x1 = gdi.getCX(); + + RECT rrInner; + rrInner.left = x1 + margin; + rrInner.top = gdi.getCY(); + + gdi.setRestorePoint("Example"); + gdi.fillDown(); + gdi.setCX(x1 + margin * 2); + gdi.dropLine(0.5); + gdi.addString("", 0, "Exempel:"); + gdi.fillRight(); + int maxX = gdi.getWidth(); + gdi.dropLine(0.5); + + vector rr; + oe->getRunners(0, 0, rr, false); + set used; + for (size_t i = 0; i < rr.size(); i++) { + int ix = (997 * i) % rr.size(); + wstring s = oe->formatListString(mlp.getTypeRaw(), rr[i]); + if (used.insert(s).second) { + int xb = gdi.getCX(); + gdi.addStringUT(italicText, s + L" "); + int xa = gdi.getCX(); + int delta = xa - xb; + + int dist = maxX - xa; + if (dist < delta * 3 || used.size() == 5) + break; // Enough examples + } + } + gdi.dropLine(1.5); + rrInner.right = max(gdi.getCX(), gdi.scaleLength(120)) + margin; + rrInner.bottom = gdi.getCY(); + gdi.fillDown(); + gdi.popX(); + + gdi.addRectangle(rrInner, colorLightGreen, true); +} + const wchar_t *ListEditor::getIndexDescription(EPostType type) { if (type == lResultModuleTime || type == lResultModuleTimeTeam) return L"Index in X[index]#OutputTimes"; @@ -1230,3 +1393,10 @@ void ListEditor::enableOpen(gdioutput &gdi) { gdi.setInputStatus("DoOpen", enabled); } +void ListEditor::handleAutoComplete(gdioutput &gdi, AutoCompleteInfo &info) { + gdi.selectItemByData("Type", info.getCurrentInt()); + updateType(info.getCurrentInt(), gdi); + gdi.clearAutoComplete(""); + gdi.setText("SearchText", getSearchString()); + gdi.TabFocus(1); +} diff --git a/code/listeditor.h b/code/listeditor.h index aeabdb9..52821e3 100644 --- a/code/listeditor.h +++ b/code/listeditor.h @@ -33,8 +33,9 @@ enum EPostType; class TabBase; #include +#include "autocompletehandler.h" -class ListEditor { +class ListEditor : public AutoCompleteHandler { private: enum SaveType {NotSaved, SavedInside, SavedFile}; oEvent *oe; @@ -49,10 +50,14 @@ private: void showLine(gdioutput &gdi, const vector &line, int ix) const; int editList(gdioutput &gdi, int type, BaseInfo &data); + void updateType(int iType, gdioutput &gdi); + ButtonInfo &addButton(gdioutput &gdi, const MetaListPost &mlp, int x, int y, int lineIx, int ix) const; void editListPost(gdioutput &gdi, const MetaListPost &mlp, int id); + void showExample(gdioutput &gdi, int margin, const MetaListPost &mlp); + void editListProp(gdioutput &gdi, bool newList); enum DirtyFlag {MakeDirty, ClearDirty, NoTouch}; @@ -68,6 +73,8 @@ private: void makeDirty(gdioutput &gdi, DirtyFlag inside, DirtyFlag outside); + void updateAlign(gdioutput &gdi, int val); + TabBase *origin = nullptr; void show(gdioutput &gdi); @@ -75,16 +82,11 @@ public: ListEditor(oEvent *oe); virtual ~ListEditor(); - //void load(MetaList *list); void load(const MetaListContainer &mlc, int index); - void show(TabBase *dst, gdioutput &gdi); - bool isShown(TabBase *tab) const { return origin == tab; } - MetaList *getCurrentList() const {return currentList;}; - + void handleAutoComplete(gdioutput &gdi, AutoCompleteInfo &info) final; friend int editListCB(gdioutput*, int, void *); - }; diff --git a/code/meos.cpp b/code/meos.cpp index 3c35252..7f1e31c 100644 --- a/code/meos.cpp +++ b/code/meos.cpp @@ -303,7 +303,8 @@ int APIENTRY WinMain(HINSTANCE hInstance, getUserFile(oldSettings, L"meospref.xml"); gEvent->loadProperties(oldSettings); } - + gEvent->clear(); + lang.get().addLangResource(L"English", L"104"); lang.get().addLangResource(L"Svenska", L"103"); lang.get().addLangResource(L"Deutsch", L"105"); @@ -922,7 +923,7 @@ gdioutput *createExtraWindow(const string &tag, const wstring &title, int max_x, else { gdi->initRecorder(&gdi_main->getRecorder()); } - SetWindowLong(hWnd, GWL_USERDATA, gdi_extra.size()); + SetWindowLongPtr(hWnd, GWLP_USERDATA, gdi_extra.size()); currentFocusIx = gdi_extra.size(); gdi_extra.push_back(gdi); @@ -1413,9 +1414,9 @@ LRESULT CALLBACK WorkSpaceWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM PAINTSTRUCT ps; HDC hdc; - LONG ix = GetWindowLong(hWnd, GWL_USERDATA); + LONG_PTR ix = GetWindowLongPtr(hWnd, GWLP_USERDATA); gdioutput *gdi = 0; - if (ix < LONG(gdi_extra.size())) + if (ix < LONG_PTR(gdi_extra.size())) gdi = gdi_extra[ix]; if (gdi) { diff --git a/code/meos.h b/code/meos.h index e1a81ca..b5df0cd 100644 --- a/code/meos.h +++ b/code/meos.h @@ -1,11 +1,3 @@ -#if !defined(AFX_MEOS_H__7F8E5F23_ADD4_45AB_9626_7378FEA38D49__INCLUDED_) -#define AFX_MEOS_H__7F8E5F23_ADD4_45AB_9626_7378FEA38D49__INCLUDED_ +#pragma once - -#if _MSC_VER > 1000 -#pragma once -#endif // _MSC_VER > 1000 - -#include "resource.h" - -#endif // !defined(AFX_MEOS_H__7F8E5F23_ADD4_45AB_9626_7378FEA38D49__INCLUDED_) +#include "resource.h" \ No newline at end of file diff --git a/code/meos_util.cpp b/code/meos_util.cpp index bce3454..c0e31fd 100644 --- a/code/meos_util.cpp +++ b/code/meos_util.cpp @@ -745,19 +745,26 @@ const wstring &itow(int i) { return res; } -wstring itow(unsigned int i) { - wchar_t bf[32]; - _ultow_s(i, bf, 10); - return bf; -} - wstring itow(unsigned long i) { wchar_t bf[32]; _ultow_s(i, bf, 10); return bf; } -wstring itow(__int64 i) { + +wstring itow(unsigned int i) { + wchar_t bf[32]; + _ultow_s(i, bf, 10); + return bf; +} + +wstring itow(int64_t i) { + wchar_t bf[32]; + _i64tow_s(i, bf, 32, 10); + return bf; +} + +wstring itow(uint64_t i) { wchar_t bf[32]; _i64tow_s(i, bf, 32, 10); return bf; @@ -786,13 +793,21 @@ string itos(unsigned long i) return bf; } -string itos(__int64 i) +string itos(int64_t i) { char bf[32]; _i64toa_s(i, bf, 32, 10); return bf; } +string itos(uint64_t i) +{ + char bf[32]; + _ui64toa_s(i, bf, 32, 10); + return bf; +} + + bool filterMatchString(const string &c, const char *filt_lc) { if (filt_lc[0] == 0) @@ -1818,6 +1833,60 @@ wstring makeValidFileName(const wstring &input, bool strict) { return out; } + +string makeValidFileName(const string& input, bool strict) { + string out; + out.reserve(input.size()); + + if (strict) { + for (size_t k = 0; k < input.length(); k++) { + char b = input[k]; + if ((b >= '0' && b <= '9') || (b >= 'a' && b <= 'z') || (b >= 'A' && b <= 'Z') || b == '_' || b == '.') + out.push_back(b); + else if (b == ' ' || b == ',') + out.push_back('_'); + else { + b = toLowerStripped(b); + + if (b >= 'a' && b <= 'z') + b = b; + else if (b == 'ö') + b = 'o'; + else if (b == 'ä' || b == 'å' || b == 'à' || b == 'á' || b == 'â' || b == 'ã' || b == 'æ') + b = 'a'; + else if (b == 'ç') + b = 'c'; + else if (b == 'è' || b == 'é' || b == 'ê' || b == 'ë') + b = 'e'; + else if (b == 'ð') + b = 't'; + else if (b == 'ï' || b == 'ì' || b == 'ï' || b == 'î' || b == 'í') + b = 'i'; + else if (b == 'ò' || b == 'ó' || b == 'ô' || b == 'õ' || b == 'ø') + b = 'o'; + else if (b == 'ù' || b == 'ú' || b == 'û' || b == 'ü') + b = 'u'; + else if (b == 'ý') + b = 'y'; + else + b = '-'; + + out.push_back(b); + } + } + } + else { + for (size_t k = 0; k < input.length(); k++) { + char b = input[k]; + if (b < 32 || b == '*' || b == '?' || b == ':' || b == '/' || b == '\\') + b = '_'; + out.push_back(b); + } + } + return out; +} + + void capitalize(wstring &str) { if (str.length() > 0) { auto bf = str.c_str(); diff --git a/code/meos_util.h b/code/meos_util.h index 4363cc0..c7c133b 100644 --- a/code/meos_util.h +++ b/code/meos_util.h @@ -40,14 +40,14 @@ public: std::string &get() { if ( (++ix) >= cache.size() ) ix = 0; - int lx = ix; + size_t lx = ix; return cache[lx]; } std::wstring &wget() { if ( (++wix) >= wcache.size() ) wix = 0; - int lx = wix; + size_t lx = wix; return wcache[lx]; } }; @@ -127,14 +127,16 @@ const wstring &makeDash(const wchar_t *t); wstring formatRank(int rank); const string &itos(int i); -string itos(unsigned long i); string itos(unsigned int i); -string itos(__int64 i); +string itos(unsigned long i); +string itos(int64_t i); +string itos(uint64_t i); const wstring &itow(int i); -wstring itow(unsigned long i); wstring itow(unsigned int i); -wstring itow(__int64 i); +wstring itow(unsigned long i); +wstring itow(int64_t i); +wstring itow(uint64_t i); ///Lower case match (filt_lc must be lc) @@ -237,6 +239,7 @@ PersonSex interpretSex(const wstring &sex); wstring encodeSex(PersonSex sex); wstring makeValidFileName(const wstring &input, bool strict); +string makeValidFileName(const string& input, bool strict); /** Initial capital letter. */ void capitalize(wstring &str); diff --git a/code/meos_vc15.sln b/code/meos_vc15.sln index 2c0f00c..291bfa1 100644 --- a/code/meos_vc15.sln +++ b/code/meos_vc15.sln @@ -3,19 +3,28 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 14 VisualStudioVersion = 14.0.25420.1 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "meos", "meosvc15.vcxproj", "{B854EF2A-2BB7-4D62-B08B-96BD64B347E8}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "meosvc15", "meosvc15.vcxproj", "{B854EF2A-2BB7-4D62-B08B-96BD64B347E8}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x64 = Debug|x64 Debug|x86 = Debug|x86 + Release|x64 = Release|x64 Release|x86 = Release|x86 + test|x64 = test|x64 test|x86 = test|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution + {B854EF2A-2BB7-4D62-B08B-96BD64B347E8}.Debug|x64.ActiveCfg = Debug|x64 + {B854EF2A-2BB7-4D62-B08B-96BD64B347E8}.Debug|x64.Build.0 = Debug|x64 {B854EF2A-2BB7-4D62-B08B-96BD64B347E8}.Debug|x86.ActiveCfg = Debug|Win32 {B854EF2A-2BB7-4D62-B08B-96BD64B347E8}.Debug|x86.Build.0 = Debug|Win32 + {B854EF2A-2BB7-4D62-B08B-96BD64B347E8}.Release|x64.ActiveCfg = Release|x64 + {B854EF2A-2BB7-4D62-B08B-96BD64B347E8}.Release|x64.Build.0 = Release|x64 {B854EF2A-2BB7-4D62-B08B-96BD64B347E8}.Release|x86.ActiveCfg = Release|Win32 {B854EF2A-2BB7-4D62-B08B-96BD64B347E8}.Release|x86.Build.0 = Release|Win32 + {B854EF2A-2BB7-4D62-B08B-96BD64B347E8}.test|x64.ActiveCfg = test|x64 + {B854EF2A-2BB7-4D62-B08B-96BD64B347E8}.test|x64.Build.0 = test|x64 {B854EF2A-2BB7-4D62-B08B-96BD64B347E8}.test|x86.ActiveCfg = test|Win32 {B854EF2A-2BB7-4D62-B08B-96BD64B347E8}.test|x86.Build.0 = test|Win32 EndGlobalSection diff --git a/code/meosdb/meosdb.cpp b/code/meosdb/meosdb.cpp deleted file mode 100644 index dd8746a..0000000 --- a/code/meosdb/meosdb.cpp +++ /dev/null @@ -1,248 +0,0 @@ -/************************************************************************ - MeOS - Orienteering Software - Copyright (C) 2009-2020 Melin Software HB - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - - Melin Software HB - software@melin.nu - www.melin.nu - Eksoppsvägen 16, SE-75646 UPPSALA, Sweden - -************************************************************************/ - - -// meosdb.cpp : Defines the exported functions for the DLL application. -// - -#include "stdafx.h" - -#ifdef c - #include "meosdb.h" -#else - #define MEOSDB_API -#endif - -#include -#include - -#include -#include -#include - -#include "MeosSQL.h" -#include "../meos_util.h" - -using namespace std; - -#include "../oRunner.h" -#include "../oEvent.h" -#include "../Localizer.h" - -#ifdef BUILD_DB_DLL - HINSTANCE hInst=0; - Localizer lang; -#endif - - -int MEOSDB_API getMeosVersion() -{ - return getMeosBuild(); -} - -MeosSQL msql; -static int nSynchList = 0; -static int nSynchEnt = 0; - -int getListMask(oEvent &oe) { - return msql.getModifiedMask(oe); -} - -void resetSynchTimes() { - msql.clearReadTimes(); -} - -bool MEOSDB_API msSynchronizeList(oEvent *oe, oListId lid) -{ - nSynchList++; - if (nSynchList % 100 == 99) - OutputDebugString(L"Synchronized 100 lists\n"); - bool ret = false; - switch (lid) { - case oListId::oLRunnerId: - ret = msql.syncListRunner(oe); - break; - case oListId::oLClassId: - ret = msql.syncListClass(oe); - break; - case oListId::oLCourseId: - ret = msql.syncListCourse(oe); - break; - case oListId::oLControlId: - ret = msql.syncListControl(oe); - break; - case oListId::oLClubId: - ret = msql.syncListClub(oe); - break; - case oListId::oLCardId: - ret = msql.syncListCard(oe); - break; - case oListId::oLPunchId: - ret = msql.syncListPunch(oe); - break; - case oListId::oLTeamId: - ret = msql.syncListTeam(oe); - break; - } - - msql.processMissingObjects(); - return ret; -} - -int MEOSDB_API msSynchronizeUpdate(oBase *obj) -{ - if (typeid(*obj)==typeid(oRunner)){ - return msql.syncUpdate((oRunner *) obj, false); - } - else if (typeid(*obj)==typeid(oClass)){ - return msql.syncUpdate((oClass *) obj, false); - } - else if (typeid(*obj)==typeid(oCourse)){ - return msql.syncUpdate((oCourse *) obj, false); - } - else if (typeid(*obj)==typeid(oControl)){ - return msql.syncUpdate((oControl *) obj, false); - } - else if (typeid(*obj)==typeid(oClub)){ - return msql.syncUpdate((oClub *) obj, false); - } - else if (typeid(*obj)==typeid(oCard)){ - return msql.syncUpdate((oCard *) obj, false); - } - else if (typeid(*obj)==typeid(oFreePunch)){ - return msql.syncUpdate((oFreePunch *) obj, false); - } - else if (typeid(*obj)==typeid(oEvent)){ - - return msql.SyncUpdate((oEvent *) obj); - } - else if (typeid(*obj)==typeid(oTeam)){ - return msql.syncUpdate((oTeam *) obj, false); - } - return 0; -} - -int MEOSDB_API msSynchronizeRead(oBase *obj) -{ - nSynchEnt++; - if (nSynchEnt % 100 == 99) - OutputDebugString(L"Synchronized 100 entities\n"); - - return msql.syncRead(false, obj); -} - -// Removes (marks it as removed) an entry from the database. -int MEOSDB_API msRemove(oBase *obj) -{ - return msql.Remove(obj); -} - -// Checks the database connection, lists other connected components -// and register ourself in the database. The value oe=0 unregister us. -int MEOSDB_API msMonitor(oEvent *oe) -{ - return msql.checkConnection(oe); -} - -// Tries to open the database defined by oe. -int MEOSDB_API msUploadRunnerDB(oEvent *oe) -{ - return msql.uploadRunnerDB(oe); -} - -// Tries to open the database defined by oe. -int MEOSDB_API msOpenDatabase(oEvent *oe) -{ - return msql.openDB(oe); -} - -// Tries to remove the database defined by oe. -int MEOSDB_API msDropDatabase(oEvent *oe) -{ - return msql.dropDatabase(oe); -} - -// Tries to connect to the server defined by oe. -int MEOSDB_API msConnectToServer(oEvent *oe) -{ - return msql.listCompetitions(oe, false); -} - -// Reloads competitions. Assumes a connection. -int MEOSDB_API msListCompetitions(oEvent *oe) -{ - return msql.listCompetitions(oe, true); -} - -// Fills string msgBuff with the current error stage -bool MEOSDB_API msGetErrorState(char *msgBuff) -{ - return msql.getErrorMessage(msgBuff); -} - -// Close database connection. -bool MEOSDB_API msResetConnection() -{ - return msql.closeDB(); -} - -// Try to reconnect to the database. Returns true if successful. -bool MEOSDB_API msReConnect() -{ - return msql.reConnect(); -} - - - -bool repairTables(const string &db, vector &output) { - return msql.repairTables(db, output); -} - - -#ifdef BUILD_DB_DLL - -bool getUserFile(char *file, const char *in) -{ - throw 0; - strcpy_s(file, 256, in); - return true; -} - -string MakeDash(string) -{ - throw 0; - return ""; -} - -bool __cdecl GetRandomBit() -{ - throw 0; - return true; -} - -int __cdecl GetRandomNumber(int) -{ - throw 0; - return 0; -} - -#endif diff --git a/code/meosdb/meosdb.vcproj b/code/meosdb/meosdb.vcproj deleted file mode 100644 index 085de92..0000000 --- a/code/meosdb/meosdb.vcproj +++ /dev/null @@ -1,391 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/code/meosdb/meosdb.vcxproj b/code/meosdb/meosdb.vcxproj deleted file mode 100644 index ec88d9c..0000000 --- a/code/meosdb/meosdb.vcxproj +++ /dev/null @@ -1,158 +0,0 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - {13A51976-5F88-471F-A1E9-259102710806} - meosdb - Win32Proj - - - - DynamicLibrary - MultiByte - true - - - DynamicLibrary - NotSet - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - $(SolutionDir)$(Configuration)\ - $(Configuration)\ - true - $(SolutionDir)$(Configuration)\ - $(Configuration)\ - false - AllRules.ruleset - - - AllRules.ruleset - - - - - - Disabled - mysql++\;C:\Program Files\MySQL\MySQL Server 5.5\include;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_WINDOWS;_USRDLL;MEOSDB_EXPORTS;MEOSDB;%(PreprocessorDefinitions) - false - EnableFastChecks - MultiThreadedDebugDLL - Use - Level3 - EditAndContinue - true - - - mysqlpp.lib;Msimg32.lib;comctl32.lib;winmm.lib;%(AdditionalDependencies) - ..\lib_db;%(AdditionalLibraryDirectories) - true - Windows - MachineX86 - - - - - MaxSpeed - AnySuitable - true - Speed - F:\Dev\meos\code\meosdb\mysql++;F:\Dev\meos\code\meosdb\mysql50;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_WINDOWS;_USRDLL;MEOSDB_EXPORTS;MEOSDB;%(PreprocessorDefinitions) - MultiThreadedDLL - true - Use - Level3 - - - - - Msimg32.lib;comctl32.lib;mysqlpp.lib;winmm.lib;%(AdditionalDependencies) - ..\lib;%(AdditionalLibraryDirectories) - true - Windows - true - true - MachineX86 - - - - - - - - - - false - - - false - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Create - Create - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/code/meosdb/mysql++/Doxyfile.in b/code/meosdb/mysql++/Doxyfile.in deleted file mode 100644 index b5fa682..0000000 --- a/code/meosdb/mysql++/Doxyfile.in +++ /dev/null @@ -1,1258 +0,0 @@ -# Doxyfile 1.5.2-1 - -# This file describes the settings to be used by the documentation system -# doxygen (www.doxygen.org) for a project -# -# All text after a hash (#) is considered a comment and will be ignored -# The format is: -# TAG = value [value, ...] -# For lists items can also be appended using: -# TAG += value [value, ...] -# Values that contain spaces should be placed between quotes (" ") - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- - -# This tag specifies the encoding used for all characters in the config file that -# follow. The default is UTF-8 which is also the encoding used for all text before -# the first occurrence of this tag. Doxygen uses libiconv (or the iconv built into -# libc) for the transcoding. See http://www.gnu.org/software/libiconv for the list of -# possible encodings. - -DOXYFILE_ENCODING = UTF-8 - -# The PROJECT_NAME tag is a single word (or a sequence of words surrounded -# by quotes) that should identify the project. - -PROJECT_NAME = MySQL++ - -# The PROJECT_NUMBER tag can be used to enter a project or revision number. -# This could be handy for archiving the generated documentation or -# if some version control system is used. - -PROJECT_NUMBER = @PACKAGE_VERSION@ - -# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) -# base path where the generated documentation will be put. -# If a relative path is entered, it will be relative to the location -# where doxygen was started. If left blank the current directory will be used. - -OUTPUT_DIRECTORY = ../doc - -# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create -# 4096 sub-directories (in 2 levels) under the output directory of each output -# format and will distribute the generated files over these directories. -# Enabling this option can be useful when feeding doxygen a huge amount of -# source files, where putting all generated files in the same directory would -# otherwise cause performance problems for the file system. - -CREATE_SUBDIRS = NO - -# The OUTPUT_LANGUAGE tag is used to specify the language in which all -# documentation generated by doxygen is written. Doxygen will use this -# information to generate all constant output in the proper language. -# The default language is English, other supported languages are: -# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, -# Croatian, Czech, Danish, Dutch, Finnish, French, German, Greek, Hungarian, -# Italian, Japanese, Japanese-en (Japanese with English messages), Korean, -# Korean-en, Lithuanian, Norwegian, Polish, Portuguese, Romanian, Russian, -# Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian. - -OUTPUT_LANGUAGE = English - -# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will -# include brief member descriptions after the members that are listed in -# the file and class documentation (similar to JavaDoc). -# Set to NO to disable this. - -BRIEF_MEMBER_DESC = YES - -# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend -# the brief description of a member or function before the detailed description. -# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the -# brief descriptions will be completely suppressed. - -REPEAT_BRIEF = YES - -# This tag implements a quasi-intelligent brief description abbreviator -# that is used to form the text in various listings. Each string -# in this list, if found as the leading text of the brief description, will be -# stripped from the text and the result after processing the whole list, is -# used as the annotated text. Otherwise, the brief description is used as-is. -# If left blank, the following values are used ("$name" is automatically -# replaced with the name of the entity): "The $name class" "The $name widget" -# "The $name file" "is" "provides" "specifies" "contains" -# "represents" "a" "an" "the" - -ABBREVIATE_BRIEF = - -# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then -# Doxygen will generate a detailed section even if there is only a brief -# description. - -ALWAYS_DETAILED_SEC = NO - -# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all -# inherited members of a class in the documentation of that class as if those -# members were ordinary class members. Constructors, destructors and assignment -# operators of the base classes will not be shown. - -INLINE_INHERITED_MEMB = NO - -# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full -# path before files name in the file list and in the header files. If set -# to NO the shortest path that makes the file name unique will be used. - -FULL_PATH_NAMES = NO - -# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag -# can be used to strip a user-defined part of the path. Stripping is -# only done if one of the specified strings matches the left-hand part of -# the path. The tag can be used to show relative paths in the file list. -# If left blank the directory from which doxygen is run is used as the -# path to strip. - -STRIP_FROM_PATH = - -# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of -# the path mentioned in the documentation of a class, which tells -# the reader which header file to include in order to use a class. -# If left blank only the name of the header file containing the class -# definition is used. Otherwise one should specify the include paths that -# are normally passed to the compiler using the -I flag. - -STRIP_FROM_INC_PATH = - -# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter -# (but less readable) file names. This can be useful is your file systems -# doesn't support long names like on DOS, Mac, or CD-ROM. - -SHORT_NAMES = NO - -# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen -# will interpret the first line (until the first dot) of a JavaDoc-style -# comment as the brief description. If set to NO, the JavaDoc -# comments will behave just like the Qt-style comments (thus requiring an -# explicit @brief command for a brief description. - -JAVADOC_AUTOBRIEF = NO - -# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen -# treat a multi-line C++ special comment block (i.e. a block of //! or /// -# comments) as a brief description. This used to be the default behaviour. -# The new default is to treat a multi-line C++ comment block as a detailed -# description. Set this tag to YES if you prefer the old behaviour instead. - -MULTILINE_CPP_IS_BRIEF = NO - -# If the DETAILS_AT_TOP tag is set to YES then Doxygen -# will output the detailed description near the top, like JavaDoc. -# If set to NO, the detailed description appears after the member -# documentation. - -DETAILS_AT_TOP = NO - -# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented -# member inherits the documentation from any documented member that it -# re-implements. - -INHERIT_DOCS = YES - -# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce -# a new page for each member. If set to NO, the documentation of a member will -# be part of the file/class/namespace that contains it. - -SEPARATE_MEMBER_PAGES = NO - -# The TAB_SIZE tag can be used to set the number of spaces in a tab. -# Doxygen uses this value to replace tabs by spaces in code fragments. - -TAB_SIZE = 8 - -# This tag can be used to specify a number of aliases that acts -# as commands in the documentation. An alias has the form "name=value". -# For example adding "sideeffect=\par Side Effects:\n" will allow you to -# put the command \sideeffect (or @sideeffect) in the documentation, which -# will result in a user-defined paragraph with heading "Side Effects:". -# You can put \n's in the value part of an alias to insert newlines. - -ALIASES = - -# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C -# sources only. Doxygen will then generate output that is more tailored for C. -# For instance, some of the names that are used will be different. The list -# of all members will be omitted, etc. - -OPTIMIZE_OUTPUT_FOR_C = NO - -# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java -# sources only. Doxygen will then generate output that is more tailored for Java. -# For instance, namespaces will be presented as packages, qualified scopes -# will look different, etc. - -OPTIMIZE_OUTPUT_JAVA = NO - -# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want to -# include (a tag file for) the STL sources as input, then you should -# set this tag to YES in order to let doxygen match functions declarations and -# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. -# func(std::string) {}). This also make the inheritance and collaboration -# diagrams that involve STL classes more complete and accurate. - -BUILTIN_STL_SUPPORT = YES - -# If you use Microsoft's C++/CLI language, you should set this option to YES to -# enable parsing support. - -CPP_CLI_SUPPORT = NO - -# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC -# tag is set to YES, then doxygen will reuse the documentation of the first -# member in the group (if any) for the other members of the group. By default -# all members of a group must be documented explicitly. - -DISTRIBUTE_GROUP_DOC = NO - -# Set the SUBGROUPING tag to YES (the default) to allow class member groups of -# the same type (for instance a group of public functions) to be put as a -# subgroup of that type (e.g. under the Public Functions section). Set it to -# NO to prevent subgrouping. Alternatively, this can be done per class using -# the \nosubgrouping command. - -SUBGROUPING = YES - -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- - -# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in -# documentation are documented, even if no documentation was available. -# Private class members and static file members will be hidden unless -# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES - -EXTRACT_ALL = NO - -# If the EXTRACT_PRIVATE tag is set to YES all private members of a class -# will be included in the documentation. - -EXTRACT_PRIVATE = NO - -# If the EXTRACT_STATIC tag is set to YES all static members of a file -# will be included in the documentation. - -EXTRACT_STATIC = NO - -# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) -# defined locally in source files will be included in the documentation. -# If set to NO only classes defined in header files are included. - -EXTRACT_LOCAL_CLASSES = YES - -# This flag is only useful for Objective-C code. When set to YES local -# methods, which are defined in the implementation section but not in -# the interface are included in the documentation. -# If set to NO (the default) only methods in the interface are included. - -EXTRACT_LOCAL_METHODS = NO - -# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all -# undocumented members of documented classes, files or namespaces. -# If set to NO (the default) these members will be included in the -# various overviews, but no documentation section is generated. -# This option has no effect if EXTRACT_ALL is enabled. - -HIDE_UNDOC_MEMBERS = NO - -# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all -# undocumented classes that are normally visible in the class hierarchy. -# If set to NO (the default) these classes will be included in the various -# overviews. This option has no effect if EXTRACT_ALL is enabled. - -HIDE_UNDOC_CLASSES = NO - -# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all -# friend (class|struct|union) declarations. -# If set to NO (the default) these declarations will be included in the -# documentation. - -HIDE_FRIEND_COMPOUNDS = NO - -# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any -# documentation blocks found inside the body of a function. -# If set to NO (the default) these blocks will be appended to the -# function's detailed documentation block. - -HIDE_IN_BODY_DOCS = NO - -# The INTERNAL_DOCS tag determines if documentation -# that is typed after a \internal command is included. If the tag is set -# to NO (the default) then the documentation will be excluded. -# Set it to YES to include the internal documentation. - -INTERNAL_DOCS = NO - -# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate -# file names in lower-case letters. If set to YES upper-case letters are also -# allowed. This is useful if you have classes or files whose names only differ -# in case and if your file system supports case sensitive file names. Windows -# and Mac users are advised to set this option to NO. - -CASE_SENSE_NAMES = YES - -# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen -# will show members with their full class and namespace scopes in the -# documentation. If set to YES the scope will be hidden. - -HIDE_SCOPE_NAMES = NO - -# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen -# will put a list of the files that are included by a file in the documentation -# of that file. - -SHOW_INCLUDE_FILES = YES - -# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] -# is inserted in the documentation for inline members. - -INLINE_INFO = YES - -# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen -# will sort the (detailed) documentation of file and class members -# alphabetically by member name. If set to NO the members will appear in -# declaration order. - -SORT_MEMBER_DOCS = YES - -# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the -# brief documentation of file, namespace and class members alphabetically -# by member name. If set to NO (the default) the members will appear in -# declaration order. - -SORT_BRIEF_DOCS = NO - -# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be -# sorted by fully-qualified names, including namespaces. If set to -# NO (the default), the class list will be sorted only by class name, -# not including the namespace part. -# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. -# Note: This option applies only to the class list, not to the -# alphabetical list. - -SORT_BY_SCOPE_NAME = NO - -# The GENERATE_TODOLIST tag can be used to enable (YES) or -# disable (NO) the todo list. This list is created by putting \todo -# commands in the documentation. - -GENERATE_TODOLIST = YES - -# The GENERATE_TESTLIST tag can be used to enable (YES) or -# disable (NO) the test list. This list is created by putting \test -# commands in the documentation. - -GENERATE_TESTLIST = YES - -# The GENERATE_BUGLIST tag can be used to enable (YES) or -# disable (NO) the bug list. This list is created by putting \bug -# commands in the documentation. - -GENERATE_BUGLIST = YES - -# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or -# disable (NO) the deprecated list. This list is created by putting -# \deprecated commands in the documentation. - -GENERATE_DEPRECATEDLIST= YES - -# The ENABLED_SECTIONS tag can be used to enable conditional -# documentation sections, marked by \if sectionname ... \endif. - -ENABLED_SECTIONS = - -# The MAX_INITIALIZER_LINES tag determines the maximum number of lines -# the initial value of a variable or define consists of for it to appear in -# the documentation. If the initializer consists of more lines than specified -# here it will be hidden. Use a value of 0 to hide initializers completely. -# The appearance of the initializer of individual variables and defines in the -# documentation can be controlled using \showinitializer or \hideinitializer -# command in the documentation regardless of this setting. - -MAX_INITIALIZER_LINES = 30 - -# Set the SHOW_USED_FILES tag to NO to disable the list of files generated -# at the bottom of the documentation of classes and structs. If set to YES the -# list will mention the files that were used to generate the documentation. - -SHOW_USED_FILES = YES - -# If the sources in your project are distributed over multiple directories -# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy -# in the documentation. The default is NO. - -SHOW_DIRECTORIES = NO - -# The FILE_VERSION_FILTER tag can be used to specify a program or script that -# doxygen should invoke to get the current version for each file (typically from the -# version control system). Doxygen will invoke the program by executing (via -# popen()) the command , where is the value of -# the FILE_VERSION_FILTER tag, and is the name of an input file -# provided by doxygen. Whatever the program writes to standard output -# is used as the file version. See the manual for examples. - -FILE_VERSION_FILTER = - -#--------------------------------------------------------------------------- -# configuration options related to warning and progress messages -#--------------------------------------------------------------------------- - -# The QUIET tag can be used to turn on/off the messages that are generated -# by doxygen. Possible values are YES and NO. If left blank NO is used. - -QUIET = NO - -# The WARNINGS tag can be used to turn on/off the warning messages that are -# generated by doxygen. Possible values are YES and NO. If left blank -# NO is used. - -WARNINGS = YES - -# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings -# for undocumented members. If EXTRACT_ALL is set to YES then this flag will -# automatically be disabled. - -WARN_IF_UNDOCUMENTED = YES - -# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for -# potential errors in the documentation, such as not documenting some -# parameters in a documented function, or documenting parameters that -# don't exist or using markup commands wrongly. - -WARN_IF_DOC_ERROR = YES - -# This WARN_NO_PARAMDOC option can be abled to get warnings for -# functions that are documented, but have no documentation for their parameters -# or return value. If set to NO (the default) doxygen will only warn about -# wrong or incomplete parameter documentation, but not about the absence of -# documentation. - -WARN_NO_PARAMDOC = NO - -# The WARN_FORMAT tag determines the format of the warning messages that -# doxygen can produce. The string should contain the $file, $line, and $text -# tags, which will be replaced by the file and line number from which the -# warning originated and the warning text. Optionally the format may contain -# $version, which will be replaced by the version of the file (if it could -# be obtained via FILE_VERSION_FILTER) - -WARN_FORMAT = "$file:$line: $text" - -# The WARN_LOGFILE tag can be used to specify a file to which warning -# and error messages should be written. If left blank the output is written -# to stderr. - -WARN_LOGFILE = - -#--------------------------------------------------------------------------- -# configuration options related to the input files -#--------------------------------------------------------------------------- - -# The INPUT tag can be used to specify the files and/or directories that contain -# documented source files. You may enter file names like "myfile.cpp" or -# directories like "/usr/src/myproject". Separate the files or directories -# with spaces. - -INPUT = - -# This tag can be used to specify the character encoding of the source files that -# doxygen parses. Internally doxygen uses the UTF-8 encoding, which is also the default -# input encoding. Doxygen uses libiconv (or the iconv built into libc) for the transcoding. -# See http://www.gnu.org/software/libiconv for the list of possible encodings. - -INPUT_ENCODING = UTF-8 - -# If the value of the INPUT tag contains directories, you can use the -# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp -# and *.h) to filter out the source-files in the directories. If left -# blank the following patterns are tested: -# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx -# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py - -FILE_PATTERNS = - -# The RECURSIVE tag can be used to turn specify whether or not subdirectories -# should be searched for input files as well. Possible values are YES and NO. -# If left blank NO is used. - -RECURSIVE = NO - -# The EXCLUDE tag can be used to specify files and/or directories that should -# excluded from the INPUT source files. This way you can easily exclude a -# subdirectory from a directory tree whose root is specified with the INPUT tag. - -EXCLUDE = custom.h \ - custom-macros.h - -# The EXCLUDE_SYMLINKS tag can be used select whether or not files or -# directories that are symbolic links (a Unix filesystem feature) are excluded -# from the input. - -EXCLUDE_SYMLINKS = NO - -# If the value of the INPUT tag contains directories, you can use the -# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude -# certain files from those directories. Note that the wildcards are matched -# against the file with absolute path, so to exclude all test directories -# for example use the pattern */test/* - -EXCLUDE_PATTERNS = - -# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names -# (namespaces, classes, functions, etc.) that should be excluded from the output. -# The symbol name can be a fully qualified name, a word, or if the wildcard * is used, -# a substring. Examples: ANamespace, AClass, AClass::ANamespace, ANamespace::*Test - -EXCLUDE_SYMBOLS = - -# The EXAMPLE_PATH tag can be used to specify one or more files or -# directories that contain example code fragments that are included (see -# the \include command). - -EXAMPLE_PATH = - -# If the value of the EXAMPLE_PATH tag contains directories, you can use the -# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp -# and *.h) to filter out the source-files in the directories. If left -# blank all files are included. - -EXAMPLE_PATTERNS = - -# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be -# searched for input files to be used with the \include or \dontinclude -# commands irrespective of the value of the RECURSIVE tag. -# Possible values are YES and NO. If left blank NO is used. - -EXAMPLE_RECURSIVE = NO - -# The IMAGE_PATH tag can be used to specify one or more files or -# directories that contain image that are included in the documentation (see -# the \image command). - -IMAGE_PATH = - -# The INPUT_FILTER tag can be used to specify a program that doxygen should -# invoke to filter for each input file. Doxygen will invoke the filter program -# by executing (via popen()) the command , where -# is the value of the INPUT_FILTER tag, and is the name of an -# input file. Doxygen will then use the output that the filter program writes -# to standard output. If FILTER_PATTERNS is specified, this tag will be -# ignored. - -INPUT_FILTER = - -# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern -# basis. Doxygen will compare the file name with each pattern and apply the -# filter if there is a match. The filters are a list of the form: -# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further -# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER -# is applied to all files. - -FILTER_PATTERNS = - -# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using -# INPUT_FILTER) will be used to filter the input files when producing source -# files to browse (i.e. when SOURCE_BROWSER is set to YES). - -FILTER_SOURCE_FILES = NO - -#--------------------------------------------------------------------------- -# configuration options related to source browsing -#--------------------------------------------------------------------------- - -# If the SOURCE_BROWSER tag is set to YES then a list of source files will -# be generated. Documented entities will be cross-referenced with these sources. -# Note: To get rid of all source code in the generated output, make sure also -# VERBATIM_HEADERS is set to NO. - -SOURCE_BROWSER = NO - -# Setting the INLINE_SOURCES tag to YES will include the body -# of functions and classes directly in the documentation. - -INLINE_SOURCES = NO - -# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct -# doxygen to hide any special comment blocks from generated source code -# fragments. Normal C and C++ comments will always remain visible. - -STRIP_CODE_COMMENTS = YES - -# If the REFERENCED_BY_RELATION tag is set to YES (the default) -# then for each documented function all documented -# functions referencing it will be listed. - -REFERENCED_BY_RELATION = YES - -# If the REFERENCES_RELATION tag is set to YES (the default) -# then for each documented function all documented entities -# called/used by that function will be listed. - -REFERENCES_RELATION = YES - -# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) -# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from -# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will -# link to the source code. Otherwise they will link to the documentstion. - -REFERENCES_LINK_SOURCE = YES - -# If the USE_HTAGS tag is set to YES then the references to source code -# will point to the HTML generated by the htags(1) tool instead of doxygen -# built-in source browser. The htags tool is part of GNU's global source -# tagging system (see http://www.gnu.org/software/global/global.html). You -# will need version 4.8.6 or higher. - -USE_HTAGS = NO - -# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen -# will generate a verbatim copy of the header file for each class for -# which an include is specified. Set to NO to disable this. - -VERBATIM_HEADERS = YES - -#--------------------------------------------------------------------------- -# configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- - -# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index -# of all compounds will be generated. Enable this if the project -# contains a lot of classes, structs, unions or interfaces. - -ALPHABETICAL_INDEX = NO - -# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then -# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns -# in which this list will be split (can be a number in the range [1..20]) - -COLS_IN_ALPHA_INDEX = 5 - -# In case all classes in a project start with a common prefix, all -# classes will be put under the same header in the alphabetical index. -# The IGNORE_PREFIX tag can be used to specify one or more prefixes that -# should be ignored while generating the index headers. - -IGNORE_PREFIX = - -#--------------------------------------------------------------------------- -# configuration options related to the HTML output -#--------------------------------------------------------------------------- - -# If the GENERATE_HTML tag is set to YES (the default) Doxygen will -# generate HTML output. - -GENERATE_HTML = YES - -# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `html' will be used as the default path. - -HTML_OUTPUT = html/refman - -# The HTML_FILE_EXTENSION tag can be used to specify the file extension for -# each generated HTML page (for example: .htm,.php,.asp). If it is left blank -# doxygen will generate files with .html extension. - -HTML_FILE_EXTENSION = .html - -# The HTML_HEADER tag can be used to specify a personal HTML header for -# each generated HTML page. If it is left blank doxygen will generate a -# standard header. - -HTML_HEADER = ../doc/html/refman/_header.html - -# The HTML_FOOTER tag can be used to specify a personal HTML footer for -# each generated HTML page. If it is left blank doxygen will generate a -# standard footer. - -HTML_FOOTER = - -# The HTML_STYLESHEET tag can be used to specify a user-defined cascading -# style sheet that is used by each HTML page. It can be used to -# fine-tune the look of the HTML output. If the tag is left blank doxygen -# will generate a default style sheet. Note that doxygen will try to copy -# the style sheet file to the HTML output directory, so don't put your own -# stylesheet in the HTML output directory as well, or it will be erased! - -HTML_STYLESHEET = - -# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, -# files or namespaces will be aligned in HTML using tables. If set to -# NO a bullet list will be used. - -HTML_ALIGN_MEMBERS = YES - -# If the GENERATE_HTMLHELP tag is set to YES, additional index files -# will be generated that can be used as input for tools like the -# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) -# of the generated HTML documentation. - -GENERATE_HTMLHELP = NO - -# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can -# be used to specify the file name of the resulting .chm file. You -# can add a path in front of the file if the result should not be -# written to the html output directory. - -CHM_FILE = - -# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can -# be used to specify the location (absolute path including file name) of -# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run -# the HTML help compiler on the generated index.hhp. - -HHC_LOCATION = - -# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag -# controls if a separate .chi index file is generated (YES) or that -# it should be included in the master .chm file (NO). - -GENERATE_CHI = NO - -# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag -# controls whether a binary table of contents is generated (YES) or a -# normal table of contents (NO) in the .chm file. - -BINARY_TOC = NO - -# The TOC_EXPAND flag can be set to YES to add extra items for group members -# to the contents of the HTML help documentation and to the tree view. - -TOC_EXPAND = NO - -# The DISABLE_INDEX tag can be used to turn on/off the condensed index at -# top of each HTML page. The value NO (the default) enables the index and -# the value YES disables it. - -DISABLE_INDEX = NO - -# This tag can be used to set the number of enum values (range [1..20]) -# that doxygen will group on one line in the generated HTML documentation. - -ENUM_VALUES_PER_LINE = 4 - -# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be -# generated containing a tree-like index structure (just like the one that -# is generated for HTML Help). For this to work a browser that supports -# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, -# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are -# probably better off using the HTML help feature. - -GENERATE_TREEVIEW = NO - -# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be -# used to set the initial width (in pixels) of the frame in which the tree -# is shown. - -TREEVIEW_WIDTH = 250 - -#--------------------------------------------------------------------------- -# configuration options related to the LaTeX output -#--------------------------------------------------------------------------- - -# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will -# generate Latex output. - -GENERATE_LATEX = YES - -# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `latex' will be used as the default path. - -LATEX_OUTPUT = latex - -# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be -# invoked. If left blank `latex' will be used as the default command name. - -LATEX_CMD_NAME = latex - -# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to -# generate index for LaTeX. If left blank `makeindex' will be used as the -# default command name. - -MAKEINDEX_CMD_NAME = makeindex - -# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact -# LaTeX documents. This may be useful for small projects and may help to -# save some trees in general. - -COMPACT_LATEX = NO - -# The PAPER_TYPE tag can be used to set the paper type that is used -# by the printer. Possible values are: a4, a4wide, letter, legal and -# executive. If left blank a4wide will be used. - -PAPER_TYPE = letter - -# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX -# packages that should be included in the LaTeX output. - -EXTRA_PACKAGES = - -# The LATEX_HEADER tag can be used to specify a personal LaTeX header for -# the generated latex document. The header should contain everything until -# the first chapter. If it is left blank doxygen will generate a -# standard header. Notice: only use this tag if you know what you are doing! - -LATEX_HEADER = - -# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated -# is prepared for conversion to pdf (using ps2pdf). The pdf file will -# contain links (just like the HTML output) instead of page references -# This makes the output suitable for online browsing using a pdf viewer. - -PDF_HYPERLINKS = NO - -# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of -# plain latex in the generated Makefile. Set this option to YES to get a -# higher quality PDF documentation. - -USE_PDFLATEX = YES - -# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. -# command to the generated LaTeX files. This will instruct LaTeX to keep -# running if errors occur, instead of asking the user for help. -# This option is also used when generating formulas in HTML. - -LATEX_BATCHMODE = NO - -# If LATEX_HIDE_INDICES is set to YES then doxygen will not -# include the index chapters (such as File Index, Compound Index, etc.) -# in the output. - -LATEX_HIDE_INDICES = NO - -#--------------------------------------------------------------------------- -# configuration options related to the RTF output -#--------------------------------------------------------------------------- - -# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output -# The RTF output is optimized for Word 97 and may not look very pretty with -# other RTF readers or editors. - -GENERATE_RTF = NO - -# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `rtf' will be used as the default path. - -RTF_OUTPUT = rtf - -# If the COMPACT_RTF tag is set to YES Doxygen generates more compact -# RTF documents. This may be useful for small projects and may help to -# save some trees in general. - -COMPACT_RTF = NO - -# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated -# will contain hyperlink fields. The RTF file will -# contain links (just like the HTML output) instead of page references. -# This makes the output suitable for online browsing using WORD or other -# programs which support those fields. -# Note: wordpad (write) and others do not support links. - -RTF_HYPERLINKS = NO - -# Load stylesheet definitions from file. Syntax is similar to doxygen's -# config file, i.e. a series of assignments. You only have to provide -# replacements, missing definitions are set to their default value. - -RTF_STYLESHEET_FILE = - -# Set optional variables used in the generation of an rtf document. -# Syntax is similar to doxygen's config file. - -RTF_EXTENSIONS_FILE = - -#--------------------------------------------------------------------------- -# configuration options related to the man page output -#--------------------------------------------------------------------------- - -# If the GENERATE_MAN tag is set to YES (the default) Doxygen will -# generate man pages - -GENERATE_MAN = NO - -# The MAN_OUTPUT tag is used to specify where the man pages will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `man' will be used as the default path. - -MAN_OUTPUT = man - -# The MAN_EXTENSION tag determines the extension that is added to -# the generated man pages (default is the subroutine's section .3) - -MAN_EXTENSION = .3 - -# If the MAN_LINKS tag is set to YES and Doxygen generates man output, -# then it will generate one additional man file for each entity -# documented in the real man page(s). These additional files -# only source the real man page, but without them the man command -# would be unable to find the correct page. The default is NO. - -MAN_LINKS = NO - -#--------------------------------------------------------------------------- -# configuration options related to the XML output -#--------------------------------------------------------------------------- - -# If the GENERATE_XML tag is set to YES Doxygen will -# generate an XML file that captures the structure of -# the code including all documentation. - -GENERATE_XML = NO - -# The XML_OUTPUT tag is used to specify where the XML pages will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `xml' will be used as the default path. - -XML_OUTPUT = xml - -# The XML_SCHEMA tag can be used to specify an XML schema, -# which can be used by a validating XML parser to check the -# syntax of the XML files. - -XML_SCHEMA = - -# The XML_DTD tag can be used to specify an XML DTD, -# which can be used by a validating XML parser to check the -# syntax of the XML files. - -XML_DTD = - -# If the XML_PROGRAMLISTING tag is set to YES Doxygen will -# dump the program listings (including syntax highlighting -# and cross-referencing information) to the XML output. Note that -# enabling this will significantly increase the size of the XML output. - -XML_PROGRAMLISTING = YES - -#--------------------------------------------------------------------------- -# configuration options for the AutoGen Definitions output -#--------------------------------------------------------------------------- - -# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will -# generate an AutoGen Definitions (see autogen.sf.net) file -# that captures the structure of the code including all -# documentation. Note that this feature is still experimental -# and incomplete at the moment. - -GENERATE_AUTOGEN_DEF = NO - -#--------------------------------------------------------------------------- -# configuration options related to the Perl module output -#--------------------------------------------------------------------------- - -# If the GENERATE_PERLMOD tag is set to YES Doxygen will -# generate a Perl module file that captures the structure of -# the code including all documentation. Note that this -# feature is still experimental and incomplete at the -# moment. - -GENERATE_PERLMOD = NO - -# If the PERLMOD_LATEX tag is set to YES Doxygen will generate -# the necessary Makefile rules, Perl scripts and LaTeX code to be able -# to generate PDF and DVI output from the Perl module output. - -PERLMOD_LATEX = NO - -# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be -# nicely formatted so it can be parsed by a human reader. This is useful -# if you want to understand what is going on. On the other hand, if this -# tag is set to NO the size of the Perl module output will be much smaller -# and Perl will parse it just the same. - -PERLMOD_PRETTY = YES - -# The names of the make variables in the generated doxyrules.make file -# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. -# This is useful so different doxyrules.make files included by the same -# Makefile don't overwrite each other's variables. - -PERLMOD_MAKEVAR_PREFIX = - -#--------------------------------------------------------------------------- -# Configuration options related to the preprocessor -#--------------------------------------------------------------------------- - -# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will -# evaluate all C-preprocessor directives found in the sources and include -# files. - -ENABLE_PREPROCESSING = YES - -# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro -# names in the source code. If set to NO (the default) only conditional -# compilation will be performed. Macro expansion can be done in a controlled -# way by setting EXPAND_ONLY_PREDEF to YES. - -MACRO_EXPANSION = NO - -# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES -# then the macro expansion is limited to the macros specified with the -# PREDEFINED and EXPAND_AS_DEFINED tags. - -EXPAND_ONLY_PREDEF = NO - -# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files -# in the INCLUDE_PATH (see below) will be search if a #include is found. - -SEARCH_INCLUDES = YES - -# The INCLUDE_PATH tag can be used to specify one or more directories that -# contain include files that are not input files but should be processed by -# the preprocessor. - -INCLUDE_PATH = - -# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard -# patterns (like *.h and *.hpp) to filter out the header-files in the -# directories. If left blank, the patterns specified with FILE_PATTERNS will -# be used. - -INCLUDE_FILE_PATTERNS = - -# The PREDEFINED tag can be used to specify one or more macro names that -# are defined before the preprocessor is started (similar to the -D option of -# gcc). The argument of the tag is a list of macros of the form: name -# or name=definition (no spaces). If the definition and the = are -# omitted =1 is assumed. To prevent a macro definition from being -# undefined via #undef or recursively expanded use the := operator -# instead of the = operator. - -PREDEFINED = DOXYGEN_IGNORE - -# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then -# this tag can be used to specify a list of macro names that should be expanded. -# The macro definition that is found in the sources will be used. -# Use the PREDEFINED tag if you want to use a different macro definition. - -EXPAND_AS_DEFINED = - -# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then -# doxygen's preprocessor will remove all function-like macros that are alone -# on a line, have an all uppercase name, and do not end with a semicolon. Such -# function macros are typically used for boiler-plate code, and will confuse -# the parser if not removed. - -SKIP_FUNCTION_MACROS = YES - -#--------------------------------------------------------------------------- -# Configuration::additions related to external references -#--------------------------------------------------------------------------- - -# The TAGFILES option can be used to specify one or more tagfiles. -# Optionally an initial location of the external documentation -# can be added for each tagfile. The format of a tag file without -# this location is as follows: -# TAGFILES = file1 file2 ... -# Adding location for the tag files is done as follows: -# TAGFILES = file1=loc1 "file2 = loc2" ... -# where "loc1" and "loc2" can be relative or absolute paths or -# URLs. If a location is present for each tag, the installdox tool -# does not have to be run to correct the links. -# Note that each tag file must have a unique name -# (where the name does NOT include the path) -# If a tag file is not located in the directory in which doxygen -# is run, you must also specify the path to the tagfile here. - -TAGFILES = - -# When a file name is specified after GENERATE_TAGFILE, doxygen will create -# a tag file that is based on the input files it reads. - -GENERATE_TAGFILE = - -# If the ALLEXTERNALS tag is set to YES all external classes will be listed -# in the class index. If set to NO only the inherited external classes -# will be listed. - -ALLEXTERNALS = NO - -# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed -# in the modules index. If set to NO, only the current project's groups will -# be listed. - -EXTERNAL_GROUPS = YES - -# The PERL_PATH should be the absolute path and name of the perl script -# interpreter (i.e. the result of `which perl'). - -PERL_PATH = /usr/bin/perl - -#--------------------------------------------------------------------------- -# Configuration options related to the dot tool -#--------------------------------------------------------------------------- - -# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will -# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base -# or super classes. Setting the tag to NO turns the diagrams off. Note that -# this option is superseded by the HAVE_DOT option below. This is only a -# fallback. It is recommended to install and use dot, since it yields more -# powerful graphs. - -CLASS_DIAGRAMS = YES - -# You can define message sequence charts within doxygen comments using the \msc -# command. Doxygen will then run the mscgen tool (see http://www.mcternan.me.uk/mscgen/) to -# produce the chart and insert it in the documentation. The MSCGEN_PATH tag allows you to -# specify the directory where the mscgen tool resides. If left empty the tool is assumed to -# be found in the default search path. - -MSCGEN_PATH = - -# If set to YES, the inheritance and collaboration graphs will hide -# inheritance and usage relations if the target is undocumented -# or is not a class. - -HIDE_UNDOC_RELATIONS = YES - -# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is -# available from the path. This tool is part of Graphviz, a graph visualization -# toolkit from AT&T and Lucent Bell Labs. The other options in this section -# have no effect if this option is set to NO (the default) - -HAVE_DOT = YES - -# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for each documented class showing the direct and -# indirect inheritance relations. Setting this tag to YES will force the -# the CLASS_DIAGRAMS tag to NO. - -CLASS_GRAPH = YES - -# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for each documented class showing the direct and -# indirect implementation dependencies (inheritance, containment, and -# class references variables) of the class with other documented classes. - -COLLABORATION_GRAPH = YES - -# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for groups, showing the direct groups dependencies - -GROUP_GRAPHS = YES - -# If the UML_LOOK tag is set to YES doxygen will generate inheritance and -# collaboration diagrams in a style similar to the OMG's Unified Modeling -# Language. - -UML_LOOK = NO - -# If set to YES, the inheritance and collaboration graphs will show the -# relations between templates and their instances. - -TEMPLATE_RELATIONS = YES - -# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT -# tags are set to YES then doxygen will generate a graph for each documented -# file showing the direct and indirect include dependencies of the file with -# other documented files. - -INCLUDE_GRAPH = YES - -# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and -# HAVE_DOT tags are set to YES then doxygen will generate a graph for each -# documented header file showing the documented files that directly or -# indirectly include this file. - -INCLUDED_BY_GRAPH = YES - -# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will -# generate a call dependency graph for every global function or class method. -# Note that enabling this option will significantly increase the time of a run. -# So in most cases it will be better to enable call graphs for selected -# functions only using the \callgraph command. - -CALL_GRAPH = NO - -# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then doxygen will -# generate a caller dependency graph for every global function or class method. -# Note that enabling this option will significantly increase the time of a run. -# So in most cases it will be better to enable caller graphs for selected -# functions only using the \callergraph command. - -CALLER_GRAPH = NO - -# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen -# will graphical hierarchy of all classes instead of a textual one. - -GRAPHICAL_HIERARCHY = YES - -# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES -# then doxygen will show the dependencies a directory has on other directories -# in a graphical way. The dependency relations are determined by the #include -# relations between the files in the directories. - -DIRECTORY_GRAPH = YES - -# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images -# generated by dot. Possible values are png, jpg, or gif -# If left blank png will be used. - -DOT_IMAGE_FORMAT = png - -# The tag DOT_PATH can be used to specify the path where the dot tool can be -# found. If left blank, it is assumed the dot tool can be found in the path. - -DOT_PATH = - -# The DOTFILE_DIRS tag can be used to specify one or more directories that -# contain dot files that are included in the documentation (see the -# \dotfile command). - -DOTFILE_DIRS = - -# The MAX_DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of -# nodes that will be shown in the graph. If the number of nodes in a graph -# becomes larger than this value, doxygen will truncate the graph, which is -# visualized by representing a node as a red box. Note that doxygen will always -# show the root nodes and its direct children regardless of this setting. - -DOT_GRAPH_MAX_NODES = 50 - -# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent -# background. This is disabled by default, which results in a white background. -# Warning: Depending on the platform used, enabling this option may lead to -# badly anti-aliased labels on the edges of a graph (i.e. they become hard to -# read). - -DOT_TRANSPARENT = NO - -# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output -# files in one run (i.e. multiple -o and -T options on the command line). This -# makes dot run faster, but since only newer versions of dot (>1.8.10) -# support this, this feature is disabled by default. - -DOT_MULTI_TARGETS = NO - -# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will -# generate a legend page explaining the meaning of the various boxes and -# arrows in the dot generated graphs. - -GENERATE_LEGEND = YES - -# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will -# remove the intermediate dot files that are used to generate -# the various graphs. - -DOT_CLEANUP = YES - -#--------------------------------------------------------------------------- -# Configuration::additions related to the search engine -#--------------------------------------------------------------------------- - -# The SEARCHENGINE tag specifies whether or not a search engine should be -# used. If set to NO the values of all tags below this one will be ignored. - -SEARCHENGINE = NO diff --git a/code/meosdb/mysql++/autoflag.h b/code/meosdb/mysql++/autoflag.h deleted file mode 100644 index 77ef8a6..0000000 --- a/code/meosdb/mysql++/autoflag.h +++ /dev/null @@ -1,57 +0,0 @@ -/// \file autoflag.h -/// \brief Defines a template for setting a flag within a given variable -/// scope, and resetting it when exiting that scope. - -/*********************************************************************** - Copyright (c) 2007 by Educational Technology Resources, Inc. Others - may also hold copyrights on code in this file. See the CREDITS file in - the top directory of the distribution for details. - - This file is part of MySQL++. - - MySQL++ is free software; you can redistribute it and/or modify it - under the terms of the GNU Lesser General Public License as published - by the Free Software Foundation; either version 2.1 of the License, or - (at your option) any later version. - - MySQL++ is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with MySQL++; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 - USA -***********************************************************************/ - -#if !defined(MYSQLPP_AUTOFLAG_H) -#define MYSQLPP_AUTOFLAG_H - -/// \brief A template for setting a flag on a variable as long as the -/// object that set it is in scope. Flag resets when object goes -/// out of scope. Works on anything that looks like bool. - -template -class AutoFlag -{ -public: - /// \brief Constructor: sets ref to true. - AutoFlag(T& ref) : - referent_(ref) - { - referent_ = true; - } - - /// \brief Destructor: sets referent passed to ctor to false. - ~AutoFlag() - { - referent_ = false; - } - -private: - T& referent_; -}; - -#endif // !defined(MYSQLPP_AUTOFLAG_H) - diff --git a/code/meosdb/mysql++/coldata.cpp b/code/meosdb/mysql++/coldata.cpp deleted file mode 100644 index 9f9f3eb..0000000 --- a/code/meosdb/mysql++/coldata.cpp +++ /dev/null @@ -1,37 +0,0 @@ -/*********************************************************************** - coldata.cpp - Implements the ColData_Tmpl template. - - Copyright (c) 1998 by Kevin Atkinson, (c) 1999, 2000 and 2001 by - MySQL AB, and (c) 2004, 2005 by Educational Technology Resources, Inc. - Others may also hold copyrights on code in this file. See the CREDITS - file in the top directory of the distribution for details. - - This file is part of MySQL++. - - MySQL++ is free software; you can redistribute it and/or modify it - under the terms of the GNU Lesser General Public License as published - by the Free Software Foundation; either version 2.1 of the License, or - (at your option) any later version. - - MySQL++ is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with MySQL++; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 - USA -***********************************************************************/ - -#include "coldata.h" -#include "const_string.h" - -#include - -namespace mysqlpp { - -template class ColData_Tmpl; -template class ColData_Tmpl; - -} // end namespace mysqlpp diff --git a/code/meosdb/mysql++/coldata.h b/code/meosdb/mysql++/coldata.h deleted file mode 100644 index 1504f4c..0000000 --- a/code/meosdb/mysql++/coldata.h +++ /dev/null @@ -1,386 +0,0 @@ -/// \file coldata.h -/// \brief Declares classes for converting string data to any of -/// the basic C types. -/// -/// Roughly speaking, this defines classes that are the inverse of -/// mysqlpp::SQLString. - -/*********************************************************************** - Copyright (c) 1998 by Kevin Atkinson, (c) 1999, 2000 and 2001 by - MySQL AB, and (c) 2004-2007 by Educational Technology Resources, Inc. - Others may also hold copyrights on code in this file. See the CREDITS - file in the top directory of the distribution for details. - - This file is part of MySQL++. - - MySQL++ is free software; you can redistribute it and/or modify it - under the terms of the GNU Lesser General Public License as published - by the Free Software Foundation; either version 2.1 of the License, or - (at your option) any later version. - - MySQL++ is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with MySQL++; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 - USA -***********************************************************************/ - -#ifndef MYSQLPP_COLDATA_H -#define MYSQLPP_COLDATA_H - -#include "common.h" - -#include "const_string.h" -#include "convert.h" -#include "exceptions.h" -#include "null.h" -#include "string_util.h" -#include "type_info.h" - -#include -#include -#include - -#include - -namespace mysqlpp { - -/// \brief Template for string data that can convert itself to any -/// standard C data type. -/// -/// Do not use this class directly. Use the typedef ColData or -/// MutableColData instead. ColData is a \c ColData_Tmpl and MutableColData is a -/// \c ColData_Tmpl. -/// -/// The ColData types add to the C++ string type the ability to -/// automatically convert the string data to any of the basic C types. -/// This is important with SQL, because all data coming from the -/// database is in string form. MySQL++ uses this class internally -/// to hold the data it receives from the server, so you can use it -/// naturally, because it does the conversions implicitly: -/// -/// \code ColData("12.86") + 2.0 \endcode -/// -/// That works fine, but be careful. If you had said this instead: -/// -/// \code ColData("12.86") + 2 \endcode -/// -/// the result would be 14 because 2 is an integer, and C++'s type -/// conversion rules put the ColData object in an integer context. -/// -/// If these automatic conversions scare you, define the macro -/// NO_BINARY_OPERS to disable this behavior. -/// -/// This class also has some basic information about the type of data -/// stored in it, to allow it to do the conversions more intelligently -/// than a trivial implementation would allow. - -template -class MYSQLPP_EXPORT ColData_Tmpl : public Str -{ -public: - /// \brief Default constructor - /// - /// Null flag is set to false, type data is not set, and string - /// data is left empty. - /// - /// It's probably a bad idea to use this ctor, becuase there's no - /// way to set the type data once the object's constructed. - ColData_Tmpl() : - null_(false) - { - } - - /// \brief Copy ctor - /// - /// \param cd the other ColData_Tmpl object - ColData_Tmpl(const ColData_Tmpl& cd) : - Str(cd.data(), cd.length()), - type_(cd.type_), - null_(cd.null_) - { - } - - /// \brief Constructor allowing you to set the null flag and the - /// type data. - /// - /// \param n if true, data is a SQL null - /// \param t MySQL type information for data being stored - explicit ColData_Tmpl(bool n, - mysql_type_info t = mysql_type_info::string_type) : - type_(t), - null_(n) - { - } - - /// \brief C++ string version of full ctor - /// - /// \param str the string this object represents - /// \param t MySQL type information for data within str - /// \param n if true, str is a SQL null - explicit ColData_Tmpl(const std::string& str, - mysql_type_info t = mysql_type_info::string_type, - bool n = false) : - Str(str), - type_(t), - null_(n) - { - } - - /// \brief Null-terminated C string version of full ctor - /// - /// \param str the string this object represents - /// \param t MySQL type information for data within str - /// \param n if true, str is a SQL null - explicit ColData_Tmpl(const char* str, - mysql_type_info t = mysql_type_info::string_type, - bool n = false) : - Str(str), - type_(t), - null_(n) - { - } - - /// \brief Full constructor. - /// - /// \param str the string this object represents - /// \param len the length of the string; embedded nulls are legal - /// \param t MySQL type information for data within str - /// \param n if true, str is a SQL null - explicit ColData_Tmpl(const char* str, typename Str::size_type len, - mysql_type_info t = mysql_type_info::string_type, - bool n = false) : - Str(str, len), - type_(t), - null_(n) - { - } - - /// \brief Get this object's current MySQL type. - mysql_type_info type() const { return type_; } - - /// \brief Returns true if data of this type should be quoted, false - /// otherwise. - bool quote_q() const { return type_.quote_q(); } - - /// \brief Returns true if data of this type should be escaped, false - /// otherwise. - bool escape_q() const { return type_.escape_q(); } - - /// \brief Template for converting data from one type to another. - template Type conv(Type dummy) const; - - /// \brief Set a flag indicating that this object is a SQL null. - void it_is_null() { null_ = true; } - - /// \brief Returns true if this object is a SQL null. - inline const bool is_null() const { return null_; } - - /// \brief Returns this object's data in C++ string form. - /// - /// This method is inefficient, and not recommended. It makes a - /// duplicate copy of the string that lives as long as the - /// \c ColData object itself. - /// - /// If you are using the \c MutableColData typedef for this - /// template, you can avoid the duplicate copy entirely. You can - /// pass a \c MutableColData object to anything expecting a - /// \c std::string and get the right result. (This didn't work - /// reliably prior to v2.3.) - /// - /// This method is arguably useful with plain \c ColData objects, - /// but there are more efficient alternatives. If you know your - /// data is a null-terminated C string, just cast this object to - /// a \c const \c char* or call the \c data() method. This gives - /// you a pointer to our internal buffer, so the copy isn't needed. - /// If the \c ColData can contain embedded null characters, you do - /// need to make a copy, but it's better to make your own copy of - /// the string, instead of calling get_string(), so you can better - /// control its lifetime: - /// - /// \code - /// ColData cd = ...; - /// std::string s(cd.data(), cd.length()); - /// \endcode - inline const std::string& get_string() const - { - temp_buf_.assign(Str::data(), Str::length()); - return temp_buf_; - } - - /// \brief Returns a const char pointer to the object's raw data - operator cchar*() const { return Str::data(); } - - /// \brief Converts this object's string data to a signed char - operator signed char() const - { return conv(static_cast(0)); } - - /// \brief Converts this object's string data to an unsigned char - operator unsigned char() const - { return conv(static_cast(0)); } - - /// \brief Converts this object's string data to an int - operator int() const - { return conv(static_cast(0)); } - - /// \brief Converts this object's string data to an unsigned int - operator unsigned int() const - { return conv(static_cast(0)); } - - /// \brief Converts this object's string data to a short int - operator short int() const - { return conv(static_cast(0)); } - - /// \brief Converts this object's string data to an unsigned short - /// int - operator unsigned short int() const - { return conv(static_cast(0)); } - - /// \brief Converts this object's string data to a long int - operator long int() const - { return conv(static_cast(0)); } - - /// \brief Converts this object's string data to an unsigned long - /// int - operator unsigned long int() const - { return conv(static_cast(0)); } - -#if !defined(NO_LONG_LONGS) - /// \brief Converts this object's string data to the platform- - /// specific 'longlong' type, usually a 64-bit integer. - operator longlong() const - { return conv(static_cast(0)); } - - /// \brief Converts this object's string data to the platform- - /// specific 'ulonglong' type, usually a 64-bit unsigned integer. - operator ulonglong() const - { return conv(static_cast(0)); } -#endif - - /// \brief Converts this object's string data to a float - operator float() const - { return conv(static_cast(0)); } - - /// \brief Converts this object's string data to a double - operator double() const - { return conv(static_cast(0)); } - - /// \brief Converts this object's string data to a bool - operator bool() const { return conv(0); } - - template operator Null() const; - -private: - mysql_type_info type_; - mutable std::string temp_buf_; - bool null_; -}; - -/// \typedef ColData_Tmpl ColData -/// \brief The type that is returned by constant rows -typedef ColData_Tmpl ColData; - -/// \typedef ColData_Tmpl MutableColData -/// \brief The type that is returned by mutable rows -typedef ColData_Tmpl MutableColData; - - -#if !defined(NO_BINARY_OPERS) && !defined(DOXYGEN_IGNORE) -// Ignore this section is NO_BINARY_OPERS is defined, or if this section -// is being parsed by Doxygen. In the latter case, it's ignored because -// Doxygen doesn't understand it correctly, and we can't be bothered to -// explain it to Doxygen. - -#define oprsw(opr, other, conv) \ - template \ - inline other operator opr (ColData_Tmpl x, other y) \ - {return static_cast(x) opr y;} \ - template \ - inline other operator opr (other x, ColData_Tmpl y) \ - {return x opr static_cast(y);} - -#define operator_binary(other, conv) \ - oprsw(+, other, conv) \ - oprsw(-, other, conv) \ - oprsw(*, other, conv) \ - oprsw(/, other, conv) - -#define operator_binary_int(other, conv) \ - operator_binary(other, conv) \ - oprsw(%, other, conv) \ - oprsw(&, other, conv) \ - oprsw(^, other, conv) \ - oprsw(|, other, conv) \ - oprsw(<<, other, conv) \ - oprsw(>>, other, conv) - -operator_binary(float, double) -operator_binary(double, double) - -operator_binary_int(char, long int) -operator_binary_int(int, long int) -operator_binary_int(short int, long int) -operator_binary_int(long int, long int) - -operator_binary_int(unsigned char, unsigned long int) -operator_binary_int(unsigned int, unsigned long int) -operator_binary_int(unsigned short int, unsigned long int) -operator_binary_int(unsigned long int, unsigned long int) - -#if !defined(NO_LONG_LONGS) -operator_binary_int(longlong, longlong) -operator_binary_int(ulonglong, ulonglong) -#endif -#endif // NO_BINARY_OPERS - -/// \brief Converts this object to a SQL null -/// -/// Returns a copy of the global null object if the string data held by -/// the object is exactly equal to "NULL". Else, it constructs an empty -/// object of type T and tries to convert it to Null. -template template -ColData_Tmpl::operator Null() const -{ - if ((Str::size() == 4) && - (*this)[0] == 'N' && - (*this)[1] == 'U' && - (*this)[2] == 'L' && - (*this)[3] == 'L') { - return Null(null); - } - else { - return Null(conv(T())); - } -} - -template template -Type ColData_Tmpl::conv(Type /* dummy */) const -{ - std::string strbuf(Str::data(), Str::length()); - strip_all_blanks(strbuf); - std::string::size_type len = strbuf.size(); - const char* str = strbuf.c_str(); - const char* end = str; - Type num = mysql_convert(str, end); - - if (*end == '.') { - ++end; - for (; *end == '0'; ++end) ; - } - - if (*end != '\0' && end != 0) { - throw BadConversion(typeid(Type).name(), Str::c_str(), - end - str, len); - } - - return num; -} - -} // end namespace mysqlpp - -#endif diff --git a/code/meosdb/mysql++/common.h b/code/meosdb/mysql++/common.h deleted file mode 100644 index 065fa57..0000000 --- a/code/meosdb/mysql++/common.h +++ /dev/null @@ -1,161 +0,0 @@ -/// \file common.h -/// \brief This file includes top-level definitions for use both -/// internal to the library, and outside it. Contrast mysql++.h -/// -/// This file mostly takes care of platform differences. - -/*********************************************************************** - Copyright (c) 1998 by Kevin Atkinson, (c) 1999, 2000 and 2001 by - MySQL AB, and (c) 2004-2007 by Educational Technology Resources, Inc. - Others may also hold copyrights on code in this file. See the CREDITS - file in the top directory of the distribution for details. - - This file is part of MySQL++. - - MySQL++ is free software; you can redistribute it and/or modify it - under the terms of the GNU Lesser General Public License as published - by the Free Software Foundation; either version 2.1 of the License, or - (at your option) any later version. - - MySQL++ is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with MySQL++; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 - USA -***********************************************************************/ - -#if !defined(MYSQLPP_COMMON_H) -#define MYSQLPP_COMMON_H - -#if !defined(DOXYGEN_IGNORE) -// Doxygen will not generate documentation for the following stuff. - -// Work out major platform-specific stuff here. -#if defined(__WIN32__) || defined(_WIN32) -# define MYSQLPP_PLATFORM_WINDOWS - - // Windows compiler support. Tested with Microsoft Visual C++, - // Borland C++ Builder, and MinGW GCC. -# include - - // Stuff for Visual C++ only -# if defined(_MSC_VER) - // Disable whining about using 'this' as a member initializer on VC++. -# pragma warning(disable: 4355) - // Disable whining about implicit conversions to bool -# pragma warning(disable: 4800) - // Disable nagging about new "secure" functions like strncpy_s() -# pragma warning(disable: 4996) - // Disable complaints about STL data members: VC++ believes - // these need to be __declspec(dllexport) for some reason. -//# pragma warning(disable: 4251) - // Call _snprintf() for VC++ version of snprintf() function -//# define snprintf _snprintf -# endif - - // Define DLL import/export tags for Windows compilers, where we build - // the library into a DLL, for LGPL license compatibility reasons. - // (This is based on a similar mechanism in wxWindows.) - - #ifdef MYSQLPP_MAKING_DLL - // When making the DLL, export tagged symbols, so they appear - // in the import library. - #define MYSQLPP_EXPORT __declspec(dllexport) - #elif !defined(MYSQLPP_NO_DLL) - // We must be _using_ the DLL, so import symbols instead. - #define MYSQLPP_EXPORT __declspec(dllimport) - #else - // Not making a DLL at all, so no-op these declspecs - #define MYSQLPP_EXPORT - #endif -#else - // If not Windows, we assume some sort of Unixy build environment, - // where autotools is used. (This includes Cygwin!) #include the - // config.h file only if this file was included from a non-header - // file, because headers must not be dependent on config.h. -# if defined(MYSQLPP_NOT_HEADER) -# include "config.h" -# endif - - // Make DLL stuff a no-op on this platform. - #define MYSQLPP_EXPORT -#endif - -#if defined(MYSQLPP_MYSQL_HEADERS_BURIED) -# include -#else -# include -#endif - -namespace mysqlpp { - -/// \brief Alias for 'true', to make code requesting exceptions more -/// readable. -const bool use_exceptions = true; - -/// \brief Used to disambiguate overloads of equal_list() in SSQLSes. -enum sql_cmp_type { sql_use_compare }; - -#if !defined(DOXYGEN_IGNORE) -// Figure out how to get large integer support on this system. Suppress -// refman documentation for these typedefs, as they're system-dependent. -#if defined(NO_LONG_LONGS) -// Alias "longlong" and "ulonglong" to the regular "long" counterparts -typedef unsigned long ulonglong; -typedef long longlong; -#elif defined(_MSC_VER) -// It's VC++, so we'll use Microsoft's 64-bit integer types -typedef unsigned __int64 ulonglong; -typedef __int64 longlong; -#else -// No better idea, so assume the C99 convention. If your compiler -// doesn't support this, please provide a patch to extend this ifdef, or -// define NO_LONG_LONGS. -typedef unsigned long long ulonglong; -typedef long long longlong; -#endif -#endif // !defined(DOXYGEN_IGNORE) - -/// \brief Contraction for 'const char*' -typedef const char cchar; - -#if !defined(MYSQLPP_NO_UNSIGNED_INT_TYPES) -/// \brief Contraction for 'unsigned int' -typedef unsigned int uint; -/// \brief Contraction for 'unsigned long' -typedef unsigned long ulong; -#endif - -} // end namespace mysqlpp - -// The MySQL headers define these macros, which is completely wrong in a -// C++ project. Undo the damage. -#undef min -#undef max - -#endif // !defined(DOXYGEN_IGNORE) - - -// Now that we've defined all the stuff above, we can pull in the full -// MySQL header. Basically, the above largely replaces MySQL's my_global.h -// while actually working with C++. This is why we disobey the MySQL -// developer docs, which recommend including my_global.h before mysql.h. -#if defined(MYSQLPP_MYSQL_HEADERS_BURIED) -# include -#else -# include -#endif - - -namespace mysqlpp { - -/// \brief Alias for MYSQL_FIELD -typedef MYSQL_FIELD Field; - -} // end namespace mysqlpp - -#endif // !defined(MYSQLPP_COMMON_H) diff --git a/code/meosdb/mysql++/connection.cpp b/code/meosdb/mysql++/connection.cpp deleted file mode 100644 index e575d2d..0000000 --- a/code/meosdb/mysql++/connection.cpp +++ /dev/null @@ -1,725 +0,0 @@ -/*********************************************************************** - connection.cpp - Implements the Connection class. - - Copyright (c) 1998 by Kevin Atkinson, (c) 1999, 2000 and 2001 by - MySQL AB, and (c) 2004-2006 by Educational Technology Resources, Inc. - Others may also hold copyrights on code in this file. See the CREDITS - file in the top directory of the distribution for details. - - This file is part of MySQL++. - - MySQL++ is free software; you can redistribute it and/or modify it - under the terms of the GNU Lesser General Public License as published - by the Free Software Foundation; either version 2.1 of the License, or - (at your option) any later version. - - MySQL++ is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with MySQL++; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 - USA -***********************************************************************/ - -#define MYSQLPP_NOT_HEADER -#include "common.h" - -#include "connection.h" - -#include "query.h" -#include "result.h" - -// An argument was added to mysql_shutdown() in MySQL 4.1.3 and 5.0.1. -#if ((MYSQL_VERSION_ID >= 40103) && (MYSQL_VERSION_ID <= 49999)) || (MYSQL_VERSION_ID >= 50001) -# define SHUTDOWN_ARG ,SHUTDOWN_DEFAULT -#else -# define SHUTDOWN_ARG -#endif - -#define NELEMS(a) (sizeof(a) / sizeof(a[0])) - -using namespace std; - -namespace mysqlpp { - -/// \brief Sets a variable to a given value temporarily. -/// -/// Saves existing value, sets new value, and restores old value when -/// the object is destroyed. Used to set a flag in an exception-safe -/// manner. -template -class scoped_var_set -{ -public: - /// \brief Create object, saving old value, setting new value - scoped_var_set(T& var, T new_value) : - var_(var) - { - old_value_ = var_; - var_ = new_value; - } - - /// \brief Destroy object, restoring old value - ~scoped_var_set() - { - var_ = old_value_; - } - -private: - T& var_; - T old_value_; -}; - - -// Initialize table of legal option argument types. -Connection::OptionArgType -Connection::legal_opt_arg_types_[Connection::opt_COUNT] = { - Connection::opt_type_integer, // opt_connect_timeout - Connection::opt_type_none, // opt_compress - Connection::opt_type_none, // opt_named_pipe - Connection::opt_type_string, // opt_init_command - Connection::opt_type_string, // opt_read_default_file - Connection::opt_type_string, // opt_read_default_group - Connection::opt_type_string, // opt_set_charset_dir - Connection::opt_type_string, // opt_set_charset_name - Connection::opt_type_integer, // opt_local_infile - Connection::opt_type_integer, // opt_protocol - Connection::opt_type_string, // opt_shared_memory_base_name - Connection::opt_type_integer, // opt_read_timeout - Connection::opt_type_integer, // opt_write_timeout - Connection::opt_type_none, // opt_use_result - Connection::opt_type_none, // opt_use_remote_connection - Connection::opt_type_none, // opt_use_embedded_connection - Connection::opt_type_none, // opt_guess_connection - Connection::opt_type_string, // opt_set_client_ip - Connection::opt_type_boolean, // opt_secure_auth - Connection::opt_type_boolean, // opt_multi_statements - Connection::opt_type_boolean, // opt_report_data_truncation - Connection::opt_type_boolean, // opt_reconnect -}; - - -Connection::Connection(bool te) : -OptionalExceptions(te), -Lockable(false), -is_connected_(false), -connecting_(false), -success_(false) -{ - mysql_init(&mysql_); -} - - -Connection::Connection(const char* db, const char* host, - const char* user, const char* passwd, uint port, - my_bool compress, unsigned int connect_timeout, - cchar* socket_name, unsigned int client_flag) : -OptionalExceptions(), -Lockable(false), -connecting_(false) -{ - mysql_init(&mysql_); - if (connect(db, host, user, passwd, port, compress, - connect_timeout, socket_name, client_flag)) { - unlock(); - success_ = is_connected_ = true; - } - else { - unlock(); - success_ = is_connected_ = false; - if (throw_exceptions()) { - throw ConnectionFailed(error()); - } - } -} - - -Connection::Connection(const Connection& other) : -OptionalExceptions(), -Lockable(false), -is_connected_(false) -{ - copy(other); -} - - -Connection::~Connection() -{ - disconnect(); -} - - -Connection& -Connection::operator=(const Connection& rhs) -{ - copy(rhs); - return *this; -} - - -bool -Connection::connect(cchar* db, cchar* host, cchar* user, - cchar* passwd, uint port, my_bool compress, - unsigned int connect_timeout, cchar* socket_name, - unsigned int client_flag) -{ - lock(); - - // Drop previous connection, if any - if (connected()) { - disconnect(); - } - - // Set defaults for certain connection options. User can override - // these by calling set_option() before connect(). - set_option_default(opt_read_default_file, "my"); - set_option_default(opt_connect_timeout, connect_timeout); - if (compress) { - set_option_default(opt_compress); - } - -#if MYSQL_VERSION_ID >= 40101 - // Check to see if user turned on multi-statements before - // establishing the connection. This one we handle specially, by - // setting a flag during connection establishment. - if (option_set(opt_multi_statements)) { - client_flag |= CLIENT_MULTI_STATEMENTS; - } -#endif - - // Establish connection - scoped_var_set sb(connecting_, true); - if (mysql_real_connect(&mysql_, host, user, passwd, db, port, - socket_name, client_flag)) { - unlock(); - success_ = is_connected_ = true; - - if (db && db[0]) { - // Also attach to given database - success_ = select_db(db); - } - } - else { - unlock(); - success_ = is_connected_ = false; - if (throw_exceptions()) { - throw ConnectionFailed(error()); - } - } - - return success_; -} - - -bool -Connection::connect(const MYSQL& mysql) -{ - return connect(mysql.db, mysql.host, mysql.user, mysql.passwd, - mysql.port, mysql.options.compress, - mysql.options.connect_timeout, mysql.unix_socket, - mysql.client_flag); -} - - -void -Connection::copy(const Connection& other) -{ - if (connected()) { - disconnect(); - } - - mysql_init(&mysql_); - set_exceptions(other.throw_exceptions()); - - if (other.connected()) { - // Try to reconnect to server using same parameters - connect(other.mysql_); - } - else { - is_connected_ = false; - connecting_ = false; - success_ = false; - } -} - - -void -Connection::disconnect() -{ - mysql_close(&mysql_); - is_connected_ = false; -} - - -bool -Connection::create_db(const std::string& db) -{ - Query q(this, throw_exceptions()); - return q.exec("CREATE DATABASE " + db); -} - - -bool -Connection::drop_db(const std::string& db) -{ - Query q(this, throw_exceptions()); - return q.exec("DROP DATABASE " + db); -} - - -bool -Connection::select_db(const char *db) -{ - if (connected()) { - bool suc = !(mysql_select_db(&mysql_, db)); - if (throw_exceptions() && !suc) { - throw DBSelectionFailed(error()); - } - else { - return suc; - } - } - else { - if (throw_exceptions()) { - throw DBSelectionFailed("MySQL++ connection not established"); - } - else { - return false; - } - } -} - - -bool -Connection::reload() -{ - if (connected()) { - bool suc = !mysql_reload(&mysql_); - if (throw_exceptions() && !suc) { - // Reloading grant tables through this API isn't precisely a - // query, but it's acceptable to signal errors with BadQuery - // because the new mechanism is the FLUSH PRIVILEGES query. - // A program won't have to change when doing it the new way. - throw BadQuery(error()); - } - else { - return suc; - } - } - else { - if (throw_exceptions()) { - throw BadQuery("MySQL++ connection not established"); - } - else { - return false; - } - } -} - - -bool -Connection::shutdown() -{ - if (connected()) { - bool suc = !(mysql_shutdown(&mysql_ SHUTDOWN_ARG)); - if (throw_exceptions() && !suc) { - throw ConnectionFailed(error()); - } - else { - return suc; - } - } - else { - if (throw_exceptions()) { - throw ConnectionFailed("MySQL++ connection not established"); - } - else { - return false; - } - } -} - - -string -Connection::info() -{ - const char* i = mysql_info(&mysql_); - if (!i) { - return string(); - } - else { - return string(i); - } -} - - -Query -Connection::query() -{ - return Query(this, throw_exceptions()); -} - - -bool -Connection::set_option(Option option) -{ - if (connected()) { - // None of the argument-less options can be set once the - // connection is up. - return bad_option(option, opt_err_conn); - } - - bool success = false; - switch (option) { - case opt_compress: - success = set_option_impl(MYSQL_OPT_COMPRESS); - break; - - case opt_named_pipe: - success = set_option_impl(MYSQL_OPT_NAMED_PIPE); - break; - -#if MYSQL_VERSION_ID >= 40101 - case opt_use_result: - success = set_option_impl(MYSQL_OPT_USE_RESULT); - break; - - case opt_use_remote_connection: - success = set_option_impl(MYSQL_OPT_USE_REMOTE_CONNECTION); - break; - - case opt_use_embedded_connection: - success = set_option_impl(MYSQL_OPT_USE_EMBEDDED_CONNECTION); - break; - - case opt_guess_connection: - success = set_option_impl(MYSQL_OPT_GUESS_CONNECTION); - break; -#endif - default: - return bad_option(option, opt_err_type); - } - - if (success) { - applied_options_.push_back(OptionInfo(option)); - return true; - } - else { - return bad_option(option, opt_err_value); - } -} - - -bool -Connection::set_option(Option option, const char* arg) -{ - if (connected()) { - // None of the options taking a char* argument can be set once - // the connection is up. - return bad_option(option, opt_err_conn); - } - - bool success = false; - switch (option) { - case opt_init_command: - success = set_option_impl(MYSQL_INIT_COMMAND, arg); - break; - - case opt_read_default_file: - success = set_option_impl(MYSQL_READ_DEFAULT_FILE, arg); - break; - - case opt_read_default_group: - success = set_option_impl(MYSQL_READ_DEFAULT_GROUP, arg); - break; - - case opt_set_charset_dir: - success = set_option_impl(MYSQL_SET_CHARSET_DIR, arg); - break; - - case opt_set_charset_name: - success = set_option_impl(MYSQL_SET_CHARSET_NAME, arg); - break; - -#if MYSQL_VERSION_ID >= 40100 - case opt_shared_memory_base_name: - success = set_option_impl(MYSQL_SHARED_MEMORY_BASE_NAME, arg); - break; -#endif -#if MYSQL_VERSION_ID >= 40101 - case opt_set_client_ip: - success = set_option_impl(MYSQL_SET_CLIENT_IP, arg); - break; -#endif - default: - return bad_option(option, opt_err_type); - } - - if (success) { - applied_options_.push_back(OptionInfo(option, arg)); - return true; - } - else { - return bad_option(option, opt_err_value); - } -} - - -bool -Connection::set_option(Option option, unsigned int arg) -{ - if (connected()) { - // None of the options taking an int argument can be set once - // the connection is up. - return bad_option(option, opt_err_conn); - } - - bool success = false; - switch (option) { - case opt_connect_timeout: - success = set_option_impl(MYSQL_OPT_CONNECT_TIMEOUT, &arg); - break; - - case opt_local_infile: - success = set_option_impl(MYSQL_OPT_LOCAL_INFILE, &arg); - break; - -#if MYSQL_VERSION_ID >= 40100 - case opt_protocol: - success = set_option_impl(MYSQL_OPT_PROTOCOL, &arg); - break; -#endif -#if MYSQL_VERSION_ID >= 40101 - case opt_read_timeout: - success = set_option_impl(MYSQL_OPT_READ_TIMEOUT, &arg); - break; - - case opt_write_timeout: - success = set_option_impl(MYSQL_OPT_WRITE_TIMEOUT, &arg); - break; -#endif - default: - return bad_option(option, opt_err_type); - } - - if (success) { - applied_options_.push_back(OptionInfo(option, arg)); - return true; - } - else { - return bad_option(option, opt_err_value); - } -} - - -bool -Connection::set_option(Option option, bool arg) -{ - if (connected() && (option != opt_multi_statements)) { - // We're connected and it isn't an option that can be set - // after connection is up, so complain to user. - return bad_option(option, opt_err_conn); - } - - bool success = false; - switch (option) { -#if MYSQL_VERSION_ID >= 40101 - case opt_secure_auth: - success = set_option_impl(MYSQL_SECURE_AUTH, &arg); - break; - - case opt_multi_statements: - // If connection is up, set the flag immediately. If not, - // and caller wants this turned on, pretend success so that - // we store the info we need to turn this flag on when - // bringing the connection up. (If the caller is turning it - // off before conn comes up, we effectively ignore this, - // because that's the default.) - if (connected()) { - success = set_option_impl(arg ? - MYSQL_OPTION_MULTI_STATEMENTS_ON : - MYSQL_OPTION_MULTI_STATEMENTS_OFF); - } - else { - success = arg; - } - break; -#endif -#if MYSQL_VERSION_ID >= 50003 - case opt_report_data_truncation: - success = set_option_impl(MYSQL_REPORT_DATA_TRUNCATION, &arg); - break; -#endif -#if MYSQL_VERSION_ID >= 50013 - case opt_reconnect: - success = set_option_impl(MYSQL_OPT_RECONNECT, &arg); - break; -#endif - default: - return bad_option(option, opt_err_type); - } - - if (success) { - applied_options_.push_back(OptionInfo(option, arg)); - return true; - } - else { - return bad_option(option, opt_err_value); - } -} - - -bool -Connection::set_option_default(Option option) -{ - if (option_set(option)) { - return true; - } - else { - return set_option(option); - } -} - - -template -bool -Connection::set_option_default(Option option, T arg) -{ - if (option_set(option)) { - return true; - } - else { - return set_option(option, arg); - } -} - - -bool -Connection::set_option_impl(mysql_option moption, const void* arg) -{ - return !mysql_options(&mysql_, moption, - static_cast(arg)); -} - - -#if MYSQL_VERSION_ID >= 40101 -bool -Connection::set_option_impl(enum_mysql_set_option msoption) -{ - return !mysql_set_server_option(&mysql_, msoption); -} -#endif - - -bool -Connection::bad_option(Option option, OptionError error) -{ - if (throw_exceptions()) { - ostringstream os; - - switch (error) { - case opt_err_type: { - // Option was set using wrong argument type - OptionArgType type = option_arg_type(option); - os << "option " << option; - if (type == opt_type_none) { - os << " does not take an argument"; - } - else { - os << " requires an argument of type " << type; - } - break; - } - - case opt_err_value: - // C API rejected option, which probably indicates that - // you passed a option that it doesn't understand. - os << "option " << option << " not supported in MySQL " - "C API v"; - api_version(os); - break; - - case opt_err_conn: - os << "option " << option << " can only be set " - "before connection is established"; - break; - } - - throw BadOption(os.str(), option); - } - - return false; -} - - -Connection::OptionArgType -Connection::option_arg_type(Option option) -{ - if ((option > opt_FIRST) && (option < opt_COUNT)) { - return legal_opt_arg_types_[option]; - } - else { - // Non-optional exception. Something is wrong with the library - // internals if this one is thrown. - throw BadOption("bad value given to option_arg_type()", option); - } -} - - -bool -Connection::option_set(Option option) -{ - for (OptionListIt it = applied_options_.begin(); - it != applied_options_.end(); - ++it) { - if (it->option == option) { - return true; - } - } - - return false; -} - - -void -Connection::enable_ssl(const char* key, const char* cert, - const char* ca, const char* capath, const char* cipher) -{ -#if defined(HAVE_MYSQL_SSL_SET) - mysql_ssl_set(&mysql_, key, cert, ca, capath, cipher); -#endif -} - - -ostream& -Connection::api_version(ostream& os) -{ - const int major = MYSQL_VERSION_ID / 10000; - const int minor = (MYSQL_VERSION_ID - (major * 10000)) / 100; - const int bug = MYSQL_VERSION_ID - (major * 10000) - (minor * 100); - - os << major << '.' << minor << '.' << bug; - - return os; -} - - -int -Connection::ping() -{ - if (connected()) { - return mysql_ping(&mysql_); - } - else { - // Not connected, and we've forgotten everything we need in - // order to re-connect, if we once were connected. - return 1; - } -} - - -} // end namespace mysqlpp - diff --git a/code/meosdb/mysql++/connection.h b/code/meosdb/mysql++/connection.h deleted file mode 100644 index 0debaf5..0000000 --- a/code/meosdb/mysql++/connection.h +++ /dev/null @@ -1,579 +0,0 @@ -/// \file connection.h -/// \brief Declares the Connection class. -/// -/// Every program using MySQL++ must create a Connection object, which -/// manages information about the connection to the MySQL database, and -/// performs connection-related operations once the connection is up. -/// Subordinate classes, such as Query and Row take their defaults as -/// to whether exceptions are thrown when errors are encountered from -/// the Connection object that created them, directly or indirectly. - -/*********************************************************************** - Copyright (c) 1998 by Kevin Atkinson, (c) 1999, 2000 and 2001 by - MySQL AB, and (c) 2004-2007 by Educational Technology Resources, Inc. - Others may also hold copyrights on code in this file. See the CREDITS - file in the top directory of the distribution for details. - - This file is part of MySQL++. - - MySQL++ is free software; you can redistribute it and/or modify it - under the terms of the GNU Lesser General Public License as published - by the Free Software Foundation; either version 2.1 of the License, or - (at your option) any later version. - - MySQL++ is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with MySQL++; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 - USA -***********************************************************************/ - -#ifndef MYSQLPP_CONNECTION_H -#define MYSQLPP_CONNECTION_H - -#include "common.h" - -#include "lockable.h" -#include "noexceptions.h" - -#include -#include - -namespace mysqlpp { - -#if !defined(DOXYGEN_IGNORE) -// Make Doxygen ignore this -class MYSQLPP_EXPORT Query; -#endif - -/// \brief Manages the connection to the MySQL database. - -class MYSQLPP_EXPORT Connection : public OptionalExceptions, public Lockable -{ -public: - /// \brief Legal types of option arguments - enum OptionArgType { - opt_type_none, - opt_type_string, - opt_type_integer, - opt_type_boolean - }; - - /// \brief Per-connection options you can set with set_option() - /// - /// This is currently a combination of the MySQL C API - /// \c mysql_option and \c enum_mysql_set_option enums. It may - /// be extended in the future. - enum Option - { - // Symbolic "first" option, before real options. Never send - // this to set_option()! - opt_FIRST = -1, - - opt_connect_timeout = 0, - opt_compress, - opt_named_pipe, - opt_init_command, - opt_read_default_file, - opt_read_default_group, - opt_set_charset_dir, - opt_set_charset_name, - opt_local_infile, - opt_protocol, - opt_shared_memory_base_name, - opt_read_timeout, - opt_write_timeout, - opt_use_result, - opt_use_remote_connection, - opt_use_embedded_connection, - opt_guess_connection, - opt_set_client_ip, - opt_secure_auth, - - // Set multi-query statement support; no argument - opt_multi_statements, - - // Set reporting of data truncation errors - opt_report_data_truncation, - - // Enable or disable automatic reconnection to the server if - // the connection is found to have been lost. - opt_reconnect, - - // Number of options supported. Never send this to - // set_option()! - opt_COUNT - }; - - /// \brief Create object without connecting it to the MySQL server. - /// - /// \param te if true, exceptions are thrown on errors - Connection(bool te = true); - - /// \brief Create object and connect to database server in one step. - /// - /// This constructor allows you to most fully specify the options - /// used when connecting to the MySQL database. It is the thinnest - /// layer in MySQL++ over the MySQL C API function - /// \c mysql_real_connect(). The correspondence isn't exact as - /// we have some additional parameters you'd have to set with - /// \c mysql_option() when using the C API. - /// - /// \param db name of database to use - /// \param host host name or IP address of MySQL server, or 0 - /// if server is running on the same host as your program - /// \param user user name to log in under, or 0 to use the user - /// name this program is running under - /// \param passwd password to use when logging in - /// \param port TCP port number MySQL server is listening on, or 0 - /// to use default value - /// \param compress if true, compress data passing through - /// connection, to save bandwidth at the expense of CPU time - /// \param connect_timeout max seconds to wait for server to - /// respond to our connection attempt - /// \param socket_name Unix domain socket server is using, if - /// connecting to MySQL server on the same host as this program - /// running on, or 0 to use default name - /// \param client_flag special connection flags. See MySQL C API - /// documentation for \c mysql_real_connect() for details. - Connection(const char* db, const char* host = "", - const char* user = "", const char* passwd = "", - uint port = 0, my_bool compress = 0, - unsigned int connect_timeout = 60, cchar* socket_name = 0, - unsigned int client_flag = 0); - - /// \brief Establish a new connection using the same parameters as - /// an existing C API connection. - /// - /// \param other existing Connection object - Connection(const Connection& other); - - /// \brief Establish a new connection using the same parameters as - /// an existing C API connection. - /// - /// \param mysql existing MySQL C API connection object - bool connect(const MYSQL& mysql); - - /// \brief Destroy connection object - ~Connection(); - - /// \brief Connect to database after object is created. - /// - /// It's better to use the connect-on-create constructor if you can. - /// See its documentation for the meaning of these parameters. - /// - /// If you call this method on an object that is already connected - /// to a database server, the previous connection is dropped and a - /// new connection is established. - bool connect(cchar* db = "", cchar* host = "", - cchar* user = "", cchar* passwd = "", uint port = 0, - my_bool compress = 0, unsigned int connect_timeout = 60, - cchar* socket_name = 0, unsigned int client_flag = 0); - - /// \brief Close connection to MySQL server. - /// - /// Closes the connection to the MySQL server. - void close() - { - mysql_close(&mysql_); - is_connected_ = false; - } - - /// \brief Calls MySQL C API function \c mysql_info() and returns - /// result as a C++ string. - std::string info(); - - /// \brief return true if connection was established successfully - /// - /// \return true if connection was established successfully - bool connected() const - { - return is_connected_; - } - - /// \brief Return true if the last query was successful - bool success() const - { - return success_; - } - - /// \brief Alias for close() - void purge() { close(); } - - /// \brief Return a new query object. - /// - /// The returned query object is tied to this MySQL connection, - /// so when you call a method like - /// \link mysqlpp::Query::execute() execute() \endlink - /// on that object, the query is sent to the server this object - /// is connected to. - Query query(); - - /// \brief Alias for success() - /// - /// Alias for success() member function. Allows you to have code - /// constructs like this: - /// - /// \code - /// Connection conn; - /// .... use conn - /// if (conn) { - /// ... last SQL query was successful - /// } - /// else { - /// ... error occurred in SQL query - /// } - /// \endcode - operator bool() { return success(); } - - /// \brief Copy an existing Connection object's state into this - /// object. - Connection& operator=(const Connection& rhs); - - /// \brief Return error message for last MySQL error associated with - /// this connection. - /// - /// Simply wraps \c mysql_error() in the C API. - const char* error() - { - return mysql_error(&mysql_); - } - - /// \brief Return last MySQL error number associated with this - /// connection - /// - /// Simply wraps \c mysql_errno() in the C API. - int errnum() { return mysql_errno(&mysql_); } - - /// \brief Wraps MySQL C API function \c mysql_refresh() - /// - /// The corresponding C API function is undocumented. All I know - /// is that it's used by \c mysqldump and \c mysqladmin, according - /// to MySQL bug database entry http://bugs.mysql.com/bug.php?id=9816 - /// If that entry changes to say that the function is now documented, - /// reevaluate whether we need to wrap it. It may be that it's not - /// supposed to be used by regular end-user programs. - int refresh(unsigned int refresh_options) - { - return mysql_refresh(&mysql_, refresh_options); - } - - /// \brief "Pings" the MySQL database - /// - /// Wraps \c mysql_ping() in the C API. As a result, this function - /// will try to reconnect to the server if the connection has been - /// dropped. - /// - /// \retval 0 if server is responding, regardless of whether we had - /// to reconnect or not - /// \retval nonzero if either we already know the connection is down - /// and cannot re-establish it, or if the server did not respond to - /// the ping and we could not re-establish the connection. - int ping(); - - /// \brief Kill a MySQL server thread - /// - /// \param pid ID of thread to kill - /// - /// Simply wraps \c mysql_kill() in the C API. - int kill(unsigned long pid) - { - return mysql_kill(&mysql_, pid); - } - - /// \brief Get MySQL client library version - /// - /// Simply wraps \c mysql_get_client_info() in the C API. - std::string client_info() - { - return std::string(mysql_get_client_info()); - } - - /// \brief Get information about the network connection - /// - /// String contains info about type of connection and the server - /// hostname. - /// - /// Simply wraps \c mysql_get_host_info() in the C API. - std::string host_info() - { - return std::string(mysql_get_host_info(&mysql_)); - } - - /// \brief Returns version number of MySQL protocol this connection - /// is using - /// - /// Simply wraps \c mysql_get_proto_info() in the C API. - int proto_info() - { - return mysql_get_proto_info(&mysql_); - } - - /// \brief Get the MySQL server's version number - /// - /// Simply wraps \c mysql_get_server_info() in the C API. - std::string server_info() - { - return std::string(mysql_get_server_info(&mysql_)); - } - - /// \brief Returns information about MySQL server status - /// - /// String is similar to that returned by the \c mysqladmin - /// \c status command. Among other things, it contains uptime - /// in seconds, and the number of running threads, questions - /// and open tables. - std::string stat() - { - return std::string(mysql_stat(&mysql_)); - } - - /// \brief Create a database - /// - /// \param db name of database to create - /// - /// \return true if database was created successfully - bool create_db(const std::string& db); - - /// \brief Drop a database - /// - /// \param db name of database to destroy - /// - /// \return true if database was created successfully - bool drop_db(const std::string& db); - - /// \brief Change to a different database - bool select_db(const std::string& db) - { - return select_db(db.c_str()); - } - - /// \brief Change to a different database - bool select_db(const char* db); - - /// \brief Ask MySQL server to reload the grant tables - /// - /// User must have the "reload" privilege. - /// - /// Simply wraps \c mysql_reload() in the C API. Since that - /// function is deprecated, this one is, too. The MySQL++ - /// replacement is execute("FLUSH PRIVILEGES"). - bool reload(); - - /// \brief Ask MySQL server to shut down. - /// - /// User must have the "shutdown" privilege. - /// - /// Simply wraps \c mysql_shutdown() in the C API. - bool shutdown(); - - /// \brief Return the connection options object - st_mysql_options get_options() const - { - return mysql_.options; - } - - /// \brief Sets a connection option, with no argument - /// - /// \param option any of the Option enum constants - /// - /// Based on the option you give, this function calls either - /// \c mysql_options() or \c mysql_set_server_option() in the C API. - /// - /// There are several overloaded versions of this function. The - /// others take an additional argument for the option and differ - /// only by the type of the option. Unlike with the underlying C - /// API, it does matter which of these overloads you call: if you - /// use the wrong argument type or pass an argument where one is - /// not expected (or vice versa), the call will either throw an - /// exception or return false, depending on the object's "throw - /// exceptions" flag. - /// - /// This mechanism parallels the underlying C API structure fairly - /// closely, but do not expect this to continue in the future. - /// Its very purpose is to 'paper over' the differences among the - /// C API's option setting mechanisms, so it may become further - /// abstracted from these mechanisms. - /// - /// \retval true if option was successfully set, or at least queued - /// for setting during connection establishment sequence - /// - /// If exceptions are enabled, a false return means the C API - /// rejected the option, or the connection is not established and - /// so the option was queued for later processing. If exceptions - /// are disabled, false can also mean that the argument was of the - /// wrong type (wrong overload was called), the option value was out - /// of range, or the option is not supported by the C API, most - /// because it isn't a high enough version. These latter cases will - /// cause BadOption exceptions otherwise. - bool set_option(Option option); - - /// \brief Sets a connection option, with string argument - bool set_option(Option option, const char* arg); - - /// \brief Sets a connection option, with integer argument - bool set_option(Option option, unsigned int arg); - - /// \brief Sets a connection option, with Boolean argument - bool set_option(Option option, bool arg); - - /// \brief Same as set_option(), except that it won't override - /// a previously-set option. - bool set_option_default(Option option); - - /// \brief Same as set_option(), except that it won't override - /// a previously-set option. - template - bool set_option_default(Option option, T arg); - - /// \brief Returns true if the given option has been set already - bool option_set(Option option); - - /// \brief Enable SSL-encrypted connection. - /// - /// \param key the pathname to the key file - /// \param cert the pathname to the certificate file - /// \param ca the pathname to the certificate authority file - /// \param capath directory that contains trusted SSL CA - /// certificates in pem format. - /// \param cipher list of allowable ciphers to use - /// - /// Must be called before connection is established. - /// - /// Wraps \c mysql_ssl_set() in MySQL C API. - void enable_ssl(const char* key = 0, - const char* cert = 0, const char* ca = 0, - const char* capath = 0, const char* cipher = 0); - - /// \brief Return the number of rows affected by the last query - /// - /// Simply wraps \c mysql_affected_rows() in the C API. - my_ulonglong affected_rows() - { - return mysql_affected_rows(&mysql_); - } - - /// \brief Get ID generated for an AUTO_INCREMENT column in the - /// previous INSERT query. - /// - /// \retval 0 if the previous query did not generate an ID. Use - /// the SQL function LAST_INSERT_ID() if you need the last ID - /// generated by any query, not just the previous one. - my_ulonglong insert_id() - { - return mysql_insert_id(&mysql_); - } - - /// \brief Insert C API version we're linked against into C++ stream - /// - /// Version will be of the form X.Y.Z, where X is the major version - /// number, Y the minor version, and Z the bug fix number. - std::ostream& api_version(std::ostream& os); - -protected: - /// \brief Types of option setting errors we can diagnose - enum OptionError { - opt_err_type, - opt_err_value, - opt_err_conn - }; - - /// \brief Drop the connection to the database server - /// - /// This method is protected because it should only be used within - /// the library. Unless you use the default constructor, this - /// object should always be connected. - void disconnect(); - - /// \brief Error handling routine for set_option() - bool bad_option(Option option, OptionError error); - - /// \brief Given option value, return its proper argument type - OptionArgType option_arg_type(Option option); - - /// \brief Set MySQL C API connection option - /// - /// Wraps \c mysql_options() in C API. This is an internal - /// implementation detail, to be used only by the public overloads - /// above. - bool set_option_impl(mysql_option moption, const void* arg = 0); - -#if MYSQL_VERSION_ID >= 40101 - /// \brief Set MySQL C API connection option - /// - /// Wraps \c mysql_set_server_option() in C API. This is an - /// internal implementation detail, to be used only by the public - /// overloads above. - bool set_option_impl(enum_mysql_set_option msoption); -#endif - - /// \brief Establish a new connection as a copy of an existing one - /// - /// \param other the connection to copy - void copy(const Connection& other); - -private: - friend class ResNSel; - friend class ResUse; - friend class Query; - - struct OptionInfo { - Option option; - OptionArgType arg_type; - std::string str_arg; - unsigned int int_arg; - bool bool_arg; - - OptionInfo(Option o) : - option(o), - arg_type(opt_type_none), - int_arg(0), - bool_arg(false) - { - } - - OptionInfo(Option o, const char* a) : - option(o), - arg_type(opt_type_string), - str_arg(a), - int_arg(0), - bool_arg(false) - { - } - - OptionInfo(Option o, unsigned int a) : - option(o), - arg_type(opt_type_integer), - int_arg(a), - bool_arg(false) - { - } - - OptionInfo(Option o, bool a) : - option(o), - arg_type(opt_type_boolean), - int_arg(0), - bool_arg(a) - { - } - }; - typedef std::deque OptionList; - typedef OptionList::const_iterator OptionListIt; - - MYSQL mysql_; - bool is_connected_; - bool connecting_; - bool success_; - OptionList applied_options_; - static OptionArgType legal_opt_arg_types_[]; -}; - - -} // end namespace mysqlpp - -#endif - diff --git a/code/meosdb/mysql++/const_string.h b/code/meosdb/mysql++/const_string.h deleted file mode 100644 index 10d751e..0000000 --- a/code/meosdb/mysql++/const_string.h +++ /dev/null @@ -1,258 +0,0 @@ -/// \file const_string.h -/// \brief Declares a wrapper for const char* which behaves -/// in a way more useful to MySQL++. - -/*********************************************************************** - Copyright (c) 1998 by Kevin Atkinson, (c) 1999, 2000 and 2001 by - MySQL AB, and (c) 2004, 2005 by Educational Technology Resources, Inc. - Others may also hold copyrights on code in this file. See the CREDITS - file in the top directory of the distribution for details. - - This file is part of MySQL++. - - MySQL++ is free software; you can redistribute it and/or modify it - under the terms of the GNU Lesser General Public License as published - by the Free Software Foundation; either version 2.1 of the License, or - (at your option) any later version. - - MySQL++ is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with MySQL++; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 - USA -***********************************************************************/ - -#ifndef MYSQLPP_CONST_STRING_H -#define MYSQLPP_CONST_STRING_H - -#include "common.h" - -#include -#include -#include -#include - -namespace mysqlpp { - -/// \brief Wrapper for const char* to make it behave in a -/// way more useful to MySQL++. -/// -/// This class implements a small subset of the standard string class. -/// -/// As of MySQL++ 2.3, it makes a copy of the string we are initialized -/// with, instead of just copying the pointer. This is required to -/// avoid problems with the new SSQLS + BLOB support. -class MYSQLPP_EXPORT const_string -{ -public: - /// \brief Type of the data stored in this object, when it is not - /// equal to SQL null. - typedef const char value_type; - - /// \brief Type of "size" integers - typedef unsigned int size_type; - - /// \brief Type used when returning a reference to a character in - /// the string. - typedef const char& const_reference; - - /// \brief Type of iterators - typedef const char* const_iterator; - - /// \brief Same as const_iterator because the data cannot be - /// changed. - typedef const_iterator iterator; - -#if !defined(DOXYGEN_IGNORE) -// Doxygen will not generate documentation for this section. - typedef int difference_type; - typedef const_reference reference; - typedef const char* const_pointer; - typedef const_pointer pointer; -#endif // !defined(DOXYGEN_IGNORE) - - /// \brief Create empty string - const_string() : - str_data_(0), - length_(0) - { - } - - /// \brief Initialize string from existing C++ string - const_string(const std::string& str) : - str_data_(0), - length_(str.length()) - { - str_data_ = new char[length_ + 1]; - memcpy(str_data_, str.data(), length_); - str_data_[length_] = '\0'; - } - - /// \brief Initialize string from existing C string - const_string(const char* str) : - str_data_(0), - length_(size_type(strlen(str))) - { - str_data_ = new char[length_ + 1]; - memcpy(str_data_, str, length_); - str_data_[length_] = '\0'; - } - - /// \brief Initialize string from existing C string of known length - const_string(const char* str, size_type len) : - str_data_(0), - length_(size_type(len)) - { - str_data_ = new char[length_ + 1]; - memcpy(str_data_, str, length_); - str_data_[length_] = '\0'; - } - - /// \brief Destroy string - ~const_string() - { - delete[] str_data_; - } - - /// \brief Assignment operator, from C string - const_string& operator=(const char* str) - { - delete[] str_data_; - length_ = size_type(strlen(str)); - str_data_ = new char[length_]; - memcpy(str_data_, str, length_); - return *this; - } - - /// \brief Assignment operator, from other const_string - const_string& operator=(const const_string& cs) - { - delete[] str_data_; - length_ = cs.length_; - str_data_ = new char[length_]; - memcpy(str_data_, cs.str_data_, length_); - return *this; - } - - /// \brief Return number of characters in the string - size_type length() const { return length_; } - - /// \brief Return number of characters in string - size_type size() const { return length_; } - - /// \brief Return iterator pointing to the first character of - /// the string - const_iterator begin() const { return str_data_; } - - /// \brief Return iterator pointing to one past the last character - /// of the string. - const_iterator end() const { return str_data_ + size(); } - - /// \brief Return the maximum number of characters in the string. - /// - /// Because this is a \c const string, this is just an alias for - /// size(); its size is always equal to the amount of data currently - /// stored. - size_type max_size() const { return size(); } - - /// \brief Return a reference to a character within the string. - const_reference operator [](size_type pos) const - { return str_data_[pos]; } - - /// \brief Return a reference to a character within the string. - /// - /// Unlike \c operator[](), this function throws an - /// \c std::out_of_range exception if the index isn't within range. - const_reference at(size_type pos) const - { - if (pos >= size()) - throw std::out_of_range(""); - else - return str_data_[pos]; - } - - /// \brief Return a const pointer to the string data. Not - /// necessarily null-terminated! - const char* c_str() const { return str_data_; } - - /// \brief Alias for \c c_str() - const char* data() const { return str_data_; } - - /// \brief Lexically compare this string to another. - /// - /// \param str string to compare against this one - /// - /// \retval <0 if str1 is lexically "less than" str2 - /// \retval 0 if str1 is equal to str2 - /// \retval >0 if str1 is lexically "greater than" str2 - int compare(const const_string& str) const - { - size_type i = 0, short_len = std::min(length(), str.length()); - while ((i < short_len) && (str_data_[i] != str.str_data_[i])) { - ++i; - } - return str_data_[i] - str.str_data_[i]; - } - -private: - char* str_data_; - size_type length_; -}; - - -/// \brief Inserts a const_string into a C++ stream -inline std::ostream& operator <<(std::ostream& o, - const const_string& str) -{ - return o << str.c_str(); -} - -/// \brief Calls lhs.compare(), passing rhs -inline int compare(const const_string& lhs, const const_string& rhs) -{ - return lhs.compare(rhs); -} - -/// \brief Returns true if lhs is the same as rhs -inline bool operator ==(const_string& lhs, const_string& rhs) -{ - return compare(lhs, rhs) == 0; -} - -/// \brief Returns true if lhs is not the same as rhs -inline bool operator !=(const_string& lhs, const_string& rhs) -{ - return compare(lhs, rhs) != 0; -} - -/// \brief Returns true if lhs is lexically less than rhs -inline bool operator <(const_string& lhs, const_string& rhs) -{ - return compare(lhs, rhs) < 0; -} - -/// \brief Returns true if lhs is lexically less or equal to rhs -inline bool operator <=(const_string& lhs, const_string& rhs) -{ - return compare(lhs, rhs) <= 0; -} - -/// \brief Returns true if lhs is lexically greater than rhs -inline bool operator >(const_string& lhs, const_string& rhs) -{ - return compare(lhs, rhs) > 0; -} - -/// \brief Returns true if lhs is lexically greater than or equal to rhs -inline bool operator >=(const_string& lhs, const_string& rhs) -{ - return compare(lhs, rhs) >= 0; -} - -} // end namespace mysqlpp - -#endif diff --git a/code/meosdb/mysql++/convert.h b/code/meosdb/mysql++/convert.h deleted file mode 100644 index fd27642..0000000 --- a/code/meosdb/mysql++/convert.h +++ /dev/null @@ -1,117 +0,0 @@ -/// \file convert.h -/// \brief Declares various string-to-integer type conversion templates. -/// -/// These templates are the mechanism used within mysqlpp::ColData_Tmpl -/// for its string-to-\e something conversions. - -/*********************************************************************** - Copyright (c) 1998 by Kevin Atkinson, (c) 1999, 2000 and 2001 by - MySQL AB, and (c) 2004, 2005 by Educational Technology Resources, Inc. - Others may also hold copyrights on code in this file. See the CREDITS - file in the top directory of the distribution for details. - - This file is part of MySQL++. - - MySQL++ is free software; you can redistribute it and/or modify it - under the terms of the GNU Lesser General Public License as published - by the Free Software Foundation; either version 2.1 of the License, or - (at your option) any later version. - - MySQL++ is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with MySQL++; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 - USA -***********************************************************************/ - -#ifndef MYSQLPP_CONVERT_H -#define MYSQLPP_CONVERT_H - -#include "common.h" - -#include - -namespace mysqlpp { - -#if !defined(DOXYGEN_IGNORE) -// Doxygen will not generate documentation for this section. - -template class mysql_convert; - -#define mysql__convert(TYPE, FUNC) \ - template <> \ - class mysql_convert {\ - public:\ - mysql_convert(const char* str, const char *& end) { \ - num_ = FUNC(str, const_cast(&end));}\ - operator TYPE () {return num_;}\ - private:\ - TYPE num_;\ - };\ - -#if defined(_MSC_VER) -# pragma warning(disable: 4244) -#endif - - mysql__convert(float, strtod) - mysql__convert(double, strtod) - -#if defined(_MSC_VER) -# pragma warning(default: 4244) -#endif - -#undef mysql__convert -#define mysql__convert(TYPE, FUNC) \ - template <> \ - class mysql_convert {\ - public:\ - mysql_convert(const char* str, const char *& end) { \ - num_ = FUNC(str, const_cast(&end),10);}\ - operator TYPE () {return num_;}\ - private:\ - TYPE num_;\ - };\ - -#if defined(_MSC_VER) -# pragma warning(disable: 4244) -#endif - - mysql__convert(char, strtol) - mysql__convert(signed char, strtol) - mysql__convert(int, strtol) - mysql__convert(short int, strtol) - mysql__convert(long int, strtol) - - mysql__convert(unsigned char, strtoul) - mysql__convert(unsigned int, strtoul) - mysql__convert(unsigned short int, strtoul) - mysql__convert(unsigned long int, strtoul) - -#if defined(_MSC_VER) -# pragma warning(default: 4244) -#endif - -#if !defined(NO_LONG_LONGS) -#if defined(_MSC_VER) -// Handle 64-bit ints the VC++ way -mysql__convert(longlong, _strtoi64) -mysql__convert(ulonglong, _strtoui64) -#else -// No better idea, so assume the C99 way. If your compiler doesn't -// support this, please provide a patch to extend this ifdef, or define -// NO_LONG_LONGS. -mysql__convert(longlong, strtoll) -mysql__convert(ulonglong, strtoull) -#endif -#endif // !defined(NO_LONG_LONGS) - -#endif // !defined(DOXYGEN_IGNORE) - -} // end namespace mysqlpp - -#endif - diff --git a/code/meosdb/mysql++/custom-macros.h b/code/meosdb/mysql++/custom-macros.h deleted file mode 100644 index dd4dfdc..0000000 --- a/code/meosdb/mysql++/custom-macros.h +++ /dev/null @@ -1,24938 +0,0 @@ - -// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -// This file is generated by the Perl script custom.pl. Please do -// not modify this file directly. Change the script instead. -// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -// --------------------------------------------------- -// Begin Mandatory Compare -// --------------------------------------------------- - -#define sql_compare_define(NAME) \ - bool operator == (const NAME &other) const \ - {return sql_compare_##NAME(*this,other) == 0;} \ - bool operator != (const NAME &other) const \ - {return sql_compare_##NAME(*this,other) != 0;} \ - bool operator > (const NAME &other) const \ - {return sql_compare_##NAME(*this,other) > 0;} \ - bool operator < (const NAME &other) const \ - {return sql_compare_##NAME(*this,other) < 0;} \ - bool operator >= (const NAME &other) const \ - {return sql_compare_##NAME(*this,other) >= 0;} \ - bool operator <= (const NAME &other) const \ - {return sql_compare_##NAME(*this,other) <= 0;} \ - int cmp (const NAME &other) const \ - {return sql_compare_##NAME(*this,other);} \ - int compare (const NAME &other) const \ - {return sql_compare_##NAME(*this,other);} - -#define sql_compare_define_0(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) - -#define sql_construct_define_0(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) - -#define sql_COMPARE__0(NAME, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19, C20, C21, C22, C23, C24, C25) - -#define sql_compare_type_def_0(NAME, WHAT, NUM) \ - sql_compare_type_def_##NUM (NAME, WHAT, NUM) - -#define sql_compare_type_defe_0(NAME, WHAT, NUM) \ - sql_compare_type_defe_##NUM (NAME, WHAT, NUM) - -// --------------------------------------------------- -// End Mandatory Compare -// --------------------------------------------------- - -// --------------------------------------------------- -// Begin Compare 1 -// --------------------------------------------------- - -#define sql_compare_define_1(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \ - NAME (const T1 &p1) : C1 (p1) {} \ - void set (const T1 &p1) { \ - C1 = p1;\ - \ - } \ - sql_compare_define(NAME) - -#define sql_construct_define_1(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \ - void set (const T1 &p1) { \ - C1 = p1;\ - \ - } \ - NAME (const T1 &p1) : C1 (p1) {} - -#define sql_compare_type_def_1(NAME, WHAT, NUM) \ - return WHAT##_list(d, m, true) - -#define sql_compare_type_defe_1(NAME, WHAT, NUM) \ - return WHAT##_list(d, c, m, true) - -#define sql_COMPARE__1(NAME, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19, C20, C21, C22, C23, C24, C25) \ - template \ - int sql_compare_##NAME (const NAME &x, const NAME &y) { \ - return mysqlpp::sql_cmp(x.C1 , y.C1 ); \ - } \ - template \ - int compare (const NAME &x, const NAME &y) { \ - return mysqlpp::sql_cmp(x.C1 , y.C1 ); \ - } - -// --------------------------------------------------- -// End Compare 1 -// --------------------------------------------------- - - -// --------------------------------------------------- -// Begin Compare 2 -// --------------------------------------------------- - -#define sql_compare_define_2(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \ - NAME (const T1 &p1, const T2 &p2) : C1 (p1), C2 (p2) {} \ - void set (const T1 &p1, const T2 &p2) { \ - C1 = p1;\ - C2 = p2;\ - \ - } \ - sql_compare_define(NAME) - -#define sql_construct_define_2(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \ - void set (const T1 &p1, const T2 &p2) { \ - C1 = p1;\ - C2 = p2;\ - \ - } \ - NAME (const T1 &p1, const T2 &p2) : C1 (p1), C2 (p2) {} - -#define sql_compare_type_def_2(NAME, WHAT, NUM) \ - return WHAT##_list(d, m, true, true) - -#define sql_compare_type_defe_2(NAME, WHAT, NUM) \ - return WHAT##_list(d, c, m, true, true) - -#define sql_COMPARE__2(NAME, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19, C20, C21, C22, C23, C24, C25) \ - template \ - int sql_compare_##NAME (const NAME &x, const NAME &y) { \ - int cmp; \ - cmp = mysqlpp::sql_cmp(x.C1 , y.C1 ); \ - if (cmp) return cmp; \ - return mysqlpp::sql_cmp(x.C2 , y.C2 ); \ - } \ - template \ - int compare (const NAME &x, const NAME &y) { \ - int cmp; \ - cmp = mysqlpp::sql_cmp(x.C1 , y.C1 ); \ - if (cmp) return cmp; \ - return mysqlpp::sql_cmp(x.C2 , y.C2 ); \ - } - -// --------------------------------------------------- -// End Compare 2 -// --------------------------------------------------- - - -// --------------------------------------------------- -// Begin Compare 3 -// --------------------------------------------------- - -#define sql_compare_define_3(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \ - NAME (const T1 &p1, const T2 &p2, const T3 &p3) : C1 (p1), C2 (p2), C3 (p3) {} \ - void set (const T1 &p1, const T2 &p2, const T3 &p3) { \ - C1 = p1;\ - C2 = p2;\ - C3 = p3;\ - \ - } \ - sql_compare_define(NAME) - -#define sql_construct_define_3(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \ - void set (const T1 &p1, const T2 &p2, const T3 &p3) { \ - C1 = p1;\ - C2 = p2;\ - C3 = p3;\ - \ - } \ - NAME (const T1 &p1, const T2 &p2, const T3 &p3) : C1 (p1), C2 (p2), C3 (p3) {} - -#define sql_compare_type_def_3(NAME, WHAT, NUM) \ - return WHAT##_list(d, m, true, true, true) - -#define sql_compare_type_defe_3(NAME, WHAT, NUM) \ - return WHAT##_list(d, c, m, true, true, true) - -#define sql_COMPARE__3(NAME, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19, C20, C21, C22, C23, C24, C25) \ - template \ - int sql_compare_##NAME (const NAME &x, const NAME &y) { \ - int cmp; \ - cmp = mysqlpp::sql_cmp(x.C1 , y.C1 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C2 , y.C2 ); \ - if (cmp) return cmp; \ - return mysqlpp::sql_cmp(x.C3 , y.C3 ); \ - } \ - template \ - int compare (const NAME &x, const NAME &y) { \ - int cmp; \ - cmp = mysqlpp::sql_cmp(x.C1 , y.C1 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C2 , y.C2 ); \ - if (cmp) return cmp; \ - return mysqlpp::sql_cmp(x.C3 , y.C3 ); \ - } - -// --------------------------------------------------- -// End Compare 3 -// --------------------------------------------------- - - -// --------------------------------------------------- -// Begin Compare 4 -// --------------------------------------------------- - -#define sql_compare_define_4(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \ - NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4) : C1 (p1), C2 (p2), C3 (p3), C4 (p4) {} \ - void set (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4) { \ - C1 = p1;\ - C2 = p2;\ - C3 = p3;\ - C4 = p4;\ - \ - } \ - sql_compare_define(NAME) - -#define sql_construct_define_4(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \ - void set (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4) { \ - C1 = p1;\ - C2 = p2;\ - C3 = p3;\ - C4 = p4;\ - \ - } \ - NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4) : C1 (p1), C2 (p2), C3 (p3), C4 (p4) {} - -#define sql_compare_type_def_4(NAME, WHAT, NUM) \ - return WHAT##_list(d, m, true, true, true, true) - -#define sql_compare_type_defe_4(NAME, WHAT, NUM) \ - return WHAT##_list(d, c, m, true, true, true, true) - -#define sql_COMPARE__4(NAME, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19, C20, C21, C22, C23, C24, C25) \ - template \ - int sql_compare_##NAME (const NAME &x, const NAME &y) { \ - int cmp; \ - cmp = mysqlpp::sql_cmp(x.C1 , y.C1 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C2 , y.C2 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C3 , y.C3 ); \ - if (cmp) return cmp; \ - return mysqlpp::sql_cmp(x.C4 , y.C4 ); \ - } \ - template \ - int compare (const NAME &x, const NAME &y) { \ - int cmp; \ - cmp = mysqlpp::sql_cmp(x.C1 , y.C1 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C2 , y.C2 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C3 , y.C3 ); \ - if (cmp) return cmp; \ - return mysqlpp::sql_cmp(x.C4 , y.C4 ); \ - } - -// --------------------------------------------------- -// End Compare 4 -// --------------------------------------------------- - - -// --------------------------------------------------- -// Begin Compare 5 -// --------------------------------------------------- - -#define sql_compare_define_5(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \ - NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5) {} \ - void set (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5) { \ - C1 = p1;\ - C2 = p2;\ - C3 = p3;\ - C4 = p4;\ - C5 = p5;\ - \ - } \ - sql_compare_define(NAME) - -#define sql_construct_define_5(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \ - void set (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5) { \ - C1 = p1;\ - C2 = p2;\ - C3 = p3;\ - C4 = p4;\ - C5 = p5;\ - \ - } \ - NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5) {} - -#define sql_compare_type_def_5(NAME, WHAT, NUM) \ - return WHAT##_list(d, m, true, true, true, true, true) - -#define sql_compare_type_defe_5(NAME, WHAT, NUM) \ - return WHAT##_list(d, c, m, true, true, true, true, true) - -#define sql_COMPARE__5(NAME, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19, C20, C21, C22, C23, C24, C25) \ - template \ - int sql_compare_##NAME (const NAME &x, const NAME &y) { \ - int cmp; \ - cmp = mysqlpp::sql_cmp(x.C1 , y.C1 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C2 , y.C2 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C3 , y.C3 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C4 , y.C4 ); \ - if (cmp) return cmp; \ - return mysqlpp::sql_cmp(x.C5 , y.C5 ); \ - } \ - template \ - int compare (const NAME &x, const NAME &y) { \ - int cmp; \ - cmp = mysqlpp::sql_cmp(x.C1 , y.C1 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C2 , y.C2 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C3 , y.C3 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C4 , y.C4 ); \ - if (cmp) return cmp; \ - return mysqlpp::sql_cmp(x.C5 , y.C5 ); \ - } - -// --------------------------------------------------- -// End Compare 5 -// --------------------------------------------------- - - -// --------------------------------------------------- -// Begin Compare 6 -// --------------------------------------------------- - -#define sql_compare_define_6(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \ - NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6) {} \ - void set (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6) { \ - C1 = p1;\ - C2 = p2;\ - C3 = p3;\ - C4 = p4;\ - C5 = p5;\ - C6 = p6;\ - \ - } \ - sql_compare_define(NAME) - -#define sql_construct_define_6(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \ - void set (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6) { \ - C1 = p1;\ - C2 = p2;\ - C3 = p3;\ - C4 = p4;\ - C5 = p5;\ - C6 = p6;\ - \ - } \ - NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6) {} - -#define sql_compare_type_def_6(NAME, WHAT, NUM) \ - return WHAT##_list(d, m, true, true, true, true, true, true) - -#define sql_compare_type_defe_6(NAME, WHAT, NUM) \ - return WHAT##_list(d, c, m, true, true, true, true, true, true) - -#define sql_COMPARE__6(NAME, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19, C20, C21, C22, C23, C24, C25) \ - template \ - int sql_compare_##NAME (const NAME &x, const NAME &y) { \ - int cmp; \ - cmp = mysqlpp::sql_cmp(x.C1 , y.C1 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C2 , y.C2 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C3 , y.C3 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C4 , y.C4 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C5 , y.C5 ); \ - if (cmp) return cmp; \ - return mysqlpp::sql_cmp(x.C6 , y.C6 ); \ - } \ - template \ - int compare (const NAME &x, const NAME &y) { \ - int cmp; \ - cmp = mysqlpp::sql_cmp(x.C1 , y.C1 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C2 , y.C2 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C3 , y.C3 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C4 , y.C4 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C5 , y.C5 ); \ - if (cmp) return cmp; \ - return mysqlpp::sql_cmp(x.C6 , y.C6 ); \ - } - -// --------------------------------------------------- -// End Compare 6 -// --------------------------------------------------- - - -// --------------------------------------------------- -// Begin Compare 7 -// --------------------------------------------------- - -#define sql_compare_define_7(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \ - NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6), C7 (p7) {} \ - void set (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7) { \ - C1 = p1;\ - C2 = p2;\ - C3 = p3;\ - C4 = p4;\ - C5 = p5;\ - C6 = p6;\ - C7 = p7;\ - \ - } \ - sql_compare_define(NAME) - -#define sql_construct_define_7(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \ - void set (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7) { \ - C1 = p1;\ - C2 = p2;\ - C3 = p3;\ - C4 = p4;\ - C5 = p5;\ - C6 = p6;\ - C7 = p7;\ - \ - } \ - NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6), C7 (p7) {} - -#define sql_compare_type_def_7(NAME, WHAT, NUM) \ - return WHAT##_list(d, m, true, true, true, true, true, true, true) - -#define sql_compare_type_defe_7(NAME, WHAT, NUM) \ - return WHAT##_list(d, c, m, true, true, true, true, true, true, true) - -#define sql_COMPARE__7(NAME, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19, C20, C21, C22, C23, C24, C25) \ - template \ - int sql_compare_##NAME (const NAME &x, const NAME &y) { \ - int cmp; \ - cmp = mysqlpp::sql_cmp(x.C1 , y.C1 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C2 , y.C2 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C3 , y.C3 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C4 , y.C4 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C5 , y.C5 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C6 , y.C6 ); \ - if (cmp) return cmp; \ - return mysqlpp::sql_cmp(x.C7 , y.C7 ); \ - } \ - template \ - int compare (const NAME &x, const NAME &y) { \ - int cmp; \ - cmp = mysqlpp::sql_cmp(x.C1 , y.C1 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C2 , y.C2 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C3 , y.C3 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C4 , y.C4 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C5 , y.C5 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C6 , y.C6 ); \ - if (cmp) return cmp; \ - return mysqlpp::sql_cmp(x.C7 , y.C7 ); \ - } - -// --------------------------------------------------- -// End Compare 7 -// --------------------------------------------------- - - -// --------------------------------------------------- -// Begin Compare 8 -// --------------------------------------------------- - -#define sql_compare_define_8(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \ - NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6), C7 (p7), C8 (p8) {} \ - void set (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8) { \ - C1 = p1;\ - C2 = p2;\ - C3 = p3;\ - C4 = p4;\ - C5 = p5;\ - C6 = p6;\ - C7 = p7;\ - C8 = p8;\ - \ - } \ - sql_compare_define(NAME) - -#define sql_construct_define_8(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \ - void set (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8) { \ - C1 = p1;\ - C2 = p2;\ - C3 = p3;\ - C4 = p4;\ - C5 = p5;\ - C6 = p6;\ - C7 = p7;\ - C8 = p8;\ - \ - } \ - NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6), C7 (p7), C8 (p8) {} - -#define sql_compare_type_def_8(NAME, WHAT, NUM) \ - return WHAT##_list(d, m, true, true, true, true, true, true, true, true) - -#define sql_compare_type_defe_8(NAME, WHAT, NUM) \ - return WHAT##_list(d, c, m, true, true, true, true, true, true, true, true) - -#define sql_COMPARE__8(NAME, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19, C20, C21, C22, C23, C24, C25) \ - template \ - int sql_compare_##NAME (const NAME &x, const NAME &y) { \ - int cmp; \ - cmp = mysqlpp::sql_cmp(x.C1 , y.C1 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C2 , y.C2 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C3 , y.C3 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C4 , y.C4 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C5 , y.C5 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C6 , y.C6 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C7 , y.C7 ); \ - if (cmp) return cmp; \ - return mysqlpp::sql_cmp(x.C8 , y.C8 ); \ - } \ - template \ - int compare (const NAME &x, const NAME &y) { \ - int cmp; \ - cmp = mysqlpp::sql_cmp(x.C1 , y.C1 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C2 , y.C2 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C3 , y.C3 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C4 , y.C4 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C5 , y.C5 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C6 , y.C6 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C7 , y.C7 ); \ - if (cmp) return cmp; \ - return mysqlpp::sql_cmp(x.C8 , y.C8 ); \ - } - -// --------------------------------------------------- -// End Compare 8 -// --------------------------------------------------- - - -// --------------------------------------------------- -// Begin Compare 9 -// --------------------------------------------------- - -#define sql_compare_define_9(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \ - NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6), C7 (p7), C8 (p8), C9 (p9) {} \ - void set (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9) { \ - C1 = p1;\ - C2 = p2;\ - C3 = p3;\ - C4 = p4;\ - C5 = p5;\ - C6 = p6;\ - C7 = p7;\ - C8 = p8;\ - C9 = p9;\ - \ - } \ - sql_compare_define(NAME) - -#define sql_construct_define_9(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \ - void set (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9) { \ - C1 = p1;\ - C2 = p2;\ - C3 = p3;\ - C4 = p4;\ - C5 = p5;\ - C6 = p6;\ - C7 = p7;\ - C8 = p8;\ - C9 = p9;\ - \ - } \ - NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6), C7 (p7), C8 (p8), C9 (p9) {} - -#define sql_compare_type_def_9(NAME, WHAT, NUM) \ - return WHAT##_list(d, m, true, true, true, true, true, true, true, true, true) - -#define sql_compare_type_defe_9(NAME, WHAT, NUM) \ - return WHAT##_list(d, c, m, true, true, true, true, true, true, true, true, true) - -#define sql_COMPARE__9(NAME, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19, C20, C21, C22, C23, C24, C25) \ - template \ - int sql_compare_##NAME (const NAME &x, const NAME &y) { \ - int cmp; \ - cmp = mysqlpp::sql_cmp(x.C1 , y.C1 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C2 , y.C2 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C3 , y.C3 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C4 , y.C4 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C5 , y.C5 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C6 , y.C6 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C7 , y.C7 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C8 , y.C8 ); \ - if (cmp) return cmp; \ - return mysqlpp::sql_cmp(x.C9 , y.C9 ); \ - } \ - template \ - int compare (const NAME &x, const NAME &y) { \ - int cmp; \ - cmp = mysqlpp::sql_cmp(x.C1 , y.C1 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C2 , y.C2 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C3 , y.C3 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C4 , y.C4 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C5 , y.C5 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C6 , y.C6 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C7 , y.C7 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C8 , y.C8 ); \ - if (cmp) return cmp; \ - return mysqlpp::sql_cmp(x.C9 , y.C9 ); \ - } - -// --------------------------------------------------- -// End Compare 9 -// --------------------------------------------------- - - -// --------------------------------------------------- -// Begin Compare 10 -// --------------------------------------------------- - -#define sql_compare_define_10(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \ - NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6), C7 (p7), C8 (p8), C9 (p9), C10 (p10) {} \ - void set (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10) { \ - C1 = p1;\ - C2 = p2;\ - C3 = p3;\ - C4 = p4;\ - C5 = p5;\ - C6 = p6;\ - C7 = p7;\ - C8 = p8;\ - C9 = p9;\ - C10 = p10;\ - \ - } \ - sql_compare_define(NAME) - -#define sql_construct_define_10(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \ - void set (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10) { \ - C1 = p1;\ - C2 = p2;\ - C3 = p3;\ - C4 = p4;\ - C5 = p5;\ - C6 = p6;\ - C7 = p7;\ - C8 = p8;\ - C9 = p9;\ - C10 = p10;\ - \ - } \ - NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6), C7 (p7), C8 (p8), C9 (p9), C10 (p10) {} - -#define sql_compare_type_def_10(NAME, WHAT, NUM) \ - return WHAT##_list(d, m, true, true, true, true, true, true, true, true, true, true) - -#define sql_compare_type_defe_10(NAME, WHAT, NUM) \ - return WHAT##_list(d, c, m, true, true, true, true, true, true, true, true, true, true) - -#define sql_COMPARE__10(NAME, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19, C20, C21, C22, C23, C24, C25) \ - template \ - int sql_compare_##NAME (const NAME &x, const NAME &y) { \ - int cmp; \ - cmp = mysqlpp::sql_cmp(x.C1 , y.C1 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C2 , y.C2 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C3 , y.C3 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C4 , y.C4 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C5 , y.C5 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C6 , y.C6 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C7 , y.C7 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C8 , y.C8 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C9 , y.C9 ); \ - if (cmp) return cmp; \ - return mysqlpp::sql_cmp(x.C10 , y.C10 ); \ - } \ - template \ - int compare (const NAME &x, const NAME &y) { \ - int cmp; \ - cmp = mysqlpp::sql_cmp(x.C1 , y.C1 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C2 , y.C2 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C3 , y.C3 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C4 , y.C4 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C5 , y.C5 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C6 , y.C6 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C7 , y.C7 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C8 , y.C8 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C9 , y.C9 ); \ - if (cmp) return cmp; \ - return mysqlpp::sql_cmp(x.C10 , y.C10 ); \ - } - -// --------------------------------------------------- -// End Compare 10 -// --------------------------------------------------- - - -// --------------------------------------------------- -// Begin Compare 11 -// --------------------------------------------------- - -#define sql_compare_define_11(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \ - NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6), C7 (p7), C8 (p8), C9 (p9), C10 (p10), C11 (p11) {} \ - void set (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11) { \ - C1 = p1;\ - C2 = p2;\ - C3 = p3;\ - C4 = p4;\ - C5 = p5;\ - C6 = p6;\ - C7 = p7;\ - C8 = p8;\ - C9 = p9;\ - C10 = p10;\ - C11 = p11;\ - \ - } \ - sql_compare_define(NAME) - -#define sql_construct_define_11(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \ - void set (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11) { \ - C1 = p1;\ - C2 = p2;\ - C3 = p3;\ - C4 = p4;\ - C5 = p5;\ - C6 = p6;\ - C7 = p7;\ - C8 = p8;\ - C9 = p9;\ - C10 = p10;\ - C11 = p11;\ - \ - } \ - NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6), C7 (p7), C8 (p8), C9 (p9), C10 (p10), C11 (p11) {} - -#define sql_compare_type_def_11(NAME, WHAT, NUM) \ - return WHAT##_list(d, m, true, true, true, true, true, true, true, true, true, true, true) - -#define sql_compare_type_defe_11(NAME, WHAT, NUM) \ - return WHAT##_list(d, c, m, true, true, true, true, true, true, true, true, true, true, true) - -#define sql_COMPARE__11(NAME, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19, C20, C21, C22, C23, C24, C25) \ - template \ - int sql_compare_##NAME (const NAME &x, const NAME &y) { \ - int cmp; \ - cmp = mysqlpp::sql_cmp(x.C1 , y.C1 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C2 , y.C2 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C3 , y.C3 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C4 , y.C4 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C5 , y.C5 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C6 , y.C6 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C7 , y.C7 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C8 , y.C8 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C9 , y.C9 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C10 , y.C10 ); \ - if (cmp) return cmp; \ - return mysqlpp::sql_cmp(x.C11 , y.C11 ); \ - } \ - template \ - int compare (const NAME &x, const NAME &y) { \ - int cmp; \ - cmp = mysqlpp::sql_cmp(x.C1 , y.C1 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C2 , y.C2 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C3 , y.C3 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C4 , y.C4 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C5 , y.C5 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C6 , y.C6 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C7 , y.C7 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C8 , y.C8 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C9 , y.C9 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C10 , y.C10 ); \ - if (cmp) return cmp; \ - return mysqlpp::sql_cmp(x.C11 , y.C11 ); \ - } - -// --------------------------------------------------- -// End Compare 11 -// --------------------------------------------------- - - -// --------------------------------------------------- -// Begin Compare 12 -// --------------------------------------------------- - -#define sql_compare_define_12(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \ - NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6), C7 (p7), C8 (p8), C9 (p9), C10 (p10), C11 (p11), C12 (p12) {} \ - void set (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12) { \ - C1 = p1;\ - C2 = p2;\ - C3 = p3;\ - C4 = p4;\ - C5 = p5;\ - C6 = p6;\ - C7 = p7;\ - C8 = p8;\ - C9 = p9;\ - C10 = p10;\ - C11 = p11;\ - C12 = p12;\ - \ - } \ - sql_compare_define(NAME) - -#define sql_construct_define_12(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \ - void set (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12) { \ - C1 = p1;\ - C2 = p2;\ - C3 = p3;\ - C4 = p4;\ - C5 = p5;\ - C6 = p6;\ - C7 = p7;\ - C8 = p8;\ - C9 = p9;\ - C10 = p10;\ - C11 = p11;\ - C12 = p12;\ - \ - } \ - NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6), C7 (p7), C8 (p8), C9 (p9), C10 (p10), C11 (p11), C12 (p12) {} - -#define sql_compare_type_def_12(NAME, WHAT, NUM) \ - return WHAT##_list(d, m, true, true, true, true, true, true, true, true, true, true, true, true) - -#define sql_compare_type_defe_12(NAME, WHAT, NUM) \ - return WHAT##_list(d, c, m, true, true, true, true, true, true, true, true, true, true, true, true) - -#define sql_COMPARE__12(NAME, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19, C20, C21, C22, C23, C24, C25) \ - template \ - int sql_compare_##NAME (const NAME &x, const NAME &y) { \ - int cmp; \ - cmp = mysqlpp::sql_cmp(x.C1 , y.C1 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C2 , y.C2 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C3 , y.C3 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C4 , y.C4 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C5 , y.C5 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C6 , y.C6 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C7 , y.C7 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C8 , y.C8 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C9 , y.C9 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C10 , y.C10 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C11 , y.C11 ); \ - if (cmp) return cmp; \ - return mysqlpp::sql_cmp(x.C12 , y.C12 ); \ - } \ - template \ - int compare (const NAME &x, const NAME &y) { \ - int cmp; \ - cmp = mysqlpp::sql_cmp(x.C1 , y.C1 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C2 , y.C2 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C3 , y.C3 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C4 , y.C4 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C5 , y.C5 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C6 , y.C6 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C7 , y.C7 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C8 , y.C8 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C9 , y.C9 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C10 , y.C10 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C11 , y.C11 ); \ - if (cmp) return cmp; \ - return mysqlpp::sql_cmp(x.C12 , y.C12 ); \ - } - -// --------------------------------------------------- -// End Compare 12 -// --------------------------------------------------- - - -// --------------------------------------------------- -// Begin Compare 13 -// --------------------------------------------------- - -#define sql_compare_define_13(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \ - NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6), C7 (p7), C8 (p8), C9 (p9), C10 (p10), C11 (p11), C12 (p12), C13 (p13) {} \ - void set (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13) { \ - C1 = p1;\ - C2 = p2;\ - C3 = p3;\ - C4 = p4;\ - C5 = p5;\ - C6 = p6;\ - C7 = p7;\ - C8 = p8;\ - C9 = p9;\ - C10 = p10;\ - C11 = p11;\ - C12 = p12;\ - C13 = p13;\ - \ - } \ - sql_compare_define(NAME) - -#define sql_construct_define_13(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \ - void set (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13) { \ - C1 = p1;\ - C2 = p2;\ - C3 = p3;\ - C4 = p4;\ - C5 = p5;\ - C6 = p6;\ - C7 = p7;\ - C8 = p8;\ - C9 = p9;\ - C10 = p10;\ - C11 = p11;\ - C12 = p12;\ - C13 = p13;\ - \ - } \ - NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6), C7 (p7), C8 (p8), C9 (p9), C10 (p10), C11 (p11), C12 (p12), C13 (p13) {} - -#define sql_compare_type_def_13(NAME, WHAT, NUM) \ - return WHAT##_list(d, m, true, true, true, true, true, true, true, true, true, true, true, true, true) - -#define sql_compare_type_defe_13(NAME, WHAT, NUM) \ - return WHAT##_list(d, c, m, true, true, true, true, true, true, true, true, true, true, true, true, true) - -#define sql_COMPARE__13(NAME, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19, C20, C21, C22, C23, C24, C25) \ - template \ - int sql_compare_##NAME (const NAME &x, const NAME &y) { \ - int cmp; \ - cmp = mysqlpp::sql_cmp(x.C1 , y.C1 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C2 , y.C2 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C3 , y.C3 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C4 , y.C4 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C5 , y.C5 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C6 , y.C6 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C7 , y.C7 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C8 , y.C8 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C9 , y.C9 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C10 , y.C10 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C11 , y.C11 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C12 , y.C12 ); \ - if (cmp) return cmp; \ - return mysqlpp::sql_cmp(x.C13 , y.C13 ); \ - } \ - template \ - int compare (const NAME &x, const NAME &y) { \ - int cmp; \ - cmp = mysqlpp::sql_cmp(x.C1 , y.C1 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C2 , y.C2 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C3 , y.C3 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C4 , y.C4 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C5 , y.C5 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C6 , y.C6 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C7 , y.C7 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C8 , y.C8 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C9 , y.C9 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C10 , y.C10 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C11 , y.C11 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C12 , y.C12 ); \ - if (cmp) return cmp; \ - return mysqlpp::sql_cmp(x.C13 , y.C13 ); \ - } - -// --------------------------------------------------- -// End Compare 13 -// --------------------------------------------------- - - -// --------------------------------------------------- -// Begin Compare 14 -// --------------------------------------------------- - -#define sql_compare_define_14(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \ - NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6), C7 (p7), C8 (p8), C9 (p9), C10 (p10), C11 (p11), C12 (p12), C13 (p13), C14 (p14) {} \ - void set (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14) { \ - C1 = p1;\ - C2 = p2;\ - C3 = p3;\ - C4 = p4;\ - C5 = p5;\ - C6 = p6;\ - C7 = p7;\ - C8 = p8;\ - C9 = p9;\ - C10 = p10;\ - C11 = p11;\ - C12 = p12;\ - C13 = p13;\ - C14 = p14;\ - \ - } \ - sql_compare_define(NAME) - -#define sql_construct_define_14(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \ - void set (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14) { \ - C1 = p1;\ - C2 = p2;\ - C3 = p3;\ - C4 = p4;\ - C5 = p5;\ - C6 = p6;\ - C7 = p7;\ - C8 = p8;\ - C9 = p9;\ - C10 = p10;\ - C11 = p11;\ - C12 = p12;\ - C13 = p13;\ - C14 = p14;\ - \ - } \ - NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6), C7 (p7), C8 (p8), C9 (p9), C10 (p10), C11 (p11), C12 (p12), C13 (p13), C14 (p14) {} - -#define sql_compare_type_def_14(NAME, WHAT, NUM) \ - return WHAT##_list(d, m, true, true, true, true, true, true, true, true, true, true, true, true, true, true) - -#define sql_compare_type_defe_14(NAME, WHAT, NUM) \ - return WHAT##_list(d, c, m, true, true, true, true, true, true, true, true, true, true, true, true, true, true) - -#define sql_COMPARE__14(NAME, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19, C20, C21, C22, C23, C24, C25) \ - template \ - int sql_compare_##NAME (const NAME &x, const NAME &y) { \ - int cmp; \ - cmp = mysqlpp::sql_cmp(x.C1 , y.C1 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C2 , y.C2 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C3 , y.C3 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C4 , y.C4 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C5 , y.C5 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C6 , y.C6 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C7 , y.C7 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C8 , y.C8 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C9 , y.C9 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C10 , y.C10 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C11 , y.C11 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C12 , y.C12 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C13 , y.C13 ); \ - if (cmp) return cmp; \ - return mysqlpp::sql_cmp(x.C14 , y.C14 ); \ - } \ - template \ - int compare (const NAME &x, const NAME &y) { \ - int cmp; \ - cmp = mysqlpp::sql_cmp(x.C1 , y.C1 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C2 , y.C2 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C3 , y.C3 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C4 , y.C4 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C5 , y.C5 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C6 , y.C6 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C7 , y.C7 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C8 , y.C8 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C9 , y.C9 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C10 , y.C10 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C11 , y.C11 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C12 , y.C12 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C13 , y.C13 ); \ - if (cmp) return cmp; \ - return mysqlpp::sql_cmp(x.C14 , y.C14 ); \ - } - -// --------------------------------------------------- -// End Compare 14 -// --------------------------------------------------- - - -// --------------------------------------------------- -// Begin Compare 15 -// --------------------------------------------------- - -#define sql_compare_define_15(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \ - NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6), C7 (p7), C8 (p8), C9 (p9), C10 (p10), C11 (p11), C12 (p12), C13 (p13), C14 (p14), C15 (p15) {} \ - void set (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15) { \ - C1 = p1;\ - C2 = p2;\ - C3 = p3;\ - C4 = p4;\ - C5 = p5;\ - C6 = p6;\ - C7 = p7;\ - C8 = p8;\ - C9 = p9;\ - C10 = p10;\ - C11 = p11;\ - C12 = p12;\ - C13 = p13;\ - C14 = p14;\ - C15 = p15;\ - \ - } \ - sql_compare_define(NAME) - -#define sql_construct_define_15(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \ - void set (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15) { \ - C1 = p1;\ - C2 = p2;\ - C3 = p3;\ - C4 = p4;\ - C5 = p5;\ - C6 = p6;\ - C7 = p7;\ - C8 = p8;\ - C9 = p9;\ - C10 = p10;\ - C11 = p11;\ - C12 = p12;\ - C13 = p13;\ - C14 = p14;\ - C15 = p15;\ - \ - } \ - NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6), C7 (p7), C8 (p8), C9 (p9), C10 (p10), C11 (p11), C12 (p12), C13 (p13), C14 (p14), C15 (p15) {} - -#define sql_compare_type_def_15(NAME, WHAT, NUM) \ - return WHAT##_list(d, m, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true) - -#define sql_compare_type_defe_15(NAME, WHAT, NUM) \ - return WHAT##_list(d, c, m, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true) - -#define sql_COMPARE__15(NAME, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19, C20, C21, C22, C23, C24, C25) \ - template \ - int sql_compare_##NAME (const NAME &x, const NAME &y) { \ - int cmp; \ - cmp = mysqlpp::sql_cmp(x.C1 , y.C1 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C2 , y.C2 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C3 , y.C3 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C4 , y.C4 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C5 , y.C5 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C6 , y.C6 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C7 , y.C7 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C8 , y.C8 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C9 , y.C9 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C10 , y.C10 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C11 , y.C11 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C12 , y.C12 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C13 , y.C13 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C14 , y.C14 ); \ - if (cmp) return cmp; \ - return mysqlpp::sql_cmp(x.C15 , y.C15 ); \ - } \ - template \ - int compare (const NAME &x, const NAME &y) { \ - int cmp; \ - cmp = mysqlpp::sql_cmp(x.C1 , y.C1 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C2 , y.C2 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C3 , y.C3 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C4 , y.C4 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C5 , y.C5 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C6 , y.C6 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C7 , y.C7 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C8 , y.C8 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C9 , y.C9 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C10 , y.C10 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C11 , y.C11 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C12 , y.C12 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C13 , y.C13 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C14 , y.C14 ); \ - if (cmp) return cmp; \ - return mysqlpp::sql_cmp(x.C15 , y.C15 ); \ - } - -// --------------------------------------------------- -// End Compare 15 -// --------------------------------------------------- - - -// --------------------------------------------------- -// Begin Compare 16 -// --------------------------------------------------- - -#define sql_compare_define_16(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \ - NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6), C7 (p7), C8 (p8), C9 (p9), C10 (p10), C11 (p11), C12 (p12), C13 (p13), C14 (p14), C15 (p15), C16 (p16) {} \ - void set (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16) { \ - C1 = p1;\ - C2 = p2;\ - C3 = p3;\ - C4 = p4;\ - C5 = p5;\ - C6 = p6;\ - C7 = p7;\ - C8 = p8;\ - C9 = p9;\ - C10 = p10;\ - C11 = p11;\ - C12 = p12;\ - C13 = p13;\ - C14 = p14;\ - C15 = p15;\ - C16 = p16;\ - \ - } \ - sql_compare_define(NAME) - -#define sql_construct_define_16(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \ - void set (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16) { \ - C1 = p1;\ - C2 = p2;\ - C3 = p3;\ - C4 = p4;\ - C5 = p5;\ - C6 = p6;\ - C7 = p7;\ - C8 = p8;\ - C9 = p9;\ - C10 = p10;\ - C11 = p11;\ - C12 = p12;\ - C13 = p13;\ - C14 = p14;\ - C15 = p15;\ - C16 = p16;\ - \ - } \ - NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6), C7 (p7), C8 (p8), C9 (p9), C10 (p10), C11 (p11), C12 (p12), C13 (p13), C14 (p14), C15 (p15), C16 (p16) {} - -#define sql_compare_type_def_16(NAME, WHAT, NUM) \ - return WHAT##_list(d, m, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true) - -#define sql_compare_type_defe_16(NAME, WHAT, NUM) \ - return WHAT##_list(d, c, m, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true) - -#define sql_COMPARE__16(NAME, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19, C20, C21, C22, C23, C24, C25) \ - template \ - int sql_compare_##NAME (const NAME &x, const NAME &y) { \ - int cmp; \ - cmp = mysqlpp::sql_cmp(x.C1 , y.C1 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C2 , y.C2 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C3 , y.C3 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C4 , y.C4 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C5 , y.C5 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C6 , y.C6 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C7 , y.C7 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C8 , y.C8 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C9 , y.C9 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C10 , y.C10 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C11 , y.C11 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C12 , y.C12 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C13 , y.C13 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C14 , y.C14 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C15 , y.C15 ); \ - if (cmp) return cmp; \ - return mysqlpp::sql_cmp(x.C16 , y.C16 ); \ - } \ - template \ - int compare (const NAME &x, const NAME &y) { \ - int cmp; \ - cmp = mysqlpp::sql_cmp(x.C1 , y.C1 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C2 , y.C2 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C3 , y.C3 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C4 , y.C4 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C5 , y.C5 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C6 , y.C6 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C7 , y.C7 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C8 , y.C8 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C9 , y.C9 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C10 , y.C10 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C11 , y.C11 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C12 , y.C12 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C13 , y.C13 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C14 , y.C14 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C15 , y.C15 ); \ - if (cmp) return cmp; \ - return mysqlpp::sql_cmp(x.C16 , y.C16 ); \ - } - -// --------------------------------------------------- -// End Compare 16 -// --------------------------------------------------- - - -// --------------------------------------------------- -// Begin Compare 17 -// --------------------------------------------------- - -#define sql_compare_define_17(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \ - NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16, const T17 &p17) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6), C7 (p7), C8 (p8), C9 (p9), C10 (p10), C11 (p11), C12 (p12), C13 (p13), C14 (p14), C15 (p15), C16 (p16), C17 (p17) {} \ - void set (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16, const T17 &p17) { \ - C1 = p1;\ - C2 = p2;\ - C3 = p3;\ - C4 = p4;\ - C5 = p5;\ - C6 = p6;\ - C7 = p7;\ - C8 = p8;\ - C9 = p9;\ - C10 = p10;\ - C11 = p11;\ - C12 = p12;\ - C13 = p13;\ - C14 = p14;\ - C15 = p15;\ - C16 = p16;\ - C17 = p17;\ - \ - } \ - sql_compare_define(NAME) - -#define sql_construct_define_17(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \ - void set (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16, const T17 &p17) { \ - C1 = p1;\ - C2 = p2;\ - C3 = p3;\ - C4 = p4;\ - C5 = p5;\ - C6 = p6;\ - C7 = p7;\ - C8 = p8;\ - C9 = p9;\ - C10 = p10;\ - C11 = p11;\ - C12 = p12;\ - C13 = p13;\ - C14 = p14;\ - C15 = p15;\ - C16 = p16;\ - C17 = p17;\ - \ - } \ - NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16, const T17 &p17) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6), C7 (p7), C8 (p8), C9 (p9), C10 (p10), C11 (p11), C12 (p12), C13 (p13), C14 (p14), C15 (p15), C16 (p16), C17 (p17) {} - -#define sql_compare_type_def_17(NAME, WHAT, NUM) \ - return WHAT##_list(d, m, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true) - -#define sql_compare_type_defe_17(NAME, WHAT, NUM) \ - return WHAT##_list(d, c, m, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true) - -#define sql_COMPARE__17(NAME, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19, C20, C21, C22, C23, C24, C25) \ - template \ - int sql_compare_##NAME (const NAME &x, const NAME &y) { \ - int cmp; \ - cmp = mysqlpp::sql_cmp(x.C1 , y.C1 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C2 , y.C2 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C3 , y.C3 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C4 , y.C4 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C5 , y.C5 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C6 , y.C6 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C7 , y.C7 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C8 , y.C8 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C9 , y.C9 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C10 , y.C10 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C11 , y.C11 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C12 , y.C12 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C13 , y.C13 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C14 , y.C14 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C15 , y.C15 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C16 , y.C16 ); \ - if (cmp) return cmp; \ - return mysqlpp::sql_cmp(x.C17 , y.C17 ); \ - } \ - template \ - int compare (const NAME &x, const NAME &y) { \ - int cmp; \ - cmp = mysqlpp::sql_cmp(x.C1 , y.C1 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C2 , y.C2 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C3 , y.C3 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C4 , y.C4 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C5 , y.C5 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C6 , y.C6 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C7 , y.C7 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C8 , y.C8 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C9 , y.C9 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C10 , y.C10 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C11 , y.C11 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C12 , y.C12 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C13 , y.C13 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C14 , y.C14 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C15 , y.C15 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C16 , y.C16 ); \ - if (cmp) return cmp; \ - return mysqlpp::sql_cmp(x.C17 , y.C17 ); \ - } - -// --------------------------------------------------- -// End Compare 17 -// --------------------------------------------------- - - -// --------------------------------------------------- -// Begin Compare 18 -// --------------------------------------------------- - -#define sql_compare_define_18(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \ - NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16, const T17 &p17, const T18 &p18) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6), C7 (p7), C8 (p8), C9 (p9), C10 (p10), C11 (p11), C12 (p12), C13 (p13), C14 (p14), C15 (p15), C16 (p16), C17 (p17), C18 (p18) {} \ - void set (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16, const T17 &p17, const T18 &p18) { \ - C1 = p1;\ - C2 = p2;\ - C3 = p3;\ - C4 = p4;\ - C5 = p5;\ - C6 = p6;\ - C7 = p7;\ - C8 = p8;\ - C9 = p9;\ - C10 = p10;\ - C11 = p11;\ - C12 = p12;\ - C13 = p13;\ - C14 = p14;\ - C15 = p15;\ - C16 = p16;\ - C17 = p17;\ - C18 = p18;\ - \ - } \ - sql_compare_define(NAME) - -#define sql_construct_define_18(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \ - void set (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16, const T17 &p17, const T18 &p18) { \ - C1 = p1;\ - C2 = p2;\ - C3 = p3;\ - C4 = p4;\ - C5 = p5;\ - C6 = p6;\ - C7 = p7;\ - C8 = p8;\ - C9 = p9;\ - C10 = p10;\ - C11 = p11;\ - C12 = p12;\ - C13 = p13;\ - C14 = p14;\ - C15 = p15;\ - C16 = p16;\ - C17 = p17;\ - C18 = p18;\ - \ - } \ - NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16, const T17 &p17, const T18 &p18) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6), C7 (p7), C8 (p8), C9 (p9), C10 (p10), C11 (p11), C12 (p12), C13 (p13), C14 (p14), C15 (p15), C16 (p16), C17 (p17), C18 (p18) {} - -#define sql_compare_type_def_18(NAME, WHAT, NUM) \ - return WHAT##_list(d, m, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true) - -#define sql_compare_type_defe_18(NAME, WHAT, NUM) \ - return WHAT##_list(d, c, m, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true) - -#define sql_COMPARE__18(NAME, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19, C20, C21, C22, C23, C24, C25) \ - template \ - int sql_compare_##NAME (const NAME &x, const NAME &y) { \ - int cmp; \ - cmp = mysqlpp::sql_cmp(x.C1 , y.C1 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C2 , y.C2 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C3 , y.C3 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C4 , y.C4 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C5 , y.C5 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C6 , y.C6 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C7 , y.C7 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C8 , y.C8 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C9 , y.C9 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C10 , y.C10 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C11 , y.C11 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C12 , y.C12 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C13 , y.C13 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C14 , y.C14 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C15 , y.C15 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C16 , y.C16 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C17 , y.C17 ); \ - if (cmp) return cmp; \ - return mysqlpp::sql_cmp(x.C18 , y.C18 ); \ - } \ - template \ - int compare (const NAME &x, const NAME &y) { \ - int cmp; \ - cmp = mysqlpp::sql_cmp(x.C1 , y.C1 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C2 , y.C2 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C3 , y.C3 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C4 , y.C4 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C5 , y.C5 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C6 , y.C6 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C7 , y.C7 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C8 , y.C8 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C9 , y.C9 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C10 , y.C10 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C11 , y.C11 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C12 , y.C12 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C13 , y.C13 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C14 , y.C14 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C15 , y.C15 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C16 , y.C16 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C17 , y.C17 ); \ - if (cmp) return cmp; \ - return mysqlpp::sql_cmp(x.C18 , y.C18 ); \ - } - -// --------------------------------------------------- -// End Compare 18 -// --------------------------------------------------- - - -// --------------------------------------------------- -// Begin Compare 19 -// --------------------------------------------------- - -#define sql_compare_define_19(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \ - NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16, const T17 &p17, const T18 &p18, const T19 &p19) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6), C7 (p7), C8 (p8), C9 (p9), C10 (p10), C11 (p11), C12 (p12), C13 (p13), C14 (p14), C15 (p15), C16 (p16), C17 (p17), C18 (p18), C19 (p19) {} \ - void set (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16, const T17 &p17, const T18 &p18, const T19 &p19) { \ - C1 = p1;\ - C2 = p2;\ - C3 = p3;\ - C4 = p4;\ - C5 = p5;\ - C6 = p6;\ - C7 = p7;\ - C8 = p8;\ - C9 = p9;\ - C10 = p10;\ - C11 = p11;\ - C12 = p12;\ - C13 = p13;\ - C14 = p14;\ - C15 = p15;\ - C16 = p16;\ - C17 = p17;\ - C18 = p18;\ - C19 = p19;\ - \ - } \ - sql_compare_define(NAME) - -#define sql_construct_define_19(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \ - void set (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16, const T17 &p17, const T18 &p18, const T19 &p19) { \ - C1 = p1;\ - C2 = p2;\ - C3 = p3;\ - C4 = p4;\ - C5 = p5;\ - C6 = p6;\ - C7 = p7;\ - C8 = p8;\ - C9 = p9;\ - C10 = p10;\ - C11 = p11;\ - C12 = p12;\ - C13 = p13;\ - C14 = p14;\ - C15 = p15;\ - C16 = p16;\ - C17 = p17;\ - C18 = p18;\ - C19 = p19;\ - \ - } \ - NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16, const T17 &p17, const T18 &p18, const T19 &p19) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6), C7 (p7), C8 (p8), C9 (p9), C10 (p10), C11 (p11), C12 (p12), C13 (p13), C14 (p14), C15 (p15), C16 (p16), C17 (p17), C18 (p18), C19 (p19) {} - -#define sql_compare_type_def_19(NAME, WHAT, NUM) \ - return WHAT##_list(d, m, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true) - -#define sql_compare_type_defe_19(NAME, WHAT, NUM) \ - return WHAT##_list(d, c, m, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true) - -#define sql_COMPARE__19(NAME, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19, C20, C21, C22, C23, C24, C25) \ - template \ - int sql_compare_##NAME (const NAME &x, const NAME &y) { \ - int cmp; \ - cmp = mysqlpp::sql_cmp(x.C1 , y.C1 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C2 , y.C2 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C3 , y.C3 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C4 , y.C4 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C5 , y.C5 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C6 , y.C6 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C7 , y.C7 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C8 , y.C8 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C9 , y.C9 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C10 , y.C10 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C11 , y.C11 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C12 , y.C12 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C13 , y.C13 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C14 , y.C14 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C15 , y.C15 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C16 , y.C16 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C17 , y.C17 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C18 , y.C18 ); \ - if (cmp) return cmp; \ - return mysqlpp::sql_cmp(x.C19 , y.C19 ); \ - } \ - template \ - int compare (const NAME &x, const NAME &y) { \ - int cmp; \ - cmp = mysqlpp::sql_cmp(x.C1 , y.C1 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C2 , y.C2 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C3 , y.C3 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C4 , y.C4 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C5 , y.C5 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C6 , y.C6 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C7 , y.C7 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C8 , y.C8 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C9 , y.C9 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C10 , y.C10 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C11 , y.C11 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C12 , y.C12 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C13 , y.C13 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C14 , y.C14 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C15 , y.C15 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C16 , y.C16 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C17 , y.C17 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C18 , y.C18 ); \ - if (cmp) return cmp; \ - return mysqlpp::sql_cmp(x.C19 , y.C19 ); \ - } - -// --------------------------------------------------- -// End Compare 19 -// --------------------------------------------------- - - -// --------------------------------------------------- -// Begin Compare 20 -// --------------------------------------------------- - -#define sql_compare_define_20(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \ - NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16, const T17 &p17, const T18 &p18, const T19 &p19, const T20 &p20) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6), C7 (p7), C8 (p8), C9 (p9), C10 (p10), C11 (p11), C12 (p12), C13 (p13), C14 (p14), C15 (p15), C16 (p16), C17 (p17), C18 (p18), C19 (p19), C20 (p20) {} \ - void set (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16, const T17 &p17, const T18 &p18, const T19 &p19, const T20 &p20) { \ - C1 = p1;\ - C2 = p2;\ - C3 = p3;\ - C4 = p4;\ - C5 = p5;\ - C6 = p6;\ - C7 = p7;\ - C8 = p8;\ - C9 = p9;\ - C10 = p10;\ - C11 = p11;\ - C12 = p12;\ - C13 = p13;\ - C14 = p14;\ - C15 = p15;\ - C16 = p16;\ - C17 = p17;\ - C18 = p18;\ - C19 = p19;\ - C20 = p20;\ - \ - } \ - sql_compare_define(NAME) - -#define sql_construct_define_20(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \ - void set (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16, const T17 &p17, const T18 &p18, const T19 &p19, const T20 &p20) { \ - C1 = p1;\ - C2 = p2;\ - C3 = p3;\ - C4 = p4;\ - C5 = p5;\ - C6 = p6;\ - C7 = p7;\ - C8 = p8;\ - C9 = p9;\ - C10 = p10;\ - C11 = p11;\ - C12 = p12;\ - C13 = p13;\ - C14 = p14;\ - C15 = p15;\ - C16 = p16;\ - C17 = p17;\ - C18 = p18;\ - C19 = p19;\ - C20 = p20;\ - \ - } \ - NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16, const T17 &p17, const T18 &p18, const T19 &p19, const T20 &p20) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6), C7 (p7), C8 (p8), C9 (p9), C10 (p10), C11 (p11), C12 (p12), C13 (p13), C14 (p14), C15 (p15), C16 (p16), C17 (p17), C18 (p18), C19 (p19), C20 (p20) {} - -#define sql_compare_type_def_20(NAME, WHAT, NUM) \ - return WHAT##_list(d, m, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true) - -#define sql_compare_type_defe_20(NAME, WHAT, NUM) \ - return WHAT##_list(d, c, m, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true) - -#define sql_COMPARE__20(NAME, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19, C20, C21, C22, C23, C24, C25) \ - template \ - int sql_compare_##NAME (const NAME &x, const NAME &y) { \ - int cmp; \ - cmp = mysqlpp::sql_cmp(x.C1 , y.C1 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C2 , y.C2 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C3 , y.C3 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C4 , y.C4 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C5 , y.C5 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C6 , y.C6 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C7 , y.C7 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C8 , y.C8 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C9 , y.C9 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C10 , y.C10 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C11 , y.C11 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C12 , y.C12 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C13 , y.C13 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C14 , y.C14 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C15 , y.C15 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C16 , y.C16 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C17 , y.C17 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C18 , y.C18 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C19 , y.C19 ); \ - if (cmp) return cmp; \ - return mysqlpp::sql_cmp(x.C20 , y.C20 ); \ - } \ - template \ - int compare (const NAME &x, const NAME &y) { \ - int cmp; \ - cmp = mysqlpp::sql_cmp(x.C1 , y.C1 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C2 , y.C2 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C3 , y.C3 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C4 , y.C4 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C5 , y.C5 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C6 , y.C6 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C7 , y.C7 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C8 , y.C8 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C9 , y.C9 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C10 , y.C10 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C11 , y.C11 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C12 , y.C12 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C13 , y.C13 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C14 , y.C14 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C15 , y.C15 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C16 , y.C16 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C17 , y.C17 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C18 , y.C18 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C19 , y.C19 ); \ - if (cmp) return cmp; \ - return mysqlpp::sql_cmp(x.C20 , y.C20 ); \ - } - -// --------------------------------------------------- -// End Compare 20 -// --------------------------------------------------- - - -// --------------------------------------------------- -// Begin Compare 21 -// --------------------------------------------------- - -#define sql_compare_define_21(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \ - NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16, const T17 &p17, const T18 &p18, const T19 &p19, const T20 &p20, const T21 &p21) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6), C7 (p7), C8 (p8), C9 (p9), C10 (p10), C11 (p11), C12 (p12), C13 (p13), C14 (p14), C15 (p15), C16 (p16), C17 (p17), C18 (p18), C19 (p19), C20 (p20), C21 (p21) {} \ - void set (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16, const T17 &p17, const T18 &p18, const T19 &p19, const T20 &p20, const T21 &p21) { \ - C1 = p1;\ - C2 = p2;\ - C3 = p3;\ - C4 = p4;\ - C5 = p5;\ - C6 = p6;\ - C7 = p7;\ - C8 = p8;\ - C9 = p9;\ - C10 = p10;\ - C11 = p11;\ - C12 = p12;\ - C13 = p13;\ - C14 = p14;\ - C15 = p15;\ - C16 = p16;\ - C17 = p17;\ - C18 = p18;\ - C19 = p19;\ - C20 = p20;\ - C21 = p21;\ - \ - } \ - sql_compare_define(NAME) - -#define sql_construct_define_21(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \ - void set (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16, const T17 &p17, const T18 &p18, const T19 &p19, const T20 &p20, const T21 &p21) { \ - C1 = p1;\ - C2 = p2;\ - C3 = p3;\ - C4 = p4;\ - C5 = p5;\ - C6 = p6;\ - C7 = p7;\ - C8 = p8;\ - C9 = p9;\ - C10 = p10;\ - C11 = p11;\ - C12 = p12;\ - C13 = p13;\ - C14 = p14;\ - C15 = p15;\ - C16 = p16;\ - C17 = p17;\ - C18 = p18;\ - C19 = p19;\ - C20 = p20;\ - C21 = p21;\ - \ - } \ - NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16, const T17 &p17, const T18 &p18, const T19 &p19, const T20 &p20, const T21 &p21) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6), C7 (p7), C8 (p8), C9 (p9), C10 (p10), C11 (p11), C12 (p12), C13 (p13), C14 (p14), C15 (p15), C16 (p16), C17 (p17), C18 (p18), C19 (p19), C20 (p20), C21 (p21) {} - -#define sql_compare_type_def_21(NAME, WHAT, NUM) \ - return WHAT##_list(d, m, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true) - -#define sql_compare_type_defe_21(NAME, WHAT, NUM) \ - return WHAT##_list(d, c, m, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true) - -#define sql_COMPARE__21(NAME, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19, C20, C21, C22, C23, C24, C25) \ - template \ - int sql_compare_##NAME (const NAME &x, const NAME &y) { \ - int cmp; \ - cmp = mysqlpp::sql_cmp(x.C1 , y.C1 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C2 , y.C2 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C3 , y.C3 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C4 , y.C4 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C5 , y.C5 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C6 , y.C6 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C7 , y.C7 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C8 , y.C8 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C9 , y.C9 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C10 , y.C10 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C11 , y.C11 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C12 , y.C12 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C13 , y.C13 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C14 , y.C14 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C15 , y.C15 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C16 , y.C16 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C17 , y.C17 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C18 , y.C18 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C19 , y.C19 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C20 , y.C20 ); \ - if (cmp) return cmp; \ - return mysqlpp::sql_cmp(x.C21 , y.C21 ); \ - } \ - template \ - int compare (const NAME &x, const NAME &y) { \ - int cmp; \ - cmp = mysqlpp::sql_cmp(x.C1 , y.C1 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C2 , y.C2 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C3 , y.C3 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C4 , y.C4 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C5 , y.C5 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C6 , y.C6 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C7 , y.C7 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C8 , y.C8 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C9 , y.C9 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C10 , y.C10 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C11 , y.C11 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C12 , y.C12 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C13 , y.C13 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C14 , y.C14 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C15 , y.C15 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C16 , y.C16 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C17 , y.C17 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C18 , y.C18 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C19 , y.C19 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C20 , y.C20 ); \ - if (cmp) return cmp; \ - return mysqlpp::sql_cmp(x.C21 , y.C21 ); \ - } - -// --------------------------------------------------- -// End Compare 21 -// --------------------------------------------------- - - -// --------------------------------------------------- -// Begin Compare 22 -// --------------------------------------------------- - -#define sql_compare_define_22(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \ - NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16, const T17 &p17, const T18 &p18, const T19 &p19, const T20 &p20, const T21 &p21, const T22 &p22) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6), C7 (p7), C8 (p8), C9 (p9), C10 (p10), C11 (p11), C12 (p12), C13 (p13), C14 (p14), C15 (p15), C16 (p16), C17 (p17), C18 (p18), C19 (p19), C20 (p20), C21 (p21), C22 (p22) {} \ - void set (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16, const T17 &p17, const T18 &p18, const T19 &p19, const T20 &p20, const T21 &p21, const T22 &p22) { \ - C1 = p1;\ - C2 = p2;\ - C3 = p3;\ - C4 = p4;\ - C5 = p5;\ - C6 = p6;\ - C7 = p7;\ - C8 = p8;\ - C9 = p9;\ - C10 = p10;\ - C11 = p11;\ - C12 = p12;\ - C13 = p13;\ - C14 = p14;\ - C15 = p15;\ - C16 = p16;\ - C17 = p17;\ - C18 = p18;\ - C19 = p19;\ - C20 = p20;\ - C21 = p21;\ - C22 = p22;\ - \ - } \ - sql_compare_define(NAME) - -#define sql_construct_define_22(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \ - void set (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16, const T17 &p17, const T18 &p18, const T19 &p19, const T20 &p20, const T21 &p21, const T22 &p22) { \ - C1 = p1;\ - C2 = p2;\ - C3 = p3;\ - C4 = p4;\ - C5 = p5;\ - C6 = p6;\ - C7 = p7;\ - C8 = p8;\ - C9 = p9;\ - C10 = p10;\ - C11 = p11;\ - C12 = p12;\ - C13 = p13;\ - C14 = p14;\ - C15 = p15;\ - C16 = p16;\ - C17 = p17;\ - C18 = p18;\ - C19 = p19;\ - C20 = p20;\ - C21 = p21;\ - C22 = p22;\ - \ - } \ - NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16, const T17 &p17, const T18 &p18, const T19 &p19, const T20 &p20, const T21 &p21, const T22 &p22) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6), C7 (p7), C8 (p8), C9 (p9), C10 (p10), C11 (p11), C12 (p12), C13 (p13), C14 (p14), C15 (p15), C16 (p16), C17 (p17), C18 (p18), C19 (p19), C20 (p20), C21 (p21), C22 (p22) {} - -#define sql_compare_type_def_22(NAME, WHAT, NUM) \ - return WHAT##_list(d, m, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true) - -#define sql_compare_type_defe_22(NAME, WHAT, NUM) \ - return WHAT##_list(d, c, m, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true) - -#define sql_COMPARE__22(NAME, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19, C20, C21, C22, C23, C24, C25) \ - template \ - int sql_compare_##NAME (const NAME &x, const NAME &y) { \ - int cmp; \ - cmp = mysqlpp::sql_cmp(x.C1 , y.C1 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C2 , y.C2 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C3 , y.C3 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C4 , y.C4 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C5 , y.C5 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C6 , y.C6 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C7 , y.C7 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C8 , y.C8 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C9 , y.C9 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C10 , y.C10 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C11 , y.C11 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C12 , y.C12 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C13 , y.C13 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C14 , y.C14 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C15 , y.C15 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C16 , y.C16 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C17 , y.C17 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C18 , y.C18 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C19 , y.C19 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C20 , y.C20 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C21 , y.C21 ); \ - if (cmp) return cmp; \ - return mysqlpp::sql_cmp(x.C22 , y.C22 ); \ - } \ - template \ - int compare (const NAME &x, const NAME &y) { \ - int cmp; \ - cmp = mysqlpp::sql_cmp(x.C1 , y.C1 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C2 , y.C2 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C3 , y.C3 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C4 , y.C4 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C5 , y.C5 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C6 , y.C6 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C7 , y.C7 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C8 , y.C8 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C9 , y.C9 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C10 , y.C10 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C11 , y.C11 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C12 , y.C12 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C13 , y.C13 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C14 , y.C14 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C15 , y.C15 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C16 , y.C16 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C17 , y.C17 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C18 , y.C18 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C19 , y.C19 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C20 , y.C20 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C21 , y.C21 ); \ - if (cmp) return cmp; \ - return mysqlpp::sql_cmp(x.C22 , y.C22 ); \ - } - -// --------------------------------------------------- -// End Compare 22 -// --------------------------------------------------- - - -// --------------------------------------------------- -// Begin Compare 23 -// --------------------------------------------------- - -#define sql_compare_define_23(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \ - NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16, const T17 &p17, const T18 &p18, const T19 &p19, const T20 &p20, const T21 &p21, const T22 &p22, const T23 &p23) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6), C7 (p7), C8 (p8), C9 (p9), C10 (p10), C11 (p11), C12 (p12), C13 (p13), C14 (p14), C15 (p15), C16 (p16), C17 (p17), C18 (p18), C19 (p19), C20 (p20), C21 (p21), C22 (p22), C23 (p23) {} \ - void set (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16, const T17 &p17, const T18 &p18, const T19 &p19, const T20 &p20, const T21 &p21, const T22 &p22, const T23 &p23) { \ - C1 = p1;\ - C2 = p2;\ - C3 = p3;\ - C4 = p4;\ - C5 = p5;\ - C6 = p6;\ - C7 = p7;\ - C8 = p8;\ - C9 = p9;\ - C10 = p10;\ - C11 = p11;\ - C12 = p12;\ - C13 = p13;\ - C14 = p14;\ - C15 = p15;\ - C16 = p16;\ - C17 = p17;\ - C18 = p18;\ - C19 = p19;\ - C20 = p20;\ - C21 = p21;\ - C22 = p22;\ - C23 = p23;\ - \ - } \ - sql_compare_define(NAME) - -#define sql_construct_define_23(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \ - void set (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16, const T17 &p17, const T18 &p18, const T19 &p19, const T20 &p20, const T21 &p21, const T22 &p22, const T23 &p23) { \ - C1 = p1;\ - C2 = p2;\ - C3 = p3;\ - C4 = p4;\ - C5 = p5;\ - C6 = p6;\ - C7 = p7;\ - C8 = p8;\ - C9 = p9;\ - C10 = p10;\ - C11 = p11;\ - C12 = p12;\ - C13 = p13;\ - C14 = p14;\ - C15 = p15;\ - C16 = p16;\ - C17 = p17;\ - C18 = p18;\ - C19 = p19;\ - C20 = p20;\ - C21 = p21;\ - C22 = p22;\ - C23 = p23;\ - \ - } \ - NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16, const T17 &p17, const T18 &p18, const T19 &p19, const T20 &p20, const T21 &p21, const T22 &p22, const T23 &p23) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6), C7 (p7), C8 (p8), C9 (p9), C10 (p10), C11 (p11), C12 (p12), C13 (p13), C14 (p14), C15 (p15), C16 (p16), C17 (p17), C18 (p18), C19 (p19), C20 (p20), C21 (p21), C22 (p22), C23 (p23) {} - -#define sql_compare_type_def_23(NAME, WHAT, NUM) \ - return WHAT##_list(d, m, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true) - -#define sql_compare_type_defe_23(NAME, WHAT, NUM) \ - return WHAT##_list(d, c, m, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true) - -#define sql_COMPARE__23(NAME, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19, C20, C21, C22, C23, C24, C25) \ - template \ - int sql_compare_##NAME (const NAME &x, const NAME &y) { \ - int cmp; \ - cmp = mysqlpp::sql_cmp(x.C1 , y.C1 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C2 , y.C2 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C3 , y.C3 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C4 , y.C4 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C5 , y.C5 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C6 , y.C6 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C7 , y.C7 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C8 , y.C8 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C9 , y.C9 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C10 , y.C10 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C11 , y.C11 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C12 , y.C12 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C13 , y.C13 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C14 , y.C14 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C15 , y.C15 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C16 , y.C16 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C17 , y.C17 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C18 , y.C18 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C19 , y.C19 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C20 , y.C20 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C21 , y.C21 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C22 , y.C22 ); \ - if (cmp) return cmp; \ - return mysqlpp::sql_cmp(x.C23 , y.C23 ); \ - } \ - template \ - int compare (const NAME &x, const NAME &y) { \ - int cmp; \ - cmp = mysqlpp::sql_cmp(x.C1 , y.C1 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C2 , y.C2 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C3 , y.C3 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C4 , y.C4 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C5 , y.C5 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C6 , y.C6 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C7 , y.C7 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C8 , y.C8 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C9 , y.C9 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C10 , y.C10 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C11 , y.C11 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C12 , y.C12 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C13 , y.C13 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C14 , y.C14 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C15 , y.C15 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C16 , y.C16 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C17 , y.C17 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C18 , y.C18 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C19 , y.C19 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C20 , y.C20 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C21 , y.C21 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C22 , y.C22 ); \ - if (cmp) return cmp; \ - return mysqlpp::sql_cmp(x.C23 , y.C23 ); \ - } - -// --------------------------------------------------- -// End Compare 23 -// --------------------------------------------------- - - -// --------------------------------------------------- -// Begin Compare 24 -// --------------------------------------------------- - -#define sql_compare_define_24(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \ - NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16, const T17 &p17, const T18 &p18, const T19 &p19, const T20 &p20, const T21 &p21, const T22 &p22, const T23 &p23, const T24 &p24) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6), C7 (p7), C8 (p8), C9 (p9), C10 (p10), C11 (p11), C12 (p12), C13 (p13), C14 (p14), C15 (p15), C16 (p16), C17 (p17), C18 (p18), C19 (p19), C20 (p20), C21 (p21), C22 (p22), C23 (p23), C24 (p24) {} \ - void set (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16, const T17 &p17, const T18 &p18, const T19 &p19, const T20 &p20, const T21 &p21, const T22 &p22, const T23 &p23, const T24 &p24) { \ - C1 = p1;\ - C2 = p2;\ - C3 = p3;\ - C4 = p4;\ - C5 = p5;\ - C6 = p6;\ - C7 = p7;\ - C8 = p8;\ - C9 = p9;\ - C10 = p10;\ - C11 = p11;\ - C12 = p12;\ - C13 = p13;\ - C14 = p14;\ - C15 = p15;\ - C16 = p16;\ - C17 = p17;\ - C18 = p18;\ - C19 = p19;\ - C20 = p20;\ - C21 = p21;\ - C22 = p22;\ - C23 = p23;\ - C24 = p24;\ - \ - } \ - sql_compare_define(NAME) - -#define sql_construct_define_24(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \ - void set (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16, const T17 &p17, const T18 &p18, const T19 &p19, const T20 &p20, const T21 &p21, const T22 &p22, const T23 &p23, const T24 &p24) { \ - C1 = p1;\ - C2 = p2;\ - C3 = p3;\ - C4 = p4;\ - C5 = p5;\ - C6 = p6;\ - C7 = p7;\ - C8 = p8;\ - C9 = p9;\ - C10 = p10;\ - C11 = p11;\ - C12 = p12;\ - C13 = p13;\ - C14 = p14;\ - C15 = p15;\ - C16 = p16;\ - C17 = p17;\ - C18 = p18;\ - C19 = p19;\ - C20 = p20;\ - C21 = p21;\ - C22 = p22;\ - C23 = p23;\ - C24 = p24;\ - \ - } \ - NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16, const T17 &p17, const T18 &p18, const T19 &p19, const T20 &p20, const T21 &p21, const T22 &p22, const T23 &p23, const T24 &p24) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6), C7 (p7), C8 (p8), C9 (p9), C10 (p10), C11 (p11), C12 (p12), C13 (p13), C14 (p14), C15 (p15), C16 (p16), C17 (p17), C18 (p18), C19 (p19), C20 (p20), C21 (p21), C22 (p22), C23 (p23), C24 (p24) {} - -#define sql_compare_type_def_24(NAME, WHAT, NUM) \ - return WHAT##_list(d, m, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true) - -#define sql_compare_type_defe_24(NAME, WHAT, NUM) \ - return WHAT##_list(d, c, m, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true) - -#define sql_COMPARE__24(NAME, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19, C20, C21, C22, C23, C24, C25) \ - template \ - int sql_compare_##NAME (const NAME &x, const NAME &y) { \ - int cmp; \ - cmp = mysqlpp::sql_cmp(x.C1 , y.C1 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C2 , y.C2 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C3 , y.C3 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C4 , y.C4 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C5 , y.C5 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C6 , y.C6 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C7 , y.C7 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C8 , y.C8 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C9 , y.C9 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C10 , y.C10 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C11 , y.C11 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C12 , y.C12 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C13 , y.C13 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C14 , y.C14 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C15 , y.C15 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C16 , y.C16 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C17 , y.C17 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C18 , y.C18 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C19 , y.C19 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C20 , y.C20 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C21 , y.C21 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C22 , y.C22 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C23 , y.C23 ); \ - if (cmp) return cmp; \ - return mysqlpp::sql_cmp(x.C24 , y.C24 ); \ - } \ - template \ - int compare (const NAME &x, const NAME &y) { \ - int cmp; \ - cmp = mysqlpp::sql_cmp(x.C1 , y.C1 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C2 , y.C2 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C3 , y.C3 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C4 , y.C4 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C5 , y.C5 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C6 , y.C6 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C7 , y.C7 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C8 , y.C8 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C9 , y.C9 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C10 , y.C10 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C11 , y.C11 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C12 , y.C12 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C13 , y.C13 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C14 , y.C14 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C15 , y.C15 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C16 , y.C16 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C17 , y.C17 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C18 , y.C18 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C19 , y.C19 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C20 , y.C20 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C21 , y.C21 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C22 , y.C22 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C23 , y.C23 ); \ - if (cmp) return cmp; \ - return mysqlpp::sql_cmp(x.C24 , y.C24 ); \ - } - -// --------------------------------------------------- -// End Compare 24 -// --------------------------------------------------- - - -// --------------------------------------------------- -// Begin Compare 25 -// --------------------------------------------------- - -#define sql_compare_define_25(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \ - NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16, const T17 &p17, const T18 &p18, const T19 &p19, const T20 &p20, const T21 &p21, const T22 &p22, const T23 &p23, const T24 &p24, const T25 &p25) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6), C7 (p7), C8 (p8), C9 (p9), C10 (p10), C11 (p11), C12 (p12), C13 (p13), C14 (p14), C15 (p15), C16 (p16), C17 (p17), C18 (p18), C19 (p19), C20 (p20), C21 (p21), C22 (p22), C23 (p23), C24 (p24), C25 (p25) {} \ - void set (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16, const T17 &p17, const T18 &p18, const T19 &p19, const T20 &p20, const T21 &p21, const T22 &p22, const T23 &p23, const T24 &p24, const T25 &p25) { \ - C1 = p1;\ - C2 = p2;\ - C3 = p3;\ - C4 = p4;\ - C5 = p5;\ - C6 = p6;\ - C7 = p7;\ - C8 = p8;\ - C9 = p9;\ - C10 = p10;\ - C11 = p11;\ - C12 = p12;\ - C13 = p13;\ - C14 = p14;\ - C15 = p15;\ - C16 = p16;\ - C17 = p17;\ - C18 = p18;\ - C19 = p19;\ - C20 = p20;\ - C21 = p21;\ - C22 = p22;\ - C23 = p23;\ - C24 = p24;\ - C25 = p25;\ - \ - } \ - sql_compare_define(NAME) - -#define sql_construct_define_25(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \ - void set (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16, const T17 &p17, const T18 &p18, const T19 &p19, const T20 &p20, const T21 &p21, const T22 &p22, const T23 &p23, const T24 &p24, const T25 &p25) { \ - C1 = p1;\ - C2 = p2;\ - C3 = p3;\ - C4 = p4;\ - C5 = p5;\ - C6 = p6;\ - C7 = p7;\ - C8 = p8;\ - C9 = p9;\ - C10 = p10;\ - C11 = p11;\ - C12 = p12;\ - C13 = p13;\ - C14 = p14;\ - C15 = p15;\ - C16 = p16;\ - C17 = p17;\ - C18 = p18;\ - C19 = p19;\ - C20 = p20;\ - C21 = p21;\ - C22 = p22;\ - C23 = p23;\ - C24 = p24;\ - C25 = p25;\ - \ - } \ - NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16, const T17 &p17, const T18 &p18, const T19 &p19, const T20 &p20, const T21 &p21, const T22 &p22, const T23 &p23, const T24 &p24, const T25 &p25) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6), C7 (p7), C8 (p8), C9 (p9), C10 (p10), C11 (p11), C12 (p12), C13 (p13), C14 (p14), C15 (p15), C16 (p16), C17 (p17), C18 (p18), C19 (p19), C20 (p20), C21 (p21), C22 (p22), C23 (p23), C24 (p24), C25 (p25) {} - -#define sql_compare_type_def_25(NAME, WHAT, NUM) \ - return WHAT##_list(d, m, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true) - -#define sql_compare_type_defe_25(NAME, WHAT, NUM) \ - return WHAT##_list(d, c, m, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true) - -#define sql_COMPARE__25(NAME, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19, C20, C21, C22, C23, C24, C25) \ - template \ - int sql_compare_##NAME (const NAME &x, const NAME &y) { \ - int cmp; \ - cmp = mysqlpp::sql_cmp(x.C1 , y.C1 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C2 , y.C2 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C3 , y.C3 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C4 , y.C4 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C5 , y.C5 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C6 , y.C6 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C7 , y.C7 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C8 , y.C8 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C9 , y.C9 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C10 , y.C10 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C11 , y.C11 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C12 , y.C12 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C13 , y.C13 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C14 , y.C14 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C15 , y.C15 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C16 , y.C16 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C17 , y.C17 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C18 , y.C18 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C19 , y.C19 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C20 , y.C20 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C21 , y.C21 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C22 , y.C22 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C23 , y.C23 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C24 , y.C24 ); \ - if (cmp) return cmp; \ - return mysqlpp::sql_cmp(x.C25 , y.C25 ); \ - } \ - template \ - int compare (const NAME &x, const NAME &y) { \ - int cmp; \ - cmp = mysqlpp::sql_cmp(x.C1 , y.C1 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C2 , y.C2 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C3 , y.C3 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C4 , y.C4 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C5 , y.C5 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C6 , y.C6 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C7 , y.C7 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C8 , y.C8 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C9 , y.C9 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C10 , y.C10 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C11 , y.C11 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C12 , y.C12 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C13 , y.C13 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C14 , y.C14 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C15 , y.C15 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C16 , y.C16 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C17 , y.C17 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C18 , y.C18 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C19 , y.C19 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C20 , y.C20 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C21 , y.C21 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C22 , y.C22 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C23 , y.C23 ); \ - if (cmp) return cmp; \ - cmp = mysqlpp::sql_cmp(x.C24 , y.C24 ); \ - if (cmp) return cmp; \ - return mysqlpp::sql_cmp(x.C25 , y.C25 ); \ - } - -// --------------------------------------------------- -// End Compare 25 -// --------------------------------------------------- - -// --------------------------------------------------- -// Begin Create 1 -// --------------------------------------------------- -#define sql_create_basic_c_order_1(NAME, CMP, CONTR, T1, I1, O1)\ - struct NAME; \ - template int sql_compare_##NAME (const NAME &, const NAME &);\ - struct NAME { \ - T1 I1; \ - NAME () {} \ - NAME (const mysqlpp::Row &row);\ - sql_compare_define_##CMP(NAME, T1, I1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\ - }; \ - template \ - void populate_##NAME (NAME *s, const mysqlpp::Row &row) { \ - s->I1 = static_cast(row.at(O1)); \ - } \ - inline NAME::NAME (const mysqlpp::Row &row) \ - {populate_##NAME(this, row);} \ - sql_COMPARE__##CMP(NAME, I1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ) - -#define sql_create_complete_1(NAME, CMP, CONTR, T1, I1, N1, O1) \ - struct NAME; \ - enum NAME##_enum { \ - NAME##_##I1 \ - ,NAME##_NULL \ - }; \ - template \ - class NAME##_value_list { \ - /*friend std::ostream& operator << <> (std::ostream&, const NAME##_value_list&); */\ - public: \ - const NAME *obj;\ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - NAME##_value_list (const NAME *o, mysqlpp::cchar *d, Manip m) \ - : obj(o), delem(d), manip(m) {} \ - };\ - template \ - class NAME##_##field_list {\ - /* friend std::ostream& operator << <> (std::ostream&, const NAME##_field_list&); */\ - public: \ - const NAME *obj; \ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - NAME##_field_list (const NAME *o, mysqlpp::cchar *d, Manip m) \ - : obj(o), delem(d), manip(m) {} \ - };\ - template \ - class NAME##_equal_list { \ - /* friend std::ostream& operator << <> (std::ostream&, const NAME##_equal_list&); */\ - public: \ - const NAME *obj;\ - mysqlpp::cchar *delem;\ - mysqlpp::cchar *comp;\ - Manip manip;\ - public: \ - NAME##_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) \ - : obj(o), delem(d), comp(c), manip(m) {}\ - };\ - template \ - class NAME##_cus_value_list {\ - /* friend std::ostream& operator << <> (std::ostream&, \ - const NAME##_cus_value_list&); */\ - public:\ - const NAME *obj;\ - std::vector *include;\ - bool del_vector;\ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - ~NAME##_cus_value_list () {if (del_vector) delete include;} \ - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1);\ - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1); \ - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m ,std::vector* i)\ - : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\ - };\ - template \ - class NAME##_cus_field_list { \ - /* friend std::ostream& operator << <> (std::ostream&, \ - const NAME##_cus_field_list&); */\ - public:\ - const NAME *obj; \ - std::vector *include; \ - bool del_vector; \ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - ~NAME##_cus_field_list () {if (del_vector) delete include;} \ - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1); \ - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1); \ - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, std::vector *i) \ - : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\ - };\ - template \ - class NAME##_cus_equal_list {\ - /* friend std::ostream& operator << <> (std::ostream&, \ - const NAME##_cus_equal_list&); */\ - public:\ - const NAME *obj;\ - std::vector *include;\ - bool del_vector;\ - mysqlpp::cchar *delem;\ - mysqlpp::cchar *comp;\ - Manip manip;\ - public:\ - ~NAME##_##cus_equal_list () {if (del_vector) delete include;}\ - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, bool i1); \ - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, NAME##_enum i1); \ - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, std::vector *i) \ - : obj(o), include(i), del_vector(false), delem(d), comp(c), manip(m) {}\ - };\ - template int sql_compare_##NAME (const NAME &, const NAME &);\ - struct NAME { \ - T1 I1; \ - NAME () {} \ - NAME (const mysqlpp::Row &row);\ - void set (const mysqlpp::Row &row);\ - sql_compare_define_##CMP(NAME, T1, I1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\ - sql_construct_define_##CONTR(NAME, T1, I1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\ - static const char *names[];\ - static const char *_table;\ - static const char *& table() {return _table;}\ - NAME##_value_list value_list() const {\ - return value_list(",", mysqlpp::quote);}\ - NAME##_value_list value_list(mysqlpp::cchar *d) const {\ - return value_list(d, mysqlpp::quote);}\ - template \ - NAME##_value_list value_list(mysqlpp::cchar *d, Manip m) const; \ - NAME##_field_list field_list() const {\ - return field_list(",", mysqlpp::do_nothing);}\ - NAME##_field_list field_list(mysqlpp::cchar *d) const {\ - return field_list(d, mysqlpp::do_nothing);}\ - template \ - NAME##_field_list field_list(mysqlpp::cchar *d, Manip m) const; \ - NAME##_equal_list equal_list(mysqlpp::cchar *d = ",", \ - mysqlpp::cchar *c = " = ") const{\ - return equal_list(d, c, mysqlpp::quote);}\ - template \ - NAME##_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) const; \ - /* cus_data */\ - NAME##_cus_value_list value_list(bool i1) const {\ - return value_list(",", mysqlpp::quote, i1);\ - }\ - NAME##_cus_value_list value_list(NAME##_enum i1) const {\ - return value_list(",", mysqlpp::quote, i1);\ - }\ - NAME##_cus_value_list value_list(std::vector *i) const {\ - return value_list(",", mysqlpp::quote, i);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::sql_cmp_type sc) const {\ - return value_list(",", mysqlpp::quote, sc);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, bool i1) const {\ - return value_list(d, mysqlpp::quote, i1);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, NAME##_enum i1) const {\ - return value_list(d, mysqlpp::quote, i1);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, \ - std::vector *i) const {\ - return value_list(d, mysqlpp::quote, i);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, \ - mysqlpp::sql_cmp_type sc) const {\ - return value_list(d, mysqlpp::quote, sc);\ - }\ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m,\ - bool i1) const; \ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1) const; \ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m, \ - std::vector *i) const;\ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m, \ - mysqlpp::sql_cmp_type sc) const;\ - /* cus field */\ - NAME##_cus_field_list field_list(bool i1) const {\ - return field_list(",", mysqlpp::do_nothing, i1);\ - }\ - NAME##_cus_field_list field_list(NAME##_enum i1) const {\ - return field_list(",", mysqlpp::do_nothing, i1);\ - }\ - NAME##_cus_field_list field_list(std::vector *i) const {\ - return field_list(",", mysqlpp::do_nothing, i);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::sql_cmp_type sc) const\ - {\ - return field_list(",", mysqlpp::do_nothing, sc);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, \ - bool i1) const {\ - return field_list(d, mysqlpp::do_nothing, i1);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d,\ - NAME##_enum i1) const {\ - return field_list(d, mysqlpp::do_nothing, i1);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, \ - std::vector *i) const {\ - return field_list(d, mysqlpp::do_nothing, i);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, \ - mysqlpp::sql_cmp_type sc) const {\ - return field_list(d, mysqlpp::do_nothing, sc);\ - }\ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m,\ - bool i1) const; \ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1) const; \ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m,\ - std::vector *i) const;\ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m, \ - mysqlpp::sql_cmp_type sc) const;\ - /* cus equal */\ - NAME##_cus_equal_list equal_list(bool i1) const {\ - return equal_list(",", " = ", mysqlpp::quote, i1);\ - }\ - NAME##_cus_equal_list equal_list(NAME##_enum i1) const {\ - return equal_list(",", " = ", mysqlpp::quote, i1);\ - }\ - NAME##_cus_equal_list equal_list(std::vector *i) const {\ - return equal_list(",", " = ", mysqlpp::quote, i);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::sql_cmp_type sc) const {\ - return equal_list(",", " = ", mysqlpp::quote, sc);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, bool i1) const {\ - return equal_list(d, " = ", mysqlpp::quote, i1);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, NAME##_enum i1) const {\ - return equal_list(d, " = ", mysqlpp::quote, i1);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, \ - std::vector *i) const {\ - return equal_list(d, " = ", mysqlpp::quote, i);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, \ - mysqlpp::sql_cmp_type sc) const {\ - return equal_list(d, " = ", mysqlpp::quote, sc);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - bool i1) const {\ - return equal_list(d, c, mysqlpp::quote, i1);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - NAME##_enum i1) const {\ - return equal_list(d, c, mysqlpp::quote, i1);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - std::vector *i) const {\ - return equal_list(d, c, mysqlpp::quote, i);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - mysqlpp::sql_cmp_type sc) const {\ - return equal_list(d, c, mysqlpp::quote, sc);\ - }\ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - bool i1) const; \ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - NAME##_enum i1) const; \ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - std::vector *i) const;\ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - mysqlpp::sql_cmp_type sc) const;\ - }; \ - MYSQLPP_SSQLS_EXPAND(\ - const char *NAME::names[] = { \ - N1 \ - }; \ - const char *NAME::_table = #NAME ;\ - )\ - template \ - NAME##_cus_value_list::NAME##_cus_value_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1) \ - { \ - delem = d;\ - manip = m;\ - del_vector = true;\ - obj = o; \ - include = new std::vector(1, false);\ - if (i1) (*include)[0]=true;\ - } \ - template \ - NAME##_cus_value_list::NAME##_cus_value_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1) { \ - delem = d;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(1, false); \ - (*include)[i1]=true;\ - }\ - template \ - NAME##_cus_field_list::NAME##_cus_field_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1) {\ - delem = d;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(1, false); \ - if (i1) (*include)[0]=true;\ - } \ - template \ - NAME##_cus_field_list::NAME##_cus_field_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1) { \ - delem = d;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(1, false); \ - (*include)[i1]=true;\ - }\ - template \ - NAME##_cus_equal_list::NAME##_cus_equal_list\ - (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, bool i1) { \ - delem = d;\ - comp = c;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(1, false); \ - if (i1) (*include)[0]=true;\ - } \ - template \ - NAME##_cus_equal_list::NAME##_cus_equal_list\ - (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, NAME##_enum i1) { \ - delem = d;\ - comp = c;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(1, false); \ - (*include)[i1]=true;\ - }\ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_value_list& obj) { \ - s << obj.manip << obj.obj->I1; \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_field_list& obj) { \ - s << obj.manip << obj.obj->names[0]; \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_equal_list& obj) { \ - s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1; \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_cus_value_list& obj) { \ - bool before = false; \ - if ((*obj.include)[0]) { \ - s << obj.manip << obj.obj->I1;\ - } \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_cus_field_list& obj) { \ - bool before = false; \ - if ((*obj.include)[0]) { \ - s << obj.manip << obj.obj->names[0];\ - } \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_cus_equal_list& obj) { \ - bool before = false; \ - if ((*obj.include)[0]) { \ - s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1;\ - } \ - return s; \ - } \ - template \ - inline NAME##_value_list NAME::value_list(mysqlpp::cchar *d, Manip m) const { \ - return NAME##_value_list (this, d, m); \ - } \ - template \ - inline NAME##_field_list NAME::field_list(mysqlpp::cchar *d, Manip m) const { \ - return NAME##_field_list (this, d, m); \ - } \ - template \ - inline NAME##_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) const { \ - return NAME##_equal_list (this, d, c, m); \ - } \ - template \ - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m,\ - bool i1) const {\ - return NAME##_cus_value_list (this, d, m, i1); \ - } \ - template \ - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m,\ - bool i1) const { \ - return NAME##_cus_field_list (this, d, m, i1); \ - } \ - template \ - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m,\ - bool i1) const { \ - return NAME##_cus_equal_list (this, d, c, m, i1); \ - } \ - template \ - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1) const { \ - return NAME##_cus_value_list (this, d, m, i1); \ - } \ - template \ - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1) const {\ - return NAME##_cus_field_list (this, d, m, i1); \ - } \ - template \ - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - NAME##_enum i1) const { \ - return NAME##_cus_equal_list (this, d, c, m, i1); \ - } \ - template \ - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m,\ - std::vector *i) const {\ - return NAME##_cus_value_list (this, d, m, i);\ - }\ - template \ - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m,\ - std::vector *i) const {\ - return NAME##_cus_field_list (this, d, m, i);\ - }\ - template \ - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m,\ - std::vector *i) const {\ - return NAME##_cus_equal_list (this, d, c, m, i);\ - }\ - template \ - inline NAME##_cus_value_list \ - NAME::value_list(mysqlpp::cchar *d, Manip m, mysqlpp::sql_cmp_type /*sc*/) const {\ - sql_compare_type_def_##CMP (NAME, value, NUM);\ - }\ - template \ - inline NAME##_cus_field_list \ - NAME::field_list(mysqlpp::cchar *d, Manip m, mysqlpp::sql_cmp_type /*sc*/) const {\ - sql_compare_type_def_##CMP (NAME, field, NUM);\ - }\ - template \ - inline NAME##_cus_equal_list \ - NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, mysqlpp::sql_cmp_type /*sc*/) const {\ - sql_compare_type_defe_##CMP (NAME, equal, NUM);\ - }\ - template \ - void populate_##NAME (NAME *s, const mysqlpp::Row &row) { \ - s->I1 = static_cast(row.at(O1));\ - } \ - inline NAME::NAME (const mysqlpp::Row &row) \ - {populate_##NAME(this, row);}\ - inline void NAME::set (const mysqlpp::Row &row)\ - {populate_##NAME(this, row);}\ - sql_COMPARE__##CMP(NAME, I1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ) - -#define sql_create_basic_1(NAME, CMP, CONTR, T1, I1) \ - sql_create_basic_c_order_1(NAME, CMP, CONTR, T1, I1, 0) - -#define sql_create_1(NAME, CMP, CONTR, T1, I1) \ - sql_create_complete_1(NAME, CMP, CONTR, T1, I1, #I1, 0) \ - -#define sql_create_c_order_1(NAME, CMP, CONTR, T1, I1, O1) \ - sql_create_complete_1(NAME, CMP, CONTR, T1, I1, #I1, O1) - -#define sql_create_c_names_1(NAME, CMP, CONTR, T1, I1, N1) \ - sql_create_complete_1(NAME, CMP, CONTR, T1, I1, N1, 0) - -// --------------------------------------------------- -// End Create 1 -// --------------------------------------------------- - -// --------------------------------------------------- -// Begin Create 2 -// --------------------------------------------------- -#define sql_create_basic_c_order_2(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2)\ - struct NAME; \ - template int sql_compare_##NAME (const NAME &, const NAME &);\ - struct NAME { \ - T1 I1;\ - T2 I2; \ - NAME () {} \ - NAME (const mysqlpp::Row &row);\ - sql_compare_define_##CMP(NAME, T1, I1, T2, I2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\ - }; \ - template \ - void populate_##NAME (NAME *s, const mysqlpp::Row &row) { \ - s->I1 = static_cast(row.at(O1));\ - s->I2 = static_cast(row.at(O2)); \ - } \ - inline NAME::NAME (const mysqlpp::Row &row) \ - {populate_##NAME(this, row);} \ - sql_COMPARE__##CMP(NAME, I1, I2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ) - -#define sql_create_complete_2(NAME, CMP, CONTR, T1, I1, N1, O1, T2, I2, N2, O2) \ - struct NAME; \ - enum NAME##_enum { \ - NAME##_##I1,\ - NAME##_##I2 \ - ,NAME##_NULL \ - }; \ - template \ - class NAME##_value_list { \ - /*friend std::ostream& operator << <> (std::ostream&, const NAME##_value_list&); */\ - public: \ - const NAME *obj;\ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - NAME##_value_list (const NAME *o, mysqlpp::cchar *d, Manip m) \ - : obj(o), delem(d), manip(m) {} \ - };\ - template \ - class NAME##_##field_list {\ - /* friend std::ostream& operator << <> (std::ostream&, const NAME##_field_list&); */\ - public: \ - const NAME *obj; \ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - NAME##_field_list (const NAME *o, mysqlpp::cchar *d, Manip m) \ - : obj(o), delem(d), manip(m) {} \ - };\ - template \ - class NAME##_equal_list { \ - /* friend std::ostream& operator << <> (std::ostream&, const NAME##_equal_list&); */\ - public: \ - const NAME *obj;\ - mysqlpp::cchar *delem;\ - mysqlpp::cchar *comp;\ - Manip manip;\ - public: \ - NAME##_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) \ - : obj(o), delem(d), comp(c), manip(m) {}\ - };\ - template \ - class NAME##_cus_value_list {\ - /* friend std::ostream& operator << <> (std::ostream&, \ - const NAME##_cus_value_list&); */\ - public:\ - const NAME *obj;\ - std::vector *include;\ - bool del_vector;\ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - ~NAME##_cus_value_list () {if (del_vector) delete include;} \ - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2);\ - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2); \ - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m ,std::vector* i)\ - : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\ - };\ - template \ - class NAME##_cus_field_list { \ - /* friend std::ostream& operator << <> (std::ostream&, \ - const NAME##_cus_field_list&); */\ - public:\ - const NAME *obj; \ - std::vector *include; \ - bool del_vector; \ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - ~NAME##_cus_field_list () {if (del_vector) delete include;} \ - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2); \ - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2); \ - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, std::vector *i) \ - : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\ - };\ - template \ - class NAME##_cus_equal_list {\ - /* friend std::ostream& operator << <> (std::ostream&, \ - const NAME##_cus_equal_list&); */\ - public:\ - const NAME *obj;\ - std::vector *include;\ - bool del_vector;\ - mysqlpp::cchar *delem;\ - mysqlpp::cchar *comp;\ - Manip manip;\ - public:\ - ~NAME##_##cus_equal_list () {if (del_vector) delete include;}\ - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, bool i1, bool i2); \ - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2); \ - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, std::vector *i) \ - : obj(o), include(i), del_vector(false), delem(d), comp(c), manip(m) {}\ - };\ - template int sql_compare_##NAME (const NAME &, const NAME &);\ - struct NAME { \ - T1 I1;\ - T2 I2; \ - NAME () {} \ - NAME (const mysqlpp::Row &row);\ - void set (const mysqlpp::Row &row);\ - sql_compare_define_##CMP(NAME, T1, I1, T2, I2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\ - sql_construct_define_##CONTR(NAME, T1, I1, T2, I2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\ - static const char *names[];\ - static const char *_table;\ - static const char *& table() {return _table;}\ - NAME##_value_list value_list() const {\ - return value_list(",", mysqlpp::quote);}\ - NAME##_value_list value_list(mysqlpp::cchar *d) const {\ - return value_list(d, mysqlpp::quote);}\ - template \ - NAME##_value_list value_list(mysqlpp::cchar *d, Manip m) const; \ - NAME##_field_list field_list() const {\ - return field_list(",", mysqlpp::do_nothing);}\ - NAME##_field_list field_list(mysqlpp::cchar *d) const {\ - return field_list(d, mysqlpp::do_nothing);}\ - template \ - NAME##_field_list field_list(mysqlpp::cchar *d, Manip m) const; \ - NAME##_equal_list equal_list(mysqlpp::cchar *d = ",", \ - mysqlpp::cchar *c = " = ") const{\ - return equal_list(d, c, mysqlpp::quote);}\ - template \ - NAME##_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) const; \ - /* cus_data */\ - NAME##_cus_value_list value_list(bool i1, bool i2 = false) const {\ - return value_list(",", mysqlpp::quote, i1, i2);\ - }\ - NAME##_cus_value_list value_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL) const {\ - return value_list(",", mysqlpp::quote, i1, i2);\ - }\ - NAME##_cus_value_list value_list(std::vector *i) const {\ - return value_list(",", mysqlpp::quote, i);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::sql_cmp_type sc) const {\ - return value_list(",", mysqlpp::quote, sc);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, bool i1, bool i2 = false) const {\ - return value_list(d, mysqlpp::quote, i1, i2);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL) const {\ - return value_list(d, mysqlpp::quote, i1, i2);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, \ - std::vector *i) const {\ - return value_list(d, mysqlpp::quote, i);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, \ - mysqlpp::sql_cmp_type sc) const {\ - return value_list(d, mysqlpp::quote, sc);\ - }\ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2 = false) const; \ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL) const; \ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m, \ - std::vector *i) const;\ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m, \ - mysqlpp::sql_cmp_type sc) const;\ - /* cus field */\ - NAME##_cus_field_list field_list(bool i1, bool i2 = false) const {\ - return field_list(",", mysqlpp::do_nothing, i1, i2);\ - }\ - NAME##_cus_field_list field_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL) const {\ - return field_list(",", mysqlpp::do_nothing, i1, i2);\ - }\ - NAME##_cus_field_list field_list(std::vector *i) const {\ - return field_list(",", mysqlpp::do_nothing, i);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::sql_cmp_type sc) const\ - {\ - return field_list(",", mysqlpp::do_nothing, sc);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, \ - bool i1, bool i2 = false) const {\ - return field_list(d, mysqlpp::do_nothing, i1, i2);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL) const {\ - return field_list(d, mysqlpp::do_nothing, i1, i2);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, \ - std::vector *i) const {\ - return field_list(d, mysqlpp::do_nothing, i);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, \ - mysqlpp::sql_cmp_type sc) const {\ - return field_list(d, mysqlpp::do_nothing, sc);\ - }\ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2 = false) const; \ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL) const; \ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m,\ - std::vector *i) const;\ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m, \ - mysqlpp::sql_cmp_type sc) const;\ - /* cus equal */\ - NAME##_cus_equal_list equal_list(bool i1, bool i2 = false) const {\ - return equal_list(",", " = ", mysqlpp::quote, i1, i2);\ - }\ - NAME##_cus_equal_list equal_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL) const {\ - return equal_list(",", " = ", mysqlpp::quote, i1, i2);\ - }\ - NAME##_cus_equal_list equal_list(std::vector *i) const {\ - return equal_list(",", " = ", mysqlpp::quote, i);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::sql_cmp_type sc) const {\ - return equal_list(",", " = ", mysqlpp::quote, sc);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, bool i1, bool i2 = false) const {\ - return equal_list(d, " = ", mysqlpp::quote, i1, i2);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL) const {\ - return equal_list(d, " = ", mysqlpp::quote, i1, i2);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, \ - std::vector *i) const {\ - return equal_list(d, " = ", mysqlpp::quote, i);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, \ - mysqlpp::sql_cmp_type sc) const {\ - return equal_list(d, " = ", mysqlpp::quote, sc);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - bool i1, bool i2 = false) const {\ - return equal_list(d, c, mysqlpp::quote, i1, i2);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL) const {\ - return equal_list(d, c, mysqlpp::quote, i1, i2);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - std::vector *i) const {\ - return equal_list(d, c, mysqlpp::quote, i);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - mysqlpp::sql_cmp_type sc) const {\ - return equal_list(d, c, mysqlpp::quote, sc);\ - }\ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - bool i1, bool i2 = false) const; \ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL) const; \ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - std::vector *i) const;\ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - mysqlpp::sql_cmp_type sc) const;\ - }; \ - MYSQLPP_SSQLS_EXPAND(\ - const char *NAME::names[] = { \ - N1 ,\ - N2 \ - }; \ - const char *NAME::_table = #NAME ;\ - )\ - template \ - NAME##_cus_value_list::NAME##_cus_value_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2) \ - { \ - delem = d;\ - manip = m;\ - del_vector = true;\ - obj = o; \ - include = new std::vector(2, false);\ - if (i1) (*include)[0]=true;\ - if (i2) (*include)[1]=true;\ - } \ - template \ - NAME##_cus_value_list::NAME##_cus_value_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2) { \ - delem = d;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(2, false); \ - if (i1 == NAME##_NULL) return;\ - (*include)[i1]=true;\ - if (i2 == NAME##_NULL) return;\ - (*include)[i2]=true;\ - }\ - template \ - NAME##_cus_field_list::NAME##_cus_field_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2) {\ - delem = d;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(2, false); \ - if (i1) (*include)[0]=true;\ - if (i2) (*include)[1]=true;\ - } \ - template \ - NAME##_cus_field_list::NAME##_cus_field_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2) { \ - delem = d;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(2, false); \ - if (i1 == NAME##_NULL) return;\ - (*include)[i1]=true;\ - if (i2 == NAME##_NULL) return;\ - (*include)[i2]=true;\ - }\ - template \ - NAME##_cus_equal_list::NAME##_cus_equal_list\ - (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, bool i1, bool i2) { \ - delem = d;\ - comp = c;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(2, false); \ - if (i1) (*include)[0]=true;\ - if (i2) (*include)[1]=true;\ - } \ - template \ - NAME##_cus_equal_list::NAME##_cus_equal_list\ - (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2) { \ - delem = d;\ - comp = c;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(2, false); \ - if (i1 == NAME##_NULL) return;\ - (*include)[i1]=true;\ - if (i2 == NAME##_NULL) return;\ - (*include)[i2]=true;\ - }\ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_value_list& obj) { \ - s << obj.manip << obj.obj->I1 << obj.delem;\ - s << obj.manip << obj.obj->I2; \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_field_list& obj) { \ - s << obj.manip << obj.obj->names[0] << obj.delem;\ - s << obj.manip << obj.obj->names[1]; \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_equal_list& obj) { \ - s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1 << obj.delem;\ - s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2; \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_cus_value_list& obj) { \ - bool before = false; \ - if ((*obj.include)[0]) { \ - s << obj.manip << obj.obj->I1;\ - before = true; \ - } \ - if ((*obj.include)[1]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I2;\ - } \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_cus_field_list& obj) { \ - bool before = false; \ - if ((*obj.include)[0]) { \ - s << obj.manip << obj.obj->names[0];\ - before = true; \ - } \ - if ((*obj.include)[1]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[1];\ - } \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_cus_equal_list& obj) { \ - bool before = false; \ - if ((*obj.include)[0]) { \ - s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1;\ - before = true; \ - } \ - if ((*obj.include)[1]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2;\ - } \ - return s; \ - } \ - template \ - inline NAME##_value_list NAME::value_list(mysqlpp::cchar *d, Manip m) const { \ - return NAME##_value_list (this, d, m); \ - } \ - template \ - inline NAME##_field_list NAME::field_list(mysqlpp::cchar *d, Manip m) const { \ - return NAME##_field_list (this, d, m); \ - } \ - template \ - inline NAME##_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) const { \ - return NAME##_equal_list (this, d, c, m); \ - } \ - template \ - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2) const {\ - return NAME##_cus_value_list (this, d, m, i1, i2); \ - } \ - template \ - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2) const { \ - return NAME##_cus_field_list (this, d, m, i1, i2); \ - } \ - template \ - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m,\ - bool i1, bool i2) const { \ - return NAME##_cus_equal_list (this, d, c, m, i1, i2); \ - } \ - template \ - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2) const { \ - return NAME##_cus_value_list (this, d, m, i1, i2); \ - } \ - template \ - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2) const {\ - return NAME##_cus_field_list (this, d, m, i1, i2); \ - } \ - template \ - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - NAME##_enum i1, NAME##_enum i2) const { \ - return NAME##_cus_equal_list (this, d, c, m, i1, i2); \ - } \ - template \ - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m,\ - std::vector *i) const {\ - return NAME##_cus_value_list (this, d, m, i);\ - }\ - template \ - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m,\ - std::vector *i) const {\ - return NAME##_cus_field_list (this, d, m, i);\ - }\ - template \ - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m,\ - std::vector *i) const {\ - return NAME##_cus_equal_list (this, d, c, m, i);\ - }\ - template \ - inline NAME##_cus_value_list \ - NAME::value_list(mysqlpp::cchar *d, Manip m, mysqlpp::sql_cmp_type /*sc*/) const {\ - sql_compare_type_def_##CMP (NAME, value, NUM);\ - }\ - template \ - inline NAME##_cus_field_list \ - NAME::field_list(mysqlpp::cchar *d, Manip m, mysqlpp::sql_cmp_type /*sc*/) const {\ - sql_compare_type_def_##CMP (NAME, field, NUM);\ - }\ - template \ - inline NAME##_cus_equal_list \ - NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, mysqlpp::sql_cmp_type /*sc*/) const {\ - sql_compare_type_defe_##CMP (NAME, equal, NUM);\ - }\ - template \ - void populate_##NAME (NAME *s, const mysqlpp::Row &row) { \ - s->I1 = static_cast(row.at(O1));\ - s->I2 = static_cast(row.at(O2));\ - } \ - inline NAME::NAME (const mysqlpp::Row &row) \ - {populate_##NAME(this, row);}\ - inline void NAME::set (const mysqlpp::Row &row)\ - {populate_##NAME(this, row);}\ - sql_COMPARE__##CMP(NAME, I1, I2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ) - -#define sql_create_basic_2(NAME, CMP, CONTR, T1, I1, T2, I2) \ - sql_create_basic_c_order_2(NAME, CMP, CONTR, T1, I1, 0, T2, I2, 1) - -#define sql_create_2(NAME, CMP, CONTR, T1, I1, T2, I2) \ - sql_create_complete_2(NAME, CMP, CONTR, T1, I1, #I1, 0, T2, I2, #I2, 1) \ - -#define sql_create_c_order_2(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2) \ - sql_create_complete_2(NAME, CMP, CONTR, T1, I1, #I1, O1, T2, I2, #I2, O2) - -#define sql_create_c_names_2(NAME, CMP, CONTR, T1, I1, N1, T2, I2, N2) \ - sql_create_complete_2(NAME, CMP, CONTR, T1, I1, N1, 0, T2, I2, N2, 1) - -// --------------------------------------------------- -// End Create 2 -// --------------------------------------------------- - -// --------------------------------------------------- -// Begin Create 3 -// --------------------------------------------------- -#define sql_create_basic_c_order_3(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3)\ - struct NAME; \ - template int sql_compare_##NAME (const NAME &, const NAME &);\ - struct NAME { \ - T1 I1;\ - T2 I2;\ - T3 I3; \ - NAME () {} \ - NAME (const mysqlpp::Row &row);\ - sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\ - }; \ - template \ - void populate_##NAME (NAME *s, const mysqlpp::Row &row) { \ - s->I1 = static_cast(row.at(O1));\ - s->I2 = static_cast(row.at(O2));\ - s->I3 = static_cast(row.at(O3)); \ - } \ - inline NAME::NAME (const mysqlpp::Row &row) \ - {populate_##NAME(this, row);} \ - sql_COMPARE__##CMP(NAME, I1, I2, I3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ) - -#define sql_create_complete_3(NAME, CMP, CONTR, T1, I1, N1, O1, T2, I2, N2, O2, T3, I3, N3, O3) \ - struct NAME; \ - enum NAME##_enum { \ - NAME##_##I1,\ - NAME##_##I2,\ - NAME##_##I3 \ - ,NAME##_NULL \ - }; \ - template \ - class NAME##_value_list { \ - /*friend std::ostream& operator << <> (std::ostream&, const NAME##_value_list&); */\ - public: \ - const NAME *obj;\ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - NAME##_value_list (const NAME *o, mysqlpp::cchar *d, Manip m) \ - : obj(o), delem(d), manip(m) {} \ - };\ - template \ - class NAME##_##field_list {\ - /* friend std::ostream& operator << <> (std::ostream&, const NAME##_field_list&); */\ - public: \ - const NAME *obj; \ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - NAME##_field_list (const NAME *o, mysqlpp::cchar *d, Manip m) \ - : obj(o), delem(d), manip(m) {} \ - };\ - template \ - class NAME##_equal_list { \ - /* friend std::ostream& operator << <> (std::ostream&, const NAME##_equal_list&); */\ - public: \ - const NAME *obj;\ - mysqlpp::cchar *delem;\ - mysqlpp::cchar *comp;\ - Manip manip;\ - public: \ - NAME##_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) \ - : obj(o), delem(d), comp(c), manip(m) {}\ - };\ - template \ - class NAME##_cus_value_list {\ - /* friend std::ostream& operator << <> (std::ostream&, \ - const NAME##_cus_value_list&); */\ - public:\ - const NAME *obj;\ - std::vector *include;\ - bool del_vector;\ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - ~NAME##_cus_value_list () {if (del_vector) delete include;} \ - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3);\ - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3); \ - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m ,std::vector* i)\ - : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\ - };\ - template \ - class NAME##_cus_field_list { \ - /* friend std::ostream& operator << <> (std::ostream&, \ - const NAME##_cus_field_list&); */\ - public:\ - const NAME *obj; \ - std::vector *include; \ - bool del_vector; \ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - ~NAME##_cus_field_list () {if (del_vector) delete include;} \ - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3); \ - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3); \ - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, std::vector *i) \ - : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\ - };\ - template \ - class NAME##_cus_equal_list {\ - /* friend std::ostream& operator << <> (std::ostream&, \ - const NAME##_cus_equal_list&); */\ - public:\ - const NAME *obj;\ - std::vector *include;\ - bool del_vector;\ - mysqlpp::cchar *delem;\ - mysqlpp::cchar *comp;\ - Manip manip;\ - public:\ - ~NAME##_##cus_equal_list () {if (del_vector) delete include;}\ - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, bool i1, bool i2, bool i3); \ - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3); \ - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, std::vector *i) \ - : obj(o), include(i), del_vector(false), delem(d), comp(c), manip(m) {}\ - };\ - template int sql_compare_##NAME (const NAME &, const NAME &);\ - struct NAME { \ - T1 I1;\ - T2 I2;\ - T3 I3; \ - NAME () {} \ - NAME (const mysqlpp::Row &row);\ - void set (const mysqlpp::Row &row);\ - sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\ - sql_construct_define_##CONTR(NAME, T1, I1, T2, I2, T3, I3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\ - static const char *names[];\ - static const char *_table;\ - static const char *& table() {return _table;}\ - NAME##_value_list value_list() const {\ - return value_list(",", mysqlpp::quote);}\ - NAME##_value_list value_list(mysqlpp::cchar *d) const {\ - return value_list(d, mysqlpp::quote);}\ - template \ - NAME##_value_list value_list(mysqlpp::cchar *d, Manip m) const; \ - NAME##_field_list field_list() const {\ - return field_list(",", mysqlpp::do_nothing);}\ - NAME##_field_list field_list(mysqlpp::cchar *d) const {\ - return field_list(d, mysqlpp::do_nothing);}\ - template \ - NAME##_field_list field_list(mysqlpp::cchar *d, Manip m) const; \ - NAME##_equal_list equal_list(mysqlpp::cchar *d = ",", \ - mysqlpp::cchar *c = " = ") const{\ - return equal_list(d, c, mysqlpp::quote);}\ - template \ - NAME##_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) const; \ - /* cus_data */\ - NAME##_cus_value_list value_list(bool i1, bool i2 = false, bool i3 = false) const {\ - return value_list(",", mysqlpp::quote, i1, i2, i3);\ - }\ - NAME##_cus_value_list value_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL) const {\ - return value_list(",", mysqlpp::quote, i1, i2, i3);\ - }\ - NAME##_cus_value_list value_list(std::vector *i) const {\ - return value_list(",", mysqlpp::quote, i);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::sql_cmp_type sc) const {\ - return value_list(",", mysqlpp::quote, sc);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, bool i1, bool i2 = false, bool i3 = false) const {\ - return value_list(d, mysqlpp::quote, i1, i2, i3);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL) const {\ - return value_list(d, mysqlpp::quote, i1, i2, i3);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, \ - std::vector *i) const {\ - return value_list(d, mysqlpp::quote, i);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, \ - mysqlpp::sql_cmp_type sc) const {\ - return value_list(d, mysqlpp::quote, sc);\ - }\ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2 = false, bool i3 = false) const; \ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL) const; \ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m, \ - std::vector *i) const;\ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m, \ - mysqlpp::sql_cmp_type sc) const;\ - /* cus field */\ - NAME##_cus_field_list field_list(bool i1, bool i2 = false, bool i3 = false) const {\ - return field_list(",", mysqlpp::do_nothing, i1, i2, i3);\ - }\ - NAME##_cus_field_list field_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL) const {\ - return field_list(",", mysqlpp::do_nothing, i1, i2, i3);\ - }\ - NAME##_cus_field_list field_list(std::vector *i) const {\ - return field_list(",", mysqlpp::do_nothing, i);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::sql_cmp_type sc) const\ - {\ - return field_list(",", mysqlpp::do_nothing, sc);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, \ - bool i1, bool i2 = false, bool i3 = false) const {\ - return field_list(d, mysqlpp::do_nothing, i1, i2, i3);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL) const {\ - return field_list(d, mysqlpp::do_nothing, i1, i2, i3);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, \ - std::vector *i) const {\ - return field_list(d, mysqlpp::do_nothing, i);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, \ - mysqlpp::sql_cmp_type sc) const {\ - return field_list(d, mysqlpp::do_nothing, sc);\ - }\ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2 = false, bool i3 = false) const; \ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL) const; \ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m,\ - std::vector *i) const;\ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m, \ - mysqlpp::sql_cmp_type sc) const;\ - /* cus equal */\ - NAME##_cus_equal_list equal_list(bool i1, bool i2 = false, bool i3 = false) const {\ - return equal_list(",", " = ", mysqlpp::quote, i1, i2, i3);\ - }\ - NAME##_cus_equal_list equal_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL) const {\ - return equal_list(",", " = ", mysqlpp::quote, i1, i2, i3);\ - }\ - NAME##_cus_equal_list equal_list(std::vector *i) const {\ - return equal_list(",", " = ", mysqlpp::quote, i);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::sql_cmp_type sc) const {\ - return equal_list(",", " = ", mysqlpp::quote, sc);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, bool i1, bool i2 = false, bool i3 = false) const {\ - return equal_list(d, " = ", mysqlpp::quote, i1, i2, i3);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL) const {\ - return equal_list(d, " = ", mysqlpp::quote, i1, i2, i3);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, \ - std::vector *i) const {\ - return equal_list(d, " = ", mysqlpp::quote, i);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, \ - mysqlpp::sql_cmp_type sc) const {\ - return equal_list(d, " = ", mysqlpp::quote, sc);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - bool i1, bool i2 = false, bool i3 = false) const {\ - return equal_list(d, c, mysqlpp::quote, i1, i2, i3);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL) const {\ - return equal_list(d, c, mysqlpp::quote, i1, i2, i3);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - std::vector *i) const {\ - return equal_list(d, c, mysqlpp::quote, i);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - mysqlpp::sql_cmp_type sc) const {\ - return equal_list(d, c, mysqlpp::quote, sc);\ - }\ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - bool i1, bool i2 = false, bool i3 = false) const; \ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL) const; \ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - std::vector *i) const;\ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - mysqlpp::sql_cmp_type sc) const;\ - }; \ - MYSQLPP_SSQLS_EXPAND(\ - const char *NAME::names[] = { \ - N1 ,\ - N2 ,\ - N3 \ - }; \ - const char *NAME::_table = #NAME ;\ - )\ - template \ - NAME##_cus_value_list::NAME##_cus_value_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3) \ - { \ - delem = d;\ - manip = m;\ - del_vector = true;\ - obj = o; \ - include = new std::vector(3, false);\ - if (i1) (*include)[0]=true;\ - if (i2) (*include)[1]=true;\ - if (i3) (*include)[2]=true;\ - } \ - template \ - NAME##_cus_value_list::NAME##_cus_value_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3) { \ - delem = d;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(3, false); \ - if (i1 == NAME##_NULL) return;\ - (*include)[i1]=true;\ - if (i2 == NAME##_NULL) return;\ - (*include)[i2]=true;\ - if (i3 == NAME##_NULL) return;\ - (*include)[i3]=true;\ - }\ - template \ - NAME##_cus_field_list::NAME##_cus_field_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3) {\ - delem = d;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(3, false); \ - if (i1) (*include)[0]=true;\ - if (i2) (*include)[1]=true;\ - if (i3) (*include)[2]=true;\ - } \ - template \ - NAME##_cus_field_list::NAME##_cus_field_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3) { \ - delem = d;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(3, false); \ - if (i1 == NAME##_NULL) return;\ - (*include)[i1]=true;\ - if (i2 == NAME##_NULL) return;\ - (*include)[i2]=true;\ - if (i3 == NAME##_NULL) return;\ - (*include)[i3]=true;\ - }\ - template \ - NAME##_cus_equal_list::NAME##_cus_equal_list\ - (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, bool i1, bool i2, bool i3) { \ - delem = d;\ - comp = c;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(3, false); \ - if (i1) (*include)[0]=true;\ - if (i2) (*include)[1]=true;\ - if (i3) (*include)[2]=true;\ - } \ - template \ - NAME##_cus_equal_list::NAME##_cus_equal_list\ - (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3) { \ - delem = d;\ - comp = c;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(3, false); \ - if (i1 == NAME##_NULL) return;\ - (*include)[i1]=true;\ - if (i2 == NAME##_NULL) return;\ - (*include)[i2]=true;\ - if (i3 == NAME##_NULL) return;\ - (*include)[i3]=true;\ - }\ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_value_list& obj) { \ - s << obj.manip << obj.obj->I1 << obj.delem;\ - s << obj.manip << obj.obj->I2 << obj.delem;\ - s << obj.manip << obj.obj->I3; \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_field_list& obj) { \ - s << obj.manip << obj.obj->names[0] << obj.delem;\ - s << obj.manip << obj.obj->names[1] << obj.delem;\ - s << obj.manip << obj.obj->names[2]; \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_equal_list& obj) { \ - s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1 << obj.delem;\ - s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2 << obj.delem;\ - s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3; \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_cus_value_list& obj) { \ - bool before = false; \ - if ((*obj.include)[0]) { \ - s << obj.manip << obj.obj->I1;\ - before = true; \ - } \ - if ((*obj.include)[1]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I2;\ - before = true; \ - } \ - if ((*obj.include)[2]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I3;\ - } \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_cus_field_list& obj) { \ - bool before = false; \ - if ((*obj.include)[0]) { \ - s << obj.manip << obj.obj->names[0];\ - before = true; \ - } \ - if ((*obj.include)[1]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[1];\ - before = true; \ - } \ - if ((*obj.include)[2]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[2];\ - } \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_cus_equal_list& obj) { \ - bool before = false; \ - if ((*obj.include)[0]) { \ - s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1;\ - before = true; \ - } \ - if ((*obj.include)[1]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2;\ - before = true; \ - } \ - if ((*obj.include)[2]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3;\ - } \ - return s; \ - } \ - template \ - inline NAME##_value_list NAME::value_list(mysqlpp::cchar *d, Manip m) const { \ - return NAME##_value_list (this, d, m); \ - } \ - template \ - inline NAME##_field_list NAME::field_list(mysqlpp::cchar *d, Manip m) const { \ - return NAME##_field_list (this, d, m); \ - } \ - template \ - inline NAME##_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) const { \ - return NAME##_equal_list (this, d, c, m); \ - } \ - template \ - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2, bool i3) const {\ - return NAME##_cus_value_list (this, d, m, i1, i2, i3); \ - } \ - template \ - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2, bool i3) const { \ - return NAME##_cus_field_list (this, d, m, i1, i2, i3); \ - } \ - template \ - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m,\ - bool i1, bool i2, bool i3) const { \ - return NAME##_cus_equal_list (this, d, c, m, i1, i2, i3); \ - } \ - template \ - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2, NAME##_enum i3) const { \ - return NAME##_cus_value_list (this, d, m, i1, i2, i3); \ - } \ - template \ - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2, NAME##_enum i3) const {\ - return NAME##_cus_field_list (this, d, m, i1, i2, i3); \ - } \ - template \ - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - NAME##_enum i1, NAME##_enum i2, NAME##_enum i3) const { \ - return NAME##_cus_equal_list (this, d, c, m, i1, i2, i3); \ - } \ - template \ - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m,\ - std::vector *i) const {\ - return NAME##_cus_value_list (this, d, m, i);\ - }\ - template \ - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m,\ - std::vector *i) const {\ - return NAME##_cus_field_list (this, d, m, i);\ - }\ - template \ - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m,\ - std::vector *i) const {\ - return NAME##_cus_equal_list (this, d, c, m, i);\ - }\ - template \ - inline NAME##_cus_value_list \ - NAME::value_list(mysqlpp::cchar *d, Manip m, mysqlpp::sql_cmp_type /*sc*/) const {\ - sql_compare_type_def_##CMP (NAME, value, NUM);\ - }\ - template \ - inline NAME##_cus_field_list \ - NAME::field_list(mysqlpp::cchar *d, Manip m, mysqlpp::sql_cmp_type /*sc*/) const {\ - sql_compare_type_def_##CMP (NAME, field, NUM);\ - }\ - template \ - inline NAME##_cus_equal_list \ - NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, mysqlpp::sql_cmp_type /*sc*/) const {\ - sql_compare_type_defe_##CMP (NAME, equal, NUM);\ - }\ - template \ - void populate_##NAME (NAME *s, const mysqlpp::Row &row) { \ - s->I1 = static_cast(row.at(O1));\ - s->I2 = static_cast(row.at(O2));\ - s->I3 = static_cast(row.at(O3));\ - } \ - inline NAME::NAME (const mysqlpp::Row &row) \ - {populate_##NAME(this, row);}\ - inline void NAME::set (const mysqlpp::Row &row)\ - {populate_##NAME(this, row);}\ - sql_COMPARE__##CMP(NAME, I1, I2, I3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ) - -#define sql_create_basic_3(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3) \ - sql_create_basic_c_order_3(NAME, CMP, CONTR, T1, I1, 0, T2, I2, 1, T3, I3, 2) - -#define sql_create_3(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3) \ - sql_create_complete_3(NAME, CMP, CONTR, T1, I1, #I1, 0, T2, I2, #I2, 1, T3, I3, #I3, 2) \ - -#define sql_create_c_order_3(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3) \ - sql_create_complete_3(NAME, CMP, CONTR, T1, I1, #I1, O1, T2, I2, #I2, O2, T3, I3, #I3, O3) - -#define sql_create_c_names_3(NAME, CMP, CONTR, T1, I1, N1, T2, I2, N2, T3, I3, N3) \ - sql_create_complete_3(NAME, CMP, CONTR, T1, I1, N1, 0, T2, I2, N2, 1, T3, I3, N3, 2) - -// --------------------------------------------------- -// End Create 3 -// --------------------------------------------------- - -// --------------------------------------------------- -// Begin Create 4 -// --------------------------------------------------- -#define sql_create_basic_c_order_4(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4)\ - struct NAME; \ - template int sql_compare_##NAME (const NAME &, const NAME &);\ - struct NAME { \ - T1 I1;\ - T2 I2;\ - T3 I3;\ - T4 I4; \ - NAME () {} \ - NAME (const mysqlpp::Row &row);\ - sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\ - }; \ - template \ - void populate_##NAME (NAME *s, const mysqlpp::Row &row) { \ - s->I1 = static_cast(row.at(O1));\ - s->I2 = static_cast(row.at(O2));\ - s->I3 = static_cast(row.at(O3));\ - s->I4 = static_cast(row.at(O4)); \ - } \ - inline NAME::NAME (const mysqlpp::Row &row) \ - {populate_##NAME(this, row);} \ - sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ) - -#define sql_create_complete_4(NAME, CMP, CONTR, T1, I1, N1, O1, T2, I2, N2, O2, T3, I3, N3, O3, T4, I4, N4, O4) \ - struct NAME; \ - enum NAME##_enum { \ - NAME##_##I1,\ - NAME##_##I2,\ - NAME##_##I3,\ - NAME##_##I4 \ - ,NAME##_NULL \ - }; \ - template \ - class NAME##_value_list { \ - /*friend std::ostream& operator << <> (std::ostream&, const NAME##_value_list&); */\ - public: \ - const NAME *obj;\ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - NAME##_value_list (const NAME *o, mysqlpp::cchar *d, Manip m) \ - : obj(o), delem(d), manip(m) {} \ - };\ - template \ - class NAME##_##field_list {\ - /* friend std::ostream& operator << <> (std::ostream&, const NAME##_field_list&); */\ - public: \ - const NAME *obj; \ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - NAME##_field_list (const NAME *o, mysqlpp::cchar *d, Manip m) \ - : obj(o), delem(d), manip(m) {} \ - };\ - template \ - class NAME##_equal_list { \ - /* friend std::ostream& operator << <> (std::ostream&, const NAME##_equal_list&); */\ - public: \ - const NAME *obj;\ - mysqlpp::cchar *delem;\ - mysqlpp::cchar *comp;\ - Manip manip;\ - public: \ - NAME##_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) \ - : obj(o), delem(d), comp(c), manip(m) {}\ - };\ - template \ - class NAME##_cus_value_list {\ - /* friend std::ostream& operator << <> (std::ostream&, \ - const NAME##_cus_value_list&); */\ - public:\ - const NAME *obj;\ - std::vector *include;\ - bool del_vector;\ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - ~NAME##_cus_value_list () {if (del_vector) delete include;} \ - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4);\ - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4); \ - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m ,std::vector* i)\ - : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\ - };\ - template \ - class NAME##_cus_field_list { \ - /* friend std::ostream& operator << <> (std::ostream&, \ - const NAME##_cus_field_list&); */\ - public:\ - const NAME *obj; \ - std::vector *include; \ - bool del_vector; \ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - ~NAME##_cus_field_list () {if (del_vector) delete include;} \ - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4); \ - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4); \ - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, std::vector *i) \ - : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\ - };\ - template \ - class NAME##_cus_equal_list {\ - /* friend std::ostream& operator << <> (std::ostream&, \ - const NAME##_cus_equal_list&); */\ - public:\ - const NAME *obj;\ - std::vector *include;\ - bool del_vector;\ - mysqlpp::cchar *delem;\ - mysqlpp::cchar *comp;\ - Manip manip;\ - public:\ - ~NAME##_##cus_equal_list () {if (del_vector) delete include;}\ - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4); \ - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4); \ - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, std::vector *i) \ - : obj(o), include(i), del_vector(false), delem(d), comp(c), manip(m) {}\ - };\ - template int sql_compare_##NAME (const NAME &, const NAME &);\ - struct NAME { \ - T1 I1;\ - T2 I2;\ - T3 I3;\ - T4 I4; \ - NAME () {} \ - NAME (const mysqlpp::Row &row);\ - void set (const mysqlpp::Row &row);\ - sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\ - sql_construct_define_##CONTR(NAME, T1, I1, T2, I2, T3, I3, T4, I4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\ - static const char *names[];\ - static const char *_table;\ - static const char *& table() {return _table;}\ - NAME##_value_list value_list() const {\ - return value_list(",", mysqlpp::quote);}\ - NAME##_value_list value_list(mysqlpp::cchar *d) const {\ - return value_list(d, mysqlpp::quote);}\ - template \ - NAME##_value_list value_list(mysqlpp::cchar *d, Manip m) const; \ - NAME##_field_list field_list() const {\ - return field_list(",", mysqlpp::do_nothing);}\ - NAME##_field_list field_list(mysqlpp::cchar *d) const {\ - return field_list(d, mysqlpp::do_nothing);}\ - template \ - NAME##_field_list field_list(mysqlpp::cchar *d, Manip m) const; \ - NAME##_equal_list equal_list(mysqlpp::cchar *d = ",", \ - mysqlpp::cchar *c = " = ") const{\ - return equal_list(d, c, mysqlpp::quote);}\ - template \ - NAME##_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) const; \ - /* cus_data */\ - NAME##_cus_value_list value_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false) const {\ - return value_list(",", mysqlpp::quote, i1, i2, i3, i4);\ - }\ - NAME##_cus_value_list value_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL) const {\ - return value_list(",", mysqlpp::quote, i1, i2, i3, i4);\ - }\ - NAME##_cus_value_list value_list(std::vector *i) const {\ - return value_list(",", mysqlpp::quote, i);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::sql_cmp_type sc) const {\ - return value_list(",", mysqlpp::quote, sc);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false) const {\ - return value_list(d, mysqlpp::quote, i1, i2, i3, i4);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL) const {\ - return value_list(d, mysqlpp::quote, i1, i2, i3, i4);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, \ - std::vector *i) const {\ - return value_list(d, mysqlpp::quote, i);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, \ - mysqlpp::sql_cmp_type sc) const {\ - return value_list(d, mysqlpp::quote, sc);\ - }\ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false) const; \ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL) const; \ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m, \ - std::vector *i) const;\ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m, \ - mysqlpp::sql_cmp_type sc) const;\ - /* cus field */\ - NAME##_cus_field_list field_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false) const {\ - return field_list(",", mysqlpp::do_nothing, i1, i2, i3, i4);\ - }\ - NAME##_cus_field_list field_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL) const {\ - return field_list(",", mysqlpp::do_nothing, i1, i2, i3, i4);\ - }\ - NAME##_cus_field_list field_list(std::vector *i) const {\ - return field_list(",", mysqlpp::do_nothing, i);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::sql_cmp_type sc) const\ - {\ - return field_list(",", mysqlpp::do_nothing, sc);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, \ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false) const {\ - return field_list(d, mysqlpp::do_nothing, i1, i2, i3, i4);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL) const {\ - return field_list(d, mysqlpp::do_nothing, i1, i2, i3, i4);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, \ - std::vector *i) const {\ - return field_list(d, mysqlpp::do_nothing, i);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, \ - mysqlpp::sql_cmp_type sc) const {\ - return field_list(d, mysqlpp::do_nothing, sc);\ - }\ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false) const; \ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL) const; \ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m,\ - std::vector *i) const;\ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m, \ - mysqlpp::sql_cmp_type sc) const;\ - /* cus equal */\ - NAME##_cus_equal_list equal_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false) const {\ - return equal_list(",", " = ", mysqlpp::quote, i1, i2, i3, i4);\ - }\ - NAME##_cus_equal_list equal_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL) const {\ - return equal_list(",", " = ", mysqlpp::quote, i1, i2, i3, i4);\ - }\ - NAME##_cus_equal_list equal_list(std::vector *i) const {\ - return equal_list(",", " = ", mysqlpp::quote, i);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::sql_cmp_type sc) const {\ - return equal_list(",", " = ", mysqlpp::quote, sc);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false) const {\ - return equal_list(d, " = ", mysqlpp::quote, i1, i2, i3, i4);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL) const {\ - return equal_list(d, " = ", mysqlpp::quote, i1, i2, i3, i4);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, \ - std::vector *i) const {\ - return equal_list(d, " = ", mysqlpp::quote, i);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, \ - mysqlpp::sql_cmp_type sc) const {\ - return equal_list(d, " = ", mysqlpp::quote, sc);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false) const {\ - return equal_list(d, c, mysqlpp::quote, i1, i2, i3, i4);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL) const {\ - return equal_list(d, c, mysqlpp::quote, i1, i2, i3, i4);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - std::vector *i) const {\ - return equal_list(d, c, mysqlpp::quote, i);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - mysqlpp::sql_cmp_type sc) const {\ - return equal_list(d, c, mysqlpp::quote, sc);\ - }\ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false) const; \ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL) const; \ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - std::vector *i) const;\ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - mysqlpp::sql_cmp_type sc) const;\ - }; \ - MYSQLPP_SSQLS_EXPAND(\ - const char *NAME::names[] = { \ - N1 ,\ - N2 ,\ - N3 ,\ - N4 \ - }; \ - const char *NAME::_table = #NAME ;\ - )\ - template \ - NAME##_cus_value_list::NAME##_cus_value_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4) \ - { \ - delem = d;\ - manip = m;\ - del_vector = true;\ - obj = o; \ - include = new std::vector(4, false);\ - if (i1) (*include)[0]=true;\ - if (i2) (*include)[1]=true;\ - if (i3) (*include)[2]=true;\ - if (i4) (*include)[3]=true;\ - } \ - template \ - NAME##_cus_value_list::NAME##_cus_value_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4) { \ - delem = d;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(4, false); \ - if (i1 == NAME##_NULL) return;\ - (*include)[i1]=true;\ - if (i2 == NAME##_NULL) return;\ - (*include)[i2]=true;\ - if (i3 == NAME##_NULL) return;\ - (*include)[i3]=true;\ - if (i4 == NAME##_NULL) return;\ - (*include)[i4]=true;\ - }\ - template \ - NAME##_cus_field_list::NAME##_cus_field_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4) {\ - delem = d;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(4, false); \ - if (i1) (*include)[0]=true;\ - if (i2) (*include)[1]=true;\ - if (i3) (*include)[2]=true;\ - if (i4) (*include)[3]=true;\ - } \ - template \ - NAME##_cus_field_list::NAME##_cus_field_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4) { \ - delem = d;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(4, false); \ - if (i1 == NAME##_NULL) return;\ - (*include)[i1]=true;\ - if (i2 == NAME##_NULL) return;\ - (*include)[i2]=true;\ - if (i3 == NAME##_NULL) return;\ - (*include)[i3]=true;\ - if (i4 == NAME##_NULL) return;\ - (*include)[i4]=true;\ - }\ - template \ - NAME##_cus_equal_list::NAME##_cus_equal_list\ - (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4) { \ - delem = d;\ - comp = c;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(4, false); \ - if (i1) (*include)[0]=true;\ - if (i2) (*include)[1]=true;\ - if (i3) (*include)[2]=true;\ - if (i4) (*include)[3]=true;\ - } \ - template \ - NAME##_cus_equal_list::NAME##_cus_equal_list\ - (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4) { \ - delem = d;\ - comp = c;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(4, false); \ - if (i1 == NAME##_NULL) return;\ - (*include)[i1]=true;\ - if (i2 == NAME##_NULL) return;\ - (*include)[i2]=true;\ - if (i3 == NAME##_NULL) return;\ - (*include)[i3]=true;\ - if (i4 == NAME##_NULL) return;\ - (*include)[i4]=true;\ - }\ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_value_list& obj) { \ - s << obj.manip << obj.obj->I1 << obj.delem;\ - s << obj.manip << obj.obj->I2 << obj.delem;\ - s << obj.manip << obj.obj->I3 << obj.delem;\ - s << obj.manip << obj.obj->I4; \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_field_list& obj) { \ - s << obj.manip << obj.obj->names[0] << obj.delem;\ - s << obj.manip << obj.obj->names[1] << obj.delem;\ - s << obj.manip << obj.obj->names[2] << obj.delem;\ - s << obj.manip << obj.obj->names[3]; \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_equal_list& obj) { \ - s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1 << obj.delem;\ - s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2 << obj.delem;\ - s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3 << obj.delem;\ - s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4; \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_cus_value_list& obj) { \ - bool before = false; \ - if ((*obj.include)[0]) { \ - s << obj.manip << obj.obj->I1;\ - before = true; \ - } \ - if ((*obj.include)[1]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I2;\ - before = true; \ - } \ - if ((*obj.include)[2]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I3;\ - before = true; \ - } \ - if ((*obj.include)[3]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I4;\ - } \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_cus_field_list& obj) { \ - bool before = false; \ - if ((*obj.include)[0]) { \ - s << obj.manip << obj.obj->names[0];\ - before = true; \ - } \ - if ((*obj.include)[1]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[1];\ - before = true; \ - } \ - if ((*obj.include)[2]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[2];\ - before = true; \ - } \ - if ((*obj.include)[3]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[3];\ - } \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_cus_equal_list& obj) { \ - bool before = false; \ - if ((*obj.include)[0]) { \ - s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1;\ - before = true; \ - } \ - if ((*obj.include)[1]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2;\ - before = true; \ - } \ - if ((*obj.include)[2]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3;\ - before = true; \ - } \ - if ((*obj.include)[3]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4;\ - } \ - return s; \ - } \ - template \ - inline NAME##_value_list NAME::value_list(mysqlpp::cchar *d, Manip m) const { \ - return NAME##_value_list (this, d, m); \ - } \ - template \ - inline NAME##_field_list NAME::field_list(mysqlpp::cchar *d, Manip m) const { \ - return NAME##_field_list (this, d, m); \ - } \ - template \ - inline NAME##_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) const { \ - return NAME##_equal_list (this, d, c, m); \ - } \ - template \ - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2, bool i3, bool i4) const {\ - return NAME##_cus_value_list (this, d, m, i1, i2, i3, i4); \ - } \ - template \ - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2, bool i3, bool i4) const { \ - return NAME##_cus_field_list (this, d, m, i1, i2, i3, i4); \ - } \ - template \ - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m,\ - bool i1, bool i2, bool i3, bool i4) const { \ - return NAME##_cus_equal_list (this, d, c, m, i1, i2, i3, i4); \ - } \ - template \ - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4) const { \ - return NAME##_cus_value_list (this, d, m, i1, i2, i3, i4); \ - } \ - template \ - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4) const {\ - return NAME##_cus_field_list (this, d, m, i1, i2, i3, i4); \ - } \ - template \ - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4) const { \ - return NAME##_cus_equal_list (this, d, c, m, i1, i2, i3, i4); \ - } \ - template \ - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m,\ - std::vector *i) const {\ - return NAME##_cus_value_list (this, d, m, i);\ - }\ - template \ - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m,\ - std::vector *i) const {\ - return NAME##_cus_field_list (this, d, m, i);\ - }\ - template \ - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m,\ - std::vector *i) const {\ - return NAME##_cus_equal_list (this, d, c, m, i);\ - }\ - template \ - inline NAME##_cus_value_list \ - NAME::value_list(mysqlpp::cchar *d, Manip m, mysqlpp::sql_cmp_type /*sc*/) const {\ - sql_compare_type_def_##CMP (NAME, value, NUM);\ - }\ - template \ - inline NAME##_cus_field_list \ - NAME::field_list(mysqlpp::cchar *d, Manip m, mysqlpp::sql_cmp_type /*sc*/) const {\ - sql_compare_type_def_##CMP (NAME, field, NUM);\ - }\ - template \ - inline NAME##_cus_equal_list \ - NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, mysqlpp::sql_cmp_type /*sc*/) const {\ - sql_compare_type_defe_##CMP (NAME, equal, NUM);\ - }\ - template \ - void populate_##NAME (NAME *s, const mysqlpp::Row &row) { \ - s->I1 = static_cast(row.at(O1));\ - s->I2 = static_cast(row.at(O2));\ - s->I3 = static_cast(row.at(O3));\ - s->I4 = static_cast(row.at(O4));\ - } \ - inline NAME::NAME (const mysqlpp::Row &row) \ - {populate_##NAME(this, row);}\ - inline void NAME::set (const mysqlpp::Row &row)\ - {populate_##NAME(this, row);}\ - sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ) - -#define sql_create_basic_4(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4) \ - sql_create_basic_c_order_4(NAME, CMP, CONTR, T1, I1, 0, T2, I2, 1, T3, I3, 2, T4, I4, 3) - -#define sql_create_4(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4) \ - sql_create_complete_4(NAME, CMP, CONTR, T1, I1, #I1, 0, T2, I2, #I2, 1, T3, I3, #I3, 2, T4, I4, #I4, 3) \ - -#define sql_create_c_order_4(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4) \ - sql_create_complete_4(NAME, CMP, CONTR, T1, I1, #I1, O1, T2, I2, #I2, O2, T3, I3, #I3, O3, T4, I4, #I4, O4) - -#define sql_create_c_names_4(NAME, CMP, CONTR, T1, I1, N1, T2, I2, N2, T3, I3, N3, T4, I4, N4) \ - sql_create_complete_4(NAME, CMP, CONTR, T1, I1, N1, 0, T2, I2, N2, 1, T3, I3, N3, 2, T4, I4, N4, 3) - -// --------------------------------------------------- -// End Create 4 -// --------------------------------------------------- - -// --------------------------------------------------- -// Begin Create 5 -// --------------------------------------------------- -#define sql_create_basic_c_order_5(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5)\ - struct NAME; \ - template int sql_compare_##NAME (const NAME &, const NAME &);\ - struct NAME { \ - T1 I1;\ - T2 I2;\ - T3 I3;\ - T4 I4;\ - T5 I5; \ - NAME () {} \ - NAME (const mysqlpp::Row &row);\ - sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\ - }; \ - template \ - void populate_##NAME (NAME *s, const mysqlpp::Row &row) { \ - s->I1 = static_cast(row.at(O1));\ - s->I2 = static_cast(row.at(O2));\ - s->I3 = static_cast(row.at(O3));\ - s->I4 = static_cast(row.at(O4));\ - s->I5 = static_cast(row.at(O5)); \ - } \ - inline NAME::NAME (const mysqlpp::Row &row) \ - {populate_##NAME(this, row);} \ - sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ) - -#define sql_create_complete_5(NAME, CMP, CONTR, T1, I1, N1, O1, T2, I2, N2, O2, T3, I3, N3, O3, T4, I4, N4, O4, T5, I5, N5, O5) \ - struct NAME; \ - enum NAME##_enum { \ - NAME##_##I1,\ - NAME##_##I2,\ - NAME##_##I3,\ - NAME##_##I4,\ - NAME##_##I5 \ - ,NAME##_NULL \ - }; \ - template \ - class NAME##_value_list { \ - /*friend std::ostream& operator << <> (std::ostream&, const NAME##_value_list&); */\ - public: \ - const NAME *obj;\ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - NAME##_value_list (const NAME *o, mysqlpp::cchar *d, Manip m) \ - : obj(o), delem(d), manip(m) {} \ - };\ - template \ - class NAME##_##field_list {\ - /* friend std::ostream& operator << <> (std::ostream&, const NAME##_field_list&); */\ - public: \ - const NAME *obj; \ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - NAME##_field_list (const NAME *o, mysqlpp::cchar *d, Manip m) \ - : obj(o), delem(d), manip(m) {} \ - };\ - template \ - class NAME##_equal_list { \ - /* friend std::ostream& operator << <> (std::ostream&, const NAME##_equal_list&); */\ - public: \ - const NAME *obj;\ - mysqlpp::cchar *delem;\ - mysqlpp::cchar *comp;\ - Manip manip;\ - public: \ - NAME##_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) \ - : obj(o), delem(d), comp(c), manip(m) {}\ - };\ - template \ - class NAME##_cus_value_list {\ - /* friend std::ostream& operator << <> (std::ostream&, \ - const NAME##_cus_value_list&); */\ - public:\ - const NAME *obj;\ - std::vector *include;\ - bool del_vector;\ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - ~NAME##_cus_value_list () {if (del_vector) delete include;} \ - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5);\ - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5); \ - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m ,std::vector* i)\ - : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\ - };\ - template \ - class NAME##_cus_field_list { \ - /* friend std::ostream& operator << <> (std::ostream&, \ - const NAME##_cus_field_list&); */\ - public:\ - const NAME *obj; \ - std::vector *include; \ - bool del_vector; \ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - ~NAME##_cus_field_list () {if (del_vector) delete include;} \ - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5); \ - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5); \ - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, std::vector *i) \ - : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\ - };\ - template \ - class NAME##_cus_equal_list {\ - /* friend std::ostream& operator << <> (std::ostream&, \ - const NAME##_cus_equal_list&); */\ - public:\ - const NAME *obj;\ - std::vector *include;\ - bool del_vector;\ - mysqlpp::cchar *delem;\ - mysqlpp::cchar *comp;\ - Manip manip;\ - public:\ - ~NAME##_##cus_equal_list () {if (del_vector) delete include;}\ - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5); \ - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5); \ - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, std::vector *i) \ - : obj(o), include(i), del_vector(false), delem(d), comp(c), manip(m) {}\ - };\ - template int sql_compare_##NAME (const NAME &, const NAME &);\ - struct NAME { \ - T1 I1;\ - T2 I2;\ - T3 I3;\ - T4 I4;\ - T5 I5; \ - NAME () {} \ - NAME (const mysqlpp::Row &row);\ - void set (const mysqlpp::Row &row);\ - sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\ - sql_construct_define_##CONTR(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\ - static const char *names[];\ - static const char *_table;\ - static const char *& table() {return _table;}\ - NAME##_value_list value_list() const {\ - return value_list(",", mysqlpp::quote);}\ - NAME##_value_list value_list(mysqlpp::cchar *d) const {\ - return value_list(d, mysqlpp::quote);}\ - template \ - NAME##_value_list value_list(mysqlpp::cchar *d, Manip m) const; \ - NAME##_field_list field_list() const {\ - return field_list(",", mysqlpp::do_nothing);}\ - NAME##_field_list field_list(mysqlpp::cchar *d) const {\ - return field_list(d, mysqlpp::do_nothing);}\ - template \ - NAME##_field_list field_list(mysqlpp::cchar *d, Manip m) const; \ - NAME##_equal_list equal_list(mysqlpp::cchar *d = ",", \ - mysqlpp::cchar *c = " = ") const{\ - return equal_list(d, c, mysqlpp::quote);}\ - template \ - NAME##_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) const; \ - /* cus_data */\ - NAME##_cus_value_list value_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false) const {\ - return value_list(",", mysqlpp::quote, i1, i2, i3, i4, i5);\ - }\ - NAME##_cus_value_list value_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL) const {\ - return value_list(",", mysqlpp::quote, i1, i2, i3, i4, i5);\ - }\ - NAME##_cus_value_list value_list(std::vector *i) const {\ - return value_list(",", mysqlpp::quote, i);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::sql_cmp_type sc) const {\ - return value_list(",", mysqlpp::quote, sc);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false) const {\ - return value_list(d, mysqlpp::quote, i1, i2, i3, i4, i5);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL) const {\ - return value_list(d, mysqlpp::quote, i1, i2, i3, i4, i5);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, \ - std::vector *i) const {\ - return value_list(d, mysqlpp::quote, i);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, \ - mysqlpp::sql_cmp_type sc) const {\ - return value_list(d, mysqlpp::quote, sc);\ - }\ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false) const; \ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL) const; \ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m, \ - std::vector *i) const;\ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m, \ - mysqlpp::sql_cmp_type sc) const;\ - /* cus field */\ - NAME##_cus_field_list field_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false) const {\ - return field_list(",", mysqlpp::do_nothing, i1, i2, i3, i4, i5);\ - }\ - NAME##_cus_field_list field_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL) const {\ - return field_list(",", mysqlpp::do_nothing, i1, i2, i3, i4, i5);\ - }\ - NAME##_cus_field_list field_list(std::vector *i) const {\ - return field_list(",", mysqlpp::do_nothing, i);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::sql_cmp_type sc) const\ - {\ - return field_list(",", mysqlpp::do_nothing, sc);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, \ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false) const {\ - return field_list(d, mysqlpp::do_nothing, i1, i2, i3, i4, i5);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL) const {\ - return field_list(d, mysqlpp::do_nothing, i1, i2, i3, i4, i5);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, \ - std::vector *i) const {\ - return field_list(d, mysqlpp::do_nothing, i);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, \ - mysqlpp::sql_cmp_type sc) const {\ - return field_list(d, mysqlpp::do_nothing, sc);\ - }\ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false) const; \ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL) const; \ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m,\ - std::vector *i) const;\ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m, \ - mysqlpp::sql_cmp_type sc) const;\ - /* cus equal */\ - NAME##_cus_equal_list equal_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false) const {\ - return equal_list(",", " = ", mysqlpp::quote, i1, i2, i3, i4, i5);\ - }\ - NAME##_cus_equal_list equal_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL) const {\ - return equal_list(",", " = ", mysqlpp::quote, i1, i2, i3, i4, i5);\ - }\ - NAME##_cus_equal_list equal_list(std::vector *i) const {\ - return equal_list(",", " = ", mysqlpp::quote, i);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::sql_cmp_type sc) const {\ - return equal_list(",", " = ", mysqlpp::quote, sc);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false) const {\ - return equal_list(d, " = ", mysqlpp::quote, i1, i2, i3, i4, i5);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL) const {\ - return equal_list(d, " = ", mysqlpp::quote, i1, i2, i3, i4, i5);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, \ - std::vector *i) const {\ - return equal_list(d, " = ", mysqlpp::quote, i);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, \ - mysqlpp::sql_cmp_type sc) const {\ - return equal_list(d, " = ", mysqlpp::quote, sc);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false) const {\ - return equal_list(d, c, mysqlpp::quote, i1, i2, i3, i4, i5);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL) const {\ - return equal_list(d, c, mysqlpp::quote, i1, i2, i3, i4, i5);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - std::vector *i) const {\ - return equal_list(d, c, mysqlpp::quote, i);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - mysqlpp::sql_cmp_type sc) const {\ - return equal_list(d, c, mysqlpp::quote, sc);\ - }\ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false) const; \ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL) const; \ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - std::vector *i) const;\ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - mysqlpp::sql_cmp_type sc) const;\ - }; \ - MYSQLPP_SSQLS_EXPAND(\ - const char *NAME::names[] = { \ - N1 ,\ - N2 ,\ - N3 ,\ - N4 ,\ - N5 \ - }; \ - const char *NAME::_table = #NAME ;\ - )\ - template \ - NAME##_cus_value_list::NAME##_cus_value_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5) \ - { \ - delem = d;\ - manip = m;\ - del_vector = true;\ - obj = o; \ - include = new std::vector(5, false);\ - if (i1) (*include)[0]=true;\ - if (i2) (*include)[1]=true;\ - if (i3) (*include)[2]=true;\ - if (i4) (*include)[3]=true;\ - if (i5) (*include)[4]=true;\ - } \ - template \ - NAME##_cus_value_list::NAME##_cus_value_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5) { \ - delem = d;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(5, false); \ - if (i1 == NAME##_NULL) return;\ - (*include)[i1]=true;\ - if (i2 == NAME##_NULL) return;\ - (*include)[i2]=true;\ - if (i3 == NAME##_NULL) return;\ - (*include)[i3]=true;\ - if (i4 == NAME##_NULL) return;\ - (*include)[i4]=true;\ - if (i5 == NAME##_NULL) return;\ - (*include)[i5]=true;\ - }\ - template \ - NAME##_cus_field_list::NAME##_cus_field_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5) {\ - delem = d;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(5, false); \ - if (i1) (*include)[0]=true;\ - if (i2) (*include)[1]=true;\ - if (i3) (*include)[2]=true;\ - if (i4) (*include)[3]=true;\ - if (i5) (*include)[4]=true;\ - } \ - template \ - NAME##_cus_field_list::NAME##_cus_field_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5) { \ - delem = d;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(5, false); \ - if (i1 == NAME##_NULL) return;\ - (*include)[i1]=true;\ - if (i2 == NAME##_NULL) return;\ - (*include)[i2]=true;\ - if (i3 == NAME##_NULL) return;\ - (*include)[i3]=true;\ - if (i4 == NAME##_NULL) return;\ - (*include)[i4]=true;\ - if (i5 == NAME##_NULL) return;\ - (*include)[i5]=true;\ - }\ - template \ - NAME##_cus_equal_list::NAME##_cus_equal_list\ - (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5) { \ - delem = d;\ - comp = c;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(5, false); \ - if (i1) (*include)[0]=true;\ - if (i2) (*include)[1]=true;\ - if (i3) (*include)[2]=true;\ - if (i4) (*include)[3]=true;\ - if (i5) (*include)[4]=true;\ - } \ - template \ - NAME##_cus_equal_list::NAME##_cus_equal_list\ - (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5) { \ - delem = d;\ - comp = c;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(5, false); \ - if (i1 == NAME##_NULL) return;\ - (*include)[i1]=true;\ - if (i2 == NAME##_NULL) return;\ - (*include)[i2]=true;\ - if (i3 == NAME##_NULL) return;\ - (*include)[i3]=true;\ - if (i4 == NAME##_NULL) return;\ - (*include)[i4]=true;\ - if (i5 == NAME##_NULL) return;\ - (*include)[i5]=true;\ - }\ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_value_list& obj) { \ - s << obj.manip << obj.obj->I1 << obj.delem;\ - s << obj.manip << obj.obj->I2 << obj.delem;\ - s << obj.manip << obj.obj->I3 << obj.delem;\ - s << obj.manip << obj.obj->I4 << obj.delem;\ - s << obj.manip << obj.obj->I5; \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_field_list& obj) { \ - s << obj.manip << obj.obj->names[0] << obj.delem;\ - s << obj.manip << obj.obj->names[1] << obj.delem;\ - s << obj.manip << obj.obj->names[2] << obj.delem;\ - s << obj.manip << obj.obj->names[3] << obj.delem;\ - s << obj.manip << obj.obj->names[4]; \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_equal_list& obj) { \ - s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1 << obj.delem;\ - s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2 << obj.delem;\ - s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3 << obj.delem;\ - s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4 << obj.delem;\ - s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5; \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_cus_value_list& obj) { \ - bool before = false; \ - if ((*obj.include)[0]) { \ - s << obj.manip << obj.obj->I1;\ - before = true; \ - } \ - if ((*obj.include)[1]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I2;\ - before = true; \ - } \ - if ((*obj.include)[2]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I3;\ - before = true; \ - } \ - if ((*obj.include)[3]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I4;\ - before = true; \ - } \ - if ((*obj.include)[4]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I5;\ - } \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_cus_field_list& obj) { \ - bool before = false; \ - if ((*obj.include)[0]) { \ - s << obj.manip << obj.obj->names[0];\ - before = true; \ - } \ - if ((*obj.include)[1]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[1];\ - before = true; \ - } \ - if ((*obj.include)[2]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[2];\ - before = true; \ - } \ - if ((*obj.include)[3]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[3];\ - before = true; \ - } \ - if ((*obj.include)[4]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[4];\ - } \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_cus_equal_list& obj) { \ - bool before = false; \ - if ((*obj.include)[0]) { \ - s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1;\ - before = true; \ - } \ - if ((*obj.include)[1]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2;\ - before = true; \ - } \ - if ((*obj.include)[2]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3;\ - before = true; \ - } \ - if ((*obj.include)[3]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4;\ - before = true; \ - } \ - if ((*obj.include)[4]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5;\ - } \ - return s; \ - } \ - template \ - inline NAME##_value_list NAME::value_list(mysqlpp::cchar *d, Manip m) const { \ - return NAME##_value_list (this, d, m); \ - } \ - template \ - inline NAME##_field_list NAME::field_list(mysqlpp::cchar *d, Manip m) const { \ - return NAME##_field_list (this, d, m); \ - } \ - template \ - inline NAME##_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) const { \ - return NAME##_equal_list (this, d, c, m); \ - } \ - template \ - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2, bool i3, bool i4, bool i5) const {\ - return NAME##_cus_value_list (this, d, m, i1, i2, i3, i4, i5); \ - } \ - template \ - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2, bool i3, bool i4, bool i5) const { \ - return NAME##_cus_field_list (this, d, m, i1, i2, i3, i4, i5); \ - } \ - template \ - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m,\ - bool i1, bool i2, bool i3, bool i4, bool i5) const { \ - return NAME##_cus_equal_list (this, d, c, m, i1, i2, i3, i4, i5); \ - } \ - template \ - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5) const { \ - return NAME##_cus_value_list (this, d, m, i1, i2, i3, i4, i5); \ - } \ - template \ - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5) const {\ - return NAME##_cus_field_list (this, d, m, i1, i2, i3, i4, i5); \ - } \ - template \ - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5) const { \ - return NAME##_cus_equal_list (this, d, c, m, i1, i2, i3, i4, i5); \ - } \ - template \ - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m,\ - std::vector *i) const {\ - return NAME##_cus_value_list (this, d, m, i);\ - }\ - template \ - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m,\ - std::vector *i) const {\ - return NAME##_cus_field_list (this, d, m, i);\ - }\ - template \ - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m,\ - std::vector *i) const {\ - return NAME##_cus_equal_list (this, d, c, m, i);\ - }\ - template \ - inline NAME##_cus_value_list \ - NAME::value_list(mysqlpp::cchar *d, Manip m, mysqlpp::sql_cmp_type /*sc*/) const {\ - sql_compare_type_def_##CMP (NAME, value, NUM);\ - }\ - template \ - inline NAME##_cus_field_list \ - NAME::field_list(mysqlpp::cchar *d, Manip m, mysqlpp::sql_cmp_type /*sc*/) const {\ - sql_compare_type_def_##CMP (NAME, field, NUM);\ - }\ - template \ - inline NAME##_cus_equal_list \ - NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, mysqlpp::sql_cmp_type /*sc*/) const {\ - sql_compare_type_defe_##CMP (NAME, equal, NUM);\ - }\ - template \ - void populate_##NAME (NAME *s, const mysqlpp::Row &row) { \ - s->I1 = static_cast(row.at(O1));\ - s->I2 = static_cast(row.at(O2));\ - s->I3 = static_cast(row.at(O3));\ - s->I4 = static_cast(row.at(O4));\ - s->I5 = static_cast(row.at(O5));\ - } \ - inline NAME::NAME (const mysqlpp::Row &row) \ - {populate_##NAME(this, row);}\ - inline void NAME::set (const mysqlpp::Row &row)\ - {populate_##NAME(this, row);}\ - sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ) - -#define sql_create_basic_5(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5) \ - sql_create_basic_c_order_5(NAME, CMP, CONTR, T1, I1, 0, T2, I2, 1, T3, I3, 2, T4, I4, 3, T5, I5, 4) - -#define sql_create_5(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5) \ - sql_create_complete_5(NAME, CMP, CONTR, T1, I1, #I1, 0, T2, I2, #I2, 1, T3, I3, #I3, 2, T4, I4, #I4, 3, T5, I5, #I5, 4) \ - -#define sql_create_c_order_5(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5) \ - sql_create_complete_5(NAME, CMP, CONTR, T1, I1, #I1, O1, T2, I2, #I2, O2, T3, I3, #I3, O3, T4, I4, #I4, O4, T5, I5, #I5, O5) - -#define sql_create_c_names_5(NAME, CMP, CONTR, T1, I1, N1, T2, I2, N2, T3, I3, N3, T4, I4, N4, T5, I5, N5) \ - sql_create_complete_5(NAME, CMP, CONTR, T1, I1, N1, 0, T2, I2, N2, 1, T3, I3, N3, 2, T4, I4, N4, 3, T5, I5, N5, 4) - -// --------------------------------------------------- -// End Create 5 -// --------------------------------------------------- - -// --------------------------------------------------- -// Begin Create 6 -// --------------------------------------------------- -#define sql_create_basic_c_order_6(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6)\ - struct NAME; \ - template int sql_compare_##NAME (const NAME &, const NAME &);\ - struct NAME { \ - T1 I1;\ - T2 I2;\ - T3 I3;\ - T4 I4;\ - T5 I5;\ - T6 I6; \ - NAME () {} \ - NAME (const mysqlpp::Row &row);\ - sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\ - }; \ - template \ - void populate_##NAME (NAME *s, const mysqlpp::Row &row) { \ - s->I1 = static_cast(row.at(O1));\ - s->I2 = static_cast(row.at(O2));\ - s->I3 = static_cast(row.at(O3));\ - s->I4 = static_cast(row.at(O4));\ - s->I5 = static_cast(row.at(O5));\ - s->I6 = static_cast(row.at(O6)); \ - } \ - inline NAME::NAME (const mysqlpp::Row &row) \ - {populate_##NAME(this, row);} \ - sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ) - -#define sql_create_complete_6(NAME, CMP, CONTR, T1, I1, N1, O1, T2, I2, N2, O2, T3, I3, N3, O3, T4, I4, N4, O4, T5, I5, N5, O5, T6, I6, N6, O6) \ - struct NAME; \ - enum NAME##_enum { \ - NAME##_##I1,\ - NAME##_##I2,\ - NAME##_##I3,\ - NAME##_##I4,\ - NAME##_##I5,\ - NAME##_##I6 \ - ,NAME##_NULL \ - }; \ - template \ - class NAME##_value_list { \ - /*friend std::ostream& operator << <> (std::ostream&, const NAME##_value_list&); */\ - public: \ - const NAME *obj;\ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - NAME##_value_list (const NAME *o, mysqlpp::cchar *d, Manip m) \ - : obj(o), delem(d), manip(m) {} \ - };\ - template \ - class NAME##_##field_list {\ - /* friend std::ostream& operator << <> (std::ostream&, const NAME##_field_list&); */\ - public: \ - const NAME *obj; \ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - NAME##_field_list (const NAME *o, mysqlpp::cchar *d, Manip m) \ - : obj(o), delem(d), manip(m) {} \ - };\ - template \ - class NAME##_equal_list { \ - /* friend std::ostream& operator << <> (std::ostream&, const NAME##_equal_list&); */\ - public: \ - const NAME *obj;\ - mysqlpp::cchar *delem;\ - mysqlpp::cchar *comp;\ - Manip manip;\ - public: \ - NAME##_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) \ - : obj(o), delem(d), comp(c), manip(m) {}\ - };\ - template \ - class NAME##_cus_value_list {\ - /* friend std::ostream& operator << <> (std::ostream&, \ - const NAME##_cus_value_list&); */\ - public:\ - const NAME *obj;\ - std::vector *include;\ - bool del_vector;\ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - ~NAME##_cus_value_list () {if (del_vector) delete include;} \ - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6);\ - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6); \ - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m ,std::vector* i)\ - : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\ - };\ - template \ - class NAME##_cus_field_list { \ - /* friend std::ostream& operator << <> (std::ostream&, \ - const NAME##_cus_field_list&); */\ - public:\ - const NAME *obj; \ - std::vector *include; \ - bool del_vector; \ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - ~NAME##_cus_field_list () {if (del_vector) delete include;} \ - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6); \ - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6); \ - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, std::vector *i) \ - : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\ - };\ - template \ - class NAME##_cus_equal_list {\ - /* friend std::ostream& operator << <> (std::ostream&, \ - const NAME##_cus_equal_list&); */\ - public:\ - const NAME *obj;\ - std::vector *include;\ - bool del_vector;\ - mysqlpp::cchar *delem;\ - mysqlpp::cchar *comp;\ - Manip manip;\ - public:\ - ~NAME##_##cus_equal_list () {if (del_vector) delete include;}\ - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6); \ - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6); \ - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, std::vector *i) \ - : obj(o), include(i), del_vector(false), delem(d), comp(c), manip(m) {}\ - };\ - template int sql_compare_##NAME (const NAME &, const NAME &);\ - struct NAME { \ - T1 I1;\ - T2 I2;\ - T3 I3;\ - T4 I4;\ - T5 I5;\ - T6 I6; \ - NAME () {} \ - NAME (const mysqlpp::Row &row);\ - void set (const mysqlpp::Row &row);\ - sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\ - sql_construct_define_##CONTR(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\ - static const char *names[];\ - static const char *_table;\ - static const char *& table() {return _table;}\ - NAME##_value_list value_list() const {\ - return value_list(",", mysqlpp::quote);}\ - NAME##_value_list value_list(mysqlpp::cchar *d) const {\ - return value_list(d, mysqlpp::quote);}\ - template \ - NAME##_value_list value_list(mysqlpp::cchar *d, Manip m) const; \ - NAME##_field_list field_list() const {\ - return field_list(",", mysqlpp::do_nothing);}\ - NAME##_field_list field_list(mysqlpp::cchar *d) const {\ - return field_list(d, mysqlpp::do_nothing);}\ - template \ - NAME##_field_list field_list(mysqlpp::cchar *d, Manip m) const; \ - NAME##_equal_list equal_list(mysqlpp::cchar *d = ",", \ - mysqlpp::cchar *c = " = ") const{\ - return equal_list(d, c, mysqlpp::quote);}\ - template \ - NAME##_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) const; \ - /* cus_data */\ - NAME##_cus_value_list value_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false) const {\ - return value_list(",", mysqlpp::quote, i1, i2, i3, i4, i5, i6);\ - }\ - NAME##_cus_value_list value_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL) const {\ - return value_list(",", mysqlpp::quote, i1, i2, i3, i4, i5, i6);\ - }\ - NAME##_cus_value_list value_list(std::vector *i) const {\ - return value_list(",", mysqlpp::quote, i);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::sql_cmp_type sc) const {\ - return value_list(",", mysqlpp::quote, sc);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false) const {\ - return value_list(d, mysqlpp::quote, i1, i2, i3, i4, i5, i6);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL) const {\ - return value_list(d, mysqlpp::quote, i1, i2, i3, i4, i5, i6);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, \ - std::vector *i) const {\ - return value_list(d, mysqlpp::quote, i);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, \ - mysqlpp::sql_cmp_type sc) const {\ - return value_list(d, mysqlpp::quote, sc);\ - }\ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false) const; \ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL) const; \ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m, \ - std::vector *i) const;\ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m, \ - mysqlpp::sql_cmp_type sc) const;\ - /* cus field */\ - NAME##_cus_field_list field_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false) const {\ - return field_list(",", mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6);\ - }\ - NAME##_cus_field_list field_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL) const {\ - return field_list(",", mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6);\ - }\ - NAME##_cus_field_list field_list(std::vector *i) const {\ - return field_list(",", mysqlpp::do_nothing, i);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::sql_cmp_type sc) const\ - {\ - return field_list(",", mysqlpp::do_nothing, sc);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, \ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false) const {\ - return field_list(d, mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL) const {\ - return field_list(d, mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, \ - std::vector *i) const {\ - return field_list(d, mysqlpp::do_nothing, i);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, \ - mysqlpp::sql_cmp_type sc) const {\ - return field_list(d, mysqlpp::do_nothing, sc);\ - }\ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false) const; \ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL) const; \ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m,\ - std::vector *i) const;\ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m, \ - mysqlpp::sql_cmp_type sc) const;\ - /* cus equal */\ - NAME##_cus_equal_list equal_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false) const {\ - return equal_list(",", " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6);\ - }\ - NAME##_cus_equal_list equal_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL) const {\ - return equal_list(",", " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6);\ - }\ - NAME##_cus_equal_list equal_list(std::vector *i) const {\ - return equal_list(",", " = ", mysqlpp::quote, i);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::sql_cmp_type sc) const {\ - return equal_list(",", " = ", mysqlpp::quote, sc);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false) const {\ - return equal_list(d, " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL) const {\ - return equal_list(d, " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, \ - std::vector *i) const {\ - return equal_list(d, " = ", mysqlpp::quote, i);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, \ - mysqlpp::sql_cmp_type sc) const {\ - return equal_list(d, " = ", mysqlpp::quote, sc);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false) const {\ - return equal_list(d, c, mysqlpp::quote, i1, i2, i3, i4, i5, i6);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL) const {\ - return equal_list(d, c, mysqlpp::quote, i1, i2, i3, i4, i5, i6);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - std::vector *i) const {\ - return equal_list(d, c, mysqlpp::quote, i);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - mysqlpp::sql_cmp_type sc) const {\ - return equal_list(d, c, mysqlpp::quote, sc);\ - }\ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false) const; \ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL) const; \ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - std::vector *i) const;\ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - mysqlpp::sql_cmp_type sc) const;\ - }; \ - MYSQLPP_SSQLS_EXPAND(\ - const char *NAME::names[] = { \ - N1 ,\ - N2 ,\ - N3 ,\ - N4 ,\ - N5 ,\ - N6 \ - }; \ - const char *NAME::_table = #NAME ;\ - )\ - template \ - NAME##_cus_value_list::NAME##_cus_value_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6) \ - { \ - delem = d;\ - manip = m;\ - del_vector = true;\ - obj = o; \ - include = new std::vector(6, false);\ - if (i1) (*include)[0]=true;\ - if (i2) (*include)[1]=true;\ - if (i3) (*include)[2]=true;\ - if (i4) (*include)[3]=true;\ - if (i5) (*include)[4]=true;\ - if (i6) (*include)[5]=true;\ - } \ - template \ - NAME##_cus_value_list::NAME##_cus_value_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6) { \ - delem = d;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(6, false); \ - if (i1 == NAME##_NULL) return;\ - (*include)[i1]=true;\ - if (i2 == NAME##_NULL) return;\ - (*include)[i2]=true;\ - if (i3 == NAME##_NULL) return;\ - (*include)[i3]=true;\ - if (i4 == NAME##_NULL) return;\ - (*include)[i4]=true;\ - if (i5 == NAME##_NULL) return;\ - (*include)[i5]=true;\ - if (i6 == NAME##_NULL) return;\ - (*include)[i6]=true;\ - }\ - template \ - NAME##_cus_field_list::NAME##_cus_field_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6) {\ - delem = d;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(6, false); \ - if (i1) (*include)[0]=true;\ - if (i2) (*include)[1]=true;\ - if (i3) (*include)[2]=true;\ - if (i4) (*include)[3]=true;\ - if (i5) (*include)[4]=true;\ - if (i6) (*include)[5]=true;\ - } \ - template \ - NAME##_cus_field_list::NAME##_cus_field_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6) { \ - delem = d;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(6, false); \ - if (i1 == NAME##_NULL) return;\ - (*include)[i1]=true;\ - if (i2 == NAME##_NULL) return;\ - (*include)[i2]=true;\ - if (i3 == NAME##_NULL) return;\ - (*include)[i3]=true;\ - if (i4 == NAME##_NULL) return;\ - (*include)[i4]=true;\ - if (i5 == NAME##_NULL) return;\ - (*include)[i5]=true;\ - if (i6 == NAME##_NULL) return;\ - (*include)[i6]=true;\ - }\ - template \ - NAME##_cus_equal_list::NAME##_cus_equal_list\ - (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6) { \ - delem = d;\ - comp = c;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(6, false); \ - if (i1) (*include)[0]=true;\ - if (i2) (*include)[1]=true;\ - if (i3) (*include)[2]=true;\ - if (i4) (*include)[3]=true;\ - if (i5) (*include)[4]=true;\ - if (i6) (*include)[5]=true;\ - } \ - template \ - NAME##_cus_equal_list::NAME##_cus_equal_list\ - (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6) { \ - delem = d;\ - comp = c;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(6, false); \ - if (i1 == NAME##_NULL) return;\ - (*include)[i1]=true;\ - if (i2 == NAME##_NULL) return;\ - (*include)[i2]=true;\ - if (i3 == NAME##_NULL) return;\ - (*include)[i3]=true;\ - if (i4 == NAME##_NULL) return;\ - (*include)[i4]=true;\ - if (i5 == NAME##_NULL) return;\ - (*include)[i5]=true;\ - if (i6 == NAME##_NULL) return;\ - (*include)[i6]=true;\ - }\ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_value_list& obj) { \ - s << obj.manip << obj.obj->I1 << obj.delem;\ - s << obj.manip << obj.obj->I2 << obj.delem;\ - s << obj.manip << obj.obj->I3 << obj.delem;\ - s << obj.manip << obj.obj->I4 << obj.delem;\ - s << obj.manip << obj.obj->I5 << obj.delem;\ - s << obj.manip << obj.obj->I6; \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_field_list& obj) { \ - s << obj.manip << obj.obj->names[0] << obj.delem;\ - s << obj.manip << obj.obj->names[1] << obj.delem;\ - s << obj.manip << obj.obj->names[2] << obj.delem;\ - s << obj.manip << obj.obj->names[3] << obj.delem;\ - s << obj.manip << obj.obj->names[4] << obj.delem;\ - s << obj.manip << obj.obj->names[5]; \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_equal_list& obj) { \ - s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1 << obj.delem;\ - s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2 << obj.delem;\ - s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3 << obj.delem;\ - s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4 << obj.delem;\ - s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5 << obj.delem;\ - s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6; \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_cus_value_list& obj) { \ - bool before = false; \ - if ((*obj.include)[0]) { \ - s << obj.manip << obj.obj->I1;\ - before = true; \ - } \ - if ((*obj.include)[1]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I2;\ - before = true; \ - } \ - if ((*obj.include)[2]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I3;\ - before = true; \ - } \ - if ((*obj.include)[3]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I4;\ - before = true; \ - } \ - if ((*obj.include)[4]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I5;\ - before = true; \ - } \ - if ((*obj.include)[5]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I6;\ - } \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_cus_field_list& obj) { \ - bool before = false; \ - if ((*obj.include)[0]) { \ - s << obj.manip << obj.obj->names[0];\ - before = true; \ - } \ - if ((*obj.include)[1]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[1];\ - before = true; \ - } \ - if ((*obj.include)[2]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[2];\ - before = true; \ - } \ - if ((*obj.include)[3]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[3];\ - before = true; \ - } \ - if ((*obj.include)[4]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[4];\ - before = true; \ - } \ - if ((*obj.include)[5]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[5];\ - } \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_cus_equal_list& obj) { \ - bool before = false; \ - if ((*obj.include)[0]) { \ - s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1;\ - before = true; \ - } \ - if ((*obj.include)[1]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2;\ - before = true; \ - } \ - if ((*obj.include)[2]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3;\ - before = true; \ - } \ - if ((*obj.include)[3]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4;\ - before = true; \ - } \ - if ((*obj.include)[4]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5;\ - before = true; \ - } \ - if ((*obj.include)[5]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6;\ - } \ - return s; \ - } \ - template \ - inline NAME##_value_list NAME::value_list(mysqlpp::cchar *d, Manip m) const { \ - return NAME##_value_list (this, d, m); \ - } \ - template \ - inline NAME##_field_list NAME::field_list(mysqlpp::cchar *d, Manip m) const { \ - return NAME##_field_list (this, d, m); \ - } \ - template \ - inline NAME##_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) const { \ - return NAME##_equal_list (this, d, c, m); \ - } \ - template \ - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2, bool i3, bool i4, bool i5, bool i6) const {\ - return NAME##_cus_value_list (this, d, m, i1, i2, i3, i4, i5, i6); \ - } \ - template \ - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2, bool i3, bool i4, bool i5, bool i6) const { \ - return NAME##_cus_field_list (this, d, m, i1, i2, i3, i4, i5, i6); \ - } \ - template \ - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m,\ - bool i1, bool i2, bool i3, bool i4, bool i5, bool i6) const { \ - return NAME##_cus_equal_list (this, d, c, m, i1, i2, i3, i4, i5, i6); \ - } \ - template \ - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6) const { \ - return NAME##_cus_value_list (this, d, m, i1, i2, i3, i4, i5, i6); \ - } \ - template \ - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6) const {\ - return NAME##_cus_field_list (this, d, m, i1, i2, i3, i4, i5, i6); \ - } \ - template \ - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6) const { \ - return NAME##_cus_equal_list (this, d, c, m, i1, i2, i3, i4, i5, i6); \ - } \ - template \ - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m,\ - std::vector *i) const {\ - return NAME##_cus_value_list (this, d, m, i);\ - }\ - template \ - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m,\ - std::vector *i) const {\ - return NAME##_cus_field_list (this, d, m, i);\ - }\ - template \ - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m,\ - std::vector *i) const {\ - return NAME##_cus_equal_list (this, d, c, m, i);\ - }\ - template \ - inline NAME##_cus_value_list \ - NAME::value_list(mysqlpp::cchar *d, Manip m, mysqlpp::sql_cmp_type /*sc*/) const {\ - sql_compare_type_def_##CMP (NAME, value, NUM);\ - }\ - template \ - inline NAME##_cus_field_list \ - NAME::field_list(mysqlpp::cchar *d, Manip m, mysqlpp::sql_cmp_type /*sc*/) const {\ - sql_compare_type_def_##CMP (NAME, field, NUM);\ - }\ - template \ - inline NAME##_cus_equal_list \ - NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, mysqlpp::sql_cmp_type /*sc*/) const {\ - sql_compare_type_defe_##CMP (NAME, equal, NUM);\ - }\ - template \ - void populate_##NAME (NAME *s, const mysqlpp::Row &row) { \ - s->I1 = static_cast(row.at(O1));\ - s->I2 = static_cast(row.at(O2));\ - s->I3 = static_cast(row.at(O3));\ - s->I4 = static_cast(row.at(O4));\ - s->I5 = static_cast(row.at(O5));\ - s->I6 = static_cast(row.at(O6));\ - } \ - inline NAME::NAME (const mysqlpp::Row &row) \ - {populate_##NAME(this, row);}\ - inline void NAME::set (const mysqlpp::Row &row)\ - {populate_##NAME(this, row);}\ - sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ) - -#define sql_create_basic_6(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6) \ - sql_create_basic_c_order_6(NAME, CMP, CONTR, T1, I1, 0, T2, I2, 1, T3, I3, 2, T4, I4, 3, T5, I5, 4, T6, I6, 5) - -#define sql_create_6(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6) \ - sql_create_complete_6(NAME, CMP, CONTR, T1, I1, #I1, 0, T2, I2, #I2, 1, T3, I3, #I3, 2, T4, I4, #I4, 3, T5, I5, #I5, 4, T6, I6, #I6, 5) \ - -#define sql_create_c_order_6(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6) \ - sql_create_complete_6(NAME, CMP, CONTR, T1, I1, #I1, O1, T2, I2, #I2, O2, T3, I3, #I3, O3, T4, I4, #I4, O4, T5, I5, #I5, O5, T6, I6, #I6, O6) - -#define sql_create_c_names_6(NAME, CMP, CONTR, T1, I1, N1, T2, I2, N2, T3, I3, N3, T4, I4, N4, T5, I5, N5, T6, I6, N6) \ - sql_create_complete_6(NAME, CMP, CONTR, T1, I1, N1, 0, T2, I2, N2, 1, T3, I3, N3, 2, T4, I4, N4, 3, T5, I5, N5, 4, T6, I6, N6, 5) - -// --------------------------------------------------- -// End Create 6 -// --------------------------------------------------- - -// --------------------------------------------------- -// Begin Create 7 -// --------------------------------------------------- -#define sql_create_basic_c_order_7(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6, T7, I7, O7)\ - struct NAME; \ - template int sql_compare_##NAME (const NAME &, const NAME &);\ - struct NAME { \ - T1 I1;\ - T2 I2;\ - T3 I3;\ - T4 I4;\ - T5 I5;\ - T6 I6;\ - T7 I7; \ - NAME () {} \ - NAME (const mysqlpp::Row &row);\ - sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\ - }; \ - template \ - void populate_##NAME (NAME *s, const mysqlpp::Row &row) { \ - s->I1 = static_cast(row.at(O1));\ - s->I2 = static_cast(row.at(O2));\ - s->I3 = static_cast(row.at(O3));\ - s->I4 = static_cast(row.at(O4));\ - s->I5 = static_cast(row.at(O5));\ - s->I6 = static_cast(row.at(O6));\ - s->I7 = static_cast(row.at(O7)); \ - } \ - inline NAME::NAME (const mysqlpp::Row &row) \ - {populate_##NAME(this, row);} \ - sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, I7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ) - -#define sql_create_complete_7(NAME, CMP, CONTR, T1, I1, N1, O1, T2, I2, N2, O2, T3, I3, N3, O3, T4, I4, N4, O4, T5, I5, N5, O5, T6, I6, N6, O6, T7, I7, N7, O7) \ - struct NAME; \ - enum NAME##_enum { \ - NAME##_##I1,\ - NAME##_##I2,\ - NAME##_##I3,\ - NAME##_##I4,\ - NAME##_##I5,\ - NAME##_##I6,\ - NAME##_##I7 \ - ,NAME##_NULL \ - }; \ - template \ - class NAME##_value_list { \ - /*friend std::ostream& operator << <> (std::ostream&, const NAME##_value_list&); */\ - public: \ - const NAME *obj;\ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - NAME##_value_list (const NAME *o, mysqlpp::cchar *d, Manip m) \ - : obj(o), delem(d), manip(m) {} \ - };\ - template \ - class NAME##_##field_list {\ - /* friend std::ostream& operator << <> (std::ostream&, const NAME##_field_list&); */\ - public: \ - const NAME *obj; \ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - NAME##_field_list (const NAME *o, mysqlpp::cchar *d, Manip m) \ - : obj(o), delem(d), manip(m) {} \ - };\ - template \ - class NAME##_equal_list { \ - /* friend std::ostream& operator << <> (std::ostream&, const NAME##_equal_list&); */\ - public: \ - const NAME *obj;\ - mysqlpp::cchar *delem;\ - mysqlpp::cchar *comp;\ - Manip manip;\ - public: \ - NAME##_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) \ - : obj(o), delem(d), comp(c), manip(m) {}\ - };\ - template \ - class NAME##_cus_value_list {\ - /* friend std::ostream& operator << <> (std::ostream&, \ - const NAME##_cus_value_list&); */\ - public:\ - const NAME *obj;\ - std::vector *include;\ - bool del_vector;\ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - ~NAME##_cus_value_list () {if (del_vector) delete include;} \ - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7);\ - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7); \ - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m ,std::vector* i)\ - : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\ - };\ - template \ - class NAME##_cus_field_list { \ - /* friend std::ostream& operator << <> (std::ostream&, \ - const NAME##_cus_field_list&); */\ - public:\ - const NAME *obj; \ - std::vector *include; \ - bool del_vector; \ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - ~NAME##_cus_field_list () {if (del_vector) delete include;} \ - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7); \ - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7); \ - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, std::vector *i) \ - : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\ - };\ - template \ - class NAME##_cus_equal_list {\ - /* friend std::ostream& operator << <> (std::ostream&, \ - const NAME##_cus_equal_list&); */\ - public:\ - const NAME *obj;\ - std::vector *include;\ - bool del_vector;\ - mysqlpp::cchar *delem;\ - mysqlpp::cchar *comp;\ - Manip manip;\ - public:\ - ~NAME##_##cus_equal_list () {if (del_vector) delete include;}\ - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7); \ - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7); \ - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, std::vector *i) \ - : obj(o), include(i), del_vector(false), delem(d), comp(c), manip(m) {}\ - };\ - template int sql_compare_##NAME (const NAME &, const NAME &);\ - struct NAME { \ - T1 I1;\ - T2 I2;\ - T3 I3;\ - T4 I4;\ - T5 I5;\ - T6 I6;\ - T7 I7; \ - NAME () {} \ - NAME (const mysqlpp::Row &row);\ - void set (const mysqlpp::Row &row);\ - sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\ - sql_construct_define_##CONTR(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\ - static const char *names[];\ - static const char *_table;\ - static const char *& table() {return _table;}\ - NAME##_value_list value_list() const {\ - return value_list(",", mysqlpp::quote);}\ - NAME##_value_list value_list(mysqlpp::cchar *d) const {\ - return value_list(d, mysqlpp::quote);}\ - template \ - NAME##_value_list value_list(mysqlpp::cchar *d, Manip m) const; \ - NAME##_field_list field_list() const {\ - return field_list(",", mysqlpp::do_nothing);}\ - NAME##_field_list field_list(mysqlpp::cchar *d) const {\ - return field_list(d, mysqlpp::do_nothing);}\ - template \ - NAME##_field_list field_list(mysqlpp::cchar *d, Manip m) const; \ - NAME##_equal_list equal_list(mysqlpp::cchar *d = ",", \ - mysqlpp::cchar *c = " = ") const{\ - return equal_list(d, c, mysqlpp::quote);}\ - template \ - NAME##_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) const; \ - /* cus_data */\ - NAME##_cus_value_list value_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false) const {\ - return value_list(",", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7);\ - }\ - NAME##_cus_value_list value_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL) const {\ - return value_list(",", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7);\ - }\ - NAME##_cus_value_list value_list(std::vector *i) const {\ - return value_list(",", mysqlpp::quote, i);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::sql_cmp_type sc) const {\ - return value_list(",", mysqlpp::quote, sc);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false) const {\ - return value_list(d, mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL) const {\ - return value_list(d, mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, \ - std::vector *i) const {\ - return value_list(d, mysqlpp::quote, i);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, \ - mysqlpp::sql_cmp_type sc) const {\ - return value_list(d, mysqlpp::quote, sc);\ - }\ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false) const; \ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL) const; \ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m, \ - std::vector *i) const;\ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m, \ - mysqlpp::sql_cmp_type sc) const;\ - /* cus field */\ - NAME##_cus_field_list field_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false) const {\ - return field_list(",", mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6, i7);\ - }\ - NAME##_cus_field_list field_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL) const {\ - return field_list(",", mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6, i7);\ - }\ - NAME##_cus_field_list field_list(std::vector *i) const {\ - return field_list(",", mysqlpp::do_nothing, i);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::sql_cmp_type sc) const\ - {\ - return field_list(",", mysqlpp::do_nothing, sc);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, \ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false) const {\ - return field_list(d, mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6, i7);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL) const {\ - return field_list(d, mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6, i7);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, \ - std::vector *i) const {\ - return field_list(d, mysqlpp::do_nothing, i);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, \ - mysqlpp::sql_cmp_type sc) const {\ - return field_list(d, mysqlpp::do_nothing, sc);\ - }\ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false) const; \ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL) const; \ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m,\ - std::vector *i) const;\ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m, \ - mysqlpp::sql_cmp_type sc) const;\ - /* cus equal */\ - NAME##_cus_equal_list equal_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false) const {\ - return equal_list(",", " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7);\ - }\ - NAME##_cus_equal_list equal_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL) const {\ - return equal_list(",", " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7);\ - }\ - NAME##_cus_equal_list equal_list(std::vector *i) const {\ - return equal_list(",", " = ", mysqlpp::quote, i);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::sql_cmp_type sc) const {\ - return equal_list(",", " = ", mysqlpp::quote, sc);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false) const {\ - return equal_list(d, " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL) const {\ - return equal_list(d, " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, \ - std::vector *i) const {\ - return equal_list(d, " = ", mysqlpp::quote, i);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, \ - mysqlpp::sql_cmp_type sc) const {\ - return equal_list(d, " = ", mysqlpp::quote, sc);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false) const {\ - return equal_list(d, c, mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL) const {\ - return equal_list(d, c, mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - std::vector *i) const {\ - return equal_list(d, c, mysqlpp::quote, i);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - mysqlpp::sql_cmp_type sc) const {\ - return equal_list(d, c, mysqlpp::quote, sc);\ - }\ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false) const; \ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL) const; \ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - std::vector *i) const;\ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - mysqlpp::sql_cmp_type sc) const;\ - }; \ - MYSQLPP_SSQLS_EXPAND(\ - const char *NAME::names[] = { \ - N1 ,\ - N2 ,\ - N3 ,\ - N4 ,\ - N5 ,\ - N6 ,\ - N7 \ - }; \ - const char *NAME::_table = #NAME ;\ - )\ - template \ - NAME##_cus_value_list::NAME##_cus_value_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7) \ - { \ - delem = d;\ - manip = m;\ - del_vector = true;\ - obj = o; \ - include = new std::vector(7, false);\ - if (i1) (*include)[0]=true;\ - if (i2) (*include)[1]=true;\ - if (i3) (*include)[2]=true;\ - if (i4) (*include)[3]=true;\ - if (i5) (*include)[4]=true;\ - if (i6) (*include)[5]=true;\ - if (i7) (*include)[6]=true;\ - } \ - template \ - NAME##_cus_value_list::NAME##_cus_value_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7) { \ - delem = d;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(7, false); \ - if (i1 == NAME##_NULL) return;\ - (*include)[i1]=true;\ - if (i2 == NAME##_NULL) return;\ - (*include)[i2]=true;\ - if (i3 == NAME##_NULL) return;\ - (*include)[i3]=true;\ - if (i4 == NAME##_NULL) return;\ - (*include)[i4]=true;\ - if (i5 == NAME##_NULL) return;\ - (*include)[i5]=true;\ - if (i6 == NAME##_NULL) return;\ - (*include)[i6]=true;\ - if (i7 == NAME##_NULL) return;\ - (*include)[i7]=true;\ - }\ - template \ - NAME##_cus_field_list::NAME##_cus_field_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7) {\ - delem = d;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(7, false); \ - if (i1) (*include)[0]=true;\ - if (i2) (*include)[1]=true;\ - if (i3) (*include)[2]=true;\ - if (i4) (*include)[3]=true;\ - if (i5) (*include)[4]=true;\ - if (i6) (*include)[5]=true;\ - if (i7) (*include)[6]=true;\ - } \ - template \ - NAME##_cus_field_list::NAME##_cus_field_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7) { \ - delem = d;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(7, false); \ - if (i1 == NAME##_NULL) return;\ - (*include)[i1]=true;\ - if (i2 == NAME##_NULL) return;\ - (*include)[i2]=true;\ - if (i3 == NAME##_NULL) return;\ - (*include)[i3]=true;\ - if (i4 == NAME##_NULL) return;\ - (*include)[i4]=true;\ - if (i5 == NAME##_NULL) return;\ - (*include)[i5]=true;\ - if (i6 == NAME##_NULL) return;\ - (*include)[i6]=true;\ - if (i7 == NAME##_NULL) return;\ - (*include)[i7]=true;\ - }\ - template \ - NAME##_cus_equal_list::NAME##_cus_equal_list\ - (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7) { \ - delem = d;\ - comp = c;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(7, false); \ - if (i1) (*include)[0]=true;\ - if (i2) (*include)[1]=true;\ - if (i3) (*include)[2]=true;\ - if (i4) (*include)[3]=true;\ - if (i5) (*include)[4]=true;\ - if (i6) (*include)[5]=true;\ - if (i7) (*include)[6]=true;\ - } \ - template \ - NAME##_cus_equal_list::NAME##_cus_equal_list\ - (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7) { \ - delem = d;\ - comp = c;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(7, false); \ - if (i1 == NAME##_NULL) return;\ - (*include)[i1]=true;\ - if (i2 == NAME##_NULL) return;\ - (*include)[i2]=true;\ - if (i3 == NAME##_NULL) return;\ - (*include)[i3]=true;\ - if (i4 == NAME##_NULL) return;\ - (*include)[i4]=true;\ - if (i5 == NAME##_NULL) return;\ - (*include)[i5]=true;\ - if (i6 == NAME##_NULL) return;\ - (*include)[i6]=true;\ - if (i7 == NAME##_NULL) return;\ - (*include)[i7]=true;\ - }\ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_value_list& obj) { \ - s << obj.manip << obj.obj->I1 << obj.delem;\ - s << obj.manip << obj.obj->I2 << obj.delem;\ - s << obj.manip << obj.obj->I3 << obj.delem;\ - s << obj.manip << obj.obj->I4 << obj.delem;\ - s << obj.manip << obj.obj->I5 << obj.delem;\ - s << obj.manip << obj.obj->I6 << obj.delem;\ - s << obj.manip << obj.obj->I7; \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_field_list& obj) { \ - s << obj.manip << obj.obj->names[0] << obj.delem;\ - s << obj.manip << obj.obj->names[1] << obj.delem;\ - s << obj.manip << obj.obj->names[2] << obj.delem;\ - s << obj.manip << obj.obj->names[3] << obj.delem;\ - s << obj.manip << obj.obj->names[4] << obj.delem;\ - s << obj.manip << obj.obj->names[5] << obj.delem;\ - s << obj.manip << obj.obj->names[6]; \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_equal_list& obj) { \ - s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1 << obj.delem;\ - s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2 << obj.delem;\ - s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3 << obj.delem;\ - s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4 << obj.delem;\ - s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5 << obj.delem;\ - s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6 << obj.delem;\ - s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->I7; \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_cus_value_list& obj) { \ - bool before = false; \ - if ((*obj.include)[0]) { \ - s << obj.manip << obj.obj->I1;\ - before = true; \ - } \ - if ((*obj.include)[1]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I2;\ - before = true; \ - } \ - if ((*obj.include)[2]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I3;\ - before = true; \ - } \ - if ((*obj.include)[3]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I4;\ - before = true; \ - } \ - if ((*obj.include)[4]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I5;\ - before = true; \ - } \ - if ((*obj.include)[5]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I6;\ - before = true; \ - } \ - if ((*obj.include)[6]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I7;\ - } \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_cus_field_list& obj) { \ - bool before = false; \ - if ((*obj.include)[0]) { \ - s << obj.manip << obj.obj->names[0];\ - before = true; \ - } \ - if ((*obj.include)[1]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[1];\ - before = true; \ - } \ - if ((*obj.include)[2]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[2];\ - before = true; \ - } \ - if ((*obj.include)[3]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[3];\ - before = true; \ - } \ - if ((*obj.include)[4]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[4];\ - before = true; \ - } \ - if ((*obj.include)[5]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[5];\ - before = true; \ - } \ - if ((*obj.include)[6]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[6];\ - } \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_cus_equal_list& obj) { \ - bool before = false; \ - if ((*obj.include)[0]) { \ - s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1;\ - before = true; \ - } \ - if ((*obj.include)[1]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2;\ - before = true; \ - } \ - if ((*obj.include)[2]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3;\ - before = true; \ - } \ - if ((*obj.include)[3]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4;\ - before = true; \ - } \ - if ((*obj.include)[4]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5;\ - before = true; \ - } \ - if ((*obj.include)[5]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6;\ - before = true; \ - } \ - if ((*obj.include)[6]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->I7;\ - } \ - return s; \ - } \ - template \ - inline NAME##_value_list NAME::value_list(mysqlpp::cchar *d, Manip m) const { \ - return NAME##_value_list (this, d, m); \ - } \ - template \ - inline NAME##_field_list NAME::field_list(mysqlpp::cchar *d, Manip m) const { \ - return NAME##_field_list (this, d, m); \ - } \ - template \ - inline NAME##_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) const { \ - return NAME##_equal_list (this, d, c, m); \ - } \ - template \ - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7) const {\ - return NAME##_cus_value_list (this, d, m, i1, i2, i3, i4, i5, i6, i7); \ - } \ - template \ - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7) const { \ - return NAME##_cus_field_list (this, d, m, i1, i2, i3, i4, i5, i6, i7); \ - } \ - template \ - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m,\ - bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7) const { \ - return NAME##_cus_equal_list (this, d, c, m, i1, i2, i3, i4, i5, i6, i7); \ - } \ - template \ - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7) const { \ - return NAME##_cus_value_list (this, d, m, i1, i2, i3, i4, i5, i6, i7); \ - } \ - template \ - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7) const {\ - return NAME##_cus_field_list (this, d, m, i1, i2, i3, i4, i5, i6, i7); \ - } \ - template \ - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7) const { \ - return NAME##_cus_equal_list (this, d, c, m, i1, i2, i3, i4, i5, i6, i7); \ - } \ - template \ - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m,\ - std::vector *i) const {\ - return NAME##_cus_value_list (this, d, m, i);\ - }\ - template \ - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m,\ - std::vector *i) const {\ - return NAME##_cus_field_list (this, d, m, i);\ - }\ - template \ - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m,\ - std::vector *i) const {\ - return NAME##_cus_equal_list (this, d, c, m, i);\ - }\ - template \ - inline NAME##_cus_value_list \ - NAME::value_list(mysqlpp::cchar *d, Manip m, mysqlpp::sql_cmp_type /*sc*/) const {\ - sql_compare_type_def_##CMP (NAME, value, NUM);\ - }\ - template \ - inline NAME##_cus_field_list \ - NAME::field_list(mysqlpp::cchar *d, Manip m, mysqlpp::sql_cmp_type /*sc*/) const {\ - sql_compare_type_def_##CMP (NAME, field, NUM);\ - }\ - template \ - inline NAME##_cus_equal_list \ - NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, mysqlpp::sql_cmp_type /*sc*/) const {\ - sql_compare_type_defe_##CMP (NAME, equal, NUM);\ - }\ - template \ - void populate_##NAME (NAME *s, const mysqlpp::Row &row) { \ - s->I1 = static_cast(row.at(O1));\ - s->I2 = static_cast(row.at(O2));\ - s->I3 = static_cast(row.at(O3));\ - s->I4 = static_cast(row.at(O4));\ - s->I5 = static_cast(row.at(O5));\ - s->I6 = static_cast(row.at(O6));\ - s->I7 = static_cast(row.at(O7));\ - } \ - inline NAME::NAME (const mysqlpp::Row &row) \ - {populate_##NAME(this, row);}\ - inline void NAME::set (const mysqlpp::Row &row)\ - {populate_##NAME(this, row);}\ - sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, I7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ) - -#define sql_create_basic_7(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7) \ - sql_create_basic_c_order_7(NAME, CMP, CONTR, T1, I1, 0, T2, I2, 1, T3, I3, 2, T4, I4, 3, T5, I5, 4, T6, I6, 5, T7, I7, 6) - -#define sql_create_7(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7) \ - sql_create_complete_7(NAME, CMP, CONTR, T1, I1, #I1, 0, T2, I2, #I2, 1, T3, I3, #I3, 2, T4, I4, #I4, 3, T5, I5, #I5, 4, T6, I6, #I6, 5, T7, I7, #I7, 6) \ - -#define sql_create_c_order_7(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6, T7, I7, O7) \ - sql_create_complete_7(NAME, CMP, CONTR, T1, I1, #I1, O1, T2, I2, #I2, O2, T3, I3, #I3, O3, T4, I4, #I4, O4, T5, I5, #I5, O5, T6, I6, #I6, O6, T7, I7, #I7, O7) - -#define sql_create_c_names_7(NAME, CMP, CONTR, T1, I1, N1, T2, I2, N2, T3, I3, N3, T4, I4, N4, T5, I5, N5, T6, I6, N6, T7, I7, N7) \ - sql_create_complete_7(NAME, CMP, CONTR, T1, I1, N1, 0, T2, I2, N2, 1, T3, I3, N3, 2, T4, I4, N4, 3, T5, I5, N5, 4, T6, I6, N6, 5, T7, I7, N7, 6) - -// --------------------------------------------------- -// End Create 7 -// --------------------------------------------------- - -// --------------------------------------------------- -// Begin Create 8 -// --------------------------------------------------- -#define sql_create_basic_c_order_8(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6, T7, I7, O7, T8, I8, O8)\ - struct NAME; \ - template int sql_compare_##NAME (const NAME &, const NAME &);\ - struct NAME { \ - T1 I1;\ - T2 I2;\ - T3 I3;\ - T4 I4;\ - T5 I5;\ - T6 I6;\ - T7 I7;\ - T8 I8; \ - NAME () {} \ - NAME (const mysqlpp::Row &row);\ - sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\ - }; \ - template \ - void populate_##NAME (NAME *s, const mysqlpp::Row &row) { \ - s->I1 = static_cast(row.at(O1));\ - s->I2 = static_cast(row.at(O2));\ - s->I3 = static_cast(row.at(O3));\ - s->I4 = static_cast(row.at(O4));\ - s->I5 = static_cast(row.at(O5));\ - s->I6 = static_cast(row.at(O6));\ - s->I7 = static_cast(row.at(O7));\ - s->I8 = static_cast(row.at(O8)); \ - } \ - inline NAME::NAME (const mysqlpp::Row &row) \ - {populate_##NAME(this, row);} \ - sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, I7, I8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ) - -#define sql_create_complete_8(NAME, CMP, CONTR, T1, I1, N1, O1, T2, I2, N2, O2, T3, I3, N3, O3, T4, I4, N4, O4, T5, I5, N5, O5, T6, I6, N6, O6, T7, I7, N7, O7, T8, I8, N8, O8) \ - struct NAME; \ - enum NAME##_enum { \ - NAME##_##I1,\ - NAME##_##I2,\ - NAME##_##I3,\ - NAME##_##I4,\ - NAME##_##I5,\ - NAME##_##I6,\ - NAME##_##I7,\ - NAME##_##I8 \ - ,NAME##_NULL \ - }; \ - template \ - class NAME##_value_list { \ - /*friend std::ostream& operator << <> (std::ostream&, const NAME##_value_list&); */\ - public: \ - const NAME *obj;\ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - NAME##_value_list (const NAME *o, mysqlpp::cchar *d, Manip m) \ - : obj(o), delem(d), manip(m) {} \ - };\ - template \ - class NAME##_##field_list {\ - /* friend std::ostream& operator << <> (std::ostream&, const NAME##_field_list&); */\ - public: \ - const NAME *obj; \ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - NAME##_field_list (const NAME *o, mysqlpp::cchar *d, Manip m) \ - : obj(o), delem(d), manip(m) {} \ - };\ - template \ - class NAME##_equal_list { \ - /* friend std::ostream& operator << <> (std::ostream&, const NAME##_equal_list&); */\ - public: \ - const NAME *obj;\ - mysqlpp::cchar *delem;\ - mysqlpp::cchar *comp;\ - Manip manip;\ - public: \ - NAME##_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) \ - : obj(o), delem(d), comp(c), manip(m) {}\ - };\ - template \ - class NAME##_cus_value_list {\ - /* friend std::ostream& operator << <> (std::ostream&, \ - const NAME##_cus_value_list&); */\ - public:\ - const NAME *obj;\ - std::vector *include;\ - bool del_vector;\ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - ~NAME##_cus_value_list () {if (del_vector) delete include;} \ - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8);\ - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8); \ - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m ,std::vector* i)\ - : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\ - };\ - template \ - class NAME##_cus_field_list { \ - /* friend std::ostream& operator << <> (std::ostream&, \ - const NAME##_cus_field_list&); */\ - public:\ - const NAME *obj; \ - std::vector *include; \ - bool del_vector; \ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - ~NAME##_cus_field_list () {if (del_vector) delete include;} \ - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8); \ - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8); \ - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, std::vector *i) \ - : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\ - };\ - template \ - class NAME##_cus_equal_list {\ - /* friend std::ostream& operator << <> (std::ostream&, \ - const NAME##_cus_equal_list&); */\ - public:\ - const NAME *obj;\ - std::vector *include;\ - bool del_vector;\ - mysqlpp::cchar *delem;\ - mysqlpp::cchar *comp;\ - Manip manip;\ - public:\ - ~NAME##_##cus_equal_list () {if (del_vector) delete include;}\ - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8); \ - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8); \ - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, std::vector *i) \ - : obj(o), include(i), del_vector(false), delem(d), comp(c), manip(m) {}\ - };\ - template int sql_compare_##NAME (const NAME &, const NAME &);\ - struct NAME { \ - T1 I1;\ - T2 I2;\ - T3 I3;\ - T4 I4;\ - T5 I5;\ - T6 I6;\ - T7 I7;\ - T8 I8; \ - NAME () {} \ - NAME (const mysqlpp::Row &row);\ - void set (const mysqlpp::Row &row);\ - sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\ - sql_construct_define_##CONTR(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\ - static const char *names[];\ - static const char *_table;\ - static const char *& table() {return _table;}\ - NAME##_value_list value_list() const {\ - return value_list(",", mysqlpp::quote);}\ - NAME##_value_list value_list(mysqlpp::cchar *d) const {\ - return value_list(d, mysqlpp::quote);}\ - template \ - NAME##_value_list value_list(mysqlpp::cchar *d, Manip m) const; \ - NAME##_field_list field_list() const {\ - return field_list(",", mysqlpp::do_nothing);}\ - NAME##_field_list field_list(mysqlpp::cchar *d) const {\ - return field_list(d, mysqlpp::do_nothing);}\ - template \ - NAME##_field_list field_list(mysqlpp::cchar *d, Manip m) const; \ - NAME##_equal_list equal_list(mysqlpp::cchar *d = ",", \ - mysqlpp::cchar *c = " = ") const{\ - return equal_list(d, c, mysqlpp::quote);}\ - template \ - NAME##_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) const; \ - /* cus_data */\ - NAME##_cus_value_list value_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false) const {\ - return value_list(",", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8);\ - }\ - NAME##_cus_value_list value_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL) const {\ - return value_list(",", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8);\ - }\ - NAME##_cus_value_list value_list(std::vector *i) const {\ - return value_list(",", mysqlpp::quote, i);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::sql_cmp_type sc) const {\ - return value_list(",", mysqlpp::quote, sc);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false) const {\ - return value_list(d, mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL) const {\ - return value_list(d, mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, \ - std::vector *i) const {\ - return value_list(d, mysqlpp::quote, i);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, \ - mysqlpp::sql_cmp_type sc) const {\ - return value_list(d, mysqlpp::quote, sc);\ - }\ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false) const; \ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL) const; \ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m, \ - std::vector *i) const;\ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m, \ - mysqlpp::sql_cmp_type sc) const;\ - /* cus field */\ - NAME##_cus_field_list field_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false) const {\ - return field_list(",", mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6, i7, i8);\ - }\ - NAME##_cus_field_list field_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL) const {\ - return field_list(",", mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6, i7, i8);\ - }\ - NAME##_cus_field_list field_list(std::vector *i) const {\ - return field_list(",", mysqlpp::do_nothing, i);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::sql_cmp_type sc) const\ - {\ - return field_list(",", mysqlpp::do_nothing, sc);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, \ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false) const {\ - return field_list(d, mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6, i7, i8);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL) const {\ - return field_list(d, mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6, i7, i8);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, \ - std::vector *i) const {\ - return field_list(d, mysqlpp::do_nothing, i);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, \ - mysqlpp::sql_cmp_type sc) const {\ - return field_list(d, mysqlpp::do_nothing, sc);\ - }\ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false) const; \ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL) const; \ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m,\ - std::vector *i) const;\ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m, \ - mysqlpp::sql_cmp_type sc) const;\ - /* cus equal */\ - NAME##_cus_equal_list equal_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false) const {\ - return equal_list(",", " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8);\ - }\ - NAME##_cus_equal_list equal_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL) const {\ - return equal_list(",", " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8);\ - }\ - NAME##_cus_equal_list equal_list(std::vector *i) const {\ - return equal_list(",", " = ", mysqlpp::quote, i);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::sql_cmp_type sc) const {\ - return equal_list(",", " = ", mysqlpp::quote, sc);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false) const {\ - return equal_list(d, " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL) const {\ - return equal_list(d, " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, \ - std::vector *i) const {\ - return equal_list(d, " = ", mysqlpp::quote, i);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, \ - mysqlpp::sql_cmp_type sc) const {\ - return equal_list(d, " = ", mysqlpp::quote, sc);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false) const {\ - return equal_list(d, c, mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL) const {\ - return equal_list(d, c, mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - std::vector *i) const {\ - return equal_list(d, c, mysqlpp::quote, i);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - mysqlpp::sql_cmp_type sc) const {\ - return equal_list(d, c, mysqlpp::quote, sc);\ - }\ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false) const; \ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL) const; \ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - std::vector *i) const;\ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - mysqlpp::sql_cmp_type sc) const;\ - }; \ - MYSQLPP_SSQLS_EXPAND(\ - const char *NAME::names[] = { \ - N1 ,\ - N2 ,\ - N3 ,\ - N4 ,\ - N5 ,\ - N6 ,\ - N7 ,\ - N8 \ - }; \ - const char *NAME::_table = #NAME ;\ - )\ - template \ - NAME##_cus_value_list::NAME##_cus_value_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8) \ - { \ - delem = d;\ - manip = m;\ - del_vector = true;\ - obj = o; \ - include = new std::vector(8, false);\ - if (i1) (*include)[0]=true;\ - if (i2) (*include)[1]=true;\ - if (i3) (*include)[2]=true;\ - if (i4) (*include)[3]=true;\ - if (i5) (*include)[4]=true;\ - if (i6) (*include)[5]=true;\ - if (i7) (*include)[6]=true;\ - if (i8) (*include)[7]=true;\ - } \ - template \ - NAME##_cus_value_list::NAME##_cus_value_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8) { \ - delem = d;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(8, false); \ - if (i1 == NAME##_NULL) return;\ - (*include)[i1]=true;\ - if (i2 == NAME##_NULL) return;\ - (*include)[i2]=true;\ - if (i3 == NAME##_NULL) return;\ - (*include)[i3]=true;\ - if (i4 == NAME##_NULL) return;\ - (*include)[i4]=true;\ - if (i5 == NAME##_NULL) return;\ - (*include)[i5]=true;\ - if (i6 == NAME##_NULL) return;\ - (*include)[i6]=true;\ - if (i7 == NAME##_NULL) return;\ - (*include)[i7]=true;\ - if (i8 == NAME##_NULL) return;\ - (*include)[i8]=true;\ - }\ - template \ - NAME##_cus_field_list::NAME##_cus_field_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8) {\ - delem = d;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(8, false); \ - if (i1) (*include)[0]=true;\ - if (i2) (*include)[1]=true;\ - if (i3) (*include)[2]=true;\ - if (i4) (*include)[3]=true;\ - if (i5) (*include)[4]=true;\ - if (i6) (*include)[5]=true;\ - if (i7) (*include)[6]=true;\ - if (i8) (*include)[7]=true;\ - } \ - template \ - NAME##_cus_field_list::NAME##_cus_field_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8) { \ - delem = d;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(8, false); \ - if (i1 == NAME##_NULL) return;\ - (*include)[i1]=true;\ - if (i2 == NAME##_NULL) return;\ - (*include)[i2]=true;\ - if (i3 == NAME##_NULL) return;\ - (*include)[i3]=true;\ - if (i4 == NAME##_NULL) return;\ - (*include)[i4]=true;\ - if (i5 == NAME##_NULL) return;\ - (*include)[i5]=true;\ - if (i6 == NAME##_NULL) return;\ - (*include)[i6]=true;\ - if (i7 == NAME##_NULL) return;\ - (*include)[i7]=true;\ - if (i8 == NAME##_NULL) return;\ - (*include)[i8]=true;\ - }\ - template \ - NAME##_cus_equal_list::NAME##_cus_equal_list\ - (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8) { \ - delem = d;\ - comp = c;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(8, false); \ - if (i1) (*include)[0]=true;\ - if (i2) (*include)[1]=true;\ - if (i3) (*include)[2]=true;\ - if (i4) (*include)[3]=true;\ - if (i5) (*include)[4]=true;\ - if (i6) (*include)[5]=true;\ - if (i7) (*include)[6]=true;\ - if (i8) (*include)[7]=true;\ - } \ - template \ - NAME##_cus_equal_list::NAME##_cus_equal_list\ - (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8) { \ - delem = d;\ - comp = c;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(8, false); \ - if (i1 == NAME##_NULL) return;\ - (*include)[i1]=true;\ - if (i2 == NAME##_NULL) return;\ - (*include)[i2]=true;\ - if (i3 == NAME##_NULL) return;\ - (*include)[i3]=true;\ - if (i4 == NAME##_NULL) return;\ - (*include)[i4]=true;\ - if (i5 == NAME##_NULL) return;\ - (*include)[i5]=true;\ - if (i6 == NAME##_NULL) return;\ - (*include)[i6]=true;\ - if (i7 == NAME##_NULL) return;\ - (*include)[i7]=true;\ - if (i8 == NAME##_NULL) return;\ - (*include)[i8]=true;\ - }\ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_value_list& obj) { \ - s << obj.manip << obj.obj->I1 << obj.delem;\ - s << obj.manip << obj.obj->I2 << obj.delem;\ - s << obj.manip << obj.obj->I3 << obj.delem;\ - s << obj.manip << obj.obj->I4 << obj.delem;\ - s << obj.manip << obj.obj->I5 << obj.delem;\ - s << obj.manip << obj.obj->I6 << obj.delem;\ - s << obj.manip << obj.obj->I7 << obj.delem;\ - s << obj.manip << obj.obj->I8; \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_field_list& obj) { \ - s << obj.manip << obj.obj->names[0] << obj.delem;\ - s << obj.manip << obj.obj->names[1] << obj.delem;\ - s << obj.manip << obj.obj->names[2] << obj.delem;\ - s << obj.manip << obj.obj->names[3] << obj.delem;\ - s << obj.manip << obj.obj->names[4] << obj.delem;\ - s << obj.manip << obj.obj->names[5] << obj.delem;\ - s << obj.manip << obj.obj->names[6] << obj.delem;\ - s << obj.manip << obj.obj->names[7]; \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_equal_list& obj) { \ - s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1 << obj.delem;\ - s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2 << obj.delem;\ - s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3 << obj.delem;\ - s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4 << obj.delem;\ - s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5 << obj.delem;\ - s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6 << obj.delem;\ - s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->I7 << obj.delem;\ - s << obj.obj->names[7] << obj.comp << obj.manip << obj.obj->I8; \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_cus_value_list& obj) { \ - bool before = false; \ - if ((*obj.include)[0]) { \ - s << obj.manip << obj.obj->I1;\ - before = true; \ - } \ - if ((*obj.include)[1]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I2;\ - before = true; \ - } \ - if ((*obj.include)[2]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I3;\ - before = true; \ - } \ - if ((*obj.include)[3]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I4;\ - before = true; \ - } \ - if ((*obj.include)[4]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I5;\ - before = true; \ - } \ - if ((*obj.include)[5]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I6;\ - before = true; \ - } \ - if ((*obj.include)[6]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I7;\ - before = true; \ - } \ - if ((*obj.include)[7]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I8;\ - } \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_cus_field_list& obj) { \ - bool before = false; \ - if ((*obj.include)[0]) { \ - s << obj.manip << obj.obj->names[0];\ - before = true; \ - } \ - if ((*obj.include)[1]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[1];\ - before = true; \ - } \ - if ((*obj.include)[2]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[2];\ - before = true; \ - } \ - if ((*obj.include)[3]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[3];\ - before = true; \ - } \ - if ((*obj.include)[4]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[4];\ - before = true; \ - } \ - if ((*obj.include)[5]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[5];\ - before = true; \ - } \ - if ((*obj.include)[6]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[6];\ - before = true; \ - } \ - if ((*obj.include)[7]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[7];\ - } \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_cus_equal_list& obj) { \ - bool before = false; \ - if ((*obj.include)[0]) { \ - s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1;\ - before = true; \ - } \ - if ((*obj.include)[1]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2;\ - before = true; \ - } \ - if ((*obj.include)[2]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3;\ - before = true; \ - } \ - if ((*obj.include)[3]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4;\ - before = true; \ - } \ - if ((*obj.include)[4]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5;\ - before = true; \ - } \ - if ((*obj.include)[5]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6;\ - before = true; \ - } \ - if ((*obj.include)[6]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->I7;\ - before = true; \ - } \ - if ((*obj.include)[7]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[7] << obj.comp << obj.manip << obj.obj->I8;\ - } \ - return s; \ - } \ - template \ - inline NAME##_value_list NAME::value_list(mysqlpp::cchar *d, Manip m) const { \ - return NAME##_value_list (this, d, m); \ - } \ - template \ - inline NAME##_field_list NAME::field_list(mysqlpp::cchar *d, Manip m) const { \ - return NAME##_field_list (this, d, m); \ - } \ - template \ - inline NAME##_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) const { \ - return NAME##_equal_list (this, d, c, m); \ - } \ - template \ - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8) const {\ - return NAME##_cus_value_list (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8); \ - } \ - template \ - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8) const { \ - return NAME##_cus_field_list (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8); \ - } \ - template \ - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m,\ - bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8) const { \ - return NAME##_cus_equal_list (this, d, c, m, i1, i2, i3, i4, i5, i6, i7, i8); \ - } \ - template \ - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8) const { \ - return NAME##_cus_value_list (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8); \ - } \ - template \ - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8) const {\ - return NAME##_cus_field_list (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8); \ - } \ - template \ - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8) const { \ - return NAME##_cus_equal_list (this, d, c, m, i1, i2, i3, i4, i5, i6, i7, i8); \ - } \ - template \ - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m,\ - std::vector *i) const {\ - return NAME##_cus_value_list (this, d, m, i);\ - }\ - template \ - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m,\ - std::vector *i) const {\ - return NAME##_cus_field_list (this, d, m, i);\ - }\ - template \ - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m,\ - std::vector *i) const {\ - return NAME##_cus_equal_list (this, d, c, m, i);\ - }\ - template \ - inline NAME##_cus_value_list \ - NAME::value_list(mysqlpp::cchar *d, Manip m, mysqlpp::sql_cmp_type /*sc*/) const {\ - sql_compare_type_def_##CMP (NAME, value, NUM);\ - }\ - template \ - inline NAME##_cus_field_list \ - NAME::field_list(mysqlpp::cchar *d, Manip m, mysqlpp::sql_cmp_type /*sc*/) const {\ - sql_compare_type_def_##CMP (NAME, field, NUM);\ - }\ - template \ - inline NAME##_cus_equal_list \ - NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, mysqlpp::sql_cmp_type /*sc*/) const {\ - sql_compare_type_defe_##CMP (NAME, equal, NUM);\ - }\ - template \ - void populate_##NAME (NAME *s, const mysqlpp::Row &row) { \ - s->I1 = static_cast(row.at(O1));\ - s->I2 = static_cast(row.at(O2));\ - s->I3 = static_cast(row.at(O3));\ - s->I4 = static_cast(row.at(O4));\ - s->I5 = static_cast(row.at(O5));\ - s->I6 = static_cast(row.at(O6));\ - s->I7 = static_cast(row.at(O7));\ - s->I8 = static_cast(row.at(O8));\ - } \ - inline NAME::NAME (const mysqlpp::Row &row) \ - {populate_##NAME(this, row);}\ - inline void NAME::set (const mysqlpp::Row &row)\ - {populate_##NAME(this, row);}\ - sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, I7, I8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ) - -#define sql_create_basic_8(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8) \ - sql_create_basic_c_order_8(NAME, CMP, CONTR, T1, I1, 0, T2, I2, 1, T3, I3, 2, T4, I4, 3, T5, I5, 4, T6, I6, 5, T7, I7, 6, T8, I8, 7) - -#define sql_create_8(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8) \ - sql_create_complete_8(NAME, CMP, CONTR, T1, I1, #I1, 0, T2, I2, #I2, 1, T3, I3, #I3, 2, T4, I4, #I4, 3, T5, I5, #I5, 4, T6, I6, #I6, 5, T7, I7, #I7, 6, T8, I8, #I8, 7) \ - -#define sql_create_c_order_8(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6, T7, I7, O7, T8, I8, O8) \ - sql_create_complete_8(NAME, CMP, CONTR, T1, I1, #I1, O1, T2, I2, #I2, O2, T3, I3, #I3, O3, T4, I4, #I4, O4, T5, I5, #I5, O5, T6, I6, #I6, O6, T7, I7, #I7, O7, T8, I8, #I8, O8) - -#define sql_create_c_names_8(NAME, CMP, CONTR, T1, I1, N1, T2, I2, N2, T3, I3, N3, T4, I4, N4, T5, I5, N5, T6, I6, N6, T7, I7, N7, T8, I8, N8) \ - sql_create_complete_8(NAME, CMP, CONTR, T1, I1, N1, 0, T2, I2, N2, 1, T3, I3, N3, 2, T4, I4, N4, 3, T5, I5, N5, 4, T6, I6, N6, 5, T7, I7, N7, 6, T8, I8, N8, 7) - -// --------------------------------------------------- -// End Create 8 -// --------------------------------------------------- - -// --------------------------------------------------- -// Begin Create 9 -// --------------------------------------------------- -#define sql_create_basic_c_order_9(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6, T7, I7, O7, T8, I8, O8, T9, I9, O9)\ - struct NAME; \ - template int sql_compare_##NAME (const NAME &, const NAME &);\ - struct NAME { \ - T1 I1;\ - T2 I2;\ - T3 I3;\ - T4 I4;\ - T5 I5;\ - T6 I6;\ - T7 I7;\ - T8 I8;\ - T9 I9; \ - NAME () {} \ - NAME (const mysqlpp::Row &row);\ - sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\ - }; \ - template \ - void populate_##NAME (NAME *s, const mysqlpp::Row &row) { \ - s->I1 = static_cast(row.at(O1));\ - s->I2 = static_cast(row.at(O2));\ - s->I3 = static_cast(row.at(O3));\ - s->I4 = static_cast(row.at(O4));\ - s->I5 = static_cast(row.at(O5));\ - s->I6 = static_cast(row.at(O6));\ - s->I7 = static_cast(row.at(O7));\ - s->I8 = static_cast(row.at(O8));\ - s->I9 = static_cast(row.at(O9)); \ - } \ - inline NAME::NAME (const mysqlpp::Row &row) \ - {populate_##NAME(this, row);} \ - sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, I7, I8, I9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ) - -#define sql_create_complete_9(NAME, CMP, CONTR, T1, I1, N1, O1, T2, I2, N2, O2, T3, I3, N3, O3, T4, I4, N4, O4, T5, I5, N5, O5, T6, I6, N6, O6, T7, I7, N7, O7, T8, I8, N8, O8, T9, I9, N9, O9) \ - struct NAME; \ - enum NAME##_enum { \ - NAME##_##I1,\ - NAME##_##I2,\ - NAME##_##I3,\ - NAME##_##I4,\ - NAME##_##I5,\ - NAME##_##I6,\ - NAME##_##I7,\ - NAME##_##I8,\ - NAME##_##I9 \ - ,NAME##_NULL \ - }; \ - template \ - class NAME##_value_list { \ - /*friend std::ostream& operator << <> (std::ostream&, const NAME##_value_list&); */\ - public: \ - const NAME *obj;\ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - NAME##_value_list (const NAME *o, mysqlpp::cchar *d, Manip m) \ - : obj(o), delem(d), manip(m) {} \ - };\ - template \ - class NAME##_##field_list {\ - /* friend std::ostream& operator << <> (std::ostream&, const NAME##_field_list&); */\ - public: \ - const NAME *obj; \ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - NAME##_field_list (const NAME *o, mysqlpp::cchar *d, Manip m) \ - : obj(o), delem(d), manip(m) {} \ - };\ - template \ - class NAME##_equal_list { \ - /* friend std::ostream& operator << <> (std::ostream&, const NAME##_equal_list&); */\ - public: \ - const NAME *obj;\ - mysqlpp::cchar *delem;\ - mysqlpp::cchar *comp;\ - Manip manip;\ - public: \ - NAME##_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) \ - : obj(o), delem(d), comp(c), manip(m) {}\ - };\ - template \ - class NAME##_cus_value_list {\ - /* friend std::ostream& operator << <> (std::ostream&, \ - const NAME##_cus_value_list&); */\ - public:\ - const NAME *obj;\ - std::vector *include;\ - bool del_vector;\ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - ~NAME##_cus_value_list () {if (del_vector) delete include;} \ - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9);\ - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9); \ - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m ,std::vector* i)\ - : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\ - };\ - template \ - class NAME##_cus_field_list { \ - /* friend std::ostream& operator << <> (std::ostream&, \ - const NAME##_cus_field_list&); */\ - public:\ - const NAME *obj; \ - std::vector *include; \ - bool del_vector; \ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - ~NAME##_cus_field_list () {if (del_vector) delete include;} \ - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9); \ - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9); \ - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, std::vector *i) \ - : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\ - };\ - template \ - class NAME##_cus_equal_list {\ - /* friend std::ostream& operator << <> (std::ostream&, \ - const NAME##_cus_equal_list&); */\ - public:\ - const NAME *obj;\ - std::vector *include;\ - bool del_vector;\ - mysqlpp::cchar *delem;\ - mysqlpp::cchar *comp;\ - Manip manip;\ - public:\ - ~NAME##_##cus_equal_list () {if (del_vector) delete include;}\ - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9); \ - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9); \ - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, std::vector *i) \ - : obj(o), include(i), del_vector(false), delem(d), comp(c), manip(m) {}\ - };\ - template int sql_compare_##NAME (const NAME &, const NAME &);\ - struct NAME { \ - T1 I1;\ - T2 I2;\ - T3 I3;\ - T4 I4;\ - T5 I5;\ - T6 I6;\ - T7 I7;\ - T8 I8;\ - T9 I9; \ - NAME () {} \ - NAME (const mysqlpp::Row &row);\ - void set (const mysqlpp::Row &row);\ - sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\ - sql_construct_define_##CONTR(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\ - static const char *names[];\ - static const char *_table;\ - static const char *& table() {return _table;}\ - NAME##_value_list value_list() const {\ - return value_list(",", mysqlpp::quote);}\ - NAME##_value_list value_list(mysqlpp::cchar *d) const {\ - return value_list(d, mysqlpp::quote);}\ - template \ - NAME##_value_list value_list(mysqlpp::cchar *d, Manip m) const; \ - NAME##_field_list field_list() const {\ - return field_list(",", mysqlpp::do_nothing);}\ - NAME##_field_list field_list(mysqlpp::cchar *d) const {\ - return field_list(d, mysqlpp::do_nothing);}\ - template \ - NAME##_field_list field_list(mysqlpp::cchar *d, Manip m) const; \ - NAME##_equal_list equal_list(mysqlpp::cchar *d = ",", \ - mysqlpp::cchar *c = " = ") const{\ - return equal_list(d, c, mysqlpp::quote);}\ - template \ - NAME##_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) const; \ - /* cus_data */\ - NAME##_cus_value_list value_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false) const {\ - return value_list(",", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9);\ - }\ - NAME##_cus_value_list value_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL) const {\ - return value_list(",", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9);\ - }\ - NAME##_cus_value_list value_list(std::vector *i) const {\ - return value_list(",", mysqlpp::quote, i);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::sql_cmp_type sc) const {\ - return value_list(",", mysqlpp::quote, sc);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false) const {\ - return value_list(d, mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL) const {\ - return value_list(d, mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, \ - std::vector *i) const {\ - return value_list(d, mysqlpp::quote, i);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, \ - mysqlpp::sql_cmp_type sc) const {\ - return value_list(d, mysqlpp::quote, sc);\ - }\ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false) const; \ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL) const; \ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m, \ - std::vector *i) const;\ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m, \ - mysqlpp::sql_cmp_type sc) const;\ - /* cus field */\ - NAME##_cus_field_list field_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false) const {\ - return field_list(",", mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9);\ - }\ - NAME##_cus_field_list field_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL) const {\ - return field_list(",", mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9);\ - }\ - NAME##_cus_field_list field_list(std::vector *i) const {\ - return field_list(",", mysqlpp::do_nothing, i);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::sql_cmp_type sc) const\ - {\ - return field_list(",", mysqlpp::do_nothing, sc);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, \ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false) const {\ - return field_list(d, mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL) const {\ - return field_list(d, mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, \ - std::vector *i) const {\ - return field_list(d, mysqlpp::do_nothing, i);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, \ - mysqlpp::sql_cmp_type sc) const {\ - return field_list(d, mysqlpp::do_nothing, sc);\ - }\ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false) const; \ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL) const; \ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m,\ - std::vector *i) const;\ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m, \ - mysqlpp::sql_cmp_type sc) const;\ - /* cus equal */\ - NAME##_cus_equal_list equal_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false) const {\ - return equal_list(",", " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9);\ - }\ - NAME##_cus_equal_list equal_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL) const {\ - return equal_list(",", " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9);\ - }\ - NAME##_cus_equal_list equal_list(std::vector *i) const {\ - return equal_list(",", " = ", mysqlpp::quote, i);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::sql_cmp_type sc) const {\ - return equal_list(",", " = ", mysqlpp::quote, sc);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false) const {\ - return equal_list(d, " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL) const {\ - return equal_list(d, " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, \ - std::vector *i) const {\ - return equal_list(d, " = ", mysqlpp::quote, i);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, \ - mysqlpp::sql_cmp_type sc) const {\ - return equal_list(d, " = ", mysqlpp::quote, sc);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false) const {\ - return equal_list(d, c, mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL) const {\ - return equal_list(d, c, mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - std::vector *i) const {\ - return equal_list(d, c, mysqlpp::quote, i);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - mysqlpp::sql_cmp_type sc) const {\ - return equal_list(d, c, mysqlpp::quote, sc);\ - }\ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false) const; \ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL) const; \ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - std::vector *i) const;\ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - mysqlpp::sql_cmp_type sc) const;\ - }; \ - MYSQLPP_SSQLS_EXPAND(\ - const char *NAME::names[] = { \ - N1 ,\ - N2 ,\ - N3 ,\ - N4 ,\ - N5 ,\ - N6 ,\ - N7 ,\ - N8 ,\ - N9 \ - }; \ - const char *NAME::_table = #NAME ;\ - )\ - template \ - NAME##_cus_value_list::NAME##_cus_value_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9) \ - { \ - delem = d;\ - manip = m;\ - del_vector = true;\ - obj = o; \ - include = new std::vector(9, false);\ - if (i1) (*include)[0]=true;\ - if (i2) (*include)[1]=true;\ - if (i3) (*include)[2]=true;\ - if (i4) (*include)[3]=true;\ - if (i5) (*include)[4]=true;\ - if (i6) (*include)[5]=true;\ - if (i7) (*include)[6]=true;\ - if (i8) (*include)[7]=true;\ - if (i9) (*include)[8]=true;\ - } \ - template \ - NAME##_cus_value_list::NAME##_cus_value_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9) { \ - delem = d;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(9, false); \ - if (i1 == NAME##_NULL) return;\ - (*include)[i1]=true;\ - if (i2 == NAME##_NULL) return;\ - (*include)[i2]=true;\ - if (i3 == NAME##_NULL) return;\ - (*include)[i3]=true;\ - if (i4 == NAME##_NULL) return;\ - (*include)[i4]=true;\ - if (i5 == NAME##_NULL) return;\ - (*include)[i5]=true;\ - if (i6 == NAME##_NULL) return;\ - (*include)[i6]=true;\ - if (i7 == NAME##_NULL) return;\ - (*include)[i7]=true;\ - if (i8 == NAME##_NULL) return;\ - (*include)[i8]=true;\ - if (i9 == NAME##_NULL) return;\ - (*include)[i9]=true;\ - }\ - template \ - NAME##_cus_field_list::NAME##_cus_field_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9) {\ - delem = d;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(9, false); \ - if (i1) (*include)[0]=true;\ - if (i2) (*include)[1]=true;\ - if (i3) (*include)[2]=true;\ - if (i4) (*include)[3]=true;\ - if (i5) (*include)[4]=true;\ - if (i6) (*include)[5]=true;\ - if (i7) (*include)[6]=true;\ - if (i8) (*include)[7]=true;\ - if (i9) (*include)[8]=true;\ - } \ - template \ - NAME##_cus_field_list::NAME##_cus_field_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9) { \ - delem = d;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(9, false); \ - if (i1 == NAME##_NULL) return;\ - (*include)[i1]=true;\ - if (i2 == NAME##_NULL) return;\ - (*include)[i2]=true;\ - if (i3 == NAME##_NULL) return;\ - (*include)[i3]=true;\ - if (i4 == NAME##_NULL) return;\ - (*include)[i4]=true;\ - if (i5 == NAME##_NULL) return;\ - (*include)[i5]=true;\ - if (i6 == NAME##_NULL) return;\ - (*include)[i6]=true;\ - if (i7 == NAME##_NULL) return;\ - (*include)[i7]=true;\ - if (i8 == NAME##_NULL) return;\ - (*include)[i8]=true;\ - if (i9 == NAME##_NULL) return;\ - (*include)[i9]=true;\ - }\ - template \ - NAME##_cus_equal_list::NAME##_cus_equal_list\ - (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9) { \ - delem = d;\ - comp = c;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(9, false); \ - if (i1) (*include)[0]=true;\ - if (i2) (*include)[1]=true;\ - if (i3) (*include)[2]=true;\ - if (i4) (*include)[3]=true;\ - if (i5) (*include)[4]=true;\ - if (i6) (*include)[5]=true;\ - if (i7) (*include)[6]=true;\ - if (i8) (*include)[7]=true;\ - if (i9) (*include)[8]=true;\ - } \ - template \ - NAME##_cus_equal_list::NAME##_cus_equal_list\ - (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9) { \ - delem = d;\ - comp = c;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(9, false); \ - if (i1 == NAME##_NULL) return;\ - (*include)[i1]=true;\ - if (i2 == NAME##_NULL) return;\ - (*include)[i2]=true;\ - if (i3 == NAME##_NULL) return;\ - (*include)[i3]=true;\ - if (i4 == NAME##_NULL) return;\ - (*include)[i4]=true;\ - if (i5 == NAME##_NULL) return;\ - (*include)[i5]=true;\ - if (i6 == NAME##_NULL) return;\ - (*include)[i6]=true;\ - if (i7 == NAME##_NULL) return;\ - (*include)[i7]=true;\ - if (i8 == NAME##_NULL) return;\ - (*include)[i8]=true;\ - if (i9 == NAME##_NULL) return;\ - (*include)[i9]=true;\ - }\ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_value_list& obj) { \ - s << obj.manip << obj.obj->I1 << obj.delem;\ - s << obj.manip << obj.obj->I2 << obj.delem;\ - s << obj.manip << obj.obj->I3 << obj.delem;\ - s << obj.manip << obj.obj->I4 << obj.delem;\ - s << obj.manip << obj.obj->I5 << obj.delem;\ - s << obj.manip << obj.obj->I6 << obj.delem;\ - s << obj.manip << obj.obj->I7 << obj.delem;\ - s << obj.manip << obj.obj->I8 << obj.delem;\ - s << obj.manip << obj.obj->I9; \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_field_list& obj) { \ - s << obj.manip << obj.obj->names[0] << obj.delem;\ - s << obj.manip << obj.obj->names[1] << obj.delem;\ - s << obj.manip << obj.obj->names[2] << obj.delem;\ - s << obj.manip << obj.obj->names[3] << obj.delem;\ - s << obj.manip << obj.obj->names[4] << obj.delem;\ - s << obj.manip << obj.obj->names[5] << obj.delem;\ - s << obj.manip << obj.obj->names[6] << obj.delem;\ - s << obj.manip << obj.obj->names[7] << obj.delem;\ - s << obj.manip << obj.obj->names[8]; \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_equal_list& obj) { \ - s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1 << obj.delem;\ - s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2 << obj.delem;\ - s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3 << obj.delem;\ - s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4 << obj.delem;\ - s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5 << obj.delem;\ - s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6 << obj.delem;\ - s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->I7 << obj.delem;\ - s << obj.obj->names[7] << obj.comp << obj.manip << obj.obj->I8 << obj.delem;\ - s << obj.obj->names[8] << obj.comp << obj.manip << obj.obj->I9; \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_cus_value_list& obj) { \ - bool before = false; \ - if ((*obj.include)[0]) { \ - s << obj.manip << obj.obj->I1;\ - before = true; \ - } \ - if ((*obj.include)[1]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I2;\ - before = true; \ - } \ - if ((*obj.include)[2]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I3;\ - before = true; \ - } \ - if ((*obj.include)[3]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I4;\ - before = true; \ - } \ - if ((*obj.include)[4]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I5;\ - before = true; \ - } \ - if ((*obj.include)[5]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I6;\ - before = true; \ - } \ - if ((*obj.include)[6]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I7;\ - before = true; \ - } \ - if ((*obj.include)[7]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I8;\ - before = true; \ - } \ - if ((*obj.include)[8]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I9;\ - } \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_cus_field_list& obj) { \ - bool before = false; \ - if ((*obj.include)[0]) { \ - s << obj.manip << obj.obj->names[0];\ - before = true; \ - } \ - if ((*obj.include)[1]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[1];\ - before = true; \ - } \ - if ((*obj.include)[2]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[2];\ - before = true; \ - } \ - if ((*obj.include)[3]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[3];\ - before = true; \ - } \ - if ((*obj.include)[4]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[4];\ - before = true; \ - } \ - if ((*obj.include)[5]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[5];\ - before = true; \ - } \ - if ((*obj.include)[6]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[6];\ - before = true; \ - } \ - if ((*obj.include)[7]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[7];\ - before = true; \ - } \ - if ((*obj.include)[8]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[8];\ - } \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_cus_equal_list& obj) { \ - bool before = false; \ - if ((*obj.include)[0]) { \ - s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1;\ - before = true; \ - } \ - if ((*obj.include)[1]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2;\ - before = true; \ - } \ - if ((*obj.include)[2]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3;\ - before = true; \ - } \ - if ((*obj.include)[3]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4;\ - before = true; \ - } \ - if ((*obj.include)[4]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5;\ - before = true; \ - } \ - if ((*obj.include)[5]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6;\ - before = true; \ - } \ - if ((*obj.include)[6]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->I7;\ - before = true; \ - } \ - if ((*obj.include)[7]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[7] << obj.comp << obj.manip << obj.obj->I8;\ - before = true; \ - } \ - if ((*obj.include)[8]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[8] << obj.comp << obj.manip << obj.obj->I9;\ - } \ - return s; \ - } \ - template \ - inline NAME##_value_list NAME::value_list(mysqlpp::cchar *d, Manip m) const { \ - return NAME##_value_list (this, d, m); \ - } \ - template \ - inline NAME##_field_list NAME::field_list(mysqlpp::cchar *d, Manip m) const { \ - return NAME##_field_list (this, d, m); \ - } \ - template \ - inline NAME##_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) const { \ - return NAME##_equal_list (this, d, c, m); \ - } \ - template \ - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9) const {\ - return NAME##_cus_value_list (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9); \ - } \ - template \ - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9) const { \ - return NAME##_cus_field_list (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9); \ - } \ - template \ - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m,\ - bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9) const { \ - return NAME##_cus_equal_list (this, d, c, m, i1, i2, i3, i4, i5, i6, i7, i8, i9); \ - } \ - template \ - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9) const { \ - return NAME##_cus_value_list (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9); \ - } \ - template \ - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9) const {\ - return NAME##_cus_field_list (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9); \ - } \ - template \ - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9) const { \ - return NAME##_cus_equal_list (this, d, c, m, i1, i2, i3, i4, i5, i6, i7, i8, i9); \ - } \ - template \ - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m,\ - std::vector *i) const {\ - return NAME##_cus_value_list (this, d, m, i);\ - }\ - template \ - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m,\ - std::vector *i) const {\ - return NAME##_cus_field_list (this, d, m, i);\ - }\ - template \ - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m,\ - std::vector *i) const {\ - return NAME##_cus_equal_list (this, d, c, m, i);\ - }\ - template \ - inline NAME##_cus_value_list \ - NAME::value_list(mysqlpp::cchar *d, Manip m, mysqlpp::sql_cmp_type /*sc*/) const {\ - sql_compare_type_def_##CMP (NAME, value, NUM);\ - }\ - template \ - inline NAME##_cus_field_list \ - NAME::field_list(mysqlpp::cchar *d, Manip m, mysqlpp::sql_cmp_type /*sc*/) const {\ - sql_compare_type_def_##CMP (NAME, field, NUM);\ - }\ - template \ - inline NAME##_cus_equal_list \ - NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, mysqlpp::sql_cmp_type /*sc*/) const {\ - sql_compare_type_defe_##CMP (NAME, equal, NUM);\ - }\ - template \ - void populate_##NAME (NAME *s, const mysqlpp::Row &row) { \ - s->I1 = static_cast(row.at(O1));\ - s->I2 = static_cast(row.at(O2));\ - s->I3 = static_cast(row.at(O3));\ - s->I4 = static_cast(row.at(O4));\ - s->I5 = static_cast(row.at(O5));\ - s->I6 = static_cast(row.at(O6));\ - s->I7 = static_cast(row.at(O7));\ - s->I8 = static_cast(row.at(O8));\ - s->I9 = static_cast(row.at(O9));\ - } \ - inline NAME::NAME (const mysqlpp::Row &row) \ - {populate_##NAME(this, row);}\ - inline void NAME::set (const mysqlpp::Row &row)\ - {populate_##NAME(this, row);}\ - sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, I7, I8, I9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ) - -#define sql_create_basic_9(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9) \ - sql_create_basic_c_order_9(NAME, CMP, CONTR, T1, I1, 0, T2, I2, 1, T3, I3, 2, T4, I4, 3, T5, I5, 4, T6, I6, 5, T7, I7, 6, T8, I8, 7, T9, I9, 8) - -#define sql_create_9(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9) \ - sql_create_complete_9(NAME, CMP, CONTR, T1, I1, #I1, 0, T2, I2, #I2, 1, T3, I3, #I3, 2, T4, I4, #I4, 3, T5, I5, #I5, 4, T6, I6, #I6, 5, T7, I7, #I7, 6, T8, I8, #I8, 7, T9, I9, #I9, 8) \ - -#define sql_create_c_order_9(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6, T7, I7, O7, T8, I8, O8, T9, I9, O9) \ - sql_create_complete_9(NAME, CMP, CONTR, T1, I1, #I1, O1, T2, I2, #I2, O2, T3, I3, #I3, O3, T4, I4, #I4, O4, T5, I5, #I5, O5, T6, I6, #I6, O6, T7, I7, #I7, O7, T8, I8, #I8, O8, T9, I9, #I9, O9) - -#define sql_create_c_names_9(NAME, CMP, CONTR, T1, I1, N1, T2, I2, N2, T3, I3, N3, T4, I4, N4, T5, I5, N5, T6, I6, N6, T7, I7, N7, T8, I8, N8, T9, I9, N9) \ - sql_create_complete_9(NAME, CMP, CONTR, T1, I1, N1, 0, T2, I2, N2, 1, T3, I3, N3, 2, T4, I4, N4, 3, T5, I5, N5, 4, T6, I6, N6, 5, T7, I7, N7, 6, T8, I8, N8, 7, T9, I9, N9, 8) - -// --------------------------------------------------- -// End Create 9 -// --------------------------------------------------- - -// --------------------------------------------------- -// Begin Create 10 -// --------------------------------------------------- -#define sql_create_basic_c_order_10(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6, T7, I7, O7, T8, I8, O8, T9, I9, O9, T10, I10, O10)\ - struct NAME; \ - template int sql_compare_##NAME (const NAME &, const NAME &);\ - struct NAME { \ - T1 I1;\ - T2 I2;\ - T3 I3;\ - T4 I4;\ - T5 I5;\ - T6 I6;\ - T7 I7;\ - T8 I8;\ - T9 I9;\ - T10 I10; \ - NAME () {} \ - NAME (const mysqlpp::Row &row);\ - sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\ - }; \ - template \ - void populate_##NAME (NAME *s, const mysqlpp::Row &row) { \ - s->I1 = static_cast(row.at(O1));\ - s->I2 = static_cast(row.at(O2));\ - s->I3 = static_cast(row.at(O3));\ - s->I4 = static_cast(row.at(O4));\ - s->I5 = static_cast(row.at(O5));\ - s->I6 = static_cast(row.at(O6));\ - s->I7 = static_cast(row.at(O7));\ - s->I8 = static_cast(row.at(O8));\ - s->I9 = static_cast(row.at(O9));\ - s->I10 = static_cast(row.at(O10)); \ - } \ - inline NAME::NAME (const mysqlpp::Row &row) \ - {populate_##NAME(this, row);} \ - sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ) - -#define sql_create_complete_10(NAME, CMP, CONTR, T1, I1, N1, O1, T2, I2, N2, O2, T3, I3, N3, O3, T4, I4, N4, O4, T5, I5, N5, O5, T6, I6, N6, O6, T7, I7, N7, O7, T8, I8, N8, O8, T9, I9, N9, O9, T10, I10, N10, O10) \ - struct NAME; \ - enum NAME##_enum { \ - NAME##_##I1,\ - NAME##_##I2,\ - NAME##_##I3,\ - NAME##_##I4,\ - NAME##_##I5,\ - NAME##_##I6,\ - NAME##_##I7,\ - NAME##_##I8,\ - NAME##_##I9,\ - NAME##_##I10 \ - ,NAME##_NULL \ - }; \ - template \ - class NAME##_value_list { \ - /*friend std::ostream& operator << <> (std::ostream&, const NAME##_value_list&); */\ - public: \ - const NAME *obj;\ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - NAME##_value_list (const NAME *o, mysqlpp::cchar *d, Manip m) \ - : obj(o), delem(d), manip(m) {} \ - };\ - template \ - class NAME##_##field_list {\ - /* friend std::ostream& operator << <> (std::ostream&, const NAME##_field_list&); */\ - public: \ - const NAME *obj; \ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - NAME##_field_list (const NAME *o, mysqlpp::cchar *d, Manip m) \ - : obj(o), delem(d), manip(m) {} \ - };\ - template \ - class NAME##_equal_list { \ - /* friend std::ostream& operator << <> (std::ostream&, const NAME##_equal_list&); */\ - public: \ - const NAME *obj;\ - mysqlpp::cchar *delem;\ - mysqlpp::cchar *comp;\ - Manip manip;\ - public: \ - NAME##_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) \ - : obj(o), delem(d), comp(c), manip(m) {}\ - };\ - template \ - class NAME##_cus_value_list {\ - /* friend std::ostream& operator << <> (std::ostream&, \ - const NAME##_cus_value_list&); */\ - public:\ - const NAME *obj;\ - std::vector *include;\ - bool del_vector;\ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - ~NAME##_cus_value_list () {if (del_vector) delete include;} \ - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10);\ - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10); \ - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m ,std::vector* i)\ - : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\ - };\ - template \ - class NAME##_cus_field_list { \ - /* friend std::ostream& operator << <> (std::ostream&, \ - const NAME##_cus_field_list&); */\ - public:\ - const NAME *obj; \ - std::vector *include; \ - bool del_vector; \ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - ~NAME##_cus_field_list () {if (del_vector) delete include;} \ - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10); \ - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10); \ - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, std::vector *i) \ - : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\ - };\ - template \ - class NAME##_cus_equal_list {\ - /* friend std::ostream& operator << <> (std::ostream&, \ - const NAME##_cus_equal_list&); */\ - public:\ - const NAME *obj;\ - std::vector *include;\ - bool del_vector;\ - mysqlpp::cchar *delem;\ - mysqlpp::cchar *comp;\ - Manip manip;\ - public:\ - ~NAME##_##cus_equal_list () {if (del_vector) delete include;}\ - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10); \ - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10); \ - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, std::vector *i) \ - : obj(o), include(i), del_vector(false), delem(d), comp(c), manip(m) {}\ - };\ - template int sql_compare_##NAME (const NAME &, const NAME &);\ - struct NAME { \ - T1 I1;\ - T2 I2;\ - T3 I3;\ - T4 I4;\ - T5 I5;\ - T6 I6;\ - T7 I7;\ - T8 I8;\ - T9 I9;\ - T10 I10; \ - NAME () {} \ - NAME (const mysqlpp::Row &row);\ - void set (const mysqlpp::Row &row);\ - sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\ - sql_construct_define_##CONTR(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\ - static const char *names[];\ - static const char *_table;\ - static const char *& table() {return _table;}\ - NAME##_value_list value_list() const {\ - return value_list(",", mysqlpp::quote);}\ - NAME##_value_list value_list(mysqlpp::cchar *d) const {\ - return value_list(d, mysqlpp::quote);}\ - template \ - NAME##_value_list value_list(mysqlpp::cchar *d, Manip m) const; \ - NAME##_field_list field_list() const {\ - return field_list(",", mysqlpp::do_nothing);}\ - NAME##_field_list field_list(mysqlpp::cchar *d) const {\ - return field_list(d, mysqlpp::do_nothing);}\ - template \ - NAME##_field_list field_list(mysqlpp::cchar *d, Manip m) const; \ - NAME##_equal_list equal_list(mysqlpp::cchar *d = ",", \ - mysqlpp::cchar *c = " = ") const{\ - return equal_list(d, c, mysqlpp::quote);}\ - template \ - NAME##_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) const; \ - /* cus_data */\ - NAME##_cus_value_list value_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false) const {\ - return value_list(",", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10);\ - }\ - NAME##_cus_value_list value_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL) const {\ - return value_list(",", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10);\ - }\ - NAME##_cus_value_list value_list(std::vector *i) const {\ - return value_list(",", mysqlpp::quote, i);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::sql_cmp_type sc) const {\ - return value_list(",", mysqlpp::quote, sc);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false) const {\ - return value_list(d, mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL) const {\ - return value_list(d, mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, \ - std::vector *i) const {\ - return value_list(d, mysqlpp::quote, i);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, \ - mysqlpp::sql_cmp_type sc) const {\ - return value_list(d, mysqlpp::quote, sc);\ - }\ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false) const; \ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL) const; \ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m, \ - std::vector *i) const;\ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m, \ - mysqlpp::sql_cmp_type sc) const;\ - /* cus field */\ - NAME##_cus_field_list field_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false) const {\ - return field_list(",", mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10);\ - }\ - NAME##_cus_field_list field_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL) const {\ - return field_list(",", mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10);\ - }\ - NAME##_cus_field_list field_list(std::vector *i) const {\ - return field_list(",", mysqlpp::do_nothing, i);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::sql_cmp_type sc) const\ - {\ - return field_list(",", mysqlpp::do_nothing, sc);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, \ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false) const {\ - return field_list(d, mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL) const {\ - return field_list(d, mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, \ - std::vector *i) const {\ - return field_list(d, mysqlpp::do_nothing, i);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, \ - mysqlpp::sql_cmp_type sc) const {\ - return field_list(d, mysqlpp::do_nothing, sc);\ - }\ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false) const; \ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL) const; \ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m,\ - std::vector *i) const;\ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m, \ - mysqlpp::sql_cmp_type sc) const;\ - /* cus equal */\ - NAME##_cus_equal_list equal_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false) const {\ - return equal_list(",", " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10);\ - }\ - NAME##_cus_equal_list equal_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL) const {\ - return equal_list(",", " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10);\ - }\ - NAME##_cus_equal_list equal_list(std::vector *i) const {\ - return equal_list(",", " = ", mysqlpp::quote, i);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::sql_cmp_type sc) const {\ - return equal_list(",", " = ", mysqlpp::quote, sc);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false) const {\ - return equal_list(d, " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL) const {\ - return equal_list(d, " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, \ - std::vector *i) const {\ - return equal_list(d, " = ", mysqlpp::quote, i);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, \ - mysqlpp::sql_cmp_type sc) const {\ - return equal_list(d, " = ", mysqlpp::quote, sc);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false) const {\ - return equal_list(d, c, mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL) const {\ - return equal_list(d, c, mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - std::vector *i) const {\ - return equal_list(d, c, mysqlpp::quote, i);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - mysqlpp::sql_cmp_type sc) const {\ - return equal_list(d, c, mysqlpp::quote, sc);\ - }\ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false) const; \ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL) const; \ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - std::vector *i) const;\ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - mysqlpp::sql_cmp_type sc) const;\ - }; \ - MYSQLPP_SSQLS_EXPAND(\ - const char *NAME::names[] = { \ - N1 ,\ - N2 ,\ - N3 ,\ - N4 ,\ - N5 ,\ - N6 ,\ - N7 ,\ - N8 ,\ - N9 ,\ - N10 \ - }; \ - const char *NAME::_table = #NAME ;\ - )\ - template \ - NAME##_cus_value_list::NAME##_cus_value_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10) \ - { \ - delem = d;\ - manip = m;\ - del_vector = true;\ - obj = o; \ - include = new std::vector(10, false);\ - if (i1) (*include)[0]=true;\ - if (i2) (*include)[1]=true;\ - if (i3) (*include)[2]=true;\ - if (i4) (*include)[3]=true;\ - if (i5) (*include)[4]=true;\ - if (i6) (*include)[5]=true;\ - if (i7) (*include)[6]=true;\ - if (i8) (*include)[7]=true;\ - if (i9) (*include)[8]=true;\ - if (i10) (*include)[9]=true;\ - } \ - template \ - NAME##_cus_value_list::NAME##_cus_value_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10) { \ - delem = d;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(10, false); \ - if (i1 == NAME##_NULL) return;\ - (*include)[i1]=true;\ - if (i2 == NAME##_NULL) return;\ - (*include)[i2]=true;\ - if (i3 == NAME##_NULL) return;\ - (*include)[i3]=true;\ - if (i4 == NAME##_NULL) return;\ - (*include)[i4]=true;\ - if (i5 == NAME##_NULL) return;\ - (*include)[i5]=true;\ - if (i6 == NAME##_NULL) return;\ - (*include)[i6]=true;\ - if (i7 == NAME##_NULL) return;\ - (*include)[i7]=true;\ - if (i8 == NAME##_NULL) return;\ - (*include)[i8]=true;\ - if (i9 == NAME##_NULL) return;\ - (*include)[i9]=true;\ - if (i10 == NAME##_NULL) return;\ - (*include)[i10]=true;\ - }\ - template \ - NAME##_cus_field_list::NAME##_cus_field_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10) {\ - delem = d;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(10, false); \ - if (i1) (*include)[0]=true;\ - if (i2) (*include)[1]=true;\ - if (i3) (*include)[2]=true;\ - if (i4) (*include)[3]=true;\ - if (i5) (*include)[4]=true;\ - if (i6) (*include)[5]=true;\ - if (i7) (*include)[6]=true;\ - if (i8) (*include)[7]=true;\ - if (i9) (*include)[8]=true;\ - if (i10) (*include)[9]=true;\ - } \ - template \ - NAME##_cus_field_list::NAME##_cus_field_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10) { \ - delem = d;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(10, false); \ - if (i1 == NAME##_NULL) return;\ - (*include)[i1]=true;\ - if (i2 == NAME##_NULL) return;\ - (*include)[i2]=true;\ - if (i3 == NAME##_NULL) return;\ - (*include)[i3]=true;\ - if (i4 == NAME##_NULL) return;\ - (*include)[i4]=true;\ - if (i5 == NAME##_NULL) return;\ - (*include)[i5]=true;\ - if (i6 == NAME##_NULL) return;\ - (*include)[i6]=true;\ - if (i7 == NAME##_NULL) return;\ - (*include)[i7]=true;\ - if (i8 == NAME##_NULL) return;\ - (*include)[i8]=true;\ - if (i9 == NAME##_NULL) return;\ - (*include)[i9]=true;\ - if (i10 == NAME##_NULL) return;\ - (*include)[i10]=true;\ - }\ - template \ - NAME##_cus_equal_list::NAME##_cus_equal_list\ - (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10) { \ - delem = d;\ - comp = c;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(10, false); \ - if (i1) (*include)[0]=true;\ - if (i2) (*include)[1]=true;\ - if (i3) (*include)[2]=true;\ - if (i4) (*include)[3]=true;\ - if (i5) (*include)[4]=true;\ - if (i6) (*include)[5]=true;\ - if (i7) (*include)[6]=true;\ - if (i8) (*include)[7]=true;\ - if (i9) (*include)[8]=true;\ - if (i10) (*include)[9]=true;\ - } \ - template \ - NAME##_cus_equal_list::NAME##_cus_equal_list\ - (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10) { \ - delem = d;\ - comp = c;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(10, false); \ - if (i1 == NAME##_NULL) return;\ - (*include)[i1]=true;\ - if (i2 == NAME##_NULL) return;\ - (*include)[i2]=true;\ - if (i3 == NAME##_NULL) return;\ - (*include)[i3]=true;\ - if (i4 == NAME##_NULL) return;\ - (*include)[i4]=true;\ - if (i5 == NAME##_NULL) return;\ - (*include)[i5]=true;\ - if (i6 == NAME##_NULL) return;\ - (*include)[i6]=true;\ - if (i7 == NAME##_NULL) return;\ - (*include)[i7]=true;\ - if (i8 == NAME##_NULL) return;\ - (*include)[i8]=true;\ - if (i9 == NAME##_NULL) return;\ - (*include)[i9]=true;\ - if (i10 == NAME##_NULL) return;\ - (*include)[i10]=true;\ - }\ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_value_list& obj) { \ - s << obj.manip << obj.obj->I1 << obj.delem;\ - s << obj.manip << obj.obj->I2 << obj.delem;\ - s << obj.manip << obj.obj->I3 << obj.delem;\ - s << obj.manip << obj.obj->I4 << obj.delem;\ - s << obj.manip << obj.obj->I5 << obj.delem;\ - s << obj.manip << obj.obj->I6 << obj.delem;\ - s << obj.manip << obj.obj->I7 << obj.delem;\ - s << obj.manip << obj.obj->I8 << obj.delem;\ - s << obj.manip << obj.obj->I9 << obj.delem;\ - s << obj.manip << obj.obj->I10; \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_field_list& obj) { \ - s << obj.manip << obj.obj->names[0] << obj.delem;\ - s << obj.manip << obj.obj->names[1] << obj.delem;\ - s << obj.manip << obj.obj->names[2] << obj.delem;\ - s << obj.manip << obj.obj->names[3] << obj.delem;\ - s << obj.manip << obj.obj->names[4] << obj.delem;\ - s << obj.manip << obj.obj->names[5] << obj.delem;\ - s << obj.manip << obj.obj->names[6] << obj.delem;\ - s << obj.manip << obj.obj->names[7] << obj.delem;\ - s << obj.manip << obj.obj->names[8] << obj.delem;\ - s << obj.manip << obj.obj->names[9]; \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_equal_list& obj) { \ - s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1 << obj.delem;\ - s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2 << obj.delem;\ - s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3 << obj.delem;\ - s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4 << obj.delem;\ - s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5 << obj.delem;\ - s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6 << obj.delem;\ - s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->I7 << obj.delem;\ - s << obj.obj->names[7] << obj.comp << obj.manip << obj.obj->I8 << obj.delem;\ - s << obj.obj->names[8] << obj.comp << obj.manip << obj.obj->I9 << obj.delem;\ - s << obj.obj->names[9] << obj.comp << obj.manip << obj.obj->I10; \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_cus_value_list& obj) { \ - bool before = false; \ - if ((*obj.include)[0]) { \ - s << obj.manip << obj.obj->I1;\ - before = true; \ - } \ - if ((*obj.include)[1]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I2;\ - before = true; \ - } \ - if ((*obj.include)[2]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I3;\ - before = true; \ - } \ - if ((*obj.include)[3]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I4;\ - before = true; \ - } \ - if ((*obj.include)[4]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I5;\ - before = true; \ - } \ - if ((*obj.include)[5]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I6;\ - before = true; \ - } \ - if ((*obj.include)[6]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I7;\ - before = true; \ - } \ - if ((*obj.include)[7]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I8;\ - before = true; \ - } \ - if ((*obj.include)[8]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I9;\ - before = true; \ - } \ - if ((*obj.include)[9]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I10;\ - } \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_cus_field_list& obj) { \ - bool before = false; \ - if ((*obj.include)[0]) { \ - s << obj.manip << obj.obj->names[0];\ - before = true; \ - } \ - if ((*obj.include)[1]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[1];\ - before = true; \ - } \ - if ((*obj.include)[2]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[2];\ - before = true; \ - } \ - if ((*obj.include)[3]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[3];\ - before = true; \ - } \ - if ((*obj.include)[4]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[4];\ - before = true; \ - } \ - if ((*obj.include)[5]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[5];\ - before = true; \ - } \ - if ((*obj.include)[6]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[6];\ - before = true; \ - } \ - if ((*obj.include)[7]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[7];\ - before = true; \ - } \ - if ((*obj.include)[8]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[8];\ - before = true; \ - } \ - if ((*obj.include)[9]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[9];\ - } \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_cus_equal_list& obj) { \ - bool before = false; \ - if ((*obj.include)[0]) { \ - s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1;\ - before = true; \ - } \ - if ((*obj.include)[1]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2;\ - before = true; \ - } \ - if ((*obj.include)[2]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3;\ - before = true; \ - } \ - if ((*obj.include)[3]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4;\ - before = true; \ - } \ - if ((*obj.include)[4]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5;\ - before = true; \ - } \ - if ((*obj.include)[5]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6;\ - before = true; \ - } \ - if ((*obj.include)[6]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->I7;\ - before = true; \ - } \ - if ((*obj.include)[7]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[7] << obj.comp << obj.manip << obj.obj->I8;\ - before = true; \ - } \ - if ((*obj.include)[8]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[8] << obj.comp << obj.manip << obj.obj->I9;\ - before = true; \ - } \ - if ((*obj.include)[9]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[9] << obj.comp << obj.manip << obj.obj->I10;\ - } \ - return s; \ - } \ - template \ - inline NAME##_value_list NAME::value_list(mysqlpp::cchar *d, Manip m) const { \ - return NAME##_value_list (this, d, m); \ - } \ - template \ - inline NAME##_field_list NAME::field_list(mysqlpp::cchar *d, Manip m) const { \ - return NAME##_field_list (this, d, m); \ - } \ - template \ - inline NAME##_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) const { \ - return NAME##_equal_list (this, d, c, m); \ - } \ - template \ - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10) const {\ - return NAME##_cus_value_list (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10); \ - } \ - template \ - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10) const { \ - return NAME##_cus_field_list (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10); \ - } \ - template \ - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m,\ - bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10) const { \ - return NAME##_cus_equal_list (this, d, c, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10); \ - } \ - template \ - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10) const { \ - return NAME##_cus_value_list (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10); \ - } \ - template \ - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10) const {\ - return NAME##_cus_field_list (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10); \ - } \ - template \ - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10) const { \ - return NAME##_cus_equal_list (this, d, c, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10); \ - } \ - template \ - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m,\ - std::vector *i) const {\ - return NAME##_cus_value_list (this, d, m, i);\ - }\ - template \ - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m,\ - std::vector *i) const {\ - return NAME##_cus_field_list (this, d, m, i);\ - }\ - template \ - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m,\ - std::vector *i) const {\ - return NAME##_cus_equal_list (this, d, c, m, i);\ - }\ - template \ - inline NAME##_cus_value_list \ - NAME::value_list(mysqlpp::cchar *d, Manip m, mysqlpp::sql_cmp_type /*sc*/) const {\ - sql_compare_type_def_##CMP (NAME, value, NUM);\ - }\ - template \ - inline NAME##_cus_field_list \ - NAME::field_list(mysqlpp::cchar *d, Manip m, mysqlpp::sql_cmp_type /*sc*/) const {\ - sql_compare_type_def_##CMP (NAME, field, NUM);\ - }\ - template \ - inline NAME##_cus_equal_list \ - NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, mysqlpp::sql_cmp_type /*sc*/) const {\ - sql_compare_type_defe_##CMP (NAME, equal, NUM);\ - }\ - template \ - void populate_##NAME (NAME *s, const mysqlpp::Row &row) { \ - s->I1 = static_cast(row.at(O1));\ - s->I2 = static_cast(row.at(O2));\ - s->I3 = static_cast(row.at(O3));\ - s->I4 = static_cast(row.at(O4));\ - s->I5 = static_cast(row.at(O5));\ - s->I6 = static_cast(row.at(O6));\ - s->I7 = static_cast(row.at(O7));\ - s->I8 = static_cast(row.at(O8));\ - s->I9 = static_cast(row.at(O9));\ - s->I10 = static_cast(row.at(O10));\ - } \ - inline NAME::NAME (const mysqlpp::Row &row) \ - {populate_##NAME(this, row);}\ - inline void NAME::set (const mysqlpp::Row &row)\ - {populate_##NAME(this, row);}\ - sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ) - -#define sql_create_basic_10(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10) \ - sql_create_basic_c_order_10(NAME, CMP, CONTR, T1, I1, 0, T2, I2, 1, T3, I3, 2, T4, I4, 3, T5, I5, 4, T6, I6, 5, T7, I7, 6, T8, I8, 7, T9, I9, 8, T10, I10, 9) - -#define sql_create_10(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10) \ - sql_create_complete_10(NAME, CMP, CONTR, T1, I1, #I1, 0, T2, I2, #I2, 1, T3, I3, #I3, 2, T4, I4, #I4, 3, T5, I5, #I5, 4, T6, I6, #I6, 5, T7, I7, #I7, 6, T8, I8, #I8, 7, T9, I9, #I9, 8, T10, I10, #I10, 9) \ - -#define sql_create_c_order_10(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6, T7, I7, O7, T8, I8, O8, T9, I9, O9, T10, I10, O10) \ - sql_create_complete_10(NAME, CMP, CONTR, T1, I1, #I1, O1, T2, I2, #I2, O2, T3, I3, #I3, O3, T4, I4, #I4, O4, T5, I5, #I5, O5, T6, I6, #I6, O6, T7, I7, #I7, O7, T8, I8, #I8, O8, T9, I9, #I9, O9, T10, I10, #I10, O10) - -#define sql_create_c_names_10(NAME, CMP, CONTR, T1, I1, N1, T2, I2, N2, T3, I3, N3, T4, I4, N4, T5, I5, N5, T6, I6, N6, T7, I7, N7, T8, I8, N8, T9, I9, N9, T10, I10, N10) \ - sql_create_complete_10(NAME, CMP, CONTR, T1, I1, N1, 0, T2, I2, N2, 1, T3, I3, N3, 2, T4, I4, N4, 3, T5, I5, N5, 4, T6, I6, N6, 5, T7, I7, N7, 6, T8, I8, N8, 7, T9, I9, N9, 8, T10, I10, N10, 9) - -// --------------------------------------------------- -// End Create 10 -// --------------------------------------------------- - -// --------------------------------------------------- -// Begin Create 11 -// --------------------------------------------------- -#define sql_create_basic_c_order_11(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6, T7, I7, O7, T8, I8, O8, T9, I9, O9, T10, I10, O10, T11, I11, O11)\ - struct NAME; \ - template int sql_compare_##NAME (const NAME &, const NAME &);\ - struct NAME { \ - T1 I1;\ - T2 I2;\ - T3 I3;\ - T4 I4;\ - T5 I5;\ - T6 I6;\ - T7 I7;\ - T8 I8;\ - T9 I9;\ - T10 I10;\ - T11 I11; \ - NAME () {} \ - NAME (const mysqlpp::Row &row);\ - sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\ - }; \ - template \ - void populate_##NAME (NAME *s, const mysqlpp::Row &row) { \ - s->I1 = static_cast(row.at(O1));\ - s->I2 = static_cast(row.at(O2));\ - s->I3 = static_cast(row.at(O3));\ - s->I4 = static_cast(row.at(O4));\ - s->I5 = static_cast(row.at(O5));\ - s->I6 = static_cast(row.at(O6));\ - s->I7 = static_cast(row.at(O7));\ - s->I8 = static_cast(row.at(O8));\ - s->I9 = static_cast(row.at(O9));\ - s->I10 = static_cast(row.at(O10));\ - s->I11 = static_cast(row.at(O11)); \ - } \ - inline NAME::NAME (const mysqlpp::Row &row) \ - {populate_##NAME(this, row);} \ - sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, I11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ) - -#define sql_create_complete_11(NAME, CMP, CONTR, T1, I1, N1, O1, T2, I2, N2, O2, T3, I3, N3, O3, T4, I4, N4, O4, T5, I5, N5, O5, T6, I6, N6, O6, T7, I7, N7, O7, T8, I8, N8, O8, T9, I9, N9, O9, T10, I10, N10, O10, T11, I11, N11, O11) \ - struct NAME; \ - enum NAME##_enum { \ - NAME##_##I1,\ - NAME##_##I2,\ - NAME##_##I3,\ - NAME##_##I4,\ - NAME##_##I5,\ - NAME##_##I6,\ - NAME##_##I7,\ - NAME##_##I8,\ - NAME##_##I9,\ - NAME##_##I10,\ - NAME##_##I11 \ - ,NAME##_NULL \ - }; \ - template \ - class NAME##_value_list { \ - /*friend std::ostream& operator << <> (std::ostream&, const NAME##_value_list&); */\ - public: \ - const NAME *obj;\ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - NAME##_value_list (const NAME *o, mysqlpp::cchar *d, Manip m) \ - : obj(o), delem(d), manip(m) {} \ - };\ - template \ - class NAME##_##field_list {\ - /* friend std::ostream& operator << <> (std::ostream&, const NAME##_field_list&); */\ - public: \ - const NAME *obj; \ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - NAME##_field_list (const NAME *o, mysqlpp::cchar *d, Manip m) \ - : obj(o), delem(d), manip(m) {} \ - };\ - template \ - class NAME##_equal_list { \ - /* friend std::ostream& operator << <> (std::ostream&, const NAME##_equal_list&); */\ - public: \ - const NAME *obj;\ - mysqlpp::cchar *delem;\ - mysqlpp::cchar *comp;\ - Manip manip;\ - public: \ - NAME##_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) \ - : obj(o), delem(d), comp(c), manip(m) {}\ - };\ - template \ - class NAME##_cus_value_list {\ - /* friend std::ostream& operator << <> (std::ostream&, \ - const NAME##_cus_value_list&); */\ - public:\ - const NAME *obj;\ - std::vector *include;\ - bool del_vector;\ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - ~NAME##_cus_value_list () {if (del_vector) delete include;} \ - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11);\ - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11); \ - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m ,std::vector* i)\ - : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\ - };\ - template \ - class NAME##_cus_field_list { \ - /* friend std::ostream& operator << <> (std::ostream&, \ - const NAME##_cus_field_list&); */\ - public:\ - const NAME *obj; \ - std::vector *include; \ - bool del_vector; \ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - ~NAME##_cus_field_list () {if (del_vector) delete include;} \ - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11); \ - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11); \ - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, std::vector *i) \ - : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\ - };\ - template \ - class NAME##_cus_equal_list {\ - /* friend std::ostream& operator << <> (std::ostream&, \ - const NAME##_cus_equal_list&); */\ - public:\ - const NAME *obj;\ - std::vector *include;\ - bool del_vector;\ - mysqlpp::cchar *delem;\ - mysqlpp::cchar *comp;\ - Manip manip;\ - public:\ - ~NAME##_##cus_equal_list () {if (del_vector) delete include;}\ - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11); \ - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11); \ - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, std::vector *i) \ - : obj(o), include(i), del_vector(false), delem(d), comp(c), manip(m) {}\ - };\ - template int sql_compare_##NAME (const NAME &, const NAME &);\ - struct NAME { \ - T1 I1;\ - T2 I2;\ - T3 I3;\ - T4 I4;\ - T5 I5;\ - T6 I6;\ - T7 I7;\ - T8 I8;\ - T9 I9;\ - T10 I10;\ - T11 I11; \ - NAME () {} \ - NAME (const mysqlpp::Row &row);\ - void set (const mysqlpp::Row &row);\ - sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\ - sql_construct_define_##CONTR(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\ - static const char *names[];\ - static const char *_table;\ - static const char *& table() {return _table;}\ - NAME##_value_list value_list() const {\ - return value_list(",", mysqlpp::quote);}\ - NAME##_value_list value_list(mysqlpp::cchar *d) const {\ - return value_list(d, mysqlpp::quote);}\ - template \ - NAME##_value_list value_list(mysqlpp::cchar *d, Manip m) const; \ - NAME##_field_list field_list() const {\ - return field_list(",", mysqlpp::do_nothing);}\ - NAME##_field_list field_list(mysqlpp::cchar *d) const {\ - return field_list(d, mysqlpp::do_nothing);}\ - template \ - NAME##_field_list field_list(mysqlpp::cchar *d, Manip m) const; \ - NAME##_equal_list equal_list(mysqlpp::cchar *d = ",", \ - mysqlpp::cchar *c = " = ") const{\ - return equal_list(d, c, mysqlpp::quote);}\ - template \ - NAME##_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) const; \ - /* cus_data */\ - NAME##_cus_value_list value_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false) const {\ - return value_list(",", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11);\ - }\ - NAME##_cus_value_list value_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL) const {\ - return value_list(",", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11);\ - }\ - NAME##_cus_value_list value_list(std::vector *i) const {\ - return value_list(",", mysqlpp::quote, i);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::sql_cmp_type sc) const {\ - return value_list(",", mysqlpp::quote, sc);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false) const {\ - return value_list(d, mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL) const {\ - return value_list(d, mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, \ - std::vector *i) const {\ - return value_list(d, mysqlpp::quote, i);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, \ - mysqlpp::sql_cmp_type sc) const {\ - return value_list(d, mysqlpp::quote, sc);\ - }\ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false) const; \ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL) const; \ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m, \ - std::vector *i) const;\ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m, \ - mysqlpp::sql_cmp_type sc) const;\ - /* cus field */\ - NAME##_cus_field_list field_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false) const {\ - return field_list(",", mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11);\ - }\ - NAME##_cus_field_list field_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL) const {\ - return field_list(",", mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11);\ - }\ - NAME##_cus_field_list field_list(std::vector *i) const {\ - return field_list(",", mysqlpp::do_nothing, i);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::sql_cmp_type sc) const\ - {\ - return field_list(",", mysqlpp::do_nothing, sc);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, \ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false) const {\ - return field_list(d, mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL) const {\ - return field_list(d, mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, \ - std::vector *i) const {\ - return field_list(d, mysqlpp::do_nothing, i);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, \ - mysqlpp::sql_cmp_type sc) const {\ - return field_list(d, mysqlpp::do_nothing, sc);\ - }\ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false) const; \ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL) const; \ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m,\ - std::vector *i) const;\ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m, \ - mysqlpp::sql_cmp_type sc) const;\ - /* cus equal */\ - NAME##_cus_equal_list equal_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false) const {\ - return equal_list(",", " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11);\ - }\ - NAME##_cus_equal_list equal_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL) const {\ - return equal_list(",", " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11);\ - }\ - NAME##_cus_equal_list equal_list(std::vector *i) const {\ - return equal_list(",", " = ", mysqlpp::quote, i);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::sql_cmp_type sc) const {\ - return equal_list(",", " = ", mysqlpp::quote, sc);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false) const {\ - return equal_list(d, " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL) const {\ - return equal_list(d, " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, \ - std::vector *i) const {\ - return equal_list(d, " = ", mysqlpp::quote, i);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, \ - mysqlpp::sql_cmp_type sc) const {\ - return equal_list(d, " = ", mysqlpp::quote, sc);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false) const {\ - return equal_list(d, c, mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL) const {\ - return equal_list(d, c, mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - std::vector *i) const {\ - return equal_list(d, c, mysqlpp::quote, i);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - mysqlpp::sql_cmp_type sc) const {\ - return equal_list(d, c, mysqlpp::quote, sc);\ - }\ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false) const; \ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL) const; \ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - std::vector *i) const;\ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - mysqlpp::sql_cmp_type sc) const;\ - }; \ - MYSQLPP_SSQLS_EXPAND(\ - const char *NAME::names[] = { \ - N1 ,\ - N2 ,\ - N3 ,\ - N4 ,\ - N5 ,\ - N6 ,\ - N7 ,\ - N8 ,\ - N9 ,\ - N10 ,\ - N11 \ - }; \ - const char *NAME::_table = #NAME ;\ - )\ - template \ - NAME##_cus_value_list::NAME##_cus_value_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11) \ - { \ - delem = d;\ - manip = m;\ - del_vector = true;\ - obj = o; \ - include = new std::vector(11, false);\ - if (i1) (*include)[0]=true;\ - if (i2) (*include)[1]=true;\ - if (i3) (*include)[2]=true;\ - if (i4) (*include)[3]=true;\ - if (i5) (*include)[4]=true;\ - if (i6) (*include)[5]=true;\ - if (i7) (*include)[6]=true;\ - if (i8) (*include)[7]=true;\ - if (i9) (*include)[8]=true;\ - if (i10) (*include)[9]=true;\ - if (i11) (*include)[10]=true;\ - } \ - template \ - NAME##_cus_value_list::NAME##_cus_value_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11) { \ - delem = d;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(11, false); \ - if (i1 == NAME##_NULL) return;\ - (*include)[i1]=true;\ - if (i2 == NAME##_NULL) return;\ - (*include)[i2]=true;\ - if (i3 == NAME##_NULL) return;\ - (*include)[i3]=true;\ - if (i4 == NAME##_NULL) return;\ - (*include)[i4]=true;\ - if (i5 == NAME##_NULL) return;\ - (*include)[i5]=true;\ - if (i6 == NAME##_NULL) return;\ - (*include)[i6]=true;\ - if (i7 == NAME##_NULL) return;\ - (*include)[i7]=true;\ - if (i8 == NAME##_NULL) return;\ - (*include)[i8]=true;\ - if (i9 == NAME##_NULL) return;\ - (*include)[i9]=true;\ - if (i10 == NAME##_NULL) return;\ - (*include)[i10]=true;\ - if (i11 == NAME##_NULL) return;\ - (*include)[i11]=true;\ - }\ - template \ - NAME##_cus_field_list::NAME##_cus_field_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11) {\ - delem = d;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(11, false); \ - if (i1) (*include)[0]=true;\ - if (i2) (*include)[1]=true;\ - if (i3) (*include)[2]=true;\ - if (i4) (*include)[3]=true;\ - if (i5) (*include)[4]=true;\ - if (i6) (*include)[5]=true;\ - if (i7) (*include)[6]=true;\ - if (i8) (*include)[7]=true;\ - if (i9) (*include)[8]=true;\ - if (i10) (*include)[9]=true;\ - if (i11) (*include)[10]=true;\ - } \ - template \ - NAME##_cus_field_list::NAME##_cus_field_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11) { \ - delem = d;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(11, false); \ - if (i1 == NAME##_NULL) return;\ - (*include)[i1]=true;\ - if (i2 == NAME##_NULL) return;\ - (*include)[i2]=true;\ - if (i3 == NAME##_NULL) return;\ - (*include)[i3]=true;\ - if (i4 == NAME##_NULL) return;\ - (*include)[i4]=true;\ - if (i5 == NAME##_NULL) return;\ - (*include)[i5]=true;\ - if (i6 == NAME##_NULL) return;\ - (*include)[i6]=true;\ - if (i7 == NAME##_NULL) return;\ - (*include)[i7]=true;\ - if (i8 == NAME##_NULL) return;\ - (*include)[i8]=true;\ - if (i9 == NAME##_NULL) return;\ - (*include)[i9]=true;\ - if (i10 == NAME##_NULL) return;\ - (*include)[i10]=true;\ - if (i11 == NAME##_NULL) return;\ - (*include)[i11]=true;\ - }\ - template \ - NAME##_cus_equal_list::NAME##_cus_equal_list\ - (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11) { \ - delem = d;\ - comp = c;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(11, false); \ - if (i1) (*include)[0]=true;\ - if (i2) (*include)[1]=true;\ - if (i3) (*include)[2]=true;\ - if (i4) (*include)[3]=true;\ - if (i5) (*include)[4]=true;\ - if (i6) (*include)[5]=true;\ - if (i7) (*include)[6]=true;\ - if (i8) (*include)[7]=true;\ - if (i9) (*include)[8]=true;\ - if (i10) (*include)[9]=true;\ - if (i11) (*include)[10]=true;\ - } \ - template \ - NAME##_cus_equal_list::NAME##_cus_equal_list\ - (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11) { \ - delem = d;\ - comp = c;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(11, false); \ - if (i1 == NAME##_NULL) return;\ - (*include)[i1]=true;\ - if (i2 == NAME##_NULL) return;\ - (*include)[i2]=true;\ - if (i3 == NAME##_NULL) return;\ - (*include)[i3]=true;\ - if (i4 == NAME##_NULL) return;\ - (*include)[i4]=true;\ - if (i5 == NAME##_NULL) return;\ - (*include)[i5]=true;\ - if (i6 == NAME##_NULL) return;\ - (*include)[i6]=true;\ - if (i7 == NAME##_NULL) return;\ - (*include)[i7]=true;\ - if (i8 == NAME##_NULL) return;\ - (*include)[i8]=true;\ - if (i9 == NAME##_NULL) return;\ - (*include)[i9]=true;\ - if (i10 == NAME##_NULL) return;\ - (*include)[i10]=true;\ - if (i11 == NAME##_NULL) return;\ - (*include)[i11]=true;\ - }\ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_value_list& obj) { \ - s << obj.manip << obj.obj->I1 << obj.delem;\ - s << obj.manip << obj.obj->I2 << obj.delem;\ - s << obj.manip << obj.obj->I3 << obj.delem;\ - s << obj.manip << obj.obj->I4 << obj.delem;\ - s << obj.manip << obj.obj->I5 << obj.delem;\ - s << obj.manip << obj.obj->I6 << obj.delem;\ - s << obj.manip << obj.obj->I7 << obj.delem;\ - s << obj.manip << obj.obj->I8 << obj.delem;\ - s << obj.manip << obj.obj->I9 << obj.delem;\ - s << obj.manip << obj.obj->I10 << obj.delem;\ - s << obj.manip << obj.obj->I11; \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_field_list& obj) { \ - s << obj.manip << obj.obj->names[0] << obj.delem;\ - s << obj.manip << obj.obj->names[1] << obj.delem;\ - s << obj.manip << obj.obj->names[2] << obj.delem;\ - s << obj.manip << obj.obj->names[3] << obj.delem;\ - s << obj.manip << obj.obj->names[4] << obj.delem;\ - s << obj.manip << obj.obj->names[5] << obj.delem;\ - s << obj.manip << obj.obj->names[6] << obj.delem;\ - s << obj.manip << obj.obj->names[7] << obj.delem;\ - s << obj.manip << obj.obj->names[8] << obj.delem;\ - s << obj.manip << obj.obj->names[9] << obj.delem;\ - s << obj.manip << obj.obj->names[10]; \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_equal_list& obj) { \ - s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1 << obj.delem;\ - s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2 << obj.delem;\ - s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3 << obj.delem;\ - s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4 << obj.delem;\ - s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5 << obj.delem;\ - s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6 << obj.delem;\ - s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->I7 << obj.delem;\ - s << obj.obj->names[7] << obj.comp << obj.manip << obj.obj->I8 << obj.delem;\ - s << obj.obj->names[8] << obj.comp << obj.manip << obj.obj->I9 << obj.delem;\ - s << obj.obj->names[9] << obj.comp << obj.manip << obj.obj->I10 << obj.delem;\ - s << obj.obj->names[10] << obj.comp << obj.manip << obj.obj->I11; \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_cus_value_list& obj) { \ - bool before = false; \ - if ((*obj.include)[0]) { \ - s << obj.manip << obj.obj->I1;\ - before = true; \ - } \ - if ((*obj.include)[1]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I2;\ - before = true; \ - } \ - if ((*obj.include)[2]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I3;\ - before = true; \ - } \ - if ((*obj.include)[3]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I4;\ - before = true; \ - } \ - if ((*obj.include)[4]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I5;\ - before = true; \ - } \ - if ((*obj.include)[5]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I6;\ - before = true; \ - } \ - if ((*obj.include)[6]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I7;\ - before = true; \ - } \ - if ((*obj.include)[7]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I8;\ - before = true; \ - } \ - if ((*obj.include)[8]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I9;\ - before = true; \ - } \ - if ((*obj.include)[9]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I10;\ - before = true; \ - } \ - if ((*obj.include)[10]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I11;\ - } \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_cus_field_list& obj) { \ - bool before = false; \ - if ((*obj.include)[0]) { \ - s << obj.manip << obj.obj->names[0];\ - before = true; \ - } \ - if ((*obj.include)[1]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[1];\ - before = true; \ - } \ - if ((*obj.include)[2]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[2];\ - before = true; \ - } \ - if ((*obj.include)[3]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[3];\ - before = true; \ - } \ - if ((*obj.include)[4]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[4];\ - before = true; \ - } \ - if ((*obj.include)[5]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[5];\ - before = true; \ - } \ - if ((*obj.include)[6]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[6];\ - before = true; \ - } \ - if ((*obj.include)[7]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[7];\ - before = true; \ - } \ - if ((*obj.include)[8]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[8];\ - before = true; \ - } \ - if ((*obj.include)[9]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[9];\ - before = true; \ - } \ - if ((*obj.include)[10]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[10];\ - } \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_cus_equal_list& obj) { \ - bool before = false; \ - if ((*obj.include)[0]) { \ - s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1;\ - before = true; \ - } \ - if ((*obj.include)[1]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2;\ - before = true; \ - } \ - if ((*obj.include)[2]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3;\ - before = true; \ - } \ - if ((*obj.include)[3]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4;\ - before = true; \ - } \ - if ((*obj.include)[4]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5;\ - before = true; \ - } \ - if ((*obj.include)[5]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6;\ - before = true; \ - } \ - if ((*obj.include)[6]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->I7;\ - before = true; \ - } \ - if ((*obj.include)[7]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[7] << obj.comp << obj.manip << obj.obj->I8;\ - before = true; \ - } \ - if ((*obj.include)[8]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[8] << obj.comp << obj.manip << obj.obj->I9;\ - before = true; \ - } \ - if ((*obj.include)[9]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[9] << obj.comp << obj.manip << obj.obj->I10;\ - before = true; \ - } \ - if ((*obj.include)[10]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[10] << obj.comp << obj.manip << obj.obj->I11;\ - } \ - return s; \ - } \ - template \ - inline NAME##_value_list NAME::value_list(mysqlpp::cchar *d, Manip m) const { \ - return NAME##_value_list (this, d, m); \ - } \ - template \ - inline NAME##_field_list NAME::field_list(mysqlpp::cchar *d, Manip m) const { \ - return NAME##_field_list (this, d, m); \ - } \ - template \ - inline NAME##_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) const { \ - return NAME##_equal_list (this, d, c, m); \ - } \ - template \ - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11) const {\ - return NAME##_cus_value_list (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11); \ - } \ - template \ - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11) const { \ - return NAME##_cus_field_list (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11); \ - } \ - template \ - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m,\ - bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11) const { \ - return NAME##_cus_equal_list (this, d, c, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11); \ - } \ - template \ - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11) const { \ - return NAME##_cus_value_list (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11); \ - } \ - template \ - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11) const {\ - return NAME##_cus_field_list (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11); \ - } \ - template \ - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11) const { \ - return NAME##_cus_equal_list (this, d, c, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11); \ - } \ - template \ - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m,\ - std::vector *i) const {\ - return NAME##_cus_value_list (this, d, m, i);\ - }\ - template \ - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m,\ - std::vector *i) const {\ - return NAME##_cus_field_list (this, d, m, i);\ - }\ - template \ - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m,\ - std::vector *i) const {\ - return NAME##_cus_equal_list (this, d, c, m, i);\ - }\ - template \ - inline NAME##_cus_value_list \ - NAME::value_list(mysqlpp::cchar *d, Manip m, mysqlpp::sql_cmp_type /*sc*/) const {\ - sql_compare_type_def_##CMP (NAME, value, NUM);\ - }\ - template \ - inline NAME##_cus_field_list \ - NAME::field_list(mysqlpp::cchar *d, Manip m, mysqlpp::sql_cmp_type /*sc*/) const {\ - sql_compare_type_def_##CMP (NAME, field, NUM);\ - }\ - template \ - inline NAME##_cus_equal_list \ - NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, mysqlpp::sql_cmp_type /*sc*/) const {\ - sql_compare_type_defe_##CMP (NAME, equal, NUM);\ - }\ - template \ - void populate_##NAME (NAME *s, const mysqlpp::Row &row) { \ - s->I1 = static_cast(row.at(O1));\ - s->I2 = static_cast(row.at(O2));\ - s->I3 = static_cast(row.at(O3));\ - s->I4 = static_cast(row.at(O4));\ - s->I5 = static_cast(row.at(O5));\ - s->I6 = static_cast(row.at(O6));\ - s->I7 = static_cast(row.at(O7));\ - s->I8 = static_cast(row.at(O8));\ - s->I9 = static_cast(row.at(O9));\ - s->I10 = static_cast(row.at(O10));\ - s->I11 = static_cast(row.at(O11));\ - } \ - inline NAME::NAME (const mysqlpp::Row &row) \ - {populate_##NAME(this, row);}\ - inline void NAME::set (const mysqlpp::Row &row)\ - {populate_##NAME(this, row);}\ - sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, I11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ) - -#define sql_create_basic_11(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11) \ - sql_create_basic_c_order_11(NAME, CMP, CONTR, T1, I1, 0, T2, I2, 1, T3, I3, 2, T4, I4, 3, T5, I5, 4, T6, I6, 5, T7, I7, 6, T8, I8, 7, T9, I9, 8, T10, I10, 9, T11, I11, 10) - -#define sql_create_11(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11) \ - sql_create_complete_11(NAME, CMP, CONTR, T1, I1, #I1, 0, T2, I2, #I2, 1, T3, I3, #I3, 2, T4, I4, #I4, 3, T5, I5, #I5, 4, T6, I6, #I6, 5, T7, I7, #I7, 6, T8, I8, #I8, 7, T9, I9, #I9, 8, T10, I10, #I10, 9, T11, I11, #I11, 10) \ - -#define sql_create_c_order_11(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6, T7, I7, O7, T8, I8, O8, T9, I9, O9, T10, I10, O10, T11, I11, O11) \ - sql_create_complete_11(NAME, CMP, CONTR, T1, I1, #I1, O1, T2, I2, #I2, O2, T3, I3, #I3, O3, T4, I4, #I4, O4, T5, I5, #I5, O5, T6, I6, #I6, O6, T7, I7, #I7, O7, T8, I8, #I8, O8, T9, I9, #I9, O9, T10, I10, #I10, O10, T11, I11, #I11, O11) - -#define sql_create_c_names_11(NAME, CMP, CONTR, T1, I1, N1, T2, I2, N2, T3, I3, N3, T4, I4, N4, T5, I5, N5, T6, I6, N6, T7, I7, N7, T8, I8, N8, T9, I9, N9, T10, I10, N10, T11, I11, N11) \ - sql_create_complete_11(NAME, CMP, CONTR, T1, I1, N1, 0, T2, I2, N2, 1, T3, I3, N3, 2, T4, I4, N4, 3, T5, I5, N5, 4, T6, I6, N6, 5, T7, I7, N7, 6, T8, I8, N8, 7, T9, I9, N9, 8, T10, I10, N10, 9, T11, I11, N11, 10) - -// --------------------------------------------------- -// End Create 11 -// --------------------------------------------------- - -// --------------------------------------------------- -// Begin Create 12 -// --------------------------------------------------- -#define sql_create_basic_c_order_12(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6, T7, I7, O7, T8, I8, O8, T9, I9, O9, T10, I10, O10, T11, I11, O11, T12, I12, O12)\ - struct NAME; \ - template int sql_compare_##NAME (const NAME &, const NAME &);\ - struct NAME { \ - T1 I1;\ - T2 I2;\ - T3 I3;\ - T4 I4;\ - T5 I5;\ - T6 I6;\ - T7 I7;\ - T8 I8;\ - T9 I9;\ - T10 I10;\ - T11 I11;\ - T12 I12; \ - NAME () {} \ - NAME (const mysqlpp::Row &row);\ - sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\ - }; \ - template \ - void populate_##NAME (NAME *s, const mysqlpp::Row &row) { \ - s->I1 = static_cast(row.at(O1));\ - s->I2 = static_cast(row.at(O2));\ - s->I3 = static_cast(row.at(O3));\ - s->I4 = static_cast(row.at(O4));\ - s->I5 = static_cast(row.at(O5));\ - s->I6 = static_cast(row.at(O6));\ - s->I7 = static_cast(row.at(O7));\ - s->I8 = static_cast(row.at(O8));\ - s->I9 = static_cast(row.at(O9));\ - s->I10 = static_cast(row.at(O10));\ - s->I11 = static_cast(row.at(O11));\ - s->I12 = static_cast(row.at(O12)); \ - } \ - inline NAME::NAME (const mysqlpp::Row &row) \ - {populate_##NAME(this, row);} \ - sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, I11, I12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ) - -#define sql_create_complete_12(NAME, CMP, CONTR, T1, I1, N1, O1, T2, I2, N2, O2, T3, I3, N3, O3, T4, I4, N4, O4, T5, I5, N5, O5, T6, I6, N6, O6, T7, I7, N7, O7, T8, I8, N8, O8, T9, I9, N9, O9, T10, I10, N10, O10, T11, I11, N11, O11, T12, I12, N12, O12) \ - struct NAME; \ - enum NAME##_enum { \ - NAME##_##I1,\ - NAME##_##I2,\ - NAME##_##I3,\ - NAME##_##I4,\ - NAME##_##I5,\ - NAME##_##I6,\ - NAME##_##I7,\ - NAME##_##I8,\ - NAME##_##I9,\ - NAME##_##I10,\ - NAME##_##I11,\ - NAME##_##I12 \ - ,NAME##_NULL \ - }; \ - template \ - class NAME##_value_list { \ - /*friend std::ostream& operator << <> (std::ostream&, const NAME##_value_list&); */\ - public: \ - const NAME *obj;\ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - NAME##_value_list (const NAME *o, mysqlpp::cchar *d, Manip m) \ - : obj(o), delem(d), manip(m) {} \ - };\ - template \ - class NAME##_##field_list {\ - /* friend std::ostream& operator << <> (std::ostream&, const NAME##_field_list&); */\ - public: \ - const NAME *obj; \ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - NAME##_field_list (const NAME *o, mysqlpp::cchar *d, Manip m) \ - : obj(o), delem(d), manip(m) {} \ - };\ - template \ - class NAME##_equal_list { \ - /* friend std::ostream& operator << <> (std::ostream&, const NAME##_equal_list&); */\ - public: \ - const NAME *obj;\ - mysqlpp::cchar *delem;\ - mysqlpp::cchar *comp;\ - Manip manip;\ - public: \ - NAME##_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) \ - : obj(o), delem(d), comp(c), manip(m) {}\ - };\ - template \ - class NAME##_cus_value_list {\ - /* friend std::ostream& operator << <> (std::ostream&, \ - const NAME##_cus_value_list&); */\ - public:\ - const NAME *obj;\ - std::vector *include;\ - bool del_vector;\ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - ~NAME##_cus_value_list () {if (del_vector) delete include;} \ - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12);\ - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12); \ - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m ,std::vector* i)\ - : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\ - };\ - template \ - class NAME##_cus_field_list { \ - /* friend std::ostream& operator << <> (std::ostream&, \ - const NAME##_cus_field_list&); */\ - public:\ - const NAME *obj; \ - std::vector *include; \ - bool del_vector; \ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - ~NAME##_cus_field_list () {if (del_vector) delete include;} \ - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12); \ - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12); \ - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, std::vector *i) \ - : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\ - };\ - template \ - class NAME##_cus_equal_list {\ - /* friend std::ostream& operator << <> (std::ostream&, \ - const NAME##_cus_equal_list&); */\ - public:\ - const NAME *obj;\ - std::vector *include;\ - bool del_vector;\ - mysqlpp::cchar *delem;\ - mysqlpp::cchar *comp;\ - Manip manip;\ - public:\ - ~NAME##_##cus_equal_list () {if (del_vector) delete include;}\ - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12); \ - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12); \ - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, std::vector *i) \ - : obj(o), include(i), del_vector(false), delem(d), comp(c), manip(m) {}\ - };\ - template int sql_compare_##NAME (const NAME &, const NAME &);\ - struct NAME { \ - T1 I1;\ - T2 I2;\ - T3 I3;\ - T4 I4;\ - T5 I5;\ - T6 I6;\ - T7 I7;\ - T8 I8;\ - T9 I9;\ - T10 I10;\ - T11 I11;\ - T12 I12; \ - NAME () {} \ - NAME (const mysqlpp::Row &row);\ - void set (const mysqlpp::Row &row);\ - sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\ - sql_construct_define_##CONTR(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\ - static const char *names[];\ - static const char *_table;\ - static const char *& table() {return _table;}\ - NAME##_value_list value_list() const {\ - return value_list(",", mysqlpp::quote);}\ - NAME##_value_list value_list(mysqlpp::cchar *d) const {\ - return value_list(d, mysqlpp::quote);}\ - template \ - NAME##_value_list value_list(mysqlpp::cchar *d, Manip m) const; \ - NAME##_field_list field_list() const {\ - return field_list(",", mysqlpp::do_nothing);}\ - NAME##_field_list field_list(mysqlpp::cchar *d) const {\ - return field_list(d, mysqlpp::do_nothing);}\ - template \ - NAME##_field_list field_list(mysqlpp::cchar *d, Manip m) const; \ - NAME##_equal_list equal_list(mysqlpp::cchar *d = ",", \ - mysqlpp::cchar *c = " = ") const{\ - return equal_list(d, c, mysqlpp::quote);}\ - template \ - NAME##_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) const; \ - /* cus_data */\ - NAME##_cus_value_list value_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false) const {\ - return value_list(",", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12);\ - }\ - NAME##_cus_value_list value_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL) const {\ - return value_list(",", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12);\ - }\ - NAME##_cus_value_list value_list(std::vector *i) const {\ - return value_list(",", mysqlpp::quote, i);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::sql_cmp_type sc) const {\ - return value_list(",", mysqlpp::quote, sc);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false) const {\ - return value_list(d, mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL) const {\ - return value_list(d, mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, \ - std::vector *i) const {\ - return value_list(d, mysqlpp::quote, i);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, \ - mysqlpp::sql_cmp_type sc) const {\ - return value_list(d, mysqlpp::quote, sc);\ - }\ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false) const; \ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL) const; \ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m, \ - std::vector *i) const;\ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m, \ - mysqlpp::sql_cmp_type sc) const;\ - /* cus field */\ - NAME##_cus_field_list field_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false) const {\ - return field_list(",", mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12);\ - }\ - NAME##_cus_field_list field_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL) const {\ - return field_list(",", mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12);\ - }\ - NAME##_cus_field_list field_list(std::vector *i) const {\ - return field_list(",", mysqlpp::do_nothing, i);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::sql_cmp_type sc) const\ - {\ - return field_list(",", mysqlpp::do_nothing, sc);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, \ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false) const {\ - return field_list(d, mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL) const {\ - return field_list(d, mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, \ - std::vector *i) const {\ - return field_list(d, mysqlpp::do_nothing, i);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, \ - mysqlpp::sql_cmp_type sc) const {\ - return field_list(d, mysqlpp::do_nothing, sc);\ - }\ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false) const; \ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL) const; \ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m,\ - std::vector *i) const;\ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m, \ - mysqlpp::sql_cmp_type sc) const;\ - /* cus equal */\ - NAME##_cus_equal_list equal_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false) const {\ - return equal_list(",", " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12);\ - }\ - NAME##_cus_equal_list equal_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL) const {\ - return equal_list(",", " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12);\ - }\ - NAME##_cus_equal_list equal_list(std::vector *i) const {\ - return equal_list(",", " = ", mysqlpp::quote, i);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::sql_cmp_type sc) const {\ - return equal_list(",", " = ", mysqlpp::quote, sc);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false) const {\ - return equal_list(d, " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL) const {\ - return equal_list(d, " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, \ - std::vector *i) const {\ - return equal_list(d, " = ", mysqlpp::quote, i);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, \ - mysqlpp::sql_cmp_type sc) const {\ - return equal_list(d, " = ", mysqlpp::quote, sc);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false) const {\ - return equal_list(d, c, mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL) const {\ - return equal_list(d, c, mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - std::vector *i) const {\ - return equal_list(d, c, mysqlpp::quote, i);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - mysqlpp::sql_cmp_type sc) const {\ - return equal_list(d, c, mysqlpp::quote, sc);\ - }\ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false) const; \ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL) const; \ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - std::vector *i) const;\ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - mysqlpp::sql_cmp_type sc) const;\ - }; \ - MYSQLPP_SSQLS_EXPAND(\ - const char *NAME::names[] = { \ - N1 ,\ - N2 ,\ - N3 ,\ - N4 ,\ - N5 ,\ - N6 ,\ - N7 ,\ - N8 ,\ - N9 ,\ - N10 ,\ - N11 ,\ - N12 \ - }; \ - const char *NAME::_table = #NAME ;\ - )\ - template \ - NAME##_cus_value_list::NAME##_cus_value_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12) \ - { \ - delem = d;\ - manip = m;\ - del_vector = true;\ - obj = o; \ - include = new std::vector(12, false);\ - if (i1) (*include)[0]=true;\ - if (i2) (*include)[1]=true;\ - if (i3) (*include)[2]=true;\ - if (i4) (*include)[3]=true;\ - if (i5) (*include)[4]=true;\ - if (i6) (*include)[5]=true;\ - if (i7) (*include)[6]=true;\ - if (i8) (*include)[7]=true;\ - if (i9) (*include)[8]=true;\ - if (i10) (*include)[9]=true;\ - if (i11) (*include)[10]=true;\ - if (i12) (*include)[11]=true;\ - } \ - template \ - NAME##_cus_value_list::NAME##_cus_value_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12) { \ - delem = d;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(12, false); \ - if (i1 == NAME##_NULL) return;\ - (*include)[i1]=true;\ - if (i2 == NAME##_NULL) return;\ - (*include)[i2]=true;\ - if (i3 == NAME##_NULL) return;\ - (*include)[i3]=true;\ - if (i4 == NAME##_NULL) return;\ - (*include)[i4]=true;\ - if (i5 == NAME##_NULL) return;\ - (*include)[i5]=true;\ - if (i6 == NAME##_NULL) return;\ - (*include)[i6]=true;\ - if (i7 == NAME##_NULL) return;\ - (*include)[i7]=true;\ - if (i8 == NAME##_NULL) return;\ - (*include)[i8]=true;\ - if (i9 == NAME##_NULL) return;\ - (*include)[i9]=true;\ - if (i10 == NAME##_NULL) return;\ - (*include)[i10]=true;\ - if (i11 == NAME##_NULL) return;\ - (*include)[i11]=true;\ - if (i12 == NAME##_NULL) return;\ - (*include)[i12]=true;\ - }\ - template \ - NAME##_cus_field_list::NAME##_cus_field_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12) {\ - delem = d;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(12, false); \ - if (i1) (*include)[0]=true;\ - if (i2) (*include)[1]=true;\ - if (i3) (*include)[2]=true;\ - if (i4) (*include)[3]=true;\ - if (i5) (*include)[4]=true;\ - if (i6) (*include)[5]=true;\ - if (i7) (*include)[6]=true;\ - if (i8) (*include)[7]=true;\ - if (i9) (*include)[8]=true;\ - if (i10) (*include)[9]=true;\ - if (i11) (*include)[10]=true;\ - if (i12) (*include)[11]=true;\ - } \ - template \ - NAME##_cus_field_list::NAME##_cus_field_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12) { \ - delem = d;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(12, false); \ - if (i1 == NAME##_NULL) return;\ - (*include)[i1]=true;\ - if (i2 == NAME##_NULL) return;\ - (*include)[i2]=true;\ - if (i3 == NAME##_NULL) return;\ - (*include)[i3]=true;\ - if (i4 == NAME##_NULL) return;\ - (*include)[i4]=true;\ - if (i5 == NAME##_NULL) return;\ - (*include)[i5]=true;\ - if (i6 == NAME##_NULL) return;\ - (*include)[i6]=true;\ - if (i7 == NAME##_NULL) return;\ - (*include)[i7]=true;\ - if (i8 == NAME##_NULL) return;\ - (*include)[i8]=true;\ - if (i9 == NAME##_NULL) return;\ - (*include)[i9]=true;\ - if (i10 == NAME##_NULL) return;\ - (*include)[i10]=true;\ - if (i11 == NAME##_NULL) return;\ - (*include)[i11]=true;\ - if (i12 == NAME##_NULL) return;\ - (*include)[i12]=true;\ - }\ - template \ - NAME##_cus_equal_list::NAME##_cus_equal_list\ - (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12) { \ - delem = d;\ - comp = c;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(12, false); \ - if (i1) (*include)[0]=true;\ - if (i2) (*include)[1]=true;\ - if (i3) (*include)[2]=true;\ - if (i4) (*include)[3]=true;\ - if (i5) (*include)[4]=true;\ - if (i6) (*include)[5]=true;\ - if (i7) (*include)[6]=true;\ - if (i8) (*include)[7]=true;\ - if (i9) (*include)[8]=true;\ - if (i10) (*include)[9]=true;\ - if (i11) (*include)[10]=true;\ - if (i12) (*include)[11]=true;\ - } \ - template \ - NAME##_cus_equal_list::NAME##_cus_equal_list\ - (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12) { \ - delem = d;\ - comp = c;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(12, false); \ - if (i1 == NAME##_NULL) return;\ - (*include)[i1]=true;\ - if (i2 == NAME##_NULL) return;\ - (*include)[i2]=true;\ - if (i3 == NAME##_NULL) return;\ - (*include)[i3]=true;\ - if (i4 == NAME##_NULL) return;\ - (*include)[i4]=true;\ - if (i5 == NAME##_NULL) return;\ - (*include)[i5]=true;\ - if (i6 == NAME##_NULL) return;\ - (*include)[i6]=true;\ - if (i7 == NAME##_NULL) return;\ - (*include)[i7]=true;\ - if (i8 == NAME##_NULL) return;\ - (*include)[i8]=true;\ - if (i9 == NAME##_NULL) return;\ - (*include)[i9]=true;\ - if (i10 == NAME##_NULL) return;\ - (*include)[i10]=true;\ - if (i11 == NAME##_NULL) return;\ - (*include)[i11]=true;\ - if (i12 == NAME##_NULL) return;\ - (*include)[i12]=true;\ - }\ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_value_list& obj) { \ - s << obj.manip << obj.obj->I1 << obj.delem;\ - s << obj.manip << obj.obj->I2 << obj.delem;\ - s << obj.manip << obj.obj->I3 << obj.delem;\ - s << obj.manip << obj.obj->I4 << obj.delem;\ - s << obj.manip << obj.obj->I5 << obj.delem;\ - s << obj.manip << obj.obj->I6 << obj.delem;\ - s << obj.manip << obj.obj->I7 << obj.delem;\ - s << obj.manip << obj.obj->I8 << obj.delem;\ - s << obj.manip << obj.obj->I9 << obj.delem;\ - s << obj.manip << obj.obj->I10 << obj.delem;\ - s << obj.manip << obj.obj->I11 << obj.delem;\ - s << obj.manip << obj.obj->I12; \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_field_list& obj) { \ - s << obj.manip << obj.obj->names[0] << obj.delem;\ - s << obj.manip << obj.obj->names[1] << obj.delem;\ - s << obj.manip << obj.obj->names[2] << obj.delem;\ - s << obj.manip << obj.obj->names[3] << obj.delem;\ - s << obj.manip << obj.obj->names[4] << obj.delem;\ - s << obj.manip << obj.obj->names[5] << obj.delem;\ - s << obj.manip << obj.obj->names[6] << obj.delem;\ - s << obj.manip << obj.obj->names[7] << obj.delem;\ - s << obj.manip << obj.obj->names[8] << obj.delem;\ - s << obj.manip << obj.obj->names[9] << obj.delem;\ - s << obj.manip << obj.obj->names[10] << obj.delem;\ - s << obj.manip << obj.obj->names[11]; \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_equal_list& obj) { \ - s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1 << obj.delem;\ - s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2 << obj.delem;\ - s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3 << obj.delem;\ - s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4 << obj.delem;\ - s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5 << obj.delem;\ - s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6 << obj.delem;\ - s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->I7 << obj.delem;\ - s << obj.obj->names[7] << obj.comp << obj.manip << obj.obj->I8 << obj.delem;\ - s << obj.obj->names[8] << obj.comp << obj.manip << obj.obj->I9 << obj.delem;\ - s << obj.obj->names[9] << obj.comp << obj.manip << obj.obj->I10 << obj.delem;\ - s << obj.obj->names[10] << obj.comp << obj.manip << obj.obj->I11 << obj.delem;\ - s << obj.obj->names[11] << obj.comp << obj.manip << obj.obj->I12; \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_cus_value_list& obj) { \ - bool before = false; \ - if ((*obj.include)[0]) { \ - s << obj.manip << obj.obj->I1;\ - before = true; \ - } \ - if ((*obj.include)[1]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I2;\ - before = true; \ - } \ - if ((*obj.include)[2]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I3;\ - before = true; \ - } \ - if ((*obj.include)[3]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I4;\ - before = true; \ - } \ - if ((*obj.include)[4]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I5;\ - before = true; \ - } \ - if ((*obj.include)[5]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I6;\ - before = true; \ - } \ - if ((*obj.include)[6]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I7;\ - before = true; \ - } \ - if ((*obj.include)[7]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I8;\ - before = true; \ - } \ - if ((*obj.include)[8]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I9;\ - before = true; \ - } \ - if ((*obj.include)[9]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I10;\ - before = true; \ - } \ - if ((*obj.include)[10]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I11;\ - before = true; \ - } \ - if ((*obj.include)[11]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I12;\ - } \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_cus_field_list& obj) { \ - bool before = false; \ - if ((*obj.include)[0]) { \ - s << obj.manip << obj.obj->names[0];\ - before = true; \ - } \ - if ((*obj.include)[1]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[1];\ - before = true; \ - } \ - if ((*obj.include)[2]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[2];\ - before = true; \ - } \ - if ((*obj.include)[3]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[3];\ - before = true; \ - } \ - if ((*obj.include)[4]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[4];\ - before = true; \ - } \ - if ((*obj.include)[5]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[5];\ - before = true; \ - } \ - if ((*obj.include)[6]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[6];\ - before = true; \ - } \ - if ((*obj.include)[7]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[7];\ - before = true; \ - } \ - if ((*obj.include)[8]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[8];\ - before = true; \ - } \ - if ((*obj.include)[9]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[9];\ - before = true; \ - } \ - if ((*obj.include)[10]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[10];\ - before = true; \ - } \ - if ((*obj.include)[11]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[11];\ - } \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_cus_equal_list& obj) { \ - bool before = false; \ - if ((*obj.include)[0]) { \ - s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1;\ - before = true; \ - } \ - if ((*obj.include)[1]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2;\ - before = true; \ - } \ - if ((*obj.include)[2]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3;\ - before = true; \ - } \ - if ((*obj.include)[3]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4;\ - before = true; \ - } \ - if ((*obj.include)[4]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5;\ - before = true; \ - } \ - if ((*obj.include)[5]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6;\ - before = true; \ - } \ - if ((*obj.include)[6]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->I7;\ - before = true; \ - } \ - if ((*obj.include)[7]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[7] << obj.comp << obj.manip << obj.obj->I8;\ - before = true; \ - } \ - if ((*obj.include)[8]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[8] << obj.comp << obj.manip << obj.obj->I9;\ - before = true; \ - } \ - if ((*obj.include)[9]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[9] << obj.comp << obj.manip << obj.obj->I10;\ - before = true; \ - } \ - if ((*obj.include)[10]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[10] << obj.comp << obj.manip << obj.obj->I11;\ - before = true; \ - } \ - if ((*obj.include)[11]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[11] << obj.comp << obj.manip << obj.obj->I12;\ - } \ - return s; \ - } \ - template \ - inline NAME##_value_list NAME::value_list(mysqlpp::cchar *d, Manip m) const { \ - return NAME##_value_list (this, d, m); \ - } \ - template \ - inline NAME##_field_list NAME::field_list(mysqlpp::cchar *d, Manip m) const { \ - return NAME##_field_list (this, d, m); \ - } \ - template \ - inline NAME##_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) const { \ - return NAME##_equal_list (this, d, c, m); \ - } \ - template \ - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12) const {\ - return NAME##_cus_value_list (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12); \ - } \ - template \ - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12) const { \ - return NAME##_cus_field_list (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12); \ - } \ - template \ - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m,\ - bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12) const { \ - return NAME##_cus_equal_list (this, d, c, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12); \ - } \ - template \ - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12) const { \ - return NAME##_cus_value_list (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12); \ - } \ - template \ - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12) const {\ - return NAME##_cus_field_list (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12); \ - } \ - template \ - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12) const { \ - return NAME##_cus_equal_list (this, d, c, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12); \ - } \ - template \ - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m,\ - std::vector *i) const {\ - return NAME##_cus_value_list (this, d, m, i);\ - }\ - template \ - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m,\ - std::vector *i) const {\ - return NAME##_cus_field_list (this, d, m, i);\ - }\ - template \ - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m,\ - std::vector *i) const {\ - return NAME##_cus_equal_list (this, d, c, m, i);\ - }\ - template \ - inline NAME##_cus_value_list \ - NAME::value_list(mysqlpp::cchar *d, Manip m, mysqlpp::sql_cmp_type /*sc*/) const {\ - sql_compare_type_def_##CMP (NAME, value, NUM);\ - }\ - template \ - inline NAME##_cus_field_list \ - NAME::field_list(mysqlpp::cchar *d, Manip m, mysqlpp::sql_cmp_type /*sc*/) const {\ - sql_compare_type_def_##CMP (NAME, field, NUM);\ - }\ - template \ - inline NAME##_cus_equal_list \ - NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, mysqlpp::sql_cmp_type /*sc*/) const {\ - sql_compare_type_defe_##CMP (NAME, equal, NUM);\ - }\ - template \ - void populate_##NAME (NAME *s, const mysqlpp::Row &row) { \ - s->I1 = static_cast(row.at(O1));\ - s->I2 = static_cast(row.at(O2));\ - s->I3 = static_cast(row.at(O3));\ - s->I4 = static_cast(row.at(O4));\ - s->I5 = static_cast(row.at(O5));\ - s->I6 = static_cast(row.at(O6));\ - s->I7 = static_cast(row.at(O7));\ - s->I8 = static_cast(row.at(O8));\ - s->I9 = static_cast(row.at(O9));\ - s->I10 = static_cast(row.at(O10));\ - s->I11 = static_cast(row.at(O11));\ - s->I12 = static_cast(row.at(O12));\ - } \ - inline NAME::NAME (const mysqlpp::Row &row) \ - {populate_##NAME(this, row);}\ - inline void NAME::set (const mysqlpp::Row &row)\ - {populate_##NAME(this, row);}\ - sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, I11, I12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ) - -#define sql_create_basic_12(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12) \ - sql_create_basic_c_order_12(NAME, CMP, CONTR, T1, I1, 0, T2, I2, 1, T3, I3, 2, T4, I4, 3, T5, I5, 4, T6, I6, 5, T7, I7, 6, T8, I8, 7, T9, I9, 8, T10, I10, 9, T11, I11, 10, T12, I12, 11) - -#define sql_create_12(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12) \ - sql_create_complete_12(NAME, CMP, CONTR, T1, I1, #I1, 0, T2, I2, #I2, 1, T3, I3, #I3, 2, T4, I4, #I4, 3, T5, I5, #I5, 4, T6, I6, #I6, 5, T7, I7, #I7, 6, T8, I8, #I8, 7, T9, I9, #I9, 8, T10, I10, #I10, 9, T11, I11, #I11, 10, T12, I12, #I12, 11) \ - -#define sql_create_c_order_12(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6, T7, I7, O7, T8, I8, O8, T9, I9, O9, T10, I10, O10, T11, I11, O11, T12, I12, O12) \ - sql_create_complete_12(NAME, CMP, CONTR, T1, I1, #I1, O1, T2, I2, #I2, O2, T3, I3, #I3, O3, T4, I4, #I4, O4, T5, I5, #I5, O5, T6, I6, #I6, O6, T7, I7, #I7, O7, T8, I8, #I8, O8, T9, I9, #I9, O9, T10, I10, #I10, O10, T11, I11, #I11, O11, T12, I12, #I12, O12) - -#define sql_create_c_names_12(NAME, CMP, CONTR, T1, I1, N1, T2, I2, N2, T3, I3, N3, T4, I4, N4, T5, I5, N5, T6, I6, N6, T7, I7, N7, T8, I8, N8, T9, I9, N9, T10, I10, N10, T11, I11, N11, T12, I12, N12) \ - sql_create_complete_12(NAME, CMP, CONTR, T1, I1, N1, 0, T2, I2, N2, 1, T3, I3, N3, 2, T4, I4, N4, 3, T5, I5, N5, 4, T6, I6, N6, 5, T7, I7, N7, 6, T8, I8, N8, 7, T9, I9, N9, 8, T10, I10, N10, 9, T11, I11, N11, 10, T12, I12, N12, 11) - -// --------------------------------------------------- -// End Create 12 -// --------------------------------------------------- - -// --------------------------------------------------- -// Begin Create 13 -// --------------------------------------------------- -#define sql_create_basic_c_order_13(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6, T7, I7, O7, T8, I8, O8, T9, I9, O9, T10, I10, O10, T11, I11, O11, T12, I12, O12, T13, I13, O13)\ - struct NAME; \ - template int sql_compare_##NAME (const NAME &, const NAME &);\ - struct NAME { \ - T1 I1;\ - T2 I2;\ - T3 I3;\ - T4 I4;\ - T5 I5;\ - T6 I6;\ - T7 I7;\ - T8 I8;\ - T9 I9;\ - T10 I10;\ - T11 I11;\ - T12 I12;\ - T13 I13; \ - NAME () {} \ - NAME (const mysqlpp::Row &row);\ - sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\ - }; \ - template \ - void populate_##NAME (NAME *s, const mysqlpp::Row &row) { \ - s->I1 = static_cast(row.at(O1));\ - s->I2 = static_cast(row.at(O2));\ - s->I3 = static_cast(row.at(O3));\ - s->I4 = static_cast(row.at(O4));\ - s->I5 = static_cast(row.at(O5));\ - s->I6 = static_cast(row.at(O6));\ - s->I7 = static_cast(row.at(O7));\ - s->I8 = static_cast(row.at(O8));\ - s->I9 = static_cast(row.at(O9));\ - s->I10 = static_cast(row.at(O10));\ - s->I11 = static_cast(row.at(O11));\ - s->I12 = static_cast(row.at(O12));\ - s->I13 = static_cast(row.at(O13)); \ - } \ - inline NAME::NAME (const mysqlpp::Row &row) \ - {populate_##NAME(this, row);} \ - sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, I11, I12, I13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ) - -#define sql_create_complete_13(NAME, CMP, CONTR, T1, I1, N1, O1, T2, I2, N2, O2, T3, I3, N3, O3, T4, I4, N4, O4, T5, I5, N5, O5, T6, I6, N6, O6, T7, I7, N7, O7, T8, I8, N8, O8, T9, I9, N9, O9, T10, I10, N10, O10, T11, I11, N11, O11, T12, I12, N12, O12, T13, I13, N13, O13) \ - struct NAME; \ - enum NAME##_enum { \ - NAME##_##I1,\ - NAME##_##I2,\ - NAME##_##I3,\ - NAME##_##I4,\ - NAME##_##I5,\ - NAME##_##I6,\ - NAME##_##I7,\ - NAME##_##I8,\ - NAME##_##I9,\ - NAME##_##I10,\ - NAME##_##I11,\ - NAME##_##I12,\ - NAME##_##I13 \ - ,NAME##_NULL \ - }; \ - template \ - class NAME##_value_list { \ - /*friend std::ostream& operator << <> (std::ostream&, const NAME##_value_list&); */\ - public: \ - const NAME *obj;\ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - NAME##_value_list (const NAME *o, mysqlpp::cchar *d, Manip m) \ - : obj(o), delem(d), manip(m) {} \ - };\ - template \ - class NAME##_##field_list {\ - /* friend std::ostream& operator << <> (std::ostream&, const NAME##_field_list&); */\ - public: \ - const NAME *obj; \ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - NAME##_field_list (const NAME *o, mysqlpp::cchar *d, Manip m) \ - : obj(o), delem(d), manip(m) {} \ - };\ - template \ - class NAME##_equal_list { \ - /* friend std::ostream& operator << <> (std::ostream&, const NAME##_equal_list&); */\ - public: \ - const NAME *obj;\ - mysqlpp::cchar *delem;\ - mysqlpp::cchar *comp;\ - Manip manip;\ - public: \ - NAME##_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) \ - : obj(o), delem(d), comp(c), manip(m) {}\ - };\ - template \ - class NAME##_cus_value_list {\ - /* friend std::ostream& operator << <> (std::ostream&, \ - const NAME##_cus_value_list&); */\ - public:\ - const NAME *obj;\ - std::vector *include;\ - bool del_vector;\ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - ~NAME##_cus_value_list () {if (del_vector) delete include;} \ - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13);\ - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13); \ - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m ,std::vector* i)\ - : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\ - };\ - template \ - class NAME##_cus_field_list { \ - /* friend std::ostream& operator << <> (std::ostream&, \ - const NAME##_cus_field_list&); */\ - public:\ - const NAME *obj; \ - std::vector *include; \ - bool del_vector; \ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - ~NAME##_cus_field_list () {if (del_vector) delete include;} \ - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13); \ - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13); \ - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, std::vector *i) \ - : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\ - };\ - template \ - class NAME##_cus_equal_list {\ - /* friend std::ostream& operator << <> (std::ostream&, \ - const NAME##_cus_equal_list&); */\ - public:\ - const NAME *obj;\ - std::vector *include;\ - bool del_vector;\ - mysqlpp::cchar *delem;\ - mysqlpp::cchar *comp;\ - Manip manip;\ - public:\ - ~NAME##_##cus_equal_list () {if (del_vector) delete include;}\ - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13); \ - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13); \ - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, std::vector *i) \ - : obj(o), include(i), del_vector(false), delem(d), comp(c), manip(m) {}\ - };\ - template int sql_compare_##NAME (const NAME &, const NAME &);\ - struct NAME { \ - T1 I1;\ - T2 I2;\ - T3 I3;\ - T4 I4;\ - T5 I5;\ - T6 I6;\ - T7 I7;\ - T8 I8;\ - T9 I9;\ - T10 I10;\ - T11 I11;\ - T12 I12;\ - T13 I13; \ - NAME () {} \ - NAME (const mysqlpp::Row &row);\ - void set (const mysqlpp::Row &row);\ - sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\ - sql_construct_define_##CONTR(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\ - static const char *names[];\ - static const char *_table;\ - static const char *& table() {return _table;}\ - NAME##_value_list value_list() const {\ - return value_list(",", mysqlpp::quote);}\ - NAME##_value_list value_list(mysqlpp::cchar *d) const {\ - return value_list(d, mysqlpp::quote);}\ - template \ - NAME##_value_list value_list(mysqlpp::cchar *d, Manip m) const; \ - NAME##_field_list field_list() const {\ - return field_list(",", mysqlpp::do_nothing);}\ - NAME##_field_list field_list(mysqlpp::cchar *d) const {\ - return field_list(d, mysqlpp::do_nothing);}\ - template \ - NAME##_field_list field_list(mysqlpp::cchar *d, Manip m) const; \ - NAME##_equal_list equal_list(mysqlpp::cchar *d = ",", \ - mysqlpp::cchar *c = " = ") const{\ - return equal_list(d, c, mysqlpp::quote);}\ - template \ - NAME##_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) const; \ - /* cus_data */\ - NAME##_cus_value_list value_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false) const {\ - return value_list(",", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13);\ - }\ - NAME##_cus_value_list value_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL) const {\ - return value_list(",", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13);\ - }\ - NAME##_cus_value_list value_list(std::vector *i) const {\ - return value_list(",", mysqlpp::quote, i);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::sql_cmp_type sc) const {\ - return value_list(",", mysqlpp::quote, sc);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false) const {\ - return value_list(d, mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL) const {\ - return value_list(d, mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, \ - std::vector *i) const {\ - return value_list(d, mysqlpp::quote, i);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, \ - mysqlpp::sql_cmp_type sc) const {\ - return value_list(d, mysqlpp::quote, sc);\ - }\ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false) const; \ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL) const; \ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m, \ - std::vector *i) const;\ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m, \ - mysqlpp::sql_cmp_type sc) const;\ - /* cus field */\ - NAME##_cus_field_list field_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false) const {\ - return field_list(",", mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13);\ - }\ - NAME##_cus_field_list field_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL) const {\ - return field_list(",", mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13);\ - }\ - NAME##_cus_field_list field_list(std::vector *i) const {\ - return field_list(",", mysqlpp::do_nothing, i);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::sql_cmp_type sc) const\ - {\ - return field_list(",", mysqlpp::do_nothing, sc);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, \ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false) const {\ - return field_list(d, mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL) const {\ - return field_list(d, mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, \ - std::vector *i) const {\ - return field_list(d, mysqlpp::do_nothing, i);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, \ - mysqlpp::sql_cmp_type sc) const {\ - return field_list(d, mysqlpp::do_nothing, sc);\ - }\ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false) const; \ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL) const; \ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m,\ - std::vector *i) const;\ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m, \ - mysqlpp::sql_cmp_type sc) const;\ - /* cus equal */\ - NAME##_cus_equal_list equal_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false) const {\ - return equal_list(",", " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13);\ - }\ - NAME##_cus_equal_list equal_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL) const {\ - return equal_list(",", " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13);\ - }\ - NAME##_cus_equal_list equal_list(std::vector *i) const {\ - return equal_list(",", " = ", mysqlpp::quote, i);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::sql_cmp_type sc) const {\ - return equal_list(",", " = ", mysqlpp::quote, sc);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false) const {\ - return equal_list(d, " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL) const {\ - return equal_list(d, " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, \ - std::vector *i) const {\ - return equal_list(d, " = ", mysqlpp::quote, i);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, \ - mysqlpp::sql_cmp_type sc) const {\ - return equal_list(d, " = ", mysqlpp::quote, sc);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false) const {\ - return equal_list(d, c, mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL) const {\ - return equal_list(d, c, mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - std::vector *i) const {\ - return equal_list(d, c, mysqlpp::quote, i);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - mysqlpp::sql_cmp_type sc) const {\ - return equal_list(d, c, mysqlpp::quote, sc);\ - }\ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false) const; \ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL) const; \ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - std::vector *i) const;\ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - mysqlpp::sql_cmp_type sc) const;\ - }; \ - MYSQLPP_SSQLS_EXPAND(\ - const char *NAME::names[] = { \ - N1 ,\ - N2 ,\ - N3 ,\ - N4 ,\ - N5 ,\ - N6 ,\ - N7 ,\ - N8 ,\ - N9 ,\ - N10 ,\ - N11 ,\ - N12 ,\ - N13 \ - }; \ - const char *NAME::_table = #NAME ;\ - )\ - template \ - NAME##_cus_value_list::NAME##_cus_value_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13) \ - { \ - delem = d;\ - manip = m;\ - del_vector = true;\ - obj = o; \ - include = new std::vector(13, false);\ - if (i1) (*include)[0]=true;\ - if (i2) (*include)[1]=true;\ - if (i3) (*include)[2]=true;\ - if (i4) (*include)[3]=true;\ - if (i5) (*include)[4]=true;\ - if (i6) (*include)[5]=true;\ - if (i7) (*include)[6]=true;\ - if (i8) (*include)[7]=true;\ - if (i9) (*include)[8]=true;\ - if (i10) (*include)[9]=true;\ - if (i11) (*include)[10]=true;\ - if (i12) (*include)[11]=true;\ - if (i13) (*include)[12]=true;\ - } \ - template \ - NAME##_cus_value_list::NAME##_cus_value_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13) { \ - delem = d;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(13, false); \ - if (i1 == NAME##_NULL) return;\ - (*include)[i1]=true;\ - if (i2 == NAME##_NULL) return;\ - (*include)[i2]=true;\ - if (i3 == NAME##_NULL) return;\ - (*include)[i3]=true;\ - if (i4 == NAME##_NULL) return;\ - (*include)[i4]=true;\ - if (i5 == NAME##_NULL) return;\ - (*include)[i5]=true;\ - if (i6 == NAME##_NULL) return;\ - (*include)[i6]=true;\ - if (i7 == NAME##_NULL) return;\ - (*include)[i7]=true;\ - if (i8 == NAME##_NULL) return;\ - (*include)[i8]=true;\ - if (i9 == NAME##_NULL) return;\ - (*include)[i9]=true;\ - if (i10 == NAME##_NULL) return;\ - (*include)[i10]=true;\ - if (i11 == NAME##_NULL) return;\ - (*include)[i11]=true;\ - if (i12 == NAME##_NULL) return;\ - (*include)[i12]=true;\ - if (i13 == NAME##_NULL) return;\ - (*include)[i13]=true;\ - }\ - template \ - NAME##_cus_field_list::NAME##_cus_field_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13) {\ - delem = d;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(13, false); \ - if (i1) (*include)[0]=true;\ - if (i2) (*include)[1]=true;\ - if (i3) (*include)[2]=true;\ - if (i4) (*include)[3]=true;\ - if (i5) (*include)[4]=true;\ - if (i6) (*include)[5]=true;\ - if (i7) (*include)[6]=true;\ - if (i8) (*include)[7]=true;\ - if (i9) (*include)[8]=true;\ - if (i10) (*include)[9]=true;\ - if (i11) (*include)[10]=true;\ - if (i12) (*include)[11]=true;\ - if (i13) (*include)[12]=true;\ - } \ - template \ - NAME##_cus_field_list::NAME##_cus_field_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13) { \ - delem = d;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(13, false); \ - if (i1 == NAME##_NULL) return;\ - (*include)[i1]=true;\ - if (i2 == NAME##_NULL) return;\ - (*include)[i2]=true;\ - if (i3 == NAME##_NULL) return;\ - (*include)[i3]=true;\ - if (i4 == NAME##_NULL) return;\ - (*include)[i4]=true;\ - if (i5 == NAME##_NULL) return;\ - (*include)[i5]=true;\ - if (i6 == NAME##_NULL) return;\ - (*include)[i6]=true;\ - if (i7 == NAME##_NULL) return;\ - (*include)[i7]=true;\ - if (i8 == NAME##_NULL) return;\ - (*include)[i8]=true;\ - if (i9 == NAME##_NULL) return;\ - (*include)[i9]=true;\ - if (i10 == NAME##_NULL) return;\ - (*include)[i10]=true;\ - if (i11 == NAME##_NULL) return;\ - (*include)[i11]=true;\ - if (i12 == NAME##_NULL) return;\ - (*include)[i12]=true;\ - if (i13 == NAME##_NULL) return;\ - (*include)[i13]=true;\ - }\ - template \ - NAME##_cus_equal_list::NAME##_cus_equal_list\ - (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13) { \ - delem = d;\ - comp = c;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(13, false); \ - if (i1) (*include)[0]=true;\ - if (i2) (*include)[1]=true;\ - if (i3) (*include)[2]=true;\ - if (i4) (*include)[3]=true;\ - if (i5) (*include)[4]=true;\ - if (i6) (*include)[5]=true;\ - if (i7) (*include)[6]=true;\ - if (i8) (*include)[7]=true;\ - if (i9) (*include)[8]=true;\ - if (i10) (*include)[9]=true;\ - if (i11) (*include)[10]=true;\ - if (i12) (*include)[11]=true;\ - if (i13) (*include)[12]=true;\ - } \ - template \ - NAME##_cus_equal_list::NAME##_cus_equal_list\ - (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13) { \ - delem = d;\ - comp = c;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(13, false); \ - if (i1 == NAME##_NULL) return;\ - (*include)[i1]=true;\ - if (i2 == NAME##_NULL) return;\ - (*include)[i2]=true;\ - if (i3 == NAME##_NULL) return;\ - (*include)[i3]=true;\ - if (i4 == NAME##_NULL) return;\ - (*include)[i4]=true;\ - if (i5 == NAME##_NULL) return;\ - (*include)[i5]=true;\ - if (i6 == NAME##_NULL) return;\ - (*include)[i6]=true;\ - if (i7 == NAME##_NULL) return;\ - (*include)[i7]=true;\ - if (i8 == NAME##_NULL) return;\ - (*include)[i8]=true;\ - if (i9 == NAME##_NULL) return;\ - (*include)[i9]=true;\ - if (i10 == NAME##_NULL) return;\ - (*include)[i10]=true;\ - if (i11 == NAME##_NULL) return;\ - (*include)[i11]=true;\ - if (i12 == NAME##_NULL) return;\ - (*include)[i12]=true;\ - if (i13 == NAME##_NULL) return;\ - (*include)[i13]=true;\ - }\ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_value_list& obj) { \ - s << obj.manip << obj.obj->I1 << obj.delem;\ - s << obj.manip << obj.obj->I2 << obj.delem;\ - s << obj.manip << obj.obj->I3 << obj.delem;\ - s << obj.manip << obj.obj->I4 << obj.delem;\ - s << obj.manip << obj.obj->I5 << obj.delem;\ - s << obj.manip << obj.obj->I6 << obj.delem;\ - s << obj.manip << obj.obj->I7 << obj.delem;\ - s << obj.manip << obj.obj->I8 << obj.delem;\ - s << obj.manip << obj.obj->I9 << obj.delem;\ - s << obj.manip << obj.obj->I10 << obj.delem;\ - s << obj.manip << obj.obj->I11 << obj.delem;\ - s << obj.manip << obj.obj->I12 << obj.delem;\ - s << obj.manip << obj.obj->I13; \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_field_list& obj) { \ - s << obj.manip << obj.obj->names[0] << obj.delem;\ - s << obj.manip << obj.obj->names[1] << obj.delem;\ - s << obj.manip << obj.obj->names[2] << obj.delem;\ - s << obj.manip << obj.obj->names[3] << obj.delem;\ - s << obj.manip << obj.obj->names[4] << obj.delem;\ - s << obj.manip << obj.obj->names[5] << obj.delem;\ - s << obj.manip << obj.obj->names[6] << obj.delem;\ - s << obj.manip << obj.obj->names[7] << obj.delem;\ - s << obj.manip << obj.obj->names[8] << obj.delem;\ - s << obj.manip << obj.obj->names[9] << obj.delem;\ - s << obj.manip << obj.obj->names[10] << obj.delem;\ - s << obj.manip << obj.obj->names[11] << obj.delem;\ - s << obj.manip << obj.obj->names[12]; \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_equal_list& obj) { \ - s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1 << obj.delem;\ - s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2 << obj.delem;\ - s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3 << obj.delem;\ - s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4 << obj.delem;\ - s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5 << obj.delem;\ - s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6 << obj.delem;\ - s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->I7 << obj.delem;\ - s << obj.obj->names[7] << obj.comp << obj.manip << obj.obj->I8 << obj.delem;\ - s << obj.obj->names[8] << obj.comp << obj.manip << obj.obj->I9 << obj.delem;\ - s << obj.obj->names[9] << obj.comp << obj.manip << obj.obj->I10 << obj.delem;\ - s << obj.obj->names[10] << obj.comp << obj.manip << obj.obj->I11 << obj.delem;\ - s << obj.obj->names[11] << obj.comp << obj.manip << obj.obj->I12 << obj.delem;\ - s << obj.obj->names[12] << obj.comp << obj.manip << obj.obj->I13; \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_cus_value_list& obj) { \ - bool before = false; \ - if ((*obj.include)[0]) { \ - s << obj.manip << obj.obj->I1;\ - before = true; \ - } \ - if ((*obj.include)[1]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I2;\ - before = true; \ - } \ - if ((*obj.include)[2]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I3;\ - before = true; \ - } \ - if ((*obj.include)[3]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I4;\ - before = true; \ - } \ - if ((*obj.include)[4]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I5;\ - before = true; \ - } \ - if ((*obj.include)[5]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I6;\ - before = true; \ - } \ - if ((*obj.include)[6]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I7;\ - before = true; \ - } \ - if ((*obj.include)[7]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I8;\ - before = true; \ - } \ - if ((*obj.include)[8]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I9;\ - before = true; \ - } \ - if ((*obj.include)[9]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I10;\ - before = true; \ - } \ - if ((*obj.include)[10]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I11;\ - before = true; \ - } \ - if ((*obj.include)[11]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I12;\ - before = true; \ - } \ - if ((*obj.include)[12]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I13;\ - } \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_cus_field_list& obj) { \ - bool before = false; \ - if ((*obj.include)[0]) { \ - s << obj.manip << obj.obj->names[0];\ - before = true; \ - } \ - if ((*obj.include)[1]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[1];\ - before = true; \ - } \ - if ((*obj.include)[2]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[2];\ - before = true; \ - } \ - if ((*obj.include)[3]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[3];\ - before = true; \ - } \ - if ((*obj.include)[4]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[4];\ - before = true; \ - } \ - if ((*obj.include)[5]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[5];\ - before = true; \ - } \ - if ((*obj.include)[6]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[6];\ - before = true; \ - } \ - if ((*obj.include)[7]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[7];\ - before = true; \ - } \ - if ((*obj.include)[8]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[8];\ - before = true; \ - } \ - if ((*obj.include)[9]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[9];\ - before = true; \ - } \ - if ((*obj.include)[10]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[10];\ - before = true; \ - } \ - if ((*obj.include)[11]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[11];\ - before = true; \ - } \ - if ((*obj.include)[12]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[12];\ - } \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_cus_equal_list& obj) { \ - bool before = false; \ - if ((*obj.include)[0]) { \ - s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1;\ - before = true; \ - } \ - if ((*obj.include)[1]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2;\ - before = true; \ - } \ - if ((*obj.include)[2]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3;\ - before = true; \ - } \ - if ((*obj.include)[3]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4;\ - before = true; \ - } \ - if ((*obj.include)[4]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5;\ - before = true; \ - } \ - if ((*obj.include)[5]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6;\ - before = true; \ - } \ - if ((*obj.include)[6]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->I7;\ - before = true; \ - } \ - if ((*obj.include)[7]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[7] << obj.comp << obj.manip << obj.obj->I8;\ - before = true; \ - } \ - if ((*obj.include)[8]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[8] << obj.comp << obj.manip << obj.obj->I9;\ - before = true; \ - } \ - if ((*obj.include)[9]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[9] << obj.comp << obj.manip << obj.obj->I10;\ - before = true; \ - } \ - if ((*obj.include)[10]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[10] << obj.comp << obj.manip << obj.obj->I11;\ - before = true; \ - } \ - if ((*obj.include)[11]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[11] << obj.comp << obj.manip << obj.obj->I12;\ - before = true; \ - } \ - if ((*obj.include)[12]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[12] << obj.comp << obj.manip << obj.obj->I13;\ - } \ - return s; \ - } \ - template \ - inline NAME##_value_list NAME::value_list(mysqlpp::cchar *d, Manip m) const { \ - return NAME##_value_list (this, d, m); \ - } \ - template \ - inline NAME##_field_list NAME::field_list(mysqlpp::cchar *d, Manip m) const { \ - return NAME##_field_list (this, d, m); \ - } \ - template \ - inline NAME##_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) const { \ - return NAME##_equal_list (this, d, c, m); \ - } \ - template \ - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13) const {\ - return NAME##_cus_value_list (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13); \ - } \ - template \ - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13) const { \ - return NAME##_cus_field_list (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13); \ - } \ - template \ - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m,\ - bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13) const { \ - return NAME##_cus_equal_list (this, d, c, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13); \ - } \ - template \ - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13) const { \ - return NAME##_cus_value_list (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13); \ - } \ - template \ - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13) const {\ - return NAME##_cus_field_list (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13); \ - } \ - template \ - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13) const { \ - return NAME##_cus_equal_list (this, d, c, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13); \ - } \ - template \ - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m,\ - std::vector *i) const {\ - return NAME##_cus_value_list (this, d, m, i);\ - }\ - template \ - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m,\ - std::vector *i) const {\ - return NAME##_cus_field_list (this, d, m, i);\ - }\ - template \ - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m,\ - std::vector *i) const {\ - return NAME##_cus_equal_list (this, d, c, m, i);\ - }\ - template \ - inline NAME##_cus_value_list \ - NAME::value_list(mysqlpp::cchar *d, Manip m, mysqlpp::sql_cmp_type /*sc*/) const {\ - sql_compare_type_def_##CMP (NAME, value, NUM);\ - }\ - template \ - inline NAME##_cus_field_list \ - NAME::field_list(mysqlpp::cchar *d, Manip m, mysqlpp::sql_cmp_type /*sc*/) const {\ - sql_compare_type_def_##CMP (NAME, field, NUM);\ - }\ - template \ - inline NAME##_cus_equal_list \ - NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, mysqlpp::sql_cmp_type /*sc*/) const {\ - sql_compare_type_defe_##CMP (NAME, equal, NUM);\ - }\ - template \ - void populate_##NAME (NAME *s, const mysqlpp::Row &row) { \ - s->I1 = static_cast(row.at(O1));\ - s->I2 = static_cast(row.at(O2));\ - s->I3 = static_cast(row.at(O3));\ - s->I4 = static_cast(row.at(O4));\ - s->I5 = static_cast(row.at(O5));\ - s->I6 = static_cast(row.at(O6));\ - s->I7 = static_cast(row.at(O7));\ - s->I8 = static_cast(row.at(O8));\ - s->I9 = static_cast(row.at(O9));\ - s->I10 = static_cast(row.at(O10));\ - s->I11 = static_cast(row.at(O11));\ - s->I12 = static_cast(row.at(O12));\ - s->I13 = static_cast(row.at(O13));\ - } \ - inline NAME::NAME (const mysqlpp::Row &row) \ - {populate_##NAME(this, row);}\ - inline void NAME::set (const mysqlpp::Row &row)\ - {populate_##NAME(this, row);}\ - sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, I11, I12, I13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ) - -#define sql_create_basic_13(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13) \ - sql_create_basic_c_order_13(NAME, CMP, CONTR, T1, I1, 0, T2, I2, 1, T3, I3, 2, T4, I4, 3, T5, I5, 4, T6, I6, 5, T7, I7, 6, T8, I8, 7, T9, I9, 8, T10, I10, 9, T11, I11, 10, T12, I12, 11, T13, I13, 12) - -#define sql_create_13(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13) \ - sql_create_complete_13(NAME, CMP, CONTR, T1, I1, #I1, 0, T2, I2, #I2, 1, T3, I3, #I3, 2, T4, I4, #I4, 3, T5, I5, #I5, 4, T6, I6, #I6, 5, T7, I7, #I7, 6, T8, I8, #I8, 7, T9, I9, #I9, 8, T10, I10, #I10, 9, T11, I11, #I11, 10, T12, I12, #I12, 11, T13, I13, #I13, 12) \ - -#define sql_create_c_order_13(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6, T7, I7, O7, T8, I8, O8, T9, I9, O9, T10, I10, O10, T11, I11, O11, T12, I12, O12, T13, I13, O13) \ - sql_create_complete_13(NAME, CMP, CONTR, T1, I1, #I1, O1, T2, I2, #I2, O2, T3, I3, #I3, O3, T4, I4, #I4, O4, T5, I5, #I5, O5, T6, I6, #I6, O6, T7, I7, #I7, O7, T8, I8, #I8, O8, T9, I9, #I9, O9, T10, I10, #I10, O10, T11, I11, #I11, O11, T12, I12, #I12, O12, T13, I13, #I13, O13) - -#define sql_create_c_names_13(NAME, CMP, CONTR, T1, I1, N1, T2, I2, N2, T3, I3, N3, T4, I4, N4, T5, I5, N5, T6, I6, N6, T7, I7, N7, T8, I8, N8, T9, I9, N9, T10, I10, N10, T11, I11, N11, T12, I12, N12, T13, I13, N13) \ - sql_create_complete_13(NAME, CMP, CONTR, T1, I1, N1, 0, T2, I2, N2, 1, T3, I3, N3, 2, T4, I4, N4, 3, T5, I5, N5, 4, T6, I6, N6, 5, T7, I7, N7, 6, T8, I8, N8, 7, T9, I9, N9, 8, T10, I10, N10, 9, T11, I11, N11, 10, T12, I12, N12, 11, T13, I13, N13, 12) - -// --------------------------------------------------- -// End Create 13 -// --------------------------------------------------- - -// --------------------------------------------------- -// Begin Create 14 -// --------------------------------------------------- -#define sql_create_basic_c_order_14(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6, T7, I7, O7, T8, I8, O8, T9, I9, O9, T10, I10, O10, T11, I11, O11, T12, I12, O12, T13, I13, O13, T14, I14, O14)\ - struct NAME; \ - template int sql_compare_##NAME (const NAME &, const NAME &);\ - struct NAME { \ - T1 I1;\ - T2 I2;\ - T3 I3;\ - T4 I4;\ - T5 I5;\ - T6 I6;\ - T7 I7;\ - T8 I8;\ - T9 I9;\ - T10 I10;\ - T11 I11;\ - T12 I12;\ - T13 I13;\ - T14 I14; \ - NAME () {} \ - NAME (const mysqlpp::Row &row);\ - sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\ - }; \ - template \ - void populate_##NAME (NAME *s, const mysqlpp::Row &row) { \ - s->I1 = static_cast(row.at(O1));\ - s->I2 = static_cast(row.at(O2));\ - s->I3 = static_cast(row.at(O3));\ - s->I4 = static_cast(row.at(O4));\ - s->I5 = static_cast(row.at(O5));\ - s->I6 = static_cast(row.at(O6));\ - s->I7 = static_cast(row.at(O7));\ - s->I8 = static_cast(row.at(O8));\ - s->I9 = static_cast(row.at(O9));\ - s->I10 = static_cast(row.at(O10));\ - s->I11 = static_cast(row.at(O11));\ - s->I12 = static_cast(row.at(O12));\ - s->I13 = static_cast(row.at(O13));\ - s->I14 = static_cast(row.at(O14)); \ - } \ - inline NAME::NAME (const mysqlpp::Row &row) \ - {populate_##NAME(this, row);} \ - sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, I11, I12, I13, I14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ) - -#define sql_create_complete_14(NAME, CMP, CONTR, T1, I1, N1, O1, T2, I2, N2, O2, T3, I3, N3, O3, T4, I4, N4, O4, T5, I5, N5, O5, T6, I6, N6, O6, T7, I7, N7, O7, T8, I8, N8, O8, T9, I9, N9, O9, T10, I10, N10, O10, T11, I11, N11, O11, T12, I12, N12, O12, T13, I13, N13, O13, T14, I14, N14, O14) \ - struct NAME; \ - enum NAME##_enum { \ - NAME##_##I1,\ - NAME##_##I2,\ - NAME##_##I3,\ - NAME##_##I4,\ - NAME##_##I5,\ - NAME##_##I6,\ - NAME##_##I7,\ - NAME##_##I8,\ - NAME##_##I9,\ - NAME##_##I10,\ - NAME##_##I11,\ - NAME##_##I12,\ - NAME##_##I13,\ - NAME##_##I14 \ - ,NAME##_NULL \ - }; \ - template \ - class NAME##_value_list { \ - /*friend std::ostream& operator << <> (std::ostream&, const NAME##_value_list&); */\ - public: \ - const NAME *obj;\ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - NAME##_value_list (const NAME *o, mysqlpp::cchar *d, Manip m) \ - : obj(o), delem(d), manip(m) {} \ - };\ - template \ - class NAME##_##field_list {\ - /* friend std::ostream& operator << <> (std::ostream&, const NAME##_field_list&); */\ - public: \ - const NAME *obj; \ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - NAME##_field_list (const NAME *o, mysqlpp::cchar *d, Manip m) \ - : obj(o), delem(d), manip(m) {} \ - };\ - template \ - class NAME##_equal_list { \ - /* friend std::ostream& operator << <> (std::ostream&, const NAME##_equal_list&); */\ - public: \ - const NAME *obj;\ - mysqlpp::cchar *delem;\ - mysqlpp::cchar *comp;\ - Manip manip;\ - public: \ - NAME##_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) \ - : obj(o), delem(d), comp(c), manip(m) {}\ - };\ - template \ - class NAME##_cus_value_list {\ - /* friend std::ostream& operator << <> (std::ostream&, \ - const NAME##_cus_value_list&); */\ - public:\ - const NAME *obj;\ - std::vector *include;\ - bool del_vector;\ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - ~NAME##_cus_value_list () {if (del_vector) delete include;} \ - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14);\ - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14); \ - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m ,std::vector* i)\ - : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\ - };\ - template \ - class NAME##_cus_field_list { \ - /* friend std::ostream& operator << <> (std::ostream&, \ - const NAME##_cus_field_list&); */\ - public:\ - const NAME *obj; \ - std::vector *include; \ - bool del_vector; \ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - ~NAME##_cus_field_list () {if (del_vector) delete include;} \ - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14); \ - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14); \ - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, std::vector *i) \ - : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\ - };\ - template \ - class NAME##_cus_equal_list {\ - /* friend std::ostream& operator << <> (std::ostream&, \ - const NAME##_cus_equal_list&); */\ - public:\ - const NAME *obj;\ - std::vector *include;\ - bool del_vector;\ - mysqlpp::cchar *delem;\ - mysqlpp::cchar *comp;\ - Manip manip;\ - public:\ - ~NAME##_##cus_equal_list () {if (del_vector) delete include;}\ - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14); \ - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14); \ - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, std::vector *i) \ - : obj(o), include(i), del_vector(false), delem(d), comp(c), manip(m) {}\ - };\ - template int sql_compare_##NAME (const NAME &, const NAME &);\ - struct NAME { \ - T1 I1;\ - T2 I2;\ - T3 I3;\ - T4 I4;\ - T5 I5;\ - T6 I6;\ - T7 I7;\ - T8 I8;\ - T9 I9;\ - T10 I10;\ - T11 I11;\ - T12 I12;\ - T13 I13;\ - T14 I14; \ - NAME () {} \ - NAME (const mysqlpp::Row &row);\ - void set (const mysqlpp::Row &row);\ - sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\ - sql_construct_define_##CONTR(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\ - static const char *names[];\ - static const char *_table;\ - static const char *& table() {return _table;}\ - NAME##_value_list value_list() const {\ - return value_list(",", mysqlpp::quote);}\ - NAME##_value_list value_list(mysqlpp::cchar *d) const {\ - return value_list(d, mysqlpp::quote);}\ - template \ - NAME##_value_list value_list(mysqlpp::cchar *d, Manip m) const; \ - NAME##_field_list field_list() const {\ - return field_list(",", mysqlpp::do_nothing);}\ - NAME##_field_list field_list(mysqlpp::cchar *d) const {\ - return field_list(d, mysqlpp::do_nothing);}\ - template \ - NAME##_field_list field_list(mysqlpp::cchar *d, Manip m) const; \ - NAME##_equal_list equal_list(mysqlpp::cchar *d = ",", \ - mysqlpp::cchar *c = " = ") const{\ - return equal_list(d, c, mysqlpp::quote);}\ - template \ - NAME##_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) const; \ - /* cus_data */\ - NAME##_cus_value_list value_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false) const {\ - return value_list(",", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14);\ - }\ - NAME##_cus_value_list value_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL) const {\ - return value_list(",", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14);\ - }\ - NAME##_cus_value_list value_list(std::vector *i) const {\ - return value_list(",", mysqlpp::quote, i);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::sql_cmp_type sc) const {\ - return value_list(",", mysqlpp::quote, sc);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false) const {\ - return value_list(d, mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL) const {\ - return value_list(d, mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, \ - std::vector *i) const {\ - return value_list(d, mysqlpp::quote, i);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, \ - mysqlpp::sql_cmp_type sc) const {\ - return value_list(d, mysqlpp::quote, sc);\ - }\ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false) const; \ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL) const; \ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m, \ - std::vector *i) const;\ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m, \ - mysqlpp::sql_cmp_type sc) const;\ - /* cus field */\ - NAME##_cus_field_list field_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false) const {\ - return field_list(",", mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14);\ - }\ - NAME##_cus_field_list field_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL) const {\ - return field_list(",", mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14);\ - }\ - NAME##_cus_field_list field_list(std::vector *i) const {\ - return field_list(",", mysqlpp::do_nothing, i);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::sql_cmp_type sc) const\ - {\ - return field_list(",", mysqlpp::do_nothing, sc);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, \ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false) const {\ - return field_list(d, mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL) const {\ - return field_list(d, mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, \ - std::vector *i) const {\ - return field_list(d, mysqlpp::do_nothing, i);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, \ - mysqlpp::sql_cmp_type sc) const {\ - return field_list(d, mysqlpp::do_nothing, sc);\ - }\ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false) const; \ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL) const; \ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m,\ - std::vector *i) const;\ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m, \ - mysqlpp::sql_cmp_type sc) const;\ - /* cus equal */\ - NAME##_cus_equal_list equal_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false) const {\ - return equal_list(",", " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14);\ - }\ - NAME##_cus_equal_list equal_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL) const {\ - return equal_list(",", " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14);\ - }\ - NAME##_cus_equal_list equal_list(std::vector *i) const {\ - return equal_list(",", " = ", mysqlpp::quote, i);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::sql_cmp_type sc) const {\ - return equal_list(",", " = ", mysqlpp::quote, sc);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false) const {\ - return equal_list(d, " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL) const {\ - return equal_list(d, " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, \ - std::vector *i) const {\ - return equal_list(d, " = ", mysqlpp::quote, i);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, \ - mysqlpp::sql_cmp_type sc) const {\ - return equal_list(d, " = ", mysqlpp::quote, sc);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false) const {\ - return equal_list(d, c, mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL) const {\ - return equal_list(d, c, mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - std::vector *i) const {\ - return equal_list(d, c, mysqlpp::quote, i);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - mysqlpp::sql_cmp_type sc) const {\ - return equal_list(d, c, mysqlpp::quote, sc);\ - }\ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false) const; \ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL) const; \ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - std::vector *i) const;\ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - mysqlpp::sql_cmp_type sc) const;\ - }; \ - MYSQLPP_SSQLS_EXPAND(\ - const char *NAME::names[] = { \ - N1 ,\ - N2 ,\ - N3 ,\ - N4 ,\ - N5 ,\ - N6 ,\ - N7 ,\ - N8 ,\ - N9 ,\ - N10 ,\ - N11 ,\ - N12 ,\ - N13 ,\ - N14 \ - }; \ - const char *NAME::_table = #NAME ;\ - )\ - template \ - NAME##_cus_value_list::NAME##_cus_value_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14) \ - { \ - delem = d;\ - manip = m;\ - del_vector = true;\ - obj = o; \ - include = new std::vector(14, false);\ - if (i1) (*include)[0]=true;\ - if (i2) (*include)[1]=true;\ - if (i3) (*include)[2]=true;\ - if (i4) (*include)[3]=true;\ - if (i5) (*include)[4]=true;\ - if (i6) (*include)[5]=true;\ - if (i7) (*include)[6]=true;\ - if (i8) (*include)[7]=true;\ - if (i9) (*include)[8]=true;\ - if (i10) (*include)[9]=true;\ - if (i11) (*include)[10]=true;\ - if (i12) (*include)[11]=true;\ - if (i13) (*include)[12]=true;\ - if (i14) (*include)[13]=true;\ - } \ - template \ - NAME##_cus_value_list::NAME##_cus_value_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14) { \ - delem = d;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(14, false); \ - if (i1 == NAME##_NULL) return;\ - (*include)[i1]=true;\ - if (i2 == NAME##_NULL) return;\ - (*include)[i2]=true;\ - if (i3 == NAME##_NULL) return;\ - (*include)[i3]=true;\ - if (i4 == NAME##_NULL) return;\ - (*include)[i4]=true;\ - if (i5 == NAME##_NULL) return;\ - (*include)[i5]=true;\ - if (i6 == NAME##_NULL) return;\ - (*include)[i6]=true;\ - if (i7 == NAME##_NULL) return;\ - (*include)[i7]=true;\ - if (i8 == NAME##_NULL) return;\ - (*include)[i8]=true;\ - if (i9 == NAME##_NULL) return;\ - (*include)[i9]=true;\ - if (i10 == NAME##_NULL) return;\ - (*include)[i10]=true;\ - if (i11 == NAME##_NULL) return;\ - (*include)[i11]=true;\ - if (i12 == NAME##_NULL) return;\ - (*include)[i12]=true;\ - if (i13 == NAME##_NULL) return;\ - (*include)[i13]=true;\ - if (i14 == NAME##_NULL) return;\ - (*include)[i14]=true;\ - }\ - template \ - NAME##_cus_field_list::NAME##_cus_field_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14) {\ - delem = d;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(14, false); \ - if (i1) (*include)[0]=true;\ - if (i2) (*include)[1]=true;\ - if (i3) (*include)[2]=true;\ - if (i4) (*include)[3]=true;\ - if (i5) (*include)[4]=true;\ - if (i6) (*include)[5]=true;\ - if (i7) (*include)[6]=true;\ - if (i8) (*include)[7]=true;\ - if (i9) (*include)[8]=true;\ - if (i10) (*include)[9]=true;\ - if (i11) (*include)[10]=true;\ - if (i12) (*include)[11]=true;\ - if (i13) (*include)[12]=true;\ - if (i14) (*include)[13]=true;\ - } \ - template \ - NAME##_cus_field_list::NAME##_cus_field_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14) { \ - delem = d;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(14, false); \ - if (i1 == NAME##_NULL) return;\ - (*include)[i1]=true;\ - if (i2 == NAME##_NULL) return;\ - (*include)[i2]=true;\ - if (i3 == NAME##_NULL) return;\ - (*include)[i3]=true;\ - if (i4 == NAME##_NULL) return;\ - (*include)[i4]=true;\ - if (i5 == NAME##_NULL) return;\ - (*include)[i5]=true;\ - if (i6 == NAME##_NULL) return;\ - (*include)[i6]=true;\ - if (i7 == NAME##_NULL) return;\ - (*include)[i7]=true;\ - if (i8 == NAME##_NULL) return;\ - (*include)[i8]=true;\ - if (i9 == NAME##_NULL) return;\ - (*include)[i9]=true;\ - if (i10 == NAME##_NULL) return;\ - (*include)[i10]=true;\ - if (i11 == NAME##_NULL) return;\ - (*include)[i11]=true;\ - if (i12 == NAME##_NULL) return;\ - (*include)[i12]=true;\ - if (i13 == NAME##_NULL) return;\ - (*include)[i13]=true;\ - if (i14 == NAME##_NULL) return;\ - (*include)[i14]=true;\ - }\ - template \ - NAME##_cus_equal_list::NAME##_cus_equal_list\ - (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14) { \ - delem = d;\ - comp = c;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(14, false); \ - if (i1) (*include)[0]=true;\ - if (i2) (*include)[1]=true;\ - if (i3) (*include)[2]=true;\ - if (i4) (*include)[3]=true;\ - if (i5) (*include)[4]=true;\ - if (i6) (*include)[5]=true;\ - if (i7) (*include)[6]=true;\ - if (i8) (*include)[7]=true;\ - if (i9) (*include)[8]=true;\ - if (i10) (*include)[9]=true;\ - if (i11) (*include)[10]=true;\ - if (i12) (*include)[11]=true;\ - if (i13) (*include)[12]=true;\ - if (i14) (*include)[13]=true;\ - } \ - template \ - NAME##_cus_equal_list::NAME##_cus_equal_list\ - (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14) { \ - delem = d;\ - comp = c;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(14, false); \ - if (i1 == NAME##_NULL) return;\ - (*include)[i1]=true;\ - if (i2 == NAME##_NULL) return;\ - (*include)[i2]=true;\ - if (i3 == NAME##_NULL) return;\ - (*include)[i3]=true;\ - if (i4 == NAME##_NULL) return;\ - (*include)[i4]=true;\ - if (i5 == NAME##_NULL) return;\ - (*include)[i5]=true;\ - if (i6 == NAME##_NULL) return;\ - (*include)[i6]=true;\ - if (i7 == NAME##_NULL) return;\ - (*include)[i7]=true;\ - if (i8 == NAME##_NULL) return;\ - (*include)[i8]=true;\ - if (i9 == NAME##_NULL) return;\ - (*include)[i9]=true;\ - if (i10 == NAME##_NULL) return;\ - (*include)[i10]=true;\ - if (i11 == NAME##_NULL) return;\ - (*include)[i11]=true;\ - if (i12 == NAME##_NULL) return;\ - (*include)[i12]=true;\ - if (i13 == NAME##_NULL) return;\ - (*include)[i13]=true;\ - if (i14 == NAME##_NULL) return;\ - (*include)[i14]=true;\ - }\ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_value_list& obj) { \ - s << obj.manip << obj.obj->I1 << obj.delem;\ - s << obj.manip << obj.obj->I2 << obj.delem;\ - s << obj.manip << obj.obj->I3 << obj.delem;\ - s << obj.manip << obj.obj->I4 << obj.delem;\ - s << obj.manip << obj.obj->I5 << obj.delem;\ - s << obj.manip << obj.obj->I6 << obj.delem;\ - s << obj.manip << obj.obj->I7 << obj.delem;\ - s << obj.manip << obj.obj->I8 << obj.delem;\ - s << obj.manip << obj.obj->I9 << obj.delem;\ - s << obj.manip << obj.obj->I10 << obj.delem;\ - s << obj.manip << obj.obj->I11 << obj.delem;\ - s << obj.manip << obj.obj->I12 << obj.delem;\ - s << obj.manip << obj.obj->I13 << obj.delem;\ - s << obj.manip << obj.obj->I14; \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_field_list& obj) { \ - s << obj.manip << obj.obj->names[0] << obj.delem;\ - s << obj.manip << obj.obj->names[1] << obj.delem;\ - s << obj.manip << obj.obj->names[2] << obj.delem;\ - s << obj.manip << obj.obj->names[3] << obj.delem;\ - s << obj.manip << obj.obj->names[4] << obj.delem;\ - s << obj.manip << obj.obj->names[5] << obj.delem;\ - s << obj.manip << obj.obj->names[6] << obj.delem;\ - s << obj.manip << obj.obj->names[7] << obj.delem;\ - s << obj.manip << obj.obj->names[8] << obj.delem;\ - s << obj.manip << obj.obj->names[9] << obj.delem;\ - s << obj.manip << obj.obj->names[10] << obj.delem;\ - s << obj.manip << obj.obj->names[11] << obj.delem;\ - s << obj.manip << obj.obj->names[12] << obj.delem;\ - s << obj.manip << obj.obj->names[13]; \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_equal_list& obj) { \ - s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1 << obj.delem;\ - s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2 << obj.delem;\ - s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3 << obj.delem;\ - s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4 << obj.delem;\ - s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5 << obj.delem;\ - s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6 << obj.delem;\ - s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->I7 << obj.delem;\ - s << obj.obj->names[7] << obj.comp << obj.manip << obj.obj->I8 << obj.delem;\ - s << obj.obj->names[8] << obj.comp << obj.manip << obj.obj->I9 << obj.delem;\ - s << obj.obj->names[9] << obj.comp << obj.manip << obj.obj->I10 << obj.delem;\ - s << obj.obj->names[10] << obj.comp << obj.manip << obj.obj->I11 << obj.delem;\ - s << obj.obj->names[11] << obj.comp << obj.manip << obj.obj->I12 << obj.delem;\ - s << obj.obj->names[12] << obj.comp << obj.manip << obj.obj->I13 << obj.delem;\ - s << obj.obj->names[13] << obj.comp << obj.manip << obj.obj->I14; \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_cus_value_list& obj) { \ - bool before = false; \ - if ((*obj.include)[0]) { \ - s << obj.manip << obj.obj->I1;\ - before = true; \ - } \ - if ((*obj.include)[1]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I2;\ - before = true; \ - } \ - if ((*obj.include)[2]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I3;\ - before = true; \ - } \ - if ((*obj.include)[3]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I4;\ - before = true; \ - } \ - if ((*obj.include)[4]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I5;\ - before = true; \ - } \ - if ((*obj.include)[5]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I6;\ - before = true; \ - } \ - if ((*obj.include)[6]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I7;\ - before = true; \ - } \ - if ((*obj.include)[7]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I8;\ - before = true; \ - } \ - if ((*obj.include)[8]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I9;\ - before = true; \ - } \ - if ((*obj.include)[9]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I10;\ - before = true; \ - } \ - if ((*obj.include)[10]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I11;\ - before = true; \ - } \ - if ((*obj.include)[11]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I12;\ - before = true; \ - } \ - if ((*obj.include)[12]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I13;\ - before = true; \ - } \ - if ((*obj.include)[13]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I14;\ - } \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_cus_field_list& obj) { \ - bool before = false; \ - if ((*obj.include)[0]) { \ - s << obj.manip << obj.obj->names[0];\ - before = true; \ - } \ - if ((*obj.include)[1]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[1];\ - before = true; \ - } \ - if ((*obj.include)[2]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[2];\ - before = true; \ - } \ - if ((*obj.include)[3]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[3];\ - before = true; \ - } \ - if ((*obj.include)[4]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[4];\ - before = true; \ - } \ - if ((*obj.include)[5]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[5];\ - before = true; \ - } \ - if ((*obj.include)[6]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[6];\ - before = true; \ - } \ - if ((*obj.include)[7]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[7];\ - before = true; \ - } \ - if ((*obj.include)[8]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[8];\ - before = true; \ - } \ - if ((*obj.include)[9]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[9];\ - before = true; \ - } \ - if ((*obj.include)[10]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[10];\ - before = true; \ - } \ - if ((*obj.include)[11]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[11];\ - before = true; \ - } \ - if ((*obj.include)[12]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[12];\ - before = true; \ - } \ - if ((*obj.include)[13]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[13];\ - } \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_cus_equal_list& obj) { \ - bool before = false; \ - if ((*obj.include)[0]) { \ - s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1;\ - before = true; \ - } \ - if ((*obj.include)[1]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2;\ - before = true; \ - } \ - if ((*obj.include)[2]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3;\ - before = true; \ - } \ - if ((*obj.include)[3]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4;\ - before = true; \ - } \ - if ((*obj.include)[4]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5;\ - before = true; \ - } \ - if ((*obj.include)[5]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6;\ - before = true; \ - } \ - if ((*obj.include)[6]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->I7;\ - before = true; \ - } \ - if ((*obj.include)[7]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[7] << obj.comp << obj.manip << obj.obj->I8;\ - before = true; \ - } \ - if ((*obj.include)[8]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[8] << obj.comp << obj.manip << obj.obj->I9;\ - before = true; \ - } \ - if ((*obj.include)[9]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[9] << obj.comp << obj.manip << obj.obj->I10;\ - before = true; \ - } \ - if ((*obj.include)[10]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[10] << obj.comp << obj.manip << obj.obj->I11;\ - before = true; \ - } \ - if ((*obj.include)[11]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[11] << obj.comp << obj.manip << obj.obj->I12;\ - before = true; \ - } \ - if ((*obj.include)[12]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[12] << obj.comp << obj.manip << obj.obj->I13;\ - before = true; \ - } \ - if ((*obj.include)[13]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[13] << obj.comp << obj.manip << obj.obj->I14;\ - } \ - return s; \ - } \ - template \ - inline NAME##_value_list NAME::value_list(mysqlpp::cchar *d, Manip m) const { \ - return NAME##_value_list (this, d, m); \ - } \ - template \ - inline NAME##_field_list NAME::field_list(mysqlpp::cchar *d, Manip m) const { \ - return NAME##_field_list (this, d, m); \ - } \ - template \ - inline NAME##_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) const { \ - return NAME##_equal_list (this, d, c, m); \ - } \ - template \ - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14) const {\ - return NAME##_cus_value_list (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14); \ - } \ - template \ - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14) const { \ - return NAME##_cus_field_list (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14); \ - } \ - template \ - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m,\ - bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14) const { \ - return NAME##_cus_equal_list (this, d, c, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14); \ - } \ - template \ - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14) const { \ - return NAME##_cus_value_list (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14); \ - } \ - template \ - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14) const {\ - return NAME##_cus_field_list (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14); \ - } \ - template \ - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14) const { \ - return NAME##_cus_equal_list (this, d, c, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14); \ - } \ - template \ - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m,\ - std::vector *i) const {\ - return NAME##_cus_value_list (this, d, m, i);\ - }\ - template \ - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m,\ - std::vector *i) const {\ - return NAME##_cus_field_list (this, d, m, i);\ - }\ - template \ - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m,\ - std::vector *i) const {\ - return NAME##_cus_equal_list (this, d, c, m, i);\ - }\ - template \ - inline NAME##_cus_value_list \ - NAME::value_list(mysqlpp::cchar *d, Manip m, mysqlpp::sql_cmp_type /*sc*/) const {\ - sql_compare_type_def_##CMP (NAME, value, NUM);\ - }\ - template \ - inline NAME##_cus_field_list \ - NAME::field_list(mysqlpp::cchar *d, Manip m, mysqlpp::sql_cmp_type /*sc*/) const {\ - sql_compare_type_def_##CMP (NAME, field, NUM);\ - }\ - template \ - inline NAME##_cus_equal_list \ - NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, mysqlpp::sql_cmp_type /*sc*/) const {\ - sql_compare_type_defe_##CMP (NAME, equal, NUM);\ - }\ - template \ - void populate_##NAME (NAME *s, const mysqlpp::Row &row) { \ - s->I1 = static_cast(row.at(O1));\ - s->I2 = static_cast(row.at(O2));\ - s->I3 = static_cast(row.at(O3));\ - s->I4 = static_cast(row.at(O4));\ - s->I5 = static_cast(row.at(O5));\ - s->I6 = static_cast(row.at(O6));\ - s->I7 = static_cast(row.at(O7));\ - s->I8 = static_cast(row.at(O8));\ - s->I9 = static_cast(row.at(O9));\ - s->I10 = static_cast(row.at(O10));\ - s->I11 = static_cast(row.at(O11));\ - s->I12 = static_cast(row.at(O12));\ - s->I13 = static_cast(row.at(O13));\ - s->I14 = static_cast(row.at(O14));\ - } \ - inline NAME::NAME (const mysqlpp::Row &row) \ - {populate_##NAME(this, row);}\ - inline void NAME::set (const mysqlpp::Row &row)\ - {populate_##NAME(this, row);}\ - sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, I11, I12, I13, I14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ) - -#define sql_create_basic_14(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14) \ - sql_create_basic_c_order_14(NAME, CMP, CONTR, T1, I1, 0, T2, I2, 1, T3, I3, 2, T4, I4, 3, T5, I5, 4, T6, I6, 5, T7, I7, 6, T8, I8, 7, T9, I9, 8, T10, I10, 9, T11, I11, 10, T12, I12, 11, T13, I13, 12, T14, I14, 13) - -#define sql_create_14(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14) \ - sql_create_complete_14(NAME, CMP, CONTR, T1, I1, #I1, 0, T2, I2, #I2, 1, T3, I3, #I3, 2, T4, I4, #I4, 3, T5, I5, #I5, 4, T6, I6, #I6, 5, T7, I7, #I7, 6, T8, I8, #I8, 7, T9, I9, #I9, 8, T10, I10, #I10, 9, T11, I11, #I11, 10, T12, I12, #I12, 11, T13, I13, #I13, 12, T14, I14, #I14, 13) \ - -#define sql_create_c_order_14(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6, T7, I7, O7, T8, I8, O8, T9, I9, O9, T10, I10, O10, T11, I11, O11, T12, I12, O12, T13, I13, O13, T14, I14, O14) \ - sql_create_complete_14(NAME, CMP, CONTR, T1, I1, #I1, O1, T2, I2, #I2, O2, T3, I3, #I3, O3, T4, I4, #I4, O4, T5, I5, #I5, O5, T6, I6, #I6, O6, T7, I7, #I7, O7, T8, I8, #I8, O8, T9, I9, #I9, O9, T10, I10, #I10, O10, T11, I11, #I11, O11, T12, I12, #I12, O12, T13, I13, #I13, O13, T14, I14, #I14, O14) - -#define sql_create_c_names_14(NAME, CMP, CONTR, T1, I1, N1, T2, I2, N2, T3, I3, N3, T4, I4, N4, T5, I5, N5, T6, I6, N6, T7, I7, N7, T8, I8, N8, T9, I9, N9, T10, I10, N10, T11, I11, N11, T12, I12, N12, T13, I13, N13, T14, I14, N14) \ - sql_create_complete_14(NAME, CMP, CONTR, T1, I1, N1, 0, T2, I2, N2, 1, T3, I3, N3, 2, T4, I4, N4, 3, T5, I5, N5, 4, T6, I6, N6, 5, T7, I7, N7, 6, T8, I8, N8, 7, T9, I9, N9, 8, T10, I10, N10, 9, T11, I11, N11, 10, T12, I12, N12, 11, T13, I13, N13, 12, T14, I14, N14, 13) - -// --------------------------------------------------- -// End Create 14 -// --------------------------------------------------- - -// --------------------------------------------------- -// Begin Create 15 -// --------------------------------------------------- -#define sql_create_basic_c_order_15(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6, T7, I7, O7, T8, I8, O8, T9, I9, O9, T10, I10, O10, T11, I11, O11, T12, I12, O12, T13, I13, O13, T14, I14, O14, T15, I15, O15)\ - struct NAME; \ - template int sql_compare_##NAME (const NAME &, const NAME &);\ - struct NAME { \ - T1 I1;\ - T2 I2;\ - T3 I3;\ - T4 I4;\ - T5 I5;\ - T6 I6;\ - T7 I7;\ - T8 I8;\ - T9 I9;\ - T10 I10;\ - T11 I11;\ - T12 I12;\ - T13 I13;\ - T14 I14;\ - T15 I15; \ - NAME () {} \ - NAME (const mysqlpp::Row &row);\ - sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\ - }; \ - template \ - void populate_##NAME (NAME *s, const mysqlpp::Row &row) { \ - s->I1 = static_cast(row.at(O1));\ - s->I2 = static_cast(row.at(O2));\ - s->I3 = static_cast(row.at(O3));\ - s->I4 = static_cast(row.at(O4));\ - s->I5 = static_cast(row.at(O5));\ - s->I6 = static_cast(row.at(O6));\ - s->I7 = static_cast(row.at(O7));\ - s->I8 = static_cast(row.at(O8));\ - s->I9 = static_cast(row.at(O9));\ - s->I10 = static_cast(row.at(O10));\ - s->I11 = static_cast(row.at(O11));\ - s->I12 = static_cast(row.at(O12));\ - s->I13 = static_cast(row.at(O13));\ - s->I14 = static_cast(row.at(O14));\ - s->I15 = static_cast(row.at(O15)); \ - } \ - inline NAME::NAME (const mysqlpp::Row &row) \ - {populate_##NAME(this, row);} \ - sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, I11, I12, I13, I14, I15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ) - -#define sql_create_complete_15(NAME, CMP, CONTR, T1, I1, N1, O1, T2, I2, N2, O2, T3, I3, N3, O3, T4, I4, N4, O4, T5, I5, N5, O5, T6, I6, N6, O6, T7, I7, N7, O7, T8, I8, N8, O8, T9, I9, N9, O9, T10, I10, N10, O10, T11, I11, N11, O11, T12, I12, N12, O12, T13, I13, N13, O13, T14, I14, N14, O14, T15, I15, N15, O15) \ - struct NAME; \ - enum NAME##_enum { \ - NAME##_##I1,\ - NAME##_##I2,\ - NAME##_##I3,\ - NAME##_##I4,\ - NAME##_##I5,\ - NAME##_##I6,\ - NAME##_##I7,\ - NAME##_##I8,\ - NAME##_##I9,\ - NAME##_##I10,\ - NAME##_##I11,\ - NAME##_##I12,\ - NAME##_##I13,\ - NAME##_##I14,\ - NAME##_##I15 \ - ,NAME##_NULL \ - }; \ - template \ - class NAME##_value_list { \ - /*friend std::ostream& operator << <> (std::ostream&, const NAME##_value_list&); */\ - public: \ - const NAME *obj;\ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - NAME##_value_list (const NAME *o, mysqlpp::cchar *d, Manip m) \ - : obj(o), delem(d), manip(m) {} \ - };\ - template \ - class NAME##_##field_list {\ - /* friend std::ostream& operator << <> (std::ostream&, const NAME##_field_list&); */\ - public: \ - const NAME *obj; \ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - NAME##_field_list (const NAME *o, mysqlpp::cchar *d, Manip m) \ - : obj(o), delem(d), manip(m) {} \ - };\ - template \ - class NAME##_equal_list { \ - /* friend std::ostream& operator << <> (std::ostream&, const NAME##_equal_list&); */\ - public: \ - const NAME *obj;\ - mysqlpp::cchar *delem;\ - mysqlpp::cchar *comp;\ - Manip manip;\ - public: \ - NAME##_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) \ - : obj(o), delem(d), comp(c), manip(m) {}\ - };\ - template \ - class NAME##_cus_value_list {\ - /* friend std::ostream& operator << <> (std::ostream&, \ - const NAME##_cus_value_list&); */\ - public:\ - const NAME *obj;\ - std::vector *include;\ - bool del_vector;\ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - ~NAME##_cus_value_list () {if (del_vector) delete include;} \ - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15);\ - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15); \ - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m ,std::vector* i)\ - : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\ - };\ - template \ - class NAME##_cus_field_list { \ - /* friend std::ostream& operator << <> (std::ostream&, \ - const NAME##_cus_field_list&); */\ - public:\ - const NAME *obj; \ - std::vector *include; \ - bool del_vector; \ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - ~NAME##_cus_field_list () {if (del_vector) delete include;} \ - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15); \ - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15); \ - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, std::vector *i) \ - : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\ - };\ - template \ - class NAME##_cus_equal_list {\ - /* friend std::ostream& operator << <> (std::ostream&, \ - const NAME##_cus_equal_list&); */\ - public:\ - const NAME *obj;\ - std::vector *include;\ - bool del_vector;\ - mysqlpp::cchar *delem;\ - mysqlpp::cchar *comp;\ - Manip manip;\ - public:\ - ~NAME##_##cus_equal_list () {if (del_vector) delete include;}\ - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15); \ - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15); \ - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, std::vector *i) \ - : obj(o), include(i), del_vector(false), delem(d), comp(c), manip(m) {}\ - };\ - template int sql_compare_##NAME (const NAME &, const NAME &);\ - struct NAME { \ - T1 I1;\ - T2 I2;\ - T3 I3;\ - T4 I4;\ - T5 I5;\ - T6 I6;\ - T7 I7;\ - T8 I8;\ - T9 I9;\ - T10 I10;\ - T11 I11;\ - T12 I12;\ - T13 I13;\ - T14 I14;\ - T15 I15; \ - NAME () {} \ - NAME (const mysqlpp::Row &row);\ - void set (const mysqlpp::Row &row);\ - sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\ - sql_construct_define_##CONTR(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\ - static const char *names[];\ - static const char *_table;\ - static const char *& table() {return _table;}\ - NAME##_value_list value_list() const {\ - return value_list(",", mysqlpp::quote);}\ - NAME##_value_list value_list(mysqlpp::cchar *d) const {\ - return value_list(d, mysqlpp::quote);}\ - template \ - NAME##_value_list value_list(mysqlpp::cchar *d, Manip m) const; \ - NAME##_field_list field_list() const {\ - return field_list(",", mysqlpp::do_nothing);}\ - NAME##_field_list field_list(mysqlpp::cchar *d) const {\ - return field_list(d, mysqlpp::do_nothing);}\ - template \ - NAME##_field_list field_list(mysqlpp::cchar *d, Manip m) const; \ - NAME##_equal_list equal_list(mysqlpp::cchar *d = ",", \ - mysqlpp::cchar *c = " = ") const{\ - return equal_list(d, c, mysqlpp::quote);}\ - template \ - NAME##_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) const; \ - /* cus_data */\ - NAME##_cus_value_list value_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false) const {\ - return value_list(",", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15);\ - }\ - NAME##_cus_value_list value_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL) const {\ - return value_list(",", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15);\ - }\ - NAME##_cus_value_list value_list(std::vector *i) const {\ - return value_list(",", mysqlpp::quote, i);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::sql_cmp_type sc) const {\ - return value_list(",", mysqlpp::quote, sc);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false) const {\ - return value_list(d, mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL) const {\ - return value_list(d, mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, \ - std::vector *i) const {\ - return value_list(d, mysqlpp::quote, i);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, \ - mysqlpp::sql_cmp_type sc) const {\ - return value_list(d, mysqlpp::quote, sc);\ - }\ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false) const; \ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL) const; \ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m, \ - std::vector *i) const;\ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m, \ - mysqlpp::sql_cmp_type sc) const;\ - /* cus field */\ - NAME##_cus_field_list field_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false) const {\ - return field_list(",", mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15);\ - }\ - NAME##_cus_field_list field_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL) const {\ - return field_list(",", mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15);\ - }\ - NAME##_cus_field_list field_list(std::vector *i) const {\ - return field_list(",", mysqlpp::do_nothing, i);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::sql_cmp_type sc) const\ - {\ - return field_list(",", mysqlpp::do_nothing, sc);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, \ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false) const {\ - return field_list(d, mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL) const {\ - return field_list(d, mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, \ - std::vector *i) const {\ - return field_list(d, mysqlpp::do_nothing, i);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, \ - mysqlpp::sql_cmp_type sc) const {\ - return field_list(d, mysqlpp::do_nothing, sc);\ - }\ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false) const; \ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL) const; \ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m,\ - std::vector *i) const;\ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m, \ - mysqlpp::sql_cmp_type sc) const;\ - /* cus equal */\ - NAME##_cus_equal_list equal_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false) const {\ - return equal_list(",", " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15);\ - }\ - NAME##_cus_equal_list equal_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL) const {\ - return equal_list(",", " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15);\ - }\ - NAME##_cus_equal_list equal_list(std::vector *i) const {\ - return equal_list(",", " = ", mysqlpp::quote, i);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::sql_cmp_type sc) const {\ - return equal_list(",", " = ", mysqlpp::quote, sc);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false) const {\ - return equal_list(d, " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL) const {\ - return equal_list(d, " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, \ - std::vector *i) const {\ - return equal_list(d, " = ", mysqlpp::quote, i);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, \ - mysqlpp::sql_cmp_type sc) const {\ - return equal_list(d, " = ", mysqlpp::quote, sc);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false) const {\ - return equal_list(d, c, mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL) const {\ - return equal_list(d, c, mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - std::vector *i) const {\ - return equal_list(d, c, mysqlpp::quote, i);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - mysqlpp::sql_cmp_type sc) const {\ - return equal_list(d, c, mysqlpp::quote, sc);\ - }\ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false) const; \ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL) const; \ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - std::vector *i) const;\ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - mysqlpp::sql_cmp_type sc) const;\ - }; \ - MYSQLPP_SSQLS_EXPAND(\ - const char *NAME::names[] = { \ - N1 ,\ - N2 ,\ - N3 ,\ - N4 ,\ - N5 ,\ - N6 ,\ - N7 ,\ - N8 ,\ - N9 ,\ - N10 ,\ - N11 ,\ - N12 ,\ - N13 ,\ - N14 ,\ - N15 \ - }; \ - const char *NAME::_table = #NAME ;\ - )\ - template \ - NAME##_cus_value_list::NAME##_cus_value_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15) \ - { \ - delem = d;\ - manip = m;\ - del_vector = true;\ - obj = o; \ - include = new std::vector(15, false);\ - if (i1) (*include)[0]=true;\ - if (i2) (*include)[1]=true;\ - if (i3) (*include)[2]=true;\ - if (i4) (*include)[3]=true;\ - if (i5) (*include)[4]=true;\ - if (i6) (*include)[5]=true;\ - if (i7) (*include)[6]=true;\ - if (i8) (*include)[7]=true;\ - if (i9) (*include)[8]=true;\ - if (i10) (*include)[9]=true;\ - if (i11) (*include)[10]=true;\ - if (i12) (*include)[11]=true;\ - if (i13) (*include)[12]=true;\ - if (i14) (*include)[13]=true;\ - if (i15) (*include)[14]=true;\ - } \ - template \ - NAME##_cus_value_list::NAME##_cus_value_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15) { \ - delem = d;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(15, false); \ - if (i1 == NAME##_NULL) return;\ - (*include)[i1]=true;\ - if (i2 == NAME##_NULL) return;\ - (*include)[i2]=true;\ - if (i3 == NAME##_NULL) return;\ - (*include)[i3]=true;\ - if (i4 == NAME##_NULL) return;\ - (*include)[i4]=true;\ - if (i5 == NAME##_NULL) return;\ - (*include)[i5]=true;\ - if (i6 == NAME##_NULL) return;\ - (*include)[i6]=true;\ - if (i7 == NAME##_NULL) return;\ - (*include)[i7]=true;\ - if (i8 == NAME##_NULL) return;\ - (*include)[i8]=true;\ - if (i9 == NAME##_NULL) return;\ - (*include)[i9]=true;\ - if (i10 == NAME##_NULL) return;\ - (*include)[i10]=true;\ - if (i11 == NAME##_NULL) return;\ - (*include)[i11]=true;\ - if (i12 == NAME##_NULL) return;\ - (*include)[i12]=true;\ - if (i13 == NAME##_NULL) return;\ - (*include)[i13]=true;\ - if (i14 == NAME##_NULL) return;\ - (*include)[i14]=true;\ - if (i15 == NAME##_NULL) return;\ - (*include)[i15]=true;\ - }\ - template \ - NAME##_cus_field_list::NAME##_cus_field_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15) {\ - delem = d;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(15, false); \ - if (i1) (*include)[0]=true;\ - if (i2) (*include)[1]=true;\ - if (i3) (*include)[2]=true;\ - if (i4) (*include)[3]=true;\ - if (i5) (*include)[4]=true;\ - if (i6) (*include)[5]=true;\ - if (i7) (*include)[6]=true;\ - if (i8) (*include)[7]=true;\ - if (i9) (*include)[8]=true;\ - if (i10) (*include)[9]=true;\ - if (i11) (*include)[10]=true;\ - if (i12) (*include)[11]=true;\ - if (i13) (*include)[12]=true;\ - if (i14) (*include)[13]=true;\ - if (i15) (*include)[14]=true;\ - } \ - template \ - NAME##_cus_field_list::NAME##_cus_field_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15) { \ - delem = d;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(15, false); \ - if (i1 == NAME##_NULL) return;\ - (*include)[i1]=true;\ - if (i2 == NAME##_NULL) return;\ - (*include)[i2]=true;\ - if (i3 == NAME##_NULL) return;\ - (*include)[i3]=true;\ - if (i4 == NAME##_NULL) return;\ - (*include)[i4]=true;\ - if (i5 == NAME##_NULL) return;\ - (*include)[i5]=true;\ - if (i6 == NAME##_NULL) return;\ - (*include)[i6]=true;\ - if (i7 == NAME##_NULL) return;\ - (*include)[i7]=true;\ - if (i8 == NAME##_NULL) return;\ - (*include)[i8]=true;\ - if (i9 == NAME##_NULL) return;\ - (*include)[i9]=true;\ - if (i10 == NAME##_NULL) return;\ - (*include)[i10]=true;\ - if (i11 == NAME##_NULL) return;\ - (*include)[i11]=true;\ - if (i12 == NAME##_NULL) return;\ - (*include)[i12]=true;\ - if (i13 == NAME##_NULL) return;\ - (*include)[i13]=true;\ - if (i14 == NAME##_NULL) return;\ - (*include)[i14]=true;\ - if (i15 == NAME##_NULL) return;\ - (*include)[i15]=true;\ - }\ - template \ - NAME##_cus_equal_list::NAME##_cus_equal_list\ - (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15) { \ - delem = d;\ - comp = c;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(15, false); \ - if (i1) (*include)[0]=true;\ - if (i2) (*include)[1]=true;\ - if (i3) (*include)[2]=true;\ - if (i4) (*include)[3]=true;\ - if (i5) (*include)[4]=true;\ - if (i6) (*include)[5]=true;\ - if (i7) (*include)[6]=true;\ - if (i8) (*include)[7]=true;\ - if (i9) (*include)[8]=true;\ - if (i10) (*include)[9]=true;\ - if (i11) (*include)[10]=true;\ - if (i12) (*include)[11]=true;\ - if (i13) (*include)[12]=true;\ - if (i14) (*include)[13]=true;\ - if (i15) (*include)[14]=true;\ - } \ - template \ - NAME##_cus_equal_list::NAME##_cus_equal_list\ - (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15) { \ - delem = d;\ - comp = c;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(15, false); \ - if (i1 == NAME##_NULL) return;\ - (*include)[i1]=true;\ - if (i2 == NAME##_NULL) return;\ - (*include)[i2]=true;\ - if (i3 == NAME##_NULL) return;\ - (*include)[i3]=true;\ - if (i4 == NAME##_NULL) return;\ - (*include)[i4]=true;\ - if (i5 == NAME##_NULL) return;\ - (*include)[i5]=true;\ - if (i6 == NAME##_NULL) return;\ - (*include)[i6]=true;\ - if (i7 == NAME##_NULL) return;\ - (*include)[i7]=true;\ - if (i8 == NAME##_NULL) return;\ - (*include)[i8]=true;\ - if (i9 == NAME##_NULL) return;\ - (*include)[i9]=true;\ - if (i10 == NAME##_NULL) return;\ - (*include)[i10]=true;\ - if (i11 == NAME##_NULL) return;\ - (*include)[i11]=true;\ - if (i12 == NAME##_NULL) return;\ - (*include)[i12]=true;\ - if (i13 == NAME##_NULL) return;\ - (*include)[i13]=true;\ - if (i14 == NAME##_NULL) return;\ - (*include)[i14]=true;\ - if (i15 == NAME##_NULL) return;\ - (*include)[i15]=true;\ - }\ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_value_list& obj) { \ - s << obj.manip << obj.obj->I1 << obj.delem;\ - s << obj.manip << obj.obj->I2 << obj.delem;\ - s << obj.manip << obj.obj->I3 << obj.delem;\ - s << obj.manip << obj.obj->I4 << obj.delem;\ - s << obj.manip << obj.obj->I5 << obj.delem;\ - s << obj.manip << obj.obj->I6 << obj.delem;\ - s << obj.manip << obj.obj->I7 << obj.delem;\ - s << obj.manip << obj.obj->I8 << obj.delem;\ - s << obj.manip << obj.obj->I9 << obj.delem;\ - s << obj.manip << obj.obj->I10 << obj.delem;\ - s << obj.manip << obj.obj->I11 << obj.delem;\ - s << obj.manip << obj.obj->I12 << obj.delem;\ - s << obj.manip << obj.obj->I13 << obj.delem;\ - s << obj.manip << obj.obj->I14 << obj.delem;\ - s << obj.manip << obj.obj->I15; \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_field_list& obj) { \ - s << obj.manip << obj.obj->names[0] << obj.delem;\ - s << obj.manip << obj.obj->names[1] << obj.delem;\ - s << obj.manip << obj.obj->names[2] << obj.delem;\ - s << obj.manip << obj.obj->names[3] << obj.delem;\ - s << obj.manip << obj.obj->names[4] << obj.delem;\ - s << obj.manip << obj.obj->names[5] << obj.delem;\ - s << obj.manip << obj.obj->names[6] << obj.delem;\ - s << obj.manip << obj.obj->names[7] << obj.delem;\ - s << obj.manip << obj.obj->names[8] << obj.delem;\ - s << obj.manip << obj.obj->names[9] << obj.delem;\ - s << obj.manip << obj.obj->names[10] << obj.delem;\ - s << obj.manip << obj.obj->names[11] << obj.delem;\ - s << obj.manip << obj.obj->names[12] << obj.delem;\ - s << obj.manip << obj.obj->names[13] << obj.delem;\ - s << obj.manip << obj.obj->names[14]; \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_equal_list& obj) { \ - s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1 << obj.delem;\ - s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2 << obj.delem;\ - s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3 << obj.delem;\ - s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4 << obj.delem;\ - s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5 << obj.delem;\ - s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6 << obj.delem;\ - s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->I7 << obj.delem;\ - s << obj.obj->names[7] << obj.comp << obj.manip << obj.obj->I8 << obj.delem;\ - s << obj.obj->names[8] << obj.comp << obj.manip << obj.obj->I9 << obj.delem;\ - s << obj.obj->names[9] << obj.comp << obj.manip << obj.obj->I10 << obj.delem;\ - s << obj.obj->names[10] << obj.comp << obj.manip << obj.obj->I11 << obj.delem;\ - s << obj.obj->names[11] << obj.comp << obj.manip << obj.obj->I12 << obj.delem;\ - s << obj.obj->names[12] << obj.comp << obj.manip << obj.obj->I13 << obj.delem;\ - s << obj.obj->names[13] << obj.comp << obj.manip << obj.obj->I14 << obj.delem;\ - s << obj.obj->names[14] << obj.comp << obj.manip << obj.obj->I15; \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_cus_value_list& obj) { \ - bool before = false; \ - if ((*obj.include)[0]) { \ - s << obj.manip << obj.obj->I1;\ - before = true; \ - } \ - if ((*obj.include)[1]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I2;\ - before = true; \ - } \ - if ((*obj.include)[2]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I3;\ - before = true; \ - } \ - if ((*obj.include)[3]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I4;\ - before = true; \ - } \ - if ((*obj.include)[4]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I5;\ - before = true; \ - } \ - if ((*obj.include)[5]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I6;\ - before = true; \ - } \ - if ((*obj.include)[6]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I7;\ - before = true; \ - } \ - if ((*obj.include)[7]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I8;\ - before = true; \ - } \ - if ((*obj.include)[8]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I9;\ - before = true; \ - } \ - if ((*obj.include)[9]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I10;\ - before = true; \ - } \ - if ((*obj.include)[10]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I11;\ - before = true; \ - } \ - if ((*obj.include)[11]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I12;\ - before = true; \ - } \ - if ((*obj.include)[12]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I13;\ - before = true; \ - } \ - if ((*obj.include)[13]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I14;\ - before = true; \ - } \ - if ((*obj.include)[14]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I15;\ - } \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_cus_field_list& obj) { \ - bool before = false; \ - if ((*obj.include)[0]) { \ - s << obj.manip << obj.obj->names[0];\ - before = true; \ - } \ - if ((*obj.include)[1]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[1];\ - before = true; \ - } \ - if ((*obj.include)[2]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[2];\ - before = true; \ - } \ - if ((*obj.include)[3]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[3];\ - before = true; \ - } \ - if ((*obj.include)[4]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[4];\ - before = true; \ - } \ - if ((*obj.include)[5]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[5];\ - before = true; \ - } \ - if ((*obj.include)[6]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[6];\ - before = true; \ - } \ - if ((*obj.include)[7]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[7];\ - before = true; \ - } \ - if ((*obj.include)[8]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[8];\ - before = true; \ - } \ - if ((*obj.include)[9]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[9];\ - before = true; \ - } \ - if ((*obj.include)[10]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[10];\ - before = true; \ - } \ - if ((*obj.include)[11]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[11];\ - before = true; \ - } \ - if ((*obj.include)[12]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[12];\ - before = true; \ - } \ - if ((*obj.include)[13]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[13];\ - before = true; \ - } \ - if ((*obj.include)[14]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[14];\ - } \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_cus_equal_list& obj) { \ - bool before = false; \ - if ((*obj.include)[0]) { \ - s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1;\ - before = true; \ - } \ - if ((*obj.include)[1]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2;\ - before = true; \ - } \ - if ((*obj.include)[2]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3;\ - before = true; \ - } \ - if ((*obj.include)[3]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4;\ - before = true; \ - } \ - if ((*obj.include)[4]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5;\ - before = true; \ - } \ - if ((*obj.include)[5]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6;\ - before = true; \ - } \ - if ((*obj.include)[6]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->I7;\ - before = true; \ - } \ - if ((*obj.include)[7]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[7] << obj.comp << obj.manip << obj.obj->I8;\ - before = true; \ - } \ - if ((*obj.include)[8]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[8] << obj.comp << obj.manip << obj.obj->I9;\ - before = true; \ - } \ - if ((*obj.include)[9]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[9] << obj.comp << obj.manip << obj.obj->I10;\ - before = true; \ - } \ - if ((*obj.include)[10]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[10] << obj.comp << obj.manip << obj.obj->I11;\ - before = true; \ - } \ - if ((*obj.include)[11]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[11] << obj.comp << obj.manip << obj.obj->I12;\ - before = true; \ - } \ - if ((*obj.include)[12]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[12] << obj.comp << obj.manip << obj.obj->I13;\ - before = true; \ - } \ - if ((*obj.include)[13]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[13] << obj.comp << obj.manip << obj.obj->I14;\ - before = true; \ - } \ - if ((*obj.include)[14]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[14] << obj.comp << obj.manip << obj.obj->I15;\ - } \ - return s; \ - } \ - template \ - inline NAME##_value_list NAME::value_list(mysqlpp::cchar *d, Manip m) const { \ - return NAME##_value_list (this, d, m); \ - } \ - template \ - inline NAME##_field_list NAME::field_list(mysqlpp::cchar *d, Manip m) const { \ - return NAME##_field_list (this, d, m); \ - } \ - template \ - inline NAME##_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) const { \ - return NAME##_equal_list (this, d, c, m); \ - } \ - template \ - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15) const {\ - return NAME##_cus_value_list (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15); \ - } \ - template \ - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15) const { \ - return NAME##_cus_field_list (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15); \ - } \ - template \ - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m,\ - bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15) const { \ - return NAME##_cus_equal_list (this, d, c, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15); \ - } \ - template \ - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15) const { \ - return NAME##_cus_value_list (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15); \ - } \ - template \ - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15) const {\ - return NAME##_cus_field_list (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15); \ - } \ - template \ - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15) const { \ - return NAME##_cus_equal_list (this, d, c, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15); \ - } \ - template \ - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m,\ - std::vector *i) const {\ - return NAME##_cus_value_list (this, d, m, i);\ - }\ - template \ - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m,\ - std::vector *i) const {\ - return NAME##_cus_field_list (this, d, m, i);\ - }\ - template \ - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m,\ - std::vector *i) const {\ - return NAME##_cus_equal_list (this, d, c, m, i);\ - }\ - template \ - inline NAME##_cus_value_list \ - NAME::value_list(mysqlpp::cchar *d, Manip m, mysqlpp::sql_cmp_type /*sc*/) const {\ - sql_compare_type_def_##CMP (NAME, value, NUM);\ - }\ - template \ - inline NAME##_cus_field_list \ - NAME::field_list(mysqlpp::cchar *d, Manip m, mysqlpp::sql_cmp_type /*sc*/) const {\ - sql_compare_type_def_##CMP (NAME, field, NUM);\ - }\ - template \ - inline NAME##_cus_equal_list \ - NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, mysqlpp::sql_cmp_type /*sc*/) const {\ - sql_compare_type_defe_##CMP (NAME, equal, NUM);\ - }\ - template \ - void populate_##NAME (NAME *s, const mysqlpp::Row &row) { \ - s->I1 = static_cast(row.at(O1));\ - s->I2 = static_cast(row.at(O2));\ - s->I3 = static_cast(row.at(O3));\ - s->I4 = static_cast(row.at(O4));\ - s->I5 = static_cast(row.at(O5));\ - s->I6 = static_cast(row.at(O6));\ - s->I7 = static_cast(row.at(O7));\ - s->I8 = static_cast(row.at(O8));\ - s->I9 = static_cast(row.at(O9));\ - s->I10 = static_cast(row.at(O10));\ - s->I11 = static_cast(row.at(O11));\ - s->I12 = static_cast(row.at(O12));\ - s->I13 = static_cast(row.at(O13));\ - s->I14 = static_cast(row.at(O14));\ - s->I15 = static_cast(row.at(O15));\ - } \ - inline NAME::NAME (const mysqlpp::Row &row) \ - {populate_##NAME(this, row);}\ - inline void NAME::set (const mysqlpp::Row &row)\ - {populate_##NAME(this, row);}\ - sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, I11, I12, I13, I14, I15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ) - -#define sql_create_basic_15(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15) \ - sql_create_basic_c_order_15(NAME, CMP, CONTR, T1, I1, 0, T2, I2, 1, T3, I3, 2, T4, I4, 3, T5, I5, 4, T6, I6, 5, T7, I7, 6, T8, I8, 7, T9, I9, 8, T10, I10, 9, T11, I11, 10, T12, I12, 11, T13, I13, 12, T14, I14, 13, T15, I15, 14) - -#define sql_create_15(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15) \ - sql_create_complete_15(NAME, CMP, CONTR, T1, I1, #I1, 0, T2, I2, #I2, 1, T3, I3, #I3, 2, T4, I4, #I4, 3, T5, I5, #I5, 4, T6, I6, #I6, 5, T7, I7, #I7, 6, T8, I8, #I8, 7, T9, I9, #I9, 8, T10, I10, #I10, 9, T11, I11, #I11, 10, T12, I12, #I12, 11, T13, I13, #I13, 12, T14, I14, #I14, 13, T15, I15, #I15, 14) \ - -#define sql_create_c_order_15(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6, T7, I7, O7, T8, I8, O8, T9, I9, O9, T10, I10, O10, T11, I11, O11, T12, I12, O12, T13, I13, O13, T14, I14, O14, T15, I15, O15) \ - sql_create_complete_15(NAME, CMP, CONTR, T1, I1, #I1, O1, T2, I2, #I2, O2, T3, I3, #I3, O3, T4, I4, #I4, O4, T5, I5, #I5, O5, T6, I6, #I6, O6, T7, I7, #I7, O7, T8, I8, #I8, O8, T9, I9, #I9, O9, T10, I10, #I10, O10, T11, I11, #I11, O11, T12, I12, #I12, O12, T13, I13, #I13, O13, T14, I14, #I14, O14, T15, I15, #I15, O15) - -#define sql_create_c_names_15(NAME, CMP, CONTR, T1, I1, N1, T2, I2, N2, T3, I3, N3, T4, I4, N4, T5, I5, N5, T6, I6, N6, T7, I7, N7, T8, I8, N8, T9, I9, N9, T10, I10, N10, T11, I11, N11, T12, I12, N12, T13, I13, N13, T14, I14, N14, T15, I15, N15) \ - sql_create_complete_15(NAME, CMP, CONTR, T1, I1, N1, 0, T2, I2, N2, 1, T3, I3, N3, 2, T4, I4, N4, 3, T5, I5, N5, 4, T6, I6, N6, 5, T7, I7, N7, 6, T8, I8, N8, 7, T9, I9, N9, 8, T10, I10, N10, 9, T11, I11, N11, 10, T12, I12, N12, 11, T13, I13, N13, 12, T14, I14, N14, 13, T15, I15, N15, 14) - -// --------------------------------------------------- -// End Create 15 -// --------------------------------------------------- - -// --------------------------------------------------- -// Begin Create 16 -// --------------------------------------------------- -#define sql_create_basic_c_order_16(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6, T7, I7, O7, T8, I8, O8, T9, I9, O9, T10, I10, O10, T11, I11, O11, T12, I12, O12, T13, I13, O13, T14, I14, O14, T15, I15, O15, T16, I16, O16)\ - struct NAME; \ - template int sql_compare_##NAME (const NAME &, const NAME &);\ - struct NAME { \ - T1 I1;\ - T2 I2;\ - T3 I3;\ - T4 I4;\ - T5 I5;\ - T6 I6;\ - T7 I7;\ - T8 I8;\ - T9 I9;\ - T10 I10;\ - T11 I11;\ - T12 I12;\ - T13 I13;\ - T14 I14;\ - T15 I15;\ - T16 I16; \ - NAME () {} \ - NAME (const mysqlpp::Row &row);\ - sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\ - }; \ - template \ - void populate_##NAME (NAME *s, const mysqlpp::Row &row) { \ - s->I1 = static_cast(row.at(O1));\ - s->I2 = static_cast(row.at(O2));\ - s->I3 = static_cast(row.at(O3));\ - s->I4 = static_cast(row.at(O4));\ - s->I5 = static_cast(row.at(O5));\ - s->I6 = static_cast(row.at(O6));\ - s->I7 = static_cast(row.at(O7));\ - s->I8 = static_cast(row.at(O8));\ - s->I9 = static_cast(row.at(O9));\ - s->I10 = static_cast(row.at(O10));\ - s->I11 = static_cast(row.at(O11));\ - s->I12 = static_cast(row.at(O12));\ - s->I13 = static_cast(row.at(O13));\ - s->I14 = static_cast(row.at(O14));\ - s->I15 = static_cast(row.at(O15));\ - s->I16 = static_cast(row.at(O16)); \ - } \ - inline NAME::NAME (const mysqlpp::Row &row) \ - {populate_##NAME(this, row);} \ - sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, I11, I12, I13, I14, I15, I16, 0, 0, 0, 0, 0, 0, 0, 0, 0 ) - -#define sql_create_complete_16(NAME, CMP, CONTR, T1, I1, N1, O1, T2, I2, N2, O2, T3, I3, N3, O3, T4, I4, N4, O4, T5, I5, N5, O5, T6, I6, N6, O6, T7, I7, N7, O7, T8, I8, N8, O8, T9, I9, N9, O9, T10, I10, N10, O10, T11, I11, N11, O11, T12, I12, N12, O12, T13, I13, N13, O13, T14, I14, N14, O14, T15, I15, N15, O15, T16, I16, N16, O16) \ - struct NAME; \ - enum NAME##_enum { \ - NAME##_##I1,\ - NAME##_##I2,\ - NAME##_##I3,\ - NAME##_##I4,\ - NAME##_##I5,\ - NAME##_##I6,\ - NAME##_##I7,\ - NAME##_##I8,\ - NAME##_##I9,\ - NAME##_##I10,\ - NAME##_##I11,\ - NAME##_##I12,\ - NAME##_##I13,\ - NAME##_##I14,\ - NAME##_##I15,\ - NAME##_##I16 \ - ,NAME##_NULL \ - }; \ - template \ - class NAME##_value_list { \ - /*friend std::ostream& operator << <> (std::ostream&, const NAME##_value_list&); */\ - public: \ - const NAME *obj;\ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - NAME##_value_list (const NAME *o, mysqlpp::cchar *d, Manip m) \ - : obj(o), delem(d), manip(m) {} \ - };\ - template \ - class NAME##_##field_list {\ - /* friend std::ostream& operator << <> (std::ostream&, const NAME##_field_list&); */\ - public: \ - const NAME *obj; \ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - NAME##_field_list (const NAME *o, mysqlpp::cchar *d, Manip m) \ - : obj(o), delem(d), manip(m) {} \ - };\ - template \ - class NAME##_equal_list { \ - /* friend std::ostream& operator << <> (std::ostream&, const NAME##_equal_list&); */\ - public: \ - const NAME *obj;\ - mysqlpp::cchar *delem;\ - mysqlpp::cchar *comp;\ - Manip manip;\ - public: \ - NAME##_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) \ - : obj(o), delem(d), comp(c), manip(m) {}\ - };\ - template \ - class NAME##_cus_value_list {\ - /* friend std::ostream& operator << <> (std::ostream&, \ - const NAME##_cus_value_list&); */\ - public:\ - const NAME *obj;\ - std::vector *include;\ - bool del_vector;\ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - ~NAME##_cus_value_list () {if (del_vector) delete include;} \ - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16);\ - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16); \ - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m ,std::vector* i)\ - : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\ - };\ - template \ - class NAME##_cus_field_list { \ - /* friend std::ostream& operator << <> (std::ostream&, \ - const NAME##_cus_field_list&); */\ - public:\ - const NAME *obj; \ - std::vector *include; \ - bool del_vector; \ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - ~NAME##_cus_field_list () {if (del_vector) delete include;} \ - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16); \ - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16); \ - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, std::vector *i) \ - : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\ - };\ - template \ - class NAME##_cus_equal_list {\ - /* friend std::ostream& operator << <> (std::ostream&, \ - const NAME##_cus_equal_list&); */\ - public:\ - const NAME *obj;\ - std::vector *include;\ - bool del_vector;\ - mysqlpp::cchar *delem;\ - mysqlpp::cchar *comp;\ - Manip manip;\ - public:\ - ~NAME##_##cus_equal_list () {if (del_vector) delete include;}\ - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16); \ - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16); \ - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, std::vector *i) \ - : obj(o), include(i), del_vector(false), delem(d), comp(c), manip(m) {}\ - };\ - template int sql_compare_##NAME (const NAME &, const NAME &);\ - struct NAME { \ - T1 I1;\ - T2 I2;\ - T3 I3;\ - T4 I4;\ - T5 I5;\ - T6 I6;\ - T7 I7;\ - T8 I8;\ - T9 I9;\ - T10 I10;\ - T11 I11;\ - T12 I12;\ - T13 I13;\ - T14 I14;\ - T15 I15;\ - T16 I16; \ - NAME () {} \ - NAME (const mysqlpp::Row &row);\ - void set (const mysqlpp::Row &row);\ - sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\ - sql_construct_define_##CONTR(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\ - static const char *names[];\ - static const char *_table;\ - static const char *& table() {return _table;}\ - NAME##_value_list value_list() const {\ - return value_list(",", mysqlpp::quote);}\ - NAME##_value_list value_list(mysqlpp::cchar *d) const {\ - return value_list(d, mysqlpp::quote);}\ - template \ - NAME##_value_list value_list(mysqlpp::cchar *d, Manip m) const; \ - NAME##_field_list field_list() const {\ - return field_list(",", mysqlpp::do_nothing);}\ - NAME##_field_list field_list(mysqlpp::cchar *d) const {\ - return field_list(d, mysqlpp::do_nothing);}\ - template \ - NAME##_field_list field_list(mysqlpp::cchar *d, Manip m) const; \ - NAME##_equal_list equal_list(mysqlpp::cchar *d = ",", \ - mysqlpp::cchar *c = " = ") const{\ - return equal_list(d, c, mysqlpp::quote);}\ - template \ - NAME##_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) const; \ - /* cus_data */\ - NAME##_cus_value_list value_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false) const {\ - return value_list(",", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16);\ - }\ - NAME##_cus_value_list value_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL) const {\ - return value_list(",", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16);\ - }\ - NAME##_cus_value_list value_list(std::vector *i) const {\ - return value_list(",", mysqlpp::quote, i);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::sql_cmp_type sc) const {\ - return value_list(",", mysqlpp::quote, sc);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false) const {\ - return value_list(d, mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL) const {\ - return value_list(d, mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, \ - std::vector *i) const {\ - return value_list(d, mysqlpp::quote, i);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, \ - mysqlpp::sql_cmp_type sc) const {\ - return value_list(d, mysqlpp::quote, sc);\ - }\ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false) const; \ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL) const; \ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m, \ - std::vector *i) const;\ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m, \ - mysqlpp::sql_cmp_type sc) const;\ - /* cus field */\ - NAME##_cus_field_list field_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false) const {\ - return field_list(",", mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16);\ - }\ - NAME##_cus_field_list field_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL) const {\ - return field_list(",", mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16);\ - }\ - NAME##_cus_field_list field_list(std::vector *i) const {\ - return field_list(",", mysqlpp::do_nothing, i);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::sql_cmp_type sc) const\ - {\ - return field_list(",", mysqlpp::do_nothing, sc);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, \ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false) const {\ - return field_list(d, mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL) const {\ - return field_list(d, mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, \ - std::vector *i) const {\ - return field_list(d, mysqlpp::do_nothing, i);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, \ - mysqlpp::sql_cmp_type sc) const {\ - return field_list(d, mysqlpp::do_nothing, sc);\ - }\ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false) const; \ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL) const; \ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m,\ - std::vector *i) const;\ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m, \ - mysqlpp::sql_cmp_type sc) const;\ - /* cus equal */\ - NAME##_cus_equal_list equal_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false) const {\ - return equal_list(",", " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16);\ - }\ - NAME##_cus_equal_list equal_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL) const {\ - return equal_list(",", " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16);\ - }\ - NAME##_cus_equal_list equal_list(std::vector *i) const {\ - return equal_list(",", " = ", mysqlpp::quote, i);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::sql_cmp_type sc) const {\ - return equal_list(",", " = ", mysqlpp::quote, sc);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false) const {\ - return equal_list(d, " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL) const {\ - return equal_list(d, " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, \ - std::vector *i) const {\ - return equal_list(d, " = ", mysqlpp::quote, i);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, \ - mysqlpp::sql_cmp_type sc) const {\ - return equal_list(d, " = ", mysqlpp::quote, sc);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false) const {\ - return equal_list(d, c, mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL) const {\ - return equal_list(d, c, mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - std::vector *i) const {\ - return equal_list(d, c, mysqlpp::quote, i);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - mysqlpp::sql_cmp_type sc) const {\ - return equal_list(d, c, mysqlpp::quote, sc);\ - }\ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false) const; \ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL) const; \ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - std::vector *i) const;\ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - mysqlpp::sql_cmp_type sc) const;\ - }; \ - MYSQLPP_SSQLS_EXPAND(\ - const char *NAME::names[] = { \ - N1 ,\ - N2 ,\ - N3 ,\ - N4 ,\ - N5 ,\ - N6 ,\ - N7 ,\ - N8 ,\ - N9 ,\ - N10 ,\ - N11 ,\ - N12 ,\ - N13 ,\ - N14 ,\ - N15 ,\ - N16 \ - }; \ - const char *NAME::_table = #NAME ;\ - )\ - template \ - NAME##_cus_value_list::NAME##_cus_value_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16) \ - { \ - delem = d;\ - manip = m;\ - del_vector = true;\ - obj = o; \ - include = new std::vector(16, false);\ - if (i1) (*include)[0]=true;\ - if (i2) (*include)[1]=true;\ - if (i3) (*include)[2]=true;\ - if (i4) (*include)[3]=true;\ - if (i5) (*include)[4]=true;\ - if (i6) (*include)[5]=true;\ - if (i7) (*include)[6]=true;\ - if (i8) (*include)[7]=true;\ - if (i9) (*include)[8]=true;\ - if (i10) (*include)[9]=true;\ - if (i11) (*include)[10]=true;\ - if (i12) (*include)[11]=true;\ - if (i13) (*include)[12]=true;\ - if (i14) (*include)[13]=true;\ - if (i15) (*include)[14]=true;\ - if (i16) (*include)[15]=true;\ - } \ - template \ - NAME##_cus_value_list::NAME##_cus_value_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16) { \ - delem = d;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(16, false); \ - if (i1 == NAME##_NULL) return;\ - (*include)[i1]=true;\ - if (i2 == NAME##_NULL) return;\ - (*include)[i2]=true;\ - if (i3 == NAME##_NULL) return;\ - (*include)[i3]=true;\ - if (i4 == NAME##_NULL) return;\ - (*include)[i4]=true;\ - if (i5 == NAME##_NULL) return;\ - (*include)[i5]=true;\ - if (i6 == NAME##_NULL) return;\ - (*include)[i6]=true;\ - if (i7 == NAME##_NULL) return;\ - (*include)[i7]=true;\ - if (i8 == NAME##_NULL) return;\ - (*include)[i8]=true;\ - if (i9 == NAME##_NULL) return;\ - (*include)[i9]=true;\ - if (i10 == NAME##_NULL) return;\ - (*include)[i10]=true;\ - if (i11 == NAME##_NULL) return;\ - (*include)[i11]=true;\ - if (i12 == NAME##_NULL) return;\ - (*include)[i12]=true;\ - if (i13 == NAME##_NULL) return;\ - (*include)[i13]=true;\ - if (i14 == NAME##_NULL) return;\ - (*include)[i14]=true;\ - if (i15 == NAME##_NULL) return;\ - (*include)[i15]=true;\ - if (i16 == NAME##_NULL) return;\ - (*include)[i16]=true;\ - }\ - template \ - NAME##_cus_field_list::NAME##_cus_field_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16) {\ - delem = d;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(16, false); \ - if (i1) (*include)[0]=true;\ - if (i2) (*include)[1]=true;\ - if (i3) (*include)[2]=true;\ - if (i4) (*include)[3]=true;\ - if (i5) (*include)[4]=true;\ - if (i6) (*include)[5]=true;\ - if (i7) (*include)[6]=true;\ - if (i8) (*include)[7]=true;\ - if (i9) (*include)[8]=true;\ - if (i10) (*include)[9]=true;\ - if (i11) (*include)[10]=true;\ - if (i12) (*include)[11]=true;\ - if (i13) (*include)[12]=true;\ - if (i14) (*include)[13]=true;\ - if (i15) (*include)[14]=true;\ - if (i16) (*include)[15]=true;\ - } \ - template \ - NAME##_cus_field_list::NAME##_cus_field_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16) { \ - delem = d;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(16, false); \ - if (i1 == NAME##_NULL) return;\ - (*include)[i1]=true;\ - if (i2 == NAME##_NULL) return;\ - (*include)[i2]=true;\ - if (i3 == NAME##_NULL) return;\ - (*include)[i3]=true;\ - if (i4 == NAME##_NULL) return;\ - (*include)[i4]=true;\ - if (i5 == NAME##_NULL) return;\ - (*include)[i5]=true;\ - if (i6 == NAME##_NULL) return;\ - (*include)[i6]=true;\ - if (i7 == NAME##_NULL) return;\ - (*include)[i7]=true;\ - if (i8 == NAME##_NULL) return;\ - (*include)[i8]=true;\ - if (i9 == NAME##_NULL) return;\ - (*include)[i9]=true;\ - if (i10 == NAME##_NULL) return;\ - (*include)[i10]=true;\ - if (i11 == NAME##_NULL) return;\ - (*include)[i11]=true;\ - if (i12 == NAME##_NULL) return;\ - (*include)[i12]=true;\ - if (i13 == NAME##_NULL) return;\ - (*include)[i13]=true;\ - if (i14 == NAME##_NULL) return;\ - (*include)[i14]=true;\ - if (i15 == NAME##_NULL) return;\ - (*include)[i15]=true;\ - if (i16 == NAME##_NULL) return;\ - (*include)[i16]=true;\ - }\ - template \ - NAME##_cus_equal_list::NAME##_cus_equal_list\ - (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16) { \ - delem = d;\ - comp = c;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(16, false); \ - if (i1) (*include)[0]=true;\ - if (i2) (*include)[1]=true;\ - if (i3) (*include)[2]=true;\ - if (i4) (*include)[3]=true;\ - if (i5) (*include)[4]=true;\ - if (i6) (*include)[5]=true;\ - if (i7) (*include)[6]=true;\ - if (i8) (*include)[7]=true;\ - if (i9) (*include)[8]=true;\ - if (i10) (*include)[9]=true;\ - if (i11) (*include)[10]=true;\ - if (i12) (*include)[11]=true;\ - if (i13) (*include)[12]=true;\ - if (i14) (*include)[13]=true;\ - if (i15) (*include)[14]=true;\ - if (i16) (*include)[15]=true;\ - } \ - template \ - NAME##_cus_equal_list::NAME##_cus_equal_list\ - (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16) { \ - delem = d;\ - comp = c;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(16, false); \ - if (i1 == NAME##_NULL) return;\ - (*include)[i1]=true;\ - if (i2 == NAME##_NULL) return;\ - (*include)[i2]=true;\ - if (i3 == NAME##_NULL) return;\ - (*include)[i3]=true;\ - if (i4 == NAME##_NULL) return;\ - (*include)[i4]=true;\ - if (i5 == NAME##_NULL) return;\ - (*include)[i5]=true;\ - if (i6 == NAME##_NULL) return;\ - (*include)[i6]=true;\ - if (i7 == NAME##_NULL) return;\ - (*include)[i7]=true;\ - if (i8 == NAME##_NULL) return;\ - (*include)[i8]=true;\ - if (i9 == NAME##_NULL) return;\ - (*include)[i9]=true;\ - if (i10 == NAME##_NULL) return;\ - (*include)[i10]=true;\ - if (i11 == NAME##_NULL) return;\ - (*include)[i11]=true;\ - if (i12 == NAME##_NULL) return;\ - (*include)[i12]=true;\ - if (i13 == NAME##_NULL) return;\ - (*include)[i13]=true;\ - if (i14 == NAME##_NULL) return;\ - (*include)[i14]=true;\ - if (i15 == NAME##_NULL) return;\ - (*include)[i15]=true;\ - if (i16 == NAME##_NULL) return;\ - (*include)[i16]=true;\ - }\ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_value_list& obj) { \ - s << obj.manip << obj.obj->I1 << obj.delem;\ - s << obj.manip << obj.obj->I2 << obj.delem;\ - s << obj.manip << obj.obj->I3 << obj.delem;\ - s << obj.manip << obj.obj->I4 << obj.delem;\ - s << obj.manip << obj.obj->I5 << obj.delem;\ - s << obj.manip << obj.obj->I6 << obj.delem;\ - s << obj.manip << obj.obj->I7 << obj.delem;\ - s << obj.manip << obj.obj->I8 << obj.delem;\ - s << obj.manip << obj.obj->I9 << obj.delem;\ - s << obj.manip << obj.obj->I10 << obj.delem;\ - s << obj.manip << obj.obj->I11 << obj.delem;\ - s << obj.manip << obj.obj->I12 << obj.delem;\ - s << obj.manip << obj.obj->I13 << obj.delem;\ - s << obj.manip << obj.obj->I14 << obj.delem;\ - s << obj.manip << obj.obj->I15 << obj.delem;\ - s << obj.manip << obj.obj->I16; \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_field_list& obj) { \ - s << obj.manip << obj.obj->names[0] << obj.delem;\ - s << obj.manip << obj.obj->names[1] << obj.delem;\ - s << obj.manip << obj.obj->names[2] << obj.delem;\ - s << obj.manip << obj.obj->names[3] << obj.delem;\ - s << obj.manip << obj.obj->names[4] << obj.delem;\ - s << obj.manip << obj.obj->names[5] << obj.delem;\ - s << obj.manip << obj.obj->names[6] << obj.delem;\ - s << obj.manip << obj.obj->names[7] << obj.delem;\ - s << obj.manip << obj.obj->names[8] << obj.delem;\ - s << obj.manip << obj.obj->names[9] << obj.delem;\ - s << obj.manip << obj.obj->names[10] << obj.delem;\ - s << obj.manip << obj.obj->names[11] << obj.delem;\ - s << obj.manip << obj.obj->names[12] << obj.delem;\ - s << obj.manip << obj.obj->names[13] << obj.delem;\ - s << obj.manip << obj.obj->names[14] << obj.delem;\ - s << obj.manip << obj.obj->names[15]; \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_equal_list& obj) { \ - s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1 << obj.delem;\ - s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2 << obj.delem;\ - s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3 << obj.delem;\ - s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4 << obj.delem;\ - s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5 << obj.delem;\ - s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6 << obj.delem;\ - s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->I7 << obj.delem;\ - s << obj.obj->names[7] << obj.comp << obj.manip << obj.obj->I8 << obj.delem;\ - s << obj.obj->names[8] << obj.comp << obj.manip << obj.obj->I9 << obj.delem;\ - s << obj.obj->names[9] << obj.comp << obj.manip << obj.obj->I10 << obj.delem;\ - s << obj.obj->names[10] << obj.comp << obj.manip << obj.obj->I11 << obj.delem;\ - s << obj.obj->names[11] << obj.comp << obj.manip << obj.obj->I12 << obj.delem;\ - s << obj.obj->names[12] << obj.comp << obj.manip << obj.obj->I13 << obj.delem;\ - s << obj.obj->names[13] << obj.comp << obj.manip << obj.obj->I14 << obj.delem;\ - s << obj.obj->names[14] << obj.comp << obj.manip << obj.obj->I15 << obj.delem;\ - s << obj.obj->names[15] << obj.comp << obj.manip << obj.obj->I16; \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_cus_value_list& obj) { \ - bool before = false; \ - if ((*obj.include)[0]) { \ - s << obj.manip << obj.obj->I1;\ - before = true; \ - } \ - if ((*obj.include)[1]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I2;\ - before = true; \ - } \ - if ((*obj.include)[2]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I3;\ - before = true; \ - } \ - if ((*obj.include)[3]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I4;\ - before = true; \ - } \ - if ((*obj.include)[4]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I5;\ - before = true; \ - } \ - if ((*obj.include)[5]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I6;\ - before = true; \ - } \ - if ((*obj.include)[6]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I7;\ - before = true; \ - } \ - if ((*obj.include)[7]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I8;\ - before = true; \ - } \ - if ((*obj.include)[8]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I9;\ - before = true; \ - } \ - if ((*obj.include)[9]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I10;\ - before = true; \ - } \ - if ((*obj.include)[10]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I11;\ - before = true; \ - } \ - if ((*obj.include)[11]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I12;\ - before = true; \ - } \ - if ((*obj.include)[12]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I13;\ - before = true; \ - } \ - if ((*obj.include)[13]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I14;\ - before = true; \ - } \ - if ((*obj.include)[14]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I15;\ - before = true; \ - } \ - if ((*obj.include)[15]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I16;\ - } \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_cus_field_list& obj) { \ - bool before = false; \ - if ((*obj.include)[0]) { \ - s << obj.manip << obj.obj->names[0];\ - before = true; \ - } \ - if ((*obj.include)[1]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[1];\ - before = true; \ - } \ - if ((*obj.include)[2]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[2];\ - before = true; \ - } \ - if ((*obj.include)[3]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[3];\ - before = true; \ - } \ - if ((*obj.include)[4]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[4];\ - before = true; \ - } \ - if ((*obj.include)[5]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[5];\ - before = true; \ - } \ - if ((*obj.include)[6]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[6];\ - before = true; \ - } \ - if ((*obj.include)[7]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[7];\ - before = true; \ - } \ - if ((*obj.include)[8]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[8];\ - before = true; \ - } \ - if ((*obj.include)[9]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[9];\ - before = true; \ - } \ - if ((*obj.include)[10]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[10];\ - before = true; \ - } \ - if ((*obj.include)[11]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[11];\ - before = true; \ - } \ - if ((*obj.include)[12]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[12];\ - before = true; \ - } \ - if ((*obj.include)[13]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[13];\ - before = true; \ - } \ - if ((*obj.include)[14]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[14];\ - before = true; \ - } \ - if ((*obj.include)[15]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[15];\ - } \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_cus_equal_list& obj) { \ - bool before = false; \ - if ((*obj.include)[0]) { \ - s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1;\ - before = true; \ - } \ - if ((*obj.include)[1]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2;\ - before = true; \ - } \ - if ((*obj.include)[2]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3;\ - before = true; \ - } \ - if ((*obj.include)[3]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4;\ - before = true; \ - } \ - if ((*obj.include)[4]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5;\ - before = true; \ - } \ - if ((*obj.include)[5]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6;\ - before = true; \ - } \ - if ((*obj.include)[6]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->I7;\ - before = true; \ - } \ - if ((*obj.include)[7]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[7] << obj.comp << obj.manip << obj.obj->I8;\ - before = true; \ - } \ - if ((*obj.include)[8]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[8] << obj.comp << obj.manip << obj.obj->I9;\ - before = true; \ - } \ - if ((*obj.include)[9]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[9] << obj.comp << obj.manip << obj.obj->I10;\ - before = true; \ - } \ - if ((*obj.include)[10]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[10] << obj.comp << obj.manip << obj.obj->I11;\ - before = true; \ - } \ - if ((*obj.include)[11]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[11] << obj.comp << obj.manip << obj.obj->I12;\ - before = true; \ - } \ - if ((*obj.include)[12]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[12] << obj.comp << obj.manip << obj.obj->I13;\ - before = true; \ - } \ - if ((*obj.include)[13]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[13] << obj.comp << obj.manip << obj.obj->I14;\ - before = true; \ - } \ - if ((*obj.include)[14]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[14] << obj.comp << obj.manip << obj.obj->I15;\ - before = true; \ - } \ - if ((*obj.include)[15]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[15] << obj.comp << obj.manip << obj.obj->I16;\ - } \ - return s; \ - } \ - template \ - inline NAME##_value_list NAME::value_list(mysqlpp::cchar *d, Manip m) const { \ - return NAME##_value_list (this, d, m); \ - } \ - template \ - inline NAME##_field_list NAME::field_list(mysqlpp::cchar *d, Manip m) const { \ - return NAME##_field_list (this, d, m); \ - } \ - template \ - inline NAME##_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) const { \ - return NAME##_equal_list (this, d, c, m); \ - } \ - template \ - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16) const {\ - return NAME##_cus_value_list (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16); \ - } \ - template \ - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16) const { \ - return NAME##_cus_field_list (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16); \ - } \ - template \ - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m,\ - bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16) const { \ - return NAME##_cus_equal_list (this, d, c, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16); \ - } \ - template \ - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16) const { \ - return NAME##_cus_value_list (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16); \ - } \ - template \ - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16) const {\ - return NAME##_cus_field_list (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16); \ - } \ - template \ - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16) const { \ - return NAME##_cus_equal_list (this, d, c, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16); \ - } \ - template \ - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m,\ - std::vector *i) const {\ - return NAME##_cus_value_list (this, d, m, i);\ - }\ - template \ - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m,\ - std::vector *i) const {\ - return NAME##_cus_field_list (this, d, m, i);\ - }\ - template \ - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m,\ - std::vector *i) const {\ - return NAME##_cus_equal_list (this, d, c, m, i);\ - }\ - template \ - inline NAME##_cus_value_list \ - NAME::value_list(mysqlpp::cchar *d, Manip m, mysqlpp::sql_cmp_type /*sc*/) const {\ - sql_compare_type_def_##CMP (NAME, value, NUM);\ - }\ - template \ - inline NAME##_cus_field_list \ - NAME::field_list(mysqlpp::cchar *d, Manip m, mysqlpp::sql_cmp_type /*sc*/) const {\ - sql_compare_type_def_##CMP (NAME, field, NUM);\ - }\ - template \ - inline NAME##_cus_equal_list \ - NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, mysqlpp::sql_cmp_type /*sc*/) const {\ - sql_compare_type_defe_##CMP (NAME, equal, NUM);\ - }\ - template \ - void populate_##NAME (NAME *s, const mysqlpp::Row &row) { \ - s->I1 = static_cast(row.at(O1));\ - s->I2 = static_cast(row.at(O2));\ - s->I3 = static_cast(row.at(O3));\ - s->I4 = static_cast(row.at(O4));\ - s->I5 = static_cast(row.at(O5));\ - s->I6 = static_cast(row.at(O6));\ - s->I7 = static_cast(row.at(O7));\ - s->I8 = static_cast(row.at(O8));\ - s->I9 = static_cast(row.at(O9));\ - s->I10 = static_cast(row.at(O10));\ - s->I11 = static_cast(row.at(O11));\ - s->I12 = static_cast(row.at(O12));\ - s->I13 = static_cast(row.at(O13));\ - s->I14 = static_cast(row.at(O14));\ - s->I15 = static_cast(row.at(O15));\ - s->I16 = static_cast(row.at(O16));\ - } \ - inline NAME::NAME (const mysqlpp::Row &row) \ - {populate_##NAME(this, row);}\ - inline void NAME::set (const mysqlpp::Row &row)\ - {populate_##NAME(this, row);}\ - sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, I11, I12, I13, I14, I15, I16, 0, 0, 0, 0, 0, 0, 0, 0, 0 ) - -#define sql_create_basic_16(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16) \ - sql_create_basic_c_order_16(NAME, CMP, CONTR, T1, I1, 0, T2, I2, 1, T3, I3, 2, T4, I4, 3, T5, I5, 4, T6, I6, 5, T7, I7, 6, T8, I8, 7, T9, I9, 8, T10, I10, 9, T11, I11, 10, T12, I12, 11, T13, I13, 12, T14, I14, 13, T15, I15, 14, T16, I16, 15) - -#define sql_create_16(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16) \ - sql_create_complete_16(NAME, CMP, CONTR, T1, I1, #I1, 0, T2, I2, #I2, 1, T3, I3, #I3, 2, T4, I4, #I4, 3, T5, I5, #I5, 4, T6, I6, #I6, 5, T7, I7, #I7, 6, T8, I8, #I8, 7, T9, I9, #I9, 8, T10, I10, #I10, 9, T11, I11, #I11, 10, T12, I12, #I12, 11, T13, I13, #I13, 12, T14, I14, #I14, 13, T15, I15, #I15, 14, T16, I16, #I16, 15) \ - -#define sql_create_c_order_16(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6, T7, I7, O7, T8, I8, O8, T9, I9, O9, T10, I10, O10, T11, I11, O11, T12, I12, O12, T13, I13, O13, T14, I14, O14, T15, I15, O15, T16, I16, O16) \ - sql_create_complete_16(NAME, CMP, CONTR, T1, I1, #I1, O1, T2, I2, #I2, O2, T3, I3, #I3, O3, T4, I4, #I4, O4, T5, I5, #I5, O5, T6, I6, #I6, O6, T7, I7, #I7, O7, T8, I8, #I8, O8, T9, I9, #I9, O9, T10, I10, #I10, O10, T11, I11, #I11, O11, T12, I12, #I12, O12, T13, I13, #I13, O13, T14, I14, #I14, O14, T15, I15, #I15, O15, T16, I16, #I16, O16) - -#define sql_create_c_names_16(NAME, CMP, CONTR, T1, I1, N1, T2, I2, N2, T3, I3, N3, T4, I4, N4, T5, I5, N5, T6, I6, N6, T7, I7, N7, T8, I8, N8, T9, I9, N9, T10, I10, N10, T11, I11, N11, T12, I12, N12, T13, I13, N13, T14, I14, N14, T15, I15, N15, T16, I16, N16) \ - sql_create_complete_16(NAME, CMP, CONTR, T1, I1, N1, 0, T2, I2, N2, 1, T3, I3, N3, 2, T4, I4, N4, 3, T5, I5, N5, 4, T6, I6, N6, 5, T7, I7, N7, 6, T8, I8, N8, 7, T9, I9, N9, 8, T10, I10, N10, 9, T11, I11, N11, 10, T12, I12, N12, 11, T13, I13, N13, 12, T14, I14, N14, 13, T15, I15, N15, 14, T16, I16, N16, 15) - -// --------------------------------------------------- -// End Create 16 -// --------------------------------------------------- - -// --------------------------------------------------- -// Begin Create 17 -// --------------------------------------------------- -#define sql_create_basic_c_order_17(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6, T7, I7, O7, T8, I8, O8, T9, I9, O9, T10, I10, O10, T11, I11, O11, T12, I12, O12, T13, I13, O13, T14, I14, O14, T15, I15, O15, T16, I16, O16, T17, I17, O17)\ - struct NAME; \ - template int sql_compare_##NAME (const NAME &, const NAME &);\ - struct NAME { \ - T1 I1;\ - T2 I2;\ - T3 I3;\ - T4 I4;\ - T5 I5;\ - T6 I6;\ - T7 I7;\ - T8 I8;\ - T9 I9;\ - T10 I10;\ - T11 I11;\ - T12 I12;\ - T13 I13;\ - T14 I14;\ - T15 I15;\ - T16 I16;\ - T17 I17; \ - NAME () {} \ - NAME (const mysqlpp::Row &row);\ - sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\ - }; \ - template \ - void populate_##NAME (NAME *s, const mysqlpp::Row &row) { \ - s->I1 = static_cast(row.at(O1));\ - s->I2 = static_cast(row.at(O2));\ - s->I3 = static_cast(row.at(O3));\ - s->I4 = static_cast(row.at(O4));\ - s->I5 = static_cast(row.at(O5));\ - s->I6 = static_cast(row.at(O6));\ - s->I7 = static_cast(row.at(O7));\ - s->I8 = static_cast(row.at(O8));\ - s->I9 = static_cast(row.at(O9));\ - s->I10 = static_cast(row.at(O10));\ - s->I11 = static_cast(row.at(O11));\ - s->I12 = static_cast(row.at(O12));\ - s->I13 = static_cast(row.at(O13));\ - s->I14 = static_cast(row.at(O14));\ - s->I15 = static_cast(row.at(O15));\ - s->I16 = static_cast(row.at(O16));\ - s->I17 = static_cast(row.at(O17)); \ - } \ - inline NAME::NAME (const mysqlpp::Row &row) \ - {populate_##NAME(this, row);} \ - sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, I11, I12, I13, I14, I15, I16, I17, 0, 0, 0, 0, 0, 0, 0, 0 ) - -#define sql_create_complete_17(NAME, CMP, CONTR, T1, I1, N1, O1, T2, I2, N2, O2, T3, I3, N3, O3, T4, I4, N4, O4, T5, I5, N5, O5, T6, I6, N6, O6, T7, I7, N7, O7, T8, I8, N8, O8, T9, I9, N9, O9, T10, I10, N10, O10, T11, I11, N11, O11, T12, I12, N12, O12, T13, I13, N13, O13, T14, I14, N14, O14, T15, I15, N15, O15, T16, I16, N16, O16, T17, I17, N17, O17) \ - struct NAME; \ - enum NAME##_enum { \ - NAME##_##I1,\ - NAME##_##I2,\ - NAME##_##I3,\ - NAME##_##I4,\ - NAME##_##I5,\ - NAME##_##I6,\ - NAME##_##I7,\ - NAME##_##I8,\ - NAME##_##I9,\ - NAME##_##I10,\ - NAME##_##I11,\ - NAME##_##I12,\ - NAME##_##I13,\ - NAME##_##I14,\ - NAME##_##I15,\ - NAME##_##I16,\ - NAME##_##I17 \ - ,NAME##_NULL \ - }; \ - template \ - class NAME##_value_list { \ - /*friend std::ostream& operator << <> (std::ostream&, const NAME##_value_list&); */\ - public: \ - const NAME *obj;\ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - NAME##_value_list (const NAME *o, mysqlpp::cchar *d, Manip m) \ - : obj(o), delem(d), manip(m) {} \ - };\ - template \ - class NAME##_##field_list {\ - /* friend std::ostream& operator << <> (std::ostream&, const NAME##_field_list&); */\ - public: \ - const NAME *obj; \ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - NAME##_field_list (const NAME *o, mysqlpp::cchar *d, Manip m) \ - : obj(o), delem(d), manip(m) {} \ - };\ - template \ - class NAME##_equal_list { \ - /* friend std::ostream& operator << <> (std::ostream&, const NAME##_equal_list&); */\ - public: \ - const NAME *obj;\ - mysqlpp::cchar *delem;\ - mysqlpp::cchar *comp;\ - Manip manip;\ - public: \ - NAME##_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) \ - : obj(o), delem(d), comp(c), manip(m) {}\ - };\ - template \ - class NAME##_cus_value_list {\ - /* friend std::ostream& operator << <> (std::ostream&, \ - const NAME##_cus_value_list&); */\ - public:\ - const NAME *obj;\ - std::vector *include;\ - bool del_vector;\ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - ~NAME##_cus_value_list () {if (del_vector) delete include;} \ - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17);\ - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17); \ - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m ,std::vector* i)\ - : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\ - };\ - template \ - class NAME##_cus_field_list { \ - /* friend std::ostream& operator << <> (std::ostream&, \ - const NAME##_cus_field_list&); */\ - public:\ - const NAME *obj; \ - std::vector *include; \ - bool del_vector; \ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - ~NAME##_cus_field_list () {if (del_vector) delete include;} \ - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17); \ - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17); \ - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, std::vector *i) \ - : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\ - };\ - template \ - class NAME##_cus_equal_list {\ - /* friend std::ostream& operator << <> (std::ostream&, \ - const NAME##_cus_equal_list&); */\ - public:\ - const NAME *obj;\ - std::vector *include;\ - bool del_vector;\ - mysqlpp::cchar *delem;\ - mysqlpp::cchar *comp;\ - Manip manip;\ - public:\ - ~NAME##_##cus_equal_list () {if (del_vector) delete include;}\ - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17); \ - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17); \ - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, std::vector *i) \ - : obj(o), include(i), del_vector(false), delem(d), comp(c), manip(m) {}\ - };\ - template int sql_compare_##NAME (const NAME &, const NAME &);\ - struct NAME { \ - T1 I1;\ - T2 I2;\ - T3 I3;\ - T4 I4;\ - T5 I5;\ - T6 I6;\ - T7 I7;\ - T8 I8;\ - T9 I9;\ - T10 I10;\ - T11 I11;\ - T12 I12;\ - T13 I13;\ - T14 I14;\ - T15 I15;\ - T16 I16;\ - T17 I17; \ - NAME () {} \ - NAME (const mysqlpp::Row &row);\ - void set (const mysqlpp::Row &row);\ - sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\ - sql_construct_define_##CONTR(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\ - static const char *names[];\ - static const char *_table;\ - static const char *& table() {return _table;}\ - NAME##_value_list value_list() const {\ - return value_list(",", mysqlpp::quote);}\ - NAME##_value_list value_list(mysqlpp::cchar *d) const {\ - return value_list(d, mysqlpp::quote);}\ - template \ - NAME##_value_list value_list(mysqlpp::cchar *d, Manip m) const; \ - NAME##_field_list field_list() const {\ - return field_list(",", mysqlpp::do_nothing);}\ - NAME##_field_list field_list(mysqlpp::cchar *d) const {\ - return field_list(d, mysqlpp::do_nothing);}\ - template \ - NAME##_field_list field_list(mysqlpp::cchar *d, Manip m) const; \ - NAME##_equal_list equal_list(mysqlpp::cchar *d = ",", \ - mysqlpp::cchar *c = " = ") const{\ - return equal_list(d, c, mysqlpp::quote);}\ - template \ - NAME##_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) const; \ - /* cus_data */\ - NAME##_cus_value_list value_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false) const {\ - return value_list(",", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17);\ - }\ - NAME##_cus_value_list value_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL) const {\ - return value_list(",", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17);\ - }\ - NAME##_cus_value_list value_list(std::vector *i) const {\ - return value_list(",", mysqlpp::quote, i);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::sql_cmp_type sc) const {\ - return value_list(",", mysqlpp::quote, sc);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false) const {\ - return value_list(d, mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL) const {\ - return value_list(d, mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, \ - std::vector *i) const {\ - return value_list(d, mysqlpp::quote, i);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, \ - mysqlpp::sql_cmp_type sc) const {\ - return value_list(d, mysqlpp::quote, sc);\ - }\ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false) const; \ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL) const; \ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m, \ - std::vector *i) const;\ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m, \ - mysqlpp::sql_cmp_type sc) const;\ - /* cus field */\ - NAME##_cus_field_list field_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false) const {\ - return field_list(",", mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17);\ - }\ - NAME##_cus_field_list field_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL) const {\ - return field_list(",", mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17);\ - }\ - NAME##_cus_field_list field_list(std::vector *i) const {\ - return field_list(",", mysqlpp::do_nothing, i);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::sql_cmp_type sc) const\ - {\ - return field_list(",", mysqlpp::do_nothing, sc);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, \ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false) const {\ - return field_list(d, mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL) const {\ - return field_list(d, mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, \ - std::vector *i) const {\ - return field_list(d, mysqlpp::do_nothing, i);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, \ - mysqlpp::sql_cmp_type sc) const {\ - return field_list(d, mysqlpp::do_nothing, sc);\ - }\ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false) const; \ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL) const; \ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m,\ - std::vector *i) const;\ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m, \ - mysqlpp::sql_cmp_type sc) const;\ - /* cus equal */\ - NAME##_cus_equal_list equal_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false) const {\ - return equal_list(",", " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17);\ - }\ - NAME##_cus_equal_list equal_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL) const {\ - return equal_list(",", " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17);\ - }\ - NAME##_cus_equal_list equal_list(std::vector *i) const {\ - return equal_list(",", " = ", mysqlpp::quote, i);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::sql_cmp_type sc) const {\ - return equal_list(",", " = ", mysqlpp::quote, sc);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false) const {\ - return equal_list(d, " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL) const {\ - return equal_list(d, " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, \ - std::vector *i) const {\ - return equal_list(d, " = ", mysqlpp::quote, i);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, \ - mysqlpp::sql_cmp_type sc) const {\ - return equal_list(d, " = ", mysqlpp::quote, sc);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false) const {\ - return equal_list(d, c, mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL) const {\ - return equal_list(d, c, mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - std::vector *i) const {\ - return equal_list(d, c, mysqlpp::quote, i);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - mysqlpp::sql_cmp_type sc) const {\ - return equal_list(d, c, mysqlpp::quote, sc);\ - }\ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false) const; \ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL) const; \ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - std::vector *i) const;\ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - mysqlpp::sql_cmp_type sc) const;\ - }; \ - MYSQLPP_SSQLS_EXPAND(\ - const char *NAME::names[] = { \ - N1 ,\ - N2 ,\ - N3 ,\ - N4 ,\ - N5 ,\ - N6 ,\ - N7 ,\ - N8 ,\ - N9 ,\ - N10 ,\ - N11 ,\ - N12 ,\ - N13 ,\ - N14 ,\ - N15 ,\ - N16 ,\ - N17 \ - }; \ - const char *NAME::_table = #NAME ;\ - )\ - template \ - NAME##_cus_value_list::NAME##_cus_value_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17) \ - { \ - delem = d;\ - manip = m;\ - del_vector = true;\ - obj = o; \ - include = new std::vector(17, false);\ - if (i1) (*include)[0]=true;\ - if (i2) (*include)[1]=true;\ - if (i3) (*include)[2]=true;\ - if (i4) (*include)[3]=true;\ - if (i5) (*include)[4]=true;\ - if (i6) (*include)[5]=true;\ - if (i7) (*include)[6]=true;\ - if (i8) (*include)[7]=true;\ - if (i9) (*include)[8]=true;\ - if (i10) (*include)[9]=true;\ - if (i11) (*include)[10]=true;\ - if (i12) (*include)[11]=true;\ - if (i13) (*include)[12]=true;\ - if (i14) (*include)[13]=true;\ - if (i15) (*include)[14]=true;\ - if (i16) (*include)[15]=true;\ - if (i17) (*include)[16]=true;\ - } \ - template \ - NAME##_cus_value_list::NAME##_cus_value_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17) { \ - delem = d;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(17, false); \ - if (i1 == NAME##_NULL) return;\ - (*include)[i1]=true;\ - if (i2 == NAME##_NULL) return;\ - (*include)[i2]=true;\ - if (i3 == NAME##_NULL) return;\ - (*include)[i3]=true;\ - if (i4 == NAME##_NULL) return;\ - (*include)[i4]=true;\ - if (i5 == NAME##_NULL) return;\ - (*include)[i5]=true;\ - if (i6 == NAME##_NULL) return;\ - (*include)[i6]=true;\ - if (i7 == NAME##_NULL) return;\ - (*include)[i7]=true;\ - if (i8 == NAME##_NULL) return;\ - (*include)[i8]=true;\ - if (i9 == NAME##_NULL) return;\ - (*include)[i9]=true;\ - if (i10 == NAME##_NULL) return;\ - (*include)[i10]=true;\ - if (i11 == NAME##_NULL) return;\ - (*include)[i11]=true;\ - if (i12 == NAME##_NULL) return;\ - (*include)[i12]=true;\ - if (i13 == NAME##_NULL) return;\ - (*include)[i13]=true;\ - if (i14 == NAME##_NULL) return;\ - (*include)[i14]=true;\ - if (i15 == NAME##_NULL) return;\ - (*include)[i15]=true;\ - if (i16 == NAME##_NULL) return;\ - (*include)[i16]=true;\ - if (i17 == NAME##_NULL) return;\ - (*include)[i17]=true;\ - }\ - template \ - NAME##_cus_field_list::NAME##_cus_field_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17) {\ - delem = d;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(17, false); \ - if (i1) (*include)[0]=true;\ - if (i2) (*include)[1]=true;\ - if (i3) (*include)[2]=true;\ - if (i4) (*include)[3]=true;\ - if (i5) (*include)[4]=true;\ - if (i6) (*include)[5]=true;\ - if (i7) (*include)[6]=true;\ - if (i8) (*include)[7]=true;\ - if (i9) (*include)[8]=true;\ - if (i10) (*include)[9]=true;\ - if (i11) (*include)[10]=true;\ - if (i12) (*include)[11]=true;\ - if (i13) (*include)[12]=true;\ - if (i14) (*include)[13]=true;\ - if (i15) (*include)[14]=true;\ - if (i16) (*include)[15]=true;\ - if (i17) (*include)[16]=true;\ - } \ - template \ - NAME##_cus_field_list::NAME##_cus_field_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17) { \ - delem = d;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(17, false); \ - if (i1 == NAME##_NULL) return;\ - (*include)[i1]=true;\ - if (i2 == NAME##_NULL) return;\ - (*include)[i2]=true;\ - if (i3 == NAME##_NULL) return;\ - (*include)[i3]=true;\ - if (i4 == NAME##_NULL) return;\ - (*include)[i4]=true;\ - if (i5 == NAME##_NULL) return;\ - (*include)[i5]=true;\ - if (i6 == NAME##_NULL) return;\ - (*include)[i6]=true;\ - if (i7 == NAME##_NULL) return;\ - (*include)[i7]=true;\ - if (i8 == NAME##_NULL) return;\ - (*include)[i8]=true;\ - if (i9 == NAME##_NULL) return;\ - (*include)[i9]=true;\ - if (i10 == NAME##_NULL) return;\ - (*include)[i10]=true;\ - if (i11 == NAME##_NULL) return;\ - (*include)[i11]=true;\ - if (i12 == NAME##_NULL) return;\ - (*include)[i12]=true;\ - if (i13 == NAME##_NULL) return;\ - (*include)[i13]=true;\ - if (i14 == NAME##_NULL) return;\ - (*include)[i14]=true;\ - if (i15 == NAME##_NULL) return;\ - (*include)[i15]=true;\ - if (i16 == NAME##_NULL) return;\ - (*include)[i16]=true;\ - if (i17 == NAME##_NULL) return;\ - (*include)[i17]=true;\ - }\ - template \ - NAME##_cus_equal_list::NAME##_cus_equal_list\ - (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17) { \ - delem = d;\ - comp = c;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(17, false); \ - if (i1) (*include)[0]=true;\ - if (i2) (*include)[1]=true;\ - if (i3) (*include)[2]=true;\ - if (i4) (*include)[3]=true;\ - if (i5) (*include)[4]=true;\ - if (i6) (*include)[5]=true;\ - if (i7) (*include)[6]=true;\ - if (i8) (*include)[7]=true;\ - if (i9) (*include)[8]=true;\ - if (i10) (*include)[9]=true;\ - if (i11) (*include)[10]=true;\ - if (i12) (*include)[11]=true;\ - if (i13) (*include)[12]=true;\ - if (i14) (*include)[13]=true;\ - if (i15) (*include)[14]=true;\ - if (i16) (*include)[15]=true;\ - if (i17) (*include)[16]=true;\ - } \ - template \ - NAME##_cus_equal_list::NAME##_cus_equal_list\ - (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17) { \ - delem = d;\ - comp = c;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(17, false); \ - if (i1 == NAME##_NULL) return;\ - (*include)[i1]=true;\ - if (i2 == NAME##_NULL) return;\ - (*include)[i2]=true;\ - if (i3 == NAME##_NULL) return;\ - (*include)[i3]=true;\ - if (i4 == NAME##_NULL) return;\ - (*include)[i4]=true;\ - if (i5 == NAME##_NULL) return;\ - (*include)[i5]=true;\ - if (i6 == NAME##_NULL) return;\ - (*include)[i6]=true;\ - if (i7 == NAME##_NULL) return;\ - (*include)[i7]=true;\ - if (i8 == NAME##_NULL) return;\ - (*include)[i8]=true;\ - if (i9 == NAME##_NULL) return;\ - (*include)[i9]=true;\ - if (i10 == NAME##_NULL) return;\ - (*include)[i10]=true;\ - if (i11 == NAME##_NULL) return;\ - (*include)[i11]=true;\ - if (i12 == NAME##_NULL) return;\ - (*include)[i12]=true;\ - if (i13 == NAME##_NULL) return;\ - (*include)[i13]=true;\ - if (i14 == NAME##_NULL) return;\ - (*include)[i14]=true;\ - if (i15 == NAME##_NULL) return;\ - (*include)[i15]=true;\ - if (i16 == NAME##_NULL) return;\ - (*include)[i16]=true;\ - if (i17 == NAME##_NULL) return;\ - (*include)[i17]=true;\ - }\ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_value_list& obj) { \ - s << obj.manip << obj.obj->I1 << obj.delem;\ - s << obj.manip << obj.obj->I2 << obj.delem;\ - s << obj.manip << obj.obj->I3 << obj.delem;\ - s << obj.manip << obj.obj->I4 << obj.delem;\ - s << obj.manip << obj.obj->I5 << obj.delem;\ - s << obj.manip << obj.obj->I6 << obj.delem;\ - s << obj.manip << obj.obj->I7 << obj.delem;\ - s << obj.manip << obj.obj->I8 << obj.delem;\ - s << obj.manip << obj.obj->I9 << obj.delem;\ - s << obj.manip << obj.obj->I10 << obj.delem;\ - s << obj.manip << obj.obj->I11 << obj.delem;\ - s << obj.manip << obj.obj->I12 << obj.delem;\ - s << obj.manip << obj.obj->I13 << obj.delem;\ - s << obj.manip << obj.obj->I14 << obj.delem;\ - s << obj.manip << obj.obj->I15 << obj.delem;\ - s << obj.manip << obj.obj->I16 << obj.delem;\ - s << obj.manip << obj.obj->I17; \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_field_list& obj) { \ - s << obj.manip << obj.obj->names[0] << obj.delem;\ - s << obj.manip << obj.obj->names[1] << obj.delem;\ - s << obj.manip << obj.obj->names[2] << obj.delem;\ - s << obj.manip << obj.obj->names[3] << obj.delem;\ - s << obj.manip << obj.obj->names[4] << obj.delem;\ - s << obj.manip << obj.obj->names[5] << obj.delem;\ - s << obj.manip << obj.obj->names[6] << obj.delem;\ - s << obj.manip << obj.obj->names[7] << obj.delem;\ - s << obj.manip << obj.obj->names[8] << obj.delem;\ - s << obj.manip << obj.obj->names[9] << obj.delem;\ - s << obj.manip << obj.obj->names[10] << obj.delem;\ - s << obj.manip << obj.obj->names[11] << obj.delem;\ - s << obj.manip << obj.obj->names[12] << obj.delem;\ - s << obj.manip << obj.obj->names[13] << obj.delem;\ - s << obj.manip << obj.obj->names[14] << obj.delem;\ - s << obj.manip << obj.obj->names[15] << obj.delem;\ - s << obj.manip << obj.obj->names[16]; \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_equal_list& obj) { \ - s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1 << obj.delem;\ - s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2 << obj.delem;\ - s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3 << obj.delem;\ - s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4 << obj.delem;\ - s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5 << obj.delem;\ - s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6 << obj.delem;\ - s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->I7 << obj.delem;\ - s << obj.obj->names[7] << obj.comp << obj.manip << obj.obj->I8 << obj.delem;\ - s << obj.obj->names[8] << obj.comp << obj.manip << obj.obj->I9 << obj.delem;\ - s << obj.obj->names[9] << obj.comp << obj.manip << obj.obj->I10 << obj.delem;\ - s << obj.obj->names[10] << obj.comp << obj.manip << obj.obj->I11 << obj.delem;\ - s << obj.obj->names[11] << obj.comp << obj.manip << obj.obj->I12 << obj.delem;\ - s << obj.obj->names[12] << obj.comp << obj.manip << obj.obj->I13 << obj.delem;\ - s << obj.obj->names[13] << obj.comp << obj.manip << obj.obj->I14 << obj.delem;\ - s << obj.obj->names[14] << obj.comp << obj.manip << obj.obj->I15 << obj.delem;\ - s << obj.obj->names[15] << obj.comp << obj.manip << obj.obj->I16 << obj.delem;\ - s << obj.obj->names[16] << obj.comp << obj.manip << obj.obj->I17; \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_cus_value_list& obj) { \ - bool before = false; \ - if ((*obj.include)[0]) { \ - s << obj.manip << obj.obj->I1;\ - before = true; \ - } \ - if ((*obj.include)[1]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I2;\ - before = true; \ - } \ - if ((*obj.include)[2]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I3;\ - before = true; \ - } \ - if ((*obj.include)[3]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I4;\ - before = true; \ - } \ - if ((*obj.include)[4]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I5;\ - before = true; \ - } \ - if ((*obj.include)[5]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I6;\ - before = true; \ - } \ - if ((*obj.include)[6]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I7;\ - before = true; \ - } \ - if ((*obj.include)[7]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I8;\ - before = true; \ - } \ - if ((*obj.include)[8]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I9;\ - before = true; \ - } \ - if ((*obj.include)[9]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I10;\ - before = true; \ - } \ - if ((*obj.include)[10]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I11;\ - before = true; \ - } \ - if ((*obj.include)[11]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I12;\ - before = true; \ - } \ - if ((*obj.include)[12]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I13;\ - before = true; \ - } \ - if ((*obj.include)[13]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I14;\ - before = true; \ - } \ - if ((*obj.include)[14]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I15;\ - before = true; \ - } \ - if ((*obj.include)[15]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I16;\ - before = true; \ - } \ - if ((*obj.include)[16]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I17;\ - } \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_cus_field_list& obj) { \ - bool before = false; \ - if ((*obj.include)[0]) { \ - s << obj.manip << obj.obj->names[0];\ - before = true; \ - } \ - if ((*obj.include)[1]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[1];\ - before = true; \ - } \ - if ((*obj.include)[2]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[2];\ - before = true; \ - } \ - if ((*obj.include)[3]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[3];\ - before = true; \ - } \ - if ((*obj.include)[4]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[4];\ - before = true; \ - } \ - if ((*obj.include)[5]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[5];\ - before = true; \ - } \ - if ((*obj.include)[6]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[6];\ - before = true; \ - } \ - if ((*obj.include)[7]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[7];\ - before = true; \ - } \ - if ((*obj.include)[8]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[8];\ - before = true; \ - } \ - if ((*obj.include)[9]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[9];\ - before = true; \ - } \ - if ((*obj.include)[10]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[10];\ - before = true; \ - } \ - if ((*obj.include)[11]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[11];\ - before = true; \ - } \ - if ((*obj.include)[12]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[12];\ - before = true; \ - } \ - if ((*obj.include)[13]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[13];\ - before = true; \ - } \ - if ((*obj.include)[14]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[14];\ - before = true; \ - } \ - if ((*obj.include)[15]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[15];\ - before = true; \ - } \ - if ((*obj.include)[16]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[16];\ - } \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_cus_equal_list& obj) { \ - bool before = false; \ - if ((*obj.include)[0]) { \ - s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1;\ - before = true; \ - } \ - if ((*obj.include)[1]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2;\ - before = true; \ - } \ - if ((*obj.include)[2]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3;\ - before = true; \ - } \ - if ((*obj.include)[3]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4;\ - before = true; \ - } \ - if ((*obj.include)[4]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5;\ - before = true; \ - } \ - if ((*obj.include)[5]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6;\ - before = true; \ - } \ - if ((*obj.include)[6]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->I7;\ - before = true; \ - } \ - if ((*obj.include)[7]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[7] << obj.comp << obj.manip << obj.obj->I8;\ - before = true; \ - } \ - if ((*obj.include)[8]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[8] << obj.comp << obj.manip << obj.obj->I9;\ - before = true; \ - } \ - if ((*obj.include)[9]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[9] << obj.comp << obj.manip << obj.obj->I10;\ - before = true; \ - } \ - if ((*obj.include)[10]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[10] << obj.comp << obj.manip << obj.obj->I11;\ - before = true; \ - } \ - if ((*obj.include)[11]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[11] << obj.comp << obj.manip << obj.obj->I12;\ - before = true; \ - } \ - if ((*obj.include)[12]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[12] << obj.comp << obj.manip << obj.obj->I13;\ - before = true; \ - } \ - if ((*obj.include)[13]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[13] << obj.comp << obj.manip << obj.obj->I14;\ - before = true; \ - } \ - if ((*obj.include)[14]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[14] << obj.comp << obj.manip << obj.obj->I15;\ - before = true; \ - } \ - if ((*obj.include)[15]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[15] << obj.comp << obj.manip << obj.obj->I16;\ - before = true; \ - } \ - if ((*obj.include)[16]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[16] << obj.comp << obj.manip << obj.obj->I17;\ - } \ - return s; \ - } \ - template \ - inline NAME##_value_list NAME::value_list(mysqlpp::cchar *d, Manip m) const { \ - return NAME##_value_list (this, d, m); \ - } \ - template \ - inline NAME##_field_list NAME::field_list(mysqlpp::cchar *d, Manip m) const { \ - return NAME##_field_list (this, d, m); \ - } \ - template \ - inline NAME##_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) const { \ - return NAME##_equal_list (this, d, c, m); \ - } \ - template \ - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17) const {\ - return NAME##_cus_value_list (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17); \ - } \ - template \ - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17) const { \ - return NAME##_cus_field_list (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17); \ - } \ - template \ - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m,\ - bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17) const { \ - return NAME##_cus_equal_list (this, d, c, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17); \ - } \ - template \ - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17) const { \ - return NAME##_cus_value_list (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17); \ - } \ - template \ - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17) const {\ - return NAME##_cus_field_list (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17); \ - } \ - template \ - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17) const { \ - return NAME##_cus_equal_list (this, d, c, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17); \ - } \ - template \ - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m,\ - std::vector *i) const {\ - return NAME##_cus_value_list (this, d, m, i);\ - }\ - template \ - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m,\ - std::vector *i) const {\ - return NAME##_cus_field_list (this, d, m, i);\ - }\ - template \ - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m,\ - std::vector *i) const {\ - return NAME##_cus_equal_list (this, d, c, m, i);\ - }\ - template \ - inline NAME##_cus_value_list \ - NAME::value_list(mysqlpp::cchar *d, Manip m, mysqlpp::sql_cmp_type /*sc*/) const {\ - sql_compare_type_def_##CMP (NAME, value, NUM);\ - }\ - template \ - inline NAME##_cus_field_list \ - NAME::field_list(mysqlpp::cchar *d, Manip m, mysqlpp::sql_cmp_type /*sc*/) const {\ - sql_compare_type_def_##CMP (NAME, field, NUM);\ - }\ - template \ - inline NAME##_cus_equal_list \ - NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, mysqlpp::sql_cmp_type /*sc*/) const {\ - sql_compare_type_defe_##CMP (NAME, equal, NUM);\ - }\ - template \ - void populate_##NAME (NAME *s, const mysqlpp::Row &row) { \ - s->I1 = static_cast(row.at(O1));\ - s->I2 = static_cast(row.at(O2));\ - s->I3 = static_cast(row.at(O3));\ - s->I4 = static_cast(row.at(O4));\ - s->I5 = static_cast(row.at(O5));\ - s->I6 = static_cast(row.at(O6));\ - s->I7 = static_cast(row.at(O7));\ - s->I8 = static_cast(row.at(O8));\ - s->I9 = static_cast(row.at(O9));\ - s->I10 = static_cast(row.at(O10));\ - s->I11 = static_cast(row.at(O11));\ - s->I12 = static_cast(row.at(O12));\ - s->I13 = static_cast(row.at(O13));\ - s->I14 = static_cast(row.at(O14));\ - s->I15 = static_cast(row.at(O15));\ - s->I16 = static_cast(row.at(O16));\ - s->I17 = static_cast(row.at(O17));\ - } \ - inline NAME::NAME (const mysqlpp::Row &row) \ - {populate_##NAME(this, row);}\ - inline void NAME::set (const mysqlpp::Row &row)\ - {populate_##NAME(this, row);}\ - sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, I11, I12, I13, I14, I15, I16, I17, 0, 0, 0, 0, 0, 0, 0, 0 ) - -#define sql_create_basic_17(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17) \ - sql_create_basic_c_order_17(NAME, CMP, CONTR, T1, I1, 0, T2, I2, 1, T3, I3, 2, T4, I4, 3, T5, I5, 4, T6, I6, 5, T7, I7, 6, T8, I8, 7, T9, I9, 8, T10, I10, 9, T11, I11, 10, T12, I12, 11, T13, I13, 12, T14, I14, 13, T15, I15, 14, T16, I16, 15, T17, I17, 16) - -#define sql_create_17(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17) \ - sql_create_complete_17(NAME, CMP, CONTR, T1, I1, #I1, 0, T2, I2, #I2, 1, T3, I3, #I3, 2, T4, I4, #I4, 3, T5, I5, #I5, 4, T6, I6, #I6, 5, T7, I7, #I7, 6, T8, I8, #I8, 7, T9, I9, #I9, 8, T10, I10, #I10, 9, T11, I11, #I11, 10, T12, I12, #I12, 11, T13, I13, #I13, 12, T14, I14, #I14, 13, T15, I15, #I15, 14, T16, I16, #I16, 15, T17, I17, #I17, 16) \ - -#define sql_create_c_order_17(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6, T7, I7, O7, T8, I8, O8, T9, I9, O9, T10, I10, O10, T11, I11, O11, T12, I12, O12, T13, I13, O13, T14, I14, O14, T15, I15, O15, T16, I16, O16, T17, I17, O17) \ - sql_create_complete_17(NAME, CMP, CONTR, T1, I1, #I1, O1, T2, I2, #I2, O2, T3, I3, #I3, O3, T4, I4, #I4, O4, T5, I5, #I5, O5, T6, I6, #I6, O6, T7, I7, #I7, O7, T8, I8, #I8, O8, T9, I9, #I9, O9, T10, I10, #I10, O10, T11, I11, #I11, O11, T12, I12, #I12, O12, T13, I13, #I13, O13, T14, I14, #I14, O14, T15, I15, #I15, O15, T16, I16, #I16, O16, T17, I17, #I17, O17) - -#define sql_create_c_names_17(NAME, CMP, CONTR, T1, I1, N1, T2, I2, N2, T3, I3, N3, T4, I4, N4, T5, I5, N5, T6, I6, N6, T7, I7, N7, T8, I8, N8, T9, I9, N9, T10, I10, N10, T11, I11, N11, T12, I12, N12, T13, I13, N13, T14, I14, N14, T15, I15, N15, T16, I16, N16, T17, I17, N17) \ - sql_create_complete_17(NAME, CMP, CONTR, T1, I1, N1, 0, T2, I2, N2, 1, T3, I3, N3, 2, T4, I4, N4, 3, T5, I5, N5, 4, T6, I6, N6, 5, T7, I7, N7, 6, T8, I8, N8, 7, T9, I9, N9, 8, T10, I10, N10, 9, T11, I11, N11, 10, T12, I12, N12, 11, T13, I13, N13, 12, T14, I14, N14, 13, T15, I15, N15, 14, T16, I16, N16, 15, T17, I17, N17, 16) - -// --------------------------------------------------- -// End Create 17 -// --------------------------------------------------- - -// --------------------------------------------------- -// Begin Create 18 -// --------------------------------------------------- -#define sql_create_basic_c_order_18(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6, T7, I7, O7, T8, I8, O8, T9, I9, O9, T10, I10, O10, T11, I11, O11, T12, I12, O12, T13, I13, O13, T14, I14, O14, T15, I15, O15, T16, I16, O16, T17, I17, O17, T18, I18, O18)\ - struct NAME; \ - template int sql_compare_##NAME (const NAME &, const NAME &);\ - struct NAME { \ - T1 I1;\ - T2 I2;\ - T3 I3;\ - T4 I4;\ - T5 I5;\ - T6 I6;\ - T7 I7;\ - T8 I8;\ - T9 I9;\ - T10 I10;\ - T11 I11;\ - T12 I12;\ - T13 I13;\ - T14 I14;\ - T15 I15;\ - T16 I16;\ - T17 I17;\ - T18 I18; \ - NAME () {} \ - NAME (const mysqlpp::Row &row);\ - sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\ - }; \ - template \ - void populate_##NAME (NAME *s, const mysqlpp::Row &row) { \ - s->I1 = static_cast(row.at(O1));\ - s->I2 = static_cast(row.at(O2));\ - s->I3 = static_cast(row.at(O3));\ - s->I4 = static_cast(row.at(O4));\ - s->I5 = static_cast(row.at(O5));\ - s->I6 = static_cast(row.at(O6));\ - s->I7 = static_cast(row.at(O7));\ - s->I8 = static_cast(row.at(O8));\ - s->I9 = static_cast(row.at(O9));\ - s->I10 = static_cast(row.at(O10));\ - s->I11 = static_cast(row.at(O11));\ - s->I12 = static_cast(row.at(O12));\ - s->I13 = static_cast(row.at(O13));\ - s->I14 = static_cast(row.at(O14));\ - s->I15 = static_cast(row.at(O15));\ - s->I16 = static_cast(row.at(O16));\ - s->I17 = static_cast(row.at(O17));\ - s->I18 = static_cast(row.at(O18)); \ - } \ - inline NAME::NAME (const mysqlpp::Row &row) \ - {populate_##NAME(this, row);} \ - sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, I11, I12, I13, I14, I15, I16, I17, I18, 0, 0, 0, 0, 0, 0, 0 ) - -#define sql_create_complete_18(NAME, CMP, CONTR, T1, I1, N1, O1, T2, I2, N2, O2, T3, I3, N3, O3, T4, I4, N4, O4, T5, I5, N5, O5, T6, I6, N6, O6, T7, I7, N7, O7, T8, I8, N8, O8, T9, I9, N9, O9, T10, I10, N10, O10, T11, I11, N11, O11, T12, I12, N12, O12, T13, I13, N13, O13, T14, I14, N14, O14, T15, I15, N15, O15, T16, I16, N16, O16, T17, I17, N17, O17, T18, I18, N18, O18) \ - struct NAME; \ - enum NAME##_enum { \ - NAME##_##I1,\ - NAME##_##I2,\ - NAME##_##I3,\ - NAME##_##I4,\ - NAME##_##I5,\ - NAME##_##I6,\ - NAME##_##I7,\ - NAME##_##I8,\ - NAME##_##I9,\ - NAME##_##I10,\ - NAME##_##I11,\ - NAME##_##I12,\ - NAME##_##I13,\ - NAME##_##I14,\ - NAME##_##I15,\ - NAME##_##I16,\ - NAME##_##I17,\ - NAME##_##I18 \ - ,NAME##_NULL \ - }; \ - template \ - class NAME##_value_list { \ - /*friend std::ostream& operator << <> (std::ostream&, const NAME##_value_list&); */\ - public: \ - const NAME *obj;\ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - NAME##_value_list (const NAME *o, mysqlpp::cchar *d, Manip m) \ - : obj(o), delem(d), manip(m) {} \ - };\ - template \ - class NAME##_##field_list {\ - /* friend std::ostream& operator << <> (std::ostream&, const NAME##_field_list&); */\ - public: \ - const NAME *obj; \ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - NAME##_field_list (const NAME *o, mysqlpp::cchar *d, Manip m) \ - : obj(o), delem(d), manip(m) {} \ - };\ - template \ - class NAME##_equal_list { \ - /* friend std::ostream& operator << <> (std::ostream&, const NAME##_equal_list&); */\ - public: \ - const NAME *obj;\ - mysqlpp::cchar *delem;\ - mysqlpp::cchar *comp;\ - Manip manip;\ - public: \ - NAME##_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) \ - : obj(o), delem(d), comp(c), manip(m) {}\ - };\ - template \ - class NAME##_cus_value_list {\ - /* friend std::ostream& operator << <> (std::ostream&, \ - const NAME##_cus_value_list&); */\ - public:\ - const NAME *obj;\ - std::vector *include;\ - bool del_vector;\ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - ~NAME##_cus_value_list () {if (del_vector) delete include;} \ - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18);\ - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18); \ - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m ,std::vector* i)\ - : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\ - };\ - template \ - class NAME##_cus_field_list { \ - /* friend std::ostream& operator << <> (std::ostream&, \ - const NAME##_cus_field_list&); */\ - public:\ - const NAME *obj; \ - std::vector *include; \ - bool del_vector; \ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - ~NAME##_cus_field_list () {if (del_vector) delete include;} \ - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18); \ - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18); \ - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, std::vector *i) \ - : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\ - };\ - template \ - class NAME##_cus_equal_list {\ - /* friend std::ostream& operator << <> (std::ostream&, \ - const NAME##_cus_equal_list&); */\ - public:\ - const NAME *obj;\ - std::vector *include;\ - bool del_vector;\ - mysqlpp::cchar *delem;\ - mysqlpp::cchar *comp;\ - Manip manip;\ - public:\ - ~NAME##_##cus_equal_list () {if (del_vector) delete include;}\ - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18); \ - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18); \ - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, std::vector *i) \ - : obj(o), include(i), del_vector(false), delem(d), comp(c), manip(m) {}\ - };\ - template int sql_compare_##NAME (const NAME &, const NAME &);\ - struct NAME { \ - T1 I1;\ - T2 I2;\ - T3 I3;\ - T4 I4;\ - T5 I5;\ - T6 I6;\ - T7 I7;\ - T8 I8;\ - T9 I9;\ - T10 I10;\ - T11 I11;\ - T12 I12;\ - T13 I13;\ - T14 I14;\ - T15 I15;\ - T16 I16;\ - T17 I17;\ - T18 I18; \ - NAME () {} \ - NAME (const mysqlpp::Row &row);\ - void set (const mysqlpp::Row &row);\ - sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\ - sql_construct_define_##CONTR(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\ - static const char *names[];\ - static const char *_table;\ - static const char *& table() {return _table;}\ - NAME##_value_list value_list() const {\ - return value_list(",", mysqlpp::quote);}\ - NAME##_value_list value_list(mysqlpp::cchar *d) const {\ - return value_list(d, mysqlpp::quote);}\ - template \ - NAME##_value_list value_list(mysqlpp::cchar *d, Manip m) const; \ - NAME##_field_list field_list() const {\ - return field_list(",", mysqlpp::do_nothing);}\ - NAME##_field_list field_list(mysqlpp::cchar *d) const {\ - return field_list(d, mysqlpp::do_nothing);}\ - template \ - NAME##_field_list field_list(mysqlpp::cchar *d, Manip m) const; \ - NAME##_equal_list equal_list(mysqlpp::cchar *d = ",", \ - mysqlpp::cchar *c = " = ") const{\ - return equal_list(d, c, mysqlpp::quote);}\ - template \ - NAME##_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) const; \ - /* cus_data */\ - NAME##_cus_value_list value_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false) const {\ - return value_list(",", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18);\ - }\ - NAME##_cus_value_list value_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL) const {\ - return value_list(",", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18);\ - }\ - NAME##_cus_value_list value_list(std::vector *i) const {\ - return value_list(",", mysqlpp::quote, i);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::sql_cmp_type sc) const {\ - return value_list(",", mysqlpp::quote, sc);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false) const {\ - return value_list(d, mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL) const {\ - return value_list(d, mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, \ - std::vector *i) const {\ - return value_list(d, mysqlpp::quote, i);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, \ - mysqlpp::sql_cmp_type sc) const {\ - return value_list(d, mysqlpp::quote, sc);\ - }\ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false) const; \ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL) const; \ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m, \ - std::vector *i) const;\ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m, \ - mysqlpp::sql_cmp_type sc) const;\ - /* cus field */\ - NAME##_cus_field_list field_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false) const {\ - return field_list(",", mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18);\ - }\ - NAME##_cus_field_list field_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL) const {\ - return field_list(",", mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18);\ - }\ - NAME##_cus_field_list field_list(std::vector *i) const {\ - return field_list(",", mysqlpp::do_nothing, i);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::sql_cmp_type sc) const\ - {\ - return field_list(",", mysqlpp::do_nothing, sc);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, \ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false) const {\ - return field_list(d, mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL) const {\ - return field_list(d, mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, \ - std::vector *i) const {\ - return field_list(d, mysqlpp::do_nothing, i);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, \ - mysqlpp::sql_cmp_type sc) const {\ - return field_list(d, mysqlpp::do_nothing, sc);\ - }\ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false) const; \ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL) const; \ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m,\ - std::vector *i) const;\ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m, \ - mysqlpp::sql_cmp_type sc) const;\ - /* cus equal */\ - NAME##_cus_equal_list equal_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false) const {\ - return equal_list(",", " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18);\ - }\ - NAME##_cus_equal_list equal_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL) const {\ - return equal_list(",", " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18);\ - }\ - NAME##_cus_equal_list equal_list(std::vector *i) const {\ - return equal_list(",", " = ", mysqlpp::quote, i);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::sql_cmp_type sc) const {\ - return equal_list(",", " = ", mysqlpp::quote, sc);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false) const {\ - return equal_list(d, " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL) const {\ - return equal_list(d, " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, \ - std::vector *i) const {\ - return equal_list(d, " = ", mysqlpp::quote, i);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, \ - mysqlpp::sql_cmp_type sc) const {\ - return equal_list(d, " = ", mysqlpp::quote, sc);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false) const {\ - return equal_list(d, c, mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL) const {\ - return equal_list(d, c, mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - std::vector *i) const {\ - return equal_list(d, c, mysqlpp::quote, i);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - mysqlpp::sql_cmp_type sc) const {\ - return equal_list(d, c, mysqlpp::quote, sc);\ - }\ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false) const; \ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL) const; \ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - std::vector *i) const;\ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - mysqlpp::sql_cmp_type sc) const;\ - }; \ - MYSQLPP_SSQLS_EXPAND(\ - const char *NAME::names[] = { \ - N1 ,\ - N2 ,\ - N3 ,\ - N4 ,\ - N5 ,\ - N6 ,\ - N7 ,\ - N8 ,\ - N9 ,\ - N10 ,\ - N11 ,\ - N12 ,\ - N13 ,\ - N14 ,\ - N15 ,\ - N16 ,\ - N17 ,\ - N18 \ - }; \ - const char *NAME::_table = #NAME ;\ - )\ - template \ - NAME##_cus_value_list::NAME##_cus_value_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18) \ - { \ - delem = d;\ - manip = m;\ - del_vector = true;\ - obj = o; \ - include = new std::vector(18, false);\ - if (i1) (*include)[0]=true;\ - if (i2) (*include)[1]=true;\ - if (i3) (*include)[2]=true;\ - if (i4) (*include)[3]=true;\ - if (i5) (*include)[4]=true;\ - if (i6) (*include)[5]=true;\ - if (i7) (*include)[6]=true;\ - if (i8) (*include)[7]=true;\ - if (i9) (*include)[8]=true;\ - if (i10) (*include)[9]=true;\ - if (i11) (*include)[10]=true;\ - if (i12) (*include)[11]=true;\ - if (i13) (*include)[12]=true;\ - if (i14) (*include)[13]=true;\ - if (i15) (*include)[14]=true;\ - if (i16) (*include)[15]=true;\ - if (i17) (*include)[16]=true;\ - if (i18) (*include)[17]=true;\ - } \ - template \ - NAME##_cus_value_list::NAME##_cus_value_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18) { \ - delem = d;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(18, false); \ - if (i1 == NAME##_NULL) return;\ - (*include)[i1]=true;\ - if (i2 == NAME##_NULL) return;\ - (*include)[i2]=true;\ - if (i3 == NAME##_NULL) return;\ - (*include)[i3]=true;\ - if (i4 == NAME##_NULL) return;\ - (*include)[i4]=true;\ - if (i5 == NAME##_NULL) return;\ - (*include)[i5]=true;\ - if (i6 == NAME##_NULL) return;\ - (*include)[i6]=true;\ - if (i7 == NAME##_NULL) return;\ - (*include)[i7]=true;\ - if (i8 == NAME##_NULL) return;\ - (*include)[i8]=true;\ - if (i9 == NAME##_NULL) return;\ - (*include)[i9]=true;\ - if (i10 == NAME##_NULL) return;\ - (*include)[i10]=true;\ - if (i11 == NAME##_NULL) return;\ - (*include)[i11]=true;\ - if (i12 == NAME##_NULL) return;\ - (*include)[i12]=true;\ - if (i13 == NAME##_NULL) return;\ - (*include)[i13]=true;\ - if (i14 == NAME##_NULL) return;\ - (*include)[i14]=true;\ - if (i15 == NAME##_NULL) return;\ - (*include)[i15]=true;\ - if (i16 == NAME##_NULL) return;\ - (*include)[i16]=true;\ - if (i17 == NAME##_NULL) return;\ - (*include)[i17]=true;\ - if (i18 == NAME##_NULL) return;\ - (*include)[i18]=true;\ - }\ - template \ - NAME##_cus_field_list::NAME##_cus_field_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18) {\ - delem = d;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(18, false); \ - if (i1) (*include)[0]=true;\ - if (i2) (*include)[1]=true;\ - if (i3) (*include)[2]=true;\ - if (i4) (*include)[3]=true;\ - if (i5) (*include)[4]=true;\ - if (i6) (*include)[5]=true;\ - if (i7) (*include)[6]=true;\ - if (i8) (*include)[7]=true;\ - if (i9) (*include)[8]=true;\ - if (i10) (*include)[9]=true;\ - if (i11) (*include)[10]=true;\ - if (i12) (*include)[11]=true;\ - if (i13) (*include)[12]=true;\ - if (i14) (*include)[13]=true;\ - if (i15) (*include)[14]=true;\ - if (i16) (*include)[15]=true;\ - if (i17) (*include)[16]=true;\ - if (i18) (*include)[17]=true;\ - } \ - template \ - NAME##_cus_field_list::NAME##_cus_field_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18) { \ - delem = d;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(18, false); \ - if (i1 == NAME##_NULL) return;\ - (*include)[i1]=true;\ - if (i2 == NAME##_NULL) return;\ - (*include)[i2]=true;\ - if (i3 == NAME##_NULL) return;\ - (*include)[i3]=true;\ - if (i4 == NAME##_NULL) return;\ - (*include)[i4]=true;\ - if (i5 == NAME##_NULL) return;\ - (*include)[i5]=true;\ - if (i6 == NAME##_NULL) return;\ - (*include)[i6]=true;\ - if (i7 == NAME##_NULL) return;\ - (*include)[i7]=true;\ - if (i8 == NAME##_NULL) return;\ - (*include)[i8]=true;\ - if (i9 == NAME##_NULL) return;\ - (*include)[i9]=true;\ - if (i10 == NAME##_NULL) return;\ - (*include)[i10]=true;\ - if (i11 == NAME##_NULL) return;\ - (*include)[i11]=true;\ - if (i12 == NAME##_NULL) return;\ - (*include)[i12]=true;\ - if (i13 == NAME##_NULL) return;\ - (*include)[i13]=true;\ - if (i14 == NAME##_NULL) return;\ - (*include)[i14]=true;\ - if (i15 == NAME##_NULL) return;\ - (*include)[i15]=true;\ - if (i16 == NAME##_NULL) return;\ - (*include)[i16]=true;\ - if (i17 == NAME##_NULL) return;\ - (*include)[i17]=true;\ - if (i18 == NAME##_NULL) return;\ - (*include)[i18]=true;\ - }\ - template \ - NAME##_cus_equal_list::NAME##_cus_equal_list\ - (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18) { \ - delem = d;\ - comp = c;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(18, false); \ - if (i1) (*include)[0]=true;\ - if (i2) (*include)[1]=true;\ - if (i3) (*include)[2]=true;\ - if (i4) (*include)[3]=true;\ - if (i5) (*include)[4]=true;\ - if (i6) (*include)[5]=true;\ - if (i7) (*include)[6]=true;\ - if (i8) (*include)[7]=true;\ - if (i9) (*include)[8]=true;\ - if (i10) (*include)[9]=true;\ - if (i11) (*include)[10]=true;\ - if (i12) (*include)[11]=true;\ - if (i13) (*include)[12]=true;\ - if (i14) (*include)[13]=true;\ - if (i15) (*include)[14]=true;\ - if (i16) (*include)[15]=true;\ - if (i17) (*include)[16]=true;\ - if (i18) (*include)[17]=true;\ - } \ - template \ - NAME##_cus_equal_list::NAME##_cus_equal_list\ - (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18) { \ - delem = d;\ - comp = c;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(18, false); \ - if (i1 == NAME##_NULL) return;\ - (*include)[i1]=true;\ - if (i2 == NAME##_NULL) return;\ - (*include)[i2]=true;\ - if (i3 == NAME##_NULL) return;\ - (*include)[i3]=true;\ - if (i4 == NAME##_NULL) return;\ - (*include)[i4]=true;\ - if (i5 == NAME##_NULL) return;\ - (*include)[i5]=true;\ - if (i6 == NAME##_NULL) return;\ - (*include)[i6]=true;\ - if (i7 == NAME##_NULL) return;\ - (*include)[i7]=true;\ - if (i8 == NAME##_NULL) return;\ - (*include)[i8]=true;\ - if (i9 == NAME##_NULL) return;\ - (*include)[i9]=true;\ - if (i10 == NAME##_NULL) return;\ - (*include)[i10]=true;\ - if (i11 == NAME##_NULL) return;\ - (*include)[i11]=true;\ - if (i12 == NAME##_NULL) return;\ - (*include)[i12]=true;\ - if (i13 == NAME##_NULL) return;\ - (*include)[i13]=true;\ - if (i14 == NAME##_NULL) return;\ - (*include)[i14]=true;\ - if (i15 == NAME##_NULL) return;\ - (*include)[i15]=true;\ - if (i16 == NAME##_NULL) return;\ - (*include)[i16]=true;\ - if (i17 == NAME##_NULL) return;\ - (*include)[i17]=true;\ - if (i18 == NAME##_NULL) return;\ - (*include)[i18]=true;\ - }\ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_value_list& obj) { \ - s << obj.manip << obj.obj->I1 << obj.delem;\ - s << obj.manip << obj.obj->I2 << obj.delem;\ - s << obj.manip << obj.obj->I3 << obj.delem;\ - s << obj.manip << obj.obj->I4 << obj.delem;\ - s << obj.manip << obj.obj->I5 << obj.delem;\ - s << obj.manip << obj.obj->I6 << obj.delem;\ - s << obj.manip << obj.obj->I7 << obj.delem;\ - s << obj.manip << obj.obj->I8 << obj.delem;\ - s << obj.manip << obj.obj->I9 << obj.delem;\ - s << obj.manip << obj.obj->I10 << obj.delem;\ - s << obj.manip << obj.obj->I11 << obj.delem;\ - s << obj.manip << obj.obj->I12 << obj.delem;\ - s << obj.manip << obj.obj->I13 << obj.delem;\ - s << obj.manip << obj.obj->I14 << obj.delem;\ - s << obj.manip << obj.obj->I15 << obj.delem;\ - s << obj.manip << obj.obj->I16 << obj.delem;\ - s << obj.manip << obj.obj->I17 << obj.delem;\ - s << obj.manip << obj.obj->I18; \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_field_list& obj) { \ - s << obj.manip << obj.obj->names[0] << obj.delem;\ - s << obj.manip << obj.obj->names[1] << obj.delem;\ - s << obj.manip << obj.obj->names[2] << obj.delem;\ - s << obj.manip << obj.obj->names[3] << obj.delem;\ - s << obj.manip << obj.obj->names[4] << obj.delem;\ - s << obj.manip << obj.obj->names[5] << obj.delem;\ - s << obj.manip << obj.obj->names[6] << obj.delem;\ - s << obj.manip << obj.obj->names[7] << obj.delem;\ - s << obj.manip << obj.obj->names[8] << obj.delem;\ - s << obj.manip << obj.obj->names[9] << obj.delem;\ - s << obj.manip << obj.obj->names[10] << obj.delem;\ - s << obj.manip << obj.obj->names[11] << obj.delem;\ - s << obj.manip << obj.obj->names[12] << obj.delem;\ - s << obj.manip << obj.obj->names[13] << obj.delem;\ - s << obj.manip << obj.obj->names[14] << obj.delem;\ - s << obj.manip << obj.obj->names[15] << obj.delem;\ - s << obj.manip << obj.obj->names[16] << obj.delem;\ - s << obj.manip << obj.obj->names[17]; \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_equal_list& obj) { \ - s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1 << obj.delem;\ - s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2 << obj.delem;\ - s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3 << obj.delem;\ - s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4 << obj.delem;\ - s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5 << obj.delem;\ - s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6 << obj.delem;\ - s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->I7 << obj.delem;\ - s << obj.obj->names[7] << obj.comp << obj.manip << obj.obj->I8 << obj.delem;\ - s << obj.obj->names[8] << obj.comp << obj.manip << obj.obj->I9 << obj.delem;\ - s << obj.obj->names[9] << obj.comp << obj.manip << obj.obj->I10 << obj.delem;\ - s << obj.obj->names[10] << obj.comp << obj.manip << obj.obj->I11 << obj.delem;\ - s << obj.obj->names[11] << obj.comp << obj.manip << obj.obj->I12 << obj.delem;\ - s << obj.obj->names[12] << obj.comp << obj.manip << obj.obj->I13 << obj.delem;\ - s << obj.obj->names[13] << obj.comp << obj.manip << obj.obj->I14 << obj.delem;\ - s << obj.obj->names[14] << obj.comp << obj.manip << obj.obj->I15 << obj.delem;\ - s << obj.obj->names[15] << obj.comp << obj.manip << obj.obj->I16 << obj.delem;\ - s << obj.obj->names[16] << obj.comp << obj.manip << obj.obj->I17 << obj.delem;\ - s << obj.obj->names[17] << obj.comp << obj.manip << obj.obj->I18; \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_cus_value_list& obj) { \ - bool before = false; \ - if ((*obj.include)[0]) { \ - s << obj.manip << obj.obj->I1;\ - before = true; \ - } \ - if ((*obj.include)[1]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I2;\ - before = true; \ - } \ - if ((*obj.include)[2]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I3;\ - before = true; \ - } \ - if ((*obj.include)[3]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I4;\ - before = true; \ - } \ - if ((*obj.include)[4]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I5;\ - before = true; \ - } \ - if ((*obj.include)[5]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I6;\ - before = true; \ - } \ - if ((*obj.include)[6]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I7;\ - before = true; \ - } \ - if ((*obj.include)[7]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I8;\ - before = true; \ - } \ - if ((*obj.include)[8]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I9;\ - before = true; \ - } \ - if ((*obj.include)[9]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I10;\ - before = true; \ - } \ - if ((*obj.include)[10]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I11;\ - before = true; \ - } \ - if ((*obj.include)[11]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I12;\ - before = true; \ - } \ - if ((*obj.include)[12]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I13;\ - before = true; \ - } \ - if ((*obj.include)[13]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I14;\ - before = true; \ - } \ - if ((*obj.include)[14]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I15;\ - before = true; \ - } \ - if ((*obj.include)[15]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I16;\ - before = true; \ - } \ - if ((*obj.include)[16]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I17;\ - before = true; \ - } \ - if ((*obj.include)[17]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I18;\ - } \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_cus_field_list& obj) { \ - bool before = false; \ - if ((*obj.include)[0]) { \ - s << obj.manip << obj.obj->names[0];\ - before = true; \ - } \ - if ((*obj.include)[1]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[1];\ - before = true; \ - } \ - if ((*obj.include)[2]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[2];\ - before = true; \ - } \ - if ((*obj.include)[3]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[3];\ - before = true; \ - } \ - if ((*obj.include)[4]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[4];\ - before = true; \ - } \ - if ((*obj.include)[5]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[5];\ - before = true; \ - } \ - if ((*obj.include)[6]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[6];\ - before = true; \ - } \ - if ((*obj.include)[7]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[7];\ - before = true; \ - } \ - if ((*obj.include)[8]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[8];\ - before = true; \ - } \ - if ((*obj.include)[9]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[9];\ - before = true; \ - } \ - if ((*obj.include)[10]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[10];\ - before = true; \ - } \ - if ((*obj.include)[11]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[11];\ - before = true; \ - } \ - if ((*obj.include)[12]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[12];\ - before = true; \ - } \ - if ((*obj.include)[13]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[13];\ - before = true; \ - } \ - if ((*obj.include)[14]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[14];\ - before = true; \ - } \ - if ((*obj.include)[15]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[15];\ - before = true; \ - } \ - if ((*obj.include)[16]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[16];\ - before = true; \ - } \ - if ((*obj.include)[17]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[17];\ - } \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_cus_equal_list& obj) { \ - bool before = false; \ - if ((*obj.include)[0]) { \ - s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1;\ - before = true; \ - } \ - if ((*obj.include)[1]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2;\ - before = true; \ - } \ - if ((*obj.include)[2]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3;\ - before = true; \ - } \ - if ((*obj.include)[3]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4;\ - before = true; \ - } \ - if ((*obj.include)[4]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5;\ - before = true; \ - } \ - if ((*obj.include)[5]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6;\ - before = true; \ - } \ - if ((*obj.include)[6]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->I7;\ - before = true; \ - } \ - if ((*obj.include)[7]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[7] << obj.comp << obj.manip << obj.obj->I8;\ - before = true; \ - } \ - if ((*obj.include)[8]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[8] << obj.comp << obj.manip << obj.obj->I9;\ - before = true; \ - } \ - if ((*obj.include)[9]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[9] << obj.comp << obj.manip << obj.obj->I10;\ - before = true; \ - } \ - if ((*obj.include)[10]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[10] << obj.comp << obj.manip << obj.obj->I11;\ - before = true; \ - } \ - if ((*obj.include)[11]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[11] << obj.comp << obj.manip << obj.obj->I12;\ - before = true; \ - } \ - if ((*obj.include)[12]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[12] << obj.comp << obj.manip << obj.obj->I13;\ - before = true; \ - } \ - if ((*obj.include)[13]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[13] << obj.comp << obj.manip << obj.obj->I14;\ - before = true; \ - } \ - if ((*obj.include)[14]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[14] << obj.comp << obj.manip << obj.obj->I15;\ - before = true; \ - } \ - if ((*obj.include)[15]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[15] << obj.comp << obj.manip << obj.obj->I16;\ - before = true; \ - } \ - if ((*obj.include)[16]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[16] << obj.comp << obj.manip << obj.obj->I17;\ - before = true; \ - } \ - if ((*obj.include)[17]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[17] << obj.comp << obj.manip << obj.obj->I18;\ - } \ - return s; \ - } \ - template \ - inline NAME##_value_list NAME::value_list(mysqlpp::cchar *d, Manip m) const { \ - return NAME##_value_list (this, d, m); \ - } \ - template \ - inline NAME##_field_list NAME::field_list(mysqlpp::cchar *d, Manip m) const { \ - return NAME##_field_list (this, d, m); \ - } \ - template \ - inline NAME##_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) const { \ - return NAME##_equal_list (this, d, c, m); \ - } \ - template \ - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18) const {\ - return NAME##_cus_value_list (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18); \ - } \ - template \ - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18) const { \ - return NAME##_cus_field_list (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18); \ - } \ - template \ - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m,\ - bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18) const { \ - return NAME##_cus_equal_list (this, d, c, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18); \ - } \ - template \ - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18) const { \ - return NAME##_cus_value_list (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18); \ - } \ - template \ - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18) const {\ - return NAME##_cus_field_list (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18); \ - } \ - template \ - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18) const { \ - return NAME##_cus_equal_list (this, d, c, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18); \ - } \ - template \ - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m,\ - std::vector *i) const {\ - return NAME##_cus_value_list (this, d, m, i);\ - }\ - template \ - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m,\ - std::vector *i) const {\ - return NAME##_cus_field_list (this, d, m, i);\ - }\ - template \ - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m,\ - std::vector *i) const {\ - return NAME##_cus_equal_list (this, d, c, m, i);\ - }\ - template \ - inline NAME##_cus_value_list \ - NAME::value_list(mysqlpp::cchar *d, Manip m, mysqlpp::sql_cmp_type /*sc*/) const {\ - sql_compare_type_def_##CMP (NAME, value, NUM);\ - }\ - template \ - inline NAME##_cus_field_list \ - NAME::field_list(mysqlpp::cchar *d, Manip m, mysqlpp::sql_cmp_type /*sc*/) const {\ - sql_compare_type_def_##CMP (NAME, field, NUM);\ - }\ - template \ - inline NAME##_cus_equal_list \ - NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, mysqlpp::sql_cmp_type /*sc*/) const {\ - sql_compare_type_defe_##CMP (NAME, equal, NUM);\ - }\ - template \ - void populate_##NAME (NAME *s, const mysqlpp::Row &row) { \ - s->I1 = static_cast(row.at(O1));\ - s->I2 = static_cast(row.at(O2));\ - s->I3 = static_cast(row.at(O3));\ - s->I4 = static_cast(row.at(O4));\ - s->I5 = static_cast(row.at(O5));\ - s->I6 = static_cast(row.at(O6));\ - s->I7 = static_cast(row.at(O7));\ - s->I8 = static_cast(row.at(O8));\ - s->I9 = static_cast(row.at(O9));\ - s->I10 = static_cast(row.at(O10));\ - s->I11 = static_cast(row.at(O11));\ - s->I12 = static_cast(row.at(O12));\ - s->I13 = static_cast(row.at(O13));\ - s->I14 = static_cast(row.at(O14));\ - s->I15 = static_cast(row.at(O15));\ - s->I16 = static_cast(row.at(O16));\ - s->I17 = static_cast(row.at(O17));\ - s->I18 = static_cast(row.at(O18));\ - } \ - inline NAME::NAME (const mysqlpp::Row &row) \ - {populate_##NAME(this, row);}\ - inline void NAME::set (const mysqlpp::Row &row)\ - {populate_##NAME(this, row);}\ - sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, I11, I12, I13, I14, I15, I16, I17, I18, 0, 0, 0, 0, 0, 0, 0 ) - -#define sql_create_basic_18(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18) \ - sql_create_basic_c_order_18(NAME, CMP, CONTR, T1, I1, 0, T2, I2, 1, T3, I3, 2, T4, I4, 3, T5, I5, 4, T6, I6, 5, T7, I7, 6, T8, I8, 7, T9, I9, 8, T10, I10, 9, T11, I11, 10, T12, I12, 11, T13, I13, 12, T14, I14, 13, T15, I15, 14, T16, I16, 15, T17, I17, 16, T18, I18, 17) - -#define sql_create_18(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18) \ - sql_create_complete_18(NAME, CMP, CONTR, T1, I1, #I1, 0, T2, I2, #I2, 1, T3, I3, #I3, 2, T4, I4, #I4, 3, T5, I5, #I5, 4, T6, I6, #I6, 5, T7, I7, #I7, 6, T8, I8, #I8, 7, T9, I9, #I9, 8, T10, I10, #I10, 9, T11, I11, #I11, 10, T12, I12, #I12, 11, T13, I13, #I13, 12, T14, I14, #I14, 13, T15, I15, #I15, 14, T16, I16, #I16, 15, T17, I17, #I17, 16, T18, I18, #I18, 17) \ - -#define sql_create_c_order_18(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6, T7, I7, O7, T8, I8, O8, T9, I9, O9, T10, I10, O10, T11, I11, O11, T12, I12, O12, T13, I13, O13, T14, I14, O14, T15, I15, O15, T16, I16, O16, T17, I17, O17, T18, I18, O18) \ - sql_create_complete_18(NAME, CMP, CONTR, T1, I1, #I1, O1, T2, I2, #I2, O2, T3, I3, #I3, O3, T4, I4, #I4, O4, T5, I5, #I5, O5, T6, I6, #I6, O6, T7, I7, #I7, O7, T8, I8, #I8, O8, T9, I9, #I9, O9, T10, I10, #I10, O10, T11, I11, #I11, O11, T12, I12, #I12, O12, T13, I13, #I13, O13, T14, I14, #I14, O14, T15, I15, #I15, O15, T16, I16, #I16, O16, T17, I17, #I17, O17, T18, I18, #I18, O18) - -#define sql_create_c_names_18(NAME, CMP, CONTR, T1, I1, N1, T2, I2, N2, T3, I3, N3, T4, I4, N4, T5, I5, N5, T6, I6, N6, T7, I7, N7, T8, I8, N8, T9, I9, N9, T10, I10, N10, T11, I11, N11, T12, I12, N12, T13, I13, N13, T14, I14, N14, T15, I15, N15, T16, I16, N16, T17, I17, N17, T18, I18, N18) \ - sql_create_complete_18(NAME, CMP, CONTR, T1, I1, N1, 0, T2, I2, N2, 1, T3, I3, N3, 2, T4, I4, N4, 3, T5, I5, N5, 4, T6, I6, N6, 5, T7, I7, N7, 6, T8, I8, N8, 7, T9, I9, N9, 8, T10, I10, N10, 9, T11, I11, N11, 10, T12, I12, N12, 11, T13, I13, N13, 12, T14, I14, N14, 13, T15, I15, N15, 14, T16, I16, N16, 15, T17, I17, N17, 16, T18, I18, N18, 17) - -// --------------------------------------------------- -// End Create 18 -// --------------------------------------------------- - -// --------------------------------------------------- -// Begin Create 19 -// --------------------------------------------------- -#define sql_create_basic_c_order_19(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6, T7, I7, O7, T8, I8, O8, T9, I9, O9, T10, I10, O10, T11, I11, O11, T12, I12, O12, T13, I13, O13, T14, I14, O14, T15, I15, O15, T16, I16, O16, T17, I17, O17, T18, I18, O18, T19, I19, O19)\ - struct NAME; \ - template int sql_compare_##NAME (const NAME &, const NAME &);\ - struct NAME { \ - T1 I1;\ - T2 I2;\ - T3 I3;\ - T4 I4;\ - T5 I5;\ - T6 I6;\ - T7 I7;\ - T8 I8;\ - T9 I9;\ - T10 I10;\ - T11 I11;\ - T12 I12;\ - T13 I13;\ - T14 I14;\ - T15 I15;\ - T16 I16;\ - T17 I17;\ - T18 I18;\ - T19 I19; \ - NAME () {} \ - NAME (const mysqlpp::Row &row);\ - sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18, T19, I19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\ - }; \ - template \ - void populate_##NAME (NAME *s, const mysqlpp::Row &row) { \ - s->I1 = static_cast(row.at(O1));\ - s->I2 = static_cast(row.at(O2));\ - s->I3 = static_cast(row.at(O3));\ - s->I4 = static_cast(row.at(O4));\ - s->I5 = static_cast(row.at(O5));\ - s->I6 = static_cast(row.at(O6));\ - s->I7 = static_cast(row.at(O7));\ - s->I8 = static_cast(row.at(O8));\ - s->I9 = static_cast(row.at(O9));\ - s->I10 = static_cast(row.at(O10));\ - s->I11 = static_cast(row.at(O11));\ - s->I12 = static_cast(row.at(O12));\ - s->I13 = static_cast(row.at(O13));\ - s->I14 = static_cast(row.at(O14));\ - s->I15 = static_cast(row.at(O15));\ - s->I16 = static_cast(row.at(O16));\ - s->I17 = static_cast(row.at(O17));\ - s->I18 = static_cast(row.at(O18));\ - s->I19 = static_cast(row.at(O19)); \ - } \ - inline NAME::NAME (const mysqlpp::Row &row) \ - {populate_##NAME(this, row);} \ - sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, I11, I12, I13, I14, I15, I16, I17, I18, I19, 0, 0, 0, 0, 0, 0 ) - -#define sql_create_complete_19(NAME, CMP, CONTR, T1, I1, N1, O1, T2, I2, N2, O2, T3, I3, N3, O3, T4, I4, N4, O4, T5, I5, N5, O5, T6, I6, N6, O6, T7, I7, N7, O7, T8, I8, N8, O8, T9, I9, N9, O9, T10, I10, N10, O10, T11, I11, N11, O11, T12, I12, N12, O12, T13, I13, N13, O13, T14, I14, N14, O14, T15, I15, N15, O15, T16, I16, N16, O16, T17, I17, N17, O17, T18, I18, N18, O18, T19, I19, N19, O19) \ - struct NAME; \ - enum NAME##_enum { \ - NAME##_##I1,\ - NAME##_##I2,\ - NAME##_##I3,\ - NAME##_##I4,\ - NAME##_##I5,\ - NAME##_##I6,\ - NAME##_##I7,\ - NAME##_##I8,\ - NAME##_##I9,\ - NAME##_##I10,\ - NAME##_##I11,\ - NAME##_##I12,\ - NAME##_##I13,\ - NAME##_##I14,\ - NAME##_##I15,\ - NAME##_##I16,\ - NAME##_##I17,\ - NAME##_##I18,\ - NAME##_##I19 \ - ,NAME##_NULL \ - }; \ - template \ - class NAME##_value_list { \ - /*friend std::ostream& operator << <> (std::ostream&, const NAME##_value_list&); */\ - public: \ - const NAME *obj;\ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - NAME##_value_list (const NAME *o, mysqlpp::cchar *d, Manip m) \ - : obj(o), delem(d), manip(m) {} \ - };\ - template \ - class NAME##_##field_list {\ - /* friend std::ostream& operator << <> (std::ostream&, const NAME##_field_list&); */\ - public: \ - const NAME *obj; \ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - NAME##_field_list (const NAME *o, mysqlpp::cchar *d, Manip m) \ - : obj(o), delem(d), manip(m) {} \ - };\ - template \ - class NAME##_equal_list { \ - /* friend std::ostream& operator << <> (std::ostream&, const NAME##_equal_list&); */\ - public: \ - const NAME *obj;\ - mysqlpp::cchar *delem;\ - mysqlpp::cchar *comp;\ - Manip manip;\ - public: \ - NAME##_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) \ - : obj(o), delem(d), comp(c), manip(m) {}\ - };\ - template \ - class NAME##_cus_value_list {\ - /* friend std::ostream& operator << <> (std::ostream&, \ - const NAME##_cus_value_list&); */\ - public:\ - const NAME *obj;\ - std::vector *include;\ - bool del_vector;\ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - ~NAME##_cus_value_list () {if (del_vector) delete include;} \ - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19);\ - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19); \ - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m ,std::vector* i)\ - : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\ - };\ - template \ - class NAME##_cus_field_list { \ - /* friend std::ostream& operator << <> (std::ostream&, \ - const NAME##_cus_field_list&); */\ - public:\ - const NAME *obj; \ - std::vector *include; \ - bool del_vector; \ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - ~NAME##_cus_field_list () {if (del_vector) delete include;} \ - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19); \ - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19); \ - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, std::vector *i) \ - : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\ - };\ - template \ - class NAME##_cus_equal_list {\ - /* friend std::ostream& operator << <> (std::ostream&, \ - const NAME##_cus_equal_list&); */\ - public:\ - const NAME *obj;\ - std::vector *include;\ - bool del_vector;\ - mysqlpp::cchar *delem;\ - mysqlpp::cchar *comp;\ - Manip manip;\ - public:\ - ~NAME##_##cus_equal_list () {if (del_vector) delete include;}\ - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19); \ - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19); \ - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, std::vector *i) \ - : obj(o), include(i), del_vector(false), delem(d), comp(c), manip(m) {}\ - };\ - template int sql_compare_##NAME (const NAME &, const NAME &);\ - struct NAME { \ - T1 I1;\ - T2 I2;\ - T3 I3;\ - T4 I4;\ - T5 I5;\ - T6 I6;\ - T7 I7;\ - T8 I8;\ - T9 I9;\ - T10 I10;\ - T11 I11;\ - T12 I12;\ - T13 I13;\ - T14 I14;\ - T15 I15;\ - T16 I16;\ - T17 I17;\ - T18 I18;\ - T19 I19; \ - NAME () {} \ - NAME (const mysqlpp::Row &row);\ - void set (const mysqlpp::Row &row);\ - sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18, T19, I19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\ - sql_construct_define_##CONTR(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18, T19, I19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\ - static const char *names[];\ - static const char *_table;\ - static const char *& table() {return _table;}\ - NAME##_value_list value_list() const {\ - return value_list(",", mysqlpp::quote);}\ - NAME##_value_list value_list(mysqlpp::cchar *d) const {\ - return value_list(d, mysqlpp::quote);}\ - template \ - NAME##_value_list value_list(mysqlpp::cchar *d, Manip m) const; \ - NAME##_field_list field_list() const {\ - return field_list(",", mysqlpp::do_nothing);}\ - NAME##_field_list field_list(mysqlpp::cchar *d) const {\ - return field_list(d, mysqlpp::do_nothing);}\ - template \ - NAME##_field_list field_list(mysqlpp::cchar *d, Manip m) const; \ - NAME##_equal_list equal_list(mysqlpp::cchar *d = ",", \ - mysqlpp::cchar *c = " = ") const{\ - return equal_list(d, c, mysqlpp::quote);}\ - template \ - NAME##_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) const; \ - /* cus_data */\ - NAME##_cus_value_list value_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false) const {\ - return value_list(",", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19);\ - }\ - NAME##_cus_value_list value_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL) const {\ - return value_list(",", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19);\ - }\ - NAME##_cus_value_list value_list(std::vector *i) const {\ - return value_list(",", mysqlpp::quote, i);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::sql_cmp_type sc) const {\ - return value_list(",", mysqlpp::quote, sc);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false) const {\ - return value_list(d, mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL) const {\ - return value_list(d, mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, \ - std::vector *i) const {\ - return value_list(d, mysqlpp::quote, i);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, \ - mysqlpp::sql_cmp_type sc) const {\ - return value_list(d, mysqlpp::quote, sc);\ - }\ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false) const; \ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL) const; \ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m, \ - std::vector *i) const;\ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m, \ - mysqlpp::sql_cmp_type sc) const;\ - /* cus field */\ - NAME##_cus_field_list field_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false) const {\ - return field_list(",", mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19);\ - }\ - NAME##_cus_field_list field_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL) const {\ - return field_list(",", mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19);\ - }\ - NAME##_cus_field_list field_list(std::vector *i) const {\ - return field_list(",", mysqlpp::do_nothing, i);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::sql_cmp_type sc) const\ - {\ - return field_list(",", mysqlpp::do_nothing, sc);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, \ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false) const {\ - return field_list(d, mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL) const {\ - return field_list(d, mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, \ - std::vector *i) const {\ - return field_list(d, mysqlpp::do_nothing, i);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, \ - mysqlpp::sql_cmp_type sc) const {\ - return field_list(d, mysqlpp::do_nothing, sc);\ - }\ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false) const; \ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL) const; \ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m,\ - std::vector *i) const;\ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m, \ - mysqlpp::sql_cmp_type sc) const;\ - /* cus equal */\ - NAME##_cus_equal_list equal_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false) const {\ - return equal_list(",", " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19);\ - }\ - NAME##_cus_equal_list equal_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL) const {\ - return equal_list(",", " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19);\ - }\ - NAME##_cus_equal_list equal_list(std::vector *i) const {\ - return equal_list(",", " = ", mysqlpp::quote, i);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::sql_cmp_type sc) const {\ - return equal_list(",", " = ", mysqlpp::quote, sc);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false) const {\ - return equal_list(d, " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL) const {\ - return equal_list(d, " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, \ - std::vector *i) const {\ - return equal_list(d, " = ", mysqlpp::quote, i);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, \ - mysqlpp::sql_cmp_type sc) const {\ - return equal_list(d, " = ", mysqlpp::quote, sc);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false) const {\ - return equal_list(d, c, mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL) const {\ - return equal_list(d, c, mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - std::vector *i) const {\ - return equal_list(d, c, mysqlpp::quote, i);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - mysqlpp::sql_cmp_type sc) const {\ - return equal_list(d, c, mysqlpp::quote, sc);\ - }\ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false) const; \ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL) const; \ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - std::vector *i) const;\ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - mysqlpp::sql_cmp_type sc) const;\ - }; \ - MYSQLPP_SSQLS_EXPAND(\ - const char *NAME::names[] = { \ - N1 ,\ - N2 ,\ - N3 ,\ - N4 ,\ - N5 ,\ - N6 ,\ - N7 ,\ - N8 ,\ - N9 ,\ - N10 ,\ - N11 ,\ - N12 ,\ - N13 ,\ - N14 ,\ - N15 ,\ - N16 ,\ - N17 ,\ - N18 ,\ - N19 \ - }; \ - const char *NAME::_table = #NAME ;\ - )\ - template \ - NAME##_cus_value_list::NAME##_cus_value_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19) \ - { \ - delem = d;\ - manip = m;\ - del_vector = true;\ - obj = o; \ - include = new std::vector(19, false);\ - if (i1) (*include)[0]=true;\ - if (i2) (*include)[1]=true;\ - if (i3) (*include)[2]=true;\ - if (i4) (*include)[3]=true;\ - if (i5) (*include)[4]=true;\ - if (i6) (*include)[5]=true;\ - if (i7) (*include)[6]=true;\ - if (i8) (*include)[7]=true;\ - if (i9) (*include)[8]=true;\ - if (i10) (*include)[9]=true;\ - if (i11) (*include)[10]=true;\ - if (i12) (*include)[11]=true;\ - if (i13) (*include)[12]=true;\ - if (i14) (*include)[13]=true;\ - if (i15) (*include)[14]=true;\ - if (i16) (*include)[15]=true;\ - if (i17) (*include)[16]=true;\ - if (i18) (*include)[17]=true;\ - if (i19) (*include)[18]=true;\ - } \ - template \ - NAME##_cus_value_list::NAME##_cus_value_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19) { \ - delem = d;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(19, false); \ - if (i1 == NAME##_NULL) return;\ - (*include)[i1]=true;\ - if (i2 == NAME##_NULL) return;\ - (*include)[i2]=true;\ - if (i3 == NAME##_NULL) return;\ - (*include)[i3]=true;\ - if (i4 == NAME##_NULL) return;\ - (*include)[i4]=true;\ - if (i5 == NAME##_NULL) return;\ - (*include)[i5]=true;\ - if (i6 == NAME##_NULL) return;\ - (*include)[i6]=true;\ - if (i7 == NAME##_NULL) return;\ - (*include)[i7]=true;\ - if (i8 == NAME##_NULL) return;\ - (*include)[i8]=true;\ - if (i9 == NAME##_NULL) return;\ - (*include)[i9]=true;\ - if (i10 == NAME##_NULL) return;\ - (*include)[i10]=true;\ - if (i11 == NAME##_NULL) return;\ - (*include)[i11]=true;\ - if (i12 == NAME##_NULL) return;\ - (*include)[i12]=true;\ - if (i13 == NAME##_NULL) return;\ - (*include)[i13]=true;\ - if (i14 == NAME##_NULL) return;\ - (*include)[i14]=true;\ - if (i15 == NAME##_NULL) return;\ - (*include)[i15]=true;\ - if (i16 == NAME##_NULL) return;\ - (*include)[i16]=true;\ - if (i17 == NAME##_NULL) return;\ - (*include)[i17]=true;\ - if (i18 == NAME##_NULL) return;\ - (*include)[i18]=true;\ - if (i19 == NAME##_NULL) return;\ - (*include)[i19]=true;\ - }\ - template \ - NAME##_cus_field_list::NAME##_cus_field_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19) {\ - delem = d;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(19, false); \ - if (i1) (*include)[0]=true;\ - if (i2) (*include)[1]=true;\ - if (i3) (*include)[2]=true;\ - if (i4) (*include)[3]=true;\ - if (i5) (*include)[4]=true;\ - if (i6) (*include)[5]=true;\ - if (i7) (*include)[6]=true;\ - if (i8) (*include)[7]=true;\ - if (i9) (*include)[8]=true;\ - if (i10) (*include)[9]=true;\ - if (i11) (*include)[10]=true;\ - if (i12) (*include)[11]=true;\ - if (i13) (*include)[12]=true;\ - if (i14) (*include)[13]=true;\ - if (i15) (*include)[14]=true;\ - if (i16) (*include)[15]=true;\ - if (i17) (*include)[16]=true;\ - if (i18) (*include)[17]=true;\ - if (i19) (*include)[18]=true;\ - } \ - template \ - NAME##_cus_field_list::NAME##_cus_field_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19) { \ - delem = d;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(19, false); \ - if (i1 == NAME##_NULL) return;\ - (*include)[i1]=true;\ - if (i2 == NAME##_NULL) return;\ - (*include)[i2]=true;\ - if (i3 == NAME##_NULL) return;\ - (*include)[i3]=true;\ - if (i4 == NAME##_NULL) return;\ - (*include)[i4]=true;\ - if (i5 == NAME##_NULL) return;\ - (*include)[i5]=true;\ - if (i6 == NAME##_NULL) return;\ - (*include)[i6]=true;\ - if (i7 == NAME##_NULL) return;\ - (*include)[i7]=true;\ - if (i8 == NAME##_NULL) return;\ - (*include)[i8]=true;\ - if (i9 == NAME##_NULL) return;\ - (*include)[i9]=true;\ - if (i10 == NAME##_NULL) return;\ - (*include)[i10]=true;\ - if (i11 == NAME##_NULL) return;\ - (*include)[i11]=true;\ - if (i12 == NAME##_NULL) return;\ - (*include)[i12]=true;\ - if (i13 == NAME##_NULL) return;\ - (*include)[i13]=true;\ - if (i14 == NAME##_NULL) return;\ - (*include)[i14]=true;\ - if (i15 == NAME##_NULL) return;\ - (*include)[i15]=true;\ - if (i16 == NAME##_NULL) return;\ - (*include)[i16]=true;\ - if (i17 == NAME##_NULL) return;\ - (*include)[i17]=true;\ - if (i18 == NAME##_NULL) return;\ - (*include)[i18]=true;\ - if (i19 == NAME##_NULL) return;\ - (*include)[i19]=true;\ - }\ - template \ - NAME##_cus_equal_list::NAME##_cus_equal_list\ - (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19) { \ - delem = d;\ - comp = c;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(19, false); \ - if (i1) (*include)[0]=true;\ - if (i2) (*include)[1]=true;\ - if (i3) (*include)[2]=true;\ - if (i4) (*include)[3]=true;\ - if (i5) (*include)[4]=true;\ - if (i6) (*include)[5]=true;\ - if (i7) (*include)[6]=true;\ - if (i8) (*include)[7]=true;\ - if (i9) (*include)[8]=true;\ - if (i10) (*include)[9]=true;\ - if (i11) (*include)[10]=true;\ - if (i12) (*include)[11]=true;\ - if (i13) (*include)[12]=true;\ - if (i14) (*include)[13]=true;\ - if (i15) (*include)[14]=true;\ - if (i16) (*include)[15]=true;\ - if (i17) (*include)[16]=true;\ - if (i18) (*include)[17]=true;\ - if (i19) (*include)[18]=true;\ - } \ - template \ - NAME##_cus_equal_list::NAME##_cus_equal_list\ - (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19) { \ - delem = d;\ - comp = c;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(19, false); \ - if (i1 == NAME##_NULL) return;\ - (*include)[i1]=true;\ - if (i2 == NAME##_NULL) return;\ - (*include)[i2]=true;\ - if (i3 == NAME##_NULL) return;\ - (*include)[i3]=true;\ - if (i4 == NAME##_NULL) return;\ - (*include)[i4]=true;\ - if (i5 == NAME##_NULL) return;\ - (*include)[i5]=true;\ - if (i6 == NAME##_NULL) return;\ - (*include)[i6]=true;\ - if (i7 == NAME##_NULL) return;\ - (*include)[i7]=true;\ - if (i8 == NAME##_NULL) return;\ - (*include)[i8]=true;\ - if (i9 == NAME##_NULL) return;\ - (*include)[i9]=true;\ - if (i10 == NAME##_NULL) return;\ - (*include)[i10]=true;\ - if (i11 == NAME##_NULL) return;\ - (*include)[i11]=true;\ - if (i12 == NAME##_NULL) return;\ - (*include)[i12]=true;\ - if (i13 == NAME##_NULL) return;\ - (*include)[i13]=true;\ - if (i14 == NAME##_NULL) return;\ - (*include)[i14]=true;\ - if (i15 == NAME##_NULL) return;\ - (*include)[i15]=true;\ - if (i16 == NAME##_NULL) return;\ - (*include)[i16]=true;\ - if (i17 == NAME##_NULL) return;\ - (*include)[i17]=true;\ - if (i18 == NAME##_NULL) return;\ - (*include)[i18]=true;\ - if (i19 == NAME##_NULL) return;\ - (*include)[i19]=true;\ - }\ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_value_list& obj) { \ - s << obj.manip << obj.obj->I1 << obj.delem;\ - s << obj.manip << obj.obj->I2 << obj.delem;\ - s << obj.manip << obj.obj->I3 << obj.delem;\ - s << obj.manip << obj.obj->I4 << obj.delem;\ - s << obj.manip << obj.obj->I5 << obj.delem;\ - s << obj.manip << obj.obj->I6 << obj.delem;\ - s << obj.manip << obj.obj->I7 << obj.delem;\ - s << obj.manip << obj.obj->I8 << obj.delem;\ - s << obj.manip << obj.obj->I9 << obj.delem;\ - s << obj.manip << obj.obj->I10 << obj.delem;\ - s << obj.manip << obj.obj->I11 << obj.delem;\ - s << obj.manip << obj.obj->I12 << obj.delem;\ - s << obj.manip << obj.obj->I13 << obj.delem;\ - s << obj.manip << obj.obj->I14 << obj.delem;\ - s << obj.manip << obj.obj->I15 << obj.delem;\ - s << obj.manip << obj.obj->I16 << obj.delem;\ - s << obj.manip << obj.obj->I17 << obj.delem;\ - s << obj.manip << obj.obj->I18 << obj.delem;\ - s << obj.manip << obj.obj->I19; \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_field_list& obj) { \ - s << obj.manip << obj.obj->names[0] << obj.delem;\ - s << obj.manip << obj.obj->names[1] << obj.delem;\ - s << obj.manip << obj.obj->names[2] << obj.delem;\ - s << obj.manip << obj.obj->names[3] << obj.delem;\ - s << obj.manip << obj.obj->names[4] << obj.delem;\ - s << obj.manip << obj.obj->names[5] << obj.delem;\ - s << obj.manip << obj.obj->names[6] << obj.delem;\ - s << obj.manip << obj.obj->names[7] << obj.delem;\ - s << obj.manip << obj.obj->names[8] << obj.delem;\ - s << obj.manip << obj.obj->names[9] << obj.delem;\ - s << obj.manip << obj.obj->names[10] << obj.delem;\ - s << obj.manip << obj.obj->names[11] << obj.delem;\ - s << obj.manip << obj.obj->names[12] << obj.delem;\ - s << obj.manip << obj.obj->names[13] << obj.delem;\ - s << obj.manip << obj.obj->names[14] << obj.delem;\ - s << obj.manip << obj.obj->names[15] << obj.delem;\ - s << obj.manip << obj.obj->names[16] << obj.delem;\ - s << obj.manip << obj.obj->names[17] << obj.delem;\ - s << obj.manip << obj.obj->names[18]; \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_equal_list& obj) { \ - s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1 << obj.delem;\ - s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2 << obj.delem;\ - s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3 << obj.delem;\ - s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4 << obj.delem;\ - s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5 << obj.delem;\ - s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6 << obj.delem;\ - s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->I7 << obj.delem;\ - s << obj.obj->names[7] << obj.comp << obj.manip << obj.obj->I8 << obj.delem;\ - s << obj.obj->names[8] << obj.comp << obj.manip << obj.obj->I9 << obj.delem;\ - s << obj.obj->names[9] << obj.comp << obj.manip << obj.obj->I10 << obj.delem;\ - s << obj.obj->names[10] << obj.comp << obj.manip << obj.obj->I11 << obj.delem;\ - s << obj.obj->names[11] << obj.comp << obj.manip << obj.obj->I12 << obj.delem;\ - s << obj.obj->names[12] << obj.comp << obj.manip << obj.obj->I13 << obj.delem;\ - s << obj.obj->names[13] << obj.comp << obj.manip << obj.obj->I14 << obj.delem;\ - s << obj.obj->names[14] << obj.comp << obj.manip << obj.obj->I15 << obj.delem;\ - s << obj.obj->names[15] << obj.comp << obj.manip << obj.obj->I16 << obj.delem;\ - s << obj.obj->names[16] << obj.comp << obj.manip << obj.obj->I17 << obj.delem;\ - s << obj.obj->names[17] << obj.comp << obj.manip << obj.obj->I18 << obj.delem;\ - s << obj.obj->names[18] << obj.comp << obj.manip << obj.obj->I19; \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_cus_value_list& obj) { \ - bool before = false; \ - if ((*obj.include)[0]) { \ - s << obj.manip << obj.obj->I1;\ - before = true; \ - } \ - if ((*obj.include)[1]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I2;\ - before = true; \ - } \ - if ((*obj.include)[2]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I3;\ - before = true; \ - } \ - if ((*obj.include)[3]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I4;\ - before = true; \ - } \ - if ((*obj.include)[4]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I5;\ - before = true; \ - } \ - if ((*obj.include)[5]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I6;\ - before = true; \ - } \ - if ((*obj.include)[6]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I7;\ - before = true; \ - } \ - if ((*obj.include)[7]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I8;\ - before = true; \ - } \ - if ((*obj.include)[8]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I9;\ - before = true; \ - } \ - if ((*obj.include)[9]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I10;\ - before = true; \ - } \ - if ((*obj.include)[10]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I11;\ - before = true; \ - } \ - if ((*obj.include)[11]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I12;\ - before = true; \ - } \ - if ((*obj.include)[12]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I13;\ - before = true; \ - } \ - if ((*obj.include)[13]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I14;\ - before = true; \ - } \ - if ((*obj.include)[14]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I15;\ - before = true; \ - } \ - if ((*obj.include)[15]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I16;\ - before = true; \ - } \ - if ((*obj.include)[16]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I17;\ - before = true; \ - } \ - if ((*obj.include)[17]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I18;\ - before = true; \ - } \ - if ((*obj.include)[18]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I19;\ - } \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_cus_field_list& obj) { \ - bool before = false; \ - if ((*obj.include)[0]) { \ - s << obj.manip << obj.obj->names[0];\ - before = true; \ - } \ - if ((*obj.include)[1]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[1];\ - before = true; \ - } \ - if ((*obj.include)[2]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[2];\ - before = true; \ - } \ - if ((*obj.include)[3]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[3];\ - before = true; \ - } \ - if ((*obj.include)[4]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[4];\ - before = true; \ - } \ - if ((*obj.include)[5]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[5];\ - before = true; \ - } \ - if ((*obj.include)[6]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[6];\ - before = true; \ - } \ - if ((*obj.include)[7]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[7];\ - before = true; \ - } \ - if ((*obj.include)[8]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[8];\ - before = true; \ - } \ - if ((*obj.include)[9]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[9];\ - before = true; \ - } \ - if ((*obj.include)[10]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[10];\ - before = true; \ - } \ - if ((*obj.include)[11]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[11];\ - before = true; \ - } \ - if ((*obj.include)[12]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[12];\ - before = true; \ - } \ - if ((*obj.include)[13]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[13];\ - before = true; \ - } \ - if ((*obj.include)[14]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[14];\ - before = true; \ - } \ - if ((*obj.include)[15]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[15];\ - before = true; \ - } \ - if ((*obj.include)[16]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[16];\ - before = true; \ - } \ - if ((*obj.include)[17]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[17];\ - before = true; \ - } \ - if ((*obj.include)[18]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[18];\ - } \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_cus_equal_list& obj) { \ - bool before = false; \ - if ((*obj.include)[0]) { \ - s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1;\ - before = true; \ - } \ - if ((*obj.include)[1]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2;\ - before = true; \ - } \ - if ((*obj.include)[2]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3;\ - before = true; \ - } \ - if ((*obj.include)[3]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4;\ - before = true; \ - } \ - if ((*obj.include)[4]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5;\ - before = true; \ - } \ - if ((*obj.include)[5]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6;\ - before = true; \ - } \ - if ((*obj.include)[6]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->I7;\ - before = true; \ - } \ - if ((*obj.include)[7]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[7] << obj.comp << obj.manip << obj.obj->I8;\ - before = true; \ - } \ - if ((*obj.include)[8]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[8] << obj.comp << obj.manip << obj.obj->I9;\ - before = true; \ - } \ - if ((*obj.include)[9]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[9] << obj.comp << obj.manip << obj.obj->I10;\ - before = true; \ - } \ - if ((*obj.include)[10]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[10] << obj.comp << obj.manip << obj.obj->I11;\ - before = true; \ - } \ - if ((*obj.include)[11]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[11] << obj.comp << obj.manip << obj.obj->I12;\ - before = true; \ - } \ - if ((*obj.include)[12]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[12] << obj.comp << obj.manip << obj.obj->I13;\ - before = true; \ - } \ - if ((*obj.include)[13]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[13] << obj.comp << obj.manip << obj.obj->I14;\ - before = true; \ - } \ - if ((*obj.include)[14]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[14] << obj.comp << obj.manip << obj.obj->I15;\ - before = true; \ - } \ - if ((*obj.include)[15]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[15] << obj.comp << obj.manip << obj.obj->I16;\ - before = true; \ - } \ - if ((*obj.include)[16]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[16] << obj.comp << obj.manip << obj.obj->I17;\ - before = true; \ - } \ - if ((*obj.include)[17]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[17] << obj.comp << obj.manip << obj.obj->I18;\ - before = true; \ - } \ - if ((*obj.include)[18]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[18] << obj.comp << obj.manip << obj.obj->I19;\ - } \ - return s; \ - } \ - template \ - inline NAME##_value_list NAME::value_list(mysqlpp::cchar *d, Manip m) const { \ - return NAME##_value_list (this, d, m); \ - } \ - template \ - inline NAME##_field_list NAME::field_list(mysqlpp::cchar *d, Manip m) const { \ - return NAME##_field_list (this, d, m); \ - } \ - template \ - inline NAME##_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) const { \ - return NAME##_equal_list (this, d, c, m); \ - } \ - template \ - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19) const {\ - return NAME##_cus_value_list (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19); \ - } \ - template \ - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19) const { \ - return NAME##_cus_field_list (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19); \ - } \ - template \ - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m,\ - bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19) const { \ - return NAME##_cus_equal_list (this, d, c, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19); \ - } \ - template \ - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19) const { \ - return NAME##_cus_value_list (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19); \ - } \ - template \ - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19) const {\ - return NAME##_cus_field_list (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19); \ - } \ - template \ - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19) const { \ - return NAME##_cus_equal_list (this, d, c, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19); \ - } \ - template \ - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m,\ - std::vector *i) const {\ - return NAME##_cus_value_list (this, d, m, i);\ - }\ - template \ - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m,\ - std::vector *i) const {\ - return NAME##_cus_field_list (this, d, m, i);\ - }\ - template \ - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m,\ - std::vector *i) const {\ - return NAME##_cus_equal_list (this, d, c, m, i);\ - }\ - template \ - inline NAME##_cus_value_list \ - NAME::value_list(mysqlpp::cchar *d, Manip m, mysqlpp::sql_cmp_type /*sc*/) const {\ - sql_compare_type_def_##CMP (NAME, value, NUM);\ - }\ - template \ - inline NAME##_cus_field_list \ - NAME::field_list(mysqlpp::cchar *d, Manip m, mysqlpp::sql_cmp_type /*sc*/) const {\ - sql_compare_type_def_##CMP (NAME, field, NUM);\ - }\ - template \ - inline NAME##_cus_equal_list \ - NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, mysqlpp::sql_cmp_type /*sc*/) const {\ - sql_compare_type_defe_##CMP (NAME, equal, NUM);\ - }\ - template \ - void populate_##NAME (NAME *s, const mysqlpp::Row &row) { \ - s->I1 = static_cast(row.at(O1));\ - s->I2 = static_cast(row.at(O2));\ - s->I3 = static_cast(row.at(O3));\ - s->I4 = static_cast(row.at(O4));\ - s->I5 = static_cast(row.at(O5));\ - s->I6 = static_cast(row.at(O6));\ - s->I7 = static_cast(row.at(O7));\ - s->I8 = static_cast(row.at(O8));\ - s->I9 = static_cast(row.at(O9));\ - s->I10 = static_cast(row.at(O10));\ - s->I11 = static_cast(row.at(O11));\ - s->I12 = static_cast(row.at(O12));\ - s->I13 = static_cast(row.at(O13));\ - s->I14 = static_cast(row.at(O14));\ - s->I15 = static_cast(row.at(O15));\ - s->I16 = static_cast(row.at(O16));\ - s->I17 = static_cast(row.at(O17));\ - s->I18 = static_cast(row.at(O18));\ - s->I19 = static_cast(row.at(O19));\ - } \ - inline NAME::NAME (const mysqlpp::Row &row) \ - {populate_##NAME(this, row);}\ - inline void NAME::set (const mysqlpp::Row &row)\ - {populate_##NAME(this, row);}\ - sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, I11, I12, I13, I14, I15, I16, I17, I18, I19, 0, 0, 0, 0, 0, 0 ) - -#define sql_create_basic_19(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18, T19, I19) \ - sql_create_basic_c_order_19(NAME, CMP, CONTR, T1, I1, 0, T2, I2, 1, T3, I3, 2, T4, I4, 3, T5, I5, 4, T6, I6, 5, T7, I7, 6, T8, I8, 7, T9, I9, 8, T10, I10, 9, T11, I11, 10, T12, I12, 11, T13, I13, 12, T14, I14, 13, T15, I15, 14, T16, I16, 15, T17, I17, 16, T18, I18, 17, T19, I19, 18) - -#define sql_create_19(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18, T19, I19) \ - sql_create_complete_19(NAME, CMP, CONTR, T1, I1, #I1, 0, T2, I2, #I2, 1, T3, I3, #I3, 2, T4, I4, #I4, 3, T5, I5, #I5, 4, T6, I6, #I6, 5, T7, I7, #I7, 6, T8, I8, #I8, 7, T9, I9, #I9, 8, T10, I10, #I10, 9, T11, I11, #I11, 10, T12, I12, #I12, 11, T13, I13, #I13, 12, T14, I14, #I14, 13, T15, I15, #I15, 14, T16, I16, #I16, 15, T17, I17, #I17, 16, T18, I18, #I18, 17, T19, I19, #I19, 18) \ - -#define sql_create_c_order_19(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6, T7, I7, O7, T8, I8, O8, T9, I9, O9, T10, I10, O10, T11, I11, O11, T12, I12, O12, T13, I13, O13, T14, I14, O14, T15, I15, O15, T16, I16, O16, T17, I17, O17, T18, I18, O18, T19, I19, O19) \ - sql_create_complete_19(NAME, CMP, CONTR, T1, I1, #I1, O1, T2, I2, #I2, O2, T3, I3, #I3, O3, T4, I4, #I4, O4, T5, I5, #I5, O5, T6, I6, #I6, O6, T7, I7, #I7, O7, T8, I8, #I8, O8, T9, I9, #I9, O9, T10, I10, #I10, O10, T11, I11, #I11, O11, T12, I12, #I12, O12, T13, I13, #I13, O13, T14, I14, #I14, O14, T15, I15, #I15, O15, T16, I16, #I16, O16, T17, I17, #I17, O17, T18, I18, #I18, O18, T19, I19, #I19, O19) - -#define sql_create_c_names_19(NAME, CMP, CONTR, T1, I1, N1, T2, I2, N2, T3, I3, N3, T4, I4, N4, T5, I5, N5, T6, I6, N6, T7, I7, N7, T8, I8, N8, T9, I9, N9, T10, I10, N10, T11, I11, N11, T12, I12, N12, T13, I13, N13, T14, I14, N14, T15, I15, N15, T16, I16, N16, T17, I17, N17, T18, I18, N18, T19, I19, N19) \ - sql_create_complete_19(NAME, CMP, CONTR, T1, I1, N1, 0, T2, I2, N2, 1, T3, I3, N3, 2, T4, I4, N4, 3, T5, I5, N5, 4, T6, I6, N6, 5, T7, I7, N7, 6, T8, I8, N8, 7, T9, I9, N9, 8, T10, I10, N10, 9, T11, I11, N11, 10, T12, I12, N12, 11, T13, I13, N13, 12, T14, I14, N14, 13, T15, I15, N15, 14, T16, I16, N16, 15, T17, I17, N17, 16, T18, I18, N18, 17, T19, I19, N19, 18) - -// --------------------------------------------------- -// End Create 19 -// --------------------------------------------------- - -// --------------------------------------------------- -// Begin Create 20 -// --------------------------------------------------- -#define sql_create_basic_c_order_20(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6, T7, I7, O7, T8, I8, O8, T9, I9, O9, T10, I10, O10, T11, I11, O11, T12, I12, O12, T13, I13, O13, T14, I14, O14, T15, I15, O15, T16, I16, O16, T17, I17, O17, T18, I18, O18, T19, I19, O19, T20, I20, O20)\ - struct NAME; \ - template int sql_compare_##NAME (const NAME &, const NAME &);\ - struct NAME { \ - T1 I1;\ - T2 I2;\ - T3 I3;\ - T4 I4;\ - T5 I5;\ - T6 I6;\ - T7 I7;\ - T8 I8;\ - T9 I9;\ - T10 I10;\ - T11 I11;\ - T12 I12;\ - T13 I13;\ - T14 I14;\ - T15 I15;\ - T16 I16;\ - T17 I17;\ - T18 I18;\ - T19 I19;\ - T20 I20; \ - NAME () {} \ - NAME (const mysqlpp::Row &row);\ - sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18, T19, I19, T20, I20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\ - }; \ - template \ - void populate_##NAME (NAME *s, const mysqlpp::Row &row) { \ - s->I1 = static_cast(row.at(O1));\ - s->I2 = static_cast(row.at(O2));\ - s->I3 = static_cast(row.at(O3));\ - s->I4 = static_cast(row.at(O4));\ - s->I5 = static_cast(row.at(O5));\ - s->I6 = static_cast(row.at(O6));\ - s->I7 = static_cast(row.at(O7));\ - s->I8 = static_cast(row.at(O8));\ - s->I9 = static_cast(row.at(O9));\ - s->I10 = static_cast(row.at(O10));\ - s->I11 = static_cast(row.at(O11));\ - s->I12 = static_cast(row.at(O12));\ - s->I13 = static_cast(row.at(O13));\ - s->I14 = static_cast(row.at(O14));\ - s->I15 = static_cast(row.at(O15));\ - s->I16 = static_cast(row.at(O16));\ - s->I17 = static_cast(row.at(O17));\ - s->I18 = static_cast(row.at(O18));\ - s->I19 = static_cast(row.at(O19));\ - s->I20 = static_cast(row.at(O20)); \ - } \ - inline NAME::NAME (const mysqlpp::Row &row) \ - {populate_##NAME(this, row);} \ - sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, I11, I12, I13, I14, I15, I16, I17, I18, I19, I20, 0, 0, 0, 0, 0 ) - -#define sql_create_complete_20(NAME, CMP, CONTR, T1, I1, N1, O1, T2, I2, N2, O2, T3, I3, N3, O3, T4, I4, N4, O4, T5, I5, N5, O5, T6, I6, N6, O6, T7, I7, N7, O7, T8, I8, N8, O8, T9, I9, N9, O9, T10, I10, N10, O10, T11, I11, N11, O11, T12, I12, N12, O12, T13, I13, N13, O13, T14, I14, N14, O14, T15, I15, N15, O15, T16, I16, N16, O16, T17, I17, N17, O17, T18, I18, N18, O18, T19, I19, N19, O19, T20, I20, N20, O20) \ - struct NAME; \ - enum NAME##_enum { \ - NAME##_##I1,\ - NAME##_##I2,\ - NAME##_##I3,\ - NAME##_##I4,\ - NAME##_##I5,\ - NAME##_##I6,\ - NAME##_##I7,\ - NAME##_##I8,\ - NAME##_##I9,\ - NAME##_##I10,\ - NAME##_##I11,\ - NAME##_##I12,\ - NAME##_##I13,\ - NAME##_##I14,\ - NAME##_##I15,\ - NAME##_##I16,\ - NAME##_##I17,\ - NAME##_##I18,\ - NAME##_##I19,\ - NAME##_##I20 \ - ,NAME##_NULL \ - }; \ - template \ - class NAME##_value_list { \ - /*friend std::ostream& operator << <> (std::ostream&, const NAME##_value_list&); */\ - public: \ - const NAME *obj;\ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - NAME##_value_list (const NAME *o, mysqlpp::cchar *d, Manip m) \ - : obj(o), delem(d), manip(m) {} \ - };\ - template \ - class NAME##_##field_list {\ - /* friend std::ostream& operator << <> (std::ostream&, const NAME##_field_list&); */\ - public: \ - const NAME *obj; \ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - NAME##_field_list (const NAME *o, mysqlpp::cchar *d, Manip m) \ - : obj(o), delem(d), manip(m) {} \ - };\ - template \ - class NAME##_equal_list { \ - /* friend std::ostream& operator << <> (std::ostream&, const NAME##_equal_list&); */\ - public: \ - const NAME *obj;\ - mysqlpp::cchar *delem;\ - mysqlpp::cchar *comp;\ - Manip manip;\ - public: \ - NAME##_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) \ - : obj(o), delem(d), comp(c), manip(m) {}\ - };\ - template \ - class NAME##_cus_value_list {\ - /* friend std::ostream& operator << <> (std::ostream&, \ - const NAME##_cus_value_list&); */\ - public:\ - const NAME *obj;\ - std::vector *include;\ - bool del_vector;\ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - ~NAME##_cus_value_list () {if (del_vector) delete include;} \ - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20);\ - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20); \ - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m ,std::vector* i)\ - : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\ - };\ - template \ - class NAME##_cus_field_list { \ - /* friend std::ostream& operator << <> (std::ostream&, \ - const NAME##_cus_field_list&); */\ - public:\ - const NAME *obj; \ - std::vector *include; \ - bool del_vector; \ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - ~NAME##_cus_field_list () {if (del_vector) delete include;} \ - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20); \ - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20); \ - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, std::vector *i) \ - : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\ - };\ - template \ - class NAME##_cus_equal_list {\ - /* friend std::ostream& operator << <> (std::ostream&, \ - const NAME##_cus_equal_list&); */\ - public:\ - const NAME *obj;\ - std::vector *include;\ - bool del_vector;\ - mysqlpp::cchar *delem;\ - mysqlpp::cchar *comp;\ - Manip manip;\ - public:\ - ~NAME##_##cus_equal_list () {if (del_vector) delete include;}\ - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20); \ - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20); \ - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, std::vector *i) \ - : obj(o), include(i), del_vector(false), delem(d), comp(c), manip(m) {}\ - };\ - template int sql_compare_##NAME (const NAME &, const NAME &);\ - struct NAME { \ - T1 I1;\ - T2 I2;\ - T3 I3;\ - T4 I4;\ - T5 I5;\ - T6 I6;\ - T7 I7;\ - T8 I8;\ - T9 I9;\ - T10 I10;\ - T11 I11;\ - T12 I12;\ - T13 I13;\ - T14 I14;\ - T15 I15;\ - T16 I16;\ - T17 I17;\ - T18 I18;\ - T19 I19;\ - T20 I20; \ - NAME () {} \ - NAME (const mysqlpp::Row &row);\ - void set (const mysqlpp::Row &row);\ - sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18, T19, I19, T20, I20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\ - sql_construct_define_##CONTR(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18, T19, I19, T20, I20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\ - static const char *names[];\ - static const char *_table;\ - static const char *& table() {return _table;}\ - NAME##_value_list value_list() const {\ - return value_list(",", mysqlpp::quote);}\ - NAME##_value_list value_list(mysqlpp::cchar *d) const {\ - return value_list(d, mysqlpp::quote);}\ - template \ - NAME##_value_list value_list(mysqlpp::cchar *d, Manip m) const; \ - NAME##_field_list field_list() const {\ - return field_list(",", mysqlpp::do_nothing);}\ - NAME##_field_list field_list(mysqlpp::cchar *d) const {\ - return field_list(d, mysqlpp::do_nothing);}\ - template \ - NAME##_field_list field_list(mysqlpp::cchar *d, Manip m) const; \ - NAME##_equal_list equal_list(mysqlpp::cchar *d = ",", \ - mysqlpp::cchar *c = " = ") const{\ - return equal_list(d, c, mysqlpp::quote);}\ - template \ - NAME##_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) const; \ - /* cus_data */\ - NAME##_cus_value_list value_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false) const {\ - return value_list(",", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20);\ - }\ - NAME##_cus_value_list value_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL) const {\ - return value_list(",", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20);\ - }\ - NAME##_cus_value_list value_list(std::vector *i) const {\ - return value_list(",", mysqlpp::quote, i);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::sql_cmp_type sc) const {\ - return value_list(",", mysqlpp::quote, sc);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false) const {\ - return value_list(d, mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL) const {\ - return value_list(d, mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, \ - std::vector *i) const {\ - return value_list(d, mysqlpp::quote, i);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, \ - mysqlpp::sql_cmp_type sc) const {\ - return value_list(d, mysqlpp::quote, sc);\ - }\ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false) const; \ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL) const; \ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m, \ - std::vector *i) const;\ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m, \ - mysqlpp::sql_cmp_type sc) const;\ - /* cus field */\ - NAME##_cus_field_list field_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false) const {\ - return field_list(",", mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20);\ - }\ - NAME##_cus_field_list field_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL) const {\ - return field_list(",", mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20);\ - }\ - NAME##_cus_field_list field_list(std::vector *i) const {\ - return field_list(",", mysqlpp::do_nothing, i);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::sql_cmp_type sc) const\ - {\ - return field_list(",", mysqlpp::do_nothing, sc);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, \ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false) const {\ - return field_list(d, mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL) const {\ - return field_list(d, mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, \ - std::vector *i) const {\ - return field_list(d, mysqlpp::do_nothing, i);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, \ - mysqlpp::sql_cmp_type sc) const {\ - return field_list(d, mysqlpp::do_nothing, sc);\ - }\ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false) const; \ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL) const; \ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m,\ - std::vector *i) const;\ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m, \ - mysqlpp::sql_cmp_type sc) const;\ - /* cus equal */\ - NAME##_cus_equal_list equal_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false) const {\ - return equal_list(",", " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20);\ - }\ - NAME##_cus_equal_list equal_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL) const {\ - return equal_list(",", " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20);\ - }\ - NAME##_cus_equal_list equal_list(std::vector *i) const {\ - return equal_list(",", " = ", mysqlpp::quote, i);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::sql_cmp_type sc) const {\ - return equal_list(",", " = ", mysqlpp::quote, sc);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false) const {\ - return equal_list(d, " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL) const {\ - return equal_list(d, " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, \ - std::vector *i) const {\ - return equal_list(d, " = ", mysqlpp::quote, i);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, \ - mysqlpp::sql_cmp_type sc) const {\ - return equal_list(d, " = ", mysqlpp::quote, sc);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false) const {\ - return equal_list(d, c, mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL) const {\ - return equal_list(d, c, mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - std::vector *i) const {\ - return equal_list(d, c, mysqlpp::quote, i);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - mysqlpp::sql_cmp_type sc) const {\ - return equal_list(d, c, mysqlpp::quote, sc);\ - }\ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false) const; \ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL) const; \ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - std::vector *i) const;\ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - mysqlpp::sql_cmp_type sc) const;\ - }; \ - MYSQLPP_SSQLS_EXPAND(\ - const char *NAME::names[] = { \ - N1 ,\ - N2 ,\ - N3 ,\ - N4 ,\ - N5 ,\ - N6 ,\ - N7 ,\ - N8 ,\ - N9 ,\ - N10 ,\ - N11 ,\ - N12 ,\ - N13 ,\ - N14 ,\ - N15 ,\ - N16 ,\ - N17 ,\ - N18 ,\ - N19 ,\ - N20 \ - }; \ - const char *NAME::_table = #NAME ;\ - )\ - template \ - NAME##_cus_value_list::NAME##_cus_value_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20) \ - { \ - delem = d;\ - manip = m;\ - del_vector = true;\ - obj = o; \ - include = new std::vector(20, false);\ - if (i1) (*include)[0]=true;\ - if (i2) (*include)[1]=true;\ - if (i3) (*include)[2]=true;\ - if (i4) (*include)[3]=true;\ - if (i5) (*include)[4]=true;\ - if (i6) (*include)[5]=true;\ - if (i7) (*include)[6]=true;\ - if (i8) (*include)[7]=true;\ - if (i9) (*include)[8]=true;\ - if (i10) (*include)[9]=true;\ - if (i11) (*include)[10]=true;\ - if (i12) (*include)[11]=true;\ - if (i13) (*include)[12]=true;\ - if (i14) (*include)[13]=true;\ - if (i15) (*include)[14]=true;\ - if (i16) (*include)[15]=true;\ - if (i17) (*include)[16]=true;\ - if (i18) (*include)[17]=true;\ - if (i19) (*include)[18]=true;\ - if (i20) (*include)[19]=true;\ - } \ - template \ - NAME##_cus_value_list::NAME##_cus_value_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20) { \ - delem = d;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(20, false); \ - if (i1 == NAME##_NULL) return;\ - (*include)[i1]=true;\ - if (i2 == NAME##_NULL) return;\ - (*include)[i2]=true;\ - if (i3 == NAME##_NULL) return;\ - (*include)[i3]=true;\ - if (i4 == NAME##_NULL) return;\ - (*include)[i4]=true;\ - if (i5 == NAME##_NULL) return;\ - (*include)[i5]=true;\ - if (i6 == NAME##_NULL) return;\ - (*include)[i6]=true;\ - if (i7 == NAME##_NULL) return;\ - (*include)[i7]=true;\ - if (i8 == NAME##_NULL) return;\ - (*include)[i8]=true;\ - if (i9 == NAME##_NULL) return;\ - (*include)[i9]=true;\ - if (i10 == NAME##_NULL) return;\ - (*include)[i10]=true;\ - if (i11 == NAME##_NULL) return;\ - (*include)[i11]=true;\ - if (i12 == NAME##_NULL) return;\ - (*include)[i12]=true;\ - if (i13 == NAME##_NULL) return;\ - (*include)[i13]=true;\ - if (i14 == NAME##_NULL) return;\ - (*include)[i14]=true;\ - if (i15 == NAME##_NULL) return;\ - (*include)[i15]=true;\ - if (i16 == NAME##_NULL) return;\ - (*include)[i16]=true;\ - if (i17 == NAME##_NULL) return;\ - (*include)[i17]=true;\ - if (i18 == NAME##_NULL) return;\ - (*include)[i18]=true;\ - if (i19 == NAME##_NULL) return;\ - (*include)[i19]=true;\ - if (i20 == NAME##_NULL) return;\ - (*include)[i20]=true;\ - }\ - template \ - NAME##_cus_field_list::NAME##_cus_field_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20) {\ - delem = d;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(20, false); \ - if (i1) (*include)[0]=true;\ - if (i2) (*include)[1]=true;\ - if (i3) (*include)[2]=true;\ - if (i4) (*include)[3]=true;\ - if (i5) (*include)[4]=true;\ - if (i6) (*include)[5]=true;\ - if (i7) (*include)[6]=true;\ - if (i8) (*include)[7]=true;\ - if (i9) (*include)[8]=true;\ - if (i10) (*include)[9]=true;\ - if (i11) (*include)[10]=true;\ - if (i12) (*include)[11]=true;\ - if (i13) (*include)[12]=true;\ - if (i14) (*include)[13]=true;\ - if (i15) (*include)[14]=true;\ - if (i16) (*include)[15]=true;\ - if (i17) (*include)[16]=true;\ - if (i18) (*include)[17]=true;\ - if (i19) (*include)[18]=true;\ - if (i20) (*include)[19]=true;\ - } \ - template \ - NAME##_cus_field_list::NAME##_cus_field_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20) { \ - delem = d;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(20, false); \ - if (i1 == NAME##_NULL) return;\ - (*include)[i1]=true;\ - if (i2 == NAME##_NULL) return;\ - (*include)[i2]=true;\ - if (i3 == NAME##_NULL) return;\ - (*include)[i3]=true;\ - if (i4 == NAME##_NULL) return;\ - (*include)[i4]=true;\ - if (i5 == NAME##_NULL) return;\ - (*include)[i5]=true;\ - if (i6 == NAME##_NULL) return;\ - (*include)[i6]=true;\ - if (i7 == NAME##_NULL) return;\ - (*include)[i7]=true;\ - if (i8 == NAME##_NULL) return;\ - (*include)[i8]=true;\ - if (i9 == NAME##_NULL) return;\ - (*include)[i9]=true;\ - if (i10 == NAME##_NULL) return;\ - (*include)[i10]=true;\ - if (i11 == NAME##_NULL) return;\ - (*include)[i11]=true;\ - if (i12 == NAME##_NULL) return;\ - (*include)[i12]=true;\ - if (i13 == NAME##_NULL) return;\ - (*include)[i13]=true;\ - if (i14 == NAME##_NULL) return;\ - (*include)[i14]=true;\ - if (i15 == NAME##_NULL) return;\ - (*include)[i15]=true;\ - if (i16 == NAME##_NULL) return;\ - (*include)[i16]=true;\ - if (i17 == NAME##_NULL) return;\ - (*include)[i17]=true;\ - if (i18 == NAME##_NULL) return;\ - (*include)[i18]=true;\ - if (i19 == NAME##_NULL) return;\ - (*include)[i19]=true;\ - if (i20 == NAME##_NULL) return;\ - (*include)[i20]=true;\ - }\ - template \ - NAME##_cus_equal_list::NAME##_cus_equal_list\ - (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20) { \ - delem = d;\ - comp = c;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(20, false); \ - if (i1) (*include)[0]=true;\ - if (i2) (*include)[1]=true;\ - if (i3) (*include)[2]=true;\ - if (i4) (*include)[3]=true;\ - if (i5) (*include)[4]=true;\ - if (i6) (*include)[5]=true;\ - if (i7) (*include)[6]=true;\ - if (i8) (*include)[7]=true;\ - if (i9) (*include)[8]=true;\ - if (i10) (*include)[9]=true;\ - if (i11) (*include)[10]=true;\ - if (i12) (*include)[11]=true;\ - if (i13) (*include)[12]=true;\ - if (i14) (*include)[13]=true;\ - if (i15) (*include)[14]=true;\ - if (i16) (*include)[15]=true;\ - if (i17) (*include)[16]=true;\ - if (i18) (*include)[17]=true;\ - if (i19) (*include)[18]=true;\ - if (i20) (*include)[19]=true;\ - } \ - template \ - NAME##_cus_equal_list::NAME##_cus_equal_list\ - (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20) { \ - delem = d;\ - comp = c;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(20, false); \ - if (i1 == NAME##_NULL) return;\ - (*include)[i1]=true;\ - if (i2 == NAME##_NULL) return;\ - (*include)[i2]=true;\ - if (i3 == NAME##_NULL) return;\ - (*include)[i3]=true;\ - if (i4 == NAME##_NULL) return;\ - (*include)[i4]=true;\ - if (i5 == NAME##_NULL) return;\ - (*include)[i5]=true;\ - if (i6 == NAME##_NULL) return;\ - (*include)[i6]=true;\ - if (i7 == NAME##_NULL) return;\ - (*include)[i7]=true;\ - if (i8 == NAME##_NULL) return;\ - (*include)[i8]=true;\ - if (i9 == NAME##_NULL) return;\ - (*include)[i9]=true;\ - if (i10 == NAME##_NULL) return;\ - (*include)[i10]=true;\ - if (i11 == NAME##_NULL) return;\ - (*include)[i11]=true;\ - if (i12 == NAME##_NULL) return;\ - (*include)[i12]=true;\ - if (i13 == NAME##_NULL) return;\ - (*include)[i13]=true;\ - if (i14 == NAME##_NULL) return;\ - (*include)[i14]=true;\ - if (i15 == NAME##_NULL) return;\ - (*include)[i15]=true;\ - if (i16 == NAME##_NULL) return;\ - (*include)[i16]=true;\ - if (i17 == NAME##_NULL) return;\ - (*include)[i17]=true;\ - if (i18 == NAME##_NULL) return;\ - (*include)[i18]=true;\ - if (i19 == NAME##_NULL) return;\ - (*include)[i19]=true;\ - if (i20 == NAME##_NULL) return;\ - (*include)[i20]=true;\ - }\ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_value_list& obj) { \ - s << obj.manip << obj.obj->I1 << obj.delem;\ - s << obj.manip << obj.obj->I2 << obj.delem;\ - s << obj.manip << obj.obj->I3 << obj.delem;\ - s << obj.manip << obj.obj->I4 << obj.delem;\ - s << obj.manip << obj.obj->I5 << obj.delem;\ - s << obj.manip << obj.obj->I6 << obj.delem;\ - s << obj.manip << obj.obj->I7 << obj.delem;\ - s << obj.manip << obj.obj->I8 << obj.delem;\ - s << obj.manip << obj.obj->I9 << obj.delem;\ - s << obj.manip << obj.obj->I10 << obj.delem;\ - s << obj.manip << obj.obj->I11 << obj.delem;\ - s << obj.manip << obj.obj->I12 << obj.delem;\ - s << obj.manip << obj.obj->I13 << obj.delem;\ - s << obj.manip << obj.obj->I14 << obj.delem;\ - s << obj.manip << obj.obj->I15 << obj.delem;\ - s << obj.manip << obj.obj->I16 << obj.delem;\ - s << obj.manip << obj.obj->I17 << obj.delem;\ - s << obj.manip << obj.obj->I18 << obj.delem;\ - s << obj.manip << obj.obj->I19 << obj.delem;\ - s << obj.manip << obj.obj->I20; \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_field_list& obj) { \ - s << obj.manip << obj.obj->names[0] << obj.delem;\ - s << obj.manip << obj.obj->names[1] << obj.delem;\ - s << obj.manip << obj.obj->names[2] << obj.delem;\ - s << obj.manip << obj.obj->names[3] << obj.delem;\ - s << obj.manip << obj.obj->names[4] << obj.delem;\ - s << obj.manip << obj.obj->names[5] << obj.delem;\ - s << obj.manip << obj.obj->names[6] << obj.delem;\ - s << obj.manip << obj.obj->names[7] << obj.delem;\ - s << obj.manip << obj.obj->names[8] << obj.delem;\ - s << obj.manip << obj.obj->names[9] << obj.delem;\ - s << obj.manip << obj.obj->names[10] << obj.delem;\ - s << obj.manip << obj.obj->names[11] << obj.delem;\ - s << obj.manip << obj.obj->names[12] << obj.delem;\ - s << obj.manip << obj.obj->names[13] << obj.delem;\ - s << obj.manip << obj.obj->names[14] << obj.delem;\ - s << obj.manip << obj.obj->names[15] << obj.delem;\ - s << obj.manip << obj.obj->names[16] << obj.delem;\ - s << obj.manip << obj.obj->names[17] << obj.delem;\ - s << obj.manip << obj.obj->names[18] << obj.delem;\ - s << obj.manip << obj.obj->names[19]; \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_equal_list& obj) { \ - s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1 << obj.delem;\ - s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2 << obj.delem;\ - s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3 << obj.delem;\ - s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4 << obj.delem;\ - s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5 << obj.delem;\ - s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6 << obj.delem;\ - s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->I7 << obj.delem;\ - s << obj.obj->names[7] << obj.comp << obj.manip << obj.obj->I8 << obj.delem;\ - s << obj.obj->names[8] << obj.comp << obj.manip << obj.obj->I9 << obj.delem;\ - s << obj.obj->names[9] << obj.comp << obj.manip << obj.obj->I10 << obj.delem;\ - s << obj.obj->names[10] << obj.comp << obj.manip << obj.obj->I11 << obj.delem;\ - s << obj.obj->names[11] << obj.comp << obj.manip << obj.obj->I12 << obj.delem;\ - s << obj.obj->names[12] << obj.comp << obj.manip << obj.obj->I13 << obj.delem;\ - s << obj.obj->names[13] << obj.comp << obj.manip << obj.obj->I14 << obj.delem;\ - s << obj.obj->names[14] << obj.comp << obj.manip << obj.obj->I15 << obj.delem;\ - s << obj.obj->names[15] << obj.comp << obj.manip << obj.obj->I16 << obj.delem;\ - s << obj.obj->names[16] << obj.comp << obj.manip << obj.obj->I17 << obj.delem;\ - s << obj.obj->names[17] << obj.comp << obj.manip << obj.obj->I18 << obj.delem;\ - s << obj.obj->names[18] << obj.comp << obj.manip << obj.obj->I19 << obj.delem;\ - s << obj.obj->names[19] << obj.comp << obj.manip << obj.obj->I20; \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_cus_value_list& obj) { \ - bool before = false; \ - if ((*obj.include)[0]) { \ - s << obj.manip << obj.obj->I1;\ - before = true; \ - } \ - if ((*obj.include)[1]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I2;\ - before = true; \ - } \ - if ((*obj.include)[2]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I3;\ - before = true; \ - } \ - if ((*obj.include)[3]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I4;\ - before = true; \ - } \ - if ((*obj.include)[4]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I5;\ - before = true; \ - } \ - if ((*obj.include)[5]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I6;\ - before = true; \ - } \ - if ((*obj.include)[6]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I7;\ - before = true; \ - } \ - if ((*obj.include)[7]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I8;\ - before = true; \ - } \ - if ((*obj.include)[8]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I9;\ - before = true; \ - } \ - if ((*obj.include)[9]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I10;\ - before = true; \ - } \ - if ((*obj.include)[10]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I11;\ - before = true; \ - } \ - if ((*obj.include)[11]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I12;\ - before = true; \ - } \ - if ((*obj.include)[12]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I13;\ - before = true; \ - } \ - if ((*obj.include)[13]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I14;\ - before = true; \ - } \ - if ((*obj.include)[14]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I15;\ - before = true; \ - } \ - if ((*obj.include)[15]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I16;\ - before = true; \ - } \ - if ((*obj.include)[16]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I17;\ - before = true; \ - } \ - if ((*obj.include)[17]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I18;\ - before = true; \ - } \ - if ((*obj.include)[18]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I19;\ - before = true; \ - } \ - if ((*obj.include)[19]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I20;\ - } \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_cus_field_list& obj) { \ - bool before = false; \ - if ((*obj.include)[0]) { \ - s << obj.manip << obj.obj->names[0];\ - before = true; \ - } \ - if ((*obj.include)[1]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[1];\ - before = true; \ - } \ - if ((*obj.include)[2]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[2];\ - before = true; \ - } \ - if ((*obj.include)[3]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[3];\ - before = true; \ - } \ - if ((*obj.include)[4]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[4];\ - before = true; \ - } \ - if ((*obj.include)[5]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[5];\ - before = true; \ - } \ - if ((*obj.include)[6]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[6];\ - before = true; \ - } \ - if ((*obj.include)[7]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[7];\ - before = true; \ - } \ - if ((*obj.include)[8]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[8];\ - before = true; \ - } \ - if ((*obj.include)[9]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[9];\ - before = true; \ - } \ - if ((*obj.include)[10]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[10];\ - before = true; \ - } \ - if ((*obj.include)[11]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[11];\ - before = true; \ - } \ - if ((*obj.include)[12]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[12];\ - before = true; \ - } \ - if ((*obj.include)[13]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[13];\ - before = true; \ - } \ - if ((*obj.include)[14]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[14];\ - before = true; \ - } \ - if ((*obj.include)[15]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[15];\ - before = true; \ - } \ - if ((*obj.include)[16]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[16];\ - before = true; \ - } \ - if ((*obj.include)[17]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[17];\ - before = true; \ - } \ - if ((*obj.include)[18]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[18];\ - before = true; \ - } \ - if ((*obj.include)[19]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[19];\ - } \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_cus_equal_list& obj) { \ - bool before = false; \ - if ((*obj.include)[0]) { \ - s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1;\ - before = true; \ - } \ - if ((*obj.include)[1]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2;\ - before = true; \ - } \ - if ((*obj.include)[2]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3;\ - before = true; \ - } \ - if ((*obj.include)[3]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4;\ - before = true; \ - } \ - if ((*obj.include)[4]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5;\ - before = true; \ - } \ - if ((*obj.include)[5]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6;\ - before = true; \ - } \ - if ((*obj.include)[6]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->I7;\ - before = true; \ - } \ - if ((*obj.include)[7]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[7] << obj.comp << obj.manip << obj.obj->I8;\ - before = true; \ - } \ - if ((*obj.include)[8]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[8] << obj.comp << obj.manip << obj.obj->I9;\ - before = true; \ - } \ - if ((*obj.include)[9]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[9] << obj.comp << obj.manip << obj.obj->I10;\ - before = true; \ - } \ - if ((*obj.include)[10]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[10] << obj.comp << obj.manip << obj.obj->I11;\ - before = true; \ - } \ - if ((*obj.include)[11]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[11] << obj.comp << obj.manip << obj.obj->I12;\ - before = true; \ - } \ - if ((*obj.include)[12]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[12] << obj.comp << obj.manip << obj.obj->I13;\ - before = true; \ - } \ - if ((*obj.include)[13]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[13] << obj.comp << obj.manip << obj.obj->I14;\ - before = true; \ - } \ - if ((*obj.include)[14]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[14] << obj.comp << obj.manip << obj.obj->I15;\ - before = true; \ - } \ - if ((*obj.include)[15]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[15] << obj.comp << obj.manip << obj.obj->I16;\ - before = true; \ - } \ - if ((*obj.include)[16]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[16] << obj.comp << obj.manip << obj.obj->I17;\ - before = true; \ - } \ - if ((*obj.include)[17]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[17] << obj.comp << obj.manip << obj.obj->I18;\ - before = true; \ - } \ - if ((*obj.include)[18]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[18] << obj.comp << obj.manip << obj.obj->I19;\ - before = true; \ - } \ - if ((*obj.include)[19]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[19] << obj.comp << obj.manip << obj.obj->I20;\ - } \ - return s; \ - } \ - template \ - inline NAME##_value_list NAME::value_list(mysqlpp::cchar *d, Manip m) const { \ - return NAME##_value_list (this, d, m); \ - } \ - template \ - inline NAME##_field_list NAME::field_list(mysqlpp::cchar *d, Manip m) const { \ - return NAME##_field_list (this, d, m); \ - } \ - template \ - inline NAME##_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) const { \ - return NAME##_equal_list (this, d, c, m); \ - } \ - template \ - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20) const {\ - return NAME##_cus_value_list (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20); \ - } \ - template \ - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20) const { \ - return NAME##_cus_field_list (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20); \ - } \ - template \ - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m,\ - bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20) const { \ - return NAME##_cus_equal_list (this, d, c, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20); \ - } \ - template \ - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20) const { \ - return NAME##_cus_value_list (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20); \ - } \ - template \ - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20) const {\ - return NAME##_cus_field_list (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20); \ - } \ - template \ - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20) const { \ - return NAME##_cus_equal_list (this, d, c, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20); \ - } \ - template \ - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m,\ - std::vector *i) const {\ - return NAME##_cus_value_list (this, d, m, i);\ - }\ - template \ - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m,\ - std::vector *i) const {\ - return NAME##_cus_field_list (this, d, m, i);\ - }\ - template \ - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m,\ - std::vector *i) const {\ - return NAME##_cus_equal_list (this, d, c, m, i);\ - }\ - template \ - inline NAME##_cus_value_list \ - NAME::value_list(mysqlpp::cchar *d, Manip m, mysqlpp::sql_cmp_type /*sc*/) const {\ - sql_compare_type_def_##CMP (NAME, value, NUM);\ - }\ - template \ - inline NAME##_cus_field_list \ - NAME::field_list(mysqlpp::cchar *d, Manip m, mysqlpp::sql_cmp_type /*sc*/) const {\ - sql_compare_type_def_##CMP (NAME, field, NUM);\ - }\ - template \ - inline NAME##_cus_equal_list \ - NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, mysqlpp::sql_cmp_type /*sc*/) const {\ - sql_compare_type_defe_##CMP (NAME, equal, NUM);\ - }\ - template \ - void populate_##NAME (NAME *s, const mysqlpp::Row &row) { \ - s->I1 = static_cast(row.at(O1));\ - s->I2 = static_cast(row.at(O2));\ - s->I3 = static_cast(row.at(O3));\ - s->I4 = static_cast(row.at(O4));\ - s->I5 = static_cast(row.at(O5));\ - s->I6 = static_cast(row.at(O6));\ - s->I7 = static_cast(row.at(O7));\ - s->I8 = static_cast(row.at(O8));\ - s->I9 = static_cast(row.at(O9));\ - s->I10 = static_cast(row.at(O10));\ - s->I11 = static_cast(row.at(O11));\ - s->I12 = static_cast(row.at(O12));\ - s->I13 = static_cast(row.at(O13));\ - s->I14 = static_cast(row.at(O14));\ - s->I15 = static_cast(row.at(O15));\ - s->I16 = static_cast(row.at(O16));\ - s->I17 = static_cast(row.at(O17));\ - s->I18 = static_cast(row.at(O18));\ - s->I19 = static_cast(row.at(O19));\ - s->I20 = static_cast(row.at(O20));\ - } \ - inline NAME::NAME (const mysqlpp::Row &row) \ - {populate_##NAME(this, row);}\ - inline void NAME::set (const mysqlpp::Row &row)\ - {populate_##NAME(this, row);}\ - sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, I11, I12, I13, I14, I15, I16, I17, I18, I19, I20, 0, 0, 0, 0, 0 ) - -#define sql_create_basic_20(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18, T19, I19, T20, I20) \ - sql_create_basic_c_order_20(NAME, CMP, CONTR, T1, I1, 0, T2, I2, 1, T3, I3, 2, T4, I4, 3, T5, I5, 4, T6, I6, 5, T7, I7, 6, T8, I8, 7, T9, I9, 8, T10, I10, 9, T11, I11, 10, T12, I12, 11, T13, I13, 12, T14, I14, 13, T15, I15, 14, T16, I16, 15, T17, I17, 16, T18, I18, 17, T19, I19, 18, T20, I20, 19) - -#define sql_create_20(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18, T19, I19, T20, I20) \ - sql_create_complete_20(NAME, CMP, CONTR, T1, I1, #I1, 0, T2, I2, #I2, 1, T3, I3, #I3, 2, T4, I4, #I4, 3, T5, I5, #I5, 4, T6, I6, #I6, 5, T7, I7, #I7, 6, T8, I8, #I8, 7, T9, I9, #I9, 8, T10, I10, #I10, 9, T11, I11, #I11, 10, T12, I12, #I12, 11, T13, I13, #I13, 12, T14, I14, #I14, 13, T15, I15, #I15, 14, T16, I16, #I16, 15, T17, I17, #I17, 16, T18, I18, #I18, 17, T19, I19, #I19, 18, T20, I20, #I20, 19) \ - -#define sql_create_c_order_20(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6, T7, I7, O7, T8, I8, O8, T9, I9, O9, T10, I10, O10, T11, I11, O11, T12, I12, O12, T13, I13, O13, T14, I14, O14, T15, I15, O15, T16, I16, O16, T17, I17, O17, T18, I18, O18, T19, I19, O19, T20, I20, O20) \ - sql_create_complete_20(NAME, CMP, CONTR, T1, I1, #I1, O1, T2, I2, #I2, O2, T3, I3, #I3, O3, T4, I4, #I4, O4, T5, I5, #I5, O5, T6, I6, #I6, O6, T7, I7, #I7, O7, T8, I8, #I8, O8, T9, I9, #I9, O9, T10, I10, #I10, O10, T11, I11, #I11, O11, T12, I12, #I12, O12, T13, I13, #I13, O13, T14, I14, #I14, O14, T15, I15, #I15, O15, T16, I16, #I16, O16, T17, I17, #I17, O17, T18, I18, #I18, O18, T19, I19, #I19, O19, T20, I20, #I20, O20) - -#define sql_create_c_names_20(NAME, CMP, CONTR, T1, I1, N1, T2, I2, N2, T3, I3, N3, T4, I4, N4, T5, I5, N5, T6, I6, N6, T7, I7, N7, T8, I8, N8, T9, I9, N9, T10, I10, N10, T11, I11, N11, T12, I12, N12, T13, I13, N13, T14, I14, N14, T15, I15, N15, T16, I16, N16, T17, I17, N17, T18, I18, N18, T19, I19, N19, T20, I20, N20) \ - sql_create_complete_20(NAME, CMP, CONTR, T1, I1, N1, 0, T2, I2, N2, 1, T3, I3, N3, 2, T4, I4, N4, 3, T5, I5, N5, 4, T6, I6, N6, 5, T7, I7, N7, 6, T8, I8, N8, 7, T9, I9, N9, 8, T10, I10, N10, 9, T11, I11, N11, 10, T12, I12, N12, 11, T13, I13, N13, 12, T14, I14, N14, 13, T15, I15, N15, 14, T16, I16, N16, 15, T17, I17, N17, 16, T18, I18, N18, 17, T19, I19, N19, 18, T20, I20, N20, 19) - -// --------------------------------------------------- -// End Create 20 -// --------------------------------------------------- - -// --------------------------------------------------- -// Begin Create 21 -// --------------------------------------------------- -#define sql_create_basic_c_order_21(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6, T7, I7, O7, T8, I8, O8, T9, I9, O9, T10, I10, O10, T11, I11, O11, T12, I12, O12, T13, I13, O13, T14, I14, O14, T15, I15, O15, T16, I16, O16, T17, I17, O17, T18, I18, O18, T19, I19, O19, T20, I20, O20, T21, I21, O21)\ - struct NAME; \ - template int sql_compare_##NAME (const NAME &, const NAME &);\ - struct NAME { \ - T1 I1;\ - T2 I2;\ - T3 I3;\ - T4 I4;\ - T5 I5;\ - T6 I6;\ - T7 I7;\ - T8 I8;\ - T9 I9;\ - T10 I10;\ - T11 I11;\ - T12 I12;\ - T13 I13;\ - T14 I14;\ - T15 I15;\ - T16 I16;\ - T17 I17;\ - T18 I18;\ - T19 I19;\ - T20 I20;\ - T21 I21; \ - NAME () {} \ - NAME (const mysqlpp::Row &row);\ - sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18, T19, I19, T20, I20, T21, I21, 0, 0, 0, 0, 0, 0, 0, 0)\ - }; \ - template \ - void populate_##NAME (NAME *s, const mysqlpp::Row &row) { \ - s->I1 = static_cast(row.at(O1));\ - s->I2 = static_cast(row.at(O2));\ - s->I3 = static_cast(row.at(O3));\ - s->I4 = static_cast(row.at(O4));\ - s->I5 = static_cast(row.at(O5));\ - s->I6 = static_cast(row.at(O6));\ - s->I7 = static_cast(row.at(O7));\ - s->I8 = static_cast(row.at(O8));\ - s->I9 = static_cast(row.at(O9));\ - s->I10 = static_cast(row.at(O10));\ - s->I11 = static_cast(row.at(O11));\ - s->I12 = static_cast(row.at(O12));\ - s->I13 = static_cast(row.at(O13));\ - s->I14 = static_cast(row.at(O14));\ - s->I15 = static_cast(row.at(O15));\ - s->I16 = static_cast(row.at(O16));\ - s->I17 = static_cast(row.at(O17));\ - s->I18 = static_cast(row.at(O18));\ - s->I19 = static_cast(row.at(O19));\ - s->I20 = static_cast(row.at(O20));\ - s->I21 = static_cast(row.at(O21)); \ - } \ - inline NAME::NAME (const mysqlpp::Row &row) \ - {populate_##NAME(this, row);} \ - sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, I11, I12, I13, I14, I15, I16, I17, I18, I19, I20, I21, 0, 0, 0, 0 ) - -#define sql_create_complete_21(NAME, CMP, CONTR, T1, I1, N1, O1, T2, I2, N2, O2, T3, I3, N3, O3, T4, I4, N4, O4, T5, I5, N5, O5, T6, I6, N6, O6, T7, I7, N7, O7, T8, I8, N8, O8, T9, I9, N9, O9, T10, I10, N10, O10, T11, I11, N11, O11, T12, I12, N12, O12, T13, I13, N13, O13, T14, I14, N14, O14, T15, I15, N15, O15, T16, I16, N16, O16, T17, I17, N17, O17, T18, I18, N18, O18, T19, I19, N19, O19, T20, I20, N20, O20, T21, I21, N21, O21) \ - struct NAME; \ - enum NAME##_enum { \ - NAME##_##I1,\ - NAME##_##I2,\ - NAME##_##I3,\ - NAME##_##I4,\ - NAME##_##I5,\ - NAME##_##I6,\ - NAME##_##I7,\ - NAME##_##I8,\ - NAME##_##I9,\ - NAME##_##I10,\ - NAME##_##I11,\ - NAME##_##I12,\ - NAME##_##I13,\ - NAME##_##I14,\ - NAME##_##I15,\ - NAME##_##I16,\ - NAME##_##I17,\ - NAME##_##I18,\ - NAME##_##I19,\ - NAME##_##I20,\ - NAME##_##I21 \ - ,NAME##_NULL \ - }; \ - template \ - class NAME##_value_list { \ - /*friend std::ostream& operator << <> (std::ostream&, const NAME##_value_list&); */\ - public: \ - const NAME *obj;\ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - NAME##_value_list (const NAME *o, mysqlpp::cchar *d, Manip m) \ - : obj(o), delem(d), manip(m) {} \ - };\ - template \ - class NAME##_##field_list {\ - /* friend std::ostream& operator << <> (std::ostream&, const NAME##_field_list&); */\ - public: \ - const NAME *obj; \ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - NAME##_field_list (const NAME *o, mysqlpp::cchar *d, Manip m) \ - : obj(o), delem(d), manip(m) {} \ - };\ - template \ - class NAME##_equal_list { \ - /* friend std::ostream& operator << <> (std::ostream&, const NAME##_equal_list&); */\ - public: \ - const NAME *obj;\ - mysqlpp::cchar *delem;\ - mysqlpp::cchar *comp;\ - Manip manip;\ - public: \ - NAME##_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) \ - : obj(o), delem(d), comp(c), manip(m) {}\ - };\ - template \ - class NAME##_cus_value_list {\ - /* friend std::ostream& operator << <> (std::ostream&, \ - const NAME##_cus_value_list&); */\ - public:\ - const NAME *obj;\ - std::vector *include;\ - bool del_vector;\ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - ~NAME##_cus_value_list () {if (del_vector) delete include;} \ - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21);\ - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21); \ - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m ,std::vector* i)\ - : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\ - };\ - template \ - class NAME##_cus_field_list { \ - /* friend std::ostream& operator << <> (std::ostream&, \ - const NAME##_cus_field_list&); */\ - public:\ - const NAME *obj; \ - std::vector *include; \ - bool del_vector; \ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - ~NAME##_cus_field_list () {if (del_vector) delete include;} \ - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21); \ - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21); \ - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, std::vector *i) \ - : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\ - };\ - template \ - class NAME##_cus_equal_list {\ - /* friend std::ostream& operator << <> (std::ostream&, \ - const NAME##_cus_equal_list&); */\ - public:\ - const NAME *obj;\ - std::vector *include;\ - bool del_vector;\ - mysqlpp::cchar *delem;\ - mysqlpp::cchar *comp;\ - Manip manip;\ - public:\ - ~NAME##_##cus_equal_list () {if (del_vector) delete include;}\ - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21); \ - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21); \ - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, std::vector *i) \ - : obj(o), include(i), del_vector(false), delem(d), comp(c), manip(m) {}\ - };\ - template int sql_compare_##NAME (const NAME &, const NAME &);\ - struct NAME { \ - T1 I1;\ - T2 I2;\ - T3 I3;\ - T4 I4;\ - T5 I5;\ - T6 I6;\ - T7 I7;\ - T8 I8;\ - T9 I9;\ - T10 I10;\ - T11 I11;\ - T12 I12;\ - T13 I13;\ - T14 I14;\ - T15 I15;\ - T16 I16;\ - T17 I17;\ - T18 I18;\ - T19 I19;\ - T20 I20;\ - T21 I21; \ - NAME () {} \ - NAME (const mysqlpp::Row &row);\ - void set (const mysqlpp::Row &row);\ - sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18, T19, I19, T20, I20, T21, I21, 0, 0, 0, 0, 0, 0, 0, 0)\ - sql_construct_define_##CONTR(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18, T19, I19, T20, I20, T21, I21, 0, 0, 0, 0, 0, 0, 0, 0)\ - static const char *names[];\ - static const char *_table;\ - static const char *& table() {return _table;}\ - NAME##_value_list value_list() const {\ - return value_list(",", mysqlpp::quote);}\ - NAME##_value_list value_list(mysqlpp::cchar *d) const {\ - return value_list(d, mysqlpp::quote);}\ - template \ - NAME##_value_list value_list(mysqlpp::cchar *d, Manip m) const; \ - NAME##_field_list field_list() const {\ - return field_list(",", mysqlpp::do_nothing);}\ - NAME##_field_list field_list(mysqlpp::cchar *d) const {\ - return field_list(d, mysqlpp::do_nothing);}\ - template \ - NAME##_field_list field_list(mysqlpp::cchar *d, Manip m) const; \ - NAME##_equal_list equal_list(mysqlpp::cchar *d = ",", \ - mysqlpp::cchar *c = " = ") const{\ - return equal_list(d, c, mysqlpp::quote);}\ - template \ - NAME##_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) const; \ - /* cus_data */\ - NAME##_cus_value_list value_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false) const {\ - return value_list(",", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21);\ - }\ - NAME##_cus_value_list value_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL) const {\ - return value_list(",", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21);\ - }\ - NAME##_cus_value_list value_list(std::vector *i) const {\ - return value_list(",", mysqlpp::quote, i);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::sql_cmp_type sc) const {\ - return value_list(",", mysqlpp::quote, sc);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false) const {\ - return value_list(d, mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL) const {\ - return value_list(d, mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, \ - std::vector *i) const {\ - return value_list(d, mysqlpp::quote, i);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, \ - mysqlpp::sql_cmp_type sc) const {\ - return value_list(d, mysqlpp::quote, sc);\ - }\ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false) const; \ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL) const; \ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m, \ - std::vector *i) const;\ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m, \ - mysqlpp::sql_cmp_type sc) const;\ - /* cus field */\ - NAME##_cus_field_list field_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false) const {\ - return field_list(",", mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21);\ - }\ - NAME##_cus_field_list field_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL) const {\ - return field_list(",", mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21);\ - }\ - NAME##_cus_field_list field_list(std::vector *i) const {\ - return field_list(",", mysqlpp::do_nothing, i);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::sql_cmp_type sc) const\ - {\ - return field_list(",", mysqlpp::do_nothing, sc);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, \ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false) const {\ - return field_list(d, mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL) const {\ - return field_list(d, mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, \ - std::vector *i) const {\ - return field_list(d, mysqlpp::do_nothing, i);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, \ - mysqlpp::sql_cmp_type sc) const {\ - return field_list(d, mysqlpp::do_nothing, sc);\ - }\ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false) const; \ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL) const; \ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m,\ - std::vector *i) const;\ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m, \ - mysqlpp::sql_cmp_type sc) const;\ - /* cus equal */\ - NAME##_cus_equal_list equal_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false) const {\ - return equal_list(",", " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21);\ - }\ - NAME##_cus_equal_list equal_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL) const {\ - return equal_list(",", " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21);\ - }\ - NAME##_cus_equal_list equal_list(std::vector *i) const {\ - return equal_list(",", " = ", mysqlpp::quote, i);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::sql_cmp_type sc) const {\ - return equal_list(",", " = ", mysqlpp::quote, sc);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false) const {\ - return equal_list(d, " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL) const {\ - return equal_list(d, " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, \ - std::vector *i) const {\ - return equal_list(d, " = ", mysqlpp::quote, i);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, \ - mysqlpp::sql_cmp_type sc) const {\ - return equal_list(d, " = ", mysqlpp::quote, sc);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false) const {\ - return equal_list(d, c, mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL) const {\ - return equal_list(d, c, mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - std::vector *i) const {\ - return equal_list(d, c, mysqlpp::quote, i);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - mysqlpp::sql_cmp_type sc) const {\ - return equal_list(d, c, mysqlpp::quote, sc);\ - }\ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false) const; \ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL) const; \ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - std::vector *i) const;\ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - mysqlpp::sql_cmp_type sc) const;\ - }; \ - MYSQLPP_SSQLS_EXPAND(\ - const char *NAME::names[] = { \ - N1 ,\ - N2 ,\ - N3 ,\ - N4 ,\ - N5 ,\ - N6 ,\ - N7 ,\ - N8 ,\ - N9 ,\ - N10 ,\ - N11 ,\ - N12 ,\ - N13 ,\ - N14 ,\ - N15 ,\ - N16 ,\ - N17 ,\ - N18 ,\ - N19 ,\ - N20 ,\ - N21 \ - }; \ - const char *NAME::_table = #NAME ;\ - )\ - template \ - NAME##_cus_value_list::NAME##_cus_value_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21) \ - { \ - delem = d;\ - manip = m;\ - del_vector = true;\ - obj = o; \ - include = new std::vector(21, false);\ - if (i1) (*include)[0]=true;\ - if (i2) (*include)[1]=true;\ - if (i3) (*include)[2]=true;\ - if (i4) (*include)[3]=true;\ - if (i5) (*include)[4]=true;\ - if (i6) (*include)[5]=true;\ - if (i7) (*include)[6]=true;\ - if (i8) (*include)[7]=true;\ - if (i9) (*include)[8]=true;\ - if (i10) (*include)[9]=true;\ - if (i11) (*include)[10]=true;\ - if (i12) (*include)[11]=true;\ - if (i13) (*include)[12]=true;\ - if (i14) (*include)[13]=true;\ - if (i15) (*include)[14]=true;\ - if (i16) (*include)[15]=true;\ - if (i17) (*include)[16]=true;\ - if (i18) (*include)[17]=true;\ - if (i19) (*include)[18]=true;\ - if (i20) (*include)[19]=true;\ - if (i21) (*include)[20]=true;\ - } \ - template \ - NAME##_cus_value_list::NAME##_cus_value_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21) { \ - delem = d;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(21, false); \ - if (i1 == NAME##_NULL) return;\ - (*include)[i1]=true;\ - if (i2 == NAME##_NULL) return;\ - (*include)[i2]=true;\ - if (i3 == NAME##_NULL) return;\ - (*include)[i3]=true;\ - if (i4 == NAME##_NULL) return;\ - (*include)[i4]=true;\ - if (i5 == NAME##_NULL) return;\ - (*include)[i5]=true;\ - if (i6 == NAME##_NULL) return;\ - (*include)[i6]=true;\ - if (i7 == NAME##_NULL) return;\ - (*include)[i7]=true;\ - if (i8 == NAME##_NULL) return;\ - (*include)[i8]=true;\ - if (i9 == NAME##_NULL) return;\ - (*include)[i9]=true;\ - if (i10 == NAME##_NULL) return;\ - (*include)[i10]=true;\ - if (i11 == NAME##_NULL) return;\ - (*include)[i11]=true;\ - if (i12 == NAME##_NULL) return;\ - (*include)[i12]=true;\ - if (i13 == NAME##_NULL) return;\ - (*include)[i13]=true;\ - if (i14 == NAME##_NULL) return;\ - (*include)[i14]=true;\ - if (i15 == NAME##_NULL) return;\ - (*include)[i15]=true;\ - if (i16 == NAME##_NULL) return;\ - (*include)[i16]=true;\ - if (i17 == NAME##_NULL) return;\ - (*include)[i17]=true;\ - if (i18 == NAME##_NULL) return;\ - (*include)[i18]=true;\ - if (i19 == NAME##_NULL) return;\ - (*include)[i19]=true;\ - if (i20 == NAME##_NULL) return;\ - (*include)[i20]=true;\ - if (i21 == NAME##_NULL) return;\ - (*include)[i21]=true;\ - }\ - template \ - NAME##_cus_field_list::NAME##_cus_field_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21) {\ - delem = d;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(21, false); \ - if (i1) (*include)[0]=true;\ - if (i2) (*include)[1]=true;\ - if (i3) (*include)[2]=true;\ - if (i4) (*include)[3]=true;\ - if (i5) (*include)[4]=true;\ - if (i6) (*include)[5]=true;\ - if (i7) (*include)[6]=true;\ - if (i8) (*include)[7]=true;\ - if (i9) (*include)[8]=true;\ - if (i10) (*include)[9]=true;\ - if (i11) (*include)[10]=true;\ - if (i12) (*include)[11]=true;\ - if (i13) (*include)[12]=true;\ - if (i14) (*include)[13]=true;\ - if (i15) (*include)[14]=true;\ - if (i16) (*include)[15]=true;\ - if (i17) (*include)[16]=true;\ - if (i18) (*include)[17]=true;\ - if (i19) (*include)[18]=true;\ - if (i20) (*include)[19]=true;\ - if (i21) (*include)[20]=true;\ - } \ - template \ - NAME##_cus_field_list::NAME##_cus_field_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21) { \ - delem = d;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(21, false); \ - if (i1 == NAME##_NULL) return;\ - (*include)[i1]=true;\ - if (i2 == NAME##_NULL) return;\ - (*include)[i2]=true;\ - if (i3 == NAME##_NULL) return;\ - (*include)[i3]=true;\ - if (i4 == NAME##_NULL) return;\ - (*include)[i4]=true;\ - if (i5 == NAME##_NULL) return;\ - (*include)[i5]=true;\ - if (i6 == NAME##_NULL) return;\ - (*include)[i6]=true;\ - if (i7 == NAME##_NULL) return;\ - (*include)[i7]=true;\ - if (i8 == NAME##_NULL) return;\ - (*include)[i8]=true;\ - if (i9 == NAME##_NULL) return;\ - (*include)[i9]=true;\ - if (i10 == NAME##_NULL) return;\ - (*include)[i10]=true;\ - if (i11 == NAME##_NULL) return;\ - (*include)[i11]=true;\ - if (i12 == NAME##_NULL) return;\ - (*include)[i12]=true;\ - if (i13 == NAME##_NULL) return;\ - (*include)[i13]=true;\ - if (i14 == NAME##_NULL) return;\ - (*include)[i14]=true;\ - if (i15 == NAME##_NULL) return;\ - (*include)[i15]=true;\ - if (i16 == NAME##_NULL) return;\ - (*include)[i16]=true;\ - if (i17 == NAME##_NULL) return;\ - (*include)[i17]=true;\ - if (i18 == NAME##_NULL) return;\ - (*include)[i18]=true;\ - if (i19 == NAME##_NULL) return;\ - (*include)[i19]=true;\ - if (i20 == NAME##_NULL) return;\ - (*include)[i20]=true;\ - if (i21 == NAME##_NULL) return;\ - (*include)[i21]=true;\ - }\ - template \ - NAME##_cus_equal_list::NAME##_cus_equal_list\ - (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21) { \ - delem = d;\ - comp = c;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(21, false); \ - if (i1) (*include)[0]=true;\ - if (i2) (*include)[1]=true;\ - if (i3) (*include)[2]=true;\ - if (i4) (*include)[3]=true;\ - if (i5) (*include)[4]=true;\ - if (i6) (*include)[5]=true;\ - if (i7) (*include)[6]=true;\ - if (i8) (*include)[7]=true;\ - if (i9) (*include)[8]=true;\ - if (i10) (*include)[9]=true;\ - if (i11) (*include)[10]=true;\ - if (i12) (*include)[11]=true;\ - if (i13) (*include)[12]=true;\ - if (i14) (*include)[13]=true;\ - if (i15) (*include)[14]=true;\ - if (i16) (*include)[15]=true;\ - if (i17) (*include)[16]=true;\ - if (i18) (*include)[17]=true;\ - if (i19) (*include)[18]=true;\ - if (i20) (*include)[19]=true;\ - if (i21) (*include)[20]=true;\ - } \ - template \ - NAME##_cus_equal_list::NAME##_cus_equal_list\ - (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21) { \ - delem = d;\ - comp = c;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(21, false); \ - if (i1 == NAME##_NULL) return;\ - (*include)[i1]=true;\ - if (i2 == NAME##_NULL) return;\ - (*include)[i2]=true;\ - if (i3 == NAME##_NULL) return;\ - (*include)[i3]=true;\ - if (i4 == NAME##_NULL) return;\ - (*include)[i4]=true;\ - if (i5 == NAME##_NULL) return;\ - (*include)[i5]=true;\ - if (i6 == NAME##_NULL) return;\ - (*include)[i6]=true;\ - if (i7 == NAME##_NULL) return;\ - (*include)[i7]=true;\ - if (i8 == NAME##_NULL) return;\ - (*include)[i8]=true;\ - if (i9 == NAME##_NULL) return;\ - (*include)[i9]=true;\ - if (i10 == NAME##_NULL) return;\ - (*include)[i10]=true;\ - if (i11 == NAME##_NULL) return;\ - (*include)[i11]=true;\ - if (i12 == NAME##_NULL) return;\ - (*include)[i12]=true;\ - if (i13 == NAME##_NULL) return;\ - (*include)[i13]=true;\ - if (i14 == NAME##_NULL) return;\ - (*include)[i14]=true;\ - if (i15 == NAME##_NULL) return;\ - (*include)[i15]=true;\ - if (i16 == NAME##_NULL) return;\ - (*include)[i16]=true;\ - if (i17 == NAME##_NULL) return;\ - (*include)[i17]=true;\ - if (i18 == NAME##_NULL) return;\ - (*include)[i18]=true;\ - if (i19 == NAME##_NULL) return;\ - (*include)[i19]=true;\ - if (i20 == NAME##_NULL) return;\ - (*include)[i20]=true;\ - if (i21 == NAME##_NULL) return;\ - (*include)[i21]=true;\ - }\ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_value_list& obj) { \ - s << obj.manip << obj.obj->I1 << obj.delem;\ - s << obj.manip << obj.obj->I2 << obj.delem;\ - s << obj.manip << obj.obj->I3 << obj.delem;\ - s << obj.manip << obj.obj->I4 << obj.delem;\ - s << obj.manip << obj.obj->I5 << obj.delem;\ - s << obj.manip << obj.obj->I6 << obj.delem;\ - s << obj.manip << obj.obj->I7 << obj.delem;\ - s << obj.manip << obj.obj->I8 << obj.delem;\ - s << obj.manip << obj.obj->I9 << obj.delem;\ - s << obj.manip << obj.obj->I10 << obj.delem;\ - s << obj.manip << obj.obj->I11 << obj.delem;\ - s << obj.manip << obj.obj->I12 << obj.delem;\ - s << obj.manip << obj.obj->I13 << obj.delem;\ - s << obj.manip << obj.obj->I14 << obj.delem;\ - s << obj.manip << obj.obj->I15 << obj.delem;\ - s << obj.manip << obj.obj->I16 << obj.delem;\ - s << obj.manip << obj.obj->I17 << obj.delem;\ - s << obj.manip << obj.obj->I18 << obj.delem;\ - s << obj.manip << obj.obj->I19 << obj.delem;\ - s << obj.manip << obj.obj->I20 << obj.delem;\ - s << obj.manip << obj.obj->I21; \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_field_list& obj) { \ - s << obj.manip << obj.obj->names[0] << obj.delem;\ - s << obj.manip << obj.obj->names[1] << obj.delem;\ - s << obj.manip << obj.obj->names[2] << obj.delem;\ - s << obj.manip << obj.obj->names[3] << obj.delem;\ - s << obj.manip << obj.obj->names[4] << obj.delem;\ - s << obj.manip << obj.obj->names[5] << obj.delem;\ - s << obj.manip << obj.obj->names[6] << obj.delem;\ - s << obj.manip << obj.obj->names[7] << obj.delem;\ - s << obj.manip << obj.obj->names[8] << obj.delem;\ - s << obj.manip << obj.obj->names[9] << obj.delem;\ - s << obj.manip << obj.obj->names[10] << obj.delem;\ - s << obj.manip << obj.obj->names[11] << obj.delem;\ - s << obj.manip << obj.obj->names[12] << obj.delem;\ - s << obj.manip << obj.obj->names[13] << obj.delem;\ - s << obj.manip << obj.obj->names[14] << obj.delem;\ - s << obj.manip << obj.obj->names[15] << obj.delem;\ - s << obj.manip << obj.obj->names[16] << obj.delem;\ - s << obj.manip << obj.obj->names[17] << obj.delem;\ - s << obj.manip << obj.obj->names[18] << obj.delem;\ - s << obj.manip << obj.obj->names[19] << obj.delem;\ - s << obj.manip << obj.obj->names[20]; \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_equal_list& obj) { \ - s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1 << obj.delem;\ - s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2 << obj.delem;\ - s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3 << obj.delem;\ - s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4 << obj.delem;\ - s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5 << obj.delem;\ - s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6 << obj.delem;\ - s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->I7 << obj.delem;\ - s << obj.obj->names[7] << obj.comp << obj.manip << obj.obj->I8 << obj.delem;\ - s << obj.obj->names[8] << obj.comp << obj.manip << obj.obj->I9 << obj.delem;\ - s << obj.obj->names[9] << obj.comp << obj.manip << obj.obj->I10 << obj.delem;\ - s << obj.obj->names[10] << obj.comp << obj.manip << obj.obj->I11 << obj.delem;\ - s << obj.obj->names[11] << obj.comp << obj.manip << obj.obj->I12 << obj.delem;\ - s << obj.obj->names[12] << obj.comp << obj.manip << obj.obj->I13 << obj.delem;\ - s << obj.obj->names[13] << obj.comp << obj.manip << obj.obj->I14 << obj.delem;\ - s << obj.obj->names[14] << obj.comp << obj.manip << obj.obj->I15 << obj.delem;\ - s << obj.obj->names[15] << obj.comp << obj.manip << obj.obj->I16 << obj.delem;\ - s << obj.obj->names[16] << obj.comp << obj.manip << obj.obj->I17 << obj.delem;\ - s << obj.obj->names[17] << obj.comp << obj.manip << obj.obj->I18 << obj.delem;\ - s << obj.obj->names[18] << obj.comp << obj.manip << obj.obj->I19 << obj.delem;\ - s << obj.obj->names[19] << obj.comp << obj.manip << obj.obj->I20 << obj.delem;\ - s << obj.obj->names[20] << obj.comp << obj.manip << obj.obj->I21; \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_cus_value_list& obj) { \ - bool before = false; \ - if ((*obj.include)[0]) { \ - s << obj.manip << obj.obj->I1;\ - before = true; \ - } \ - if ((*obj.include)[1]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I2;\ - before = true; \ - } \ - if ((*obj.include)[2]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I3;\ - before = true; \ - } \ - if ((*obj.include)[3]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I4;\ - before = true; \ - } \ - if ((*obj.include)[4]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I5;\ - before = true; \ - } \ - if ((*obj.include)[5]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I6;\ - before = true; \ - } \ - if ((*obj.include)[6]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I7;\ - before = true; \ - } \ - if ((*obj.include)[7]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I8;\ - before = true; \ - } \ - if ((*obj.include)[8]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I9;\ - before = true; \ - } \ - if ((*obj.include)[9]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I10;\ - before = true; \ - } \ - if ((*obj.include)[10]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I11;\ - before = true; \ - } \ - if ((*obj.include)[11]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I12;\ - before = true; \ - } \ - if ((*obj.include)[12]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I13;\ - before = true; \ - } \ - if ((*obj.include)[13]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I14;\ - before = true; \ - } \ - if ((*obj.include)[14]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I15;\ - before = true; \ - } \ - if ((*obj.include)[15]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I16;\ - before = true; \ - } \ - if ((*obj.include)[16]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I17;\ - before = true; \ - } \ - if ((*obj.include)[17]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I18;\ - before = true; \ - } \ - if ((*obj.include)[18]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I19;\ - before = true; \ - } \ - if ((*obj.include)[19]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I20;\ - before = true; \ - } \ - if ((*obj.include)[20]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I21;\ - } \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_cus_field_list& obj) { \ - bool before = false; \ - if ((*obj.include)[0]) { \ - s << obj.manip << obj.obj->names[0];\ - before = true; \ - } \ - if ((*obj.include)[1]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[1];\ - before = true; \ - } \ - if ((*obj.include)[2]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[2];\ - before = true; \ - } \ - if ((*obj.include)[3]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[3];\ - before = true; \ - } \ - if ((*obj.include)[4]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[4];\ - before = true; \ - } \ - if ((*obj.include)[5]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[5];\ - before = true; \ - } \ - if ((*obj.include)[6]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[6];\ - before = true; \ - } \ - if ((*obj.include)[7]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[7];\ - before = true; \ - } \ - if ((*obj.include)[8]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[8];\ - before = true; \ - } \ - if ((*obj.include)[9]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[9];\ - before = true; \ - } \ - if ((*obj.include)[10]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[10];\ - before = true; \ - } \ - if ((*obj.include)[11]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[11];\ - before = true; \ - } \ - if ((*obj.include)[12]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[12];\ - before = true; \ - } \ - if ((*obj.include)[13]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[13];\ - before = true; \ - } \ - if ((*obj.include)[14]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[14];\ - before = true; \ - } \ - if ((*obj.include)[15]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[15];\ - before = true; \ - } \ - if ((*obj.include)[16]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[16];\ - before = true; \ - } \ - if ((*obj.include)[17]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[17];\ - before = true; \ - } \ - if ((*obj.include)[18]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[18];\ - before = true; \ - } \ - if ((*obj.include)[19]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[19];\ - before = true; \ - } \ - if ((*obj.include)[20]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[20];\ - } \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_cus_equal_list& obj) { \ - bool before = false; \ - if ((*obj.include)[0]) { \ - s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1;\ - before = true; \ - } \ - if ((*obj.include)[1]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2;\ - before = true; \ - } \ - if ((*obj.include)[2]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3;\ - before = true; \ - } \ - if ((*obj.include)[3]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4;\ - before = true; \ - } \ - if ((*obj.include)[4]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5;\ - before = true; \ - } \ - if ((*obj.include)[5]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6;\ - before = true; \ - } \ - if ((*obj.include)[6]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->I7;\ - before = true; \ - } \ - if ((*obj.include)[7]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[7] << obj.comp << obj.manip << obj.obj->I8;\ - before = true; \ - } \ - if ((*obj.include)[8]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[8] << obj.comp << obj.manip << obj.obj->I9;\ - before = true; \ - } \ - if ((*obj.include)[9]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[9] << obj.comp << obj.manip << obj.obj->I10;\ - before = true; \ - } \ - if ((*obj.include)[10]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[10] << obj.comp << obj.manip << obj.obj->I11;\ - before = true; \ - } \ - if ((*obj.include)[11]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[11] << obj.comp << obj.manip << obj.obj->I12;\ - before = true; \ - } \ - if ((*obj.include)[12]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[12] << obj.comp << obj.manip << obj.obj->I13;\ - before = true; \ - } \ - if ((*obj.include)[13]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[13] << obj.comp << obj.manip << obj.obj->I14;\ - before = true; \ - } \ - if ((*obj.include)[14]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[14] << obj.comp << obj.manip << obj.obj->I15;\ - before = true; \ - } \ - if ((*obj.include)[15]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[15] << obj.comp << obj.manip << obj.obj->I16;\ - before = true; \ - } \ - if ((*obj.include)[16]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[16] << obj.comp << obj.manip << obj.obj->I17;\ - before = true; \ - } \ - if ((*obj.include)[17]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[17] << obj.comp << obj.manip << obj.obj->I18;\ - before = true; \ - } \ - if ((*obj.include)[18]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[18] << obj.comp << obj.manip << obj.obj->I19;\ - before = true; \ - } \ - if ((*obj.include)[19]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[19] << obj.comp << obj.manip << obj.obj->I20;\ - before = true; \ - } \ - if ((*obj.include)[20]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[20] << obj.comp << obj.manip << obj.obj->I21;\ - } \ - return s; \ - } \ - template \ - inline NAME##_value_list NAME::value_list(mysqlpp::cchar *d, Manip m) const { \ - return NAME##_value_list (this, d, m); \ - } \ - template \ - inline NAME##_field_list NAME::field_list(mysqlpp::cchar *d, Manip m) const { \ - return NAME##_field_list (this, d, m); \ - } \ - template \ - inline NAME##_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) const { \ - return NAME##_equal_list (this, d, c, m); \ - } \ - template \ - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21) const {\ - return NAME##_cus_value_list (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21); \ - } \ - template \ - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21) const { \ - return NAME##_cus_field_list (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21); \ - } \ - template \ - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m,\ - bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21) const { \ - return NAME##_cus_equal_list (this, d, c, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21); \ - } \ - template \ - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21) const { \ - return NAME##_cus_value_list (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21); \ - } \ - template \ - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21) const {\ - return NAME##_cus_field_list (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21); \ - } \ - template \ - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21) const { \ - return NAME##_cus_equal_list (this, d, c, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21); \ - } \ - template \ - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m,\ - std::vector *i) const {\ - return NAME##_cus_value_list (this, d, m, i);\ - }\ - template \ - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m,\ - std::vector *i) const {\ - return NAME##_cus_field_list (this, d, m, i);\ - }\ - template \ - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m,\ - std::vector *i) const {\ - return NAME##_cus_equal_list (this, d, c, m, i);\ - }\ - template \ - inline NAME##_cus_value_list \ - NAME::value_list(mysqlpp::cchar *d, Manip m, mysqlpp::sql_cmp_type /*sc*/) const {\ - sql_compare_type_def_##CMP (NAME, value, NUM);\ - }\ - template \ - inline NAME##_cus_field_list \ - NAME::field_list(mysqlpp::cchar *d, Manip m, mysqlpp::sql_cmp_type /*sc*/) const {\ - sql_compare_type_def_##CMP (NAME, field, NUM);\ - }\ - template \ - inline NAME##_cus_equal_list \ - NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, mysqlpp::sql_cmp_type /*sc*/) const {\ - sql_compare_type_defe_##CMP (NAME, equal, NUM);\ - }\ - template \ - void populate_##NAME (NAME *s, const mysqlpp::Row &row) { \ - s->I1 = static_cast(row.at(O1));\ - s->I2 = static_cast(row.at(O2));\ - s->I3 = static_cast(row.at(O3));\ - s->I4 = static_cast(row.at(O4));\ - s->I5 = static_cast(row.at(O5));\ - s->I6 = static_cast(row.at(O6));\ - s->I7 = static_cast(row.at(O7));\ - s->I8 = static_cast(row.at(O8));\ - s->I9 = static_cast(row.at(O9));\ - s->I10 = static_cast(row.at(O10));\ - s->I11 = static_cast(row.at(O11));\ - s->I12 = static_cast(row.at(O12));\ - s->I13 = static_cast(row.at(O13));\ - s->I14 = static_cast(row.at(O14));\ - s->I15 = static_cast(row.at(O15));\ - s->I16 = static_cast(row.at(O16));\ - s->I17 = static_cast(row.at(O17));\ - s->I18 = static_cast(row.at(O18));\ - s->I19 = static_cast(row.at(O19));\ - s->I20 = static_cast(row.at(O20));\ - s->I21 = static_cast(row.at(O21));\ - } \ - inline NAME::NAME (const mysqlpp::Row &row) \ - {populate_##NAME(this, row);}\ - inline void NAME::set (const mysqlpp::Row &row)\ - {populate_##NAME(this, row);}\ - sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, I11, I12, I13, I14, I15, I16, I17, I18, I19, I20, I21, 0, 0, 0, 0 ) - -#define sql_create_basic_21(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18, T19, I19, T20, I20, T21, I21) \ - sql_create_basic_c_order_21(NAME, CMP, CONTR, T1, I1, 0, T2, I2, 1, T3, I3, 2, T4, I4, 3, T5, I5, 4, T6, I6, 5, T7, I7, 6, T8, I8, 7, T9, I9, 8, T10, I10, 9, T11, I11, 10, T12, I12, 11, T13, I13, 12, T14, I14, 13, T15, I15, 14, T16, I16, 15, T17, I17, 16, T18, I18, 17, T19, I19, 18, T20, I20, 19, T21, I21, 20) - -#define sql_create_21(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18, T19, I19, T20, I20, T21, I21) \ - sql_create_complete_21(NAME, CMP, CONTR, T1, I1, #I1, 0, T2, I2, #I2, 1, T3, I3, #I3, 2, T4, I4, #I4, 3, T5, I5, #I5, 4, T6, I6, #I6, 5, T7, I7, #I7, 6, T8, I8, #I8, 7, T9, I9, #I9, 8, T10, I10, #I10, 9, T11, I11, #I11, 10, T12, I12, #I12, 11, T13, I13, #I13, 12, T14, I14, #I14, 13, T15, I15, #I15, 14, T16, I16, #I16, 15, T17, I17, #I17, 16, T18, I18, #I18, 17, T19, I19, #I19, 18, T20, I20, #I20, 19, T21, I21, #I21, 20) \ - -#define sql_create_c_order_21(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6, T7, I7, O7, T8, I8, O8, T9, I9, O9, T10, I10, O10, T11, I11, O11, T12, I12, O12, T13, I13, O13, T14, I14, O14, T15, I15, O15, T16, I16, O16, T17, I17, O17, T18, I18, O18, T19, I19, O19, T20, I20, O20, T21, I21, O21) \ - sql_create_complete_21(NAME, CMP, CONTR, T1, I1, #I1, O1, T2, I2, #I2, O2, T3, I3, #I3, O3, T4, I4, #I4, O4, T5, I5, #I5, O5, T6, I6, #I6, O6, T7, I7, #I7, O7, T8, I8, #I8, O8, T9, I9, #I9, O9, T10, I10, #I10, O10, T11, I11, #I11, O11, T12, I12, #I12, O12, T13, I13, #I13, O13, T14, I14, #I14, O14, T15, I15, #I15, O15, T16, I16, #I16, O16, T17, I17, #I17, O17, T18, I18, #I18, O18, T19, I19, #I19, O19, T20, I20, #I20, O20, T21, I21, #I21, O21) - -#define sql_create_c_names_21(NAME, CMP, CONTR, T1, I1, N1, T2, I2, N2, T3, I3, N3, T4, I4, N4, T5, I5, N5, T6, I6, N6, T7, I7, N7, T8, I8, N8, T9, I9, N9, T10, I10, N10, T11, I11, N11, T12, I12, N12, T13, I13, N13, T14, I14, N14, T15, I15, N15, T16, I16, N16, T17, I17, N17, T18, I18, N18, T19, I19, N19, T20, I20, N20, T21, I21, N21) \ - sql_create_complete_21(NAME, CMP, CONTR, T1, I1, N1, 0, T2, I2, N2, 1, T3, I3, N3, 2, T4, I4, N4, 3, T5, I5, N5, 4, T6, I6, N6, 5, T7, I7, N7, 6, T8, I8, N8, 7, T9, I9, N9, 8, T10, I10, N10, 9, T11, I11, N11, 10, T12, I12, N12, 11, T13, I13, N13, 12, T14, I14, N14, 13, T15, I15, N15, 14, T16, I16, N16, 15, T17, I17, N17, 16, T18, I18, N18, 17, T19, I19, N19, 18, T20, I20, N20, 19, T21, I21, N21, 20) - -// --------------------------------------------------- -// End Create 21 -// --------------------------------------------------- - -// --------------------------------------------------- -// Begin Create 22 -// --------------------------------------------------- -#define sql_create_basic_c_order_22(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6, T7, I7, O7, T8, I8, O8, T9, I9, O9, T10, I10, O10, T11, I11, O11, T12, I12, O12, T13, I13, O13, T14, I14, O14, T15, I15, O15, T16, I16, O16, T17, I17, O17, T18, I18, O18, T19, I19, O19, T20, I20, O20, T21, I21, O21, T22, I22, O22)\ - struct NAME; \ - template int sql_compare_##NAME (const NAME &, const NAME &);\ - struct NAME { \ - T1 I1;\ - T2 I2;\ - T3 I3;\ - T4 I4;\ - T5 I5;\ - T6 I6;\ - T7 I7;\ - T8 I8;\ - T9 I9;\ - T10 I10;\ - T11 I11;\ - T12 I12;\ - T13 I13;\ - T14 I14;\ - T15 I15;\ - T16 I16;\ - T17 I17;\ - T18 I18;\ - T19 I19;\ - T20 I20;\ - T21 I21;\ - T22 I22; \ - NAME () {} \ - NAME (const mysqlpp::Row &row);\ - sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18, T19, I19, T20, I20, T21, I21, T22, I22, 0, 0, 0, 0, 0, 0)\ - }; \ - template \ - void populate_##NAME (NAME *s, const mysqlpp::Row &row) { \ - s->I1 = static_cast(row.at(O1));\ - s->I2 = static_cast(row.at(O2));\ - s->I3 = static_cast(row.at(O3));\ - s->I4 = static_cast(row.at(O4));\ - s->I5 = static_cast(row.at(O5));\ - s->I6 = static_cast(row.at(O6));\ - s->I7 = static_cast(row.at(O7));\ - s->I8 = static_cast(row.at(O8));\ - s->I9 = static_cast(row.at(O9));\ - s->I10 = static_cast(row.at(O10));\ - s->I11 = static_cast(row.at(O11));\ - s->I12 = static_cast(row.at(O12));\ - s->I13 = static_cast(row.at(O13));\ - s->I14 = static_cast(row.at(O14));\ - s->I15 = static_cast(row.at(O15));\ - s->I16 = static_cast(row.at(O16));\ - s->I17 = static_cast(row.at(O17));\ - s->I18 = static_cast(row.at(O18));\ - s->I19 = static_cast(row.at(O19));\ - s->I20 = static_cast(row.at(O20));\ - s->I21 = static_cast(row.at(O21));\ - s->I22 = static_cast(row.at(O22)); \ - } \ - inline NAME::NAME (const mysqlpp::Row &row) \ - {populate_##NAME(this, row);} \ - sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, I11, I12, I13, I14, I15, I16, I17, I18, I19, I20, I21, I22, 0, 0, 0 ) - -#define sql_create_complete_22(NAME, CMP, CONTR, T1, I1, N1, O1, T2, I2, N2, O2, T3, I3, N3, O3, T4, I4, N4, O4, T5, I5, N5, O5, T6, I6, N6, O6, T7, I7, N7, O7, T8, I8, N8, O8, T9, I9, N9, O9, T10, I10, N10, O10, T11, I11, N11, O11, T12, I12, N12, O12, T13, I13, N13, O13, T14, I14, N14, O14, T15, I15, N15, O15, T16, I16, N16, O16, T17, I17, N17, O17, T18, I18, N18, O18, T19, I19, N19, O19, T20, I20, N20, O20, T21, I21, N21, O21, T22, I22, N22, O22) \ - struct NAME; \ - enum NAME##_enum { \ - NAME##_##I1,\ - NAME##_##I2,\ - NAME##_##I3,\ - NAME##_##I4,\ - NAME##_##I5,\ - NAME##_##I6,\ - NAME##_##I7,\ - NAME##_##I8,\ - NAME##_##I9,\ - NAME##_##I10,\ - NAME##_##I11,\ - NAME##_##I12,\ - NAME##_##I13,\ - NAME##_##I14,\ - NAME##_##I15,\ - NAME##_##I16,\ - NAME##_##I17,\ - NAME##_##I18,\ - NAME##_##I19,\ - NAME##_##I20,\ - NAME##_##I21,\ - NAME##_##I22 \ - ,NAME##_NULL \ - }; \ - template \ - class NAME##_value_list { \ - /*friend std::ostream& operator << <> (std::ostream&, const NAME##_value_list&); */\ - public: \ - const NAME *obj;\ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - NAME##_value_list (const NAME *o, mysqlpp::cchar *d, Manip m) \ - : obj(o), delem(d), manip(m) {} \ - };\ - template \ - class NAME##_##field_list {\ - /* friend std::ostream& operator << <> (std::ostream&, const NAME##_field_list&); */\ - public: \ - const NAME *obj; \ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - NAME##_field_list (const NAME *o, mysqlpp::cchar *d, Manip m) \ - : obj(o), delem(d), manip(m) {} \ - };\ - template \ - class NAME##_equal_list { \ - /* friend std::ostream& operator << <> (std::ostream&, const NAME##_equal_list&); */\ - public: \ - const NAME *obj;\ - mysqlpp::cchar *delem;\ - mysqlpp::cchar *comp;\ - Manip manip;\ - public: \ - NAME##_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) \ - : obj(o), delem(d), comp(c), manip(m) {}\ - };\ - template \ - class NAME##_cus_value_list {\ - /* friend std::ostream& operator << <> (std::ostream&, \ - const NAME##_cus_value_list&); */\ - public:\ - const NAME *obj;\ - std::vector *include;\ - bool del_vector;\ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - ~NAME##_cus_value_list () {if (del_vector) delete include;} \ - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21, bool i22);\ - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21, NAME##_enum i22); \ - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m ,std::vector* i)\ - : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\ - };\ - template \ - class NAME##_cus_field_list { \ - /* friend std::ostream& operator << <> (std::ostream&, \ - const NAME##_cus_field_list&); */\ - public:\ - const NAME *obj; \ - std::vector *include; \ - bool del_vector; \ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - ~NAME##_cus_field_list () {if (del_vector) delete include;} \ - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21, bool i22); \ - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21, NAME##_enum i22); \ - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, std::vector *i) \ - : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\ - };\ - template \ - class NAME##_cus_equal_list {\ - /* friend std::ostream& operator << <> (std::ostream&, \ - const NAME##_cus_equal_list&); */\ - public:\ - const NAME *obj;\ - std::vector *include;\ - bool del_vector;\ - mysqlpp::cchar *delem;\ - mysqlpp::cchar *comp;\ - Manip manip;\ - public:\ - ~NAME##_##cus_equal_list () {if (del_vector) delete include;}\ - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21, bool i22); \ - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21, NAME##_enum i22); \ - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, std::vector *i) \ - : obj(o), include(i), del_vector(false), delem(d), comp(c), manip(m) {}\ - };\ - template int sql_compare_##NAME (const NAME &, const NAME &);\ - struct NAME { \ - T1 I1;\ - T2 I2;\ - T3 I3;\ - T4 I4;\ - T5 I5;\ - T6 I6;\ - T7 I7;\ - T8 I8;\ - T9 I9;\ - T10 I10;\ - T11 I11;\ - T12 I12;\ - T13 I13;\ - T14 I14;\ - T15 I15;\ - T16 I16;\ - T17 I17;\ - T18 I18;\ - T19 I19;\ - T20 I20;\ - T21 I21;\ - T22 I22; \ - NAME () {} \ - NAME (const mysqlpp::Row &row);\ - void set (const mysqlpp::Row &row);\ - sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18, T19, I19, T20, I20, T21, I21, T22, I22, 0, 0, 0, 0, 0, 0)\ - sql_construct_define_##CONTR(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18, T19, I19, T20, I20, T21, I21, T22, I22, 0, 0, 0, 0, 0, 0)\ - static const char *names[];\ - static const char *_table;\ - static const char *& table() {return _table;}\ - NAME##_value_list value_list() const {\ - return value_list(",", mysqlpp::quote);}\ - NAME##_value_list value_list(mysqlpp::cchar *d) const {\ - return value_list(d, mysqlpp::quote);}\ - template \ - NAME##_value_list value_list(mysqlpp::cchar *d, Manip m) const; \ - NAME##_field_list field_list() const {\ - return field_list(",", mysqlpp::do_nothing);}\ - NAME##_field_list field_list(mysqlpp::cchar *d) const {\ - return field_list(d, mysqlpp::do_nothing);}\ - template \ - NAME##_field_list field_list(mysqlpp::cchar *d, Manip m) const; \ - NAME##_equal_list equal_list(mysqlpp::cchar *d = ",", \ - mysqlpp::cchar *c = " = ") const{\ - return equal_list(d, c, mysqlpp::quote);}\ - template \ - NAME##_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) const; \ - /* cus_data */\ - NAME##_cus_value_list value_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false) const {\ - return value_list(",", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22);\ - }\ - NAME##_cus_value_list value_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL) const {\ - return value_list(",", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22);\ - }\ - NAME##_cus_value_list value_list(std::vector *i) const {\ - return value_list(",", mysqlpp::quote, i);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::sql_cmp_type sc) const {\ - return value_list(",", mysqlpp::quote, sc);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false) const {\ - return value_list(d, mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL) const {\ - return value_list(d, mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, \ - std::vector *i) const {\ - return value_list(d, mysqlpp::quote, i);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, \ - mysqlpp::sql_cmp_type sc) const {\ - return value_list(d, mysqlpp::quote, sc);\ - }\ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false) const; \ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL) const; \ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m, \ - std::vector *i) const;\ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m, \ - mysqlpp::sql_cmp_type sc) const;\ - /* cus field */\ - NAME##_cus_field_list field_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false) const {\ - return field_list(",", mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22);\ - }\ - NAME##_cus_field_list field_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL) const {\ - return field_list(",", mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22);\ - }\ - NAME##_cus_field_list field_list(std::vector *i) const {\ - return field_list(",", mysqlpp::do_nothing, i);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::sql_cmp_type sc) const\ - {\ - return field_list(",", mysqlpp::do_nothing, sc);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, \ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false) const {\ - return field_list(d, mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL) const {\ - return field_list(d, mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, \ - std::vector *i) const {\ - return field_list(d, mysqlpp::do_nothing, i);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, \ - mysqlpp::sql_cmp_type sc) const {\ - return field_list(d, mysqlpp::do_nothing, sc);\ - }\ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false) const; \ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL) const; \ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m,\ - std::vector *i) const;\ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m, \ - mysqlpp::sql_cmp_type sc) const;\ - /* cus equal */\ - NAME##_cus_equal_list equal_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false) const {\ - return equal_list(",", " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22);\ - }\ - NAME##_cus_equal_list equal_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL) const {\ - return equal_list(",", " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22);\ - }\ - NAME##_cus_equal_list equal_list(std::vector *i) const {\ - return equal_list(",", " = ", mysqlpp::quote, i);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::sql_cmp_type sc) const {\ - return equal_list(",", " = ", mysqlpp::quote, sc);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false) const {\ - return equal_list(d, " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL) const {\ - return equal_list(d, " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, \ - std::vector *i) const {\ - return equal_list(d, " = ", mysqlpp::quote, i);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, \ - mysqlpp::sql_cmp_type sc) const {\ - return equal_list(d, " = ", mysqlpp::quote, sc);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false) const {\ - return equal_list(d, c, mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL) const {\ - return equal_list(d, c, mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - std::vector *i) const {\ - return equal_list(d, c, mysqlpp::quote, i);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - mysqlpp::sql_cmp_type sc) const {\ - return equal_list(d, c, mysqlpp::quote, sc);\ - }\ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false) const; \ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL) const; \ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - std::vector *i) const;\ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - mysqlpp::sql_cmp_type sc) const;\ - }; \ - MYSQLPP_SSQLS_EXPAND(\ - const char *NAME::names[] = { \ - N1 ,\ - N2 ,\ - N3 ,\ - N4 ,\ - N5 ,\ - N6 ,\ - N7 ,\ - N8 ,\ - N9 ,\ - N10 ,\ - N11 ,\ - N12 ,\ - N13 ,\ - N14 ,\ - N15 ,\ - N16 ,\ - N17 ,\ - N18 ,\ - N19 ,\ - N20 ,\ - N21 ,\ - N22 \ - }; \ - const char *NAME::_table = #NAME ;\ - )\ - template \ - NAME##_cus_value_list::NAME##_cus_value_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21, bool i22) \ - { \ - delem = d;\ - manip = m;\ - del_vector = true;\ - obj = o; \ - include = new std::vector(22, false);\ - if (i1) (*include)[0]=true;\ - if (i2) (*include)[1]=true;\ - if (i3) (*include)[2]=true;\ - if (i4) (*include)[3]=true;\ - if (i5) (*include)[4]=true;\ - if (i6) (*include)[5]=true;\ - if (i7) (*include)[6]=true;\ - if (i8) (*include)[7]=true;\ - if (i9) (*include)[8]=true;\ - if (i10) (*include)[9]=true;\ - if (i11) (*include)[10]=true;\ - if (i12) (*include)[11]=true;\ - if (i13) (*include)[12]=true;\ - if (i14) (*include)[13]=true;\ - if (i15) (*include)[14]=true;\ - if (i16) (*include)[15]=true;\ - if (i17) (*include)[16]=true;\ - if (i18) (*include)[17]=true;\ - if (i19) (*include)[18]=true;\ - if (i20) (*include)[19]=true;\ - if (i21) (*include)[20]=true;\ - if (i22) (*include)[21]=true;\ - } \ - template \ - NAME##_cus_value_list::NAME##_cus_value_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21, NAME##_enum i22) { \ - delem = d;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(22, false); \ - if (i1 == NAME##_NULL) return;\ - (*include)[i1]=true;\ - if (i2 == NAME##_NULL) return;\ - (*include)[i2]=true;\ - if (i3 == NAME##_NULL) return;\ - (*include)[i3]=true;\ - if (i4 == NAME##_NULL) return;\ - (*include)[i4]=true;\ - if (i5 == NAME##_NULL) return;\ - (*include)[i5]=true;\ - if (i6 == NAME##_NULL) return;\ - (*include)[i6]=true;\ - if (i7 == NAME##_NULL) return;\ - (*include)[i7]=true;\ - if (i8 == NAME##_NULL) return;\ - (*include)[i8]=true;\ - if (i9 == NAME##_NULL) return;\ - (*include)[i9]=true;\ - if (i10 == NAME##_NULL) return;\ - (*include)[i10]=true;\ - if (i11 == NAME##_NULL) return;\ - (*include)[i11]=true;\ - if (i12 == NAME##_NULL) return;\ - (*include)[i12]=true;\ - if (i13 == NAME##_NULL) return;\ - (*include)[i13]=true;\ - if (i14 == NAME##_NULL) return;\ - (*include)[i14]=true;\ - if (i15 == NAME##_NULL) return;\ - (*include)[i15]=true;\ - if (i16 == NAME##_NULL) return;\ - (*include)[i16]=true;\ - if (i17 == NAME##_NULL) return;\ - (*include)[i17]=true;\ - if (i18 == NAME##_NULL) return;\ - (*include)[i18]=true;\ - if (i19 == NAME##_NULL) return;\ - (*include)[i19]=true;\ - if (i20 == NAME##_NULL) return;\ - (*include)[i20]=true;\ - if (i21 == NAME##_NULL) return;\ - (*include)[i21]=true;\ - if (i22 == NAME##_NULL) return;\ - (*include)[i22]=true;\ - }\ - template \ - NAME##_cus_field_list::NAME##_cus_field_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21, bool i22) {\ - delem = d;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(22, false); \ - if (i1) (*include)[0]=true;\ - if (i2) (*include)[1]=true;\ - if (i3) (*include)[2]=true;\ - if (i4) (*include)[3]=true;\ - if (i5) (*include)[4]=true;\ - if (i6) (*include)[5]=true;\ - if (i7) (*include)[6]=true;\ - if (i8) (*include)[7]=true;\ - if (i9) (*include)[8]=true;\ - if (i10) (*include)[9]=true;\ - if (i11) (*include)[10]=true;\ - if (i12) (*include)[11]=true;\ - if (i13) (*include)[12]=true;\ - if (i14) (*include)[13]=true;\ - if (i15) (*include)[14]=true;\ - if (i16) (*include)[15]=true;\ - if (i17) (*include)[16]=true;\ - if (i18) (*include)[17]=true;\ - if (i19) (*include)[18]=true;\ - if (i20) (*include)[19]=true;\ - if (i21) (*include)[20]=true;\ - if (i22) (*include)[21]=true;\ - } \ - template \ - NAME##_cus_field_list::NAME##_cus_field_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21, NAME##_enum i22) { \ - delem = d;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(22, false); \ - if (i1 == NAME##_NULL) return;\ - (*include)[i1]=true;\ - if (i2 == NAME##_NULL) return;\ - (*include)[i2]=true;\ - if (i3 == NAME##_NULL) return;\ - (*include)[i3]=true;\ - if (i4 == NAME##_NULL) return;\ - (*include)[i4]=true;\ - if (i5 == NAME##_NULL) return;\ - (*include)[i5]=true;\ - if (i6 == NAME##_NULL) return;\ - (*include)[i6]=true;\ - if (i7 == NAME##_NULL) return;\ - (*include)[i7]=true;\ - if (i8 == NAME##_NULL) return;\ - (*include)[i8]=true;\ - if (i9 == NAME##_NULL) return;\ - (*include)[i9]=true;\ - if (i10 == NAME##_NULL) return;\ - (*include)[i10]=true;\ - if (i11 == NAME##_NULL) return;\ - (*include)[i11]=true;\ - if (i12 == NAME##_NULL) return;\ - (*include)[i12]=true;\ - if (i13 == NAME##_NULL) return;\ - (*include)[i13]=true;\ - if (i14 == NAME##_NULL) return;\ - (*include)[i14]=true;\ - if (i15 == NAME##_NULL) return;\ - (*include)[i15]=true;\ - if (i16 == NAME##_NULL) return;\ - (*include)[i16]=true;\ - if (i17 == NAME##_NULL) return;\ - (*include)[i17]=true;\ - if (i18 == NAME##_NULL) return;\ - (*include)[i18]=true;\ - if (i19 == NAME##_NULL) return;\ - (*include)[i19]=true;\ - if (i20 == NAME##_NULL) return;\ - (*include)[i20]=true;\ - if (i21 == NAME##_NULL) return;\ - (*include)[i21]=true;\ - if (i22 == NAME##_NULL) return;\ - (*include)[i22]=true;\ - }\ - template \ - NAME##_cus_equal_list::NAME##_cus_equal_list\ - (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21, bool i22) { \ - delem = d;\ - comp = c;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(22, false); \ - if (i1) (*include)[0]=true;\ - if (i2) (*include)[1]=true;\ - if (i3) (*include)[2]=true;\ - if (i4) (*include)[3]=true;\ - if (i5) (*include)[4]=true;\ - if (i6) (*include)[5]=true;\ - if (i7) (*include)[6]=true;\ - if (i8) (*include)[7]=true;\ - if (i9) (*include)[8]=true;\ - if (i10) (*include)[9]=true;\ - if (i11) (*include)[10]=true;\ - if (i12) (*include)[11]=true;\ - if (i13) (*include)[12]=true;\ - if (i14) (*include)[13]=true;\ - if (i15) (*include)[14]=true;\ - if (i16) (*include)[15]=true;\ - if (i17) (*include)[16]=true;\ - if (i18) (*include)[17]=true;\ - if (i19) (*include)[18]=true;\ - if (i20) (*include)[19]=true;\ - if (i21) (*include)[20]=true;\ - if (i22) (*include)[21]=true;\ - } \ - template \ - NAME##_cus_equal_list::NAME##_cus_equal_list\ - (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21, NAME##_enum i22) { \ - delem = d;\ - comp = c;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(22, false); \ - if (i1 == NAME##_NULL) return;\ - (*include)[i1]=true;\ - if (i2 == NAME##_NULL) return;\ - (*include)[i2]=true;\ - if (i3 == NAME##_NULL) return;\ - (*include)[i3]=true;\ - if (i4 == NAME##_NULL) return;\ - (*include)[i4]=true;\ - if (i5 == NAME##_NULL) return;\ - (*include)[i5]=true;\ - if (i6 == NAME##_NULL) return;\ - (*include)[i6]=true;\ - if (i7 == NAME##_NULL) return;\ - (*include)[i7]=true;\ - if (i8 == NAME##_NULL) return;\ - (*include)[i8]=true;\ - if (i9 == NAME##_NULL) return;\ - (*include)[i9]=true;\ - if (i10 == NAME##_NULL) return;\ - (*include)[i10]=true;\ - if (i11 == NAME##_NULL) return;\ - (*include)[i11]=true;\ - if (i12 == NAME##_NULL) return;\ - (*include)[i12]=true;\ - if (i13 == NAME##_NULL) return;\ - (*include)[i13]=true;\ - if (i14 == NAME##_NULL) return;\ - (*include)[i14]=true;\ - if (i15 == NAME##_NULL) return;\ - (*include)[i15]=true;\ - if (i16 == NAME##_NULL) return;\ - (*include)[i16]=true;\ - if (i17 == NAME##_NULL) return;\ - (*include)[i17]=true;\ - if (i18 == NAME##_NULL) return;\ - (*include)[i18]=true;\ - if (i19 == NAME##_NULL) return;\ - (*include)[i19]=true;\ - if (i20 == NAME##_NULL) return;\ - (*include)[i20]=true;\ - if (i21 == NAME##_NULL) return;\ - (*include)[i21]=true;\ - if (i22 == NAME##_NULL) return;\ - (*include)[i22]=true;\ - }\ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_value_list& obj) { \ - s << obj.manip << obj.obj->I1 << obj.delem;\ - s << obj.manip << obj.obj->I2 << obj.delem;\ - s << obj.manip << obj.obj->I3 << obj.delem;\ - s << obj.manip << obj.obj->I4 << obj.delem;\ - s << obj.manip << obj.obj->I5 << obj.delem;\ - s << obj.manip << obj.obj->I6 << obj.delem;\ - s << obj.manip << obj.obj->I7 << obj.delem;\ - s << obj.manip << obj.obj->I8 << obj.delem;\ - s << obj.manip << obj.obj->I9 << obj.delem;\ - s << obj.manip << obj.obj->I10 << obj.delem;\ - s << obj.manip << obj.obj->I11 << obj.delem;\ - s << obj.manip << obj.obj->I12 << obj.delem;\ - s << obj.manip << obj.obj->I13 << obj.delem;\ - s << obj.manip << obj.obj->I14 << obj.delem;\ - s << obj.manip << obj.obj->I15 << obj.delem;\ - s << obj.manip << obj.obj->I16 << obj.delem;\ - s << obj.manip << obj.obj->I17 << obj.delem;\ - s << obj.manip << obj.obj->I18 << obj.delem;\ - s << obj.manip << obj.obj->I19 << obj.delem;\ - s << obj.manip << obj.obj->I20 << obj.delem;\ - s << obj.manip << obj.obj->I21 << obj.delem;\ - s << obj.manip << obj.obj->I22; \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_field_list& obj) { \ - s << obj.manip << obj.obj->names[0] << obj.delem;\ - s << obj.manip << obj.obj->names[1] << obj.delem;\ - s << obj.manip << obj.obj->names[2] << obj.delem;\ - s << obj.manip << obj.obj->names[3] << obj.delem;\ - s << obj.manip << obj.obj->names[4] << obj.delem;\ - s << obj.manip << obj.obj->names[5] << obj.delem;\ - s << obj.manip << obj.obj->names[6] << obj.delem;\ - s << obj.manip << obj.obj->names[7] << obj.delem;\ - s << obj.manip << obj.obj->names[8] << obj.delem;\ - s << obj.manip << obj.obj->names[9] << obj.delem;\ - s << obj.manip << obj.obj->names[10] << obj.delem;\ - s << obj.manip << obj.obj->names[11] << obj.delem;\ - s << obj.manip << obj.obj->names[12] << obj.delem;\ - s << obj.manip << obj.obj->names[13] << obj.delem;\ - s << obj.manip << obj.obj->names[14] << obj.delem;\ - s << obj.manip << obj.obj->names[15] << obj.delem;\ - s << obj.manip << obj.obj->names[16] << obj.delem;\ - s << obj.manip << obj.obj->names[17] << obj.delem;\ - s << obj.manip << obj.obj->names[18] << obj.delem;\ - s << obj.manip << obj.obj->names[19] << obj.delem;\ - s << obj.manip << obj.obj->names[20] << obj.delem;\ - s << obj.manip << obj.obj->names[21]; \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_equal_list& obj) { \ - s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1 << obj.delem;\ - s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2 << obj.delem;\ - s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3 << obj.delem;\ - s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4 << obj.delem;\ - s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5 << obj.delem;\ - s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6 << obj.delem;\ - s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->I7 << obj.delem;\ - s << obj.obj->names[7] << obj.comp << obj.manip << obj.obj->I8 << obj.delem;\ - s << obj.obj->names[8] << obj.comp << obj.manip << obj.obj->I9 << obj.delem;\ - s << obj.obj->names[9] << obj.comp << obj.manip << obj.obj->I10 << obj.delem;\ - s << obj.obj->names[10] << obj.comp << obj.manip << obj.obj->I11 << obj.delem;\ - s << obj.obj->names[11] << obj.comp << obj.manip << obj.obj->I12 << obj.delem;\ - s << obj.obj->names[12] << obj.comp << obj.manip << obj.obj->I13 << obj.delem;\ - s << obj.obj->names[13] << obj.comp << obj.manip << obj.obj->I14 << obj.delem;\ - s << obj.obj->names[14] << obj.comp << obj.manip << obj.obj->I15 << obj.delem;\ - s << obj.obj->names[15] << obj.comp << obj.manip << obj.obj->I16 << obj.delem;\ - s << obj.obj->names[16] << obj.comp << obj.manip << obj.obj->I17 << obj.delem;\ - s << obj.obj->names[17] << obj.comp << obj.manip << obj.obj->I18 << obj.delem;\ - s << obj.obj->names[18] << obj.comp << obj.manip << obj.obj->I19 << obj.delem;\ - s << obj.obj->names[19] << obj.comp << obj.manip << obj.obj->I20 << obj.delem;\ - s << obj.obj->names[20] << obj.comp << obj.manip << obj.obj->I21 << obj.delem;\ - s << obj.obj->names[21] << obj.comp << obj.manip << obj.obj->I22; \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_cus_value_list& obj) { \ - bool before = false; \ - if ((*obj.include)[0]) { \ - s << obj.manip << obj.obj->I1;\ - before = true; \ - } \ - if ((*obj.include)[1]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I2;\ - before = true; \ - } \ - if ((*obj.include)[2]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I3;\ - before = true; \ - } \ - if ((*obj.include)[3]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I4;\ - before = true; \ - } \ - if ((*obj.include)[4]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I5;\ - before = true; \ - } \ - if ((*obj.include)[5]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I6;\ - before = true; \ - } \ - if ((*obj.include)[6]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I7;\ - before = true; \ - } \ - if ((*obj.include)[7]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I8;\ - before = true; \ - } \ - if ((*obj.include)[8]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I9;\ - before = true; \ - } \ - if ((*obj.include)[9]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I10;\ - before = true; \ - } \ - if ((*obj.include)[10]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I11;\ - before = true; \ - } \ - if ((*obj.include)[11]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I12;\ - before = true; \ - } \ - if ((*obj.include)[12]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I13;\ - before = true; \ - } \ - if ((*obj.include)[13]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I14;\ - before = true; \ - } \ - if ((*obj.include)[14]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I15;\ - before = true; \ - } \ - if ((*obj.include)[15]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I16;\ - before = true; \ - } \ - if ((*obj.include)[16]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I17;\ - before = true; \ - } \ - if ((*obj.include)[17]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I18;\ - before = true; \ - } \ - if ((*obj.include)[18]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I19;\ - before = true; \ - } \ - if ((*obj.include)[19]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I20;\ - before = true; \ - } \ - if ((*obj.include)[20]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I21;\ - before = true; \ - } \ - if ((*obj.include)[21]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I22;\ - } \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_cus_field_list& obj) { \ - bool before = false; \ - if ((*obj.include)[0]) { \ - s << obj.manip << obj.obj->names[0];\ - before = true; \ - } \ - if ((*obj.include)[1]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[1];\ - before = true; \ - } \ - if ((*obj.include)[2]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[2];\ - before = true; \ - } \ - if ((*obj.include)[3]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[3];\ - before = true; \ - } \ - if ((*obj.include)[4]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[4];\ - before = true; \ - } \ - if ((*obj.include)[5]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[5];\ - before = true; \ - } \ - if ((*obj.include)[6]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[6];\ - before = true; \ - } \ - if ((*obj.include)[7]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[7];\ - before = true; \ - } \ - if ((*obj.include)[8]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[8];\ - before = true; \ - } \ - if ((*obj.include)[9]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[9];\ - before = true; \ - } \ - if ((*obj.include)[10]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[10];\ - before = true; \ - } \ - if ((*obj.include)[11]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[11];\ - before = true; \ - } \ - if ((*obj.include)[12]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[12];\ - before = true; \ - } \ - if ((*obj.include)[13]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[13];\ - before = true; \ - } \ - if ((*obj.include)[14]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[14];\ - before = true; \ - } \ - if ((*obj.include)[15]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[15];\ - before = true; \ - } \ - if ((*obj.include)[16]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[16];\ - before = true; \ - } \ - if ((*obj.include)[17]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[17];\ - before = true; \ - } \ - if ((*obj.include)[18]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[18];\ - before = true; \ - } \ - if ((*obj.include)[19]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[19];\ - before = true; \ - } \ - if ((*obj.include)[20]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[20];\ - before = true; \ - } \ - if ((*obj.include)[21]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[21];\ - } \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_cus_equal_list& obj) { \ - bool before = false; \ - if ((*obj.include)[0]) { \ - s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1;\ - before = true; \ - } \ - if ((*obj.include)[1]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2;\ - before = true; \ - } \ - if ((*obj.include)[2]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3;\ - before = true; \ - } \ - if ((*obj.include)[3]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4;\ - before = true; \ - } \ - if ((*obj.include)[4]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5;\ - before = true; \ - } \ - if ((*obj.include)[5]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6;\ - before = true; \ - } \ - if ((*obj.include)[6]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->I7;\ - before = true; \ - } \ - if ((*obj.include)[7]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[7] << obj.comp << obj.manip << obj.obj->I8;\ - before = true; \ - } \ - if ((*obj.include)[8]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[8] << obj.comp << obj.manip << obj.obj->I9;\ - before = true; \ - } \ - if ((*obj.include)[9]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[9] << obj.comp << obj.manip << obj.obj->I10;\ - before = true; \ - } \ - if ((*obj.include)[10]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[10] << obj.comp << obj.manip << obj.obj->I11;\ - before = true; \ - } \ - if ((*obj.include)[11]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[11] << obj.comp << obj.manip << obj.obj->I12;\ - before = true; \ - } \ - if ((*obj.include)[12]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[12] << obj.comp << obj.manip << obj.obj->I13;\ - before = true; \ - } \ - if ((*obj.include)[13]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[13] << obj.comp << obj.manip << obj.obj->I14;\ - before = true; \ - } \ - if ((*obj.include)[14]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[14] << obj.comp << obj.manip << obj.obj->I15;\ - before = true; \ - } \ - if ((*obj.include)[15]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[15] << obj.comp << obj.manip << obj.obj->I16;\ - before = true; \ - } \ - if ((*obj.include)[16]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[16] << obj.comp << obj.manip << obj.obj->I17;\ - before = true; \ - } \ - if ((*obj.include)[17]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[17] << obj.comp << obj.manip << obj.obj->I18;\ - before = true; \ - } \ - if ((*obj.include)[18]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[18] << obj.comp << obj.manip << obj.obj->I19;\ - before = true; \ - } \ - if ((*obj.include)[19]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[19] << obj.comp << obj.manip << obj.obj->I20;\ - before = true; \ - } \ - if ((*obj.include)[20]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[20] << obj.comp << obj.manip << obj.obj->I21;\ - before = true; \ - } \ - if ((*obj.include)[21]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[21] << obj.comp << obj.manip << obj.obj->I22;\ - } \ - return s; \ - } \ - template \ - inline NAME##_value_list NAME::value_list(mysqlpp::cchar *d, Manip m) const { \ - return NAME##_value_list (this, d, m); \ - } \ - template \ - inline NAME##_field_list NAME::field_list(mysqlpp::cchar *d, Manip m) const { \ - return NAME##_field_list (this, d, m); \ - } \ - template \ - inline NAME##_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) const { \ - return NAME##_equal_list (this, d, c, m); \ - } \ - template \ - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21, bool i22) const {\ - return NAME##_cus_value_list (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22); \ - } \ - template \ - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21, bool i22) const { \ - return NAME##_cus_field_list (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22); \ - } \ - template \ - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m,\ - bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21, bool i22) const { \ - return NAME##_cus_equal_list (this, d, c, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22); \ - } \ - template \ - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21, NAME##_enum i22) const { \ - return NAME##_cus_value_list (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22); \ - } \ - template \ - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21, NAME##_enum i22) const {\ - return NAME##_cus_field_list (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22); \ - } \ - template \ - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21, NAME##_enum i22) const { \ - return NAME##_cus_equal_list (this, d, c, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22); \ - } \ - template \ - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m,\ - std::vector *i) const {\ - return NAME##_cus_value_list (this, d, m, i);\ - }\ - template \ - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m,\ - std::vector *i) const {\ - return NAME##_cus_field_list (this, d, m, i);\ - }\ - template \ - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m,\ - std::vector *i) const {\ - return NAME##_cus_equal_list (this, d, c, m, i);\ - }\ - template \ - inline NAME##_cus_value_list \ - NAME::value_list(mysqlpp::cchar *d, Manip m, mysqlpp::sql_cmp_type /*sc*/) const {\ - sql_compare_type_def_##CMP (NAME, value, NUM);\ - }\ - template \ - inline NAME##_cus_field_list \ - NAME::field_list(mysqlpp::cchar *d, Manip m, mysqlpp::sql_cmp_type /*sc*/) const {\ - sql_compare_type_def_##CMP (NAME, field, NUM);\ - }\ - template \ - inline NAME##_cus_equal_list \ - NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, mysqlpp::sql_cmp_type /*sc*/) const {\ - sql_compare_type_defe_##CMP (NAME, equal, NUM);\ - }\ - template \ - void populate_##NAME (NAME *s, const mysqlpp::Row &row) { \ - s->I1 = static_cast(row.at(O1));\ - s->I2 = static_cast(row.at(O2));\ - s->I3 = static_cast(row.at(O3));\ - s->I4 = static_cast(row.at(O4));\ - s->I5 = static_cast(row.at(O5));\ - s->I6 = static_cast(row.at(O6));\ - s->I7 = static_cast(row.at(O7));\ - s->I8 = static_cast(row.at(O8));\ - s->I9 = static_cast(row.at(O9));\ - s->I10 = static_cast(row.at(O10));\ - s->I11 = static_cast(row.at(O11));\ - s->I12 = static_cast(row.at(O12));\ - s->I13 = static_cast(row.at(O13));\ - s->I14 = static_cast(row.at(O14));\ - s->I15 = static_cast(row.at(O15));\ - s->I16 = static_cast(row.at(O16));\ - s->I17 = static_cast(row.at(O17));\ - s->I18 = static_cast(row.at(O18));\ - s->I19 = static_cast(row.at(O19));\ - s->I20 = static_cast(row.at(O20));\ - s->I21 = static_cast(row.at(O21));\ - s->I22 = static_cast(row.at(O22));\ - } \ - inline NAME::NAME (const mysqlpp::Row &row) \ - {populate_##NAME(this, row);}\ - inline void NAME::set (const mysqlpp::Row &row)\ - {populate_##NAME(this, row);}\ - sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, I11, I12, I13, I14, I15, I16, I17, I18, I19, I20, I21, I22, 0, 0, 0 ) - -#define sql_create_basic_22(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18, T19, I19, T20, I20, T21, I21, T22, I22) \ - sql_create_basic_c_order_22(NAME, CMP, CONTR, T1, I1, 0, T2, I2, 1, T3, I3, 2, T4, I4, 3, T5, I5, 4, T6, I6, 5, T7, I7, 6, T8, I8, 7, T9, I9, 8, T10, I10, 9, T11, I11, 10, T12, I12, 11, T13, I13, 12, T14, I14, 13, T15, I15, 14, T16, I16, 15, T17, I17, 16, T18, I18, 17, T19, I19, 18, T20, I20, 19, T21, I21, 20, T22, I22, 21) - -#define sql_create_22(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18, T19, I19, T20, I20, T21, I21, T22, I22) \ - sql_create_complete_22(NAME, CMP, CONTR, T1, I1, #I1, 0, T2, I2, #I2, 1, T3, I3, #I3, 2, T4, I4, #I4, 3, T5, I5, #I5, 4, T6, I6, #I6, 5, T7, I7, #I7, 6, T8, I8, #I8, 7, T9, I9, #I9, 8, T10, I10, #I10, 9, T11, I11, #I11, 10, T12, I12, #I12, 11, T13, I13, #I13, 12, T14, I14, #I14, 13, T15, I15, #I15, 14, T16, I16, #I16, 15, T17, I17, #I17, 16, T18, I18, #I18, 17, T19, I19, #I19, 18, T20, I20, #I20, 19, T21, I21, #I21, 20, T22, I22, #I22, 21) \ - -#define sql_create_c_order_22(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6, T7, I7, O7, T8, I8, O8, T9, I9, O9, T10, I10, O10, T11, I11, O11, T12, I12, O12, T13, I13, O13, T14, I14, O14, T15, I15, O15, T16, I16, O16, T17, I17, O17, T18, I18, O18, T19, I19, O19, T20, I20, O20, T21, I21, O21, T22, I22, O22) \ - sql_create_complete_22(NAME, CMP, CONTR, T1, I1, #I1, O1, T2, I2, #I2, O2, T3, I3, #I3, O3, T4, I4, #I4, O4, T5, I5, #I5, O5, T6, I6, #I6, O6, T7, I7, #I7, O7, T8, I8, #I8, O8, T9, I9, #I9, O9, T10, I10, #I10, O10, T11, I11, #I11, O11, T12, I12, #I12, O12, T13, I13, #I13, O13, T14, I14, #I14, O14, T15, I15, #I15, O15, T16, I16, #I16, O16, T17, I17, #I17, O17, T18, I18, #I18, O18, T19, I19, #I19, O19, T20, I20, #I20, O20, T21, I21, #I21, O21, T22, I22, #I22, O22) - -#define sql_create_c_names_22(NAME, CMP, CONTR, T1, I1, N1, T2, I2, N2, T3, I3, N3, T4, I4, N4, T5, I5, N5, T6, I6, N6, T7, I7, N7, T8, I8, N8, T9, I9, N9, T10, I10, N10, T11, I11, N11, T12, I12, N12, T13, I13, N13, T14, I14, N14, T15, I15, N15, T16, I16, N16, T17, I17, N17, T18, I18, N18, T19, I19, N19, T20, I20, N20, T21, I21, N21, T22, I22, N22) \ - sql_create_complete_22(NAME, CMP, CONTR, T1, I1, N1, 0, T2, I2, N2, 1, T3, I3, N3, 2, T4, I4, N4, 3, T5, I5, N5, 4, T6, I6, N6, 5, T7, I7, N7, 6, T8, I8, N8, 7, T9, I9, N9, 8, T10, I10, N10, 9, T11, I11, N11, 10, T12, I12, N12, 11, T13, I13, N13, 12, T14, I14, N14, 13, T15, I15, N15, 14, T16, I16, N16, 15, T17, I17, N17, 16, T18, I18, N18, 17, T19, I19, N19, 18, T20, I20, N20, 19, T21, I21, N21, 20, T22, I22, N22, 21) - -// --------------------------------------------------- -// End Create 22 -// --------------------------------------------------- - -// --------------------------------------------------- -// Begin Create 23 -// --------------------------------------------------- -#define sql_create_basic_c_order_23(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6, T7, I7, O7, T8, I8, O8, T9, I9, O9, T10, I10, O10, T11, I11, O11, T12, I12, O12, T13, I13, O13, T14, I14, O14, T15, I15, O15, T16, I16, O16, T17, I17, O17, T18, I18, O18, T19, I19, O19, T20, I20, O20, T21, I21, O21, T22, I22, O22, T23, I23, O23)\ - struct NAME; \ - template int sql_compare_##NAME (const NAME &, const NAME &);\ - struct NAME { \ - T1 I1;\ - T2 I2;\ - T3 I3;\ - T4 I4;\ - T5 I5;\ - T6 I6;\ - T7 I7;\ - T8 I8;\ - T9 I9;\ - T10 I10;\ - T11 I11;\ - T12 I12;\ - T13 I13;\ - T14 I14;\ - T15 I15;\ - T16 I16;\ - T17 I17;\ - T18 I18;\ - T19 I19;\ - T20 I20;\ - T21 I21;\ - T22 I22;\ - T23 I23; \ - NAME () {} \ - NAME (const mysqlpp::Row &row);\ - sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18, T19, I19, T20, I20, T21, I21, T22, I22, T23, I23, 0, 0, 0, 0)\ - }; \ - template \ - void populate_##NAME (NAME *s, const mysqlpp::Row &row) { \ - s->I1 = static_cast(row.at(O1));\ - s->I2 = static_cast(row.at(O2));\ - s->I3 = static_cast(row.at(O3));\ - s->I4 = static_cast(row.at(O4));\ - s->I5 = static_cast(row.at(O5));\ - s->I6 = static_cast(row.at(O6));\ - s->I7 = static_cast(row.at(O7));\ - s->I8 = static_cast(row.at(O8));\ - s->I9 = static_cast(row.at(O9));\ - s->I10 = static_cast(row.at(O10));\ - s->I11 = static_cast(row.at(O11));\ - s->I12 = static_cast(row.at(O12));\ - s->I13 = static_cast(row.at(O13));\ - s->I14 = static_cast(row.at(O14));\ - s->I15 = static_cast(row.at(O15));\ - s->I16 = static_cast(row.at(O16));\ - s->I17 = static_cast(row.at(O17));\ - s->I18 = static_cast(row.at(O18));\ - s->I19 = static_cast(row.at(O19));\ - s->I20 = static_cast(row.at(O20));\ - s->I21 = static_cast(row.at(O21));\ - s->I22 = static_cast(row.at(O22));\ - s->I23 = static_cast(row.at(O23)); \ - } \ - inline NAME::NAME (const mysqlpp::Row &row) \ - {populate_##NAME(this, row);} \ - sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, I11, I12, I13, I14, I15, I16, I17, I18, I19, I20, I21, I22, I23, 0, 0 ) - -#define sql_create_complete_23(NAME, CMP, CONTR, T1, I1, N1, O1, T2, I2, N2, O2, T3, I3, N3, O3, T4, I4, N4, O4, T5, I5, N5, O5, T6, I6, N6, O6, T7, I7, N7, O7, T8, I8, N8, O8, T9, I9, N9, O9, T10, I10, N10, O10, T11, I11, N11, O11, T12, I12, N12, O12, T13, I13, N13, O13, T14, I14, N14, O14, T15, I15, N15, O15, T16, I16, N16, O16, T17, I17, N17, O17, T18, I18, N18, O18, T19, I19, N19, O19, T20, I20, N20, O20, T21, I21, N21, O21, T22, I22, N22, O22, T23, I23, N23, O23) \ - struct NAME; \ - enum NAME##_enum { \ - NAME##_##I1,\ - NAME##_##I2,\ - NAME##_##I3,\ - NAME##_##I4,\ - NAME##_##I5,\ - NAME##_##I6,\ - NAME##_##I7,\ - NAME##_##I8,\ - NAME##_##I9,\ - NAME##_##I10,\ - NAME##_##I11,\ - NAME##_##I12,\ - NAME##_##I13,\ - NAME##_##I14,\ - NAME##_##I15,\ - NAME##_##I16,\ - NAME##_##I17,\ - NAME##_##I18,\ - NAME##_##I19,\ - NAME##_##I20,\ - NAME##_##I21,\ - NAME##_##I22,\ - NAME##_##I23 \ - ,NAME##_NULL \ - }; \ - template \ - class NAME##_value_list { \ - /*friend std::ostream& operator << <> (std::ostream&, const NAME##_value_list&); */\ - public: \ - const NAME *obj;\ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - NAME##_value_list (const NAME *o, mysqlpp::cchar *d, Manip m) \ - : obj(o), delem(d), manip(m) {} \ - };\ - template \ - class NAME##_##field_list {\ - /* friend std::ostream& operator << <> (std::ostream&, const NAME##_field_list&); */\ - public: \ - const NAME *obj; \ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - NAME##_field_list (const NAME *o, mysqlpp::cchar *d, Manip m) \ - : obj(o), delem(d), manip(m) {} \ - };\ - template \ - class NAME##_equal_list { \ - /* friend std::ostream& operator << <> (std::ostream&, const NAME##_equal_list&); */\ - public: \ - const NAME *obj;\ - mysqlpp::cchar *delem;\ - mysqlpp::cchar *comp;\ - Manip manip;\ - public: \ - NAME##_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) \ - : obj(o), delem(d), comp(c), manip(m) {}\ - };\ - template \ - class NAME##_cus_value_list {\ - /* friend std::ostream& operator << <> (std::ostream&, \ - const NAME##_cus_value_list&); */\ - public:\ - const NAME *obj;\ - std::vector *include;\ - bool del_vector;\ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - ~NAME##_cus_value_list () {if (del_vector) delete include;} \ - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21, bool i22, bool i23);\ - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21, NAME##_enum i22, NAME##_enum i23); \ - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m ,std::vector* i)\ - : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\ - };\ - template \ - class NAME##_cus_field_list { \ - /* friend std::ostream& operator << <> (std::ostream&, \ - const NAME##_cus_field_list&); */\ - public:\ - const NAME *obj; \ - std::vector *include; \ - bool del_vector; \ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - ~NAME##_cus_field_list () {if (del_vector) delete include;} \ - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21, bool i22, bool i23); \ - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21, NAME##_enum i22, NAME##_enum i23); \ - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, std::vector *i) \ - : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\ - };\ - template \ - class NAME##_cus_equal_list {\ - /* friend std::ostream& operator << <> (std::ostream&, \ - const NAME##_cus_equal_list&); */\ - public:\ - const NAME *obj;\ - std::vector *include;\ - bool del_vector;\ - mysqlpp::cchar *delem;\ - mysqlpp::cchar *comp;\ - Manip manip;\ - public:\ - ~NAME##_##cus_equal_list () {if (del_vector) delete include;}\ - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21, bool i22, bool i23); \ - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21, NAME##_enum i22, NAME##_enum i23); \ - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, std::vector *i) \ - : obj(o), include(i), del_vector(false), delem(d), comp(c), manip(m) {}\ - };\ - template int sql_compare_##NAME (const NAME &, const NAME &);\ - struct NAME { \ - T1 I1;\ - T2 I2;\ - T3 I3;\ - T4 I4;\ - T5 I5;\ - T6 I6;\ - T7 I7;\ - T8 I8;\ - T9 I9;\ - T10 I10;\ - T11 I11;\ - T12 I12;\ - T13 I13;\ - T14 I14;\ - T15 I15;\ - T16 I16;\ - T17 I17;\ - T18 I18;\ - T19 I19;\ - T20 I20;\ - T21 I21;\ - T22 I22;\ - T23 I23; \ - NAME () {} \ - NAME (const mysqlpp::Row &row);\ - void set (const mysqlpp::Row &row);\ - sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18, T19, I19, T20, I20, T21, I21, T22, I22, T23, I23, 0, 0, 0, 0)\ - sql_construct_define_##CONTR(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18, T19, I19, T20, I20, T21, I21, T22, I22, T23, I23, 0, 0, 0, 0)\ - static const char *names[];\ - static const char *_table;\ - static const char *& table() {return _table;}\ - NAME##_value_list value_list() const {\ - return value_list(",", mysqlpp::quote);}\ - NAME##_value_list value_list(mysqlpp::cchar *d) const {\ - return value_list(d, mysqlpp::quote);}\ - template \ - NAME##_value_list value_list(mysqlpp::cchar *d, Manip m) const; \ - NAME##_field_list field_list() const {\ - return field_list(",", mysqlpp::do_nothing);}\ - NAME##_field_list field_list(mysqlpp::cchar *d) const {\ - return field_list(d, mysqlpp::do_nothing);}\ - template \ - NAME##_field_list field_list(mysqlpp::cchar *d, Manip m) const; \ - NAME##_equal_list equal_list(mysqlpp::cchar *d = ",", \ - mysqlpp::cchar *c = " = ") const{\ - return equal_list(d, c, mysqlpp::quote);}\ - template \ - NAME##_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) const; \ - /* cus_data */\ - NAME##_cus_value_list value_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false, bool i23 = false) const {\ - return value_list(",", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23);\ - }\ - NAME##_cus_value_list value_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL, NAME##_enum i23 = NAME##_NULL) const {\ - return value_list(",", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23);\ - }\ - NAME##_cus_value_list value_list(std::vector *i) const {\ - return value_list(",", mysqlpp::quote, i);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::sql_cmp_type sc) const {\ - return value_list(",", mysqlpp::quote, sc);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false, bool i23 = false) const {\ - return value_list(d, mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL, NAME##_enum i23 = NAME##_NULL) const {\ - return value_list(d, mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, \ - std::vector *i) const {\ - return value_list(d, mysqlpp::quote, i);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, \ - mysqlpp::sql_cmp_type sc) const {\ - return value_list(d, mysqlpp::quote, sc);\ - }\ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false, bool i23 = false) const; \ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL, NAME##_enum i23 = NAME##_NULL) const; \ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m, \ - std::vector *i) const;\ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m, \ - mysqlpp::sql_cmp_type sc) const;\ - /* cus field */\ - NAME##_cus_field_list field_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false, bool i23 = false) const {\ - return field_list(",", mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23);\ - }\ - NAME##_cus_field_list field_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL, NAME##_enum i23 = NAME##_NULL) const {\ - return field_list(",", mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23);\ - }\ - NAME##_cus_field_list field_list(std::vector *i) const {\ - return field_list(",", mysqlpp::do_nothing, i);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::sql_cmp_type sc) const\ - {\ - return field_list(",", mysqlpp::do_nothing, sc);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, \ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false, bool i23 = false) const {\ - return field_list(d, mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL, NAME##_enum i23 = NAME##_NULL) const {\ - return field_list(d, mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, \ - std::vector *i) const {\ - return field_list(d, mysqlpp::do_nothing, i);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, \ - mysqlpp::sql_cmp_type sc) const {\ - return field_list(d, mysqlpp::do_nothing, sc);\ - }\ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false, bool i23 = false) const; \ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL, NAME##_enum i23 = NAME##_NULL) const; \ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m,\ - std::vector *i) const;\ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m, \ - mysqlpp::sql_cmp_type sc) const;\ - /* cus equal */\ - NAME##_cus_equal_list equal_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false, bool i23 = false) const {\ - return equal_list(",", " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23);\ - }\ - NAME##_cus_equal_list equal_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL, NAME##_enum i23 = NAME##_NULL) const {\ - return equal_list(",", " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23);\ - }\ - NAME##_cus_equal_list equal_list(std::vector *i) const {\ - return equal_list(",", " = ", mysqlpp::quote, i);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::sql_cmp_type sc) const {\ - return equal_list(",", " = ", mysqlpp::quote, sc);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false, bool i23 = false) const {\ - return equal_list(d, " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL, NAME##_enum i23 = NAME##_NULL) const {\ - return equal_list(d, " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, \ - std::vector *i) const {\ - return equal_list(d, " = ", mysqlpp::quote, i);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, \ - mysqlpp::sql_cmp_type sc) const {\ - return equal_list(d, " = ", mysqlpp::quote, sc);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false, bool i23 = false) const {\ - return equal_list(d, c, mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL, NAME##_enum i23 = NAME##_NULL) const {\ - return equal_list(d, c, mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - std::vector *i) const {\ - return equal_list(d, c, mysqlpp::quote, i);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - mysqlpp::sql_cmp_type sc) const {\ - return equal_list(d, c, mysqlpp::quote, sc);\ - }\ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false, bool i23 = false) const; \ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL, NAME##_enum i23 = NAME##_NULL) const; \ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - std::vector *i) const;\ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - mysqlpp::sql_cmp_type sc) const;\ - }; \ - MYSQLPP_SSQLS_EXPAND(\ - const char *NAME::names[] = { \ - N1 ,\ - N2 ,\ - N3 ,\ - N4 ,\ - N5 ,\ - N6 ,\ - N7 ,\ - N8 ,\ - N9 ,\ - N10 ,\ - N11 ,\ - N12 ,\ - N13 ,\ - N14 ,\ - N15 ,\ - N16 ,\ - N17 ,\ - N18 ,\ - N19 ,\ - N20 ,\ - N21 ,\ - N22 ,\ - N23 \ - }; \ - const char *NAME::_table = #NAME ;\ - )\ - template \ - NAME##_cus_value_list::NAME##_cus_value_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21, bool i22, bool i23) \ - { \ - delem = d;\ - manip = m;\ - del_vector = true;\ - obj = o; \ - include = new std::vector(23, false);\ - if (i1) (*include)[0]=true;\ - if (i2) (*include)[1]=true;\ - if (i3) (*include)[2]=true;\ - if (i4) (*include)[3]=true;\ - if (i5) (*include)[4]=true;\ - if (i6) (*include)[5]=true;\ - if (i7) (*include)[6]=true;\ - if (i8) (*include)[7]=true;\ - if (i9) (*include)[8]=true;\ - if (i10) (*include)[9]=true;\ - if (i11) (*include)[10]=true;\ - if (i12) (*include)[11]=true;\ - if (i13) (*include)[12]=true;\ - if (i14) (*include)[13]=true;\ - if (i15) (*include)[14]=true;\ - if (i16) (*include)[15]=true;\ - if (i17) (*include)[16]=true;\ - if (i18) (*include)[17]=true;\ - if (i19) (*include)[18]=true;\ - if (i20) (*include)[19]=true;\ - if (i21) (*include)[20]=true;\ - if (i22) (*include)[21]=true;\ - if (i23) (*include)[22]=true;\ - } \ - template \ - NAME##_cus_value_list::NAME##_cus_value_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21, NAME##_enum i22, NAME##_enum i23) { \ - delem = d;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(23, false); \ - if (i1 == NAME##_NULL) return;\ - (*include)[i1]=true;\ - if (i2 == NAME##_NULL) return;\ - (*include)[i2]=true;\ - if (i3 == NAME##_NULL) return;\ - (*include)[i3]=true;\ - if (i4 == NAME##_NULL) return;\ - (*include)[i4]=true;\ - if (i5 == NAME##_NULL) return;\ - (*include)[i5]=true;\ - if (i6 == NAME##_NULL) return;\ - (*include)[i6]=true;\ - if (i7 == NAME##_NULL) return;\ - (*include)[i7]=true;\ - if (i8 == NAME##_NULL) return;\ - (*include)[i8]=true;\ - if (i9 == NAME##_NULL) return;\ - (*include)[i9]=true;\ - if (i10 == NAME##_NULL) return;\ - (*include)[i10]=true;\ - if (i11 == NAME##_NULL) return;\ - (*include)[i11]=true;\ - if (i12 == NAME##_NULL) return;\ - (*include)[i12]=true;\ - if (i13 == NAME##_NULL) return;\ - (*include)[i13]=true;\ - if (i14 == NAME##_NULL) return;\ - (*include)[i14]=true;\ - if (i15 == NAME##_NULL) return;\ - (*include)[i15]=true;\ - if (i16 == NAME##_NULL) return;\ - (*include)[i16]=true;\ - if (i17 == NAME##_NULL) return;\ - (*include)[i17]=true;\ - if (i18 == NAME##_NULL) return;\ - (*include)[i18]=true;\ - if (i19 == NAME##_NULL) return;\ - (*include)[i19]=true;\ - if (i20 == NAME##_NULL) return;\ - (*include)[i20]=true;\ - if (i21 == NAME##_NULL) return;\ - (*include)[i21]=true;\ - if (i22 == NAME##_NULL) return;\ - (*include)[i22]=true;\ - if (i23 == NAME##_NULL) return;\ - (*include)[i23]=true;\ - }\ - template \ - NAME##_cus_field_list::NAME##_cus_field_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21, bool i22, bool i23) {\ - delem = d;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(23, false); \ - if (i1) (*include)[0]=true;\ - if (i2) (*include)[1]=true;\ - if (i3) (*include)[2]=true;\ - if (i4) (*include)[3]=true;\ - if (i5) (*include)[4]=true;\ - if (i6) (*include)[5]=true;\ - if (i7) (*include)[6]=true;\ - if (i8) (*include)[7]=true;\ - if (i9) (*include)[8]=true;\ - if (i10) (*include)[9]=true;\ - if (i11) (*include)[10]=true;\ - if (i12) (*include)[11]=true;\ - if (i13) (*include)[12]=true;\ - if (i14) (*include)[13]=true;\ - if (i15) (*include)[14]=true;\ - if (i16) (*include)[15]=true;\ - if (i17) (*include)[16]=true;\ - if (i18) (*include)[17]=true;\ - if (i19) (*include)[18]=true;\ - if (i20) (*include)[19]=true;\ - if (i21) (*include)[20]=true;\ - if (i22) (*include)[21]=true;\ - if (i23) (*include)[22]=true;\ - } \ - template \ - NAME##_cus_field_list::NAME##_cus_field_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21, NAME##_enum i22, NAME##_enum i23) { \ - delem = d;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(23, false); \ - if (i1 == NAME##_NULL) return;\ - (*include)[i1]=true;\ - if (i2 == NAME##_NULL) return;\ - (*include)[i2]=true;\ - if (i3 == NAME##_NULL) return;\ - (*include)[i3]=true;\ - if (i4 == NAME##_NULL) return;\ - (*include)[i4]=true;\ - if (i5 == NAME##_NULL) return;\ - (*include)[i5]=true;\ - if (i6 == NAME##_NULL) return;\ - (*include)[i6]=true;\ - if (i7 == NAME##_NULL) return;\ - (*include)[i7]=true;\ - if (i8 == NAME##_NULL) return;\ - (*include)[i8]=true;\ - if (i9 == NAME##_NULL) return;\ - (*include)[i9]=true;\ - if (i10 == NAME##_NULL) return;\ - (*include)[i10]=true;\ - if (i11 == NAME##_NULL) return;\ - (*include)[i11]=true;\ - if (i12 == NAME##_NULL) return;\ - (*include)[i12]=true;\ - if (i13 == NAME##_NULL) return;\ - (*include)[i13]=true;\ - if (i14 == NAME##_NULL) return;\ - (*include)[i14]=true;\ - if (i15 == NAME##_NULL) return;\ - (*include)[i15]=true;\ - if (i16 == NAME##_NULL) return;\ - (*include)[i16]=true;\ - if (i17 == NAME##_NULL) return;\ - (*include)[i17]=true;\ - if (i18 == NAME##_NULL) return;\ - (*include)[i18]=true;\ - if (i19 == NAME##_NULL) return;\ - (*include)[i19]=true;\ - if (i20 == NAME##_NULL) return;\ - (*include)[i20]=true;\ - if (i21 == NAME##_NULL) return;\ - (*include)[i21]=true;\ - if (i22 == NAME##_NULL) return;\ - (*include)[i22]=true;\ - if (i23 == NAME##_NULL) return;\ - (*include)[i23]=true;\ - }\ - template \ - NAME##_cus_equal_list::NAME##_cus_equal_list\ - (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21, bool i22, bool i23) { \ - delem = d;\ - comp = c;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(23, false); \ - if (i1) (*include)[0]=true;\ - if (i2) (*include)[1]=true;\ - if (i3) (*include)[2]=true;\ - if (i4) (*include)[3]=true;\ - if (i5) (*include)[4]=true;\ - if (i6) (*include)[5]=true;\ - if (i7) (*include)[6]=true;\ - if (i8) (*include)[7]=true;\ - if (i9) (*include)[8]=true;\ - if (i10) (*include)[9]=true;\ - if (i11) (*include)[10]=true;\ - if (i12) (*include)[11]=true;\ - if (i13) (*include)[12]=true;\ - if (i14) (*include)[13]=true;\ - if (i15) (*include)[14]=true;\ - if (i16) (*include)[15]=true;\ - if (i17) (*include)[16]=true;\ - if (i18) (*include)[17]=true;\ - if (i19) (*include)[18]=true;\ - if (i20) (*include)[19]=true;\ - if (i21) (*include)[20]=true;\ - if (i22) (*include)[21]=true;\ - if (i23) (*include)[22]=true;\ - } \ - template \ - NAME##_cus_equal_list::NAME##_cus_equal_list\ - (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21, NAME##_enum i22, NAME##_enum i23) { \ - delem = d;\ - comp = c;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(23, false); \ - if (i1 == NAME##_NULL) return;\ - (*include)[i1]=true;\ - if (i2 == NAME##_NULL) return;\ - (*include)[i2]=true;\ - if (i3 == NAME##_NULL) return;\ - (*include)[i3]=true;\ - if (i4 == NAME##_NULL) return;\ - (*include)[i4]=true;\ - if (i5 == NAME##_NULL) return;\ - (*include)[i5]=true;\ - if (i6 == NAME##_NULL) return;\ - (*include)[i6]=true;\ - if (i7 == NAME##_NULL) return;\ - (*include)[i7]=true;\ - if (i8 == NAME##_NULL) return;\ - (*include)[i8]=true;\ - if (i9 == NAME##_NULL) return;\ - (*include)[i9]=true;\ - if (i10 == NAME##_NULL) return;\ - (*include)[i10]=true;\ - if (i11 == NAME##_NULL) return;\ - (*include)[i11]=true;\ - if (i12 == NAME##_NULL) return;\ - (*include)[i12]=true;\ - if (i13 == NAME##_NULL) return;\ - (*include)[i13]=true;\ - if (i14 == NAME##_NULL) return;\ - (*include)[i14]=true;\ - if (i15 == NAME##_NULL) return;\ - (*include)[i15]=true;\ - if (i16 == NAME##_NULL) return;\ - (*include)[i16]=true;\ - if (i17 == NAME##_NULL) return;\ - (*include)[i17]=true;\ - if (i18 == NAME##_NULL) return;\ - (*include)[i18]=true;\ - if (i19 == NAME##_NULL) return;\ - (*include)[i19]=true;\ - if (i20 == NAME##_NULL) return;\ - (*include)[i20]=true;\ - if (i21 == NAME##_NULL) return;\ - (*include)[i21]=true;\ - if (i22 == NAME##_NULL) return;\ - (*include)[i22]=true;\ - if (i23 == NAME##_NULL) return;\ - (*include)[i23]=true;\ - }\ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_value_list& obj) { \ - s << obj.manip << obj.obj->I1 << obj.delem;\ - s << obj.manip << obj.obj->I2 << obj.delem;\ - s << obj.manip << obj.obj->I3 << obj.delem;\ - s << obj.manip << obj.obj->I4 << obj.delem;\ - s << obj.manip << obj.obj->I5 << obj.delem;\ - s << obj.manip << obj.obj->I6 << obj.delem;\ - s << obj.manip << obj.obj->I7 << obj.delem;\ - s << obj.manip << obj.obj->I8 << obj.delem;\ - s << obj.manip << obj.obj->I9 << obj.delem;\ - s << obj.manip << obj.obj->I10 << obj.delem;\ - s << obj.manip << obj.obj->I11 << obj.delem;\ - s << obj.manip << obj.obj->I12 << obj.delem;\ - s << obj.manip << obj.obj->I13 << obj.delem;\ - s << obj.manip << obj.obj->I14 << obj.delem;\ - s << obj.manip << obj.obj->I15 << obj.delem;\ - s << obj.manip << obj.obj->I16 << obj.delem;\ - s << obj.manip << obj.obj->I17 << obj.delem;\ - s << obj.manip << obj.obj->I18 << obj.delem;\ - s << obj.manip << obj.obj->I19 << obj.delem;\ - s << obj.manip << obj.obj->I20 << obj.delem;\ - s << obj.manip << obj.obj->I21 << obj.delem;\ - s << obj.manip << obj.obj->I22 << obj.delem;\ - s << obj.manip << obj.obj->I23; \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_field_list& obj) { \ - s << obj.manip << obj.obj->names[0] << obj.delem;\ - s << obj.manip << obj.obj->names[1] << obj.delem;\ - s << obj.manip << obj.obj->names[2] << obj.delem;\ - s << obj.manip << obj.obj->names[3] << obj.delem;\ - s << obj.manip << obj.obj->names[4] << obj.delem;\ - s << obj.manip << obj.obj->names[5] << obj.delem;\ - s << obj.manip << obj.obj->names[6] << obj.delem;\ - s << obj.manip << obj.obj->names[7] << obj.delem;\ - s << obj.manip << obj.obj->names[8] << obj.delem;\ - s << obj.manip << obj.obj->names[9] << obj.delem;\ - s << obj.manip << obj.obj->names[10] << obj.delem;\ - s << obj.manip << obj.obj->names[11] << obj.delem;\ - s << obj.manip << obj.obj->names[12] << obj.delem;\ - s << obj.manip << obj.obj->names[13] << obj.delem;\ - s << obj.manip << obj.obj->names[14] << obj.delem;\ - s << obj.manip << obj.obj->names[15] << obj.delem;\ - s << obj.manip << obj.obj->names[16] << obj.delem;\ - s << obj.manip << obj.obj->names[17] << obj.delem;\ - s << obj.manip << obj.obj->names[18] << obj.delem;\ - s << obj.manip << obj.obj->names[19] << obj.delem;\ - s << obj.manip << obj.obj->names[20] << obj.delem;\ - s << obj.manip << obj.obj->names[21] << obj.delem;\ - s << obj.manip << obj.obj->names[22]; \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_equal_list& obj) { \ - s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1 << obj.delem;\ - s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2 << obj.delem;\ - s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3 << obj.delem;\ - s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4 << obj.delem;\ - s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5 << obj.delem;\ - s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6 << obj.delem;\ - s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->I7 << obj.delem;\ - s << obj.obj->names[7] << obj.comp << obj.manip << obj.obj->I8 << obj.delem;\ - s << obj.obj->names[8] << obj.comp << obj.manip << obj.obj->I9 << obj.delem;\ - s << obj.obj->names[9] << obj.comp << obj.manip << obj.obj->I10 << obj.delem;\ - s << obj.obj->names[10] << obj.comp << obj.manip << obj.obj->I11 << obj.delem;\ - s << obj.obj->names[11] << obj.comp << obj.manip << obj.obj->I12 << obj.delem;\ - s << obj.obj->names[12] << obj.comp << obj.manip << obj.obj->I13 << obj.delem;\ - s << obj.obj->names[13] << obj.comp << obj.manip << obj.obj->I14 << obj.delem;\ - s << obj.obj->names[14] << obj.comp << obj.manip << obj.obj->I15 << obj.delem;\ - s << obj.obj->names[15] << obj.comp << obj.manip << obj.obj->I16 << obj.delem;\ - s << obj.obj->names[16] << obj.comp << obj.manip << obj.obj->I17 << obj.delem;\ - s << obj.obj->names[17] << obj.comp << obj.manip << obj.obj->I18 << obj.delem;\ - s << obj.obj->names[18] << obj.comp << obj.manip << obj.obj->I19 << obj.delem;\ - s << obj.obj->names[19] << obj.comp << obj.manip << obj.obj->I20 << obj.delem;\ - s << obj.obj->names[20] << obj.comp << obj.manip << obj.obj->I21 << obj.delem;\ - s << obj.obj->names[21] << obj.comp << obj.manip << obj.obj->I22 << obj.delem;\ - s << obj.obj->names[22] << obj.comp << obj.manip << obj.obj->I23; \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_cus_value_list& obj) { \ - bool before = false; \ - if ((*obj.include)[0]) { \ - s << obj.manip << obj.obj->I1;\ - before = true; \ - } \ - if ((*obj.include)[1]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I2;\ - before = true; \ - } \ - if ((*obj.include)[2]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I3;\ - before = true; \ - } \ - if ((*obj.include)[3]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I4;\ - before = true; \ - } \ - if ((*obj.include)[4]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I5;\ - before = true; \ - } \ - if ((*obj.include)[5]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I6;\ - before = true; \ - } \ - if ((*obj.include)[6]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I7;\ - before = true; \ - } \ - if ((*obj.include)[7]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I8;\ - before = true; \ - } \ - if ((*obj.include)[8]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I9;\ - before = true; \ - } \ - if ((*obj.include)[9]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I10;\ - before = true; \ - } \ - if ((*obj.include)[10]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I11;\ - before = true; \ - } \ - if ((*obj.include)[11]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I12;\ - before = true; \ - } \ - if ((*obj.include)[12]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I13;\ - before = true; \ - } \ - if ((*obj.include)[13]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I14;\ - before = true; \ - } \ - if ((*obj.include)[14]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I15;\ - before = true; \ - } \ - if ((*obj.include)[15]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I16;\ - before = true; \ - } \ - if ((*obj.include)[16]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I17;\ - before = true; \ - } \ - if ((*obj.include)[17]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I18;\ - before = true; \ - } \ - if ((*obj.include)[18]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I19;\ - before = true; \ - } \ - if ((*obj.include)[19]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I20;\ - before = true; \ - } \ - if ((*obj.include)[20]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I21;\ - before = true; \ - } \ - if ((*obj.include)[21]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I22;\ - before = true; \ - } \ - if ((*obj.include)[22]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I23;\ - } \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_cus_field_list& obj) { \ - bool before = false; \ - if ((*obj.include)[0]) { \ - s << obj.manip << obj.obj->names[0];\ - before = true; \ - } \ - if ((*obj.include)[1]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[1];\ - before = true; \ - } \ - if ((*obj.include)[2]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[2];\ - before = true; \ - } \ - if ((*obj.include)[3]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[3];\ - before = true; \ - } \ - if ((*obj.include)[4]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[4];\ - before = true; \ - } \ - if ((*obj.include)[5]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[5];\ - before = true; \ - } \ - if ((*obj.include)[6]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[6];\ - before = true; \ - } \ - if ((*obj.include)[7]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[7];\ - before = true; \ - } \ - if ((*obj.include)[8]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[8];\ - before = true; \ - } \ - if ((*obj.include)[9]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[9];\ - before = true; \ - } \ - if ((*obj.include)[10]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[10];\ - before = true; \ - } \ - if ((*obj.include)[11]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[11];\ - before = true; \ - } \ - if ((*obj.include)[12]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[12];\ - before = true; \ - } \ - if ((*obj.include)[13]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[13];\ - before = true; \ - } \ - if ((*obj.include)[14]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[14];\ - before = true; \ - } \ - if ((*obj.include)[15]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[15];\ - before = true; \ - } \ - if ((*obj.include)[16]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[16];\ - before = true; \ - } \ - if ((*obj.include)[17]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[17];\ - before = true; \ - } \ - if ((*obj.include)[18]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[18];\ - before = true; \ - } \ - if ((*obj.include)[19]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[19];\ - before = true; \ - } \ - if ((*obj.include)[20]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[20];\ - before = true; \ - } \ - if ((*obj.include)[21]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[21];\ - before = true; \ - } \ - if ((*obj.include)[22]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[22];\ - } \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_cus_equal_list& obj) { \ - bool before = false; \ - if ((*obj.include)[0]) { \ - s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1;\ - before = true; \ - } \ - if ((*obj.include)[1]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2;\ - before = true; \ - } \ - if ((*obj.include)[2]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3;\ - before = true; \ - } \ - if ((*obj.include)[3]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4;\ - before = true; \ - } \ - if ((*obj.include)[4]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5;\ - before = true; \ - } \ - if ((*obj.include)[5]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6;\ - before = true; \ - } \ - if ((*obj.include)[6]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->I7;\ - before = true; \ - } \ - if ((*obj.include)[7]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[7] << obj.comp << obj.manip << obj.obj->I8;\ - before = true; \ - } \ - if ((*obj.include)[8]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[8] << obj.comp << obj.manip << obj.obj->I9;\ - before = true; \ - } \ - if ((*obj.include)[9]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[9] << obj.comp << obj.manip << obj.obj->I10;\ - before = true; \ - } \ - if ((*obj.include)[10]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[10] << obj.comp << obj.manip << obj.obj->I11;\ - before = true; \ - } \ - if ((*obj.include)[11]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[11] << obj.comp << obj.manip << obj.obj->I12;\ - before = true; \ - } \ - if ((*obj.include)[12]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[12] << obj.comp << obj.manip << obj.obj->I13;\ - before = true; \ - } \ - if ((*obj.include)[13]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[13] << obj.comp << obj.manip << obj.obj->I14;\ - before = true; \ - } \ - if ((*obj.include)[14]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[14] << obj.comp << obj.manip << obj.obj->I15;\ - before = true; \ - } \ - if ((*obj.include)[15]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[15] << obj.comp << obj.manip << obj.obj->I16;\ - before = true; \ - } \ - if ((*obj.include)[16]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[16] << obj.comp << obj.manip << obj.obj->I17;\ - before = true; \ - } \ - if ((*obj.include)[17]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[17] << obj.comp << obj.manip << obj.obj->I18;\ - before = true; \ - } \ - if ((*obj.include)[18]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[18] << obj.comp << obj.manip << obj.obj->I19;\ - before = true; \ - } \ - if ((*obj.include)[19]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[19] << obj.comp << obj.manip << obj.obj->I20;\ - before = true; \ - } \ - if ((*obj.include)[20]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[20] << obj.comp << obj.manip << obj.obj->I21;\ - before = true; \ - } \ - if ((*obj.include)[21]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[21] << obj.comp << obj.manip << obj.obj->I22;\ - before = true; \ - } \ - if ((*obj.include)[22]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[22] << obj.comp << obj.manip << obj.obj->I23;\ - } \ - return s; \ - } \ - template \ - inline NAME##_value_list NAME::value_list(mysqlpp::cchar *d, Manip m) const { \ - return NAME##_value_list (this, d, m); \ - } \ - template \ - inline NAME##_field_list NAME::field_list(mysqlpp::cchar *d, Manip m) const { \ - return NAME##_field_list (this, d, m); \ - } \ - template \ - inline NAME##_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) const { \ - return NAME##_equal_list (this, d, c, m); \ - } \ - template \ - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21, bool i22, bool i23) const {\ - return NAME##_cus_value_list (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23); \ - } \ - template \ - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21, bool i22, bool i23) const { \ - return NAME##_cus_field_list (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23); \ - } \ - template \ - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m,\ - bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21, bool i22, bool i23) const { \ - return NAME##_cus_equal_list (this, d, c, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23); \ - } \ - template \ - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21, NAME##_enum i22, NAME##_enum i23) const { \ - return NAME##_cus_value_list (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23); \ - } \ - template \ - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21, NAME##_enum i22, NAME##_enum i23) const {\ - return NAME##_cus_field_list (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23); \ - } \ - template \ - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21, NAME##_enum i22, NAME##_enum i23) const { \ - return NAME##_cus_equal_list (this, d, c, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23); \ - } \ - template \ - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m,\ - std::vector *i) const {\ - return NAME##_cus_value_list (this, d, m, i);\ - }\ - template \ - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m,\ - std::vector *i) const {\ - return NAME##_cus_field_list (this, d, m, i);\ - }\ - template \ - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m,\ - std::vector *i) const {\ - return NAME##_cus_equal_list (this, d, c, m, i);\ - }\ - template \ - inline NAME##_cus_value_list \ - NAME::value_list(mysqlpp::cchar *d, Manip m, mysqlpp::sql_cmp_type /*sc*/) const {\ - sql_compare_type_def_##CMP (NAME, value, NUM);\ - }\ - template \ - inline NAME##_cus_field_list \ - NAME::field_list(mysqlpp::cchar *d, Manip m, mysqlpp::sql_cmp_type /*sc*/) const {\ - sql_compare_type_def_##CMP (NAME, field, NUM);\ - }\ - template \ - inline NAME##_cus_equal_list \ - NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, mysqlpp::sql_cmp_type /*sc*/) const {\ - sql_compare_type_defe_##CMP (NAME, equal, NUM);\ - }\ - template \ - void populate_##NAME (NAME *s, const mysqlpp::Row &row) { \ - s->I1 = static_cast(row.at(O1));\ - s->I2 = static_cast(row.at(O2));\ - s->I3 = static_cast(row.at(O3));\ - s->I4 = static_cast(row.at(O4));\ - s->I5 = static_cast(row.at(O5));\ - s->I6 = static_cast(row.at(O6));\ - s->I7 = static_cast(row.at(O7));\ - s->I8 = static_cast(row.at(O8));\ - s->I9 = static_cast(row.at(O9));\ - s->I10 = static_cast(row.at(O10));\ - s->I11 = static_cast(row.at(O11));\ - s->I12 = static_cast(row.at(O12));\ - s->I13 = static_cast(row.at(O13));\ - s->I14 = static_cast(row.at(O14));\ - s->I15 = static_cast(row.at(O15));\ - s->I16 = static_cast(row.at(O16));\ - s->I17 = static_cast(row.at(O17));\ - s->I18 = static_cast(row.at(O18));\ - s->I19 = static_cast(row.at(O19));\ - s->I20 = static_cast(row.at(O20));\ - s->I21 = static_cast(row.at(O21));\ - s->I22 = static_cast(row.at(O22));\ - s->I23 = static_cast(row.at(O23));\ - } \ - inline NAME::NAME (const mysqlpp::Row &row) \ - {populate_##NAME(this, row);}\ - inline void NAME::set (const mysqlpp::Row &row)\ - {populate_##NAME(this, row);}\ - sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, I11, I12, I13, I14, I15, I16, I17, I18, I19, I20, I21, I22, I23, 0, 0 ) - -#define sql_create_basic_23(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18, T19, I19, T20, I20, T21, I21, T22, I22, T23, I23) \ - sql_create_basic_c_order_23(NAME, CMP, CONTR, T1, I1, 0, T2, I2, 1, T3, I3, 2, T4, I4, 3, T5, I5, 4, T6, I6, 5, T7, I7, 6, T8, I8, 7, T9, I9, 8, T10, I10, 9, T11, I11, 10, T12, I12, 11, T13, I13, 12, T14, I14, 13, T15, I15, 14, T16, I16, 15, T17, I17, 16, T18, I18, 17, T19, I19, 18, T20, I20, 19, T21, I21, 20, T22, I22, 21, T23, I23, 22) - -#define sql_create_23(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18, T19, I19, T20, I20, T21, I21, T22, I22, T23, I23) \ - sql_create_complete_23(NAME, CMP, CONTR, T1, I1, #I1, 0, T2, I2, #I2, 1, T3, I3, #I3, 2, T4, I4, #I4, 3, T5, I5, #I5, 4, T6, I6, #I6, 5, T7, I7, #I7, 6, T8, I8, #I8, 7, T9, I9, #I9, 8, T10, I10, #I10, 9, T11, I11, #I11, 10, T12, I12, #I12, 11, T13, I13, #I13, 12, T14, I14, #I14, 13, T15, I15, #I15, 14, T16, I16, #I16, 15, T17, I17, #I17, 16, T18, I18, #I18, 17, T19, I19, #I19, 18, T20, I20, #I20, 19, T21, I21, #I21, 20, T22, I22, #I22, 21, T23, I23, #I23, 22) \ - -#define sql_create_c_order_23(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6, T7, I7, O7, T8, I8, O8, T9, I9, O9, T10, I10, O10, T11, I11, O11, T12, I12, O12, T13, I13, O13, T14, I14, O14, T15, I15, O15, T16, I16, O16, T17, I17, O17, T18, I18, O18, T19, I19, O19, T20, I20, O20, T21, I21, O21, T22, I22, O22, T23, I23, O23) \ - sql_create_complete_23(NAME, CMP, CONTR, T1, I1, #I1, O1, T2, I2, #I2, O2, T3, I3, #I3, O3, T4, I4, #I4, O4, T5, I5, #I5, O5, T6, I6, #I6, O6, T7, I7, #I7, O7, T8, I8, #I8, O8, T9, I9, #I9, O9, T10, I10, #I10, O10, T11, I11, #I11, O11, T12, I12, #I12, O12, T13, I13, #I13, O13, T14, I14, #I14, O14, T15, I15, #I15, O15, T16, I16, #I16, O16, T17, I17, #I17, O17, T18, I18, #I18, O18, T19, I19, #I19, O19, T20, I20, #I20, O20, T21, I21, #I21, O21, T22, I22, #I22, O22, T23, I23, #I23, O23) - -#define sql_create_c_names_23(NAME, CMP, CONTR, T1, I1, N1, T2, I2, N2, T3, I3, N3, T4, I4, N4, T5, I5, N5, T6, I6, N6, T7, I7, N7, T8, I8, N8, T9, I9, N9, T10, I10, N10, T11, I11, N11, T12, I12, N12, T13, I13, N13, T14, I14, N14, T15, I15, N15, T16, I16, N16, T17, I17, N17, T18, I18, N18, T19, I19, N19, T20, I20, N20, T21, I21, N21, T22, I22, N22, T23, I23, N23) \ - sql_create_complete_23(NAME, CMP, CONTR, T1, I1, N1, 0, T2, I2, N2, 1, T3, I3, N3, 2, T4, I4, N4, 3, T5, I5, N5, 4, T6, I6, N6, 5, T7, I7, N7, 6, T8, I8, N8, 7, T9, I9, N9, 8, T10, I10, N10, 9, T11, I11, N11, 10, T12, I12, N12, 11, T13, I13, N13, 12, T14, I14, N14, 13, T15, I15, N15, 14, T16, I16, N16, 15, T17, I17, N17, 16, T18, I18, N18, 17, T19, I19, N19, 18, T20, I20, N20, 19, T21, I21, N21, 20, T22, I22, N22, 21, T23, I23, N23, 22) - -// --------------------------------------------------- -// End Create 23 -// --------------------------------------------------- - -// --------------------------------------------------- -// Begin Create 24 -// --------------------------------------------------- -#define sql_create_basic_c_order_24(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6, T7, I7, O7, T8, I8, O8, T9, I9, O9, T10, I10, O10, T11, I11, O11, T12, I12, O12, T13, I13, O13, T14, I14, O14, T15, I15, O15, T16, I16, O16, T17, I17, O17, T18, I18, O18, T19, I19, O19, T20, I20, O20, T21, I21, O21, T22, I22, O22, T23, I23, O23, T24, I24, O24)\ - struct NAME; \ - template int sql_compare_##NAME (const NAME &, const NAME &);\ - struct NAME { \ - T1 I1;\ - T2 I2;\ - T3 I3;\ - T4 I4;\ - T5 I5;\ - T6 I6;\ - T7 I7;\ - T8 I8;\ - T9 I9;\ - T10 I10;\ - T11 I11;\ - T12 I12;\ - T13 I13;\ - T14 I14;\ - T15 I15;\ - T16 I16;\ - T17 I17;\ - T18 I18;\ - T19 I19;\ - T20 I20;\ - T21 I21;\ - T22 I22;\ - T23 I23;\ - T24 I24; \ - NAME () {} \ - NAME (const mysqlpp::Row &row);\ - sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18, T19, I19, T20, I20, T21, I21, T22, I22, T23, I23, T24, I24, 0, 0)\ - }; \ - template \ - void populate_##NAME (NAME *s, const mysqlpp::Row &row) { \ - s->I1 = static_cast(row.at(O1));\ - s->I2 = static_cast(row.at(O2));\ - s->I3 = static_cast(row.at(O3));\ - s->I4 = static_cast(row.at(O4));\ - s->I5 = static_cast(row.at(O5));\ - s->I6 = static_cast(row.at(O6));\ - s->I7 = static_cast(row.at(O7));\ - s->I8 = static_cast(row.at(O8));\ - s->I9 = static_cast(row.at(O9));\ - s->I10 = static_cast(row.at(O10));\ - s->I11 = static_cast(row.at(O11));\ - s->I12 = static_cast(row.at(O12));\ - s->I13 = static_cast(row.at(O13));\ - s->I14 = static_cast(row.at(O14));\ - s->I15 = static_cast(row.at(O15));\ - s->I16 = static_cast(row.at(O16));\ - s->I17 = static_cast(row.at(O17));\ - s->I18 = static_cast(row.at(O18));\ - s->I19 = static_cast(row.at(O19));\ - s->I20 = static_cast(row.at(O20));\ - s->I21 = static_cast(row.at(O21));\ - s->I22 = static_cast(row.at(O22));\ - s->I23 = static_cast(row.at(O23));\ - s->I24 = static_cast(row.at(O24)); \ - } \ - inline NAME::NAME (const mysqlpp::Row &row) \ - {populate_##NAME(this, row);} \ - sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, I11, I12, I13, I14, I15, I16, I17, I18, I19, I20, I21, I22, I23, I24, 0 ) - -#define sql_create_complete_24(NAME, CMP, CONTR, T1, I1, N1, O1, T2, I2, N2, O2, T3, I3, N3, O3, T4, I4, N4, O4, T5, I5, N5, O5, T6, I6, N6, O6, T7, I7, N7, O7, T8, I8, N8, O8, T9, I9, N9, O9, T10, I10, N10, O10, T11, I11, N11, O11, T12, I12, N12, O12, T13, I13, N13, O13, T14, I14, N14, O14, T15, I15, N15, O15, T16, I16, N16, O16, T17, I17, N17, O17, T18, I18, N18, O18, T19, I19, N19, O19, T20, I20, N20, O20, T21, I21, N21, O21, T22, I22, N22, O22, T23, I23, N23, O23, T24, I24, N24, O24) \ - struct NAME; \ - enum NAME##_enum { \ - NAME##_##I1,\ - NAME##_##I2,\ - NAME##_##I3,\ - NAME##_##I4,\ - NAME##_##I5,\ - NAME##_##I6,\ - NAME##_##I7,\ - NAME##_##I8,\ - NAME##_##I9,\ - NAME##_##I10,\ - NAME##_##I11,\ - NAME##_##I12,\ - NAME##_##I13,\ - NAME##_##I14,\ - NAME##_##I15,\ - NAME##_##I16,\ - NAME##_##I17,\ - NAME##_##I18,\ - NAME##_##I19,\ - NAME##_##I20,\ - NAME##_##I21,\ - NAME##_##I22,\ - NAME##_##I23,\ - NAME##_##I24 \ - ,NAME##_NULL \ - }; \ - template \ - class NAME##_value_list { \ - /*friend std::ostream& operator << <> (std::ostream&, const NAME##_value_list&); */\ - public: \ - const NAME *obj;\ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - NAME##_value_list (const NAME *o, mysqlpp::cchar *d, Manip m) \ - : obj(o), delem(d), manip(m) {} \ - };\ - template \ - class NAME##_##field_list {\ - /* friend std::ostream& operator << <> (std::ostream&, const NAME##_field_list&); */\ - public: \ - const NAME *obj; \ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - NAME##_field_list (const NAME *o, mysqlpp::cchar *d, Manip m) \ - : obj(o), delem(d), manip(m) {} \ - };\ - template \ - class NAME##_equal_list { \ - /* friend std::ostream& operator << <> (std::ostream&, const NAME##_equal_list&); */\ - public: \ - const NAME *obj;\ - mysqlpp::cchar *delem;\ - mysqlpp::cchar *comp;\ - Manip manip;\ - public: \ - NAME##_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) \ - : obj(o), delem(d), comp(c), manip(m) {}\ - };\ - template \ - class NAME##_cus_value_list {\ - /* friend std::ostream& operator << <> (std::ostream&, \ - const NAME##_cus_value_list&); */\ - public:\ - const NAME *obj;\ - std::vector *include;\ - bool del_vector;\ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - ~NAME##_cus_value_list () {if (del_vector) delete include;} \ - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21, bool i22, bool i23, bool i24);\ - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21, NAME##_enum i22, NAME##_enum i23, NAME##_enum i24); \ - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m ,std::vector* i)\ - : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\ - };\ - template \ - class NAME##_cus_field_list { \ - /* friend std::ostream& operator << <> (std::ostream&, \ - const NAME##_cus_field_list&); */\ - public:\ - const NAME *obj; \ - std::vector *include; \ - bool del_vector; \ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - ~NAME##_cus_field_list () {if (del_vector) delete include;} \ - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21, bool i22, bool i23, bool i24); \ - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21, NAME##_enum i22, NAME##_enum i23, NAME##_enum i24); \ - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, std::vector *i) \ - : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\ - };\ - template \ - class NAME##_cus_equal_list {\ - /* friend std::ostream& operator << <> (std::ostream&, \ - const NAME##_cus_equal_list&); */\ - public:\ - const NAME *obj;\ - std::vector *include;\ - bool del_vector;\ - mysqlpp::cchar *delem;\ - mysqlpp::cchar *comp;\ - Manip manip;\ - public:\ - ~NAME##_##cus_equal_list () {if (del_vector) delete include;}\ - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21, bool i22, bool i23, bool i24); \ - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21, NAME##_enum i22, NAME##_enum i23, NAME##_enum i24); \ - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, std::vector *i) \ - : obj(o), include(i), del_vector(false), delem(d), comp(c), manip(m) {}\ - };\ - template int sql_compare_##NAME (const NAME &, const NAME &);\ - struct NAME { \ - T1 I1;\ - T2 I2;\ - T3 I3;\ - T4 I4;\ - T5 I5;\ - T6 I6;\ - T7 I7;\ - T8 I8;\ - T9 I9;\ - T10 I10;\ - T11 I11;\ - T12 I12;\ - T13 I13;\ - T14 I14;\ - T15 I15;\ - T16 I16;\ - T17 I17;\ - T18 I18;\ - T19 I19;\ - T20 I20;\ - T21 I21;\ - T22 I22;\ - T23 I23;\ - T24 I24; \ - NAME () {} \ - NAME (const mysqlpp::Row &row);\ - void set (const mysqlpp::Row &row);\ - sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18, T19, I19, T20, I20, T21, I21, T22, I22, T23, I23, T24, I24, 0, 0)\ - sql_construct_define_##CONTR(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18, T19, I19, T20, I20, T21, I21, T22, I22, T23, I23, T24, I24, 0, 0)\ - static const char *names[];\ - static const char *_table;\ - static const char *& table() {return _table;}\ - NAME##_value_list value_list() const {\ - return value_list(",", mysqlpp::quote);}\ - NAME##_value_list value_list(mysqlpp::cchar *d) const {\ - return value_list(d, mysqlpp::quote);}\ - template \ - NAME##_value_list value_list(mysqlpp::cchar *d, Manip m) const; \ - NAME##_field_list field_list() const {\ - return field_list(",", mysqlpp::do_nothing);}\ - NAME##_field_list field_list(mysqlpp::cchar *d) const {\ - return field_list(d, mysqlpp::do_nothing);}\ - template \ - NAME##_field_list field_list(mysqlpp::cchar *d, Manip m) const; \ - NAME##_equal_list equal_list(mysqlpp::cchar *d = ",", \ - mysqlpp::cchar *c = " = ") const{\ - return equal_list(d, c, mysqlpp::quote);}\ - template \ - NAME##_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) const; \ - /* cus_data */\ - NAME##_cus_value_list value_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false, bool i23 = false, bool i24 = false) const {\ - return value_list(",", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24);\ - }\ - NAME##_cus_value_list value_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL, NAME##_enum i23 = NAME##_NULL, NAME##_enum i24 = NAME##_NULL) const {\ - return value_list(",", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24);\ - }\ - NAME##_cus_value_list value_list(std::vector *i) const {\ - return value_list(",", mysqlpp::quote, i);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::sql_cmp_type sc) const {\ - return value_list(",", mysqlpp::quote, sc);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false, bool i23 = false, bool i24 = false) const {\ - return value_list(d, mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL, NAME##_enum i23 = NAME##_NULL, NAME##_enum i24 = NAME##_NULL) const {\ - return value_list(d, mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, \ - std::vector *i) const {\ - return value_list(d, mysqlpp::quote, i);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, \ - mysqlpp::sql_cmp_type sc) const {\ - return value_list(d, mysqlpp::quote, sc);\ - }\ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false, bool i23 = false, bool i24 = false) const; \ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL, NAME##_enum i23 = NAME##_NULL, NAME##_enum i24 = NAME##_NULL) const; \ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m, \ - std::vector *i) const;\ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m, \ - mysqlpp::sql_cmp_type sc) const;\ - /* cus field */\ - NAME##_cus_field_list field_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false, bool i23 = false, bool i24 = false) const {\ - return field_list(",", mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24);\ - }\ - NAME##_cus_field_list field_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL, NAME##_enum i23 = NAME##_NULL, NAME##_enum i24 = NAME##_NULL) const {\ - return field_list(",", mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24);\ - }\ - NAME##_cus_field_list field_list(std::vector *i) const {\ - return field_list(",", mysqlpp::do_nothing, i);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::sql_cmp_type sc) const\ - {\ - return field_list(",", mysqlpp::do_nothing, sc);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, \ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false, bool i23 = false, bool i24 = false) const {\ - return field_list(d, mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL, NAME##_enum i23 = NAME##_NULL, NAME##_enum i24 = NAME##_NULL) const {\ - return field_list(d, mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, \ - std::vector *i) const {\ - return field_list(d, mysqlpp::do_nothing, i);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, \ - mysqlpp::sql_cmp_type sc) const {\ - return field_list(d, mysqlpp::do_nothing, sc);\ - }\ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false, bool i23 = false, bool i24 = false) const; \ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL, NAME##_enum i23 = NAME##_NULL, NAME##_enum i24 = NAME##_NULL) const; \ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m,\ - std::vector *i) const;\ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m, \ - mysqlpp::sql_cmp_type sc) const;\ - /* cus equal */\ - NAME##_cus_equal_list equal_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false, bool i23 = false, bool i24 = false) const {\ - return equal_list(",", " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24);\ - }\ - NAME##_cus_equal_list equal_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL, NAME##_enum i23 = NAME##_NULL, NAME##_enum i24 = NAME##_NULL) const {\ - return equal_list(",", " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24);\ - }\ - NAME##_cus_equal_list equal_list(std::vector *i) const {\ - return equal_list(",", " = ", mysqlpp::quote, i);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::sql_cmp_type sc) const {\ - return equal_list(",", " = ", mysqlpp::quote, sc);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false, bool i23 = false, bool i24 = false) const {\ - return equal_list(d, " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL, NAME##_enum i23 = NAME##_NULL, NAME##_enum i24 = NAME##_NULL) const {\ - return equal_list(d, " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, \ - std::vector *i) const {\ - return equal_list(d, " = ", mysqlpp::quote, i);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, \ - mysqlpp::sql_cmp_type sc) const {\ - return equal_list(d, " = ", mysqlpp::quote, sc);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false, bool i23 = false, bool i24 = false) const {\ - return equal_list(d, c, mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL, NAME##_enum i23 = NAME##_NULL, NAME##_enum i24 = NAME##_NULL) const {\ - return equal_list(d, c, mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - std::vector *i) const {\ - return equal_list(d, c, mysqlpp::quote, i);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - mysqlpp::sql_cmp_type sc) const {\ - return equal_list(d, c, mysqlpp::quote, sc);\ - }\ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false, bool i23 = false, bool i24 = false) const; \ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL, NAME##_enum i23 = NAME##_NULL, NAME##_enum i24 = NAME##_NULL) const; \ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - std::vector *i) const;\ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - mysqlpp::sql_cmp_type sc) const;\ - }; \ - MYSQLPP_SSQLS_EXPAND(\ - const char *NAME::names[] = { \ - N1 ,\ - N2 ,\ - N3 ,\ - N4 ,\ - N5 ,\ - N6 ,\ - N7 ,\ - N8 ,\ - N9 ,\ - N10 ,\ - N11 ,\ - N12 ,\ - N13 ,\ - N14 ,\ - N15 ,\ - N16 ,\ - N17 ,\ - N18 ,\ - N19 ,\ - N20 ,\ - N21 ,\ - N22 ,\ - N23 ,\ - N24 \ - }; \ - const char *NAME::_table = #NAME ;\ - )\ - template \ - NAME##_cus_value_list::NAME##_cus_value_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21, bool i22, bool i23, bool i24) \ - { \ - delem = d;\ - manip = m;\ - del_vector = true;\ - obj = o; \ - include = new std::vector(24, false);\ - if (i1) (*include)[0]=true;\ - if (i2) (*include)[1]=true;\ - if (i3) (*include)[2]=true;\ - if (i4) (*include)[3]=true;\ - if (i5) (*include)[4]=true;\ - if (i6) (*include)[5]=true;\ - if (i7) (*include)[6]=true;\ - if (i8) (*include)[7]=true;\ - if (i9) (*include)[8]=true;\ - if (i10) (*include)[9]=true;\ - if (i11) (*include)[10]=true;\ - if (i12) (*include)[11]=true;\ - if (i13) (*include)[12]=true;\ - if (i14) (*include)[13]=true;\ - if (i15) (*include)[14]=true;\ - if (i16) (*include)[15]=true;\ - if (i17) (*include)[16]=true;\ - if (i18) (*include)[17]=true;\ - if (i19) (*include)[18]=true;\ - if (i20) (*include)[19]=true;\ - if (i21) (*include)[20]=true;\ - if (i22) (*include)[21]=true;\ - if (i23) (*include)[22]=true;\ - if (i24) (*include)[23]=true;\ - } \ - template \ - NAME##_cus_value_list::NAME##_cus_value_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21, NAME##_enum i22, NAME##_enum i23, NAME##_enum i24) { \ - delem = d;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(24, false); \ - if (i1 == NAME##_NULL) return;\ - (*include)[i1]=true;\ - if (i2 == NAME##_NULL) return;\ - (*include)[i2]=true;\ - if (i3 == NAME##_NULL) return;\ - (*include)[i3]=true;\ - if (i4 == NAME##_NULL) return;\ - (*include)[i4]=true;\ - if (i5 == NAME##_NULL) return;\ - (*include)[i5]=true;\ - if (i6 == NAME##_NULL) return;\ - (*include)[i6]=true;\ - if (i7 == NAME##_NULL) return;\ - (*include)[i7]=true;\ - if (i8 == NAME##_NULL) return;\ - (*include)[i8]=true;\ - if (i9 == NAME##_NULL) return;\ - (*include)[i9]=true;\ - if (i10 == NAME##_NULL) return;\ - (*include)[i10]=true;\ - if (i11 == NAME##_NULL) return;\ - (*include)[i11]=true;\ - if (i12 == NAME##_NULL) return;\ - (*include)[i12]=true;\ - if (i13 == NAME##_NULL) return;\ - (*include)[i13]=true;\ - if (i14 == NAME##_NULL) return;\ - (*include)[i14]=true;\ - if (i15 == NAME##_NULL) return;\ - (*include)[i15]=true;\ - if (i16 == NAME##_NULL) return;\ - (*include)[i16]=true;\ - if (i17 == NAME##_NULL) return;\ - (*include)[i17]=true;\ - if (i18 == NAME##_NULL) return;\ - (*include)[i18]=true;\ - if (i19 == NAME##_NULL) return;\ - (*include)[i19]=true;\ - if (i20 == NAME##_NULL) return;\ - (*include)[i20]=true;\ - if (i21 == NAME##_NULL) return;\ - (*include)[i21]=true;\ - if (i22 == NAME##_NULL) return;\ - (*include)[i22]=true;\ - if (i23 == NAME##_NULL) return;\ - (*include)[i23]=true;\ - if (i24 == NAME##_NULL) return;\ - (*include)[i24]=true;\ - }\ - template \ - NAME##_cus_field_list::NAME##_cus_field_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21, bool i22, bool i23, bool i24) {\ - delem = d;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(24, false); \ - if (i1) (*include)[0]=true;\ - if (i2) (*include)[1]=true;\ - if (i3) (*include)[2]=true;\ - if (i4) (*include)[3]=true;\ - if (i5) (*include)[4]=true;\ - if (i6) (*include)[5]=true;\ - if (i7) (*include)[6]=true;\ - if (i8) (*include)[7]=true;\ - if (i9) (*include)[8]=true;\ - if (i10) (*include)[9]=true;\ - if (i11) (*include)[10]=true;\ - if (i12) (*include)[11]=true;\ - if (i13) (*include)[12]=true;\ - if (i14) (*include)[13]=true;\ - if (i15) (*include)[14]=true;\ - if (i16) (*include)[15]=true;\ - if (i17) (*include)[16]=true;\ - if (i18) (*include)[17]=true;\ - if (i19) (*include)[18]=true;\ - if (i20) (*include)[19]=true;\ - if (i21) (*include)[20]=true;\ - if (i22) (*include)[21]=true;\ - if (i23) (*include)[22]=true;\ - if (i24) (*include)[23]=true;\ - } \ - template \ - NAME##_cus_field_list::NAME##_cus_field_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21, NAME##_enum i22, NAME##_enum i23, NAME##_enum i24) { \ - delem = d;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(24, false); \ - if (i1 == NAME##_NULL) return;\ - (*include)[i1]=true;\ - if (i2 == NAME##_NULL) return;\ - (*include)[i2]=true;\ - if (i3 == NAME##_NULL) return;\ - (*include)[i3]=true;\ - if (i4 == NAME##_NULL) return;\ - (*include)[i4]=true;\ - if (i5 == NAME##_NULL) return;\ - (*include)[i5]=true;\ - if (i6 == NAME##_NULL) return;\ - (*include)[i6]=true;\ - if (i7 == NAME##_NULL) return;\ - (*include)[i7]=true;\ - if (i8 == NAME##_NULL) return;\ - (*include)[i8]=true;\ - if (i9 == NAME##_NULL) return;\ - (*include)[i9]=true;\ - if (i10 == NAME##_NULL) return;\ - (*include)[i10]=true;\ - if (i11 == NAME##_NULL) return;\ - (*include)[i11]=true;\ - if (i12 == NAME##_NULL) return;\ - (*include)[i12]=true;\ - if (i13 == NAME##_NULL) return;\ - (*include)[i13]=true;\ - if (i14 == NAME##_NULL) return;\ - (*include)[i14]=true;\ - if (i15 == NAME##_NULL) return;\ - (*include)[i15]=true;\ - if (i16 == NAME##_NULL) return;\ - (*include)[i16]=true;\ - if (i17 == NAME##_NULL) return;\ - (*include)[i17]=true;\ - if (i18 == NAME##_NULL) return;\ - (*include)[i18]=true;\ - if (i19 == NAME##_NULL) return;\ - (*include)[i19]=true;\ - if (i20 == NAME##_NULL) return;\ - (*include)[i20]=true;\ - if (i21 == NAME##_NULL) return;\ - (*include)[i21]=true;\ - if (i22 == NAME##_NULL) return;\ - (*include)[i22]=true;\ - if (i23 == NAME##_NULL) return;\ - (*include)[i23]=true;\ - if (i24 == NAME##_NULL) return;\ - (*include)[i24]=true;\ - }\ - template \ - NAME##_cus_equal_list::NAME##_cus_equal_list\ - (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21, bool i22, bool i23, bool i24) { \ - delem = d;\ - comp = c;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(24, false); \ - if (i1) (*include)[0]=true;\ - if (i2) (*include)[1]=true;\ - if (i3) (*include)[2]=true;\ - if (i4) (*include)[3]=true;\ - if (i5) (*include)[4]=true;\ - if (i6) (*include)[5]=true;\ - if (i7) (*include)[6]=true;\ - if (i8) (*include)[7]=true;\ - if (i9) (*include)[8]=true;\ - if (i10) (*include)[9]=true;\ - if (i11) (*include)[10]=true;\ - if (i12) (*include)[11]=true;\ - if (i13) (*include)[12]=true;\ - if (i14) (*include)[13]=true;\ - if (i15) (*include)[14]=true;\ - if (i16) (*include)[15]=true;\ - if (i17) (*include)[16]=true;\ - if (i18) (*include)[17]=true;\ - if (i19) (*include)[18]=true;\ - if (i20) (*include)[19]=true;\ - if (i21) (*include)[20]=true;\ - if (i22) (*include)[21]=true;\ - if (i23) (*include)[22]=true;\ - if (i24) (*include)[23]=true;\ - } \ - template \ - NAME##_cus_equal_list::NAME##_cus_equal_list\ - (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21, NAME##_enum i22, NAME##_enum i23, NAME##_enum i24) { \ - delem = d;\ - comp = c;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(24, false); \ - if (i1 == NAME##_NULL) return;\ - (*include)[i1]=true;\ - if (i2 == NAME##_NULL) return;\ - (*include)[i2]=true;\ - if (i3 == NAME##_NULL) return;\ - (*include)[i3]=true;\ - if (i4 == NAME##_NULL) return;\ - (*include)[i4]=true;\ - if (i5 == NAME##_NULL) return;\ - (*include)[i5]=true;\ - if (i6 == NAME##_NULL) return;\ - (*include)[i6]=true;\ - if (i7 == NAME##_NULL) return;\ - (*include)[i7]=true;\ - if (i8 == NAME##_NULL) return;\ - (*include)[i8]=true;\ - if (i9 == NAME##_NULL) return;\ - (*include)[i9]=true;\ - if (i10 == NAME##_NULL) return;\ - (*include)[i10]=true;\ - if (i11 == NAME##_NULL) return;\ - (*include)[i11]=true;\ - if (i12 == NAME##_NULL) return;\ - (*include)[i12]=true;\ - if (i13 == NAME##_NULL) return;\ - (*include)[i13]=true;\ - if (i14 == NAME##_NULL) return;\ - (*include)[i14]=true;\ - if (i15 == NAME##_NULL) return;\ - (*include)[i15]=true;\ - if (i16 == NAME##_NULL) return;\ - (*include)[i16]=true;\ - if (i17 == NAME##_NULL) return;\ - (*include)[i17]=true;\ - if (i18 == NAME##_NULL) return;\ - (*include)[i18]=true;\ - if (i19 == NAME##_NULL) return;\ - (*include)[i19]=true;\ - if (i20 == NAME##_NULL) return;\ - (*include)[i20]=true;\ - if (i21 == NAME##_NULL) return;\ - (*include)[i21]=true;\ - if (i22 == NAME##_NULL) return;\ - (*include)[i22]=true;\ - if (i23 == NAME##_NULL) return;\ - (*include)[i23]=true;\ - if (i24 == NAME##_NULL) return;\ - (*include)[i24]=true;\ - }\ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_value_list& obj) { \ - s << obj.manip << obj.obj->I1 << obj.delem;\ - s << obj.manip << obj.obj->I2 << obj.delem;\ - s << obj.manip << obj.obj->I3 << obj.delem;\ - s << obj.manip << obj.obj->I4 << obj.delem;\ - s << obj.manip << obj.obj->I5 << obj.delem;\ - s << obj.manip << obj.obj->I6 << obj.delem;\ - s << obj.manip << obj.obj->I7 << obj.delem;\ - s << obj.manip << obj.obj->I8 << obj.delem;\ - s << obj.manip << obj.obj->I9 << obj.delem;\ - s << obj.manip << obj.obj->I10 << obj.delem;\ - s << obj.manip << obj.obj->I11 << obj.delem;\ - s << obj.manip << obj.obj->I12 << obj.delem;\ - s << obj.manip << obj.obj->I13 << obj.delem;\ - s << obj.manip << obj.obj->I14 << obj.delem;\ - s << obj.manip << obj.obj->I15 << obj.delem;\ - s << obj.manip << obj.obj->I16 << obj.delem;\ - s << obj.manip << obj.obj->I17 << obj.delem;\ - s << obj.manip << obj.obj->I18 << obj.delem;\ - s << obj.manip << obj.obj->I19 << obj.delem;\ - s << obj.manip << obj.obj->I20 << obj.delem;\ - s << obj.manip << obj.obj->I21 << obj.delem;\ - s << obj.manip << obj.obj->I22 << obj.delem;\ - s << obj.manip << obj.obj->I23 << obj.delem;\ - s << obj.manip << obj.obj->I24; \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_field_list& obj) { \ - s << obj.manip << obj.obj->names[0] << obj.delem;\ - s << obj.manip << obj.obj->names[1] << obj.delem;\ - s << obj.manip << obj.obj->names[2] << obj.delem;\ - s << obj.manip << obj.obj->names[3] << obj.delem;\ - s << obj.manip << obj.obj->names[4] << obj.delem;\ - s << obj.manip << obj.obj->names[5] << obj.delem;\ - s << obj.manip << obj.obj->names[6] << obj.delem;\ - s << obj.manip << obj.obj->names[7] << obj.delem;\ - s << obj.manip << obj.obj->names[8] << obj.delem;\ - s << obj.manip << obj.obj->names[9] << obj.delem;\ - s << obj.manip << obj.obj->names[10] << obj.delem;\ - s << obj.manip << obj.obj->names[11] << obj.delem;\ - s << obj.manip << obj.obj->names[12] << obj.delem;\ - s << obj.manip << obj.obj->names[13] << obj.delem;\ - s << obj.manip << obj.obj->names[14] << obj.delem;\ - s << obj.manip << obj.obj->names[15] << obj.delem;\ - s << obj.manip << obj.obj->names[16] << obj.delem;\ - s << obj.manip << obj.obj->names[17] << obj.delem;\ - s << obj.manip << obj.obj->names[18] << obj.delem;\ - s << obj.manip << obj.obj->names[19] << obj.delem;\ - s << obj.manip << obj.obj->names[20] << obj.delem;\ - s << obj.manip << obj.obj->names[21] << obj.delem;\ - s << obj.manip << obj.obj->names[22] << obj.delem;\ - s << obj.manip << obj.obj->names[23]; \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_equal_list& obj) { \ - s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1 << obj.delem;\ - s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2 << obj.delem;\ - s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3 << obj.delem;\ - s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4 << obj.delem;\ - s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5 << obj.delem;\ - s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6 << obj.delem;\ - s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->I7 << obj.delem;\ - s << obj.obj->names[7] << obj.comp << obj.manip << obj.obj->I8 << obj.delem;\ - s << obj.obj->names[8] << obj.comp << obj.manip << obj.obj->I9 << obj.delem;\ - s << obj.obj->names[9] << obj.comp << obj.manip << obj.obj->I10 << obj.delem;\ - s << obj.obj->names[10] << obj.comp << obj.manip << obj.obj->I11 << obj.delem;\ - s << obj.obj->names[11] << obj.comp << obj.manip << obj.obj->I12 << obj.delem;\ - s << obj.obj->names[12] << obj.comp << obj.manip << obj.obj->I13 << obj.delem;\ - s << obj.obj->names[13] << obj.comp << obj.manip << obj.obj->I14 << obj.delem;\ - s << obj.obj->names[14] << obj.comp << obj.manip << obj.obj->I15 << obj.delem;\ - s << obj.obj->names[15] << obj.comp << obj.manip << obj.obj->I16 << obj.delem;\ - s << obj.obj->names[16] << obj.comp << obj.manip << obj.obj->I17 << obj.delem;\ - s << obj.obj->names[17] << obj.comp << obj.manip << obj.obj->I18 << obj.delem;\ - s << obj.obj->names[18] << obj.comp << obj.manip << obj.obj->I19 << obj.delem;\ - s << obj.obj->names[19] << obj.comp << obj.manip << obj.obj->I20 << obj.delem;\ - s << obj.obj->names[20] << obj.comp << obj.manip << obj.obj->I21 << obj.delem;\ - s << obj.obj->names[21] << obj.comp << obj.manip << obj.obj->I22 << obj.delem;\ - s << obj.obj->names[22] << obj.comp << obj.manip << obj.obj->I23 << obj.delem;\ - s << obj.obj->names[23] << obj.comp << obj.manip << obj.obj->I24; \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_cus_value_list& obj) { \ - bool before = false; \ - if ((*obj.include)[0]) { \ - s << obj.manip << obj.obj->I1;\ - before = true; \ - } \ - if ((*obj.include)[1]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I2;\ - before = true; \ - } \ - if ((*obj.include)[2]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I3;\ - before = true; \ - } \ - if ((*obj.include)[3]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I4;\ - before = true; \ - } \ - if ((*obj.include)[4]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I5;\ - before = true; \ - } \ - if ((*obj.include)[5]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I6;\ - before = true; \ - } \ - if ((*obj.include)[6]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I7;\ - before = true; \ - } \ - if ((*obj.include)[7]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I8;\ - before = true; \ - } \ - if ((*obj.include)[8]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I9;\ - before = true; \ - } \ - if ((*obj.include)[9]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I10;\ - before = true; \ - } \ - if ((*obj.include)[10]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I11;\ - before = true; \ - } \ - if ((*obj.include)[11]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I12;\ - before = true; \ - } \ - if ((*obj.include)[12]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I13;\ - before = true; \ - } \ - if ((*obj.include)[13]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I14;\ - before = true; \ - } \ - if ((*obj.include)[14]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I15;\ - before = true; \ - } \ - if ((*obj.include)[15]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I16;\ - before = true; \ - } \ - if ((*obj.include)[16]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I17;\ - before = true; \ - } \ - if ((*obj.include)[17]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I18;\ - before = true; \ - } \ - if ((*obj.include)[18]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I19;\ - before = true; \ - } \ - if ((*obj.include)[19]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I20;\ - before = true; \ - } \ - if ((*obj.include)[20]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I21;\ - before = true; \ - } \ - if ((*obj.include)[21]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I22;\ - before = true; \ - } \ - if ((*obj.include)[22]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I23;\ - before = true; \ - } \ - if ((*obj.include)[23]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I24;\ - } \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_cus_field_list& obj) { \ - bool before = false; \ - if ((*obj.include)[0]) { \ - s << obj.manip << obj.obj->names[0];\ - before = true; \ - } \ - if ((*obj.include)[1]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[1];\ - before = true; \ - } \ - if ((*obj.include)[2]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[2];\ - before = true; \ - } \ - if ((*obj.include)[3]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[3];\ - before = true; \ - } \ - if ((*obj.include)[4]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[4];\ - before = true; \ - } \ - if ((*obj.include)[5]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[5];\ - before = true; \ - } \ - if ((*obj.include)[6]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[6];\ - before = true; \ - } \ - if ((*obj.include)[7]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[7];\ - before = true; \ - } \ - if ((*obj.include)[8]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[8];\ - before = true; \ - } \ - if ((*obj.include)[9]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[9];\ - before = true; \ - } \ - if ((*obj.include)[10]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[10];\ - before = true; \ - } \ - if ((*obj.include)[11]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[11];\ - before = true; \ - } \ - if ((*obj.include)[12]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[12];\ - before = true; \ - } \ - if ((*obj.include)[13]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[13];\ - before = true; \ - } \ - if ((*obj.include)[14]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[14];\ - before = true; \ - } \ - if ((*obj.include)[15]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[15];\ - before = true; \ - } \ - if ((*obj.include)[16]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[16];\ - before = true; \ - } \ - if ((*obj.include)[17]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[17];\ - before = true; \ - } \ - if ((*obj.include)[18]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[18];\ - before = true; \ - } \ - if ((*obj.include)[19]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[19];\ - before = true; \ - } \ - if ((*obj.include)[20]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[20];\ - before = true; \ - } \ - if ((*obj.include)[21]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[21];\ - before = true; \ - } \ - if ((*obj.include)[22]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[22];\ - before = true; \ - } \ - if ((*obj.include)[23]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[23];\ - } \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_cus_equal_list& obj) { \ - bool before = false; \ - if ((*obj.include)[0]) { \ - s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1;\ - before = true; \ - } \ - if ((*obj.include)[1]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2;\ - before = true; \ - } \ - if ((*obj.include)[2]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3;\ - before = true; \ - } \ - if ((*obj.include)[3]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4;\ - before = true; \ - } \ - if ((*obj.include)[4]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5;\ - before = true; \ - } \ - if ((*obj.include)[5]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6;\ - before = true; \ - } \ - if ((*obj.include)[6]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->I7;\ - before = true; \ - } \ - if ((*obj.include)[7]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[7] << obj.comp << obj.manip << obj.obj->I8;\ - before = true; \ - } \ - if ((*obj.include)[8]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[8] << obj.comp << obj.manip << obj.obj->I9;\ - before = true; \ - } \ - if ((*obj.include)[9]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[9] << obj.comp << obj.manip << obj.obj->I10;\ - before = true; \ - } \ - if ((*obj.include)[10]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[10] << obj.comp << obj.manip << obj.obj->I11;\ - before = true; \ - } \ - if ((*obj.include)[11]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[11] << obj.comp << obj.manip << obj.obj->I12;\ - before = true; \ - } \ - if ((*obj.include)[12]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[12] << obj.comp << obj.manip << obj.obj->I13;\ - before = true; \ - } \ - if ((*obj.include)[13]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[13] << obj.comp << obj.manip << obj.obj->I14;\ - before = true; \ - } \ - if ((*obj.include)[14]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[14] << obj.comp << obj.manip << obj.obj->I15;\ - before = true; \ - } \ - if ((*obj.include)[15]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[15] << obj.comp << obj.manip << obj.obj->I16;\ - before = true; \ - } \ - if ((*obj.include)[16]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[16] << obj.comp << obj.manip << obj.obj->I17;\ - before = true; \ - } \ - if ((*obj.include)[17]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[17] << obj.comp << obj.manip << obj.obj->I18;\ - before = true; \ - } \ - if ((*obj.include)[18]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[18] << obj.comp << obj.manip << obj.obj->I19;\ - before = true; \ - } \ - if ((*obj.include)[19]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[19] << obj.comp << obj.manip << obj.obj->I20;\ - before = true; \ - } \ - if ((*obj.include)[20]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[20] << obj.comp << obj.manip << obj.obj->I21;\ - before = true; \ - } \ - if ((*obj.include)[21]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[21] << obj.comp << obj.manip << obj.obj->I22;\ - before = true; \ - } \ - if ((*obj.include)[22]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[22] << obj.comp << obj.manip << obj.obj->I23;\ - before = true; \ - } \ - if ((*obj.include)[23]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[23] << obj.comp << obj.manip << obj.obj->I24;\ - } \ - return s; \ - } \ - template \ - inline NAME##_value_list NAME::value_list(mysqlpp::cchar *d, Manip m) const { \ - return NAME##_value_list (this, d, m); \ - } \ - template \ - inline NAME##_field_list NAME::field_list(mysqlpp::cchar *d, Manip m) const { \ - return NAME##_field_list (this, d, m); \ - } \ - template \ - inline NAME##_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) const { \ - return NAME##_equal_list (this, d, c, m); \ - } \ - template \ - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21, bool i22, bool i23, bool i24) const {\ - return NAME##_cus_value_list (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24); \ - } \ - template \ - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21, bool i22, bool i23, bool i24) const { \ - return NAME##_cus_field_list (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24); \ - } \ - template \ - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m,\ - bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21, bool i22, bool i23, bool i24) const { \ - return NAME##_cus_equal_list (this, d, c, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24); \ - } \ - template \ - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21, NAME##_enum i22, NAME##_enum i23, NAME##_enum i24) const { \ - return NAME##_cus_value_list (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24); \ - } \ - template \ - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21, NAME##_enum i22, NAME##_enum i23, NAME##_enum i24) const {\ - return NAME##_cus_field_list (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24); \ - } \ - template \ - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21, NAME##_enum i22, NAME##_enum i23, NAME##_enum i24) const { \ - return NAME##_cus_equal_list (this, d, c, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24); \ - } \ - template \ - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m,\ - std::vector *i) const {\ - return NAME##_cus_value_list (this, d, m, i);\ - }\ - template \ - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m,\ - std::vector *i) const {\ - return NAME##_cus_field_list (this, d, m, i);\ - }\ - template \ - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m,\ - std::vector *i) const {\ - return NAME##_cus_equal_list (this, d, c, m, i);\ - }\ - template \ - inline NAME##_cus_value_list \ - NAME::value_list(mysqlpp::cchar *d, Manip m, mysqlpp::sql_cmp_type /*sc*/) const {\ - sql_compare_type_def_##CMP (NAME, value, NUM);\ - }\ - template \ - inline NAME##_cus_field_list \ - NAME::field_list(mysqlpp::cchar *d, Manip m, mysqlpp::sql_cmp_type /*sc*/) const {\ - sql_compare_type_def_##CMP (NAME, field, NUM);\ - }\ - template \ - inline NAME##_cus_equal_list \ - NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, mysqlpp::sql_cmp_type /*sc*/) const {\ - sql_compare_type_defe_##CMP (NAME, equal, NUM);\ - }\ - template \ - void populate_##NAME (NAME *s, const mysqlpp::Row &row) { \ - s->I1 = static_cast(row.at(O1));\ - s->I2 = static_cast(row.at(O2));\ - s->I3 = static_cast(row.at(O3));\ - s->I4 = static_cast(row.at(O4));\ - s->I5 = static_cast(row.at(O5));\ - s->I6 = static_cast(row.at(O6));\ - s->I7 = static_cast(row.at(O7));\ - s->I8 = static_cast(row.at(O8));\ - s->I9 = static_cast(row.at(O9));\ - s->I10 = static_cast(row.at(O10));\ - s->I11 = static_cast(row.at(O11));\ - s->I12 = static_cast(row.at(O12));\ - s->I13 = static_cast(row.at(O13));\ - s->I14 = static_cast(row.at(O14));\ - s->I15 = static_cast(row.at(O15));\ - s->I16 = static_cast(row.at(O16));\ - s->I17 = static_cast(row.at(O17));\ - s->I18 = static_cast(row.at(O18));\ - s->I19 = static_cast(row.at(O19));\ - s->I20 = static_cast(row.at(O20));\ - s->I21 = static_cast(row.at(O21));\ - s->I22 = static_cast(row.at(O22));\ - s->I23 = static_cast(row.at(O23));\ - s->I24 = static_cast(row.at(O24));\ - } \ - inline NAME::NAME (const mysqlpp::Row &row) \ - {populate_##NAME(this, row);}\ - inline void NAME::set (const mysqlpp::Row &row)\ - {populate_##NAME(this, row);}\ - sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, I11, I12, I13, I14, I15, I16, I17, I18, I19, I20, I21, I22, I23, I24, 0 ) - -#define sql_create_basic_24(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18, T19, I19, T20, I20, T21, I21, T22, I22, T23, I23, T24, I24) \ - sql_create_basic_c_order_24(NAME, CMP, CONTR, T1, I1, 0, T2, I2, 1, T3, I3, 2, T4, I4, 3, T5, I5, 4, T6, I6, 5, T7, I7, 6, T8, I8, 7, T9, I9, 8, T10, I10, 9, T11, I11, 10, T12, I12, 11, T13, I13, 12, T14, I14, 13, T15, I15, 14, T16, I16, 15, T17, I17, 16, T18, I18, 17, T19, I19, 18, T20, I20, 19, T21, I21, 20, T22, I22, 21, T23, I23, 22, T24, I24, 23) - -#define sql_create_24(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18, T19, I19, T20, I20, T21, I21, T22, I22, T23, I23, T24, I24) \ - sql_create_complete_24(NAME, CMP, CONTR, T1, I1, #I1, 0, T2, I2, #I2, 1, T3, I3, #I3, 2, T4, I4, #I4, 3, T5, I5, #I5, 4, T6, I6, #I6, 5, T7, I7, #I7, 6, T8, I8, #I8, 7, T9, I9, #I9, 8, T10, I10, #I10, 9, T11, I11, #I11, 10, T12, I12, #I12, 11, T13, I13, #I13, 12, T14, I14, #I14, 13, T15, I15, #I15, 14, T16, I16, #I16, 15, T17, I17, #I17, 16, T18, I18, #I18, 17, T19, I19, #I19, 18, T20, I20, #I20, 19, T21, I21, #I21, 20, T22, I22, #I22, 21, T23, I23, #I23, 22, T24, I24, #I24, 23) \ - -#define sql_create_c_order_24(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6, T7, I7, O7, T8, I8, O8, T9, I9, O9, T10, I10, O10, T11, I11, O11, T12, I12, O12, T13, I13, O13, T14, I14, O14, T15, I15, O15, T16, I16, O16, T17, I17, O17, T18, I18, O18, T19, I19, O19, T20, I20, O20, T21, I21, O21, T22, I22, O22, T23, I23, O23, T24, I24, O24) \ - sql_create_complete_24(NAME, CMP, CONTR, T1, I1, #I1, O1, T2, I2, #I2, O2, T3, I3, #I3, O3, T4, I4, #I4, O4, T5, I5, #I5, O5, T6, I6, #I6, O6, T7, I7, #I7, O7, T8, I8, #I8, O8, T9, I9, #I9, O9, T10, I10, #I10, O10, T11, I11, #I11, O11, T12, I12, #I12, O12, T13, I13, #I13, O13, T14, I14, #I14, O14, T15, I15, #I15, O15, T16, I16, #I16, O16, T17, I17, #I17, O17, T18, I18, #I18, O18, T19, I19, #I19, O19, T20, I20, #I20, O20, T21, I21, #I21, O21, T22, I22, #I22, O22, T23, I23, #I23, O23, T24, I24, #I24, O24) - -#define sql_create_c_names_24(NAME, CMP, CONTR, T1, I1, N1, T2, I2, N2, T3, I3, N3, T4, I4, N4, T5, I5, N5, T6, I6, N6, T7, I7, N7, T8, I8, N8, T9, I9, N9, T10, I10, N10, T11, I11, N11, T12, I12, N12, T13, I13, N13, T14, I14, N14, T15, I15, N15, T16, I16, N16, T17, I17, N17, T18, I18, N18, T19, I19, N19, T20, I20, N20, T21, I21, N21, T22, I22, N22, T23, I23, N23, T24, I24, N24) \ - sql_create_complete_24(NAME, CMP, CONTR, T1, I1, N1, 0, T2, I2, N2, 1, T3, I3, N3, 2, T4, I4, N4, 3, T5, I5, N5, 4, T6, I6, N6, 5, T7, I7, N7, 6, T8, I8, N8, 7, T9, I9, N9, 8, T10, I10, N10, 9, T11, I11, N11, 10, T12, I12, N12, 11, T13, I13, N13, 12, T14, I14, N14, 13, T15, I15, N15, 14, T16, I16, N16, 15, T17, I17, N17, 16, T18, I18, N18, 17, T19, I19, N19, 18, T20, I20, N20, 19, T21, I21, N21, 20, T22, I22, N22, 21, T23, I23, N23, 22, T24, I24, N24, 23) - -// --------------------------------------------------- -// End Create 24 -// --------------------------------------------------- - -// --------------------------------------------------- -// Begin Create 25 -// --------------------------------------------------- -#define sql_create_basic_c_order_25(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6, T7, I7, O7, T8, I8, O8, T9, I9, O9, T10, I10, O10, T11, I11, O11, T12, I12, O12, T13, I13, O13, T14, I14, O14, T15, I15, O15, T16, I16, O16, T17, I17, O17, T18, I18, O18, T19, I19, O19, T20, I20, O20, T21, I21, O21, T22, I22, O22, T23, I23, O23, T24, I24, O24, T25, I25, O25)\ - struct NAME; \ - template int sql_compare_##NAME (const NAME &, const NAME &);\ - struct NAME { \ - T1 I1;\ - T2 I2;\ - T3 I3;\ - T4 I4;\ - T5 I5;\ - T6 I6;\ - T7 I7;\ - T8 I8;\ - T9 I9;\ - T10 I10;\ - T11 I11;\ - T12 I12;\ - T13 I13;\ - T14 I14;\ - T15 I15;\ - T16 I16;\ - T17 I17;\ - T18 I18;\ - T19 I19;\ - T20 I20;\ - T21 I21;\ - T22 I22;\ - T23 I23;\ - T24 I24;\ - T25 I25; \ - NAME () {} \ - NAME (const mysqlpp::Row &row);\ - sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18, T19, I19, T20, I20, T21, I21, T22, I22, T23, I23, T24, I24, T25, I25)\ - }; \ - template \ - void populate_##NAME (NAME *s, const mysqlpp::Row &row) { \ - s->I1 = static_cast(row.at(O1));\ - s->I2 = static_cast(row.at(O2));\ - s->I3 = static_cast(row.at(O3));\ - s->I4 = static_cast(row.at(O4));\ - s->I5 = static_cast(row.at(O5));\ - s->I6 = static_cast(row.at(O6));\ - s->I7 = static_cast(row.at(O7));\ - s->I8 = static_cast(row.at(O8));\ - s->I9 = static_cast(row.at(O9));\ - s->I10 = static_cast(row.at(O10));\ - s->I11 = static_cast(row.at(O11));\ - s->I12 = static_cast(row.at(O12));\ - s->I13 = static_cast(row.at(O13));\ - s->I14 = static_cast(row.at(O14));\ - s->I15 = static_cast(row.at(O15));\ - s->I16 = static_cast(row.at(O16));\ - s->I17 = static_cast(row.at(O17));\ - s->I18 = static_cast(row.at(O18));\ - s->I19 = static_cast(row.at(O19));\ - s->I20 = static_cast(row.at(O20));\ - s->I21 = static_cast(row.at(O21));\ - s->I22 = static_cast(row.at(O22));\ - s->I23 = static_cast(row.at(O23));\ - s->I24 = static_cast(row.at(O24));\ - s->I25 = static_cast(row.at(O25)); \ - } \ - inline NAME::NAME (const mysqlpp::Row &row) \ - {populate_##NAME(this, row);} \ - sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, I11, I12, I13, I14, I15, I16, I17, I18, I19, I20, I21, I22, I23, I24, I25 ) - -#define sql_create_complete_25(NAME, CMP, CONTR, T1, I1, N1, O1, T2, I2, N2, O2, T3, I3, N3, O3, T4, I4, N4, O4, T5, I5, N5, O5, T6, I6, N6, O6, T7, I7, N7, O7, T8, I8, N8, O8, T9, I9, N9, O9, T10, I10, N10, O10, T11, I11, N11, O11, T12, I12, N12, O12, T13, I13, N13, O13, T14, I14, N14, O14, T15, I15, N15, O15, T16, I16, N16, O16, T17, I17, N17, O17, T18, I18, N18, O18, T19, I19, N19, O19, T20, I20, N20, O20, T21, I21, N21, O21, T22, I22, N22, O22, T23, I23, N23, O23, T24, I24, N24, O24, T25, I25, N25, O25) \ - struct NAME; \ - enum NAME##_enum { \ - NAME##_##I1,\ - NAME##_##I2,\ - NAME##_##I3,\ - NAME##_##I4,\ - NAME##_##I5,\ - NAME##_##I6,\ - NAME##_##I7,\ - NAME##_##I8,\ - NAME##_##I9,\ - NAME##_##I10,\ - NAME##_##I11,\ - NAME##_##I12,\ - NAME##_##I13,\ - NAME##_##I14,\ - NAME##_##I15,\ - NAME##_##I16,\ - NAME##_##I17,\ - NAME##_##I18,\ - NAME##_##I19,\ - NAME##_##I20,\ - NAME##_##I21,\ - NAME##_##I22,\ - NAME##_##I23,\ - NAME##_##I24,\ - NAME##_##I25 \ - ,NAME##_NULL \ - }; \ - template \ - class NAME##_value_list { \ - /*friend std::ostream& operator << <> (std::ostream&, const NAME##_value_list&); */\ - public: \ - const NAME *obj;\ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - NAME##_value_list (const NAME *o, mysqlpp::cchar *d, Manip m) \ - : obj(o), delem(d), manip(m) {} \ - };\ - template \ - class NAME##_##field_list {\ - /* friend std::ostream& operator << <> (std::ostream&, const NAME##_field_list&); */\ - public: \ - const NAME *obj; \ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - NAME##_field_list (const NAME *o, mysqlpp::cchar *d, Manip m) \ - : obj(o), delem(d), manip(m) {} \ - };\ - template \ - class NAME##_equal_list { \ - /* friend std::ostream& operator << <> (std::ostream&, const NAME##_equal_list&); */\ - public: \ - const NAME *obj;\ - mysqlpp::cchar *delem;\ - mysqlpp::cchar *comp;\ - Manip manip;\ - public: \ - NAME##_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) \ - : obj(o), delem(d), comp(c), manip(m) {}\ - };\ - template \ - class NAME##_cus_value_list {\ - /* friend std::ostream& operator << <> (std::ostream&, \ - const NAME##_cus_value_list&); */\ - public:\ - const NAME *obj;\ - std::vector *include;\ - bool del_vector;\ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - ~NAME##_cus_value_list () {if (del_vector) delete include;} \ - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21, bool i22, bool i23, bool i24, bool i25);\ - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21, NAME##_enum i22, NAME##_enum i23, NAME##_enum i24, NAME##_enum i25); \ - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m ,std::vector* i)\ - : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\ - };\ - template \ - class NAME##_cus_field_list { \ - /* friend std::ostream& operator << <> (std::ostream&, \ - const NAME##_cus_field_list&); */\ - public:\ - const NAME *obj; \ - std::vector *include; \ - bool del_vector; \ - mysqlpp::cchar *delem;\ - Manip manip;\ - public: \ - ~NAME##_cus_field_list () {if (del_vector) delete include;} \ - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21, bool i22, bool i23, bool i24, bool i25); \ - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21, NAME##_enum i22, NAME##_enum i23, NAME##_enum i24, NAME##_enum i25); \ - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, std::vector *i) \ - : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\ - };\ - template \ - class NAME##_cus_equal_list {\ - /* friend std::ostream& operator << <> (std::ostream&, \ - const NAME##_cus_equal_list&); */\ - public:\ - const NAME *obj;\ - std::vector *include;\ - bool del_vector;\ - mysqlpp::cchar *delem;\ - mysqlpp::cchar *comp;\ - Manip manip;\ - public:\ - ~NAME##_##cus_equal_list () {if (del_vector) delete include;}\ - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21, bool i22, bool i23, bool i24, bool i25); \ - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21, NAME##_enum i22, NAME##_enum i23, NAME##_enum i24, NAME##_enum i25); \ - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, std::vector *i) \ - : obj(o), include(i), del_vector(false), delem(d), comp(c), manip(m) {}\ - };\ - template int sql_compare_##NAME (const NAME &, const NAME &);\ - struct NAME { \ - T1 I1;\ - T2 I2;\ - T3 I3;\ - T4 I4;\ - T5 I5;\ - T6 I6;\ - T7 I7;\ - T8 I8;\ - T9 I9;\ - T10 I10;\ - T11 I11;\ - T12 I12;\ - T13 I13;\ - T14 I14;\ - T15 I15;\ - T16 I16;\ - T17 I17;\ - T18 I18;\ - T19 I19;\ - T20 I20;\ - T21 I21;\ - T22 I22;\ - T23 I23;\ - T24 I24;\ - T25 I25; \ - NAME () {} \ - NAME (const mysqlpp::Row &row);\ - void set (const mysqlpp::Row &row);\ - sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18, T19, I19, T20, I20, T21, I21, T22, I22, T23, I23, T24, I24, T25, I25)\ - sql_construct_define_##CONTR(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18, T19, I19, T20, I20, T21, I21, T22, I22, T23, I23, T24, I24, T25, I25)\ - static const char *names[];\ - static const char *_table;\ - static const char *& table() {return _table;}\ - NAME##_value_list value_list() const {\ - return value_list(",", mysqlpp::quote);}\ - NAME##_value_list value_list(mysqlpp::cchar *d) const {\ - return value_list(d, mysqlpp::quote);}\ - template \ - NAME##_value_list value_list(mysqlpp::cchar *d, Manip m) const; \ - NAME##_field_list field_list() const {\ - return field_list(",", mysqlpp::do_nothing);}\ - NAME##_field_list field_list(mysqlpp::cchar *d) const {\ - return field_list(d, mysqlpp::do_nothing);}\ - template \ - NAME##_field_list field_list(mysqlpp::cchar *d, Manip m) const; \ - NAME##_equal_list equal_list(mysqlpp::cchar *d = ",", \ - mysqlpp::cchar *c = " = ") const{\ - return equal_list(d, c, mysqlpp::quote);}\ - template \ - NAME##_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) const; \ - /* cus_data */\ - NAME##_cus_value_list value_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false, bool i23 = false, bool i24 = false, bool i25 = false) const {\ - return value_list(",", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25);\ - }\ - NAME##_cus_value_list value_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL, NAME##_enum i23 = NAME##_NULL, NAME##_enum i24 = NAME##_NULL, NAME##_enum i25 = NAME##_NULL) const {\ - return value_list(",", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25);\ - }\ - NAME##_cus_value_list value_list(std::vector *i) const {\ - return value_list(",", mysqlpp::quote, i);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::sql_cmp_type sc) const {\ - return value_list(",", mysqlpp::quote, sc);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false, bool i23 = false, bool i24 = false, bool i25 = false) const {\ - return value_list(d, mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL, NAME##_enum i23 = NAME##_NULL, NAME##_enum i24 = NAME##_NULL, NAME##_enum i25 = NAME##_NULL) const {\ - return value_list(d, mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, \ - std::vector *i) const {\ - return value_list(d, mysqlpp::quote, i);\ - }\ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, \ - mysqlpp::sql_cmp_type sc) const {\ - return value_list(d, mysqlpp::quote, sc);\ - }\ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false, bool i23 = false, bool i24 = false, bool i25 = false) const; \ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL, NAME##_enum i23 = NAME##_NULL, NAME##_enum i24 = NAME##_NULL, NAME##_enum i25 = NAME##_NULL) const; \ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m, \ - std::vector *i) const;\ - template \ - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m, \ - mysqlpp::sql_cmp_type sc) const;\ - /* cus field */\ - NAME##_cus_field_list field_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false, bool i23 = false, bool i24 = false, bool i25 = false) const {\ - return field_list(",", mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25);\ - }\ - NAME##_cus_field_list field_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL, NAME##_enum i23 = NAME##_NULL, NAME##_enum i24 = NAME##_NULL, NAME##_enum i25 = NAME##_NULL) const {\ - return field_list(",", mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25);\ - }\ - NAME##_cus_field_list field_list(std::vector *i) const {\ - return field_list(",", mysqlpp::do_nothing, i);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::sql_cmp_type sc) const\ - {\ - return field_list(",", mysqlpp::do_nothing, sc);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, \ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false, bool i23 = false, bool i24 = false, bool i25 = false) const {\ - return field_list(d, mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL, NAME##_enum i23 = NAME##_NULL, NAME##_enum i24 = NAME##_NULL, NAME##_enum i25 = NAME##_NULL) const {\ - return field_list(d, mysqlpp::do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, \ - std::vector *i) const {\ - return field_list(d, mysqlpp::do_nothing, i);\ - }\ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, \ - mysqlpp::sql_cmp_type sc) const {\ - return field_list(d, mysqlpp::do_nothing, sc);\ - }\ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false, bool i23 = false, bool i24 = false, bool i25 = false) const; \ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL, NAME##_enum i23 = NAME##_NULL, NAME##_enum i24 = NAME##_NULL, NAME##_enum i25 = NAME##_NULL) const; \ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m,\ - std::vector *i) const;\ - template \ - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m, \ - mysqlpp::sql_cmp_type sc) const;\ - /* cus equal */\ - NAME##_cus_equal_list equal_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false, bool i23 = false, bool i24 = false, bool i25 = false) const {\ - return equal_list(",", " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25);\ - }\ - NAME##_cus_equal_list equal_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL, NAME##_enum i23 = NAME##_NULL, NAME##_enum i24 = NAME##_NULL, NAME##_enum i25 = NAME##_NULL) const {\ - return equal_list(",", " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25);\ - }\ - NAME##_cus_equal_list equal_list(std::vector *i) const {\ - return equal_list(",", " = ", mysqlpp::quote, i);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::sql_cmp_type sc) const {\ - return equal_list(",", " = ", mysqlpp::quote, sc);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false, bool i23 = false, bool i24 = false, bool i25 = false) const {\ - return equal_list(d, " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL, NAME##_enum i23 = NAME##_NULL, NAME##_enum i24 = NAME##_NULL, NAME##_enum i25 = NAME##_NULL) const {\ - return equal_list(d, " = ", mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, \ - std::vector *i) const {\ - return equal_list(d, " = ", mysqlpp::quote, i);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, \ - mysqlpp::sql_cmp_type sc) const {\ - return equal_list(d, " = ", mysqlpp::quote, sc);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false, bool i23 = false, bool i24 = false, bool i25 = false) const {\ - return equal_list(d, c, mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL, NAME##_enum i23 = NAME##_NULL, NAME##_enum i24 = NAME##_NULL, NAME##_enum i25 = NAME##_NULL) const {\ - return equal_list(d, c, mysqlpp::quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - std::vector *i) const {\ - return equal_list(d, c, mysqlpp::quote, i);\ - }\ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c,\ - mysqlpp::sql_cmp_type sc) const {\ - return equal_list(d, c, mysqlpp::quote, sc);\ - }\ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false, bool i23 = false, bool i24 = false, bool i25 = false) const; \ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL, NAME##_enum i23 = NAME##_NULL, NAME##_enum i24 = NAME##_NULL, NAME##_enum i25 = NAME##_NULL) const; \ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - std::vector *i) const;\ - template \ - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - mysqlpp::sql_cmp_type sc) const;\ - }; \ - MYSQLPP_SSQLS_EXPAND(\ - const char *NAME::names[] = { \ - N1 ,\ - N2 ,\ - N3 ,\ - N4 ,\ - N5 ,\ - N6 ,\ - N7 ,\ - N8 ,\ - N9 ,\ - N10 ,\ - N11 ,\ - N12 ,\ - N13 ,\ - N14 ,\ - N15 ,\ - N16 ,\ - N17 ,\ - N18 ,\ - N19 ,\ - N20 ,\ - N21 ,\ - N22 ,\ - N23 ,\ - N24 ,\ - N25 \ - }; \ - const char *NAME::_table = #NAME ;\ - )\ - template \ - NAME##_cus_value_list::NAME##_cus_value_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21, bool i22, bool i23, bool i24, bool i25) \ - { \ - delem = d;\ - manip = m;\ - del_vector = true;\ - obj = o; \ - include = new std::vector(25, false);\ - if (i1) (*include)[0]=true;\ - if (i2) (*include)[1]=true;\ - if (i3) (*include)[2]=true;\ - if (i4) (*include)[3]=true;\ - if (i5) (*include)[4]=true;\ - if (i6) (*include)[5]=true;\ - if (i7) (*include)[6]=true;\ - if (i8) (*include)[7]=true;\ - if (i9) (*include)[8]=true;\ - if (i10) (*include)[9]=true;\ - if (i11) (*include)[10]=true;\ - if (i12) (*include)[11]=true;\ - if (i13) (*include)[12]=true;\ - if (i14) (*include)[13]=true;\ - if (i15) (*include)[14]=true;\ - if (i16) (*include)[15]=true;\ - if (i17) (*include)[16]=true;\ - if (i18) (*include)[17]=true;\ - if (i19) (*include)[18]=true;\ - if (i20) (*include)[19]=true;\ - if (i21) (*include)[20]=true;\ - if (i22) (*include)[21]=true;\ - if (i23) (*include)[22]=true;\ - if (i24) (*include)[23]=true;\ - if (i25) (*include)[24]=true;\ - } \ - template \ - NAME##_cus_value_list::NAME##_cus_value_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21, NAME##_enum i22, NAME##_enum i23, NAME##_enum i24, NAME##_enum i25) { \ - delem = d;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(25, false); \ - if (i1 == NAME##_NULL) return;\ - (*include)[i1]=true;\ - if (i2 == NAME##_NULL) return;\ - (*include)[i2]=true;\ - if (i3 == NAME##_NULL) return;\ - (*include)[i3]=true;\ - if (i4 == NAME##_NULL) return;\ - (*include)[i4]=true;\ - if (i5 == NAME##_NULL) return;\ - (*include)[i5]=true;\ - if (i6 == NAME##_NULL) return;\ - (*include)[i6]=true;\ - if (i7 == NAME##_NULL) return;\ - (*include)[i7]=true;\ - if (i8 == NAME##_NULL) return;\ - (*include)[i8]=true;\ - if (i9 == NAME##_NULL) return;\ - (*include)[i9]=true;\ - if (i10 == NAME##_NULL) return;\ - (*include)[i10]=true;\ - if (i11 == NAME##_NULL) return;\ - (*include)[i11]=true;\ - if (i12 == NAME##_NULL) return;\ - (*include)[i12]=true;\ - if (i13 == NAME##_NULL) return;\ - (*include)[i13]=true;\ - if (i14 == NAME##_NULL) return;\ - (*include)[i14]=true;\ - if (i15 == NAME##_NULL) return;\ - (*include)[i15]=true;\ - if (i16 == NAME##_NULL) return;\ - (*include)[i16]=true;\ - if (i17 == NAME##_NULL) return;\ - (*include)[i17]=true;\ - if (i18 == NAME##_NULL) return;\ - (*include)[i18]=true;\ - if (i19 == NAME##_NULL) return;\ - (*include)[i19]=true;\ - if (i20 == NAME##_NULL) return;\ - (*include)[i20]=true;\ - if (i21 == NAME##_NULL) return;\ - (*include)[i21]=true;\ - if (i22 == NAME##_NULL) return;\ - (*include)[i22]=true;\ - if (i23 == NAME##_NULL) return;\ - (*include)[i23]=true;\ - if (i24 == NAME##_NULL) return;\ - (*include)[i24]=true;\ - if (i25 == NAME##_NULL) return;\ - (*include)[i25]=true;\ - }\ - template \ - NAME##_cus_field_list::NAME##_cus_field_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21, bool i22, bool i23, bool i24, bool i25) {\ - delem = d;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(25, false); \ - if (i1) (*include)[0]=true;\ - if (i2) (*include)[1]=true;\ - if (i3) (*include)[2]=true;\ - if (i4) (*include)[3]=true;\ - if (i5) (*include)[4]=true;\ - if (i6) (*include)[5]=true;\ - if (i7) (*include)[6]=true;\ - if (i8) (*include)[7]=true;\ - if (i9) (*include)[8]=true;\ - if (i10) (*include)[9]=true;\ - if (i11) (*include)[10]=true;\ - if (i12) (*include)[11]=true;\ - if (i13) (*include)[12]=true;\ - if (i14) (*include)[13]=true;\ - if (i15) (*include)[14]=true;\ - if (i16) (*include)[15]=true;\ - if (i17) (*include)[16]=true;\ - if (i18) (*include)[17]=true;\ - if (i19) (*include)[18]=true;\ - if (i20) (*include)[19]=true;\ - if (i21) (*include)[20]=true;\ - if (i22) (*include)[21]=true;\ - if (i23) (*include)[22]=true;\ - if (i24) (*include)[23]=true;\ - if (i25) (*include)[24]=true;\ - } \ - template \ - NAME##_cus_field_list::NAME##_cus_field_list\ - (const NAME *o, mysqlpp::cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21, NAME##_enum i22, NAME##_enum i23, NAME##_enum i24, NAME##_enum i25) { \ - delem = d;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(25, false); \ - if (i1 == NAME##_NULL) return;\ - (*include)[i1]=true;\ - if (i2 == NAME##_NULL) return;\ - (*include)[i2]=true;\ - if (i3 == NAME##_NULL) return;\ - (*include)[i3]=true;\ - if (i4 == NAME##_NULL) return;\ - (*include)[i4]=true;\ - if (i5 == NAME##_NULL) return;\ - (*include)[i5]=true;\ - if (i6 == NAME##_NULL) return;\ - (*include)[i6]=true;\ - if (i7 == NAME##_NULL) return;\ - (*include)[i7]=true;\ - if (i8 == NAME##_NULL) return;\ - (*include)[i8]=true;\ - if (i9 == NAME##_NULL) return;\ - (*include)[i9]=true;\ - if (i10 == NAME##_NULL) return;\ - (*include)[i10]=true;\ - if (i11 == NAME##_NULL) return;\ - (*include)[i11]=true;\ - if (i12 == NAME##_NULL) return;\ - (*include)[i12]=true;\ - if (i13 == NAME##_NULL) return;\ - (*include)[i13]=true;\ - if (i14 == NAME##_NULL) return;\ - (*include)[i14]=true;\ - if (i15 == NAME##_NULL) return;\ - (*include)[i15]=true;\ - if (i16 == NAME##_NULL) return;\ - (*include)[i16]=true;\ - if (i17 == NAME##_NULL) return;\ - (*include)[i17]=true;\ - if (i18 == NAME##_NULL) return;\ - (*include)[i18]=true;\ - if (i19 == NAME##_NULL) return;\ - (*include)[i19]=true;\ - if (i20 == NAME##_NULL) return;\ - (*include)[i20]=true;\ - if (i21 == NAME##_NULL) return;\ - (*include)[i21]=true;\ - if (i22 == NAME##_NULL) return;\ - (*include)[i22]=true;\ - if (i23 == NAME##_NULL) return;\ - (*include)[i23]=true;\ - if (i24 == NAME##_NULL) return;\ - (*include)[i24]=true;\ - if (i25 == NAME##_NULL) return;\ - (*include)[i25]=true;\ - }\ - template \ - NAME##_cus_equal_list::NAME##_cus_equal_list\ - (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21, bool i22, bool i23, bool i24, bool i25) { \ - delem = d;\ - comp = c;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(25, false); \ - if (i1) (*include)[0]=true;\ - if (i2) (*include)[1]=true;\ - if (i3) (*include)[2]=true;\ - if (i4) (*include)[3]=true;\ - if (i5) (*include)[4]=true;\ - if (i6) (*include)[5]=true;\ - if (i7) (*include)[6]=true;\ - if (i8) (*include)[7]=true;\ - if (i9) (*include)[8]=true;\ - if (i10) (*include)[9]=true;\ - if (i11) (*include)[10]=true;\ - if (i12) (*include)[11]=true;\ - if (i13) (*include)[12]=true;\ - if (i14) (*include)[13]=true;\ - if (i15) (*include)[14]=true;\ - if (i16) (*include)[15]=true;\ - if (i17) (*include)[16]=true;\ - if (i18) (*include)[17]=true;\ - if (i19) (*include)[18]=true;\ - if (i20) (*include)[19]=true;\ - if (i21) (*include)[20]=true;\ - if (i22) (*include)[21]=true;\ - if (i23) (*include)[22]=true;\ - if (i24) (*include)[23]=true;\ - if (i25) (*include)[24]=true;\ - } \ - template \ - NAME##_cus_equal_list::NAME##_cus_equal_list\ - (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21, NAME##_enum i22, NAME##_enum i23, NAME##_enum i24, NAME##_enum i25) { \ - delem = d;\ - comp = c;\ - manip = m;\ - del_vector = true; \ - obj = o; \ - include = new std::vector(25, false); \ - if (i1 == NAME##_NULL) return;\ - (*include)[i1]=true;\ - if (i2 == NAME##_NULL) return;\ - (*include)[i2]=true;\ - if (i3 == NAME##_NULL) return;\ - (*include)[i3]=true;\ - if (i4 == NAME##_NULL) return;\ - (*include)[i4]=true;\ - if (i5 == NAME##_NULL) return;\ - (*include)[i5]=true;\ - if (i6 == NAME##_NULL) return;\ - (*include)[i6]=true;\ - if (i7 == NAME##_NULL) return;\ - (*include)[i7]=true;\ - if (i8 == NAME##_NULL) return;\ - (*include)[i8]=true;\ - if (i9 == NAME##_NULL) return;\ - (*include)[i9]=true;\ - if (i10 == NAME##_NULL) return;\ - (*include)[i10]=true;\ - if (i11 == NAME##_NULL) return;\ - (*include)[i11]=true;\ - if (i12 == NAME##_NULL) return;\ - (*include)[i12]=true;\ - if (i13 == NAME##_NULL) return;\ - (*include)[i13]=true;\ - if (i14 == NAME##_NULL) return;\ - (*include)[i14]=true;\ - if (i15 == NAME##_NULL) return;\ - (*include)[i15]=true;\ - if (i16 == NAME##_NULL) return;\ - (*include)[i16]=true;\ - if (i17 == NAME##_NULL) return;\ - (*include)[i17]=true;\ - if (i18 == NAME##_NULL) return;\ - (*include)[i18]=true;\ - if (i19 == NAME##_NULL) return;\ - (*include)[i19]=true;\ - if (i20 == NAME##_NULL) return;\ - (*include)[i20]=true;\ - if (i21 == NAME##_NULL) return;\ - (*include)[i21]=true;\ - if (i22 == NAME##_NULL) return;\ - (*include)[i22]=true;\ - if (i23 == NAME##_NULL) return;\ - (*include)[i23]=true;\ - if (i24 == NAME##_NULL) return;\ - (*include)[i24]=true;\ - if (i25 == NAME##_NULL) return;\ - (*include)[i25]=true;\ - }\ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_value_list& obj) { \ - s << obj.manip << obj.obj->I1 << obj.delem;\ - s << obj.manip << obj.obj->I2 << obj.delem;\ - s << obj.manip << obj.obj->I3 << obj.delem;\ - s << obj.manip << obj.obj->I4 << obj.delem;\ - s << obj.manip << obj.obj->I5 << obj.delem;\ - s << obj.manip << obj.obj->I6 << obj.delem;\ - s << obj.manip << obj.obj->I7 << obj.delem;\ - s << obj.manip << obj.obj->I8 << obj.delem;\ - s << obj.manip << obj.obj->I9 << obj.delem;\ - s << obj.manip << obj.obj->I10 << obj.delem;\ - s << obj.manip << obj.obj->I11 << obj.delem;\ - s << obj.manip << obj.obj->I12 << obj.delem;\ - s << obj.manip << obj.obj->I13 << obj.delem;\ - s << obj.manip << obj.obj->I14 << obj.delem;\ - s << obj.manip << obj.obj->I15 << obj.delem;\ - s << obj.manip << obj.obj->I16 << obj.delem;\ - s << obj.manip << obj.obj->I17 << obj.delem;\ - s << obj.manip << obj.obj->I18 << obj.delem;\ - s << obj.manip << obj.obj->I19 << obj.delem;\ - s << obj.manip << obj.obj->I20 << obj.delem;\ - s << obj.manip << obj.obj->I21 << obj.delem;\ - s << obj.manip << obj.obj->I22 << obj.delem;\ - s << obj.manip << obj.obj->I23 << obj.delem;\ - s << obj.manip << obj.obj->I24 << obj.delem;\ - s << obj.manip << obj.obj->I25; \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_field_list& obj) { \ - s << obj.manip << obj.obj->names[0] << obj.delem;\ - s << obj.manip << obj.obj->names[1] << obj.delem;\ - s << obj.manip << obj.obj->names[2] << obj.delem;\ - s << obj.manip << obj.obj->names[3] << obj.delem;\ - s << obj.manip << obj.obj->names[4] << obj.delem;\ - s << obj.manip << obj.obj->names[5] << obj.delem;\ - s << obj.manip << obj.obj->names[6] << obj.delem;\ - s << obj.manip << obj.obj->names[7] << obj.delem;\ - s << obj.manip << obj.obj->names[8] << obj.delem;\ - s << obj.manip << obj.obj->names[9] << obj.delem;\ - s << obj.manip << obj.obj->names[10] << obj.delem;\ - s << obj.manip << obj.obj->names[11] << obj.delem;\ - s << obj.manip << obj.obj->names[12] << obj.delem;\ - s << obj.manip << obj.obj->names[13] << obj.delem;\ - s << obj.manip << obj.obj->names[14] << obj.delem;\ - s << obj.manip << obj.obj->names[15] << obj.delem;\ - s << obj.manip << obj.obj->names[16] << obj.delem;\ - s << obj.manip << obj.obj->names[17] << obj.delem;\ - s << obj.manip << obj.obj->names[18] << obj.delem;\ - s << obj.manip << obj.obj->names[19] << obj.delem;\ - s << obj.manip << obj.obj->names[20] << obj.delem;\ - s << obj.manip << obj.obj->names[21] << obj.delem;\ - s << obj.manip << obj.obj->names[22] << obj.delem;\ - s << obj.manip << obj.obj->names[23] << obj.delem;\ - s << obj.manip << obj.obj->names[24]; \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_equal_list& obj) { \ - s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1 << obj.delem;\ - s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2 << obj.delem;\ - s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3 << obj.delem;\ - s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4 << obj.delem;\ - s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5 << obj.delem;\ - s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6 << obj.delem;\ - s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->I7 << obj.delem;\ - s << obj.obj->names[7] << obj.comp << obj.manip << obj.obj->I8 << obj.delem;\ - s << obj.obj->names[8] << obj.comp << obj.manip << obj.obj->I9 << obj.delem;\ - s << obj.obj->names[9] << obj.comp << obj.manip << obj.obj->I10 << obj.delem;\ - s << obj.obj->names[10] << obj.comp << obj.manip << obj.obj->I11 << obj.delem;\ - s << obj.obj->names[11] << obj.comp << obj.manip << obj.obj->I12 << obj.delem;\ - s << obj.obj->names[12] << obj.comp << obj.manip << obj.obj->I13 << obj.delem;\ - s << obj.obj->names[13] << obj.comp << obj.manip << obj.obj->I14 << obj.delem;\ - s << obj.obj->names[14] << obj.comp << obj.manip << obj.obj->I15 << obj.delem;\ - s << obj.obj->names[15] << obj.comp << obj.manip << obj.obj->I16 << obj.delem;\ - s << obj.obj->names[16] << obj.comp << obj.manip << obj.obj->I17 << obj.delem;\ - s << obj.obj->names[17] << obj.comp << obj.manip << obj.obj->I18 << obj.delem;\ - s << obj.obj->names[18] << obj.comp << obj.manip << obj.obj->I19 << obj.delem;\ - s << obj.obj->names[19] << obj.comp << obj.manip << obj.obj->I20 << obj.delem;\ - s << obj.obj->names[20] << obj.comp << obj.manip << obj.obj->I21 << obj.delem;\ - s << obj.obj->names[21] << obj.comp << obj.manip << obj.obj->I22 << obj.delem;\ - s << obj.obj->names[22] << obj.comp << obj.manip << obj.obj->I23 << obj.delem;\ - s << obj.obj->names[23] << obj.comp << obj.manip << obj.obj->I24 << obj.delem;\ - s << obj.obj->names[24] << obj.comp << obj.manip << obj.obj->I25; \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_cus_value_list& obj) { \ - bool before = false; \ - if ((*obj.include)[0]) { \ - s << obj.manip << obj.obj->I1;\ - before = true; \ - } \ - if ((*obj.include)[1]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I2;\ - before = true; \ - } \ - if ((*obj.include)[2]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I3;\ - before = true; \ - } \ - if ((*obj.include)[3]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I4;\ - before = true; \ - } \ - if ((*obj.include)[4]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I5;\ - before = true; \ - } \ - if ((*obj.include)[5]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I6;\ - before = true; \ - } \ - if ((*obj.include)[6]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I7;\ - before = true; \ - } \ - if ((*obj.include)[7]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I8;\ - before = true; \ - } \ - if ((*obj.include)[8]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I9;\ - before = true; \ - } \ - if ((*obj.include)[9]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I10;\ - before = true; \ - } \ - if ((*obj.include)[10]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I11;\ - before = true; \ - } \ - if ((*obj.include)[11]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I12;\ - before = true; \ - } \ - if ((*obj.include)[12]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I13;\ - before = true; \ - } \ - if ((*obj.include)[13]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I14;\ - before = true; \ - } \ - if ((*obj.include)[14]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I15;\ - before = true; \ - } \ - if ((*obj.include)[15]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I16;\ - before = true; \ - } \ - if ((*obj.include)[16]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I17;\ - before = true; \ - } \ - if ((*obj.include)[17]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I18;\ - before = true; \ - } \ - if ((*obj.include)[18]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I19;\ - before = true; \ - } \ - if ((*obj.include)[19]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I20;\ - before = true; \ - } \ - if ((*obj.include)[20]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I21;\ - before = true; \ - } \ - if ((*obj.include)[21]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I22;\ - before = true; \ - } \ - if ((*obj.include)[22]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I23;\ - before = true; \ - } \ - if ((*obj.include)[23]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I24;\ - before = true; \ - } \ - if ((*obj.include)[24]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->I25;\ - } \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_cus_field_list& obj) { \ - bool before = false; \ - if ((*obj.include)[0]) { \ - s << obj.manip << obj.obj->names[0];\ - before = true; \ - } \ - if ((*obj.include)[1]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[1];\ - before = true; \ - } \ - if ((*obj.include)[2]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[2];\ - before = true; \ - } \ - if ((*obj.include)[3]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[3];\ - before = true; \ - } \ - if ((*obj.include)[4]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[4];\ - before = true; \ - } \ - if ((*obj.include)[5]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[5];\ - before = true; \ - } \ - if ((*obj.include)[6]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[6];\ - before = true; \ - } \ - if ((*obj.include)[7]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[7];\ - before = true; \ - } \ - if ((*obj.include)[8]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[8];\ - before = true; \ - } \ - if ((*obj.include)[9]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[9];\ - before = true; \ - } \ - if ((*obj.include)[10]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[10];\ - before = true; \ - } \ - if ((*obj.include)[11]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[11];\ - before = true; \ - } \ - if ((*obj.include)[12]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[12];\ - before = true; \ - } \ - if ((*obj.include)[13]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[13];\ - before = true; \ - } \ - if ((*obj.include)[14]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[14];\ - before = true; \ - } \ - if ((*obj.include)[15]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[15];\ - before = true; \ - } \ - if ((*obj.include)[16]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[16];\ - before = true; \ - } \ - if ((*obj.include)[17]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[17];\ - before = true; \ - } \ - if ((*obj.include)[18]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[18];\ - before = true; \ - } \ - if ((*obj.include)[19]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[19];\ - before = true; \ - } \ - if ((*obj.include)[20]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[20];\ - before = true; \ - } \ - if ((*obj.include)[21]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[21];\ - before = true; \ - } \ - if ((*obj.include)[22]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[22];\ - before = true; \ - } \ - if ((*obj.include)[23]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[23];\ - before = true; \ - } \ - if ((*obj.include)[24]) { \ - if (before) s << obj.delem;\ - s << obj.manip << obj.obj->names[24];\ - } \ - return s; \ - } \ - template \ - std::ostream& operator << (std::ostream& s, const NAME##_cus_equal_list& obj) { \ - bool before = false; \ - if ((*obj.include)[0]) { \ - s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1;\ - before = true; \ - } \ - if ((*obj.include)[1]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2;\ - before = true; \ - } \ - if ((*obj.include)[2]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3;\ - before = true; \ - } \ - if ((*obj.include)[3]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4;\ - before = true; \ - } \ - if ((*obj.include)[4]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5;\ - before = true; \ - } \ - if ((*obj.include)[5]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6;\ - before = true; \ - } \ - if ((*obj.include)[6]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->I7;\ - before = true; \ - } \ - if ((*obj.include)[7]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[7] << obj.comp << obj.manip << obj.obj->I8;\ - before = true; \ - } \ - if ((*obj.include)[8]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[8] << obj.comp << obj.manip << obj.obj->I9;\ - before = true; \ - } \ - if ((*obj.include)[9]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[9] << obj.comp << obj.manip << obj.obj->I10;\ - before = true; \ - } \ - if ((*obj.include)[10]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[10] << obj.comp << obj.manip << obj.obj->I11;\ - before = true; \ - } \ - if ((*obj.include)[11]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[11] << obj.comp << obj.manip << obj.obj->I12;\ - before = true; \ - } \ - if ((*obj.include)[12]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[12] << obj.comp << obj.manip << obj.obj->I13;\ - before = true; \ - } \ - if ((*obj.include)[13]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[13] << obj.comp << obj.manip << obj.obj->I14;\ - before = true; \ - } \ - if ((*obj.include)[14]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[14] << obj.comp << obj.manip << obj.obj->I15;\ - before = true; \ - } \ - if ((*obj.include)[15]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[15] << obj.comp << obj.manip << obj.obj->I16;\ - before = true; \ - } \ - if ((*obj.include)[16]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[16] << obj.comp << obj.manip << obj.obj->I17;\ - before = true; \ - } \ - if ((*obj.include)[17]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[17] << obj.comp << obj.manip << obj.obj->I18;\ - before = true; \ - } \ - if ((*obj.include)[18]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[18] << obj.comp << obj.manip << obj.obj->I19;\ - before = true; \ - } \ - if ((*obj.include)[19]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[19] << obj.comp << obj.manip << obj.obj->I20;\ - before = true; \ - } \ - if ((*obj.include)[20]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[20] << obj.comp << obj.manip << obj.obj->I21;\ - before = true; \ - } \ - if ((*obj.include)[21]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[21] << obj.comp << obj.manip << obj.obj->I22;\ - before = true; \ - } \ - if ((*obj.include)[22]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[22] << obj.comp << obj.manip << obj.obj->I23;\ - before = true; \ - } \ - if ((*obj.include)[23]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[23] << obj.comp << obj.manip << obj.obj->I24;\ - before = true; \ - } \ - if ((*obj.include)[24]) { \ - if (before) s << obj.delem;\ - s << obj.obj->names[24] << obj.comp << obj.manip << obj.obj->I25;\ - } \ - return s; \ - } \ - template \ - inline NAME##_value_list NAME::value_list(mysqlpp::cchar *d, Manip m) const { \ - return NAME##_value_list (this, d, m); \ - } \ - template \ - inline NAME##_field_list NAME::field_list(mysqlpp::cchar *d, Manip m) const { \ - return NAME##_field_list (this, d, m); \ - } \ - template \ - inline NAME##_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) const { \ - return NAME##_equal_list (this, d, c, m); \ - } \ - template \ - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21, bool i22, bool i23, bool i24, bool i25) const {\ - return NAME##_cus_value_list (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25); \ - } \ - template \ - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m,\ - bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21, bool i22, bool i23, bool i24, bool i25) const { \ - return NAME##_cus_field_list (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25); \ - } \ - template \ - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m,\ - bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21, bool i22, bool i23, bool i24, bool i25) const { \ - return NAME##_cus_equal_list (this, d, c, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25); \ - } \ - template \ - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21, NAME##_enum i22, NAME##_enum i23, NAME##_enum i24, NAME##_enum i25) const { \ - return NAME##_cus_value_list (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25); \ - } \ - template \ - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m,\ - NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21, NAME##_enum i22, NAME##_enum i23, NAME##_enum i24, NAME##_enum i25) const {\ - return NAME##_cus_field_list (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25); \ - } \ - template \ - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, \ - NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21, NAME##_enum i22, NAME##_enum i23, NAME##_enum i24, NAME##_enum i25) const { \ - return NAME##_cus_equal_list (this, d, c, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25); \ - } \ - template \ - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m,\ - std::vector *i) const {\ - return NAME##_cus_value_list (this, d, m, i);\ - }\ - template \ - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m,\ - std::vector *i) const {\ - return NAME##_cus_field_list (this, d, m, i);\ - }\ - template \ - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m,\ - std::vector *i) const {\ - return NAME##_cus_equal_list (this, d, c, m, i);\ - }\ - template \ - inline NAME##_cus_value_list \ - NAME::value_list(mysqlpp::cchar *d, Manip m, mysqlpp::sql_cmp_type /*sc*/) const {\ - sql_compare_type_def_##CMP (NAME, value, NUM);\ - }\ - template \ - inline NAME##_cus_field_list \ - NAME::field_list(mysqlpp::cchar *d, Manip m, mysqlpp::sql_cmp_type /*sc*/) const {\ - sql_compare_type_def_##CMP (NAME, field, NUM);\ - }\ - template \ - inline NAME##_cus_equal_list \ - NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, mysqlpp::sql_cmp_type /*sc*/) const {\ - sql_compare_type_defe_##CMP (NAME, equal, NUM);\ - }\ - template \ - void populate_##NAME (NAME *s, const mysqlpp::Row &row) { \ - s->I1 = static_cast(row.at(O1));\ - s->I2 = static_cast(row.at(O2));\ - s->I3 = static_cast(row.at(O3));\ - s->I4 = static_cast(row.at(O4));\ - s->I5 = static_cast(row.at(O5));\ - s->I6 = static_cast(row.at(O6));\ - s->I7 = static_cast(row.at(O7));\ - s->I8 = static_cast(row.at(O8));\ - s->I9 = static_cast(row.at(O9));\ - s->I10 = static_cast(row.at(O10));\ - s->I11 = static_cast(row.at(O11));\ - s->I12 = static_cast(row.at(O12));\ - s->I13 = static_cast(row.at(O13));\ - s->I14 = static_cast(row.at(O14));\ - s->I15 = static_cast(row.at(O15));\ - s->I16 = static_cast(row.at(O16));\ - s->I17 = static_cast(row.at(O17));\ - s->I18 = static_cast(row.at(O18));\ - s->I19 = static_cast(row.at(O19));\ - s->I20 = static_cast(row.at(O20));\ - s->I21 = static_cast(row.at(O21));\ - s->I22 = static_cast(row.at(O22));\ - s->I23 = static_cast(row.at(O23));\ - s->I24 = static_cast(row.at(O24));\ - s->I25 = static_cast(row.at(O25));\ - } \ - inline NAME::NAME (const mysqlpp::Row &row) \ - {populate_##NAME(this, row);}\ - inline void NAME::set (const mysqlpp::Row &row)\ - {populate_##NAME(this, row);}\ - sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, I11, I12, I13, I14, I15, I16, I17, I18, I19, I20, I21, I22, I23, I24, I25 ) - -#define sql_create_basic_25(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18, T19, I19, T20, I20, T21, I21, T22, I22, T23, I23, T24, I24, T25, I25) \ - sql_create_basic_c_order_25(NAME, CMP, CONTR, T1, I1, 0, T2, I2, 1, T3, I3, 2, T4, I4, 3, T5, I5, 4, T6, I6, 5, T7, I7, 6, T8, I8, 7, T9, I9, 8, T10, I10, 9, T11, I11, 10, T12, I12, 11, T13, I13, 12, T14, I14, 13, T15, I15, 14, T16, I16, 15, T17, I17, 16, T18, I18, 17, T19, I19, 18, T20, I20, 19, T21, I21, 20, T22, I22, 21, T23, I23, 22, T24, I24, 23, T25, I25, 24) - -#define sql_create_25(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18, T19, I19, T20, I20, T21, I21, T22, I22, T23, I23, T24, I24, T25, I25) \ - sql_create_complete_25(NAME, CMP, CONTR, T1, I1, #I1, 0, T2, I2, #I2, 1, T3, I3, #I3, 2, T4, I4, #I4, 3, T5, I5, #I5, 4, T6, I6, #I6, 5, T7, I7, #I7, 6, T8, I8, #I8, 7, T9, I9, #I9, 8, T10, I10, #I10, 9, T11, I11, #I11, 10, T12, I12, #I12, 11, T13, I13, #I13, 12, T14, I14, #I14, 13, T15, I15, #I15, 14, T16, I16, #I16, 15, T17, I17, #I17, 16, T18, I18, #I18, 17, T19, I19, #I19, 18, T20, I20, #I20, 19, T21, I21, #I21, 20, T22, I22, #I22, 21, T23, I23, #I23, 22, T24, I24, #I24, 23, T25, I25, #I25, 24) \ - -#define sql_create_c_order_25(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6, T7, I7, O7, T8, I8, O8, T9, I9, O9, T10, I10, O10, T11, I11, O11, T12, I12, O12, T13, I13, O13, T14, I14, O14, T15, I15, O15, T16, I16, O16, T17, I17, O17, T18, I18, O18, T19, I19, O19, T20, I20, O20, T21, I21, O21, T22, I22, O22, T23, I23, O23, T24, I24, O24, T25, I25, O25) \ - sql_create_complete_25(NAME, CMP, CONTR, T1, I1, #I1, O1, T2, I2, #I2, O2, T3, I3, #I3, O3, T4, I4, #I4, O4, T5, I5, #I5, O5, T6, I6, #I6, O6, T7, I7, #I7, O7, T8, I8, #I8, O8, T9, I9, #I9, O9, T10, I10, #I10, O10, T11, I11, #I11, O11, T12, I12, #I12, O12, T13, I13, #I13, O13, T14, I14, #I14, O14, T15, I15, #I15, O15, T16, I16, #I16, O16, T17, I17, #I17, O17, T18, I18, #I18, O18, T19, I19, #I19, O19, T20, I20, #I20, O20, T21, I21, #I21, O21, T22, I22, #I22, O22, T23, I23, #I23, O23, T24, I24, #I24, O24, T25, I25, #I25, O25) - -#define sql_create_c_names_25(NAME, CMP, CONTR, T1, I1, N1, T2, I2, N2, T3, I3, N3, T4, I4, N4, T5, I5, N5, T6, I6, N6, T7, I7, N7, T8, I8, N8, T9, I9, N9, T10, I10, N10, T11, I11, N11, T12, I12, N12, T13, I13, N13, T14, I14, N14, T15, I15, N15, T16, I16, N16, T17, I17, N17, T18, I18, N18, T19, I19, N19, T20, I20, N20, T21, I21, N21, T22, I22, N22, T23, I23, N23, T24, I24, N24, T25, I25, N25) \ - sql_create_complete_25(NAME, CMP, CONTR, T1, I1, N1, 0, T2, I2, N2, 1, T3, I3, N3, 2, T4, I4, N4, 3, T5, I5, N5, 4, T6, I6, N6, 5, T7, I7, N7, 6, T8, I8, N8, 7, T9, I9, N9, 8, T10, I10, N10, 9, T11, I11, N11, 10, T12, I12, N12, 11, T13, I13, N13, 12, T14, I14, N14, 13, T15, I15, N15, 14, T16, I16, N16, 15, T17, I17, N17, 16, T18, I18, N18, 17, T19, I19, N19, 18, T20, I20, N20, 19, T21, I21, N21, 20, T22, I22, N22, 21, T23, I23, N23, 22, T24, I24, N24, 23, T25, I25, N25, 24) - -// --------------------------------------------------- -// End Create 25 -// --------------------------------------------------- - diff --git a/code/meosdb/mysql++/custom.h b/code/meosdb/mysql++/custom.h deleted file mode 100644 index 8adc461..0000000 --- a/code/meosdb/mysql++/custom.h +++ /dev/null @@ -1,98 +0,0 @@ - -// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -// This file is generated by the Perl script custom.pl. Please do -// not modify this file directly. Change the script instead. -// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -#ifndef MYSQLPP_CUSTOM_H -#define MYSQLPP_CUSTOM_H - -#include "common.h" -#include "tiny_int.h" - -#include - -#if defined(_MSC_VER) && (_MSC_VER < 1400) -# error Please run the MySQL++ script lib/custom.pl with the -v compatibility flag. -#endif - -#ifdef MYSQLPP_SSQLS_NO_STATICS -# define MYSQLPP_SSQLS_EXPAND(...) -#else -# define MYSQLPP_SSQLS_EXPAND(...) __VA_ARGS__ -#endif - -namespace mysqlpp { - -enum sql_dummy_type {sql_dummy}; - -inline int sql_cmp(const std::string &a, const std::string &b) { - return a.compare(b); -} - -inline int sql_cmp(char a,char b) { - return a-b; -} - -inline int sql_cmp(unsigned char a,unsigned char b) { - return a-b; -} - -inline int sql_cmp(tiny_int a,tiny_int b) { - return a-b; -} - -inline int sql_cmp(int a,int b) { - return a-b; -} - -inline int sql_cmp(unsigned int a,unsigned int b) { - return a-b; -} - -inline int sql_cmp(short int a,short int b) { - return a-b; -} - -inline int sql_cmp(unsigned short int a,unsigned short int b) { - return a-b; -} - -inline int sql_cmp(unsigned long a,unsigned long b) { - return a-b; -} - -inline int sql_cmp(long a,long b) { - return a-b; -} - -inline int sql_cmp(double a,double b) { - if (a == b) return 0; - if (a < b) return -1; - return 1; -} - -inline int sql_cmp(float a,float b) { - if (a == b) return 0; - if (a < b) return -1; - return 1; -} - -inline int sql_cmp(longlong a,longlong b) { - if (a == b) return 0; - if (a < b) return -1; - return 1; -} - -inline int sql_cmp(ulonglong a,ulonglong b) { - if (a == b) return 0; - if (a < b) return -1; - return 1; -} - -#include "custom-macros.h" - -} // end namespace mysqlpp - -#endif - diff --git a/code/meosdb/mysql++/custom.pl b/code/meosdb/mysql++/custom.pl deleted file mode 100644 index 1136721..0000000 --- a/code/meosdb/mysql++/custom.pl +++ /dev/null @@ -1,924 +0,0 @@ -#!/usr/bin/perl -w - -######################################################################## -# custom.pl - Generates custom.h and custom-macros.h, as these files -# contain many near-duplicate classes, varying only in the number of -# SQL table columns they support. -# -# Copyright (c) 1998 by Kevin Atkinson, (c) 1999, 2000 and 2001 by -# MySQL AB, and (c) 2004, 2005 by Educational Technology Resources, Inc. -# Others may also hold copyrights on code in this file. See the CREDITS -# file in the top directory of the distribution for details. -# -# This file is part of MySQL++. -# -# MySQL++ is free software; you can redistribute it and/or modify it -# under the terms of the GNU Lesser General Public License as published -# by the Free Software Foundation; either version 2.1 of the License, or -# (at your option) any later version. -# -# MySQL++ is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public -# License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with MySQL++; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 -# USA -######################################################################## - - -# This is the limit on the number of SSQLS data members. Higher values -# will make custom-macros.h exponentially larger, increase compile -# times, and possibly even expose limits in your compiler. Increase it -# only if you must. -my $max_data_members = 25; - - -# No user-serviceable parts below. - -use strict; -use Getopt::Std; - -our ($opt_v); -getopts('v') or die "usage: custom.pl [-v]\n"; - -open (OUT0, ">custom.h"); -open (OUT, ">custom-macros.h"); - -print OUT0 << "---"; - -// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -// This file is generated by the Perl script custom.pl. Please do -// not modify this file directly. Change the script instead. -// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -#ifndef MYSQLPP_CUSTOM_H -#define MYSQLPP_CUSTOM_H - -#include "common.h" -#include "tiny_int.h" - -#include ---- - -my ($suppress_statics_start, $suppress_statics_end) = ('', ''); -unless ($opt_v) { - print OUT0 << "---"; - -#if defined(_MSC_VER) && (_MSC_VER < 1400) -# error Please run the MySQL++ script lib/custom.pl with the -v compatibility flag. -#endif - -#ifdef MYSQLPP_SSQLS_NO_STATICS -# define MYSQLPP_SSQLS_EXPAND(...) -#else -# define MYSQLPP_SSQLS_EXPAND(...) __VA_ARGS__ -#endif - ---- - $suppress_statics_start = 'MYSQLPP_SSQLS_EXPAND('; - $suppress_statics_end = ')'; -} - -print OUT0 << "---"; -namespace mysqlpp { - -enum sql_dummy_type {sql_dummy}; - -inline int sql_cmp(const std::string &a, const std::string &b) { - return a.compare(b); -} ---- - -my @types = ("char", "unsigned char", "tiny_int", "int", "unsigned int", - "short int", "unsigned short int", "unsigned long", "long"); -foreach my $type (@types) { - print OUT0 << "---"; - -inline int sql_cmp($type a,$type b) { - return a-b; -} ---- -} - -@types = ("double", "float"); -foreach my $type (@types) { - print OUT0 << "---"; - -inline int sql_cmp($type a,$type b) { - if (a == b) return 0; - if (a < b) return -1; - return 1; -} ---- -} - -@types = ("longlong", "ulonglong"); -foreach my $type (@types) { - print OUT0 << "---"; - -inline int sql_cmp($type a,$type b) { - if (a == b) return 0; - if (a < b) return -1; - return 1; -} ---- -} - -print OUT0 << "---"; - -#include "custom-macros.h" - -} // end namespace mysqlpp - -#endif - ---- - -print OUT << "---"; - -// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -// This file is generated by the Perl script custom.pl. Please do -// not modify this file directly. Change the script instead. -// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -// --------------------------------------------------- -// Begin Mandatory Compare -// --------------------------------------------------- - -#define sql_compare_define(NAME) \\ - bool operator == (const NAME &other) const \\ - {return sql_compare_##NAME(*this,other) == 0;} \\ - bool operator != (const NAME &other) const \\ - {return sql_compare_##NAME(*this,other) != 0;} \\ - bool operator > (const NAME &other) const \\ - {return sql_compare_##NAME(*this,other) > 0;} \\ - bool operator < (const NAME &other) const \\ - {return sql_compare_##NAME(*this,other) < 0;} \\ - bool operator >= (const NAME &other) const \\ - {return sql_compare_##NAME(*this,other) >= 0;} \\ - bool operator <= (const NAME &other) const \\ - {return sql_compare_##NAME(*this,other) <= 0;} \\ - int cmp (const NAME &other) const \\ - {return sql_compare_##NAME(*this,other);} \\ - int compare (const NAME &other) const \\ - {return sql_compare_##NAME(*this,other);} ---- - -my ($parm0, $parm1); - -foreach my $j (1..$max_data_members) { - $parm0 .= "T$j, C$j"; - $parm0 .= ", " unless $j == $max_data_members; - $parm1 .= "C$j"; - $parm1 .= ", " unless $j == $max_data_members; -} - -print OUT << "---"; - -#define sql_compare_define_0(NAME, $parm0) - -#define sql_construct_define_0(NAME, $parm0) - -#define sql_COMPARE__0(NAME, $parm1) - -#define sql_compare_type_def_0(NAME, WHAT, NUM) \\ - sql_compare_type_def_##NUM (NAME, WHAT, NUM) - -#define sql_compare_type_defe_0(NAME, WHAT, NUM) \\ - sql_compare_type_defe_##NUM (NAME, WHAT, NUM) - -// --------------------------------------------------- -// End Mandatory Compare -// --------------------------------------------------- ---- - - -foreach my $i (1..$max_data_members) { - my ($compr, $define, $compp, $set, $parm2); - $compr = ""; $parm2 = ""; $define = ""; - $compr = " int cmp; \\\n" unless $i == 1; - $compp = ""; - $set = ""; - foreach my $j (1..$i) { - if ($j != $i) { - $compr .= " cmp = mysqlpp::sql_cmp(x.C$j , y.C$j ); \\\n"; - $compr .= " if (cmp) return cmp; \\\n"; - } - - $compr .= " return mysqlpp::sql_cmp(x.C$j , y.C$j );" if $j == $i; - $parm2 .= "const T$j &p$j"; - $parm2 .= ", " unless $j == $i; - $define.= "C$j (p$j)"; - $define.= ", " unless $j == $i; - $set .= " C$j = p$j;\\\n"; - $compp .= "true"; - $compp .= ", " unless $j == $i; - } - print OUT << "---"; - -// --------------------------------------------------- -// Begin Compare $i -// --------------------------------------------------- - -#define sql_compare_define_$i(NAME, $parm0) \\ - NAME ($parm2) : $define {} \\ - void set ($parm2) { \\ -$set \\ - } \\ - sql_compare_define(NAME) - -#define sql_construct_define_$i(NAME, $parm0) \\ - void set ($parm2) { \\ -$set \\ - } \\ - NAME ($parm2) : $define {} - -#define sql_compare_type_def_$i(NAME, WHAT, NUM) \\ - return WHAT##_list(d, m, $compp) - -#define sql_compare_type_defe_$i(NAME, WHAT, NUM) \\ - return WHAT##_list(d, c, m, $compp) - -#define sql_COMPARE__$i(NAME, $parm1) \\ - template \\ - int sql_compare_##NAME (const NAME &x, const NAME &y) { \\ -$compr \\ - } \\ - template \\ - int compare (const NAME &x, const NAME &y) { \\ -$compr \\ - } - -// --------------------------------------------------- -// End Compare $i -// --------------------------------------------------- - ---- -} - -print OUT << "---"; ---- - - -foreach my $i (1..$max_data_members) { - my $parm_complete = ""; - my $parm_order = ""; my $parm_order2c = ""; - my $parm_simple = ""; my $parm_simple2c = ""; - my $parm_simple_b = ""; my $parm_simple2c_b = ""; - my $parm_names = ""; my $parm_names2c = ""; - my $defs = ""; my $popul = ""; my $parmc = ""; my $parmC = ""; - my $value_list = ""; my $field_list = ""; my $equal_list = ""; - my $value_list_cus = ""; my $cus_field_list = ""; my $cus_equal_list = ""; - my $create_bool = ""; my $create_list = ""; - my $cusparms1 = ""; my $cusparms2 = ""; my $cusparmsv = ""; - my $cusparms11 = ""; my $cusparms22 = ""; - my $names = "";my $enums = ""; - foreach my $j (1 .. $i) { - $parm_complete .= "T$j, I$j, N$j, O$j"; - $parm_complete .= ", " unless $j == $i; - $parm_order .= "T$j, I$j, O$j"; - $parm_order .= ", " unless $j == $i; - $parm_order2c .= "T$j, I$j, #I$j, O$j"; - $parm_order2c .= ", " unless $j == $i; - $parm_names .= "T$j, I$j, N$j"; - $parm_names .= ", " unless $j == $i; - $parm_names2c .= "T$j, I$j, N$j, ". ($j-1); - $parm_names2c .= ", " unless $j == $i; - $parm_simple .= "T$j, I$j"; - $parm_simple .= ", " unless $j == $i; - $parm_simple2c .= "T$j, I$j, #I$j, ". ($j-1); - $parm_simple2c .= ", " unless $j == $i; - $parm_simple_b .= "T$j, I$j"; - $parm_simple_b .= ", " unless $j == $i; - $parm_simple2c_b .= "T$j, I$j, ". ($j-1); - $parm_simple2c_b .= ", " unless $j == $i; - $defs .= " T$j I$j;"; - $defs .= "\n" unless $j == $i; - $popul .= " s->I$j = static_cast(row.at(O$j));"; - $popul .= "\n" unless $j == $i; - $names .= " N$j "; - $names .= ",\n" unless $j == $i; - $enums .= " NAME##_##I$j"; - $enums .= ",\n" unless $j == $i; - $field_list .= " s << obj.manip << obj.obj->names[".($j-1)."]"; - $field_list .= " << obj.delem;\n" unless $j == $i; - $value_list .= " s << obj.manip << obj.obj->I$j"; - $value_list .= " << obj.delem;\n" unless $j == $i; - $create_bool .= " if (i$j) (*include)[".($j-1)."]=true;\n"; - $create_list .= " if (i$j == NAME##_NULL) return;\n" unless $i == 1; - $create_list .= " (*include)[i$j]=true;\n"; - - $value_list_cus .= " if ((*obj.include)[".($j-1)."]) { \n"; - $value_list_cus .= " if (before) s << obj.delem;\n" unless $j == 1; - $value_list_cus .= " s << obj.manip << obj.obj->I$j;\n"; - $value_list_cus .= " before = true; \n" unless $j == $i; - $value_list_cus .= " } \n"; - - $cus_field_list .= " if ((*obj.include)[".($j-1)."]) { \n"; - $cus_field_list .= " if (before) s << obj.delem;\n" unless $j == 1; - $cus_field_list .= " s << obj.manip << obj.obj->names[".($j-1)."];\n"; - $cus_field_list .= " before = true; \n" unless $j == $i; - $cus_field_list .= " } \n"; - - $cus_equal_list .= " if ((*obj.include)[".($j-1)."]) { \n"; - $cus_equal_list .= " if (before) s << obj.delem;\n" unless $j == 1; - $cus_equal_list .= " s << obj.obj->names[".($j-1)."] << obj.comp"; - $cus_equal_list .= " << obj.manip << obj.obj->I$j;\n"; - $cus_equal_list .= " before = true; \n" unless $j == $i; - $cus_equal_list .= " } \n"; - - $equal_list .= " s << obj.obj->names[".($j-1)."] << obj.comp"; - $equal_list .= " << obj.manip << obj.obj->I$j"; - $equal_list .= " << obj.delem;\n" unless $j == $i; - $cusparms1 .= "bool i$j" if $j == 1; - $cusparms1 .= "bool i$j = false" unless $j == 1; - $cusparms1 .= ", " unless $j == $i; - $cusparms11 .= "bool i$j" ; - $cusparms11 .= ", " unless $j == $i; - $cusparms2 .= "NAME##_enum i$j" if $j == 1; - $cusparms2 .= "NAME##_enum i$j = NAME##_NULL" unless $j == 1; - $cusparms2 .= ", " unless $j == $i; - $cusparms22 .= "NAME##_enum i$j"; - $cusparms22 .= ", " unless $j == $i; - $cusparmsv .= "i$j"; - $cusparmsv .= ", " unless $j == $i; - $parmC .= "T$j, I$j"; - $parmC .= ", " unless $j == $max_data_members; - $parmc .= "I$j"; - $parmc .= ", " unless $j == $max_data_members; - } - foreach my $j ($i+1 .. $max_data_members) { - $parmC .= "0, 0"; - $parmC .= ", " unless $j == $max_data_members; - $parmc .= "0"; - $parmc .= ", " unless $j == $max_data_members; - } - - print OUT << "---"; -// --------------------------------------------------- -// Begin Create $i -// --------------------------------------------------- ---- - my $out = <<"---"; -#define sql_create_basic_c_order_$i(NAME, CMP, CONTR, $parm_order) - - struct NAME; - - template int sql_compare_##NAME (const NAME &, const NAME &); - - struct NAME { -$defs - NAME () {} - NAME (const mysqlpp::Row &row); - sql_compare_define_##CMP(NAME, $parmC) - }; - - template - void populate_##NAME (NAME *s, const mysqlpp::Row &row) { -$popul - } - - inline NAME::NAME (const mysqlpp::Row &row) - {populate_##NAME(this, row);} - - sql_COMPARE__##CMP(NAME, $parmc ) ---- - print OUT &prepare($out); - - $out = <<"---"; -#define sql_create_complete_$i(NAME, CMP, CONTR, $parm_complete) - struct NAME; - - enum NAME##_enum { -$enums - ,NAME##_NULL - }; - - template - class NAME##_value_list { - /*friend std::ostream& operator << <> (std::ostream&, const NAME##_value_list&); */ - public: - const NAME *obj; - mysqlpp::cchar *delem; - Manip manip; - public: - NAME##_value_list (const NAME *o, mysqlpp::cchar *d, Manip m) - : obj(o), delem(d), manip(m) {} - }; - - template - class NAME##_##field_list { - /* friend std::ostream& operator << <> (std::ostream&, const NAME##_field_list&); */ - public: - const NAME *obj; - mysqlpp::cchar *delem; - Manip manip; - public: - NAME##_field_list (const NAME *o, mysqlpp::cchar *d, Manip m) - : obj(o), delem(d), manip(m) {} - }; - - template - class NAME##_equal_list { - /* friend std::ostream& operator << <> (std::ostream&, const NAME##_equal_list&); */ - public: - const NAME *obj; - mysqlpp::cchar *delem; - mysqlpp::cchar *comp; - Manip manip; - public: - NAME##_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) - : obj(o), delem(d), comp(c), manip(m) {} - }; - - template - class NAME##_cus_value_list { - /* friend std::ostream& operator << <> (std::ostream&, - const NAME##_cus_value_list&); */ - public: - const NAME *obj; - std::vector *include; - bool del_vector; - mysqlpp::cchar *delem; - Manip manip; - public: - ~NAME##_cus_value_list () {if (del_vector) delete include;} - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m, $cusparms11); - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m, $cusparms22); - NAME##_cus_value_list (const NAME *o, mysqlpp::cchar *d, Manip m ,std::vector* i) - : obj(o), include(i), del_vector(false), delem(d), manip(m) {} - }; - - template - class NAME##_cus_field_list { - /* friend std::ostream& operator << <> (std::ostream&, - const NAME##_cus_field_list&); */ - public: - const NAME *obj; - std::vector *include; - bool del_vector; - mysqlpp::cchar *delem; - Manip manip; - public: - ~NAME##_cus_field_list () {if (del_vector) delete include;} - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, $cusparms11); - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, $cusparms22); - NAME##_cus_field_list (const NAME *o, mysqlpp::cchar *d, Manip m, std::vector *i) - : obj(o), include(i), del_vector(false), delem(d), manip(m) {} - }; - - template - class NAME##_cus_equal_list { - /* friend std::ostream& operator << <> (std::ostream&, - const NAME##_cus_equal_list&); */ - public: - const NAME *obj; - std::vector *include; - bool del_vector; - mysqlpp::cchar *delem; - mysqlpp::cchar *comp; - Manip manip; - public: - ~NAME##_##cus_equal_list () {if (del_vector) delete include;} - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, $cusparms11); - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, $cusparms22); - NAME##_##cus_equal_list (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, std::vector *i) - : obj(o), include(i), del_vector(false), delem(d), comp(c), manip(m) {} - }; - - template int sql_compare_##NAME (const NAME &, const NAME &); - - struct NAME { -$defs - NAME () {} - NAME (const mysqlpp::Row &row); - void set (const mysqlpp::Row &row); - sql_compare_define_##CMP(NAME, $parmC) - sql_construct_define_##CONTR(NAME, $parmC) - static const char *names[]; - static const char *_table; - static const char *& table() {return _table;} - - NAME##_value_list value_list() const { - return value_list(",", mysqlpp::quote);} - NAME##_value_list value_list(mysqlpp::cchar *d) const { - return value_list(d, mysqlpp::quote);} - template - NAME##_value_list value_list(mysqlpp::cchar *d, Manip m) const; - - NAME##_field_list field_list() const { - return field_list(",", mysqlpp::do_nothing);} - NAME##_field_list field_list(mysqlpp::cchar *d) const { - return field_list(d, mysqlpp::do_nothing);} - template - NAME##_field_list field_list(mysqlpp::cchar *d, Manip m) const; - - NAME##_equal_list equal_list(mysqlpp::cchar *d = ",", - mysqlpp::cchar *c = " = ") const{ - return equal_list(d, c, mysqlpp::quote);} - template - NAME##_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) const; - - /* cus_data */ - - NAME##_cus_value_list value_list($cusparms1) const { - return value_list(",", mysqlpp::quote, $cusparmsv); - } - NAME##_cus_value_list value_list($cusparms2) const { - return value_list(",", mysqlpp::quote, $cusparmsv); - } - NAME##_cus_value_list value_list(std::vector *i) const { - return value_list(",", mysqlpp::quote, i); - } - NAME##_cus_value_list value_list(mysqlpp::sql_cmp_type sc) const { - return value_list(",", mysqlpp::quote, sc); - } - - NAME##_cus_value_list value_list(mysqlpp::cchar *d, $cusparms1) const { - return value_list(d, mysqlpp::quote, $cusparmsv); - } - NAME##_cus_value_list value_list(mysqlpp::cchar *d, $cusparms2) const { - return value_list(d, mysqlpp::quote, $cusparmsv); - } - NAME##_cus_value_list value_list(mysqlpp::cchar *d, - std::vector *i) const { - return value_list(d, mysqlpp::quote, i); - } - NAME##_cus_value_list value_list(mysqlpp::cchar *d, - mysqlpp::sql_cmp_type sc) const { - return value_list(d, mysqlpp::quote, sc); - } - - template - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m, - $cusparms1) const; - template - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m, - $cusparms2) const; - template - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m, - std::vector *i) const; - template - NAME##_cus_value_list value_list(mysqlpp::cchar *d, Manip m, - mysqlpp::sql_cmp_type sc) const; - /* cus field */ - - NAME##_cus_field_list field_list($cusparms1) const { - return field_list(",", mysqlpp::do_nothing, $cusparmsv); - } - NAME##_cus_field_list field_list($cusparms2) const { - return field_list(",", mysqlpp::do_nothing, $cusparmsv); - } - NAME##_cus_field_list field_list(std::vector *i) const { - return field_list(",", mysqlpp::do_nothing, i); - } - NAME##_cus_field_list field_list(mysqlpp::sql_cmp_type sc) const - { - return field_list(",", mysqlpp::do_nothing, sc); - } - - NAME##_cus_field_list field_list(mysqlpp::cchar *d, - $cusparms1) const { - return field_list(d, mysqlpp::do_nothing, $cusparmsv); - } - NAME##_cus_field_list field_list(mysqlpp::cchar *d, - $cusparms2) const { - return field_list(d, mysqlpp::do_nothing, $cusparmsv); - } - NAME##_cus_field_list field_list(mysqlpp::cchar *d, - std::vector *i) const { - return field_list(d, mysqlpp::do_nothing, i); - } - NAME##_cus_field_list field_list(mysqlpp::cchar *d, - mysqlpp::sql_cmp_type sc) const { - return field_list(d, mysqlpp::do_nothing, sc); - } - - template - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m, - $cusparms1) const; - template - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m, - $cusparms2) const; - template - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m, - std::vector *i) const; - template - NAME##_cus_field_list field_list(mysqlpp::cchar *d, Manip m, - mysqlpp::sql_cmp_type sc) const; - - /* cus equal */ - - NAME##_cus_equal_list equal_list($cusparms1) const { - return equal_list(",", " = ", mysqlpp::quote, $cusparmsv); - } - NAME##_cus_equal_list equal_list($cusparms2) const { - return equal_list(",", " = ", mysqlpp::quote, $cusparmsv); - } - NAME##_cus_equal_list equal_list(std::vector *i) const { - return equal_list(",", " = ", mysqlpp::quote, i); - } - NAME##_cus_equal_list equal_list(mysqlpp::sql_cmp_type sc) const { - return equal_list(",", " = ", mysqlpp::quote, sc); - } - - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, $cusparms1) const { - return equal_list(d, " = ", mysqlpp::quote, $cusparmsv); - } - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, $cusparms2) const { - return equal_list(d, " = ", mysqlpp::quote, $cusparmsv); - } - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, - std::vector *i) const { - return equal_list(d, " = ", mysqlpp::quote, i); - } - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, - mysqlpp::sql_cmp_type sc) const { - return equal_list(d, " = ", mysqlpp::quote, sc); - } - - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, - $cusparms1) const { - return equal_list(d, c, mysqlpp::quote, $cusparmsv); - } - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, - $cusparms2) const { - return equal_list(d, c, mysqlpp::quote, $cusparmsv); - } - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, - std::vector *i) const { - return equal_list(d, c, mysqlpp::quote, i); - } - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, - mysqlpp::sql_cmp_type sc) const { - return equal_list(d, c, mysqlpp::quote, sc); - } - - template - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, - $cusparms1) const; - template - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, - $cusparms2) const; - template - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, - std::vector *i) const; - template - NAME##_cus_equal_list equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, - mysqlpp::sql_cmp_type sc) const; - }; - $suppress_statics_start - const char *NAME::names[] = { -$names - }; - const char *NAME::_table = #NAME ; - $suppress_statics_end - - template - NAME##_cus_value_list::NAME##_cus_value_list - (const NAME *o, mysqlpp::cchar *d, Manip m, $cusparms11) - { - delem = d; - manip = m; - del_vector = true; - obj = o; - include = new std::vector($i, false); -$create_bool - } - - template - NAME##_cus_value_list::NAME##_cus_value_list - (const NAME *o, mysqlpp::cchar *d, Manip m, $cusparms22) { - delem = d; - manip = m; - del_vector = true; - obj = o; - include = new std::vector($i, false); -$create_list - } - - template - NAME##_cus_field_list::NAME##_cus_field_list - (const NAME *o, mysqlpp::cchar *d, Manip m, $cusparms11) { - delem = d; - manip = m; - del_vector = true; - obj = o; - include = new std::vector($i, false); -$create_bool - } - - template - NAME##_cus_field_list::NAME##_cus_field_list - (const NAME *o, mysqlpp::cchar *d, Manip m, $cusparms22) { - delem = d; - manip = m; - del_vector = true; - obj = o; - include = new std::vector($i, false); -$create_list - } - - template - NAME##_cus_equal_list::NAME##_cus_equal_list - (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, $cusparms11) { - delem = d; - comp = c; - manip = m; - del_vector = true; - obj = o; - include = new std::vector($i, false); -$create_bool - } - - template - NAME##_cus_equal_list::NAME##_cus_equal_list - (const NAME *o, mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, $cusparms22) { - delem = d; - comp = c; - manip = m; - del_vector = true; - obj = o; - include = new std::vector($i, false); -$create_list - } - - template - std::ostream& operator << (std::ostream& s, const NAME##_value_list& obj) { -$value_list; - return s; - } - - template - std::ostream& operator << (std::ostream& s, const NAME##_field_list& obj) { -$field_list; - return s; - } - - template - std::ostream& operator << (std::ostream& s, const NAME##_equal_list& obj) { -$equal_list; - return s; - } - - template - std::ostream& operator << (std::ostream& s, const NAME##_cus_value_list& obj) { - bool before = false; -$value_list_cus - return s; - } - - template - std::ostream& operator << (std::ostream& s, const NAME##_cus_field_list& obj) { - bool before = false; -$cus_field_list - return s; - } - - template - std::ostream& operator << (std::ostream& s, const NAME##_cus_equal_list& obj) { - bool before = false; -$cus_equal_list - return s; - } - - template - inline NAME##_value_list NAME::value_list(mysqlpp::cchar *d, Manip m) const { - return NAME##_value_list (this, d, m); - } - - template - inline NAME##_field_list NAME::field_list(mysqlpp::cchar *d, Manip m) const { - return NAME##_field_list (this, d, m); - } - - template - inline NAME##_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m) const { - return NAME##_equal_list (this, d, c, m); - } - - template - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m, - $cusparms11) const { - return NAME##_cus_value_list (this, d, m, $cusparmsv); - } - - template - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m, - $cusparms11) const { - return NAME##_cus_field_list (this, d, m, $cusparmsv); - } - - template - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, - $cusparms11) const { - return NAME##_cus_equal_list (this, d, c, m, $cusparmsv); - } - - template - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m, - $cusparms22) const { - return NAME##_cus_value_list (this, d, m, $cusparmsv); - } - - template - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m, - $cusparms22) const { - return NAME##_cus_field_list (this, d, m, $cusparmsv); - } - - template - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, - $cusparms22) const { - return NAME##_cus_equal_list (this, d, c, m, $cusparmsv); - } - - template - inline NAME##_cus_value_list NAME::value_list(mysqlpp::cchar *d, Manip m, - std::vector *i) const { - return NAME##_cus_value_list (this, d, m, i); - } - - template - inline NAME##_cus_field_list NAME::field_list(mysqlpp::cchar *d, Manip m, - std::vector *i) const { - return NAME##_cus_field_list (this, d, m, i); - } - - template - inline NAME##_cus_equal_list NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, - std::vector *i) const { - return NAME##_cus_equal_list (this, d, c, m, i); - } - - template - inline NAME##_cus_value_list - NAME::value_list(mysqlpp::cchar *d, Manip m, mysqlpp::sql_cmp_type /*sc*/) const { - sql_compare_type_def_##CMP (NAME, value, NUM); - } - - template - inline NAME##_cus_field_list - NAME::field_list(mysqlpp::cchar *d, Manip m, mysqlpp::sql_cmp_type /*sc*/) const { - sql_compare_type_def_##CMP (NAME, field, NUM); - } - - template - inline NAME##_cus_equal_list - NAME::equal_list(mysqlpp::cchar *d, mysqlpp::cchar *c, Manip m, mysqlpp::sql_cmp_type /*sc*/) const { - sql_compare_type_defe_##CMP (NAME, equal, NUM); - } - - template - void populate_##NAME (NAME *s, const mysqlpp::Row &row) { -$popul - } - - inline NAME::NAME (const mysqlpp::Row &row) - {populate_##NAME(this, row);} - inline void NAME::set (const mysqlpp::Row &row) - {populate_##NAME(this, row);} - - sql_COMPARE__##CMP(NAME, $parmc ) - ---- -print OUT &prepare($out); - -# -# short cut defs -# - -print OUT << "---"; -#define sql_create_basic_$i(NAME, CMP, CONTR, $parm_simple_b) \\ - sql_create_basic_c_order_$i(NAME, CMP, CONTR, $parm_simple2c_b) - -#define sql_create_$i(NAME, CMP, CONTR, $parm_simple) \\ - sql_create_complete_$i(NAME, CMP, CONTR, $parm_simple2c) \\ - -#define sql_create_c_order_$i(NAME, CMP, CONTR, $parm_order) \\ - sql_create_complete_$i(NAME, CMP, CONTR, $parm_order2c) - -#define sql_create_c_names_$i(NAME, CMP, CONTR, $parm_names) \\ - sql_create_complete_$i(NAME, CMP, CONTR, $parm_names2c) - -// --------------------------------------------------- -// End Create $i -// --------------------------------------------------- - ---- - -} - - -sub prepare { - local $_ = $_[0]; - s/\n+$//; - s/\n[\n ]*\n/\n/g; - s/\n+/\\\n/g; - $_ .= "\n\n"; - return $_; -} - diff --git a/code/meosdb/mysql++/datetime.cpp b/code/meosdb/mysql++/datetime.cpp deleted file mode 100644 index 9e63b27..0000000 --- a/code/meosdb/mysql++/datetime.cpp +++ /dev/null @@ -1,219 +0,0 @@ -/*********************************************************************** - datetime.cpp - Implements date and time classes compatible with MySQL's - various date and time column types. - - Copyright (c) 1998 by Kevin Atkinson, (c) 1999, 2000 and 2001 by - MySQL AB, and (c) 2004, 2005 by Educational Technology Resources, Inc. - Others may also hold copyrights on code in this file. See the CREDITS - file in the top directory of the distribution for details. - - This file is part of MySQL++. - - MySQL++ is free software; you can redistribute it and/or modify it - under the terms of the GNU Lesser General Public License as published - by the Free Software Foundation; either version 2.1 of the License, or - (at your option) any later version. - - MySQL++ is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with MySQL++; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 - USA -***********************************************************************/ - -#define MYSQLPP_NOT_HEADER -#include "common.h" - -#include "datetime.h" - -#include - -#include - -using namespace std; - -namespace mysqlpp { - -std::ostream& operator <<(std::ostream& os, const Date& d) -{ - char fill = os.fill('0'); - ios::fmtflags flags = os.setf(ios::right); - os << setw(4) << d.year << '-' - << setw(2) << d.month << '-' - << setw(2) << d.day; - os.flags(flags); - os.fill(fill); - return os; -} - - -std::ostream& operator <<(std::ostream& os, const Time& t) -{ - char fill = os.fill('0'); - ios::fmtflags flags = os.setf(ios::right); - os << setw(2) << t.hour << ':' - << setw(2) << t.minute << ':' - << setw(2) << t.second; - os.flags(flags); - os.fill(fill); - return os; -} - - -std::ostream& operator <<(std::ostream& os, const DateTime& dt) -{ - operator <<(os, Date(dt)); - os << ' '; - return operator <<(os, Time(dt)); -} - - -cchar* Date::convert(cchar* str) -{ - char num[5]; - - num[0] = *str++; - num[1] = *str++; - num[2] = *str++; - num[3] = *str++; - num[4] = 0; - year = short(strtol(num, 0, 10)); - if (*str == '-') str++; - - num[0] = *str++; - num[1] = *str++; - num[2] = 0; - month = short(strtol(num, 0, 10)); - if (*str == '-') str++; - - num[0] = *str++; - num[1] = *str++; - num[2] = 0; - day = short(strtol(num, 0, 10)); - - return str; -} - - -cchar* Time::convert(cchar* str) -{ - char num[5]; - - num[0] = *str++; - num[1] = *str++; - num[2] = 0; - hour = short(strtol(num,0,10)); - if (*str == ':') str++; - - num[0] = *str++; - num[1] = *str++; - num[2] = 0; - minute = short(strtol(num,0,10)); - if (*str == ':') str++; - - num[0] = *str++; - num[1] = *str++; - num[2] = 0; - second = short(strtol(num,0,10)); - - return str; -} - - -cchar* DateTime::convert(cchar* str) -{ - Date d; - str = d.convert(str); - year = d.year; - month = d.month; - day = d.day; - - if (*str == ' ') ++str; - - Time t; - str = t.convert(str); - hour = t.hour; - minute = t.minute; - second = t.second; - - return str; -} - - -short int Date::compare(const Date& other) const -{ - if (year != other.year) return year - other.year; - if (month != other.month) return month - other.month; - return day - other.day; -} - - -short int Time::compare(const Time& other) const -{ - if (hour != other.hour) return hour - other.hour; - if (minute != other.minute) return minute - other.minute; - return second - other.second; -} - - -short int DateTime::compare(const DateTime& other) const -{ - Date d(*this), od(other); - Time t(*this), ot(other); - - if (int x = d.compare(od)) { - return x; - } - else { - return t.compare(ot); - } -} - -DateTime::operator time_t() const -{ - struct tm tm; - tm.tm_sec = second; - tm.tm_min = minute; - tm.tm_hour = hour; - tm.tm_mday = day; - tm.tm_mon = month - (tiny_int)1; - tm.tm_year = year - 1900; - tm.tm_isdst = -1; - - return mktime(&tm); -}; - -DateTime::DateTime(time_t t) -{ - struct tm tm; -#if defined(_MSC_VER) && _MSC_VER >= 1400 && !defined(_STLP_VERSION) && \ - !defined(_STLP_VERSION_STR) - // Use thread-safe localtime() replacement included with VS2005 and - // up, but only when using native RTL, not STLport. - localtime_s(&tm, &t); -#elif defined(HAVE_LOCALTIME_R) - // Detected POSIX thread-safe localtime() replacement. - localtime_r(&t, &tm); -#else - // No explicitly thread-safe localtime() replacement found. This - // may still be thread-safe, as some C libraries take special steps - // within localtime() to get thread safety. For example, thread- - // local storage (TLS) in some Windows compilers. - memcpy(&tm, localtime(&t), sizeof(tm)); -#endif - - year = tm.tm_year + 1900; - month = tm.tm_mon + 1; - day = tm.tm_mday; - hour = tm.tm_hour; - minute = tm.tm_min; - second = tm.tm_sec; -} - -} // end namespace mysqlpp - - diff --git a/code/meosdb/mysql++/datetime.h b/code/meosdb/mysql++/datetime.h deleted file mode 100644 index 0d10efd..0000000 --- a/code/meosdb/mysql++/datetime.h +++ /dev/null @@ -1,384 +0,0 @@ -/// \file datetime.h -/// \brief Declares classes to add MySQL-compatible date and time -/// types to C++'s type system. - -/*********************************************************************** - Copyright (c) 1998 by Kevin Atkinson, (c) 1999, 2000 and 2001 by - MySQL AB, and (c) 2004, 2005 by Educational Technology Resources, Inc. - Others may also hold copyrights on code in this file. See the CREDITS - file in the top directory of the distribution for details. - - This file is part of MySQL++. - - MySQL++ is free software; you can redistribute it and/or modify it - under the terms of the GNU Lesser General Public License as published - by the Free Software Foundation; either version 2.1 of the License, or - (at your option) any later version. - - MySQL++ is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with MySQL++; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 - USA -***********************************************************************/ - -#ifndef MYSQLPP_DATETIME_H -#define MYSQLPP_DATETIME_H - -#include "common.h" - -#include "coldata.h" -#include "stream2string.h" -#include "tiny_int.h" - -#include -#include -#include - -namespace mysqlpp { - -/// \brief Base class template for MySQL++ date and time classes. -/// -/// This template primarily defines the comparison operators, which are -/// all implemented in terms of compare(). Each subclass implements that -/// as a protected method, because these operators are the only -/// supported comparison method. -/// -/// This template also defines interfaces for converting the object to -/// a string form, which a subclass must define. -template struct DTbase -{ - /// \brief Destroy object - virtual ~DTbase() { } - - /// \brief Return a copy of the item in C++ string form - operator std::string() const - { - return stream2string(*this); - } - - /// \brief Compare this object to another of the same type - /// - /// Returns < 0 if this object is "before" the other, 0 of they are - /// equal, and > 0 if this object is "after" the other. - MYSQLPP_EXPORT virtual short compare(const T& other) const = 0; - - /// \brief Returns true if "other" is equal to this object - bool operator ==(const T& other) const - { - return !compare(other); - } - - /// \brief Returns true if "other" is not equal to this object - bool operator !=(const T& other) const - { - return compare(other); - } - - /// \brief Returns true if "other" is less than this object - bool operator <(const T& other) const - { - return compare(other) < 0; - } - - /// \brief Returns true if "other" is less than or equal to this object - bool operator <=(const T& other) const - { - return compare(other) <= 0; - } - - /// \brief Returns true if "other" is greater than this object - bool operator >(const T& other) const - { - return compare(other) > 0; - } - - /// \brief Returns true if "other" is greater than or equal to this object - bool operator >=(const T& other) const - { - return compare(other) >= 0; - } -}; - - -/// \brief C++ form of MySQL's DATETIME type. -/// -/// Objects of this class can be inserted into streams, and -/// initialized from MySQL DATETIME strings. -struct DateTime : public DTbase -{ - /// \brief the year - /// - /// No surprises; the year 2005 is stored as the integer 2005. - short int year; - - /// \brief the month, 1-12 - tiny_int month; - - /// \brief the day, 1-31 - tiny_int day; - - /// \brief hour, 0-23 - tiny_int hour; - - /// \brief minute, 0-59 - tiny_int minute; - - /// \brief second, 0-59 - tiny_int second; - - /// \brief Default constructor - DateTime() : - DTbase(), - year(0), - month(0), - day(0), - hour(0), - minute(0), - second(0) - { - } - - /// \brief Initialize object as a copy of another Date - DateTime(const DateTime& other) : - DTbase(), - year(other.year), - month(other.month), - day(other.day), - hour(other.hour), - minute(other.minute), - second(other.second) - { - } - - /// \brief Initialize object from a MySQL date-and-time string - /// - /// String must be in the HH:MM:SS format. It doesn't have to be - /// zero-padded. - DateTime(cchar* str) { convert(str); } - - /// \brief Initialize object from a MySQL date-and-time string - /// - /// \sa DateTime(cchar*) - DateTime(const ColData& str) - { - convert(str.c_str()); - } - - /// \brief Initialize object from a MySQL date-and-time string - /// - /// \sa DateTime(cchar*) - DateTime(const std::string& str) - { - convert(str.c_str()); - } - - /// \brief Initialize object from a time_t - DateTime(time_t t); - - /// \brief Compare this datetime to another. - /// - /// Returns < 0 if this datetime is before the other, 0 of they are - /// equal, and > 0 if this datetime is after the other. - /// - /// This method is protected because it is merely the engine used - /// by the various operators in DTbase. - MYSQLPP_EXPORT short compare(const DateTime& other) const; - - /// \brief Parse a MySQL date and time string into this object. - MYSQLPP_EXPORT cchar* convert(cchar*); - - /// Convert to time_t - operator time_t() const; -}; - - -/// \brief Inserts a DateTime object into a C++ stream in a -/// MySQL-compatible format. -/// -/// The date and time are inserted into the stream, in that order, -/// with a space between them. -/// -/// \param os stream to insert date and time into -/// \param dt date/time object to insert into stream -MYSQLPP_EXPORT std::ostream& operator <<(std::ostream& os, - const DateTime& dt); - - -/// \brief C++ form of MySQL's DATE type. -/// -/// Objects of this class can be inserted into streams, and -/// initialized from MySQL DATE strings. -struct Date : public DTbase -{ - /// \brief the year - /// - /// No surprises; the year 2005 is stored as the integer 2005. - short int year; - - /// \brief the month, 1-12 - tiny_int month; - - /// \brief the day, 1-31 - tiny_int day; - - /// \brief Default constructor - Date() : year(0), month(0), day(0) { } - - /// \brief Initialize object - Date(short int y, tiny_int m, tiny_int d) : - DTbase(), - year(y), - month(m), - day(d) - { - } - - /// \brief Initialize object as a copy of another Date - Date(const Date& other) : - DTbase(), - year(other.year), - month(other.month), - day(other.day) - { - } - - /// \brief Initialize object from date part of date/time object - Date(const DateTime& other) : - DTbase(), - year(other.year), - month(other.month), - day(other.day) - { - } - - /// \brief Initialize object from a MySQL date string - /// - /// String must be in the YYYY-MM-DD format. It doesn't have to be - /// zero-padded. - Date(cchar* str) { convert(str); } - - /// \brief Initialize object from a MySQL date string - /// - /// \sa Date(cchar*) - Date(const ColData& str) { convert(str.c_str()); } - - /// \brief Initialize object from a MySQL date string - /// - /// \sa Date(cchar*) - Date(const std::string& str) - { - convert(str.c_str()); - } - - /// \brief Compare this date to another. - /// - /// Returns < 0 if this date is before the other, 0 of they are - /// equal, and > 0 if this date is after the other. - MYSQLPP_EXPORT short int compare(const Date& other) const; - - /// \brief Parse a MySQL date string into this object. - MYSQLPP_EXPORT cchar* convert(cchar*); -}; - -/// \brief Inserts a Date object into a C++ stream -/// -/// The format is YYYY-MM-DD, zero-padded. -/// -/// \param os stream to insert date into -/// \param d date to insert into stream -MYSQLPP_EXPORT std::ostream& operator <<(std::ostream& os, - const Date& d); - - -/// \brief C++ form of MySQL's TIME type. -/// -/// Objects of this class can be inserted into streams, and -/// initialized from MySQL TIME strings. -struct Time : public DTbase