added array definiitions with getter and setter for each type

This commit is contained in:
2026-01-08 21:15:35 +01:00
parent 70c15db109
commit 4864f01af3
2 changed files with 421 additions and 0 deletions

313
src/arrays.c Normal file
View File

@@ -0,0 +1,313 @@
#include "arrays.h"
#include <stdint.h>
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;
}

108
src/arrays.h Normal file
View File

@@ -0,0 +1,108 @@
#ifndef ARRAYS_H
#define ARRAYS_H
#include <stdbool.h>
#include <stdint.h>
// --- 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