Add libwx-perl
[pkg-perl] / deb-src / libwx-perl / libwx-perl-0.96 / ext / xrc / cpp / factory.h
1
2
3
4 #define DEC_V_CBACK_WXOBJECT__WXSTRING_pure( METHOD ) \
5   wxObject* METHOD( const wxString& )
6
7 #define DEF_V_CBACK_WXOBJECT__WXSTRING_pure( CLASS, BASE, METHOD ) \
8   wxObject* CLASS::METHOD( const wxString& param1 )                           \
9   {                                                                           \
10     dTHX;                                                                     \
11     if( wxPliVirtualCallback_FindCallback( aTHX_ &m_callback, #METHOD ) )     \
12     {                                                                         \
13         SV* ret = wxPliVirtualCallback_CallCallback( aTHX_ &m_callback,       \
14                                                      G_SCALAR, "P", &param1 );\
15         wxObject* val = (wxObject*)wxPli_sv_2_object( aTHX_ ret, NULL );      \
16         SvREFCNT_dec( ret );                                                  \
17         return val;                                                           \
18     }                                                                         \
19     return NULL;                                                              \
20   }
21
22 #include "cpp/v_cback.h"
23
24 class wxPliXmlSubclassFactory : public wxXmlSubclassFactory
25 {
26     wxPliVirtualCallback m_callback;
27 public:
28     wxPliXmlSubclassFactory( const char* package )
29         : m_callback( "Wx::XmlSubclassFactory" )
30     {
31         m_callback.SetSelf( wxPli_make_object( this, package ), true );
32     }
33
34     DEC_V_CBACK_WXOBJECT__WXSTRING_pure( Create );
35 };
36
37 DEF_V_CBACK_WXOBJECT__WXSTRING_pure( wxPliXmlSubclassFactory, wxXmlSubclassFactory, Create );
38
39
40