CppUnit project page CppUnit home page

enumerator.h File Reference

#include <cpptl/typetraits.h>
#include <stdexcept>

Include dependency graph for enumerator.h:

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

namespace  CppTL
namespace  CppTL::Enum

Classes

struct  CppTL::STLIteratorTraits< IteratorType >
struct  CppTL::STLIteratorTraits< ValueType * >
class  CppTL::StopEnumerationError
class  CppTL::EnumeratorBase
class  CppTL::TypeEnumeratorBase< EnumValueType >
class  CppTL::EmptyEnumerator< ValueType >
class  CppTL::ForwardItEnumeratorBase< ForwardItType, ForwardItValueType >
class  CppTL::ForwardItEnumerator< ForwardItType, ForwardItValueType >
class  CppTL::TransformForwardItEnumerator< ForwardItType, TransformFn >
class  CppTL::ContainerEnumerator< STLContainerType, ValueType >
class  CppTL::TransformEnumerator< Adaptor, AdaptedEnumeratorType >
class  CppTL::MapKeysEnumerator< MapIteratorType, ValueType >
class  CppTL::MapValuesEnumerator< MapIteratorType, ValueType >
class  CppTL::FilterEnumerator< FilteredEnumerator, FilterPredicate >
class  CppTL::SliceEnumerator< EnumeratorType >
class  CppTL::AnyEnumeratorBase< ValueType >
class  CppTL::AnyEnumeratorImpl< EnumeratorType, ValueType >
class  CppTL::AnyEnumerator< ValueType >
class  CppTL::SugarEnumerator< ThinEnumeratorType, ValueType >
class  CppTL::AddressOfAdaptor< ValueType >

Defines

#define CPPTL_ENUMERATOR_CHECK_CURRENT
#define CPPTL_ENUMERATOR_CHECK_ADVANCE
#define CPPTL_IMPL_ENUMERATOR
 Implements all sugar functions for enumerator.

Functions

template<class EnumeratorType>
void CppTL::assertEnumeratorHasNext (const EnumeratorType &enumerator)
template<class ForwardItType>
ForwardItEnumerator
< ForwardItType > 
CppTL::Enum::range (ForwardItType begin, ForwardItType end)
template<class ForwardItType, class ValueType>
ForwardItEnumerator
< ForwardItType, typename
ValueType::type > 
CppTL::Enum::range (ForwardItType begin, ForwardItType end, ValueType)
template<class ForwardItType, class Adaptor>
TransformForwardItEnumerator
< ForwardItType, Adaptor > 
CppTL::Enum::rangeTransform (ForwardItType begin, ForwardItType end, Adaptor adaptor)
template<class ContainerType>
ContainerEnumerator
< ContainerType > 
CppTL::Enum::container (const ContainerType &enumeratedContainer)
template<class ContainerType, class ValueType>
ContainerEnumerator
< ContainerType, typename
ValueType::type > 
CppTL::Enum::container (const ContainerType &enumeratedContainer, ValueType)
template<class ForwardItType>
MapKeysEnumerator< ForwardItType > CppTL::Enum::keysRange (ForwardItType begin, ForwardItType end)
template<class ForwardItType, class ValueType>
MapKeysEnumerator
< ForwardItType, typename
ValueType::type > 
CppTL::Enum::keysRange (ForwardItType begin, ForwardItType end, ValueType)
template<class ContainerType>
MapKeysEnumerator< typename
ContainerType::const_iterator,
typename RemoveConst< typename
ContainerType::value_type::first_type >
::type > 
CppTL::Enum::keys (const ContainerType &container)
template<class ContainerType, class ValueType>
MapKeysEnumerator< typename
ContainerType::const_iterator,
typename ValueType::type > 
CppTL::Enum::keys (const ContainerType &container, ValueType)
template<class ContainerType>
MapValuesEnumerator< typename
ContainerType::const_iterator,
typename RemoveConst< typename
ContainerType::value_type::second_type >
::type > 
CppTL::Enum::values (const ContainerType &container)
template<class ContainerType, class ValueType>
MapValuesEnumerator< typename
ContainerType::const_iterator,
typename ValueType::type > 
CppTL::Enum::values (const ContainerType &container, ValueType)
template<class ForwardItType>
MapValuesEnumerator
< ForwardItType > 
CppTL::Enum::valuesRange (ForwardItType begin, ForwardItType end)
template<class ForwardItType, class ValueType>
MapValuesEnumerator
< ForwardItType, typename
ValueType::type > 
CppTL::Enum::valuesRange (ForwardItType begin, ForwardItType end, ValueType)
template<class EnumeratorType>
AnyEnumerator< typename
EnumeratorType::value_type > 
CppTL::Enum::any (const EnumeratorType &enumerator)
template<class EnumeratorType, class Adaptor>
TransformEnumerator< Adaptor,
EnumeratorType > 
CppTL::Enum::transform (const EnumeratorType &enumerator, Adaptor adaptor)
template<class EnumeratorType>
TransformEnumerator
< AddressOfAdaptor< typename
EnumeratorType::value_type >
, EnumeratorType > 
CppTL::Enum::addressOfTransform (const EnumeratorType &enumerator)
template<class EnumeratorType, class Predicate>
FilterEnumerator
< EnumeratorType, Predicate > 
CppTL::Enum::filter (const EnumeratorType &enumerator, Predicate predicate)
template<class EnumeratorType>
SliceEnumerator< EnumeratorType > CppTL::Enum::slice (const EnumeratorType &enumerator, unsigned int beginIndex, unsigned int endIndex=-1)
template<class ThinEnumeratorType>
SugarEnumerator
< ThinEnumeratorType > 
CppTL::Enum::sugar (const ThinEnumeratorType &e)
 Implements full Enumerator interface for an enumerator providing only is_open(), current() and advance().
