vector_helpers.h 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. #ifndef CX_ZIVUOS_VECTOR_HELPERS_H_INCLUDED
  2. #define CX_ZIVUOS_VECTOR_HELPERS_H_INCLUDED
  3. #include <stdint.h>
  4. #include <stddef.h>
  5. #include <stdbool.h>
  6. #include "models.h"
  7. #include "vector.h"
  8. static inline uintptr_t zv_vector_get_unumber(
  9. zv_vector_t *self,
  10. size_t count
  11. ) {
  12. return zv_vector_get(self, count).unumber;
  13. }
  14. static inline intptr_t zv_vector_get_number(
  15. zv_vector_t *self,
  16. size_t count
  17. ) {
  18. return zv_vector_get(self, count).number;
  19. }
  20. static inline void * zv_vector_get_pointer(
  21. zv_vector_t *self,
  22. size_t count
  23. ) {
  24. return zv_vector_get(self, count).pointer;
  25. }
  26. static inline char * zv_vector_get_cstring(
  27. zv_vector_t *self,
  28. size_t count
  29. ) {
  30. return zv_vector_get(self, count).cstring;
  31. }
  32. static inline size_t zv_vector_push_unumber(
  33. zv_vector_t *self,
  34. uintptr_t unumber
  35. ) {
  36. zv_universal_t target;
  37. target.unumber = unumber;
  38. return zv_vector_push(self, target);
  39. }
  40. static inline size_t zv_vector_push_number(
  41. zv_vector_t *self,
  42. intptr_t number
  43. ) {
  44. zv_universal_t target;
  45. target.number = number;
  46. return zv_vector_push(self, target);
  47. }
  48. static inline size_t zv_vector_push_pointer(
  49. zv_vector_t *self,
  50. void *pointer
  51. ) {
  52. zv_universal_t target;
  53. target.pointer = pointer;
  54. return zv_vector_push(self, target);
  55. }
  56. static inline size_t zv_vector_push_cstring(
  57. zv_vector_t *self,
  58. char *cstring
  59. ) {
  60. zv_universal_t target;
  61. target.cstring = cstring;
  62. return zv_vector_push(self, target);
  63. }
  64. static inline uintptr_t zv_vector_pop_unumber(
  65. zv_vector_t *self,
  66. size_t count
  67. ) {
  68. return zv_vector_pop(self, count).unumber;
  69. }
  70. static inline intptr_t zv_vector_pop_number(
  71. zv_vector_t *self,
  72. size_t count
  73. ) {
  74. return zv_vector_pop(self, count).number;
  75. }
  76. static inline void * zv_vector_pop_pointer(
  77. zv_vector_t *self,
  78. size_t count
  79. ) {
  80. return zv_vector_pop(self, count).pointer;
  81. }
  82. static inline char * zv_vector_pop_cstring(
  83. zv_vector_t *self,
  84. size_t count
  85. ) {
  86. return zv_vector_pop(self, count).cstring;
  87. }
  88. static inline bool zv_vector_insert_unumber(
  89. zv_vector_t *self,
  90. uintptr_t target,
  91. size_t count
  92. ) {
  93. zv_universal_t translator;
  94. translator.unumber = target;
  95. return zv_vector_insert(self, translator, count);
  96. }
  97. static inline bool zv_vector_insert_number(
  98. zv_vector_t *self,
  99. intptr_t target,
  100. size_t count
  101. ) {
  102. zv_universal_t translator;
  103. translator.number = target;
  104. return zv_vector_insert(self, translator, count);
  105. }
  106. static inline bool zv_vector_insert_pointer(
  107. zv_vector_t *self,
  108. void *target,
  109. size_t count
  110. ) {
  111. zv_universal_t translator;
  112. translator.pointer = target;
  113. return zv_vector_insert(self, translator, count);
  114. }
  115. static inline bool zv_vector_insert_cstring(
  116. zv_vector_t *self,
  117. char *target,
  118. size_t count
  119. ) {
  120. zv_universal_t translator;
  121. translator.cstring = target;
  122. return zv_vector_insert(self, translator, count);
  123. }
  124. #endif