summaryrefslogtreecommitdiffstats
path: root/lib/kross
diff options
context:
space:
mode:
Diffstat (limited to 'lib/kross')
-rw-r--r--lib/kross/python/cxx/Config.hxx41
-rw-r--r--lib/kross/python/cxx/Extensions.hxx10
-rw-r--r--lib/kross/python/cxx/Objects.hxx54
3 files changed, 32 insertions, 73 deletions
diff --git a/lib/kross/python/cxx/Config.hxx b/lib/kross/python/cxx/Config.hxx
index 65bbc2d3..7959c403 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 69ce9a14..99889ec7 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 41648320..28662d4f 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();