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