Beispiel #1
0
void
writep(		/* print primitive in human-readable form */
	register PRIMITIVE  *p,
	FILE  *fp
)

{

 if (fp == NULL) fp = stdout;

 if (!iscom(p->com))
     error(USER, "bad command in writep");

 fprintf(fp, "%c ", p->com);
 if (isprim(p->com)) {
    fprintf(fp, "%3o ", p->arg0 & 0177);
    fprintf(fp, "%5d %5d %5d %5d ", p->xy[XMN], p->xy[YMN], p->xy[XMX], p->xy[YMX]);
 } else
    fprintf(fp, "%3o ", p->arg0);

 if (p->args != NULL)  {
    putc(ADELIM, fp);
    fputs(p->args, fp);
    }

 putc('\n', fp);

 if (p->com == PDRAW || p->com == PEOF)
    if (fflush(fp) == -1)
       error(SYSTEM, "error detected writing file in writep");

 }
Beispiel #2
0
void even(int len)
{
	len/=2;
	int i,prim;
	for(i=en[len-1];i<en[len];i++)
	{
		prim=i*en[len]+opp[i];
		isprim(prim);
	}
}
Beispiel #3
0
void odd(int len)
{
	len=(len-1)/2;
	int i,m,prim;
	for(i=en[len-1];i<en[len];i++)
		for(m=0;m<=9;m++)
		{
			prim=i*en[len+1]+m*en[len]+opp[i];
			isprim(prim);
		}
}
Beispiel #4
0
Datei: SK.c Projekt: fanf2/SK
static void dump(word w, int clear) {
  if(isprim(w)) {
    fprintf(stderr, "%s", primname[w.prim]);
  } else if(isnum(w)) {
    fprintf(stderr, "%g", w.ptr[1].num);
  } else {
    if(!clear) fprintf(stderr, "(");
    dump(w.ptr[0], 1);
    fprintf(stderr, " ");
    dump(w.ptr[1], 0);
    if(!clear) fprintf(stderr, ")");
  }
  if(clear > 1) fprintf(stderr, "\n");
}
Beispiel #5
0
void
plot(		/* plot meta-file */
	FILE  *infp
)
{
	PRIMITIVE  nextp;

	do {
		readp(&nextp, infp);
		while (isprim(nextp.com)) {
			doprim(&nextp);
			readp(&nextp, infp);
		}
	} while (doglobal(&nextp));

}
Beispiel #6
0
void
pmergesort(	/* merge sorted files with list */

FILE  *fi[],		/* array of input files */
int  nf,		/* number of input files */
PLIST  *pl,		/* sorted list */
int  (*pcmp)(),		/* comparison function, takes primitive handles */
FILE  *ofp		/* output file */
)
{
    PRIMITIVE  *plp;		/* position in list */
    PRIMITIVE  *pp[NFILES];	/* input primitives */
    int  minf = 0;
    PRIMITIVE  *minp;
    register int i;

    if (pl == NULL)
	plp = NULL;			/* initialize list */
    else
	plp = pl->ptop;

    for (i = 0; i < nf; i++) {		/* initialize input files */
	if ((pp[i] = palloc()) == NULL)
	    error(SYSTEM, "memory exhausted in pmergesort");
	readp(pp[i], fi[i]);
    }

    for ( ; ; ) {

	if (plp != NULL && isprim(plp->com))
	    minp = plp;
	else
	    minp = NULL;

	for (i = 0; i < nf; i++)
	    if (isprim(pp[i]->com) &&
	   		(minp == NULL || (*pcmp)(&pp[i], &minp) < 0))
		minp = pp[minf=i];

	if (minp == NULL)
	    break;

	writep(minp, ofp);

	if (minp == plp)
	    plp = plp->pnext;
	else {
	    fargs(pp[minf]);
	    readp(pp[minf], fi[minf]);
	}
    }

    if (plp != NULL && plp->com != PEOF)
	writep(plp, ofp);

    for (i = 0; i < nf; i++) {
	if (pp[i]->com != PEOF)
	    writep(pp[i], ofp);
	pfree(pp[i]);
    }

}