Rosetta
Public Types | Public Member Functions | Static Public Attributes | Protected Member Functions | Private Attributes | Friends | List of all members
ObjexxFCL::IndexRange Class Reference

IndexRange: Index Range Abstract Base Class. More...

#include <IndexRange.hh>

Inheritance diagram for ObjexxFCL::IndexRange:
Inheritance graph
[legend]

Public Types

typedef std::size_t size_type
 
typedef std::size_t Size
 

Public Member Functions

virtual ~IndexRange ()
 Destructor. More...
 
virtual IndexRangeoperator= (int const u_a)
 Upper Index Assignment. More...
 
virtual IndexRangeoperator= (Star const &)
 Unbounded Upper Index Assignment. More...
 
virtual IndexRangeassign (int const u_a)
 Upper Index Assignment. More...
 
virtual IndexRangeassign (Star const &)
 Unbounded Upper Index Assignment. More...
 
virtual IndexRangeassign (int const l_a, int const u_a)
 Index Range Assignment. More...
 
virtual IndexRangeassign (int const l_a, Star const &)
 Index and Unbounded Upper Index Assignment. More...
 
virtual bool initialized () const
 Initialized? More...
 
virtual bool l_initialized () const
 Lower Initialized? More...
 
virtual bool u_initialized () const
 Upper Initialized? More...
 
virtual bool legal () const
 Legal? More...
 
virtual bool bounded () const
 Bounded? More...
 
bool bounded_value () const
 Bounded? More...
 
virtual bool unbounded () const
 Unbounded? More...
 
bool unbounded_value () const
 Unbounded? More...
 
virtual bool not_unbounded () const
 Not Unbounded? More...
 
virtual bool positive () const
 Bounded with Positive Size? More...
 
bool positive_value () const
 Bounded with Positive Size? More...
 
virtual bool contains (int const i) const
 Contains an Index? More...
 
virtual bool contains (IndexRange const &I) const
 Contains Another IndexRange? More...
 
virtual bool intersects (IndexRange const &I) const
 Intersects Another IndexRange? More...
 
int l () const
 Lower Index. More...
 
int lz () const
 Lower Index (Zero if Uninitialized) More...
 
int u () const
 Upper Index. More...
 
int uz () const
 Upper Index (Zero if Uninitialized) More...
 
size_type size () const
 Size. More...
 
int offset (int const i) const
 Offset of an Index. More...
 
virtual IndexRangel (int const l_a)
 Lower Index Set. More...
 
virtual IndexRangeu (int const u_a)
 Upper Index Set. More...
 
virtual IndexRangeu (Star const &)
 Unbounded Upper Index Set. More...
 
virtual IndexRangecontain (int const i)
 Expand to Contain an Index. More...
 
virtual IndexRangecontain (IndexRange const &I)
 Expand to Contain Another IndexRange. More...
 
virtual IndexRangeintersect (IndexRange const &I)
 Intersect With Another IndexRange. More...
 
virtual IndexRangeclear ()
 Clear. More...
 

Static Public Attributes

static size_type const npos = static_cast< size_type >( -1 )
 
static int const l_min = -( static_cast< int >( ( static_cast< unsigned int >( -1 ) / 2u ) ) - 1 )
 
static int const u_max = static_cast< int >( ( static_cast< unsigned int >( -1 ) / 2u ) )
 

Protected Member Functions

 IndexRange ()
 Default Constructor. More...
 
 IndexRange (IndexRange const &I)
 Copy Constructor. More...
 
 IndexRange (int const u_a)
 Upper Index Constructor. More...
 
 IndexRange (Star const &)
 Unbounded Upper Index Constructor. More...
 
 IndexRange (int const l_a, int const u_a)
 Index Range Constructor. More...
 
 IndexRange (int const l_a, Star const &)
 Index and Unbounded Upper Index Constructor. More...
 
IndexRangeoperator= (IndexRange const &I)
 Copy Assignment. More...
 
bool legal_static () const
 Legal Static Range? More...
 
virtual Dimensionl_dim_clone () const
 Lower Dimension Clone. More...
 
virtual Dimensionu_dim_clone () const
 Upper Dimension Clone. More...
 
void swap (IndexRange &I)
 Swap. More...
 

Private Attributes

int l_
 Lower index. More...
 
int u_
 Upper index. More...
 
size_type size_
 Size (npos iff unbounded) More...
 

Friends

class StaticIndexRange
 
class DynamicIndexRange
 
bool operator== (IndexRange const &I, IndexRange const &J)
 IndexRange == IndexRange. More...
 
