webkit  2cdf99a9e3038c7e01b3c37e8ad903ecbe5eecf1
https://github.com/WebKit/webkit
objc_class.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2003, 2012 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 KJS_BINDINGS_OBJC_CLASS_H
27 #define KJS_BINDINGS_OBJC_CLASS_H
28 
29 #include "objc_runtime.h"
30 #include <wtf/text/WTFString.h>
31 
32 namespace JSC {
33 namespace Bindings {
34 
35 class ObjcClass : public Class
36 {
37 protected:
38  ObjcClass (ClassStructPtr aClass); // Use classForIsA to create an ObjcClass.
39 
40 public:
41  // Return the cached ObjC of the specified name.
43 
44  virtual Method* methodNamed(PropertyName, Instance*) const;
45  virtual Field *fieldNamed(PropertyName, Instance*) const;
46 
48 
49  ClassStructPtr isa() { return _isa; }
50 
51 private:
52  ClassStructPtr _isa;
53  mutable HashMap<String, std::unique_ptr<Method>> m_methodCache;
54  mutable HashMap<String, std::unique_ptr<Field>> m_fieldCache;
55 };
56 
57 } // namespace Bindings
58 } // namespace JSC
59 
60 #endif
Definition: BridgeJSC.h:71
struct objc_class * ClassStructPtr
Definition: objc_header.h:44
Definition: AirOpcode.h:4
Definition: CallFrame.h:85
virtual Field * fieldNamed(PropertyName, Instance *) const
Definition: objc_class.mm:150
Definition: objc_class.h:35
static ObjcClass * classForIsA(ClassStructPtr)
Definition: objc_class.mm:49
ClassStructPtr isa()
Definition: objc_class.h:49
Definition: BridgeJSC.h:60
Definition: Bridge.h:37
ObjcClass(ClassStructPtr aClass)
Definition: objc_class.mm:36
Definition: JSCJSValue.h:129
Definition: PropertyName.h:34
virtual JSValue fallbackObject(ExecState *, Instance *, PropertyName)
Definition: objc_class.mm:239
Definition: BridgeJSC.h:52
virtual Method * methodNamed(PropertyName, Instance *) const
Definition: objc_class.mm:99