File koffice-trinity-qpro-stream.patch of Package koffice

From 7a7c17092fcdd4772fb6e499ef13429f96ac04bb Mon Sep 17 00:00:00 2001
From: Michele Calgaro <michele.calgaro@yahoo.it>
Date: Thu, 16 Aug 2018 23:36:38 +0900
Subject: Switch from strstream to sstream.

Signed-off-by: Michele Calgaro <michele.calgaro@yahoo.it>
---
 filters/kspread/qpro/libqpro/src/formula.cc | 14 +++-----
 filters/kspread/qpro/libqpro/src/record.cc  |  8 ++---
 filters/kspread/qpro/libqpro/src/stream.cc  |  4 +--
 lib/kross/python/cxx/Config.hxx             | 41 ----------------------
 lib/kross/python/cxx/Extensions.hxx         | 10 +++---
 lib/kross/python/cxx/Objects.hxx            | 54 ++++++++++++++---------------
 6 files changed, 43 insertions(+), 88 deletions(-)

diff --git a/filters/kspread/qpro/libqpro/src/formula.cc b/filters/kspread/qpro/libqpro/src/formula.cc
index 13e3a45..aab0bb8 100644
--- a/filters/kspread/qpro/libqpro/src/formula.cc
+++ b/filters/kspread/qpro/libqpro/src/formula.cc
@@ -1,7 +1,7 @@
 #include <qpro/common.h>
 
 #include <iostream>
-#include <strstream>
+#include <sstream>
 
 #include <string.h>
 
@@ -474,30 +474,26 @@ void
 QpFormula::floatFuncReal(const char*)
 {
    QP_INT64   lFloat;
-   std::ostrstream lNum;
+   std::ostringstream lNum;
 
    cFormula >> lFloat;
 
    lNum << lFloat << ends;
 
-   cStack.push( lNum.str() );
-
-   lNum.rdbuf()->freeze(0);
+   cStack.push( lNum.str().c_str() );
 }
 
 void
 QpFormula::intFuncReal(const char*)
 {
    QP_INT16 lInt;
-   std::ostrstream lNum;
+   std::ostringstream lNum;
 
    cFormula >> lInt;
 
    lNum << lInt << ends;
 
-   cStack.push( lNum.str() );
-
-   lNum.rdbuf()->freeze(0);
+   cStack.push( lNum.str().c_str() );
 }
 
 void
diff --git a/filters/kspread/qpro/libqpro/src/record.cc b/filters/kspread/qpro/libqpro/src/record.cc
index 8aa877c..461b65d 100644
--- a/filters/kspread/qpro/libqpro/src/record.cc
+++ b/filters/kspread/qpro/libqpro/src/record.cc
@@ -10,7 +10,7 @@
 // -----------------------------------------------------------------------
 
 #include <iomanip>
-#include <strstream>
+#include <sstream>
 
 void
 Charout(ostream& pOut, unsigned char pChar)
