[PATCH 2/4] Fixed constant definitions for LibXSLTFilter buffers

Peter Jentsch pjotr at guineapics.de
Mon Jan 3 11:38:17 PST 2011


---
 filter/source/xsltfilter/LibXSLTTransformer.cxx |   29 ++++++++++++++++++++++-
 filter/source/xsltfilter/LibXSLTTransformer.hxx |    7 +----
 2 files changed, 30 insertions(+), 6 deletions(-)

diff --git a/filter/source/xsltfilter/LibXSLTTransformer.cxx b/filter/source/xsltfilter/LibXSLTTransformer.cxx
index da51908..2d40381 100644
--- a/filter/source/xsltfilter/LibXSLTTransformer.cxx
+++ b/filter/source/xsltfilter/LibXSLTTransformer.cxx
@@ -45,6 +45,9 @@
  using ::std::map;
  using ::std::pair;
 
+ #define _INPUT_BUFFER_SIZE 4096
+ #define _OUTPUT_BUFFER_SIZE 4096
+
  namespace XSLT {
      const char* const LibXSLTTransformer::PARAM_SOURCE_URL = "sourceURL";
      const char* const LibXSLTTransformer::PARAM_SOURCE_BASE_URL = "sourceBaseURL";
@@ -52,6 +55,11 @@
      const char* const LibXSLTTransformer::PARAM_TARGET_BASE_URL = "targetBaseURL";
      const char* const LibXSLTTransformer::PARAM_DOCTYPE_SYSTEM = "sytemType";
      const char* const LibXSLTTransformer::PARAM_DOCTYPE_PUBLIC = "publicType";
+
+     const sal_Int32 Reader::OUTPUT_BUFFER_SIZE = _OUTPUT_BUFFER_SIZE;
+
+     const sal_Int32 Reader::INPUT_BUFFER_SIZE = _INPUT_BUFFER_SIZE;
+
      struct ParserInputBufferCallback {
          static int on_read(void * context, char * buffer, int len) {
              Reader * tmp = static_cast<Reader*>(context);
@@ -72,6 +80,7 @@
              return tmp->closeOutput();
          }
      };
+
      Reader::Reader(LibXSLTTransformer* transformer):
          m_transformer(transformer),
          m_terminated(false),
@@ -92,12 +101,13 @@
          }
          return n;
      }
+
      int Reader::write(const char * buffer, int len) {
          if (buffer == NULL || len < 0) return -1;
          if (len > 0) {
              Reference<XOutputStream> xos = m_transformer->getOutputStream();
              sal_Int32 writeLen = len;
-             sal_Int32 bufLen = ::std::min(writeLen, OUTPUT_BUFFER_SIZE);
+             sal_Int32 bufLen = ::std::min(writeLen, this->OUTPUT_BUFFER_SIZE);
              const sal_uInt8* memPtr = reinterpret_cast< const sal_uInt8* >( buffer );
              while( writeLen > 0 ) {
                  sal_Int32 n = ::std::min(writeLen, bufLen);
@@ -110,9 +120,11 @@
          }
          return len;
      }
+
      int Reader::closeInput() {
          return 0;
      }
+
      int Reader::closeOutput() {
          Reference<XOutputStream>  xos = m_transformer->getOutputStream();
          if (xos.is()) {
@@ -122,6 +134,7 @@
          m_transformer->done();
          return 0;
      }
+
      void Reader::run() {
          OSL_ASSERT(m_transformer != NULL);
          OSL_ASSERT(m_transformer->getInputStream().is());
@@ -150,6 +163,7 @@
              xsltQuoteUserParams(tcontext, params);
              result = xsltApplyStylesheetUser(styleSheet, doc, 0, 0, 0, tcontext);
          }
+
          if (result) {
              xmlCharEncodingHandlerPtr encoder = xmlGetCharEncodingHandler(XML_CHAR_ENCODING_UTF8);
              xmlOutputBufferPtr outBuf = xmlAllocOutputBuffer(encoder);
@@ -173,37 +187,47 @@
          xmlFreeDoc(doc);
          xmlFreeDoc(result);
      };
+
      void Reader::onTerminated() {
          m_terminated = true;
      };
+
      Reader::~Reader() {}
+
      LibXSLTTransformer::LibXSLTTransformer( const Reference< XMultiServiceFactory > &r )
          : m_rServiceFactory(r) {
      }
+
      void LibXSLTTransformer::setInputStream(const Reference<XInputStream>& inputStream)
          throw (RuntimeException) {
          m_rInputStream = inputStream;
      }
+
      Reference<XInputStream> LibXSLTTransformer::getInputStream()
          throw (RuntimeException) {
          return m_rInputStream;
      }
+
      void LibXSLTTransformer::setOutputStream(const Reference<XOutputStream>& outputStream)
          throw (RuntimeException) {
          m_rOutputStream = outputStream;
      }
+
      Reference<XOutputStream> LibXSLTTransformer::getOutputStream()
          throw (RuntimeException) {
          return m_rOutputStream;
      }
+
      void LibXSLTTransformer::addListener(const Reference<XStreamListener>& listener)
          throw (RuntimeException) {
          m_listeners.insert(m_listeners.begin(), listener);
      }
+
      void LibXSLTTransformer::removeListener(const Reference<XStreamListener>& listener)
          throw (RuntimeException) {
          m_listeners.remove(listener);
      }
+
      void LibXSLTTransformer::start()
          throw (RuntimeException) {
          ListenerList::iterator it;
@@ -226,6 +250,7 @@
              }
          }
      }
+
      void LibXSLTTransformer::done() {
          ListenerList l = m_listeners;
          for (ListenerList::iterator it=l.begin(); it != l.end(); it++) {
@@ -235,10 +260,12 @@
              }
          }
      }
+
      void LibXSLTTransformer::terminate()
          throw (RuntimeException) {
          m_parameters.clear();
      }
+
      void LibXSLTTransformer::initialize(const Sequence<Any>& params)
          throw (RuntimeException) {
          xmlSubstituteEntitiesDefault(0);
diff --git a/filter/source/xsltfilter/LibXSLTTransformer.hxx b/filter/source/xsltfilter/LibXSLTTransformer.hxx
index 376075e..64073c0 100644
--- a/filter/source/xsltfilter/LibXSLTTransformer.hxx
+++ b/filter/source/xsltfilter/LibXSLTTransformer.hxx
@@ -32,9 +32,6 @@
  #include <com/sun/star/lang/XInitialization.hpp>
  #include <com/sun/star/beans/NamedValue.hpp>
 
- #define _INPUT_BUFFER_SIZE 1024
- #define _OUTPUT_BUFFER_SIZE 1024
-
  using namespace ::rtl;
  using namespace ::cppu;
  using namespace ::osl;
@@ -127,8 +124,8 @@
          virtual ~Reader();
 
      private:
-         static const sal_Int32 OUTPUT_BUFFER_SIZE = _OUTPUT_BUFFER_SIZE;
-         static const sal_Int32 INPUT_BUFFER_SIZE = _INPUT_BUFFER_SIZE;
+         static const sal_Int32 OUTPUT_BUFFER_SIZE;
+         static const sal_Int32 INPUT_BUFFER_SIZE;
          LibXSLTTransformer* m_transformer;
          sal_Bool m_terminated;
          Sequence<sal_Int8> m_readBuf;
-- 
1.7.1




More information about the LibreOffice mailing list