From: Ruben De S. <rub...@te...> - 2014-06-15 09:17:43
|
I solved the issue by using this namespace std{ template<class T> class shared_ptr { public: T *operator->(); T* get(); }; } before using my template declarations. I tried that before but I forgot to put the "public:" keyword before the operator->(). I'm a sad sad guy now :) R On 06/07/2014 06:52 PM, Ruben De Smet wrote: > Hi SWIG-devels! (I added swig-devel as new recipient to this mail) > > I recently posted this message to the Swig-user-mailinglist: > > ----- BEGIN QUOTE ------- > > Hi SWIGgers > > I'm writing some library in C++ and I'm using SWIG to generate bindings > for Python, which works by magic. I wanted to try the same for Ruby, but > my std::shared_ptr-ed classes are passed as an std::shared_ptr object, > instead of using the binding [1]. > > I've tried this: > > namespace std { > template<class T> > class shared_ptr > { > T *operator->(); > }; > } > > But that didn't work either. I'm using the > %template(ClassnamePtr) std::shared_ptr<classname>; > directives. > > It should be possible, no? > > Ruben De Smet > > [1] http://www.swig.org/Doc1.3/Ruby.html#Ruby_nn24 > > ----- END QUOTE ------- > > I'm trying to port the boost_shared_ptr.i from the Python files to the > Ruby ones, but I'm stuck at the > > > RDATA(obj)->dfree = own; > > line; the 'own' parameter is some Ruby specific type, whereas the Python > bindings have some special 'SwigPyObject' internal type. What is the > prefered way of solving this kind of thing? > > R > > On 06/06/2014 08:00 PM, William S Fulton wrote: >> On 06/06/14 15:36, Klaus Kaempf wrote: >>> * Ruben De Smet <rub...@te...> [Jun 06. 2014 15:16]: >>>> Hi SWIGgers >>>> >>>> I'm writing some library in C++ and I'm using SWIG to generate bindings >>>> for Python, which works by magic. I wanted to try the same for Ruby, but >>>> my std::shared_ptr-ed classes are passed as an std::shared_ptr object, >>>> instead of using the binding [1]. >>> >>> Ruben, >>> >>> that's probably because swig doesn't know about this non-standard >>> type. Try to add >>> >>> %import <bits/shared_ptr.h> >>> >>> to your .i file to teach swig about std::shared_ptr. >>> >> I'm not sure that will get you far. See >> http://swig.org/Doc3.0/Library.html#Library_std_shared_ptr for >> shared_ptr support in SWIG, however, no one has added support for Ruby >> yet. Although the addition of this support is quite complex, it should >> in theory not require much work as it already done for the UTL languages >> and implemented for Python. Copying python/boost_shared_ptr.i and >> tweaking slightly for Ruby hopefully doesn't require much effort. >> >> William >> > > > > ------------------------------------------------------------------------------ > Learn Graph Databases - Download FREE O'Reilly Book > "Graph Databases" is the definitive new guide to graph databases and their > applications. Written by three acclaimed leaders in the field, > this first edition is now available. Download your free book today! > http://p.sf.net/sfu/NeoTech > > > > _______________________________________________ > Swig-devel mailing list > Swi...@li... > https://lists.sourceforge.net/lists/listinfo/swig-devel > |