Skip to content

Commit 09ef5d9

Browse files
committed
Add bsp_array_block macro.
1 parent fb51176 commit 09ef5d9

File tree

1 file changed

+44
-0
lines changed

1 file changed

+44
-0
lines changed

include/binsparse/array.h

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,50 @@ void bsp_destroy_array_t(bsp_array_t array) {
7373
free(array.data);
7474
}
7575

76+
#define bsp_array_block(array, ptr, code_block) \
77+
{ \
78+
if (array.type == BSP_UINT8) { \
79+
uint8_t* ptr = array.data; \
80+
code_block; \
81+
} else if (array.type == BSP_UINT16) { \
82+
uint16_t* ptr = array.data; \
83+
code_block; \
84+
} else if (array.type == BSP_UINT32) { \
85+
uint32_t* ptr = array.data; \
86+
code_block; \
87+
} else if (array.type == BSP_UINT64) { \
88+
uint64_t* ptr = array.data; \
89+
code_block; \
90+
} else if (array.type == BSP_INT8) { \
91+
int8_t* ptr = array.data; \
92+
code_block; \
93+
} else if (array.type == BSP_INT16) { \
94+
int16_t* ptr = array.data; \
95+
code_block; \
96+
} else if (array.type == BSP_INT32) { \
97+
int32_t* ptr = array.data; \
98+
code_block; \
99+
} else if (array.type == BSP_INT64) { \
100+
int64_t* ptr = array.data; \
101+
code_block; \
102+
} else if (array.type == BSP_FLOAT32) { \
103+
float* ptr = array.data; \
104+
code_block; \
105+
} else if (array.type == BSP_FLOAT64) { \
106+
double* ptr = array.data; \
107+
code_block; \
108+
} else if (array.type == BSP_BINT8) { \
109+
int8_t* ptr = array.data; \
110+
code_block; \
111+
} else if (array.type == BSP_COMPLEX_FLOAT32) { \
112+
float _Complex* ptr = array.data; \
113+
code_block; \
114+
} else if (array.type == BSP_COMPLEX_FLOAT64) { \
115+
double _Complex* ptr = array.data; \
116+
code_block; \
117+
} \
118+
}
119+
76120
// array[index] = value
77121
#define bsp_array_write(array, index, value) \
78122
{ \

0 commit comments

Comments
 (0)