67 lines
1.7 KiB
C
67 lines
1.7 KiB
C
|
|
#ifndef SpaceH
|
|||
|
|
#define SpaceH
|
|||
|
|
//////////////////////////////////////////////////////////////////////
|
|||
|
|
//
|
|||
|
|
// Space.h: interface for the Space base class.
|
|||
|
|
//
|
|||
|
|
//////////////////////////////////////////////////////////////////////
|
|||
|
|
|
|||
|
|
#include <vector>
|
|||
|
|
#include <algorithm>
|
|||
|
|
#include <fstream>
|
|||
|
|
|
|||
|
|
class Space {
|
|||
|
|
protected:
|
|||
|
|
std::vector<long> SizeArray; // Size of every dimension
|
|||
|
|
std::vector<long> MultArray; // Multiplier for each dimension
|
|||
|
|
public:
|
|||
|
|
Space();
|
|||
|
|
Space(const std::vector<long>& ASizeArray, std::vector<long> AMultArray);
|
|||
|
|
Space(const Space &);
|
|||
|
|
Space(const std::vector<long>& ASizeArray);
|
|||
|
|
~Space();
|
|||
|
|
|
|||
|
|
long GetNumInDim(long LI, long dimNum);
|
|||
|
|
long GetCenterLI();
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> shift
|
|||
|
|
// <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> dim <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
long GetSpecLI(long LI, long dim, int shift);
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
long GetLI(const std::vector<long> & SI);
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
long GetDistance(long LI1, long LI2);
|
|||
|
|
|
|||
|
|
Space& operator= (const Space &x);
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
// (Space Index - SI)
|
|||
|
|
void GetSI(long LI, std::vector<long> & SI);
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
long GetLSize();
|
|||
|
|
|
|||
|
|
// inline long GetRank() { return Rank; }
|
|||
|
|
|
|||
|
|
long GetSize(long AAxis); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> 1
|
|||
|
|
long GetMult(long AAxis); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> 1
|
|||
|
|
|
|||
|
|
unsigned int Rank() { return SizeArray.size(); }
|
|||
|
|
|
|||
|
|
#ifdef P_DEBUG
|
|||
|
|
friend std::ostream& operator << (std::ostream& os, const Space& s);
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
#if defined (__GNUG__) && (__GNUC__ < 3)
|
|||
|
|
inline long abs(long x)
|
|||
|
|
{
|
|||
|
|
return (x < 0) ? (-x) : (x);
|
|||
|
|
};
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
#endif
|