12#ifndef TIDA_ASSOCIATOR_H
13#define TIDA_ASSOCIATOR_H
24template<
typename T,
typename S=T>
42 virtual std::unique_ptr<Associator>
uclone()
const = 0;
44 virtual void match(
const std::vector<T*>& s1,
45 const std::vector<S*>& s2 ) = 0;
49 typename map_type::const_iterator titr =
mmatched.find(t);
50 if ( titr !=
mmatched.end() )
return titr->second;
56 typename rmap_type::const_iterator titr =
mrevmatched.find(t);
57 if ( titr !=
mrevmatched.end() )
return titr->second;
86template<
typename T,
typename S>
88 typename TIDA::Associator<T,S>::map_type::const_iterator mitr =
a.matched().begin();
89 typename TIDA::Associator<T,S>::map_type::const_iterator mend =
a.matched().end();
91 std::cout <<
"TIDA::Associator size() " <<
a.size() << std::endl;
93 while ( mitr!=mend ) {
95 if ( mitr->first ) s << *(mitr->first) <<
"\t";
96 else s <<
"-------\t\t";
98 if ( mitr->second ) s << *(mitr->second);
101 s <<
" ]" << std::endl;
std::ostream & operator<<(std::ostream &s, const TIDA::Associator< T, S > &a)
virtual const T * revmatched(S *t) const
std::map< const T *, const S * > map_type
const map_type & matched() const
virtual Associator * clone()=0
virtual std::unique_ptr< Associator > uclone() const =0
virtual const S * matched(T *t) const
const rmap_type & revmatched() const
virtual void match(const std::vector< T * > &s1, const std::vector< S * > &s2)=0
std::map< const S *, const T * > rmap_type
Associator(const std::string &name)