Add libwx-perl
[pkg-perl] / deb-src / libwx-perl / libwx-perl-0.96 / ext / xrc / XS / XmlSubclassFactory.xsp
1 #############################################################################
2 ## Name:        ext/xrc/XS/XmlSubclassFactory.xsp
3 ## Purpose:     XS++ for Wx::XmlSubclassHandler
4 ## Author:      Mattia Barbon
5 ## Modified by:
6 ## Created:     03/06/2003
7 ## RCS-ID:      $Id: XmlSubclassFactory.xsp 2079 2007-07-08 21:18:04Z mbarbon $
8 ## Copyright:   (c) 2003-2004 Mattia Barbon
9 ## Licence:     This program is free software; you can redistribute it and/or
10 ##              modify it under the same terms as Perl itself
11 #############################################################################
12
13 %module{Wx};
14
15 %typemap{wxPliXmlSubclassFactory*}{simple};
16 %typemap{wxXmlSubclassFactory*}{simple};
17
18 %file{cpp/factory.h};
19 %{
20
21 #define DEC_V_CBACK_WXOBJECT__WXSTRING_pure( METHOD ) \
22   wxObject* METHOD( const wxString& )
23
24 #define DEF_V_CBACK_WXOBJECT__WXSTRING_pure( CLASS, BASE, METHOD ) \
25   wxObject* CLASS::METHOD( const wxString& param1 )                           \
26   {                                                                           \
27     dTHX;                                                                     \
28     if( wxPliVirtualCallback_FindCallback( aTHX_ &m_callback, #METHOD ) )     \
29     {                                                                         \
30         SV* ret = wxPliVirtualCallback_CallCallback( aTHX_ &m_callback,       \
31                                                      G_SCALAR, "P", &param1 );\
32         wxObject* val = (wxObject*)wxPli_sv_2_object( aTHX_ ret, NULL );      \
33         SvREFCNT_dec( ret );                                                  \
34         return val;                                                           \
35     }                                                                         \
36     return NULL;                                                              \
37   }
38
39 #include "cpp/v_cback.h"
40
41 class wxPliXmlSubclassFactory : public wxXmlSubclassFactory
42 {
43     wxPliVirtualCallback m_callback;
44 public:
45     wxPliXmlSubclassFactory( const char* package )
46         : m_callback( "Wx::XmlSubclassFactory" )
47     {
48         m_callback.SetSelf( wxPli_make_object( this, package ), true );
49     }
50
51     DEC_V_CBACK_WXOBJECT__WXSTRING_pure( Create );
52 };
53
54 DEF_V_CBACK_WXOBJECT__WXSTRING_pure( wxPliXmlSubclassFactory, wxXmlSubclassFactory, Create );
55
56 %}
57 %file{-};
58
59 %{
60 #include "cpp/factory.h"
61 %}
62
63 %name{Wx::XmlSubclassFactory} class wxXmlSubclassFactory
64 {
65     wxXmlSubclassFactory()
66         %code{% RETVAL = new wxPliXmlSubclassFactory( CLASS ); %};
67 ##    ~wxXmlSubclassFactory();
68 };