BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
ForwardIndexingPolicy< CONT > Class Template Reference

IndexingPolicy for STL containers using forward iterators (e.g. vector, list). More...

#include <ForwardIndexingPolicy.h>

Public Types

typedef CONT::size_type index_type
typedef type_tools::Parameter< index_type >::const_type index_parm_type
typedef CONT::value_type value_type
typedef CONT::reference reference
typedef CONT::const_reference const_reference
typedef CONT::pointer pointer
typedef CONT::const_pointer const_pointer
typedef CONT::iterator iterator
typedef CONT::const_iterator const_iterator
typedef RemoveDataPtr< value_type >::type removedDataPtr_type
typedef removedDataPtr_typeElementPointer
typedef const ElementPointer ElementConstPointer
typedef removedDataPtr_typeElementReference
typedef const ElementReference ElementConstReference
typedef type_tools::Parameter< removedDataPtr_type >::type ElementParameter
typedef CONT::size_type index_type
typedef type_tools::Parameter< index_type >::const_type index_parm_type
typedef CONT::value_type value_type
typedef CONT::reference reference
typedef CONT::const_reference const_reference
typedef CONT::pointer pointer
typedef CONT::const_pointer const_pointer
typedef CONT::iterator iterator
typedef CONT::const_iterator const_iterator
typedef RemoveDataPtr< value_type >::type removedDataPtr_type
typedef removedDataPtr_typeElementPointer
typedef const ElementPointer ElementConstPointer
typedef removedDataPtr_typeElementReference
typedef const ElementReference ElementConstReference
typedef type_tools::Parameter< removedDataPtr_type >::type ElementParameter
typedef CONT::size_type index_type
typedef type_tools::Parameter< index_type >::const_type index_parm_type
typedef CONT::value_type value_type
typedef CONT::reference reference
typedef CONT::const_reference const_reference
typedef CONT::pointer pointer
typedef CONT::const_pointer const_pointer
typedef CONT::iterator iterator
typedef CONT::const_iterator const_iterator
typedef RemoveDataPtr< value_type >::type removedDataPtr_type
typedef removedDataPtr_typeElementPointer
typedef const ElementPointer ElementConstPointer
typedef removedDataPtr_typeElementReference
typedef const ElementReference ElementConstReference
typedef type_tools::Parameter< removedDataPtr_type >::type ElementParameter

Public Member Functions

index_type index () const
template<class OS>
bool indexPut (OS &o) const
template<class IS>
bool indexGet (IS &i)
index_type index () const
template<class OS>
bool indexPut (OS &o) const
template<class IS>
bool indexGet (IS &i)
index_type index () const
template<class OS>
bool indexPut (OS &o) const
template<class IS>
bool indexGet (IS &i)

Static Public Member Functions

static bool reverseLookup (const CONT &data, ElementParameter element, index_type &index)
static bool reverseLookup (const CONT &data, ElementParameter element, index_type &index)
static bool reverseLookup (const CONT &data, ElementParameter element, index_type &index)

Protected Member Functions

 ForwardIndexingPolicy ()
 ForwardIndexingPolicy (index_type id)
 ForwardIndexingPolicy (const CONT &data, ElementParameter element)
 ~ForwardIndexingPolicy ()
void setIndex (index_type id)
bool setIndex (const CONT &data, ElementConstReference element)
iterator lookup (CONT &data) const
const_iterator lookup (const CONT &data) const
 ForwardIndexingPolicy ()
 ForwardIndexingPolicy (index_type id)
 ForwardIndexingPolicy (const CONT &data, ElementParameter element)
 ~ForwardIndexingPolicy ()
void setIndex (index_type id)
bool setIndex (const CONT &data, ElementConstReference element)
iterator lookup (CONT &data) const
const_iterator lookup (const CONT &data) const
 ForwardIndexingPolicy ()
 ForwardIndexingPolicy (index_type id)
 ForwardIndexingPolicy (const CONT &data, ElementParameter element)
 ~ForwardIndexingPolicy ()
