22#include "Segments.hpp"
23#include "UTF8Util.hpp"
34 virtual std::string Key()
const = 0;
36 virtual std::vector<std::string> Values()
const = 0;
38 virtual std::string GetDefault()
const = 0;
40 virtual size_t NumValues()
const = 0;
42 virtual std::string ToString()
const = 0;
44 size_t KeyLength()
const {
return Key().length(); }
46 bool operator<(
const DictEntry& that)
const {
return Key() < that.Key(); }
48 bool operator==(
const DictEntry& that)
const {
return Key() == that.Key(); }
50 static bool UPtrLessThan(
const std::unique_ptr<DictEntry>& a,
51 const std::unique_ptr<DictEntry>& b) {
62 virtual std::string Key()
const {
return key; }
64 virtual std::vector<std::string> Values()
const {
65 return std::vector<std::string>();
68 virtual std::string GetDefault()
const {
return key; }
70 virtual size_t NumValues()
const {
return 0; }
72 virtual std::string ToString()
const {
return key; }
80 virtual std::string Value()
const = 0;
82 virtual std::vector<std::string> Values()
const {
83 return std::vector<std::string>{Value()};
86 virtual std::string GetDefault()
const {
return Value(); }
88 virtual size_t NumValues()
const {
return 1; }
90 virtual std::string ToString()
const {
91 return std::string(Key()) +
"\t" + Value();
98 : key(_key), value(_value) {}
102 virtual std::string Key()
const {
return key; }
104 virtual std::string Value()
const {
return value; }
113 virtual std::string GetDefault()
const {
114 if (NumValues() > 0) {
115 return Values().at(0);
121 virtual std::string ToString()
const;
127 const std::vector<std::string>& _values)
128 : key(_key), values(_values) {}
132 virtual std::string Key()
const {
return key; }
134 size_t NumValues()
const {
return values.size(); }
136 std::vector<std::string> Values()
const {
return values; }
140 std::vector<std::string> values;
145 static DictEntry* New(
const std::string& key) {
149 static DictEntry* New(
const std::string& key,
const std::string& value) {
153 static DictEntry* New(
const std::string& key,
154 const std::vector<std::string>& values) {
155 if (values.size() == 0) {
157 }
else if (values.size() == 1) {
158 return New(key, values.front());
164 if (entry->NumValues() == 0) {
166 }
else if (entry->NumValues() == 1) {
Definition: DictEntry.hpp:143
Key-values pair entry.
Definition: DictEntry.hpp:30
Definition: DictEntry.hpp:111
Definition: DictEntry.hpp:56
Definition: DictEntry.hpp:78
Definition: DictEntry.hpp:124
Definition: DictEntry.hpp:95