#include #include #include #include #include #include #include"json.h" #include"schemaparser.h" #include // data type definitions from sdl using Namespace = std::string; using Key = std::string; using Data = std::vector; using DataMap = std::map; using Keys = std::set; using namespace std; using namespace mc_schema; vector packData(const char *d, int len){ const uint8_t *d8 = (const uint8_t *)d; return Data(d8, d8+len+1); } int main(int argc, char **argv){ Namespace ns("mcnib"); string directory = "."; if(argc>1){ directory = argv[1]; } string inflnm = directory + "/" + string("nib.json"); ifstream infl(inflnm); if(!infl){ cerr << "Error, can't open " << inflnm << endl; exit(1); } string line; string nib_str; while(getline(infl, line)){ nib_str += line; } infl.close(); mc_schemas *mcs = new_mc_schemas(nib_str); if(mcs->has_errors()){ // ensure its a good schema fprintf(stderr, "Errors loading the schemas:\n%s\n",mcs->get_errors().c_str()); exit(1); } string streams_json = "["; vector streams = mcs->get_streams(); for(int i=0;i0) streams_json += ", "; streams_json += "\""+streams[i]+"\""; } streams_json += "]"; // --------------------------------------------- std::unique_ptr sdl(shareddatalayer::SyncStorage::create()); DataMap D; // -------------------------------------------- vector schema_buf = packData(nib_str.c_str(), nib_str.size()); D["_schema"] = schema_buf; vector streams_buf = packData(streams_json.c_str(), streams_json.size()); D["_schema_streams"] = streams_buf; sdl->set(ns, D); }