📄 objcassociate.h
字号:
/////////////////////////////////////////////////////////////////////////////// Name: wx/cocoa/ObjcAssociate.h// Purpose: Associates an Objective-C class with a C++ class// Author: David Elliott// Modified by:// Created: 2002/12/03// RCS-ID: $Id: ObjcAssociate.h,v 1.5 2006/10/16 09:29:42 ABX Exp $// Copyright: (c) 2002 David Elliott <dfe@cox.net>// Licence: wxWindows licence/////////////////////////////////////////////////////////////////////////////#ifndef __WX_COCOA_OBJC_ASSOCIATE_H__#define __WX_COCOA_OBJC_ASSOCIATE_H__/*-------------------------------------------------------------------------Basic hashmap stuff, used by everything-------------------------------------------------------------------------*/#define WX_DECLARE_OBJC_HASHMAP(ObjcClass) \class wxCocoa##ObjcClass; \WX_DECLARE_HASH_MAP(WX_##ObjcClass,wxCocoa##ObjcClass*,wxPointerHash,wxPointerEqual,wxCocoa##ObjcClass##Hash)#define WX_DECLARE_OBJC_INTERFACE_HASHMAP(ObjcClass) \public: \ static inline wxCocoa##ObjcClass* GetFromCocoa(WX_##ObjcClass cocoaObjcClass) \ { \ wxCocoa##ObjcClass##Hash::iterator iter = sm_cocoaHash.find(cocoaObjcClass); \ if(iter!=sm_cocoaHash.end()) \ { \ return iter->second; \ } \ return NULL; \ } \protected: \ static wxCocoa##ObjcClass##Hash sm_cocoaHash;#define WX_IMPLEMENT_OBJC_INTERFACE_HASHMAP(ObjcClass) \wxCocoa##ObjcClass##Hash wxCocoa##ObjcClass::sm_cocoaHash;/*-------------------------------------------------------------------------The entire interface, including some boilerplate stuff-------------------------------------------------------------------------*/#define WX_DECLARE_OBJC_INTERFACE(ObjcClass) \WX_DECLARE_OBJC_INTERFACE_HASHMAP(ObjcClass) \public: \ inline void Associate##ObjcClass(WX_##ObjcClass cocoaObjcClass) \ { \ if(cocoaObjcClass) \ sm_cocoaHash.insert(wxCocoa##ObjcClass##Hash::value_type(cocoaObjcClass,this)); \ } \ inline void Disassociate##ObjcClass(WX_##ObjcClass cocoaObjcClass) \ { \ if(cocoaObjcClass) \ sm_cocoaHash.erase(cocoaObjcClass); \ }#define WX_IMPLEMENT_OBJC_INTERFACE(ObjcClass) \WX_IMPLEMENT_OBJC_INTERFACE_HASHMAP(ObjcClass)/*-------------------------------------------------------------------------Stuff to be used by the wxWidgets class (not the Cocoa interface)-------------------------------------------------------------------------*/#define WX_DECLARE_COCOA_OWNER(ObjcClass,ObjcBase,ObjcRoot) \public: \ inline WX_##ObjcClass Get##ObjcClass() { return (WX_##ObjcClass)m_cocoa##ObjcRoot; } \ inline const WX_##ObjcClass Get##ObjcClass() const { return (WX_##ObjcClass)m_cocoa##ObjcRoot; } \protected: \ void Set##ObjcClass(WX_##ObjcClass cocoaObjcClass);#define WX_IMPLEMENT_COCOA_OWNER(wxClass,ObjcClass,ObjcBase,ObjcRoot) \void wxClass::Set##ObjcClass(WX_##ObjcClass cocoaObjcClass) \{ \ Disassociate##ObjcClass((WX_##ObjcClass)m_cocoa##ObjcRoot); \ Set##ObjcBase(cocoaObjcClass); \ Associate##ObjcClass((WX_##ObjcClass)m_cocoa##ObjcRoot); \}#endif // __WX_COCOA_OBJC_ASSOCIATE_H__
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -