f77d58f6bf721a66ddde085a75d9bd8817d6f17e
[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  * Copyright (C) 2011 - DIGITEO - Antoine ELIAS
5  *
6  * This file must be used under the terms of the CeCILL.
7  * This source file is licensed as described in the file COPYING, which
8  * you should have received as part of this distribution.  The terms
9  * are also available at
10  * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
11  *
12  */
13
14 /*-----------------------------------------------------------------------------------*/
15 #ifndef __DYNAMIC_LINK_H__
16 #define __DYNAMIC_LINK_H__
17
18 #include <wchar.h> /* wchar_t */
19 #include "dynlib_dynamic_link.h"
20 #include "BOOL.h"
21 #include "machine.h" /* C2F */
22
23 #define ENTRYMAX 500
24
25 /**
26 * OBSOLETE
27 * if *ilib == -1
28 *    checks if routinename is a loaded
29 *    entry point
30 *    the result is -1 if false
31 *               or the number in the function table
32 * @param[in] routinename
33 * @param[in/out] ilib
34 */
35 DYNAMIC_LINK_IMPEXP void C2F(iislink)(char *routinename, int *ilib);
36
37
38 /**
39 * returns the ii functions
40 * @param ii
41 * @param ptr on functions
42 */
43 DYNAMIC_LINK_IMPEXP void GetDynFunc(int ii, void (**realop)());
44
45 /**
46 * Search a function in the table
47 * Search from end to top
48 * @param
49 * @param
50 */
51 DYNAMIC_LINK_IMPEXP int SearchInDynLinks(char *op, void (**realop) ());
52
53 /**
54 * unlink all linked files
55 */
56 DYNAMIC_LINK_IMPEXP void unlinkallsharedlib(void);
57
58 /**
59 * Unlink a shared lib
60 * @param i (number of shared lib)
61 */
62 DYNAMIC_LINK_IMPEXP void unlinksharedlib(int *i);
63
64
65 /**
66 * load a shared archive and call LoadDynLibrary
67 * the shared lib handler is stored in a Table
68 * return value is == -1 if the LoadDynLibrary failed
69 * @param loaded_file
70 */
71 DYNAMIC_LINK_IMPEXP int Sci_dlopen(wchar_t* _pwstDynLibPath);
72
73 /**
74 * unload a shared library by calling FreeDynLibrary
75 * return value is == 0 if the FreeDynLibrary failed
76 * @param loaded_file
77 */
78 DYNAMIC_LINK_IMPEXP int Sci_dlclose(unsigned long _hLib);
79
80 /**
81 * This routine load the entryname ename
82 * from shared lib ishared
83 * @return TRUE or FALSE
84 */
85 DYNAMIC_LINK_IMPEXP int Sci_dlsym(wchar_t* _pwstEntryPointName, int _iLibID, BOOL _bFortran);
86
87 /**
88 * Delete entry points associated with shared lib ishared
89 * then delete the shared lib
90 @param ishared
91 */
92 DYNAMIC_LINK_IMPEXP void Sci_Delsym(int ishared);
93
94 /**
95 * @param sizearray returns size of string array returned
96 * @return string array with functions names loaded
97 */
98 DYNAMIC_LINK_IMPEXP char **getNamesOfFunctionsInSharedLibraries(int *sizearray);
99
100 /**
101 * call link for scilab
102 * @param _iLibID                : Id of an existing shared lib otherwise -1
103 * @param _pwstLibraryName       : Dynamic library name
104 * @param _pwstEntryPointName    : List of functions name in dynamic library
105 * @param _iEntryPointSize       : Size of _pwstEntryPointName
106 * @param _bFortran              : Is a link on a fortran function
107 * @param _piErr                 : Error Id
108 * @return id                    : Dynamic Library ID
109 */
110 DYNAMIC_LINK_IMPEXP int scilabLink(int _iLibID, wchar_t* _pwstLibraryName, wchar_t** _pwstEntryPointName, int _iEntryPointSize, BOOL _bFortran ,int *_piErr);
111
112 #endif /* __DYNAMIC_LINK_H__ */
113 /*-----------------------------------------------------------------------------------*/