70ded0c66383ed406f38d0eb649128f4591a8815
[scilab.git] / scilab / modules / graphics / src / c / getHandleProperty / getPropertyAssignedValue.h
1 /*
2  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  * Copyright (C) 2006 - INRIA - Jean-Baptiste Silvy
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-en.txt
10  *
11  */
12
13 /*------------------------------------------------------------------------*/
14 /* file: getPropertyAssignedValue.h                                       */
15 /* desc : a set of functions used to get the values which will be         */
16 /*        assigned to handles properties from the stack                   */
17 /*------------------------------------------------------------------------*/
18
19 #ifndef _GET_PROPERTY_ASSIGNEMENT_VALUE_H_
20 #define _GET_PROPERTY_ASSIGNEMENT_VALUE_H_
21
22 #include "machine.h"
23
24 /*------------------------------------------------------------------------------*/
25 /* Basic type parameters */
26 /**
27  * return if a stack parameter is a Handle
28  * @param type type of the parameter
29  */
30 BOOL isParameterHandle( int type ) ;
31
32 /**
33  * return if a stack parameter is a Handle
34  * @param type type of the parameter
35  */
36 BOOL isParameterDoubleMatrix( int type ) ;
37
38 /**
39  * return if a stack parameter is a tlist
40  * @param type type of the parameter
41  **/
42 BOOL isParameterTlist( int type ) ;
43
44 /**
45  * return if a stack parameter is a string matrix
46  * @param type type of the parameter
47  */
48 BOOL isParameterStringMatrix( int type ) ;
49
50 /**
51  * retrieve a single double from the stack
52  */
53 double getDoubleFromStack( int stackPointer ) ;
54
55 /**
56  * retrieve a double matrix from the scilab stack
57  */
58 double * getDoubleMatrixFromStack( int stackPointer ) ;
59
60 /**
61  * copy a double vector from the scilab stack
62  */
63 void copyDoubleVectorFromStack( int stackPointer, double dest[], int nbElement ) ;
64
65 /**
66  * copy a double vector from the scilab stack to an int array
67  * with int cast for each parameter.
68  */
69 void copyDoubleVectorToIntFromStack( int stackPointer, int dest[], int nbElement ) ;
70
71 /**
72  * create a copy of a vector (or Matrix) of double stored in the stack
73  */
74 double * createCopyDoubleVectorFromStack( int stackPointer, int nbElement ) ;
75
76 /**
77  * retrieve a string on from the scilab stack
78  */
79 char * getStringFromStack( int stackPointer ) ;
80
81 /**
82  * retrieve a string matrix on from the scilab stack
83  */
84 char ** getStringMatrixFromStack( int stackPointer ) ;
85
86 /**
87  * create a copy of a stringMatrix which is in the stack
88  */
89 char ** createCopyStringMatrixFromStack( int stackPointer, int nbElement ) ;
90
91 /**
92  * retrieve a string on from the Scilab stack
93  */
94 unsigned long getHandleFromStack( int stackPointer ) ;
95
96 /**
97  * compare the string stored in the stack with str
98  * @return TRUE is the string are equal (using strcmp)
99  *         FALSE otherwise
100  */
101 BOOL isStringParamEqual( int stackPointer, const char * str ) ;
102 /*------------------------------------------------------------------------------*/
103 /* Tlist */
104 typedef struct 
105 {
106   int nbElement ; /**< number of elements in the tlist */
107   int curElement ; /**< currently read element */
108   int paramNumber ; /**< rank of the tlist within the Rhs parameters */
109   int stackPointer ; /**< pointer of the tlist in the stack */
110 } AssignedList ;
111
112 /**
113  * get the number of element of a tlist stored in the rhs
114  * @param paramNum rank of the list within the Rhs parameters
115  */
116 int getStackListNbElement( int paramNum ) ;
117
118 /**
119  * create a new instance of an object used to retrieve fields of a tlist
120  * stored on the stack
121  * @param paramNum rank of the list within the Rhs parameters
122  * @param nbElement number of element in the list
123  */
124 AssignedList * createAssignedList( int paramNum, int nbElement ) ;
125
126 /**
127  * destroy the object used to glance through a tlist
128  */
129 void destroyAssignedList( AssignedList * list ) ;
130
131 /**
132  * return the number of element of a tlist
133  */
134 int getAssignedListNbElement( AssignedList * list ) ;
135
136 /**
137  * set the current element to the first
138  */
139 void rewindAssignedList( AssignedList * list ) ;
140
141 /**
142  * Return whether the current element of the list is a double matrix or not.
143  */
144 BOOL isListCurrentElementDoubleMatrix( AssignedList * list ) ;
145
146 /**
147 * Return whether the current element of the list is a string matrix or not.
148 */
149 BOOL isListCurrentElementStringMatrix( AssignedList * list ) ;
150
151 /**
152 * Return whether the current element of the list is an empty matrix or not.
153 */
154 BOOL isListCurrentElementEmptyMatrix( AssignedList * list ) ;
155
156 /**
157  * retrieve a field of a tlist
158  * @param[in]  list object used to retrieve elements
159  * @param      rank position of the element in the list ( first, second, ...)
160  *             Note that is it not possible to get the properties names with this function
161  * @param[out] nbRow number of row of the returned matrix
162  * @param[out] nbCol number of column of the returned matrix
163  */
164 double * getDoubleMatrixFromList( AssignedList * list, int rank, int * nbRow, int * nbCol ) ;
165
166 /**
167 * retrieve a field of a tlist
168 * @param[in]  list object used to retrieve elements
169 * @param      rank position of the element in the list ( first, second, ...)
170 *             Note that is it not possible to get the properties names with this function
171 * @param[out] nbRow number of row of the returned matrix
172 * @param[out] nbCol number of column of the returned matrix
173 */
174 char ** getStringMatrixFromList( AssignedList * list, int rank, int * nbRow, int * nbCol ) ;
175
176
177 /**
178  * retrieve the current property of a tlist and move to the next
179  * @param[in/out] list object used to retrieve elements
180  * @param[out]    nbRow number of row of the returned matrix
181  * @param[out]    nbCol number of column of the returned matrix
182  */
183 double * getCurrentDoubleMatrixFromList( AssignedList * list, int * nbRow, int * nbCol ) ;
184
185 /**
186 * retrieve the current property of a tlist and move to the next
187 * @param[in/out] list object used to retrieve elements
188 * @param[out]    nbRow number of row of the returned matrix
189 * @param[out]    nbCol number of column of the returned matrix
190 */
191 char ** getCurrentStringMatrixFromList( AssignedList * list, int * nbRow, int * nbCol ) ;
192
193 /**
194  * create a copy of the current matrix in the tlist
195  * @param[in/out] list object used to retrieve elements
196  * @param[out]    nbRow number of row of the returned matrix or -1 if an error occurred
197  * @param[out]    nbCol number of column of the returned matrix or -1 if an error occurred
198  * @return the created array or NULL if the matrix is empty or an error occured
199  */
200 double * createCopyDoubleMatrixFromList( AssignedList * list, int * nbRow, int * nbCol ) ;
201
202 /**
203 * create a copy of the current matrix in the tlist
204 * @param[in/out] list object used to retrieve elements
205 * @param[out]    nbRow number of row of the returned matrix
206 * @param[out]    nbCol number of column of the returned matrix
207 */
208 char ** createCopyStringMatrixFromList( AssignedList * list, int * nbRow, int * nbCol ) ;
209
210 /*------------------------------------------------------------------------------*/
211 #endif /* _GET_PROPERTY_ASSIGNEMENT_VALUE_H_ */