On Tue, 5 Oct 2010 10:13:26 -0700, Nate Reid <gnat...@hotmail.com> wrote: > There may be syntax/programming errors here, but I was wondering if by > specifying something like the following: > > > > // blah.h > > #ifndef BLAH_DEFINED > > #define BLAH_DEFINED > > #include <sstream> > > template<typename T> > > class Blah { > > public: > > QString get(const T& v); > > }; > > > > template<typename T> > > QString Blah<T>::get(const T& v) { > > std::ostringstream s; > > s << "Value is: " << v; > > return QString(s.str().c_str()); > > } > > > > // Specialization for 'int' > > template<> > > QString Blah<int>::get(const int& v) { > > std::ostringstream s; > > s << "Value (int) is: " << v; > > return QString(s.str().c_str()); > > } > > #endif > > > > // blah.sip > > %Module blah 0 > > > > template <typename T> > > class Blah { > > %TypeHeaderCode > > #include "blah.h" > > %End > > public: > > QString __getitem__(const T& val); > > %MethodCode > > sipRes = new QString(sipCpp->get(*a0)); > > %End > > }; > > > > > > You could produce a wrapped class that would work like follows: > > > >>>> import blah > >>>> b = blah.Blah() > >>>> str(b['hello']) > > Value is: hello > >>>> str(b[3.2]) > > Value is: 3.2 > >>>> str(b[10]) > > Value (int) is: 10 > > > > It seems like without explicit typedefs, SIP won't know how to generate > the templated wrapped Blah.
Correct. > But, is there a preferred way to get the > above interface with minimal code without necessarily resorting to using > %MappedTypes? Only if you know all the types in advance, in which case you can just overload __getitem__(). Phil _______________________________________________ PyQt mailing list PyQt@riverbankcomputing.com http://www.riverbankcomputing.com/mailman/listinfo/pyqt