Teuchos Package Browser (Single Doxygen Collection)  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Types | Public Member Functions | Static Public Attributes | Private Member Functions | Private Attributes | Related Functions | List of all members
Teuchos::Range1D Class Reference

Subregion Index Range Class. More...

#include <Teuchos_Range1D.hpp>

Public Types

enum  EInvalidRange { INVALID }
 
typedef Teuchos_Ordinal Index
 Deprecated. More...
 
typedef Teuchos_Ordinal Ordinal
 Deprecated. More...
 

Public Member Functions

 Range1D ()
 Construct a full range. More...
 
 Range1D (EInvalidRange)
 Constructs an invalid range. More...
 
 Range1D (Ordinal lbound, Ordinal ubound)
 Construct a finite range [lbound, ubound]. More...
 
bool full_range () const
 Returns true if the range represents the entire region. More...
 
Ordinal lbound () const
 Return lower bound of the range. More...
 
Ordinal ubound () const
 Return upper bound of the range. More...
 
Ordinal size () const
 Return the size of the range (ubound() - lbound() + 1) More...
 
bool in_range (Ordinal i) const
 Return true if the index is in range. More...
 
Range1Doperator+= (Ordinal incr)
 Increment the range by a constant. More...
 
Range1Doperator-= (Ordinal incr)
 Deincrement the range by a constant. More...
 

Static Public Attributes

static const Range1D Invalid
 Used for Range1D(INVALID) More...
 

Private Member Functions

void assert_valid_range (Ordinal lbound, Ordinal ubound) const
 

Private Attributes

Ordinal lbound_
 
Ordinal ubound_
 

Related Functions

(Note that these are not member functions.)

bool operator== (const Range1D &rng1, const Range1D &rng2)
 rng1 == rng2. More...
 
bool operator!= (const Range1D &rng1, const Range1D &rng2)
 rng1 == rng2. More...
 
Range1D operator+ (const Range1D &rng_rhs, Range1D::Ordinal i)
 rng_lhs = rng_rhs + i. More...
 
Range1D operator+ (Range1D::Ordinal i, const Range1D &rng_rhs)
 rng_lhs = i + rng_rhs. More...
 
Range1D operator- (const Range1D &rng_rhs, Range1D::Ordinal i)
 rng_lhs = rng_rhs - i. More...
 
Range1D full_range (const Range1D &rng, Range1D::Ordinal lbound, Range1D::Ordinal ubound)
 Return a bounded index range from a potentially unbounded index range. More...
 
TEUCHOSCORE_LIB_DLL_EXPORT
std::ostream & 
operator<< (std::ostream &out, const Range1D &rng)
 Print out to ostream. More...
 

Detailed Description

Subregion Index Range Class.

The class Range1D encapsulates a 1-D, zero-based, range of non-negative indexes. It is used to index into vectors and matrices and return subregions of them respectively.

Constructing using Range1D() yields a range that represents the entire dimension of an object [0, max_ubound] (an entire std::vector, all the rows in a matrix, or all the columns in a matrix etc.).

Constructing using Range1D(INVALID) yields an invalid range [0,-2] with size() == -1. Once constructed with Range1D(INVALID), a Range1D object can pass through many other operations that may change lbound() and ubound() but will never change size()==-1.

Constructing using Range1D(lbound,ubound) yields a finite-dimensional zero-based range. The validity of constructed range will only be checked if TEUCHOS_DEBUG is defined.

There are many non-member functions that can be used with Range1D objects.

The default copy constructor and assignment operator functions are allowed since they have the correct semantics.

Definition at line 88 of file Teuchos_Range1D.hpp.

Member Typedef Documentation

Deprecated.

Definition at line 92 of file Teuchos_Range1D.hpp.

Deprecated.

Definition at line 95 of file Teuchos_Range1D.hpp.

Member Enumeration Documentation

Enumerator
INVALID 

Definition at line 98 of file Teuchos_Range1D.hpp.

Constructor & Destructor Documentation

Teuchos::Range1D::Range1D ( )
inline

Construct a full range.

Postconditions:

Definition at line 288 of file Teuchos_Range1D.hpp.

Teuchos::Range1D::Range1D ( EInvalidRange  )
inline

Constructs an invalid range.

Postconditions:

Definition at line 293 of file Teuchos_Range1D.hpp.

Teuchos::Range1D::Range1D ( Ordinal  lbound,
Ordinal  ubound 
)
inline

Construct a finite range [lbound, ubound].

Preconditions:

  • lbound >= 0 (throw out_of_range)
  • ubound >= lbound-1 (throw out_of_range)

Postconditions:

Note
It is allowed for ubound == lbound-1 which yields a zero-sized range. There are use cases where this is useful so it is allowed.

