some Array improvements
This commit is contained in:
parent
3a20caf380
commit
29a5b22286
@ -14,3 +14,13 @@ Array_define(int64)
|
|||||||
Array_define(uint64)
|
Array_define(uint64)
|
||||||
|
|
||||||
Array_define(Unitype)
|
Array_define(Unitype)
|
||||||
|
|
||||||
|
void Array_Unitype_free_(Array_Unitype* array, bool freeMembers){
|
||||||
|
if(freeMembers) for (int32 i; i<array->length; i++)
|
||||||
|
Unitype_free(array->values[i]);
|
||||||
|
if(array->allocatedOnHeap)
|
||||||
|
free(array->values);
|
||||||
|
}
|
||||||
|
|
||||||
|
void __Array_Unitype_free_(void* ar)
|
||||||
|
{ Array_Unitype_free_(ar, true); }
|
||||||
|
|||||||
@ -22,6 +22,10 @@ Array_declare(uint64)
|
|||||||
|
|
||||||
Array_declare(Unitype)
|
Array_declare(Unitype)
|
||||||
|
|
||||||
|
/// use this function instead of auto generated
|
||||||
|
void Array_Unitype_free_(Array_Unitype* array, bool freeMembers);
|
||||||
|
void __Array_Unitype_free_(void* ar);
|
||||||
|
|
||||||
#if __cplusplus
|
#if __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -31,7 +31,7 @@ static inline Array_##type Array_##type##_fromBuffer(type* buffer, uint32 buffer
|
|||||||
};\
|
};\
|
||||||
}\
|
}\
|
||||||
\
|
\
|
||||||
static inline void Array_##type##_freeValues(Array_##type* array){\
|
static inline void Array_##type##_free(Array_##type* array){\
|
||||||
if(array->allocatedOnHeap)\
|
if(array->allocatedOnHeap)\
|
||||||
free(array->values);\
|
free(array->values);\
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
#include "string.h"
|
#include "string.h"
|
||||||
|
|
||||||
ktid_define(string);
|
ktid_define(string);
|
||||||
|
Array_define(string);
|
||||||
|
|
||||||
// copies str content to new char pointer value (adding '\0' at the end)
|
// copies str content to new char pointer value (adding '\0' at the end)
|
||||||
char* string_extract(string str){
|
char* string_extract(string str){
|
||||||
|
|||||||
@ -5,6 +5,7 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "../base/base.h"
|
#include "../base/base.h"
|
||||||
|
#include "../Array/Array.h"
|
||||||
|
|
||||||
// my fixed length string struct
|
// my fixed length string struct
|
||||||
// doesn't store '\0' at the end
|
// doesn't store '\0' at the end
|
||||||
@ -13,6 +14,7 @@ typedef struct string{
|
|||||||
uint64 length; // amount of chars in ptr value
|
uint64 length; // amount of chars in ptr value
|
||||||
} string;
|
} string;
|
||||||
ktid_declare(string);
|
ktid_declare(string);
|
||||||
|
Array_declare(string);
|
||||||
|
|
||||||
static const string stringNull={NULL,0};
|
static const string stringNull={NULL,0};
|
||||||
|
|
||||||
|
|||||||
@ -1,3 +1,9 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#if __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "std.h"
|
#include "std.h"
|
||||||
|
|
||||||
PACK_ENUM(Endian,
|
PACK_ENUM(Endian,
|
||||||
@ -7,3 +13,7 @@ PACK_ENUM(Endian,
|
|||||||
);
|
);
|
||||||
|
|
||||||
Endian getEndian();
|
Endian getEndian();
|
||||||
|
|
||||||
|
#if __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|||||||
@ -29,18 +29,18 @@ void ktDescriptors_initKerepTypes(){
|
|||||||
|
|
||||||
|
|
||||||
// base type arrays
|
// base type arrays
|
||||||
kt_register(Array_char, (freeMembers_t)Array_char_freeValues, NULL);
|
kt_register(Array_char, (freeMembers_t)Array_char_free, NULL);
|
||||||
kt_register(Array_bool, (freeMembers_t)Array_bool_freeValues, NULL);
|
kt_register(Array_bool, (freeMembers_t)Array_bool_free, NULL);
|
||||||
kt_register(Array_float32, (freeMembers_t)Array_float32_freeValues, NULL);
|
kt_register(Array_float32, (freeMembers_t)Array_float32_free, NULL);
|
||||||
kt_register(Array_float64, (freeMembers_t)Array_float64_freeValues, NULL);
|
kt_register(Array_float64, (freeMembers_t)Array_float64_free, NULL);
|
||||||
kt_register(Array_int8, (freeMembers_t)Array_int8_freeValues, NULL);
|
kt_register(Array_int8, (freeMembers_t)Array_int8_free, NULL);
|
||||||
kt_register(Array_uint8, (freeMembers_t)Array_uint8_freeValues, NULL);
|
kt_register(Array_uint8, (freeMembers_t)Array_uint8_free, NULL);
|
||||||
kt_register(Array_int16, (freeMembers_t)Array_int16_freeValues, NULL);
|
kt_register(Array_int16, (freeMembers_t)Array_int16_free, NULL);
|
||||||
kt_register(Array_uint16, (freeMembers_t)Array_uint16_freeValues, NULL);
|
kt_register(Array_uint16, (freeMembers_t)Array_uint16_free, NULL);
|
||||||
kt_register(Array_int32, (freeMembers_t)Array_int32_freeValues, NULL);
|
kt_register(Array_int32, (freeMembers_t)Array_int32_free, NULL);
|
||||||
kt_register(Array_uint32, (freeMembers_t)Array_uint32_freeValues, NULL);
|
kt_register(Array_uint32, (freeMembers_t)Array_uint32_free, NULL);
|
||||||
kt_register(Array_int64, (freeMembers_t)Array_int64_freeValues, NULL);
|
kt_register(Array_int64, (freeMembers_t)Array_int64_free, NULL);
|
||||||
kt_register(Array_uint64, (freeMembers_t)Array_uint64_freeValues, NULL);
|
kt_register(Array_uint64, (freeMembers_t)Array_uint64_free, NULL);
|
||||||
|
|
||||||
// base type autoarrs
|
// base type autoarrs
|
||||||
kt_register(Autoarr_char, ____Autoarr_free_char, NULL);
|
kt_register(Autoarr_char, ____Autoarr_free_char, NULL);
|
||||||
@ -58,7 +58,7 @@ void ktDescriptors_initKerepTypes(){
|
|||||||
|
|
||||||
// Unitype
|
// Unitype
|
||||||
kt_register(Unitype, __UnitypePtr_free, NULL);
|
kt_register(Unitype, __UnitypePtr_free, NULL);
|
||||||
kt_register(Array_Unitype, (freeMembers_t)Array_Unitype_freeValues, NULL);
|
kt_register(Array_Unitype, __Array_Unitype_free_, NULL);
|
||||||
kt_register(Autoarr_Unitype, ____Autoarr_free_Unitype_, NULL);
|
kt_register(Autoarr_Unitype, ____Autoarr_free_Unitype_, NULL);
|
||||||
// replacing autogenerated freear() function to custom
|
// replacing autogenerated freear() function to custom
|
||||||
Autoarr_Unitype* _uar=Autoarr_create(Unitype, 1, 1);
|
Autoarr_Unitype* _uar=Autoarr_create(Unitype, 1, 1);
|
||||||
@ -81,6 +81,7 @@ void ktDescriptors_initKerepTypes(){
|
|||||||
|
|
||||||
// string
|
// string
|
||||||
kt_register(string, NULL, NULL);
|
kt_register(string, NULL, NULL);
|
||||||
|
kt_register(Array_string, (freeMembers_t)Array_string_free, NULL);
|
||||||
kt_register(Autoarr_string, ____Autoarr_free_string, NULL);
|
kt_register(Autoarr_string, ____Autoarr_free_string, NULL);
|
||||||
// StringBuilder
|
// StringBuilder
|
||||||
kt_register(StringBuilder, __StringBuilder_free, NULL);
|
kt_register(StringBuilder, __StringBuilder_free, NULL);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user