void setIndex (index_type id)
bool setIndex (const CONT &data, ElementConstReference element)
iterator lookup (CONT &data) const
const_iterator lookup (const CONT &data) const

Protected Attributes

index_type m_index

Detailed Description

template<class CONT>
class ForwardIndexingPolicy< CONT >

IndexingPolicy for STL containers using forward iterators (e.g. vector, list).

Author
Paolo Calafiura
Id
ForwardIndexingPolicy.h,v 1.2 2003/04/16 01:32:53 calaf Exp

Definition at line 36 of file Event/GeneratorObject/include/DataModel/tools/ForwardIndexingPolicy.h.

Member Typedef Documentation

◆ const_iterator [1/3]

template<class CONT>
typedef CONT::const_iterator ForwardIndexingPolicy< CONT >::const_iterator

◆ const_iterator [2/3]

template<class CONT>
typedef CONT::const_iterator ForwardIndexingPolicy< CONT >::const_iterator

◆ const_iterator [3/3]

template<class CONT>
typedef CONT::const_iterator ForwardIndexingPolicy< CONT >::const_iterator

◆ const_pointer [1/3]

template<class CONT>
typedef CONT::const_pointer ForwardIndexingPolicy< CONT >::const_pointer

◆ const_pointer [2/3]

template<class CONT>
typedef CONT::const_pointer ForwardIndexingPolicy< CONT >::const_pointer

◆ const_pointer [3/3]

template<class CONT>
typedef CONT::const_pointer ForwardIndexingPolicy< CONT >::const_pointer

◆ const_reference [1/3]

template<class CONT>
typedef CONT::const_reference ForwardIndexingPolicy< CONT >::const_reference

◆ const_reference [2/3]

template<class CONT>
typedef CONT::const_reference ForwardIndexingPolicy< CONT >::const_reference

◆ const_reference [3/3]

template<class CONT>
typedef CONT::const_reference ForwardIndexingPolicy< CONT >::const_reference

◆ ElementConstPointer [1/3]

template<class CONT>
typedef const ElementPointer ForwardIndexingPolicy< CONT >::ElementConstPointer

◆ ElementConstPointer [2/3]

template<class CONT>
typedef const ElementPointer ForwardIndexingPolicy< CONT >::ElementConstPointer

◆ ElementConstPointer [3/3]

template<class CONT>
typedef const ElementPointer ForwardIndexingPolicy< CONT >::ElementConstPointer

◆ ElementConstReference [1/3]

template<class CONT>
typedef const ElementReference ForwardIndexingPolicy< CONT >::ElementConstReference

◆ ElementConstReference [2/3]

template<class CONT>
typedef const ElementReference ForwardIndexingPolicy< CONT >::ElementConstReference

◆ ElementConstReference [3/3]

template<class CONT>
typedef const ElementReference ForwardIndexingPolicy< CONT >::ElementConstReference

◆ ElementParameter [1/3]

template<class CONT>
typedef type_tools::Parameter<removedDataPtr_type>::type ForwardIndexingPolicy< CONT >::ElementParameter

◆ ElementParameter [2/3]

template<class CONT>
typedef type_tools::Parameter<removedDataPtr_type>::type ForwardIndexingPolicy< CONT >::ElementParameter

◆ ElementParameter [3/3]

template<class CONT>
typedef type_tools::Parameter<removedDataPtr_type>::type ForwardIndexingPolicy< CONT >::ElementParameter

◆ ElementPointer [1/3]

template<class CONT>
typedef removedDataPtr_type* ForwardIndexingPolicy< CONT >::ElementPointer

◆ ElementPointer [2/3]

template<class CONT>
typedef removedDataPtr_type* ForwardIndexingPolicy< CONT >::ElementPointer

◆ ElementPointer [3/3]

