X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/4609ee2ef8b7787ba5241602b38759ff32e6777d..a9a2485d6464928fcf1012e573f4b3b734238300:/include/wx/html/htmlpars.h diff --git a/include/wx/html/htmlpars.h b/include/wx/html/htmlpars.h index b5c6c6830f..f4df4344dd 100644 --- a/include/wx/html/htmlpars.h +++ b/include/wx/html/htmlpars.h @@ -15,17 +15,27 @@ #include "wx/html/htmltag.h" #include "wx/filesys.h" -#include "wx/hash.h" +#include "wx/hashmap.h" +#include "wx/hashset.h" +#include "wx/vector.h" #include "wx/fontenc.h" -class WXDLLIMPEXP_BASE wxMBConv; -class WXDLLIMPEXP_HTML wxHtmlParser; -class WXDLLIMPEXP_HTML wxHtmlTagHandler; -class WXDLLIMPEXP_HTML wxHtmlEntitiesParser; +class WXDLLIMPEXP_FWD_BASE wxMBConv; +class WXDLLIMPEXP_FWD_HTML wxHtmlParser; +class WXDLLIMPEXP_FWD_HTML wxHtmlTagHandler; +class WXDLLIMPEXP_FWD_HTML wxHtmlEntitiesParser; class wxHtmlTextPieces; class wxHtmlParserState; +WX_DECLARE_HASH_SET_WITH_DECL(wxHtmlTagHandler*, + wxPointerHash, wxPointerEqual, + wxHtmlTagHandlersSet, + class WXDLLIMPEXP_HTML); +WX_DECLARE_STRING_HASH_MAP_WITH_DECL(wxHtmlTagHandler*, + wxHtmlTagHandlersHash, + class WXDLLIMPEXP_HTML); + enum wxHtmlURLType { @@ -73,7 +83,8 @@ public: // Parses the m_Source from begin_pos to end_pos-1. // (in noparams version it parses whole m_Source) - void DoParsing(int begin_pos, int end_pos); + void DoParsing(const wxString::const_iterator& begin_pos, + const wxString::const_iterator& end_pos); void DoParsing(); // Returns pointer to the tag at parser's current position @@ -104,7 +115,7 @@ public: // Restores state before last call to PushTagHandler void PopTagHandler(); - wxString* GetSource() {return &m_Source;} + const wxString* GetSource() {return m_Source;} void SetSource(const wxString& src); // Sets HTML source and remembers current parser's state so that it can @@ -140,15 +151,15 @@ protected: void CreateDOMTree(); void DestroyDOMTree(); void CreateDOMSubTree(wxHtmlTag *cur, - int begin_pos, int end_pos, + const wxString::const_iterator& begin_pos, + const wxString::const_iterator& end_pos, wxHtmlTagsCache *cache); // Adds text to the output. // This is called from Parse() and must be overriden in derived classes. - // txt is not guaranteed to be only one word. It is largest continuous part of text - // (= not broken by tags) - // NOTE : using char* because of speed improvements - virtual void AddText(const wxChar* txt) = 0; + // txt is not guaranteed to be only one word. It is largest continuous part + // of text (= not broken by tags) + virtual void AddText(const wxString& txt) = 0; // Adds tag and proceeds it. Parse() may (and usually is) called from this method. // This is called from Parse() and may be overriden. @@ -164,7 +175,7 @@ protected: wxHtmlTextPieces *m_TextPieces; size_t m_CurTextPiece; - wxString m_Source; + const wxString *m_Source; wxHtmlParserState *m_SavedStates; @@ -177,15 +188,15 @@ protected: // it may (and often does) contain more references to one object // m_HandlersList is list of all handlers and it is guaranteed to contain // only one reference to each handler instance. - wxList m_HandlersList; - wxHashTable m_HandlersHash; + wxHtmlTagHandlersSet m_HandlersSet; + wxHtmlTagHandlersHash m_HandlersHash; - DECLARE_NO_COPY_CLASS(wxHtmlParser) + wxDECLARE_NO_COPY_CLASS(wxHtmlParser); // class for opening files (file system) wxFileSystem *m_FS; // handlers stack used by PushTagHandler and PopTagHandler - wxList *m_HandlersStack; + wxVector m_HandlersStack; // entity parse wxHtmlEntitiesParser *m_entitiesParser; @@ -233,7 +244,7 @@ protected: // parses input between beginning and ending tag. // m_Parser must be set. void ParseInner(const wxHtmlTag& tag) - { m_Parser->DoParsing(tag.GetBeginPos(), tag.GetEndPos1()); } + { m_Parser->DoParsing(tag.GetBeginIter(), tag.GetEndIter1()); } // Parses given source as if it was tag's inner code (see // wxHtmlParser::GetInnerSource). Unlike ParseInner(), this method lets @@ -243,7 +254,7 @@ protected: wxHtmlParser *m_Parser; - DECLARE_NO_COPY_CLASS(wxHtmlTagHandler) + wxDECLARE_NO_COPY_CLASS(wxHtmlTagHandler); }; @@ -263,16 +274,16 @@ public: // Parses entities in input and replaces them with respective characters // (with respect to output encoding) - wxString Parse(const wxString& input); + wxString Parse(const wxString& input) const; // Returns character for given entity or 0 if the enity is unknown - wxChar GetEntityChar(const wxString& entity); + wxChar GetEntityChar(const wxString& entity) const; // Returns character that represents given Unicode code #if wxUSE_UNICODE - wxChar GetCharForCode(unsigned code) { return (wxChar)code; } + wxChar GetCharForCode(unsigned code) const { return (wxChar)code; } #else - wxChar GetCharForCode(unsigned code); + wxChar GetCharForCode(unsigned code) const; #endif protected: @@ -281,7 +292,7 @@ protected: wxFontEncoding m_encoding; #endif - DECLARE_NO_COPY_CLASS(wxHtmlEntitiesParser) + wxDECLARE_NO_COPY_CLASS(wxHtmlEntitiesParser); };