build: Fix clang warnings
This commit is contained in:
		
							parent
							
								
									2665e315e6
								
							
						
					
					
						commit
						1d31d7f270
					
				| @ -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 | ||||||
|  | |||||||
| @ -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 | ||||||
| { | { | ||||||
|  | |||||||
							
								
								
									
										54
									
								
								dqn_jsmn.h
									
									
									
									
									
								
							
							
						
						
									
										54
									
								
								dqn_jsmn.h
									
									
									
									
									
								
							| @ -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; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user