18 #if defined(QT_CORE_LIB) 20 #include <QtCore/QByteArray> 21 #include <QtCore/QString> 22 #include <QtCore/QUrl> 25 #if !defined(NX_KIT_API) 36 inline bool isAsciiPrintable(
int c)
38 return c >= 32 && c <= 126;
45 std::string toString(T value);
47 template<
typename... Args>
48 std::string format(
const std::string& formatStr, Args... args)
50 const size_t size = snprintf(
nullptr, 0, formatStr.c_str(), args...) + 1;
53 std::string result(size,
'\0');
54 snprintf(&result[0], size, formatStr.c_str(), args...);
55 result.resize(size - 1);
66 inline size_t alignUp(
size_t value,
size_t alignment)
70 const size_t remainder = value % alignment;
73 return value + alignment - remainder;
79 return (uint8_t*) (17 +
alignUp((uintptr_t) data, 32));
90 template<
class MallocFunc>
91 void*
mallocAligned(
size_t size,
size_t alignment, MallocFunc mallocFunc)
95 void* ptr = mallocFunc(size + alignment +
sizeof(alignment));
99 void* aligned_ptr = (
char*) ptr +
sizeof(alignment);
100 const size_t misalignment = alignment - (((uintptr_t) aligned_ptr) % alignment);
101 memcpy((
char*) ptr + misalignment, &misalignment,
sizeof(misalignment));
102 return (
char*) aligned_ptr + misalignment;
108 return mallocAligned<>(size, alignment, ::malloc);
118 template<
class FreeFunc>
122 return freeFunc(ptr);
124 ptr = (
char*) ptr -
sizeof(
size_t);
125 size_t misalignment = 0;
126 memcpy(&misalignment, ptr,
sizeof(misalignment));
127 ptr = (
char*) ptr - misalignment;
135 return freeAligned<>(ptr, ::free);
142 std::string toString(T value)
144 std::ostringstream outputString;
145 outputString << value;
146 return outputString.str();
149 NX_KIT_API std::string toString(std::string s);
150 NX_KIT_API std::string toString(uint8_t i);
151 NX_KIT_API std::string toString(
char c);
152 NX_KIT_API std::string toString(
const char* s);
153 NX_KIT_API std::string toString(
char* s);
154 NX_KIT_API std::string toString(
const void* ptr);
155 NX_KIT_API std::string toString(
void* ptr);
156 NX_KIT_API std::string toString(std::nullptr_t ptr);
157 NX_KIT_API std::string toString(
bool b);
159 #if defined(QT_CORE_LIB) 161 static inline std::string toString(QByteArray b)
163 return toString(b.toStdString());
166 static inline std::string toString(QString s)
168 return toString(s.toUtf8().constData());
171 static inline std::string toString(QUrl u)
173 return toString(u.toEncoded().toStdString());
176 #endif // defined(QT_CORE_LIB) 179 std::string toString(P* ptr)
181 return toString((
const void*) ptr);
size_t alignUp(size_t value, size_t alignment)
Definition: utils.h:66
uint8_t * misalignedPtr(void *data)
Definition: utils.h:77
void * mallocAligned(size_t size, size_t alignment, MallocFunc mallocFunc)
Definition: utils.h:91
void freeAligned(void *ptr, FreeFunc freeFunc)
Definition: utils.h:119