Version: 9.12.0
SMESH_OrientedIndexer Class Reference

Oriented converter of a pair of integers to a sole index. More...

#include <SMESH_Indexer.hxx>

Inheritance diagram for SMESH_OrientedIndexer:

Public Types

enum  OriFlags {
  NO_TRSF = 0 , REV_X = 1 , REV_Y = 2 , SWAP_XY = 4 ,
  MAX_ORI = REV_X|REV_Y|SWAP_XY
}
 < transformation types More...
 

Public Member Functions

 SMESH_OrientedIndexer (const SMESH_Indexer &indexer, const int oriFlags=NO_TRSF)
 Return index by XY. More...
 
size_t operator() (size_t x, size_t y) const
 Return index for a corner. More...
 
size_t corner (bool xMax, bool yMax) const
 
size_t xSize () const
 
size_t ySize () const
 
void set (size_t xSize, size_t ySize)
 set size More...
 
size_t size () const
 

Data Fields

size_t _xSize
 
size_t _ySize
 

Private Types

typedef SMESH_Indexer TFather
 
typedef void(* TFun) (size_t &x, size_t &y)
 

Static Private Member Functions

static void lazy (size_t &, size_t &)
 
static void reverse (size_t &x, size_t &size)
 
static void swap (size_t &x, size_t &y)
 

Private Attributes

TFun _xRevFun
 
TFun _yRevFun
 
TFun _swapFun
 
size_t _xSizeOriented
 
size_t _ySizeOriented
 

Detailed Description

Oriented converter of a pair of integers to a sole index.

Allows virtual transformation of an 1D array viewed as 2D one. Possible transformations are inverse in one or two directions and exchange of the directions. Any combination of these transformations is allowed.

The following code picks up a transformation such that two known array items appear in desired positions:

for ( int ori = 0; ori < SMESH_OrientedIndexer::MAX_ORI+1; ++ori )
{
SMESH_OrientedIndexer oriIndex( index, ori );
if ( item1 == array[ oriIndex( i1, j1 ) ] &&
item2 == array[ oriIndex( i2, j2 ) ])
{
// needed transformation found
}
}
Oriented converter of a pair of integers to a sole index.
Definition: SMESH_Indexer.hxx:99
@ MAX_ORI
Definition: SMESH_Indexer.hxx:104

Member Typedef Documentation

◆ TFather

◆ TFun

typedef void(* SMESH_OrientedIndexer::TFun) (size_t &x, size_t &y)
private

Member Enumeration Documentation

◆ OriFlags

< transformation types

Enumerator
NO_TRSF 
REV_X 
REV_Y 
SWAP_XY 
MAX_ORI 

Constructor & Destructor Documentation

◆ SMESH_OrientedIndexer()

SMESH_OrientedIndexer::SMESH_OrientedIndexer ( const SMESH_Indexer indexer,
const int  oriFlags = NO_TRSF 
)

Return index by XY.

References _xSizeOriented, and _ySizeOriented.

Member Function Documentation

◆ corner()

size_t SMESH_OrientedIndexer::corner ( bool  xMax,
bool  yMax 
) const

◆ lazy()

static void SMESH_OrientedIndexer::lazy ( size_t &  ,
size_t &   
)
staticprivate

◆ operator()()

size_t SMESH_OrientedIndexer::operator() ( size_t  x,
size_t  y 
) const

Return index for a corner.

References SMESH_Indexer::_xSize, SMESH_Indexer::_ySize, and SMESH_Indexer::operator()().

◆ reverse()

static void SMESH_OrientedIndexer::reverse ( size_t &  x,
size_t &  size 
)
staticprivate

References SMESH_Indexer::size().

◆ set()

void SMESH_Indexer::set ( size_t  xSize,
size_t  ySize 
)
inherited

set size

References SMESH_Indexer::_xSize, and SMESH_Indexer::_ySize.

◆ size()

size_t SMESH_Indexer::size ( ) const
inherited
Returns
size of 1D array

References SMESH_Indexer::_xSize, and SMESH_Indexer::_ySize.

Referenced by corner(), and reverse().

◆ swap()

static void SMESH_OrientedIndexer::swap ( size_t &  x,
size_t &  y 
)
staticprivate

◆ xSize()

size_t SMESH_OrientedIndexer::xSize ( ) const

References _xSizeOriented.

◆ ySize()

size_t SMESH_OrientedIndexer::ySize ( ) const

References _ySizeOriented.

Field Documentation

◆ _swapFun

TFun SMESH_OrientedIndexer::_swapFun
private

◆ _xRevFun

TFun SMESH_OrientedIndexer::_xRevFun
private

◆ _xSize

size_t SMESH_Indexer::_xSize
inherited

◆ _xSizeOriented

size_t SMESH_OrientedIndexer::_xSizeOriented
private

Referenced by SMESH_OrientedIndexer(), and xSize().

◆ _yRevFun

TFun SMESH_OrientedIndexer::_yRevFun
private

◆ _ySize

size_t SMESH_Indexer::_ySize
inherited

◆ _ySizeOriented

size_t SMESH_OrientedIndexer::_ySizeOriented
private

Referenced by SMESH_OrientedIndexer(), and ySize().