int.icc
Go to the documentation of this file.00001 /* 00002 * Main authors: 00003 * Christian Schulte <schulte@gecode.org> 00004 * 00005 * Copyright: 00006 * Christian Schulte, 2002 00007 * 00008 * Last modified: 00009 * $Date: 2005-10-11 17:57:38 +0200 (Tue, 11 Oct 2005) $ by $Author: tack $ 00010 * $Revision: 2334 $ 00011 * 00012 * This file is part of Gecode, the generic constraint 00013 * development environment: 00014 * http://www.gecode.org 00015 * 00016 * See the file "LICENSE" for information on usage and 00017 * redistribution of this file, and for a 00018 * DISCLAIMER OF ALL WARRANTIES. 00019 * 00020 */ 00021 00022 namespace Gecode { 00023 00024 forceinline 00025 IntVar::IntVar(void) {} 00026 00027 forceinline void 00028 IntVar::init(Space* home, int min, int max) { 00029 var = new (home) Int::IntVarImp(home,min,max); 00030 } 00031 00032 forceinline void 00033 IntVar::init(Space* home, const IntSet& ds) { 00034 var = new (home) Int::IntVarImp(home,ds); 00035 } 00036 00037 00038 00039 inline 00040 IntVar::IntVar(const IntVar& x) 00041 : var(x.var) {} 00042 inline 00043 IntVar::IntVar(const Int::IntView& x) 00044 : var(x.variable()) {} 00045 00046 00047 00048 forceinline Int::IntVarImp* 00049 IntVar::variable(void) const { 00050 return var; 00051 } 00052 00053 00054 forceinline int 00055 IntVar::val(void) const { 00056 return var->val(); 00057 } 00058 forceinline int 00059 IntVar::min(void) const { 00060 return var->min(); 00061 } 00062 forceinline int 00063 IntVar::med(void) const { 00064 return var->med(); 00065 } 00066 forceinline int 00067 IntVar::max(void) const { 00068 return var->max(); 00069 } 00070 00071 00072 forceinline unsigned int 00073 IntVar::degree(void) const { 00074 return var->degree(); 00075 } 00076 forceinline unsigned int 00077 IntVar::width(void) const { 00078 return var->width(); 00079 } 00080 forceinline unsigned int 00081 IntVar::size(void) const { 00082 return var->size(); 00083 } 00084 00085 00086 00087 forceinline bool 00088 IntVar::assigned(void) const { 00089 return var->assigned(); 00090 } 00091 forceinline bool 00092 IntVar::range(void) const { 00093 return var->range(); 00094 } 00095 forceinline bool 00096 IntVar::in(int n) const { 00097 return var->in(n); 00098 } 00099 00100 00101 forceinline void 00102 IntVar::update(Space* home, bool share, IntVar& x) { 00103 var = x.var->copy(home,share); 00104 } 00105 00106 /* 00107 * Range iterator 00108 * 00109 */ 00110 forceinline 00111 IntVarRanges::IntVarRanges(void) {} 00112 00113 forceinline 00114 IntVarRanges::IntVarRanges(const IntVar& x) 00115 : Int::IntVarImpFwd(x.variable()) {} 00116 00117 forceinline void 00118 IntVarRanges::init(const IntVar& x) { 00119 Int::IntVarImpFwd::init(x.variable()); 00120 } 00121 00122 00123 /* 00124 * Value iterator 00125 * 00126 */ 00127 00128 forceinline 00129 IntVarValues::IntVarValues(void) {} 00130 00131 forceinline 00132 IntVarValues::IntVarValues(const IntVar& x) { 00133 IntVarRanges r(x); 00134 Iter::Ranges::ToValues<IntVarRanges>::init(r); 00135 } 00136 00137 forceinline void 00138 IntVarValues::init(const IntVar& x) { 00139 IntVarRanges r(x); 00140 Iter::Ranges::ToValues<IntVarRanges>::init(r); 00141 } 00142 00143 } 00144 00145 // STATISTICS: int-var 00146