license changed to LGPL for libnxcl, libnxsnmp, libnxlp, libnxsl, and libnxmap
[public/netxms.git] / include / nxsl.h
1 /*
2 ** NetXMS - Network Management System
3 ** Copyright (C) 2003-2010 Victor Kirhenshtein
4 **
5 ** This program is free software; you can redistribute it and/or modify
6 ** it under the terms of the GNU Lesser General Public License as published by
7 ** the Free Software Foundation; either version 3 of the License, or
8 ** (at your option) any later version.
9 **
10 ** This program is distributed in the hope that it will be useful,
11 ** but WITHOUT ANY WARRANTY; without even the implied warranty of
12 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 ** GNU General Public License for more details.
14 **
15 ** You should have received a copy of the GNU Lesser General Public License
16 ** along with this program; if not, write to the Free Software
17 ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18 **
19 ** File: nxsl.h
20 **
21 **/
22
23 #ifndef _nxsl_h_
24 #define _nxsl_h_
25
26 #ifdef _WIN32
27 #ifdef LIBNXSL_EXPORTS
28 #define LIBNXSL_EXPORTABLE __declspec(dllexport)
29 #else
30 #define LIBNXSL_EXPORTABLE __declspec(dllimport)
31 #endif
32 #else /* _WIN32 */
33 #define LIBNXSL_EXPORTABLE
34 #endif
35
36
37 //
38 // Various defines
39 //
40
41 #define MAX_FUNCTION_NAME 64
42
43
44 //
45 // Script execution errors
46 //
47
48 #define NXSL_ERR_DATA_STACK_UNDERFLOW 1
49 #define NXSL_ERR_CONTROL_STACK_UNDERFLOW 2
50 #define NXSL_ERR_BAD_CONDITION 3
51 #define NXSL_ERR_NOT_NUMBER 4
52 #define NXSL_ERR_NULL_VALUE 5
53 #define NXSL_ERR_INTERNAL 6
54 #define NXSL_ERR_NO_MAIN 7
55 #define NXSL_ERR_CONTROL_STACK_OVERFLOW 8
56 #define NXSL_ERR_DIVIDE_BY_ZERO 9
57 #define NXSL_ERR_REAL_VALUE 10
58 #define NXSL_ERR_NO_FUNCTION 11
59 #define NXSL_ERR_INVALID_ARGUMENT_COUNT 12
60 #define NXSL_ERR_TYPE_CAST 13
61 #define NXSL_ERR_NOT_OBJECT 14
62 #define NXSL_ERR_NO_SUCH_ATTRIBUTE 15
63 #define NXSL_ERR_MODULE_NOT_FOUND 16
64 #define NXSL_ERR_NOT_STRING 17
65 #define NXSL_ERR_REGEXP_ERROR 18
66 #define NXSL_ERR_NOT_INTEGER 19
67 #define NXSL_ERR_INVALID_OBJECT_OPERATION 20
68 #define NXSL_ERR_BAD_CLASS 21
69 #define NXSL_ERR_VARIABLE_ALREADY_EXIST 22
70 #define NXSL_ERR_INDEX_NOT_INTEGER 23
71 #define NXSL_ERR_NOT_ARRAY 24
72 #define NXSL_ERR_ASSIGNMENT_TO_CONSTANT 25
73
74
75 //
76 // Special return codes for external functions
77 //
78
79 #define NXSL_STOP_SCRIPT_EXECUTION -1
80
81
82 //
83 // Exportable classes
84 //
85
86 #ifdef __cplusplus
87 #include <nxsl_classes.h>
88 #else
89 struct NXSL_Program;
90 #endif
91
92
93 //
94 // Functions
95 //
96
97 #ifdef __cplusplus
98 extern "C" {
99 #endif
100
101 NXSL_Program LIBNXSL_EXPORTABLE *NXSLCompile(const TCHAR *pszSource,
102 TCHAR *pszError, int nBufSize);
103 TCHAR LIBNXSL_EXPORTABLE *NXSLLoadFile(const TCHAR *pszFileName, DWORD *pdwFileSize);
104
105 #ifdef __cplusplus
106 }
107 #endif
108
109 #endif