亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? litesql-gen-cpp.cpp

?? LiteSQL is a C++ library that integrates C++ objects tightly to relational database and thus provide
?? CPP
?? 第 1 頁 / 共 4 頁
字號:
                .param(Variable("vals", "const litesql::FieldType::Values&", "Values()"))                .constructor("litesql::FieldType(n,t,tbl,vals)");                        ftypeCl.method(cons);            for (size_t v = 0; v < fld.values.size(); v++) {                const xml::Value& value = fld.values[v];                string v;                if (fld.getCPPType() == "std::string")                    v = quote(value.value);                else                    v = value.value;                Variable val(value.name, "const " + fld.getCPPType(), v);                                val.static_();                ftypeCl.variable(val);            }            cl.class_(ftypeCl);        }        Variable ftype(fld.fieldTypeName, ftypeClass, data);        ftype.static_();        cl.variable(ftype);    }    if (hasValues)        cl.method(initValues);    Class rowcl("Row");    Method rowcons("Row");    rowcons.param(Variable("db", "const litesql::Database&"))        .param(Variable("rec", "const litesql::Record&", "litesql::Record()"));//        .constructor("litesql::Record(db, rec)");    Split consParams;    int fieldNum = r.related.size() + r.fields.size();    rowcons.body("switch(rec.size()) {");    for (int i = r.fields.size()-1; i >= 0; i--) {        xml::Field& fld = r.fields[i];        Variable fldvar(fld.name, "litesql::Field<" + fld.getCPPType() + ">");        rowcl.variable(fldvar);                rowcons.body("case " + toString(fieldNum) + ":")            .body("    " + fld.name + " = rec[" + toString(fieldNum-1) + "];");        consParams.push_back(fld.name +                             "(" + r.getName() + "::" + fld.fieldTypeName + ")");        fieldNum--;            }    for (int i = r.related.size()-1; i >= 0; i--) {        xml::Relate& rel = r.related[i];        string fname = xml::decapitalize(rel.fieldTypeName);        Variable fld(fname, "litesql::Field<int>");        rowcl.variable(fld);        rowcons.body("case " + toString(fieldNum) + ":")            .body("    " + fname + " = rec["                   + toString(fieldNum-1) + "];");         consParams.push_back(fname                              + "(" + r.getName()                              + "::" + rel.fieldTypeName +")");        fieldNum--;    }    rowcons.body("}");    rowcons.constructor(consParams.join(", "));    rowcl.method(rowcons);        cl.class_(rowcl);}void writeRelMethods(xml::Database& database,		     Class& cl, xml::Relation& r) {    Variable dbparam("db", "const litesql::Database&");    Variable destExpr("expr", "const litesql::Expr&",                        "litesql::Expr()");    Variable srcExpr("srcExpr", "const litesql::Expr&",                        "litesql::Expr()");    Method link("link", "void");    Method unlink("unlink", "void");    Method del("del", "void");    Method getRows("getRows",                    "litesql::DataSource<"+r.getName()+"::Row>");        link.static_().param(dbparam);    link.body("Record values;")        .body("Split fields;");    for (size_t i = 0; i < r.related.size(); i++) {        xml::Relate& rel = r.related[i];        link.body("fields.push_back(" + rel.fieldTypeName + ".name());");        link.body("values.push_back(o" + toString(i) + ".id);");        rel.paramPos = i;    }    for (size_t i = 0; i < r.fields.size(); i++) {        xml::Field& fld = r.fields[i];                link.body("fields.push_back(" + fld.fieldTypeName + ".name());");        if (fld.getCPPType() != "std::string")            link.body("values.push_back(toString(" + fld.name + "));");        else            link.body("values.push_back(" + fld.name + ");");    }    link.body("db.insert(table__, values, fields);");    if (r.isUnidir()==false && r.related.size() == 2 && r.sameTypes() == 2) {        link.body("fields.clear();")            .body("values.clear();");        for (size_t i = 0; i < r.related.size(); i++) {            xml::Relate& rel = r.related[i];            link.body("fields.push_back(" + rel.fieldTypeName + ".name());");            link.body("values.push_back(o" + toString(1-i) + ".id);");        }        for (size_t i = 0; i < r.fields.size(); i++) {            xml::Field& fld = r.fields[i];                    link.body("fields.push_back(" + fld.fieldTypeName + ".name());");            if (fld.getCPPType() != "std::string")                link.body("values.push_back(toString(" + fld.name + "));");            else                link.body("values.push_back(" + fld.name + ");");        }        link.body("db.insert(table__, values, fields);");    }    unlink.static_().param(dbparam);    Split unlinks;    for (size_t i = 0; i < r.related.size(); i++) {        xml::Relate& rel = r.related[i];        unlinks.push_back(rel.fieldTypeName + " == o"                           + toString(i) + ".id");    }    for (size_t i = 0; i < r.fields.size(); i++) {        xml::Field& fld = r.fields[i];        unlinks.push_back("(" + fld.fieldTypeName + " == " + fld.name + ")");    }        unlink.body("db.delete_(table__, (" + unlinks.join(" && ") + "));");    if (r.isUnidir()==false && r.related.size() == 2 && r.sameTypes() == 2) {        unlinks.clear();        for (size_t i = 0; i < r.related.size(); i++) {            xml::Relate& rel = r.related[i];            unlinks.push_back(rel.fieldTypeName + " == o"                               + toString(1-i) + ".id");        }        for (size_t i = 0; i < r.fields.size(); i++) {            xml::Field& fld = r.fields[i];            unlinks.push_back("(" + fld.fieldTypeName + " == " + fld.name + ")");        }        unlink.body("db.delete_(table__, (" + unlinks.join(" && ") + "));");    }    del.static_().param(dbparam).param(destExpr);     del.body("db.delete_(table__, expr);");    getRows.static_().param(dbparam).param(destExpr)        .body("SelectQuery sel;");    for (size_t i = 0; i < r.related.size(); i++) {        xml::Relate& rel = r.related[i];                getRows.body("sel.result(" + rel.fieldTypeName + ".fullName());");    }    for (size_t i = 0; i < r.fields.size(); i++) {        xml::Field& fld = r.fields[i];        getRows.body("sel.result(" + fld.fieldTypeName + ".fullName());");    }    getRows.body("sel.source(table__);")        .body("sel.where(expr);")        .body("return DataSource<" + r.getName() + "::Row>(db, sel);");    for (size_t i2 = 0; i2 < r.related.size(); i2++) {        xml::Relate& rel = r.related[i2];        Variable obj("o" + toString(i2), "const " +  database.nspace + "::" +rel.objectName + "&");        link.param(obj);        unlink.param(obj);    }    for (size_t i2 = 0; i2 < r.fields.size(); i2++) {        xml::Field& fld = r.fields[i2];        link.param(Variable(fld.name, fld.getCPPType(),                             fld.getQuotedDefaultValue()));        unlink.param(Variable(fld.name,  fld.getCPPType()));    }    cl.method(link).method(unlink).method(del).method(getRows);    if (r.sameTypes() == 1) {        Method getTpl("get", "litesql::DataSource<T>");        getTpl.static_().template_("class T").defineOnly()            .param(dbparam).param(destExpr).param(srcExpr);        cl.method(getTpl);        for (size_t i2 = 0; i2 < r.related.size(); i2++) {            xml::Relate& rel = r.related[i2];            Method get("get", "litesql::DataSource<"                        + database.nspace + "::" + rel.objectName + ">");            rel.getMethodName = "get<" + rel.objectName + ">";            get.static_().templateSpec("")                .param(dbparam).param(destExpr).param(srcExpr)                .body("SelectQuery sel;")                .body("sel.source(table__);")                .body("sel.result(" + rel.fieldTypeName + ".fullName());")                .body("sel.where(srcExpr);")                .body("return DataSource<" + database.nspace + "::" + rel.objectName                       + ">(db, "+database.nspace + "::" + rel.objectName+"::Id.in(sel) && expr);");            cl.method(get);        }    } else {        map<string, int> counter;        for (size_t i2 = 0; i2 < r.related.size(); i2++) {            string num;            xml::Relate& rel = r.related[i2];            if (r.countTypes(rel.objectName) > 1) {                if (counter.find(rel.objectName) == counter.end())                    counter[rel.objectName] = 0;                counter[rel.objectName]++;                num = toString(counter[rel.objectName]);                    }            rel.getMethodName = "get" + rel.objectName + num;            Method get(rel.getMethodName,                        "litesql::DataSource<" + database.nspace + "::"                         + rel.objectName + ">");            get.static_()                .param(dbparam).param(destExpr).param(srcExpr)                .body("SelectQuery sel;")                .body("sel.source(table__);")                .body("sel.result(" + rel.fieldTypeName + ".fullName());")                .body("sel.where(srcExpr);")                .body("return DataSource<" + database.nspace + "::"                      + rel.objectName                       + ">(db, "+database.nspace + "::" + rel.objectName+"::Id.in(sel) && expr);");            cl.method(get);        }    }}void makeRelationHandles(map<string, xml::Object*>& objMap,                         vector<xml::Object>& objects,                         vector<xml::Relation>& relations) {    for (size_t i = 0; i < relations.size(); i++) {        xml::Relation& rel = relations[i];        for (size_t i2 = 0; i2 < rel.related.size(); i2++) {            xml::Relate& relate = rel.related[i2];            if (objMap.find(relate.objectName)                 == objMap.end())                 throw Except("undefined object : "                                      + relate.objectName);        }        for (size_t i2 = 0; i2 < rel.related.size(); i2++) {            xml::Relate& relate = rel.related[i2];            xml::Object* obj = objMap[relate.objectName];            if (obj->relations.find(&rel) == obj->relations.end())                obj->relations[&rel] = vector<xml::Relate*>();            obj->relations[&rel].push_back(&relate);            if (!relate.handle.empty()) {                xml::RelationHandle handle(relate.handle, &rel,                                           &relate, obj);                for (size_t i3 = 0; i3 < rel.related.size(); i3++) {                    if (i2 != i3) {                        xml::Object* o = objMap[rel.related[i3].objectName];                        handle.destObjects.push_back(make_pair(o,&rel.related[i3]));                    }                }                obj->handles.push_back(handle);            }        }    }}Records getSchema(const vector<xml::Object>& objects,                  const vector<xml::Relation>& relations) {    int tables = 0, sequences = 0, indexes = 0;    Records recs;    Record rec;    rec.push_back(quote("schema"));    rec.push_back(quote("table"));    rec.push_back(quote("CREATE TABLE schema (name TEXT, type TEXT, sql TEXT);"));    recs.push_back(rec);    for (size_t i = 0; i < objects.size(); i++) {        const xml::Object& obj = objects[i];        Split fields;        fields.push_back(obj.name + "::Id.name() + \" \" + backend->getRowIDType()");        for (size_t i2 = obj.parentObject ? 0 : 1;              i2 < obj.fields.size(); i2++) {            string unique;            if (obj.fields[i2].isUnique())                unique = " UNIQUE";            if (!unique.empty())                unique = " + " + quote(unique);            fields.push_back(obj.name + "::" + obj.fields[i2].fieldTypeName + ".name()"                              + " + \" \" + " + obj.name + "::" + obj.fields[i2].fieldTypeName + ".type()" + unique);        }        rec.clear();        rec.push_back(obj.name + "::table__");        rec.push_back(quote("table"));        rec.push_back(quote("CREATE TABLE ") + " + " + obj.name + "::table__"                      + " + \" (\" + " + fields.join(" + \",\" + ") + " + \")\"");        recs.push_back(rec);        tables++;        for (size_t i2 = obj.parentObject ? 1 : 2;              i2 < obj.fields.size(); i2++) {            const xml::Field& fld = obj.fields[i2];            if (fld.isIndexed()) {                rec.clear();                string iname = makeTableName(obj.getTable() + "_" + fld.name + "_idx");                rec.push_back(quote(iname));                rec.push_back(quote("index"));                rec.push_back(quote("CREATE INDEX " + iname + " ON ") + " + " + obj.name + "::table__"                                + " + \" (\" + "                                 + obj.name + "::" + fld.fieldTypeName + ".name()"                                + " + \")\"");

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产在线一区二区| 久久精品国产亚洲高清剧情介绍| 日本欧美加勒比视频| 99视频一区二区三区| 精品国产乱码91久久久久久网站| 亚洲自拍偷拍欧美| www.欧美.com| 久久久久久久电影| 男女男精品视频| 欧美视频一区在线| 亚洲人成精品久久久久久| 国产精品一区二区果冻传媒| 欧美一级欧美一级在线播放| 亚洲一区在线视频| 色又黄又爽网站www久久| 国产午夜精品一区二区三区四区 | 欧美日韩精品一区二区三区| 国产女人18水真多18精品一级做 | 一区二区三区加勒比av| 国产ts人妖一区二区| 欧美精品一区二区三区高清aⅴ | 福利一区福利二区| 亚洲精品在线三区| 蜜桃视频在线一区| 91精品啪在线观看国产60岁| 亚洲国产一区二区a毛片| 91丨porny丨户外露出| 国产精品精品国产色婷婷| 国产成人日日夜夜| 久久久久国产免费免费| 激情五月婷婷综合| 精品精品国产高清一毛片一天堂| 日本午夜一区二区| 日韩欧美综合一区| 伦理电影国产精品| 欧美电影免费观看高清完整版在线 | 91久久精品一区二区二区| 中文字幕一区二区不卡 | 美女网站色91| 日韩欧美的一区二区| 日韩电影一二三区| 日韩一区二区电影| 久久精品国产亚洲一区二区三区| 日韩一区二区三区精品视频| 美女高潮久久久| 日韩精品一区二区三区在线播放| 久久99久久精品| 久久久久久久久久久久久久久99| 国产精品一区二区三区网站| 亚洲国产高清在线| 91在线视频播放| 亚洲午夜免费视频| 欧美精品自拍偷拍| 日本不卡一区二区三区高清视频| 欧美成人性战久久| 国产精品一区在线| 国产精品初高中害羞小美女文| 91一区二区在线观看| 亚洲精品免费电影| 欧美精品乱码久久久久久| 日本不卡1234视频| 国产亚洲午夜高清国产拍精品 | 五月天亚洲婷婷| 欧美v国产在线一区二区三区| 国产酒店精品激情| 国产精品久久久久久久久久久免费看 | 欧美一区二区黄| 国产在线精品一区二区不卡了 | 一区二区三区在线观看欧美| 欧美性videosxxxxx| 日本网站在线观看一区二区三区| 久久综合九色综合欧美就去吻| 国产不卡高清在线观看视频| 日韩理论电影院| 欧美一区二区三区婷婷月色| 国产福利一区二区三区视频在线| 亚洲人精品午夜| 日韩一区二区中文字幕| 国产成人综合视频| 亚洲精品久久嫩草网站秘色| 51久久夜色精品国产麻豆| 国产精品一区二区果冻传媒| 亚洲男人的天堂在线观看| 日韩欧美一区二区三区在线| 国产91精品免费| 亚洲v日本v欧美v久久精品| 久久久久久久久岛国免费| 一本大道久久a久久综合婷婷| 视频一区二区不卡| 国产欧美日韩精品一区| 欧美日韩免费在线视频| 国产在线视频不卡二| 一区二区三区在线视频免费| 精品成人一区二区| 在线观看不卡一区| 国产高清在线精品| 婷婷激情综合网| 国产精品国模大尺度视频| 日韩一区二区在线看| 99久久99久久精品免费观看| 欧美bbbbb| 夜夜嗨av一区二区三区| 久久久亚洲国产美女国产盗摄| 欧美在线观看视频在线| 国产成人三级在线观看| 日本成人在线看| 亚洲男人的天堂在线aⅴ视频| 久久综合久久鬼色| 欧美久久久久久久久久| jizzjizzjizz欧美| 久久精品国产亚洲高清剧情介绍| 一区二区三区鲁丝不卡| 中文一区在线播放| 欧美电影免费观看高清完整版在| 日本久久一区二区| 成人午夜在线视频| 国产在线精品不卡| 免费观看在线色综合| 一区二区高清在线| 国产精品久久毛片av大全日韩| 日韩一级片在线观看| 欧美三级一区二区| 色综合欧美在线视频区| 风间由美一区二区av101| 久久精品噜噜噜成人av农村| 亚洲gay无套男同| 亚洲综合免费观看高清完整版| 国产精品久久久久久久久搜平片| 亚洲精品在线三区| 日韩欧美色电影| 在线不卡中文字幕播放| 色一区在线观看| av毛片久久久久**hd| 国产成人免费视频网站| 国产在线视频一区二区三区| 麻豆精品久久久| 蜜臀久久99精品久久久久宅男 | 亚洲精品久久7777| 一区精品在线播放| 国产精品欧美综合在线| 久久免费午夜影院| 亚洲精品一区二区三区福利| 6080午夜不卡| 69堂成人精品免费视频| 欧美老人xxxx18| 欧美性高清videossexo| 91高清视频在线| 一本一道波多野结衣一区二区| 成人国产精品免费网站| 丁香亚洲综合激情啪啪综合| 国产suv一区二区三区88区| 国产在线国偷精品产拍免费yy| 国内精品伊人久久久久av影院| 另类小说色综合网站| 精彩视频一区二区| 国产精品一级在线| 国产大片一区二区| 成人美女在线视频| 99久久久精品| 91社区在线播放| 欧美日韩在线观看一区二区| 欧美色视频在线| 8v天堂国产在线一区二区| 日韩三级在线观看| 久久久不卡影院| 国产精品乱码妇女bbbb| 亚洲欧美乱综合| 亚洲成人一区二区| 青娱乐精品视频| 国产精品综合av一区二区国产馆| 国产在线播精品第三| 成人综合在线观看| 91丨九色丨国产丨porny| 色av一区二区| 91麻豆精品国产91久久久久久久久| 欧美夫妻性生活| 精品国产三级电影在线观看| 久久久影视传媒| 亚洲欧美日韩小说| 视频一区视频二区中文字幕| 蜜臀va亚洲va欧美va天堂| 国产精品99久久久| 色综合久久综合网欧美综合网| 欧美午夜一区二区三区| 日韩午夜精品电影| 欧美国产激情二区三区| 一区二区三区四区高清精品免费观看 | 日韩成人午夜电影| 国产精品综合久久| 色美美综合视频| 91精品国产欧美一区二区18| 久久先锋影音av鲁色资源网| 成人欧美一区二区三区白人| 亚洲国产欧美一区二区三区丁香婷| 人人精品人人爱| 不卡电影一区二区三区| 欧美在线视频日韩| 久久久久久久久久久黄色| 亚洲激情图片一区| 韩国一区二区在线观看|