소스 검색

Improve instanced to string functions

Kajetan Johannes Hammerle 9 달 전
부모
커밋
d227119a74
8개의 변경된 파일29개의 추가작업 그리고 29개의 파일을 삭제
  1. 6 2
      include/core/HashMap.h
  2. 1 1
      include/core/Queue.h
  3. 2 2
      include/core/ToString.h
  4. 3 3
      include/core/Utility.h
  5. 4 4
      src/ToString.c
  6. 2 2
      test/modules/HashMapTests.c
  7. 4 8
      test/modules/ListTests.c
  8. 7 7
      test/modules/QueueTests.c

+ 6 - 2
include/core/HashMap.h

@@ -48,8 +48,11 @@ size_t roundUp2(size_t n);
     void initHashMapIterator##N(HashMapIterator##N* mi, const HashMap##N* m);  \
     bool hasNextHashMapNode##N(HashMapIterator##N* mi);                        \
     HashMapNode##N* nextHashMapNode##N(HashMapIterator##N* mi);                \
+    typedef size_t (*ToStringKey##N)(const K* data, char* buffer, size_t n);   \
+    typedef size_t (*ToStringValue##N)(const V* data, char* buffer, size_t n); \
     size_t toStringHashMap##N(const HashMap##N* m, char* buffer, size_t n,     \
-                              ToString keyString, ToString valueString);
+                              ToStringKey##N keyString,                        \
+                              ToStringValue##N valueString);
 
 #define HASHMAP_SOURCE(K, V, N)                                                \
     static size_t searchSlot##N(HashMap##N* m, K key) {                        \
@@ -208,7 +211,8 @@ size_t roundUp2(size_t n);
     }                                                                          \
                                                                                \
     size_t toStringHashMap##N(const HashMap##N* m, char* buffer, size_t n,     \
