Switch from strstream to sstream.

Signed-off-by: Michele Calgaro <michele.calgaro@yahoo.it>
(cherry picked from commit 7a7c17092f)
pull/8/head
Michele Calgaro 7 years ago
parent cbc6165918
commit f3e216f001
Signed by: MicheleC
GPG Key ID: 2A75B7CA8ADED5CF

@ -1,7 +1,7 @@
#include <qpro/common.h> #include <qpro/common.h>
#include <iostream> #include <iostream>
#include <strstream> #include <sstream>
#include <string.h> #include <string.h>
@ -474,30 +474,26 @@ void
QpFormula::floatFuncReal(const char*) QpFormula::floatFuncReal(const char*)
{ {
TQP_INT64 lFloat; TQP_INT64 lFloat;
std::ostrstream lNum; std::ostringstream lNum;
cFormula >> lFloat; cFormula >> lFloat;
lNum << lFloat << ends; lNum << lFloat << ends;
cStack.push( lNum.str() ); cStack.push( lNum.str().c_str() );
lNum.rdbuf()->freeze(0);
} }
void void
QpFormula::intFuncReal(const char*) QpFormula::intFuncReal(const char*)
{ {
TQP_INT16 lInt; TQP_INT16 lInt;
std::ostrstream lNum; std::ostringstream lNum;
cFormula >> lInt; cFormula >> lInt;
lNum << lInt << ends; lNum << lInt << ends;
cStack.push( lNum.str() ); cStack.push( lNum.str().c_str() );
lNum.rdbuf()->freeze(0);
} }
void void

