19990817-07:30 GMT+1

This commit is contained in:
Viktor Szakats
1999-08-17 05:52:08 +00:00
parent 7b10d473fc
commit f6d4ffd9ed
36 changed files with 2915 additions and 2694 deletions

View File

@@ -1,3 +1,63 @@
19990817-07:30 GMT+1 Victor Szel <info@szelvesz.hu>
* source/vm/hvm.c
source/rtl/errorapi.c
source/rtl/classes.c
source/rtl/fm.c
source/rtl/itemapi.c
source/rtl/transfrm.c
include/errors.ch
+ printf()s changed to a call to hb_errInternal() instead.
* hb_callStackShow() modified so that it uses the same format as
the standard error handler.
* include/initsymc.h
include/initsymd.h
source/rtl/errorapi.c
+ Harbour callable __errRT_BASE() function added.
* include/errorapi.h
source/rdd/dbcmd.c
source/rtl/errorapi.c
source/rtl/arrays.c
source/rtl/classes.c
source/rtl/copyfile.c
source/rtl/dates.c
source/rtl/do.c
source/rtl/errorapi.c
source/rtl/filesys.c
source/rtl/inkey.c
source/rtl/math.c
source/rtl/memvars.c
source/rtl/set.c
source/rtl/strings.c
source/rtl/transfrm.c
source/tools/dates2.c
source/vm/hvm.c
* hb_error*() -> hb_err*()
- removed obsolete hb_errorNat*() prototypes.
* include/hberrors.h
include/hbpp.h
source/compiler/harbour.y
source/hbpp/*.c
source/hbpp/stdalone/*.c
+ Added the ability to display warnings in standard format.
! Adjusted and corrected to help display of HBPP.EXE
* source/rtl/objfunc.prg
doc/subcodes.txt
* Got rid of the QOUT() type runtime-error messages, there's now
a more comprehensive, standard error checking system, which throws
Harbour errors.
! Some small bugs fixed. (checking argument after usage, additional
parameters passed in one place - typo)
* include/hboo.ch
source/rtl/objfunc.prg
source/rtl/tclass.prg
source/tools/stringp.prg
* DATA_VAL -> DATA_VALUE
19990816-21:57 GMT+1 Victor Szel <info@szelvesz.hu>
* source/rtl/console.c
tests/working/colorind.prg
@@ -101,43 +161,43 @@
ClassCreate -> __clsNew
ClassInstance -> __clsInst
__InstSuper -> __clsInstSuper
ClassAdd -> __clsAddMsg
ClassDel -> __clsDelMsg
ClassMod -> __clsModMsg
ClassAdd -> __clsAddMsg
ClassDel -> __clsDelMsg
ClassMod -> __clsModMsg
WClsDatas -> __cls_CntClsData
__wDatas -> __cls_CntData
__wDatas -> __cls_CntData
__wDataDec -> __cls_DecData
__wDataInc -> __cls_IncData
aOMethod -> __objGetMethodList
aOData -> __objGetMsgList
aOGet -> __objGetValueList
aOSet -> __objSetValueList
oClone -> __objClone
aOMethod -> __objGetMethodList
aOData -> __objGetMsgList
aOGet -> __objGetValueList
aOSet -> __objSetValueList
oClone -> __objClone
ClassName -> __objGetClsName
oSend -> __objSendMsg
oSend -> __objSendMsg
isMessage -> __objHasMsg
IsData -> __objHasData
IsMethod -> __objHasMethod
IsData -> __objHasData
IsMethod -> __objHasMethod
oAddMethod -> __objAddMethod
oAddInline -> __objAddInLine
oAddData -> __objAddData
oAddData -> __objAddData
oModMethod -> __objModMethod
oModInline -> __objModInLine
oDelMethod -> __objDelMethod
oDelInline -> __objDelInLine
oDelData -> __objDelData
oDelData -> __objDelData
ClassH -> __msgClsH
ClassH -> __msgClsH
ClassName -> __msgClsName
ClassSel -> __msgClsSel
ClassSel -> __msgClsSel
SelectSuper -> __msgSuper
EvalInline -> __msgEvalInline
GetClassData -> __msgGetClsData
SetClassData -> __msgSetClsData
GetData -> __msgGetData
SetData -> __msgSetData
Virtual -> __msgVirtual
GetData -> __msgGetData
SetData -> __msgSetData
Virtual -> __msgVirtual
DictRealloc -> hb_clsDictRealloc
ReleaseClass -> hb_clsRelease
@@ -191,33 +251,33 @@
19990815-18:45 GMT+2 Ryszard Glab <rglab@imid.med.pl>
*source/rtl/hvm.c
* added 'hb_vm' prefix to alias/field related functions
* some functions declared 'static'
* added 'hb_vm' prefix to alias/field related functions
* some functions declared 'static'
*include/ctoharb.h
- removed declarations of internal virtual machine functions
- removed declarations of internal virtual machine functions
*source/compiler/harbour.y
* changed an error description for incorrect use of PARAMETERS
statement
* added type casting to compile under C++ compilers
* static frame is correctly generated if static variable
is used in a codeblock only
* changed an error description for incorrect use of PARAMETERS
statement
* added type casting to compile under C++ compilers
* static frame is correctly generated if static variable
is used in a codeblock only
*include/extend.h
- removed obsolete declaration of hb_memvarNewSymbol()
- removed obsolete declaration of hb_memvarNewSymbol()
*include/hb_vmpub.h
+ added definition of callback function HB_DYNS_FUNC used
to enumerate dynamic symbols
+ added definition of callback function HB_DYNS_FUNC used
to enumerate dynamic symbols
*source/vm/dynsym.c
+ new function hb_dynsymEval() that enumerates dynamic symbols
by calling specified HB_DYNS_FUNC * function
+ new function hb_dynsymEval() that enumerates dynamic symbols
by calling specified HB_DYNS_FUNC * function
*source/rtl/memvars.c
+ added __MVCLEAR function to release all PRIVATE and PUBLIC
variables (this function is used in CLEAR MEMORY statement)
+ added __MVCLEAR function to release all PRIVATE and PUBLIC
variables (this function is used in CLEAR MEMORY statement)
19990815-19:59 GMT+3 Alexander Kresin
* source/rtl/tbrowse.prg

View File

@@ -1296,6 +1296,62 @@ start from 3000
* $END$
*/
/* $DOC$
* $SUBCODE$
* BASE/3101
* $CATEGORY$
* arguments
* $ONELINER$
* Invalid argument passed to an object/class function
* $DESCRIPTION$
* One passed argument is not of the required type.
* $FUNCTION$
* __OBJ*()
* $STATUS$
* Harbour specific
* $SEEALSO$
*
* $END$
*/
/* $DOC$
* $SUBCODE$
* BASE/3102
* $CATEGORY$
* arguments
* $ONELINER$
* A symbol should be modified or deleted from a class, but the symbol
* doesn't exist.
* $DESCRIPTION$
* A symbol should be modified or deleted from a class, but the symbol
* doesn't exist.
* $FUNCTION$
* __OBJ*()
* $STATUS$
* Harbour specific
* $SEEALSO$
*
* $END$
*/
/* $DOC$
* $SUBCODE$
* BASE/3103
* $CATEGORY$
* arguments
* $ONELINER$
* A symbol should be added to a class, but the symbol already exists.
* $DESCRIPTION$
* A symbol should be added to a class, but the symbol already exists.
* $FUNCTION$
* __OBJ*()
* $STATUS$
* Harbour specific
* $SEEALSO$
*
* $END$
*/
/* ************************************************************************** */
/* $DOC$

View File

@@ -60,4 +60,8 @@
#define EG_NOTARRAY 49 /* Harbour special */
#define EG_CONDITION 50 /* Harbour special */
/* Internal errors */
#define EI_NOERRORBLOCK 1
#define EI_RECOVERY 2
#endif /* _ERROR_CH */

View File

@@ -97,15 +97,12 @@ extern void hb_errRelease ( PHB_ITEM pError );
/* Error launchers */
extern void hb_errorInternal ( ULONG ulIntCode, char * szText, char * szModul, WORD wLine, char * szPar1, char * szPar2, char * szPar3 );
extern void hb_errInternal ( ULONG ulIntCode, char * szText, char * szPar1, char * szPar2 );
extern void hb_errorRT_BASE ( ULONG ulGenCode, ULONG ulSubCode, char * szDescription, char * szOperation );
extern WORD hb_errorRT_BASE_Ext1 ( ULONG ulGenCode, ULONG ulSubCode, char * szDescription, char * szOperation, USHORT uiOsCode, USHORT uiFlags );
extern void hb_errorRT_TERMINAL ( ULONG ulGenCode, ULONG ulSubCode, char * szDescription, char * szOperation );
extern void hb_errorRT_DBCMD ( ULONG ulGenCode, ULONG ulSubCode, char * szDescription, char * szOperation );
extern void hb_errorRT_TOOLS ( ULONG ulGenCode, ULONG ulSubCode, char * szDescription, char * szOperation );
extern char * hb_errorNatDescription ( ULONG ulGenCode ); /* Reads error description in national language */
extern char * hb_errorNatInternal ( ULONG ulIntCode ); /* Reads internal error description in national language */
extern void hb_errRT_BASE ( ULONG ulGenCode, ULONG ulSubCode, char * szDescription, char * szOperation );
extern WORD hb_errRT_BASE_Ext1 ( ULONG ulGenCode, ULONG ulSubCode, char * szDescription, char * szOperation, USHORT uiOsCode, USHORT uiFlags );
extern void hb_errRT_TERMINAL ( ULONG ulGenCode, ULONG ulSubCode, char * szDescription, char * szOperation );
extern void hb_errRT_DBCMD ( ULONG ulGenCode, ULONG ulSubCode, char * szDescription, char * szOperation );
extern void hb_errRT_TOOLS ( ULONG ulGenCode, ULONG ulSubCode, char * szDescription, char * szOperation );
#endif /* HB_ERRORAPI_H_ */

View File

@@ -33,8 +33,8 @@
their web site at http://www.gnu.org/).
*/
#ifndef HB_ERROR_H_
#define HB_ERROR_H_
#ifndef HB_ERRORS_H_
#define HB_ERRORS_H_
/*
* Errors generated by Harbour compiler
@@ -91,7 +91,9 @@
#define ERR_WRONG_DIRECTIVE 9
#define ERR_EXPLICIT 10
extern void GenError( char* _szErrors[], char, int, char*, char * ); /* generic parsing error management function */
extern void GenWarning( int, char*, char * ); /* generic parsing warning management function */
#define WARN_NONDIRECTIVE 1
#endif /* HB_ERROR_H_ */
extern void GenError( char* _szErrors[], char, int, char*, char * ); /* generic parsing error management function */
extern void GenWarning( char* _szWarnings[], char, int, char*, char * ); /* generic parsing warning management function */
#endif /* HB_ERRORS_H_ */

View File

@@ -15,6 +15,6 @@
#define MET_SUPER 5
#define DATA_SYMBOL 1
#define DATA_VAL 2
#define DATA_VALUE 2
#endif /* _HBOO_CH */

View File

@@ -70,6 +70,9 @@ extern int lInclude;
extern int *aCondCompile, nCondCompile;
extern int nline;
extern char * _szPErrors[];
extern char * _szPWarnings[];
/* Needed support modules, but not contained in HBPP.C */
extern FILENAME *SplitFilename( char * ); /* splits filename into a path, a name and an extension */

View File

@@ -16,6 +16,7 @@
Descend__InitSymbols();
Dir__InitSymbols();
Environ__InitSymbols();
Errorapi__InitSymbols();
Files__InitSymbols();
HardCR__InitSymbols();
Math__InitSymbols();

View File

@@ -16,6 +16,7 @@ extern void Dates2__InitSymbols( void );
extern void Descend__InitSymbols( void );
extern void Dir__InitSymbols( void );
extern void Environ__InitSymbols( void );
extern void Errorapi__InitSymbols( void );
extern void Files__InitSymbols( void );
extern void HardCR__InitSymbols( void );
extern void Math__InitSymbols( void );

File diff suppressed because it is too large Load Diff

View File

