Add libwx-perl
[pkg-perl] / deb-src / libwx-perl / libwx-perl-0.96 / ext / html / XS / HtmlTagHandler.xsp
1 #############################################################################
2 ## Name:        ext/html/XS/HtmlTagHandler.xsp
3 ## Purpose:     XS for Wx::HtmlTagHandler
4 ## Author:      Mattia Barbon
5 ## Modified by:
6 ## Created:     30/11/2003
7 ## RCS-ID:      $Id: HtmlTagHandler.xsp 2210 2007-08-23 21:01:47Z mbarbon $
8 ## Copyright:   (c) 2003-2004, 2007 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 #include <wx/html/htmlpars.h>
16 #include "cpp/htmltag.h"
17
18 %file{cpp/htmltag.h};
19 %{
20
21 #include "cpp/v_cback.h"
22
23 #define DEC_V_CBACK_BOOL__WXHTMLTAG( NAME ) \
24     bool NAME( const wxHtmlTag& tag );
25
26 #if 0
27 #define DEF_V_CBACK_BOOL__WXHTMLTAG_pure( CLASS, BASE, METHOD )              \
28     DEF_V_CBACK_BOOL__WXOBJECTs_( const wxHtmlTag&, CLASS, return false,     \
29                                   METHOD, wxPli_NOCONST )
30 #endif
31
32 #define DEF_V_CBACK_BOOL__WXHTMLTAG_pure( CLASS, BASE, METHOD )              \
33     bool CLASS::METHOD( const wxHtmlTag& p1 )                                \
34     {                                                                        \
35         dTHX;                                                                \
36         if( wxPliFCback( aTHX_ &m_callback, #METHOD ) )                      \
37         {                                                                    \
38             wxAutoSV ret( aTHX_ wxPliCCback( aTHX_ &m_callback,              \
39                                              G_SCALAR|G_DISCARD,             \
40                                              "q", &p1, "Wx::HtmlTag" ) );    \
41             return SvTRUE( ret );                                            \
42         } else                                                               \
43             return false;                                                    \
44     }
45
46 class wxPlHtmlTagHandler : public wxHtmlTagHandler
47 {
48     WXPLI_DECLARE_DYNAMIC_CLASS( wxPlHtmlTagHandler );
49     WXPLI_DECLARE_V_CBACK();
50 public:
51     wxPlHtmlTagHandler( const char* package )
52         :m_callback( "Wx::PlHtmlTagHandler" )
53     {
54         m_callback.SetSelf( wxPli_make_object( this, package ), true );
55     }
56
57     wxHtmlParser* GetParser() { return m_Parser; }
58
59     DEC_V_CBACK_WXSTRING__VOID( GetSupportedTags );
60     DEC_V_CBACK_BOOL__WXHTMLTAG( HandleTag );
61 };
62
63 WXPLI_IMPLEMENT_DYNAMIC_CLASS( wxPlHtmlTagHandler, wxHtmlTagHandler );
64
65 DEF_V_CBACK_WXSTRING__VOID_pure( wxPlHtmlTagHandler, wxHtmlTagHandler, GetSupportedTags );
66 DEF_V_CBACK_BOOL__WXHTMLTAG_pure( wxPlHtmlTagHandler, wxHtmlTagHandler, HandleTag );
67
68 class wxPlHtmlWinTagHandler : public wxHtmlWinTagHandler
69 {
70     WXPLI_DECLARE_DYNAMIC_CLASS( wxPlHtmlWinTagHandler );
71     WXPLI_DECLARE_V_CBACK();
72 public:
73     wxPlHtmlWinTagHandler( const char* package )
74         :m_callback( "Wx::PlHtmlWinTagHandler" )
75     {
76         m_callback.SetSelf( wxPli_make_object( this, package ), true );
77     }
78
79     wxHtmlWinParser* GetParser() { return m_WParser; }
80
81     DEC_V_CBACK_WXSTRING__VOID( GetSupportedTags );
82     DEC_V_CBACK_BOOL__WXHTMLTAG( HandleTag );
83 };
84
85 WXPLI_IMPLEMENT_DYNAMIC_CLASS( wxPlHtmlWinTagHandler, wxHtmlWinTagHandler );
86
87 DEF_V_CBACK_WXSTRING__VOID_pure( wxPlHtmlWinTagHandler, wxHtmlWinTagHandler, GetSupportedTags );
88 DEF_V_CBACK_BOOL__WXHTMLTAG_pure( wxPlHtmlWinTagHandler, wxHtmlWinTagHandler, HandleTag );
89
90 %}
91 %file{-};
92
93 %name{Wx::HtmlTagHandler} class wxHtmlTagHandler
94 {
95     void SetParser(wxHtmlParser *parser);
96     wxString GetSupportedTags();
97     bool HandleTag(const wxHtmlTag& tag);
98 };
99
100 %name{Wx::HtmlWinTagHandler} class wxHtmlWinTagHandler
101 {
102 };
103
104 %name{Wx::PlHtmlTagHandler} class wxPlHtmlTagHandler
105 {
106     wxPlHtmlTagHandler() %code{% RETVAL = new wxPlHtmlTagHandler( CLASS ); %};
107     wxHtmlParser* GetParser();
108 };
109
110 %name{Wx::PlHtmlWinTagHandler} class wxPlHtmlWinTagHandler
111 {
112     wxPlHtmlWinTagHandler()
113         %code{% RETVAL = new wxPlHtmlWinTagHandler( CLASS ); %};
114     wxHtmlWinParser* GetParser();
115 };