sorry missing<br><br>typedef&nbsp; boost::gregorian::date&nbsp; qm_date<br><br>in the code<br><br><br><br><br><div><span class="gmail_quote">On 10/04/07, <b class="gmail_sendername">Luca Sbardella</b> &lt;<a href="mailto:luca.sbardella@gmail.com">
luca.sbardella@gmail.com</a>&gt; wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Thanks Roman, it was useful, however I&#39;m getting some specific problem in the implementation (I cannot debug the code since I cannot load the PyDateTime
static library).&nbsp; the Python
documentation says I should declare PyDateTime_IMPORT but this does not
compile!!!!<br>Still trying at the moment but this is what I have done, any comment would be welcome.<br>Best<br>Luca<br><br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; template&lt;class T, class TfromPy&gt;<br>&nbsp;&nbsp;&nbsp; struct ObjFromPy<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ObjFromPy()
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; boost::python::converter::registry::push_back(&amp;TfromPy::convertible,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp;TfromPy::construct,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; boost::python::type_id&lt;T&gt;());<br>


&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; };<br>&nbsp;&nbsp;&nbsp; //<br>&nbsp;&nbsp;&nbsp; template&lt;class T, class TtoPy, class TfromPy&gt;<br>&nbsp;&nbsp;&nbsp; struct register_python_conversion<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; register_python_conversion()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; boost::python::to_python_converter&lt;T,TtoPy&gt;();
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ObjFromPy&lt;T,TfromPy&gt;();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; };<br>&nbsp;&nbsp;&nbsp; //<br>&nbsp;&nbsp;&nbsp; // IMPLEMENTATION<br>&nbsp;&nbsp;&nbsp; //<br>&nbsp;&nbsp;&nbsp; struct DateToPy<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; static PyObject* convert(const qm_date&amp; dte)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return PyDate_FromDate(
dte.year(), dte.month(), dte.day());<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; };<br>&nbsp;&nbsp;&nbsp; //<br>&nbsp;&nbsp;&nbsp; struct DateFromPy<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; static void* convertible(PyObject* obj_ptr)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!PyDate_Check(obj_ptr)) return 0;
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return obj_ptr;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; static void construct(PyObject* obj_ptr,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; boost::python::converter::rvalue_from_python_stage1_data* data)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int y = PyDateTime_GET_YEAR(obj_ptr);
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int m = PyDateTime_GET_MONTH(obj_ptr);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int d = PyDateTime_GET_DAY(obj_ptr);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; qm_date* dte = new qm_date(y,m,d);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; data-&gt;convertible = (void*)dte;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; };<br>&nbsp;&nbsp;&nbsp; //
<br>&nbsp;&nbsp;&nbsp; //<br>&nbsp;&nbsp;&nbsp; typedef register_python_conversion&lt;qm_date, DateToPy, DateFromPy&gt;&nbsp; date_python_conversion;<br>&nbsp;&nbsp;&nbsp; //<br><br><div><div><span class="e" id="q_111dd7b052037a90_1"><span class="gmail_quote">On 10/04/07, 
<b class="gmail_sendername">Roman Yakovenko</b>

 &lt;<a href="mailto:roman.yakovenko@gmail.com" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">roman.yakovenko@gmail.com</a>&gt; wrote:</span></span></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div><span class="e" id="q_111dd7b052037a90_3">

<div><span>On 4/10/07, <b class="gmail_sendername">Quant Mind</b> &lt;<a href="mailto:quant.mind@gmail.com" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">quant.mind@gmail.com
</a>&gt; wrote:</span></div><div><div><span><span class="gmail_quote"></span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">

Here is the problem.<br>I&#39;m using boost date_time library for a calendar C++ application. I exposed my C++ Calendar class to Python using boost python and everything is going smoothly.<br>The class contains several functions which have boost::gregorian::date as arguments.
<br>Obviously, this class is not know to Python and I would like to implement a custom converter between boost::gregorian::date and Python datetime.date.<br>What would be the correct way to deal with this problem?</blockquote>



</span></div><div><br>Let me know if next link helped you: <a href="http://language-binding.net/pyplusplus/troubleshooting_guide/automatic_conversion/automatic_conversion.html" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">


http://language-binding.net/pyplusplus/troubleshooting_guide/automatic_conversion/automatic_conversion.html
</a><br></div><br></div><br>-- <br>Roman Yakovenko<br>C++ Python language binding<br><a href="http://www.language-binding.net/" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">http://www.language-binding.net/
</a>
<br></span></div>_______________________________________________<br>C++-sig mailing list<br><a href="mailto:C++-sig@python.org" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">C++-sig@python.org</a>
<br><a href="http://mail.python.org/mailman/listinfo/c++-sig" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">

http://mail.python.org/mailman/listinfo/c++-sig</a><br><br></blockquote></div><br>
</blockquote></div><br>