@@ -137,6 +137,12 @@ char * _szPErrors[] = { "Can\'t open include file \"%s\"",
"#error: \'%s\'"
};
/* Table with parse warnings */
char * _szPWarnings[] =
{
"Non directive in include file"
};
int ParseDirective( char* sLine )
{
char sDirective[MAX_NAME];

View File

@@ -46,6 +46,7 @@
#endif
#include <stdio.h>
#include "hbpp.h"
#include "hberrors.h"
void Hbpp_init ( void );
int PreProcess( FILE*, FILE*, char *);
@@ -158,7 +159,7 @@ int Hp_Parse( FILE* handl_i, FILE* handl_o )
*sLine = '\0';
}
else
printf ( "\nWarning, non directive in include file\n");
GenWarning( _szPWarnings, 'W', WARN_NONDIRECTIVE, NULL, NULL );
}
}
}

View File

@@ -41,9 +41,11 @@
#include "extend.h"
#include "itemapi.h"
#include "init.h"
#include "hberrors.h"
PATHNAMES *_pIncludePath = NULL;
FILENAME *_pFileName = NULL;
BOOL _bWarnings = FALSE;
HARBOUR HB_PREPROCESS(void);
@@ -98,6 +100,18 @@ void GenError( char* _szErrors[], char cPrefix, int iError, char * szError1, cha
exit( 1 );
}
void GenWarning( char* _szWarnings[], char cPrefix, int iWarning, char * szWarning1, char * szWarning2)
{
if( _bWarnings && iWarning < WARN_ASSIGN_SUSPECT ) /* TODO: add switch to set level */
{
char * szLine = ( char * ) OurMalloc( 160 ); /*2 lines of text */
/* printf( "\r%s(%i) ", files.pLast->szFileName, iLine ); */
printf( "Warning %c%i ", cPrefix, iWarning );
sprintf( szLine, _szWarnings[ iWarning - 1 ], szWarning1, szWarning2 );
printf( "%s\n", szLine );
}
}
/*
* Split given filename into path, name and extension
*/

View File

@@ -42,6 +42,7 @@
#include <stdio.h>
#include <ctype.h>
#include "hbpp.h"
#include "hberrors.h"
extern int pp_strAt(char *, int, char*, int);
extern void pp_Stuff (char*, char*, int, int, int);
@@ -54,17 +55,20 @@ char sLine[STR_SIZE], sOutLine[STR_SIZE];
PATHNAMES *_pIncludePath = NULL;
FILENAME *_pFileName = NULL;
BOOL _bWarnings = FALSE;
int main (int argc,char* argv[])
{
FILE *handl_i,*handl_o;
char szFileName[ _POSIX_PATH_MAX ];
char * szDefText;
int iArg = 1, i, lOutTable = 0, lOutNew = 0;
int iArg = 1, i;
BOOL bOutTable = FALSE;
BOOL bOutNew = FALSE;
DEFINES *stdef = topDefine;
COMMANDS *stcmd = topCommand;
printf( "\nHarbour preprocessor" );
printf( "Harbour preprocessor\n" );
while( iArg < argc )
{
if( IS_OPT_SEP(argv[ iArg ][ 0 ]))
@@ -94,11 +98,15 @@ int main (int argc,char* argv[])
break;
case 'o':
case 'O':
lOutTable = 1;
bOutTable = TRUE;
break;
case 'n':
case 'N':
lOutNew = 1;
bOutNew = TRUE;
break;
case 'w':
case 'W':
_bWarnings = TRUE;
break;
default:
printf( "\nInvalid command line option: %s\n", &argv[ iArg ][ 1 ] );
@@ -115,14 +123,19 @@ int main (int argc,char* argv[])
if ((handl_i = fopen(szFileName, "r")) == NULL)
{ printf("\nCan't open %s\n",szFileName); return 1; }
printf( "\n\nParsing file %s\n", szFileName );
printf( "\nParsing file %s\n", szFileName );
}
else
{
printf( "\nSyntax: Hbpp.exe <filename> [options]" );
printf( "\nOptions:" );
printf( "\n\t/d<id>[=<val>]\t#define <id>" );
if( lOutTable )
printf( "Syntax: hbpp <file.prg> [options]\n"
"\nOptions: \n"
"\t/d<id>[=<val>]\t#define <id>\n"
"\t/i<path>\tadd #include file search path\n"
"\t/o\t\tcreates hbpp.out with all tables\n"
"\t/n\t\twith those only, which defined in your file\n"
"\t/w\t\tenable warnings\n");
if( bOutTable )
OutTable( NULL, NULL );
return 1;
}
@@ -157,9 +170,9 @@ int main (int argc,char* argv[])
Hp_Parse(handl_i,handl_o );
fclose(handl_i); fclose(handl_o);
if( lOutTable )
if( bOutTable )
OutTable( NULL, NULL );
else if( lOutNew )
else if( bOutNew )
OutTable( stdef, stcmd );
printf( "\nOk" );
@@ -555,3 +568,15 @@ void GenError( char* _szErrors[], char cPrefix, int iError, char * szError1, cha
printf( "%s\n\n", szLine );
exit( 1 );
}
void GenWarning( char* _szWarnings[], char cPrefix, int iWarning, char * szWarning1, char * szWarning2)
{
if( _bWarnings && iWarning < WARN_ASSIGN_SUSPECT ) /* TODO: add switch to set level */
{
char * szLine = ( char * ) OurMalloc( 160 ); /*2 lines of text */
/* printf( "\r%s(%i) ", files.pLast->szFileName, iLine ); */
printf( "Warning %c%i ", cPrefix, iWarning );
sprintf( szLine, _szWarnings[ iWarning - 1 ], szWarning1, szWarning2 );
printf( "%s\n", szLine );
}
}

View File

@@ -56,7 +56,7 @@ typedef struct _AREANODE
typedef AREANODE * LPAREANODE;
/* TODO: must be changed to a hb_errorRT... */
/* TODO: must be changed to a hb_errRT... */
static void MyError( char * szError, char * szParam )
{
printf( "\n%s %s\n", szError, szParam );

View File

@@ -87,12 +87,12 @@ char * hb_arrayGetDate( PHB_ITEM pArray, ULONG ulIndex, char * szDate )
}
else
{
hb_errorRT_BASE(EG_BOUND, 1132, NULL, hb_langDGetErrorDesc(EG_ARRACCESS));
hb_errRT_BASE(EG_BOUND, 1132, NULL, hb_langDGetErrorDesc(EG_ARRACCESS));
}
}
else
{
hb_errorRT_BASE(EG_ARG, 1068, NULL, hb_langDGetErrorDesc(EG_ARRACCESS));
hb_errRT_BASE(EG_ARG, 1068, NULL, hb_langDGetErrorDesc(EG_ARRACCESS));
}
return szDate;
@@ -114,12 +114,12 @@ BOOL hb_arrayGetBool( PHB_ITEM pArray, ULONG ulIndex )
}
else
{
hb_errorRT_BASE(EG_BOUND, 1132, NULL, hb_langDGetErrorDesc(EG_ARRACCESS));
hb_errRT_BASE(EG_BOUND, 1132, NULL, hb_langDGetErrorDesc(EG_ARRACCESS));
}
}
else
{
hb_errorRT_BASE(EG_ARG, 1068, NULL, hb_langDGetErrorDesc(EG_ARRACCESS));
hb_errRT_BASE(EG_ARG, 1068, NULL, hb_langDGetErrorDesc(EG_ARRACCESS));
}
return 0;
}
@@ -146,12 +146,12 @@ double hb_arrayGetDouble( PHB_ITEM pArray, ULONG ulIndex )
}
else
{
hb_errorRT_BASE(EG_BOUND, 1132, NULL, hb_langDGetErrorDesc(EG_ARRACCESS));
hb_errRT_BASE(EG_BOUND, 1132, NULL, hb_langDGetErrorDesc(EG_ARRACCESS));
}
}
else
{
hb_errorRT_BASE(EG_ARG, 1068, NULL, hb_langDGetErrorDesc(EG_ARRACCESS));
hb_errRT_BASE(EG_ARG, 1068, NULL, hb_langDGetErrorDesc(EG_ARRACCESS));
}
return 0;
}
@@ -198,12 +198,12 @@ void hb_arrayGet( PHB_ITEM pArray, ULONG ulIndex, PHB_ITEM pItem )
hb_itemCopy( pItem, pArray->item.asArray.value->pItems + ( ulIndex - 1 ) );
else
{
hb_errorRT_BASE(EG_BOUND, 1132, NULL, hb_langDGetErrorDesc(EG_ARRACCESS));
hb_errRT_BASE(EG_BOUND, 1132, NULL, hb_langDGetErrorDesc(EG_ARRACCESS));
}
}
else
{
hb_errorRT_BASE(EG_ARG, 1068, NULL, hb_langDGetErrorDesc(EG_ARRACCESS));
hb_errRT_BASE(EG_ARG, 1068, NULL, hb_langDGetErrorDesc(EG_ARRACCESS));
}
}
@@ -222,12 +222,12 @@ char *hb_arrayGetString( PHB_ITEM pArray, ULONG ulIndex )
}
else
{
hb_errorRT_BASE(EG_BOUND, 1132, NULL, hb_langDGetErrorDesc(EG_ARRACCESS));
hb_errRT_BASE(EG_BOUND, 1132, NULL, hb_langDGetErrorDesc(EG_ARRACCESS));
}
}
else
{
hb_errorRT_BASE(EG_ARG, 1068, NULL, hb_langDGetErrorDesc(EG_ARRACCESS));
hb_errRT_BASE(EG_ARG, 1068, NULL, hb_langDGetErrorDesc(EG_ARRACCESS));
}
return "";
}
@@ -247,12 +247,12 @@ ULONG hb_arrayGetStringLen( PHB_ITEM pArray, ULONG ulIndex )
}
else
{
hb_errorRT_BASE(EG_BOUND, 1132, NULL, hb_langDGetErrorDesc(EG_ARRACCESS));
hb_errRT_BASE(EG_BOUND, 1132, NULL, hb_langDGetErrorDesc(EG_ARRACCESS));
}
}
else
{
hb_errorRT_BASE(EG_ARG, 1068, NULL, hb_langDGetErrorDesc(EG_ARRACCESS));
hb_errRT_BASE(EG_ARG, 1068, NULL, hb_langDGetErrorDesc(EG_ARRACCESS));
}
return 0;
}
@@ -268,12 +268,12 @@ int hb_arrayGetType( PHB_ITEM pArray, ULONG ulIndex )
}
else
{
hb_errorRT_BASE(EG_BOUND, 1132, NULL, hb_langDGetErrorDesc(EG_ARRACCESS));
hb_errRT_BASE(EG_BOUND, 1132, NULL, hb_langDGetErrorDesc(EG_ARRACCESS));
}
}
else
{
hb_errorRT_BASE(EG_ARG, 1068, NULL, hb_langDGetErrorDesc(EG_ARRACCESS));
hb_errRT_BASE(EG_ARG, 1068, NULL, hb_langDGetErrorDesc(EG_ARRACCESS));
}
return 0;
}
@@ -293,7 +293,7 @@ ULONG hb_arrayLen( PHB_ITEM pArray )
return pArray->item.asArray.value->ulLen;
else
{
hb_errorRT_BASE(EG_ARG, 1068, NULL, hb_langDGetErrorDesc(EG_ARRACCESS));
hb_errRT_BASE(EG_ARG, 1068, NULL, hb_langDGetErrorDesc(EG_ARRACCESS));
}
return 0;
}
@@ -306,12 +306,12 @@ void hb_arraySet( PHB_ITEM pArray, ULONG ulIndex, PHB_ITEM pItem )
hb_itemCopy( pArray->item.asArray.value->pItems + ( ulIndex - 1 ), pItem );
else
{
hb_errorRT_BASE(EG_BOUND, 1133, NULL, hb_langDGetErrorDesc(EG_ARRASSIGN));
hb_errRT_BASE(EG_BOUND, 1133, NULL, hb_langDGetErrorDesc(EG_ARRASSIGN));
}
}
else
{
hb_errorRT_BASE(EG_ARG, 1069, NULL, hb_langDGetErrorDesc(EG_ARRASSIGN));
hb_errRT_BASE(EG_ARG, 1069, NULL, hb_langDGetErrorDesc(EG_ARRASSIGN));
}
}
@@ -374,7 +374,7 @@ void hb_arrayFill( PHB_ITEM pArray, PHB_ITEM pValue, ULONG ulStart, ULONG ulCoun
}
else
{
hb_errorRT_BASE(EG_ARG, 1068, NULL, hb_langDGetErrorDesc(EG_NOTARRAY));
hb_errRT_BASE(EG_ARG, 1068, NULL, hb_langDGetErrorDesc(EG_NOTARRAY));
}
}
@@ -398,7 +398,7 @@ void hb_arrayDel( PHB_ITEM pArray, ULONG ulIndex )
}
else
{
hb_errorRT_BASE(EG_ARG, 1068, NULL, hb_langDGetErrorDesc(EG_NOTARRAY));
hb_errRT_BASE(EG_ARG, 1068, NULL, hb_langDGetErrorDesc(EG_NOTARRAY));
}
}
@@ -422,7 +422,7 @@ void hb_arrayIns( PHB_ITEM pArray, ULONG ulIndex )
}
else
{
hb_errorRT_BASE(EG_ARG, 1068, NULL, hb_langDGetErrorDesc(EG_NOTARRAY));
hb_errRT_BASE(EG_ARG, 1068, NULL, hb_langDGetErrorDesc(EG_NOTARRAY));
}
}
@@ -496,7 +496,7 @@ int hb_arrayScan( PHB_ITEM pArray, PHB_ITEM pValue, ULONG ulStart, ULONG ulCount
}
else
{
hb_errorRT_BASE(EG_ARG, 1068, NULL, hb_langDGetErrorDesc(EG_NOTARRAY));
hb_errRT_BASE(EG_ARG, 1068, NULL, hb_langDGetErrorDesc(EG_NOTARRAY));
}
return 0;
}
@@ -532,7 +532,7 @@ void hb_arrayEval( PHB_ITEM pArray, PHB_ITEM bBlock, ULONG ulStart, ULONG ulCoun
}
else
{
hb_errorRT_BASE(EG_ARG, 2017, NULL, "AEVAL");
hb_errRT_BASE(EG_ARG, 2017, NULL, "AEVAL");
}
}
@@ -558,7 +558,7 @@ void hb_arrayRelease( PHB_ITEM pArray )
}
else
{
hb_errorRT_BASE(EG_ARG, 1068, NULL, hb_langDGetErrorDesc(EG_NOTARRAY));
hb_errRT_BASE(EG_ARG, 1068, NULL, hb_langDGetErrorDesc(EG_NOTARRAY));
}
}
@@ -596,7 +596,7 @@ void hb_arrayCopy( PHB_ITEM pSrcArray, PHB_ITEM pDstArray, ULONG ulStart,
}
else
{
hb_errorRT_BASE(EG_ARG, 1068, NULL, hb_langDGetErrorDesc(EG_NOTARRAY));
hb_errRT_BASE(EG_ARG, 1068, NULL, hb_langDGetErrorDesc(EG_NOTARRAY));
}
}
@@ -633,7 +633,7 @@ PHB_ITEM hb_arrayClone( PHB_ITEM pSrcArray )
}
else
{
hb_errorRT_BASE(EG_ARG, 1068, NULL, hb_langDGetErrorDesc(EG_NOTARRAY));
hb_errRT_BASE(EG_ARG, 1068, NULL, hb_langDGetErrorDesc(EG_NOTARRAY));
}
return pDstArray;
}
@@ -663,7 +663,7 @@ HARBOUR HB_ARRAY( void )
if ( hb_parnl( tmp ) < 0 )
{
hb_errorRT_BASE( EG_BOUND, 1131, NULL, hb_langDGetErrorDesc( EG_ARRDIMENSION ) );
hb_errRT_BASE( EG_BOUND, 1131, NULL, hb_langDGetErrorDesc( EG_ARRDIMENSION ) );
}
}
@@ -690,11 +690,11 @@ HARBOUR HB_AADD( void )
hb_itemCopy( &stack.Return, pValue );
}
else
hb_errorRT_BASE( EG_ARG, 1123, NULL, "AADD" );
hb_errRT_BASE( EG_ARG, 1123, NULL, "AADD" );
}
else
/* QUESTION: Clipper catches this at compile time! */
hb_errorRT_BASE( EG_ARGCOUNT, 3000, NULL, "AADD" );
hb_errRT_BASE( EG_ARGCOUNT, 3000, NULL, "AADD" );
}
HARBOUR HB_ASIZE( void )

