set.cc
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 #include "gecode/set.hh"
00028
00029 namespace Gecode {
00030
00031 SetVar::SetVar(Space* home)
00032 : x(new (home) Set::SetVarImp(home)) {}
00033
00034 SetVar::SetVar(Space* home,int lbMin,int lbMax,int ubMin,int ubMax,
00035 unsigned int minCard, unsigned int maxCard)
00036 : x(new (home) Set::SetVarImp(home,lbMin,lbMax,ubMin,ubMax,
00037 minCard,maxCard)) {
00038 if ((lbMin < Limits::Set::int_min) ||
00039 (lbMax > Limits::Set::int_max) ||
00040 (ubMin < Limits::Set::int_min) ||
00041 (ubMax > Limits::Set::int_max))
00042 throw Set::VariableOutOfRangeDomain("SetVar");
00043 if (maxCard > Limits::Set::card_max)
00044 throw Set::VariableOutOfRangeCardinality("SetVar");
00045 if (minCard > maxCard)
00046 throw Set::VariableFailedDomain("SetVar");
00047 }
00048
00049 SetVar::SetVar(Space* home, const IntSet& glb,int ubMin,int ubMax,
00050 unsigned int minCard, unsigned int maxCard)
00051 : x(new (home) Set::SetVarImp(home,glb,ubMin,ubMax,minCard,maxCard)) {
00052 if ( ((glb.size() > 0) &&
00053 ((glb.min() < Limits::Set::int_min) ||
00054 (glb.max() > Limits::Set::int_max))) ||
00055 (ubMin < Limits::Set::int_min) ||
00056 (ubMax > Limits::Set::int_max))
00057 throw Set::VariableOutOfRangeDomain("SetVar");
00058 if (maxCard > Limits::Set::card_max)
00059 throw Set::VariableOutOfRangeCardinality("SetVar");
00060 if (minCard > maxCard)
00061 throw Set::VariableFailedDomain("SetVar");
00062 }
00063
00064 SetVar::SetVar(Space* home,int lbMin,int lbMax,const IntSet& lub,
00065 unsigned int minCard, unsigned int maxCard)
00066 : x(new (home) Set::SetVarImp(home,lbMin,lbMax,lub,minCard,maxCard)) {
00067 if ( ((lub.size() > 0) &&
00068 ((lub.min() < Limits::Set::int_min) ||
00069 (lub.max() > Limits::Set::int_max))) ||
00070 (lbMin < Limits::Set::int_min) ||
00071 (lbMax > Limits::Set::int_max))
00072 throw Set::VariableOutOfRangeDomain("SetVarArray");
00073 if (maxCard > Limits::Set::card_max)
00074 throw Set::VariableOutOfRangeCardinality("SetVar");
00075 if (minCard > maxCard)
00076 throw Set::VariableFailedDomain("SetVar");
00077 }
00078
00079 SetVar::SetVar(Space* home,
00080 const IntSet& glb, const IntSet& lub,
00081 unsigned int minCard, unsigned int maxCard)
00082 : x(new (home) Set::SetVarImp(home,glb,lub,minCard,maxCard)) {
00083 if (((glb.size() > 0) &&
00084 ((glb.min() < Limits::Set::int_min) ||
00085 (glb.max() > Limits::Set::int_max))) ||
00086 ((glb.size() > 0) &&
00087 ((lub.min() < Limits::Set::int_min) ||
00088 (lub.max() > Limits::Set::int_max))))
00089 throw Set::VariableOutOfRangeDomain("SetVar");
00090 if (maxCard > Limits::Set::card_max)
00091 throw Set::VariableOutOfRangeCardinality("SetVar");
00092 if (minCard > maxCard)
00093 throw Set::VariableFailedDomain("SetVar");
00094 }
00095
00096 }
00097
00098
00099