diff options
author | Peter Jentsch <pjotr@guineapics.de> | 2011-01-25 23:21:22 +0100 |
---|---|---|
committer | Jan Holesovsky <kendy@suse.cz> | 2011-02-03 17:47:06 +0100 |
commit | 89c80fd1070909b293bb5a57414575d2e784a650 (patch) | |
tree | f167c41f2729496f4523b8770885ec4f440a0ef8 | |
parent | 55e325ab97272c771040cb053838c3cc99913635 (diff) |
New sax documenthandler adapter.
A simple adapter for sax document handlers and is a prerequisite of
the new flat odf export implementation.
-rw-r--r-- | sax/inc/sax/tools/documenthandleradapter.hxx | 254 | ||||
-rw-r--r-- | sax/prj/d.lst | 1 |
2 files changed, 255 insertions, 0 deletions
diff --git a/sax/inc/sax/tools/documenthandleradapter.hxx b/sax/inc/sax/tools/documenthandleradapter.hxx new file mode 100644 index 000000000000..3e8705c6f951 --- /dev/null +++ b/sax/inc/sax/tools/documenthandleradapter.hxx @@ -0,0 +1,254 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ + +/* + * Version: MPL 1.1 / GPLv3+ / LGPLv3+ + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Initial Developer of the Original Code is + * [ Peter Jentsch <pjotr@guineapics.de> ] + * + * Portions created by the Initial Developer are Copyright (C) 2010 the + * Initial Developer. All Rights Reserved. + * + * Contributor(s): Peter Jentsch <pjotr@guineapics.de> + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 3 or later (the "GPLv3+"), or + * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"), + * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable + * instead of those above. + */ + +#ifndef _DOCUMENTHANDLERADAPTER_H_ +#define _DOCUMENTHANDLERADAPTER_H_ + +#include <com/sun/star/xml/sax/SAXException.hpp> +#include <com/sun/star/xml/sax/XDocumentHandler.hpp> +#include <com/sun/star/xml/sax/XExtendedDocumentHandler.hpp> + +namespace sax +{ + /** + * DocumentHandlerAdapter provides a base class for simple decorators to XDocumentHandlers. + * It forwards all method calls to a delegate. An inheriting class only needs to override the + * methods it actually wants to modify. + * + * See filters/source/odfflatxml/FlatXml.cxx for an example. + */ + class DocumentHandlerAdapter : public ::com::sun::star::xml::sax::XDocumentHandler + { + public: + // XDocumentHandler + virtual void SAL_CALL + startDocument(void) throw (::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException) + { + m_handler->startDocument(); + } + + virtual void SAL_CALL + endDocument(void) throw (::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException) + { + m_handler->endDocument(); + } + + virtual void SAL_CALL + startElement(const ::rtl::OUString& aName, + const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList > & xAttribs) + throw (::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException) + { + m_handler->startElement(aName, xAttribs); + } + + virtual void SAL_CALL + endElement(const ::rtl::OUString& aName) throw (::com::sun::star::xml::sax::SAXException, + ::com::sun::star::uno::RuntimeException) + { + m_handler->endElement(aName); + } + + virtual void SAL_CALL + characters(const ::rtl::OUString& aChars) throw (::com::sun::star::xml::sax::SAXException, + ::com::sun::star::uno::RuntimeException) + { + m_handler->characters(aChars); + } + + virtual void SAL_CALL + ignorableWhitespace(const ::rtl::OUString& aWhitespaces) throw (::com::sun::star::xml::sax::SAXException, + ::com::sun::star::uno::RuntimeException) + { + m_handler->ignorableWhitespace(aWhitespaces); + } + virtual void SAL_CALL + processingInstruction(const ::rtl::OUString& aTarget, const ::rtl::OUString& aData) + throw (::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException) + { + m_handler->processingInstruction(aTarget, aData); + } + virtual void SAL_CALL + setDocumentLocator(const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XLocator > & xLocator) + throw (::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException) + { + m_handler->setDocumentLocator(xLocator); + } + DocumentHandlerAdapter(const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XDocumentHandler >& delegate); + DocumentHandlerAdapter() : + m_handler(::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XDocumentHandler > (0, ::com::sun::star::uno::UNO_QUERY)) + { + } + ; + + protected: + virtual void SAL_CALL + setDelegate(const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XDocumentHandler >& delegate) + { + m_handler = delegate; + } + virtual ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XDocumentHandler > SAL_CALL + getDelegate() + { + return m_handler; + } + virtual + ~DocumentHandlerAdapter() + { + + } + + private: + ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XDocumentHandler > m_handler; + + }; + + /** + * ExtendedDocumentHandlerAdapter provides a base class for simple decorators to XExtendedDocumentHandlers. + * It forwards all method calls to a delegate. An inheriting class only needs to override the + * methods it actually wants to modify. + */ + class ExtendedDocumentHandlerAdapter : public ::com::sun::star::xml::sax::XExtendedDocumentHandler + + { + + public: + // XDocumentHandler + virtual void SAL_CALL + startDocument(void) throw (::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException) + { + m_handler->startDocument(); + } + + virtual void SAL_CALL + endDocument(void) throw (::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException) + { + m_handler->endDocument(); + } + + virtual void SAL_CALL + startElement(const ::rtl::OUString& aName, + const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList > & xAttribs) + throw (::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException) + { + m_handler->startElement(aName, xAttribs); + } + + virtual void SAL_CALL + endElement(const ::rtl::OUString& aName) throw (::com::sun::star::xml::sax::SAXException, + ::com::sun::star::uno::RuntimeException) + { + m_handler->endElement(aName); + } + + virtual void SAL_CALL + characters(const ::rtl::OUString& aChars) throw (::com::sun::star::xml::sax::SAXException, + ::com::sun::star::uno::RuntimeException) + { + m_handler->characters(aChars); + } + + virtual void SAL_CALL + ignorableWhitespace(const ::rtl::OUString& aWhitespaces) throw (::com::sun::star::xml::sax::SAXException, + ::com::sun::star::uno::RuntimeException) + { + m_handler->ignorableWhitespace(aWhitespaces); + } + virtual void SAL_CALL + processingInstruction(const ::rtl::OUString& aTarget, const ::rtl::OUString& aData) + throw (::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException) + { + m_handler->processingInstruction(aTarget, aData); + } + virtual void SAL_CALL + setDocumentLocator(const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XLocator > & xLocator) + throw (::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException) + { + m_handler->setDocumentLocator(xLocator); + } + // XExtendedDocumentHandler + virtual void SAL_CALL + startCDATA(void) throw (::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException) + { + m_handler->startCDATA(); + } + virtual void SAL_CALL + endCDATA(void) throw (::com::sun::star::uno::RuntimeException) + { + m_handler->endCDATA(); + } + virtual void SAL_CALL + comment(const ::rtl::OUString& sComment) throw (::com::sun::star::xml::sax::SAXException, + ::com::sun::star::uno::RuntimeException) + { + m_handler->comment(sComment); + } + virtual void SAL_CALL + unknown(const ::rtl::OUString& sString) throw (::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException) + { + m_handler->unknown(sString); + } + virtual void SAL_CALL + allowLineBreak(void) throw (::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException) + { + m_handler->allowLineBreak(); + } + protected: + ExtendedDocumentHandlerAdapter() : + m_handler(::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XExtendedDocumentHandler > (0, ::com::sun::star::uno::UNO_QUERY)) + { + } + ExtendedDocumentHandlerAdapter( + const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XExtendedDocumentHandler > delegate) : + m_handler(delegate) + { + } + + virtual void SAL_CALL + setDelegate(const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XExtendedDocumentHandler >& delegate) + { + m_handler = delegate; + } + virtual ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XExtendedDocumentHandler > SAL_CALL + getDelegate() + { + return m_handler; + } + virtual + ~ExtendedDocumentHandlerAdapter() + { + + } + + private: + ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XExtendedDocumentHandler > m_handler; + }; +} +#endif /* _DOCUMENTHANDLERADAPTER_H_ */ +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sax/prj/d.lst b/sax/prj/d.lst index 87f01348163c..c9e466d440e1 100644 --- a/sax/prj/d.lst +++ b/sax/prj/d.lst @@ -9,5 +9,6 @@ mkdir: %_DEST%\inc%_EXT%\sax\tools ..\inc\sax\fshelper.hxx %_DEST%\inc%_EXT%\sax\fshelper.hxx ..\inc\sax\fastattribs.hxx %_DEST%\inc%_EXT%\sax\fastattribs.hxx ..\inc\sax\tools\converter.hxx %_DEST%\inc%_EXT%\sax\tools\converter.hxx +..\inc\sax\tools\documenthandleradapter.hxx %_DEST%\inc%_EXT%\sax\tools\documenthandleradapter.hxx dos: sh -c "if test %OS% = MACOSX; then macosx-create-bundle %_DEST%\lib%_EXT%\*.dylib; fi" |