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 + -
显示快捷键?