From 3229976e3bb36992f3da5597649a599ed5625135 Mon Sep 17 00:00:00 2001 From: Marcelo Matus Date: Mon, 28 Nov 2005 17:31:05 +0000 Subject: [PATCH] safer and cleaner as_voidptr/as_voidptrptr macros git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@7895 626c5289-ae23-0410-ae9c-e8d60b6d4f22 --- SWIG/Lib/typemaps/swigmacros.swg | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/SWIG/Lib/typemaps/swigmacros.swg b/SWIG/Lib/typemaps/swigmacros.swg index 1564a4487..70ebdf31d 100644 --- a/SWIG/Lib/typemaps/swigmacros.swg +++ b/SWIG/Lib/typemaps/swigmacros.swg @@ -123,17 +123,24 @@ nocppval # define %static_cast(a,Type...) static_cast(a) # define %reinterpret_cast(a,Type...) reinterpret_cast(a) # define %numeric_cast(a,Type...) static_cast(a) -# define %as_voidptr(a) const_cast(static_cast(a)) -# define %as_voidptrptr(a) reinterpret_cast(a) #else /* C case */ # define %const_cast(a,Type...) (Type)(a) # define %static_cast(a,Type...) (Type)(a) # define %reinterpret_cast(a,Type...) (Type)(a) # define %numeric_cast(a,Type...) (Type)(a) -# define %as_voidptr(a) (void *)(a) -# define %as_voidptrptr(a) (void **)(a) #endif /* __cplusplus */ + +#define %as_voidptr(a) SWIG_as_voidptr(a) +#define %as_voidptrptr(a) SWIG_as_voidptrptr(a) + +%insert("header") { + %define_as(SWIG_as_voidptr(a), %const_cast(%static_cast(a,const void *), void *)) + %define_as(SWIG_as_voidptrptr(a), (%as_voidptr(*a),%reinterpret_cast(a, void**))) +} + + + /* ----------------------------------------------------------------------------- * Allocating/freeing elements * ----------------------------------------------------------------------------- */