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