10 #define FMT_API BASE_EXPORT 11 #define FMT_EXTERN_TEMPLATE_API BASE_EXPORT 13 #include <codeanalysis\warnings.h> 15 #pragma warning ( disable : ALL_CODE_ANALYSIS_WARNINGS ) 18 # pragma warning(disable:177) 19 # pragma warning(disable:280) // selector expression is constant 21 #include "base/fmt/format.h" 23 using wstring = std::wstring;
24 using string = std::string;
25 using String = std::wstring;
32 BASE_EXPORT bool isBool(
const string &in,
bool *b=
nullptr,
const string &out=
"on,off,true,false,yes,no");
34 inline int32 toInt(
const string &in) { int32 ret(0);
isInt(in, &ret);
return ret; }
35 inline uint32
toUInt(
const string &in) { uint32 ret(0);
isUInt(in, &ret);
return ret; }
36 inline int64 toLong(
const string &in) { int64 ret(0);
isLong(in, &ret);
return ret; };
37 inline uint64
toULong(
const string &in) { uint64 ret(0);
isULong(in, &ret);
return ret; };
38 inline double toDouble(
const string &in) {
double ret(0);
isDouble(in, &ret);
return ret; };
39 inline bool toBool(
const string &in,
const string &out =
"on,off,true,false,yes,no") {
bool b{
false};
isBool(in, &b, out);
return b; }
43 using std::vector<string>::vector;
46 StringList(std::initializer_list<string> list) : std::vector<string>(list) {}
48 StringList(
const std::vector<string> &v) : std::vector<string>(v) {}
50 StringList(std::vector<string> &&v) noexcept : std::vector<string>(std::move(v)) {}
52 const StringList &operator=(
const StringList &in) { std::vector<string>::operator=(in);
return *
this; }
54 const StringList &operator+=(
const string &s) { push_back(s);
return *
this; }
55 const StringList &operator+=(
const std::vector<string> &v) {
for (
auto &s : v) push_back(s);
return *
this; }
56 const StringList &operator<<(
const string &s) {
return operator+=(s); }
62 BASE_EXPORT std::wstring towstring(
const string &s);
63 BASE_EXPORT int32 caseInsensitiveCompare(
const string &s1,
const string &s2);
66 BASE_EXPORT string join(
const std::vector<string> &s,
const string &sep);
67 BASE_EXPORT std::vector<string> split(
const string &s,
const string &sep,
bool keepEmptyParts=
false);
73 bool operator()(
const string &left,
const string &right)
const {
74 return caseInsensitiveCompare(left,right) < 0;
79 bool operator()(
const string &left,
const string &right)
const {
80 return caseInsensitiveCompare(left,right) == 0;
85 uint32 operator()(
const string &in)
const {
89 for (
size_t i = 0; i<len; ++i)
90 h = 31 * h + std::toupper(p[i]);
98 #include <unordered_map> 100 #include <unordered_set> 102 template <
typename T>
using StringMap = std::map<string, T, StringCILess>;
104 template <
typename T>
using StringHashMap = std::unordered_map<string, T, StringCIHash, StringCIEqual>;
106 template <
typename T>
using StringSet = std::set<string, T, StringCILess>;
108 template <
typename T>
using StringHashSet = std::unordered_set<string, T, StringCIHash, StringCIEqual>;
Definition: basestring.h:71
Definition: basestring.h:77
BASE_EXPORT bool isDouble(const string &in, double *d=nullptr)
Definition: basestring.cpp:71
BASE_EXPORT bool isLong(const string &in, int64 *l=nullptr)
Definition: basestring.cpp:41
double toDouble(const string &in)
Definition: basestring.h:38
bool isInt(const QString &in, int *i)
Definition: baseqstring.cpp:298
#define BASE_EXPORT
Definition: basedef.h:21
uint32 toUInt(const string &in)
Definition: basestring.h:35
BASE_EXPORT bool isUInt(const string &in, uint32 *u=nullptr)
Definition: basestring.cpp:26
bool toBool(const string &in, const string &out="on,off,true,false,yes,no")
Definition: basestring.h:39
Definition: basestring.h:83
Definition: basestring.h:41
Base type definitions - if QT is not in use.
bool isBool(const QString &in, bool *b, const QString &out)
Definition: baseqstring.cpp:284
uint64 toULong(const string &in)
Definition: basestring.h:37
BASE_EXPORT bool isULong(const string &in, uint64 *ul=nullptr)
Definition: basestring.cpp:56