Files
SAPFOR/Sapfor/_src/Predictor/Lib/Space.h
2025-03-12 12:37:19 +03:00

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();
// ôóíêöèÿ âîçâðàùàåò ëèíåéíûé èíäåêñ ïðîöåññîðà, êîòîðûé ñìåù¸í íà shift
// ïî èçìåðåíèþ dim îò äàííîãî ïðîöåññîðà çàäàííîãî ëèíåéíûì èíäåêñîì
long GetSpecLI(long LI, long dim, int shift);
// Âû÷èñëÿåò ëèíåéííûé èíäåêñ ïî êîîðäèíàòàì â äàííîì ïðîñòðàíñòâå
long GetLI(const std::vector<long> & SI);
// äëèíà ìèíèìàëüíîãî ïóòè ìåæäó äâóìÿ ïðîöåññîðàìè
long GetDistance(long LI1, long LI2);
Space& operator= (const Space &x);
// Âû÷èñëÿåò êîîðäèíàòû â äàííîì ïðîñòðàíñòâå ïî ëèíåéíîìó èíäåêñó
// (Space Index - SI)
void GetSI(long LI, std::vector<long> & SI);
// Âîçâðàùàåò ëèíåéíûé ðàçìåð ïðîñòðàíñòâà
long GetLSize();
// inline long GetRank() { return Rank; }
long GetSize(long AAxis); // èçìåðåíèÿ ñ 1
long GetMult(long AAxis); // èçìåðåíèÿ ñ 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