windows compilation fixed
[scilab.git] / scilab / modules / api_scilab / includes / api_hypermat.h
1 /*
2  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  * Copyright (C) 2013 - Scilab Enterprises - Calixte DENIZET
4  *
5  * This file must be used under the terms of the CeCILL.
6  * This source file is licensed as described in the file COPYING, which
7  * you should have received as part of this distribution.  The terms
8  * are also available at
9  * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
10  */
11
12 #ifndef __HYPERMAT_API__
13 #define __HYPERMAT_API__
14
15 #if !defined(__INTERNAL_API_SCILAB__)
16 #error Do not include api_hypermat.h. Include api_scilab.h instead.
17 #endif
18
19 #ifdef __cplusplus
20 extern "C" {
21 #endif
22
23 #include "api_common.h"
24
25 /**************************************/
26 /*   Hypermatrices matrix functions   */
27 /**************************************/
28
29 /**
30  * Check if the variable type is double
31  * @param[in] _piAddress variable address
32  * @return 1 for true and 0 for false
33  */
34 int isHypermatType(void* _pvCtx, int* _piAddress);
35
36 /**
37  * Check if the variable is complex
38  * @param[in] _piAddress variable address
39  * @return 1 for true and 0 for false
40  */
41 int isHypermatComplex(void* _pvCtx, int* _piAddress);
42
43 /**
44  * Get the base type
45  * @param[in] _piAddress variable address
46  * @param[out] _piType return the base type
47  */
48 SciErr getHypermatType(void *_pvCtx, int *_piAddress, int *_piType);
49
50 /**
51  * Get integer precision ( SCI_xINTx )
52  * @param[in] _piAddress variable address
53  * @param[out] _piPrecison return integer precision ( SCI_xINTx )
54  */
55 SciErr getHypermatOfIntegerPrecision(void *_pvCtx, int *_piAddress, int *_piPrecision);
56
57 /**
58  * Get the hypermatrix dimensions
59  * @param[in] _piAddress variable address
60  * @param[out] _dims return the dimensions
61  * @param[out] _ndims return the number of dimensions
62  */
63 SciErr getHypermatDimensions(void *_pvCtx, int *_piAddress, int **_dims, int *_ndims);
64
65 /**
66  * Get polynomial variable name
67  * @param[in] _piAddress variable address
68  * @param[out] _pstVarName return variable name of polynomials
69  * @param[out] _piVarNameLen return length of _pstVarName
70  * @return if the operation succeeded ( 0 ) or not ( !0 )
71  */
72 SciErr getHypermatPolyVariableName(void* _pvCtx, int* _piAddress, char* _pstVarName, int* _piVarNameLen);
73
74 /**
75  * Get the hypermatrix dimensions and data
76  * @param[in] _piAddress variable address
77  * @param[out] _dims return the dimensions
78  * @param[out] _ndims return the number of dimensions
79  * @param[out] _piNbCoef return number of polynomial coefficients for each element
80  * @param[out] _pdblReal return real coefficients
81  */
82 SciErr getHypermatOfPoly(void* _pvCtx, int* _piAddress, int **_dims, int *_ndims, int* _piNbCoef, double** _pdblReal);
83
84 /**
85  * Get the hypermatrix dimensions and data
86  * @param[in] _piAddress variable address
87  * @param[out] _dims return the dimensions
88  * @param[out] _ndims return the number of dimensions
89  * @param[out] _piNbCoef return number of polynomial coefficients for each element
90  * @param[out] _pdblReal return real coefficients
91  * @param[out] _pdblImg return imaginary coefficients
92  */
93 SciErr getComplexHypermatOfPoly(void* _pvCtx, int* _piAddress, int **_dims, int *_ndims, int* _piNbCoef, double** _pdblReal, double** _pdblImg);
94
95 /**
96  * Get the hypermatrix dimensions and data
97  * @param[in] _piAddress variable address
98  * @param[out] _dims return the dimensions
99  * @param[out] _ndims return the number of dimensions
100  * @param[out] _piLength return strings lengths
101  * @param[out] _pstStrings return the strings data
102  */
103 SciErr getHypermatOfString(void* _pvCtx, int* _piAddress, int **_dims, int *_ndims, int* _piLength, char** _pstStrings);
104
105 /**
106  * Get the hypermatrix dimensions and data
107  * @param[in] _piAddress variable address
108  * @param[out] _dims return the dimensions
109  * @param[out] _ndims return the number of dimensions
110  * @param[out] _piLength return strings lengths
111  * @param[out] _pwstStrings return the strings data
112  */
113 SciErr getHypermatOfWideString(void* _pvCtx, int* _piAddress, int **_dims, int *_ndims, int* _piLength, wchar_t** _pwstStrings);
114
115 /**
116  * Get the hypermatrix dimensions and data
117  * @param[in] _piAddress variable address
118  * @param[out] _dims return the dimensions
119  * @param[out] _ndims return the number of dimensions
120  * @param[out] _pdblReal return the double data
121  */
122 SciErr getHypermatOfDouble(void* _pvCtx, int* _piAddress, int **_dims, int *_ndims, double** _pdblReal);
123
124 /**
125  * Get the hypermatrix dimensions and data
126  * @param[in] _piAddress variable address
127  * @param[out] _dims return the dimensions
128  * @param[out] _ndims return the number of dimensions
129  * @param[out] _pdblReal return the real data
130  * @param[out] _pdblImg return the imaginary data
131  */
132 SciErr getComplexHypermatOfDouble(void* _pvCtx, int* _piAddress, int **_dims, int *_ndims, double** _pdblReal, double** _pdblImg);
133
134 /**
135  * Get the hypermatrix dimensions and data
136  * @param[in] _piAddress variable address
137  * @param[out] _dims return the dimensions
138  * @param[out] _ndims return the number of dimensions
139  * @param[out] _pucData8 return the unsigned char data
140  */
141 SciErr getHypermatOfUnsignedInteger8(void* _pvCtx, int* _piAddress, int **_dims, int *_ndims, unsigned char** _pucData8);
142
143 /**
144  * Get the hypermatrix dimensions and data
145  * @param[in] _piAddress variable address
146  * @param[out] _dims return the dimensions
147  * @param[out] _ndims return the number of dimensions
148  * @param[out] _pcData8 return the char data
149  */
150 SciErr getHypermatOfInteger8(void* _pvCtx, int* _piAddress, int **_dims, int *_ndims, char** _pcData8);
151
152 /**
153  * Get the hypermatrix dimensions and data
154  * @param[in] _piAddress variable address
155  * @param[out] _dims return the dimensions
156  * @param[out] _ndims return the number of dimensions
157  * @param[out] _pusData16 return the unsigned short data
158  */
159 SciErr getHypermatOfUnsignedInteger16(void* _pvCtx, int* _piAddress, int **_dims, int *_ndims, unsigned short** _pusData16);
160
161 /**
162  * Get the hypermatrix dimensions and data
163  * @param[in] _piAddress variable address
164  * @param[out] _dims return the dimensions
165  * @param[out] _ndims return the number of dimensions
166  * @param[out] _psData16 return the short data
167  */
168 SciErr getHypermatOfInteger16(void* _pvCtx, int* _piAddress, int **_dims, int *_ndims, short** _psData16);
169
170 /**
171  * Get the hypermatrix dimensions and data
172  * @param[in] _piAddress variable address
173  * @param[out] _dims return the dimensions
174  * @param[out] _ndims return the number of dimensions
175  * @param[out] _puiData32 return the unsigned int data
176  */
177 SciErr getHypermatOfUnsignedInteger32(void* _pvCtx, int* _piAddress, int **_dims, int *_ndims, unsigned int** _puiData32);
178
179 /**
180  * Get the hypermatrix dimensions and data
181  * @param[in] _piAddress variable address
182  * @param[out] _dims return the dimensions
183  * @param[out] _ndims return the number of dimensions
184  * @param[out] _piData32 return the int data
185  */
186 SciErr getHypermatOfInteger32(void* _pvCtx, int* _piAddress, int **_dims, int *_ndims, int** _piData32);
187
188 /**
189 * Get the hypermatrix dimensions and data
190 * @param[in] _piAddress variable address
191 * @param[out] _dims return the dimensions
192 * @param[out] _ndims return the number of dimensions
193 * @param[out] _pllData64 return the int data
194 */
195 SciErr getHypermatOfInteger64(void* _pvCtx, int* _piAddress, int **_dims, int *_ndims, long long** _pllData64);
196
197 /**
198 * Get the hypermatrix dimensions and data
199 * @param[in] _piAddress variable address
200 * @param[out] _dims return the dimensions
201 * @param[out] _ndims return the number of dimensions
202 * @param[out] _pullData64 return the int data
203 */
204 SciErr getHypermatOfUnsignedInteger64(void* _pvCtx, int* _piAddress, int **_dims, int *_ndims, unsigned long long** _pullData64);
205
206 /**
207  * Get the hypermatrix dimensions and data
208  * @param[in] _piAddress variable address
209  * @param[out] _dims return the dimensions
210  * @param[out] _ndims return the number of dimensions
211  * @param[out] _piBool return the boolean data
212  */
213 SciErr getHypermatOfBoolean(void* _pvCtx, int* _piAddress, int **_dims, int *_ndims, int** _piBool);
214
215 /**
216  * Create a polynomial hypermatrix
217  * @param[in] _iVar variable number
218  * @param[in] _pstVarName polynomial variable name
219  * @param[in] _dims the dimensions
220  * @param[in] _ndims the number of dimensions
221  * @param[in] _piNbCoef number of polynomial coefficients for each element
222  * @param[in] _pdblReal pointer to real coefficients
223  */
224 SciErr createHypermatOfPoly(void* _pvCtx, int _iVar, char* _pstVarName, int *_dims, int _ndims, const int* _piNbCoef, const double* const* _pdblReal);
225
226 /**
227  * Create a complex polynomial hypermatrix
228  * @param[in] _iVar variable number
229  * @param[in] _pstVarName polynomial variable name
230  * @param[in] _dims the dimensions
231  * @param[in] _ndims the number of dimensions
232  * @param[in] _piNbCoef number of polynomial coefficients for each element
233  * @param[in] _pdblReal pointer to real coefficients
234  * @param[in] _pdblImg pointer to imaginary coefficients
235  */
236 SciErr createComplexHypermatOfPoly(void* _pvCtx, int _iVar, char* _pstVarName, int *_dims, int _ndims, const int* _piNbCoef, const double* const* _pdblReal, const double* const* _pdblImg);
237
238 /**
239  * Create a double hypermatrix
240  * @param[in] _iVar variable number
241  * @param[in] _dims the dimensions
242  * @param[in] _ndims the number of dimensions
243  * @param[in] _pdblReal pointer to real data
244  */
245 SciErr createHypermatOfDouble(void* _pvCtx, int _iVar, int *_dims, int _ndims, const double* _pdblReal);
246 SciErr allocHypermatOfDouble(void *_pvCtx, int _iVar, int * _dims, int _ndims, double** _pdblReal);
247
248 /**
249  * Create a complex hypermatrix
250  * @param[in] _iVar variable number
251  * @param[in] _dims the dimensions
252  * @param[in] _ndims the number of dimensions
253  * @param[in] _pdblReal pointer to real data
254  */
255 SciErr createComplexHypermatOfDouble(void* _pvCtx, int _iVar, int *_dims, int _ndims, const double* _pdblReal, const double* _pdblImg);
256
257 /**
258  * Create a boolean hypermatrix
259  * @param[in] _iVar variable number
260  * @param[in] _dims the dimensions
261  * @param[in] _ndims the number of dimensions
262  * @param[in] _piBool pointer to boolean data
263  */
264 SciErr createHypermatOfBoolean(void* _pvCtx, int _iVar, int *_dims, int _ndims, const int* _piBool);
265
266 /**
267  * Create a string hypermatrix
268  * @param[in] _iVar variable number
269  * @param[in] _dims the dimensions
270  * @param[in] _ndims the number of dimensions
271  * @param[in] _pstStrings pointer to string data
272  */
273 SciErr createHypermatOfString(void* _pvCtx, int _iVar, int *_dims, int _ndims, const char* const* _pstStrings);
274
275 /**
276  * Create a int8 hypermatrix
277  * @param[in] _iVar variable number
278  * @param[in] _dims the dimensions
279  * @param[in] _ndims the number of dimensions
280  * @param[in] _pcData8 pointer to char data
281  */
282 SciErr createHypermatOfInteger8(void* _pvCtx, int _iVar, int *_dims, int _ndims, const char* _pcData8);
283
284 /**
285  * Create a uint8 hypermatrix
286  * @param[in] _iVar variable number
287  * @param[in] _dims the dimensions
288  * @param[in] _ndims the number of dimensions
289  * @param[in] _pucData8 pointer to unsigned char data
290  */
291 SciErr createHypermatOfUnsignedInteger8(void* _pvCtx, int _iVar, int *_dims, int _ndims, const unsigned char* _pucData8);
292
293 /**
294  * Create a int16 hypermatrix
295  * @param[in] _iVar variable number
296  * @param[in] _dims the dimensions
297  * @param[in] _ndims the number of dimensions
298  * @param[in] _psData16 pointer to short data
299  */
300 SciErr createHypermatOfInteger16(void* _pvCtx, int _iVar, int *_dims, int _ndims, const short* _psData16);
301
302 /**
303  * Create a uint16 hypermatrix
304  * @param[in] _iVar variable number
305  * @param[in] _dims the dimensions
306  * @param[in] _ndims the number of dimensions
307  * @param[in] _pusData16 pointer to unsigned short data
308  */
309 SciErr createHypermatOfUnsignedInteger16(void* _pvCtx, int _iVar, int *_dims, int _ndims, const unsigned short* _pusData16);
310
311 /**
312  * Create a int32 hypermatrix
313  * @param[in] _iVar variable number
314  * @param[in] _dims the dimensions
315  * @param[in] _ndims the number of dimensions
316  * @param[in] _piData32 pointer to int data
317  */
318 SciErr createHypermatOfInteger32(void* _pvCtx, int _iVar, int *_dims, int _ndims, const int* _piData32);
319
320 /**
321  * Create a uint32 hypermatrix
322  * @param[in] _iVar variable number
323  * @param[in] _dims the dimensions
324  * @param[in] _ndims the number of dimensions
325  * @param[in] _puiData32 pointer to unsigned int data
326  */
327 SciErr createHypermatOfUnsignedInteger32(void* _pvCtx, int _iVar, int *_dims, int _ndims, const unsigned int* _puiData32);
328
329 /**
330 * Create a int64 hypermatrix
331 * @param[in] _iVar variable number
332 * @param[in] _dims the dimensions
333 * @param[in] _ndims the number of dimensions
334 * @param[in] _pllData64 pointer to unsigned int data
335 */
336 SciErr createHypermatOfInteger64(void *_pvCtx, int _iVar, int * _dims, int _ndims, const long long* _pllData64);
337
338 /**
339 * Create a uint64 hypermatrix
340 * @param[in] _iVar variable number
341 * @param[in] _dims the dimensions
342 * @param[in] _ndims the number of dimensions
343 * @param[in] _pullData64 pointer to unsigned int data
344 */
345 SciErr createHypermatOfUnsignedInteger64(void *_pvCtx, int _iVar, int * _dims, int _ndims, const unsigned long long* _pullData64);
346
347 #ifdef __cplusplus
348 }
349 #endif
350 #endif /* __HYPERMAT_API__ */