Scilab: fix test case constructor_copy (and others)
Signed-off-by: Simon Marchetto <simon.marchetto@scilab-enterprises.com>
This commit is contained in:
parent
bc73c5877d
commit
45dbdb2776
2 changed files with 23 additions and 66 deletions
|
|
@ -13,6 +13,7 @@
|
||||||
|
|
||||||
%{
|
%{
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
#include <stdio.h>
|
||||||
%}
|
%}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -436,28 +437,19 @@ namespace swig
|
||||||
|
|
||||||
%typemap(out,noblock=1,fragment="SciSequence_Cont")
|
%typemap(out,noblock=1,fragment="SciSequence_Cont")
|
||||||
iterator, reverse_iterator, const_iterator, const_reverse_iterator {
|
iterator, reverse_iterator, const_iterator, const_reverse_iterator {
|
||||||
$result = SWIG_NewPointerObj(swig::make_output_iterator(%static_cast($1,const $type &)),
|
%set_output(SWIG_NewPointerObj(swig::make_output_iterator(%static_cast($1,const $type &)),
|
||||||
swig::SciSwigIterator::descriptor(),SWIG_POINTER_OWN);
|
swig::SciSwigIterator::descriptor(),SWIG_POINTER_OWN));
|
||||||
}
|
}
|
||||||
%typemap(out,fragment="SciSequence_Cont")
|
%typemap(out,fragment="SciSequence_Cont")
|
||||||
std::pair<iterator, iterator>, std::pair<const_iterator, const_iterator> {
|
std::pair<iterator, iterator>, std::pair<const_iterator, const_iterator> {
|
||||||
SciObject_list tmpc;
|
// TODO: return a Scilab list from the pair (see code for Octave)
|
||||||
tmpc.append(SWIG_NewPointerObj(swig::make_output_iterator(%static_cast($1,const $type &).first),
|
|
||||||
swig::SciSwigIterator::descriptor(),SWIG_POINTER_OWN));
|
|
||||||
tmpc.append(SWIG_NewPointerObj(swig::make_output_iterator(%static_cast($1,const $type &).second),
|
|
||||||
swig::SciSwigIterator::descriptor(),SWIG_POINTER_OWN));
|
|
||||||
$result = Cell(tmpc);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
%fragment("SwigPyPairBoolOutputIterator","header",fragment=SWIG_From_frag(bool),fragment="SciSequence_Cont") {}
|
%fragment("SwigPyPairBoolOutputIterator","header",fragment=SWIG_From_frag(bool),fragment="SciSequence_Cont") {}
|
||||||
|
|
||||||
%typemap(out,fragment="SciPairBoolOutputIterator")
|
%typemap(out,fragment="SciPairBoolOutputIterator")
|
||||||
std::pair<iterator, bool>, std::pair<const_iterator, bool> {
|
std::pair<iterator, bool>, std::pair<const_iterator, bool> {
|
||||||
SciObject_list tmpc;
|
// TODO: return a Scilab list from the pair (see code for Octave)
|
||||||
tmpc.append(SWIG_NewPointerObj(swig::make_output_iterator(%static_cast($1,const $type &).first),
|
|
||||||
swig::SciSwigIterator::descriptor(),SWIG_POINTER_OWN));
|
|
||||||
tmpc.append(SWIG_From(bool)(%static_cast($1,const $type &).second));
|
|
||||||
$result = Cell(tmpc);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
%typemap(in,noblock=1,fragment="SciSequence_Cont")
|
%typemap(in,noblock=1,fragment="SciSequence_Cont")
|
||||||
|
|
@ -465,7 +457,7 @@ namespace swig
|
||||||
reverse_iterator(swig::SciSwigIterator *iter = 0, int res),
|
reverse_iterator(swig::SciSwigIterator *iter = 0, int res),
|
||||||
const_iterator(swig::SciSwigIterator *iter = 0, int res),
|
const_iterator(swig::SciSwigIterator *iter = 0, int res),
|
||||||
const_reverse_iterator(swig::SciSwigIterator *iter = 0, int res) {
|
const_reverse_iterator(swig::SciSwigIterator *iter = 0, int res) {
|
||||||
res = SWIG_ConvertPtr($input, %as_voidptrptr(&iter), swig::SciSwigIterator::descriptor(), 0);
|
res = SWIG_ConvertPtr((SciObject)$input, %as_voidptrptr(&iter), swig::SciSwigIterator::descriptor(), 0);
|
||||||
if (!SWIG_IsOK(res) || !iter) {
|
if (!SWIG_IsOK(res) || !iter) {
|
||||||
%argument_fail(SWIG_TypeError, "$type", $symname, $argnum);
|
%argument_fail(SWIG_TypeError, "$type", $symname, $argnum);
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -481,7 +473,7 @@ namespace swig
|
||||||
%typecheck(%checkcode(ITERATOR),noblock=1,fragment="SciSequence_Cont")
|
%typecheck(%checkcode(ITERATOR),noblock=1,fragment="SciSequence_Cont")
|
||||||
iterator, reverse_iterator, const_iterator, const_reverse_iterator {
|
iterator, reverse_iterator, const_iterator, const_reverse_iterator {
|
||||||
swig::SciSwigIterator *iter = 0;
|
swig::SciSwigIterator *iter = 0;
|
||||||
int res = SWIG_ConvertPtr($input, %as_voidptrptr(&iter), swig::SciSwigIterator::descriptor(), 0);
|
int res = SWIG_ConvertPtr((SciObject)$input, %as_voidptrptr(&iter), swig::SciSwigIterator::descriptor(), 0);
|
||||||
$1 = (SWIG_IsOK(res) && iter && (dynamic_cast<swig::SciSwigIterator_T<$type > *>(iter) != 0));
|
$1 = (SWIG_IsOK(res) && iter && (dynamic_cast<swig::SciSwigIterator_T<$type > *>(iter) != 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -561,30 +553,7 @@ namespace swig {
|
||||||
typedef T value_type;
|
typedef T value_type;
|
||||||
|
|
||||||
static int asptr(const SciObject& obj, sequence **seq) {
|
static int asptr(const SciObject& obj, sequence **seq) {
|
||||||
if (!obj.is_defined() || Swig::swig_value_deref(obj)) {
|
// TODO: convert input Scilab list (or pointer) to sequence.
|
||||||
sequence *p;
|
|
||||||
if (SWIG_ConvertPtr(obj,(void**)&p,
|
|
||||||
swig::type_info<sequence>(),0) == SWIG_OK) {
|
|
||||||
if (seq) *seq = p;
|
|
||||||
return SWIG_OLDOBJ;
|
|
||||||
}
|
|
||||||
} else if (obj.is_cell()) {
|
|
||||||
try {
|
|
||||||
SciSequence_Cont<value_type> sciseq(obj);
|
|
||||||
if (seq) {
|
|
||||||
sequence *pseq = new sequence();
|
|
||||||
assign(sciseq, pseq);
|
|
||||||
*seq = pseq;
|
|
||||||
return SWIG_NEWOBJ;
|
|
||||||
} else {
|
|
||||||
return sciseq.check() ? SWIG_OK : SWIG_ERROR;
|
|
||||||
}
|
|
||||||
} catch (std::exception& e) {
|
|
||||||
if (seq&&!error_state)
|
|
||||||
error("swig type error: %s",e.what());
|
|
||||||
return SWIG_ERROR;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return SWIG_ERROR;
|
return SWIG_ERROR;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
@ -603,22 +572,9 @@ namespace swig {
|
||||||
return SWIG_NewPointerObj(new sequence(seq), desc, SWIG_POINTER_OWN);
|
return SWIG_NewPointerObj(new sequence(seq), desc, SWIG_POINTER_OWN);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
size_type size = seq.size();
|
// TODO: return a Scilab list from the sequence.
|
||||||
if (size <= (size_type)INT_MAX) {
|
return (SciObject)0;
|
||||||
Cell c(size,1);
|
|
||||||
int i = 0;
|
|
||||||
for (const_iterator it = seq.begin();
|
|
||||||
it != seq.end(); ++it, ++i) {
|
|
||||||
c(i) = swig::from<value_type>(*it);
|
|
||||||
}
|
|
||||||
return c;
|
|
||||||
} else {
|
|
||||||
error("swig overflow error: sequence size not valid in Scilab");
|
|
||||||
return SciObject();
|
|
||||||
}
|
|
||||||
return SciObject();
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
namespace swig {
|
namespace swig {
|
||||||
template <class T>
|
template <class T>
|
||||||
struct traits_asptr<std::vector<T> > {
|
struct traits_asptr<std::vector<T> > {
|
||||||
static int asptr(SciObject *obj, std::vector<T> **vec) {
|
static int asptr(const SciObject &obj, std::vector<T> **vec) {
|
||||||
return traits_asptr_stdseq<std::vector<T> >::asptr(obj, vec);
|
return traits_asptr_stdseq<std::vector<T> >::asptr(obj, vec);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
@ -20,6 +20,7 @@
|
||||||
}
|
}
|
||||||
%}
|
%}
|
||||||
|
|
||||||
|
|
||||||
#define %swig_vector_methods(Type...) %swig_sequence_methods(Type)
|
#define %swig_vector_methods(Type...) %swig_sequence_methods(Type)
|
||||||
#define %swig_vector_methods_val(Type...) %swig_sequence_methods_val(Type);
|
#define %swig_vector_methods_val(Type...) %swig_sequence_methods_val(Type);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue