]> git.saurik.com Git - apple/javascriptcore.git/blame - API/JSBase.h
JavaScriptCore-525.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
68#if defined(__GNUC__)
69 #define JS_EXPORT __attribute__((visibility("default")))
70#elif defined(WIN32) || defined(_WIN32)
9dae56ea
A
71 /*
72 * TODO: Export symbols with JS_EXPORT when using MSVC.
73 * See http://bugs.webkit.org/show_bug.cgi?id=16227
74 */
b37bf2e1
A
75 #define JS_EXPORT
76#else
77 #define JS_EXPORT
78#endif
79
80#ifdef __cplusplus
81extern "C" {
82#endif
83
84/* Script Evaluation */
85
86/*!
9dae56ea 87@function JSEvaluateScript
b37bf2e1
A
88@abstract Evaluates a string of JavaScript.
89@param ctx The execution context to use.
90@param script A JSString containing the script to evaluate.
91@param thisObject The object to use as "this," or NULL to use the global object as "this."
92@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.
93@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.
94@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.
95@result The JSValue that results from evaluating script, or NULL if an exception is thrown.
96*/
97JS_EXPORT JSValueRef JSEvaluateScript(JSContextRef ctx, JSStringRef script, JSObjectRef thisObject, JSStringRef sourceURL, int startingLineNumber, JSValueRef* exception);
98
99/*!
100@function JSCheckScriptSyntax
101@abstract Checks for syntax errors in a string of JavaScript.
102@param ctx The execution context to use.
103@param script A JSString containing the script to check for syntax errors.
104@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.
105@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.
106@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.
107@result true if the script is syntactically correct, otherwise false.
108*/
109JS_EXPORT bool JSCheckScriptSyntax(JSContextRef ctx, JSStringRef script, JSStringRef sourceURL, int startingLineNumber, JSValueRef* exception);
110
111/*!
9dae56ea 112@function JSGarbageCollect
b37bf2e1 113@abstract Performs a JavaScript garbage collection.
9dae56ea 114@param ctx The execution context to use.
b37bf2e1
A
115@discussion JavaScript values that are on the machine stack, in a register,
116 protected by JSValueProtect, set as the global object of an execution context,
9dae56ea
A
117 or reachable from any such value will not be collected.
118
b37bf2e1 119 During JavaScript execution, you are not required to call this function; the
9dae56ea
A
120 JavaScript engine will garbage collect as needed. JavaScript values created
121 within a context group are automatically destroyed when the last reference
122 to the context group is released.
b37bf2e1
A
123*/
124JS_EXPORT void JSGarbageCollect(JSContextRef ctx);
125
126#ifdef __cplusplus
127}
128#endif
129
9dae56ea 130#endif /* JSBase_h */