On Sunday 19 October 2003 23:01, Daniel Veillard wrote:
On Sun, Oct 19, 2003 at 10:43:33PM +0200, Melvyn Sopacua wrote: Content-Description: signed dataThis works: ======================================================================== void printElementStructured(xmlElementPtr el)[...]This doesn't: ======================================================================== void printElementStructured(int *level, xmlElementPtr el) {[...]xmlHashScan(table, (xmlHashScanner) printElementStructured, &level);And you're surprised ? Your problem is the use of the C language apparently. You cannot expect to shuffle arguments and have the compiler guess magically that your interface changed and reorder arguments.
Ehm - then I don't know why your own code in valid.c works.
xmlElementPtr is the first argument, changing it to the second one is unlikely to work with any C compiler. Parameters are accessed by index on the stack relative to the current function frame pointer, not by magic name association.
How is the second version different from: /** * xmlDumpElementDecl: * @buf: the XML buffer output * @elem: An element table * * This will dump the content of the element declaration as an XML * DTD definition */ void xmlDumpElementDecl(xmlBufferPtr buf, xmlElementPtr elem) { /* Notice buf as first argument */ } /** * xmlDumpElementTable: * @buf: the XML buffer output * @table: An element table * * This will dump the content of the element table as an XML DTD definition */ void xmlDumpElementTable(xmlBufferPtr buf, xmlElementTablePtr table) { xmlHashScan(table, (xmlHashScanner) xmlDumpElementDecl, buf); } Further investigation shows that xmlSchemaTypeDump in xmlschema.c indeed has the argument order you list and swapping the arguments in my function works. -- Melvyn
Attachment:
pgpRNKcMAhrO9.pgp
Description: signature