bool operator!= (IndexRange const &I, IndexRange const &J)
 IndexRange != IndexRange. More...
 
bool operator< (IndexRange const &I, IndexRange const &J)
 IndexRange < IndexRange. More...
 
bool operator<= (IndexRange const &I, IndexRange const &J)
 IndexRange <= IndexRange. More...
 
bool operator> (IndexRange const &I, IndexRange const &J)
 IndexRange > IndexRange. More...
 
bool operator>= (IndexRange const &I, IndexRange const &J)
 IndexRange >= IndexRange. More...
 
std::istream & operator>> (std::istream &stream, IndexRange &I)
 Stream Input. More...
 
std::ostream & operator<< (std::ostream &stream, IndexRange const &I)
 Stream Output. More...
 

Detailed Description

IndexRange: Index Range Abstract Base Class.

Remarks
  • Zero-size range is indicated by ( l - 1 == u ) and ( size == 0 )
  • Upper-unbounded range is indicated by ( l - 2 == u ) and ( size == npos )
  • Legal ranges have ( l - 2 <= u ) with l and u in their allowed ranges

Member Typedef Documentation

◆ Size

typedef std::size_t ObjexxFCL::IndexRange::Size

◆ size_type

typedef std::size_t ObjexxFCL::IndexRange::size_type

Constructor & Destructor Documentation

◆ IndexRange() [1/6]

ObjexxFCL::IndexRange::IndexRange ( )
inlineprotected

Default Constructor.

◆ IndexRange() [2/6]

ObjexxFCL::IndexRange::IndexRange ( IndexRange const &  I)
inlineprotected

Copy Constructor.

◆ IndexRange() [3/6]

ObjexxFCL::IndexRange::IndexRange ( int const  u_a)
inlineprotected

Upper Index Constructor.

◆ IndexRange() [4/6]

ObjexxFCL::IndexRange::IndexRange ( Star const &  )
inlineprotected

Unbounded Upper Index Constructor.

◆ IndexRange() [5/6]

ObjexxFCL::IndexRange::IndexRange ( int const  l_a,
int const  u_a 
)
inlineprotected

Index Range Constructor.

◆ IndexRange() [6/6]

ObjexxFCL::IndexRange::IndexRange ( int const  l_a,
Star const &   
)
inlineprotected

Index and Unbounded Upper Index Constructor.

◆ ~IndexRange()

virtual ObjexxFCL::IndexRange::~IndexRange ( )
inlinevirtual

Destructor.

Member Function Documentation

◆ assign() [1/4]

virtual IndexRange& ObjexxFCL::IndexRange::assign ( int const  l_a,
int const  u_a 
)
inlinevirtual

Index Range Assignment.

Reimplemented in ObjexxFCL::StaticIndexRange, and ObjexxFCL::DynamicIndexRange.

References l_, size_, and u_.

◆ assign() [2/4]

virtual IndexRange& ObjexxFCL::IndexRange::assign ( int const  l_a,
Star const &   
)
inlinevirtual

Index and Unbounded Upper Index Assignment.

Reimplemented in ObjexxFCL::StaticIndexRange, and ObjexxFCL::DynamicIndexRange.

References l_, npos, size_, and u_.

◆ assign() [3/4]

virtual IndexRange& ObjexxFCL::IndexRange::assign ( int const  u_a)
inlinevirtual

◆ assign() [4/4]

virtual IndexRange& ObjexxFCL::IndexRange::assign ( Star const &  )
inlinevirtual

Unbounded Upper Index Assignment.

Reimplemented in ObjexxFCL::StaticIndexRange, and ObjexxFCL::DynamicIndexRange.

References l_, npos, size_, and u_.

◆ bounded()

virtual bool ObjexxFCL::IndexRange::bounded ( ) const
inlinevirtual

◆ bounded_value()

bool ObjexxFCL::IndexRange::bounded_value ( ) const
inline

◆ clear()

virtual IndexRange& ObjexxFCL::IndexRange::clear ( )
inlinevirtual

◆ contain() [1/2]

IndexRange & ObjexxFCL::IndexRange::contain ( IndexRange const &  I)
virtual

Expand to Contain Another IndexRange.

Reimplemented in ObjexxFCL::StaticIndexRange, and ObjexxFCL::DynamicIndexRange.

References bounded(), test.T110_numeric::I, l_, npos, size_, and u_.

◆ contain() [2/2]

virtual IndexRange& ObjexxFCL::IndexRange::contain ( int const  i)
inlinevirtual

Expand to Contain an Index.

Reimplemented in ObjexxFCL::StaticIndexRange, and ObjexxFCL::DynamicIndexRange.