View File

@@ -269,8 +269,7 @@ HARBOUR HB___CLSADDMSG(void)
break;
default:
printf( "Invalid method type from __clsAddMsg\n" );
exit( 1 );
hb_errInternal( 9999, "Invalid method type from __clsAddMsg", NULL, NULL );
break;
}
}
@@ -485,7 +484,7 @@ HARBOUR HB___CLSMODMSG(void)
else if( ( pFunc == __msgSetData ) || ( pFunc == __msgGetData ) )
{ /* Not allowed for DATA */
/*hb_errPutDescription(pError, "__clsModMsg: Cannot modify a DATA item");*/
hb_errorRT_BASE(EG_ARG, 3004, NULL, "__CLSMODMSG");
hb_errRT_BASE(EG_ARG, 3004, NULL, "__CLSMODMSG");
}
else /* Modify METHOD */
pClass->pMethods[ wAt ].pFunction = ( PHB_FUNC ) hb_parnl( 3 );
@@ -598,8 +597,7 @@ static void hb_clsDictRealloc( PCLASS pClass )
/* TODO: Implement it for very large classes */
if( pClass )
{
printf( "classes.c hb_clsDictRealloc() not implemented yet\n" );
exit( 1 );
hb_errInternal( 9999, "classes.c hb_clsDictRealloc() not implemented yet", NULL, NULL );
}
}
@@ -811,7 +809,7 @@ HARBOUR HB___OBJHASMSG(void)
hb_retl( hb_objHasMsg( pObject, pString->item.asString.value ) != 0 );
else
{
hb_errorRT_BASE(EG_ARG, 3000, NULL, "__OBJHASMSG");
hb_errRT_BASE(EG_ARG, 3000, NULL, "__OBJHASMSG");
}
}
@@ -834,7 +832,7 @@ HARBOUR HB___OBJCLONE( void )
}
else
{
hb_errorRT_BASE(EG_ARG, 3001, NULL, "__OBJCLONE");
hb_errRT_BASE(EG_ARG, 3001, NULL, "__OBJCLONE");
}
}
@@ -861,7 +859,7 @@ HARBOUR HB___OBJSENDMSG(void)
}
else
{
hb_errorRT_BASE(EG_ARG, 3000, NULL, "__OBJSENDMSG");
hb_errRT_BASE(EG_ARG, 3000, NULL, "__OBJSENDMSG");
}
}
@@ -1004,7 +1002,7 @@ HARBOUR HB___CLSINSTSUPER( void )
if( !IS_OBJECT( &stack.Return ) )
{
/* hb_errPutDescription(pError, "INSTSUPER : Super class does not return an object"); */
hb_errorRT_BASE(EG_ARG, 3002, NULL, "__CLSINSTSUPER");
hb_errRT_BASE(EG_ARG, 3002, NULL, "__CLSINSTSUPER");
}
for( w = 0; !bFound && w < wClasses; w++ )
@@ -1019,7 +1017,7 @@ HARBOUR HB___CLSINSTSUPER( void )
else
{
/* hb_errPutDescription(pError, "INSTSUPER : Cannot find super class"); */
hb_errorRT_BASE(EG_ARG, 3003, NULL, "__CLSINSTSUPER");
hb_errRT_BASE(EG_ARG, 3003, NULL, "__CLSINSTSUPER");
}
}
if( !bFound )

View File

@@ -65,7 +65,7 @@ HARBOUR HB___COPYFILE( void )
}
else
{
hb_errorRT_BASE(EG_ARG, 2010, NULL, "__COPYFILE");
hb_errRT_BASE(EG_ARG, 2010, NULL, "__COPYFILE");
}
}
@@ -79,7 +79,7 @@ static BOOL hb_fsCopy(char* szSource, char* szDest, ULONG* ulWrittenTotal)
while ((fhndSource = hb_fsOpen(( BYTE * ) szSource, FO_READ)) == FS_ERROR)
{
if (hb_errorRT_BASE_Ext1(EG_OPEN, 2012, NULL, szSource, hb_fsError(), EF_CANDEFAULT | EF_CANRETRY ) == E_DEFAULT)
if (hb_errRT_BASE_Ext1(EG_OPEN, 2012, NULL, szSource, hb_fsError(), EF_CANDEFAULT | EF_CANRETRY ) == E_DEFAULT)
{
*ulWrittenTotal = (ULONG)-1L;
break;
@@ -90,7 +90,7 @@ static BOOL hb_fsCopy(char* szSource, char* szDest, ULONG* ulWrittenTotal)
{
while ((fhndDest = hb_fsCreate(( BYTE * ) szDest, FC_NORMAL)) == FS_ERROR)
{
if (hb_errorRT_BASE_Ext1(EG_CREATE, 2012, NULL, szDest, hb_fsError(), EF_CANDEFAULT | EF_CANRETRY ) == E_DEFAULT)
if (hb_errRT_BASE_Ext1(EG_CREATE, 2012, NULL, szDest, hb_fsError(), EF_CANDEFAULT | EF_CANRETRY ) == E_DEFAULT)
{
*ulWrittenTotal = (ULONG)-2L;
break;
@@ -118,7 +118,7 @@ static BOOL hb_fsCopy(char* szSource, char* szDest, ULONG* ulWrittenTotal)
{
while ((usWritten = hb_fsWrite(fhndDest, buffer, usRead)) != usRead)
{
if (hb_errorRT_BASE_Ext1(EG_WRITE, 2012, NULL, szDest, hb_fsError(), EF_CANDEFAULT | EF_CANRETRY ) == E_DEFAULT)
if (hb_errRT_BASE_Ext1(EG_WRITE, 2012, NULL, szDest, hb_fsError(), EF_CANDEFAULT | EF_CANRETRY ) == E_DEFAULT)
{
bRetVal = FALSE;
break;

View File

@@ -451,13 +451,13 @@ HARBOUR HB_DTOS( void )
}
else
{
hb_errorRT_BASE(EG_ARG, 1120, NULL, "DTOS");
hb_errRT_BASE(EG_ARG, 1120, NULL, "DTOS");
}
}
else
{
/* QUESTION: Clipper catches this at compile time! */
hb_errorRT_BASE(EG_ARGCOUNT, 3000, NULL, "DTOS");
hb_errRT_BASE(EG_ARGCOUNT, 3000, NULL, "DTOS");
}
#endif
}
@@ -491,7 +491,7 @@ HARBOUR HB_DAY( void )
}
else
{
hb_errorRT_BASE(EG_ARG, 1114, NULL, "DAY");
hb_errRT_BASE(EG_ARG, 1114, NULL, "DAY");
}
}
@@ -519,7 +519,7 @@ HARBOUR HB_MONTH( void )
}
else
{
hb_errorRT_BASE(EG_ARG, 1113, NULL, "MONTH");
hb_errRT_BASE(EG_ARG, 1113, NULL, "MONTH");
}
}
@@ -547,7 +547,7 @@ HARBOUR HB_YEAR( void )
}
else
{
hb_errorRT_BASE(EG_ARG, 1112, NULL, "YEAR");
hb_errRT_BASE(EG_ARG, 1112, NULL, "YEAR");
}
}
@@ -566,7 +566,7 @@ HARBOUR HB_TIME( void )
}
else
{
hb_errorRT_BASE(EG_ARGCOUNT, 3000, NULL, "TIME");
hb_errRT_BASE(EG_ARGCOUNT, 3000, NULL, "TIME");
}
}
@@ -586,7 +586,7 @@ HARBOUR HB_DATE( void )
else
{
/* QUESTION: Clipper catches this at compile time! */
hb_errorRT_BASE(EG_ARGCOUNT, 3000, NULL, "DATE");
hb_errRT_BASE(EG_ARGCOUNT, 3000, NULL, "DATE");
}
}
long hb_dow( long d, long m, long y )
@@ -635,7 +635,7 @@ HARBOUR HB_DOW( void )
}
else
{
hb_errorRT_BASE(EG_ARG, 1115, NULL, "DOW");
hb_errRT_BASE(EG_ARG, 1115, NULL, "DOW");
}
}
@@ -653,13 +653,13 @@ HARBOUR HB_CMONTH( void )
}
else
{
hb_errorRT_BASE(EG_ARG, 1116, NULL, "CMONTH");
hb_errRT_BASE(EG_ARG, 1116, NULL, "CMONTH");
}
}
else
{
/* QUESTION: Clipper catches this at compile time! */
hb_errorRT_BASE(EG_ARGCOUNT, 3000, NULL, "CMONTH");
hb_errRT_BASE(EG_ARGCOUNT, 3000, NULL, "CMONTH");
}
}
@@ -677,13 +677,13 @@ HARBOUR HB_CDOW( void )
}
else
{
hb_errorRT_BASE(EG_ARG, 1117, NULL, "CDOW");
hb_errRT_BASE(EG_ARG, 1117, NULL, "CDOW");
}
}
else
{
/* QUESTION: Clipper catches this at compile time! */
hb_errorRT_BASE(EG_ARGCOUNT, 3000, NULL, "CDOW");
hb_errRT_BASE(EG_ARGCOUNT, 3000, NULL, "CDOW");
}
}
@@ -694,6 +694,6 @@ HARBOUR HB_SECONDS( void )
else
{
/* QUESTION: Clipper catches this at compile time! */
hb_errorRT_BASE(EG_ARGCOUNT, 3000, NULL, "SECONDS");
hb_errRT_BASE(EG_ARGCOUNT, 3000, NULL, "SECONDS");
}
}

