tizen 2.3.1 release
[framework/web/wearable/wrt-plugins-tizen.git] / src / RefImpl / JSSuper.cpp
1 #include "JSSuper.h"
2 #include <JSWebAPIErrorFactory.h>
3 #include <JSUtil.h>
4 #include "Super.h"
5
6 using namespace DeviceAPI::Common;
7
8
9
10 namespace DeviceAPI {
11 namespace Reference {
12
13 JSClassRef JSSuper::m_jsClassRef = NULL;
14
15 JSClassDefinition JSSuper::m_jsClassInfo = {
16     0, // current (and only) version is 0
17     kJSClassAttributeNone, //attributes
18     "Super", //class name
19     NULL, // parent class
20     NULL, //static values
21     JSSuper::m_function, // static functions
22     JSSuper::initialize, // initialize
23     JSSuper::finalize, //finalize
24     NULL, //hasProperty
25     NULL, //getProperty
26     NULL, //setProperty
27     NULL, //deleteProperty
28     NULL, //getPropertyNames
29     NULL, // callAsFunction
30     NULL, // constructor
31     NULL, //hasInstance
32     NULL // convertToType
33 };
34
35
36 JSStaticFunction JSSuper::m_function[] = {
37     { "base", JSSuper::base, kJSPropertyAttributeNone },
38     { "override", JSSuper::override, kJSPropertyAttributeNone },
39     { 0, 0, 0 }
40 };
41
42 const JSClassRef JSSuper::getClassRef()
43 {
44     if (!m_jsClassRef) {
45         m_jsClassRef = JSClassCreate(&m_jsClassInfo);
46     }
47     return m_jsClassRef;
48 }
49
50 const JSClassDefinition* JSSuper::getClassInfo()
51 {
52     return &m_jsClassInfo;
53 }
54
55 void JSSuper::initialize(JSContextRef ctx, JSObjectRef object)
56 {
57     printf("JSSuper::initialize()\n");
58 }
59
60 void JSSuper::finalize(JSObjectRef object)
61 {
62     printf("JSSuper::finalize()\n");
63     Super * priv = static_cast<Super*>(JSObjectGetPrivate(object));
64     if( priv ){
65         JSObjectSetPrivate(object, NULL);
66         delete priv;
67     }
68 }
69
70 JSObjectRef JSSuper::constructor(JSContextRef ctx, JSObjectRef constructor, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception){
71     printf("JSSuper::constructor()\n");
72     Super * priv = new Super();
73     JSObjectRef obj = JSObjectMake(ctx, getClassRef(), priv);
74     JSUtil::setProperty(ctx, obj, "constructor", constructor, kJSPropertyAttributeReadOnly|kJSPropertyAttributeDontDelete|kJSPropertyAttributeDontEnum);
75     return obj;
76 }
77
78 JSValueRef JSSuper::base(JSContextRef ctx, JSObjectRef object, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception){
79     printf("JSSuper::base()\n");
80     Super * priv = static_cast<Super*>(JSObjectGetPrivate(thisObject));
81     if( priv )
82         priv->base();
83     return JSValueMakeUndefined(ctx);
84 }
85
86 JSValueRef JSSuper::override(JSContextRef ctx, JSObjectRef object, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception){
87     printf("JSSuper::override()\n");
88     Super * priv = static_cast<Super*>(JSObjectGetPrivate(thisObject));
89     priv->override();
90     return JSValueMakeUndefined(ctx);
91 }
92
93
94
95 } // Reference
96 } // TizenApis
97