References create_a3b_hbs::i, l_, size_, and u_.

Referenced by ObjexxFCL::StaticIndexRange::contain().

◆ contains() [1/2]

bool ObjexxFCL::IndexRange::contains ( IndexRange const &  I) const
virtual

Contains Another IndexRange?

Reimplemented in ObjexxFCL::DynamicIndexRange.

References test.T110_numeric::I, l_, and u_.

◆ contains() [2/2]

virtual bool ObjexxFCL::IndexRange::contains ( int const  i) const
inlinevirtual

◆ initialized()

virtual bool ObjexxFCL::IndexRange::initialized ( ) const
inlinevirtual

Initialized?

Reimplemented in ObjexxFCL::DynamicIndexRange.

◆ intersect()

IndexRange & ObjexxFCL::IndexRange::intersect ( IndexRange const &  I)
virtual

◆ intersects()

bool ObjexxFCL::IndexRange::intersects ( IndexRange const &  I) const
virtual

◆ l() [1/2]

int ObjexxFCL::IndexRange::l ( ) const
inline

◆ l() [2/2]

virtual IndexRange& ObjexxFCL::IndexRange::l ( int const  l_a)
inlinevirtual

Lower Index Set.

Reimplemented in ObjexxFCL::StaticIndexRange, and ObjexxFCL::DynamicIndexRange.

References l_, size_, and u_.

◆ l_dim_clone()

virtual Dimension* ObjexxFCL::IndexRange::l_dim_clone ( ) const
inlineprotectedvirtual

Lower Dimension Clone.

Reimplemented in ObjexxFCL::DynamicIndexRange.

◆ l_initialized()

virtual bool ObjexxFCL::IndexRange::l_initialized ( ) const
inlinevirtual

Lower Initialized?

Reimplemented in ObjexxFCL::DynamicIndexRange.

Referenced by l(), and offset().

◆ legal()

virtual bool ObjexxFCL::IndexRange::legal ( ) const
inlinevirtual

◆ legal_static()

bool ObjexxFCL::IndexRange::legal_static ( ) const
inlineprotected

◆ lz()

int ObjexxFCL::IndexRange::lz ( ) const
inline

Lower Index (Zero if Uninitialized)

References l_.

Referenced by ObjexxFCL::FArray1A< T >::dimension_argument(), ObjexxFCL::FArray2A< T >::dimension_argument(), ObjexxFCL::FArray3A< T >::dimension_argument(), ObjexxFCL::FArray4A< T >::dimension_argument(), ObjexxFCL::FArray5A< T >::dimension_argument(), ObjexxFCL::FArray6A< T >::dimension_argument(), ObjexxFCL::FArray1P< T >::dimension_proxy(), ObjexxFCL::FArray2P< T >::dimension_proxy(), ObjexxFCL::FArray3P< T >::dimension_proxy(), ObjexxFCL::FArray4P< T >::dimension_proxy(), ObjexxFCL::FArray5P< T >::dimension_proxy(), ObjexxFCL::FArray6P< T >::dimension_proxy(), ObjexxFCL::FArray1D< T >::dimension_real(), ObjexxFCL::FArray2D< T >::dimension_real(), ObjexxFCL::FArray3D< T >::dimension_real(), ObjexxFCL::FArray4D< T >::dimension_real(), ObjexxFCL::FArray5D< T >::dimension_real(), ObjexxFCL::FArray6D< T >::dimension_real(), ObjexxFCL::KeyFArray1D< T >::dimension_real(), ObjexxFCL::KeyFArray2D< T >::dimension_real(), ObjexxFCL::KeyFArray3D< T >::dimension_real(), ObjexxFCL::KeyFArray4D< T >::dimension_real(), ObjexxFCL::KeyFArray5D< T >::dimension_real(), ObjexxFCL::KeyFArray6D< T >::dimension_real(), ObjexxFCL::FArray1D< T >::setup_real(), ObjexxFCL::FArray2D< T >::setup_real(), ObjexxFCL::FArray3D< T >::setup_real(), ObjexxFCL::FArray4D< T >::setup_real(), ObjexxFCL::FArray5D< T >::setup_real(), ObjexxFCL::FArray6D< T >::setup_real(), ObjexxFCL::KeyFArray1D< T >::setup_real(), ObjexxFCL::KeyFArray2D< T >::setup_real(), ObjexxFCL::KeyFArray3D< T >::setup_real(), ObjexxFCL::KeyFArray4D< T >::setup_real(), ObjexxFCL::KeyFArray5D< T >::setup_real(), and ObjexxFCL::KeyFArray6D< T >::setup_real().

