/[escript]/branches/arrexp_2137_win_merge/escript/src/DataVector.cpp
ViewVC logotype

Diff of /branches/arrexp_2137_win_merge/escript/src/DataVector.cpp

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

revision 2111 by jfenwick, Mon Dec 1 01:16:18 2008 UTC revision 2119 by jfenwick, Tue Dec 2 06:06:04 2008 UTC
# Line 18  Line 18 
18  #include "DataException.h"  #include "DataException.h"
19  #include <boost/python/extract.hpp>  #include <boost/python/extract.hpp>
20  #include "DataTypes.h"  #include "DataTypes.h"
21    #include "WrappedArray.h"
22    
23  #include <cassert>  #include <cassert>
24    
# Line 165  DataVector::operator!=(const DataVector& Line 166  DataVector::operator!=(const DataVector&
166    
167    
168  void  void
169    DataVector::copyFromArray(const WrappedArray& value)
170    {
171      using DataTypes::ValueType;
172      if (m_array_data!=0) {
173        arrayManager.delete_array(m_array_data);
174      }
175      DataTypes::ShapeType tempShape=value.getShape();
176      DataVector::size_type nelements=DataTypes::noValues(tempShape);
177    
178      m_array_data = arrayManager.new_array(1,nelements);
179    
180      int si=0,sj=0,sk=0,sl=0;      // bounds for each dimension of the shape
181    
182    
183      if (value.getRank()==0) {
184         m_array_data[0]=value.getElt();
185      } else if (value.getRank()==1) {
186         si=tempShape[0];
187         for (ValueType::size_type i=0;i<si;i++) {
188            m_array_data[i]=value.getElt(i);
189         }
190      } else if (value.getRank()==2) {
191        si=tempShape[0];
192        sj=tempShape[1];
193            for (ValueType::size_type i=0;i<si;i++) {
194               for (ValueType::size_type j=0;j<sj;j++) {
195                  m_array_data[DataTypes::getRelIndex(tempShape,i,j)]=value.getElt(i,j);
196               }
197            }
198      } else if (value.getRank()==3) {
199        si=tempShape[0];
200        sj=tempShape[1];
201        sk=tempShape[2];
202            for (ValueType::size_type i=0;i<si;i++) {
203               for (ValueType::size_type j=0;j<sj;j++) {
204                  for (ValueType::size_type k=0;k<sk;k++) {
205                     m_array_data[DataTypes::getRelIndex(tempShape,i,j,k)]=value.getElt(i,j,k);
206                  }
207               }
208            }
209      } else if (value.getRank()==4) {
210        si=tempShape[0];
211        sj=tempShape[1];
212        sk=tempShape[2];
213        sl=tempShape[3];
214            for (ValueType::size_type i=0;i<si;i++) {
215               for (ValueType::size_type j=0;j<sj;j++) {
216                  for (ValueType::size_type k=0;k<sk;k++) {
217                     for (ValueType::size_type l=0;l<sl;l++) {
218                        m_array_data[DataTypes::getRelIndex(tempShape,i,j,k,l)]=value.getElt(i,j,k,l);
219                     }
220                  }
221               }
222            }
223       }
224       m_size=nelements;    // total amount of elements
225       m_dim=m_size;        // elements per sample
226       m_N=1;           // number of samples
227    }
228    
229    void
230  DataVector::copyFromNumArray(const boost::python::numeric::array& value)  DataVector::copyFromNumArray(const boost::python::numeric::array& value)
231  {  {
232    using DataTypes::ValueType;    using DataTypes::ValueType;

Legend:
Removed from v.2111  
changed lines
  Added in v.2119

  ViewVC Help
Powered by ViewVC 1.1.26