[GNC-dev] Python C++ bindings - Re: Python: About Wrapping SWIG Objects (GncNumeric)
c.holtermann at gmx.de
c.holtermann at gmx.de
Thu Aug 23 15:01:52 EDT 2018
Am 2018-08-23 16:52, schrieb c.holtermann at gmx.de:
> Am 2018-08-06 16:14, schrieb John Ralls:
>>> On Aug 6, 2018, at 5:19 AM, c.holtermann at gmx.de wrote:
>>>
>>> Am 2018-08-06 11:35, schrieb Geert Janssens:
>>>> Op maandag 6 augustus 2018 05:32:27 CEST schreef John Ralls:
>>>>> > On Aug 5, 2018, at 5:17 PM, c.holtermann at gmx.de wrote:
>>>>> >
>>>>> > Hello,
>>>>> >
>>>>> > after some time I get back to the gnucash python bindings.
>>>>> >
>>>>> > I worked on a str method for GncNumeric. It's in the example_script
>>>>> > dir
>>>>> > (https://github.com/Gnucash/gnucash/blob/maint/bindings/python/example_sc
>>>>> > ripts/str_methods.py) I changed it to python3.
>>>> I read at the beginning of this file you chose to implement it as an
>>>> example
>>>> script which - if found useful - could be added to gnucash_core.
>>>> You have my blessing to include it in gnucash_core :)
>>>>> > Well I found it interesting to think these things through. Maybe someone
>>>>> > can tell me about the mysterious "later on" in the cited comment. At this
>>>>> > point I find it useful to have a way from the instance to the wrapping
>>>>> > object through some kind of link as I suggested in the patch to
>>>>> > function_class.
>>>>> Christoph,
>>>>> The person who wrote the first two lines of that, Mark Jenkins, was
>>>>> the
>>>>> original source of the Python bindings. He was never a regular dev,
>>>>> he just
>>>>> got 16 patches committed between 2007 and 2012, 10 of which touched
>>>>> the
>>>>> python bindings. Your history with them is almost as long as
>>>>> his--in fact
>>>>> you have *12* commits--and pretty much no one else has done
>>>>> anything
>>>>> serious with them.
>>>> Hopefully Mark is still around on the list to clarify.
>>>>> In other words, if anyone knows, it’s you!
>>>> True :)
>>>>> Just to add some more confusion, there’s now a C++ class GncNumeric
>>>>> that
>>>>> handles the actual implementation of many of the gnc_numeric.*
>>>>> functions. I
>>>>> believe that SWIG can’t see it, only the C wrapper functions are
>>>>> exposed to
>>>>> SWIG.
>>>> It would be a very useful experiment to wrap the C++ GncNumeric
>>>> class directly
>>>> rather than it's c wrapper gnc_numeric_xxx. Python doesn't need the
>>>> c
>>>> compatibility layer it represents.
>>>> Geert
>>>
>>> Geert,
>>>
>>> unfortunately your mail went to my spam folder for whatever reason.
>>> Trying to
>>> do C++ bindings for python sounds very interesting. I'd like to try
>>> that when
>>> I find the time for a simple example type. I don't know if GncNumeric
>>> would
>>> be a good candidate. I'll have a look at it. Thanks for the blessing
>>> :-)
>>
>> Python has its own rational numbers so the only thing the Python
>> bindings need is a way to convert to-and-from that to GncNumeric for
>> communicating with the rest of the GnuCash API.
>>
>> I suggest QofSession as the first C++ class to play with SWIGing. It’s
>> fairly simple and using it is the first step in using the bindings.
>>
>> Regards,
>> John Ralls
>
> Hello,
>
> I've created an experimental branch in my fork of gnucash to create
> swig python
> bindings for c++ files. As suggested I started with QofSessionImpl for
> which I
> have created an example file to create a file and an account. I also
> included
> GncNumeric. There's no example for that yet. It's very raw. I disabled
> some errors.
> It's more of a proof of concept but it's a step on the way.
> https://github.com/c-holtermann/gnucash/tree/ch-python
>
> regards,
>
> Christoph Holtermann
> _______________________________________________
> gnucash-devel mailing list
> gnucash-devel at gnucash.org
> https://lists.gnucash.org/mailman/listinfo/gnucash-devel
Hello,
I've moved the python c++ specifics to a separate branch in my fork. It
is https://github.com/c-holtermann/gnucash/tree/python-c%2B%2B.
regards,
Christoph Holtermann
More information about the gnucash-devel
mailing list