◆ not_unbounded()

virtual bool ObjexxFCL::IndexRange::not_unbounded ( ) const
inlinevirtual

Not Unbounded?

Reimplemented in ObjexxFCL::DynamicIndexRange.

References l_, and u_.

Referenced by ObjexxFCL::DynamicIndexRange::not_unbounded().

◆ offset()

int ObjexxFCL::IndexRange::offset ( int const  i) const
inline

Offset of an Index.

References create_a3b_hbs::i, l_, and l_initialized().

◆ operator=() [1/3]

IndexRange& ObjexxFCL::IndexRange::operator= ( IndexRange const &  I)
inlineprotected

◆ operator=() [2/3]

virtual IndexRange& ObjexxFCL::IndexRange::operator= ( int const  u_a)
inlinevirtual

Upper Index Assignment.

Reimplemented in ObjexxFCL::StaticIndexRange, and ObjexxFCL::DynamicIndexRange.

References l_, size_, and u_.

◆ operator=() [3/3]

virtual IndexRange& ObjexxFCL::IndexRange::operator= ( Star const &  )
inlinevirtual

Unbounded Upper Index Assignment.

Reimplemented in ObjexxFCL::StaticIndexRange, and ObjexxFCL::DynamicIndexRange.

References l_, npos, size_, and u_.

◆ positive()

virtual bool ObjexxFCL::IndexRange::positive ( ) const
inlinevirtual

Bounded with Positive Size?

Reimplemented in ObjexxFCL::DynamicIndexRange.

References l_, and u_.

Referenced by ObjexxFCL::DynamicIndexRange::positive().

◆ positive_value()

bool ObjexxFCL::IndexRange::positive_value ( ) const
inline

Bounded with Positive Size?

References l_, and u_.

◆ size()

size_type ObjexxFCL::IndexRange::size ( ) const
inline

Size.

References size_.

Referenced by ObjexxFCL::FArray1A< T >::dimension_argument(), ObjexxFCL::FArray2A< T >::dimension_argument(), ObjexxFCL::FArray3A< T >::dimension_argument(), ObjexxFCL::FArray4A< T >::dimension_argument(), ObjexxFCL::FArray5A< T >::dimension_argument(), ObjexxFCL::FArray6A< T >::dimension_argument(), ObjexxFCL::FArray1P< T >::dimension_proxy(), ObjexxFCL::FArray2P< T >::dimension_proxy(), ObjexxFCL::FArray3P< T >::dimension_proxy(), ObjexxFCL::FArray4P< T >::dimension_proxy(), ObjexxFCL::FArray5P< T >::dimension_proxy(), ObjexxFCL::FArray6P< T >::dimension_proxy(), ObjexxFCL::FArray2D< T >::dimension_real(), ObjexxFCL::FArray3D< T >::dimension_real(), ObjexxFCL::FArray4D< T >::dimension_real(), ObjexxFCL::FArray5D< T >::dimension_real(), ObjexxFCL::FArray6D< T >::dimension_real(), ObjexxFCL::KeyFArray2D< T >::dimension_real(), ObjexxFCL::KeyFArray3D< T >::dimension_real(), ObjexxFCL::KeyFArray4D< T >::dimension_real(), ObjexxFCL::KeyFArray5D< T >::dimension_real(), ObjexxFCL::KeyFArray6D< T >::dimension_real(), ObjexxFCL::FArray2D< T >::setup_real(), ObjexxFCL::FArray3D< T >::setup_real(), ObjexxFCL::FArray4D< T >::setup_real(), ObjexxFCL::FArray5D< T >::setup_real(), ObjexxFCL::FArray6D< T >::setup_real(), ObjexxFCL::KeyFArray2D< T >::setup_real(), ObjexxFCL::KeyFArray3D< T >::setup_real(), ObjexxFCL::KeyFArray4D< T >::setup_real(), ObjexxFCL::KeyFArray5D< T >::setup_real(), ObjexxFCL::KeyFArray6D< T >::setup_real(), ObjexxFCL::KeyFArray1D< T >::size1(), ObjexxFCL::FArray1A< T >::size1(), ObjexxFCL::FArray1D< T >::size1(), ObjexxFCL::FArray1P< T >::size1(), ObjexxFCL::KeyFArray2D< T >::size2(), ObjexxFCL::FArray2A< T >::size2(), ObjexxFCL::FArray2D< T >::size2(), ObjexxFCL::FArray2P< T >::size2(), ObjexxFCL::KeyFArray3D< T >::size3(), ObjexxFCL::FArray3A< T >::size3(), ObjexxFCL::FArray3D< T >::size3(), ObjexxFCL::FArray3P< T >::size3(), ObjexxFCL::FArray4A< T >::size4(), ObjexxFCL::FArray4P< T >::size4(), ObjexxFCL::KeyFArray4D< T >::size4(), ObjexxFCL::FArray4D< T >::size4(), ObjexxFCL::FArray5A< T >::size5(), ObjexxFCL::FArray5P< T >::size5(), ObjexxFCL::KeyFArray5D< T >::size5(), ObjexxFCL::FArray5D< T >::size5(), ObjexxFCL::FArray6A< T >::size6(), ObjexxFCL::FArray6D< T >::size6(), ObjexxFCL::FArray6P< T >::size6(), ObjexxFCL::KeyFArray6D< T >::size6(), and ObjexxFCL::FArray< T >::size_of().

