00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #include "./myspace.hh"
00024 #include <iostream>
00025
00026
00027 using namespace std;
00028
00029 MySpace::MySpace(unsigned int nv) {
00030 n=nv;
00031 v=new void*[n];
00032 type_of_v=new VarType[n];
00033 }
00034
00035
00036 MySpace::~MySpace() {
00037 for (int i=0;i<n;i++)
00038 delete v[i];
00039
00040 delete[] v;
00041 delete[] type_of_v;
00042 }
00043
00044 MySpace::MySpace(bool share,MySpace& ms) : Space(share,ms) {
00045 n=ms.n;
00046 v=new void*[n];
00047 type_of_v=new VarType[n];
00048 for (int i=0;i<n;i++) {
00049 type_of_v[i] = ms.type_of_v[i];
00050 switch (type_of_v[i]) {
00051 case VTYPE_INT :
00052 v[i] = new IntVar(*(static_cast<IntVar*>(ms.v[i])));
00053 (static_cast<IntVar*>(v[i]))->update(this,true,*(static_cast<IntVar*>(ms.v[i])));
00054 break;
00055 case VTYPE_BOOL :
00056 v[i] = new BoolVar(*(static_cast<BoolVar*>(ms.v[i])));
00057 (static_cast<BoolVar*>(v[i]))->update(this,true,*(static_cast<BoolVar*>(ms.v[i])));
00058 break;
00059 default:
00060 cout<<"Unsupported variable type"<<endl;
00061 abort();
00062 }
00063 }
00064 }
00065
00066
00067 MySpace* MySpace::copy(bool share) {return new MySpace(share,*this);}
00068
00069