3 #ifndef EPT_DEBTAGS_COLL_OPERATORS_H 4 #define EPT_DEBTAGS_COLL_OPERATORS_H 28 template<
typename T >
29 T
operator+(
const T &i,
typename T::difference_type o ) {
35 template<
typename T >
36 std::set< T >
operator &(
const std::set< T > &a,
const std::set< T > &b ) {
38 std::set_intersection( a.begin(), a.end(), b.begin(), b.end(),
39 std::inserter( ret, ret.begin() ) );
43 template<
typename T >
44 std::set< T >
operator &(
const std::set< T > &a,
const T &b ) {
46 if ( a.find( b ) != a.end() ) {
51 return std::set< T >();
54 template<
typename T >
55 std::set< T >
operator |(
const std::set< T > &a,
const T& item ) {
56 std::set< T > ret = a;
61 template<
typename T >
62 std::set< T >
operator |(
const std::set< T > &a,
const std::set< T > &b ) {
64 std::set_union( a.begin(), a.end(), b.begin(), b.end(),
65 std::inserter( ret, ret.begin() ) );
69 template<
typename T >
70 std::set< T >
operator -(
const std::set< T > &a,
const std::set< T > &b ) {
72 std::set_difference( a.begin(), a.end(), b.begin(), b.end(),
73 std::inserter(ret, ret.begin() ) );
77 template<
typename T >
78 std::set< T >
operator -(
const std::set< T > &a,
const T& item ) {
79 std::set< T > ret = a;
84 template<
typename T >
85 std::set< T > &
operator|=( std::set< T > &a,
const T& item )
92 template<
typename T,
typename SEQ >
93 std::set< T > &
operator|=( std::set< T > &a,
const SEQ& items )
95 for (
typename SEQ::const_iterator i = items.begin();
96 i != items.end(); ++i)
102 template<
typename T >
103 std::set< T > &
operator |=( std::set< T > &a,
const std::set< T > &b ) {
107 for (
typename std::set<T>::const_iterator i = b.begin();
114 template<
typename T,
typename SEQ >
123 typename std::set<T>::iterator ia = a.begin();
124 typename SEQ::const_iterator ib = b.begin();
125 while (ia != a.end())
127 if (ib != b.end() && *ib < *ia)
131 else if (ib == b.end() || *ia != *ib)
133 typename std::set<T>::iterator tmp = ia;
146 template<
typename T >
154 template<
typename T,
typename SEQ >
157 typename std::set<T>::iterator ia = a.begin();
158 typename SEQ::const_iterator ib = b.begin();
159 while (ia != a.end() && ib != b.end())
163 typename std::set<T>::iterator tmp = ia;
176 template<
typename T >
177 bool operator<=( const T &a, const std::set< T > &b ) {
178 return b.find( a ) != b.end();
181 template<
typename T >
182 bool operator<=( const std::set< T > &a,
const std::set< T > &b ) {
183 typename std::set<T>::const_iterator x = a.begin();
185 for (
typename std::set<T>::const_iterator y = b.begin(); y != b.end(); ++y )
String functions.
Definition: apt.cc:38