Add new define to declare scilab gateway in C / C++.
[scilab.git] / scilab / modules / dynamic_link / includes / dynamic_link.h
1 /*
2  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  * Copyright (C) INRIA - Allan CORNET
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 #ifndef __DYNAMIC_LINK_H__
15 #define __DYNAMIC_LINK_H__
16
17 #include "dynlib_dynamic_link.h"
18 #include "BOOL.h"
19 #include "machine.h" /* C2F */
20
21 #define ENTRYMAX 500
22
23 /**
24 * Initialize tables 
25 */
26 DYNAMIC_LINK_IMPEXP void initializeLink(void);
27
28 /**
29 * check that a routine name is a loaded
30 * if *ilib == -1 
31 *    checks if routinename is a loaded
32 *    entry point 
33 *    the result is -1 if false 
34 *    or the number in the function table 
35
36 * @param[in] routinename
37 * @param[in/out] ilib number in the function table (-1 if FALSE)
38 * @return a BOOL
39 */
40 DYNAMIC_LINK_IMPEXP BOOL c_link(char *routinename,int *ilib);
41
42 /**
43 * OBSOLETE 
44 * if *ilib == -1 
45 *    checks if routinename is a loaded
46 *    entry point 
47 *    the result is -1 if false 
48 *               or the number in the function table 
49 * @param[in] routinename
50 * @param[in/out] ilib
51 */
52 DYNAMIC_LINK_IMPEXP void C2F(iislink)(char *routinename, int *ilib);
53
54
55 /**
56 * returns the ii functions 
57 * @param ii
58 * @param ptr on functions
59 */
60 DYNAMIC_LINK_IMPEXP void GetDynFunc(int ii, void (**realop) ());
61
62 /**
63 * Search a function in the table 
64 * Search from end to top 
65 * @param 
66 * @param 
67 */
68 DYNAMIC_LINK_IMPEXP int SearchInDynLinks(char *op, void (**realop) ());
69
70 /**
71 * Show the linked files 
72 */
73 DYNAMIC_LINK_IMPEXP void ShowDynLinks(void);
74
75 /**
76 * unlink all linked files 
77 */
78 DYNAMIC_LINK_IMPEXP void unlinkallsharedlib(void);
79
80 /**
81 * Unlink a shared lib 
82 * @param i (number of shared lib)
83 */
84 DYNAMIC_LINK_IMPEXP void unlinksharedlib(int *i);
85
86
87 /**
88 * load a shared archive and call LoadDynLibrary
89 * the shared lib handler is stored in a Table 
90 * return value is == -1 if the LoadDynLibrary failed 
91 * @param loaded_file
92 */
93 DYNAMIC_LINK_IMPEXP int Sci_dlopen( char *loaded_file);
94
95 /**
96 * This routine load the entryname ename 
97 * from shared lib ishared 
98 * @return TRUE or FALSE
99 */
100 DYNAMIC_LINK_IMPEXP BOOL Sci_dlsym(char *ename,int ishared,char *strf);
101
102 /**
103 * Delete entry points associated with shared lib ishared
104 * then delete the shared lib 
105 @param ishared
106 */
107 DYNAMIC_LINK_IMPEXP void Sci_Delsym(int ishared);
108
109 /**
110 * @param sizearray returns size of string array returned
111 * @return string array with functions names loaded
112 */
113 DYNAMIC_LINK_IMPEXP char **getNamesOfFunctionsInSharedLibraries(int *sizearray);
114
115 /**
116 * call link for scilab
117 * @param idsharedlibrary
118 * @param filename (dynamic library name)
119 * @param subnamesarray (list of functions name in dynamic library)
120 * @param sizesubnamesarray
121 * @param fflag
122 * @param ierr (last error)
123 * @return id 
124 */
125 DYNAMIC_LINK_IMPEXP int scilabLink(int idsharedlibrary,
126                            char *filename,
127                            char **subnamesarray,int sizesubnamesarray,
128                            BOOL fflag,int *ierr);
129
130 /**
131 * get list of all Id of shared lib
132 * @param size of returned list
133 * @return list of Id
134 */
135 DYNAMIC_LINK_IMPEXP int *getAllIdSharedLib(int *sizeList);
136
137 #endif /* __DYNAMIC_LINK_H__ */
138 /*-----------------------------------------------------------------------------------*/