QDBusXML2cpp troubles
The current telepathy-Qt bindings are seriously outdated and I am working on coming up with a new set of bindings (mostly) generated directly from the Telepathy specification XML files. This took much longer than originally anticipated since the Telepathy people do not believe in defining types before using them (they consider type information in the spec to be purely informational since it is not needed for glib bindings) nor want the be limited in their freedom to write the specification by requirements of any language bindings (like reserved keywords, etc.). Qt’s dbusxml2cpp type annotation did not make things easier either…
I thought I had managed all that: The bindings generate fine, hardly any manual tweaks to the code are required and the code even compiles fine. But today I found out that my updated Telepathy bindings for Qt are having some serious issue: The bindings are incomplete.
After some investigating I found out that qdbusxml2cpp is causing the issue: D-Bus allows a arbitrary number of out parameters, qdbusxml2cpp only one (or zero).
To make matters worse: qdbusxml2cpp fails without returning an error code, giving an error message or any other indication that anything went wrong. It even generates bindings that compile fine. Unfortunately the generated code does contain methods/signals up to the first method with several output parameters. All the other methods/signals are just missing from the generated code:-(
Has someone encountered this kind of problem before? Is there a workaround? I could handcraft the code again, but then it will be basically impossible to update the bindings once new versions of the telepathy specification become available.
Update: Thiago looked at the issue and together we found the problem. It was not an issue in qdbusxml2cpp after all just one of the generator scripts putting an invalid type into the XML. Dbusxml2cpp is just not giving out any hint about the real trouble (or that there is any trouble at all). Run xmllint if you need to debug issues with the files qdbusxml2cpp chokes on.