webkit  2cdf99a9e3038c7e01b3c37e8ad903ecbe5eecf1
https://github.com/WebKit/webkit
objc_instance.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2003, 2009 Apple Inc. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  * notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  * notice, this list of conditions and the following disclaimer in the
11  * documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
14  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
17  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24  */
25 
26 #ifndef BINDINGS_OBJC_INSTANCE_H_
27 #define BINDINGS_OBJC_INSTANCE_H_
28 
29 #include "objc_class.h"
30 #include "objc_utility.h"
31 
32 namespace JSC {
33 
34 namespace Bindings {
35 
36 class ObjcClass;
37 
38 class ObjcInstance : public Instance {
39 public:
40  static RefPtr<ObjcInstance> create(ObjectStructPtr, RefPtr<RootObject>&&);
41  virtual ~ObjcInstance();
42 
43  static void setGlobalException(NSString*, JSGlobalObject* exceptionEnvironment = 0); // A null exceptionEnvironment means the exception should propogate to any execution environment.
44 
45  virtual Class* getClass() const;
46 
47  virtual JSValue valueOf(ExecState*) const;
49 
52  virtual JSValue invokeMethod(ExecState*, RuntimeMethod* method);
53  virtual bool supportsInvokeDefaultMethod() const;
55 
58 
59  ObjectStructPtr getObject() const { return _instance.get(); }
60 
63  JSValue booleanValue() const;
64 
65 protected:
66  virtual void virtualBegin();
67  virtual void virtualEnd();
68 
69 private:
70  friend class ObjcField;
71  static void moveGlobalExceptionToExecState(ExecState*);
72 
73  ObjcInstance(ObjectStructPtr, RefPtr<RootObject>&&);
74 
75  virtual RuntimeObject* newRuntimeObject(ExecState*);
76 
77  RetainPtr<ObjectStructPtr> _instance;
78  mutable ObjcClass *_class;
79  ObjectStructPtr _pool;
80  int _beginCount;
81 };
82 
83 } // namespace Bindings
84 
85 } // namespace JSC
86 
87 #endif // BINDINGS_OBJC_INSTANCE_H_
JSValue stringValue(ExecState *) const
Definition: objc_instance.mm:491
virtual JSValue valueOf(ExecState *) const
Definition: objc_instance.mm:521
virtual JSValue getMethod(ExecState *, PropertyName)
Definition: objc_instance.mm:203
Definition: BridgeJSC.h:71
static void setGlobalException(NSString *, JSGlobalObject *exceptionEnvironment=0)
Definition: objc_instance.mm:71
struct objc_object * ObjectStructPtr
Definition: objc_header.h:45
Definition: AirOpcode.h:4
static RefPtr< ObjcInstance > create(ObjectStructPtr, RefPtr< RootObject > &&)
Definition: objc_instance.mm:109
Definition: method.py:1
JSValue numberValue(ExecState *) const
Definition: objc_instance.mm:509
Definition: objc_runtime.h:43
virtual Class * getClass() const
Definition: objc_instance.mm:153
Definition: CallFrame.h:85
JSValue invokeObjcMethod(ExecState *, ObjcMethod *method)
Definition: objc_instance.mm:223
Definition: objc_class.h:35
virtual JSValue invokeMethod(ExecState *, RuntimeMethod *method)
Definition: objc_instance.mm:209
ObjectStructPtr getObject() const
Definition: objc_instance.h:59
JSValue getValueOfUndefinedField(ExecState *, PropertyName) const
Definition: objc_instance.mm:424
Definition: BridgeJSC.h:60
virtual JSValue defaultValue(ExecState *, PreferredPrimitiveType) const
Definition: objc_instance.mm:457
Definition: JSGlobalObject.h:205
PreferredPrimitiveType
Definition: JSCJSValue.h:75
virtual bool setValueOfUndefinedField(ExecState *, PropertyName, JSValue)
Definition: objc_instance.mm:392
struct NSString NSString
Definition: WebCoreNSStringExtras.h:35
virtual JSValue invokeDefaultMethod(ExecState *)
Definition: objc_instance.mm:341
JSValue booleanValue() const
Definition: objc_instance.mm:515
Definition: runtime_object.h:35
Definition: JSCJSValue.h:129
Definition: objc_runtime.h:56
Definition: objc_instance.h:38
Definition: runtime_method.h:35
virtual ~ObjcInstance()
Definition: objc_instance.mm:121
Definition: PropertyName.h:34
virtual void virtualBegin()
Definition: objc_instance.mm:136
virtual void virtualEnd()
Definition: objc_instance.mm:143
virtual bool supportsInvokeDefaultMethod() const
Definition: objc_instance.mm:162