source: webkit/trunk/JavaScriptCore/API/JSCallbackObject.h@ 15465

Last change on this file since 15465 was 15443, checked in by ggaren, 19 years ago

Reviewed by Maciej.


  • Finalized exception handling in the API.


setProperty can throw because it throws for built-in arrays. getProperty
and deleteProperty can throw because setProperty can throw and we want
to be consistent, and also because they seem like "actions." callAsFunction,
callAsConstructor, and hasInstance can throw, because they caan throw for
all built-ins.


toBoolean can't throw because it's defined that way in the spec.


  • Documented that toBoolean and toObject can't be overridden by custom objects because they're defined that way in the spec.
File size: 3.5 KB
Line 
1// -*- mode: c++; c-basic-offset: 4 -*-
2/*
3 * Copyright (C) 2006 Apple Computer, Inc. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright
11 * notice, this list of conditions and the following disclaimer in the
12 * documentation and/or other materials provided with the distribution.
13 *
14 * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
15 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
17 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
18 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
20 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
21 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
22 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 */
26
27#ifndef JSCallbackObject_h
28#define JSCallbackObject_h
29
30#include "JSObjectRef.h"
31#include "JSValueRef.h"
32#include "object.h"
33
34namespace KJS {
35
36class JSCallbackObject : public JSObject
37{
38public:
39 JSCallbackObject(JSContextRef, JSClassRef);
40 JSCallbackObject(JSContextRef, JSClassRef, JSValue* prototype);
41 virtual ~JSCallbackObject();
42
43 virtual UString className() const;
44
45 virtual bool getOwnPropertySlot(ExecState*, const Identifier&, PropertySlot&);
46 virtual bool getOwnPropertySlot(ExecState*, unsigned, PropertySlot&);
47
48 virtual void put(ExecState*, const Identifier&, JSValue*, int attr);
49 virtual void put(ExecState*, unsigned, JSValue*, int attr);
50
51 virtual bool deleteProperty(ExecState*, const Identifier&);
52 virtual bool deleteProperty(ExecState*, unsigned);
53
54 virtual bool implementsConstruct() const;
55 virtual JSObject* construct(ExecState*, const List& args);
56
57 virtual bool implementsHasInstance() const;
58 virtual bool hasInstance(ExecState *exec, JSValue *value);
59
60 virtual bool implementsCall() const;
61 virtual JSValue* callAsFunction(ExecState*, JSObject* thisObj, const List &args);
62
63 virtual void getPropertyList(ReferenceList& propertyList, bool recursive);
64
65 virtual double toNumber(ExecState*) const;
66 virtual UString toString(ExecState*) const;
67
68 void setPrivate(void* data);
69 void* getPrivate();
70
71 virtual const ClassInfo *classInfo() const { return &info; }
72 static const ClassInfo info;
73
74 bool inherits(JSClassRef) const;
75
76private:
77 JSCallbackObject(); // prevent default construction
78 JSCallbackObject(const JSCallbackObject&);
79
80 void init(JSContextRef, JSClassRef);
81
82 static JSValue* cachedValueGetter(ExecState*, JSObject*, const Identifier&, const PropertySlot&);
83 static JSValue* staticValueGetter(ExecState*, JSObject*, const Identifier&, const PropertySlot& slot);
84 static JSValue* staticFunctionGetter(ExecState*, JSObject*, const Identifier&, const PropertySlot& slot);
85 static JSValue* callbackGetter(ExecState*, JSObject*, const Identifier&, const PropertySlot&);
86
87 void* m_privateData;
88 JSClassRef m_class;
89};
90
91} // namespace KJS
92
93#endif // JSCallbackObject_h
Note: See TracBrowser for help on using the repository browser.