36 virtual std::string_view KeyView()
const = 0;
38 virtual std::string_view GetDefaultView()
const = 0;
40 virtual std::string Key()
const {
return std::string(KeyView()); }
42 virtual std::vector<std::string> Values()
const = 0;
44 virtual std::string GetDefault()
const {
return std::string(GetDefaultView()); }
46 virtual size_t NumValues()
const = 0;
48 virtual std::string ToString()
const = 0;
50 size_t KeyLength()
const {
return KeyView().length(); }
52 bool operator<(
const DictEntry& that)
const {
return KeyView() < that.KeyView(); }
54 bool operator==(
const DictEntry& that)
const {
return KeyView() == that.KeyView(); }
56 static bool UPtrLessThan(
const std::unique_ptr<DictEntry>& a,
57 const std::unique_ptr<DictEntry>& b) {
62class OPENCC_EXPORT NoValueDictEntry :
public DictEntry {
64 NoValueDictEntry(
const std::string& _key) : key(_key) {}
66 virtual ~NoValueDictEntry() {}
68 std::string Key()
const override {
return key; }
69 std::string_view KeyView()
const override {
return key; }
70 std::string GetDefault()
const override {
return key; }
71 std::string_view GetDefaultView()
const override {
return key; }
73 std::vector<std::string> Values()
const override {
74 return std::vector<std::string>();
77 size_t NumValues()
const override {
return 0; }
79 std::string ToString()
const override {
return key; }
106 StrSingleValueDictEntry(
const std::string& _key,
const std::string& _value)
107 : key(_key), value(_value) {}
109 virtual ~StrSingleValueDictEntry() {}
111 std::string Key()
const override {
return key; }
112 std::string_view KeyView()
const override {
return key; }
114 std::string Value()
const override {
return value; }
115 std::string GetDefault()
const override {
return value; }
116 std::string_view ValueView()
const override {
return value; }
130 StrMultiValueDictEntry(
const std::string& _key,
131 const std::vector<std::string>& _values)
132 : key(_key), values(_values) {}
134 virtual ~StrMultiValueDictEntry() {}
136 std::string Key()
const override {
return key; }
137 std::string_view KeyView()
const override {
return key; }
139 std::string GetDefault()
const override {
140 return values.empty() ? key : values[0];
142 std::string_view GetDefaultView()
const override {
143 return values.empty() ? std::string_view(key) : std::string_view(values[0]);
146 size_t NumValues()
const override {
return values.size(); }
148 std::vector<std::string> Values()
const override {
return values; }
152 std::vector<std::string> values;
157 static DictEntry* New(
const std::string& key) {
161 static DictEntry* New(
const std::string& key,
const std::string& value) {
165 static DictEntry* New(
const std::string& key,
166 const std::vector<std::string>& values) {
167 if (values.size() == 0) {
169 }
else if (values.size() == 1) {
170 return New(key, values.front());
176 if (entry->NumValues() == 0) {
178 }
else if (entry->NumValues() == 1) {
Definition DictEntry.hpp:155
Key-values pair entry.
Definition DictEntry.hpp:32
Definition DictEntry.hpp:123
Definition DictEntry.hpp:62
Definition DictEntry.hpp:85
Definition DictEntry.hpp:128
Definition DictEntry.hpp:104