1
0
Files
irix-657m-src/eoe/cmd/pcp/pmie/src/misc.sk
2022-09-29 17:59:04 +03:00

83 lines
1.4 KiB
Plaintext

/***********************************************************************
* skeleton: misc.sk
***********************************************************************/
/* $Id: misc.sk,v 1.1 1999/04/28 10:06:17 kenmcd Exp $ */
/*
* operator RULE
*/
void
rule(Expr *x)
{
Expr *arg1 = x->arg1;
Expr *arg2 = x->arg2;
int sts;
EVALARG(arg1)
if ((x->valid = arg1->valid) > 0) {
sts = (*(Truth *)x->ring = *(Truth *)arg1->ring);
if (sts == FALSE)
perf->eval_false++;
else if (sts == TRUE) {
perf->eval_true++;
EVALARG(arg2)
}
else
perf->eval_unknown++;
}
else
perf->eval_unknown++;
}
/*
* operator: cndDelay
*/
void
cndDelay_n(Expr *x)
{
Expr *arg1 = x->arg1;
int n = arg1->tdom;
Sample *is = &arg1->smpls[n - 1];
Sample *os = &x->smpls[0];
@ITYPE *ip;
@OTYPE *op;
int i;
EVALARG(arg1)
ROTATE(x)
if (arg1->valid >= n) {
ip = (@ITYPE *)is->ptr;
op = (@OTYPE *)os->ptr;
for (i = 0; i < x->tspan; i++)
*op++ = *ip++;
os->stamp = is->stamp;
x->valid++;
}
else x->valid = 0;
}
void
cndDelay_1(Expr *x)
{
Expr *arg1 = x->arg1;
int n = arg1->tdom;
Sample *is = &arg1->smpls[n - 1];
Sample *os = &x->smpls[0];
EVALARG(arg1)
ROTATE(x)
if (arg1->valid >= n) {
*(@OTYPE *)os->ptr = *(@ITYPE *)is->ptr;
os->stamp = is->stamp;
x->valid++;
}
else x->valid = 0;
}