e668651137
ObjcAssociate.h. That leaves ObjcPose.h for its original purpose and avoids including it from any header files. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@20286 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
63 lines
1.5 KiB
Objective-C
63 lines
1.5 KiB
Objective-C
/////////////////////////////////////////////////////////////////////////////
|
|
// Name: wx/cocoa/ObjcPose.h
|
|
// Purpose: Macros for initializing poseAs, among other things
|
|
// Author: David Elliott
|
|
// Modified by:
|
|
// Created: 2002/12/03
|
|
// RCS-ID: $Id:
|
|
// Copyright: (c) 2002 David Elliott <dfe@cox.net>
|
|
// Licence: wxWindows license
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef __WX_COCOA_PRIVATE_POSER_H__
|
|
#define __WX_COCOA_PRIVATE_POSER_H__
|
|
|
|
/*-------------------------------------------------------------------------
|
|
Objective-C Poser class initialization
|
|
-------------------------------------------------------------------------*/
|
|
#ifdef __OBJC__
|
|
#import <objc/objc-class.h>
|
|
|
|
class wxPoseAsInitializer
|
|
{
|
|
public:
|
|
wxPoseAsInitializer(Class poser)
|
|
: m_poser(poser)
|
|
, m_next(sm_first)
|
|
{
|
|
sm_first = this;
|
|
}
|
|
~wxPoseAsInitializer()
|
|
{
|
|
class_poseAs(m_poser,m_poser->super_class);
|
|
sm_first = m_next;
|
|
}
|
|
static void InitializePosers()
|
|
{
|
|
while(sm_first)
|
|
{
|
|
delete sm_first;
|
|
}
|
|
};
|
|
protected:
|
|
Class m_poser;
|
|
wxPoseAsInitializer *m_next;
|
|
static wxPoseAsInitializer *sm_first;
|
|
};
|
|
|
|
class wxDummyForPoseAsInitializer
|
|
{
|
|
public:
|
|
wxDummyForPoseAsInitializer(void*) {}
|
|
};
|
|
|
|
#define WX_IMPLEMENT_POSER(poser) \
|
|
wxDummyForPoseAsInitializer wxDummyPoseAsInitializerFor##poser(new wxPoseAsInitializer([poser class]))
|
|
|
|
#else // __OBJC__
|
|
#warning "Objective-C++ Only!"
|
|
#endif // __OBJC__
|
|
|
|
#endif // __WX_COCOA_PRIVATE_POSER_H__
|
|
|