Most primitive types are handled in XML, but this is not reflected
by the signatures, error messages, doc strings and hinting stubs.
In order to enhance the information shown to be more correct,
the C++ parser was completely rewritten for Python. It is closely
written to Python syntax, but keeps the existing information about
primitive types intact.
In the C implementation, pointer variables are turned into result
tuples that can hold multiple values. To create a correct Python
display of those variables, the signatures must be re-written,
accordingly. We apply the transformations automatically:
The former approach using heuristics did not work out. We now use a deterministic scheme where primitive pointer variables are marked with the XML attribute <array/>.
This sets a C++ flag NativePointerAsArrayPattern, which is propagated to Python as an array prefix for the type.