PLearn 0.1
Public Member Functions | Private Attributes
PLearn::PRange< T > Class Template Reference

#include <PRange.h>

Collaboration diagram for PLearn::PRange< T >:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 PRange ()
 Creates an empty range [-1,0].
 PRange (const T &val)
 Creates a range with one element : [val,val].
 PRange (const T &lower, const T &upper)
 Creates the range [lower, upper].
bool contains (const T &val) const
 Returns true iff "val" is inside range.
bool isEmpty () const
 Returns true iff the range is empty.
lower () const
 Returns the lower bound.
upper () const
 Returns the upper bound.
void clear ()
 Sets to the empty range.
void setValue (const T &val)
 Sets to the one-element range [val,val].
void setBounds (const T &lower, const T &upper)
 Changes the bounds.
void translate (const T &offset)
 Moves the bounds jointly.
void translateUpper (const T &offset)
 Move the upper bound only.
void translateLower (const T &offset)
 Move the lower bound only.
distance () const
 Returns the distance (always positive).
bool operator== (const PRange< T > &r)
 Returns true iff both ranges are empty or have the same bounds.
bool operator!= (const PRange< T > &r) const
 Returns true iff the ranges are not equal.
PRangeoperator|= (const PRange< T > &r)
 Union-assignment operator.
PRangeoperator&= (const PRange< T > &r)
 Intersection-assignment operator.

Private Attributes

lower_
upper_

Detailed Description

template<class T>
class PLearn::PRange< T >

This template class represents a range of values. A range is simply a pair of boundaries lower and upper s.t. lower <= upper. The range represented by PRange is always inclusive, i.e. lower and upper are part of the range. A PRange may contain just one value (i.e. lower == upper) and it may be empty (in this case, lower will be set to zero and upper will be set to -1).

Definition at line 57 of file PRange.h.


Constructor & Destructor Documentation

template<class T>
PLearn::PRange< T >::PRange ( ) [inline]

Creates an empty range [-1,0].

Definition at line 68 of file PRange.h.

: lower_(0), upper_(-1) { }
template<class T>
PLearn::PRange< T >::PRange ( const T &  val) [inline]

Creates a range with one element : [val,val].

Definition at line 71 of file PRange.h.

: lower_(val), upper_(val) { }
template<class T>
PLearn::PRange< T >::PRange ( const T &  lower,
const T &  upper 
) [inline]

Creates the range [lower, upper].

Definition at line 74 of file PRange.h.

References PLearn::PRange< T >::setBounds().

Here is the call graph for this function:


Member Function Documentation

template<class T>
void PLearn::PRange< T >::clear ( ) [inline]

Sets to the empty range.

Definition at line 92 of file PRange.h.

References PLearn::PRange< T >::lower_, and PLearn::PRange< T >::upper_.

Referenced by PLearn::PRange< T >::operator&=().

{ lower_ = 0; upper_ = -1; }

Here is the caller graph for this function:

template<class T>
bool PLearn::PRange< T >::contains ( const T &  val) const [inline]

Returns true iff "val" is inside range.

Definition at line 78 of file PRange.h.

References PLearn::PRange< T >::lower_, and PLearn::PRange< T >::upper_.

    { return (lower_ <= val && val <= upper_); }
template<class T>
T PLearn::PRange< T >::distance ( ) const [inline]

Returns the distance (always positive).

Definition at line 120 of file PRange.h.

References PLearn::PRange< T >::lower_, PLearn::max(), and PLearn::PRange< T >::upper_.

{ return (max(0,upper_ - lower_ + 1)); }

Here is the call graph for this function:

template<class T>
bool PLearn::PRange< T >::isEmpty ( ) const [inline]

Returns true iff the range is empty.

Definition at line 82 of file PRange.h.

References PLearn::PRange< T >::lower_, and PLearn::PRange< T >::upper_.

Referenced by PLearn::operator&(), PLearn::PRange< T >::operator&=(), PLearn::operator|(), and PLearn::PRange< T >::operator|=().

{ return (lower_ > upper_); }

Here is the caller graph for this function:

template<class T>
T PLearn::PRange< T >::lower ( ) const [inline]
template<class T>
bool PLearn::PRange< T >::operator!= ( const PRange< T > &  r) const [inline]

