22 #include "UTF8Util.hpp" 23 #include "Segments.hpp" 34 virtual const char* Key()
const = 0;
36 virtual vector<const char*> Values()
const = 0;
38 virtual const char* GetDefault()
const = 0;
40 virtual size_t NumValues()
const = 0;
42 virtual string ToString()
const = 0;
44 size_t KeyLength()
const {
return strlen(Key()); }
46 bool operator<(
const DictEntry& that)
const {
47 return strcmp(Key(), that.Key()) < 0;
50 bool operator==(
const DictEntry& that)
const {
51 return strcmp(Key(), that.Key()) == 0;
65 virtual const char* Key()
const {
return key.c_str(); }
67 virtual vector<const char*> Values()
const {
return vector<const char*>(); }
69 virtual const char* GetDefault()
const {
return Key(); }
71 virtual size_t NumValues()
const {
return 0; }
73 virtual string ToString()
const {
return key; }
81 virtual const char* Value()
const = 0;
83 virtual vector<const char*> Values()
const {
84 return vector<const char*>{Value()};
87 virtual const char* GetDefault()
const {
return Value(); }
89 virtual size_t NumValues()
const {
return 1; }
91 virtual string ToString()
const {
return string(Key()) +
"\t" + Value(); }
97 : key(_key), value(_value) {}
101 virtual const char* Key()
const {
return key.c_str(); }
103 virtual const char* Value()
const {
return value.c_str(); }
112 virtual const char* GetDefault()
const {
113 if (NumValues() > 0) {
114 return Values().at(0);
120 virtual string ToString()
const;
126 : key(_key), values(_values) {}
130 values.reserve(_values.size());
131 for (
const char* str : _values) {
132 values.push_back(str);
138 virtual const char* Key()
const {
return key.c_str(); }
140 size_t NumValues()
const {
return values.size(); }
142 vector<const char*> Values()
const {
143 vector<const char*> values;
144 for (
const string& value : this->values) {
145 values.push_back(value.c_str());
152 vector<string> values;
157 PtrDictEntry(
const char* _key,
const vector<const char*>& _values)
158 : key(_key), values(_values) {}
162 virtual const char* Key()
const {
return key; }
164 size_t NumValues()
const {
return values.size(); }
166 vector<const char*> Values()
const {
return values; }
170 vector<const char*> values;
177 static DictEntry* New(
const string& key,
const string& value) {
181 static DictEntry* New(
const string& key,
const vector<string>& values) {
186 if (entry->NumValues() == 0) {
188 }
else if (entry->NumValues() == 1) {
Definition: DictEntry.hpp:110
Definition: DictEntry.hpp:155
Key-values pair entry.
Definition: DictEntry.hpp:30
Definition: DictEntry.hpp:123
Definition: BinaryDict.hpp:24
Definition: DictEntry.hpp:173
Definition: DictEntry.hpp:94
Definition: DictEntry.hpp:79
Definition: DictEntry.hpp:59