diff --git a/demo/common/overview.c b/demo/common/overview.c index 87d5f686f..7ec983037 100644 --- a/demo/common/overview.c +++ b/demo/common/overview.c @@ -444,7 +444,7 @@ overview(struct nk_context *ctx) } /* progressbar combobox */ sum = prog_a + prog_b + prog_c + prog_d; - sprintf(buffer, "%lu", sum); + sprintf(buffer, "%" NK_FMT_SIZE, sum); if (nk_combo_begin_label(ctx, buffer, nk_vec2(200,200))) { nk_layout_row_dynamic(ctx, 30, 1); nk_progress(ctx, &prog_a, 100, NK_MODIFIABLE); @@ -456,7 +456,7 @@ overview(struct nk_context *ctx) /* checkbox combobox */ sum = (size_t)(check_values[0] + check_values[1] + check_values[2] + check_values[3] + check_values[4]); - sprintf(buffer, "%lu", sum); + sprintf(buffer, "%" NK_FMT_SIZE, sum); if (nk_combo_begin_label(ctx, buffer, nk_vec2(200,200))) { nk_layout_row_dynamic(ctx, 30, 1); nk_checkbox_label(ctx, weapons[0], &check_values[0]); diff --git a/nuklear.h b/nuklear.h index ed61bbd85..f2a20963f 100644 --- a/nuklear.h +++ b/nuklear.h @@ -338,8 +338,9 @@ extern "C" { * * =============================================================== */ - #ifdef NK_INCLUDE_FIXED_TYPES +#ifdef NK_INCLUDE_FIXED_TYPES #include + #include #define NK_INT8 int8_t #define NK_UINT8 uint8_t #define NK_INT16 int16_t @@ -348,39 +349,73 @@ extern "C" { #define NK_UINT32 uint32_t #define NK_SIZE_TYPE uintptr_t #define NK_POINTER_TYPE uintptr_t + #define NK_INT8_FMT PRIi8 + #define NK_UINT8_FMT PRIu8 + #define NK_INT16_FMT PRIi16 + #define NK_UINT16_FMT PRIu16 + #define NK_INT32_FMT PRIi32 + #define NK_UINT32_FMT PRIu32 + #define NK_SIZE_TYPE_FMT PRIuPTR + #define NK_POINTER_TYPE_FMT PRIxPTR #else #ifndef NK_INT8 #define NK_INT8 signed char #endif + #ifndef NK_INT8_FMT + #define NK_INT8_FMT "i" + #endif #ifndef NK_UINT8 #define NK_UINT8 unsigned char #endif + #ifndef NK_UINT8_FMT + #define NK_UINT8_FMT "u" + #endif #ifndef NK_INT16 #define NK_INT16 signed short #endif + #ifndef NK_INT16_FMT + #define NK_INT16_FMT "i" + #endif #ifndef NK_UINT16 #define NK_UINT16 unsigned short #endif + #ifndef NK_UINT16_FMT + #define NK_UINT16_FMT "u" + #endif #ifndef NK_INT32 - #if defined(_MSC_VER) + #if defined(_MSC_VER) || defined(__MINGW32__) || defined(__MINGW64__) #define NK_INT32 __int32 #else #define NK_INT32 signed int #endif #endif + #ifndef NK_INT32_FMT + #if defined(_MSC_VER) || defined(__MINGW32__) || defined(__MINGW64__) + #define NK_INT32_FMT "I32d" + #else + #define NK_INT32_FMT "i" + #endif + #endif #ifndef NK_UINT32 - #if defined(_MSC_VER) + #if defined(_MSC_VER) || defined(__MINGW32__) || defined(__MINGW64__) #define NK_UINT32 unsigned __int32 #else #define NK_UINT32 unsigned int #endif #endif + #ifndef NK_UINT32_FMT + #if defined(_MSC_VER) || defined(__MINGW32__) || defined(__MINGW64__) + #define NK_UINT32_FMT "I32u" + #else + #define NK_UINT32_FMT "u" + #endif + #endif #ifndef NK_SIZE_TYPE - #if defined(_WIN64) && defined(_MSC_VER) + #if (defined(_WIN64) && defined(_MSC_VER)) || defined(__MINGW64__) #define NK_SIZE_TYPE unsigned __int64 #elif defined(_WIN64) && (defined(__MINGW64__) || defined(__clang__)) #define NK_SIZE_TYPE unsigned long long - #elif (defined(_WIN32) || defined(WIN32)) && defined(_MSC_VER) + #elif ((defined(_WIN32) || defined(WIN32)) && defined(_MSC_VER)) || defined(__MINGW32__) #define NK_SIZE_TYPE unsigned __int32 #elif (defined(_WIN32) || defined(WIN32)) && (defined(__MINGW32__) || defined(__clang__)) #define NK_SIZE_TYPE unsigned long @@ -394,12 +429,27 @@ extern "C" { #define NK_SIZE_TYPE unsigned long #endif #endif + #ifndef NK_SIZE_TYPE_FMT + #if (defined(_WIN64) && defined(_MSC_VER)) || defined(__MINGW64__) + #define NK_SIZE_TYPE_FMT "I64u" + #elif ((defined(_WIN32) || defined(WIN32)) && defined(_MSC_VER)) || defined(__MINGW32__) + #define NK_SIZE_TYPE_FMT "I32u" + #elif defined(__GNUC__) || defined(__clang__) + #if defined(__x86_64__) || defined(__ppc64__) || defined(__PPC64__) || defined(__aarch64__) + #define NK_SIZE_TYPE_FMT "lu" + #else + #define NK_SIZE_TYPE_FMT "u" + #endif + #else + #define NK_SIZE_TYPE_FMT "lu" + #endif + #endif #ifndef NK_POINTER_TYPE - #if defined(_WIN64) && defined(_MSC_VER) + #if (defined(_WIN64) && defined(_MSC_VER)) || defined(__MINGW64__) #define NK_POINTER_TYPE unsigned __int64 #elif defined(_WIN64) && (defined(__MINGW64__) || defined(__clang__)) #define NK_POINTER_TYPE unsigned long long - #elif (defined(_WIN32) || defined(WIN32)) && defined(_MSC_VER) + #elif (defined(_WIN32) || defined(WIN32)) && defined(_MSC_VER) || defined(__MINGW32__) #define NK_POINTER_TYPE unsigned __int32 #elif (defined(_WIN32) || defined(WIN32)) && (defined(__MINGW32__) || defined(__clang__)) #define NK_POINTER_TYPE unsigned long @@ -413,6 +463,21 @@ extern "C" { #define NK_POINTER_TYPE unsigned long #endif #endif + #ifndef NK_POINTER_TYPE_FMT + #if (defined(_WIN64) && defined(_MSC_VER)) || defined(__MINGW64__) + #define NK_POINTER_TYPE_FMT "I64x" + #elif ((defined(_WIN32) || defined(WIN32)) && defined(_MSC_VER)) || defined(__MINGW32__) + #define NK_POINTER_TYPE_FMT "I32x" + #elif defined(__GNUC__) || defined(__clang__) + #if defined(__x86_64__) || defined(__ppc64__) || defined(__PPC64__) || defined(__aarch64__) + #define NK_POINTER_TYPE_FMT "lx" + #else + #define NK_POINTER_TYPE_FMT "x" + #endif + #else + #define NK_POINTER_TYPE_FMT "lx" + #endif + #endif #endif /**< could be any type with semantic of standard bool, either equal or smaller than int */ @@ -425,6 +490,16 @@ extern "C" { #endif #endif +#define NK_FMT_CHAR NK_INT8_FMT +#define NK_FMT_UCHAR NK_UINT8_FMT +#define NK_FMT_BYTE NK_UINT8_FMT +#define NK_FMT_SHORT NK_INT16_FMT +#define NK_FMT_USHORT NK_UINT16_FMT +#define NK_FMT_INT NK_INT32_FMT +#define NK_FMT_UINT NK_UINT32_FMT +#define NK_FMT_SIZE NK_SIZE_TYPE_FMT +#define NK_FMT_PTR NK_POINTER_TYPE_FMT + typedef NK_INT8 nk_char; typedef NK_UINT8 nk_uchar; typedef NK_UINT8 nk_byte; diff --git a/src/nuklear.h b/src/nuklear.h index d61f8bca2..947f28ada 100644 --- a/src/nuklear.h +++ b/src/nuklear.h @@ -115,8 +115,9 @@ extern "C" { * * =============================================================== */ - #ifdef NK_INCLUDE_FIXED_TYPES +#ifdef NK_INCLUDE_FIXED_TYPES #include + #include #define NK_INT8 int8_t #define NK_UINT8 uint8_t #define NK_INT16 int16_t @@ -125,39 +126,73 @@ extern "C" { #define NK_UINT32 uint32_t #define NK_SIZE_TYPE uintptr_t #define NK_POINTER_TYPE uintptr_t + #define NK_INT8_FMT PRIi8 + #define NK_UINT8_FMT PRIu8 + #define NK_INT16_FMT PRIi16 + #define NK_UINT16_FMT PRIu16 + #define NK_INT32_FMT PRIi32 + #define NK_UINT32_FMT PRIu32 + #define NK_SIZE_TYPE_FMT PRIuPTR + #define NK_POINTER_TYPE_FMT PRIxPTR #else #ifndef NK_INT8 #define NK_INT8 signed char #endif + #ifndef NK_INT8_FMT + #define NK_INT8_FMT "i" + #endif #ifndef NK_UINT8 #define NK_UINT8 unsigned char #endif + #ifndef NK_UINT8_FMT + #define NK_UINT8_FMT "u" + #endif #ifndef NK_INT16 #define NK_INT16 signed short #endif + #ifndef NK_INT16_FMT + #define NK_INT16_FMT "i" + #endif #ifndef NK_UINT16 #define NK_UINT16 unsigned short #endif + #ifndef NK_UINT16_FMT + #define NK_UINT16_FMT "u" + #endif #ifndef NK_INT32 - #if defined(_MSC_VER) + #if defined(_MSC_VER) || defined(__MINGW32__) || defined(__MINGW64__) #define NK_INT32 __int32 #else #define NK_INT32 signed int #endif #endif + #ifndef NK_INT32_FMT + #if defined(_MSC_VER) || defined(__MINGW32__) || defined(__MINGW64__) + #define NK_INT32_FMT "I32d" + #else + #define NK_INT32_FMT "i" + #endif + #endif #ifndef NK_UINT32 - #if defined(_MSC_VER) + #if defined(_MSC_VER) || defined(__MINGW32__) || defined(__MINGW64__) #define NK_UINT32 unsigned __int32 #else #define NK_UINT32 unsigned int #endif #endif + #ifndef NK_UINT32_FMT + #if defined(_MSC_VER) || defined(__MINGW32__) || defined(__MINGW64__) + #define NK_UINT32_FMT "I32u" + #else + #define NK_UINT32_FMT "u" + #endif + #endif #ifndef NK_SIZE_TYPE - #if defined(_WIN64) && defined(_MSC_VER) + #if (defined(_WIN64) && defined(_MSC_VER)) || defined(__MINGW64__) #define NK_SIZE_TYPE unsigned __int64 #elif defined(_WIN64) && (defined(__MINGW64__) || defined(__clang__)) #define NK_SIZE_TYPE unsigned long long - #elif (defined(_WIN32) || defined(WIN32)) && defined(_MSC_VER) + #elif ((defined(_WIN32) || defined(WIN32)) && defined(_MSC_VER)) || defined(__MINGW32__) #define NK_SIZE_TYPE unsigned __int32 #elif (defined(_WIN32) || defined(WIN32)) && (defined(__MINGW32__) || defined(__clang__)) #define NK_SIZE_TYPE unsigned long @@ -171,12 +206,27 @@ extern "C" { #define NK_SIZE_TYPE unsigned long #endif #endif + #ifndef NK_SIZE_TYPE_FMT + #if (defined(_WIN64) && defined(_MSC_VER)) || defined(__MINGW64__) + #define NK_SIZE_TYPE_FMT "I64u" + #elif ((defined(_WIN32) || defined(WIN32)) && defined(_MSC_VER)) || defined(__MINGW32__) + #define NK_SIZE_TYPE_FMT "I32u" + #elif defined(__GNUC__) || defined(__clang__) + #if defined(__x86_64__) || defined(__ppc64__) || defined(__PPC64__) || defined(__aarch64__) + #define NK_SIZE_TYPE_FMT "lu" + #else + #define NK_SIZE_TYPE_FMT "u" + #endif + #else + #define NK_SIZE_TYPE_FMT "lu" + #endif + #endif #ifndef NK_POINTER_TYPE - #if defined(_WIN64) && defined(_MSC_VER) + #if (defined(_WIN64) && defined(_MSC_VER)) || defined(__MINGW64__) #define NK_POINTER_TYPE unsigned __int64 #elif defined(_WIN64) && (defined(__MINGW64__) || defined(__clang__)) #define NK_POINTER_TYPE unsigned long long - #elif (defined(_WIN32) || defined(WIN32)) && defined(_MSC_VER) + #elif (defined(_WIN32) || defined(WIN32)) && defined(_MSC_VER) || defined(__MINGW32__) #define NK_POINTER_TYPE unsigned __int32 #elif (defined(_WIN32) || defined(WIN32)) && (defined(__MINGW32__) || defined(__clang__)) #define NK_POINTER_TYPE unsigned long @@ -190,6 +240,21 @@ extern "C" { #define NK_POINTER_TYPE unsigned long #endif #endif + #ifndef NK_POINTER_TYPE_FMT + #if (defined(_WIN64) && defined(_MSC_VER)) || defined(__MINGW64__) + #define NK_POINTER_TYPE_FMT "I64x" + #elif ((defined(_WIN32) || defined(WIN32)) && defined(_MSC_VER)) || defined(__MINGW32__) + #define NK_POINTER_TYPE_FMT "I32x" + #elif defined(__GNUC__) || defined(__clang__) + #if defined(__x86_64__) || defined(__ppc64__) || defined(__PPC64__) || defined(__aarch64__) + #define NK_POINTER_TYPE_FMT "lx" + #else + #define NK_POINTER_TYPE_FMT "x" + #endif + #else + #define NK_POINTER_TYPE_FMT "lx" + #endif + #endif #endif /**< could be any type with semantic of standard bool, either equal or smaller than int */ @@ -202,6 +267,16 @@ extern "C" { #endif #endif +#define NK_FMT_CHAR NK_INT8_FMT +#define NK_FMT_UCHAR NK_UINT8_FMT +#define NK_FMT_BYTE NK_UINT8_FMT +#define NK_FMT_SHORT NK_INT16_FMT +#define NK_FMT_USHORT NK_UINT16_FMT +#define NK_FMT_INT NK_INT32_FMT +#define NK_FMT_UINT NK_UINT32_FMT +#define NK_FMT_SIZE NK_SIZE_TYPE_FMT +#define NK_FMT_PTR NK_POINTER_TYPE_FMT + typedef NK_INT8 nk_char; typedef NK_UINT8 nk_uchar; typedef NK_UINT8 nk_byte;