86 #define BBARRAY_HEADER_SIZE (sizeof (BBArray) - sizeof (BBSize))
89 #define BBARRAY_MAX_DATASIZE (BBSIZE_MAX - sizeof (BBArray))
93 #define BBARRAY_MAX_LENGTH (BBARRAY_MAX_DATASIZE)
112 #define BBARRAY_SIZE_CALC(size, num_dims) \
113 (BBARRAY_HEADER_SIZE + (num_dims) * sizeof (int) + (size))
122 #define BBARRAY_SIZE(arr) BBARRAY_SIZE_CALC((arr)->size, (arr)->dims)
134 #define BBARRAY_DATAPTR_CALC(arr, num_dims) \
136 ((char *)(arr) + BBARRAY_HEADER_SIZE + (num_dims) * sizeof (int)) \
149 #define BBARRAY_DATAPTR(arr) BBARRAY_DATAPTR_CALC((arr), (arr)->dims)
171 #define BBARRAY_ALLOC(size, dims, flags) \
175 BBARRAY_SIZE_CALC((size), (dims)), \
191 #define BBARRAY_TYPE_ISNUMERIC(type) \
193 (type)[0] == 'i' || \
194 (type)[0] == 'f' || \
195 (type)[0] == 'd' || \
196 (type)[0] == 'b' || \
197 (type)[0] == 's' || \
211 #define BBARRAY_TYPE_ISPRIMITIVE(type) \
213 BBARRAY_TYPE_ISNUMERIC(type) || \
214 (type)[0] == '(' || (type)[0] == '*' \
227 #define BBARRAY_TYPE_ISCOMPLEX(type) \
229 (type)[0] == ':' || \
230 (type)[0] == '$' || \
244 #define BBARRAY_TYPE_ISVALID(type) \ \
246 BBARRAY_TYPE_ISPRIMITIVE(type) || \
247 BBARRAY_TYPE_ISCOMPLEX(type) \
262 #define BBARRAY_ISCOMPLEX(arr) BBARRAY_TYPE_ISCOMPLEX((arr)->type)
275 #define BBARRAY_ISNUMERIC(arr) BBARRAY_TYPE_ISNUMERIC((arr)->type)
288 #define BBARRAY_ISPRIMITIVE(arr) BBARRAY_TYPE_ISPRIMITIVE((arr)->type)
316 #define BBNULLARRAY (&bbEmptyArray)
495 BBArray* bb_array_alloc(
const char *type, BBSize dims,
const BBSize *lens);
515 BBArray* bb_array_alloc1d(
const char *type, BBSize len);
536 void bb_array_init(
BBArray *arr);
547 #define bb_stringarray_reverse(arr) bb_objectarray_reverse((BBStringArray *)(arr))
548 #define bb_arrayarray_reverse(arr) bb_objectarray_reverse((BBArrayArray *)(arr))
606 BBArray* bbArrayFromData(
const char *type,
BBInt length,
const void *data);
614 BBArray* bbArrayCastFromObject(
const BBObject *obj,
const char *typetag);
703 void* bbArrayToCArray(
const BBArray *arr);
739 #define BBARRAY_NOTFOUND (-1)
942 #ifndef BB_DISABLE_DEPRECATED
944 # define BBARRAYSIZE(q,n) (20+(n)*sizeof(int)+(q))
945 # define BBARRAYDATA(p,n) ((void*)((char*)(p)+20+(n)*sizeof(int)))
947 #endif // !BB_DISABLE_DEPRECATED
951 #endif // BLITZ_ARRAY_H