<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to bugs</title><link>https://sourceforge.net/p/pygccxml/bugs/</link><description>Recent changes to bugs</description><atom:link href="https://sourceforge.net/p/pygccxml/bugs/feed.rss" rel="self"/><language>en</language><lastBuildDate>Mon, 08 Jul 2013 11:46:55 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/pygccxml/bugs/feed.rss" rel="self" type="application/rss+xml"/><item><title>#45 GCC 4.7.2 Compatibility</title><link>https://sourceforge.net/p/pygccxml/bugs/45/?limit=25#28e8</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;Sorry I've taken so long to report back. It is a gccxml problem, and as I needed it to work, I spent quite a lot of time looking into gccxml's source code...&lt;/p&gt;
&lt;p&gt;I went so far as to remove the internal GCC 4.2. compiler, and turned gccxml into a GCC plugin, compatible with GCC 4.7+. It doesn't work on Windows, however, essentially due to a lack of interest by GCC core maintainers.&lt;/p&gt;
&lt;p&gt;Although I had to make a couple of edits to the pygccxml source code, it seems to work well. I've upgraded the &lt;code&gt;py++&lt;/code&gt; script I attached above, to recursively create Boost Python bindings from a given directory, and ended up with over 2,000 Boost Python source code files, from a subset of a complete library I'd like to use from python. Although I haven't tried compiling or running it, the code looks good, so it seems to work well..&lt;/p&gt;
&lt;p&gt;I guess you'll be interested in what patches I needed to implement:-&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Changed the logic in parser.source_reader.source_reader_t.create_xml_file, so that it prints all output from GCC, and doesn't raise an exception when warning messages are printed. A patch is attached.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;There's a missing fundamental type. IIRC: uint128_t. I just hacked a fix, (returned from a function instead of raising an error) I'm afraid, although I saw an example of where someone had submitted a similar set of patches.. I should have time to send patches in a few months, but just don't atm I'm afraid...&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I do have a couple of questions, however. I was looking through the generated source files, and noticed that all includes use absolute paths, and every source file includes the umbrella header python.hpp&gt;.&lt;/p&gt;&lt;p&gt;
&lt;/p&gt;&lt;p&gt;I was planning on using &lt;code&gt;sed&lt;/code&gt; to replace the prefix component (e.g. &lt;code&gt;/usr/include/&lt;/code&gt;) from the include paths, but can pyplusplus do that already, given some include paths?&lt;/p&gt;
&lt;p&gt;Replacing &lt;code&gt;#include &amp;lt;boost/python.hpp&amp;gt;&lt;/code&gt; with separate includes would be a lot more work to implement, I guess, but it'd probably be less work than doing it manually for over 2,000 header files, which was only a subset of a library I'd like to use from Python... That'll take forever to compile!&lt;/p&gt;
&lt;p&gt;Again, I don't have the time to look into this now, but I would be willing to look into this in a few months time (ie. after completing my PhD). If you've any thoughts, I'd appreciate suggestions on where in the code to look...&lt;/p&gt;
&lt;p&gt;Another couple of places I'd be interested in working on / using sed for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Automatically change case convention from whatever it is, to something a bit more PEP7/8-like, for all class, function, method and attribute names exposed to Python. e.g. convert function and method names to snake_case.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;If a method name starts with 'get' or 'Get', use &lt;code&gt;add_property&lt;/code&gt; instead of &lt;code&gt;def&lt;/code&gt;. If a corresponding setFoo method is declared, use that as well.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;I was planning on using sphinx, sphinx-breathe and doxygen to document the C++ code, and started doing so with manually exposed code. I'd like to automate that process as much as possible... e.g. add a lot of either &lt;code&gt;@sa&lt;/code&gt; or &lt;code&gt;@copydoc&lt;/code&gt; directives to inline code comments.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I've got to say, I think you've made a great package here! It must have taken a lot of time to get it where it is now! Thanks for sharing!&lt;/p&gt;
&lt;p&gt;Kind regards,&lt;br /&gt;
Alex&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Alex Leach</dc:creator><pubDate>Mon, 08 Jul 2013 11:46:55 -0000</pubDate><guid>https://sourceforge.net72387035a3e6b4d216003347b2e3632f9d9010dd</guid></item><item><title>#45 GCC 4.7.2 Compatibility</title><link>https://sourceforge.net/p/pygccxml/bugs/45/?limit=50#3bc0</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;No, not yet... I've been hand-writing my Boost Python wrappers since then, but I do need to have a look at the gccxml updates, as I did some work on the gccxml build system and could have done with these changes, by the look of them. Thanks for letting me know; I'll check it out when I get a chance&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Alex Leach</dc:creator><pubDate>Wed, 15 May 2013 16:41:02 -0000</pubDate><guid>https://sourceforge.net4f66dd59b326e6158b725c6eb326c8bc18fc4c04</guid></item><item><title>#45 GCC 4.7.2 Compatibility</title><link>https://sourceforge.net/p/pygccxml/bugs/45/?limit=25#4d52</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;Have you tried using the latest version of &lt;a class="" href="https://github.com/gccxml/gccxml"&gt;GCC_XML&lt;/a&gt;?&lt;br /&gt;
The comment on its latest commit reads:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Update GCC 4.8 headers to work with gccxml's GCC 4.2 parser&lt;/p&gt;
&lt;/blockquote&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jason Kankiewicz</dc:creator><pubDate>Wed, 15 May 2013 16:21:17 -0000</pubDate><guid>https://sourceforge.nete7000cd7ca0ee863b4019017993b17772b197b0c</guid></item><item><title>Transcription error with Boost.Function template parameter</title><link>https://sourceforge.net/p/pygccxml/bugs/47/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;The Boost.Python code creator for member functions doesn't correctly transcribe the preferred syntax of a Boost.Function instantiation's template argument because it inserts an extra pair of parentheses between the return type and the arguments in the function signature.&lt;/p&gt;
&lt;p&gt;For example, when binding the member function&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="n"&gt;void&lt;/span&gt; &lt;span class="n"&gt;A&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;boost&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="k"&gt;function&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;W&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;X&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Y&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Z&lt;/span&gt; &lt;span class="n"&gt;z&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Py++ will output&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="n"&gt;typedef&lt;/span&gt; &lt;span class="n"&gt;void&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="n"&gt;A&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;f_function_type&lt;/span&gt; &lt;span class="p"&gt;)(&lt;/span&gt; &lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="n"&gt;boost&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="k"&gt;function&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;W&lt;/span&gt; &lt;span class="p"&gt;()(&lt;/span&gt;&lt;span class="n"&gt;X&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Y&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Z&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;instead of&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="n"&gt;typedef&lt;/span&gt; &lt;span class="n"&gt;void&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="n"&gt;A&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;f_function_type&lt;/span&gt; &lt;span class="p"&gt;)(&lt;/span&gt; &lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="n"&gt;boost&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="k"&gt;function&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;W&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;X&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Y&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Z&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;and this causes a compilation error with a message like&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&amp;quot;&lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="n"&gt;returning&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="n"&gt;is&lt;/span&gt; &lt;span class="n"&gt;not&lt;/span&gt; &lt;span class="n"&gt;allowed&lt;/span&gt;&amp;quot;&lt;span class="p"&gt;.&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;This bug was encountered with r1856.                                                           &lt;br /&gt;
&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jason Kankiewicz</dc:creator><pubDate>Wed, 15 May 2013 16:11:27 -0000</pubDate><guid>https://sourceforge.net20e482177d53420ede33078b0fdbe9444f9e652d</guid></item><item><title>No value traits header for abstract base class</title><link>https://sourceforge.net/p/pygccxml/bugs/46/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;If a class ABC contains at least one pure virtual member function then Py++ will not generate an _ABC__value_traits.pypp.hpp header for it. This header's absence causes compilation errors when Py++ exposes STL containers using the Boost.Python Indexing Suite v2.&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jason Kankiewicz</dc:creator><pubDate>Wed, 27 Mar 2013 19:23:31 -0000</pubDate><guid>https://sourceforge.net7a62675e623f6b7eba04971423100668bbd67735</guid></item><item><title>GCC 4.7.2 Compatibility</title><link>https://sourceforge.net/p/pygccxml/bugs/45/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;Hi,&lt;br /&gt;
I'm trying to use Py++ to help generate wrappers for this C++ library I had started wrapping with Boost. I thought this could save me a LOT of time and as I've only just started learning Boost.Python, figured this could give me a real head start!&lt;/p&gt;
&lt;p&gt;Unfortunately, I'm having some problems, I think because gccxml only officially supports the c++98 standard, whereas the library I'm wrapping conforms to the C++11 standard.&lt;/p&gt;
&lt;p&gt;Before realising this, I went ahead and wrote a simple command line utility to use Py++, as the headers I am wrapping are installed in a system-wide folder, and the GUI tries to write there, even though my user doesn't have write-permissions.&lt;/p&gt;
&lt;p&gt;I attach it for anyone else who'd like a simple command-line interface to PyPlusPlus. &lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Alex Leach</dc:creator><pubDate>Fri, 01 Feb 2013 01:32:27 -0000</pubDate><guid>https://sourceforge.netd17650fc11ca6bd56c0c251bd5ed03325b2bdf1f</guid></item><item><title>An "explicit" qualifier on a constructor is ignored</title><link>https://sourceforge.net/p/pygccxml/bugs/44/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;The pyplusplus.decl_wrappers.calldef_wrapper.constructor_t.does_define_implicit_conversion method doesn't take the presence of an "explicit" qualifier on the constructor into account thereby enabling in Python a type conversion that is forbidden in C++.&lt;/p&gt;
&lt;p&gt;This bug was encountered in revision 1856.&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jason Kankiewicz</dc:creator><pubDate>Sat, 19 Jan 2013 01:14:14 -0000</pubDate><guid>https://sourceforge.netd9b34335d512aa71f87f7928678fbc6291d82280</guid></item><item><title>Bad keyword argument in transformed method's signature</title><link>https://sourceforge.net/p/pygccxml/bugs/43/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;The list of keyword arguments i.e. '( bp::arg("first"), bp::arg("second"). ... )' that Py++ generates for a transformed member function includes its corresponding wrapper function's instance argument i.e. '( bp::arg("inst"), bp::arg("first"), bp::arg("second"), ... )'.&lt;/p&gt;
&lt;p&gt;The "inst" argument should not be included in the keyword arguments because it is not an argument of the original member function and it would not be there if the member function's signature had not been transformed.&lt;/p&gt;
&lt;p&gt;This bug was encountered in revision 1856.&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jason Kankiewicz</dc:creator><pubDate>Wed, 02 Jan 2013 22:14:42 -0000</pubDate><guid>https://sourceforge.net1aeab0ad93d2d33bc3c4eb956626b2684a4e9574</guid></item><item><title>Wrapper for abstract base class won't compile</title><link>https://sourceforge.net/p/pygccxml/bugs/42/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;If one excludes a pure virtual member function of an abstract base class then Py++ will generate a wrapper class for it that won't compile because it doesn't contain an override for the excluded pure virtual function. &lt;/p&gt;
&lt;p&gt;For example:&lt;/p&gt;
&lt;p&gt;namespace example&lt;br /&gt;
{&lt;/p&gt;
&lt;p&gt;class Interface&lt;br /&gt;
{&lt;br /&gt;
public:&lt;/p&gt;
&lt;p&gt;virtual void ignoreMe() const = 0;&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;} // namespace example&lt;/p&gt;
&lt;p&gt;example = mb.global_ns.namespace('example')&lt;br /&gt;
Interface = example.class_('Interface')&lt;br /&gt;
Interface.member_function('ignoreMe').exclude()&lt;/p&gt;
&lt;p&gt;boost-1.46.1/boost/python/object/value_holder.hpp(66): error: object of abstract class type "Interface_wrapper" is not allowed:&lt;br /&gt;
pure virtual function "example::Interface::ignoreMe(...) const" has no overrider&lt;br /&gt;
Value m_held;&lt;br /&gt;
^boost/python/object/value_holder.hpp(66): error: object of abstract class type "Interface_wrapper" is not allowed:&lt;br /&gt;
pure virtual function "example::Interface::ignoreMe(...) const" has no overrider&lt;br /&gt;
Value m_held;&lt;br /&gt;
^&lt;/p&gt;
&lt;p&gt;This bug was encountered in revision 1856.&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jason Kankiewicz</dc:creator><pubDate>Wed, 19 Dec 2012 16:54:34 -0000</pubDate><guid>https://sourceforge.net40ab7be0c0ce8d231e2a423e6bfcb87146ccaa63</guid></item><item><title>Syntax error in Boost.Python Indexing Suite V2</title><link>https://sourceforge.net/p/pygccxml/bugs/41/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;The ICC compiler reports the following syntax error:&lt;br /&gt;
.../indexing_suite/workaround.hpp:25: Problem during constant expression evaluation: syntax error&lt;/p&gt;
&lt;p&gt;None of the other BOOST_WORKAROUND invocations in that header file are enclosed in parentheses.&lt;br /&gt;
Removing the enclosing parentheses prevents the syntax error report.&lt;/p&gt;
&lt;p&gt;This bug was encountered in revision 1856.&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jason Kankiewicz</dc:creator><pubDate>Wed, 25 Jan 2012 00:16:35 -0000</pubDate><guid>https://sourceforge.netde78e22743930171742022a3f4a91187ed8cd0e7</guid></item></channel></rss>