From: Christoph E. <chr...@ch...> - 2015-03-19 11:42:44
|
Hi! I'm having trouble figuring out what I need to rename how to get this to work. Below is a minimal example of the problem Thanks! Christoph ====== test.i ====== %module test %rename("%(utitle)s") ""; %include <std_map.i> namespace std { %template(test) map<string, long*>; } ===== output ====== % swig -guile -c++ test.i test.i:5: Warning 503: Can't wrap class map< string,long * > unless renamed to a valid identifier. |
From: Kris L. <lam...@gm...> - 2015-03-19 11:48:42
|
Include std_string.i On Mar 19, 2015 7:45 AM, "Christoph Egger" <chr...@ch...> wrote: > Hi! > > I'm having trouble figuring out what I need to rename how to get this > to work. Below is a minimal example of the problem > > Thanks! > > Christoph > > ====== test.i ====== > %module test > %rename("%(utitle)s") ""; > %include <std_map.i> > > namespace std { > %template(test) map<string, long*>; > } > > ===== output ====== > % swig -guile -c++ test.i > test.i:5: Warning 503: Can't wrap class map< string,long * > unless > renamed to a valid identifier. > > > ------------------------------------------------------------------------------ > Dive into the World of Parallel Programming The Go Parallel Website, > sponsored > by Intel and developed in partnership with Slashdot Media, is your hub for > all > things parallel software development, from weekly thought leadership blogs > to > news, videos, case studies, tutorials and more. Take a look and join the > conversation now. http://goparallel.sourceforge.net/ > _______________________________________________ > Swig-user mailing list > Swi...@li... > https://lists.sourceforge.net/lists/listinfo/swig-user > |
From: Christoph E. <chr...@ch...> - 2015-03-19 11:54:02
|
Hi! Kris Lamb <lam...@gm...> writes: > Include std_string.i The real one had that (whole stdint.i and stl.i and pointer.i as well -- but doesn't help % swig3.0 -guile -c++ test.i test.i:8: Warning 503: Can't wrap class map< std::string,long * > unless renamed to a valid identifier. ===== test.i ===== %module test %include <std_string.i> %include <std_map.i> %rename("%(utitle)s") ""; namespace std { %template(test) map<string, long*>; } |
From: Kris L. <lam...@gm...> - 2015-03-19 12:39:58
|
I'm wrapping to lua, and I don't get this error, could be a guile specific issue. %include <std_string.i> %include <stdint.i> %include <std_map.i> namespace std { %template(test) map<string, long*>; } sorry can't be of any more help at this point. On Thu, Mar 19, 2015 at 7:42 AM, Christoph Egger < chr...@ch...> wrote: > Hi! > > I'm having trouble figuring out what I need to rename how to get this > to work. Below is a minimal example of the problem > > Thanks! > > Christoph > > ====== test.i ====== > %module test > %rename("%(utitle)s") ""; > %include <std_map.i> > > namespace std { > %template(test) map<string, long*>; > } > > ===== output ====== > % swig -guile -c++ test.i > test.i:5: Warning 503: Can't wrap class map< string,long * > unless > renamed to a valid identifier. > > > ------------------------------------------------------------------------------ > Dive into the World of Parallel Programming The Go Parallel Website, > sponsored > by Intel and developed in partnership with Slashdot Media, is your hub for > all > things parallel software development, from weekly thought leadership blogs > to > news, videos, case studies, tutorials and more. Take a look and join the > conversation now. http://goparallel.sourceforge.net/ > _______________________________________________ > Swig-user mailing list > Swi...@li... > https://lists.sourceforge.net/lists/listinfo/swig-user > |
From: Christoph E. <chr...@ch...> - 2015-03-19 13:12:38
|
Kris Lamb <lam...@gm...> writes: > I'm wrapping to lua, and I don't get this error, could be a guile > specific issue. > > %include <std_string.i> > %include <stdint.i> > %include <std_map.i> > > namespace std { > %template(test) map<string, long*>; > } Oh noticed just now: You don't have the %rename("%(utitle)s") ""; Removing it fixes the warning here as well. Christoph |
From: Christoph E. <chr...@ch...> - 2015-03-19 12:44:50
|
Hi! Kris Lamb <lam...@gm...> writes: > I'm wrapping to lua, and I don't get this error, could be a guile > specific issue. > > %include <std_string.i> > %include <stdint.i> > %include <std_map.i> > > namespace std { > %template(test) map<string, long*>; > } > > sorry can't be of any more help at this point. How exactly? % swig -lua -c++ test.i test.i:8: Warning 503: Can't wrap class map< std::string,long * > unless renamed to a valid identifier. same for python Thanks! Christoph |
From: Kris L. <lam...@gm...> - 2015-03-19 12:50:55
|
I'm using swig 3.0.0, what version are you using? On Thu, Mar 19, 2015 at 8:44 AM, Christoph Egger < chr...@ch...> wrote: > Hi! > > Kris Lamb <lam...@gm...> writes: > > I'm wrapping to lua, and I don't get this error, could be a guile > > specific issue. > > > > %include <std_string.i> > > %include <stdint.i> > > %include <std_map.i> > > > > namespace std { > > %template(test) map<string, long*>; > > } > > > > sorry can't be of any more help at this point. > > How exactly? > > % swig -lua -c++ test.i > test.i:8: Warning 503: Can't wrap class map< std::string,long * > unless > renamed to a valid identifier. > > same for python > > Thanks! > > Christoph > |
From: Christoph E. <chr...@ch...> - 2015-03-19 13:01:02
|
Kris Lamb <lam...@gm...> writes: > I'm using swig 3.0.0, what version are you using? This is 3.0.2 (from debian jessie) I was just about to try and see if this is fixed in newer versions though the changelog doesn't mention anything. Christoph |
From: Christoph E. <chr...@ch...> - 2015-03-19 13:04:27
|
Christoph Egger <chr...@ch...> writes: > Kris Lamb <lam...@gm...> writes: >> I'm using swig 3.0.0, what version are you using? > > This is 3.0.2 (from debian jessie) > > I was just about to try and see if this is fixed in newer versions > though the changelog doesn't mention anything. FWIW the same with 3.0.0 from git and 3.0.5 from the SF tarball % /usr/local/bin/swig -lua -c++ test.i test.i:8: Warning 503: Can't wrap class map< std::string,long * > unless renamed to a valid identifier. % /usr/local/bin/swig -version SWIG Version 3.0.0 Compiled with g++ [x86_64-unknown-linux-gnu] Configured options: +pcre Please see http://www.swig.org for reporting bugs and further information |
From: Christoph E. <chr...@ch...> - 2015-03-19 13:08:31
|
Christoph Egger <chr...@ch...> writes: > Christoph Egger <chr...@ch...> writes: >> Kris Lamb <lam...@gm...> writes: >>> I'm using swig 3.0.0, what version are you using? >> >> This is 3.0.2 (from debian jessie) >> >> I was just about to try and see if this is fixed in newer versions >> though the changelog doesn't mention anything. > > FWIW the same with 3.0.0 from git and 3.0.5 from the SF tarball And the 2.0.12 as well ;-) Christoph |
From: Christoph E. <chr...@ch...> - 2015-03-19 13:21:01
|
Hi! Paweł Tomulik writes: > Looks similar to > http://swig.10945.n7.nabble.com/Unignore-all-and-template-td14147.html It does! and the suggested workaround also works. Is it intended to need both %template and %rename with essentially the same content? Christoph -- |
From: Christoph E. <chr...@ch...> - 2015-03-19 13:30:41
|
Hi! Christoph Egger <chr...@ch...> writes: > Paweł Tomulik writes: >> Looks similar to >> http://swig.10945.n7.nabble.com/Unignore-all-and-template-td14147.html > > It does! and the suggested workaround also works. Is it intended to > need both %template and %rename with essentially the same content? unfortunately it works for exactly one map: ===== test.i ===== %module test %include <std_string.i> %include <std_map.i> %rename("%(utitle)s") ""; namespace std { %rename(test) map<string, long*>; %template(test) map<string, long*>; %rename(foo) map<string, short*>; %template(foo) map<string, short*>; } ===== output ===== % swig -c++ -python test.i % g++ -c test_wrap.cxx -I/usr/include/python2.7 test_wrap.cxx: In function ‘PyObject* _wrap_new_map__SWIG_0(PyObject*, PyObject*)’: test_wrap.cxx:7351:22: error: redefinition of ‘PyObject* _wrap_new_map__SWIG_0(PyObject*, PyObject*)’ SWIGINTERN PyObject *_wrap_new_map__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { ^ test_wrap.cxx:6131:22: note: ‘PyObject* _wrap_new_map__SWIG_0(PyObject*, PyObject*)’ previously defined here SWIGINTERN PyObject *_wrap_new_map__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { ^ test_wrap.cxx: In function ‘PyObject* _wrap_new_map__SWIG_1(PyObject*, PyObject*)’: test_wrap.cxx:7905:22: error: redefinition of ‘PyObject* _wrap_new_map__SWIG_1(PyObject*, PyObject*)’ SWIGINTERN PyObject *_wrap_new_map__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { ^ test_wrap.cxx:6685:22: note: ‘PyObject* _wrap_new_map__SWIG_1(PyObject*, PyObject*)’ previously defined here SWIGINTERN PyObject *_wrap_new_map__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { ^ test_wrap.cxx: In function ‘PyObject* _wrap_new_map__SWIG_2(PyObject*, PyObject*)’: test_wrap.cxx:7918:22: error: redefinition of ‘PyObject* _wrap_new_map__SWIG_2(PyObject*, PyObject*)’ SWIGINTERN PyObject *_wrap_new_map__SWIG_2(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { ^ test_wrap.cxx:6698:22: note: ‘PyObject* _wrap_new_map__SWIG_2(PyObject*, PyObject*)’ previously defined here SWIGINTERN PyObject *_wrap_new_map__SWIG_2(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { ^ test_wrap.cxx: In function ‘PyObject* _wrap_new_map(PyObject*, PyObject*)’: test_wrap.cxx:7947:22: error: redefinition of ‘PyObject* _wrap_new_map(PyObject*, PyObject*)’ SWIGINTERN PyObject *_wrap_new_map(PyObject *self, PyObject *args) { ^ test_wrap.cxx:6727:22: note: ‘PyObject* _wrap_new_map(PyObject*, PyObject*)’ previously defined here SWIGINTERN PyObject *_wrap_new_map(PyObject *self, PyObject *args) { ^ test_wrap.cxx: In instantiation of ‘const char* swig::type_name() [with Type = long int]’: test_wrap.cxx:3475:64: required from ‘static swig_type_info* swig::traits_info<Type>::type_info() [with Type = long int; swig_type_info = swig_type_info]’ test_wrap.cxx:3482:41: required from ‘swig_type_info* swig::type_info() [with Type = long int; swig_type_info = swig_type_info]’ test_wrap.cxx:3516:14: required from ‘static PyObject* swig::traits_from_ptr<Type>::from(Type*, int) [with Type = long int; PyObject = _object]’ test_wrap.cxx:3528:48: required from ‘static PyObject* swig::traits_from<Type*>::from(Type*) [with Type = long int; PyObject = _object]’ test_wrap.cxx:3541:39: required from ‘PyObject* swig::from(const Type&) [with Type = long int*; PyObject = _object]’ test_wrap.cxx:5109:2: required from here test_wrap.cxx:3465:77: error: ‘type_name’ is not a member of ‘swig::traits<long int>’ return traits<typename noconst_traits<Type >::noconst_type >::type_name(); ^ test_wrap.cxx: In instantiation of ‘const char* swig::type_name() [with Type = short int]’: test_wrap.cxx:3475:64: required from ‘static swig_type_info* swig::traits_info<Type>::type_info() [with Type = short int; swig_type_info = swig_type_info]’ test_wrap.cxx:3482:41: required from ‘swig_type_info* swig::type_info() [with Type = short int; swig_type_info = swig_type_info]’ test_wrap.cxx:3516:14: required from ‘static PyObject* swig::traits_from_ptr<Type>::from(Type*, int) [with Type = short int; PyObject = _object]’ test_wrap.cxx:3528:48: required from ‘static PyObject* swig::traits_from<Type*>::from(Type*) [with Type = short int; PyObject = _object]’ test_wrap.cxx:3541:39: required from ‘PyObject* swig::from(const Type&) [with Type = short int*; PyObject = _object]’ test_wrap.cxx:5241:2: required from here test_wrap.cxx:3465:77: error: ‘type_name’ is not a member of ‘swig::traits<short int>’ |
From: Christoph E. <chr...@ch...> - 2015-06-03 18:17:26
Attachments:
signature.asc
|
Hi! I'm still struggling with the template froblem from March. I'm trying to wrap seveal maps that have the same key and pointers as values. This works trivially as long as there are not renames involved. You helped me with a solution that works with exactly one of the maps but fails as soon as there are several. Minimal sample and output is below. I have tested it with a wide range of swig version (including git(?) HEAD). Can anyone suggest a way forward here to fix this? Christoph Christoph Egger <chr...@ch...> writes: > ===== test.i ===== > %module test > > %include <std_string.i> > %include <std_map.i> > > %rename("%(utitle)s") ""; > > namespace std { > %rename(test) map<string, long*>; > %template(test) map<string, long*>; > > %rename(foo) map<string, short*>; > %template(foo) map<string, short*>; > } > > > ===== output ===== > % swig -c++ -python test.i > % g++ -c test_wrap.cxx -I/usr/include/python2.7 > test_wrap.cxx: In function ‘PyObject* _wrap_new_map__SWIG_0(PyObject*, PyObject*)’: > test_wrap.cxx:7351:22: error: redefinition of ‘PyObject* _wrap_new_map__SWIG_0(PyObject*, PyObject*)’ > SWIGINTERN PyObject *_wrap_new_map__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { > ^ > test_wrap.cxx:6131:22: note: ‘PyObject* _wrap_new_map__SWIG_0(PyObject*, PyObject*)’ previously defined here > SWIGINTERN PyObject *_wrap_new_map__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { > ^ > test_wrap.cxx: In function ‘PyObject* _wrap_new_map__SWIG_1(PyObject*, PyObject*)’: > test_wrap.cxx:7905:22: error: redefinition of ‘PyObject* _wrap_new_map__SWIG_1(PyObject*, PyObject*)’ > SWIGINTERN PyObject *_wrap_new_map__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { > ^ > test_wrap.cxx:6685:22: note: ‘PyObject* _wrap_new_map__SWIG_1(PyObject*, PyObject*)’ previously defined here > SWIGINTERN PyObject *_wrap_new_map__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { > ^ > test_wrap.cxx: In function ‘PyObject* _wrap_new_map__SWIG_2(PyObject*, PyObject*)’: > test_wrap.cxx:7918:22: error: redefinition of ‘PyObject* _wrap_new_map__SWIG_2(PyObject*, PyObject*)’ > SWIGINTERN PyObject *_wrap_new_map__SWIG_2(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { > ^ > test_wrap.cxx:6698:22: note: ‘PyObject* _wrap_new_map__SWIG_2(PyObject*, PyObject*)’ previously defined here > SWIGINTERN PyObject *_wrap_new_map__SWIG_2(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { > ^ > test_wrap.cxx: In function ‘PyObject* _wrap_new_map(PyObject*, PyObject*)’: > test_wrap.cxx:7947:22: error: redefinition of ‘PyObject* _wrap_new_map(PyObject*, PyObject*)’ > SWIGINTERN PyObject *_wrap_new_map(PyObject *self, PyObject *args) { > ^ > test_wrap.cxx:6727:22: note: ‘PyObject* _wrap_new_map(PyObject*, PyObject*)’ previously defined here > SWIGINTERN PyObject *_wrap_new_map(PyObject *self, PyObject *args) { > ^ > test_wrap.cxx: In instantiation of ‘const char* swig::type_name() [with Type = long int]’: > test_wrap.cxx:3475:64: required from ‘static swig_type_info* swig::traits_info<Type>::type_info() [with Type = long int; swig_type_info = swig_type_info]’ > test_wrap.cxx:3482:41: required from ‘swig_type_info* swig::type_info() [with Type = long int; swig_type_info = swig_type_info]’ > test_wrap.cxx:3516:14: required from ‘static PyObject* swig::traits_from_ptr<Type>::from(Type*, int) [with Type = long int; PyObject = _object]’ > test_wrap.cxx:3528:48: required from ‘static PyObject* swig::traits_from<Type*>::from(Type*) [with Type = long int; PyObject = _object]’ > test_wrap.cxx:3541:39: required from ‘PyObject* swig::from(const Type&) [with Type = long int*; PyObject = _object]’ > test_wrap.cxx:5109:2: required from here > test_wrap.cxx:3465:77: error: ‘type_name’ is not a member of ‘swig::traits<long int>’ > return traits<typename noconst_traits<Type >::noconst_type >::type_name(); > ^ > test_wrap.cxx: In instantiation of ‘const char* swig::type_name() [with Type = short int]’: > test_wrap.cxx:3475:64: required from ‘static swig_type_info* swig::traits_info<Type>::type_info() [with Type = short int; swig_type_info = swig_type_info]’ > test_wrap.cxx:3482:41: required from ‘swig_type_info* swig::type_info() [with Type = short int; swig_type_info = swig_type_info]’ > test_wrap.cxx:3516:14: required from ‘static PyObject* swig::traits_from_ptr<Type>::from(Type*, int) [with Type = short int; PyObject = _object]’ > test_wrap.cxx:3528:48: required from ‘static PyObject* swig::traits_from<Type*>::from(Type*) [with Type = short int; PyObject = _object]’ > test_wrap.cxx:3541:39: required from ‘PyObject* swig::from(const Type&) [with Type = short int*; PyObject = _object]’ > test_wrap.cxx:5241:2: required from here > test_wrap.cxx:3465:77: error: ‘type_name’ is not a member of ‘swig::traits<short int>’ -- |