◆ swap()

void ObjexxFCL::IndexRange::swap ( IndexRange I)
inlineprotected

◆ u() [1/3]

int ObjexxFCL::IndexRange::u ( ) const
inline

◆ u() [2/3]

virtual IndexRange& ObjexxFCL::IndexRange::u ( int const  u_a)
inlinevirtual

Upper Index Set.

Reimplemented in ObjexxFCL::StaticIndexRange, and ObjexxFCL::DynamicIndexRange.

References l_, size_, and u_.

◆ u() [3/3]

virtual IndexRange& ObjexxFCL::IndexRange::u ( Star const &  )
inlinevirtual

Unbounded Upper Index Set.

Reimplemented in ObjexxFCL::StaticIndexRange, and ObjexxFCL::DynamicIndexRange.

References l_, npos, size_, and u_.

◆ u_dim_clone()

virtual Dimension* ObjexxFCL::IndexRange::u_dim_clone ( ) const
inlineprotectedvirtual

Upper Dimension Clone.

Reimplemented in ObjexxFCL::DynamicIndexRange.

◆ u_initialized()

virtual bool ObjexxFCL::IndexRange::u_initialized ( ) const
inlinevirtual

Upper Initialized?

Reimplemented in ObjexxFCL::DynamicIndexRange.

Referenced by u().

◆ unbounded()

virtual bool ObjexxFCL::IndexRange::unbounded ( ) const
inlinevirtual

Unbounded?

Reimplemented in ObjexxFCL::DynamicIndexRange.

References l_, and u_.

Referenced by ObjexxFCL::DynamicIndexRange::unbounded().

◆ unbounded_value()

bool ObjexxFCL::IndexRange::unbounded_value ( ) const
inline

Unbounded?

References l_, and u_.

◆ uz()

int ObjexxFCL::IndexRange::uz ( ) const
inline

Upper Index (Zero if Uninitialized)

References u_.

Friends And Related Function Documentation

◆ DynamicIndexRange

friend class DynamicIndexRange
friend

◆ operator!=

bool operator!= ( IndexRange const &  I,
IndexRange const &  J 
)
friend

◆ operator<

bool operator< ( IndexRange const &  I,
IndexRange const &  J 
)
friend

◆ operator<<

std::ostream& operator<< ( std::ostream &  stream,
IndexRange const &  I 
)
friend

Stream Output.

◆ operator<=

bool operator<= ( IndexRange const &  I,
IndexRange const &  J 
)
friend

◆ operator==

bool operator== ( IndexRange const &  I,
IndexRange const &  J 
)
friend

◆ operator>

bool operator> ( IndexRange const &  I,
IndexRange const &  J 
)
friend

◆ operator>=

bool operator>= ( IndexRange const &  I,
IndexRange const &  J 
)
friend

◆ operator>>

std::istream& operator>> ( std::istream &  stream,
IndexRange I 
)
friend

Stream Input.

◆ StaticIndexRange

friend class StaticIndexRange
friend

Member Data Documentation

◆ l_

int ObjexxFCL::IndexRange::l_
private

◆ l_min

int const ObjexxFCL::IndexRange::l_min = -( static_cast< int >( ( static_cast< unsigned int >( -1 ) / 2u ) ) - 1 )
static

◆ npos

IndexRange::size_type const ObjexxFCL::IndexRange::npos = static_cast< size_type >( -1 )
static

◆ size_

size_type ObjexxFCL::IndexRange::size_
private

◆ u_

int ObjexxFCL::IndexRange::u_
private

◆ u_max

int const ObjexxFCL::IndexRange::u_max = static_cast< int >( ( static_cast< unsigned int >( -1 ) / 2u ) )
static

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