Generated on Wed Nov 1 15:04:48 2006 for Gecode by doxygen 1.4.5

set.cc

Go to the documentation of this file.
00001 /*
00002  *  Main authors:
00003  *     Guido Tack <tack@gecode.org>
00004  *     Christian Schulte <schulte@gecode.org>
00005  *     Gabor Szokoli <szokoli@gecode.org>
00006  *
00007  *  Copyright:
00008  *     Guido Tack, 2004
00009  *     Christian Schulte, 2004
00010  *     Gabor Szokoli, 2004
00011  *
00012  *  Last modified:
00013  *     $Date: 2006-04-11 15:58:37 +0200 (Tue, 11 Apr 2006) $ by $Author: tack $
00014  *     $Revision: 3188 $
00015  *
00016  *  This file is part of Gecode, the generic constraint
00017  *  development environment:
00018  *     http://www.gecode.org
00019  *
00020  *  See the file "LICENSE" for information on usage and
00021  *  redistribution of this file, and for a
00022  *     DISCLAIMER OF ALL WARRANTIES.
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 // STATISTICS: set-var
00099