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