DGtal 2.1.0
Loading...
Searching...
No Matches
ArrayLXY< Value, L, X, Y > Class Template Reference

Public Member Functions

 ArrayLXY (Value invalid)
 
void clear ()
 
const Valuevalue (unsigned int l, unsigned int x, unsigned int y) const
 
unsigned int erase (unsigned int l, unsigned int x, unsigned int y)
 
void setValue (const Value &val, unsigned int l, unsigned int x, unsigned int y)
 
void setValueNoNewLabel (const Value &val, unsigned int l, unsigned int x, unsigned int y)
 
bool hasLabel (unsigned int l, unsigned int x, unsigned int y) const
 
void getLabels (std::vector< unsigned int > &labels, unsigned int x, unsigned int y) const
 
unsigned int nbLabels (unsigned int x, unsigned int y) const
 
void display (ostream &, unsigned int, unsigned int, unsigned int)
 
unsigned long long area () const
 

Private Attributes

Value _data [L][X][Y]
 
Value _invalid
 

Detailed Description

template<typename Value, unsigned int L, unsigned int X, unsigned int Y>
class ArrayLXY< Value, L, X, Y >

Array[L][X][Y] of value. Brute-force. High memory consumption. Rather fast except when working with several labels.

Note that 4000*4000*16 is upper limit on my 8Gb laptop (2Gb). Note that 2000*2000*64 is upper limit on my 8Gb laptop (2Gb).

Definition at line 73 of file testLabelledMap-benchmark.cpp.

Constructor & Destructor Documentation

◆ ArrayLXY()

template<typename Value , unsigned int L, unsigned int X, unsigned int Y>
ArrayLXY< Value, L, X, Y >::ArrayLXY ( Value  invalid)
inline

Member Function Documentation

◆ area()

template<typename Value , unsigned int L, unsigned int X, unsigned int Y>
unsigned long long ArrayLXY< Value, L, X, Y >::area ( ) const
inline

Definition at line 147 of file testLabelledMap-benchmark.cpp.

148 {
149 return L * X * Y * sizeof( Value );
150 }

References DGtal::L.

◆ clear()

template<typename Value , unsigned int L, unsigned int X, unsigned int Y>
void ArrayLXY< Value, L, X, Y >::clear ( )
inline

Definition at line 86 of file testLabelledMap-benchmark.cpp.

87 {
88 for ( unsigned int l = 0; l < L; ++l )
89 for ( unsigned int y = 0; y < Y; ++y )
90 for ( unsigned int x = 0; x < X; ++x )
91 setValue( _invalid, l, x, y );
92 }
void setValue(const Value &val, unsigned int l, unsigned int x, unsigned int y)

References ArrayLXY< Value, L, X, Y >::_invalid, DGtal::L, and ArrayLXY< Value, L, X, Y >::setValue().

Referenced by ArrayLXY< Value, L, X, Y >::ArrayLXY().

◆ display()

template<typename Value , unsigned int L, unsigned int X, unsigned int Y>
void ArrayLXY< Value, L, X, Y >::display ( ostream &  ,
unsigned int  ,
unsigned int  ,
unsigned int   
)
inline

Definition at line 143 of file testLabelledMap-benchmark.cpp.

144 {}

◆ erase()

template<typename Value , unsigned int L, unsigned int X, unsigned int Y>
unsigned int ArrayLXY< Value, L, X, Y >::erase ( unsigned int  l,
unsigned int  x,
unsigned int  y 
)
inline

Definition at line 100 of file testLabelledMap-benchmark.cpp.

101 {
102 if ( _data[ l ][ x ][ y ] != _invalid )
103 {
104 _data[ l ][ x ][ y ] = _invalid;
105 return 1;
106 }
107 return 0;
108 }

References ArrayLXY< Value, L, X, Y >::_data, and ArrayLXY< Value, L, X, Y >::_invalid.

◆ getLabels()

