[BACK]Return to function.c CVS log [TXT][DIR] Up to [local] / OpenXM_contrib2 / asir2000 / parse

File: [local] / OpenXM_contrib2 / asir2000 / parse / function.c (download)

Revision 1.1, Fri Dec 3 07:39:12 1999 UTC (24 years, 5 months ago) by noro
Branch: MAIN

Initial revision

/* $OpenXM: OpenXM_contrib2/asir2000/parse/function.c,v 1.1 1999/12/03 07:39:12 noro Exp $ */
#include "ca.h"
#include "parse.h"

void appendbinf(flistp,name,func,argc)
NODE *flistp;
char *name;
void (*func)();
int argc;
{
	FUNC t;
	NODE n;

	t = (FUNC)MALLOC(sizeof(struct oFUNC)); 
	t->name = name; t->id = A_BIN; t->argc = argc; t->f.binf = func;
	MKNODE(n,t,*flistp); *flistp = n;
}

void appendparif(flistp,name,func,type)
NODE *flistp;
char *name;
int (*func)();
int type;
{
	FUNC t;
	NODE n;

	t = (FUNC)MALLOC(sizeof(struct oFUNC)); 
	t->name = name; t->id = A_PARI; t->type = type; t->f.binf = (void (*)())func;
	MKNODE(n,t,*flistp); *flistp = n;
}

void appendsysf(name,func,argc)
char *name;
void (*func)();
int argc;
{
	appendbinf(&sysf,name,func,argc);
}

void appendubinf(name,func,argc)
char *name;
void (*func)();
int argc;
{
	appendbinf(&ubinf,name,func,argc);
}

void dcptolist(dc,listp)
DCP dc;
LIST *listp;
{
	NODE node,tnode,ln0,ln1;
	LIST l;

	for ( node = 0; dc; dc = NEXT(dc) ) {
		NEXTNODE(node,tnode);
		MKNODE(ln1,DEG(dc),0); MKNODE(ln0,COEF(dc),ln1);
		MKLIST(l,ln0); BDY(tnode) = (pointer)l;
	}
	NEXT(tnode) = 0; MKLIST(l,node); *listp = l;
}