View File

@@ -102,7 +102,7 @@ HARBOUR HB_DO( void )
hb_vmDo( hb_pcount() - 1 );
}
else
hb_errorRT_BASE( EG_NOFUNC, 1001, NULL, pItem->item.asString.value );
hb_errRT_BASE( EG_NOFUNC, 1001, NULL, pItem->item.asString.value );
}
else if( IS_BLOCK(pItem) )
{
@@ -125,5 +125,5 @@ HARBOUR HB_DO( void )
hb_vmDo( hb_pcount() - 1 );
}
else
hb_errorRT_BASE( EG_ARG, 3012, NULL, "DO" );
hb_errRT_BASE( EG_ARG, 3012, NULL, "DO" );
}

View File

@@ -27,6 +27,16 @@
#include "itemapi.h"
#include "errorapi.h"
#include "langapi.h"
#include "init.h"
HARBOUR HB___ERRRT_BASE(void);
HB_INIT_SYMBOLS_BEGIN( Errorapi__InitSymbols )
{ "__ERRRT_BASE" , FS_PUBLIC, HB___ERRRT_BASE , 0 }
HB_INIT_SYMBOLS_END( Errorapi__InitSymbols )
#if ! defined(__GNUC__)
#pragma startup Errorapi__InitSymbols
#endif
PHB_ITEM hb_errNew( void )
{
@@ -54,9 +64,7 @@ WORD hb_errLaunch( PHB_ITEM pError )
if ( ! IS_BLOCK( &errorBlock ) )
{
/* TODO: Change to internal error: */
printf( "No ERRORBLOCK() for error at: ???? (0)" );
exit( 1 ); /* TODO: quit correctly */
hb_errInternal( 9999, "No ERRORBLOCK() for error", NULL, NULL );
}
/* NOTE: This must be called before the hb_vm*() calls */
@@ -112,9 +120,7 @@ WORD hb_errLaunch( PHB_ITEM pError )
if ( bFailure )
{
/* TODO: Change to internal error: */
printf("Error recovery failure, ???? (0)");
exit( 1 ); /* TODO: quit correctly */
hb_errInternal( 9999, "Error recovery failure", NULL, NULL );
}
}
}
@@ -357,7 +363,7 @@ PHB_ITEM hb_errPutFlags( PHB_ITEM pError, USHORT uiFlags )
/* Wrappers for hb_errLaunch() */
static WORD hb_errorRT_New
static WORD hb_errRT_New
(
USHORT uiSeverity,
char * szSubSystem,
@@ -388,44 +394,50 @@ static WORD hb_errorRT_New
return wRetVal;
}
void hb_errorRT_BASE( ULONG ulGenCode, ULONG ulSubCode, char * szDescription, char * szOperation )
HARBOUR HB___ERRRT_BASE( void )
{
hb_errorRT_New( ES_ERROR, HB_ERR_SS_BASE, ulGenCode, ulSubCode, szDescription, szOperation, 0, EF_NONE );
hb_errRT_BASE( (ULONG) hb_parnl( 1 ),
(ULONG) hb_parnl( 2 ),
ISCHAR( 3 ) ? hb_parc( 3 ) : NULL,
hb_parc( 4 ) );
}
WORD hb_errorRT_BASE_Ext1( ULONG ulGenCode, ULONG ulSubCode, char * szDescription, char * szOperation, USHORT uiOsCode, USHORT uiFlags )
void hb_errRT_BASE( ULONG ulGenCode, ULONG ulSubCode, char * szDescription, char * szOperation )
{
return hb_errorRT_New( ES_ERROR, HB_ERR_SS_BASE, ulGenCode, ulSubCode, szDescription, szOperation, uiOsCode, uiFlags );
hb_errRT_New( ES_ERROR, HB_ERR_SS_BASE, ulGenCode, ulSubCode, szDescription, szOperation, 0, EF_NONE );
}
void hb_errorRT_TERMINAL( ULONG ulGenCode, ULONG ulSubCode, char * szDescription, char * szOperation )
WORD hb_errRT_BASE_Ext1( ULONG ulGenCode, ULONG ulSubCode, char * szDescription, char * szOperation, USHORT uiOsCode, USHORT uiFlags )
{
hb_errorRT_New( ES_ERROR, HB_ERR_SS_TERMINAL, ulGenCode, ulSubCode, szDescription, szOperation, 0, EF_NONE );
return hb_errRT_New( ES_ERROR, HB_ERR_SS_BASE, ulGenCode, ulSubCode, szDescription, szOperation, uiOsCode, uiFlags );
}
void hb_errorRT_DBCMD( ULONG ulGenCode, ULONG ulSubCode, char * szDescription, char * szOperation )
void hb_errRT_TERMINAL( ULONG ulGenCode, ULONG ulSubCode, char * szDescription, char * szOperation )
{
hb_errorRT_New( ES_ERROR, HB_ERR_SS_DBCMD, ulGenCode, ulSubCode, szDescription, szOperation, 0, EF_NONE );
hb_errRT_New( ES_ERROR, HB_ERR_SS_TERMINAL, ulGenCode, ulSubCode, szDescription, szOperation, 0, EF_NONE );
}
void hb_errorRT_TOOLS( ULONG ulGenCode, ULONG ulSubCode, char * szDescription, char * szOperation )
void hb_errRT_DBCMD( ULONG ulGenCode, ULONG ulSubCode, char * szDescription, char * szOperation )
{
hb_errorRT_New( ES_ERROR, HB_ERR_SS_BASE, ulGenCode, ulSubCode, szDescription, szOperation, 0, EF_NONE );
hb_errRT_New( ES_ERROR, HB_ERR_SS_DBCMD, ulGenCode, ulSubCode, szDescription, szOperation, 0, EF_NONE );
}
/* NOTES: Use as minimal calls from here, as possible. */
/* Don't allocate memory from this function. */
void hb_errRT_TOOLS( ULONG ulGenCode, ULONG ulSubCode, char * szDescription, char * szOperation )
{
hb_errRT_New( ES_ERROR, HB_ERR_SS_BASE, ulGenCode, ulSubCode, szDescription, szOperation, 0, EF_NONE );
}
void hb_errorInternal ( ULONG ulIntCode, char * szText, char * szModule, WORD wLine, char * szPar1, char * szPar2, char * szPar3 )
/* NOTE: Use as minimal calls from here, as possible. */
/* Don't allocate memory from this function. */
void hb_errInternal ( ULONG ulIntCode, char * szText, char * szPar1, char * szPar2 )
{
char szError [ 256 ];
if ( szModule )
printf( "\n%s (%i) ", szModule, wLine );
sprintf( szError, szText ? szText : hb_langDGetErrorIntr( ulIntCode ), szPar1, szPar2 );
printf( "\nInternal error %lu: %s\n", ulIntCode, szError );
sprintf( szError, szText ? szText : hb_langDGetErrorIntr( ulIntCode ), szPar1, szPar2, szPar3 );
printf( "Internal error %lu: %s\n\n", ulIntCode, szError );
hb_callStackShow();
exit( 1 );
exit( EXIT_FAILURE );
}

View File

@@ -152,3 +152,4 @@ STATIC FUNCTION ErrorMessage(oError)
RETURN cMessage
//----------------------------------------------------------------------------//

View File

@@ -434,7 +434,7 @@ BOOL hb_fsLock ( FHANDLE handle, ULONG start,
position = hb_fsSeek( handle, start, 0 );
result = locking( handle, mode?_LK_UNLCK:_LK_LOCK,length );
hb_fsSeek( handle, position, 0 );
#else
#else
result = 1;
last_error = FS_ERROR;
#endif
@@ -602,7 +602,7 @@ HARBOUR HB_FOPEN( void )
}
else
{
hb_errorRT_BASE(EG_ARG, 3006, NULL, "FOPEN");
hb_errRT_BASE(EG_ARG, 3006, NULL, "FOPEN");
}
hb_retni(file_handle);

View File

@@ -27,6 +27,7 @@
#endif
#include <stdlib.h>
#include "extend.h"
#include "errorapi.h"
ULONG ulMemoryBlocks = 0;
ULONG ulMemoryMaxBlocks = 0;
@@ -58,8 +59,7 @@ void * hb_xgrab( ULONG ulSize ) /* allocates fixed memory, exits on fail
if( ! pMem )
{
printf( "\n_xgrab error: can't allocate memory!\n" );
exit( 1 );
hb_errInternal( 9999, "hb_xgrab can't allocate memory", NULL, NULL );
}
* ( ( ULONG * ) pMem ) = ulSize; /* we store the block size into it */
@@ -79,8 +79,7 @@ void * hb_xrealloc( void * pMem, ULONG ulSize ) /* reallocates memory */
if( ! pResult )
{
printf( "\n_xrealloc error: can't reallocate memory!\n" );
exit( 1 );
hb_errInternal( 9999, "hb_xrealloc can't reallocate memory", NULL, NULL );
}
* ( ( ULONG * ) pResult ) = ulSize; /* we store the block size into it */
@@ -102,7 +101,7 @@ void hb_xfree( void * pMem ) /* frees fixed memory */
if( pMem )
free( ( char * ) pMem - sizeof( ULONG ) );
else
printf( "\nCalling hb_xfree() with a null pointer!\n" );
hb_errInternal( 9999, "hb_xfree called with a null pointer", NULL, NULL );
ulMemoryConsumed -= ulMemSize;
ulMemoryBlocks--;

View File

