X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/7c6cd4a86b843afa877feaeb207b936dd7a4b1f3..7539ba5615b812e8ba7634513f6e067142f2881e:/src/html/htmlpars.cpp diff --git a/src/html/htmlpars.cpp b/src/html/htmlpars.cpp index ac2fc44880..2bfef86812 100644 --- a/src/html/htmlpars.cpp +++ b/src/html/htmlpars.cpp @@ -8,7 +8,7 @@ ///////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) #pragma implementation "htmlpars.h" #endif @@ -35,6 +35,14 @@ #include "wx/dynarray.h" #include "wx/arrimpl.cpp" +#ifdef __WXWINCE__ + #include "wx/msw/wince/missing.h" // for bsearch() +#endif + +// DLL options compatibility check: +#include "wx/app.h" +WX_CHECK_BUILD_OPTIONS("wxHTML") + //----------------------------------------------------------------------------- // wxHtmlParser helpers //----------------------------------------------------------------------------- @@ -82,11 +90,18 @@ wxHtmlParser::~wxHtmlParser() { while (RestoreState()) {} DestroyDOMTree(); - + + if (m_HandlersStack) + { + wxList& tmp = *m_HandlersStack; + wxList::iterator it, en; + for( it = tmp.begin(), en = tmp.end(); it != en; ++it ) + delete (wxHashTable*)*it; + tmp.clear(); + } delete m_HandlersStack; m_HandlersHash.Clear(); - m_HandlersList.DeleteContents(TRUE); - m_HandlersList.Clear(); + WX_CLEAR_LIST(wxList, m_HandlersList); delete m_entitiesParser; } @@ -351,10 +366,9 @@ void wxHtmlParser::PushTagHandler(wxHtmlTagHandler *handler, wxString tags) if (m_HandlersStack == NULL) { m_HandlersStack = new wxList; - m_HandlersStack->DeleteContents(TRUE); } - m_HandlersStack->Insert(new wxHashTable(m_HandlersHash)); + m_HandlersStack->Insert((wxObject*)new wxHashTable(m_HandlersHash)); while (tokenizer.HasMoreTokens()) { @@ -366,16 +380,22 @@ void wxHtmlParser::PushTagHandler(wxHtmlTagHandler *handler, wxString tags) void wxHtmlParser::PopTagHandler() { - wxNode *first; + wxList::compatibility_iterator first; - if (m_HandlersStack == NULL || - (first = m_HandlersStack->GetFirst()) == NULL) + if ( !m_HandlersStack || +#if wxUSE_STL + !(first = m_HandlersStack->GetFirst()) +#else // !wxUSE_STL + ((first = m_HandlersStack->GetFirst()) == NULL) +#endif // wxUSE_STL/!wxUSE_STL + ) { wxLogWarning(_("Warning: attempt to remove HTML tag handler from empty stack.")); return; } m_HandlersHash = *((wxHashTable*) first->GetData()); - m_HandlersStack->DeleteNode(first); + delete (wxHashTable*) first->GetData(); + m_HandlersStack->Erase(first); } void wxHtmlParser::SetSourceAndSaveState(const wxString& src) @@ -836,7 +856,8 @@ wxChar wxHtmlEntitiesParser::GetEntityChar(const wxString& entity) wxFSFile *wxHtmlParser::OpenURL(wxHtmlURLType WXUNUSED(type), const wxString& url) const { - return GetFS()->OpenFile(url); + return m_FS ? m_FS->OpenFile(url) : NULL; + } @@ -847,9 +868,14 @@ wxFSFile *wxHtmlParser::OpenURL(wxHtmlURLType WXUNUSED(type), class wxMetaTagParser : public wxHtmlParser { public: + wxMetaTagParser() { } + wxObject* GetProduct() { return NULL; } + protected: virtual void AddText(const wxChar* WXUNUSED(txt)) {} + + DECLARE_NO_COPY_CLASS(wxMetaTagParser) }; class wxMetaTagHandler : public wxHtmlTagHandler @@ -861,6 +887,8 @@ public: private: wxString *m_retval; + + DECLARE_NO_COPY_CLASS(wxMetaTagHandler) }; bool wxMetaTagHandler::HandleTag(const wxHtmlTag& tag) @@ -872,10 +900,10 @@ bool wxMetaTagHandler::HandleTag(const wxHtmlTag& tag) } if (tag.HasParam(_T("HTTP-EQUIV")) && - tag.GetParam(_T("HTTP-EQUIV")) == _T("Content-Type") && + tag.GetParam(_T("HTTP-EQUIV")).IsSameAs(_T("Content-Type"), false) && tag.HasParam(_T("CONTENT"))) { - wxString content = tag.GetParam(_T("CONTENT")); + wxString content = tag.GetParam(_T("CONTENT")).Lower(); if (content.Left(19) == _T("text/html; charset=")) { *m_retval = content.Mid(19); @@ -896,5 +924,4 @@ wxString wxHtmlParser::ExtractCharsetInformation(const wxString& markup) return charset; } - #endif