scilab: support of std::deque
This commit is contained in:
parent
7120e576c8
commit
8701e6f843
5 changed files with 64 additions and 8 deletions
|
|
@ -836,6 +836,7 @@ The following containers are usable:
|
|||
<ul>
|
||||
<li><tt>std::vector</tt></li>
|
||||
<li><tt>std::list</tt></li>
|
||||
<li><tt>std::deque</tt></li>
|
||||
<li><tt>std::set</tt></li>
|
||||
</ul>
|
||||
|
||||
|
|
@ -859,18 +860,18 @@ Some typemaps between Scilab and the STL are available.
|
|||
<li>
|
||||
|
||||
<p>
|
||||
A STL vector or list is mapped from/to a Scilab matrix or list, depending on type.
|
||||
A STL vector/list/deque is mapped from/to a Scilab matrix or list, depending on type.
|
||||
<p>
|
||||
|
||||
<table summary="Typemaps vector-list", border="1">
|
||||
<tr>
|
||||
<th>STL type</th>
|
||||
<th>Scilab type</th>
|
||||
<tr><td>vector/list of int</td><td>int matrix</td></tr>
|
||||
<tr><td>vector/list of double</td><td>double matrix</td></tr>
|
||||
<tr><td>vector/list of string</td><td>string matrix</td></tr>
|
||||
<tr><td>vector/list of bool</td><td>bool matrix</td></tr>
|
||||
<tr><td>vector/list of pointer</td><td>pointer list</td></tr>
|
||||
<tr><td>vector/list/deque of int</td><td>int matrix</td></tr>
|
||||
<tr><td>vector/list/deque of double</td><td>double matrix</td></tr>
|
||||
<tr><td>vector/list/deque of string</td><td>string matrix</td></tr>
|
||||
<tr><td>vector/list/deque of bool</td><td>bool matrix</td></tr>
|
||||
<tr><td>vector/list/deque of pointer</td><td>pointer list</td></tr>
|
||||
</table>
|
||||
|
||||
</li>
|
||||
|
|
|
|||
|
|
@ -89,6 +89,19 @@ namespace std {
|
|||
T ref_list(const std::list<T>& container) {
|
||||
return sequence_container<std::list<T> >::ref_container(container);
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
std::deque<T> ret_deque(const T value1, const T value2) {
|
||||
return sequence_container<std::deque<T> >::ret_container(value1, value2);
|
||||
}
|
||||
template<typename T>
|
||||
T val_deque(const std::deque<T> container) {
|
||||
return sequence_container<std::deque<T> >::val_container(container);
|
||||
}
|
||||
template<typename T>
|
||||
T ref_deque(const std::deque<T>& container) {
|
||||
return sequence_container<std::deque<T> >::ref_container(container);
|
||||
}
|
||||
}
|
||||
%}
|
||||
|
||||
|
|
@ -97,6 +110,7 @@ namespace std
|
|||
{
|
||||
%template(TYPE ## _vector) std::vector<TYPE>;
|
||||
%template(TYPE ## _list) std::list<TYPE>;
|
||||
%template(TYPE ## _deque) std::deque<TYPE>;
|
||||
}
|
||||
%enddef
|
||||
|
||||
|
|
@ -109,6 +123,9 @@ namespace std
|
|||
%template(ret_ ## TYPE ## _list) ret_list<TYPE>;
|
||||
%template(val_ ## TYPE ## _list) val_list<TYPE>;
|
||||
%template(ref_ ## TYPE ## _list) ref_list<TYPE>;
|
||||
%template(ret_ ## TYPE ## _deque) ret_deque<TYPE>;
|
||||
%template(val_ ## TYPE ## _deque) val_deque<TYPE>;
|
||||
%template(ref_ ## TYPE ## _deque) ref_deque<TYPE>;
|
||||
}
|
||||
%enddef
|
||||
|
||||
|
|
|
|||
|
|
@ -92,6 +92,13 @@ testSequenceContainer("list", "string", "a", "b", "ab");
|
|||
testSequenceContainer("list", "bool", %T, %F, %T);
|
||||
testSequenceContainerPtr("list", 1, 3, 4);
|
||||
|
||||
// test deque
|
||||
testSequenceContainer("deque", "int", 1, 2, 3);
|
||||
testSequenceContainer("deque", "double", 2., 3., 5.);
|
||||
testSequenceContainer("deque", "string", "a", "b", "ab");
|
||||
testSequenceContainer("deque", "bool", %T, %F, %T);
|
||||
testSequenceContainerPtr("deque", 1, 3, 4);
|
||||
|
||||
exec("swigtest.quit", -1);
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1 +1,31 @@
|
|||
%include <std/_std_deque.i>
|
||||
/*
|
||||
*
|
||||
* C++ type : STL deque
|
||||
* Scilab type : matrix (for vectors of primitive types) or list (for sets of all other types : pointers...)
|
||||
*
|
||||
*/
|
||||
|
||||
%fragment("StdDequeTraits","header",fragment="StdSequenceTraits")
|
||||
%{
|
||||
namespace swig {
|
||||
template <class T>
|
||||
struct traits_asptr<std::deque<T> > {
|
||||
static int asptr(const SwigSciObject &obj, std::deque<T> **deq) {
|
||||
return traits_asptr_stdseq<std::deque<T> >::asptr(obj, deq);
|
||||
}
|
||||
};
|
||||
|
||||
template <class T>
|
||||
struct traits_from<std::deque<T> > {
|
||||
static SwigSciObject from(const std::deque<T>& deq) {
|
||||
return traits_from_stdseq<std::deque<T> >::from(deq);
|
||||
}
|
||||
};
|
||||
}
|
||||
%}
|
||||
|
||||
|
||||
#define %swig_deque_methods(Type...) %swig_sequence_methods(Type)
|
||||
#define %swig_deque_methods_val(Type...) %swig_sequence_methods_val(Type);
|
||||
|
||||
%include <std/std_deque.i>
|
||||
|
|
|
|||
|
|
@ -2,5 +2,6 @@
|
|||
%include std_common.i
|
||||
%include std_string.i
|
||||
%include std_vector.i
|
||||
%include std_set.i
|
||||
%include std_deque.i
|
||||
%include std_list.i
|
||||
%include std_set.i
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue