Pass directly the StringView to option_add and let it do the option parsing
This commit is contained in:
parent
5b9d30c088
commit
70250fc1e3
|
@ -135,9 +135,7 @@ public:
|
||||||
}
|
}
|
||||||
void add_from_string(StringView str) override
|
void add_from_string(StringView str) override
|
||||||
{
|
{
|
||||||
T val;
|
if (option_add(m_value, str))
|
||||||
option_from_string(str, val);
|
|
||||||
if (option_add(m_value, val))
|
|
||||||
m_manager.on_option_changed(*this);
|
m_manager.on_option_changed(*this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -18,11 +18,16 @@ namespace Kakoune
|
||||||
|
|
||||||
inline String option_to_string(StringView opt) { return opt.str(); }
|
inline String option_to_string(StringView opt) { return opt.str(); }
|
||||||
inline void option_from_string(StringView str, String& opt) { opt = str.str(); }
|
inline void option_from_string(StringView str, String& opt) { opt = str.str(); }
|
||||||
inline bool option_add(String& opt, const String& val) { opt += val; return not val.empty(); }
|
inline bool option_add(String& opt, StringView val) { opt += val; return not val.empty(); }
|
||||||
|
|
||||||
inline String option_to_string(int opt) { return to_string(opt); }
|
inline String option_to_string(int opt) { return to_string(opt); }
|
||||||
inline void option_from_string(StringView str, int& opt) { opt = str_to_int(str); }
|
inline void option_from_string(StringView str, int& opt) { opt = str_to_int(str); }
|
||||||
inline bool option_add(int& opt, int val) { opt += val; return val != 0; }
|
inline bool option_add(int& opt, StringView str)
|
||||||
|
{
|
||||||
|
auto val = str_to_int(str);
|
||||||
|
opt += val;
|
||||||
|
return val != 0;
|
||||||
|
}
|
||||||
|
|
||||||
inline String option_to_string(bool opt) { return opt ? "true" : "false"; }
|
inline String option_to_string(bool opt) { return opt ? "true" : "false"; }
|
||||||
inline void option_from_string(StringView str, bool& opt)
|
inline void option_from_string(StringView str, bool& opt)
|
||||||
|
@ -64,9 +69,13 @@ void option_from_string(StringView str, Vector<T, domain>& opt)
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename T, MemoryDomain domain>
|
template<typename T, MemoryDomain domain>
|
||||||
bool option_add(Vector<T, domain>& opt, const Vector<T, domain>& vec)
|
bool option_add(Vector<T, domain>& opt, StringView str)
|
||||||
{
|
{
|
||||||
std::copy(vec.begin(), vec.end(), back_inserter(opt));
|
Vector<T, domain> vec;
|
||||||
|
option_from_string(str, vec);
|
||||||
|
std::copy(std::make_move_iterator(vec.begin()),
|
||||||
|
std::make_move_iterator(vec.end()),
|
||||||
|
back_inserter(opt));
|
||||||
return not vec.empty();
|
return not vec.empty();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -165,14 +174,15 @@ inline void option_from_string(StringView str, StronglyTypedNumber<RealType, Val
|
||||||
|
|
||||||
template<typename RealType, typename ValueType>
|
template<typename RealType, typename ValueType>
|
||||||
inline bool option_add(StronglyTypedNumber<RealType, ValueType>& opt,
|
inline bool option_add(StronglyTypedNumber<RealType, ValueType>& opt,
|
||||||
StronglyTypedNumber<RealType, ValueType> val)
|
StringView str)
|
||||||
{
|
{
|
||||||
|
int val = str_to_int(str);
|
||||||
opt += val;
|
opt += val;
|
||||||
return val != 0;
|
return val != 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
bool option_add(T&, const T&)
|
bool option_add(T&, StringView str)
|
||||||
{
|
{
|
||||||
throw runtime_error("no add operation supported for this option type");
|
throw runtime_error("no add operation supported for this option type");
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user