template<class ForwardItType>
AnyEnumerator< typename
RemoveConst< typename
ForwardItType::value_type >
::type > 
CppTL::Enum::anyRange (ForwardItType begin, ForwardItType end)
template<class ForwardItType, class ValueType>
AnyEnumerator< typename
ValueType::type > 
CppTL::Enum::anyRange (ForwardItType begin, ForwardItType end, ValueType type)
template<class ForwardItType, class Adaptor>
AnyEnumerator< typename
Adaptor::result_type > 
CppTL::Enum::anyRangeTransform (ForwardItType begin, ForwardItType end, Adaptor adaptor)
template<class ContainerType>
AnyEnumerator< typename
RemoveConst< typename
ContainerType::value_type >
::type > 
CppTL::Enum::anyContainer (const ContainerType &enumeratedContainer)
template<class ContainerType, class ValueType>
AnyEnumerator< typename
ValueType::type > 
CppTL::Enum::anyContainer (const ContainerType &enumeratedContainer, ValueType type)
template<class ForwardItType>
AnyEnumerator< typename
RemoveConst< typename
ForwardItType::value_type::first_type >
::type > 
CppTL::Enum::anyKeysRange (ForwardItType begin, ForwardItType end)
template<class ForwardItType, class ValueType>
AnyEnumerator< typename
ValueType::type > 
CppTL::Enum::anyKeysRange (ForwardItType begin, ForwardItType end, ValueType type)
template<class ContainerType, class ValueType>
AnyEnumerator< typename
ValueType::type > 
CppTL::Enum::anyKeys (const ContainerType &container, ValueType type)
template<class ContainerType>
AnyEnumerator< typename
RemoveConst< typename
ContainerType::value_type::first_type >
::type > 
CppTL::Enum::anyKeys (const ContainerType &container)
template<class ForwardItType>
AnyEnumerator< typename
RemoveConst< typename
ForwardItType::value_type::second_type >
::type > 
CppTL::Enum::anyValuesRange (ForwardItType begin, ForwardItType end)
template<class ForwardItType, class ValueType>
AnyEnumerator< typename
ValueType::type > 
CppTL::Enum::anyValuesRange (ForwardItType begin, ForwardItType end, ValueType type)
template<class ContainerType>
AnyEnumerator< typename
RemoveConst< typename
ContainerType::value_type::second_type >
::type > 
CppTL::Enum::anyValues (const ContainerType &container)
template<class ContainerType, class ValueType>
AnyEnumerator< typename
ValueType::type > 
CppTL::Enum::anyValues (const ContainerType &container, ValueType type)
template<class EnumeratorType, class Adaptor>
AnyEnumerator< typename
Adaptor::result_type > 
CppTL::Enum::anyTransform (const EnumeratorType &enumerator, Adaptor adaptor)
template<class EnumeratorType>
AnyEnumerator< typename
EnumeratorType::value_type * > 
CppTL::Enum::anyAddressOfTransform (const EnumeratorType &enumerator)
template<class EnumeratorType, class Predicate>
AnyEnumerator< typename
EnumeratorType::value_type > 
CppTL::Enum::anyFilter (const EnumeratorType &enumerator, Predicate predicate)
template<class EnumeratorType>
AnyEnumerator< typename
EnumeratorType::value_type > 
CppTL::Enum::anySlice (const EnumeratorType &enumerator, unsigned int beginIndex, unsigned int endIndex=-1)
template<class ThinEnumeratorType>
AnyEnumerator< typename
ThinEnumeratorType::value_type > 
CppTL::Enum::anySugar (const ThinEnumeratorType &e)


Define Documentation

#define CPPTL_ENUMERATOR_CHECK_ADVANCE

#define CPPTL_ENUMERATOR_CHECK_CURRENT

#define CPPTL_IMPL_ENUMERATOR

Value:

bool hasNext() const                         \
   {                                            \
      return is_open();                         \
   }                                            \
                                                \
   value_type next()                            \
   {                                            \
      value_type value = current();             \
      advance();                                \
      return value;                             \
   }                                            \
                                                \
   value_type operator *() const                \
   {                                            \
      return current();                         \
   }                                            \
                                                \
   self_type &operator ++()                     \
   {                                            \
      return advance();                         \
   }                                            \
                                                \
   self_type operator ++( int )                 \
   {                                            \
      self_type old = *this;                    \
      advance();                                \
      return old;                               \
   }
Implements all sugar functions for enumerator.

The following functions must be implemented in DerivedType:

   bool is_open() const;
   EnumValueType current() const;
   DerivedType advance();


SourceForge Logo hosts this site. Send comments to:
CppUnit Developers