License Header change: Removed the LICENSE_END before beta
[scilab.git] / scilab / modules / api_scilab / includes / api_stack_boolean_sparse.h
1 /*
2  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  * Copyright (C) 2009 - DIGITEO - Antoine ELIAS
4  *
5  * Copyright (C) 2012 - 2016 - Scilab Enterprises
6  *
7  * This file is hereby licensed under the terms of the GNU GPL v2.0,
8  * pursuant to article 5.3.4 of the CeCILL v.2.1.
9  * This file was originally licensed under the terms of the CeCILL v2.1,
10  * and continues to be available under such terms.
11  * For more information, see the COPYING file which you should have received
12  * along with this program.
13  */
14
15 #ifndef __STACK_BOOLEAN_SPARSE_API__
16 #define __STACK_BOOLEAN_SPARSE_API__
17
18 #if !defined(__INTERNAL_API_SCILAB__)
19 #error Do not include api_stack_boolean_sparse.h. Include api_scilab.h instead.
20 #endif
21
22 #ifdef __cplusplus
23 extern "C" {
24 #endif
25
26     /*******************************/
27     /*   boolean sparse functions  */
28     /*******************************/
29     /**
30      * Get boolean sparse variable
31      * @param[in] _piAddress variable address
32      * @param[out] _piRows return number of rows
33      * @param[out] _piCols return number of columns
34      * @param[out] _piNbItem return number of items
35      * @param[out] _piNbItemRow return array of number of items for each row
36      * @param[out] _piColPos return array of item column positions ( 1 indexed )
37      * @return if the operation succeeded (0) or not ( !0 )
38      */
39     SciErr getBooleanSparseMatrix(void* _pvCtx, int* _piAddress, int* _piRows, int* _piCols, int* _piNbItem, int** _piNbItemRow, int** _piColPos);
40
41     /**
42      * Allocate boolean sparse variable data
43      * @param[in] _iVar variable number
44      * @param[in] _iRows number of rows
45      * @param[in] _iCols number of columns
46      * @param[in] _iNbItem number of items
47      * @param[out] _piNbItemRow return array of number of items for each row
48      * @param[out] _piColPos return array of item column positions ( 1 indexed )
49      * @return if the operation succeeded (0) or not ( !0 )
50      */
51     SciErr allocBooleanSparseMatrix(void* _pvCtx, int _iVar, int _iRows, int _iCols, int _iNbItem, int** _piNbItemRow, int** _piColPos);
52
53     /**
54      * Create boolean sparse variable
55      * @param[in] _iVar variable number
56      * @param[in] _iRows number of rows
57      * @param[in] _iCols number of columns
58      * @param[in] _iNbItem number of items
59      * @param[in] _piNbItemRow array of number of items for each row
60      * @param[in] _piColPos array of item column positions ( 1 indexed )
61      * @return if the operation succeeded (0) or not ( !0 )
62      */
63     SciErr createBooleanSparseMatrix(void* _pvCtx, int _iVar, int _iRows, int _iCols, int _iNbItem, const int* _piNbItemRow, const int* _piColPos);
64
65     /**
66      * Create named boolean sparse variable
67      * @param[in] _pstName variable name
68      * @param[in] _iRows number of rows
69      * @param[in] _iCols number of columns
70      * @param[in] _iNbItem number of items
71      * @param[in] _piNbItemRow array of number of items for each row
72      * @param[in] _piColPos array of item column positions ( 1 indexed )
73      * @return if the operation succeeded (0) or not ( !0 )
74      */
75     SciErr createNamedBooleanSparseMatrix(void* _pvCtx, const char* _pstName, int _iRows, int _iCols, int _iNbItem, const int* _piNbItemRow, const int* _piColPos);
76
77     /**
78      * Read named boolean sparse variable
79      * @param[in] _pstName variable name
80      * @param[out] _piRows return number of rows
81      * @param[out] _piCols return number of columns
82      * @param[out] _piNbItem return number of items
83      * @param[out] _piNbItemRow return array of number of item for each row
84      * @param[out] _piColPos return array of item column position ( 1 indexed )
85      * @return if the operation succeeded (0) or not ( !0 )
86      */
87     SciErr readNamedBooleanSparseMatrix(void* _pvCtx, const char* _pstName, int* _piRows, int* _piCols, int* _piNbItem, int* _piNbItemRow, int* _piColPos);
88
89     /* shortcut functions */
90
91     /**
92      * Check if the variable type is boolean sparse
93      * @param[in] _piAddress variable address
94      * @return 1 for true and 0 for false
95      */
96     int isBooleanSparseType(void* _pvCtx, int* _piAddress);
97
98     /**
99      * Check if the variable type is boolean sparse
100      * @param[in] _pstName variable name
101      * @return 1 for true and 0 for false
102      */
103     int isNamedBooleanSparseType(void* _pvCtx, const char* _pstName);
104
105     /**
106      * Get boolean sparse variable data
107      * @param[in] _piAddress variable address
108      * @param[out] _piRows return number of rows
109      * @param[out] _piCols return number of columns
110      * @param[out] _piNbItem return number of items
111      * @param[out] _piNbItemRow return array of number of items for each row
112      * @param[out] _piColPos return array of item column positions ( 1 indexed )
113      * @return if the operation succeeded (0) or not ( !0 )
114      */
115     int getAllocatedBooleanSparseMatrix(void* _pvCtx, int* _piAddress, int* _piRows, int* _piCols, int* _piNbItem, int** _piNbItemRow, int** _piColPos);
116
117     /**
118      * Get named boolean sparse variable data
119      * @param[in] _pstName variable name
120      * @param[out] _piRows return number of rows
121      * @param[out] _piCols return number of columns
122      * @param[out] _piNbItem return number of items
123      * @param[out] _piNbItemRow return array of number of items for each row
124      * @param[out] _piColPos return array of item column positions ( 1 indexed )
125      * @return if the operation succeeded (0) or not ( !0 )
126      */
127     int getNamedAllocatedBooleanSparseMatrix(void* _pvCtx, const char* _pstName, int* _piRows, int* _piCols, int* _piNbItem, int** _piNbItemRow, int** _piColPos);
128
129     /**
130      * Free data allocated by shortcut functions
131      * @param[in] _piNbItemRow array of number of items for each row
132      * @param[in] _piColPos array of item column positions ( 1 indexed )
133      */
134     void freeAllocatedBooleanSparse(int* _piNbItemRow, int* _piColPos);
135
136 #ifdef __cplusplus
137 }
138 #endif
139 #endif /* __STACK_BOOLEAN_SPARSE_API__ */