On Jan 2, 2006, at 19:36, Dan Sugalski wrote:

The big hang up has been the removal of the T and L parameter types for NCI calls. T was a string pointer array and L was a long array.

[ ... ]

Are there alternatives? The documentation for this stuff is worse now than when I wrote it originally, and it's not clear what needs to be done to duplicate the functionality of the removed call types.

Sorry for the documentation mismatch, but you know that's the hardest part. Anyway using {Un,}ManagedStruct for any item more complex than a simple type (incl. C-strings) is the way to go. There are by far too many possible permutations of foo* items to be covered with just one or two plain signature chars.

This pod:

$ perldoc docs/pmc/struct.pod

should cover most of it.

Some examples are e.g. t/pmc/nci.t: nci_pi - struct with ints
or runtime/parrot/library/libpcre.pir, which is using array of ints too.
The SDL libraries are also using rather complex structures built with the *Struct interface.

BTW: while looking at runtime/parrot/library/postgres.pir and runtime/parrot/library/postgres.declarations I discovered some inconsistencies, especially with these more complex structures, e.g.:

dlfunc $P2, $P1, 'PQexecParams',   'pptiLTLLi'
dlfunc $P2, $P1, 'PQexecPrepared', 'pptit33i'

whike the C declarations are vastly the same, the PIR counterparts are totally different.

HTH,
leo

Reply via email to