21 vector<string> fnames;
22 map<string, int> Name2Id;
23 map<int, string> Id2Name;
24 map<int, string> Id2LongestName;
25 map<int, vector<string>> Id2Names;
26 map<pair<int, int>,
int> MemberInSet;
27 map<int, vector<int>> Set2Members;
28 map<int, vector<int>> Member2Sets;
30 unordered_set<string> section_name;
32 void clear() { fnames.clear(); Name2Id.clear(); MemberInSet.clear(); Set2Members.clear(); }
33 int read(
const string &fname);
34 int read(vector<string> &dfnames);
35 int read(
string path, vector<string> &dfnames);
36 int id(
const string &name)
const;
37 int id_list(vector<string> &names, vector<int> &ids);
40 int is_in_set(
int member_id,
int set_id);
41 int is_in_set(
const string& member,
const string& set_name);
42 int is_in_set(
int member_id,
const string &set_name);
43 int is_in_set(
const string& member,
int set_id);
45 int prep_sets_lookup_table(
const vector<string> &set_names, vector<char> &lut)
const;
46 int prep_sets_indexed_lookup_table(
const vector<string> &set_names, vector<unsigned char> &lut);
48 void get_set_members(
const string &set, vector<int> &members);
49 void get_set_members(
int set_id, vector<int> &members);
50 void get_member_sets(
const string &member, vector<int> &sets);
51 void get_member_sets(
int member_id, vector<int> &sets);
54 void get_members_to_all_sets(vector<int> &members, unordered_map<
int, vector<int>> &Member2AllSets);
55 void get_members_to_all_sets(vector<int> &members, vector<int> &sets, unordered_map<
int, vector<int>> &Member2AllSets);
57 void get_regex_ids(
string regex_s, vector<int> &ids);
58 void get_regex_names(
string regex_s, vector<string> &names);
60 int add_def(
const string &fname,
const string &name,
int id);
61 int add_set(
const string &fname,
const string &member_name,
const string &set_name);
64 void push_new_def(
string name,
int id);
65 void push_new_set(
int set_id,
int member_id);
70 int write_to_file(
string fout,
int mode = 1);
73 map<string, int> used;
93 vector<string> sections_names;
94 vector<vector<string>> section_fnames;
95 vector<MedDictionary> dicts;
96 map<string, int> SectionName2Id;
102 void clear() { sections_names.clear(); section_fnames.clear(); dicts.clear(); SectionName2Id.clear(); default_section = 0; curr_section = 0; init(); }
105 int set_curr_dict(
int id) { curr_section = id;
return 0; }
106 int set_curr_dict(
const string name) { curr_section = SectionName2Id[name];
return 0; }
107 int reset() { curr_section = default_section;
return 0; }
111 sections_names.push_back(
"DEFAULT"); section_fnames.push_back(vector<string>());
112 dicts.resize(1); SectionName2Id[
"DEFAULT"] = 0;
113 default_section = 0; curr_section = 0; read_state = 0;
116 int read(
const string &fname);
117 int read(vector<string> &dfnames);
118 int read(
string path, vector<string> &dfnames);
126 MedDictionary *dict(
int section_id) {
return &dicts[section_id]; }
128 int section_id(
const string &name) {
if (SectionName2Id.find(name) == SectionName2Id.end())
return 0;
else return SectionName2Id[name]; }
131 int id(
int section_id,
const string &name) {
return dicts[section_id].id(name); }
132 int get_id_or_throw(
int section_id,
const string &name) {
int v = dicts[section_id].id(name);
if (v < 0)
throw invalid_argument(name);
else return v; }
133 int id_list(
int section_id, vector<string> &names, vector<int> &ids) {
return dicts[section_id].id_list(names, ids); }
134 string name(
int section_id,
int id) {
return dicts[section_id].name(
id); }
136 int is_in_set(
int section_id,
int member_id,
int set_id) {
return dicts[section_id].is_in_set(member_id, set_id); }
137 int is_in_set(
int section_id,
const string& member,
const string& set_name) {
return dicts[section_id].is_in_set(member, set_name); }
138 int is_in_set(
int section_id,
int member_id,
const string &set_name) {
return dicts[section_id].is_in_set(member_id, set_name); }
139 int is_in_set(
int section_id,
const string& member,
int set_id) {
return dicts[section_id].is_in_set(member, set_id); }
141 void get_set_members(
int section_id,
const string &set, vector<int> &members) {
return dicts[section_id].get_set_members(set, members); }
142 void get_set_members(
int section_id,
int set_id, vector<int> &members) {
return dicts[section_id].get_set_members(set_id, members); }
143 void get_member_sets(
int section_id,
const string &member, vector<int> &sets) {
return dicts[section_id].get_member_sets(member, sets); }
144 void get_member_sets(
int section_id,
int member_id, vector<int> &sets) {
return dicts[section_id].get_member_sets(member_id, sets); }
147 int id(
const string &name) {
return id(curr_section, name); }
148 int id_list(vector<string> &names, vector<int> &ids) {
return id_list(curr_section, names, ids); }
149 string name(
int id) {
return name(curr_section,
id); }
151 int is_in_set(
int member_id,
int set_id) {
return is_in_set(curr_section, member_id, set_id); }
152 int is_in_set(
const string& member,
const string& set_name) {
return is_in_set(curr_section, member, set_name); }
153 int is_in_set(
int member_id,
const string &set_name) {
return is_in_set(curr_section, member_id, set_name); }
154 int is_in_set(
const string& member,
int set_id) {
return is_in_set(curr_section, member, set_id); }
156 void get_set_members(
const string &set, vector<int> &members) {
return get_set_members(curr_section, set, members); }
157 void get_set_members(
int set_id, vector<int> &members) {
return get_set_members(curr_section, set_id, members); }
158 void get_member_sets(
const string &member, vector<int> &sets) {
return get_member_sets(curr_section, member, sets); }
159 void get_member_sets(
int member_id, vector<int> &sets) {
return get_member_sets(curr_section, member_id, sets); }
162 int prep_sets_lookup_table(
int section_id,
const vector<string> &set_names, vector<char> &lut) {
return dicts[section_id].prep_sets_lookup_table(set_names, lut); }
163 int prep_sets_indexed_lookup_table(
int section_id,
const vector<string> &set_names, vector<unsigned char> &lut) {
return dicts[section_id].prep_sets_indexed_lookup_table(set_names, lut); }
166 void add_section(
string new_section_name);
167 void connect_to_section(
string new_section_name,
int section_id);
172 int add_json(json &js);
173 int add_json_simple_format(json &js);