1 |
/* $Id$ */ |
2 |
/* |
3 |
************************************************************ |
4 |
* Copyright 2006 by ACcESS MNRF * |
5 |
* * |
6 |
* http://www.access.edu.au * |
7 |
* Primary Business: Queensland, Australia * |
8 |
* Licensed under the Open Software License version 3.0 * |
9 |
* http://www.opensource.org/licenses/osl-3.0.php * |
10 |
* * |
11 |
************************************************************ |
12 |
*/ |
13 |
|
14 |
#if !defined escript_DataC_20040611_H |
15 |
#define escript_DataC_20040611_H |
16 |
#include "system_dep.h" |
17 |
|
18 |
#define ESCRIPT_MAX_DATA_RANK 4 |
19 |
/** |
20 |
\brief |
21 |
Provide a wrapper around a Data object so Data may be accessed from C. |
22 |
|
23 |
Description: |
24 |
Provide a wrapper around a Data object so Data may be accessed from C. |
25 |
|
26 |
*/ |
27 |
struct escriptDataC { |
28 |
void* m_dataPtr; |
29 |
}; |
30 |
|
31 |
typedef struct escriptDataC escriptDataC; |
32 |
|
33 |
/** |
34 |
\brief |
35 |
Return the function space type code. |
36 |
\param data Input - C wrapper for Data. |
37 |
*/ |
38 |
ESCRIPT_DLL_API int getFunctionSpaceType(escriptDataC* data); |
39 |
|
40 |
/** |
41 |
\brief |
42 |
sets the int variable _fs_ the function space type of _data_ if the data are not empty. |
43 |
\param _fs_ Input/Output - variable to be updated. |
44 |
\param _data_ Input - C wrapper for Data. |
45 |
*/ |
46 |
#define updateFunctionSpaceType(_fs_,_data_) _fs_=(isEmpty(_data_) ? _fs_ : getFunctionSpaceType(_data_)) |
47 |
|
48 |
/** |
49 |
\brief |
50 |
is true if the function space type of _data_ is equal to _fs_ or is empty |
51 |
\param _fs_ Input - function space type to checked against |
52 |
\param _data_ Input - C wrapper for Data. |
53 |
*/ |
54 |
#define functionSpaceTypeEqual(_fs_,_data_) ( (isEmpty(_data_) || _fs_==getFunctionSpaceType(_data_)) ) ? 1 : 0 |
55 |
|
56 |
/** |
57 |
\brief |
58 |
Returns the true if the data are empty or data is NULL. |
59 |
\param data Input - C wrapper for Data. |
60 |
*/ |
61 |
ESCRIPT_DLL_API int isEmpty(escriptDataC* data); |
62 |
|
63 |
/** |
64 |
\brief |
65 |
Return true if the input shape matches the data point shape for data |
66 |
\param data Input - C wrapper for Data. |
67 |
\param rank Input - number of dimensions. |
68 |
\param dimensions Input - |
69 |
*/ |
70 |
ESCRIPT_DLL_API int isDataPointShapeEqual(escriptDataC* data, int rank, int* dimensions); |
71 |
/** |
72 |
\brief |
73 |
Return true if the number of data points per sample and the number |
74 |
of samples equal the input values. In the case that data is empty or NULL, |
75 |
true is returned. |
76 |
\param data Input - C wrapper for Data. |
77 |
\param numDataPointsPerSample Input - number of data points per sample |
78 |
\param numSamples Input - number of samples |
79 |
*/ |
80 |
ESCRIPT_DLL_API int numSamplesEqual(escriptDataC* data, int numDataPointsPerSample, |
81 |
int numSamples); |
82 |
|
83 |
/** |
84 |
\brief |
85 |
Returns the rank of the point data for the data. |
86 |
\param data Input - C wrapper for Data. |
87 |
*/ |
88 |
ESCRIPT_DLL_API int getDataPointRank(escriptDataC* data); |
89 |
|
90 |
/** |
91 |
\brief |
92 |
Returns the value of the i-th component of the shape of the point data. |
93 |
\param data Input - C wrapper for Data. |
94 |
\param i Input - index of shape component. |
95 |
*/ |
96 |
ESCRIPT_DLL_API int getDataPointShape(escriptDataC* data,int i); |
97 |
|
98 |
/** |
99 |
\brief |
100 |
Return the number of doubles needed for each data point. |
101 |
\param data Input - C wrapper for Data. |
102 |
*/ |
103 |
ESCRIPT_DLL_API int getDataPointSize(escriptDataC* data); |
104 |
/** |
105 |
\brief |
106 |
Return the number of doubles stored for the Data object. |
107 |
Argument data may be NULL, in which case 0 is returnd. |
108 |
\param data Input - C wrapper for Data. |
109 |
*/ |
110 |
ESCRIPT_DLL_API int getLength(escriptDataC* data); |
111 |
/** |
112 |
\brief |
113 |
Return true if data is expanded. |
114 |
Argument data may be NULL, in which case false is returnd. |
115 |
\param data Input - C wrapper for Data. |
116 |
*/ |
117 |
ESCRIPT_DLL_API int isExpanded(escriptDataC* data); |
118 |
/** |
119 |
\brief |
120 |
Return a pointer to the data for the given sample number. |
121 |
if data is empty NULL is returned. |
122 |
data may be NULL, in which case NULL is returnd. |
123 |
\param data Input - C wrapper for Data. |
124 |
\param sampleNo Input - The sample number. |
125 |
*/ |
126 |
ESCRIPT_DLL_API double* getSampleData(escriptDataC* data, int sampleNo); |
127 |
#endif |