more fixes for old Solaris compiler

git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@8839 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
Marcelo Matus 2006-02-18 08:17:23 +00:00
commit b9c30d7738
4 changed files with 31 additions and 11 deletions

View file

@ -20,9 +20,7 @@
# endif
#endif
#if defined(SWIG_EXPORT_ITERATOR_METHODS)
%include <pyiterators.swg>
#endif
/**** The PySequence C++ Wrap ***/
@ -520,7 +518,7 @@ namespace swig
%typemap(out,noblock=1,fragment="PySequence_Cont")
iterator, reverse_iterator, const_iterator, const_reverse_iterator {
$result = SWIG_NewPointerObj(swig::make_output_iterator((const $type &)$1),
$result = SWIG_NewPointerObj(swig::make_output_iterator(%static_cast($1,const $type &)),
swig::PySwigIterator::descriptor(),SWIG_POINTER_OWN);
}
%typemap(out,noblock=1,fragment="PySequence_Cont")

View file

@ -12,9 +12,9 @@
%{
#if defined(__SUNPRO_CC) && defined(_RWSTD_VER)
#define SWIG_STD_NOASSIGN_STL
#define SWIG_STD_NOINSERT_TEMPLATE_STL
#define SWIG_STD_NOITERATOR_TRAITS_STL
# define SWIG_STD_NOASSIGN_STL
# define SWIG_STD_NOINSERT_TEMPLATE_STL
# define SWIG_STD_NOITERATOR_TRAITS_STL
#endif
#if defined(__GNUC__)
@ -40,15 +40,39 @@
#if !defined(SWIG_STD_NOITERATOR_TRAITS_STL)
#include <iterator>
#else
namespace std {
template <class Iterator>
struct iterator_traits {
typedef ptrdiff_t difference_type;
typedef typename Iterator::value_type value_type;
};
#if defined(__SUNPRO_CC) && defined(_RWSTD_VER)
template <class Iterator, class Category,class T, class Reference, class Pointer, class Distance>
struct iterator_traits<__reverse_bi_iterator<Iterator,Category,T,Reference,Pointer,Distance> > {
typedef Distance difference_type;
typedef T value_type;
};
#endif
template <class T>
struct iterator_traits<T*> {
typedef T value_type;
typedef ptrdiff_t difference_type;
};
template<typename _InputIterator>
inline typename iterator_traits<_InputIterator>::difference_type
distance(_InputIterator __first, _InputIterator __last)
{
typename iterator_traits<_InputIterator>::difference_type __n = 0;
while (__first != __last) {
++__first; ++__n;
}
return __n;
}
}
#endif
%}

View file

@ -340,12 +340,10 @@
#include <wchar.h>
#include <limits.h>
#ifndef WCHAR_MIN
#warning "WCHAR_MIN not found, using value 0"
#define WCHAR_MIN 0
# define WCHAR_MIN 0
#endif
#ifndef WCHAR_MAX
#warning "WCHAR_MAX not found, using value 65535"
#define WCHAR_MAX 65535
# define WCHAR_MAX 65535
#endif
%}

View file

@ -48,7 +48,7 @@
Type _v;
int res = swig::asval<Type >(obj, &_v);
if (SWIG_IsOK(res)) {
if (val) *val = %new_copy(_v, value_type);
if (val) *val = new value_type(static_cast<const Type& >(_v));
return SWIG_AddNewMask(res);
}
}