From 09b00e1fac3e75966964645388c8000db0eef466 Mon Sep 17 00:00:00 2001 From: Eddie Runia Date: Fri, 4 Jun 1999 17:14:20 +0000 Subject: [PATCH] see changelog (conflict) --- harbour/ChangeLog | 6 ++++ harbour/makefile.b16 | 3 +- harbour/makefile.b31 | 3 +- harbour/makefile.b32 | 3 +- harbour/makefile.icc | 2 ++ harbour/makefile.vc | 4 +++ harbour/source/rtl/descend.c | 53 +++++++++++++++++++++++++++++++ harbour/source/vm/initsymb.c | 1 + harbour/tests/working/descend.prg | 35 ++++++++++++++++++++ 9 files changed, 107 insertions(+), 3 deletions(-) create mode 100644 harbour/source/rtl/descend.c create mode 100644 harbour/tests/working/descend.prg diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 8d313c0cba..bd61674102 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -1,3 +1,9 @@ +19990604-18:05 CET Jose Lalin (upload Eddie Runia) + * makefile.* + descend added + * source/rtl/descend.c; tests/working/descend.prg; source/vm/initsymb.c + descend added + 19990604-12:00 EDT David G. Holm * build31.bat - Removed the non-portable fully qualified path that somebody added diff --git a/harbour/makefile.b16 b/harbour/makefile.b16 index ffd1bb79ee..a104b848fd 100644 --- a/harbour/makefile.b16 +++ b/harbour/makefile.b16 @@ -12,7 +12,7 @@ PROJECT: harbour.lib libs\b16\terminal.lib libs\win16\terminal.lib harbour.exe harbour.lib : arrays.obj asort.obj classes.obj codebloc.obj dates.obj datesx.obj \ - debug.obj dynsym.obj environ.obj error.obj \ + debug.obj descend.obj dynsym.obj environ.obj error.obj \ errorapi.obj errorsys.obj extend.obj files.obj \ initsymb.obj itemapi.obj math.obj \ mathx.obj objfunc.obj set.obj stringp.obj strings.obj \ @@ -35,6 +35,7 @@ codebloc.obj : codebloc.c extend.h types.h dates.obj : dates.c extend.h types.h datesx.obj : datesx.c extend.h types.h debug.obj : debug.c extend.h types.h +descend.obj : descend.c extend.h types.h dynsym.obj : dynsym.c extend.h types.h environ.obj : environ.c extend.h types.h error.obj : error.c extend.h types.h diff --git a/harbour/makefile.b31 b/harbour/makefile.b31 index 15effb7de6..94ee8aec6f 100644 --- a/harbour/makefile.b31 +++ b/harbour/makefile.b31 @@ -16,7 +16,7 @@ c_opt = -mh -O2 -I.\include -DUSE_GTAPI PROJECT: harbour.lib hbtools.lib terminal.lib libs\win16\terminal.lib harbour.exe harbour.lib : arrays.obj asort.obj classes.obj codebloc.obj dates.obj \ - dynsym.obj environ.obj error.obj \ + descend.obj dynsym.obj environ.obj error.obj \ errorapi.obj errorsys.obj extend.obj \ files.obj gtapi.obj initsymb.obj itemapi.obj \ math.obj objfunc.obj \ @@ -46,6 +46,7 @@ asort.obj : asort.prg extend.h types.h init.h pcode.h harbour.exe classes.obj : classes.c extend.h types.h itemapi.h codebloc.obj : codebloc.c extend.h types.h dates.obj : dates.c extend.h types.h dates.h set.h +descend.obj : descend.c extend.h types.h environ.obj : environ.c extend.h types.h error.obj : error.prg extend.h types.h init.h pcode.h harbour.exe errorapi.obj : errorapi.c extend.h types.h ctoharb.h diff --git a/harbour/makefile.b32 b/harbour/makefile.b32 index b33757797b..3f6640c162 100644 --- a/harbour/makefile.b32 +++ b/harbour/makefile.b32 @@ -13,7 +13,7 @@ PROJECT: harbour.exe harbour.lib libs\b32\terminal.lib libs\win32\terminal.lib harbour.lib : arrays.obj asort.obj classes.obj codebloc.obj dates.obj datesx.obj \ - debug.obj dynsym.obj environ.obj error.obj \ + debug.obj descend.obj dynsym.obj environ.obj error.obj \ errorapi.obj errorsys.obj extend.obj files.obj \ initsymb.obj itemapi.obj hb_f.obj\ math.obj mathx.obj objfunc.obj set.obj symbols.obj strings.obj \ @@ -43,6 +43,7 @@ codebloc.obj : codebloc.c extend.h types.h dates.obj : dates.c extend.h types.h datesx.obj : datesx.c extend.h types.h debug.obj : debug.c extend.h types.h +descend.obj : descend.c extend.h types.h dynsym.obj : dynsym.c extend.h types.h environ.obj : environ.c extend.h types.h error.obj : error.c extend.h types.h diff --git a/harbour/makefile.icc b/harbour/makefile.icc index d25e42f2e0..352235792c 100644 --- a/harbour/makefile.icc +++ b/harbour/makefile.icc @@ -19,6 +19,7 @@ $(path_lib)\harbour.lib : $(path_obj)\arrays.obj \ $(path_obj)\classes.obj \ $(path_obj)\codebloc.obj \ $(path_obj)\console.obj \ + $(path_obj)\descend.obj \ $(path_obj)\dates.obj \ $(path_obj)\dynsym.obj \ $(path_obj)\environ.obj \ @@ -78,6 +79,7 @@ $(path_obj)\classes.obj : {$(path_c)}classes.c $(path_h)\extend.h $(path_h)\ty $(path_obj)\codebloc.obj : {$(path_c)}codebloc.c $(path_h)\extend.h $(path_h)\types.h $(path_h)\itemapi.h $(path_obj)\dates.obj : {$(path_c)}dates.c $(path_h)\extend.h $(path_h)\types.h $(path_h)\dates.h $(path_h)\set.h $(path_obj)\debug.obj : {$(path_c)}debug.c $(path_h)\extend.h $(path_h)\types.h $(path_h)\ctoharb.h $(path_h)\itemapi.h +$(path_obj)\descend.obj : {$(path_c)}descend.c $(path_h)\extend.h $(path_h)\types.h $(path_obj)\environ.obj : {$(path_c)}environ.c $(path_h)\extend.h $(path_h)\types.h $(path_obj)\errorapi.obj : {$(path_c)}errorapi.c $(path_h)\extend.h $(path_h)\types.h $(path_h)\ctoharb.h $(path_obj)\extend.obj : {$(path_c)}extend.c $(path_h)\extend.h $(path_h)\types.h $(path_h)\set.h diff --git a/harbour/makefile.vc b/harbour/makefile.vc index c4414eb946..a22cca01e6 100644 --- a/harbour/makefile.vc +++ b/harbour/makefile.vc @@ -48,6 +48,7 @@ HARBOUR_LIB_OBJS = \ $(OBJ_DIR)\codebloc.obj \ $(OBJ_DIR)\console.obj \ $(OBJ_DIR)\dates.obj \ + $(OBJ_DIR)\descend.obj \ $(OBJ_DIR)\dynsym.obj \ $(OBJ_DIR)\environ.obj \ $(OBJ_DIR)\error.obj \ @@ -141,6 +142,9 @@ $(OBJ_DIR)\console.obj : $(RTL_DIR)\console.c $(OBJ_DIR)\dates.obj : $(RTL_DIR)\dates.c $(CC) $(CLIBFLAGS) -Fo$@ $** +$(OBJ_DIR)\descend.obj : $(RTL_DIR)\descend.c + $(CC) $(CLIBFLAGS) -Fo$@ $** + $(OBJ_DIR)\dynsym.obj : $(RTL_DIR)\dynsym.c $(CC) $(CLIBFLAGS) -Fo$@ $** diff --git a/harbour/source/rtl/descend.c b/harbour/source/rtl/descend.c new file mode 100644 index 0000000000..63dcdea7b0 --- /dev/null +++ b/harbour/source/rtl/descend.c @@ -0,0 +1,53 @@ +#include +#include + +void ProcessSymbols( SYMBOL *, WORD ); + +HARBOUR DESCEND(); + +static SYMBOL symbols[] = { +{ "DESCEND", FS_PUBLIC, DESCEND, 0 } +}; + +void Descend__InitSymbols( void ) +{ + ProcessSymbols( symbols, sizeof(symbols)/sizeof( SYMBOL ) ); +} + +char *hb_strdescend( char *string ) +{ + char *s; + + if( string ) + { + for( s = string; *s; ++s ) + *s = 256 - *s; + } + return string; +} + +HARBOUR DESCEND( void ) +{ + if( _pcount() == 1 ) + { + PITEM pItem = _param(1, IT_ANY ); + + if( pItem ) + { + if( IS_STRING( pItem ) ) + _retc( hb_strdescend( pItem->value.szText ) ); + else if( IS_DATE( pItem ) ) + _retnl( 5231808 - pItem->value.lDate ); + else if( IS_INTEGER( pItem ) ) + _retnd( -1 * pItem->value.iNumber ); + else if( IS_LONG( pItem ) ) + _retnd( -1 * pItem->value.lNumber ); + else if( IS_DOUBLE( pItem ) ) + _retnd( -1 * pItem->value.dNumber ); + else if( IS_LOGICAL( pItem ) ) + _retl( !pItem->value.iLogical ); + else + _retc( "NIL" ); + } + } +} diff --git a/harbour/source/vm/initsymb.c b/harbour/source/vm/initsymb.c index 8b1b061f7e..580ed8a5d4 100644 --- a/harbour/source/vm/initsymb.c +++ b/harbour/source/vm/initsymb.c @@ -121,6 +121,7 @@ void InitSymbolTable( void ) * Place here your __InitSymbols functions */ Classes__InitSymbols(); + Descend__InitSymbols(); /* * The system symbol table with runtime functions HAVE TO be called last diff --git a/harbour/tests/working/descend.prg b/harbour/tests/working/descend.prg new file mode 100644 index 0000000000..8bcaff29a7 --- /dev/null +++ b/harbour/tests/working/descend.prg @@ -0,0 +1,35 @@ +#include "set.ch" + +function main() + + LOCAL dDate + + QOut( Descend( "HARBOUR POWER & MAGIC" ) ) + QOut( Descend( Descend( "HARBOUR POWER & MAGIC" ) ) ) + QOut( Descend( .f. ) ) + QOut( Descend( .t. ) ) + QOut( Descend( 1 ) ) + QOut( Descend( -1 ) ) + QOut( Descend( Descend( 256 ) ) ) + QOut( Descend( 2.5 ) ) + QOut( Descend( -100.35 ) ) + + SET( _SET_DATEFORMAT, "dd/mm/yyyy" ) + dDate := cToD( "31/12/2999" ) + QOut( dDate, dtos( dDate ), Descend( dDate ) ) + + dDate := cToD( "1/1/0100" ) + QOut( dDate, dtos( dDate ), Descend( dDate ) ) + + QOut( date(), dtos( date() ), Descend( date() ) ) + QOut( date(), dtos( date() ), Descend( Descend( date() ) ) ) + QOut( date()+1, dtos( date()+1 ), Descend( date()+1 ) ) + QOut( date()+2, dtos( date()+2 ), Descend( date()+2 ) ) + + QOut( Asc( Descend( chr(0) ) ) ) + + QOut( Descend( { "A", "B" } ) ) + QOut( Descend( nil ) ) + + +return nil