diff --git a/src/Array/Array.c b/src/Array/Array.c new file mode 100644 index 0000000..f2c7759 --- /dev/null +++ b/src/Array/Array.c @@ -0,0 +1,27 @@ +#include "Array.h" + +ktId_define(ArrayChar); +ktId_define(ArrayBool); +ktId_define(ArrayFloat32); +ktId_define(ArrayFloat64); +ktId_define(ArrayInt8); +ktId_define(ArrayUInt8); +ktId_define(ArrayInt16); +ktId_define(ArrayUInt16); +ktId_define(ArrayInt32); +ktId_define(ArrayUInt32); +ktId_define(ArrayInt64); +ktId_define(ArrayUInt64); + +ktId_define(ArrayCharPtr); +ktId_define(ArrayBoolPtr); +ktId_define(ArrayFloat32Ptr); +ktId_define(ArrayFloat64Ptr); +ktId_define(ArrayInt8Ptr); +ktId_define(ArrayUInt8Ptr); +ktId_define(ArrayInt16Ptr); +ktId_define(ArrayUInt16Ptr); +ktId_define(ArrayInt32Ptr); +ktId_define(ArrayUInt32Ptr); +ktId_define(ArrayInt64Ptr); +ktId_define(ArrayUInt64Ptr); diff --git a/src/Array/Array_declare.h b/src/Array/Array_declare.h index 6d12ead..eae3a69 100644 --- a/src/Array/Array_declare.h +++ b/src/Array/Array_declare.h @@ -16,13 +16,13 @@ typedef struct Array_##type{\ \ static inline Array_##type Array_##type##_allocValues(uint32 length){\ return (Array_##type) {\ - .values=(type##*)malloc(sizeof(type)*length),\ + .values=(type*)malloc(sizeof(type)*length),\ .length=length,\ .allocatedOnHeap=true\ };\ }\ \ -static inline Array_##type Array_##type##_fromBuffer(type##* buffer, uint32 bufferLength, bool allocatedOnHeap){\ +static inline Array_##type Array_##type##_fromBuffer(type* buffer, uint32 bufferLength, bool allocatedOnHeap){\ return (Array_##type) {\ .values=buffer,\ .length=bufferLength,\ diff --git a/src/base/type_system/init.c b/src/base/type_system/init.c index 729da9f..6d60aea 100644 --- a/src/base/type_system/init.c +++ b/src/base/type_system/init.c @@ -42,31 +42,31 @@ void ktDescriptors_initKerepTypes(){ // base type arrays - kt_register(Array_char, ktId_ArrayChar, Array_char_freeValues, NULL); - kt_register(Array_bool, ktId_ArrayBool, Array_bool_freeValues, NULL); - kt_register(Array_float32, ktId_ArrayFloat32, Array_float32_freeValues, NULL); - kt_register(Array_float64, ktId_ArrayFloat64, Array_float64_freeValues, NULL); - kt_register(Array_int8, ktId_ArrayInt8, Array_int8_freeValues, NULL); - kt_register(Array_uint8, ktId_ArrayUInt8, Array_uint8_freeValues, NULL); - kt_register(Array_int16, ktId_ArrayInt16, Array_int16_freeValues, NULL); - kt_register(Array_uint16, ktId_ArrayUInt16, Array_uint16_freeValues, NULL); - kt_register(Array_int32, ktId_ArrayInt32, Array_int32_freeValues, NULL); - kt_register(Array_uint32, ktId_ArrayUInt32, Array_uint32_freeValues, NULL); - kt_register(Array_int64, ktId_ArrayInt64, Array_int64_freeValues, NULL); - kt_register(Array_uint64, ktId_ArrayUInt64, Array_uint64_freeValues, NULL); + kt_register(Array_char, ktId_ArrayChar, (freeMembers_t)Array_char_freeValues, NULL); + kt_register(Array_bool, ktId_ArrayBool, (freeMembers_t)Array_bool_freeValues, NULL); + kt_register(Array_float32, ktId_ArrayFloat32, (freeMembers_t)Array_float32_freeValues, NULL); + kt_register(Array_float64, ktId_ArrayFloat64, (freeMembers_t)Array_float64_freeValues, NULL); + kt_register(Array_int8, ktId_ArrayInt8, (freeMembers_t)Array_int8_freeValues, NULL); + kt_register(Array_uint8, ktId_ArrayUInt8, (freeMembers_t)Array_uint8_freeValues, NULL); + kt_register(Array_int16, ktId_ArrayInt16, (freeMembers_t)Array_int16_freeValues, NULL); + kt_register(Array_uint16, ktId_ArrayUInt16, (freeMembers_t)Array_uint16_freeValues, NULL); + kt_register(Array_int32, ktId_ArrayInt32, (freeMembers_t)Array_int32_freeValues, NULL); + kt_register(Array_uint32, ktId_ArrayUInt32, (freeMembers_t)Array_uint32_freeValues, NULL); + kt_register(Array_int64, ktId_ArrayInt64, (freeMembers_t)Array_int64_freeValues, NULL); + kt_register(Array_uint64, ktId_ArrayUInt64, (freeMembers_t)Array_uint64_freeValues, NULL); // base type array pointers - kt_register(Array_char*, ktId_ArrayCharPtr, Array_char_freeValues, NULL); - kt_register(Array_bool*, ktId_ArrayBoolPtr, Array_bool_freeValues, NULL); - kt_register(Array_float32*, ktId_ArrayFloat32Ptr, Array_float32_freeValues, NULL); - kt_register(Array_float64*, ktId_ArrayFloat64Ptr, Array_float64_freeValues, NULL); - kt_register(Array_int8*, ktId_ArrayInt8Ptr, Array_int8_freeValues, NULL); - kt_register(Array_uint8*, ktId_ArrayUInt8Ptr, Array_uint8_freeValues, NULL); - kt_register(Array_int16*, ktId_ArrayInt16Ptr, Array_int16_freeValues, NULL); - kt_register(Array_uint16*, ktId_ArrayUInt16Ptr, Array_uint16_freeValues, NULL); - kt_register(Array_int32*, ktId_ArrayInt32Ptr, Array_int32_freeValues, NULL); - kt_register(Array_uint32*, ktId_ArrayUInt32Ptr, Array_uint32_freeValues, NULL); - kt_register(Array_int64*, ktId_ArrayInt64Ptr, Array_int64_freeValues, NULL); - kt_register(Array_uint64*, ktId_ArrayUInt64Ptr, Array_uint64_freeValues, NULL); + kt_register(Array_char*, ktId_ArrayCharPtr, (freeMembers_t)Array_char_freeValues, NULL); + kt_register(Array_bool*, ktId_ArrayBoolPtr, (freeMembers_t)Array_bool_freeValues, NULL); + kt_register(Array_float32*, ktId_ArrayFloat32Ptr, (freeMembers_t)Array_float32_freeValues, NULL); + kt_register(Array_float64*, ktId_ArrayFloat64Ptr, (freeMembers_t)Array_float64_freeValues, NULL); + kt_register(Array_int8*, ktId_ArrayInt8Ptr, (freeMembers_t)Array_int8_freeValues, NULL); + kt_register(Array_uint8*, ktId_ArrayUInt8Ptr, (freeMembers_t)Array_uint8_freeValues, NULL); + kt_register(Array_int16*, ktId_ArrayInt16Ptr, (freeMembers_t)Array_int16_freeValues, NULL); + kt_register(Array_uint16*, ktId_ArrayUInt16Ptr, (freeMembers_t)Array_uint16_freeValues, NULL); + kt_register(Array_int32*, ktId_ArrayInt32Ptr, (freeMembers_t)Array_int32_freeValues, NULL); + kt_register(Array_uint32*, ktId_ArrayUInt32Ptr, (freeMembers_t)Array_uint32_freeValues, NULL); + kt_register(Array_int64*, ktId_ArrayInt64Ptr, (freeMembers_t)Array_int64_freeValues, NULL); + kt_register(Array_uint64*, ktId_ArrayUInt64Ptr, (freeMembers_t)Array_uint64_freeValues, NULL); // base type autoarrs kt_register(Autoarr_char, ktId_AutoarrChar, ____Autoarr_free_char, NULL); diff --git a/src/base/type_system/ktDescriptor.h b/src/base/type_system/ktDescriptor.h index a12facb..4213dd9 100644 --- a/src/base/type_system/ktDescriptor.h +++ b/src/base/type_system/ktDescriptor.h @@ -7,12 +7,14 @@ extern "C" { #include "../std.h" #include "ktId.h" +typedef void (*freeMembers_t)(void*); +typedef char* (*toString_t)(void* obj, uint32 fmt); typedef struct ktDescriptor{ char* name; ktId id; uint16 size; - void (*freeMembers)(void*); // NULL or function which frees all struct members - char* (*toString)(void* obj, uint32 fmt); // NULL or function which generates string representaion of object + freeMembers_t freeMembers; // NULL or function which frees all struct members + toString_t toString; // NULL or function which generates string representaion of object } ktDescriptor; #if __cplusplus