X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b5dbe15d0bacde245539f54c4d97af6b4696f01f..26dd7154d5b4ab79db3cf4a6dc07c6404e6e14d8:/include/wx/html/htmlpars.h diff --git a/include/wx/html/htmlpars.h b/include/wx/html/htmlpars.h index 2f769eadab..92dc1be575 100644 --- a/include/wx/html/htmlpars.h +++ b/include/wx/html/htmlpars.h @@ -15,7 +15,9 @@ #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_FWD_BASE wxMBConv; @@ -26,6 +28,14 @@ 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,7 +151,8 @@ 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. @@ -163,7 +175,7 @@ protected: wxHtmlTextPieces *m_TextPieces; size_t m_CurTextPiece; - wxString m_Source; + const wxString *m_Source; wxHtmlParserState *m_SavedStates; @@ -176,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) // 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; @@ -232,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 @@ -262,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: