瀏覽代碼

Extend list with last access, cleanup

Kajetan Johannes Hammerle 2 周之前
父節點
當前提交
965c61249a
共有 6 個文件被更改,包括 30 次插入16 次删除
  1. 1 3
      CMakeLists.txt
  2. 14 4
      include/core/List.h
  3. 11 4
      src/List.c
  4. 1 2
      test/Main.c
  5. 0 2
      test/Tests.h
  6. 3 1
      test/modules/ListTests.c

+ 1 - 3
CMakeLists.txt

@@ -41,7 +41,6 @@ set(SRC_TESTS
     #"test/modules/LinkedListTests.cpp"
     #"test/modules/MatrixStackTests.cpp"
     #"test/modules/RingBufferTests.cpp"
-    #"test/modules/StackTests.cpp"
 )
 
 set(SRC_PERFORMANCE
@@ -111,6 +110,7 @@ target_sources(core PUBLIC
         ./include/core/SpinLock.h
         ./include/core/Types.h
         ./include/core/Utility.h
+        ./include/core/Vector.h
         ./include/core/View.h
 #        ./include/core/Components.hpp
 #        ./include/core/HashMap.hpp
@@ -118,8 +118,6 @@ target_sources(core PUBLIC
 #        ./include/core/MatrixStack.hpp
 #        ./include/core/ProbingHashMap.hpp
 #        ./include/core/RingBuffer.hpp
-#        ./include/core/Stack.hpp
-#        ./include/core/Vector.hpp
 )
 install(TARGETS core FILE_SET HEADERS)
 

+ 14 - 4
include/core/List.h

@@ -22,10 +22,20 @@ void coreResizeListPointer(CoreList* l, size_t n, const void* data);
     coreResizeListPointer(l, n, &(type){__VA_ARGS__})
 CoreList* coreListAddPointer(CoreList* l, const void* data);
 #define coreListAdd(l, type, ...) coreListAddPointer(l, &(type){__VA_ARGS__})
-void* coreListGetPointer(CoreList* l, size_t index);
-#define coreListGet(l, index, type) *(type*)coreListGetPointer(l, index)
-const void* coreListGetPointerC(const CoreList* l, size_t index);
-#define coreListGetC(l, index, type) *(const type*)coreListGetPointerC(l, index)
+void* coreListGetVoidPointer(CoreList* l, size_t index);
+#define coreListGetPointer(l, index, type)                                     \
+    ((type*)coreListGetVoidPointer(l, index))
+#define coreListGet(l, index, type) (*coreListGetPointer(l, index, type))
+const void* coreListGetVoidPointerC(const CoreList* l, size_t index);
+#define coreListGetPointerC(l, index, type)                                    \
+    ((const type*)coreListGetVoidPointerC(l, index))
+#define coreListGetC(l, index, type) (*coreListGetPointerC(l, index, type))
+void* coreListLastVoidPointer(CoreList* l);
+#define coreListLastPointer(l, type) ((type*)coreListLastVoidPointer(l))
+#define coreListLast(l, type) (*coreListLastPointer(l, type))
+const void* coreListLastVoidPointerC(const CoreList* l);
+#define coreListLastPointerC(l, type) ((const type*)coreListLastVoidPointerC(l))
+#define coreListLastC(l, type) (*coreListLastPointerC(l, type))
 void coreClearList(CoreList* l);
 void coreListRemoveBySwap(CoreList* l, size_t index);
 void coreListRemove(CoreList* l, size_t index);

+ 11 - 4
src/List.c

@@ -86,16 +86,24 @@ CoreList* coreListAddPointer(CoreList* l, const void* data) {
     return l;
 }
 
-void* coreListGetPointer(CoreList* l, size_t index) {
+void* coreListGetVoidPointer(CoreList* l, size_t index) {
     assert(index < l->length);
     return getPointer(l, index);
 }
 
-const void* coreListGetPointerC(const CoreList* l, size_t index) {
+const void* coreListGetVoidPointerC(const CoreList* l, size_t index) {
     assert(index < l->length);
     return getPointerC(l, index);
 }
 
+void* coreListLastVoidPointer(CoreList* l) {
+    return coreListGetVoidPointer(l, l->length - 1);
+}
+
+const void* coreListLastVoidPointerC(const CoreList* l) {
+    return coreListGetVoidPointerC(l, l->length - 1);
+}
+
 void coreClearList(CoreList* l) {
     l->length = 0;
 }
@@ -104,8 +112,7 @@ void coreListRemoveBySwap(CoreList* l, size_t index) {
     assert(index < l->length);
     size_t length = l->length - 1;
     if(index != length) {
-        memcpy(coreListGetPointer(l, index), coreListGetPointer(l, length),
-               l->dataSize);
+        memcpy(getPointer(l, index), getPointer(l, length), l->dataSize);
     }
     l->length = length;
 }

+ 1 - 2
test/Main.c

@@ -31,13 +31,12 @@ int main(int argAmount, const char** args) {
         }
     }
 
-    coreTestBitArray();
     // coreTestComponents();
     // coreTestHashMap(light);
     // coreTestLinkedList(light);
     // coreTestMatrixStack(light);
     // coreTestRingBuffer();
-    // coreTestStack(light);
+    coreTestBitArray();
     coreTestBox();
     coreTestBuffer(light);
     coreTestFrustum();

+ 0 - 2
test/Tests.h

@@ -9,7 +9,6 @@ void coreTestBitArray(void);
 void coreTestBox(void);
 void coreTestBuffer(bool light);
 void coreTestComponents(void);
-void coreTestFileReader(void);
 void coreTestFrustum(void);
 void coreTestHashMap(bool light);
 void coreTestLinkedList(bool light);
@@ -23,7 +22,6 @@ void coreTestQuaternion(void);
 void coreTestRandom(bool light);
 void coreTestRingBuffer(void);
 void coreTestSpinLock(void);
-void coreTestStack(bool light);
 void coreTestUtility(bool light);
 void coreTestVector(void);
 void coreTestView(void);

+ 3 - 1
test/modules/ListTests.c

@@ -20,9 +20,11 @@ static void testMultipleAdd() {
     CORE_TEST_SIZE(4, coreListGet(&list, 0, size_t));
     CORE_TEST_SIZE(3, coreListGet(&list, 1, size_t));
     CORE_TEST_SIZE(2, coreListGet(&list, 2, size_t));
+    CORE_TEST_SIZE(2, coreListLast(&list, size_t));
     CORE_TEST_SIZE(4, coreListGetC(&list, 0, size_t));
     CORE_TEST_SIZE(3, coreListGetC(&list, 1, size_t));
     CORE_TEST_SIZE(2, coreListGetC(&list, 2, size_t));
+    CORE_TEST_SIZE(2, coreListLastC(&list, size_t));
     CORE_TEST_SIZE(3, list.length);
     coreDestroyList(&list);
 }
@@ -250,7 +252,7 @@ static void testStruct() {
     CoreVector3 v = {{1, 2, 3}};
     coreListAddPointer(&list, &v);
     coreListAdd(&list, CoreVector3, {2, 3, 4});
-    CORE_TEST_V3(&v, coreListGetPointer(&list, 0));
+    CORE_TEST_V3(&v, coreListGetPointer(&list, 0, CoreVector3));
     coreDestroyList(&list);
 }