Index: swig/Lib/python/std_common.i |
=================================================================== |
--- swig/Lib/python/std_common.i (revision 0) |
+++ swig/Lib/python/std_common.i (revision 0) |
@@ -0,0 +1,44 @@ |
+%include <std/std_except.i> |
+%include <pystdcommon.swg> |
+ |
+ |
+/* |
+ Generate the traits for a 'primitive' type, such as 'double', |
+ for which the SWIG_AsVal and SWIG_From methods are already defined. |
+*/ |
+ |
+%define %traits_ptypen(Type...) |
+ %fragment(SWIG_Traits_frag(Type),"header", |
+ fragment=SWIG_AsVal_frag(Type), |
+ fragment=SWIG_From_frag(Type), |
+ fragment="StdTraits") { |
+namespace swig { |
+ template <> struct traits<Type > { |
+ typedef value_category category; |
+ static const char* type_name() { return #Type; } |
+ }; |
+ template <> struct traits_asval<Type > { |
+ typedef Type value_type; |
+ static int asval(PyObject *obj, value_type *val) { |
+ return SWIG_AsVal(Type)(obj, val); |
+ } |
+ }; |
+ template <> struct traits_from<Type > { |
+ typedef Type value_type; |
+ static PyObject *from(const value_type& val) { |
+ return SWIG_From(Type)(val); |
+ } |
+ }; |
+} |
+} |
+%enddef |
+ |
+ |
+%include <std/std_common.i> |
+ |
+// |
+// Generates the traits for all the known primitive |
+// C++ types (int, double, ...) |
+// |
+%apply_cpptypes(%traits_ptypen); |
+ |