10 #ifndef K_API_ARRAY_3_H
11 #define K_API_ARRAY_3_H
14 #include <kApi/Data/kArray3.x.h>
129 #define kArray3_AttachT(kArray3_array, TPtr_items, kType_itemType, kSize_length0, kSize_length1, kSize_length2) \
130 xkArray3_AttachT(kArray3_array, TPtr_items, kType_itemType, kSize_length0, kSize_length1, kSize_length2, sizeof(*TPtr_items))
181 #define kArray3_SetItemT(kArray3_array, kSize_index0, kSize_index1, kSize_index2, TPtr_item) \
182 xkArray3_SetItemT(kArray3_array, kSize_index0, kSize_index1, kSize_index2, TPtr_item, sizeof(*TPtr_item))
211 #define kArray3_ItemT(kArray3_array, kSize_index0, kSize_index1, kSize_index2, TPtr_item) \
212 xkArray3_ItemT(kArray3_array, kSize_index0, kSize_index1, kSize_index2, TPtr_item, sizeof(*TPtr_item))
231 #define kArray3_SetAsT(kArray3_array, kSize_index0, kSize_index1, kSize_index2, T_value, T) \
232 (kPointer_WriteAs(xkArray3_AsT(kArray3_array, kSize_index0, kSize_index1, kSize_index2, sizeof(T)), T_value, T), (void)0)
249 #define kArray3_AsT(kArray3_array, kSize_index0, kSize_index1, kSize_index2, T) \
250 kPointer_ReadAs(xkArray3_AsT(kArray3_array, kSize_index0, kSize_index1, kSize_index2, sizeof(T)), T)
277 #define kArray3_DataT(kArray3_array, T) \
278 kCast(T*, xkArray3_DataT(kArray3_array, sizeof(T)))
295 kSSize index = (index0*(
kSSize)obj->length[1] + index1)*(
kSSize)obj->length[2] + index2;
316 #define kArray3_DataAtT(kArray3_array, kSize_index0, kSize_index1, kSize_index2, T) \
317 kCast(T*, xkArray3_DataAtT(kArray3_array, kSize_index0, kSize_index1, kSize_index2, sizeof(T)))
348 # if !defined(K_FSS_912_DISABLE_BOUNDS_CHECK)
374 #define kArray3_AtT(kArray3_array, kSize_index0, kSize_index1, kSize_index2, T) \
375 kCast(T*, xkArray3_AtT(kArray3_array, kSize_index0, kSize_index1, kSize_index2, sizeof(T)))
388 return obj->itemType;
402 return obj->itemSize;
419 return obj->length[dimension];
433 return obj->length[0] * obj->length[1] * obj->length[2];
447 return obj->dataAlloc;
void * kArray3_At(kArray3 array, kSize index0, kSize index1, kSize index2)
Returns a pointer to the specified item in the array.
Definition: kArray3.h:346
kStatus kArray3_Attach(kArray3 array, void *items, kType itemType, kSize length0, kSize length1, kSize length2)
Attaches the array to an external item buffer.
void * kArray3_DataAt(kArray3 array, kSSize index0, kSSize index1, kSSize index2)
Calculates an address relative to the start of the buffer.
Definition: kArray3.h:292
kType kArray3_ItemType(kArray3 array)
Returns the array item type.
Definition: kArray3.h:384
kStatus kArray3_Resize(kArray3 array, kSize length0, kSize length1, kSize length2)
Resizes the internal array item buffer.
Definition: kArray3.h:91
Represents an unsigned integer that can store a pointer address.
Abstract base class for memory allocator types.
void * kPointer_ItemOffset(const void *pointer, kSSize itemIndex, kSize itemSize)
Gets a pointer to the Nth element of an array.
Definition: kApiDef.h:292
#define kInlineFx(TYPE)
Inline method declaration helper.
Definition: kApiDef.h:26
kStatus kArray3_Construct(kArray3 *array, kType itemType, kSize length0, kSize length1, kSize length2, kAlloc allocator)
Constructs a kArray3 object.
kSize kArray3_ItemSize(kArray3 array)
Returns the array item size.
Definition: kArray3.h:398
Represents a signed integer that can store a pointer address.
kStatus kArray3_Item(kArray3 array, kSize index0, kSize index1, kSize index2, void *item)
Gets the value of an item.
kAlloc kArray3_DataAlloc(kArray3 array)
Reports the data allocator that was optionally provided at construction time.
Definition: kArray3.h:443
kStatus kArray3_Zero(kArray3 array)
Sets all array element bits to zero.
#define kObj(TypeName_T, T_object)
Declares a local "obj" (this-pointer) variable and initializes it from a type-checked object handle...
Definition: kApiDef.h:2921
kStatus kArray3_ConstructEx(kArray3 *array, kType itemType, kSize length0, kSize length1, kSize length2, kAlloc allocator, kAlloc dataAllocator)
Constructs a kArray3 object using a separate allocator for data array memory.
kStatus kArray3_Allocate(kArray3 array, kType itemType, kSize length0, kSize length1, kSize length2)
Reallocates the internal array item buffer.
Core Zen type declarations.
void * kArray3_Data(kArray3 array)
Returns a pointer to the array item buffer.
Definition: kArray3.h:259
kSize kArray3_Length(kArray3 array, kSize dimension)
Returns the length of the specified array dimension, in elements.
Definition: kArray3.h:413
Represents metadata about a type (class, interface, or value).
kSize kArray3_Count(kArray3 array)
Returns the array item count, in elements.
Definition: kArray3.h:429
kStatus kArray3_Assign(kArray3 array, kArray3 source)
Performs a shallow copy of the source array.
kSize kArray3_DataSize(kArray3 array)
Reports the size, in bytes, of the array item buffer.
Definition: kArray3.h:326
#define kAssert(EXPRESSION)
Aborts execution if EXPRESSION is kFALSE.
Definition: kApiDef.h:749
Represents an error code.
kStatus kArray3_SetItem(kArray3 array, kSize index0, kSize index1, kSize index2, const void *item)
Sets the value of an item.