/[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 117 by jgs, Fri Apr 1 05:48:57 2005 UTC revision 121 by jgs, Fri May 6 04:26:16 2005 UTC
# Line 14  Line 14 
14    
15  #include <iostream>  #include <iostream>
16    
17  #include "escript/Data/DataVector.h"  #include "escript/Data/DataVector.h"
18    #include "escript/Data/Taipan.h"
19    #include "escript/Data/DataException.h"
20    
21  using namespace std;  using namespace std;
22    using namespace escript;
23    
24  namespace escript {  namespace escript {
25    
26  DataVector::DataVector() {  Taipan arrayManager;
27    
28    DataVector::DataVector() :
29      m_array_data(0),
30      m_size(0),
31      m_dim(0),
32      m_N(0)
33    {
34    }
35    
36    DataVector::DataVector(const DataVector& other) :
37      m_array_data(0),
38      m_size(other.m_size),
39      m_dim(other.m_dim),
40      m_N(other.m_N)
41    {
42      m_array_data = arrayManager.new_array(m_dim,m_N);
43      for (int i=0; i<m_size; i++) {
44        m_array_data[i] = other.m_array_data[i];
45      }
46    }
47    
48    DataVector::DataVector(const DataVector::size_type size,
49                           const DataVector::value_type val,
50                           const DataVector::size_type blockSize) :
51      m_array_data(0),
52      m_size(size),
53      m_dim(blockSize)
54    {
55      resize(size, val, blockSize);
56  }  }
57    
58  DataVector::DataVector(const DataVector& other) {  DataVector::~DataVector()
59    m_data=other.m_data;  {
60      // dispose of data array
61      arrayManager.delete_array(m_array_data);
62    
63      // clear data members
64      m_size = -1;
65      m_dim = -1;
66      m_N = -1;
67      m_array_data = 0;
68    }
69    
70    void
71    DataVector::resize(const DataVector::size_type newSize,
72                       const DataVector::value_type newValue,
73                       const DataVector::size_type newBlockSize)
74    {
75      assert(m_size >= 0);
76    
77      if ( (newSize % newBlockSize) != 0) {
78        throw DataException("DataVector: invalid blockSize specified");
79      }
80    
81      arrayManager.delete_array(m_array_data);
82    
83      m_size = newSize;
84      m_dim = newBlockSize;
85      m_N = newSize / newBlockSize;
86      m_array_data = arrayManager.new_array(m_dim,m_N);
87    
88      for (int i=0; i<m_size; i++) {
89        m_array_data[i]=newValue;
90      }
91    }
92    
93    DataVector&
94    DataVector::operator=(const DataVector& other)
95    {
96      assert(m_size >= 0);
97    
98      arrayManager.delete_array(m_array_data);
99    
100      m_size = other.m_size;
101      m_dim = other.m_dim;
102      m_N = other.m_N;
103    
104      m_array_data = arrayManager.new_array(m_dim,m_N);
105      for (int i=0; i<m_size; i++) {
106        m_array_data[i] = other.m_array_data[i];
107      }
108    
109      return *this;
110  }  }
111    
112  DataVector::DataVector(ValueType::size_type size, ValueType::value_type val) {  bool
113    resize(size, val);  DataVector::operator==(const DataVector& other) const
114    {
115      assert(m_size >= 0);
116    
117      if (m_size!=other.m_size) {
118        return false;
119      }
120      if (m_dim!=other.m_dim) {
121        return false;
122      }
123      if (m_N!=other.m_N) {
124        return false;
125      }
126      for (int i=0; i<m_size; i++) {
127        if (m_array_data[i] != other.m_array_data[i]) {
128          return false;
129        }
130      }
131      return true;
132  }  }
133    
134  DataVector::~DataVector() {  bool
135    DataVector::operator!=(const DataVector& other) const
136    {
137      return !(*this==other);
138  }  }
139    
140  } // end of namespace  } // end of namespace

Legend:
Removed from v.117  
changed lines
  Added in v.121

  ViewVC Help
Powered by ViewVC 1.1.26