22 #if defined(QT_CORE_LIB) 24 #include <QtCore/QByteArray> 25 #include <QtCore/QString> 26 #include <QtCore/QUrl> 29 #if !defined(NX_KIT_API) 40 inline bool isAsciiPrintable(
int c)
42 return c >= 32 && c <= 126;
45 inline bool isSpaceOrControlChar(
char c)
48 return (((
unsigned char) c) <= 32) || (c == 127);
60 NX_KIT_API std::string decodeEscapedString(
61 const std::string& s, std::string* outErrorMessage =
nullptr);
70 std::string toString(T value);
75 template<
typename... Args>
76 std::string
format(
const std::string& formatStr, Args... args)
78 const int size = snprintf(
nullptr, 0, formatStr.c_str(), args...) + 1;
81 std::string result(size,
'\0');
82 snprintf(&result[0], size, formatStr.c_str(), args...);
83 result.resize(size - 1);
87 NX_KIT_API
bool fromString(
const std::string& s,
int* value);
88 NX_KIT_API
bool fromString(
const std::string& s,
double* value);
89 NX_KIT_API
bool fromString(
const std::string& s,
float* value);
90 NX_KIT_API
bool fromString(
const std::string& s,
bool* value);
92 NX_KIT_API
void stringReplaceAllChars(std::string* s,
char sample,
char replacement);
93 NX_KIT_API
void stringInsertAfterEach(std::string* s,
char sample,
const char* insertion);
94 NX_KIT_API
void stringReplaceAll(
95 std::string* s,
const std::string& sample,
const std::string& replacement);
98 NX_KIT_API
bool stringStartsWith(
const std::string& s,
const std::string& prefix);
99 NX_KIT_API
bool stringEndsWith(
const std::string& s,
const std::string& suffix);
102 NX_KIT_API
bool stringContains(
const std::string& s,
const std::string& substring);
104 NX_KIT_API std::string trimString(
const std::string& s);
109 constexpr
char kPathSeparator =
120 NX_KIT_API std::string baseName(std::string path);
127 NX_KIT_API std::string absolutePath(
128 const std::string& originDir,
const std::string& path);
133 NX_KIT_API std::string getProcessName();
139 NX_KIT_API
const std::vector<std::string>& getProcessCmdLineArgs();
145 NX_KIT_API std::string getPathToExecutable();
147 NX_KIT_API
bool fileExists(
const char* filename);
156 inline size_t alignUp(
size_t value,
size_t alignment)
160 const size_t remainder = value % alignment;
163 return value + alignment - remainder;
169 return (uint8_t*) (17 +
alignUp((uintptr_t) data, 32));
180 template<
class MallocFunc>
185 const auto ptr = (
char*) mallocFunc(size + alignment +
sizeof(alignment));
189 char*
const alignedPtr = ptr +
sizeof(alignment);
190 const size_t misalignment = alignment - (uintptr_t) alignedPtr % alignment;
191 memcpy(ptr + misalignment, &misalignment,
sizeof(misalignment));
192 return alignedPtr + misalignment;
200 return mallocAligned<>(size, alignment, [](
size_t size) { return ::malloc(size); });
210 template<
class FreeFunc>
214 return freeFunc(ptr);
216 ptr = (
char*) ptr -
sizeof(
size_t);
217 size_t misalignment = 0;
218 memcpy(&misalignment, ptr,
sizeof(misalignment));
219 ptr = (
char*) ptr - misalignment;
229 return freeAligned<>(ptr, [](
void* ptr) { return ::free(ptr); });
236 NX_KIT_API std::string toString(
bool b);
237 NX_KIT_API std::string toString(
const void* ptr);
238 inline std::string toString(
void* ptr) {
return toString(const_cast<const void*>(ptr)); }
239 inline std::string toString(std::nullptr_t ptr) {
return toString((
const void*) ptr); }
240 inline std::string toString(uint8_t i) {
return toString((
int) i); }
241 inline std::string toString(int8_t i) {
return toString((
int) i); }
242 NX_KIT_API std::string toString(
char c);
243 NX_KIT_API std::string toString(
const char* s);
244 inline std::string toString(
char* s) {
return toString(const_cast<const char*>(s)); }
245 NX_KIT_API std::string toString(
wchar_t c);
246 NX_KIT_API std::string toString(
const wchar_t* w);
247 inline std::string toString(
wchar_t* w) {
return toString(const_cast<const wchar_t*>(w)); }
250 NX_KIT_API std::string toString(
const std::string& s);
251 NX_KIT_API std::string toString(
const std::wstring& w);
256 std::string toString(T value)
258 std::ostringstream outputString;
259 outputString << value;
260 return outputString.str();
263 #if defined(QT_CORE_LIB) 265 static inline std::string toString(QByteArray b)
267 return toString(b.toStdString());
270 static inline std::string toString(QString s)
272 return toString(s.toUtf8().constData());
275 static inline std::string toString(QUrl u)
277 return toString(u.toEncoded().toStdString());
280 #endif // defined(QT_CORE_LIB) 283 std::string toString(P* ptr)
285 return toString((
const void*) ptr);
291 NX_KIT_API
bool parseNameValueFile(
292 const std::string& nameValueFilePath,
293 std::map<std::string, std::string>* nameValueMap,
294 const std::string& errorPrefix,
302 NX_KIT_API std::string toUpper(
const std::string& str);
307 NX_KIT_API std::string wideCharToStdString(
const wchar_t* str);
309 #endif // defined(_WIN32) std::string format(const std::string &formatStr, Args... args)
Definition: utils.h:76
size_t alignUp(size_t value, size_t alignment)
Definition: utils.h:156
void * mallocAligned(size_t size, size_t alignment, MallocFunc mallocFunc)
Definition: utils.h:181
Definition: apple_utils.h:6
void freeAligned(void *ptr, FreeFunc freeFunc)
Definition: utils.h:211
uint8_t * misalignedPtr(void *data)
Definition: utils.h:167