@@ -221,7 +221,7 @@ void hb_inkeyPoll( void ) /* Poll the console keyboard to stuff the Harbour
{
int ch = 0;
#if defined(OS_DOS_COMPATIBLE) || defined(HARBOUR_GCC_OS2) || defined(__IBMCPP__) || defined(_Windows)
/* The reason for including _Windows here is that kbhit() and getch() appear
/* The reason for including _Windows here is that kbhit() and getch() appear
to work properly in console mode. For true Windows mode, changes are needed. */
#if defined(HARBOUR_GCC_OS2)
/* Read from the keyboard with no echo, no wait, and no SIGSEV on Ctrl-C */
@@ -524,7 +524,7 @@ HARBOUR HB_INKEY( void )
if( wait && forever && ( event_mask & ( INKEY_ALL + INKEY_EXTENDED ) ) == 0 )
{
/* There is no point in waiting forever for no input events! */
hb_errorRT_BASE(EG_ARG, 3007, NULL, "INKEY");
hb_errRT_BASE(EG_ARG, 3007, NULL, "INKEY");
}
else
{

View File

@@ -25,6 +25,7 @@
#include "extend.h"
#include "itemapi.h"
#include "ctoharb.h"
#include "errorapi.h"
#include "dates.h"
#include "set.h"
@@ -425,8 +426,7 @@ void hb_itemCopy( PHB_ITEM pDest, PHB_ITEM pSource )
if( pDest == pSource )
{
printf( "an item was going to be copied to itself from hb_itemCopy()\n" );
exit( 1 );
hb_errInternal( 9999, "An item was going to be copied to itself from hb_itemCopy()", NULL, NULL );
}
memcpy( pDest, pSource, sizeof( HB_ITEM ) );

View File

@@ -65,13 +65,13 @@ HARBOUR HB_ABS( void )
}
else
{
hb_errorRT_BASE(EG_ARG, 1089, NULL, "ABS");
hb_errRT_BASE(EG_ARG, 1089, NULL, "ABS");
}
}
else
{
/* QUESTION: Clipper catches this at compile time! */
hb_errorRT_BASE(EG_ARGCOUNT, 3000, NULL, "ABS");
hb_errRT_BASE(EG_ARGCOUNT, 3000, NULL, "ABS");
}
}
@@ -89,13 +89,13 @@ HARBOUR HB_EXP( void )
}
else
{
hb_errorRT_BASE(EG_ARG, 1096, NULL, "EXP");
hb_errRT_BASE(EG_ARG, 1096, NULL, "EXP");
}
}
else
{
/* QUESTION: Clipper catches this at compile time! */
hb_errorRT_BASE(EG_ARGCOUNT, 3000, NULL, "EXP");
hb_errRT_BASE(EG_ARGCOUNT, 3000, NULL, "EXP");
}
}
@@ -107,13 +107,13 @@ HARBOUR HB_INT( void )
hb_retnl( hb_parnd( 1 ) );
else
{
hb_errorRT_BASE(EG_ARG, 1090, NULL, "INT");
hb_errRT_BASE(EG_ARG, 1090, NULL, "INT");
}
}
else
{
/* QUESTION: Clipper catches this at compile time! */
hb_errorRT_BASE(EG_ARGCOUNT, 3000, NULL, "INT");
hb_errRT_BASE(EG_ARGCOUNT, 3000, NULL, "INT");
}
}
@@ -135,13 +135,13 @@ HARBOUR HB_LOG( void )
}
else
{
hb_errorRT_BASE(EG_ARG, 1095, NULL, "LOG");
hb_errRT_BASE(EG_ARG, 1095, NULL, "LOG");
}
}
else
{
/* QUESTION: Clipper catches this at compile time! */
hb_errorRT_BASE(EG_ARGCOUNT, 3000, NULL, "LOG");
hb_errRT_BASE(EG_ARGCOUNT, 3000, NULL, "LOG");
}
}
@@ -168,13 +168,13 @@ HARBOUR HB_MAX( void )
}
else
{
hb_errorRT_BASE(EG_ARG, 1093, NULL, "MAX");
hb_errRT_BASE(EG_ARG, 1093, NULL, "MAX");
}
}
else
{
/* QUESTION: Clipper catches this at compile time! */
hb_errorRT_BASE(EG_ARGCOUNT, 3000, NULL, "MAX");
hb_errRT_BASE(EG_ARGCOUNT, 3000, NULL, "MAX");
}
}
@@ -201,13 +201,13 @@ HARBOUR HB_MIN( void )
}
else
{
hb_errorRT_BASE(EG_ARG, 1092, NULL, "MIN");
hb_errRT_BASE(EG_ARG, 1092, NULL, "MIN");
}
}
else
{
/* QUESTION: Clipper catches this at compile time! */
hb_errorRT_BASE(EG_ARGCOUNT, 3000, NULL, "MIN");
hb_errRT_BASE(EG_ARGCOUNT, 3000, NULL, "MIN");
}
}
@@ -256,7 +256,7 @@ FUNCTION MOD(cl_num, cl_base)
}
else
{
hb_errorRT_BASE(EG_ARG, 1085, NULL, "%");
hb_errRT_BASE(EG_ARG, 1085, NULL, "%");
}
}
@@ -289,13 +289,13 @@ HARBOUR HB_ROUND( void )
}
else
{
hb_errorRT_BASE(EG_ARG, 1094, NULL, "ROUND");
hb_errRT_BASE(EG_ARG, 1094, NULL, "ROUND");
}
}
else
{
/* QUESTION: Clipper catches this at compile time! */
hb_errorRT_BASE(EG_ARGCOUNT, 3000, NULL, "ROUND");
hb_errRT_BASE(EG_ARGCOUNT, 3000, NULL, "ROUND");
}
}
@@ -321,13 +321,13 @@ HARBOUR HB_SQRT( void )
}
else
{
hb_errorRT_BASE(EG_ARG, 1097, NULL, "SQRT");
hb_errRT_BASE(EG_ARG, 1097, NULL, "SQRT");
}
}
else
{
/* QUESTION: Clipper catches this at compile time! */
hb_errorRT_BASE(EG_ARGCOUNT, 3000, NULL, "SQRT");
hb_errRT_BASE(EG_ARGCOUNT, 3000, NULL, "SQRT");
}
}

View File

