⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 litesql-gen-graphviz.cpp

📁 LiteSQL is a C++ library that integrates C++ objects tightly to relational database and thus provide
💻 CPP
字号:
#include "litesql-gen-graphviz.hpp"using namespace std;using namespace xml;void writeInheritance(FILE* f,                       vector<Object>& objects) {    for (size_t i = 0; i < objects.size(); i++) {        Object& o = objects[i];        fprintf(f, "    \"%s\"", o.name.c_str());        if (o.parentObject)            fprintf(f, " -> \"%s\"", o.inherits.c_str());        fprintf(f, ";\n");    }}void writeRelations(FILE* f,                    vector<Object>& objects,                     vector<Relation>& relations) {    for (size_t i = 0; i < relations.size(); i++) {        Relation& r = relations[i];        for (size_t i2 = 0; i2 < r.related.size(); i2++) {            Relate& rel = r.related[i2];            string extra;            for (size_t i3 = 0; i3 < r.related.size(); i3++) {                if (i3 == i2)                     continue;                Relate& destRel = r.related[i3];                if (rel.handle.size() > 0) {                    extra = " [label=\"" + rel.handle + "\"]";                    fprintf(f, "    \"%s\" -> \"%s\"%s;\n",                             rel.objectName.c_str(), destRel.objectName.c_str(),                            extra.c_str());                }            }        }    }}void writeGraphviz(Database& db,                   vector<Object>& objects,                   vector<Relation>& relations) {   string fname = toLower(db.name + ".dot");    FILE* f = fopen(fname.c_str(), "w");   if (!f) {        string msg = "could not open file : " + fname;        perror(msg.c_str());        return;   }   fprintf(f, "digraph database {\n");   fprintf(f, "  node[shape=box,color=black];\n");   fprintf(f, "  subgraph inheritance {\n");   fprintf(f, "    edge[style=dashed,dir=forward,arrowhead=normal];\n");   writeInheritance(f, objects);   fprintf(f, "  }\n");   fprintf(f, "  subgraph relations {\n");   fprintf(f, "    edge[dir=forward,arrowhead=vee];\n");   writeRelations(f, objects, relations);   fprintf(f, "  }\n");   fprintf(f, "}\n");   fclose(f);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -