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:
parent
c222ef7cee
commit
b9c30d7738
4 changed files with 31 additions and 11 deletions
|
|
@ -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")
|
||||
|
|
|
|||
|
|
@ -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
|
||||
%}
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
%}
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue