diff --git a/harbour/ChangeLog b/harbour/ChangeLog index c7c9e6c98f..9585b5f577 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -1,3 +1,11 @@ +19990524-14:30 CET Eddie Runia + * source/vm/hvm.c + := PValue() added + * tests/working/run_exp.h + added to function list + * tests/working/multiarg.prg + test program used + 19990524-10:25 CET Alexander Kressin (upload Eddie Runia) * source/hbpp added preprocessor diff --git a/harbour/source/vm/hvm.c b/harbour/source/vm/hvm.c index 5780e2db9b..515d33b578 100644 --- a/harbour/source/vm/hvm.c +++ b/harbour/source/vm/hvm.c @@ -127,6 +127,7 @@ static void ForceLink( void ); ULONG hb_isMessage( PITEM, char * ); ULONG hb_strAt( char *, long, char *, long ); +PITEM hb_itemReturn( PITEM ); #define STACK_INITITEMS 100 #define STACK_EXPANDITEMS 20 @@ -2206,4 +2207,23 @@ HARBOUR PCOUNT() _retni( wRet ); } +HARBOUR PVALUE() /* PValue( ) */ +{ + WORD wParam = _parni( 1 ); /* Get parameter */ + PITEM pBase = stack.pItems + stack.pBase->wBase; + /* Skip function + self */ + + if( wParam && wParam <= pBase->wParams ) /* Valid number */ + hb_itemReturn( pBase + 1 + wParam ); + else + { + PITEM pError = _errNew(); + + _errPutDescription(pError, "Argument error: PVALUE"); + _errLaunch(pError); + _errRelease(pError); + _ret(); + } +} + diff --git a/harbour/tests/working/multiarg.prg b/harbour/tests/working/multiarg.prg new file mode 100644 index 0000000000..37967b8cf5 --- /dev/null +++ b/harbour/tests/working/multiarg.prg @@ -0,0 +1,21 @@ +// +// MultiArg +// +// Testing of multiple arguments +// +// Date : 1999/05/24 +// +function Main() + + ShoutArg( 1, "1", 2.5, .T. ) + ShoutArg( 2, "1", 2.5, .T. ) + ShoutArg( 3, "1", 2.5, .T. ) + ShoutArg( 4, "1", 2.5, .T. ) + ShoutArg( 5, "1", 2.5, .T. ) +return nil + + +function ShoutArg( nArg, x1,x2,x3,x4,x5,x6,x7,x8,x9,x10 ) + + QOut( nArg, "==", PValue( nArg ) ) +return nil diff --git a/harbour/tests/working/run_exp.h b/harbour/tests/working/run_exp.h index 0d0f7fc4a3..e39a7a9ec7 100644 --- a/harbour/tests/working/run_exp.h +++ b/harbour/tests/working/run_exp.h @@ -116,6 +116,7 @@ HARBOUR TANH(); HARBOUR STRDUMP(); HARBOUR STRTOKEN(); HARBOUR ROT13(); +HARBOUR PVALUE(); /* Same story. @@ -233,5 +234,6 @@ static SYMBOL symbols[] = { { "TANH", FS_PUBLIC, TANH , 0 }, { "STRDUMP", FS_PUBLIC, STRDUMP , 0 }, { "STRTOKEN", FS_PUBLIC, STRTOKEN , 0 }, -{ "ROT13", FS_PUBLIC, ROT13 , 0 } +{ "ROT13", FS_PUBLIC, ROT13 , 0 }, +{ "PVALUE", FS_PUBLIC, PVALUE , 0 } };