diff --git a/DtsodC/src/Autoarr/new.h b/DtsodC/src/Autoarr/new.h index e7a7369..bdf5aff 100644 --- a/DtsodC/src/Autoarr/new.h +++ b/DtsodC/src/Autoarr/new.h @@ -1,3 +1,8 @@ +#include "../base/base.h" + +#ifndef AUTOARR_H +#define AUTOARR_H + #define Autoarr_length(autoarr) (uint32)(autoarr->max_block_length*(autoarr->max_blocks_count-1)+autoarr->block_length) #define Autoarr_max_length(autoarr) (uint32)(autoarr->max_block_length*autoarr->max_blocks_count) @@ -13,35 +18,34 @@ typedef struct Autoarr_##type{ \ void (*Autoarr_set)(struct Autoarr_##type* ar, uint32 index, type element); \ } Autoarr_##type; \ \ -void Autoarr_add_##type(struct Autoarr_##type* ar, type element){ \ +void Autoarr_add_##type(Autoarr_##type* ar, type element){ \ if(!ar->values){ \ ar->values=malloc(ar->max_blocks_count*sizeof(type*)); \ - ar->values[0]=malloc(ar->max_block_length*sizeof(type)); \ goto create_block; \ } \ if(ar->block_length==ar->max_block_length){ \ if (ar->blocks_count>=ar->max_blocks_count) throw(ERR_MAXLENGTH); \ ar->block_length=0; \ create_block: \ - ar->values[ar->blocks_count]=malloc(ar->max_block_length*typesize(ar->type)); \ + ar->values[ar->blocks_count]=malloc(ar->max_block_length*sizeof(type)); \ ar->blocks_count++; \ } \ ar->values[ar->blocks_count-1][ar->block_length]=element; \ ar->block_length++; \ } \ \ -type Autoarr_get_##type(struct Autoarr_##type* ar, uint32 index){ \ +type Autoarr_get_##type(Autoarr_##type* ar, uint32 index){ \ if(index>=Autoarr_length(ar)) throw(ERR_WRONGINDEX); \ return ar->values[index/ar->max_block_length][index%ar->max_block_length]; \ } \ \ -void Autoarr_set_##type(struct Autoarr_##type* ar, uint32 index, type element){ \ +void Autoarr_set_##type(Autoarr_##type* ar, uint32 index, type element){ \ if(index>=Autoarr_length(ar)) throw(ERR_WRONGINDEX); \ ar->values[index/ar->max_block_length][index%ar->max_block_length]=element; \ } \ \ Autoarr_##type Autoarr_create_##type(uint16 max_blocks_count, uint16 max_block_length){ \ - return (Autoarr_##type)={ \ + return (Autoarr_##type){ \ .max_blocks_count=max_blocks_count, \ .blocks_count=0, \ .max_block_length=max_block_length, \ @@ -53,7 +57,7 @@ Autoarr_##type Autoarr_create_##type(uint16 max_blocks_count, uint16 max_block_l }; \ } \ \ -void Autoarr_clear_##type(Autoarr_##type ar){ \ +void Autoarr_clear_##type(Autoarr_##type* ar){ \ for(uint16 i=0; iblocks_count;i++) \ free(ar->values[i]); \ free(ar->values); \ @@ -65,3 +69,5 @@ void Autoarr_clear_##type(Autoarr_##type ar){ \ #define Autoarr(type) Autoarr_##type #define Autoarr_create(type, max_blocks_count, max_block_length) \ Autoarr_create_##type(max_blocks_count, max_block_length) + +#endif diff --git a/DtsodC/src/main.c b/DtsodC/src/main.c index d831adc..adc8834 100644 --- a/DtsodC/src/main.c +++ b/DtsodC/src/main.c @@ -1,12 +1,10 @@ #include "base/base.h" #include "tests/tests.h" -#include "SearchTree/SearchTree.h" -#include "Hashtable/hash.h" - int main(){ setlocale(LC_ALL, "en-US.Unicode"); printf("\e[92mdtsod parser in c language!\e[97m\n"); - test_all(); + //test_all(); + test_new(); return 0; } diff --git a/DtsodC/src/tests/new.c b/DtsodC/src/tests/new.c index 66168c7..6fdd7e2 100644 --- a/DtsodC/src/tests/new.c +++ b/DtsodC/src/tests/new.c @@ -1,8 +1,37 @@ -#include "new.h" +#include "tests.h" #include "../Autoarr/new.h" -#include "../base/base.h" +#ifndef Aaaa +#define Aaaa define_Autoarr(uint16) +#endif + +void printautoarr(Autoarr(uint16)* ar){ + printf("\e[94mAUTOARR:%lu\n" + " max_blocks_count: %u\n" + " blocks_count: %u\n" + " max_block_length: %u\n" + " block_length: %u\n" + " max_length: %u\n" + " length: %u\n", + sizeof(Autoarr(uint16)), + ar->max_blocks_count, + ar->blocks_count, + ar->max_block_length, + ar->block_length, + Autoarr_max_length(ar), + Autoarr_length(ar)); +} + +void fillar(Autoarr(uint16)* ar){ + for (uint16 i=0;i