8#ifndef WIBBLE_OPERATORS_H
9#define WIBBLE_OPERATORS_H
29T
operator+(
const T &i,
typename T::difference_type
o ) {
36std::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() ) );
46 if (
a.find(
b ) !=
a.end() ) {
51 return std::set< T >();
55std::set< T >
operator |(
const std::set< T > &
a,
const T& item ) {
56 std::set< T >
ret =
a;
68 std::set< T >
ret =
a;
69 ret.insert(*item.begin());
74std::set< T >
operator |(
const std::set< T > &
a,
const std::set< T > &
b ) {
76 std::set_union(
a.begin(),
a.end(),
b.begin(),
b.end(),
77 std::inserter(
ret,
ret.begin() ) );
82std::set< T >
operator -(
const std::set< T > &
a,
const std::set< T > &
b ) {
84 std::set_difference(
a.begin(),
a.end(),
b.begin(),
b.end(),
85 std::inserter(
ret,
ret.begin() ) );
90std::set< T >
operator -(
const std::set< T > &
a,
const T& item ) {
91 std::set< T >
ret =
a;
98 std::set< T >
ret =
a;
99 ret.erase(*item.begin());
103template<
typename T >
108template<
typename T >
114template<
typename T >
122template<
typename T,
typename SEQ >
125 for (
typename SEQ::const_iterator i =
items.begin();
126 i !=
items.end(); ++i)
132template<
typename T >
137 for (
typename std::set<T>::const_iterator i =
b.begin();
144template<
typename T,
typename SEQ >
153 typename std::set<T>::iterator
ia =
a.begin();
154 typename SEQ::const_iterator
ib =
b.begin();
155 while (
ia !=
a.end())
157 if (
ib !=
b.end() && *
ib < *
ia)
161 else if (
ib ==
b.end() || *
ia != *
ib)
163 typename std::set<T>::iterator
tmp =
ia;
176template<
typename T >
182template<
typename T >
189template<
typename T >
192 a.erase(*item.begin());
197template<
typename T,
typename SEQ >
200 typename std::set<T>::iterator
ia =
a.begin();
201 typename SEQ::const_iterator
ib =
b.begin();
202 while (
ia !=
a.end() &&
ib !=
b.end())
206 typename std::set<T>::iterator
tmp =
ia;
219template<
typename T >
221 return b.find(
a ) !=
b.end();
224template<
typename T >
226 typename std::set<T>::const_iterator x =
a.begin();
228 for (
typename std::set<T>::const_iterator
y =
b.begin();
y !=
b.end(); ++
y )
T operator+(const T &i, typename T::difference_type o)
Definition operators.h:29
std::set< T > & operator|=(std::set< T > &a, const wibble::Empty< T > &)
Definition operators.h:109
std::set< T > operator&(const std::set< T > &a, const std::set< T > &b)
Definition operators.h:36
std::set< T > & operator-=(std::set< T > &a, const wibble::Empty< T > &)
Definition operators.h:177
std::set< T > operator|(const std::set< T > &a, const T &item)
Definition operators.h:55
std::set< T > operator-(const std::set< T > &a, const std::set< T > &b)
Definition operators.h:82
std::set< T > & operator&=(std::set< T > &a, const SEQ &b)
Definition operators.h:145
bool operator<=(const T &a, const std::set< T > &b)
Definition operators.h:220