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

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

?? litesql-gen-cpp.cpp

?? LiteSQL is a C++ library that integrates C++ objects tightly to relational database and thus provide
?? CPP
?? 第 1 頁 / 共 4 頁
字號:
                recs.push_back(rec);                indexes++;            }        }        for (size_t i2 = 0; i2 < obj.indexes.size(); i2++) {            const xml::Index& idx = obj.indexes[i2];            Split flds;                        for (size_t i3 = 0; i3 < idx.fields.size(); i3++)                 flds.push_back(obj.name + "::" + idx.fields[i3].name + "_.name()");            string iname = makeTableName(obj.getTable() + "_" + flds.join("_") + "_idx");            string unique = "";            if (idx.isUnique())                unique = " UNIQUE";            rec.clear();            rec.push_back(quote(iname));            rec.push_back(quote("index"));            rec.push_back(quote("CREATE"+unique+" INDEX " + iname                                 + " ON ") + " + " + obj.name + "::table__"                          + " + \" (\" + " + flds.join(" + \",\" + ")                          + " + \")\"");            recs.push_back(rec);                             indexes++;        }                            if (!obj.parentObject) {            rec.clear();            rec.push_back(obj.name + "::sequence__");            rec.push_back(quote("sequence"));            rec.push_back(quote("CREATE SEQUENCE \" + "                                 + obj.name + "::sequence__ + \""                                 + " START 1 INCREMENT 1"));            recs.push_back(rec);            sequences++;        }    }            for (size_t i = 0; i < relations.size(); i++) {         const xml::Relation& rel = relations[i];        Split fields, indexFields;        for (size_t i2 = 0; i2 < rel.related.size(); i2++) {            const xml::Relate& relate = rel.related[i2];            string extra;            if (relate.isUnique())                    extra = " + " + quote(" UNIQUE");            else if (rel.related.size() == 2) {                 if (i2 == 0 && rel.related[1].hasLimit())                    extra = " + " + quote(" UNIQUE");                if (i2 == 1 && rel.related[0].hasLimit())                    extra = " + " + quote(" UNIQUE");            }                                        fields.push_back(rel.getName() + "::"                              + relate.fieldTypeName + ".name() + \" \" + "                                   + rel.getName() + "::" + relate.fieldTypeName + ".type()"                              + extra);            indexFields.push_back(rel.getName() + "::" + relate.fieldTypeName + ".name()");        }               for (size_t i2 = 0; i2 < rel.fields.size(); i2++) {            const xml::Field& fld = rel.fields[i2];            string unique;            if (fld.isUnique())                unique = " UNIQUE";            if (!unique.empty())                unique = " + " + quote(unique);                            fields.push_back(rel.getName() + "::" + fld.fieldTypeName                              + ".name() + \" \" + " +                              rel.getName() + "::" + fld.fieldTypeName + "_.type()"                             + unique);        }        rec.clear();        rec.push_back(rel.getName() + "::table__");        rec.push_back(quote("table"));        rec.push_back(quote("CREATE TABLE ") + " + " + rel.getName() + "::table__"                      + " + \" (\" + "                       + fields.join("+ \",\" + ") + " + \")\"");        recs.push_back(rec);        tables++;        if (rel.related.size() > 1) {            string iname = makeTableName(rel.getTable() + "_all_idx");            rec.clear();            rec.push_back(quote(iname));            rec.push_back(quote("index"));            rec.push_back(quote("CREATE INDEX " + iname + " ON ") + " + " + rel.getName() + "::table__"                            + " + \" (\" + "                             + indexFields.join(" + \",\" + ")                            + " + \")\"");                        recs.push_back(rec);            indexes++;        }        for (size_t i2 = 0; i2 < rel.related.size(); i2++) {            const xml::Relate& relate = rel.related[i2];            rec.clear();            string iname = makeTableName(rel.getTable() + "_" + relate.fieldTypeName + "_idx");            rec.push_back(quote(iname));            rec.push_back(quote("index"));            rec.push_back(quote("CREATE INDEX " + iname + " ON ") + " + " + rel.getName() + "::table__"                            + " + \" (\" + "                             + rel.getName() + "::" + relate.fieldTypeName + ".name()"                            + " + \")\"");            recs.push_back(rec);            indexes++;        }        for (size_t i2 = 0; i2 < rel.fields.size(); i2++) {            const xml::Field& fld = rel.fields[i2];                   if (fld.isIndexed()) {                rec.clear();                string iname = makeTableName(rel.getTable() + "_" + fld.name + "_idx");                rec.push_back(quote(iname));                rec.push_back(quote("index"));                rec.push_back(quote("CREATE INDEX " + iname + " ON ") + " + " + rel.getName() + "::table__"                                + " + \" (\" + "                                 + rel.getName() + "::" + fld.fieldTypeName + "_.name()"                                + " + \")\"");                recs.push_back(rec);                indexes++;            }        }        for (size_t i2 = 0; i2 < rel.indexes.size(); i2++) {            const xml::Index& idx = rel.indexes[i2];            Split flds;                        for (size_t i3 = 0; i3 < idx.fields.size(); i3++)                 flds.push_back(rel.getName() + "::" + idx.fields[i3].name + "_.name()");            string iname = makeTableName(rel.getTable() + "_" + flds.join("_") + "_idx");            string unique = "";            if (idx.isUnique())                unique = " UNIQUE";            rec.clear();            rec.push_back(quote(iname));            rec.push_back(quote("index"));            rec.push_back(quote("CREATE"+unique+" INDEX " + iname                                 + " ON ") + " + " + rel.getName() + "::table__"                          + " + \" (\" + " + flds.join(" + \",\" + ")                          + " + \")\"");            recs.push_back(rec);                             indexes++;        }    }    report(toString(tables) + " tables\n");    report(toString(sequences) + " sequences\n");    report(toString(indexes) + " indexes\n");    return recs;}void writeDatabaseClass(FILE* hpp, FILE* cpp,                        xml::Database& dbInfo,                        vector<xml::Object>& objects,                        vector<xml::Relation>& relations) {    gen::Class db(dbInfo.name, "litesql::Database");        gen::Method cons(dbInfo.name);        cons.param(Variable("backendType", "std::string"))        .param(Variable("connInfo", "std::string"))        .constructor("litesql::Database(backendType, connInfo)");    cons.body("initialize();");    db.method(cons);    gen::Method getSchemaMtd("getSchema", "std::vector<litesql::Database::SchemaItem>");    getSchemaMtd.virtual_().protected_().const_()        .body("vector<Database::SchemaItem> res;");    Records schema = getSchema(objects, relations);    for (Records::iterator i = schema.begin(); i != schema.end(); i++) {        if ((*i)[1] == quote("sequence"))            getSchemaMtd.body("if (backend->supportsSequences())");        getSchemaMtd.body("res.push_back(Database::SchemaItem("                        + (*i)[0] + ","                        + (*i)[1] + ","                       + (*i)[2] + "));");    }        getSchemaMtd.body("return res;");    db.method(getSchemaMtd);    Method init("initialize", "void");    init.body("static bool initialized = false;")        .body("if (initialized)")        .body("    return;")        .body("initialized = true;");        for (size_t i = 0; i < objects.size(); i++) {        xml::Object& o = objects[i];        for (size_t i2 = 0; i2 < o.fields.size(); i2++)            if (!o.fields[i2].values.empty()) {                init.body(o.name + "::initValues();");                break;            }    }    for (size_t i = 0; i < relations.size(); i++) {        xml::Relation& r = relations[i];        for (size_t i2 = 0; i2 < r.fields.size(); i2++)            if (!r.fields[i2].values.empty()) {                init.body(r.getName() + "::initValues();");                break;            }    }    init.protected_().static_();    db.method(init);    db.write(hpp, cpp);}void writeCPPClasses(xml::Database& db,                     vector<xml::Object>& objects,                     vector<xml::Relation>& relations) {    sanityCheck(db, objects, relations);    bool hasNamespace = false;        FILE *hpp, *cpp;        string hppName = toLower(db.name) + ".hpp";    hpp = fopen(hppName.c_str(), "w");    if (!hpp) {        string msg = "could not open file : " + hppName;        perror(msg.c_str());        return;    }        string cppName = toLower(db.name) + ".cpp";    cpp = fopen(cppName.c_str(), "w");    if (!cpp) {        string msg = "could not open file : " + cppName;        perror(msg.c_str());        return;    }        fprintf(hpp, "#include \"litesql.hpp\"\n");    if (!db.include.empty())         fprintf(hpp, "#include \"%s\"\n", db.include.c_str());    fprintf(cpp, "#include \"%s\"\n", hppName.c_str());        if (!db.nspace.empty()) {        fprintf(hpp, "namespace %s {\n", db.nspace.c_str());        fprintf(cpp, "namespace %s {\n", db.nspace.c_str());        hasNamespace = true;    } else        hasNamespace = false;    fprintf(cpp, "using namespace litesql;\n");    report("writing prototypes for Persistent classes\n");     for (size_t i = 0; i < objects.size(); i++)         fprintf(hpp, "class %s;\n", objects[i].name.c_str());    report("writing relations\n");    for (size_t i = 0; i < relations.size(); i++) {        xml::Relation & o = relations[i];        Class cl(o.getName());        writeStaticRelData(cl, o);        writeRelMethods(db, cl, o);                cl.write(hpp, cpp);    }    report("writing persistent objects\n");    for (size_t i = 0; i < objects.size(); i++) {        xml::Object & o = objects[i];        Class cl(o.name, o.inherits);        writeStaticObjData(cl, o);        writeObjFields(cl, o);               writeObjConstructors(cl, o);        writeObjRelationHandles(cl, o);        writeObjBaseMethods(cl, o);        cl.write(hpp, cpp);        // Object -> string method (not associated to class)        gen::Method strMtd("operator<<", "std::ostream &");        strMtd.param(Variable("os", "std::ostream&"))            .param(Variable("o", o.name));        vector<xml::Field> flds;        o.getAllFields(flds);        strMtd.body("os << \"-------------------------------------\" << std::endl;");        for (size_t i2 = 0; i2 < flds.size(); i2++) {            xml::Field& fld = flds[i2];            strMtd.body("os << o." + fld.name + ".name() << \" = \" << o."                         + fld.name + " << std::endl;");        }        strMtd.body("os << \"-------------------------------------\" << std::endl;");        strMtd.body("return os;");                strMtd.write(hpp, cpp, "", 0);    }    report("writing database class\n");    writeDatabaseClass(hpp, cpp, db, objects, relations);        if (hasNamespace) {        fprintf(hpp, "}\n");        fprintf(cpp, "}\n");    }    fclose(hpp);    fclose(cpp);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
2020国产精品自拍| 国产精品毛片大码女人| av中文字幕亚洲| 国产成人自拍在线| 亚洲五月六月丁香激情| 欧美国产亚洲另类动漫| 欧美精品亚洲一区二区在线播放| 成人sese在线| 国产在线精品不卡| 三级在线观看一区二区| 综合欧美一区二区三区| 久久久精品免费观看| 91精品国产综合久久精品性色| eeuss鲁片一区二区三区在线观看| 久久国产精品一区二区| 视频一区二区三区入口| 亚洲乱码日产精品bd| 国产精品色一区二区三区| 日韩欧美一区二区免费| 欧美日韩一区二区三区免费看| 99re66热这里只有精品3直播 | 97久久久精品综合88久久| 久久成人久久爱| 亚洲成人免费视频| 一区二区三区视频在线观看| 国产精品免费看片| 国产精品午夜在线| 国产亚洲欧美日韩日本| 欧美精品一区二区三区蜜臀 | 国产精品久久免费看| 久久日韩粉嫩一区二区三区 | 亚洲男人的天堂在线aⅴ视频| 精品久久久久久综合日本欧美| 欧美日韩黄视频| 欧美在线制服丝袜| 欧美性淫爽ww久久久久无| 色综合色狠狠天天综合色| 北岛玲一区二区三区四区| 成人中文字幕电影| 国产福利不卡视频| 国产成人精品aa毛片| 成人一区二区三区| a4yy欧美一区二区三区| 97精品久久久久中文字幕| 91一区二区三区在线观看| 97成人超碰视| 日本久久一区二区| 欧美高清性hdvideosex| 欧美一级电影网站| 久久久久免费观看| 看电视剧不卡顿的网站| 91.成人天堂一区| 欧美视频一区二区| 欧美裸体一区二区三区| 欧美久久久一区| 欧美xxxx在线观看| 国产欧美日本一区视频| 亚洲人成网站影音先锋播放| 亚洲人成伊人成综合网小说| 一区二区不卡在线播放 | 亚洲午夜在线电影| 日本强好片久久久久久aaa| 蜜臀av一区二区在线观看| 国模一区二区三区白浆| av综合在线播放| 欧美三级电影精品| 欧美成人精品二区三区99精品| 国产午夜精品福利| 亚洲另类在线视频| 日产国产欧美视频一区精品| 国产v综合v亚洲欧| 欧美色偷偷大香| 欧美精品一区二区三区蜜臀| 亚洲视频在线一区| 日本 国产 欧美色综合| 成人福利在线看| 91.麻豆视频| 国产精品欧美久久久久无广告 | 精品国产99国产精品| 国产精品麻豆久久久| 一区二区三区波多野结衣在线观看| 日韩黄色一级片| www.亚洲精品| 日韩一二在线观看| 一区二区三区四区中文字幕| 久久99国产精品尤物| 日本道色综合久久| 久久婷婷国产综合国色天香| 一区二区三区四区乱视频| 国产九色精品成人porny| 欧洲一区在线电影| 中文字幕电影一区| 青青草国产成人av片免费| av在线播放成人| 久久伊99综合婷婷久久伊| 亚洲综合视频在线| 成人免费毛片aaaaa**| 91精品国产91热久久久做人人| 国产欧美日韩精品在线| 美女视频黄久久| 欧美视频日韩视频在线观看| 国产日韩欧美综合在线| 日本欧美一区二区| 日本久久一区二区三区| 国产精品欧美一级免费| 国产一区二区91| 日韩欧美美女一区二区三区| 一区二区欧美国产| 99视频有精品| 国产日韩影视精品| 国产美女主播视频一区| 日韩一区二区三区在线视频| 亚洲高清视频在线| 91丨九色丨黑人外教| 中文字幕+乱码+中文字幕一区| 美腿丝袜亚洲综合| 欧美人与z0zoxxxx视频| 亚洲一区二区三区精品在线| 92国产精品观看| 中文字幕日韩欧美一区二区三区| 国产乱码精品一区二区三区五月婷| 3751色影院一区二区三区| 一区二区三区加勒比av| 91久久一区二区| 一区二区在线观看av| 91啦中文在线观看| 亚洲视频香蕉人妖| jizz一区二区| 国产精品久久久久久久久动漫 | 日韩美女精品在线| 波多野结衣的一区二区三区| 中文字幕av一区二区三区高| 国产宾馆实践打屁股91| 欧美激情一区二区三区在线| 高清日韩电视剧大全免费| 国产精品视频免费看| 粉嫩av亚洲一区二区图片| 亚洲国产精品高清| 成人亚洲一区二区一| 国产精品视频一二三区| 91丝袜美女网| 亚洲国产精品久久不卡毛片| 欧美色图在线观看| 日韩高清在线电影| 日韩精品一区二区三区四区视频 | 日韩精品亚洲专区| 日韩欧美一区二区视频| 国产精品一二三四五| 国产精品污www在线观看| 不卡视频一二三| 亚洲一区二区三区四区在线观看 | 久久亚洲一区二区三区明星换脸| 久久不见久久见免费视频7 | 26uuu国产电影一区二区| 国产高清在线观看免费不卡| 国产精品免费av| 欧美午夜视频网站| 美女视频黄 久久| 国产女主播视频一区二区| 色综合久久99| 奇米777欧美一区二区| 久久影院午夜论| 91麻豆高清视频| 日韩中文字幕一区二区三区| 久久久精品黄色| 色婷婷香蕉在线一区二区| 视频一区欧美日韩| 久久久亚洲精品石原莉奈| 91天堂素人约啪| 捆绑变态av一区二区三区| 国产欧美一区二区精品忘忧草| 一本色道久久综合亚洲aⅴ蜜桃| 视频一区中文字幕| 国产女人aaa级久久久级| 欧美日韩三级在线| 国产精品66部| 亚洲第一会所有码转帖| 久久久久97国产精华液好用吗| 91福利视频网站| 国产精品77777| 亚洲va国产va欧美va观看| 国产午夜精品一区二区三区四区| 欧美自拍偷拍一区| 国产精品白丝jk黑袜喷水| 亚洲国产欧美在线人成| 久久久精品影视| 欧美美女黄视频| 成人精品一区二区三区中文字幕| 婷婷综合久久一区二区三区| 国产欧美日韩精品a在线观看| 欧美精品成人一区二区三区四区| 国产精品影视天天线| 婷婷综合在线观看| 亚洲色欲色欲www在线观看| 精品福利一二区| 欧美军同video69gay| www.视频一区| 国产高清在线精品| 日本v片在线高清不卡在线观看| 亚洲精品ww久久久久久p站|