_parinfa() support

This commit is contained in:
Antonio Linares
1999-05-14 10:35:55 +00:00
parent 3586265340
commit 4709c9cc08
5 changed files with 87 additions and 1 deletions

View File

@@ -165,6 +165,14 @@ PDYNSYM NewDynSym( PSYMBOL pSymbol ); /* creates a new dynamic symbol based on a
/* error API */
PITEM _errNew( void );
PITEM _errPutDescription( PITEM pError, char * szDescription );
PITEM _errPutFileName( PITEM pError, char * szFileName );
PITEM _errPutGenCode( PITEM pError, USHORT uiGenCode );
PITEM _errPutOperation( PITEM pError, char * szOperation );
PITEM _errPutOsCode( PITEM pError, USHORT uiOsCode );
PITEM _errPutSeverity( PITEM pError, USHORT uiSeverity );
PITEM _errPutSubCode( PITEM pError, USHORT uiSubCode );
PITEM _errPutSubSystem( PITEM pError, char * szSubSystem );
PITEM _errPutTries( PITEM pError, USHORT uiTries );
WORD _errLaunch( PITEM pError );
void _errRelease( PITEM pError );

View File

@@ -524,7 +524,7 @@ static void DataSegment( FILE * hObjFile, BYTE * symbol, WORD wSymLen, WORD wSym
while( pSymbol )
{
for( w = 0; w < strlen( pSymbol->szName ); w++ )
for( w = 0; w < ( WORD ) strlen( pSymbol->szName ); w++ )
{
putbyte( pSymbol->szName[ w ], hObjFile );
bCheckSum += pSymbol->szName[ w ];

View File

@@ -112,6 +112,29 @@ ULONG ArrayGetStringLen( PITEM pArray, ULONG ulIndex )
return 0;
}
int ArrayGetType( PITEM pArray, ULONG ulIndex )
{
PITEM pItem, pError;
if( IS_ARRAY( pArray ) )
{
if( ulIndex <= ( unsigned ) ArrayLen( pArray ) )
{
pItem = ( ( PBASEARRAY ) pArray->value.pBaseArray )->pItems + ulIndex - 1;
return pItem->wType;
}
else
{
pError = _errNew();
_errPutDescription( pError, "Bound error: Array access" );
_errLaunch( pError );
_errRelease( pError );
}
}
return 0;
}
void ArrayLast( PITEM pArray, PITEM pResult )
{
if( ( ( PBASEARRAY ) pArray->value.pBaseArray )->ulLen )

View File

@@ -27,6 +27,14 @@ PITEM _errNew( void )
return &stack.Return;
}
char * _errGetDescription( PITEM pError )
{
PushSymbol( GetDynSym( "DESCRIPTION" )->pSymbol );
Push( pError );
Do( 0 );
return stack.Return.value.szText;
}
PITEM _errPutDescription( PITEM pError, char * szDescription )
{
PushSymbol( GetDynSym( "_DESCRIPTION" )->pSymbol );
@@ -36,6 +44,14 @@ PITEM _errPutDescription( PITEM pError, char * szDescription )
return pError;
}
char * _errGetFileName( PITEM pError )
{
PushSymbol( GetDynSym( "FILENAME" )->pSymbol );
Push( pError );
Do( 0 );
return stack.Return.value.szText;
}
PITEM _errPutFileName( PITEM pError, char * szFileName )
{
PushSymbol( GetDynSym( "_FILENAME" )->pSymbol );
@@ -45,6 +61,14 @@ PITEM _errPutFileName( PITEM pError, char * szFileName )
return pError;
}
USHORT _errGetGenCode( PITEM pError )
{
PushSymbol( GetDynSym( "GENCODE" )->pSymbol );
Push( pError );
Do( 0 );
return stack.Return.value.iNumber;
}
PITEM _errPutGenCode( PITEM pError, USHORT uiGenCode )
{
PushSymbol( GetDynSym( "_GENCODE" )->pSymbol );
@@ -54,6 +78,14 @@ PITEM _errPutGenCode( PITEM pError, USHORT uiGenCode )
return pError;
}
char * _errGetOperation( PITEM pError )
{
PushSymbol( GetDynSym( "OPERATION" )->pSymbol );
Push( pError );
Do( 0 );
return stack.Return.value.szText;
}
PITEM _errPutOperation( PITEM pError, char * szOperation )
{
PushSymbol( GetDynSym( "_OPERATION" )->pSymbol );
@@ -63,6 +95,14 @@ PITEM _errPutOperation( PITEM pError, char * szOperation )
return pError;
}
USHORT _errGetOsCode( PITEM pError )
{
PushSymbol( GetDynSym( "OSCODE" )->pSymbol );
Push( pError );
Do( 0 );
return stack.Return.value.iNumber;
}
PITEM _errPutOsCode( PITEM pError, USHORT uiOsCode )
{
PushSymbol( GetDynSym( "_OSCODE" )->pSymbol );

View File

@@ -258,6 +258,21 @@ long _parnl( WORD wParam, ... )
return 0;
}
int _parinfa( int iParamNum, ULONG uiArrayIndex )
{
PITEM pArray = _param( iParamNum, IT_ARRAY );
if( pArray )
{
if( ! uiArrayIndex )
return ArrayLen( pArray );
else
return ArrayGetType( pArray, uiArrayIndex );
}
else
return 0; /* QUESTION: should we raise an error here ? */
}
WORD _parinfo( WORD wParam )
{
if( ! wParam )