Generated on Sat Jun 2 2018 07:17:44 for Gecode by doxygen 1.8.13
view.hpp
Go to the documentation of this file.
1 /* -*- mode: C++; c-basic-offset: 2; indent-tabs-mode: nil -*- */
2 /*
3  * Main authors:
4  * Guido Tack <tack@gecode.org>
5  *
6  * Contributing authors:
7  * Christian Schulte <schulte@gecode.org>
8  *
9  * Copyright:
10  * Guido Tack, 2004
11  * Christian Schulte, 2004
12  *
13  * This file is part of Gecode, the generic constraint
14  * development environment:
15  * http://www.gecode.org
16  *
17  * Permission is hereby granted, free of charge, to any person obtaining
18  * a copy of this software and associated documentation files (the
19  * "Software"), to deal in the Software without restriction, including
20  * without limitation the rights to use, copy, modify, merge, publish,
21  * distribute, sublicense, and/or sell copies of the Software, and to
22  * permit persons to whom the Software is furnished to do so, subject to
23  * the following conditions:
24  *
25  * The above copyright notice and this permission notice shall be
26  * included in all copies or substantial portions of the Software.
27  *
28  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
29  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
30  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
31  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
32  * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
33  * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
34  * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
35  *
36  */
37 
38 #include <iostream>
39 
40 namespace Gecode { namespace Set {
41 
56  class SetView : public VarImpView<SetVar> {
57  protected:
59  public:
61 
62  SetView(void);
65  SetView(const SetVar& y);
67  SetView(SetVarImp* y);
69 
71 
72 
74  unsigned int cardMin(void) const;
76  unsigned int cardMax(void) const;
78  int lubMin(void) const;
80  int lubMax(void) const;
82  int lubMinN(unsigned int n) const;
84  int glbMin(void) const;
86  int glbMax(void) const;
87 
89  unsigned int glbSize(void) const;
91  unsigned int lubSize(void) const;
93  unsigned int unknownSize(void) const;
95 
97 
98  bool contains(int i) const;
101  bool notContains(int i) const;
103 
104 
106 
107  ModEvent cardMin(Space& home, unsigned int m);
110  ModEvent cardMax(Space& home, unsigned int m);
115  ModEvent include(Space& home,int i,int j);
120  ModEvent exclude(Space& home,int i,int j);
122  ModEvent include(Space& home,int i);
124  ModEvent exclude(Space& home,int i);
129  ModEvent intersect(Space& home,int i,int j);
131  ModEvent intersect(Space& home,int i);
133 
135 
136 
138  template<class I> ModEvent excludeI(Space& home, I& i);
140  template<class I> ModEvent includeI(Space& home, I& i);
142  template<class I> ModEvent intersectI(Space& home, I& iter);
144 
146 
147  static ModEvent modevent(const Delta& d);
150  int glbMin(const Delta& d) const;
152  int glbMax(const Delta& d) const;
154  bool glbAny(const Delta& d) const;
156  int lubMin(const Delta& d) const;
158  int lubMax(const Delta& d) const;
160  bool lubAny(const Delta& d) const;
162  };
163 
168  template<class Char, class Traits>
169  std::basic_ostream<Char,Traits>&
170  operator <<(std::basic_ostream<Char,Traits>& os, const SetView& x);
171 
172 
173 
174  // Forward declarations for friends
175  class ConstSetView;
176  bool same(const ConstSetView&, const ConstSetView&);
177  bool before(const ConstSetView&, const ConstSetView&);
178 
186  class ConstSetView : public ConstView<SetView> {
187  friend class LubRanges<ConstSetView>;
188  friend class GlbRanges<ConstSetView>;
189  friend bool Gecode::Set::same(const Gecode::Set::ConstSetView&,
193  private:
194  int *ranges;
195  int size;
196  unsigned int domSize;
197  public:
199 
200  ConstSetView(void);
203  ConstSetView(Space& home, const IntSet& s);
205 
207 
208  unsigned int cardMin(void) const;
211  unsigned int cardMax(void) const;
213  int lubMin(void) const;
215  int lubMax(void) const;
217  int lubMinN(unsigned int n) const;
219  int glbMin(void) const;
221  int glbMax(void) const;
222 
224  unsigned int glbSize(void) const;
226  unsigned int lubSize(void) const;
228  unsigned int unknownSize(void) const;
230 
232 
233  bool contains(int i) const;
236  bool notContains(int i) const;
238 
239 
241 
242  ModEvent cardMin(Space& home, unsigned int m);
245  ModEvent cardMax(Space& home, unsigned int m);
250  ModEvent include(Space& home,int i,int j);
255  ModEvent exclude(Space& home,int i,int j);
257  ModEvent include(Space& home,int i);
259  ModEvent exclude(Space& home,int i);
264  ModEvent intersect(Space& home,int i,int j);
266  ModEvent intersect(Space& home,int i);
268 
270 
271 
273  template<class I> ModEvent excludeI(Space& home, I& i);
275  template<class I> ModEvent includeI(Space& home, I& i);
277  template<class I> ModEvent intersectI(Space& home, I& iter);
279 
281 
282  void update(Space& home, ConstSetView& y);
285 
287 
288  int glbMin(const Delta& d) const;
291  int glbMax(const Delta& d) const;
293  bool glbAny(const Delta& d) const;
295  int lubMin(const Delta& d) const;
297  int lubMax(const Delta& d) const;
299  bool lubAny(const Delta& d) const;
301 
302  };
303 
308  template<class Char, class Traits>
309  std::basic_ostream<Char,Traits>&
310  operator <<(std::basic_ostream<Char,Traits>& os, const ConstSetView& x);
311 
316  bool same(const ConstSetView& x, const ConstSetView& y);
319  bool before(const ConstSetView& x, const ConstSetView& y);
321 
322 
331  class EmptyView : public ConstView<SetView> {
332  public:
334 
335  EmptyView(void);
338 
340 
341  unsigned int cardMin(void) const;
344  unsigned int cardMax(void) const;
346  int lubMin(void) const;
348  int lubMax(void) const;
350  int lubMinN(unsigned int n) const;
352  int glbMin(void) const;
354  int glbMax(void) const;
355 
357  unsigned int glbSize(void) const;
359  unsigned int lubSize(void) const;
361  unsigned int unknownSize(void) const;
363 
365 
366  bool contains(int i) const;
369  bool notContains(int i) const;
371 
372 
374 
375  ModEvent cardMin(Space& home, unsigned int m);
378  ModEvent cardMax(Space& home, unsigned int m);
383  ModEvent include(Space& home,int i,int j);
388  ModEvent exclude(Space& home,int i,int j);
390  ModEvent include(Space& home,int i);
392  ModEvent exclude(Space& home,int i);
397  ModEvent intersect(Space& home,int i,int j);
399  ModEvent intersect(Space& home,int i);
401 
403 
404 
406  template<class I> ModEvent excludeI(Space& home, I& i);
408  template<class I> ModEvent includeI(Space& home, I& i);
410  template<class I> ModEvent intersectI(Space& home, I& iter);
412 
414 
415  int glbMin(const Delta& d) const;
418  int glbMax(const Delta& d) const;
420  bool glbAny(const Delta& d) const;
422  int lubMin(const Delta& d) const;
424  int lubMax(const Delta& d) const;
426  bool lubAny(const Delta& d) const;
428 
429  };
430 
435  template<class Char, class Traits>
436  std::basic_ostream<Char,Traits>&
437  operator <<(std::basic_ostream<Char,Traits>& os, const EmptyView& x);
438 
439 
444  bool same(const EmptyView& x, const EmptyView& y);
447 
448 
457  class UniverseView : public ConstView<SetView> {
458  public:
460 
461  UniverseView(void);
464 
466 
467 
469  unsigned int cardMin(void) const;
471  unsigned int cardMax(void) const;
473  int lubMin(void) const;
475  int lubMax(void) const;
477  int lubMinN(unsigned int n) const;
479  int glbMin(void) const;
481  int glbMax(void) const;
482 
484  unsigned int glbSize(void) const;
486  unsigned int lubSize(void) const;
488  unsigned int unknownSize(void) const;
490 
492 
493  bool contains(int i) const;
496  bool notContains(int i) const;
498 
499 
501 
502  ModEvent cardMin(Space& home, unsigned int m);
505  ModEvent cardMax(Space& home, unsigned int m);
510  ModEvent include(Space& home,int i,int j);
515  ModEvent exclude(Space& home,int i,int j);
517  ModEvent include(Space& home,int i);
519  ModEvent exclude(Space& home,int i);
524  ModEvent intersect(Space& home,int i,int j);
526  ModEvent intersect(Space& home,int i);
528 
530 
531 
533  template<class I> ModEvent excludeI(Space& home, I& i);
535  template<class I> ModEvent includeI(Space& home, I& i);
537  template<class I> ModEvent intersectI(Space& home, I& iter);
539 
541 
542  int glbMin(const Delta& d) const;
545  int glbMax(const Delta& d) const;
547  bool glbAny(const Delta& d) const;
549  int lubMin(const Delta& d) const;
551  int lubMax(const Delta& d) const;
553  bool lubAny(const Delta& d) const;
555 
556  };
557 
562  template<class Char, class Traits>
563  std::basic_ostream<Char,Traits>&
564  operator <<(std::basic_ostream<Char,Traits>& os, const UniverseView& x);
565 
566 
571  bool same(const UniverseView& x, const UniverseView& y);
574 
575 
576 
586  public DerivedView<Gecode::Int::IntView> {
587  protected:
589 
591  static PropCond pc_settoint(PropCond pc);
593  static ModEvent me_inttoset(ModEvent me);
595  static ModEvent me_settoint(ModEvent me);
596 
597  public:
599 
600  SingletonView(void);
605  SingletonView(const Gecode::IntVar& y);
607 
609 
610 
612  unsigned int cardMin(void) const;
614  unsigned int cardMax(void) const;
616  int lubMin(void) const;
618  int lubMax(void) const;
620  int lubMinN(unsigned int n) const;
622  int glbMin(void) const;
624  int glbMax(void) const;
625 
627  unsigned int glbSize(void) const;
629  unsigned int lubSize(void) const;
631  unsigned int unknownSize(void) const;
633 
635 
636  bool contains(int i) const;
639  bool notContains(int i) const;
641 
642 
644 
645  ModEvent cardMin(Space& home, unsigned int m);
648  ModEvent cardMax(Space& home, unsigned int m);
653  ModEvent include(Space& home,int i,int j);
658  ModEvent exclude(Space& home,int i,int j);
660  ModEvent include(Space& home,int i);
662  ModEvent exclude(Space& home,int i);
667  ModEvent intersect(Space& home,int i,int j);
669  ModEvent intersect(Space& home,int i);
671 
673 
674 
676  template<class I> ModEvent excludeI(Space& home, I& i);
678  template<class I> ModEvent includeI(Space& home, I& i);
680  template<class I> ModEvent intersectI(Space& home, I& iter);
682 
684 
685  static void schedule(Space& home, Propagator& p, ModEvent me);
688  static ModEvent me(const ModEventDelta& med);
690  static ModEventDelta med(ModEvent);
692 
694 
695 
702  void subscribe(Space& home, Propagator& p, PropCond pc, bool schedule=true);
704  void cancel(Space& home, Propagator& p, PropCond pc);
706  void reschedule(Space& home, Propagator& p, PropCond pc);
708  void subscribe(Space& home, Advisor& a);
710  void cancel(Space& home, Advisor& a);
712 
714 
715  static ModEvent modevent(const Delta& d);
718  int glbMin(const Delta& d) const;
720  int glbMax(const Delta& d) const;
722  bool glbAny(const Delta& d) const;
724  int lubMin(const Delta& d) const;
726  int lubMax(const Delta& d) const;
728  bool lubAny(const Delta& d) const;
730 
731  };
732 
737  template<class Char, class Traits>
738  std::basic_ostream<Char,Traits>&
739  operator <<(std::basic_ostream<Char,Traits>& os, const SingletonView& x);
740 
741 
751  template<class View>
753  : public DerivedView<View> {
754  protected:
755  using DerivedView<View>::x;
756 
757  public:
759  static PropCond pc_negateset(PropCond pc);
761  static ModEvent me_negateset(ModEvent me);
762 
764 
765  ComplementView(void);
768  explicit ComplementView(View& y);
770 
772 
773 
775  unsigned int cardMin(void) const;
777  unsigned int cardMax(void) const;
779  int lubMin(void) const;
781  int lubMax(void) const;
783  int lubMinN(unsigned int n) const;
785  int glbMin(void) const;
787  int glbMax(void) const;
788 
790  unsigned int glbSize(void) const;
792  unsigned int lubSize(void) const;
794  unsigned int unknownSize(void) const;
796 
798 
799  bool contains(int i) const;
802  bool notContains(int i) const;
804 
805 
807 
808  ModEvent cardMin(Space& home, unsigned int m);
811  ModEvent cardMax(Space& home, unsigned int m);
816  ModEvent include(Space& home,int i,int j);
821  ModEvent exclude(Space& home,int i,int j);
823  ModEvent include(Space& home,int i);
825  ModEvent exclude(Space& home,int i);
830  ModEvent intersect(Space& home,int i,int j);
832  ModEvent intersect(Space& home,int i);
834 
836 
837 
839  template<class I> ModEvent excludeI(Space& home, I& i);
841  template<class I> ModEvent includeI(Space& home, I& i);
843  template<class I> ModEvent intersectI(Space& home, I& iter);
845 
847 
848  static void schedule(Space& home, Propagator& p, ModEvent me);
851  static ModEvent me(const ModEventDelta& med);
853  static ModEventDelta med(ModEvent);
855 
857 
858 
865  void subscribe(Space& home, Propagator& p, PropCond pc, bool schedule=true);
867  void cancel(Space& home, Propagator& p, PropCond pc);
869  void subscribe(Space& home, Advisor& a);
871  void cancel(Space& home, Advisor& a);
873 
875 
876  static ModEvent modevent(const Delta& d);
879  int glbMin(const Delta& d) const;
881  int glbMax(const Delta& d) const;
883  bool glbAny(const Delta& d) const;
885  int lubMin(const Delta& d) const;
887  int lubMax(const Delta& d) const;
889  bool lubAny(const Delta& d) const;
891 
892  };
893 
898  template<class Char, class Traits, class View>
899  std::basic_ostream<Char,Traits>&
900  operator <<(std::basic_ostream<Char,Traits>& os,
901  const ComplementView<View>& x);
902 
903 
904  template<class View> class LubDiffRanges;
905  template<class View> class GlbDiffRanges;
906 
918  template<class View>
920  : public DerivedView<View> {
921  friend class LubDiffRanges<View>;
922  friend class GlbDiffRanges<View>;
923  protected:
924  using DerivedView<View>::x;
925 
930 
931  public:
932 
934 
935  CachedView(void);
938  explicit CachedView(const View& y);
940 
942 
943 
945  unsigned int cardMin(void) const;
947  unsigned int cardMax(void) const;
949  int lubMin(void) const;
951  int lubMax(void) const;
953  int lubMinN(unsigned int n) const;
955  int glbMin(void) const;
957  int glbMax(void) const;
958 
960  unsigned int glbSize(void) const;
962  unsigned int lubSize(void) const;
964  unsigned int unknownSize(void) const;
966 
968 
969  bool contains(int i) const;
972  bool notContains(int i) const;
974 
975 
977 
978  ModEvent cardMin(Space& home, unsigned int m);
981  ModEvent cardMax(Space& home, unsigned int m);
986  ModEvent include(Space& home,int i,int j);
991  ModEvent exclude(Space& home,int i,int j);
993  ModEvent include(Space& home,int i);
995  ModEvent exclude(Space& home,int i);
1000  ModEvent intersect(Space& home,int i,int j);
1002  ModEvent intersect(Space& home,int i);
1004 
1006 
1007 
1009  template<class I> ModEvent excludeI(Space& home, I& i);
1011  template<class I> ModEvent includeI(Space& home, I& i);
1013  template<class I> ModEvent intersectI(Space& home, I& iter);
1015 
1017 
1018  static void schedule(Space& home, Propagator& p, ModEvent me);
1021  static ModEvent me(const ModEventDelta& med);
1023  static ModEventDelta med(ModEvent);
1025 
1027 
1028 
1035  void subscribe(Space& home, Propagator& p, PropCond pc, bool schedule=true);
1037  void cancel(Space& home, Propagator& p, PropCond pc);
1039  void subscribe(Space& home, Advisor& a);
1041  void cancel(Space& home, Advisor& a);
1043 
1045 
1046  static ModEvent modevent(const Delta& d);
1049  int glbMin(const Delta& d) const;
1051  int glbMax(const Delta& d) const;
1053  bool glbAny(const Delta& d) const;
1055  int lubMin(const Delta& d) const;
1057  int lubMax(const Delta& d) const;
1059  bool lubAny(const Delta& d) const;
1061 
1063 
1064  void initCache(Space& home, const IntSet& glb, const IntSet& lub);
1067  void cacheGlb(Space& home);
1069  void cacheLub(Space& home);
1071  bool glbModified(void) const;
1073  bool lubModified(void) const;
1075 
1077 
1078  void update(Space& home, CachedView<View>& y);
1081  };
1082 
1087  template<class Char, class Traits, class View>
1088  std::basic_ostream<Char,Traits>&
1089  operator <<(std::basic_ostream<Char,Traits>& os,
1090  const CachedView<View>& x);
1091 
1096  template<class View>
1097  class GlbDiffRanges
1098  : public Iter::Ranges::Diff<GlbRanges<View>,BndSetRanges> {
1099  protected:
1104  public:
1106  GlbDiffRanges(const CachedView<View>& x);
1107  };
1108 
1113  template<class View>
1114  class LubDiffRanges
1115  : public Iter::Ranges::Diff<BndSetRanges,LubRanges<View> > {
1116  protected:
1121  public:
1123  LubDiffRanges(const CachedView<View>& x);
1124  };
1125 
1126 }}
1127 
1128 #include <gecode/set/var/set.hpp>
1129 
1130 #include <gecode/set/view/set.hpp>
1131 
1132 #include <gecode/set/view/const.hpp>
1135 #include <gecode/set/view/cached.hpp>
1136 
1137 #include <gecode/set/view/print.hpp>
1138 #include <gecode/set/var/print.hpp>
1139 
1140 // STATISTICS: set-var
static ModEventDelta med(ModEvent me)
Translate modification event me to modification event delta for view.
Definition: view.hpp:545
void cancel(Space &home, Propagator &p, PropCond pc)
Cancel subscription of propagator p with propagation condition pc to view.
Definition: view.hpp:515
void update(Space &home, VarImpView< SetVar > &y)
Update this view to be a clone of view y.
Definition: view.hpp:555
bool same(const VarImpView< VarA > &x, const VarImpView< VarB > &y)
Test whether views x and y are the same.
unsigned int cardMax(void) const
Return maximum cardinality.
Definition: set.hpp:86
ModEvent include(Space &home, int i, int j)
Update greatest lower bound to include all elements between and including i and j.
Definition: set.hpp:126
Shrinking sets of integers.
Definition: var-imp.hpp:243
int ModEvent
Type for modification events.
Definition: core.hpp:62
Base-class for propagators.
Definition: core.hpp:1023
Base-class for advisors.
Definition: core.hpp:1251
int glbMin(void) const
Return minimum of the greatest lower bound.
Definition: set.hpp:102
ModEvent intersect(Space &home, int i, int j)
Update least upper bound to contain at most all elements between and including i and j...
Definition: set.hpp:141
BndSetRanges cr
Cached lower bound.
Definition: view.hpp:1103
unsigned int cardMin(void) const
Return minimum cardinality.
Definition: set.hpp:82
bool glbAny(const Delta &d) const
Test whether arbitrary values got pruned from glb.
Definition: set.hpp:188
Range iterator for the greatest lower bound.
Definition: var-imp.hpp:359
Finite integer set variable implementation.
Definition: var-imp.hpp:430
void reschedule(Space &home, Propagator &p, PropCond pc)
Re-schedule propagator p with propagation condition pc.
Definition: view.hpp:520
ModEvent excludeI(Space &home, I &i)
Remove range sequence described by i from least upper bound.
Definition: set.hpp:160
Base-class for constant views.
Definition: view.hpp:45
Computation spaces.
Definition: core.hpp:1701
static ModEvent modevent(const Delta &d)
Return modification event.
Definition: set.hpp:175
Base-class for derived views.
Definition: view.hpp:230
Range iterator for the least upper bound.
Definition: var-imp.hpp:317
Gecode::IntSet d(v, 7)
unsigned int unknownSize(void) const
Return the number of unknown elements.
Definition: set.hpp:70
void subscribe(Space &home, Propagator &p, PropCond pc, bool schedule=true)
Subscribe propagator p with propagation condition pc to view.
Definition: view.hpp:509
int p
Number of positive literals for node type.
Definition: bool-expr.cpp:232
Gecode::IntArgs i(4, 1, 2, 3, 4)
int n
Number of negative literals for node type.
Definition: bool-expr.cpp:234
bool before(const ViewA &x, const ViewB &y)
Test whether view x comes before y (arbitrary order)
Definition: view.hpp:723
Constant view for the universe.
Definition: view.hpp:457
int PropCond
Type for propagation conditions.
Definition: core.hpp:72
SetView(void)
Default constructor.
Definition: set.hpp:48
GLBndSet glbCache
The cached greatest lower bound.
Definition: view.hpp:929
unsigned int size(I &i)
Size of all ranges of range iterator i.
Range iterator for integer sets.
Definition: var-imp.hpp:185
Base-class for variable implementation views.
Definition: view.hpp:127
unsigned int lubSize(void) const
Return the number of elements in the least upper bound.
Definition: set.hpp:66
Range iterator for difference of greatest lower bound and cache
Definition: view.hpp:905
Integer sets.
Definition: int.hh:170
ModEvent includeI(Space &home, I &i)
Include range sequence described by i in greatest lower bound.
Definition: set.hpp:151
bool same(const ConstSetView &x, const ConstSetView &y)
Definition: const.hpp:684
Singleton set view.
Definition: view.hpp:585
ModEvent intersectI(Space &home, I &iter)
Intersect least upper bound with range sequence described by i.
Definition: set.hpp:164
Set view for set variables
Definition: view.hpp:56
Integer view for integer variables.
Definition: view.hpp:129
Post propagator for SetVar SetOpType SetVar y
Definition: set.hh:765
Constant view.
Definition: view.hpp:186
Generic domain change information to be supplied to advisors.
Definition: core.hpp:203
Set variables
Definition: set.hh:127
struct Gecode::@585::NNF::@62::@64 a
For atomic nodes.
LUBndSet lubCache
The cached least upper bound.
Definition: view.hpp:927
Integer variables.
Definition: int.hh:347
static ModEvent me(const ModEventDelta &med)
Return modification event for view type in med.
Definition: view.hpp:540
int glbMax(void) const
Return maximum of the greatest lower bound.
Definition: set.hpp:106
Cached integer view.
Definition: view.hpp:1135
Growing sets of integers.
Definition: var-imp.hpp:205
ModEvent exclude(Space &home, int i, int j)
Restrict least upper bound to not contain all elements between and including i and j...
Definition: set.hpp:156
Complement set view.
Definition: view.hpp:752
bool notContains(int i) const
Test whether i is not in the least upper bound.
Definition: set.hpp:78
Gecode toplevel namespace
static void schedule(Space &home, Propagator &p, ModEvent me)
Schedule propagator p with modification event me.
Definition: view.hpp:535
LubRanges< View > lr
Upper bound iterator.
Definition: view.hpp:1120
Range iterator for computing set difference.
Definition: ranges-diff.hpp:43
bool lubAny(const Delta &d) const
Test whether arbitrary values got pruned from lub.
Definition: set.hpp:201
bool contains(int i) const
Test whether i is in the greatest lower bound.
Definition: set.hpp:74
VarImpType * x
Pointer to variable implementation.
Definition: view.hpp:135
GlbRanges< View > gr
Lower bound iterator.
Definition: view.hpp:1101
int lubMinN(unsigned int n) const
Return n-th smallest element of the least upper bound.
Definition: set.hpp:98
Constant view for the empty set.
Definition: view.hpp:331
int ModEventDelta
Modification event deltas.
Definition: core.hpp:89
bool before(const ConstSetView &x, const ConstSetView &y)
Definition: const.hpp:694
int lubMin(void) const
Return minimum of the least upper bound.
Definition: set.hpp:90
Range iterator for difference of least upper bound and cache
Definition: view.hpp:904
unsigned int glbSize(void) const
Return the number of elements in the greatest lower bound.
Definition: set.hpp:62
int lubMax(void) const
Return maximum of the least upper bound.
Definition: set.hpp:94
BndSetRanges cr
Cached upper bound.
Definition: view.hpp:1118