Rubber stamped by Maciej.
[WebKit-https.git] / JavaScriptGlue / UserObjectImp.h
1 #ifndef UserObjectImp_h
2 #define UserObjectImp_h
3
4 /*
5     UserObjectImp.h
6 */
7
8 #include "JSUtils.h"
9 #include "JSBase.h"
10 #include "JSObject.h"
11
12 class UserObjectImp : public JSObject
13 {
14 public:
15     UserObjectImp(JSUserObject* userObject);
16     virtual ~UserObjectImp();
17
18     virtual const ClassInfo *classInfo() const;
19     static const ClassInfo info;
20
21     virtual bool implementsCall() const;
22
23     virtual ReferenceList propList(ExecState *exec, bool recursive = true);
24
25     virtual JSValue *callAsFunction(ExecState *exec, JSObject *thisObj, const List &args);
26     virtual bool getOwnPropertySlot(ExecState *, const Identifier&, PropertySlot&);
27     virtual void put(ExecState *exec, const Identifier &propertyName, JSValue *value, int attr = None);
28
29     JSValue *toPrimitive(ExecState *exec, Type preferredType = UnspecifiedType) const;
30     virtual bool toBoolean(ExecState *exec) const;
31     virtual double toNumber(ExecState *exec) const;
32     virtual UString toString(ExecState *exec) const;
33
34     virtual void mark();
35
36     JSUserObject *GetJSUserObject() const;
37 protected:
38     UserObjectImp();
39 private:
40     static JSValue *userObjectGetter(ExecState *, const Identifier&, const PropertySlot&);
41
42     JSUserObject* fJSUserObject;
43 };
44
45 #endif