00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef _ISET_OPERATORS_H_
00021 #define _ISET_OPERATORS_H_
00022
00023 #include<ostream>
00024 using namespace std;
00025
00026 #include "typedefs.h"
00027
00028 template<class PP, class MP, class ST,
00029 template<class, typename, typename, template <typename> class > class CC,
00030 template <typename> class ALLOC >
00031 class pattern;
00032
00033 template<class PP, class MP, class PAT_ST,
00034 template<typename, typename, typename, template <typename> class > class CC,
00035 template <typename> class ALLOC >
00036 ostream& operator<< (ostream& ostr, const ISET_PATTERN* p) {
00037 typename ISET_PATTERN::CONST_IT it;
00038
00039 for(it=p->begin(); it!=p->end(); it++) {
00040
00041 if(it == p->begin()) {
00042 ostr << (*it).v;
00043 } else {
00044 ostr << " " << (*it).v;
00045 }
00046 }
00047
00048 ostr <<" -- "<<p->_pat_sup;
00049
00050 return ostr;
00051 }
00052
00053 #include "pattern.h"
00054
00055
00056 template<class PP, class MP, class PAT_ST,
00057 template<class, typename, typename, template <typename> class > class CC,
00058 template <typename> class ALLOC >
00059 bool pattern<PP,MP,PAT_ST,CC, ALLOC>::operator< (const pattern<PP,MP,PAT_ST,CC, ALLOC> rhs) const {
00060
00061 CONST_IT it=begin(), rhs_it=rhs.begin();
00062
00063 if(size()!=rhs.size()) {
00064 cerr<<"Sequences are not of the same size."<<endl;
00065 exit(0);
00066 }
00067
00068 while(it!=end() && rhs_it!=rhs.end()) {
00069 if((*it).v != (*rhs_it).v)
00070 return (*it) < (*rhs_it);
00071
00072 it++;
00073 rhs_it++;
00074 }
00075
00076
00077 return false;
00078 }
00079
00080 #endif