template<class CONT>
typedef removedDataPtr_type* ForwardIndexingPolicy< CONT >::ElementPointer

◆ ElementReference [1/3]

template<class CONT>
typedef removedDataPtr_type& ForwardIndexingPolicy< CONT >::ElementReference

◆ ElementReference [2/3]

template<class CONT>
typedef removedDataPtr_type& ForwardIndexingPolicy< CONT >::ElementReference

◆ ElementReference [3/3]

template<class CONT>
typedef removedDataPtr_type& ForwardIndexingPolicy< CONT >::ElementReference

◆ index_parm_type [1/3]

template<class CONT>
typedef type_tools::Parameter<index_type>::const_type ForwardIndexingPolicy< CONT >::index_parm_type

◆ index_parm_type [2/3]

template<class CONT>
typedef type_tools::Parameter<index_type>::const_type ForwardIndexingPolicy< CONT >::index_parm_type

◆ index_parm_type [3/3]

template<class CONT>
typedef type_tools::Parameter<index_type>::const_type ForwardIndexingPolicy< CONT >::index_parm_type

◆ index_type [1/3]

template<class CONT>
typedef CONT::size_type ForwardIndexingPolicy< CONT >::index_type

◆ index_type [2/3]

template<class CONT>
typedef CONT::size_type ForwardIndexingPolicy< CONT >::index_type

◆ index_type [3/3]

template<class CONT>
typedef CONT::size_type ForwardIndexingPolicy< CONT >::index_type

◆ iterator [1/3]

template<class CONT>
typedef CONT::iterator ForwardIndexingPolicy< CONT >::iterator

◆ iterator [2/3]

template<class CONT>
typedef CONT::iterator ForwardIndexingPolicy< CONT >::iterator

◆ iterator [3/3]

template<class CONT>
typedef CONT::iterator ForwardIndexingPolicy< CONT >::iterator

◆ pointer [1/3]

template<class CONT>
typedef CONT::pointer ForwardIndexingPolicy< CONT >::pointer

◆ pointer [2/3]

template<class CONT>
typedef CONT::pointer ForwardIndexingPolicy< CONT >::pointer

◆ pointer [3/3]

template<class CONT>
typedef CONT::pointer ForwardIndexingPolicy< CONT >::pointer

◆ reference [1/3]

template<class CONT>
typedef CONT::reference ForwardIndexingPolicy< CONT >::reference

◆ reference [2/3]

template<class CONT>
typedef CONT::reference ForwardIndexingPolicy< CONT >::reference

◆ reference [3/3]

template<class CONT>
typedef CONT::reference ForwardIndexingPolicy< CONT >::reference

◆ removedDataPtr_type [1/3]

template<class CONT>
typedef RemoveDataPtr<value_type>::type ForwardIndexingPolicy< CONT >::removedDataPtr_type

◆ removedDataPtr_type [2/3]

template<class CONT>
typedef RemoveDataPtr<value_type>::type ForwardIndexingPolicy< CONT >::removedDataPtr_type

◆ removedDataPtr_type [3/3]

template<class CONT>
typedef RemoveDataPtr<value_type>::type ForwardIndexingPolicy< CONT >::removedDataPtr_type

◆ value_type [1/3]

template<class CONT>
typedef CONT::value_type ForwardIndexingPolicy< CONT >::value_type

◆ value_type [2/3]

template<class CONT>
typedef CONT::value_type ForwardIndexingPolicy< CONT >::value_type

◆ value_type [3/3]

template<class CONT>
typedef CONT::value_type ForwardIndexingPolicy< CONT >::value_type

Constructor & Destructor Documentation

◆ ForwardIndexingPolicy() [1/9]

template<class CONT>
ForwardIndexingPolicy< CONT >::ForwardIndexingPolicy ( )
inlineprotected

◆ ForwardIndexingPolicy() [2/9]

template<class CONT>
ForwardIndexingPolicy< CONT >::ForwardIndexingPolicy ( index_type id)
inlineprotected

