From cde464feaeb2ac28e7f99b6a6b6602803f0b30e1 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/SWIG@7895 626c5289-ae23-0410-ae9c-e8d60b6d4f22 --- Lib/typemaps/swigmacros.swg | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/Lib/typemaps/swigmacros.swg b/Lib/typemaps/swigmacros.swg index 1564a4487..70ebdf31d 100644 --- a/Lib/typemaps/swigmacros.swg +++ b/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 * ----------------------------------------------------------------------------- */