]> git.saurik.com Git - apple/javascriptcore.git/blame - API/JSBase.h
JavaScriptCore-1097.3.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 */
14957cd0 66/* These rules should stay the same as in WebKit2/Shared/API/c/WKBase.h */
b37bf2e1
A
67
68#undef JS_EXPORT
f9bf01c6 69#if defined(JS_NO_EXPORT)
14957cd0 70#define JS_EXPORT
f9bf01c6 71#elif defined(__GNUC__) && !defined(__CC_ARM) && !defined(__ARMCC__)
14957cd0
A
72#define JS_EXPORT __attribute__((visibility("default")))
73#elif defined(WIN32) || defined(_WIN32) || defined(_WIN32_WCE) || defined(__CC_ARM) || defined(__ARMCC__)
74#if defined(BUILDING_JavaScriptCore) || defined(BUILDING_WTF)
75#define JS_EXPORT __declspec(dllexport)
b37bf2e1 76#else
14957cd0
A
77#define JS_EXPORT __declspec(dllimport)
78#endif
79#else /* !defined(JS_NO_EXPORT) */
80#define JS_EXPORT
81#endif /* defined(JS_NO_EXPORT) */
82
83/* JS tests uses WTF but has no config.h, so we need to set the export defines here. */
84#ifndef WTF_EXPORT_PRIVATE
85#define WTF_EXPORT_PRIVATE JS_EXPORT
b37bf2e1
A
86#endif
87
88#ifdef __cplusplus
89extern "C" {
90#endif
91
92/* Script Evaluation */
93
94/*!
9dae56ea 95@function JSEvaluateScript
b37bf2e1
A
96@abstract Evaluates a string of JavaScript.
97@param ctx The execution context to use.
98@param script A JSString containing the script to evaluate.
99@param thisObject The object to use as "this," or NULL to use the global object as "this."
100@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.
101@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.
102@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.
103@result The JSValue that results from evaluating script, or NULL if an exception is thrown.
104*/
105JS_EXPORT JSValueRef JSEvaluateScript(JSContextRef ctx, JSStringRef script, JSObjectRef thisObject, JSStringRef sourceURL, int startingLineNumber, JSValueRef* exception);
106
107/*!
108@function JSCheckScriptSyntax
109@abstract Checks for syntax errors in a string of JavaScript.
110@param ctx The execution context to use.
111@param script A JSString containing the script to check for syntax errors.
112@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.
113@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.
114@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.
115@result true if the script is syntactically correct, otherwise false.
116*/
117JS_EXPORT bool JSCheckScriptSyntax(JSContextRef ctx, JSStringRef script, JSStringRef sourceURL, int startingLineNumber, JSValueRef* exception);
118
119/*!
9dae56ea 120@function JSGarbageCollect
b37bf2e1 121@abstract Performs a JavaScript garbage collection.
9dae56ea 122@param ctx The execution context to use.
b37bf2e1
A
123@discussion JavaScript values that are on the machine stack, in a register,
124 protected by JSValueProtect, set as the global object of an execution context,
9dae56ea
A
125 or reachable from any such value will not be collected.
126
b37bf2e1 127 During JavaScript execution, you are not required to call this function; the
9dae56ea
A
128 JavaScript engine will garbage collect as needed. JavaScript values created
129 within a context group are automatically destroyed when the last reference
130 to the context group is released.
b37bf2e1
A
131*/
132JS_EXPORT void JSGarbageCollect(JSContextRef ctx);
133
134#ifdef __cplusplus
135}
136#endif
137
9dae56ea 138#endif /* JSBase_h */