00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00022 #ifndef _PAT_FAM
00023 #define _PAT_FAM
00024
00025 #include <iostream>
00026 #include <vector>
00027
00028
00029
00030 template<typename P, template<typename T> class ST>
00031 class pat_fam;
00032 template<typename P, template<typename T> class ST>
00033 std::ostream& operator<< (std::ostream&, const pat_fam<P, ST>&);
00034
00041 template<typename P, template<typename T> class ST=std::vector>
00042 class pat_fam: public ST<P*>
00043 {
00044 public:
00045 typedef typename ST<P*>::iterator IT;
00046 typedef typename ST<P*>::const_iterator CONST_IT;
00053 friend std::ostream& operator<< <>(std::ostream&, const pat_fam<P, ST>&);
00054 };
00055
00056 template<class P>
00057 std::ostream& operator<< (std::ostream& ostr, const pat_fam<P, std::vector>& pats)
00058 {
00059 typename pat_fam<P, std::vector>::CONST_IT it;
00060 for(it=pats.begin(); it!=pats.end(); it++)
00061 ostr<<*it;
00062 return ostr;
00063 }
00064
00065 #endif