namespace V2
{
+enum Dim
+{
+ DIM_X,
+ DIM_Y,
+ DIM_Z,
+ DIM_S,
+ DIM_M,
+ NUM_DIMS
+};
+
class Coordinate
{
public:
Coordinate();
- Coordinate(INT_8 c, INT_32 n);
+ Coordinate(enum Dim dim, INT_32 n);
- VOID set(INT_8 c, INT_32 n);
- UINT_32 ison(UINT_32 x, UINT_32 y, UINT_32 z = 0, UINT_32 s = 0, UINT_32 m = 0) const;
- INT_8 getdim();
+ VOID set(enum Dim dim, INT_32 n);
+ UINT_32 ison(const UINT_32 *coords) const;
+ enum Dim getdim();
INT_8 getord();
BOOL_32 operator==(const Coordinate& b);
Coordinate& operator++(INT_32);
private:
- INT_8 dim;
+ enum Dim dim;
INT_8 ord;
};
BOOL_32 Exists(Coordinate& co);
VOID copyto(CoordTerm& cl);
UINT_32 getsize();
- UINT_32 getxor(UINT_32 x, UINT_32 y, UINT_32 z = 0, UINT_32 s = 0, UINT_32 m = 0) const;
+ UINT_32 getxor(const UINT_32 *coords) const;
VOID getsmallest(Coordinate& co);
- UINT_32 Filter(INT_8 f, Coordinate& co, UINT_32 start = 0, INT_8 axis = '\0');
+ UINT_32 Filter(INT_8 f, Coordinate& co, UINT_32 start = 0, enum Dim axis = NUM_DIMS);
Coordinate& operator[](UINT_32 i);
BOOL_32 operator==(const CoordTerm& b);
BOOL_32 operator!=(const CoordTerm& b);
- BOOL_32 exceedRange(UINT_32 xRange, UINT_32 yRange = 0, UINT_32 zRange = 0, UINT_32 sRange = 0);
+ BOOL_32 exceedRange(const UINT_32 *ranges);
private:
static const UINT_32 MaxCoords = 8;
BOOL_32 Exists(Coordinate& co);
VOID resize(UINT_32 n);
UINT_32 getsize();
- virtual UINT_64 solve(UINT_32 x, UINT_32 y, UINT_32 z = 0, UINT_32 s = 0, UINT_32 m = 0) const;
+ virtual UINT_64 solve(const UINT_32 *coords) const;
virtual VOID solveAddr(UINT_64 addr, UINT_32 sliceInM,
- UINT_32& x, UINT_32& y, UINT_32& z, UINT_32& s, UINT_32& m) const;
+ UINT_32 *coords) const;
VOID copy(CoordEq& o, UINT_32 start = 0, UINT_32 num = 0xFFFFFFFF);
VOID reverse(UINT_32 start = 0, UINT_32 num = 0xFFFFFFFF);
VOID xorin(CoordEq& x, UINT_32 start = 0);
- UINT_32 Filter(INT_8 f, Coordinate& co, UINT_32 start = 0, INT_8 axis = '\0');
+ UINT_32 Filter(INT_8 f, Coordinate& co, UINT_32 start = 0, enum Dim axis = NUM_DIMS);
VOID shift(INT_32 amount, INT_32 start = 0);
virtual CoordTerm& operator[](UINT_32 i);
VOID mort2d(Coordinate& c0, Coordinate& c1, UINT_32 start = 0, UINT_32 end = 0);