00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef SMESHNPOSITION_H
00029 #define SMESHNPOSITION_H
00030
00031
00032
00033
00034 #include "SComplexPosition.h"
00035 #include "SDimArray.h"
00036
00037
00038
00039 class SMeshNPosition: public SComplexPosition, public SDimArray {
00040 public:
00041 SDimArray _sizes;
00042 SDimArray _jobDimToMachDim;
00043 SMeshNPosition(int dim) :
00044 SDimArray(dim),
00045 _sizes(dim),
00046 _jobDimToMachDim(dim) {};
00047
00048
00049 virtual int getMinPos() const {
00050 int linearPos = 0;
00051 for (int i=size()-1; i>=0; i--) {
00052 linearPos *= 2;
00053 if ((*this)[i] == 1)
00054 linearPos += 1;
00055 }
00056 return linearPos;
00057 };
00058
00059 int getMaxPos() const {
00060 int linearPos = 0;
00061 for (int i=size()-1; i>=0; i--) {
00062 linearPos *= 2;
00063 if ((*this)[i] != 0)
00064 linearPos += 1;
00065 }
00066 return linearPos;
00067 };
00068
00069 bool isNormal() const {
00070 int i=0;
00071 while ( (i<size()) && ((*this)[i] == -1) ) i++;
00072 while ( i<size() )
00073 if ( (*this)[i] == -1 )
00074 return false;
00075 else
00076 i++;
00077 return true;
00078 }
00079
00080 };
00081
00082 #endif //SMESHNPOSITION_H