Files
SAPFOR/Sapfor/_src/Predictor/Lib/Block.h
2025-03-25 20:39:29 +03:00

67 lines
1.5 KiB
C++

#ifndef BlockH
#define BlockH
//////////////////////////////////////////////////////////////////////
//
// Block.h: interface for the Block class.
//
//////////////////////////////////////////////////////////////////////
#include <vector>
#include "Ls.h"
#include "DArray.h"
class DArray;
// Rectangular section of elements
class Block {
// std::vector of LS for every dimensions
std::vector<LS> LSDim;
public:
Block(std::vector<LS> &v);
Block();
Block(DArray *da, long ProcLI);
//grig
Block(DArray *da, long ProcLI,int a); // a - íå çíà÷àùèé ïàðàìåòð
//\grig
virtual ~Block();
// ìíîæèòåëü äëÿ îïðåäåëåíèÿ ðàçìåðà áëîêà, ïîëó÷àåìûé êàê
//ïðîèçâåäåíèå ðàçìåðîâ ïî âñåì èçìåðåíèÿì êðîìå óêàçàííîãî
long GetBlockSizeMult2(long dim1, long dim2);
long GetBlockSizeMult(long dim);
// true åñëè äëÿ äàííîãî áëîêà ïî äàííîìó èçìåðåíèþ äàííûé ýëåìåíò
// íàõîäèòñÿ ëåâåå (ïðàâåå) ýëåìåíòîâ áëîêà. Äëÿ ïóñòîãî áëîêà false
bool IsLeft(long arrDim, long elem);
bool IsRight(long arrDim, long elem);
// Ïðîâåðêà ïðèíàäëåæíîñòè ãðàíèöû ëîêàëüíîìó áëîêó
bool IsBoundIn(const std::vector<long>& ALeftBSizeArray,
const std::vector<long>& ARightBSizeArray);
Block & operator =(const Block & x);
long GetRank();
bool empty();
// ÷èñëî ýëåìåíòîâ â áëîêå
long GetBlockSize();
friend Block operator^ (Block &x, Block &y); // intersection
//====
long GetUpper(long i);
long GetLower(long i);
//=***
};
#endif