Files
SAPFOR/dvm/fdvm/trunk/Sage/h/elist.h
2023-09-14 19:43:13 +03:00

80 lines
2.1 KiB
C

/*********************************************************************/
/* pC++/Sage++ Copyright (C) 1993 */
/* Indiana University University of Oregon University of Rennes */
/*********************************************************************/
struct ELIST_rec
{
int type; /* 0 for int, 1 for string, 2 for ELIST */
char * car;
struct ELIST_rec * cdr;
};
#define TEINT 0
#define TESTRING 1
#define TELIST 2
typedef struct ELIST_rec * ELIST;
/*
the following two defines are pretty bad. But have been done so as to
avoid globals which look like global variables. For these to go away
libdb.a has to change.
*/
#define currentFile cur_file
#define currentProject cur_proj
extern PTR_FILE currentFile; /* actually cur_file */
extern PTR_PROJ currentProject; /* actually cur_proj */
#ifndef TRUE
# define TRUE 1
#endif
#ifndef FALSE
# define FALSE 0
#endif
/* functions that are used within the cbaselib */
ELIST ENew( /* etype */ );
void EFree( /* e */ );
ELIST ECopy( /* e */ );
ELIST ECpCar( /* e */ );
ELIST ECpCdr( /* e */ );
ELIST EAppend( /* e1, e2 */ );
ELIST EString( /* s */ );
ELIST ENumber( /* n */ );
ELIST ECons( /* e1, e2 */ );
int ENumP(/*e*/);
int EStringP(/*e*/);
int EListP(/*e*/);
#define ECar(x) ((x)->car)
#define ECdr(x) ((x)->cdr)
#define ECaar(x) (ECar((ELIST)ECar(x)))
#define ECdar(x) (ECdr((ELIST)ECar(x)))
#define ECadr(x) (ECar(ECdr(x)))
#define ECddr(x) (ECdr(ECdr(x)))
#define ECaaar(x) (ECar((ELIST)ECaar(x)))
#define ECdaar(x) (ECdr((ELIST)ECaar(x)))
#define ECadar(x) (ECar(ECdar(x)))
#define ECaadr(x) (ECar((ELIST)ECadr(x)))
#define ECaddr(x) (ECar(ECddr(x)))
#define ECddar(x) (ECdr(ECdar(x)))
#define ECdadr(x) (ECdr((ELIST)ECadr(x)))
#define ECdddr(x) (ECdr(ECddr(x)))
char *Allocate(/* size */);
PTR_BFND FindCurrBifNode( /* id */ );
PTR_LLND FindLLNode( /* id */ );
PTR_LABEL FindLabNode(/* id */);
PTR_SYMB FindSymbolNode(/* id */);
PTR_TYPE FindTypeNode(/* id */);
PTR_FILE FindFileObj(/* filename */);
PTR_DEP FindDepNode(/* id */);
PTR_BFND MakeDeclStmt(/* s */);
int VarId(/* id */);