@@ -363,7 +363,7 @@ void hb_memvarSetValue( PHB_SYMB pMemvarSymb, HB_ITEM_PTR pItem )
}
}
else
hb_errorRT_BASE( EG_NOVAR, 1003, NULL, pMemvarSymb->szName );
hb_errRT_BASE( EG_NOVAR, 1003, NULL, pMemvarSymb->szName );
}
void hb_memvarGetValue( HB_ITEM_PTR pItem, PHB_SYMB pMemvarSymb )
@@ -388,10 +388,10 @@ void hb_memvarGetValue( HB_ITEM_PTR pItem, PHB_SYMB pMemvarSymb )
hb_itemCopy( pItem, pGetItem );
}
else /* variable is not initialized */
hb_errorRT_BASE( EG_NOVAR, 1003, NULL, pMemvarSymb->szName );
hb_errRT_BASE( EG_NOVAR, 1003, NULL, pMemvarSymb->szName );
}
else
hb_errorRT_BASE( EG_NOVAR, 1003, NULL, pMemvarSymb->szName );
hb_errRT_BASE( EG_NOVAR, 1003, NULL, pMemvarSymb->szName );
}
void hb_memvarGetRefer( HB_ITEM_PTR pItem, PHB_SYMB pMemvarSymb )
@@ -415,10 +415,10 @@ void hb_memvarGetRefer( HB_ITEM_PTR pItem, PHB_SYMB pMemvarSymb )
++_globalTable[ pDyn->hMemvar ].counter;
}
else
hb_errorRT_BASE( EG_NOVAR, 1003, NULL, pMemvarSymb->szName );
hb_errRT_BASE( EG_NOVAR, 1003, NULL, pMemvarSymb->szName );
}
else
hb_errorRT_BASE( EG_NOVAR, 1003, NULL, pMemvarSymb->szName );
hb_errRT_BASE( EG_NOVAR, 1003, NULL, pMemvarSymb->szName );
}
/*
@@ -444,7 +444,7 @@ static void hb_memvarCreateFromItem( PHB_ITEM pMemvar, BYTE bScope, PHB_ITEM pVa
else if( IS_STRING( pMemvar ) )
pDynVar =hb_dynsymGet( pMemvar->item.asString.value );
else
hb_errorRT_BASE( EG_ARG, 3008, NULL, "&" );
hb_errRT_BASE( EG_ARG, 3008, NULL, "&" );
if( pDynVar )
hb_memvarCreateFromDynSymbol( pDynVar, bScope, pValue );
@@ -518,7 +518,7 @@ static void hb_memvarRelease( HB_ITEM_PTR pMemvar )
}
}
else
hb_errorRT_BASE( EG_ARG, 3008, NULL, "RELEASE" );
hb_errRT_BASE( EG_ARG, 3008, NULL, "RELEASE" );
}

View File

@@ -37,6 +37,7 @@
*/
#include "hboo.ch"
#include "error.ch"
//
// <lRet> := __objHasData( <oObject>, <cSymbol> )
@@ -45,7 +46,13 @@
//
function __objHasData( oObject, cSymbol )
return __objHasMsg( oObject, cSymbol ) .and. __objHasMsg( oObject, "_" + cSymbol )
if !( ValType( oObject ) == "O" ) .or. ;
!( ValType( cSymbol ) == "C" )
__errRT_BASE(EG_ARG, 3101, NIL, "__OBJHASDATA")
endif
return __objHasMsg( oObject, cSymbol ) .and. ;
__objHasMsg( oObject, "_" + cSymbol )
//
@@ -55,7 +62,13 @@ return __objHasMsg( oObject, cSymbol ) .and. __objHasMsg( oObject, "_" + cSymbol
//
function __objHasMethod( oObject, cSymbol )
return __objHasMsg( oObject, cSymbol ) .and. !__objHasMsg( oObject, "_" + cSymbol )
if !( ValType( oObject ) == "O" ) .or. ;
!( ValType( cSymbol ) == "C" )
__errRT_BASE(EG_ARG, 3101, NIL, "__OBJHASMETHOD")
endif
return __objHasMsg( oObject, cSymbol ) .and. ;
!__objHasMsg( oObject, "_" + cSymbol )
//
// <aData> __objGetMsgList( <oObject>, [lDataMethod] )
@@ -67,24 +80,33 @@ return __objHasMsg( oObject, cSymbol ) .and. !__objHasMsg( oObject, "_" + cSymbo
//
function __objGetMsgList( oObject, lDataMethod )
local aInfo := aSort( oObject:ClassSel() )
local aData := {}
local n := 1
local nLen := Len( aInfo )
local aInfo
local aData
local n
local nLen
local lFoundDM // Found DATA ?
IF !(ValType(lDataMethod) == "L")
if !( ValType( oObject ) == "O" )
__errRT_BASE(EG_ARG, 3101, NIL, "__OBJGETMSGLIST")
endif
IF !( ValType( lDataMethod ) == "L" )
lDataMethod := .T.
ENDIF
aInfo := aSort( oObject:ClassSel() )
aData := {}
n := 1
nLen := Len( aInfo )
do while n <= nLen .and. Substr( aInfo[ n ], 1, 1 ) != "_"
/* If in range and no set function found yet ( set functions begin with a */
/* leading underscore ). */
/* If in range and no set function found yet ( set functions */
/* begin with a leading underscore ). */
lFoundDM := !Empty( aScan( aInfo, "_" + aInfo[ n ], n + 1 ) )
/* Find position of matching set function in array with all symbols */
/* Find position of matching set function in array with all symbols */
if lFoundDM == lDataMethod // If found -> DATA
// else METHOD
@@ -103,6 +125,10 @@ return aData
//
function __objGetMethodList( oObject )
if !( ValType( oObject ) == "O" )
__errRT_BASE(EG_ARG, 3101, NIL, "__OBJGETMETHODLIST")
endif
return __objGetMsgList( oObject, .F. )
@@ -112,180 +138,215 @@ return __objGetMsgList( oObject, .F. )
// Basically the same as __objGetMsgList except that it returns a 2D array
// containing :
//
// [x][1] Symbol name
// [x][2] Value of DATA
// [x][DATA_SYMBOL] Symbol name
// [x][DATA_VALUE] Value of DATA
//
// aExcept is an optional list of DATA you do not want to collect
//
function __objGetValueList( oObject, aExcept )
local aDataSymbol := __objGetMsgList( oObject )
local nLen := Len( aDataSymbol )
local aData := {}
local aDataSymbol
local nLen
local aData
local cSymbol
local n
IF !(ValType(aExcept) == "A")
if !( ValType( oObject ) == "O" )
__errRT_BASE(EG_ARG, 3101, NIL, "__OBJGETVALUELIST")
endif
IF !( ValType( aExcept ) == "A" )
aExcept := {}
ENDIF
aDataSymbol := __objGetMsgList( oObject )
nLen := Len( aDataSymbol )
aData := {}
for n := 1 to nLen
cSymbol := aDataSymbol[ n ]
if Empty( aScan( aExcept, cSymbol ) )
aAdd( aData, { cSymbol, __objSendMsg( oObject, cSymbol ) } )
endif
next n
return aData
//
// __objSetValueList( <oObject>, <aData> )
//
// The reverse of __objGetValueList.
// The reverse of __objGetValueList.
// It puts an 2D array of DATA into an object.
//
function __objSetValueList( oObject, aData )
aEval( aData, ;
{|aItem| __objSendMsg( oObject, "_"+aItem[DATA_SYMBOL], aItem[DATA_VAL] ) } )
if !( ValType( oObject ) == "O" )
__errRT_BASE(EG_ARG, 3101, NIL, "__OBJSETVALUELIST")
endif
aEval( aData,;
{|aItem| __objSendMsg( oObject, "_" + aItem[DATA_SYMBOL], aItem[DATA_VALUE] ) } )
return oObject
//
// <oObj> := __objAddMethod( <oObj>, <cSymbol>, <nFuncPtr> )
// <oObject> := __objAddMethod( <oObject>, <cSymbol>, <nFuncPtr> )
//
// Add a method to an already existing class
//
function __objAddMethod( oObj, cSymbol, nFuncPtr )
function __objAddMethod( oObject, cSymbol, nFuncPtr )
if __objHasMsg( oObj, cSymbol )
QOut( "__objAddMethod: ", cSymbol, " already exists in class." )
elseif ValType( nFuncPtr ) != "N"
QOut( "__objAddMethod: Argument type error <nFuncPtr>" )
elseif ValType( oObj ) != "O"
QOut( "__objAddMethod: Argument type error <oObj>" )
else
__clsAddMsg( oObj:ClassH, cSymbol, nFuncPtr, MET_METHOD )
if !( ValType( oObject ) == "O" ) .or. ;
!( ValType( cSymbol ) == "C" ) .or. ;
!( ValType( nFuncPtr ) == "N" )
__errRT_BASE(EG_ARG, 3101, NIL, "__OBJADDMETHOD")
endif
return oObj
if !__objHasMsg( oObject, cSymbol )
__clsAddMsg( oObject:ClassH, cSymbol, nFuncPtr, MET_METHOD )
else
__errRT_BASE(EG_ARG, 3103, "Already existing symbol in class", "__OBJADDMETHOD")
endif
return oObject
//
// <oObj> := __objAddInline( <oObj>, <cSymbol>, <bInline> )
// <oObject> := __objAddInline( <oObject>, <cSymbol>, <bInline> )
//
// Add an INLINE to an already existing class
//
function __objAddInline( oObj, cSymbol, bInline )
function __objAddInline( oObject, cSymbol, bInline )
if __objHasMsg( oObj, cSymbol )
QOut( "__objAddInline: ", cSymbol, " already exists in class." )
elseif ValType( bInline ) != "B"
QOut( "__objAddInline: Argument type error <bInline>" )
elseif ValType( oObj ) != "O"
QOut( "__objAddInline: Argument type error <oObj>" )
else
__clsAddMsg( oObj:ClassH, cSymbol, bInline, MET_INLINE )
if !( ValType( oObject ) == "O" ) .or. ;
!( ValType( cSymbol ) == "C" )
__errRT_BASE(EG_ARG, 3101, NIL, "__OBJADDINLINE")
endif
return oObj
if !__objHasMsg( oObject, cSymbol )
__clsAddMsg( oObject:ClassH, cSymbol, bInline, MET_INLINE )
else
__errRT_BASE(EG_ARG, 3103, "Already existing symbol in class", "__OBJADDINLINE")
endif
return oObject
//
// <oObj> := __objAddData( <oObj>, <cSymbol> )
// <oObject> := __objAddData( <oObject>, <cSymbol> )
//
// Add a DATA to an already existing class
//
function __objAddData( oObj, cSymbol )
function __objAddData( oObject, cSymbol )
local nSeq
if __objHasMsg( oObj, cSymbol ) .or. __objHasMsg( oObj, "_" + cSymbol )
QOut( "__objAddData: ", cSymbol, " already exists in class." )
elseif ValType( oObj ) != "O"
QOut( "__objAddData: Argument type error <oObj>" )
else
nSeq := __cls_IncData( oObj:ClassH ) // Allocate new Seq#
__clsAddMsg( oObj:ClassH, cSymbol, nSeq, MET_DATA )
__clsAddMsg( oObj:ClassH, "_" + cSymbol, nSeq, MET_DATA )
if !( ValType( oObject ) == "O" ) .or. ;
!( ValType( cSymbol ) == "C" )
__errRT_BASE(EG_ARG, 3101, NIL, "__OBJADDDATA")
endif
return oObj
if !__objHasMsg( oObject, cSymbol ) .and. ;
!__objHasMsg( oObject, "_" + cSymbol )
nSeq := __cls_IncData( oObject:ClassH ) // Allocate new Seq#
__clsAddMsg( oObject:ClassH, cSymbol, nSeq, MET_DATA )
__clsAddMsg( oObject:ClassH, "_" + cSymbol, nSeq, MET_DATA )
else
__errRT_BASE(EG_ARG, 3103, "Already existing symbol in class", "__OBJADDDATA")
endif
return oObject
//
// <oObj> := __objModMethod( <oObj>, <cSymbol>, <nFuncPtr> )
// <oObject> := __objModMethod( <oObject>, <cSymbol>, <nFuncPtr> )
//
// Modify a method to an already existing class
//
function __objModMethod( oObj, cSymbol, nFuncPtr )
function __objModMethod( oObject, cSymbol, nFuncPtr )
if !__objHasMethod( oObj, cSymbol )
QOut( "__objModMethod: ", cSymbol, " does not exist in class." )
elseif ValType( nFuncPtr ) != "N"
QOut( "__objModMethod: Argument type error <nFuncPtr>" )
elseif ValType( oObj ) != "O"
QOut( "__objModMethod: Argument type error <oObj>" )
else
__clsModMsg( oObj:ClassH, cSymbol, nFuncPtr )
if !( ValType( oObject ) == "O" ) .or. ;
!( ValType( cSymbol ) == "C" ) .or. ;
!( ValType( nFuncPtr ) == "N" )
__errRT_BASE(EG_ARG, 3101, NIL, "__OBJMODMETHOD")
endif
return oObj
if __objHasMethod( oObject, cSymbol )
__clsModMsg( oObject:ClassH, cSymbol, nFuncPtr )
else
__errRT_BASE(EG_ARG, 3102, "Not existing symbol in class", "__OBJMODMETHOD")
endif
return oObject
//
// <oObj> := __objModInline( <oObj>, <cSymbol>, <bInline> )
// <oObject> := __objModInline( <oObject>, <cSymbol>, <bInline> )
//
// Modify an INLINE to an already existing class
//
function __objModInline( oObj, cSymbol, bInline )
function __objModInline( oObject, cSymbol, bInline )
if !__objHasMethod( oObj, cSymbol )
QOut( "__objModInline: ", cSymbol, " does not exist in class." )
elseif ValType( bInline ) != "B"
QOut( "__objModInline: Argument type error <bInline>" )
elseif ValType( oObj ) != "O"
QOut( "__objModInline: Argument type error <oObj>" )
else
__clsModMsg( oObj:ClassH, cSymbol, bInline )
if !( ValType( oObject ) == "O" ) .or. ;
!( ValType( cSymbol ) == "C" ) .or. ;
!( ValType( bInline ) == "B" )
__errRT_BASE(EG_ARG, 3101, NIL, "__OBJMODINLINE")
endif
return oObj
if __objHasMethod( oObject, cSymbol )
__clsModMsg( oObject:ClassH, cSymbol, bInline )
else
__errRT_BASE(EG_ARG, 3102, "Not existing symbol in class", "__OBJMODINLINE")
endif
return oObject
//
// <oObj> := __objDelMethod( <oObj>, <cSymbol> )
// <oObject> := __objDelMethod( <oObject>, <cSymbol> )
//
// Delete a method from an already existing class
//
function __objDelMethod( oObj, cSymbol )
function __objDelMethod( oObject, cSymbol )
if !__objHasMethod( oObj, cSymbol )
QOut( "__objDelMethod: ", cSymbol, " does not exist in class." )
elseif ValType( oObj ) != "O"
QOut( "__objDelMethod: Argument type error <oObj>" )
else
__clsDelMsg( oObj:ClassH, cSymbol )
if !( ValType( oObject ) == "O" ) .or. ;
!( ValType( cSymbol ) == "C" )
__errRT_BASE(EG_ARG, 3101, NIL, "__OBJDELMETHOD")
endif
return oObj
function __objDelInline( oObj, cSymbol )
return __objDelMethod( oObj, cSymbol ) // Same story
if __objHasMethod( oObject, cSymbol )
__clsDelMsg( oObject:ClassH, cSymbol )
else
__errRT_BASE(EG_ARG, 3102, "Not existing symbol in class", "__OBJDELMETHOD")
endif
return oObject
function __objDelInline( oObject, cSymbol )
return __objDelMethod( oObject, cSymbol ) // Same story
//
// <oObj> := __objDelData( <oObj>, <cSymbol> )
// <oObject> := __objDelData( <oObject>, <cSymbol> )
//
// Delete a DATA from an already existing class
//
function __objDelData( oObj, cSymbol )
function __objDelData( oObject, cSymbol )
local nSeq
if !__objHasData( oObj, cSymbol )
QOut( "__objDelData: ", cSymbol, " does not exist in class." )
elseif ValType( oObj ) != "O"
QOut( "__objDelData: Argument type error <oObj>" )
else
__clsDelMsg( oObj:ClassH, cSymbol, )
__clsDelMsg( oObj:ClassH, "_" + cSymbol )
nSeq := __cls_DecData( oObj:ClassH ) // Decrease wData
if !( ValType( oObject ) == "O" ) .or. ;
!( ValType( cSymbol ) == "C" )
__errRT_BASE(EG_ARG, 3101, NIL, "__OBJDELDATA")
endif
return oObj
if __objHasData( oObject, cSymbol )
__clsDelMsg( oObject:ClassH, cSymbol )
__clsDelMsg( oObject:ClassH, "_" + cSymbol )
__cls_DecData( oObject:ClassH ) // Decrease wData
else
__errRT_BASE(EG_ARG, 3102, "Not existing symbol in class", "__OBJDELDATA")
endif
return oObject

View File

@@ -49,7 +49,7 @@
from "cvs log source/rtl/set.c".
V 1.39 David G. Holm Made various changes after running
through Gimpel Lint.
Added call hb_errorRT_TERMINAL()
Added call hb_errRT_TERMINAL()
wrapper function upon failure to
create an alternate file and/or a
printer file (and/or an extra file,
@@ -316,7 +316,7 @@ static int open_handle (char * file_name, BOOL bMode, char * def_ext)
char * error_message = strerror( error );
char * message = ( char * )hb_xgrab( strlen( error_message ) + 64 );
sprintf( message, "Create error %d (%s)", error, error_message );
hb_errorRT_TERMINAL( EG_CREATE, 2013, message, path );
hb_errRT_TERMINAL( EG_CREATE, 2013, message, path );
hb_xfree( message );
}
return handle;
@@ -710,7 +710,7 @@ HARBOUR HB_SET (void)
{
if (set_number (pArg2, hb_set.HB_SET_DECIMALS) < 0)
{
hb_errorRT_BASE(EG_ARG, 2020, NULL, "SET");
hb_errRT_BASE(EG_ARG, 2020, NULL, "SET");
}
else
{
@@ -754,7 +754,7 @@ HARBOUR HB_SET (void)
{
if (set_number (pArg2, hb_set.HB_SET_EPOCH) < 0)
{
hb_errorRT_BASE(EG_ARG, 2020, NULL, "SET");
hb_errRT_BASE(EG_ARG, 2020, NULL, "SET");
}
else
{
@@ -817,7 +817,7 @@ HARBOUR HB_SET (void)
{
if (set_number (pArg2, hb_set.HB_SET_MARGIN) < 0)
{
hb_errorRT_BASE(EG_ARG, 2020, NULL, "SET");
hb_errRT_BASE(EG_ARG, 2020, NULL, "SET");
}
else
{
@@ -835,7 +835,7 @@ HARBOUR HB_SET (void)
{
if (set_number (pArg2, hb_set.HB_SET_MESSAGE) < 0)
{
hb_errorRT_BASE(EG_ARG, 2020, NULL, "SET");
hb_errRT_BASE(EG_ARG, 2020, NULL, "SET");
}
else
{

View File

@@ -266,13 +266,13 @@ HARBOUR HB_LTRIM( void )
}
else
{
hb_errorRT_BASE(EG_ARG, 1101, NULL, "LTRIM");
hb_errRT_BASE(EG_ARG, 1101, NULL, "LTRIM");
}
}
else
{
/* QUESTION: Clipper catches this at compile time! */
hb_errorRT_BASE(EG_ARGCOUNT, 3000, NULL, "LTRIM");
hb_errRT_BASE(EG_ARGCOUNT, 3000, NULL, "LTRIM");
}
}
@@ -311,14 +311,14 @@ HARBOUR HB_RTRIM( void )
/* Clipper doesn't error, but only in RTRIM. TRIM() throws an error, though */
hb_retc("");
#else
hb_errorRT_BASE(EG_ARG, 1100, NULL, "RTRIM");
hb_errRT_BASE(EG_ARG, 1100, NULL, "RTRIM");
#endif
}
}
else
{
/* QUESTION: Clipper catches this at compile time! */
hb_errorRT_BASE(EG_ARGCOUNT, 3000, NULL, "RTRIM");
hb_errRT_BASE(EG_ARGCOUNT, 3000, NULL, "RTRIM");
}
}
@@ -335,13 +335,13 @@ HARBOUR HB_TRIM( void )
}
else
{
hb_errorRT_BASE(EG_ARG, 1100, NULL, "TRIM");
hb_errRT_BASE(EG_ARG, 1100, NULL, "TRIM");
}
}
else
{
/* QUESTION: Clipper catches this at compile time! */
hb_errorRT_BASE(EG_ARGCOUNT, 3000, NULL, "TRIM");
hb_errRT_BASE(EG_ARGCOUNT, 3000, NULL, "TRIM");
}
}
@@ -585,13 +585,13 @@ HARBOUR HB_AT( void )
}
else
{
hb_errorRT_BASE(EG_ARG, 1108, NULL, "AT");
hb_errRT_BASE(EG_ARG, 1108, NULL, "AT");
}
}
else
{
/* QUESTION: Clipper catches this at compile time! */
hb_errorRT_BASE(EG_ARGCOUNT, 3000, NULL, "AT");
hb_errRT_BASE(EG_ARGCOUNT, 3000, NULL, "AT");
}
}
@@ -644,13 +644,13 @@ HARBOUR HB_CHR( void )
}
else
{
hb_errorRT_BASE(EG_ARG, 1104, NULL, "CHR");
hb_errRT_BASE(EG_ARG, 1104, NULL, "CHR");
}
}
else
{
/* QUESTION: Clipper catches this at compile time! */
hb_errorRT_BASE(EG_ARGCOUNT, 3000, NULL, "CHR");
hb_errRT_BASE(EG_ARGCOUNT, 3000, NULL, "CHR");
}
}
@@ -670,13 +670,13 @@ HARBOUR HB_ASC(void)
}
else
{
hb_errorRT_BASE(EG_ARG, 1107, NULL, "ASC");
hb_errRT_BASE(EG_ARG, 1107, NULL, "ASC");
}
}
else
{
/* QUESTION: Clipper catches this at compile time! */
hb_errorRT_BASE(EG_ARGCOUNT, 3000, NULL, "ASC");
hb_errRT_BASE(EG_ARGCOUNT, 3000, NULL, "ASC");
}
}
@@ -705,18 +705,18 @@ HARBOUR HB_LEFT( void )
}
else
{
hb_errorRT_BASE(EG_ARG, 3009, NULL, "LEFT");
hb_errRT_BASE(EG_ARG, 3009, NULL, "LEFT");
}
}
else
{
hb_errorRT_BASE(EG_ARG, 1124, NULL, "LEFT");
hb_errRT_BASE(EG_ARG, 1124, NULL, "LEFT");
}
}
else
{
/* QUESTION: Clipper catches this at compile time! */
hb_errorRT_BASE(EG_ARGCOUNT, 3000, NULL, "LEFT");
hb_errRT_BASE(EG_ARGCOUNT, 3000, NULL, "LEFT");
}
}
@@ -811,13 +811,13 @@ HARBOUR HB_SUBSTR( void )
}
else
{
hb_errorRT_BASE(EG_ARG, 1110, NULL, "SUBSTR");
hb_errRT_BASE(EG_ARG, 1110, NULL, "SUBSTR");
}
}
else
{
/* QUESTION: Clipper catches this at compile time! */
hb_errorRT_BASE(EG_ARGCOUNT, 3000, NULL, "SUBSTR");
hb_errRT_BASE(EG_ARGCOUNT, 3000, NULL, "SUBSTR");
}
}
@@ -845,13 +845,13 @@ HARBOUR HB_LOWER( void )
}
else
{
hb_errorRT_BASE(EG_ARG, 1103, NULL, "LOWER");
hb_errRT_BASE(EG_ARG, 1103, NULL, "LOWER");
}
}
else
{
/* QUESTION: Clipper catches this at compile time! */
hb_errorRT_BASE(EG_ARGCOUNT, 3000, NULL, "LOWER");
hb_errRT_BASE(EG_ARGCOUNT, 3000, NULL, "LOWER");
}
}
@@ -879,13 +879,13 @@ HARBOUR HB_UPPER( void )
}
else
{
hb_errorRT_BASE(EG_ARG, 1102, NULL, "UPPER");
hb_errRT_BASE(EG_ARG, 1102, NULL, "UPPER");
}
}
else
{
/* QUESTION: Clipper catches this at compile time! */
hb_errorRT_BASE(EG_ARGCOUNT, 3000, NULL, "UPPER");
hb_errRT_BASE(EG_ARGCOUNT, 3000, NULL, "UPPER");
}
}
@@ -917,7 +917,7 @@ HARBOUR HB_REPLICATE( void )
}
/* TODO: Check for string overflow */
/* hb_errorRT_BASE(EG_STROVERFLOW, 1234, NULL, "REPLICATE"); */
/* hb_errRT_BASE(EG_STROVERFLOW, 1234, NULL, "REPLICATE"); */
hb_retclen(szResult, lLen * lTimes);
hb_xfree(szResult);
@@ -927,13 +927,13 @@ HARBOUR HB_REPLICATE( void )
}
else
{
hb_errorRT_BASE(EG_ARG, 1106, NULL, "REPLICATE");
hb_errRT_BASE(EG_ARG, 1106, NULL, "REPLICATE");
}
}
else
{
/* QUESTION: Clipper catches this at compile time! */
hb_errorRT_BASE(EG_ARGCOUNT, 3000, NULL, "REPLICATE");
hb_errRT_BASE(EG_ARGCOUNT, 3000, NULL, "REPLICATE");
}
}
@@ -954,7 +954,7 @@ HARBOUR HB_SPACE( void )
char *szResult = (char *)hb_xgrab(lLen + 1);
/* TODO: Check for string overflow */
/* hb_errorRT_BASE(EG_STROVERFLOW, 1233, NULL, "SPACE"); */
/* hb_errRT_BASE(EG_STROVERFLOW, 1233, NULL, "SPACE"); */
memset(szResult, ' ', lLen);
hb_retclen(szResult, lLen);
@@ -965,13 +965,13 @@ HARBOUR HB_SPACE( void )
}
else
{
hb_errorRT_BASE(EG_ARG, 1105, NULL, "SPACE");
hb_errRT_BASE(EG_ARG, 1105, NULL, "SPACE");
}
}
else
{
/* QUESTION: Clipper catches this at compile time! */
hb_errorRT_BASE(EG_ARGCOUNT, 3000, NULL, "SPACE");
hb_errRT_BASE(EG_ARGCOUNT, 3000, NULL, "SPACE");
}
}
@@ -1163,10 +1163,10 @@ HARBOUR HB_STRTRAN( void )
hb_retclen(szText, pText->item.asString.length);
}
else
hb_errorRT_BASE(EG_ARG, 3010, NULL, "STRTRAN");
hb_errRT_BASE(EG_ARG, 3010, NULL, "STRTRAN");
}
else
hb_errorRT_BASE(EG_ARG, 1126, NULL, "STRTRAN");
hb_errRT_BASE(EG_ARG, 1126, NULL, "STRTRAN");
}
/* returns the numeric value of a character string representation of a number */
@@ -1198,13 +1198,13 @@ HARBOUR HB_VAL( void )
}
else
{
hb_errorRT_BASE(EG_ARG, 1098, NULL, "VAL");
hb_errRT_BASE(EG_ARG, 1098, NULL, "VAL");
}
}
else
{
/* QUESTION: Clipper catches this at compile time! */
hb_errorRT_BASE(EG_ARGCOUNT, 3000, NULL, "VAL");
hb_errRT_BASE(EG_ARGCOUNT, 3000, NULL, "VAL");
}
}
@@ -1351,13 +1351,13 @@ HARBOUR HB_STR( void )
}
else
{
hb_errorRT_BASE(EG_ARG, 1099, NULL, "STR");
hb_errRT_BASE(EG_ARG, 1099, NULL, "STR");
}
}
else
{
/* QUESTION: Clipper catches this at compile time! */
hb_errorRT_BASE(EG_ARGCOUNT, 3000, NULL, "STR");
hb_errRT_BASE(EG_ARGCOUNT, 3000, NULL, "STR");
}
}