@ -10,7 +10,7 @@
// ----------------------------------------------------------------------- // -----------------------------------------------------------------------
#include <iomanip> #include <iomanip>
#include <strstream> #include <sstream>
void void
Charout(ostream& pOut, unsigned char pChar) Charout(ostream& pOut, unsigned char pChar)
@ -32,7 +32,7 @@ Hexout(ostream& pOut, unsigned char pChar)
int int
Hexout(char* pChar, int pLen) Hexout(char* pChar, int pLen)
{ {
std::ostrstream* lOStr = new std::ostrstream; std::ostringstream* lOStr = new std::ostringstream;
while( pLen ) while( pLen )
{ {
@ -57,7 +57,7 @@ Hexout(char* pChar, int pLen)
cerr << lOStr->rdbuf() << endl; cerr << lOStr->rdbuf() << endl;
delete lOStr; delete lOStr;
lOStr = new std::ostrstream; lOStr = new std::ostringstream;
} }
delete lOStr; delete lOStr;
@ -200,7 +200,7 @@ QpRecCell::cellRef(char* pText, QpTableNames& pTable, TQP_INT16 /*pNoteBook*/, T
{ {
//??? cope with relative/absolute references //??? 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 lPageRelative = pRow & 0x8000;
int lColRelative = pRow & 0x4000; int lColRelative = pRow & 0x4000;
int lRowRelative = pRow & 0x2000; int lRowRelative = pRow & 0x2000;

@ -32,7 +32,7 @@ QpIStream::~QpIStream()
#else #else
#include <string> #include <string>
#include <fstream> #include <fstream>
#include <strstream> #include <sstream>
// For IRIX // For IRIX
namespace std {} namespace std {}
@ -61,7 +61,7 @@ QpIStream::QpIStream(unsigned char* pBuffer, unsigned int pLen)
, cOffset(0L) , cOffset(0L)
, cStreamBuf(0) , cStreamBuf(0)
{ {
cStreamBuf = new std::strstreambuf (pBuffer, pLen); cStreamBuf = new std::stringbuf ((char*)(pBuffer)); //cIn will read into char anyway....
cIn = new istream(cStreamBuf); cIn = new istream(cStreamBuf);
} }

@ -30,45 +30,4 @@
# define random_access_iterator_parent(itemtype) std::random_access_iterator<itemtype, int> # define random_access_iterator_parent(itemtype) std::random_access_iterator<itemtype, int>
#endif #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__ #endif // __PyCXX_config_hh__

@ -158,7 +158,7 @@ namespace Py
extern "C" void do_not_dealloc( void * ); extern "C" void do_not_dealloc( void * );
template<TEMPLATE_TYPENAME T> template<typename T>
class ExtensionModule : public ExtensionModuleBase class ExtensionModule : public ExtensionModuleBase
{ {
public: public:
@ -213,7 +213,7 @@ namespace Py
// so that we get called back at the function in T. // so that we get called back at the function in T.
// //
method_map_t &mm = methods(); 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 ) for( i=mm.begin(); i != mm.end(); ++i )
{ {
@ -434,7 +434,7 @@ namespace Py
static PyObject *method_call_handler( PyObject *self, PyObject *args ); static PyObject *method_call_handler( PyObject *self, PyObject *args );
}; };
template<TEMPLATE_TYPENAME T> template<typename T>
class PythonExtension: public PythonExtensionBase class PythonExtension: public PythonExtensionBase
{ {
public: public:
@ -548,7 +548,7 @@ namespace Py
{ {
List methods; 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 ) ); methods.append( String( (*i).first ) );
return methods; return methods;
@ -701,7 +701,7 @@ namespace Py
// //
// ExtensionObject<T> is an Object that will accept only T's. // ExtensionObject<T> is an Object that will accept only T's.
// //
template<TEMPLATE_TYPENAME T> template<typename T>
class ExtensionObject: public Object class ExtensionObject: public Object
{ {
public: public:

@ -17,7 +17,7 @@
#include <iostream> #include <iostream>
#include STR_STREAM #include <sstream>
#include <string> #include <string>
#include <iterator> #include <iterator>
#include <utility> #include <utility>
@ -30,10 +30,10 @@ namespace Py
// Forward declarations // Forward declarations
class Object; class Object;
class Type; class Type;
template<TEMPLATE_TYPENAME T> class SeqBase; template<typename T> class SeqBase;
class String; class String;
class List; class List;
template<TEMPLATE_TYPENAME T> class MapBase; template<typename T> class MapBase;
// new_reference_to also overloaded below on Object // new_reference_to also overloaded below on Object
inline PyObject* new_reference_to(PyObject* p) 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 // Changing them to Object(x[i]) helps the compiler to understand that the
// conversion of a seqref to an Object is wanted. // conversion of a seqref to an Object is wanted.
template<TEMPLATE_TYPENAME T> template<typename T>
class seqref class seqref
{ {
protected: protected:
@ -1027,7 +1027,7 @@ namespace Py
// class SeqBase<T> // class SeqBase<T>
// ...the base class for all sequence types // ...the base class for all sequence types
template<TEMPLATE_TYPENAME T> template<typename T>
class SeqBase: public Object class SeqBase: public Object
{ {
public: public:
@ -1289,7 +1289,7 @@ namespace Py
std::string diagnose() const std::string diagnose() const
{ {
std::OSTRSTREAM oss; std::ostringstream oss;
oss << "iterator diagnosis " << seq << ", " << count << std::ends; oss << "iterator diagnosis " << seq << ", " << count << std::ends;
return std::string(oss.str()); return std::string(oss.str());
} }
@ -1436,19 +1436,19 @@ namespace Py
// Here's an important typedef you might miss if reading too fast... // Here's an important typedef you might miss if reading too fast...
typedef SeqBase<Object> Sequence; 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 <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>::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 <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 <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 <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 <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 <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 <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 <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 <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 <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 <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);
extern bool operator==(const Sequence::iterator& left, const Sequence::iterator& right); extern bool operator==(const Sequence::iterator& left, const Sequence::iterator& right);
@ -1916,7 +1916,7 @@ namespace Py
// Mappings // Mappings
// ================================================== // ==================================================
template<TEMPLATE_TYPENAME T> template<typename T>
class mapref class mapref
{ {
protected: protected:
@ -2085,7 +2085,7 @@ namespace Py
return true; // not completed. return true; // not completed.
} }
template<TEMPLATE_TYPENAME T> template<typename T>
class MapBase: public Object class MapBase: public Object
{ {
protected: protected:
@ -2372,7 +2372,7 @@ namespace Py
std::string diagnose() const std::string diagnose() const
{ {
std::OSTRSTREAM oss; std::ostringstream oss;
oss << "iterator diagnosis " << map << ", " << pos << std::ends; oss << "iterator diagnosis " << map << ", " << pos << std::ends;
return std::string(oss.str()); return std::string(oss.str());
} }
@ -2477,10 +2477,10 @@ namespace Py
typedef MapBase<Object> Mapping; 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 <typename T> bool operator==(const typename MapBase<T>::iterator& left, const 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 <typename T> bool operator!=(const typename MapBase<T>::iterator& left, const 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 <typename T> bool operator==(const typename MapBase<T>::const_iterator& left, const 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>::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);
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 String seqref<T>::str () const
{ {
return the_item.str(); return the_item.str();
} }
template<TEMPLATE_TYPENAME T> template<typename T>
String seqref<T>::repr () const String seqref<T>::repr () const
{ {
return the_item.repr(); return the_item.repr();

Loading…
Cancel
Save