◆ ForwardIndexingPolicy() [3/9]

template<class CONT>
ForwardIndexingPolicy< CONT >::ForwardIndexingPolicy ( const CONT & data,
ElementParameter element )
inlineprotected

Definition at line 100 of file Event/GeneratorObject/include/DataModel/tools/ForwardIndexingPolicy.h.

100 {
101 if ( !reverseLookup( data, element, m_index ) )
102 throw std::runtime_error( " ForwardIndexingPolicy(data, element) invalid args" );
103 }
IndexingPolicy for STL containers using forward iterators (e.g. vector, list).
static bool reverseLookup(const CONT &data, ElementParameter element, index_type &index)

◆ ~ForwardIndexingPolicy() [1/3]

template<class CONT>
ForwardIndexingPolicy< CONT >::~ForwardIndexingPolicy ( )
inlineprotected

Definition at line 104 of file Event/GeneratorObject/include/DataModel/tools/ForwardIndexingPolicy.h.

104{} // disallow accidental base class deletion

◆ ForwardIndexingPolicy() [4/9]

template<class CONT>
ForwardIndexingPolicy< CONT >::ForwardIndexingPolicy ( )
inlineprotected

◆ ForwardIndexingPolicy() [5/9]

template<class CONT>
ForwardIndexingPolicy< CONT >::ForwardIndexingPolicy ( index_type id)
inlineprotected

◆ ForwardIndexingPolicy() [6/9]

template<class CONT>
ForwardIndexingPolicy< CONT >::ForwardIndexingPolicy ( const CONT & data,
ElementParameter element )
inlineprotected

Definition at line 100 of file InstallArea/x86_64-el9-gcc13-dbg/include/DataModel/tools/ForwardIndexingPolicy.h.

100 {
101 if ( !reverseLookup( data, element, m_index ) )
102 throw std::runtime_error( " ForwardIndexingPolicy(data, element) invalid args" );
103 }

◆ ~ForwardIndexingPolicy() [2/3]

template<class CONT>
ForwardIndexingPolicy< CONT >::~ForwardIndexingPolicy ( )
inlineprotected

Definition at line 104 of file InstallArea/x86_64-el9-gcc13-dbg/include/DataModel/tools/ForwardIndexingPolicy.h.

104{} // disallow accidental base class deletion

◆ ForwardIndexingPolicy() [7/9]

template<class CONT>
ForwardIndexingPolicy< CONT >::ForwardIndexingPolicy ( )
inlineprotected

◆ ForwardIndexingPolicy() [8/9]

template<class CONT>
ForwardIndexingPolicy< CONT >::ForwardIndexingPolicy ( index_type id)
inlineprotected

◆ ForwardIndexingPolicy() [9/9]

template<class CONT>
ForwardIndexingPolicy< CONT >::ForwardIndexingPolicy ( const CONT & data,
ElementParameter element )
inlineprotected

Definition at line 100 of file InstallArea/x86_64-el9-gcc13-opt/include/DataModel/tools/ForwardIndexingPolicy.h.

100 {
101 if ( !reverseLookup( data, element, m_index ) )
102 throw std::runtime_error( " ForwardIndexingPolicy(data, element) invalid args" );
103 }

◆ ~ForwardIndexingPolicy() [3/3]

template<class CONT>
ForwardIndexingPolicy< CONT >::~ForwardIndexingPolicy ( )
inlineprotected

Definition at line 104 of file InstallArea/x86_64-el9-gcc13-opt/include/DataModel/tools/ForwardIndexingPolicy.h.

104{} // disallow accidental base class deletion

Member Function Documentation

◆ index() [1/3]

template<class CONT>
index_type ForwardIndexingPolicy< CONT >::index ( ) const
inline

Definition at line 86 of file Event/GeneratorObject/include/DataModel/tools/ForwardIndexingPolicy.h.

86{ return m_index; }

