#############################################################################
## Name: ext/xrc/XS/XmlSubclassFactory.xsp
## Purpose: XS++ for Wx::XmlSubclassHandler
## Author: Mattia Barbon
## Modified by:
## Created: 03/06/2003
## RCS-ID: $Id: XmlSubclassFactory.xsp 2927 2010-06-06 08:06:10Z mbarbon $
## Copyright: (c) 2003-2004, 2010 Mattia Barbon
## Licence: This program is free software; you can redistribute it and/or
## modify it under the same terms as Perl itself
#############################################################################
%module{Wx};
%typemap{wxPliXmlSubclassFactory*}{simple};
%typemap{wxXmlSubclassFactory*}{simple};
%file{xspp/factory.h};
%{
#define DEC_V_CBACK_WXOBJECT__WXSTRING_pure( METHOD ) \
wxObject* METHOD( const wxString& )
#define DEF_V_CBACK_WXOBJECT__WXSTRING_pure( CLASS, BASE, METHOD ) \
wxObject* CLASS::METHOD( const wxString& param1 ) \
{ \
dTHX; \
if( wxPliVirtualCallback_FindCallback( aTHX_ &m_callback, #METHOD ) ) \
{ \
SV* ret = wxPliVirtualCallback_CallCallback( aTHX_ &m_callback, \
G_SCALAR, "P", ¶m1 );\
wxObject* val = (wxObject*)wxPli_sv_2_object( aTHX_ ret, NULL ); \
SvREFCNT_dec( ret ); \
return val; \
} \
return NULL; \
}
#include "cpp/v_cback.h"
class wxPliXmlSubclassFactory : public wxXmlSubclassFactory
{
wxPliVirtualCallback m_callback;
public:
wxPliXmlSubclassFactory( const char* package )
: m_callback( "Wx::XmlSubclassFactory" )
{
m_callback.SetSelf( wxPli_make_object( this, package ), true );
}
DEC_V_CBACK_WXOBJECT__WXSTRING_pure( Create );
};
DEF_V_CBACK_WXOBJECT__WXSTRING_pure( wxPliXmlSubclassFactory, wxXmlSubclassFactory, Create );
%}
%file{-};
%{
#include "xspp/factory.h"
%}
%name{Wx::XmlSubclassFactory} class wxXmlSubclassFactory
{
wxXmlSubclassFactory()
%code{% RETVAL = new wxPliXmlSubclassFactory( CLASS ); %};
## ~wxXmlSubclassFactory();
};