############################################################################# ## Name: ext/html/XS/HtmlTagHandler.xsp ## Purpose: XS for Wx::HtmlTagHandler ## Author: Mattia Barbon ## Modified by: ## Created: 30/11/2003 ## RCS-ID: $Id: HtmlTagHandler.xsp 2210 2007-08-23 21:01:47Z mbarbon $ ## Copyright: (c) 2003-2004, 2007 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}; #include #include "cpp/htmltag.h" %file{cpp/htmltag.h}; %{ #include "cpp/v_cback.h" #define DEC_V_CBACK_BOOL__WXHTMLTAG( NAME ) \ bool NAME( const wxHtmlTag& tag ); #if 0 #define DEF_V_CBACK_BOOL__WXHTMLTAG_pure( CLASS, BASE, METHOD ) \ DEF_V_CBACK_BOOL__WXOBJECTs_( const wxHtmlTag&, CLASS, return false, \ METHOD, wxPli_NOCONST ) #endif #define DEF_V_CBACK_BOOL__WXHTMLTAG_pure( CLASS, BASE, METHOD ) \ bool CLASS::METHOD( const wxHtmlTag& p1 ) \ { \ dTHX; \ if( wxPliFCback( aTHX_ &m_callback, #METHOD ) ) \ { \ wxAutoSV ret( aTHX_ wxPliCCback( aTHX_ &m_callback, \ G_SCALAR|G_DISCARD, \ "q", &p1, "Wx::HtmlTag" ) ); \ return SvTRUE( ret ); \ } else \ return false; \ } class wxPlHtmlTagHandler : public wxHtmlTagHandler { WXPLI_DECLARE_DYNAMIC_CLASS( wxPlHtmlTagHandler ); WXPLI_DECLARE_V_CBACK(); public: wxPlHtmlTagHandler( const char* package ) :m_callback( "Wx::PlHtmlTagHandler" ) { m_callback.SetSelf( wxPli_make_object( this, package ), true ); } wxHtmlParser* GetParser() { return m_Parser; } DEC_V_CBACK_WXSTRING__VOID( GetSupportedTags ); DEC_V_CBACK_BOOL__WXHTMLTAG( HandleTag ); }; WXPLI_IMPLEMENT_DYNAMIC_CLASS( wxPlHtmlTagHandler, wxHtmlTagHandler ); DEF_V_CBACK_WXSTRING__VOID_pure( wxPlHtmlTagHandler, wxHtmlTagHandler, GetSupportedTags ); DEF_V_CBACK_BOOL__WXHTMLTAG_pure( wxPlHtmlTagHandler, wxHtmlTagHandler, HandleTag ); class wxPlHtmlWinTagHandler : public wxHtmlWinTagHandler { WXPLI_DECLARE_DYNAMIC_CLASS( wxPlHtmlWinTagHandler ); WXPLI_DECLARE_V_CBACK(); public: wxPlHtmlWinTagHandler( const char* package ) :m_callback( "Wx::PlHtmlWinTagHandler" ) { m_callback.SetSelf( wxPli_make_object( this, package ), true ); } wxHtmlWinParser* GetParser() { return m_WParser; } DEC_V_CBACK_WXSTRING__VOID( GetSupportedTags ); DEC_V_CBACK_BOOL__WXHTMLTAG( HandleTag ); }; WXPLI_IMPLEMENT_DYNAMIC_CLASS( wxPlHtmlWinTagHandler, wxHtmlWinTagHandler ); DEF_V_CBACK_WXSTRING__VOID_pure( wxPlHtmlWinTagHandler, wxHtmlWinTagHandler, GetSupportedTags ); DEF_V_CBACK_BOOL__WXHTMLTAG_pure( wxPlHtmlWinTagHandler, wxHtmlWinTagHandler, HandleTag ); %} %file{-}; %name{Wx::HtmlTagHandler} class wxHtmlTagHandler { void SetParser(wxHtmlParser *parser); wxString GetSupportedTags(); bool HandleTag(const wxHtmlTag& tag); }; %name{Wx::HtmlWinTagHandler} class wxHtmlWinTagHandler { }; %name{Wx::PlHtmlTagHandler} class wxPlHtmlTagHandler { wxPlHtmlTagHandler() %code{% RETVAL = new wxPlHtmlTagHandler( CLASS ); %}; wxHtmlParser* GetParser(); }; %name{Wx::PlHtmlWinTagHandler} class wxPlHtmlWinTagHandler { wxPlHtmlWinTagHandler() %code{% RETVAL = new wxPlHtmlWinTagHandler( CLASS ); %}; wxHtmlWinParser* GetParser(); };