-                              ToString keyString, ToString valueString) {      \
+                              ToStringKey##N keyString,                        \
+                              ToStringValue##N valueString) {                  \
         size_t w = 0;                                                          \
         stringAdd(&w, &buffer, &n, coreToString(buffer, n, "["));              \
         bool notFirst = false;                                                 \

+ 1 - 1
include/core/Queue.h

@@ -22,7 +22,7 @@
     T* getQueueIndex##N(const Queue##N* r, size_t index);                      \
     void clearQueue##N(Queue##N* r);                                           \
     void popQueueData##N(Queue##N* r);                                         \
-    typedef size_t (*ToString##N)(const T*, char* buffer, size_t n);           \
+    typedef size_t (*ToString##N)(const T* data, char* buffer, size_t n);      \
     size_t toStringQueue##N(const Queue##N* r, char* buffer, size_t n,         \
                             ToString##N c);
 

+ 2 - 2
include/core/ToString.h

@@ -6,8 +6,8 @@
 
 check_format(3, 4) size_t
     coreToString(char* buffer, size_t n, const char* format, ...);
-size_t toStringSize(const void* p, char* buffer, size_t n);
-size_t toStringInt(const void* p, char* buffer, size_t n);
+size_t toStringSize(const size_t* p, char* buffer, size_t n);
+size_t toStringInt(const int* p, char* buffer, size_t n);
 void stringAdd(size_t* w, char** buffer, size_t* n, size_t shift);
 
 #define STRUCT_TO_STRING(type)                                                 \

+ 3 - 3
include/core/Utility.h

@@ -6,10 +6,10 @@
 #include "core/Types.h"
 
 size_t popCount(u64 u);
-#define interpolate(a, b, factor) (a * (1.0f - factor) + b * factor)
+#define interpolate(a, b, factor) ((a) * (1.0f - (factor)) + (b) * (factor))
 #define PI 3.14159265358979323846f
-#define radianToDegree(radians) (radians * (180.0f / PI))
-#define degreeToRadian(degrees) (degrees * (PI / 180.0f))
+#define radianToDegree(radians) ((radians) * (180.0f / PI))
+#define degreeToRadian(degrees) ((degrees) * (PI / 180.0f))
 
 inline size_t maxSize(size_t a, size_t b) {
     return a > b ? a : b;

+ 4 - 4
src/ToString.c

@@ -19,12 +19,12 @@ size_t coreToString(char* buffer, size_t n, const char* format, ...) {
     return w < 0 ? 0 : (size_t)w;
 }
 
-size_t toStringSize(const void* p, char* buffer, size_t n) {
-    return toString(buffer, n, "%zu", *(const size_t*)p);
+size_t toStringSize(const size_t* p, char* buffer, size_t n) {
+    return toString(buffer, n, "%zu", *p);
 }
 
-size_t toStringInt(const void* p, char* buffer, size_t n) {
-    return toString(buffer, n, "%d", *(const int*)p);
+size_t toStringInt(const int* p, char* buffer, size_t n) {
+    return toString(buffer, n, "%d", *p);
 }
 
 void stringAdd(size_t* w, char** buffer, size_t* n, size_t shift) {

+ 2 - 2
test/modules/HashMapTests.c

@@ -250,8 +250,8 @@ static void testSearchStruct() {
     *putHashMapKeyA(&map, (A){5, 6}) = 5;
 
     char buffer[128];
-    size_t n = toStringHashMapA(&map, buffer, sizeof(buffer),
-                                (ToString)toStringA, toStringInt);
+    size_t n =
+        toStringHashMapA(&map, buffer, sizeof(buffer), toStringA, toStringInt);
     TEST_SIZE(24, n);
     TEST_STRING("[{5, 6} = 5, {1, 2} = 3]", buffer);
 

+ 4 - 8
test/modules/ListTests.c

@@ -84,8 +84,7 @@ static void testToString1() {
     addListDataSize(&list, 243);
     addListDataSize(&list, 423);
     char buffer[128];
-    size_t n = toStringListSize(&list, buffer, sizeof(buffer),
-                                (ToStringSize)toStringSize);
+    size_t n = toStringListSize(&list, buffer, sizeof(buffer), toStringSize);
     TEST_SIZE(13, n);
     TEST_STRING("[1, 243, 423]", buffer);
     destroyListSize(&list);
@@ -96,8 +95,7 @@ static void testToString2() {
     initListSize(&list);
     addListDataSize(&list, 1);
     char buffer[128];
-    size_t n = toStringListSize(&list, buffer, sizeof(buffer),
-                                (ToStringSize)toStringSize);
+    size_t n = toStringListSize(&list, buffer, sizeof(buffer), toStringSize);
     TEST_SIZE(3, n);
     TEST_STRING("[1]", buffer);
     destroyListSize(&list);
@@ -107,8 +105,7 @@ static void testToString3() {
     ListSize list;
     initListSize(&list);
     char buffer[128];
-    size_t n = toStringListSize(&list, buffer, sizeof(buffer),
-                                (ToStringSize)toStringSize);
+    size_t n = toStringListSize(&list, buffer, sizeof(buffer), toStringSize);
     TEST_SIZE(2, n);
     TEST_STRING("[]", buffer);
     destroyListSize(&list);
@@ -204,8 +201,7 @@ static void testIntList() {
     addListDataInt(&list, 5);
     addListDataInt(&list, 7);
     char buffer[128];
-    size_t n = toStringListInt(&list, buffer, sizeof(buffer),
-                               (ToStringInt)toStringInt);
+    size_t n = toStringListInt(&list, buffer, sizeof(buffer), toStringInt);
     TEST_SIZE(6, n);
     TEST_STRING("[5, 7]", buffer);
     addLastListDataInt(&list);

+ 7 - 7
test/modules/QueueTests.c

@@ -84,37 +84,37 @@ static void testOverall() {
     pushQueueDataSize(&r, 3);
 
     char buffer[128];
-    toStringQueueSize(&r, buffer, sizeof(buffer), (ToStringSize)toStringSize);
+    toStringQueueSize(&r, buffer, sizeof(buffer), toStringSize);
     TEST_STRING("[1, 2, 3]", buffer);
     TEST_SIZE(3, r.length);
 
     popQueueDataSize(&r);
-    toStringQueueSize(&r, buffer, sizeof(buffer), (ToStringSize)toStringSize);
+    toStringQueueSize(&r, buffer, sizeof(buffer), toStringSize);
     TEST_STRING("[2, 3]", buffer);
     TEST_SIZE(2, r.length);
 
     pushQueueDataSize(&r, 4);
-    toStringQueueSize(&r, buffer, sizeof(buffer), (ToStringSize)toStringSize);
+    toStringQueueSize(&r, buffer, sizeof(buffer), toStringSize);
     TEST_STRING("[2, 3, 4]", buffer);
     TEST_SIZE(3, r.length);
 
     popQueueDataSize(&r);
-    toStringQueueSize(&r, buffer, sizeof(buffer), (ToStringSize)toStringSize);
+    toStringQueueSize(&r, buffer, sizeof(buffer), toStringSize);
     TEST_STRING("[3, 4]", buffer);
     TEST_SIZE(2, r.length);
 
     pushQueueDataSize(&r, 5);
-    toStringQueueSize(&r, buffer, sizeof(buffer), (ToStringSize)toStringSize);
+    toStringQueueSize(&r, buffer, sizeof(buffer), toStringSize);
     TEST_STRING("[3, 4, 5]", buffer);
     TEST_SIZE(3, r.length);
 
     popQueueDataSize(&r);
-    toStringQueueSize(&r, buffer, sizeof(buffer), (ToStringSize)toStringSize);
+    toStringQueueSize(&r, buffer, sizeof(buffer), toStringSize);
     TEST_STRING("[4, 5]", buffer);
     TEST_SIZE(2, r.length);
 
     clearQueueSize(&r);
-    toStringQueueSize(&r, buffer, sizeof(buffer), (ToStringSize)toStringSize);
+    toStringQueueSize(&r, buffer, sizeof(buffer), toStringSize);
     TEST_STRING("[]", buffer);
     TEST_SIZE(0, r.length);