summaryrefslogtreecommitdiff
path: root/source4/lib/ejs/ejs.h
blob: 79216d4712bbd9bcf995bac54a41d08552561dcf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
/*
 *	@file 	ejs.h
 *	@brief 	Primary Embedded Javascript (ECMAScript) header.
 *	@overview This Embedded Javascript (EJS) header defines the 
 *		public API. This API should only be used by those directly 
 *		using EJS without using Embedded Server Pages (ESP). ESP 
 *		wraps all relevant APIs to expose a single consistent API.
 *		\n\n
 *		This API requires the mpr/var.h facilities to create and 
 *		manage objects and properties. 
 */
/********************************* Copyright **********************************/
/*
 *	@copy	default.g
 *	
 *	Copyright (c) Mbedthis Software LLC, 2003-2005. All Rights Reserved.
 *	Portions Copyright (c) GoAhead Software, 1995-2000. All Rights Reserved.
 *	
 *	This software is distributed under commercial and open source licenses.
 *	You may use the GPL open source license described below or you may acquire 
 *	a commercial license from Mbedthis Software. You agree to be fully bound 
 *	by the terms of either license. Consult the LICENSE.TXT distributed with 
 *	this software for full details.
 *	
 *	This software is open source; you can redistribute it and/or modify it 
 *	under the terms of the GNU General Public License as published by the 
 *	Free Software Foundation; either version 2 of the License, or (at your 
 *	option) any later version. See the GNU General Public License for more 
 *	details at: http://www.mbedthis.com/downloads/gplLicense.html
 *	
 *	This program is distributed WITHOUT ANY WARRANTY; without even the 
 *	implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
 *	
 *	This GPL license does NOT permit incorporating this software into 
 *	proprietary programs. If you are unable to comply with the GPL, you must
 *	acquire a commercial license to use this software. Commercial licenses 
 *	for this software and support services are available from Mbedthis 
 *	Software at http://www.mbedthis.com 
 *	
 *	@end
 */
/********************************** Includes **********************************/

#ifndef _h_EJS
#define _h_EJS 1

#include	"lib/ejs/miniMpr.h"
#include	"lib/ejs/var.h"

#ifdef __cplusplus
extern "C" {
#endif

/********************************* Prototypes *********************************/

typedef MprVarHandle 	EjsId;
typedef MprVarHandle 	EjsHandle;

/*
 *	Multithreaded lock routines
 */
typedef void (*EjsLock)(void *lockData);
typedef void (*EjsUnlock)(void *lockData);

/********************************* Prototypes *********************************/
/*
 *	Module management
 */
extern int		ejsOpen(EjsLock lock, EjsUnlock unlock, void *lockData);
extern void 	ejsClose(void);
extern EjsId	ejsOpenEngine(EjsHandle primaryHandle, EjsHandle altHandle);
extern void		ejsCloseEngine(EjsId eid);

/*
 *	Evaluation functions
 */
extern int		ejsEvalFile(EjsId eid, char *path, MprVar *result, char **emsg);
extern int		ejsEvalScript(EjsId eid, char *script, MprVar *result, 
					char **emsg);
extern int 		ejsRunFunction(int eid, MprVar *obj, const char *functionName, 
					MprArray *args);

/*
 *	Composite variable get / set routines. Can also use the MPR property
 *	routines on an object variable.
 */
extern MprVar	ejsCreateObj(const char *name, int hashSize);
extern MprVar	ejsCreateArray(const char *name, int hashSize);
extern bool		ejsDestroyVar(MprVar *obj);
extern int 		ejsCopyVar(EjsId eid, const char *var, MprVar *value, bool copyRef);
extern int 		ejsReadVar(EjsId eid, const char *var, MprVar *value);
extern int	 	ejsWriteVar(EjsId eid, const char *var, MprVar *value);
extern int	 	ejsWriteVarValue(EjsId eid, const char *var, MprVar value);
extern int		ejsDeleteVar(EjsId eid, const char *var);

extern MprVar	*ejsGetLocalObject(EjsId eid);
extern MprVar	*ejsGetGlobalObject(EjsId eid);

/*
 *	Function routines
 */
extern void 	ejsDefineFunction(EjsId eid, const char *functionName, char *args, 
					char *body);
extern void 	ejsDefineCFunction(EjsId eid, const char *functionName, 
					MprCFunction fn, void *thisPtr, int flags);
extern void		ejsDefineStringCFunction(EjsId eid, const char *functionName, 
					MprStringCFunction fn, void *thisPtr, int flags);
extern void 	*ejsGetThisPtr(EjsId eid);
extern MprVar	*ejsGetReturnValue(EjsId eid);
extern int		ejsGetLineNumber(EjsId eid);
extern int 		ejsParseArgs(int argc, char **argv, char *fmt, ...);
extern void 	ejsSetErrorMsg(EjsId eid, const char* fmt, ...) PRINTF_ATTRIBUTE(2,3);
extern void		ejsSetReturnValue(EjsId eid, MprVar value);
extern void		ejsSetReturnString(EjsId eid, const char *str);

#ifdef __cplusplus
}
#endif
#endif /* _h_EJS */

/*****************************************************************************/

/*
 * Local variables:
 * tab-width: 4
 * c-basic-offset: 4
 * End:
 * vim:tw=78
 * vim600: sw=4 ts=4 fdm=marker
 * vim<600: sw=4 ts=4
 */