build: Fix clang warnings

This commit is contained in:
doyle 2022-06-29 00:08:35 +10:00
parent 2665e315e6
commit 1d31d7f270
3 changed files with 29 additions and 29 deletions

View File

@ -15,7 +15,7 @@ pushd Build
REM Z7 Combine multi-debug files to one debug file REM Z7 Combine multi-debug files to one debug file
REM wd4201 Nonstandard extension used: nameless struct/union REM wd4201 Nonstandard extension used: nameless struct/union
REM Tp Treat header file as CPP source file REM Tp Treat header file as CPP source file
set compile_flags=-MT -EHa -GR- -Od -Oi -Z7 -wd4201 -D DQN_TEST_WITH_MAIN set compile_flags=-MT -EHa -GR- -Od -Oi -Z7 -wd4201 -D DQN_TEST_WITH_MAIN -nologo
set linker_flags=-link -nologo set linker_flags=-link -nologo
set msvc_flags=-fsanitize=address -D STBSP__ASAN=__declspec(no_sanitize_address) set msvc_flags=-fsanitize=address -D STBSP__ASAN=__declspec(no_sanitize_address)
set clang_flags=-fsanitize=address -fsanitize=undefined set clang_flags=-fsanitize=address -fsanitize=undefined

View File

@ -7,7 +7,7 @@
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
// NOTE: Dqn_CppFile: Helper functions to generate formatted CPP files // NOTE: Dqn_CppFile: Helper functions to generate formatted CPP files
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
#define DQN_CPPF_ASSERT(expr) do { if (!(expr)) { *((int *)0) = 0; } } while (0) #define DQN_CPPF_ASSERT(expr) do { if (!(expr)) { *((int volatile *)0) = 0; } } while (0)
struct Dqn_CppFile struct Dqn_CppFile
{ {

View File

@ -293,12 +293,12 @@ int jsmn_iterator_next( jsmn_iterator_t *iterator, jsmntok_t **jsmn_identifier,
typedef struct Dqn_JsmnString typedef struct Dqn_JsmnString
{ {
union Dqn_JsmnStringBuffer { char const *const_str; char *str; } buf; char *data;
Dqn_JsmnI64 size; Dqn_JsmnI64 size;
} Dqn_JsmnString; } Dqn_JsmnString;
#define DQN_JSMN_STRING(string) DQN_JSMN_CLITERAL(Dqn_JsmnString){{(string)}, sizeof(string) - 1} #define DQN_JSMN_STRING(string) DQN_JSMN_CLITERAL(Dqn_JsmnString){(char *)string, sizeof(string) - 1}
#define DQN_JSMN_STRING_FMT(string) (int)((string).size), (string).buf.str #define DQN_JSMN_STRING_FMT(string) (int)((string).size), (string).data
bool Dqn_JsmnStringEq(Dqn_JsmnString lhs, Dqn_JsmnString rhs); bool Dqn_JsmnStringEq(Dqn_JsmnString lhs, Dqn_JsmnString rhs);
bool Dqn_JsmnStringIsValid(Dqn_JsmnString string); bool Dqn_JsmnStringIsValid(Dqn_JsmnString string);
@ -450,13 +450,13 @@ Dqn_JsmnU64 Dqn_JsmnIteratorU64(Dqn_JsmnIterator const *it);
bool Dqn_JsmnStringEq(Dqn_JsmnString lhs, Dqn_JsmnString rhs) bool Dqn_JsmnStringEq(Dqn_JsmnString lhs, Dqn_JsmnString rhs)
{ {
bool result = lhs.size == rhs.size; bool result = lhs.size == rhs.size;
for (int i = 0; i < lhs.size && result; i++) result &= lhs.buf.str[i] == rhs.buf.str[i]; for (int i = 0; i < lhs.size && result; i++) result &= lhs.data[i] == rhs.data[i];
return result; return result;
} }
bool Dqn_JsmnStringIsValid(Dqn_JsmnString string) bool Dqn_JsmnStringIsValid(Dqn_JsmnString string)
{ {
bool result = string.buf.str && string.size >= 0; bool result = string.data && string.size >= 0;
return result; return result;
} }
@ -474,7 +474,7 @@ Dqn_JsmnU64 Dqn_JsmnStringToU64(Dqn_JsmnString string)
for (int i = 0; i < string.size; i++) for (int i = 0; i < string.size; i++)
{ {
char ch = string.buf.str[i]; char ch = string.data[i];
if (!Dqn_JsmnIsDigit(ch)) if (!Dqn_JsmnIsDigit(ch))
return result; return result;
@ -520,17 +520,17 @@ Dqn_Jsmn Dqn_JsmnInitWithJSONCString(char const *json, Dqn_JsmnI64 size, jsmntok
DQN_JSMN_ASSERT(tokens_size == Dqn_JsmnTokensRequired(json, size)); DQN_JSMN_ASSERT(tokens_size == Dqn_JsmnTokensRequired(json, size));
jsmn_init(&result.parser); jsmn_init(&result.parser);
result.json.buf.const_str = json; result.json.data = (char *)json;
result.json.size = size; result.json.size = size;
result.tokens = tokens; result.tokens = tokens;
result.tokens_size = tokens_size; result.tokens_size = tokens_size;
result.valid = jsmn_parse(&result.parser, result.json.buf.str, result.json.size, result.tokens, result.tokens_size) > 0; result.valid = jsmn_parse(&result.parser, result.json.data, result.json.size, result.tokens, result.tokens_size) > 0;
return result; return result;
} }
Dqn_Jsmn Dqn_JsmnInitWithJSONString(Dqn_JsmnString json, jsmntok_t *tokens, unsigned int size) Dqn_Jsmn Dqn_JsmnInitWithJSONString(Dqn_JsmnString json, jsmntok_t *tokens, unsigned int size)
{ {
Dqn_Jsmn result = Dqn_JsmnInitWithJSONCString(json.buf.str, json.size, tokens, size); Dqn_Jsmn result = Dqn_JsmnInitWithJSONCString(json.data, json.size, tokens, size);
return result; return result;
} }
@ -552,7 +552,7 @@ Dqn_Jsmn Dqn_JsmnInitWithMallocJSONCString(char const *json, Dqn_JsmnI64 size)
Dqn_Jsmn Dqn_JsmnInitWithMallocJSON(Dqn_JsmnString json) Dqn_Jsmn Dqn_JsmnInitWithMallocJSON(Dqn_JsmnString json)
{ {
Dqn_Jsmn result = Dqn_JsmnInitWithMallocJSONCString(json.buf.str, json.size); Dqn_Jsmn result = Dqn_JsmnInitWithMallocJSONCString(json.data, json.size);
return result; return result;
} }
@ -560,7 +560,7 @@ Dqn_Jsmn Dqn_JsmnInitWithMallocJSONFile(Dqn_JsmnString json_file)
{ {
Dqn_Jsmn result = DQN_JSMN_ZERO_INIT; Dqn_Jsmn result = DQN_JSMN_ZERO_INIT;
FILE * file_handle = NULL; FILE * file_handle = NULL;
fopen_s(&file_handle, json_file.buf.str, "rb"); fopen_s(&file_handle, json_file.data, "rb");
if (!file_handle) if (!file_handle)
return result; return result;
@ -593,8 +593,8 @@ Dqn_Jsmn Dqn_JsmnInitWithMallocJSONFile(Dqn_JsmnString json_file)
void Dqn_JsmnFree(Dqn_Jsmn *jsmn) void Dqn_JsmnFree(Dqn_Jsmn *jsmn)
{ {
if (jsmn->json.buf.str && jsmn->json_needs_crt_free) if (jsmn->json.data && jsmn->json_needs_crt_free)
free(jsmn->json.buf.str); free(jsmn->json.data);
if (jsmn->tokens) if (jsmn->tokens)
free(jsmn->tokens); free(jsmn->tokens);
@ -634,13 +634,13 @@ Dqn_Jsmn Dqn_JsmnInitWithArenaJSONCString(char const *json, Dqn_JsmnI64 size, Dq
Dqn_Jsmn Dqn_JsmnInitWithArenaJSON(Dqn_JsmnString json, Dqn_Arena *arena) Dqn_Jsmn Dqn_JsmnInitWithArenaJSON(Dqn_JsmnString json, Dqn_Arena *arena)
{ {
Dqn_Jsmn result = Dqn_JsmnInitWithArenaJSONCString(json.buf.str, json.size, arena); Dqn_Jsmn result = Dqn_JsmnInitWithArenaJSONCString(json.data, json.size, arena);
return result; return result;
} }
Dqn_Jsmn Dqn_JsmnInitWithArenaJSONFile(Dqn_JsmnString file, Dqn_Arena *arena) Dqn_Jsmn Dqn_JsmnInitWithArenaJSONFile(Dqn_JsmnString file, Dqn_Arena *arena)
{ {
Dqn_String json = Dqn_FileArenaReadToString(file.buf.str, file.size, arena); Dqn_String json = Dqn_FileArenaReadToString(file.data, file.size, arena);
Dqn_Jsmn result = Dqn_JsmnInitWithArenaJSON({{json.str}, (int)json.size}, arena); Dqn_Jsmn result = Dqn_JsmnInitWithArenaJSON({{json.str}, (int)json.size}, arena);
return result; return result;
} }
@ -654,14 +654,14 @@ int Dqn_JsmnTokenArraySize(jsmntok_t token)
Dqn_JsmnString Dqn_JsmnTokenString(jsmntok_t token, Dqn_JsmnString json) Dqn_JsmnString Dqn_JsmnTokenString(jsmntok_t token, Dqn_JsmnString json)
{ {
Dqn_JsmnString result = {{json.buf.str + token.start}, token.end - token.start}; Dqn_JsmnString result = {{json.data + token.start}, token.end - token.start};
return result; return result;
} }
bool Dqn_JsmnTokenBool(jsmntok_t token, Dqn_JsmnString json) bool Dqn_JsmnTokenBool(jsmntok_t token, Dqn_JsmnString json)
{ {
DQN_JSMN_ASSERT(token.start < json.size); DQN_JSMN_ASSERT(token.start < json.size);
char ch = json.buf.str[token.start]; char ch = json.data[token.start];
bool result = ch == 't'; bool result = ch == 't';
if (!result) { DQN_JSMN_ASSERT(ch == 'f'); } if (!result) { DQN_JSMN_ASSERT(ch == 'f'); }
return result; return result;
@ -670,7 +670,7 @@ bool Dqn_JsmnTokenBool(jsmntok_t token, Dqn_JsmnString json)
Dqn_JsmnU64 Dqn_JsmnTokenU64(jsmntok_t token, Dqn_JsmnString json) Dqn_JsmnU64 Dqn_JsmnTokenU64(jsmntok_t token, Dqn_JsmnString json)
{ {
DQN_JSMN_ASSERT(token.start < json.size); DQN_JSMN_ASSERT(token.start < json.size);
Dqn_JsmnString string = {{json.buf.str + token.start}, token.end - token.start}; Dqn_JsmnString string = {{json.data + token.start}, token.end - token.start};
Dqn_JsmnU64 result = Dqn_JsmnStringToU64(string); Dqn_JsmnU64 result = Dqn_JsmnStringToU64(string);
return result; return result;
} }
@ -725,7 +725,7 @@ Dqn_JsmnString Dqn_JsmnIteratorKey(Dqn_JsmnIterator *it)
{ {
Dqn_JsmnString result = DQN_JSMN_ZERO_INIT; Dqn_JsmnString result = DQN_JSMN_ZERO_INIT;
if (it && it->key) if (it && it->key)
result = DQN_JSMN_CLITERAL(Dqn_JsmnString){{it->json.buf.str + it->key->start}, it->key->end - it->key->start}; result = DQN_JSMN_CLITERAL(Dqn_JsmnString){{it->json.data + it->key->start}, it->key->end - it->key->start};
return result; return result;
} }
@ -758,7 +758,7 @@ static bool Dqn_Jsmn_IteratorExpect(Dqn_JsmnIterator *it, Dqn_JsmnTokenIs expect
case Dqn_JsmnTokenIs_Number: case Dqn_JsmnTokenIs_Number:
{ {
DQN_JSMN_ASSERT(token.start < it->json.size); DQN_JSMN_ASSERT(token.start < it->json.size);
char ch = it->json.buf.str[token.start]; char ch = it->json.data[token.start];
result = token.type == JSMN_PRIMITIVE && (ch == '-' || Dqn_JsmnIsDigit(ch)); result = token.type == JSMN_PRIMITIVE && (ch == '-' || Dqn_JsmnIsDigit(ch));
} }
break; break;
@ -766,7 +766,7 @@ static bool Dqn_Jsmn_IteratorExpect(Dqn_JsmnIterator *it, Dqn_JsmnTokenIs expect
case Dqn_JsmnTokenIs_Bool: case Dqn_JsmnTokenIs_Bool:
{ {
DQN_JSMN_ASSERT(token.start < it->json.size); DQN_JSMN_ASSERT(token.start < it->json.size);
char ch = it->json.buf.str[token.start]; char ch = it->json.data[token.start];
result = token.type == JSMN_PRIMITIVE && (ch == 't' || ch == 'f'); result = token.type == JSMN_PRIMITIVE && (ch == 't' || ch == 'f');
} }
break; break;
@ -782,7 +782,7 @@ static bool Dqn_Jsmn_IteratorExpect(Dqn_JsmnIterator *it, Dqn_JsmnTokenIs expect
case JSMN_PRIMITIVE: case JSMN_PRIMITIVE:
{ {
char first = it->json.buf.str[token.start]; char first = it->json.data[token.start];
if (first == 't' || first == 'f') if (first == 't' || first == 'f')
actual = Dqn_JsmnTokenIs_Bool; actual = Dqn_JsmnTokenIs_Bool;
else else
@ -812,8 +812,8 @@ bool Dqn_Jsmn_IteratorExpectKey(Dqn_JsmnIterator *it, Dqn_JsmnTokenIs expected,
Dqn_JsmnString Dqn_JsmnIteratorString(Dqn_JsmnIterator const *it) Dqn_JsmnString Dqn_JsmnIteratorString(Dqn_JsmnIterator const *it)
{ {
Dqn_JsmnString result = DQN_JSMN_ZERO_INIT; Dqn_JsmnString result = DQN_JSMN_ZERO_INIT;
if (it->value && it->json.buf.str) if (it->value && it->json.data)
result = DQN_JSMN_CLITERAL(Dqn_JsmnString){{it->json.buf.str + it->value->start}, it->value->end - it->value->start}; result = DQN_JSMN_CLITERAL(Dqn_JsmnString){{it->json.data + it->value->start}, it->value->end - it->value->start};
return result; return result;
} }