]>
git.saurik.com Git - apple/javascriptcore.git/blob - API/JSCallbackObject.h
1 // -*- mode: c++; c-basic-offset: 4 -*-
3 * Copyright (C) 2006 Apple Computer, Inc. All rights reserved.
4 * Copyright (C) 2007 Eric Seidel <eric@webkit.org>
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * 2. Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
15 * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
16 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
18 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
19 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
20 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
21 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
22 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
23 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
25 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28 #ifndef JSCallbackObject_h
29 #define JSCallbackObject_h
31 #include "JSObjectRef.h"
32 #include "JSValueRef.h"
38 class JSCallbackObject
: public Base
41 JSCallbackObject(ExecState
*, JSClassRef
, JSValue
* prototype
, void* data
);
42 JSCallbackObject(JSClassRef
);
43 virtual ~JSCallbackObject();
45 virtual UString
className() const;
47 virtual bool getOwnPropertySlot(ExecState
*, const Identifier
&, PropertySlot
&);
48 virtual bool getOwnPropertySlot(ExecState
*, unsigned, PropertySlot
&);
50 virtual void put(ExecState
*, const Identifier
&, JSValue
*, int attr
);
51 virtual void put(ExecState
*, unsigned, JSValue
*, int attr
);
53 virtual bool deleteProperty(ExecState
*, const Identifier
&);
54 virtual bool deleteProperty(ExecState
*, unsigned);
56 virtual bool implementsConstruct() const;
57 virtual JSObject
* construct(ExecState
*, const List
& args
);
59 virtual bool implementsHasInstance() const;
60 virtual bool hasInstance(ExecState
*exec
, JSValue
*value
);
62 virtual bool implementsCall() const;
63 virtual JSValue
* callAsFunction(ExecState
*, JSObject
* thisObj
, const List
&args
);
65 virtual void getPropertyNames(ExecState
*, PropertyNameArray
&);
67 virtual double toNumber(ExecState
*) const;
68 virtual UString
toString(ExecState
*) const;
70 void setPrivate(void* data
);
73 virtual const ClassInfo
*classInfo() const { return &info
; }
74 static const ClassInfo info
;
76 bool inherits(JSClassRef
) const;
79 void init(ExecState
*);
81 static JSValue
* cachedValueGetter(ExecState
*, JSObject
*, const Identifier
&, const PropertySlot
&);
82 static JSValue
* staticValueGetter(ExecState
*, JSObject
*, const Identifier
&, const PropertySlot
& slot
);
83 static JSValue
* staticFunctionGetter(ExecState
*, JSObject
*, const Identifier
&, const PropertySlot
& slot
);
84 static JSValue
* callbackGetter(ExecState
*, JSObject
*, const Identifier
&, const PropertySlot
&);
92 // include the actual template class implementation
93 #include "JSCallbackObjectFunctions.h"
95 #endif // JSCallbackObject_h