From: Stefan Z. <sz...@gm...> - 2012-01-09 20:52:37
|
Jim, Could you provide a concrete example of where you would use this? >From time to time, I have wished for a function like this, only to realize that I could get the functionality I needed using the existing features. (As an aside, the one case where the existing functionality came up short was trying to interface two libraries: one had a custom python wrapper implementation, and I was using SWIG to wrap the other). Thanks, Stefan On Thu, Jan 5, 2012 at 10:54 AM, Jim Bosch <tal...@gm...> wrote: > I'm trying to wrap a heavily-templated C++ library for Python, and I > need to use SWIG_NewPointerObj within a template, and that means I need > a swig_type_info to pass to it. > > It seems like the only way to do this is to use preprocessor macros > instead of templates, stringify the C++ name, and call SWIG_TypeQuery. > From reading the comments in the generated code, it looks like that's > going to do a O(n) search (with a lot of string comparisons) of all the > types in the module, after first wasting time by assuming that the name > is mangled. > > It'd be so much nicer to be able to do something like: > > template <typename T> > PyObject * convertToPython(T * x) { > return SWIG_NewPointerObj( > x, > SwigTraits<T*>::info(), // something I'm imagining > SWIG_POINTER_OWN > ); > } > > Note that this would then be used as a utility function in writing > %extend blocks, not wrapped directly; I'm not concerned with trying to > declare this to SWIG with %template. > > Is something like this already available, and I just didn't find it in > the docs? If not, it seems like it'd be pretty easy to implement, by > having SWIG generate a specialization of SwigTraits<> every time it > generates a "#define SWIGTYPE_p_Foo" line in the types table, something > like: > > template <typename T> struct SwigTraits; > > #define SWIGTYPE_p_Foo swig_types[N]; > template <> struct SwigTraits< Foo * > { > swig_type_info* info() { return SWIGTYPE_p_Foo; } > }; > > If something like this doesn't already exist, could it be added to SWIG > in the future? > > Thanks! > > Jim Bosch > > ------------------------------------------------------------------------------ > Ridiculously easy VDI. With Citrix VDI-in-a-Box, you don't need a complex > infrastructure or vast IT resources to deliver seamless, secure access to > virtual desktops. With this all-in-one solution, easily deploy virtual > desktops for less than the cost of PCs and save 60% on VDI infrastructure > costs. Try it free! http://p.sf.net/sfu/Citrix-VDIinabox > _______________________________________________ > Swig-user mailing list > Swi...@li... > https://lists.sourceforge.net/lists/listinfo/swig-user |