template<typename Value , unsigned int L, unsigned int X, unsigned int Y>
void ArrayLXY< Value, L, X, Y >::getLabels ( std::vector< unsigned int > &  labels,
unsigned int  x,
unsigned int  y 
) const
inline

Definition at line 126 of file testLabelledMap-benchmark.cpp.

128 {
129 labels.clear();
130 for ( unsigned int l = 0; l < L; ++l )
131 if ( hasLabel( l, x, y ) )
132 labels.push_back( l );
133 }
bool hasLabel(unsigned int l, unsigned int x, unsigned int y) const

References ArrayLXY< Value, L, X, Y >::hasLabel(), and DGtal::L.

◆ hasLabel()

template<typename Value , unsigned int L, unsigned int X, unsigned int Y>
bool ArrayLXY< Value, L, X, Y >::hasLabel ( unsigned int  l,
unsigned int  x,
unsigned int  y 
) const
inline

Definition at line 121 of file testLabelledMap-benchmark.cpp.

122 {
123 return value( l, x, y ) != _invalid;
124 }
const Value & value(unsigned int l, unsigned int x, unsigned int y) const

References ArrayLXY< Value, L, X, Y >::_invalid, and ArrayLXY< Value, L, X, Y >::value().

Referenced by ArrayLXY< Value, L, X, Y >::getLabels(), and ArrayLXY< Value, L, X, Y >::nbLabels().

◆ nbLabels()

template<typename Value , unsigned int L, unsigned int X, unsigned int Y>
unsigned int ArrayLXY< Value, L, X, Y >::nbLabels ( unsigned int  x,
unsigned int  y 
) const
inline

Definition at line 135 of file testLabelledMap-benchmark.cpp.

136 {
137 unsigned int nb = 0;
138 for ( unsigned int l = 0; l < L; ++l )
139 if ( hasLabel( l, x, y ) ) ++nb;
140 return nb;
141 }

References ArrayLXY< Value, L, X, Y >::hasLabel(), and DGtal::L.

◆ setValue()

template<typename Value , unsigned int L, unsigned int X, unsigned int Y>
void ArrayLXY< Value, L, X, Y >::setValue ( const Value val,
unsigned int  l,
unsigned int  x,
unsigned int  y 
)
inline

Definition at line 111 of file testLabelledMap-benchmark.cpp.

112 {
113 _data[ l ][ x ][ y ] = val;
114 }

References ArrayLXY< Value, L, X, Y >::_data.

Referenced by ArrayLXY< Value, L, X, Y >::clear().

◆ setValueNoNewLabel()

template<typename Value , unsigned int L, unsigned int X, unsigned int Y>
void ArrayLXY< Value, L, X, Y >::setValueNoNewLabel ( const Value val,
unsigned int  l,
unsigned int  x,
unsigned int  y 
)
inline

Definition at line 116 of file testLabelledMap-benchmark.cpp.

117 {
118 _data[ l ][ x ][ y ] = val;
119 }

References ArrayLXY< Value, L, X, Y >::_data.

◆ value()

template<typename Value , unsigned int L, unsigned int X, unsigned int Y>
const Value & ArrayLXY< Value, L, X, Y >::value ( unsigned int  l,
unsigned int  x,
unsigned int  y 
) const
inline

Definition at line 95 of file testLabelledMap-benchmark.cpp.

96 {
97 return _data[ l ][ x ][ y ];
98 }

References ArrayLXY< Value, L, X, Y >::_data.

Referenced by ArrayLXY< Value, L, X, Y >::hasLabel().

Field Documentation

◆ _data

template<typename Value , unsigned int L, unsigned int X, unsigned int Y>
Value ArrayLXY< Value, L, X, Y >::_data[L][X][Y]
private

◆ _invalid

template<typename Value , unsigned int L, unsigned int X, unsigned int Y>
Value ArrayLXY< Value, L, X, Y >::_invalid
private

The documentation for this class was generated from the following file: