/[escript]/branches/more_shared_ptrs_from_1812/escript/src/Data.cpp
ViewVC logotype

Diff of /branches/more_shared_ptrs_from_1812/escript/src/Data.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1827 by jfenwick, Wed Oct 1 03:48:18 2008 UTC revision 1828 by jfenwick, Thu Oct 2 04:52:11 2008 UTC
# Line 46  Data::Data() Line 46  Data::Data()
46    //    //
47    // Default data is type DataEmpty    // Default data is type DataEmpty
48    DataAbstract* temp=new DataEmpty();    DataAbstract* temp=new DataEmpty();
49    shared_ptr<DataAbstract> temp_data(temp);    m_data=temp->getPtr();
   m_data=temp_data;  
50    m_protected=false;    m_protected=false;
51  }  }
52    
# Line 63  Data::Data(double value, Line 62  Data::Data(double value,
62    
63    int len = DataTypes::noValues(dataPointShape);    int len = DataTypes::noValues(dataPointShape);
64    DataVector temp_data(len,value,len);    DataVector temp_data(len,value,len);
 //   DataArrayView temp_dataView(temp_data, dataPointShape);  
   
 //   initialise(temp_dataView, what, expanded);  
65    initialise(temp_data, dataPointShape, what, expanded);    initialise(temp_data, dataPointShape, what, expanded);
   
66    m_protected=false;    m_protected=false;
67  }  }
68    
# Line 100  Data::Data(const Data& inData, Line 95  Data::Data(const Data& inData,
95    //    //
96    // Create Data which is a slice of another Data    // Create Data which is a slice of another Data
97    DataAbstract* tmp = inData.m_data->getSlice(region);    DataAbstract* tmp = inData.m_data->getSlice(region);
98    shared_ptr<DataAbstract> temp_data(tmp);    m_data=DataAbstract_ptr(tmp);
   m_data=temp_data;  
99    m_protected=false;    m_protected=false;
100  }  }
101    
# Line 120  Data::Data(const Data& inData, Line 114  Data::Data(const Data& inData,
114      throw FunctionSpaceException("Call to probeInterpolation returned false for DataConstant.");      throw FunctionSpaceException("Call to probeInterpolation returned false for DataConstant.");
115      }      }
116      DataConstant* dc=new DataConstant(functionspace,inData.m_data->getShape(),inData.m_data->getVector());        DataConstant* dc=new DataConstant(functionspace,inData.m_data->getShape(),inData.m_data->getVector());  
117      m_data=shared_ptr<DataAbstract>(dc);      m_data=DataAbstract_ptr(dc);
118    } else {    } else {
119      Data tmp(0,inData.getDataPointShape(),functionspace,true);      Data tmp(0,inData.getDataPointShape(),functionspace,true);
120      // Note: Must use a reference or pointer to a derived object      // Note: Must use a reference or pointer to a derived object
# Line 139  Data::Data(const Data& inData, Line 133  Data::Data(const Data& inData,
133    m_protected=false;    m_protected=false;
134  }  }
135    
 // Data::Data(const DataTagged::TagListType& tagKeys,  
 //            const DataTagged::ValueListType & values,  
 //            const DataArrayView& defaultValue,  
 //            const FunctionSpace& what,  
 //            bool expanded)  
 // {  
 //   DataAbstract* temp=new DataTagged(tagKeys,values,defaultValue,what);  
 //   shared_ptr<DataAbstract> temp_data(temp);  
 //   m_data=temp_data;  
 //   m_protected=false;  
 //   if (expanded) {  
 //     expand();  
 //   }  
 // }  
   
   
   
