diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 8683aa6c9a..f5cf1cbe6e 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -1,3 +1,13 @@ +19990604-21:50 EDT David G. Holm + * makefile.icc + - Added new Harbour modules + * source/rtl/classes.c + - C++ requires functions with no arguments to be protyped as void + * source/rtl/dates.c + - C++ requires that arguments be prototyped (hb_cmonth and hb_cdow) + * source/vm/initsymb.c + - C++ needs prototypes for external initialization functions + 19990604-20:20 EDT David G. Holm Thanks go to Jose Lalin for CDOW() and CMONTH() (and their support functions), msggal.c, msgspa.c, and msguk.c and cdow.prg, @@ -22,7 +32,7 @@ - National language message file for ? + source/rtl/natmsg/msgpor.c - National language message file for Portugese - + source/rtl/natmsg/msgsp.c + + source/rtl/natmsg/msgspa.c - National language message file for Spanish + source/rtl/natmsg/msguk.c - National language message file for English diff --git a/harbour/makefile.icc b/harbour/makefile.icc index 352235792c..e9fce725cc 100644 --- a/harbour/makefile.icc +++ b/harbour/makefile.icc @@ -2,20 +2,21 @@ .SUFFIXES : .prg .c -path_c = source\compiler;source\vm;source\rtl;source\rtl\gt;source\tools +path_c = source\compiler;source\vm;source\rtl;source\rtl\gt;source\rtl\natmsg;source\tools path_h = include path_l = source\compiler path_y = source\compiler path_exe = bin path_lib = libs\icc path_obj = obj -path_prg = source\rtl +path_prg = source\rtl;source\tools c_opt = /DUSE_GTAPI /W2 /Se /Sd+ /I.\include /Ti+ all: $(path_exe)\harbour.exe $(path_lib)\harbour.lib $(path_lib)\hbtools.lib $(path_lib)\terminal.lib $(path_lib)\harbour.lib : $(path_obj)\arrays.obj \ + $(path_obj)\asort.obj \ $(path_obj)\classes.obj \ $(path_obj)\codebloc.obj \ $(path_obj)\console.obj \ @@ -31,6 +32,12 @@ $(path_lib)\harbour.lib : $(path_obj)\arrays.obj \ $(path_obj)\initsymb.obj \ $(path_obj)\itemapi.obj \ $(path_obj)\math.obj \ + $(path_obj)\msgdut.obj \ + $(path_obj)\msggal.obj \ + $(path_obj)\msgpor.obj \ + $(path_obj)\msgspa.obj \ + $(path_obj)\msguk.obj \ + $(path_obj)\objfunc.obj \ $(path_obj)\set.obj \ $(path_obj)\strings.obj \ $(path_obj)\strcmp.obj \ @@ -57,6 +64,7 @@ $(path_lib)\hbtools.lib: \ $(path_obj)\strcspn.obj \ $(path_obj)\strdiff.obj \ $(path_obj)\strexpan.obj \ + $(path_obj)\stringp.obj \ $(path_obj)\strleft.obj \ $(path_obj)\strpbrk.obj \ $(path_obj)\strright.obj @@ -113,29 +121,57 @@ $(path_obj)\strleft.obj : {$(path_c)}strleft.c $(path_h)\extend.h $(path_h)\t $(path_obj)\strpbrk.obj : {$(path_c)}strpbrk.c $(path_h)\extend.h $(path_h)\types.h $(path_obj)\strright.obj : {$(path_c)}strright.c $(path_h)\extend.h $(path_h)\types.h +$(path_obj)\msgdut.obj : {$(path_c)}msgdut.c $(path_h)\extend.h $(path_h)\types.h +$(path_obj)\msggal.obj : {$(path_c)}msggal.c $(path_h)\extend.h $(path_h)\types.h +$(path_obj)\msgpor.obj : {$(path_c)}msgpor.c $(path_h)\extend.h $(path_h)\types.h +$(path_obj)\msgspa.obj : {$(path_c)}msgspa.c $(path_h)\extend.h $(path_h)\types.h +$(path_obj)\msguk.obj : {$(path_c)}msguk.c $(path_h)\extend.h $(path_h)\types.h + $(path_obj)\dynsym.obj : source\vm\dynsym.c $(path_h)\extend.h $(path_h)\types.h icc /C+ $(c_opt) /Fo$@ /Tpsource\vm\dynsym.c ilib .\libs\icc\harbour.lib -+$@,, -$(path_obj)\error.obj : $(path_prg)\error.prg $(path_h)\pcode.h $(path_h)\init.h $(path_h)\extend.h $(path_h)\types.h {$(path_exe)}harbour.exe - $(path_exe)\harbour $(path_prg)\error /n /osource\rtl - icc /C+ $(c_opt) /Fo$@ /Tp$(path_prg)\error.c +$(path_obj)\asort.obj : {$(path_prg)}\asort.prg $(path_h)\pcode.h $(path_h)\init.h $(path_h)\extend.h $(path_h)\types.h {$(path_exe)}harbour.exe + $(path_exe)\harbour source\rtl\asort /n /osource\rtl + icc /C+ $(c_opt) /Fo$@ /Tpsource\rtl\asort.c ilib .\libs\icc\harbour.lib -+$@,, -$(path_obj)\errorsys.obj : $(path_prg)\errorsys.prg $(path_h)\pcode.h $(path_h)\init.h $(path_h)\extend.h $(path_h)\types.h {$(path_exe)}harbour.exe - $(path_exe)\harbour $(path_prg)\errorsys /n /osource\rtl - icc /C+ $(c_opt) /Fo$@ /Tp$(path_prg)\errorsys.c +$(path_obj)\error.obj : {$(path_prg)}\error.prg $(path_h)\pcode.h $(path_h)\init.h $(path_h)\extend.h $(path_h)\types.h {$(path_exe)}harbour.exe + $(path_exe)\harbour source\rtl\error /n /osource\rtl + icc /C+ $(c_opt) /Fo$@ /Tpsource\rtl\error.c ilib .\libs\icc\harbour.lib -+$@,, -$(path_obj)\tclass.obj : $(path_prg)\tclass.prg $(path_h)\pcode.h $(path_h)\init.h $(path_h)\extend.h $(path_h)\types.h {$(path_exe)}harbour.exe - $(path_exe)\harbour $(path_prg)\tclass /n /osource\rtl - icc /C+ $(c_opt) /Fo$@ /Tp$(path_prg)\tclass.c +$(path_obj)\errorsys.obj : {$(path_prg)}\errorsys.prg $(path_h)\pcode.h $(path_h)\init.h $(path_h)\extend.h $(path_h)\types.h {$(path_exe)}harbour.exe + $(path_exe)\harbour source\rtl\errorsys /n /osource\rtl + icc /C+ $(c_opt) /Fo$@ /Tp$source\rtl\errorsys.c ilib .\libs\icc\harbour.lib -+$@,, +$(path_obj)\objfunc.obj : {$(path_prg)}\objfunc.prg $(path_h)\pcode.h $(path_h)\init.h $(path_h)\extend.h $(path_h)\types.h {$(path_exe)}harbour.exe + $(path_exe)\harbour source\rtl\objfunc /n /osource\rtl + icc /C+ $(c_opt) /Fo$@ /Tpsource\rtl\objfunc.c + ilib .\libs\icc\harbour.lib -+$@,, + +$(path_obj)\tclass.obj : {$(path_prg)}\tclass.prg $(path_h)\pcode.h $(path_h)\init.h $(path_h)\extend.h $(path_h)\types.h {$(path_exe)}harbour.exe + $(path_exe)\harbour source\rtl\tclass /n /osource\rtl + icc /C+ $(c_opt) /Fo$@ /Tpsource\rtl\tclass.c + ilib .\libs\icc\harbour.lib -+$@,, + +$(path_obj)\msguk.obj : {$(path_c)}msguk.c $(path_h)\extend.h $(path_h)\types.h + icc /C+ $(c_opt) /Fo$@ /Tpsource\rtl\natmsg\msguk.c + ilib .\libs\icc\harbour.lib -+$@,, + +$(path_obj)\stringp.obj : {$(path_prg)}\stringp.prg $(path_h)\pcode.h $(path_h)\init.h $(path_h)\extend.h $(path_h)\types.h {$(path_exe)}harbour.exe + $(path_exe)\harbour source\tools\stringp /n /osource\tools + icc /C+ $(c_opt) /Fo$@ /Tpsource\tools\stringp.c + ilib .\libs\icc\hbtools.lib -+$@,, + {source\rtl}.c{$(path_obj)}.obj: icc /C+ $(c_opt) /Fo$@ /Tp$< ilib .\libs\icc\harbour.lib -+$@,, +{source\rtl\natmsg}.c{$(path_obj)}.obj: + icc /C+ $(c_opt) /Fo$@ /Tp$< + {source\vm}.c{$(path_obj)}.obj: icc /C+ $(c_opt) /Fo$@ /Tp$< ilib .\libs\icc\harbour.lib -+$@,, diff --git a/harbour/source/rtl/classes.c b/harbour/source/rtl/classes.c index 71a3513db8..e1e5b76d78 100644 --- a/harbour/source/rtl/classes.c +++ b/harbour/source/rtl/classes.c @@ -48,51 +48,51 @@ PDYNSYM msgClassName = 0, msgClassH = 0, msgEval = 0, msgClassSel = 0; /* All functions contained in classes.c */ - HARBOUR CLASSADD(); - HARBOUR CLASSCREATE(); - HARBOUR CLASSDEL(); -static HARBOUR ClassH(); - HARBOUR CLASSINSTANCE(); - HARBOUR CLASSMOD(); -static HARBOUR ClassName(); - HARBOUR CLASSNAME(); -static HARBOUR ClassSel(); + HARBOUR CLASSADD( void ); + HARBOUR CLASSCREATE( void ); + HARBOUR CLASSDEL( void ); +static HARBOUR ClassH( void ); + HARBOUR CLASSINSTANCE( void ); + HARBOUR CLASSMOD( void ); +static HARBOUR ClassName( void ); + HARBOUR CLASSNAME( void ); +static HARBOUR ClassSel( void ); static void DictRealloc( PCLASS ); -static HARBOUR EvalInline(); -static HARBOUR GetClassData(); -static HARBOUR GetData(); +static HARBOUR EvalInline( void ); +static HARBOUR GetClassData( void ); +static HARBOUR GetData( void ); HARBOURFUNC GetMethod( PHB_ITEM, PSYMBOL ); ULONG hb_isMessage( PHB_ITEM, char *); - HARBOUR ISMESSAGE(); - HARBOUR OCLONE(); - HARBOUR OSEND(); + HARBOUR ISMESSAGE( void ); + HARBOUR OCLONE( void ); + HARBOUR OSEND( void ); void ReleaseClass( PCLASS ); - void ReleaseClasses(); -static HARBOUR SelectSuper(); -static HARBOUR SetClassData(); -static HARBOUR SetData(); -static HARBOUR Virtual(); - HARBOUR __INSTSUPER(); - HARBOUR __WDATAS(); - HARBOUR __WDATADEC(); - HARBOUR __WDATAINC(); + void ReleaseClasses( void ); +static HARBOUR SelectSuper( void ); +static HARBOUR SetClassData( void ); +static HARBOUR SetData( void ); +static HARBOUR Virtual( void ); + HARBOUR __INSTSUPER( void ); + HARBOUR __WDATAS( void ); + HARBOUR __WDATADEC( void ); + HARBOUR __WDATAINC( void ); /* All function contained in matching objfunc.prg */ -HARBOUR AODATA(); -HARBOUR AOGET(); -HARBOUR AOMETHOD(); -HARBOUR AOSET(); -HARBOUR ISDATA(); -HARBOUR ISMETHOD(); -HARBOUR OADDDATA(); -HARBOUR OADDINLINE(); -HARBOUR OADDMETHOD(); -HARBOUR ODELDATA(); -HARBOUR ODELINLINE(); -HARBOUR ODELMETHOD(); -HARBOUR OMODINLINE(); -HARBOUR OMODMETHOD(); +HARBOUR AODATA( void ); +HARBOUR AOGET( void ); +HARBOUR AOMETHOD( void ); +HARBOUR AOSET( void ); +HARBOUR ISDATA( void ); +HARBOUR ISMETHOD( void ); +HARBOUR OADDDATA( void ); +HARBOUR OADDINLINE( void ); +HARBOUR OADDMETHOD( void ); +HARBOUR ODELDATA( void ); +HARBOUR ODELINLINE( void ); +HARBOUR ODELMETHOD( void ); +HARBOUR OMODINLINE( void ); +HARBOUR OMODMETHOD( void ); /* Exported symbols of both classes.c and objfunc.prg */ @@ -143,7 +143,7 @@ void Classes__InitSymbols( void ) * see MET_* * Optional initializer for DATA */ -HARBOUR CLASSADD() +HARBOUR CLASSADD() { WORD wClass = _parnl( 1 ); WORD wType = _parni( 4 ); @@ -242,7 +242,7 @@ HARBOUR CLASSADD() * Number of DATAs in the class * Optional handle of superclass */ -HARBOUR CLASSCREATE() +HARBOUR CLASSCREATE() { WORD wSuper = _parni( 3 ); /* Super class present */ WORD wSize; @@ -302,7 +302,7 @@ HARBOUR CLASSCREATE() * Object * Message */ -HARBOUR CLASSDEL() +HARBOUR CLASSDEL() { PHB_ITEM pString = _param( 2, IT_STRING ); PSYMBOL pMessage = GetDynSym( pString->value.szText )->pSymbol; @@ -369,7 +369,7 @@ static HARBOUR ClassH( void ) * * Create a new object from class definition */ -HARBOUR CLASSINSTANCE() +HARBOUR CLASSINSTANCE() { WORD wClass = _parni( 1 ); WORD wAt, wLimit; @@ -397,7 +397,7 @@ HARBOUR CLASSINSTANCE() * * Modify message (only for INLINE and METHOD) */ -HARBOUR CLASSMOD() +HARBOUR CLASSMOD() { PHB_ITEM pString = _param( 2, IT_STRING ); PSYMBOL pMessage = GetDynSym( pString->value.szText )->pSymbol; @@ -435,7 +435,7 @@ HARBOUR CLASSMOD() _errPutDescription(pError, "CLASSMOD: Cannot modify a DATA item"); _errLaunch(pError); _errRelease(pError); - } + } else /* Modify METHOD */ pClass->pMethods[ wAt ].pFunction = ( HARBOURFUNC ) _parnl( 3 ); } @@ -451,7 +451,7 @@ HARBOUR CLASSMOD() static HARBOUR ClassName( void ) { PHB_ITEM pItemRef; - + if( IS_BYREF( stack.pBase + 1 ) ) /* Variables by reference */ pItemRef = stack.pItems + ( stack.pBase + 1 )->value.wItem; else @@ -466,7 +466,7 @@ static HARBOUR ClassName( void ) * * Returns class name of */ -HARBOUR CLASSNAME() +HARBOUR CLASSNAME() { PHB_ITEM pObject = _param( 0, IT_OBJECT ); WORD wClass; @@ -744,7 +744,7 @@ ULONG hb_isMessage( PHB_ITEM pObject, char *szString ) * * Is a valid message for the */ -HARBOUR ISMESSAGE() +HARBOUR ISMESSAGE() { PHB_ITEM pObject = _param( 1, IT_OBJECT ); PHB_ITEM pString = _param( 2, IT_STRING ); @@ -792,8 +792,8 @@ HARBOUR OCLONE( void ) * * Send a message to an object */ -HARBOUR OSEND() -{ +HARBOUR OSEND() +{ PHB_ITEM pObject = _param( 1, IT_OBJECT ); PHB_ITEM pMessage = _param( 2, IT_STRING ); WORD w; @@ -929,8 +929,8 @@ static HARBOUR Virtual( void ) * * Instance super class and return class handle */ -HARBOUR __INSTSUPER( void ) -{ +HARBOUR __INSTSUPER( void ) +{ PHB_ITEM pString = _param( 1, IT_STRING ); PDYNSYM pDynSym; PHB_ITEM pSuperCls; @@ -981,7 +981,7 @@ HARBOUR __INSTSUPER( void ) * * Return number of datas and decrease */ -HARBOUR __WDATADEC() +HARBOUR __WDATADEC() { WORD wClass = _parnl( 1 ); @@ -1009,12 +1009,12 @@ HARBOUR __WDATAINC() * * Return number of datas */ -HARBOUR __WDATAS() +HARBOUR __WDATAS() { WORD wClass = _parnl( 1 ); if( wClass ) - _retni( pClasses[ wClass - 1 ].wDatas ); + _retni( pClasses[ wClass - 1 ].wDatas ); } diff --git a/harbour/source/rtl/dates.c b/harbour/source/rtl/dates.c index 6f51c687ce..f9071d1017 100644 --- a/harbour/source/rtl/dates.c +++ b/harbour/source/rtl/dates.c @@ -22,7 +22,7 @@ extern STACK stack; extern char *hb_monthsname[]; extern char *hb_daysname[]; -char *hb_cmonth( month ) +char *hb_cmonth( int month ) { if( month >= 1 && month <= 12 ) return hb_monthsname[ month - 1 ]; @@ -30,7 +30,7 @@ char *hb_cmonth( month ) return ""; } -char *hb_cdow( day ) +char *hb_cdow( int day ) { if( day >= 1 && day <= 7 ) return hb_daysname[ day - 1 ]; @@ -47,7 +47,7 @@ long hb_dateEncode( long lDay, long lMonth, long lYear ) if (lMonth >= 1 && lMonth <= 12 && lDay >= 1 && lYear >= 1 && lYear <= 2999) { - /* Month, year, and lower day limits are simple, + /* Month, year, and lower day limits are simple, but upper day limit is dependent upon month and leap year */ BOOL bLeapYear = FALSE; int aiDayLimit [12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; @@ -60,7 +60,7 @@ long hb_dateEncode( long lDay, long lMonth, long lYear ) if( lYear % 400 == 0) bLeapYear = TRUE; /* Leap century */ } else bLeapYear = TRUE; /* Leap year */ - + if( bLeapYear ) aiDayLimit[ 1 ] = 29; } if( lDay <= (long)aiDayLimit[ (int)lMonth - 1 ] ) bValid = TRUE; @@ -223,7 +223,7 @@ char * hb_dtoc (char * szDate, char * szDateFormat) digit_count--; } default: - if (!used_d && format_count < size) + if (!used_d && format_count < size) { szDateFormat [format_count++] = szDate [7]; digit_count--; @@ -236,25 +236,25 @@ char * hb_dtoc (char * szDate, char * szDateFormat) switch (digit_count) { case 4: - if (!used_m && format_count < size) + if (!used_m && format_count < size) { szDateFormat [format_count++] = '0'; digit_count--; } case 3: - if (!used_m && format_count < size) + if (!used_m && format_count < size) { szDateFormat [format_count++] = '0'; digit_count--; } case 2: - if (!used_m && format_count < size) + if (!used_m && format_count < size) { szDateFormat [format_count++] = szDate [4]; digit_count--; } default: - if (!used_m && format_count < size) + if (!used_m && format_count < size) { szDateFormat [format_count++] = szDate [5]; digit_count--; @@ -267,25 +267,25 @@ char * hb_dtoc (char * szDate, char * szDateFormat) switch (digit_count) { case 4: - if (!used_y && format_count < size) + if (!used_y && format_count < size) { szDateFormat [format_count++] = szDate [0]; digit_count--; } case 3: - if (!used_y && format_count < size) + if (!used_y && format_count < size) { szDateFormat [format_count++] = szDate [1]; digit_count--; } case 2: - if (!used_y && format_count < size) + if (!used_y && format_count < size) { szDateFormat [format_count++] = szDate [2]; digit_count--; } default: - if (!used_y && format_count < size) + if (!used_y && format_count < size) { szDateFormat [format_count++] = szDate [3]; digit_count--; @@ -299,7 +299,7 @@ char * hb_dtoc (char * szDate, char * szDateFormat) } } } - else + else { /* Not a valid date string, so return a blank date with separators */ format_count = size; /* size is either 8 or 10 */ diff --git a/harbour/source/vm/initsymb.c b/harbour/source/vm/initsymb.c index 580ed8a5d4..89f4afa132 100644 --- a/harbour/source/vm/initsymb.c +++ b/harbour/source/vm/initsymb.c @@ -6,6 +6,9 @@ #include "extend.h" #include "types.h" +extern void Classes__InitSymbols( void ); /* Needed by C++ compilers */ +extern void Descend__InitSymbols( void ); /* Needed by C++ compilers */ + void ProcessSymbols( SYMBOL *, WORD ); HARBOUR AADD( void );