Returns true iff the ranges are not equal.

Definition at line 127 of file PRange.h.

References PLearn::PRange< T >::lower(), PLearn::PRange< T >::lower_, PLearn::PRange< T >::upper(), and PLearn::PRange< T >::upper_.

    { return (r.lower() != lower_ || r.upper() != upper_); }

Here is the call graph for this function:

template<class T>
PRange& PLearn::PRange< T >::operator&= ( const PRange< T > &  r) [inline]

Intersection-assignment operator.

Definition at line 144 of file PRange.h.

References PLearn::PRange< T >::clear(), PLearn::PRange< T >::isEmpty(), PLearn::PRange< T >::lower(), PLearn::PRange< T >::lower_, PLearn::max(), PLearn::min(), PLearn::PRange< T >::upper(), and PLearn::PRange< T >::upper_.

    {
        if (! isEmpty()){
            if (! r.isEmpty()) {
                lower_ = max(lower_, r.lower());
                upper_ = min(upper_, r.upper());
            }
            else
                clear();
        }
            
        return (*this);
    }

Here is the call graph for this function:

template<class T>
bool PLearn::PRange< T >::operator== ( const PRange< T > &  r) [inline]

Returns true iff both ranges are empty or have the same bounds.

Definition at line 123 of file PRange.h.

References PLearn::PRange< T >::lower(), PLearn::PRange< T >::lower_, PLearn::PRange< T >::upper(), and PLearn::PRange< T >::upper_.

    { return (r.lower() == lower_ && r.upper() == upper_); }

Here is the call graph for this function:

template<class T>
PRange& PLearn::PRange< T >::operator|= ( const PRange< T > &  r) [inline]

Union-assignment operator.

Definition at line 131 of file PRange.h.

References PLearn::PRange< T >::isEmpty(), PLearn::PRange< T >::lower(), PLearn::PRange< T >::lower_, PLearn::max(), PLearn::min(), PLearn::PRange< T >::upper(), and PLearn::PRange< T >::upper_.

    {
        if (isEmpty())
            return operator=(r);
        else if (!r.isEmpty())
        {
            lower_ = min(lower_, r.lower());
            upper_ = max(upper_, r.upper());
        }
        return (*this);
    }

Here is the call graph for this function:

template<class T>
void PLearn::PRange< T >::setBounds ( const T &  lower,
const T &  upper 
) [inline]

Changes the bounds.

Definition at line 98 of file PRange.h.

References PLearn::PRange< T >::lower(), PLearn::PRange< T >::lower_, PLearn::PRange< T >::upper(), and PLearn::PRange< T >::upper_.

Referenced by PLearn::PRange< T >::PRange().

    {
        if (lower > upper)
        { lower_ = 0; upper_ = -1; }
        else
        { lower_ = lower; upper_ = upper; }
    }

Here is the call graph for this function:

Here is the caller graph for this function:

template<class T>
void PLearn::PRange< T >::setValue ( const T &  val) [inline]

Sets to the one-element range [val,val].

Definition at line 95 of file PRange.h.

References PLearn::PRange< T >::lower_, and PLearn::PRange< T >::upper_.

{ lower_ = upper_ = val; }
template<class T>
void PLearn::PRange< T >::translate ( const T &  offset) [inline]

Moves the bounds jointly.

Definition at line 107 of file PRange.h.

References PLearn::PRange< T >::lower_, and PLearn::PRange< T >::upper_.

    {
        lower_ += offset;
        upper_ += offset;
    }
template<class T>
void PLearn::PRange< T >::translateLower ( const T &  offset) [inline]

Move the lower bound only.

Definition at line 117 of file PRange.h.

References PLearn::PRange< T >::lower_.

{ lower_ += offset; }
template<class T>
void PLearn::PRange< T >::translateUpper ( const T &  offset) [inline]

Move the upper bound only.

Definition at line 114 of file PRange.h.

References PLearn::PRange< T >::upper_.

{ upper_ += offset; }
template<class T>
T PLearn::PRange< T >::upper ( ) const [inline]

Member Data Documentation

template<class T>
T PLearn::PRange< T >::lower_ [private]
template<class T>
T PLearn::PRange< T >::upper_ [private]

The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines