80 lines
2.1 KiB
C
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 */);
|