]> git.saurik.com Git - apple/javascriptcore.git/blame - API/JSBase.h
JavaScriptCore-554.1.tar.gz
[apple/javascriptcore.git] / API / JSBase.h
CommitLineData
b37bf2e1
A
1/*
2 * Copyright (C) 2006 Apple Computer, Inc. All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
6 * are met:
7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 *
13 * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24 */
25
26#ifndef JSBase_h
27#define JSBase_h
28
9dae56ea 29#ifndef __cplusplus
b37bf2e1 30#include <stdbool.h>
9dae56ea 31#endif
b37bf2e1
A
32
33/* JavaScript engine interface */
34
9dae56ea
A
35/*! @typedef JSContextGroupRef A group that associates JavaScript contexts with one another. Contexts in the same group may share and exchange JavaScript objects. */
36typedef const struct OpaqueJSContextGroup* JSContextGroupRef;
37
b37bf2e1
A
38/*! @typedef JSContextRef A JavaScript execution context. Holds the global object and other execution state. */
39typedef const struct OpaqueJSContext* JSContextRef;
40
41/*! @typedef JSGlobalContextRef A global JavaScript execution context. A JSGlobalContext is a JSContext. */
42typedef struct OpaqueJSContext* JSGlobalContextRef;
43
44/*! @typedef JSStringRef A UTF16 character buffer. The fundamental string representation in JavaScript. */
45typedef struct OpaqueJSString* JSStringRef;
46
47/*! @typedef JSClassRef A JavaScript class. Used with JSObjectMake to construct objects with custom behavior. */
48typedef struct OpaqueJSClass* JSClassRef;
49
50/*! @typedef JSPropertyNameArrayRef An array of JavaScript property names. */
51typedef struct OpaqueJSPropertyNameArray* JSPropertyNameArrayRef;
52
53/*! @typedef JSPropertyNameAccumulatorRef An ordered set used to collect the names of a JavaScript object's properties. */
54typedef struct OpaqueJSPropertyNameAccumulator* JSPropertyNameAccumulatorRef;
55
56
57/* JavaScript data types */
58
59/*! @typedef JSValueRef A JavaScript value. The base type for all JavaScript values, and polymorphic functions on them. */
60typedef const struct OpaqueJSValue* JSValueRef;
61
62/*! @typedef JSObjectRef A JavaScript object. A JSObject is a JSValue. */
63typedef struct OpaqueJSValue* JSObjectRef;
64
65/* JavaScript symbol exports */
66
67#undef JS_EXPORT
ba379fdc
A
68#if defined(BUILDING_WX__)
69 #define JS_EXPORT
70#elif defined(__GNUC__)
b37bf2e1 71 #define JS_EXPORT __attribute__((visibility("default")))
ba379fdc
A
72#elif defined(_WIN32_WCE)
73 #if defined(JS_BUILDING_JS)
74 #define JS_EXPORT __declspec(dllexport)
75 #elif defined(JS_IMPORT_JS)
76 #define JS_EXPORT __declspec(dllimport)
77 #else
78 #define JS_EXPORT
79 #endif
b37bf2e1 80#elif defined(WIN32) || defined(_WIN32)
9dae56ea
A
81 /*
82 * TODO: Export symbols with JS_EXPORT when using MSVC.
83 * See http://bugs.webkit.org/show_bug.cgi?id=16227
84 */
ba379fdc
A
85 #if defined(BUILDING_JavaScriptCore) || defined(BUILDING_WTF)
86 #define JS_EXPORT __declspec(dllexport)
87 #else
88 #define JS_EXPORT __declspec(dllimport)
89 #endif
b37bf2e1
A
90#else
91 #define JS_EXPORT
92#endif
93
94#ifdef __cplusplus
95extern "C" {
96#endif
97
98/* Script Evaluation */
99
100/*!
9dae56ea 101@function JSEvaluateScript
b37bf2e1
A
102@abstract Evaluates a string of JavaScript.
103@param ctx The execution context to use.
104@param script A JSString containing the script to evaluate.
105@param thisObject The object to use as "this," or NULL to use the global object as "this."
106@param sourceURL A JSString containing a URL for the script's source file. This is only used when reporting exceptions. Pass NULL if you do not care to include source file information in exceptions.
107@param startingLineNumber An integer value specifying the script's starting line number in the file located at sourceURL. This is only used when reporting exceptions.
108@param exception A pointer to a JSValueRef in which to store an exception, if any. Pass NULL if you do not care to store an exception.
109@result The JSValue that results from evaluating script, or NULL if an exception is thrown.
110*/
111JS_EXPORT JSValueRef JSEvaluateScript(JSContextRef ctx, JSStringRef script, JSObjectRef thisObject, JSStringRef sourceURL, int startingLineNumber, JSValueRef* exception);
112
113/*!
114@function JSCheckScriptSyntax
115@abstract Checks for syntax errors in a string of JavaScript.
116@param ctx The execution context to use.
117@param script A JSString containing the script to check for syntax errors.
118@param sourceURL A JSString containing a URL for the script's source file. This is only used when reporting exceptions. Pass NULL if you do not care to include source file information in exceptions.
119@param startingLineNumber An integer value specifying the script's starting line number in the file located at sourceURL. This is only used when reporting exceptions.
120@param exception A pointer to a JSValueRef in which to store a syntax error exception, if any. Pass NULL if you do not care to store a syntax error exception.
121@result true if the script is syntactically correct, otherwise false.
122*/
123JS_EXPORT bool JSCheckScriptSyntax(JSContextRef ctx, JSStringRef script, JSStringRef sourceURL, int startingLineNumber, JSValueRef* exception);
124
125/*!
9dae56ea 126@function JSGarbageCollect
b37bf2e1 127@abstract Performs a JavaScript garbage collection.
9dae56ea 128@param ctx The execution context to use.
b37bf2e1
A
129@discussion JavaScript values that are on the machine stack, in a register,
130 protected by JSValueProtect, set as the global object of an execution context,
9dae56ea
A
131 or reachable from any such value will not be collected.
132
b37bf2e1 133 During JavaScript execution, you are not required to call this function; the
9dae56ea
A
134 JavaScript engine will garbage collect as needed. JavaScript values created
135 within a context group are automatically destroyed when the last reference
136 to the context group is released.
b37bf2e1
A
137*/
138JS_EXPORT void JSGarbageCollect(JSContextRef ctx);
139
140#ifdef __cplusplus
141}
142#endif
143
9dae56ea 144#endif /* JSBase_h */