xti.h
来自「A*算法 A*算法 A*算法 A*算法A*算法A*算法」· C头文件 代码 · 共 1,688 行 · 第 1/5 页
H
1,688 行
};
#define wxCONSTRUCTOR_2(klass,t0,v0,t1,v1) \
wxConstructorBridge_2<klass,t0,t1> constructor##klass ; \
wxConstructorBridge* klass::ms_constructor = &constructor##klass ; \
const wxChar *klass::ms_constructorProperties[] = { wxT(#v0) , wxT(#v1) } ; \
const int klass::ms_constructorPropertiesCount = 2;
// direct constructor version
template<typename Class,
typename T0, typename T1>
struct wxDirectConstructorBridge_2 : public wxDirectConstructorBrigde
{
void Create(wxObject * &o, wxxVariant *args)
{
o = new Class(
args[0].wxTEMPLATED_MEMBER_CALL(Get , T0) ,
args[1].wxTEMPLATED_MEMBER_CALL(Get , T1)
);
}
};
#define wxDIRECT_CONSTRUCTOR_2(klass,t0,v0,t1,v1) \
wxDirectConstructorBridge_2<klass,t0,t1> constructor##klass ; \
wxConstructorBridge* klass::ms_constructor = &constructor##klass ; \
const wxChar *klass::ms_constructorProperties[] = { wxT(#v0) , wxT(#v1) } ; \
const int klass::ms_constructorPropertiesCount = 2;
// 3 params
template<typename Class,
typename T0, typename T1, typename T2>
struct wxConstructorBridge_3 : public wxConstructorBridge
{
void Create(wxObject * &o, wxxVariant *args)
{
Class *obj = dynamic_cast<Class*>(o);
obj->Create(
args[0].wxTEMPLATED_MEMBER_CALL(Get , T0) ,
args[1].wxTEMPLATED_MEMBER_CALL(Get , T1) ,
args[2].wxTEMPLATED_MEMBER_CALL(Get , T2)
);
}
};
#define wxCONSTRUCTOR_3(klass,t0,v0,t1,v1,t2,v2) \
wxConstructorBridge_3<klass,t0,t1,t2> constructor##klass ; \
wxConstructorBridge* klass::ms_constructor = &constructor##klass ; \
const wxChar *klass::ms_constructorProperties[] = { wxT(#v0) , wxT(#v1) , wxT(#v2) } ; \
const int klass::ms_constructorPropertiesCount = 3 ;
// 4 params
template<typename Class,
typename T0, typename T1, typename T2, typename T3>
struct wxConstructorBridge_4 : public wxConstructorBridge
{
void Create(wxObject * &o, wxxVariant *args)
{
Class *obj = dynamic_cast<Class*>(o);
obj->Create(
args[0].wxTEMPLATED_MEMBER_CALL(Get , T0) ,
args[1].wxTEMPLATED_MEMBER_CALL(Get , T1) ,
args[2].wxTEMPLATED_MEMBER_CALL(Get , T2) ,
args[3].wxTEMPLATED_MEMBER_CALL(Get , T3)
);
}
};
#define wxCONSTRUCTOR_4(klass,t0,v0,t1,v1,t2,v2,t3,v3) \
wxConstructorBridge_4<klass,t0,t1,t2,t3> constructor##klass ; \
wxConstructorBridge* klass::ms_constructor = &constructor##klass ; \
const wxChar *klass::ms_constructorProperties[] = { wxT(#v0) , wxT(#v1) , wxT(#v2) , wxT(#v3) } ; \
const int klass::ms_constructorPropertiesCount = 4 ;
// 5 params
template<typename Class,
typename T0, typename T1, typename T2, typename T3, typename T4>
struct wxConstructorBridge_5 : public wxConstructorBridge
{
void Create(wxObject * &o, wxxVariant *args)
{
Class *obj = dynamic_cast<Class*>(o);
obj->Create(
args[0].wxTEMPLATED_MEMBER_CALL(Get , T0) ,
args[1].wxTEMPLATED_MEMBER_CALL(Get , T1) ,
args[2].wxTEMPLATED_MEMBER_CALL(Get , T2) ,
args[3].wxTEMPLATED_MEMBER_CALL(Get , T3) ,
args[4].wxTEMPLATED_MEMBER_CALL(Get , T4)
);
}
};
#define wxCONSTRUCTOR_5(klass,t0,v0,t1,v1,t2,v2,t3,v3,t4,v4) \
wxConstructorBridge_5<klass,t0,t1,t2,t3,t4> constructor##klass ; \
wxConstructorBridge* klass::ms_constructor = &constructor##klass ; \
const wxChar *klass::ms_constructorProperties[] = { wxT(#v0) , wxT(#v1) , wxT(#v2) , wxT(#v3) , wxT(#v4) } ; \
const int klass::ms_constructorPropertiesCount = 5;
// 6 params
template<typename Class,
typename T0, typename T1, typename T2, typename T3, typename T4, typename T5>
struct wxConstructorBridge_6 : public wxConstructorBridge
{
void Create(wxObject * &o, wxxVariant *args)
{
Class *obj = dynamic_cast<Class*>(o);
obj->Create(
args[0].wxTEMPLATED_MEMBER_CALL(Get , T0) ,
args[1].wxTEMPLATED_MEMBER_CALL(Get , T1) ,
args[2].wxTEMPLATED_MEMBER_CALL(Get , T2) ,
args[3].wxTEMPLATED_MEMBER_CALL(Get , T3) ,
args[4].wxTEMPLATED_MEMBER_CALL(Get , T4) ,
args[5].wxTEMPLATED_MEMBER_CALL(Get , T5)
);
}
};
#define wxCONSTRUCTOR_6(klass,t0,v0,t1,v1,t2,v2,t3,v3,t4,v4,t5,v5) \
wxConstructorBridge_6<klass,t0,t1,t2,t3,t4,t5> constructor##klass ; \
wxConstructorBridge* klass::ms_constructor = &constructor##klass ; \
const wxChar *klass::ms_constructorProperties[] = { wxT(#v0) , wxT(#v1) , wxT(#v2) , wxT(#v3) , wxT(#v4) , wxT(#v5) } ; \
const int klass::ms_constructorPropertiesCount = 6;
// direct constructor version
template<typename Class,
typename T0, typename T1, typename T2, typename T3, typename T4, typename T5>
struct wxDirectConstructorBridge_6 : public wxDirectConstructorBrigde
{
void Create(wxObject * &o, wxxVariant *args)
{
o = new Class(
args[0].wxTEMPLATED_MEMBER_CALL(Get , T0) ,
args[1].wxTEMPLATED_MEMBER_CALL(Get , T1) ,
args[2].wxTEMPLATED_MEMBER_CALL(Get , T2) ,
args[3].wxTEMPLATED_MEMBER_CALL(Get , T3) ,
args[4].wxTEMPLATED_MEMBER_CALL(Get , T4) ,
args[5].wxTEMPLATED_MEMBER_CALL(Get , T5)
);
}
};
#define wxDIRECT_CONSTRUCTOR_6(klass,t0,v0,t1,v1,t2,v2,t3,v3,t4,v4,t5,v5) \
wxDirectConstructorBridge_6<klass,t0,t1,t2,t3,t4,t5> constructor##klass ; \
wxConstructorBridge* klass::ms_constructor = &constructor##klass ; \
const wxChar *klass::ms_constructorProperties[] = { wxT(#v0) , wxT(#v1) , wxT(#v2) , wxT(#v3) , wxT(#v4) , wxT(#v5) } ; \
const int klass::ms_constructorPropertiesCount = 6;
// 7 params
template<typename Class,
typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6>
struct wxConstructorBridge_7 : public wxConstructorBridge
{
void Create(wxObject * &o, wxxVariant *args)
{
Class *obj = dynamic_cast<Class*>(o);
obj->Create(
args[0].wxTEMPLATED_MEMBER_CALL(Get , T0) ,
args[1].wxTEMPLATED_MEMBER_CALL(Get , T1) ,
args[2].wxTEMPLATED_MEMBER_CALL(Get , T2) ,
args[3].wxTEMPLATED_MEMBER_CALL(Get , T3) ,
args[4].wxTEMPLATED_MEMBER_CALL(Get , T4) ,
args[5].wxTEMPLATED_MEMBER_CALL(Get , T5) ,
args[6].wxTEMPLATED_MEMBER_CALL(Get , T6)
);
}
};
#define wxCONSTRUCTOR_7(klass,t0,v0,t1,v1,t2,v2,t3,v3,t4,v4,t5,v5,t6,v6) \
wxConstructorBridge_7<klass,t0,t1,t2,t3,t4,t5,t6> constructor##klass ; \
wxConstructorBridge* klass::ms_constructor = &constructor##klass ; \
const wxChar *klass::ms_constructorProperties[] = { wxT(#v0) , wxT(#v1) , wxT(#v2) , wxT(#v3) , wxT(#v4) , wxT(#v5) , wxT(#v6) } ; \
const int klass::ms_constructorPropertiesCount = 7;
// 8 params
template<typename Class,
typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7>
struct wxConstructorBridge_8 : public wxConstructorBridge
{
void Create(wxObject * &o, wxxVariant *args)
{
Class *obj = dynamic_cast<Class*>(o);
obj->Create(
args[0].wxTEMPLATED_MEMBER_CALL(Get , T0) ,
args[1].wxTEMPLATED_MEMBER_CALL(Get , T1) ,
args[2].wxTEMPLATED_MEMBER_CALL(Get , T2) ,
args[3].wxTEMPLATED_MEMBER_CALL(Get , T3) ,
args[4].wxTEMPLATED_MEMBER_CALL(Get , T4) ,
args[5].wxTEMPLATED_MEMBER_CALL(Get , T5) ,
args[6].wxTEMPLATED_MEMBER_CALL(Get , T6) ,
args[7].wxTEMPLATED_MEMBER_CALL(Get , T7)
);
}
};
#define wxCONSTRUCTOR_8(klass,t0,v0,t1,v1,t2,v2,t3,v3,t4,v4,t5,v5,t6,v6,t7,v7) \
wxConstructorBridge_8<klass,t0,t1,t2,t3,t4,t5,t6,t7> constructor##klass ; \
wxConstructorBridge* klass::ms_constructor = &constructor##klass ; \
const wxChar *klass::ms_constructorProperties[] = { wxT(#v0) , wxT(#v1) , wxT(#v2) , wxT(#v3) , wxT(#v4) , wxT(#v5) , wxT(#v6) , wxT(#v7) } ; \
const int klass::ms_constructorPropertiesCount = 8;
// ----------------------------------------------------------------------------
// wxClassInfo
// ----------------------------------------------------------------------------
typedef wxObject *(*wxObjectConstructorFn)(void);
typedef wxObject* (*wxVariantToObjectConverter)( wxxVariant &data ) ;
typedef wxxVariant (*wxObjectToVariantConverter)( wxObject* ) ;
class WXDLLIMPEXP_BASE wxWriter;
class WXDLLIMPEXP_BASE wxPersister;
typedef bool (*wxObjectStreamingCallback) ( const wxObject *, wxWriter * , wxPersister * , wxxVariantArray & ) ;
class WXDLLIMPEXP_BASE wxClassInfo
{
friend class WXDLLIMPEXP_BASE wxPropertyInfo ;
friend class WXDLLIMPEXP_BASE wxHandlerInfo ;
public:
wxClassInfo(const wxClassInfo **_Parents,
const wxChar *_UnitName,
const wxChar *_ClassName,
int size,
wxObjectConstructorFn ctor ,
wxPropertyInfo *_Props ,
wxHandlerInfo *_Handlers ,
wxConstructorBridge* _Constructor ,
const wxChar ** _ConstructorProperties ,
const int _ConstructorPropertiesCount ,
wxVariantToObjectConverter _PtrConverter1 ,
wxVariantToObjectConverter _Converter2 ,
wxObjectToVariantConverter _Converter3 ,
wxObjectStreamingCallback _streamingCallback = NULL
) :
m_className(_ClassName),
m_objectSize(size),
m_objectConstructor(ctor),
m_next(sm_first),
m_firstProperty(_Props),
m_firstHandler(_Handlers),
m_parents(_Parents),
m_unitName(_UnitName),
m_constructor(_Constructor),
m_constructorProperties(_ConstructorProperties),
m_constructorPropertiesCount(_ConstructorPropertiesCount),
m_variantOfPtrToObjectConverter(_PtrConverter1),
m_variantToObjectConverter(_Converter2),
m_objectToVariantConverter(_Converter3),
m_streamingCallback(_streamingCallback)
{
sm_first = this;
Register() ;
}
wxClassInfo(const wxChar *_UnitName, const wxChar *_ClassName,
const wxClassInfo **_Parents) :
m_className(_ClassName),
m_objectSize(0),
m_objectConstructor(NULL),
m_next(sm_first),
m_firstProperty(NULL),
m_firstHandler(NULL),
m_parents(_Parents),
m_unitName(_UnitName),
m_constructor(NULL),
m_constructorProperties(NULL),
m_constructorPropertiesCount(0),
m_variantOfPtrToObjectConverter(NULL),
m_variantToObjectConverter(NULL),
m_objectToVariantConverter(NULL),
m_streamingCallback(NULL)
{
sm_first = this;
Register() ;
}
virtual ~wxClassInfo() ;
// allocates an instance of this class, this object does not have to be initialized or fully constructed
// as this call will be followed by a call to Create
virtual wxObject *AllocateObject() const { return m_objectConstructor ? (*m_objectConstructor)() : 0; }
// 'old naming' for AllocateObject staying here for backward compatibility
wxObject *CreateObject() const { return AllocateObject() ; }
// direct construction call for classes that cannot construct instances via alloc/create
wxObject *ConstructObject(int ParamCount, wxxVariant *Params) const
{
if ( ParamCount != m_constructorPropertiesCount )
{
wxLogError( _("Illegal Parameter Count for ConstructObject Method") ) ;
return NULL ;
}
wxObject *object = NULL ;
m_constructor->Create( object , Params ) ;
return object ;
}
bool NeedsDirectConstruction() const { return dynamic_cast<wxDirectConstructorBrigde*>( m_constructor) != NULL ; }
const wxChar *GetClassName() const { return m_className; }
const wxChar *GetBaseClassName1() const
{ return m_parents[0] ? m_parents[0]->GetClassName() : NULL; }
const wxChar *GetBaseClassName2() const
{ return (m_parents[0] && m_parents[1]) ? m_parents[1]->GetClassName() : NULL; }
const wxChar *GetIncludeName() const { return m_unitName ; }
const wxClassInfo **GetParents() const { return m_parents; }
int GetSize() const { return m_objectSize; }
wxObjectConstructorFn GetConstructor() const { return m_objectConstructor; }
static const wxClassInfo *GetFirst() { return sm_first; }
const wxClassInfo *GetNext() const { return m_next; }
static wxClassInfo *FindClass(const wxChar *className);
// Climb upwards through inheritance hierarchy.
// Dual inheritance is catered for.
bool IsKindOf(const wxClassInfo *info) const
{
if ( info != 0 )
{
if ( info == this )
return true ;
for ( int i = 0 ; m_parents[i] ; ++ i )
{
if ( m_parents[i]->IsKindOf( info ) )
return true ;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?