|
|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T a
Length: 2864 (0xb30)
Types: TextFile
Names: »adlobjr.c«
└─⟦b20c6495f⟧ Bits:30007238 EUUGD18: Wien-båndet, efterår 1987
└─⟦this⟧ »EUUGD18/General/Adl/adlrun/adlobjr.c«
#include <stdio.h>
#include "adltypes.h"
#include "adlprog.h"
#include "builtins.h"
#include "adlrun.h"
setp()
{
int16
a, b; /* Arg1, arg2 */
assertargs( "$setp", 3 );
a = ARG( 1 );
b = ARG( 2 );
if( (a < 0) || (a > NUMOBJ) )
error( 15 ); /* Illegal object for $setp */
if( (b < 1) || (b > _ACT) )
error( 16 ); /* Illegal propnum for $setp */
if( (b >= 1) && (b <= 16) ) {
if( ARG( 3 ) )
objspace[ a ].props1to16 |= bitpat[ b - 1 ];
else
objspace[ a ].props1to16 &= ibitpat[ b - 1 ];
}
else if( (b >= 17) && (b <= _ACT) )
objspace[ a ].props[ b - 17 ] = ARG( 3 );
}
move_obj()
{
int16
a, b, t; /* Arg1, arg2, temp */
assertargs( "$move", 2 );
a = ARG( 1 );
b = ARG( 2 );
if( (a < 0) || (b < 0) || (a > NUMOBJ) || (b > NUMOBJ) )
error( 17 ); /* Illegal object for $move */
t = objspace[ a ].loc;
if( objspace[ t ].cont != a ) {
t = objspace[ t ].cont;
while( objspace[ t ].link != a )
t = objspace[ t ].link;
objspace[ t ].link = objspace[ objspace[ t ].link ].link;
}
else
objspace[ t ].cont = objspace[ objspace[ t ].cont ].link;
objspace[ a ].loc = b;
objspace[ a ].link = 0;
t = objspace[ b ].cont;
if( t ) {
while( objspace[ t ].link )
t = objspace[ t ].link;
objspace[ t ].link = a;
}
else
objspace[ b ].cont = a;
}
objprop( n )
int16
n;
{
assertargs( "$prop", 1 );
if( (ARG( 1 ) < 0) || (ARG( 1 ) > NUMOBJ) )
error( 18 ); /* Illegal object for $prop */
if( (n >= 1) && (n <= 16) ) {
if( objspace[ ARG( 1 ) ].props1to16 & bitpat[ n - 1 ] )
RETVAL = 1;
else
RETVAL = 0;
}
else if( (n >= 17) && (n <= _ACT) )
RETVAL = objspace[ ARG( 1 ) ].props[ n - 17 ];
else
switch( n ) {
case _LOC :
RETVAL = objspace[ ARG( 1 ) ].loc;
break;
case _CONT :
RETVAL = objspace[ ARG( 1 ) ].cont;
break;
case _LINK :
RETVAL = objspace[ ARG( 1 ) ].link;
break;
case _MODIF :
RETVAL = objspace[ ARG( 1 ) ].adj;
break;
default :
error( 19 ); /* Illegal promnum for $prop */
}
}
vset()
{
assertargs( "$vset", 3 );
if( (ARG( 1 ) < 0) || (ARG( 1 ) > NUMVERB) )
error( 20 ); /* Illegal verb for $vset */
switch( ARG( 2 ) ) {
case _PREACT :
verbspace[ ARG( 1 ) ].preact = ARG( 3 );
break;
case _ACT :
verbspace[ ARG( 1 ) ].postact = ARG( 3 );
break;
default :
error( 21 ); /* Illegal propnum for $vset */
}
}
vprop()
{
assertargs( "$vprop", 2 );
if( (ARG( 1 ) < 0) || (ARG( 1 ) > NUMVERB) )
error( 22 ); /* Illegal verb for $vprop */
switch( ARG( 2 ) ) {
case _PREACT :
RETVAL = verbspace[ ARG( 1 ) ].preact;
break;
case _ACT :
RETVAL = verbspace[ ARG( 1 ) ].postact;
break;
default :
error( 23 ); /* Illegal propnum for $vprop */
}
}
/*** EOF adlobjr.c ***/