99 ARRAY_DESCRIPTOR_PTR superarray);
104 unsigned char direction);
114 int ndarr_set(ARRAY_DESCRIPTOR_PTR arrd, ...);
118 int *array_complete);
125 #define NDARR_DIM_NUMBER (int)1
126 #define NDARR_DIM_NAME (int)2
127 #define NDARR_DIM_START_INDEX (int)3
128 #define NDARR_DIM_END_INDEX (int)4
129 #define NDARR_DIM_GRANULARITY (int)5
130 #define NDARR_DIM_GROUPING (int)6
131 #define NDARR_DIM_SEPARATION (int)7
132 #define NDARR_ELEMENT_SIZE (int)10
133 #define NDARR_FILE_GROUPING (int)20
134 #define NDARR_BUFFER_GROUPING (int)21
135 #define NDARR_MAP_IN_BUFFER (int)22
136 #define NDARR_MAP_IN_FILE (int)23
137 #define NDARR_END_ARGS (int)0
140 #define NDARR_SB_KEY0 "sb"
141 #define NDARR_SB_KEY1 "separation"
142 #define NDARR_GB_KEY0 "gb"
143 #define NDARR_GB_KEY1 "grouping"
146 #define NDARR_USER_TO_REAL 'r'
147 #define NDARR_REAL_TO_USER 'u'
150 #define NDARRT_CONTIGUOUS 0
151 #define NDARRT_BROKEN 1
152 #define NDARRT_GROUPMAP_FILE 2
153 #define NDARRT_GROUPMAP_BUFF 3
156 #define NDARR_GINITIAL 0
157 #define NDARR_GNEXT 1
160 #define NDARRS_FILE (NDARR_SOURCE)0x8000
161 #define NDARRS_APPEND (NDARR_SOURCE)0x4000
162 #define NDARRS_UPDATE (NDARR_SOURCE)0x2000
163 #define NDARRS_CREATE (NDARR_SOURCE)0x1000
164 #define NDARRS_BUFFER (NDARR_SOURCE)0x0800
165 #define NDARRS_PADDING (NDARR_SOURCE)0x00FF
191 #define NDARR_RESET_INDICES(nda_i_p) { \
193 for(nda_d_s = 0; nda_d_s < nda_i_p->descriptor->num_dim; nda_d_s++) \
194 nda_i_p->index[nda_d_s] = 0;} \
216 #define NDARR_SET_PADDING(nda_s_v, pad_c_v) { \
217 nda_s_v &= ~NDARRS_PADDING; \
218 nda_s_v |= (NDARRS_PADDING & (pad_c_v * 257));} \
246 #define NDARR_GET_SEPARATION(nda_i_p, nda_l_v) { \
248 nda_l_v = nda_i_p->descriptor->separation[nda_i_p->descriptor->num_dim - 1]; \
249 for(nda_t_i = nda_i_p->descriptor->num_dim - 2; nda_t_i >= 0; nda_t_i--) { \
250 if(nda_i_p->descriptor->grouping[nda_t_i + 1]) { \
251 if(!((nda_i_p->index[nda_t_i + 1] + 1) % \
252 nda_i_p->descriptor->grouping[nda_t_i + 1])) { \
253 nda_l_v += nda_i_p->descriptor->separation[nda_t_i]; \
260 if(((nda_i_p->index[nda_t_i + 1] + 1) == \
261 nda_i_p->descriptor->dim_size[nda_t_i + 1])) { \
262 nda_l_v += nda_i_p->descriptor->separation[nda_t_i]; \
298 #define NDARR_GET_MAP_SEPARATION(nda_m_p, nda_l_v) { \
300 ARRAY_INDEX_PTR nda_i_p = nda_m_p->subaindex; \
301 nda_l_v = nda_i_p->descriptor->separation[nda_m_p->dimincrement]; \
302 for(nda_t_i = nda_m_p->dimincrement - 1; nda_t_i >= 0; nda_t_i--) \
304 if(nda_i_p->descriptor->grouping[nda_t_i + 1]) \
306 if(!((nda_i_p->index[nda_t_i + 1] + 1) % \
307 nda_i_p->descriptor->grouping[nda_t_i + 1])) \
308 nda_l_v += nda_i_p->descriptor->separation[nda_t_i]; \
314 if(((nda_i_p->index[nda_t_i + 1] + 1) == \
315 nda_i_p->descriptor->dim_size[nda_t_i + 1])) \
316 nda_l_v += nda_i_p->descriptor->separation[nda_t_i]; \
ARRAY_DESCRIPTOR_PTR ndarr_create(int numdim)
unsigned short NDARR_SOURCE
long ndarr_reorient(ARRAY_MAPPING_PTR amap, NDARR_SOURCE sourceid, void *source, long source_size, NDARR_SOURCE destid, void *dest, long dest_size, int *array_complete)
ARRAY_DESCRIPTOR_PTR super_array
struct array_mapping_struct ARRAY_MAPPING
struct array_mapping_struct * ARRAY_MAPPING_PTR
int ndarr_create_brkn_desc(ARRAY_DESCRIPTOR_PTR adesc, int map_type, void *mapping)
ARRAY_INDEX_PTR ndarr_convert_indices(ARRAY_INDEX_PTR aindex, unsigned char direction)
struct array_index_struct * ARRAY_INDEX_PTR
ARRAY_INDEX_PTR ndarr_increment_indices(ARRAY_INDEX_PTR aindex)
void ndarr_free_descriptor(ARRAY_DESCRIPTOR_PTR arrdesc)
int ndarr_set(ARRAY_DESCRIPTOR_PTR arrd,...)
ARRAY_DESCRIPTOR_PTR sub_array
unsigned long ndarr_get_mapped_offset(ARRAY_MAPPING_PTR amap)
ARRAY_INDEX_PTR ndarr_create_indices(ARRAY_DESCRIPTOR_PTR arrdesc)
int ndarr_do_calculations(ARRAY_DESCRIPTOR_PTR arrd)
void * ndarr_get_next_group(ARRAY_DESCRIPTOR_PTR arrdesc, char mode)
void ndarr_free_indices(ARRAY_INDEX_PTR aindex)
struct array_descriptor_struct * ARRAY_DESCRIPTOR_PTR
unsigned long ndarr_get_offset(ARRAY_INDEX_PTR aindex)
ARRAY_MAPPING_PTR ndarr_create_mapping(ARRAY_DESCRIPTOR_PTR subarray, ARRAY_DESCRIPTOR_PTR superarray)
void * ndarr_get_group(ARRAY_INDEX_PTR aindex)
ARRAY_INDEX_PTR ndarr_increment_mapping(ARRAY_MAPPING_PTR amap)
void ndarr_free_mapping(ARRAY_MAPPING_PTR amap)
ARRAY_INDEX_PTR subaindex
struct array_index_struct ARRAY_INDEX
struct array_descriptor_struct ARRAY_DESCRIPTOR
ARRAY_DESCRIPTOR_PTR descriptor