From c4381e8d57fa83bff900b31909b668a039e1396b Mon Sep 17 00:00:00 2001 From: Simon Marchetto Date: Wed, 26 Mar 2014 10:26:07 +0100 Subject: [PATCH] scilab: add support for multiset --- Doc/Manual/Scilab.html | 1 + .../test-suite/li_std_container_typemaps.i | 7 +++-- .../li_std_container_typemaps_runme.sci | 1 + Lib/scilab/std_multiset.i | 30 +++++++++++++++++++ Lib/scilab/stl.i | 1 + 5 files changed, 38 insertions(+), 2 deletions(-) create mode 100644 Lib/scilab/std_multiset.i diff --git a/Doc/Manual/Scilab.html b/Doc/Manual/Scilab.html index 7b637fed1..3a809295d 100644 --- a/Doc/Manual/Scilab.html +++ b/Doc/Manual/Scilab.html @@ -1119,6 +1119,7 @@ The list of wrapped sequence containers are: And for associative containers:

diff --git a/Examples/test-suite/li_std_container_typemaps.i b/Examples/test-suite/li_std_container_typemaps.i index 18da98552..3a6a6b74a 100644 --- a/Examples/test-suite/li_std_container_typemaps.i +++ b/Examples/test-suite/li_std_container_typemaps.i @@ -1,4 +1,4 @@ -%module li_std_sequence_container_typemaps +%module li_std_container_typemaps %include stl.i @@ -90,10 +90,10 @@ namespace std %template(TYPE ## _list) std::list; %template(TYPE ## _deque) std::deque; %template(TYPE ## _set) std::set; + %template(TYPE ## _multiset) std::multiset; } %enddef - %define instantiate_containers_functions(TYPE...) namespace std { @@ -109,6 +109,9 @@ namespace std %template(ret_ ## TYPE ## _set) ret_container >; %template(val_ ## TYPE ## _set) val_container >; %template(ref_ ## TYPE ## _set) ref_container >; + %template(ret_ ## TYPE ## _multiset) ret_container >; + %template(val_ ## TYPE ## _multiset) val_container >; + %template(ref_ ## TYPE ## _multiset) ref_container >; } %enddef diff --git a/Examples/test-suite/scilab/li_std_container_typemaps_runme.sci b/Examples/test-suite/scilab/li_std_container_typemaps_runme.sci index a0b9a9bf5..d50338a28 100644 --- a/Examples/test-suite/scilab/li_std_container_typemaps_runme.sci +++ b/Examples/test-suite/scilab/li_std_container_typemaps_runme.sci @@ -99,6 +99,7 @@ testContainer("vector"); testContainer("list"); testContainer("deque"); testContainer("set"); +testContainer("multiset"); exec("swigtest.quit", -1); diff --git a/Lib/scilab/std_multiset.i b/Lib/scilab/std_multiset.i new file mode 100644 index 000000000..67e17926f --- /dev/null +++ b/Lib/scilab/std_multiset.i @@ -0,0 +1,30 @@ +/* + * + * C++ type : STL multiset + * Scilab type : matrix (for primitive types) or list (for pointer types) + * +*/ + +%fragment("StdMultisetTraits", "header", fragment="StdSequenceTraits") +%{ + namespace swig { + template + struct traits_asptr > { + static int asptr(const SwigSciObject &obj, std::multiset **multiset) { + return traits_asptr_stdseq >::asptr(obj, multiset); + } + }; + + template + struct traits_from > { + static SwigSciObject from(const std::multiset& multiset) { + return traits_from_stdseq >::from(multiset); + } + }; + } +%} + +#define %swig_multiset_methods(Set...) %swig_sequence_methods(Type) +#define %swig_multiset_methods_val(Type...) %swig_sequence_methods_val(Type); + +%include diff --git a/Lib/scilab/stl.i b/Lib/scilab/stl.i index c45153791..8dc6a1f62 100644 --- a/Lib/scilab/stl.i +++ b/Lib/scilab/stl.i @@ -5,3 +5,4 @@ %include std_deque.i %include std_list.i %include std_set.i +%include std_multiset.i