20 vector<string> fnames;
21 map<string, int> Name2Id;
22 map<int, string> Id2Name;
23 map<int, string> Id2LongestName;
24 map<int, vector<string>> Id2Names;
25 map<pair<int, int>,
int> MemberInSet;
26 map<int, vector<int>> Set2Members;
27 map<int, vector<int>> Member2Sets;
29 unordered_set<string> section_name;
31 void clear() { fnames.clear(); Name2Id.clear(); MemberInSet.clear(); Set2Members.clear(); }
32 int read(
const string &fname);
33 int read(vector<string> &dfnames);
34 int read(
string path, vector<string> &dfnames);
35 int id(
const string &name)
const;
36 int id_list(vector<string> &names, vector<int> &ids);
39 int is_in_set(
int member_id,
int set_id);
40 int is_in_set(
const string& member,
const string& set_name);
41 int is_in_set(
int member_id,
const string &set_name);
42 int is_in_set(
const string& member,
int set_id);
44 int prep_sets_lookup_table(
const vector<string> &set_names, vector<char> &lut)
const;
45 int prep_sets_indexed_lookup_table(
const vector<string> &set_names, vector<unsigned char> &lut);
47 void get_set_members(
const string &set, vector<int> &members);
48 void get_set_members(
int set_id, vector<int> &members);
49 void get_member_sets(
const string &member, vector<int> &sets);
50 void get_member_sets(
int member_id, vector<int> &sets);
53 void get_members_to_all_sets(vector<int> &members, unordered_map<
int, vector<int>> &Member2AllSets);
54 void get_members_to_all_sets(vector<int> &members, vector<int> &sets, unordered_map<
int, vector<int>> &Member2AllSets);
56 void get_regex_ids(
string regex_s, vector<int> &ids);
57 void get_regex_names(
string regex_s, vector<string> &names);
59 int add_def(
const string &fname,
const string &name,
int id);
60 int add_set(
const string &fname,
const string &member_name,
const string &set_name);
63 void push_new_def(
string name,
int id);
64 void push_new_set(
int set_id,
int member_id);
69 int write_to_file(
string fout,
int mode = 1);
72 map<string, int> used;
92 vector<string> sections_names;
93 vector<vector<string>> section_fnames;
94 vector<MedDictionary> dicts;
95 map<string, int> SectionName2Id;
101 void clear() { sections_names.clear(); section_fnames.clear(); dicts.clear(); SectionName2Id.clear(); default_section = 0; curr_section = 0; init(); }
104 int set_curr_dict(
int id) { curr_section = id;
return 0; }
105 int set_curr_dict(
const string name) { curr_section = SectionName2Id[name];
return 0; }
106 int reset() { curr_section = default_section;
return 0; }
110 sections_names.push_back(
"DEFAULT"); section_fnames.push_back(vector<string>());
111 dicts.resize(1); SectionName2Id[
"DEFAULT"] = 0;
112 default_section = 0; curr_section = 0; read_state = 0;
115 int read(
const string &fname);
116 int read(vector<string> &dfnames);
117 int read(
string path, vector<string> &dfnames);
125 MedDictionary *dict(
int section_id) {
return &dicts[section_id]; }
127 int section_id(
const string &name) {
if (SectionName2Id.find(name) == SectionName2Id.end())
return 0;
else return SectionName2Id[name]; }
130 int id(
int section_id,
const string &name) {
return dicts[section_id].id(name); }
131 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; }
132 int id_list(
int section_id, vector<string> &names, vector<int> &ids) {
return dicts[section_id].id_list(names, ids); }
133 string name(
int section_id,
int id) {
return dicts[section_id].name(
id); }
135 int is_in_set(
int section_id,
int member_id,
int set_id) {
return dicts[section_id].is_in_set(member_id, set_id); }
136 int is_in_set(
int section_id,
const string& member,
const string& set_name) {
return dicts[section_id].is_in_set(member, set_name); }
137 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); }
138 int is_in_set(
int section_id,
const string& member,
int set_id) {
return dicts[section_id].is_in_set(member, set_id); }
140 void get_set_members(
int section_id,
const string &set, vector<int> &members) {
return dicts[section_id].get_set_members(set, members); }
141 void get_set_members(
int section_id,
int set_id, vector<int> &members) {
return dicts[section_id].get_set_members(set_id, members); }
142 void get_member_sets(
int section_id,
const string &member, vector<int> &sets) {
return dicts[section_id].get_member_sets(member, sets); }
143 void get_member_sets(
int section_id,
int member_id, vector<int> &sets) {
return dicts[section_id].get_member_sets(member_id, sets); }
146 int id(
const string &name) {
return id(curr_section, name); }
147 int id_list(vector<string> &names, vector<int> &ids) {
return id_list(curr_section, names, ids); }
148 string name(
int id) {
return name(curr_section,
id); }
150 int is_in_set(
int member_id,
int set_id) {
return is_in_set(curr_section, member_id, set_id); }
151 int is_in_set(
const string& member,
const string& set_name) {
return is_in_set(curr_section, member, set_name); }
152 int is_in_set(
int member_id,
const string &set_name) {
return is_in_set(curr_section, member_id, set_name); }
153 int is_in_set(
const string& member,
int set_id) {
return is_in_set(curr_section, member, set_id); }
155 void get_set_members(
const string &set, vector<int> &members) {
return get_set_members(curr_section, set, members); }
156 void get_set_members(
int set_id, vector<int> &members) {
return get_set_members(curr_section, set_id, members); }
157 void get_member_sets(
const string &member, vector<int> &sets) {
return get_member_sets(curr_section, member, sets); }
158 void get_member_sets(
int member_id, vector<int> &sets) {
return get_member_sets(curr_section, member_id, sets); }
161 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); }
162 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); }
165 void add_section(
string new_section_name);
166 void connect_to_section(
string new_section_name,
int section_id);
171 int add_json(json &js);
172 int add_json_simple_format(json &js);