array.h 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. #ifndef _ARRAY_H_
  2. #define _ARRAY_H_
  3. #include "common.h"
  4. #include <stdint.h>
  5. #define ARRAY_TYPE_NONE 0
  6. #define ARRAY_TYPE_INT 1
  7. #define ARRAY_TYPE_STRING 2
  8. #define ARRAY_TYPE_FLOAT 3
  9. #define ARRAY_TYPE_PTR 4
  10. #ifndef _HAVE_ARRAY_TYPE
  11. #define _HAVE_ARRAY_TYPE
  12. typedef struct array_s {
  13. uint32_t type;
  14. uint32_t length;
  15. uint32_t size;
  16. void *data;
  17. } array_t;
  18. #endif
  19. /* defined in array.c */
  20. void array_init(array_t *a, uint32_t type);
  21. array_t *array_create(uint32_t type);
  22. array_t *array_copy(array_t *a);
  23. int array_cmp(array_t *a1, array_t *a2);
  24. void array_free(array_t *a, int freestruct);
  25. int array_push_int(array_t *a, uint32_t v);
  26. int array_push_float(array_t *a, float v);
  27. int array_push_string(array_t *a, char* v);
  28. int array_push_ptr(array_t *a, void *v);
  29. int array_push_colour(array_t *a, colour_t *c);
  30. int array_push_v3t(array_t *a, v3_t *v);
  31. int array_push_v2t(array_t *a, v2_t *v);
  32. int array_set_int(array_t *a, uint32_t v, int i);
  33. int array_set_float(array_t *a, float v, int i);
  34. int array_set_string(array_t *a, char* v, int i);
  35. int array_set_ptr(array_t *a, void* v, int i);
  36. uint32_t array_pop_int(array_t *a);
  37. float array_pop_float(array_t *a);
  38. char* array_pop_string(array_t *a);
  39. void *array_pop_ptr(array_t *a);
  40. uint32_t array_get_int(array_t *a, int i);
  41. float array_get_float(array_t *a, int i);
  42. char* array_get_string(array_t *a, int i);
  43. void *array_get_ptr(array_t *a, int i);
  44. int array_find_int(array_t *a, uint32_t v);
  45. int array_find_float(array_t *a, float v);
  46. int array_find_string(array_t *a, char* v);
  47. int array_find_ptr(array_t *a, void *v);
  48. int array_remove_string(array_t *a, char* v);
  49. array_t *array_split(char* str, char* s);
  50. char* array_join(array_t *a, char* glue, int start);
  51. #endif