From f0cf48b5223e790303c23ab7e6233540f2883fae Mon Sep 17 00:00:00 2001 From: Petr Chornyj Date: Mon, 3 Jan 2011 20:19:10 +0000 Subject: [PATCH] 2011-03-01 22:20 UTC+0200 Petr Chornyj (myorg63 at mail.ru) * contrib/hbmisc/nconvert.prg + Added DecToRoman() function * contrib/hbmxml/hbmxml.c * Changed to use STR API for UTF8 conversions ; QUESTION: for mxmlNewCDATA, mxmlSetCDATA, mxmlGetCDATA it's acceptable? --- harbour/ChangeLog | 8 + harbour/contrib/hbmisc/nconvert.prg | 56 ++++++ harbour/contrib/hbmxml/hbmxml.c | 253 +++++++++++++++++++++------- 3 files changed, 253 insertions(+), 64 deletions(-) diff --git a/harbour/ChangeLog b/harbour/ChangeLog index df99ffad69..ea9dac2555 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -16,6 +16,14 @@ The license applies to all entries newer than 2009-04-28. */ +2011-03-01 22:20 UTC+0200 Petr Chornyj (myorg63 at mail.ru) + * contrib/hbmisc/nconvert.prg + + Added DecToRoman() function + * contrib/hbmxml/hbmxml.c + * Changed to use STR API for UTF8 conversions + ; QUESTION: for mxmlNewCDATA, mxmlSetCDATA, mxmlGetCDATA + it's acceptable? + 2011-03-01 17:30 UTC+0200 Petr Chornyj (myorg63 at mail.ru) * contrib/hbmxml/tests/reminder.prg ! Fixed to use with miniXML r433 diff --git a/harbour/contrib/hbmisc/nconvert.prg b/harbour/contrib/hbmisc/nconvert.prg index cefadfe49c..df49ddfdf2 100644 --- a/harbour/contrib/hbmisc/nconvert.prg +++ b/harbour/contrib/hbmisc/nconvert.prg @@ -146,3 +146,59 @@ FUNCTION HexaToDec( cString ) nNumber += ( At( SubStr( cNewString, nX, 1 ), "0123456789ABCDEF" ) - 1 ) * ( 16 ** ( nLen - nX ) ) NEXT RETURN nNumber + +FUNCTION DecToRoman( nNumber ) + LOCAL cRoman := "" + DO WHILE ( nNumber >= 1000 ) + cRoman += "M" + nNumber -= 1000 + END + DO WHILE ( nNumber >= 900 ) + cRoman += "CM" + nNumber -= 900 + END + DO WHILE ( nNumber >= 500 ) + cRoman += "D" + nNumber -= 500 + END + DO WHILE ( nNumber >= 400 ) + cRoman += "CD" + nNumber -= 400 + END + DO WHILE ( nNumber >= 100 ) + cRoman += "C" + nNumber -= 100 + END + DO WHILE ( nNumber >= 90 ) + cRoman += "XC" + nNumber -= 90 + END + DO WHILE ( nNumber >= 50 ) + cRoman += "L" + nNumber -= 50 + END + DO WHILE ( nNumber >= 40 ) + cRoman += "XL" + nNumber -= 40 + END + DO WHILE ( nNumber >= 10 ) + cRoman += "X" + nNumber -= 10 + END + DO WHILE ( nNumber >= 9 ) + cRoman += "IX" + nNumber -= 9 + END + DO WHILE ( nNumber >= 5 ) + cRoman += "V" + nNumber -= 5 + END + DO WHILE ( nNumber >= 4 ) + cRoman += "IV" + nNumber -= 4 + END + DO WHILE ( nNumber >= 1 ) + cRoman += "I" + --nNumber + END + RETURN cRoman diff --git a/harbour/contrib/hbmxml/hbmxml.c b/harbour/contrib/hbmxml/hbmxml.c index c02e3014ba..2c6fb7580b 100644 --- a/harbour/contrib/hbmxml/hbmxml.c +++ b/harbour/contrib/hbmxml/hbmxml.c @@ -54,6 +54,7 @@ #include "hbapiitm.h" #include "hbapierr.h" #include "hbapifs.h" +#include "hbapistr.h" #include "hbstack.h" #include "hbvm.h" @@ -325,7 +326,7 @@ HB_FUNC( MXMLGETELEMENT ) mxml_node_t * node = ( mxml_node_t * ) hb_mxml_node_param( 1 ); if( node ) - hb_retc( mxmlGetElement( node ) ); + hb_retstr_utf8( mxmlGetElement( node ) ); else hb_errRT_BASE_SubstR( EG_ARG, 3012, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS ); } @@ -349,7 +350,7 @@ HB_FUNC( MXMLGETOPAQUE ) mxml_node_t * node = ( mxml_node_t * ) hb_mxml_node_param( 1 ); if( node ) - hb_retc( mxmlGetOpaque( node ) ); + hb_retstr_utf8( mxmlGetOpaque( node ) ); else hb_errRT_BASE_SubstR( EG_ARG, 3012, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS ); } @@ -374,9 +375,9 @@ HB_FUNC( MXMLGETTEXT ) if( node ) { - int whitespace = hb_parni( 2 ) ; + int whitespace = hb_parni( 2 ); - hb_retc( mxmlGetText( node, &whitespace ) ); + hb_retstr_utf8( mxmlGetText( node, &whitespace ) ); hb_storni( whitespace, 2 ); } else @@ -390,7 +391,7 @@ HB_FUNC( MXMLGETCDATA ) mxml_node_t * node = ( mxml_node_t * ) hb_mxml_node_param( 1 ); if( node ) - hb_retc( mxmlGetCDATA( node ) ); + hb_retstr_utf8( mxmlGetCDATA( node ) ); else hb_errRT_BASE_SubstR( EG_ARG, 3012, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS ); } @@ -431,18 +432,6 @@ HB_FUNC( MXMLSETUSERDATA ) hb_errRT_BASE_SubstR( EG_ARG, 3012, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS ); } -/* int mxmlIndexGetCount( mxml_index_t *ind ) */ - -HB_FUNC( MXMLINDEXGETCOUNT ) -{ - mxml_index_t * index = ( mxml_index_t * ) hb_mxml_index_param( 1 ); - - if( index ) - hb_retni( mxmlIndexGetCount( index ) ); - else - hb_errRT_BASE_SubstR( EG_ARG, 3012, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS ); -} - /* void mxmlAdd( mxml_node_t * parent, int where, mxml_node_t * child, mxml_node_t * node ) */ HB_FUNC( MXMLADD ) @@ -477,7 +466,13 @@ HB_FUNC( MXMLELEMENTDELETEATTR ) mxml_node_t * node = ( mxml_node_t * ) hb_mxml_node_param( 1 ); if( node ) - mxmlElementDeleteAttr( node, hb_parc( 2 ) ); + { + void * hName; + + mxmlElementDeleteAttr( node, hb_parstr_utf8( 2, &hName, NULL ) ); + + hb_strfree( hName ); + } else hb_errRT_BASE_SubstR( EG_ARG, 3012, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS ); } @@ -489,7 +484,13 @@ HB_FUNC( MXMLELEMENTGETATTR ) mxml_node_t * node = ( mxml_node_t * ) hb_mxml_node_param( 1 ); if( node ) - hb_retc( mxmlElementGetAttr( node, hb_parc( 2 ) ) ); + { + void * hName; + + hb_retstr_utf8( mxmlElementGetAttr( node, hb_parstr_utf8( 2, &hName, NULL ) ) ); + + hb_strfree( hName ); + } else hb_errRT_BASE_SubstR( EG_ARG, 3012, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS ); } @@ -501,7 +502,15 @@ HB_FUNC( MXMLELEMENTSETATTR ) mxml_node_t * node = ( mxml_node_t * ) hb_mxml_node_param( 1 ); if( node ) - mxmlElementSetAttr( node, hb_parc( 2 ), hb_parc( 3 ) ); + { + void * hName; + void * hValue; + + mxmlElementSetAttr( node, hb_parstr_utf8( 2, &hName, NULL ), hb_parstr_utf8( 3, &hValue, NULL ) ); + + hb_strfree( hName ); + hb_strfree( hValue ); + } else hb_errRT_BASE_SubstR( EG_ARG, 3012, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS ); } @@ -510,16 +519,20 @@ HB_FUNC( MXMLELEMENTSETATTR ) HB_FUNC( MXMLENTITYGETNAME ) { - hb_retc( mxmlEntityGetName( hb_parni( 1 ) - 1 ) ); + hb_retstr_utf8( mxmlEntityGetName( hb_parni( 1 ) - 1 ) ); } /* int mxmlEntityGetValue( const char * name ) */ HB_FUNC( MXMLENTITYGETVALUE ) { - int i = mxmlEntityGetValue( hb_parc( 1 ) ); + void * hName; + + int i = mxmlEntityGetValue( hb_parstr_utf8( 1, &hName, NULL ) ); hb_retni( i < 0 ? -1 : i + 1 ); + + hb_strfree( hName ); } /* @@ -530,14 +543,24 @@ HB_FUNC( MXMLENTITYGETVALUE ) HB_FUNC( MXMLFINDELEMENT ) { + void * hName; + void * hAttr; + void * hValue; mxml_node_t * node = ( mxml_node_t * ) hb_mxml_node_param( 1 ); mxml_node_t * top = ( mxml_node_t * ) hb_mxml_node_param( 2 ); if( node && top ) { mxml_node_t * nodef = mxmlFindElement( node, top, - hb_parc( 3 ), hb_parc( 4 ), - hb_parc( 5 ), hb_parni( 6 ) ); + hb_parstr_utf8( 3, &hName, NULL ), + hb_parstr_utf8( 4, &hAttr, NULL ), + hb_parstr_utf8( 5, &hValue, NULL ), + hb_parni( 6 ) ); + + hb_strfree( hName ); + hb_strfree( hAttr ); + hb_strfree( hValue ); + if( nodef ) hb_mxml_node_ret( nodef ); } @@ -549,32 +572,33 @@ HB_FUNC( MXMLFINDELEMENT ) HB_FUNC( MXMLFINDPATH ) { - mxml_node_t * node = ( mxml_node_t * ) hb_mxml_node_param( 1 ); + void * hPath; + mxml_node_t * node = ( mxml_node_t * ) hb_mxml_node_param( 1 ); if( node ) { - mxml_node_t * nodef = mxmlFindPath( node, hb_parc( 2 ) ); + mxml_node_t * nodef = mxmlFindPath( node, hb_parstr_utf8( 2, &hPath, NULL ) ); if( nodef ) hb_mxml_node_ret( nodef ); + + hb_strfree( hPath ); } else hb_errRT_BASE_SubstR( EG_ARG, 3012, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS ); } -/* void mxmlIndexDelete( mxml_index_t * ind ) */ +/* int mxmlIndexGetCount( mxml_index_t * ind ) */ -/* - HB_FUNC( MXMLINDEXDELETE ) - { +HB_FUNC( MXMLINDEXGETCOUNT ) +{ mxml_index_t * index = ( mxml_index_t * ) hb_mxml_index_param( 1 ); if( index ) - mxmlIndexDelete( index ); + hb_retni( mxmlIndexGetCount( index ) ); else hb_errRT_BASE_SubstR( EG_ARG, 3012, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS ); - } - */ +} /* mxml_node_t * mxmlIndexEnum( mxml_index_t * ind ) */ @@ -596,7 +620,14 @@ HB_FUNC( MXMLINDEXFIND ) if( index ) { - mxml_node_t * nodef = mxmlIndexFind( index, hb_parc( 2 ), hb_parc( 3 ) ); + void * hElement; + void * hValue; + mxml_node_t * nodef = mxmlIndexFind( index, + hb_parstr_utf8( 2, &hElement, NULL ), + hb_parstr_utf8( 3, &hValue, NULL ) ); + + hb_strfree( hElement ); + hb_strfree( hValue ); if( nodef ) hb_mxml_node_ret( nodef ); @@ -613,7 +644,14 @@ HB_FUNC( MXMLINDEXNEW ) if( node ) { - mxml_index_t * index = mxmlIndexNew( node, hb_parc( 2 ), hb_parc( 3 ) ); + void * hElement; + void * hAttribute; + mxml_index_t * index = mxmlIndexNew( node, + hb_parstr_utf8( 2, &hElement, NULL ), + hb_parstr_utf8( 3, &hAttribute, NULL ) ); + + hb_strfree( hElement ); + hb_strfree( hAttribute ); if( index ) hb_mxml_index_ret( index ); @@ -639,6 +677,18 @@ HB_FUNC( MXMLINDEXRESET ) hb_errRT_BASE_SubstR( EG_ARG, 3012, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS ); } +/* void mxmlIndexDelete( mxml_index_t * ind ) */ + +HB_FUNC( MXMLINDEXDELETE ) +{ + mxml_index_t * index = ( mxml_index_t * ) hb_mxml_index_param( 1 ); + + if( index ) + mxmlIndexDelete( index ); + else + hb_errRT_BASE_SubstR( EG_ARG, 3012, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS ); +} + /* ================ mxml_type_t type_cb( mxml_node_t * node ) =================== */ static mxml_type_t type_cb( mxml_node_t * node ) @@ -677,12 +727,13 @@ static mxml_type_t type_cb( mxml_node_t * node ) } /* - mxml_node_t * mxmlLoadString(mxml_node_t * top, const char * s, - mxml_type_t (*cb)(mxml_node_t *)) + mxml_node_t * mxmlLoadString( mxml_node_t * top, const char * s, + mxml_type_t (*cb)(mxml_node_t *) ) */ HB_FUNC( MXMLLOADSTRING ) { + void * hFree; mxml_node_t * node_top; mxml_node_t * node; mxml_load_cb_t cb = MXML_NO_CALLBACK; @@ -727,25 +778,31 @@ HB_FUNC( MXMLLOADSTRING ) default: cb = MXML_NO_CALLBACK; } } - node = mxmlLoadString( node_top, hb_parc( 2 ), cb ); + + node = mxmlLoadString( node_top, hb_parstr_utf8( 2, &hFree, NULL ), cb ); pType_cb->type_cb = NULL; if( node ) hb_mxml_node_ret( node ); + + hb_strfree( hFree ); } /* mxml_node_t * mxmlNewCDATA( mxml_node_t * parent, const char * string ) */ HB_FUNC( MXMLNEWCDATA ) { - mxml_node_t * node; + void * hString; + mxml_node_t * node; if( HB_ISNIL( 1 ) || ( HB_ISNUM( 1 ) && hb_parni( 1 ) == MXML_NO_PARENT ) ) { - node = mxmlNewCDATA( MXML_NO_PARENT, hb_parc( 2 ) ); + node = mxmlNewCDATA( MXML_NO_PARENT, hb_parstr_utf8( 2, &hString, NULL ) ); if( node ) hb_mxml_node_ret( node ); + + hb_strfree( hString ); } else { @@ -753,10 +810,12 @@ HB_FUNC( MXMLNEWCDATA ) if( node_parent ) { - node = mxmlNewCDATA( node_parent, hb_parc( 2 ) ); + node = mxmlNewCDATA( node_parent, hb_parstr_utf8( 2, &hString, NULL ) ); if( node ) hb_mxml_node_ret( node ); + + hb_strfree( hString ); } else hb_errRT_BASE_SubstR( EG_ARG, 3012, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS ); @@ -767,14 +826,17 @@ HB_FUNC( MXMLNEWCDATA ) HB_FUNC( MXMLNEWELEMENT ) { - mxml_node_t * node; + void * hName; + mxml_node_t * node; if( HB_ISNIL( 1 ) || ( HB_ISNUM( 1 ) && hb_parni( 1 ) == MXML_NO_PARENT ) ) { - node = mxmlNewElement( MXML_NO_PARENT, hb_parc( 2 ) ); + node = mxmlNewElement( MXML_NO_PARENT, hb_parstr_utf8( 2, &hName, NULL ) ); if( node ) hb_mxml_node_ret( node ); + + hb_strfree( hName ); } else { @@ -782,10 +844,12 @@ HB_FUNC( MXMLNEWELEMENT ) if( node_parent ) { - node = mxmlNewElement( node_parent, hb_parc( 2 ) ); + node = mxmlNewElement( node_parent, hb_parstr_utf8( 2, &hName, NULL ) ); if( node ) hb_mxml_node_ret( node ); + + hb_strfree( hName ); } else hb_errRT_BASE_SubstR( EG_ARG, 3012, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS ); @@ -821,18 +885,35 @@ HB_FUNC( MXMLNEWINTEGER ) } } -/* mxml_node_t * mxmlNewOpaque( mxml_node_t *parent, const char *opaque ) */ +/* mxml_node_t * mxmlNewOpaque( mxml_node_t *parent, const char * opaque ) */ HB_FUNC( MXMLNEWOPAQUE ) { + void * hOpaque; + mxml_node_t * node; + if( HB_ISNIL( 1 ) || ( HB_ISNUM( 1 ) && hb_parni( 1 ) == MXML_NO_PARENT ) ) - hb_mxml_node_ret( mxmlNewOpaque( MXML_NO_PARENT, hb_parc( 2 ) ) ); + { + node = mxmlNewOpaque( MXML_NO_PARENT, hb_parstr_utf8( 2, &hOpaque, NULL ) ); + + if( node ) + hb_mxml_node_ret( node ); + + hb_strfree( hOpaque ); + } else { mxml_node_t * node_parent = ( mxml_node_t * ) hb_mxml_node_param( 1 ); if( node_parent ) - hb_mxml_node_ret( mxmlNewOpaque( node_parent, hb_parc( 2 ) ) ); + { + node = mxmlNewOpaque( node_parent, hb_parstr_utf8( 2, &hOpaque, NULL ) ); + + if( node ) + hb_mxml_node_ret( node ); + + hb_strfree( hOpaque ); + } else hb_errRT_BASE_SubstR( EG_ARG, 3012, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS ); } @@ -871,14 +952,18 @@ HB_FUNC( MXMLNEWREAL ) HB_FUNC( MXMLNEWTEXT ) { - mxml_node_t * node; + void * hString; + mxml_node_t * node; if( HB_ISNIL( 1 ) || ( HB_ISNUM( 1 ) && hb_parni( 1 ) == MXML_NO_PARENT ) ) { - node = mxmlNewText( MXML_NO_PARENT, hb_parnidef( 2, 0 ), hb_parc( 3 ) ); + node = mxmlNewText( MXML_NO_PARENT, hb_parnidef( 2, 0 ), + hb_parstr_utf8( 3, &hString, NULL ) ); if( node ) hb_mxml_node_ret( node ); + + hb_strfree( hString ); } else { @@ -887,9 +972,12 @@ HB_FUNC( MXMLNEWTEXT ) if( node_parent ) { node = mxmlNewText( node_parent, hb_parnidef( 2, 0 ), - hb_parc( 3 ) ); + hb_parstr_utf8( 3, &hString, NULL ) ); + if( node ) hb_mxml_node_ret( node ); + + hb_strfree( hString ); } else hb_errRT_BASE_SubstR( EG_ARG, 3012, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS ); @@ -900,12 +988,15 @@ HB_FUNC( MXMLNEWTEXT ) HB_FUNC( MXMLNEWXML ) { - mxml_node_t * node; + mxml_node_t * node; + void * hVersion; - node = mxmlNewXML( HB_ISCHAR( 1 ) ? hb_parc( 1 ) : "1.0" ); + node = mxmlNewXML( HB_ISCHAR( 1 ) ? hb_parstr_utf8( 1, &hVersion, NULL ) : "1.0" ); if( node ) hb_mxml_node_ret( node ); + + hb_strfree( hVersion ); } /* int mxmlRelease( mxml_node_t * node ) */ @@ -956,8 +1047,10 @@ static const char * save_cb( mxml_node_t * node, int where ) if( pSym && hb_vmRequestReenter() ) { - const char * pszResult; PHB_ITEM pNode = hb_itemNew( NULL ); + PHB_ITEM pResult; + + const char * pszResult; mxmlRetain( node ); hb_mxml_node_ItemPut( pNode, node ); @@ -966,13 +1059,24 @@ static const char * save_cb( mxml_node_t * node, int where ) hb_vmPushNil(); hb_vmPushItemRef( pNode ); hb_vmPushInteger( where ); - hb_vmFunction( 2 ); - pszResult = HB_ISCHAR( -1 ) ? hb_parc( -1 ) : NULL; + + pResult = hb_param( -1, HB_IT_ANY ); + if( hb_itemType( pResult ) == HB_IT_STRING ) + { + void * hText; + HB_SIZE nText; + const char * pszText = hb_itemGetStrUTF8( pResult, &hText, &nText ); + + hb_strfree( hText ); + pszResult = pszText; + } + else + pszResult = NULL; hb_itemRelease( pNode ); - hb_vmRequestRestore(); + return pszResult; } else @@ -1091,7 +1195,13 @@ HB_FUNC( MXMLSETCDATA ) mxml_node_t * node = ( mxml_node_t * ) hb_mxml_node_param( 1 ); if( node ) - hb_retni( mxmlSetCDATA( node, hb_parc( 2 ) ) ); + { + void * hData; + + hb_retni( mxmlSetCDATA( node, hb_parstr_utf8( 2, &hData, NULL ) ) ); + + hb_strfree( hData ); + } else hb_errRT_BASE_SubstR( EG_ARG, 3012, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS ); } @@ -1103,7 +1213,13 @@ HB_FUNC( MXMLSETELEMENT ) mxml_node_t * node = ( mxml_node_t * ) hb_mxml_node_param( 1 ); if( node ) - hb_retni( mxmlSetElement( node, hb_parc( 2 ) ) ); + { + void * hFree; + + hb_retni( mxmlSetElement( node, hb_parstr_utf8( 2, &hFree, NULL ) ) ); + + hb_strfree( hFree ); + } else hb_errRT_BASE_SubstR( EG_ARG, 3012, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS ); } @@ -1127,7 +1243,13 @@ HB_FUNC( MXMLSETOPAQUE ) mxml_node_t * node = ( mxml_node_t * ) hb_mxml_node_param( 1 ); if( node ) - hb_retni( mxmlSetOpaque( node, hb_parc( 2 ) ) ); + { + void * hOpaque; + + hb_retni( mxmlSetOpaque( node, hb_parstr_utf8( 2, &hOpaque, NULL ) ) ); + + hb_strfree( hOpaque ); + } else hb_errRT_BASE_SubstR( EG_ARG, 3012, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS ); } @@ -1151,7 +1273,13 @@ HB_FUNC( MXMLSETTEXT ) mxml_node_t * node = ( mxml_node_t * ) hb_mxml_node_param( 1 ); if( node ) - hb_retni( mxmlSetText( node, ( int ) hb_parldef( 2, HB_FALSE ), hb_parc( 3 ) ) ); + { + void * hString; + + hb_retni( mxmlSetText( node, hb_parnidef( 2, 1 ), hb_parstr_utf8( 3, &hString, NULL ) ) ); + + hb_strfree( hString ); + } else hb_errRT_BASE_SubstR( EG_ARG, 3012, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS ); } @@ -1181,10 +1309,7 @@ HB_FUNC( MXMLWALKNEXT ) hb_errRT_BASE_SubstR( EG_ARG, 3012, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS ); } -/* - mxml_node_t * mxmlWalkPrev(mxml_node_t *node, mxml_node_t *top, - int descend) - */ +/* mxml_node_t * mxmlWalkPrev( mxml_node_t * node, mxml_node_t * top, int descend ) */ HB_FUNC( MXMLWALKPREV ) {