/
AJAction.h
109 lines (75 loc) · 3.44 KB
/
AJAction.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
//
// AJAction.h
// OpenAphid
/*
Copyright 2012 Aphid Mobile
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
#ifndef OpenAphid_AJAction_h
#define OpenAphid_AJAction_h
#include "AJOAObject.h"
#include "runtime/AJGlobalObject.h"
#include "runtime/Lookup.h"
#include "runtime/ObjectPrototype.h"
#include "wtf/AlwaysInline.h"
#include "Action.h"
#include "AJOABinding.h"
#include "OAUtil.h"
namespace Aphid {
class Action;
///-------------------------------------------------------------------------------------------------------------------
class AJAction : public AJOAObject {
typedef AJOAObject Base;
public:
AJAction(NonNullPassRefPtr<AJ::Structure> structure, AJOAGlobalObject* globalObject, PassRefPtr<Action> impl);
virtual ~AJAction();
virtual const AJ::ClassInfo* classInfo() const {return &s_info;}
static const AJ::ClassInfo s_info;
static const AJOABindingType s_type;
static AJ::AJObject* createPrototype(AJ::ExecState* exec, AJ::AJGlobalObject* globalObject);
virtual bool getOwnPropertySlot(AJ::ExecState* exec, const AJ::Identifier& propertyName, AJ::PropertySlot& slot);
virtual bool getOwnPropertyDescriptor(AJ::ExecState* exec, const AJ::Identifier& propertyName, AJ::PropertyDescriptor& descriptor);
virtual void put(AJ::ExecState* exec, const AJ::Identifier& propertyName, AJ::AJValue value, AJ::PutPropertySlot& slot);
virtual void markChildren(AJ::MarkStack& markStack);
Action* impl() const {return m_impl.get();}
static PassRefPtr<AJ::Structure> createStructure(AJ::AJValue prototype)
{
return AJ::Structure::create(prototype, AJ::TypeInfo(AJ::ObjectType, StructureFlags), AnonymousSlotCount);
}
private:
RefPtr<Action> m_impl;
protected:
static const unsigned StructureFlags = AJ::OverridesMarkChildren | AJ::OverridesGetOwnPropertySlot | Base::StructureFlags;
}; //class AJAction
///-------------------------------------------------------------------------------------------------------------------
class AJActionPrototype : public AJ::AJObject {
typedef AJ::AJObject Base;
public:
AJActionPrototype(NonNullPassRefPtr<AJ::Structure> structure);
virtual const AJ::ClassInfo* classInfo() const {return &s_info;}
static const AJ::ClassInfo s_info;
static PassRefPtr<AJ::Structure> createStructure(AJ::AJValue prototype)
{
return AJ::Structure::create(prototype, AJ::TypeInfo(AJ::ObjectType, StructureFlags), AnonymousSlotCount);
}
static AJObject* self(AJ::ExecState* exec, AJOAGlobalObject* globalObject)
{
return AJ::asObject(getOAStructure(AJActionBindingType, exec, globalObject)->storedPrototype());
}
protected:
static const unsigned StructureFlags = Base::StructureFlags;
}; //AJActionPrototype
///-------------------------------------------------------------------------------------------------------------------
Action* toAction(AJ::AJValue value);
AJ::AJValue toAJ(AJ::ExecState* exec, AJOAGlobalObject* globalObject, Action* impl);
#include "AJAction_properties.in.h"
} //namespace Aphid
#endif