Add interactive zoom_rect.
[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 handle on from the Scilab stack
93  */
94 unsigned long getHandleFromStack( int stackPointer ) ;
95
96 /**
97  * Retreive an array of handle from the stack
98  */
99 unsigned long * getHandleVectorFromStack(int stackPointer);
100
101
102 /**
103  * compare the string stored in the stack with str
104  * @return TRUE is the string are equal (using strcmp)
105  *         FALSE otherwise
106  */
107 BOOL isStringParamEqual( int stackPointer, const char * str ) ;
108 /*------------------------------------------------------------------------------*/
109 /* Tlist */
110 typedef struct 
111 {
112   int nbElement ; /**< number of elements in the tlist */
113   int curElement ; /**< currently read element */
114   int paramNumber ; /**< rank of the tlist within the Rhs parameters */
115   int stackPointer ; /**< pointer of the tlist in the stack */
116 } AssignedList ;
117
118 /**
119  * get the number of element of a tlist stored in the rhs
120  * @param paramNum rank of the list within the Rhs parameters
121  */
122 int getStackListNbElement( int paramNum ) ;
123
124 /**
125  * create a new instance of an object used to retrieve fields of a tlist
126  * stored on the stack
127  * @param paramNum rank of the list within the Rhs parameters
128  * @param nbElement number of element in the list
129  */
130 AssignedList * createAssignedList( int paramNum, int nbElement ) ;
131
132 /**
133  * destroy the object used to glance through a tlist
134  */
135 void destroyAssignedList( AssignedList * list ) ;
136
137 /**
138  * return the number of element of a tlist
139  */
140 int getAssignedListNbElement( AssignedList * list ) ;
141
142 /**
143  * set the current element to the first
144  */
145 void rewindAssignedList( AssignedList * list ) ;
146
147 /**
148  * Return whether the current element of the list is a double matrix or not.
149  */
150 BOOL isListCurrentElementDoubleMatrix( AssignedList * list ) ;
151
152 /**
153 * Return whether the current element of the list is a string matrix or not.
154 */
155 BOOL isListCurrentElementStringMatrix( AssignedList * list ) ;
156
157 /**
158 * Return whether the current element of the list is an empty matrix or not.
159 */
160 BOOL isListCurrentElementEmptyMatrix( AssignedList * list ) ;
161
162 /**
163  * retrieve a field of a tlist
164  * @param[in]  list object used to retrieve elements
165  * @param      rank position of the element in the list ( first, second, ...)
166  *             Note that is it not possible to get the properties names with this function
167  * @param[out] nbRow number of row of the returned matrix
168  * @param[out] nbCol number of column of the returned matrix
169  */
170 double * getDoubleMatrixFromList( AssignedList * list, int rank, int * nbRow, int * nbCol ) ;
171
172 /**
173 * retrieve a field of a tlist
174 * @param[in]  list object used to retrieve elements
175 * @param      rank position of the element in the list ( first, second, ...)
176 *             Note that is it not possible to get the properties names with this function
177 * @param[out] nbRow number of row of the returned matrix
178 * @param[out] nbCol number of column of the returned matrix
179 */
180 char ** getStringMatrixFromList( AssignedList * list, int rank, int * nbRow, int * nbCol ) ;
181
182
183 /**
184  * retrieve the current property of a tlist and move to the next
185  * @param[in/out] list object used to retrieve elements
186  * @param[out]    nbRow number of row of the returned matrix
187  * @param[out]    nbCol number of column of the returned matrix
188  */
189 double * getCurrentDoubleMatrixFromList( AssignedList * list, int * nbRow, int * nbCol ) ;
190
191 /**
192 * retrieve the current property of a tlist and move to the next
193 * @param[in/out] list object used to retrieve elements
194 * @param[out]    nbRow number of row of the returned matrix
195 * @param[out]    nbCol number of column of the returned matrix
196 */
197 char ** getCurrentStringMatrixFromList( AssignedList * list, int * nbRow, int * nbCol ) ;
198
199 /**
200  * create a copy of the current matrix in the tlist
201  * @param[in/out] list object used to retrieve elements
202  * @param[out]    nbRow number of row of the returned matrix or -1 if an error occurred
203  * @param[out]    nbCol number of column of the returned matrix or -1 if an error occurred
204  * @return the created array or NULL if the matrix is empty or an error occured
205  */
206 double * createCopyDoubleMatrixFromList( AssignedList * list, int * nbRow, int * nbCol ) ;
207
208 /**
209 * create a copy of the current matrix in the tlist
210 * @param[in/out] list object used to retrieve elements
211 * @param[out]    nbRow number of row of the returned matrix
212 * @param[out]    nbCol number of column of the returned matrix
213 */
214 char ** createCopyStringMatrixFromList( AssignedList * list, int * nbRow, int * nbCol ) ;
215
216 /*------------------------------------------------------------------------------*/
217 #endif /* _GET_PROPERTY_ASSIGNEMENT_VALUE_H_ */