Fix STL wrappers to not generate <: digraphs.
For example std::vector<::X::Y> was sometimes generated, now corrected to std::vector< ::X::Y >.
This commit is contained in:
parent
625a405b8e
commit
6b4e57245d
33 changed files with 339 additions and 303 deletions
|
|
@ -5,6 +5,11 @@ See the RELEASENOTES file for a summary of changes in each release.
|
|||
Version 3.0.8 (in progress)
|
||||
===========================
|
||||
|
||||
2015-12-12: wsfulton
|
||||
Fix STL wrappers to not generate <: digraphs.
|
||||
For example std::vector<::X::Y> was sometimes generated, now
|
||||
corrected to std::vector< ::X::Y >.
|
||||
|
||||
2015-11-25: wsfulton
|
||||
[Ruby] STL ranges and slices fixes.
|
||||
|
||||
|
|
|
|||
|
|
@ -60,3 +60,20 @@ int product3(const std::pair<int, int> *p) {
|
|||
|
||||
%}
|
||||
|
||||
// Test that the digraph <::aa::Holder> is not generated for stl containers
|
||||
%include <std_pair.i>
|
||||
|
||||
%inline %{
|
||||
namespace aa {
|
||||
struct Holder {
|
||||
Holder(int n = 0) : number(n) {}
|
||||
int number;
|
||||
};
|
||||
}
|
||||
%}
|
||||
|
||||
%template(PairTest) std::pair< ::aa::Holder, int >;
|
||||
|
||||
%inline %{
|
||||
std::pair< ::aa::Holder, int > pair1(std::pair< ::aa::Holder, int > x) { return x; }
|
||||
%}
|
||||
|
|
|
|||
|
|
@ -108,3 +108,25 @@ const std::vector<const Struct *> & vecstructconstptr(const std::vector<const St
|
|||
std::vector< swig::LANGUAGE_OBJ > LanguageVector;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
// Test that the digraph <::aa::Holder> is not generated
|
||||
%include <std_vector.i>
|
||||
|
||||
%inline %{
|
||||
namespace aa {
|
||||
struct Holder {
|
||||
Holder(int n = 0) : number(n) {}
|
||||
int number;
|
||||
};
|
||||
}
|
||||
%}
|
||||
|
||||
#if !defined(SWIGOCTAVE)
|
||||
// To fix: something different in Octave is preventing this from working
|
||||
%template(VectorTest) std::vector< ::aa::Holder >;
|
||||
|
||||
%inline %{
|
||||
std::vector< ::aa::Holder > vec1(std::vector< ::aa::Holder > x) { return x; }
|
||||
%}
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -109,8 +109,7 @@ namespace std {
|
|||
}
|
||||
%typemap(out) map<K,T> {
|
||||
SCM alist = SCM_EOL;
|
||||
for (std::map<K,T >::reverse_iterator i=$i.rbegin();
|
||||
i!=$i.rend(); ++i) {
|
||||
for (std::map< K, T >::reverse_iterator i=$i.rbegin(); i!=$i.rend(); ++i) {
|
||||
K* key = new K(i->first);
|
||||
T* val = new T(i->second);
|
||||
SCM k = SWIG_NewPointerObj(key,$descriptor(K *), 1);
|
||||
|
|
@ -251,8 +250,7 @@ namespace std {
|
|||
}
|
||||
SCM keys() {
|
||||
SCM result = SCM_EOL;
|
||||
for (std::map<K,T >::reverse_iterator i=self->rbegin();
|
||||
i!=self->rend(); ++i) {
|
||||
for (std::map< K, T >::reverse_iterator i=self->rbegin(); i!=self->rend(); ++i) {
|
||||
K* key = new K(i->first);
|
||||
SCM k = SWIG_NewPointerObj(key,$descriptor(K *), 1);
|
||||
result = scm_cons(k,result);
|
||||
|
|
@ -338,8 +336,7 @@ namespace std {
|
|||
}
|
||||
%typemap(out) map<K,T> {
|
||||
SCM alist = SCM_EOL;
|
||||
for (std::map<K,T >::reverse_iterator i=$1.rbegin();
|
||||
i!=$1.rend(); ++i) {
|
||||
for (std::map< K, T >::reverse_iterator i=$1.rbegin(); i!=$1.rend(); ++i) {
|
||||
T* val = new T(i->second);
|
||||
SCM k = CONVERT_TO(i->first);
|
||||
SCM x = SWIG_NewPointerObj(val,$descriptor(T *), 1);
|
||||
|
|
@ -471,8 +468,7 @@ namespace std {
|
|||
}
|
||||
SCM keys() {
|
||||
SCM result = SCM_EOL;
|
||||
for (std::map<K,T >::reverse_iterator i=self->rbegin();
|
||||
i!=self->rend(); ++i) {
|
||||
for (std::map< K, T >::reverse_iterator i=self->rbegin(); i!=self->rend(); ++i) {
|
||||
SCM k = CONVERT_TO(i->first);
|
||||
result = scm_cons(k,result);
|
||||
}
|
||||
|
|
@ -552,8 +548,7 @@ namespace std {
|
|||
}
|
||||
%typemap(out) map<K,T> {
|
||||
SCM alist = SCM_EOL;
|
||||
for (std::map<K,T >::reverse_iterator i=$1.rbegin();
|
||||
i!=$1.rend(); ++i) {
|
||||
for (std::map< K, T >::reverse_iterator i=$1.rbegin(); i!=$1.rend(); ++i) {
|
||||
K* key = new K(i->first);
|
||||
SCM k = SWIG_NewPointerObj(key,$descriptor(K *), 1);
|
||||
SCM x = CONVERT_TO(i->second);
|
||||
|
|
@ -683,8 +678,7 @@ namespace std {
|
|||
}
|
||||
SCM keys() {
|
||||
SCM result = SCM_EOL;
|
||||
for (std::map<K,T >::reverse_iterator i=self->rbegin();
|
||||
i!=self->rend(); ++i) {
|
||||
for (std::map< K, T >::reverse_iterator i=self->rbegin(); i!=self->rend(); ++i) {
|
||||
K* key = new K(i->first);
|
||||
SCM k = SWIG_NewPointerObj(key,$descriptor(K *), 1);
|
||||
result = scm_cons(k,result);
|
||||
|
|
@ -769,8 +763,7 @@ namespace std {
|
|||
}
|
||||
%typemap(out) map<K,T> {
|
||||
SCM alist = SCM_EOL;
|
||||
for (std::map<K,T >::reverse_iterator i=$1.rbegin();
|
||||
i!=$1.rend(); ++i) {
|
||||
for (std::map< K, T >::reverse_iterator i=$1.rbegin(); i!=$1.rend(); ++i) {
|
||||
SCM k = CONVERT_K_TO(i->first);
|
||||
SCM x = CONVERT_T_TO(i->second);
|
||||
SCM entry = scm_cons(k,x);
|
||||
|
|
@ -895,8 +888,7 @@ namespace std {
|
|||
}
|
||||
SCM keys() {
|
||||
SCM result = SCM_EOL;
|
||||
for (std::map<K,T >::reverse_iterator i=self->rbegin();
|
||||
i!=self->rend(); ++i) {
|
||||
for (std::map< K, T >::reverse_iterator i=self->rbegin(); i!=self->rend(); ++i) {
|
||||
SCM k = CONVERT_K_TO(i->first);
|
||||
result = scm_cons(k,result);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue