/[escript]/trunk/escript/src/DataC.cpp
ViewVC logotype

Annotation of /trunk/escript/src/DataC.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2770 - (hide annotations)
Wed Nov 25 01:24:51 2009 UTC (9 years, 10 months ago) by jfenwick
File size: 5001 byte(s)
Removed buffer implementation of Lazy.
Removed supporting Alloc/Free Sample buffer calls.
1 jgs 82
2 ksteube 1312 /*******************************************************
3 ksteube 1811 *
4 jfenwick 2548 * Copyright (c) 2003-2009 by University of Queensland
5 ksteube 1811 * Earth Systems Science Computational Center (ESSCC)
6     * http://www.uq.edu.au/esscc
7     *
8     * Primary Business: Queensland, Australia
9     * Licensed under the Open Software License version 3.0
10     * http://www.opensource.org/licenses/osl-3.0.php
11     *
12     *******************************************************/
13 ksteube 1312
14 ksteube 1811
15 jgs 82 extern "C" {
16 jgs 474 #include "DataC.h"
17 jgs 82 }
18    
19 jgs 474 #include "Data.h"
20 jfenwick 1796 #include "DataTypes.h"
21 jgs 82
22     int getFunctionSpaceType(struct escriptDataC* data)
23     {
24     escript::Data* temp=(escript::Data*)(data->m_dataPtr);
25     return temp->getFunctionSpace().getTypeCode();
26     }
27    
28    
29     int isDataPointShapeEqual(struct escriptDataC* data, int rank, int* dimensions)
30     {
31     if (data == (struct escriptDataC*)0) {
32     return true;
33     } else {
34     escript::Data* temp=(escript::Data*)(data->m_dataPtr);
35     if (temp->isEmpty()) {
36     return true;
37     } else {
38 jfenwick 1796 escript::DataTypes::ShapeType givenShape(&dimensions[0],&dimensions[rank]);
39     return (temp->getDataPointShape()==givenShape);
40 jgs 82 }
41     }
42     }
43    
44 ksteube 1312 int getNumDataPointsPerSample(struct escriptDataC* data)
45     {
46     if (data == (struct escriptDataC*)0) {
47     return 0;
48     } else {
49     escript::Data* temp=(escript::Data*)(data->m_dataPtr);
50     if (temp->isEmpty()) {
51     return 0;
52     } else {
53     return (temp->getNumDataPointsPerSample());
54     }
55     }
56     }
57    
58 jgs 82 int numSamplesEqual(struct escriptDataC* data, int numDataPointsPerSample,
59     int numSamples)
60     {
61     if (data == (struct escriptDataC*)0) {
62     return true;
63     } else {
64     escript::Data* temp=(escript::Data*)(data->m_dataPtr);
65     if (temp->isEmpty()) {
66     return true;
67     } else {
68     int result=(numDataPointsPerSample==temp->getNumDataPointsPerSample());
69     result=result && (numSamples==temp->getNumSamples());
70     return result;
71     }
72     }
73     }
74    
75     int getDataPointRank(struct escriptDataC* data)
76     {
77 jgs 102 if (data == (struct escriptDataC*)0) {
78     return 0;
79     } else {
80     escript::Data* temp=(escript::Data*)(data->m_dataPtr);
81     return temp->getDataPointRank();
82     }
83 jgs 82 }
84    
85 jgs 113 int getDataPointShape(struct escriptDataC* data,int i)
86 jgs 82 {
87 jgs 113 if (data == (struct escriptDataC*)0) {
88     return 0;
89     } else {
90     escript::Data* temp=(escript::Data*)(data->m_dataPtr);
91     int rank = temp->getDataPointRank();
92     if (i<0 || i>=rank) {
93     return 1;
94     } else {
95 jfenwick 1796 const escript::DataTypes::ShapeType view=temp->getDataPointShape();
96 jgs 113 return view[i];
97     }
98     }
99 jgs 82 }
100    
101     int getDataPointSize(struct escriptDataC* data)
102     {
103     escript::Data* temp=(escript::Data*)(data->m_dataPtr);
104     return temp->getDataPointSize();
105     }
106    
107     int getLength(struct escriptDataC* data)
108     {
109     escript::Data* temp=(escript::Data*)(data->m_dataPtr);
110     return temp->getLength();
111     }
112    
113     int isExpanded(struct escriptDataC* data)
114     {
115     if (data == (struct escriptDataC*)0) {
116     return false;
117     } else {
118     escript::Data* temp=(escript::Data*)(data->m_dataPtr);
119     if (temp->isEmpty()) {
120     return false;
121     } else {
122 jfenwick 2271 return temp->actsExpanded();
123 jgs 82 }
124     }
125     }
126    
127     int isEmpty(escriptDataC* data)
128     {
129     if (data == (struct escriptDataC*)0) {
130     return true;
131     } else {
132     escript::Data* temp=(escript::Data*)(data->m_dataPtr);
133     return temp->isEmpty();
134     }
135     }
136    
137 jfenwick 2271 // The unusual (for me) ordering of __const here is because I'm not sure
138     // whether gcc would try to interpret __const as a function attribute rather than
139     // a modifier on the return value. Putting it here should remove any ambiguity
140     // I have used const rather than __const in the cpp because only c++ will be reading the cpp.
141 jfenwick 2770 double const* getSampleDataRO(struct escriptDataC* data, int sampleNo)
142 jfenwick 2271 {
143     if (data == (struct escriptDataC*)0) {
144     return NULL;
145     } else {
146     escript::Data* temp=(escript::Data*)(data->m_dataPtr);
147     if (temp->isEmpty()) {
148     return NULL;
149     } else {
150 jfenwick 2770 return temp->getSampleDataRO(sampleNo);
151 jfenwick 2271 }
152     }
153     }
154 jgs 82
155 jfenwick 2271 double* getSampleDataRW(struct escriptDataC* data, int sampleNo)
156 jgs 82 {
157     if (data == (struct escriptDataC*)0) {
158     return NULL;
159     } else {
160     escript::Data* temp=(escript::Data*)(data->m_dataPtr);
161     if (temp->isEmpty()) {
162     return NULL;
163     } else {
164 jfenwick 2271 return temp->getSampleDataRW(sampleNo);
165 jgs 82 }
166     }
167     }
168 ksteube 1312
169 jfenwick 2770 const double* getSampleDataROFast(struct escriptDataC* data, int sampleNo)
170 ksteube 1312 {
171     escript::Data* temp=(escript::Data*)(data->m_dataPtr);
172 jfenwick 2770 return temp->getSampleDataRO(sampleNo);
173 ksteube 1312 }
174 jfenwick 2271
175     double* getSampleDataRWFast(struct escriptDataC* data, int sampleNo)
176     {
177     escript::Data* temp=(escript::Data*)(data->m_dataPtr);
178     return temp->getSampleDataRW(sampleNo);
179     }
180    
181 jfenwick 2384 double* getDataRW(escriptDataC* data)
182     {
183     escript::Data* temp=(escript::Data*)(data->m_dataPtr);
184     if (temp->getNumSamples()>0)
185     {
186     requireWrite(data);
187     return getSampleDataRWFast(data,0);
188     }
189     return 0;
190     }
191    
192    
193 jfenwick 2271 void requireWrite(escriptDataC* data)
194     {
195     if (data == (struct escriptDataC*)0) {
196     return;
197     } else {
198     ((escript::Data*)(data->m_dataPtr))->requireWrite();
199     }
200     }

Properties

Name Value
svn:eol-style native
svn:keywords Author Date Id Revision

  ViewVC Help
Powered by ViewVC 1.1.26