_parinfa() support
This commit is contained in:
@@ -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 );
|
||||
|
||||
|
||||
@@ -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 ];
|
||||
|
||||
@@ -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 )
|
||||
|
||||
@@ -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 );
|
||||
|
||||
@@ -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 )
|
||||
|
||||
Reference in New Issue
Block a user