From 0d9df55066a4b61e341d3dafd566cae3cc406fd0 Mon Sep 17 00:00:00 2001 From: Marcelo Matus Date: Mon, 15 Nov 2004 22:59:47 +0000 Subject: [PATCH] add back support for specialize_std_vector/list/etc git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@6741 626c5289-ae23-0410-ae9c-e8d60b6d4f22 --- Lib/python/pystdcommon.swg | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/Lib/python/pystdcommon.swg b/Lib/python/pystdcommon.swg index 27cb6916f..dbd4599c1 100644 --- a/Lib/python/pystdcommon.swg +++ b/Lib/python/pystdcommon.swg @@ -228,3 +228,39 @@ std::string SwigString_AsString(PyObject* o) { #endif +%define %specialize_std_container(Type,Check,As,From) +%{ +namespace swig { + template <> struct traits_asval { + typedef Type value_type; + static int asval(PyObject *obj, value_type *val) { + if (Check(obj)) { + *val = As(obj); + return 1; + } + return 0; + } + }; + template <> struct traits_from { + typedef Type value_type; + static PyObject *from(const value_type& val) { + return From(val); + } + }; + + template <> + struct traits_check { + static bool check(PyObject *obj) { + return obj && Check(obj); + } + }; +} +%} +%enddef + + +#define specialize_std_vector(Type,Check,As,From) %specialize_std_container(SWIG_arg(Type),Check,As,From) +#define specialize_std_list(Type,Check,As,From) %specialize_std_container(SWIG_arg(Type),Check,As,From) +#define specialize_std_deque(Type,Check,As,From) %specialize_std_container(SWIG_arg(Type),Check,As,From) +#define specialize_std_set(Type,Check,As,From) %specialize_std_container(SWIG_arg(Type),Check,As,From) +#define specialize_std_multiset(Type,Check,As,From) %specialize_std_container(SWIG_arg(Type),Check,As,From)