View File

@@ -121,7 +121,7 @@ static function Create()
for n = 1 to nLenDatas
__clsAddMsg( hClass, ::aDatas[ n ][ DATA_SYMBOL ], n + nDataBegin, MET_DATA, ;
::aDatas[ n ][ DATA_VAL ] )
::aDatas[ n ][ DATA_VALUE ] )
__clsAddMsg( hClass, "_" + ::aDatas[ n ][ DATA_SYMBOL ], n + nDataBegin, MET_DATA )
next

View File

@@ -345,8 +345,7 @@ static char *NumPicture( char *szPic, long lPic, int iPicFlags, double dValue,
}
else
{
printf( "\nNUMPICTURE: STR does not return string" );
exit(1);
hb_errInternal( 9999, "NumPicture(): STR does not return string", NULL, NULL );
}
return(szRet);
}
@@ -567,7 +566,7 @@ HARBOUR HB_TRANSFORM( void )
}
default:
{
hb_errorRT_BASE(EG_ARG, 1122, NULL, "TRANSFORM");
hb_errRT_BASE(EG_ARG, 1122, NULL, "TRANSFORM");
}
}
}
@@ -610,7 +609,7 @@ HARBOUR HB_TRANSFORM( void )
}
default:
{
hb_errorRT_BASE(EG_ARG, 1122, NULL, "TRANSFORM");
hb_errRT_BASE(EG_ARG, 1122, NULL, "TRANSFORM");
}
}
}

View File

@@ -175,7 +175,7 @@ HARBOUR HB_ISLEAPYEAR( void )
}
else
{
hb_errorRT_TOOLS(EG_ARG, 4001, NULL, "ISLEAPYEAR");
hb_errRT_TOOLS(EG_ARG, 4001, NULL, "ISLEAPYEAR");
}
}

View File

@@ -126,7 +126,7 @@ function ToChar( xTxt, cSeparator, lDebug )
nLen := Len( aData )
for n := 1 to nLen // For each item : Recurse !
cOut += aData[n][DATA_SYMBOL] + ":" + ;
ToChar( aData[n][DATA_VAL], cSeparator, lDebug )
ToChar( aData[n][DATA_VALUE], cSeparator, lDebug )
if n != nLen
cOut += cSeparator
endif

View File

