added array definiitions with getter and setter for each type
This commit is contained in:
313
src/arrays.c
Normal file
313
src/arrays.c
Normal 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
108
src/arrays.h
Normal 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
|
||||||
Reference in New Issue
Block a user