Referenced by reverseLookup().

◆ index() [2/3]

template<class CONT>
index_type ForwardIndexingPolicy< CONT >::index ( ) const
inline

◆ index() [3/3]

template<class CONT>
index_type ForwardIndexingPolicy< CONT >::index ( ) const
inline

◆ indexGet() [1/3]

template<class CONT>
template<class IS>
bool ForwardIndexingPolicy< CONT >::indexGet ( IS & i)
inline

Definition at line 92 of file Event/GeneratorObject/include/DataModel/tools/ForwardIndexingPolicy.h.

92 {
93 // boost::function_requires<isStreamable<IS, index_type> > ();
94 return ( i >> m_index ).good();
95 }

◆ indexGet() [2/3]

template<class CONT>
template<class IS>
bool ForwardIndexingPolicy< CONT >::indexGet ( IS & i)
inline

Definition at line 92 of file InstallArea/x86_64-el9-gcc13-dbg/include/DataModel/tools/ForwardIndexingPolicy.h.

92 {
93 // boost::function_requires<isStreamable<IS, index_type> > ();
94 return ( i >> m_index ).good();
95 }

◆ indexGet() [3/3]

template<class CONT>
template<class IS>
bool ForwardIndexingPolicy< CONT >::indexGet ( IS & i)
inline

Definition at line 92 of file InstallArea/x86_64-el9-gcc13-opt/include/DataModel/tools/ForwardIndexingPolicy.h.

92 {
93 // boost::function_requires<isStreamable<IS, index_type> > ();
94 return ( i >> m_index ).good();
95 }

◆ indexPut() [1/3]

template<class CONT>
template<class OS>
bool ForwardIndexingPolicy< CONT >::indexPut ( OS & o) const
inline

Definition at line 88 of file Event/GeneratorObject/include/DataModel/tools/ForwardIndexingPolicy.h.

88 {
89 // boost::function_requires<isStreamable<OS, index_type> > ();
90 return ( o << m_index ).good();
91 }

◆ indexPut() [2/3]

template<class CONT>
template<class OS>
bool ForwardIndexingPolicy< CONT >::indexPut ( OS & o) const
inline

Definition at line 88 of file InstallArea/x86_64-el9-gcc13-dbg/include/DataModel/tools/ForwardIndexingPolicy.h.

88 {
89 // boost::function_requires<isStreamable<OS, index_type> > ();
90 return ( o << m_index ).good();
91 }

◆ indexPut() [3/3]

template<class CONT>
template<class OS>
bool ForwardIndexingPolicy< CONT >::indexPut ( OS & o) const
inline

Definition at line 88 of file InstallArea/x86_64-el9-gcc13-opt/include/DataModel/tools/ForwardIndexingPolicy.h.

88 {
89 // boost::function_requires<isStreamable<OS, index_type> > ();
90 return ( o << m_index ).good();
91 }

◆ lookup() [1/6]

template<class CONT>
const_iterator ForwardIndexingPolicy< CONT >::lookup ( const CONT & data) const
inlineprotected

◆ lookup() [2/6]

template<class CONT>
const_iterator ForwardIndexingPolicy< CONT >::lookup ( const CONT & data) const
inlineprotected

◆ lookup() [3/6]

template<class CONT>
const_iterator ForwardIndexingPolicy< CONT >::lookup ( const CONT & data) const
inlineprotected

◆ lookup() [4/6]

template<class CONT>
iterator ForwardIndexingPolicy< CONT >::lookup ( CONT & data) const
inlineprotected

◆ lookup() [5/6]

template<class CONT>
iterator ForwardIndexingPolicy< CONT >::lookup ( CONT & data) const
inlineprotected

◆ lookup() [6/6]

template<class CONT>
iterator ForwardIndexingPolicy< CONT >::lookup ( CONT & data) const
inlineprotected

◆ reverseLookup() [1/3]

