inline ExecStatus Weights<View>::post(Home home, const SharedArray<int>& elements, const SharedArray<int>& weights, View x, Gecode::Int::IntView y) { if (elements.size() != weights.size()) throw ArgumentSizeMismatch("Weights"); Region r(home); int* els_arr = r.alloc<int>(elements.size()); for (int i=elements.size(); i--;) els_arr[i] = elements[i]; IntSet els(els_arr, elements.size()); IntSetRanges er(els); GECODE_ME_CHECK(x.intersectI(home, er)); (void) new (home) Weights(home,elements,weights,x,y); return ES_OK; }
forceinline FloatValArgs::FloatValArgs(const SharedArray<FloatVal>& x) : PrimArgArray<FloatVal>(x.size()) { for (int i=x.size(); i--;) a[i] = x[i]; }
forceinline IntArgs::IntArgs(const SharedArray<int>& x) : PrimArgArray<int>(x.size()) { for (int i=x.size(); i--;) a[i] = x[i]; }