overloads that work

pull/2673/head
Bailey Chittle 3 years ago
parent 8360c8ae7e
commit 037f083cbe

@ -17,52 +17,94 @@ struct attr
std::string value; std::string value;
public: public:
attr(std::initializer_list<string_view_t> l) // string overloads
{
if (l.size() != 2)
return; // throw exception if not kv pair?
scramble(key, *l.begin());
scramble(value, *(l.begin() + 1));
}
attr(string_view_t k, bool v)
: value{v ? "true" : "false"}
{
key = std::string{k.data(), k.size()};
}
attr(string_view_t k, string_view_t v) attr(string_view_t k, string_view_t v)
{ {
key = std::string{k.data(), k.size()}; scramble(key, k);
value = std::string{v.data(), v.size()}; scramble(value, v);
} }
attr(std::string k, std::string v) // does not convert to string_view when using initializer list constructors...
: key{k} // so we have an overload for raw c-strings
, value{v} attr(const char* k, const char* v)
: attr{string_view_t{k}, string_view_t{v}}
{} {}
attr(std::string const& k, std::string const& v)
: attr{string_view_t{k}, string_view_t{v}}
{}
attr(std::string&& k, std::string&& v)
: attr{string_view_t{k}, string_view_t{v}}
{}
// integer overloads
attr(string_view_t k, long v) attr(string_view_t k, long v)
: value{std::to_string(v)} : value{std::to_string(v)}
{ {
key = std::string{k.data(), k.size()}; scramble(key, k);
} }
attr(string_view_t k, long long v) attr(string_view_t k, long long v)
: value{std::to_string(v)} : value{std::to_string(v)}
{ {
key = std::string{k.data(), k.size()}; scramble(key, k);
} }
attr(string_view_t k, unsigned long v) attr(string_view_t k, unsigned long v)
: value{std::to_string(v)} : value{std::to_string(v)}
{ {
key = std::string{k.data(), k.size()}; scramble(key, k);
} }
attr(string_view_t k, unsigned long long v) attr(string_view_t k, unsigned long long v)
: value{std::to_string(v)} : value{std::to_string(v)}
{ {
key = std::string{k.data(), k.size()}; scramble(key, k);
} }
attr(string_view_t k, bool v)
: value{v ? "true" : "false"}
{
scramble(key, k);
}
attr(std::string const& k, long v)
: attr{string_view_t{k}, v}
{}
attr(std::string const& k, long long v)
: attr{string_view_t{k}, v}
{}
attr(std::string const& k, unsigned long v)
: attr{string_view_t{k}, v}
{}
attr(std::string const& k, unsigned long long v)
: attr{string_view_t{k}, v}
{}
attr(std::string const& k, bool v)
: attr{string_view_t{k}, v}
{}
attr(std::string&& k, long v)
: attr{string_view_t{k}, v}
{}
attr(std::string&& k, long long v)
: attr{string_view_t{k}, v}
{}
attr(std::string&& k, unsigned long v)
: attr{string_view_t{k}, v}
{}
attr(std::string&& k, unsigned long long v)
: attr{string_view_t{k}, v}
{}
attr(std::string&& k, bool v)
: attr{string_view_t{k}, v}
{}
}; };
} // namespace details } // namespace details

Loading…
Cancel
Save