iron_map.h 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. #pragma once
  2. #include <stdint.h>
  3. #include "iron_array.h"
  4. typedef struct i32_map {
  5. char_ptr_array_t *keys;
  6. i32_array_t *values;
  7. } i32_map_t;
  8. typedef struct f32_map {
  9. char_ptr_array_t *keys;
  10. f32_array_t *values;
  11. } f32_map_t;
  12. typedef struct any_map {
  13. char_ptr_array_t *keys;
  14. any_array_t *values;
  15. } any_map_t;
  16. void i32_map_set(i32_map_t *m, char *k, int v);
  17. void f32_map_set(f32_map_t *m, char *k, float v);
  18. void any_map_set(any_map_t *m, char *k, void *v);
  19. int32_t i32_map_get(i32_map_t *m, char *k);
  20. float f32_map_get(f32_map_t *m, char *k);
  21. void *any_map_get(any_map_t *m, char *k);
  22. void map_delete(any_map_t *m, char *k);
  23. any_array_t *map_keys(any_map_t *m);
  24. i32_map_t *i32_map_create();
  25. any_map_t *any_map_create();
  26. // imap
  27. typedef struct i32_imap {
  28. i32_array_t *keys;
  29. i32_array_t *values;
  30. } i32_imap_t;
  31. typedef struct any_imap {
  32. i32_array_t *keys;
  33. any_array_t *values;
  34. } any_imap_t;
  35. void i32_imap_set(i32_imap_t *m, int k, int v);
  36. void any_imap_set(any_imap_t *m, int k, void *v);
  37. int i32_imap_get(i32_imap_t *m, int k);
  38. void *any_imap_get(any_imap_t *m, int k);
  39. void imap_delete(any_imap_t *m, int k);
  40. i32_array_t *imap_keys(any_imap_t *m);
  41. any_imap_t *any_imap_create();