fixed Array (again)
This commit is contained in:
parent
5e907327d6
commit
67680b8157
27
src/Array/Array.c
Normal file
27
src/Array/Array.c
Normal file
@ -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);
|
||||||
@ -16,13 +16,13 @@ typedef struct Array_##type{\
|
|||||||
\
|
\
|
||||||
static inline Array_##type Array_##type##_allocValues(uint32 length){\
|
static inline Array_##type Array_##type##_allocValues(uint32 length){\
|
||||||
return (Array_##type) {\
|
return (Array_##type) {\
|
||||||
.values=(type##*)malloc(sizeof(type)*length),\
|
.values=(type*)malloc(sizeof(type)*length),\
|
||||||
.length=length,\
|
.length=length,\
|
||||||
.allocatedOnHeap=true\
|
.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) {\
|
return (Array_##type) {\
|
||||||
.values=buffer,\
|
.values=buffer,\
|
||||||
.length=bufferLength,\
|
.length=bufferLength,\
|
||||||
|
|||||||
@ -42,31 +42,31 @@ void ktDescriptors_initKerepTypes(){
|
|||||||
|
|
||||||
|
|
||||||
// base type arrays
|
// base type arrays
|
||||||
kt_register(Array_char, ktId_ArrayChar, Array_char_freeValues, NULL);
|
kt_register(Array_char, ktId_ArrayChar, (freeMembers_t)Array_char_freeValues, NULL);
|
||||||
kt_register(Array_bool, ktId_ArrayBool, Array_bool_freeValues, NULL);
|
kt_register(Array_bool, ktId_ArrayBool, (freeMembers_t)Array_bool_freeValues, NULL);
|
||||||
kt_register(Array_float32, ktId_ArrayFloat32, Array_float32_freeValues, NULL);
|
kt_register(Array_float32, ktId_ArrayFloat32, (freeMembers_t)Array_float32_freeValues, NULL);
|
||||||
kt_register(Array_float64, ktId_ArrayFloat64, Array_float64_freeValues, NULL);
|
kt_register(Array_float64, ktId_ArrayFloat64, (freeMembers_t)Array_float64_freeValues, NULL);
|
||||||
kt_register(Array_int8, ktId_ArrayInt8, Array_int8_freeValues, NULL);
|
kt_register(Array_int8, ktId_ArrayInt8, (freeMembers_t)Array_int8_freeValues, NULL);
|
||||||
kt_register(Array_uint8, ktId_ArrayUInt8, Array_uint8_freeValues, NULL);
|
kt_register(Array_uint8, ktId_ArrayUInt8, (freeMembers_t)Array_uint8_freeValues, NULL);
|
||||||
kt_register(Array_int16, ktId_ArrayInt16, Array_int16_freeValues, NULL);
|
kt_register(Array_int16, ktId_ArrayInt16, (freeMembers_t)Array_int16_freeValues, NULL);
|
||||||
kt_register(Array_uint16, ktId_ArrayUInt16, Array_uint16_freeValues, NULL);
|
kt_register(Array_uint16, ktId_ArrayUInt16, (freeMembers_t)Array_uint16_freeValues, NULL);
|
||||||
kt_register(Array_int32, ktId_ArrayInt32, Array_int32_freeValues, NULL);
|
kt_register(Array_int32, ktId_ArrayInt32, (freeMembers_t)Array_int32_freeValues, NULL);
|
||||||
kt_register(Array_uint32, ktId_ArrayUInt32, Array_uint32_freeValues, NULL);
|
kt_register(Array_uint32, ktId_ArrayUInt32, (freeMembers_t)Array_uint32_freeValues, NULL);
|
||||||
kt_register(Array_int64, ktId_ArrayInt64, Array_int64_freeValues, NULL);
|
kt_register(Array_int64, ktId_ArrayInt64, (freeMembers_t)Array_int64_freeValues, NULL);
|
||||||
kt_register(Array_uint64, ktId_ArrayUInt64, Array_uint64_freeValues, NULL);
|
kt_register(Array_uint64, ktId_ArrayUInt64, (freeMembers_t)Array_uint64_freeValues, NULL);
|
||||||
// base type array pointers
|
// base type array pointers
|
||||||
kt_register(Array_char*, ktId_ArrayCharPtr, Array_char_freeValues, NULL);
|
kt_register(Array_char*, ktId_ArrayCharPtr, (freeMembers_t)Array_char_freeValues, NULL);
|
||||||
kt_register(Array_bool*, ktId_ArrayBoolPtr, Array_bool_freeValues, NULL);
|
kt_register(Array_bool*, ktId_ArrayBoolPtr, (freeMembers_t)Array_bool_freeValues, NULL);
|
||||||
kt_register(Array_float32*, ktId_ArrayFloat32Ptr, Array_float32_freeValues, NULL);
|
kt_register(Array_float32*, ktId_ArrayFloat32Ptr, (freeMembers_t)Array_float32_freeValues, NULL);
|
||||||
kt_register(Array_float64*, ktId_ArrayFloat64Ptr, Array_float64_freeValues, NULL);
|
kt_register(Array_float64*, ktId_ArrayFloat64Ptr, (freeMembers_t)Array_float64_freeValues, NULL);
|
||||||
kt_register(Array_int8*, ktId_ArrayInt8Ptr, Array_int8_freeValues, NULL);
|
kt_register(Array_int8*, ktId_ArrayInt8Ptr, (freeMembers_t)Array_int8_freeValues, NULL);
|
||||||
kt_register(Array_uint8*, ktId_ArrayUInt8Ptr, Array_uint8_freeValues, NULL);
|
kt_register(Array_uint8*, ktId_ArrayUInt8Ptr, (freeMembers_t)Array_uint8_freeValues, NULL);
|
||||||
kt_register(Array_int16*, ktId_ArrayInt16Ptr, Array_int16_freeValues, NULL);
|
kt_register(Array_int16*, ktId_ArrayInt16Ptr, (freeMembers_t)Array_int16_freeValues, NULL);
|
||||||
kt_register(Array_uint16*, ktId_ArrayUInt16Ptr, Array_uint16_freeValues, NULL);
|
kt_register(Array_uint16*, ktId_ArrayUInt16Ptr, (freeMembers_t)Array_uint16_freeValues, NULL);
|
||||||
kt_register(Array_int32*, ktId_ArrayInt32Ptr, Array_int32_freeValues, NULL);
|
kt_register(Array_int32*, ktId_ArrayInt32Ptr, (freeMembers_t)Array_int32_freeValues, NULL);
|
||||||
kt_register(Array_uint32*, ktId_ArrayUInt32Ptr, Array_uint32_freeValues, NULL);
|
kt_register(Array_uint32*, ktId_ArrayUInt32Ptr, (freeMembers_t)Array_uint32_freeValues, NULL);
|
||||||
kt_register(Array_int64*, ktId_ArrayInt64Ptr, Array_int64_freeValues, NULL);
|
kt_register(Array_int64*, ktId_ArrayInt64Ptr, (freeMembers_t)Array_int64_freeValues, NULL);
|
||||||
kt_register(Array_uint64*, ktId_ArrayUInt64Ptr, Array_uint64_freeValues, NULL);
|
kt_register(Array_uint64*, ktId_ArrayUInt64Ptr, (freeMembers_t)Array_uint64_freeValues, NULL);
|
||||||
|
|
||||||
// base type autoarrs
|
// base type autoarrs
|
||||||
kt_register(Autoarr_char, ktId_AutoarrChar, ____Autoarr_free_char, NULL);
|
kt_register(Autoarr_char, ktId_AutoarrChar, ____Autoarr_free_char, NULL);
|
||||||
|
|||||||
@ -7,12 +7,14 @@ extern "C" {
|
|||||||
#include "../std.h"
|
#include "../std.h"
|
||||||
#include "ktId.h"
|
#include "ktId.h"
|
||||||
|
|
||||||
|
typedef void (*freeMembers_t)(void*);
|
||||||
|
typedef char* (*toString_t)(void* obj, uint32 fmt);
|
||||||
typedef struct ktDescriptor{
|
typedef struct ktDescriptor{
|
||||||
char* name;
|
char* name;
|
||||||
ktId id;
|
ktId id;
|
||||||
uint16 size;
|
uint16 size;
|
||||||
void (*freeMembers)(void*); // NULL or function which frees all struct members
|
freeMembers_t freeMembers; // NULL or function which frees all struct members
|
||||||
char* (*toString)(void* obj, uint32 fmt); // NULL or function which generates string representaion of object
|
toString_t toString; // NULL or function which generates string representaion of object
|
||||||
} ktDescriptor;
|
} ktDescriptor;
|
||||||
|
|
||||||
#if __cplusplus
|
#if __cplusplus
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user