@@ -160,9 +160,8 @@ int main( int argc, char * argv[] )
pSymStart =pDynSym->pSymbol;
else
{
printf( "Can\'t locate the starting procedure: \'%s\'", HARBOUR_START_PROCEDURE );
exit(1);
}
hb_errInternal( 9999, "Can\'t locate the starting procedure: \'%s\'", HARBOUR_START_PROCEDURE, NULL );
}
}
#endif
@@ -602,9 +601,7 @@ void hb_vmExecute( BYTE * pCode, PHB_SYMB pSymbols )
break;
default:
printf( "The Harbour virtual machine can't run yet this PRG\n(unsuported pcode opcode: %i)\n", bCode );
printf( "Line number %i in %s", stack.pBase->item.asSymbol.lineno, stack.pBase->item.asSymbol.value->szName );
exit( 1 );
hb_errInternal( 9999, "Unsupported VM opcode", NULL, NULL );
break;
}
}
@@ -654,7 +651,7 @@ static void hb_vmAliasPop( void )
default:
hb_itemClear( pItem );
hb_errorRT_BASE( EG_BADALIAS, 1000, NULL, NULL );
hb_errRT_BASE( EG_BADALIAS, 1000, NULL, NULL );
break;
}
@@ -710,7 +707,7 @@ void hb_vmAnd( void )
}
else
{
hb_errorRT_BASE(EG_ARG, 1078, NULL, ".AND.");
hb_errRT_BASE(EG_ARG, 1078, NULL, ".AND.");
}
}
@@ -782,8 +779,7 @@ void hb_vmDimArray( WORD wDimensions ) /* generates a wDimensions Array and init
if( wDimensions > 1 )
{
printf( "HVM.c DimArray() does not supports multiple dimensions yet!" );
exit( 1 );
hb_errInternal( 9999, "HVM.C hb_vmDimArray() does not supports multiple dimensions yet", NULL, NULL );
}
/*
@@ -823,17 +819,18 @@ void hb_vmDo( WORD wParams )
if( ! IS_SYMBOL( pItem ) )
{
/* QUESTION: Is this call needed ? [vszel] */
hb_stackShow();
printf( "symbol item expected as a base from Do() in line %i\n", stack.pBase->item.asSymbol.lineno );
exit( 1 );
hb_errInternal( 9999, "Symbol item expected as a base from hb_vmDo()", NULL, NULL );
}
/* if( ! IS_NIL( pSelf ) )
/*
if( ! IS_NIL( pSelf ) )
{
hb_stackShow();
printf( "invalid symbol type for self from Do()\n" );
exit( 1 );
} */
hb_errInternal( 9999, "Invalid symbol type for self from hb_vmDo()", NULL, NULL );
}
*/
pItem->item.asSymbol.lineno = 0;
pItem->item.asSymbol.paramcnt = wParams;
@@ -851,10 +848,7 @@ void hb_vmDo( WORD wParams )
if( ! pFunc )
{
printf( "internal error: message %s not implemented for class %s\n",
pSym->szName, hb_objGetClsName( pSelf ) );
hb_callStackShow();
exit( 1 );
hb_errInternal( 9999, "Message %s not implemented for class %s", pSym->szName, hb_objGetClsName( pSelf ) );
}
pFunc();
}
@@ -863,9 +857,7 @@ void hb_vmDo( WORD wParams )
pFunc = pSym->pFunPtr;
if( ! pFunc )
{
printf( "internal error: invalid function pointer (%s) from Do()\n", pSym->szName );
hb_callStackShow();
exit( 1 );
hb_errInternal( 9999, "Invalid function pointer (%s) from hb_vmDo()", pSym->szName, NULL );
}
pFunc();
}
@@ -885,9 +877,7 @@ HARBOUR hb_vmDoBlock( void )
if( ! IS_BLOCK( pBlock ) )
{
printf( "internal error: codeblock expected from DoBlock()\n" );
hb_callStackShow();
exit( 1 );
hb_errInternal( 9999, "Codeblock expected from hb_vmDoBlock()", NULL, NULL );
}
/* Check for valid count of parameters */
@@ -941,8 +931,7 @@ HARBOUR HB_EVAL( void )
}
else
{
printf( "Not a valid codeblock on eval in line %i\n", stack.pBase->item.asSymbol.lineno );
exit( 1 );
hb_errInternal( 9999, "Not a valid codeblock on EVAL", NULL, NULL );
}
}
@@ -994,7 +983,7 @@ void hb_vmEqual( BOOL bExact )
else if( pItem1->type != pItem2->type )
{
hb_errorRT_BASE(EG_ARG, 1070, NULL, "==");
hb_errRT_BASE(EG_ARG, 1070, NULL, "==");
}
else
@@ -1025,7 +1014,7 @@ void hb_vmForTest( void ) /* Test to check the end point of the FOR */
}
else
{
hb_errorRT_BASE(EG_ARG, 1073, NULL, "<");
hb_errRT_BASE(EG_ARG, 1073, NULL, "<");
}
}
@@ -1050,8 +1039,7 @@ void hb_vmFuncPtr( void ) /* pushes a function address pointer. Removes the sym
}
else
{
printf( "symbol item expected from FuncPtr()\n" );
exit( 1 );
hb_errInternal( 9999, "Symbol item expected from hb_vmFuncPtr()", NULL, NULL );
}
}
@@ -1122,7 +1110,7 @@ void hb_vmGreater( void )
else if( ( stack.pPos - 2 )->type != ( stack.pPos - 1 )->type )
{
hb_errorRT_BASE(EG_ARG, 1075, NULL, ">");
hb_errRT_BASE(EG_ARG, 1075, NULL, ">");
}
}
@@ -1167,7 +1155,7 @@ void hb_vmGreaterEqual( void )
else if( ( stack.pPos - 2 )->type != ( stack.pPos - 1 )->type )
{
hb_errorRT_BASE(EG_ARG, 1076, NULL, ">=");
hb_errRT_BASE(EG_ARG, 1076, NULL, ">=");
}
}
@@ -1189,7 +1177,7 @@ void hb_vmInc( void )
}
else
{
hb_errorRT_BASE(EG_ARG, 1086, NULL, "++");
hb_errRT_BASE(EG_ARG, 1086, NULL, "++");
}
}
@@ -1209,7 +1197,7 @@ void hb_vmInstring( void )
}
else
{
hb_errorRT_BASE(EG_ARG, 1109, NULL, "$");
hb_errRT_BASE(EG_ARG, 1109, NULL, "$");
}
}
@@ -1254,7 +1242,7 @@ void hb_vmLess( void )
else if( ( stack.pPos - 2 )->type != ( stack.pPos - 1 )->type )
{
hb_errorRT_BASE(EG_ARG, 1073, NULL, "<");
hb_errRT_BASE(EG_ARG, 1073, NULL, "<");
}
}
@@ -1299,7 +1287,7 @@ void hb_vmLessEqual( void )
else if( ( stack.pPos - 2 )->type != ( stack.pPos - 1 )->type )
{
hb_errorRT_BASE(EG_ARG, 1074, NULL, "<=");
hb_errRT_BASE(EG_ARG, 1074, NULL, "<=");
}
}
@@ -1337,7 +1325,7 @@ void hb_vmNot( void )
if( IS_LOGICAL( pItem ) )
pItem->item.asLogical.value = ! pItem->item.asLogical.value;
else
hb_errorRT_BASE(EG_ARG, 1077, NULL, ".NOT.");
hb_errRT_BASE(EG_ARG, 1077, NULL, ".NOT.");
}
void hb_vmNotEqual( void )
@@ -1380,7 +1368,7 @@ void hb_vmNotEqual( void )
else if( pItem1->type != pItem2->type )
{
hb_errorRT_BASE(EG_ARG, 1072, NULL, "<>");
hb_errRT_BASE(EG_ARG, 1072, NULL, "<>");
}
else
@@ -1442,7 +1430,7 @@ void hb_vmMinus( void )
else if( IS_OBJECT( stack.pPos - 2 ) && hb_objHasMsg( stack.pPos - 2, "-" ) )
hb_vmOperatorCall( stack.pPos - 2, stack.pPos - 1, "-" );
else
hb_errorRT_BASE(EG_ARG, 1082, NULL, "-");
hb_errRT_BASE(EG_ARG, 1082, NULL, "-");
}
@@ -1496,7 +1484,7 @@ void hb_vmOr( void )
}
else
{
hb_errorRT_BASE(EG_ARG, 1079, NULL, ".OR.");
hb_errRT_BASE(EG_ARG, 1079, NULL, ".OR.");
}
}
@@ -1551,7 +1539,7 @@ void hb_vmPlus( void )
hb_vmOperatorCall( pItem1, pItem2, "+" );
else
hb_errorRT_BASE( EG_ARG, 1081, NULL, "+" );
hb_errRT_BASE( EG_ARG, 1081, NULL, "+" );
HB_DEBUG( "Plus\n" );
}
@@ -1567,8 +1555,7 @@ long hb_vmPopDate( void )
}
else
{
printf( "incorrect item value trying to Pop a date value in line %i\n", stack.pBase->item.asSymbol.lineno );
exit( 1 );
hb_errInternal( 9999, "Incorrect item value trying to Pop a date value", NULL, NULL );
return 0;
}
}
@@ -1605,9 +1592,8 @@ double hb_vmPopDouble( WORD *pwDec )
break;
default:
printf( "Incorrect item type trying to Pop a double in line %i\n", stack.pBase->item.asSymbol.lineno );
exit( 1 );
d = 0;
hb_errInternal( 9999, "Incorrect item type trying to Pop a double", NULL, NULL );
break;
}
stack.pPos->type = IT_NIL;
HB_DEBUG( "hb_vmPopDouble\n" );
@@ -1658,7 +1644,7 @@ BOOL hb_vmPopLogical( void )
}
else
{
hb_errorRT_BASE(EG_ARG, 1066, NULL, hb_langDGetErrorDesc(EG_CONDITION));
hb_errRT_BASE(EG_ARG, 1066, NULL, hb_langDGetErrorDesc(EG_CONDITION));
return 0;
}
}
@@ -1693,9 +1679,8 @@ double hb_vmPopNumber( void )
break;
default:
printf( "Incorrect item on the stack trying to pop a number in line %i\n", stack.pBase->item.asSymbol.lineno );
hb_stackShow();
exit( 1 );
hb_errInternal( 9999, "Incorrect item on the stack trying to pop a number", NULL, NULL );
break;
}
stack.pPos->type = IT_NIL;
@@ -1976,9 +1961,7 @@ void hb_stackPop( void )
{
if( --stack.pPos < stack.pItems )
{
printf( "internal error: stack underflow\n" );
hb_callStackShow();
exit( 1 );
hb_errInternal( 9999, "Stack underflow", NULL, NULL );
}
if( stack.pPos->type != IT_NIL )
hb_itemClear( stack.pPos );
@@ -1988,9 +1971,7 @@ void hb_stackDec( void )
{
if( --stack.pPos < stack.pItems )
{
printf( "internal error: stack underflow\n" );
hb_callStackShow();
exit( 1 );
hb_errInternal( 9999, "Stack underflow", NULL, NULL );
}
}
@@ -2318,7 +2299,7 @@ HARBOUR HB_LEN( void )
break;
default:
hb_errorRT_BASE(EG_ARG, 1111, NULL, "LEN");
hb_errRT_BASE(EG_ARG, 1111, NULL, "LEN");
break;
}
}
@@ -2423,7 +2404,7 @@ HARBOUR HB_VALTYPE( void )
else
{
/* QUESTION: Clipper catches this at compile time! */
hb_errorRT_BASE(EG_ARGCOUNT, 3000, NULL, "VALTYPE");
hb_errRT_BASE(EG_ARGCOUNT, 3000, NULL, "VALTYPE");
}
}
@@ -2450,11 +2431,11 @@ void hb_callStackShow( void )
{
pBase = stack.pItems + pBase->item.asSymbol.stackbase;
if( ( pBase + 1 )->type == IT_ARRAY )
printf( "%s:%s (%i)\n", hb_objGetClsName( pBase + 1 ),
printf( "Called from %s:%s(%i)\n", hb_objGetClsName( pBase + 1 ),
pBase->item.asSymbol.value->szName,
pBase->item.asSymbol.lineno );
else
printf( "%s (%i)\n", pBase->item.asSymbol.value->szName,
printf( "Called from %s(%i)\n", pBase->item.asSymbol.value->szName,
pBase->item.asSymbol.lineno );
}
}
@@ -2534,6 +2515,6 @@ HARBOUR HB_PVALUE(void) /* PValue( <nArg> )
hb_itemReturn( pBase + 1 + wParam );
else
{
hb_errorRT_BASE(EG_ARG, 3011, NULL, "PVALUE");
hb_errRT_BASE(EG_ARG, 3011, NULL, "PVALUE");
}
}