@@ -32,7 +32,7 @@ Hexout(ostream& pOut, unsigned char pChar)
 int
 Hexout(char* pChar, int pLen)
 {
-   std::ostrstream*   lOStr = new std::ostrstream;
+   std::ostringstream*   lOStr = new std::ostringstream;
 
    while( pLen )
    {
@@ -57,7 +57,7 @@ Hexout(char* pChar, int pLen)
       cerr << lOStr->rdbuf() << endl;
 
       delete lOStr;
-      lOStr = new std::ostrstream;
+      lOStr = new std::ostringstream;
    }
 
    delete lOStr;
@@ -200,7 +200,7 @@ QpRecCell::cellRef(char* pText, QpTableNames& pTable, TQP_INT16 /*pNoteBook*/, T
 {
 //??? cope with relative/absolute references
 
-   std::strstream lOut(pText, 20, ios::out); // ??? ard coded len
+   std::stringstream lOut(pText, ios::out);
    int       lPageRelative = pRow & 0x8000;
    int       lColRelative  = pRow & 0x4000;
    int       lRowRelative  = pRow & 0x2000;
diff --git a/filters/kspread/qpro/libqpro/src/stream.cc b/filters/kspread/qpro/libqpro/src/stream.cc
index 012e18b..390fc37 100644
--- a/filters/kspread/qpro/libqpro/src/stream.cc
+++ b/filters/kspread/qpro/libqpro/src/stream.cc
@@ -32,7 +32,7 @@ QpIStream::~QpIStream()
 #else
 #include <string>
 #include <fstream>
-#include <strstream>
+#include <sstream>
 
 // For IRIX
 namespace std {}
@@ -61,7 +61,7 @@ QpIStream::QpIStream(unsigned char* pBuffer, unsigned int pLen)
    , cOffset(0L)
    , cStreamBuf(0)
 {
-   cStreamBuf = new std::strstreambuf (pBuffer, pLen);
+   cStreamBuf = new std::stringbuf ((char*)(pBuffer)); //cIn will read into char anyway....
 
    cIn = new istream(cStreamBuf);
 }
diff --git a/lib/kross/python/cxx/Config.hxx b/lib/kross/python/cxx/Config.hxx
index 65bbc2d..7959c40 100644
--- a/lib/kross/python/cxx/Config.hxx
+++ b/lib/kross/python/cxx/Config.hxx
@@ -30,45 +30,4 @@
 #  define random_access_iterator_parent(itemtype) std::random_access_iterator<itemtype, int>
 #endif
 
-//
-//	Which C++ standard is in use?
-//
-#if defined( _MSC_VER )
-#  if _MSC_VER <= 1200
-// MSVC++ 6.0
-#    define PYCXX_ISO_CPP_LIB 0
-#    define STR_STREAM <strstream>
-#    define TEMPLATE_TYPENAME class
-#  else
-#    define PYCXX_ISO_CPP_LIB 1
-#    define STR_STREAM <sstream>
-#    define TEMPLATE_TYPENAME typename
-#  endif
-#elif defined( __GNUC__ )
-#  if __GNUC__ >= 3
-#    define PYCXX_ISO_CPP_LIB 1
-#    define STR_STREAM <sstream>
-#    define TEMPLATE_TYPENAME typename
-#  else
-#    define PYCXX_ISO_CPP_LIB 0
-#    define STR_STREAM <strstream>
-#    define TEMPLATE_TYPENAME class
-#  endif
-#endif
-
-#if PYCXX_ISO_CPP_LIB
-#    define STR_STREAM <sstream>
-#    define OSTRSTREAM ostringstream
-#    define EXPLICIT_TYPENAME typename
-#    define EXPLICIT_CLASS class
-#    define TEMPLATE_TYPENAME typename
-#else
-#    define STR_STREAM <strstream>
-#    define OSTRSTREAM ostrstream
-#    define EXPLICIT_TYPENAME
-#    define EXPLICIT_CLASS
-#    define TEMPLATE_TYPENAME class
-#endif
-
-
 #endif //  __PyCXX_config_hh__
diff --git a/lib/kross/python/cxx/Extensions.hxx b/lib/kross/python/cxx/Extensions.hxx
index 69ce9a1..99889ec 100644
--- a/lib/kross/python/cxx/Extensions.hxx
+++ b/lib/kross/python/cxx/Extensions.hxx
@@ -158,7 +158,7 @@ namespace Py
 	extern "C" void do_not_dealloc( void * );
 	
 	
-	template<TEMPLATE_TYPENAME T>
+	template<typename T>
 	class ExtensionModule : public ExtensionModuleBase
 		{
 	public:
@@ -213,7 +213,7 @@ namespace Py
 			// so that we get called back at the function in T.
 			//
 			method_map_t &mm = methods();
-			EXPLICIT_TYPENAME method_map_t::iterator i;
+			typename method_map_t::iterator i;
 			
 			for( i=mm.begin(); i != mm.end(); ++i )
 				{
@@ -434,7 +434,7 @@ namespace Py
 		static PyObject *method_call_handler( PyObject *self, PyObject *args );
 		};
 	
-	template<TEMPLATE_TYPENAME T>
+	template<typename T>
 	class PythonExtension: public PythonExtensionBase 
 		{
 	public:
@@ -548,7 +548,7 @@ namespace Py
 				{
 				List methods;
 				
-				for( EXPLICIT_TYPENAME method_map_t::iterator i = mm.begin(); i != mm.end(); ++i )
+				for( typename method_map_t::iterator i = mm.begin(); i != mm.end(); ++i )
 					methods.append( String( (*i).first ) );
 				
 				return methods;
@@ -701,7 +701,7 @@ namespace Py
 	//
 	// ExtensionObject<T> is an Object that will accept only T's.
 	//
-	template<TEMPLATE_TYPENAME T>
+	template<typename T>
 	class ExtensionObject: public Object
 		{
 	public:
diff --git a/lib/kross/python/cxx/Objects.hxx b/lib/kross/python/cxx/Objects.hxx
index 4164832..28662d4 100644
--- a/lib/kross/python/cxx/Objects.hxx
+++ b/lib/kross/python/cxx/Objects.hxx
@@ -17,7 +17,7 @@
 
 
 #include <iostream>
-#include STR_STREAM
+#include <sstream>
 #include <string>
 #include <iterator>
 #include <utility>
@@ -30,10 +30,10 @@ namespace Py
 	// Forward declarations
 	class Object;
 	class Type;
-	template<TEMPLATE_TYPENAME T> class SeqBase;
+	template<typename T> class SeqBase;
 	class String;
     class List;
-	template<TEMPLATE_TYPENAME T> class MapBase;
+	template<typename T> class MapBase;
 
 	// new_reference_to also overloaded below on Object
 	inline PyObject* new_reference_to(PyObject* p)
@@ -837,7 +837,7 @@ namespace Py
 	// Changing them to Object(x[i]) helps the compiler to understand that the
 	// conversion of a seqref to an Object is wanted.
 
-	template<TEMPLATE_TYPENAME T>
+	template<typename T>
 	class seqref
 		{
 	protected:
@@ -1027,7 +1027,7 @@ namespace Py
 	// class SeqBase<T>
 	// ...the base class for all sequence types
 
-	template<TEMPLATE_TYPENAME T>
+	template<typename T>
 	class SeqBase: public Object
 		{
 	public:
@@ -1289,7 +1289,7 @@ namespace Py
 
 			std::string diagnose() const
 				{
-				std::OSTRSTREAM oss;
+				std::ostringstream oss;
 				oss << "iterator diagnosis " << seq << ", " << count << std::ends;
 				return std::string(oss.str());
 				}
@@ -1436,19 +1436,19 @@ namespace Py
 	// Here's an important typedef you might miss if reading too fast...
 	typedef SeqBase<Object> Sequence;
 
-	template <TEMPLATE_TYPENAME T> bool operator==(const EXPLICIT_TYPENAME SeqBase<T>::iterator& left, const EXPLICIT_TYPENAME SeqBase<T>::iterator& right);
-	template <TEMPLATE_TYPENAME T> bool operator!=(const EXPLICIT_TYPENAME SeqBase<T>::iterator& left, const EXPLICIT_TYPENAME SeqBase<T>::iterator& right);
-	template <TEMPLATE_TYPENAME T> bool operator< (const EXPLICIT_TYPENAME SeqBase<T>::iterator& left, const EXPLICIT_TYPENAME SeqBase<T>::iterator& right);
-	template <TEMPLATE_TYPENAME T> bool operator> (const EXPLICIT_TYPENAME SeqBase<T>::iterator& left, const EXPLICIT_TYPENAME SeqBase<T>::iterator& right);
-	template <TEMPLATE_TYPENAME T> bool operator<=(const EXPLICIT_TYPENAME SeqBase<T>::iterator& left, const EXPLICIT_TYPENAME SeqBase<T>::iterator& right);
-	template <TEMPLATE_TYPENAME T> bool operator>=(const EXPLICIT_TYPENAME SeqBase<T>::iterator& left, const EXPLICIT_TYPENAME SeqBase<T>::iterator& right);
+	template <typename T> bool operator==(const typename SeqBase<T>::iterator& left, const typename SeqBase<T>::iterator& right);
+	template <typename T> bool operator!=(const typename SeqBase<T>::iterator& left, const typename SeqBase<T>::iterator& right);
+	template <typename T> bool operator< (const typename SeqBase<T>::iterator& left, const typename SeqBase<T>::iterator& right);
+	template <typename T> bool operator> (const typename SeqBase<T>::iterator& left, const typename SeqBase<T>::iterator& right);
+	template <typename T> bool operator<=(const typename SeqBase<T>::iterator& left, const typename SeqBase<T>::iterator& right);
+	template <typename T> bool operator>=(const typename SeqBase<T>::iterator& left, const typename SeqBase<T>::iterator& right);
 
-	template <TEMPLATE_TYPENAME T> bool operator==(const EXPLICIT_TYPENAME SeqBase<T>::const_iterator& left, const EXPLICIT_TYPENAME SeqBase<T>::const_iterator& right);
-	template <TEMPLATE_TYPENAME T> bool operator!=(const EXPLICIT_TYPENAME SeqBase<T>::const_iterator& left, const EXPLICIT_TYPENAME SeqBase<T>::const_iterator& right);
-	template <TEMPLATE_TYPENAME T> bool operator< (const EXPLICIT_TYPENAME SeqBase<T>::const_iterator& left, const EXPLICIT_TYPENAME SeqBase<T>::const_iterator& right);
-	template <TEMPLATE_TYPENAME T> bool operator> (const EXPLICIT_TYPENAME SeqBase<T>::const_iterator& left, const EXPLICIT_TYPENAME SeqBase<T>::const_iterator& right);
-	template <TEMPLATE_TYPENAME T> bool operator<=(const EXPLICIT_TYPENAME SeqBase<T>::const_iterator& left, const EXPLICIT_TYPENAME SeqBase<T>::const_iterator& right);
-	template <TEMPLATE_TYPENAME T> bool operator>=(const EXPLICIT_TYPENAME SeqBase<T>::const_iterator& left, const EXPLICIT_TYPENAME SeqBase<T>::const_iterator& right);
+	template <typename T> bool operator==(const typename SeqBase<T>::const_iterator& left, const typename SeqBase<T>::const_iterator& right);
+	template <typename T> bool operator!=(const typename SeqBase<T>::const_iterator& left, const typename SeqBase<T>::const_iterator& right);
+	template <typename T> bool operator< (const typename SeqBase<T>::const_iterator& left, const typename SeqBase<T>::const_iterator& right);
+	template <typename T> bool operator> (const typename SeqBase<T>::const_iterator& left, const typename SeqBase<T>::const_iterator& right);
+	template <typename T> bool operator<=(const typename SeqBase<T>::const_iterator& left, const typename SeqBase<T>::const_iterator& right);
+	template <typename T> bool operator>=(const typename SeqBase<T>::const_iterator& left, const typename SeqBase<T>::const_iterator& right);
 
 
 	extern bool operator==(const Sequence::iterator& left, const Sequence::iterator& right);
@@ -1916,7 +1916,7 @@ namespace Py
 
 	// Mappings
 	// ==================================================
-	template<TEMPLATE_TYPENAME T>
+	template<typename T>
 	class mapref
 		{
 	protected:
@@ -2085,7 +2085,7 @@ namespace Py
 		return true;    // not completed.
 		}
 
-	template<TEMPLATE_TYPENAME T>
+	template<typename T>
 	class MapBase: public Object
 		{
 	protected:
@@ -2372,7 +2372,7 @@ namespace Py
 
 			std::string diagnose() const
 				{
-				std::OSTRSTREAM oss;
+				std::ostringstream oss;
 				oss << "iterator diagnosis " << map << ", " << pos << std::ends;
 				return std::string(oss.str());
 				}
@@ -2477,10 +2477,10 @@ namespace Py
 
 	typedef MapBase<Object> Mapping;
 
-	template <TEMPLATE_TYPENAME T> bool operator==(const EXPLICIT_TYPENAME MapBase<T>::iterator& left, const EXPLICIT_TYPENAME MapBase<T>::iterator& right);
-	template <TEMPLATE_TYPENAME T> bool operator!=(const EXPLICIT_TYPENAME MapBase<T>::iterator& left, const EXPLICIT_TYPENAME MapBase<T>::iterator& right);
-	template <TEMPLATE_TYPENAME T> bool operator==(const EXPLICIT_TYPENAME MapBase<T>::const_iterator& left, const EXPLICIT_TYPENAME MapBase<T>::const_iterator& right);
-	template <TEMPLATE_TYPENAME T> bool operator!=(const EXPLICIT_TYPENAME MapBase<T>::const_iterator& left, const EXPLICIT_TYPENAME MapBase<T>::const_iterator& right);
+	template <typename T> bool operator==(const typename MapBase<T>::iterator& left, const typename MapBase<T>::iterator& right);
+	template <typename T> bool operator!=(const typename MapBase<T>::iterator& left, const typename MapBase<T>::iterator& right);
+	template <typename T> bool operator==(const typename MapBase<T>::const_iterator& left, const typename MapBase<T>::const_iterator& right);
+	template <typename T> bool operator!=(const typename MapBase<T>::const_iterator& left, const typename MapBase<T>::const_iterator& right);
 
 	extern bool operator==(const Mapping::iterator& left, const Mapping::iterator& right);
 	extern bool operator!=(const Mapping::iterator& left, const Mapping::iterator& right);
@@ -2787,13 +2787,13 @@ namespace Py
 
 
 
-template<TEMPLATE_TYPENAME T>
+template<typename T>
 String seqref<T>::str () const
 			{
 			return the_item.str();
 			}
 
-template<TEMPLATE_TYPENAME T>
+template<typename T>
 String seqref<T>::repr () const
 			{
 			return the_item.repr();
-- 
cgit v1.1

openSUSE Build Service is sponsored by