trace-view.hpp
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038 namespace Gecode { namespace Set {
00039
00041 class SetTraceView {
00042 protected:
00044 RangeList* _glb;
00046 RangeList* _lub;
00047 public:
00049 SetTraceView(void);
00051 SetTraceView(Space& home, SetView x);
00053 RangeList* glb(void) const;
00055 RangeList* lub(void) const;
00057 void prune(Space& home, SetView y, const Delta& d);
00059 void update(Space& home, bool share, SetTraceView x);
00061 static unsigned long long int slack(SetView x);
00062 };
00063
00064 forceinline
00065 SetTraceView::SetTraceView(void) {}
00066 forceinline
00067 SetTraceView::SetTraceView(Space& home, SetView x) {
00068 GlbRanges<SetView> glbi(x);
00069 RangeList::copy(home,_glb,glbi);
00070 LubRanges<SetView> lubi(x);
00071 RangeList::copy(home,_lub,lubi);
00072 }
00073 forceinline RangeList*
00074 SetTraceView::glb(void) const {
00075 return _glb;
00076 }
00077 forceinline RangeList*
00078 SetTraceView::lub(void) const {
00079 return _lub;
00080 }
00081 forceinline void
00082 SetTraceView::prune(Space& home, SetView x, const Delta&) {
00083 GlbRanges<SetView> glbi(x);
00084 RangeList::overwrite(home,_glb,glbi);
00085 LubRanges<SetView> lubi(x);
00086 RangeList::overwrite(home,_lub,lubi);
00087 }
00088 forceinline void
00089 SetTraceView::update(Space& home, bool, SetTraceView x) {
00090 Iter::Ranges::RangeList glbi(x._glb);
00091 RangeList::copy(home,_glb,glbi);
00092 Iter::Ranges::RangeList lubi(x._lub);
00093 RangeList::copy(home,_lub,lubi);
00094 }
00095
00096 forceinline unsigned long long int
00097 SetTraceView::slack(SetView x) {
00098 return x.unknownSize();
00099 }
00100
00101 }}
00102
00103