Definition at line 299 of file Teuchos_Range1D.hpp.

Member Function Documentation

bool Teuchos::Range1D::full_range ( ) const
inline

Returns true if the range represents the entire region.

Definition at line 306 of file Teuchos_Range1D.hpp.

Range1D::Ordinal Teuchos::Range1D::lbound ( ) const
inline

Return lower bound of the range.

Definition at line 311 of file Teuchos_Range1D.hpp.

Range1D::Ordinal Teuchos::Range1D::ubound ( ) const
inline

Return upper bound of the range.

Definition at line 316 of file Teuchos_Range1D.hpp.

Range1D::Ordinal Teuchos::Range1D::size ( ) const
inline

Return the size of the range (ubound() - lbound() + 1)

Definition at line 321 of file Teuchos_Range1D.hpp.

bool Teuchos::Range1D::in_range ( Ordinal  i) const
inline

Return true if the index is in range.

Definition at line 326 of file Teuchos_Range1D.hpp.

Range1D & Teuchos::Range1D::operator+= ( Ordinal  incr)
inline

Increment the range by a constant.

this->lbound() + incr >= 0 (throws out_of_range)

Definition at line 331 of file Teuchos_Range1D.hpp.

Range1D & Teuchos::Range1D::operator-= ( Ordinal  incr)
inline

Deincrement the range by a constant.

this->lbound() - incr >= 0 (throws out_of_range)

Definition at line 339 of file Teuchos_Range1D.hpp.

void Teuchos::Range1D::assert_valid_range ( Ordinal  lbound,
Ordinal  ubound 
) const
inlineprivate

Definition at line 350 of file Teuchos_Range1D.hpp.

Friends And Related Function Documentation

bool operator== ( const Range1D rng1,
const Range1D rng2 
)
related

rng1 == rng2.

Returns
Returns rng1.lbound() == rng2.ubound() && rng1.ubound() == rng2.ubound().

Definition at line 188 of file Teuchos_Range1D.hpp.

bool operator!= ( const Range1D rng1,
const Range1D rng2 
)
related

rng1 == rng2.

Returns
Returns rng1.lbound() == rng2.ubound() && rng1.ubound() == rng2.ubound().

Definition at line 200 of file Teuchos_Range1D.hpp.

Range1D operator+ ( const Range1D rng_rhs,
Range1D::Ordinal  i 
)
related

rng_lhs = rng_rhs + i.

Increments the upper and lower bounds by a constant.

Postcondition:

  • rng_lhs.lbound() == rng_rhs.lbound() + i
  • rng_lhs.ubound() == rng_rhs.ubound() + i

Definition at line 217 of file Teuchos_Range1D.hpp.

Range1D operator+ ( Range1D::Ordinal  i,
const Range1D rng_rhs 
)
related

rng_lhs = i + rng_rhs.

Increments the upper and lower bounds by a constant.

Postcondition:

  • rng_lhs.lbound() == i + rng_rhs.lbound()
  • rng_lhs.ubound() == i + rng_rhs.ubound()

Definition at line 234 of file Teuchos_Range1D.hpp.

Range1D operator- ( const Range1D rng_rhs,
Range1D::Ordinal  i 
)
related

rng_lhs = rng_rhs - i.

Deincrements the upper and lower bounds by a constant.

Postcondition:

  • rng_lhs.lbound() == rng_rhs.lbound() - i
  • rng_lhs.ubound() == rng_rhs.ubound() - i

Definition at line 251 of file Teuchos_Range1D.hpp.

Range1D full_range ( const Range1D rng,
Range1D::Ordinal  lbound,
Range1D::Ordinal  ubound 
)
related

Return a bounded index range from a potentially unbounded index range.

Return a index range of lbound to ubound if rng.full_range() == true , otherwise just return a copy of rng.

Postconditions:

  • [rng.full_range() == true] return.lbound() == lbound
  • [rng.full_range() == true] return.ubound() == ubound
  • [rng.full_range() == false] return.lbound() == rng.lbound()
  • [rng.full_range() == false] return.ubound() == rng.ubound()

Definition at line 272 of file Teuchos_Range1D.hpp.

TEUCHOSCORE_LIB_DLL_EXPORT std::ostream & operator<< ( std::ostream &  out,
const Range1D rng 
)
related

Print out to ostream.

Member Data Documentation

const Range1D Teuchos::Range1D::Invalid
static

Used for Range1D(INVALID)

Definition at line 101 of file Teuchos_Range1D.hpp.

Ordinal Teuchos::Range1D::lbound_
private

Definition at line 174 of file Teuchos_Range1D.hpp.

Ordinal Teuchos::Range1D::ubound_
private

Definition at line 175 of file Teuchos_Range1D.hpp.


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