Stefan/Jeffrey,<div><br></div><div>Thank you, it's now working perfectly... but I have another issue.</div><div><br></div><div>I wrote:</div><div><br></div><div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
object get_py_gender(const FaceObject &fobj)<br>{<br>    return fobj.gender ? object(*fobj.gender) : object();<br>}<br>object get_py_age(const FaceObject &fobj)<br>{<br>    return fobj.age ? object(*fobj.age) : object();<br>
}<br>object get_py_agedeviation(const FaceObject &fobj)<br>{<br>    return fobj.ageDeviationDen ? object(*fobj.ageDeviationDen) : object();<br>}<br>object get_py_happy(const FaceObject &fobj)<br>{<br>    return fobj.happy ? object(*fobj.happy) : object();<br>
}<br>object get_py_sad(const FaceObject &fobj)<br>{<br>    return fobj.sad ? object(*fobj.sad) : object();<br>}<br>object get_py_surprised(const FaceObject &fobj)<br>{<br>    return fobj.surprised ? object(*fobj.surprised) : object();<br>
}<br>object get_py_angry(const FaceObject &fobj)<br>{<br>    return fobj.angry ? object(*fobj.angry) : object();<br>}</blockquote><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13.333333969116211px;background-color:rgb(255,255,255)">
<br></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13.333333969116211px;background-color:rgb(255,255,255)">Well... the functions are doing the same thing and don't like so much the idea of repeating code unnecessarily, so I'm trying to write a template to handle it.</div>
<div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13.333333969116211px;background-color:rgb(255,255,255)"><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
template <class T><br>object get_py_wrapper(T obj)<br>{<br>    return obj ? object(*obj) : object();<br>}</blockquote><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13.333333969116211px;background-color:rgb(255,255,255)">
<br></div></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13.333333969116211px;background-color:rgb(255,255,255)">My problem is how to call the template function. The next code shows the getAge function declaration.</div>
<div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13.333333969116211px;background-color:rgb(255,255,255)"><br></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13.333333969116211px;background-color:rgb(255,255,255)">
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">inline quint8 getAge()<br>{<br>   return (quint8) qRound(*age / *ageDeviationDen);<br>
}</blockquote><div><br></div><div>The class_ declaration (to bridge between languages) is:</div><div><br></div></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13.333333969116211px;background-color:rgb(255,255,255)">
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">void export_FaceObject()<br>{<br>    class_<FaceObject, boost::noncopyable>("FaceObject", init<>())<br>
       .<br>       .<br>       .<br>       .add_property("age", get_py_age)  // <= It's working!<br>       .add_property("age", get_py_wrapper<quint8>(&FaceObject::getAge))<br>       .<br>
       .<br>       .<br>    ;<br>}</blockquote></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13.333333969116211px;background-color:rgb(255,255,255)"><br></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13.333333969116211px;background-color:rgb(255,255,255)">
And finally the error I'm getting is:</div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13.333333969116211px;background-color:rgb(255,255,255)"><br></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13.333333969116211px;background-color:rgb(255,255,255)">
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">In file included from faceparser.cpp:10:0:<br>../../include/qttopyobjects.h: In function 'void export_FaceObject()':<br>
../../include/qttopyobjects.h:369:71: error: no matching function for call to 'get_py_wrapper(quint8 (FaceObject::*)())'<br>../../include/qttopyobjects.h:369:71: note: candidate is:<br>../../include/qttopyobjects.h:353:8: note: template<class T> boost::python::api::object get_py_wrapper(T)<br>
../../include/qttopyobjects.h:353:8: note:   template argument deduction/substitution failed:<br>../../include/qttopyobjects.h:369:71: note:   cannot convert '&FaceObject::getAge' (type 'quint8 (FaceObject::*)() {aka unsigned char (FaceObject::*)()}') to type 'unsigned char'</blockquote>
</div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13.333333969116211px;background-color:rgb(255,255,255)"><br></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13.333333969116211px;background-color:rgb(255,255,255)">
<br></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13.333333969116211px;background-color:rgb(255,255,255)">I'm sure that I need to use &FaceObject::getAge and quint8... but I can't figure out what is going on. I already tried to do:</div>
<div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13.333333969116211px;background-color:rgb(255,255,255)"><br></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13.333333969116211px;background-color:rgb(255,255,255)">
.add_property("age", get_py_wrapper<quint8>(reinterpret_cast<quint8>(&FaceObject::getAge)))</div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13.333333969116211px;background-color:rgb(255,255,255)">
<br></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13.333333969116211px;background-color:rgb(255,255,255)">I appreciate your support very much!</div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13.333333969116211px;background-color:rgb(255,255,255)">
<br></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13.333333969116211px;background-color:rgb(255,255,255)">Best regards,</div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13.333333969116211px;background-color:rgb(255,255,255)">
Luiz Vitor</div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13.333333969116211px;background-color:rgb(255,255,255)"><br></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13.333333969116211px;background-color:rgb(255,255,255)">
<br></div><div><div><div class="gmail_quote">On Tue, Oct 2, 2012 at 2:05 PM, Jeffrey Van Voorst <span dir="ltr"><<a href="mailto:vanv0059@umn.edu" target="_blank">vanv0059@umn.edu</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">You might want to use wrapper functions in C++<br>
<br>
boost::python::object<br>
gender_getter(const FaceObject& obj)<br>
{<br>
  if(obj.gender == NULL) return Py_None;<br>
  else return obj.gender;<br>
}<br>
<br>
Note: its been a bit since I used Boost.Python heavily.  The syntax could be incorrect, but I hope this gives you a general idea.<br>
<br>
--Jeff Van Voorst<div><div><br>
______________________________<u></u>_________________<br>
Cplusplus-sig mailing list<br>
<a href="mailto:Cplusplus-sig@python.org" target="_blank">Cplusplus-sig@python.org</a><br>
<a href="http://mail.python.org/mailman/listinfo/cplusplus-sig" target="_blank">http://mail.python.org/<u></u>mailman/listinfo/cplusplus-sig</a><br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br>Regards, <br><br>Luiz Vitor Martinez Cardoso<div>Celular: <a href="tel:%2811%29%207351-7097" value="+551173517097" target="_blank">(11) 7351-7097</a> | Skype: grabberbr <br>
engineer student at <a href="http://maua.br" target="_blank">maua.br</a><div>
<a href="http://maua.br" target="_blank"></a>intern marketing engineer at <a href="http://geindustrial.com.br" target="_blank">geindustrial.com.br</a><br>entrepreneur at <a href="http://adboxnetwork.com" target="_blank">adboxnetwork.com</a></div>

<div><br>"If you wanna be successful, you need total dedication, go for your last limit, give your best and love your love infinitely!"</div></div><div><br></div><div>"T<span style="color:rgb(34,34,34);font-size:13px;font-family:arial,sans-serif">he only limits are the ones you place upon yourself</span>"</div>

<br>
</div></div>