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 namespace Gecode { namespace Set {
00035
00037 class SetTraceView {
00038 protected:
00040 RangeList* _glb;
00042 RangeList* _lub;
00043 public:
00045 SetTraceView(void);
00047 SetTraceView(Space& home, SetView x);
00049 RangeList* glb(void) const;
00051 RangeList* lub(void) const;
00053 void prune(Space& home, SetView y, const Delta& d);
00055 void update(Space& home, SetTraceView x);
00057 static unsigned long long int slack(SetView x);
00058 };
00059
00060 forceinline
00061 SetTraceView::SetTraceView(void) {}
00062 forceinline
00063 SetTraceView::SetTraceView(Space& home, SetView x) {
00064 GlbRanges<SetView> glbi(x);
00065 RangeList::copy(home,_glb,glbi);
00066 LubRanges<SetView> lubi(x);
00067 RangeList::copy(home,_lub,lubi);
00068 }
00069 forceinline RangeList*
00070 SetTraceView::glb(void) const {
00071 return _glb;
00072 }
00073 forceinline RangeList*
00074 SetTraceView::lub(void) const {
00075 return _lub;
00076 }
00077 forceinline void
00078 SetTraceView::prune(Space& home, SetView x, const Delta&) {
00079 GlbRanges<SetView> glbi(x);
00080 RangeList::overwrite(home,_glb,glbi);
00081 LubRanges<SetView> lubi(x);
00082 RangeList::overwrite(home,_lub,lubi);
00083 }
00084 forceinline void
00085 SetTraceView::update(Space& home, SetTraceView x) {
00086 Iter::Ranges::RangeList glbi(x._glb);
00087 RangeList::copy(home,_glb,glbi);
00088 Iter::Ranges::RangeList lubi(x._lub);
00089 RangeList::copy(home,_lub,lubi);
00090 }
00091
00092 forceinline unsigned long long int
00093 SetTraceView::slack(SetView x) {
00094 return x.unknownSize();
00095 }
00096
00097 }}
00098
00099