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)
|
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
|
2015-11-25: wsfulton
|
||||||
[Ruby] STL ranges and slices fixes.
|
[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;
|
std::vector< swig::LANGUAGE_OBJ > LanguageVector;
|
||||||
}
|
}
|
||||||
#endif
|
#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> {
|
%typemap(out) map<K,T> {
|
||||||
SCM alist = SCM_EOL;
|
SCM alist = SCM_EOL;
|
||||||
for (std::map<K,T >::reverse_iterator i=$i.rbegin();
|
for (std::map< K, T >::reverse_iterator i=$i.rbegin(); i!=$i.rend(); ++i) {
|
||||||
i!=$i.rend(); ++i) {
|
|
||||||
K* key = new K(i->first);
|
K* key = new K(i->first);
|
||||||
T* val = new T(i->second);
|
T* val = new T(i->second);
|
||||||
SCM k = SWIG_NewPointerObj(key,$descriptor(K *), 1);
|
SCM k = SWIG_NewPointerObj(key,$descriptor(K *), 1);
|
||||||
|
|
@ -251,8 +250,7 @@ namespace std {
|
||||||
}
|
}
|
||||||
SCM keys() {
|
SCM keys() {
|
||||||
SCM result = SCM_EOL;
|
SCM result = SCM_EOL;
|
||||||
for (std::map<K,T >::reverse_iterator i=self->rbegin();
|
for (std::map< K, T >::reverse_iterator i=self->rbegin(); i!=self->rend(); ++i) {
|
||||||
i!=self->rend(); ++i) {
|
|
||||||
K* key = new K(i->first);
|
K* key = new K(i->first);
|
||||||
SCM k = SWIG_NewPointerObj(key,$descriptor(K *), 1);
|
SCM k = SWIG_NewPointerObj(key,$descriptor(K *), 1);
|
||||||
result = scm_cons(k,result);
|
result = scm_cons(k,result);
|
||||||
|
|
@ -338,8 +336,7 @@ namespace std {
|
||||||
}
|
}
|
||||||
%typemap(out) map<K,T> {
|
%typemap(out) map<K,T> {
|
||||||
SCM alist = SCM_EOL;
|
SCM alist = SCM_EOL;
|
||||||
for (std::map<K,T >::reverse_iterator i=$1.rbegin();
|
for (std::map< K, T >::reverse_iterator i=$1.rbegin(); i!=$1.rend(); ++i) {
|
||||||
i!=$1.rend(); ++i) {
|
|
||||||
T* val = new T(i->second);
|
T* val = new T(i->second);
|
||||||
SCM k = CONVERT_TO(i->first);
|
SCM k = CONVERT_TO(i->first);
|
||||||
SCM x = SWIG_NewPointerObj(val,$descriptor(T *), 1);
|
SCM x = SWIG_NewPointerObj(val,$descriptor(T *), 1);
|
||||||
|
|
@ -471,8 +468,7 @@ namespace std {
|
||||||
}
|
}
|
||||||
SCM keys() {
|
SCM keys() {
|
||||||
SCM result = SCM_EOL;
|
SCM result = SCM_EOL;
|
||||||
for (std::map<K,T >::reverse_iterator i=self->rbegin();
|
for (std::map< K, T >::reverse_iterator i=self->rbegin(); i!=self->rend(); ++i) {
|
||||||
i!=self->rend(); ++i) {
|
|
||||||
SCM k = CONVERT_TO(i->first);
|
SCM k = CONVERT_TO(i->first);
|
||||||
result = scm_cons(k,result);
|
result = scm_cons(k,result);
|
||||||
}
|
}
|
||||||
|
|
@ -552,8 +548,7 @@ namespace std {
|
||||||
}
|
}
|
||||||
%typemap(out) map<K,T> {
|
%typemap(out) map<K,T> {
|
||||||
SCM alist = SCM_EOL;
|
SCM alist = SCM_EOL;
|
||||||
for (std::map<K,T >::reverse_iterator i=$1.rbegin();
|
for (std::map< K, T >::reverse_iterator i=$1.rbegin(); i!=$1.rend(); ++i) {
|
||||||
i!=$1.rend(); ++i) {
|
|
||||||
K* key = new K(i->first);
|
K* key = new K(i->first);
|
||||||
SCM k = SWIG_NewPointerObj(key,$descriptor(K *), 1);
|
SCM k = SWIG_NewPointerObj(key,$descriptor(K *), 1);
|
||||||
SCM x = CONVERT_TO(i->second);
|
SCM x = CONVERT_TO(i->second);
|
||||||
|
|
@ -683,8 +678,7 @@ namespace std {
|
||||||
}
|
}
|
||||||
SCM keys() {
|
SCM keys() {
|
||||||
SCM result = SCM_EOL;
|
SCM result = SCM_EOL;
|
||||||
for (std::map<K,T >::reverse_iterator i=self->rbegin();
|
for (std::map< K, T >::reverse_iterator i=self->rbegin(); i!=self->rend(); ++i) {
|
||||||
i!=self->rend(); ++i) {
|
|
||||||
K* key = new K(i->first);
|
K* key = new K(i->first);
|
||||||
SCM k = SWIG_NewPointerObj(key,$descriptor(K *), 1);
|
SCM k = SWIG_NewPointerObj(key,$descriptor(K *), 1);
|
||||||
result = scm_cons(k,result);
|
result = scm_cons(k,result);
|
||||||
|
|
@ -769,8 +763,7 @@ namespace std {
|
||||||
}
|
}
|
||||||
%typemap(out) map<K,T> {
|
%typemap(out) map<K,T> {
|
||||||
SCM alist = SCM_EOL;
|
SCM alist = SCM_EOL;
|
||||||
for (std::map<K,T >::reverse_iterator i=$1.rbegin();
|
for (std::map< K, T >::reverse_iterator i=$1.rbegin(); i!=$1.rend(); ++i) {
|
||||||
i!=$1.rend(); ++i) {
|
|
||||||
SCM k = CONVERT_K_TO(i->first);
|
SCM k = CONVERT_K_TO(i->first);
|
||||||
SCM x = CONVERT_T_TO(i->second);
|
SCM x = CONVERT_T_TO(i->second);
|
||||||
SCM entry = scm_cons(k,x);
|
SCM entry = scm_cons(k,x);
|
||||||
|
|
@ -895,8 +888,7 @@ namespace std {
|
||||||
}
|
}
|
||||||
SCM keys() {
|
SCM keys() {
|
||||||
SCM result = SCM_EOL;
|
SCM result = SCM_EOL;
|
||||||
for (std::map<K,T >::reverse_iterator i=self->rbegin();
|
for (std::map< K, T >::reverse_iterator i=self->rbegin(); i!=self->rend(); ++i) {
|
||||||
i!=self->rend(); ++i) {
|
|
||||||
SCM k = CONVERT_K_TO(i->first);
|
SCM k = CONVERT_K_TO(i->first);
|
||||||
result = scm_cons(k,result);
|
result = scm_cons(k,result);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue