mirror of
https://github.com/krgamestudios/Toy.git
synced 2026-04-15 14:54:07 +10:00
I've brought the tests up to scratch, except for compounds im the parser, because I'm too damn tired to do that over SSH. It looks like collections are right-recursive, whixh was unintended but still works just fine. I've also added the '--verbose' flag to the repl to control the debugging output. Several obscure bugs have been fixed, and comments have been tweaked. Mustfail tests are still needed, but that's a low priority. See #142. Fixed #151
43 lines
1.2 KiB
C
43 lines
1.2 KiB
C
#pragma once
|
|
|
|
#include "toy_common.h"
|
|
#include "toy_value.h"
|
|
|
|
//standard generic array
|
|
typedef struct Toy_Array { //32 | 64 BITNESS
|
|
unsigned int capacity; //4 | 4
|
|
unsigned int count; //4 | 4
|
|
Toy_Value data[]; //- | -
|
|
} Toy_Array; //8 | 8
|
|
|
|
TOY_API Toy_Array* Toy_resizeArray(Toy_Array* array, unsigned int capacity);
|
|
|
|
//some useful sizes, could be swapped out as needed
|
|
#ifndef TOY_ARRAY_INITIAL_CAPACITY
|
|
#define TOY_ARRAY_INITIAL_CAPACITY 8
|
|
#endif
|
|
|
|
#ifndef TOY_ARRAY_EXPANSION_RATE
|
|
#define TOY_ARRAY_EXPANSION_RATE 2
|
|
#endif
|
|
|
|
//quick allocate
|
|
#ifndef TOY_ARRAY_ALLOCATE
|
|
#define TOY_ARRAY_ALLOCATE() Toy_resizeArray(NULL, TOY_ARRAY_INITIAL_CAPACITY)
|
|
#endif
|
|
|
|
//quick free
|
|
#ifndef TOY_ARRAY_FREE
|
|
#define TOY_ARRAY_FREE(array) Toy_resizeArray(array, 0)
|
|
#endif
|
|
|
|
//one line to expand the array
|
|
#ifndef TOY_ARRAY_EXPAND
|
|
#define TOY_ARRAY_EXPAND(array) (array = (array != NULL && (array)->count + 1 > (array)->capacity ? Toy_resizeArray(array, (array)->capacity * TOY_ARRAY_EXPANSION_RATE) : array))
|
|
#endif
|
|
|
|
//quick push back
|
|
#ifndef TOY_ARRAY_PUSHBACK
|
|
#define TOY_ARRAY_PUSHBACK(array, value) (TOY_ARRAY_EXPAND(array),(array)->data[(array)->count++] = (value))
|
|
#endif
|