20 #if defined(QT_CORE_LIB) 22 #include <QtCore/QByteArray> 23 #include <QtCore/QString> 24 #include <QtCore/QUrl> 27 #if !defined(NX_KIT_API) 38 inline bool isAsciiPrintable(
int c)
40 return c >= 32 && c <= 126;
47 NX_KIT_API std::string baseName(std::string path);
52 NX_KIT_API std::string getProcessName();
60 std::string toString(T value);
62 template<
typename... Args>
63 std::string format(
const std::string& formatStr, Args... args)
65 const size_t size = snprintf(
nullptr, 0, formatStr.c_str(), args...) + 1;
68 std::string result(size,
'\0');
69 snprintf(&result[0], size, formatStr.c_str(), args...);
70 result.resize(size - 1);
74 NX_KIT_API
bool fromString(
const std::string& s,
int* value);
75 NX_KIT_API
bool fromString(
const std::string& s,
double* value);
76 NX_KIT_API
bool fromString(
const std::string& s,
float* value);
78 void NX_KIT_API stringReplaceAllChars(std::string* s,
char sample,
char replacement);
79 void NX_KIT_API stringInsertAfterEach(std::string* s,
char sample,
const char* insertion);
88 NX_KIT_API
const std::vector<std::string>& getProcessCmdLineArgs();
97 inline size_t alignUp(
size_t value,
size_t alignment)
101 const size_t remainder = value % alignment;
104 return value + alignment - remainder;
110 return (uint8_t*) (17 +
alignUp((uintptr_t) data, 32));
121 template<
class MallocFunc>
126 void* ptr = mallocFunc(size + alignment +
sizeof(alignment));
130 void* aligned_ptr = (
char*) ptr +
sizeof(alignment);
131 const size_t misalignment = alignment - (((uintptr_t) aligned_ptr) % alignment);
132 memcpy((
char*) ptr + misalignment, &misalignment,
sizeof(misalignment));
133 return (
char*) aligned_ptr + misalignment;
141 return mallocAligned<>(size, alignment, [](
size_t size) { return ::malloc(size); });
151 template<
class FreeFunc>
155 return freeFunc(ptr);
157 ptr = (
char*) ptr -
sizeof(
size_t);
158 size_t misalignment = 0;
159 memcpy(&misalignment, ptr,
sizeof(misalignment));
160 ptr = (
char*) ptr - misalignment;
170 return freeAligned<>(ptr, [](
void* ptr) { return ::free(ptr); });
177 NX_KIT_API std::string toString(
bool b);
178 NX_KIT_API std::string toString(
const void* ptr);
179 inline std::string toString(
void* ptr) {
return toString(const_cast<const void*>(ptr)); }
180 inline std::string toString(std::nullptr_t ptr) {
return toString((
const void*) ptr); }
181 inline std::string toString(uint8_t i) {
return toString((
int) i); }
182 inline std::string toString(int8_t i) {
return toString((
int) i); }
183 NX_KIT_API std::string toString(
char c);
184 NX_KIT_API std::string toString(
const char* s);
185 inline std::string toString(
char* s) {
return toString(const_cast<const char*>(s)); }
186 inline std::string toString(
const std::string& s) {
return toString(s.c_str()); }
187 NX_KIT_API std::string toString(
wchar_t c);
188 NX_KIT_API std::string toString(
const wchar_t* w);
189 inline std::string toString(
wchar_t* w) {
return toString(const_cast<const wchar_t*>(w)); }
190 inline std::string toString(
const std::wstring& w) {
return toString(w.c_str()); }
194 std::string toString(T value)
196 std::ostringstream outputString;
197 outputString << value;
198 return outputString.str();
201 #if defined(QT_CORE_LIB) 203 static inline std::string toString(QByteArray b)
205 return toString(b.toStdString());
208 static inline std::string toString(QString s)
210 return toString(s.toUtf8().constData());
213 static inline std::string toString(QUrl u)
215 return toString(u.toEncoded().toStdString());
218 #endif // defined(QT_CORE_LIB) 221 std::string toString(P* ptr)
223 return toString((
const void*) ptr);
size_t alignUp(size_t value, size_t alignment)
Definition: utils.h:97
void * mallocAligned(size_t size, size_t alignment, MallocFunc mallocFunc)
Definition: utils.h:122
Definition: apple_utils.h:6
void freeAligned(void *ptr, FreeFunc freeFunc)
Definition: utils.h:152
uint8_t * misalignedPtr(void *data)
Definition: utils.h:108