Loading...
Searching...
No Matches
baseIterator.h
Go to the documentation of this file.
// -*- Mode: C++; tab-width: 2; -*-
// vi: set ts=2:
//
#ifndef BALL_CONCEPT_BASEITERATOR_H
#define BALL_CONCEPT_BASEITERATOR_H
#ifndef BALL_CONFIG_CONFIG_H
# include <BALL/CONFIG/config.h>
#endif
#ifndef BALL_COMMON_GLOBAL_H
# include <BALL/COMMON/global.h>
#endif
#ifndef BALL_COMMON_EXCEPTION_H
# include <BALL/COMMON/exception.h>
#endif
namespace BALL
{
template <typename Container, typename DataType, typename Position, typename Traits>
class BaseIterator
{
public:
typedef DataType value_type;
typedef Position difference_type;
typedef const DataType* pointer;
typedef const DataType& reference;
typedef std::input_iterator_tag iterator_category;
BALL_INLINE BaseIterator() {}
BALL_INLINE BaseIterator(const BaseIterator& iterator)
: traits_(iterator.traits_)
{
}
BALL_INLINE ~BaseIterator() {}
BALL_INLINE BaseIterator& operator = (const BaseIterator& iterator)
{
traits_ = iterator.traits_;
return *this;
}
BALL_INLINE void swap(BaseIterator& iterator) { std::swap(traits_, iterator.traits_); }
BALL_INLINE void invalidate() { traits_.invalidate(); }
BALL_INLINE void setTraits(const Traits& traits) { traits_ = traits; }
BALL_INLINE const Traits& getTraits() const { return traits_; }
BALL_INLINE Traits& getTraits() { return traits_; }
BALL_INLINE const Container* getContainer() const { return traits_.getContainer(); }
BALL_INLINE operator const Position& () const { return traits_.getPosition(); }
BALL_INLINE reference operator * () const { return (reference)traits_.getData(); }
BALL_INLINE pointer operator -> () const { return (pointer)&traits_.getData(); }
BALL_INLINE bool operator == (const BaseIterator& iterator) const { return (traits_ == iterator.traits_); }
BALL_INLINE bool operator != (const BaseIterator& iterator) const { return !(traits_ == iterator.traits_); }
BALL_INLINE bool isSingular() const { return traits_.isSingular(); }
BALL_INLINE bool isValid() const { return traits_.isValid(); }
BALL_INLINE bool operator + () const { return traits_.isValid(); }
BALL_INLINE bool operator - () const { return !traits_.isValid(); }
protected:
BALL_INLINE BaseIterator(const Container& container)
: traits_(container)
{
}
private:
Traits traits_;
};
} // namespace BALL
#endif // BALL_CONCEPT_BASEITERATOR_H
exception.h
global.h
BALL::BaseIterator::operator->
BALL_INLINE pointer operator->() const
Return a pointer to the current data.
Definition baseIterator.h:153
BALL::BaseIterator::swap
BALL_INLINE void swap(BaseIterator &iterator)
Swap two iterators.
Definition baseIterator.h:116
BALL::BaseIterator::BaseIterator
BALL_INLINE BaseIterator(const BaseIterator &iterator)
Copy constructor.
Definition baseIterator.h:92
BALL::BaseIterator::operator-
BALL_INLINE bool operator-() const
Invalidity perdicate.
Definition baseIterator.h:181
BALL::BaseIterator::getTraits
BALL_INLINE Traits & getTraits()
Get a constant reference to the traits of this iterator.
Definition baseIterator.h:133
BALL::BaseIterator::operator=
BALL_INLINE BaseIterator & operator=(const BaseIterator &iterator)
Definition baseIterator.h:109
BALL::BaseIterator::value_type
DataType value_type
Definition baseIterator.h:74
BALL::BaseIterator::reference
const DataType & reference
Definition baseIterator.h:80
BALL::BaseIterator::difference_type
Position difference_type
Definition baseIterator.h:76
BALL::BaseIterator::operator==
BALL_INLINE bool operator==(const BaseIterator &iterator) const
Equality operator.
Definition baseIterator.h:161
BALL::BaseIterator::~BaseIterator
BALL_INLINE ~BaseIterator()
Destructor.
Definition baseIterator.h:98
BALL::BaseIterator::operator!=
BALL_INLINE bool operator!=(const BaseIterator &iterator) const
Inequality operator.
Definition baseIterator.h:164
BALL::BaseIterator::getTraits
BALL_INLINE const Traits & getTraits() const
Get a constant reference to the traits of this iterator.
Definition baseIterator.h:130
BALL::BaseIterator::getContainer
BALL_INLINE const Container * getContainer() const
Get a constant pointer to the container of this iterator.
Definition baseIterator.h:136
BALL::BaseIterator::operator+
BALL_INLINE bool operator+() const
Validity predicate.
Definition baseIterator.h:178
BALL::BaseIterator::iterator_category
std::input_iterator_tag iterator_category
Definition baseIterator.h:82
BALL::BaseIterator::invalidate
BALL_INLINE void invalidate()
Invalidate the iterator.
Definition baseIterator.h:124
BALL::BaseIterator::isValid
BALL_INLINE bool isValid() const
Definition baseIterator.h:175
BALL::BaseIterator::isSingular
BALL_INLINE bool isSingular() const
Definition baseIterator.h:170
BALL::BaseIterator::operator*
BALL_INLINE reference operator*() const
Convert an iterator to its Datatype by returning a reference to the current data.
Definition baseIterator.h:150
BALL::BaseIterator::BaseIterator
BALL_INLINE BaseIterator(const Container &container)
Definition baseIterator.h:189
BALL::BaseIterator::BaseIterator
BALL_INLINE BaseIterator()
Default constructor.
Definition baseIterator.h:89
BALL::BaseIterator::setTraits
BALL_INLINE void setTraits(const Traits &traits)
Set the traits.
Definition baseIterator.h:127
BALL::BaseIterator::pointer
const DataType * pointer
Definition baseIterator.h:78
BALL_INLINE
#define BALL_INLINE
Definition debug.h:15
BALL
Definition constants.h:13
BALL::Position
BALL_SIZE_TYPE Position
Definition COMMON/global.h:140