![]()  | 
  
    P4C
    
   The P4 Compiler 
   | 
 
Type-erased Enumerator interface. More...
#include <enumerator.h>
Public Types | |
| using | value_type = T | 
Public Member Functions | |
| bool | any () | 
| True if the enumerator has at least one element.  | |
| template<typename S > | |
| Enumerator< S > * | as () | 
| Cast to an enumerator of S objects.  | |
| EnumeratorHandle< T > | begin () | 
| virtual Enumerator< T > * | concat (Enumerator< T > *other) | 
| Append all elements of other after all elements of this.   | |
| uint64_t | count () | 
| Enumerate all elements and return the count.  | |
| EnumeratorHandle< T > | end () | 
| virtual T | getCurrent () const =0 | 
| Get current element in the collection.   | |
| template<typename Mapper > | |
| Enumerator< std::invoke_result_t< Mapper, T > > * | map (Mapper map) | 
| Apply specified function to all elements of this enumerator.  | |
| virtual bool | moveNext ()=0 | 
| T | next () | 
| Next element; throws if there are no elements.  | |
| T | nextOrDefault () | 
| Next element, or the default value if none exists.  | |
| virtual void | reset () | 
| Move back to the beginning of the collection.   | |
| T | single () | 
| The only next element; throws if the enumerator does not have exactly 1 element.  | |
| T | singleOrDefault () | 
| const char * | stateName () const | 
| std::vector< T > | toVector () | 
| template<typename Filter > | |
| Enumerator< T > * | where (Filter filter) | 
| Return an enumerator returning all elements that pass the filter.  | |
Static Public Member Functions | |
| static Enumerator< T > * | concatAll (Enumerator< Enumerator< T > * > *inputs) | 
| Concatenate all these collections into a single one.  | |
| template<typename Container > | |
| static Enumerator< typename Container::value_type > * | createEnumerator (const Container &data) | 
| template<typename Iter > | |
| static Enumerator< typename Iter::value_type > * | createEnumerator (Iter begin, Iter end) | 
| template<typename Iter > | |
| static Enumerator< typename Iter::value_type > * | createEnumerator (iterator_range< Iter > range) | 
| static Enumerator< T > * | emptyEnumerator () | 
Protected Attributes | |
| EnumeratorState | state = EnumeratorState::NotStarted | 
Static Protected Attributes | |
| static std::vector< T > | emptyVector | 
Friends | |
| template<typename S > | |
| class | EnumeratorHandle | 
Type-erased Enumerator interface.
      
  | 
  virtual | 
Append all elements of other after all elements of this.
Reimplemented in Util::ConcatEnumerator< T >.
      
  | 
  pure virtual | 
Get current element in the collection.
Implemented in Util::AsEnumerator< T, S >, Util::ConcatEnumerator< T >, Util::EmptyEnumerator< T >, Util::FilterEnumerator< T, Filter >, Util::IteratorEnumerator< Iter >, Util::MapEnumerator< T, S, Mapper >, and Util::SingleEnumerator< T >.
      
  | 
  pure virtual | 
Move to next element in the collection; return false if the next element does not exist
Implemented in Util::AsEnumerator< T, S >, Util::ConcatEnumerator< T >, Util::EmptyEnumerator< T >, Util::FilterEnumerator< T, Filter >, Util::IteratorEnumerator< Iter >, Util::MapEnumerator< T, S, Mapper >, and Util::SingleEnumerator< T >.
      
  | 
  inlinevirtual | 
Move back to the beginning of the collection.
Reimplemented in Util::AsEnumerator< T, S >, Util::ConcatEnumerator< T >, Util::FilterEnumerator< T, Filter >, and Util::MapEnumerator< T, S, Mapper >.
      
  | 
  inline | 
The only next element or default value if none exists; throws if the enumerator does not have exactly 0 or 1 element