On Mar 17, 2014, at 10:52 AM, Derek Atkins <warl...@mit.edu> wrote: > John Ralls <jra...@ceridwen.us> writes: > >>> TypeError: in method 'xaccAccountGetName', argument 1 of type >>> Account const *' > [snip] >> >> The signature of xaccAccountGetName is const char* xaccAccountGetName >> (const Account *); the const was added in 2005. A "const Account *" is >> not the same as an "Account const *": The former means that the >> contents of the pointer won't change, the latter means that the >> pointer itself won't change (see >> https://www.cs.bu.edu/teaching/cpp/const/). >> >> Somewhere in the SWIG-generated Python-to-C translation code the >> argument type is wrong, but it's not directly in the stack trace from >> Python. It's more likely due to a change in SWIG than to a change in >> GnuCash. > > Could it be a const v non-const issue? I.e., if python has an Account* > object (non-const) does it realize that it can pass it to a function > that is asking for a const object (either const Account* or Account > const * -- doesn't matter)? C certainly knows this, but it sounds like > Python might not.
At that level, it’s all C; in this case it’s C generated by SWIG instead of written by hand, but it’s still C. Python doesn’t even have the concept of const, and its handling of types is deliberately generic: If an object has a member with the right name, it’s happy. Regards, John Ralls _______________________________________________ gnucash-devel mailing list gnucash-devel@gnucash.org https://lists.gnucash.org/mailman/listinfo/gnucash-devel