diff --git a/src/arrays.c b/src/arrays.c new file mode 100644 index 0000000..6cf1c03 --- /dev/null +++ b/src/arrays.c @@ -0,0 +1,313 @@ +#include "arrays.h" +#include + +bool bool_array_get(const bool_array *array, int32_t index) { + if (index >= 0 && index < array->length) { + return array->items[index]; + } + + return 0; +} + +//@param index: set to -1 to put it at the end of the array +void bool_array_set(bool_array *array, const bool value, int32_t index) { + if (!array) { + return; + } + + if (array->capacity <= array->length && index <= 0 && index < array->length) { + return; + } + + if (index == -1) { + array->items[array->length - 1] = value; + return; + } + + array->items[index] = value; +} + +char char_array_get(const char_array *array, int32_t index) { + if (index >= 0 && index < array->length) { + return array->items[index]; + } + + return 0; +} +//@param index: set to -1 to put it at the end of the array +void char_array_set(char_array *array, const char value, int32_t index) { + if (!array) { + return; + } + + if (array->capacity <= array->length) { + return; + } + + if (index == -1) { + array->items[array->length - 1] = value; + return; + } + + array->items[index] = value; +} + +int8_t int8_array_get(const int8_array *array, int32_t index) { + if (index >= 0 && index < array->length) { + return array->items[index]; + } + + return 0; +} + +//@param index: set to -1 to put it at the end of the array +void int8_array_set(int8_array *array, const int8_t value, int32_t index) { + if (!array) { + return; + } + + if (array->capacity <= array->length) { + return; + } + + if (index == -1) { + array->items[array->length - 1] = value; + return; + } + + array->items[index] = value; +} + +int16_t int16_array_get(const int16_array *array, int32_t index) { + if (index >= 0 && index < array->length) { + return array->items[index]; + } + + return 0; +} + +//@param index: set to -1 to put it at the end of the array +void int16_array_set(int16_array *array, const int16_t value, int32_t index) { + if (!array) { + return; + } + + if (array->capacity <= array->length) { + return; + } + + if (index == -1) { + array->items[array->length - 1] = value; + return; + } + + array->items[index] = value; +} + +int32_t int32_array_get(const int32_array *array, int32_t index) { + if (index >= 0 && index < array->length) { + return array->items[index]; + } + + return 0; +} + +//@param index: set to -1 to put it at the end of the array +void int32_array_set(int32_array *array, const int32_t value, int32_t index) { + if (!array) { + return; + } + + if (array->capacity <= array->length) { + return; + } + + if (index == -1) { + array->items[array->length - 1] = value; + return; + } + + array->items[index] = value; +} + +int64_t int64_array_get(const int64_array *array, int32_t index) { + if (index >= 0 && index < array->length) { + return array->items[index]; + } + + return 0; +} + +//@param index: set to -1 to put it at the end of the array +void int64_array_set(int64_array *array, const int64_t value, int32_t index) { + if (!array) { + return; + } + + if (array->capacity <= array->length) { + return; + } + + if (index == -1) { + array->items[array->length - 1] = value; + return; + } + + array->items[index] = value; +} + +uint8_t uint8_array_get(const uint8_array *array, int32_t index) { + if (index >= 0 && index < array->length) { + return array->items[index]; + } + + return 0; +} + +//@param index: set to -1 to put it at the end of the array +void uint8_array_set(uint8_array *array, const uint8_t value, int32_t index) { + if (!array) { + return; + } + + if (array->capacity <= array->length) { + return; + } + + if (index == -1) { + array->items[array->length - 1] = value; + return; + } + + array->items[index] = value; +} + +uint16_t uint16_array_get(const uint16_array *array, int32_t index) { + if (index >= 0 && index < array->length) { + return array->items[index]; + } + + return 0; +} + +//@param index: set to -1 to put it at the end of the array +void uint16_array_set(uint16_array *array, const uint16_t value, int32_t index) { + if (!array) { + return; + } + + if (array->capacity <= array->length) { + return; + } + + if (index == -1) { + array->items[array->length - 1] = value; + return; + } + + array->items[index] = value; +} + +uint32_t uint32_array_get(const uint32_array *array, int32_t index) { + if (index >= 0 && index < array->length) { + return array->items[index]; + } + + return 0; +} + +//@param index: set to -1 to put it at the end of the array +void uint32_array_set(uint32_array *array, const uint32_t value, int32_t index) { + if (!array) { + return; + } + + if (array->capacity <= array->length) { + return; + } + + if (index == -1) { + array->items[array->length - 1] = value; + return; + } + + array->items[index] = value; +} + +uint64_t uint64_array_get(const uint64_array *array, int32_t index) { + if (index >= 0 && index < array->length) { + return array->items[index]; + } + + return 0; +} + +//@param index: set to -1 to put it at the end of the array +void uint64_array_set(uint64_array *array, const uint64_t value, int32_t index) { + if (!array) { + return; + } + + if (array->capacity <= array->length) { + return; + } + + if (index == -1) { + array->items[array->length - 1] = value; + return; + } + + array->items[index] = value; +} + +float float_array_get(const float_array *array, int32_t index) { + if (index >= 0 && index < array->length) { + return array->items[index]; + } + + return 0; +} + +//@param index: set to -1 to put it at the end of the array +void float_array_set(float_array *array, const float value, int32_t index) { + if (!array) { + return; + } + + if (array->capacity <= array->length) { + return; + } + + if (index == -1) { + array->items[array->length - 1] = value; + return; + } + + array->items[index] = value; +} + +double double_array_get(const double_array *array, int32_t index) { + if (index >= 0 && index < array->length) { + return array->items[index]; + } + + return 0; +} + +//@param index: set to -1 to put it at the end of the array +void double_array_set(double_array *array, const double value, int32_t index) { + if (!array) { + return; + } + + if (array->capacity <= array->length) { + return; + } + + if (index == -1) { + array->items[array->length - 1] = value; + return; + } + + array->items[index] = value; +} diff --git a/src/arrays.h b/src/arrays.h new file mode 100644 index 0000000..082ac58 --- /dev/null +++ b/src/arrays.h @@ -0,0 +1,108 @@ +#ifndef ARRAYS_H +#define ARRAYS_H + +#include +#include + +// --- Boolean --- +typedef struct { + bool *items; + int32_t length; + int32_t capacity; +} bool_array; + +bool bool_array_get(const bool_array *array, int32_t index); + +// --- Char (Strings/Bytes) --- +typedef struct { + char *items; + int32_t length; + int32_t capacity; +} char_array; + +char char_array_get(const char_array *array, int32_t index); + +// --- Signed Integers --- +typedef struct { + int8_t *items; + int32_t length; + int32_t capacity; +} int8_array; + +int8_t int8_array_get(const int8_array *array, int32_t index); + +typedef struct { + int16_t *items; + int32_t length; + int32_t capacity; +} int16_array; + +int16_t int16_array_get(const int16_array *array, int32_t index); + +typedef struct { + int32_t *items; + int32_t length; + int32_t capacity; +} int32_array; + +int32_t int32_array_get(const int32_array *array, int32_t index); + +typedef struct { + int64_t *items; + int32_t length; + int32_t capacity; +} int64_array; + +int64_t int64_array_get(const int64_array *array, int32_t index); + +// --- Unsigned Integers --- +typedef struct { + uint8_t *items; + int32_t length; + int32_t capacity; +} uint8_array; + +uint8_t uint8_array_get(const uint8_array *array, int32_t index); + +typedef struct { + uint16_t *items; + int32_t length; + int32_t capacity; +} uint16_array; + +uint16_t uint16_array_get(const uint16_array *array, int32_t index); + +typedef struct { + uint32_t *items; + int32_t length; + int32_t capacity; +} uint32_array; + +uint32_t uint32_array_get(const uint32_array *array, int32_t index); + +typedef struct { + uint64_t *items; + int32_t length; + int32_t capacity; +} uint64_array; + +uint64_t uint64_array_get(const uint64_array *array, int32_t index); + +// --- Floating Point --- +typedef struct { + float *items; + int32_t length; + int32_t capacity; +} float_array; + +float float_array_get(const float_array *array, int32_t index); + +typedef struct { + double *items; + int32_t length; + int32_t capacity; +} double_array; + +double double_array_get(const double_array *array, int32_t index); + +#endif