<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Tahoma
}
--></style>
</head>
<body class='hmmessage'>
<font style="" face="Courier New">There may be syntax/programming errors here, but I was wondering if by 
specifying something like the following:
</font><font style="" face="Courier New"><br></font>
<font style="" face="Courier New"><br></font><font style="" face="Courier New">// blah.h
</font><font style="" face="Courier New"><br></font><font style="" face="Courier New">#ifndef BLAH_DEFINED
</font><font style="" face="Courier New"><br></font><font style="" face="Courier New">#define BLAH_DEFINED
</font><font style="" face="Courier New"><br></font><font style="" face="Courier New">#include <sstream>
</font><font style="" face="Courier New"><br></font><font style="" face="Courier New">template<typename T>
</font><font style="" face="Courier New"><br></font><font style="" face="Courier New">class Blah {
</font><font style="" face="Courier New"><br></font><font style="" face="Courier New">public:
</font><font style="" face="Courier New"><br></font><font style="" face="Courier New">   QString get(const T& v);
</font><font style="" face="Courier New"><br></font><font style="" face="Courier New">};
</font><font style="" face="Courier New"><br></font>
<font style="" face="Courier New"><br></font><font style="" face="Courier New">template<typename T>
</font><font style="" face="Courier New"><br></font><font style="" face="Courier New">QString Blah<T>::get(const T& v) {
</font><font style="" face="Courier New"><br></font><font style="" face="Courier New">   std::ostringstream s;
</font><font style="" face="Courier New"><br></font><font style="" face="Courier New">   s << "Value is: " << v;
</font><font style="" face="Courier New"><br></font><font style="" face="Courier New">   return QString(s.str().c_str());
</font><font style="" face="Courier New"><br></font><font style="" face="Courier New">}
</font><font style="" face="Courier New"><br></font>
<font style="" face="Courier New"><br></font><font style="" face="Courier New">// Specialization for 'int'
</font><font style="" face="Courier New"><br></font><font style="" face="Courier New">template<>
</font><font style="" face="Courier New"><br></font><font style="" face="Courier New">QString Blah<int>::get(const int& v) {
</font><font style="" face="Courier New"><br></font><font style="" face="Courier New">   std::ostringstream s;
</font><font style="" face="Courier New"><br></font><font style="" face="Courier New">   s << "Value (int) is: " << v;
</font><font style="" face="Courier New"><br></font><font style="" face="Courier New">   return QString(s.str().c_str());
</font><font style="" face="Courier New"><br></font><font style="" face="Courier New">}
</font><font style="" face="Courier New"><br></font><font style="" face="Courier New">#endif
</font><font style="" face="Courier New"><br></font>
<font style="" face="Courier New"><br></font><font style="" face="Courier New">// blah.sip
</font><font style="" face="Courier New"><br></font><font style="" face="Courier New">%Module blah 0
</font><font style="" face="Courier New"><br></font>
<font style="" face="Courier New"><br></font><font style="" face="Courier New">template <typename T>
</font><font style="" face="Courier New"><br></font><font style="" face="Courier New">class Blah {
</font><font style="" face="Courier New"><br></font><font style="" face="Courier New">%TypeHeaderCode
</font><font style="" face="Courier New"><br></font><font style="" face="Courier New">#include "blah.h"
</font><font style="" face="Courier New"><br></font><font style="" face="Courier New">%End
</font><font style="" face="Courier New"><br></font><font style="" face="Courier New">public:
</font><font style="" face="Courier New"><br></font><font style="" face="Courier New">   QString __getitem__(const T& val);
</font><font style="" face="Courier New"><br></font><font style="" face="Courier New">%MethodCode
</font><font style="" face="Courier New"><br></font><font style="" face="Courier New">   sipRes = new QString(sipCpp->get(*a0));
</font><font style="" face="Courier New"><br></font><font style="" face="Courier New">%End
</font><font style="" face="Courier New"><br></font><font style="" face="Courier New">};
</font><font style="" face="Courier New"><br></font>
<font style="" face="Courier New"><br></font>
<font style="" face="Courier New"><br></font><font style="" face="Courier New">You could produce a wrapped class that would work like follows:
</font><font style="" face="Courier New"><br></font>
<font style="" face="Courier New"><br></font><font style="" face="Courier New">>>> import blah
</font><font style="" face="Courier New"><br></font><font style="" face="Courier New">>>> b = blah.Blah()
</font><font style="" face="Courier New"><br></font><font style="" face="Courier New">>>> str(b['hello'])
</font><font style="" face="Courier New"><br></font><font style="" face="Courier New">Value is: hello
</font><font style="" face="Courier New"><br></font><font style="" face="Courier New">>>> str(b[3.2])
</font><font style="" face="Courier New"><br></font><font style="" face="Courier New">Value is: 3.2
</font><font style="" face="Courier New"><br></font><font style="" face="Courier New">>>> str(b[10])
</font><font style="" face="Courier New"><br></font><font style="" face="Courier New">Value (int) is: 10
</font><font style="" face="Courier New"><br></font>
<font style="" face="Courier New"><br></font><font style="" face="Courier New">It seems like without explicit typedefs, SIP won't know how to generate 
the templated wrapped Blah.  But, is there a preferred way to get the 
above interface with minimal code without necessarily resorting to using 
%MappedTypes?
</font><font style="" face="Courier New"><br></font>
<font style="" face="Courier New"><br></font><font style="" face="Courier New">Thanks,
</font><font style="" face="Courier New"><br></font><font style="" face="Courier New">-Nate
</font>                                     </body>
</html>