136  Data::Data(DataAbstract* underlyingdata)  Data::Data(DataAbstract* underlyingdata)
137  {  {
138      m_data=shared_ptr<DataAbstract>(underlyingdata);  //  m_data=shared_ptr<DataAbstract>(underlyingdata);
139        m_data=underlyingdata->getPtr();
140      m_protected=false;      m_protected=false;
141  }  }
142    
# Line 235  Data::Data(const object& value, Line 213  Data::Data(const object& value,
213  //     initialise(temp2_dataView, other.getFunctionSpace(), false);  //     initialise(temp2_dataView, other.getFunctionSpace(), false);
214    
215      DataConstant* t=new DataConstant(other.getFunctionSpace(),other.getDataPointShape(),temp2_data);      DataConstant* t=new DataConstant(other.getFunctionSpace(),other.getDataPointShape(),temp2_data);
216      boost::shared_ptr<DataAbstract> sp(t);  //     boost::shared_ptr<DataAbstract> sp(t);
217      m_data=sp;  //     m_data=sp;
218        m_data=DataAbstract_ptr(t);
219    
220    } else {    } else {
221      //      //
222      // Create a DataConstant with the same sample shape as other      // Create a DataConstant with the same sample shape as other
223  //     initialise(temp_dataView, other.getFunctionSpace(), false);  //     initialise(temp_dataView, other.getFunctionSpace(), false);
224      DataConstant* t=new DataConstant(asNumArray,other.getFunctionSpace());      DataConstant* t=new DataConstant(asNumArray,other.getFunctionSpace());
225      boost::shared_ptr<DataAbstract> sp(t);  //     boost::shared_ptr<DataAbstract> sp(t);
226      m_data=sp;  //     m_data=sp;
227        m_data=DataAbstract_ptr(t);
228    }    }
229    m_protected=false;    m_protected=false;
230  }  }
# Line 269  Data::initialise(const boost::python::nu Line 248  Data::initialise(const boost::python::nu
248    // within the shared_ptr constructor.    // within the shared_ptr constructor.
249    if (expanded) {    if (expanded) {
250      DataAbstract* temp=new DataExpanded(value, what);      DataAbstract* temp=new DataExpanded(value, what);
251      boost::shared_ptr<DataAbstract> temp_data(temp);  //     boost::shared_ptr<DataAbstract> temp_data(temp);
252      m_data=temp_data;  //     m_data=temp_data;
253        m_data=temp->getPtr();
254    } else {    } else {
255      DataAbstract* temp=new DataConstant(value, what);      DataAbstract* temp=new DataConstant(value, what);
256      boost::shared_ptr<DataAbstract> temp_data(temp);  //     boost::shared_ptr<DataAbstract> temp_data(temp);
257      m_data=temp_data;  //     m_data=temp_data;
258        m_data=temp->getPtr();
259    }    }
260  }  }
261    
# Line 292  Data::initialise(const DataTypes::ValueT Line 273  Data::initialise(const DataTypes::ValueT
273    // within the shared_ptr constructor.    // within the shared_ptr constructor.
274    if (expanded) {    if (expanded) {
275      DataAbstract* temp=new DataExpanded(what, shape, value);      DataAbstract* temp=new DataExpanded(what, shape, value);
276      boost::shared_ptr<DataAbstract> temp_data(temp);  //     boost::shared_ptr<DataAbstract> temp_data(temp);
277      m_data=temp_data;  //     m_data=temp_data;
278        m_data=temp->getPtr();
279    } else {    } else {
280      DataAbstract* temp=new DataConstant(what, shape, value);      DataAbstract* temp=new DataConstant(what, shape, value);
281      boost::shared_ptr<DataAbstract> temp_data(temp);  //     boost::shared_ptr<DataAbstract> temp_data(temp);
282      m_data=temp_data;  //     m_data=temp_data;
283        m_data=temp->getPtr();
284    }    }
285  }  }
286    
# Line 434  void Line 417  void
417  Data::copy(const Data& other)  Data::copy(const Data& other)
418  {  {
419    DataAbstract* temp=other.m_data->deepCopy();    DataAbstract* temp=other.m_data->deepCopy();
420    shared_ptr<DataAbstract> temp_data(temp);    DataAbstract_ptr p=temp->getPtr();
421    m_data=temp_data;    m_data=p;
422  }  }
423    
424    
# Line 539  Data::expand() Line 522  Data::expand()
522    if (isConstant()) {    if (isConstant()) {
523      DataConstant* tempDataConst=dynamic_cast<DataConstant*>(m_data.get());      DataConstant* tempDataConst=dynamic_cast<DataConstant*>(m_data.get());
524      DataAbstract* temp=new DataExpanded(*tempDataConst);      DataAbstract* temp=new DataExpanded(*tempDataConst);
525      shared_ptr<DataAbstract> temp_data(temp);  //     shared_ptr<DataAbstract> temp_data(temp);
526      m_data=temp_data;  //     m_data=temp_data;
527        m_data=temp->getPtr();
528    } else if (isTagged()) {    } else if (isTagged()) {
529      DataTagged* tempDataTag=dynamic_cast<DataTagged*>(m_data.get());      DataTagged* tempDataTag=dynamic_cast<DataTagged*>(m_data.get());
530      DataAbstract* temp=new DataExpanded(*tempDataTag);      DataAbstract* temp=new DataExpanded(*tempDataTag);
531      shared_ptr<DataAbstract> temp_data(temp);  //     shared_ptr<DataAbstract> temp_data(temp);
532      m_data=temp_data;  //     m_data=temp_data;
533        m_data=temp->getPtr();
534    } else if (isExpanded()) {    } else if (isExpanded()) {
535      //      //
536      // do nothing      // do nothing
# Line 562  Data::tag() Line 547  Data::tag()
547    if (isConstant()) {    if (isConstant()) {
548      DataConstant* tempDataConst=dynamic_cast<DataConstant*>(m_data.get());      DataConstant* tempDataConst=dynamic_cast<DataConstant*>(m_data.get());
549      DataAbstract* temp=new DataTagged(*tempDataConst);      DataAbstract* temp=new DataTagged(*tempDataConst);
550      shared_ptr<DataAbstract> temp_data(temp);  //     shared_ptr<DataAbstract> temp_data(temp);
551      m_data=temp_data;  //     m_data=temp_data;
552        m_data=temp->getPtr();
553    } else if (isTagged()) {    } else if (isTagged()) {
554      // do nothing      // do nothing
555    } else if (isExpanded()) {    } else if (isExpanded()) {
# Line 1961  Data::setTaggedValue(int tagKey, Line 1947  Data::setTaggedValue(int tagKey,
1947      m_data->setTaggedValue(tagKey,tempShape, temp_data2);      m_data->setTaggedValue(tagKey,tempShape, temp_data2);
1948  }  }
1949    
 // void  
 // Data::setTaggedValueFromCPP(int tagKey,  
 //                             const DataArrayView& value)  
 // {  
 //   if (isProtected()) {  
 //         throw DataException("Error - attempt to update protected Data object.");  
 //   }  
 //   //  
 //   // Ensure underlying data object is of type DataTagged  
 //   if (isConstant()) tag();  
 //  
 //   //  
 //   // Call DataAbstract::setTaggedValue  
 //   m_data->setTaggedValue(tagKey,value);  
 // }  
1950    
1951  void  void
1952  Data::setTaggedValueFromCPP(int tagKey,  Data::setTaggedValueFromCPP(int tagKey,

Legend:
Removed from v.1827  
changed lines
  Added in v.1828

  ViewVC Help
Powered by ViewVC 1.1.26