22 #include "UTF8Util.hpp"
23 #include "Segments.hpp"
35 virtual const char* Key()
const = 0;
37 virtual vector<const char*> Values()
const = 0;
39 virtual const char* GetDefault()
const = 0;
41 virtual size_t NumValues()
const = 0;
43 virtual string ToString()
const = 0;
45 size_t KeyLength()
const {
49 bool operator<(
const DictEntry& that)
const {
50 return strcmp(Key(), that.Key()) < 0;
53 bool operator==(
const DictEntry& that)
const {
54 return strcmp(Key(), that.Key()) == 0;
70 virtual const char* Key()
const {
74 virtual vector<const char*> Values()
const {
75 return vector<const char*>();
78 virtual const char* GetDefault()
const {
82 virtual size_t NumValues()
const {
86 virtual string ToString()
const {
96 virtual const char* Value()
const = 0;
98 virtual vector<const char*> Values()
const {
99 return vector<const char*>{Value()};
102 virtual const char* GetDefault()
const {
106 virtual size_t NumValues()
const {
110 virtual string ToString()
const {
111 return string(Key()) +
"\t" + Value();
118 : key(_key), value(_value) {
124 virtual const char* Key()
const {
128 virtual const char* Value()
const {
129 return value.c_str();
139 virtual const char* GetDefault()
const {
140 if (NumValues() > 0) {
141 return Values().at(0);
147 virtual string ToString()
const;
153 : key(_key), values(_values) {
158 values.reserve(_values.size());
159 for (
const char* str : _values) {
160 values.push_back(str);
167 virtual const char* Key()
const {
171 size_t NumValues()
const {
172 return values.size();
175 vector<const char*> Values()
const {
176 vector<const char*> values;
177 for (
const string& value : this->values) {
178 values.push_back(value.c_str());
185 vector<string> values;
190 PtrDictEntry(
const char* _key,
const vector<const char*>& _values)
191 : key(_key), values(_values) {
197 virtual const char* Key()
const {
201 size_t NumValues()
const {
202 return values.size();
205 vector<const char*> Values()
const {
211 vector<const char*> values;
216 static DictEntry* New(
const string& key) {
220 static DictEntry* New(
const string& key,
const string& value) {
224 static DictEntry* New(
const string& key,
const vector<string>& values) {
229 if (entry->NumValues() == 0) {
231 }
else if (entry->NumValues() == 1) {
Definition: DictEntry.hpp:137
Definition: DictEntry.hpp:188
Key-values pair entry.
Definition: DictEntry.hpp:30
Definition: DictEntry.hpp:150
Definition: BinaryDict.hpp:24
Definition: DictEntry.hpp:214
Definition: DictEntry.hpp:115
Definition: DictEntry.hpp:94
Definition: DictEntry.hpp:62