163 #define hit_tileNewType(baseType) hit_tileNewTypeInternal(baseType)
174 #define HIT_FILE_INT 0
179 #define HIT_FILE_LONG 1
184 #define HIT_FILE_FLOAT 2
189 #define HIT_FILE_DOUBLE 3
196 #define HIT_FILE_TILE 0
201 #define HIT_FILE_ARRAY 1
208 #define HIT_VERTICES 1
220 #define HIT_VERTICES_EDGES (HIT_VERTICES | HIT_EDGES)
241 #define hit_tileIsNull(var) ((var).memStatus==HIT_MS_NULL)
266 #define hit_tileSingle( tile, var, type ) hit_tileSingleInternal( tile, &var, sizeof( type ) )
286 #define hit_tileDomain( newVarP, baseType, numDims, ...) hit_tileDomainInternal( newVarP, sizeof(baseType), 0==strncmp("HitTile",#baseType,7), numDims, __VA_ARGS__)
304 #define hit_tileDomainShape( newVarP, baseType, shape ) hit_tileDomainShapeInternal( newVarP, sizeof(baseType), 0==strncmp("HitTile",#baseType,7), shape )
319 #define hit_tileAlloc( var ) hit_tileAllocInternal( var, #var, __FILE__, __LINE__);
336 #define hit_tileDomainAlloc(newVarP, baseType, numDims, ...) \
337 hit_tileDomainInternal(newVarP, sizeof(baseType), 0==strncmp("HitTile",#baseType,7), numDims, __VA_ARGS__); \
338 hit_tileAllocInternal( newVarP, #newVarP, __FILE__, __LINE__);
354 #define hit_tileDomainShapeAlloc(newVarP, baseType, shape) \
355 hit_tileDomainShapeInternal(newVarP, sizeof(baseType), 0==strncmp("HitTile",#baseType,7), shape); \
356 hit_tileAllocInternal( newVarP, #newVarP, __FILE__, __LINE__);
369 #define hit_tileFree(var) { \
370 if ( (var).hierDepth ) { \
371 hit_tileFreeRecInternal(&(var)); \
373 if ((var).memStatus==HIT_MS_OWNER) {\
374 free((var).memPtr); (var).memPtr=NULL; (var).data=NULL; (var).memStatus=HIT_MS_NOMEM;\
390 #define hit_tileFill( var, value ) hit_tileFillInternal( var, value, #var, __FILE__, __LINE__);
404 #define hit_tileClone( newVar, oldVar ) hit_tileCloneInternal(newVar, oldVar, #oldVar, __FILE__, __LINE__)
434 #define hit_tileSelectNoBoundary( newVar, oldVar, shape ) \
435 hit_tileSelectInternal( newVar, oldVar, shape, HIT_NO_OUTOFBOUNDS_CHECK )
453 #define hit_tileSelect( newVar, oldVar, shape ) \
454 hit_tileSelectInternal( newVar, oldVar, shape, HIT_OUTOFBOUNDS_CHECK )
475 #define hit_tileSelectArrayCoordsNoBoundary( newVar, oldVar, shape ) \
476 hit_tileSelectArrayCoordsInternal( newVar, oldVar, shape, HIT_NO_OUTOFBOUNDS_CHECK )
494 #define hit_tileSelectArrayCoords( newVar, oldVar, shape ) \
495 hit_tileSelectArrayCoordsInternal( newVar, oldVar, shape, HIT_OUTOFBOUNDS_CHECK )
519 #define hit_tileElemAt(var,ndims,...) hit_tileElemAt##ndims(var,__VA_ARGS__)
534 #define hit_tileElemAtArrayCoords(var,ndims,...) hit_tileElemAtArrayCoords##ndims(var,__VA_ARGS__)
558 #define hit_tileElemAtNoStride(var,ndims,...) hit_tileElemAtNoStride##ndims(var,__VA_ARGS__)
576 #define hit_tileForDimDomainArray(tile, dim, index) for( index=hit_tileDimBegin(tile, dim); \
577 index<=hit_tileDimEnd(tile,dim); \
578 index=index+hit_tileDimStride(tile,dim) )
587 #define hit_tileForDimDomain(tile, dim, index) for( index=0; \
588 index<hit_tileDimCard(tile,dim); \
613 #define hit_tileUpdateToAncestor( shadow ) hit_tileUpdateFromToAncestorInternal( shadow, HIT_UPDATE_TO, #shadow, __FILE__, __LINE__ );
627 #define hit_tileUpdateFromAncestor( shadow ) hit_tileUpdateFromToAncestorInternal( shadow, HIT_UPDATE_FROM, #shadow, __FILE__, __LINE__ );
687 void hit_tileGlue(
void *tileInA,
void *tileInB,
void *tileOut );
713 #define hit_tileDims(var) (hit_shapeDims((var).shape))
723 #define hit_tileShape(var) ((var).shape)
750 #define hit_tileDimCard(var,dim) ((var).card[dim])
763 #define hit_tileCard(var) ((var).acumCard)
776 #define hit_tileDimSig(var,dim) (hit_shapeSig(hit_tileShape((var)),dim))
786 #define hit_tileDimBegin(var,dim) (hit_tileDimSig(var,dim).begin)
796 #define hit_tileDimEnd(var,dim) (hit_tileDimSig(var,dim).end)
806 #define hit_tileDimStride(var,dim) (hit_tileDimSig(var,dim).stride)
816 #define hit_tileDimLast(var,dim) (hit_tileDimCard(var,dim)-1)
836 #define hit_tileDimHasArrayCoord(var, dim, pos) \
837 ( pos>=hit_tileDimBegin(var,dim) && (pos<=hit_tileDimEnd(var,dim)) && \
838 ((pos-hit_tileDimBegin(var,dim))%hit_tileDimStride(var,dim) == 0) )
850 #define hit_tileHasArrayCoords(var, ndims, ...) hit_tileHasArrayCoords##ndims(var, __VA_ARGS__)
864 #define hit_tileTile2Array(var, dim, pos) ((pos)*hit_tileDimStride(var,dim) + hit_tileDimBegin(var,dim))
875 #define hit_tileArray2Tile(var, dim, pos) (((pos)-hit_tileDimBegin(var,dim))/ hit_tileDimStride(var,dim))
905 static inline HitTile * hit_tileRoot(
void * tileP ) {
907 while( tile->ref != NULL ) tile = tile->ref;
947 #define hit_tileFileWrite( var, file, coord ) \
948 hit_tileFileInternal( var, HIT_FILE_BINARY, HIT_FILE_WRITE, coord, HIT_FILE_UNKNOWN, 0, 0, file, #var, __FILE__, __LINE__)
974 #define hit_tileFileRead( var, file, coord ) \
975 hit_tileFileInternal( var, HIT_FILE_BINARY, HIT_FILE_READ, coord, HIT_FILE_UNKNOWN, 0, 0, file, #var, __FILE__, __LINE__)
1011 #define hit_tileTextFileWrite( var, file, coord, datatype, s1, s2 ) \
1012 hit_tileFileInternal( var, HIT_FILE_TEXT, HIT_FILE_WRITE, coord, datatype, s1, s2, file, #var, __FILE__, __LINE__)
1045 #define hit_tileTextFileRead( var, file, coord, datatype, s1, s2 ) \
1046 hit_tileFileInternal( var, HIT_FILE_TEXT, HIT_FILE_READ, coord, datatype, s1, s2, file, #var, __FILE__, __LINE__)
int hit_tileReduceDims(void *newVar, int numReductions)
void hit_tileGlue(void *tileInA, void *tileInB, void *tileOut)
HitShape hit_tileShapeTile2Array(void *var, HitShape sh)
HitShape hit_tileShapeArray2Tile(void *var, HitShape sh)
HitShape hit_tileShapeLocal(const void *inTile)