better way to do dll (dynamic_link module)
[scilab.git] / scilab / modules / dynamic_link / includes / addinter.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 #ifndef __ADDINTER_H__
14 #define  __ADDINTER_H__
15
16 #include "dynlib_dynamic_link.h"
17
18 /** 
19 * the first dynamic interface is at position 500+1 
20 */
21 #define DynInterfStart 500
22
23 #define NumberMaxFunctionsByGateway 1000
24
25 #define MAXDYNINTERF 50 /* default value compatibility scilab 4.x */
26 /* !!! WARNING !!! */
27 /* On Windows , AddInterfaceToScilab based on LoadLibrary C function */
28 /* you cannot load more than 80 dynamic libraries at the same time. */
29 /* Scilab will return a error (code Windows 1114) in this case.*/
30 /* A dynamic link library (DLL) initialization routine failed. */
31
32
33 /**
34 * Remove interface in scilab
35 * @param[in] id of interface
36 */
37 DYNAMIC_LINK_IMPEXP void RemoveInterf(int id);
38
39 /**
40 * Add a interface in Scilab
41 * @param[in] filenamelib dynamic libraries filename
42 * @param[in] spname Name of interface routine entry point 
43 * @param[in] fcts Name of new Scilab function implemented in the new interface 
44 * @param[in] sizefcts size of fcts array
45 * @return a int id of interface (-1 failed)
46 */
47 DYNAMIC_LINK_IMPEXP int AddInterfaceToScilab(char *filenamelib,char *spname,char **fcts,int sizefcts);
48
49 /**
50 * TO DO: comments 
51 */
52 DYNAMIC_LINK_IMPEXP void C2F(userlk)(int *k);
53
54 #endif /*  __ADDINTER_H__ */