template<class CONT>
bool ForwardIndexingPolicy< CONT >::reverseLookup ( const CONT & data,
ElementParameter element,
index_type & index )
inlinestatic

Definition at line 58 of file Event/GeneratorObject/include/DataModel/tools/ForwardIndexingPolicy.h.

58 {
59 // compiler checks we can compare elements
62 const_iterator it = data.begin();
63 const_iterator end = data.end();
64 index_type i( 0 );
65 while ( it != end && !( *it == element ) )
66 {
67 ++it;
68 ++i;
69 }
70 if ( it != end )
71 {
72 index = i;
73 return true;
74 }
75 else
76 {
77#ifndef NDEBUG
78 std::cerr << __FILE__ << ':' << __LINE__ << ": "
79 << "ForwardIndexingPolicy::reverseLookup ERROR: element not found"
80 << std::endl;
81#endif
82 return false;
83 }
84 }

Referenced by ForwardIndexingPolicy(), and setIndex().

◆ reverseLookup() [2/3]

template<class CONT>
bool ForwardIndexingPolicy< CONT >::reverseLookup ( const CONT & data,
ElementParameter element,
index_type & index )
inlinestatic

Definition at line 58 of file InstallArea/x86_64-el9-gcc13-dbg/include/DataModel/tools/ForwardIndexingPolicy.h.

58 {
59 // compiler checks we can compare elements
62 const_iterator it = data.begin();
63 const_iterator end = data.end();
64 index_type i( 0 );
65 while ( it != end && !( *it == element ) )
66 {
67 ++it;
68 ++i;
69 }
70 if ( it != end )
71 {
72 index = i;
73 return true;
74 }
75 else
76 {
77#ifndef NDEBUG
78 std::cerr << __FILE__ << ':' << __LINE__ << ": "
79 << "ForwardIndexingPolicy::reverseLookup ERROR: element not found"
80 << std::endl;
81#endif
82 return false;
83 }
84 }

◆ reverseLookup() [3/3]

template<class CONT>
bool ForwardIndexingPolicy< CONT >::reverseLookup ( const CONT & data,
ElementParameter element,
index_type & index )
inlinestatic

Definition at line 58 of file InstallArea/x86_64-el9-gcc13-opt/include/DataModel/tools/ForwardIndexingPolicy.h.

58 {
59 // compiler checks we can compare elements
62 const_iterator it = data.begin();
63 const_iterator end = data.end();
64 index_type i( 0 );
65 while ( it != end && !( *it == element ) )
66 {
67 ++it;
68 ++i;
69 }
70 if ( it != end )
71 {
72 index = i;
73 return true;
74 }
75 else
76 {
77#ifndef NDEBUG
78 std::cerr << __FILE__ << ':' << __LINE__ << ": "
79 << "ForwardIndexingPolicy::reverseLookup ERROR: element not found"
80 << std::endl;
81#endif
82 return false;
83 }
84 }

◆ setIndex() [1/6]

template<class CONT>
bool ForwardIndexingPolicy< CONT >::setIndex ( const CONT & data,
ElementConstReference element )
inlineprotected

◆ setIndex() [2/6]

template<class CONT>
bool ForwardIndexingPolicy< CONT >::setIndex ( const CONT & data,
ElementConstReference element )
inlineprotected

◆ setIndex() [3/6]

template<class CONT>
bool ForwardIndexingPolicy< CONT >::setIndex ( const CONT & data,
ElementConstReference element )
inlineprotected

◆ setIndex() [4/6]

template<class CONT>
void ForwardIndexingPolicy< CONT >::setIndex ( index_type id)
inlineprotected

◆ setIndex() [5/6]

template<class CONT>
void ForwardIndexingPolicy< CONT >::setIndex ( index_type id)
inlineprotected

◆ setIndex() [6/6]

template<class CONT>
void ForwardIndexingPolicy< CONT >::setIndex ( index_type id)
inlineprotected

Member Data Documentation

◆ m_index


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