home *** CD-ROM | disk | FTP | other *** search
- /*******************************************************************************
- *
- * C O M P . H
- * -----------
- *
- * Description:
- * Headerfile for compiler.
- *
- * Revision:
- * Ver Date By Reason
- * --- ---- -- ------
- * 1.00 900619 Lars Berntzon Created
- *
- ******************************************************************************/
- #ifndef _COMP_H
- #define _COMP_H
- #ifndef lint
- static volatile char sccs_comp_h[] = "@(#) comp.h,v 1.12 1993/07/20 23:58:12 lasse Exp";
- #endif
-
- #include "cforms.h"
-
- #define offsetof(type, item) (((int) &( ((type *)2)->item )) - 2)
-
- #define NEXT_VIEWPORT(ptr) ((struct viewport *)ptr->link.next)
- #define NEXT_PICTURE(ptr) ((struct picture *)ptr->link.next)
- #define NEXT_FIELD(ptr) ((struct field *)ptr->link.next)
- #define NEXT_EVENT(ptr) ((struct event *)ptr->link.next)
- #define NEXT_LITERAL(ptr) ((struct literal *)ptr->link.next)
- #define NEXT_CCODE(ptr) ((struct ccode *)ptr->link.next)
-
- #define TYPE_VIEWPORT 1
- #define TYPE_PICTURE 2
- #define TYPE_FIELD 3
- #define TYPE_EVENT 4
- #define TYPE_LITERAL 5
- #define TYPE_CCODE 6
-
- #define memalloc(size) _memalloc(__FILE__, __LINE__, (size))
- #define strduplicate(str) _strduplicate(__FILE__, __LINE__, (str))
- #define reallocmem(ptr, size) _reallocmem(__FILE__, __LINE__, (ptr), (size))
-
- #define N_KEYS (sizeof keys / sizeof keys[0])
- #define N_CMDS (sizeof lookup / sizeof lookup[0])
-
- #define CF_CENTER 2000
- #define CF_MIDDLE 3000
- #define CF_MAX 4000
-
- #define ISCENTER(pos) (((pos) > CF_CENTER / 2) && ((pos) < CF_MIDDLE))
- #define ISMAX(pos) (((pos) > CF_MIDDLE) && ((pos) <= CF_MAX))
-
- #define MAXPOS 128 /* Maximum number of chars in one statement block
- */
-
- /* Common used struct for command parsing */
- struct lookup_s {
- char *cmd;
- int (*func)();
- };
-
- struct keys_s {
- char *key;
- char *code;
- };
-
- struct stmt {
- struct stmt *next; /* Next statement block in list */
- int pos; /* Current storage position */
- int line; /* Line number to this statement */
- char txt[MAXPOS]; /* Actual text */
- };
-
- struct link {
- struct link *next;
- int type;
- char *name;
- };
-
- struct literal {
- struct link link;
- struct xy pos;
- unsigned long flags;
- };
-
- struct viewport {
- struct link link;
- struct xy pos;
- struct xy size;
- };
-
- struct ccode {
- struct link link;
- struct stmt *stmt;
- };
-
- struct event {
- struct link link;
- char *type;
- char *code;
- int global;
- struct stmt *stmt;
- };
-
- struct field {
- struct link link;
- struct xy pos;
- struct event *event;
- char *lvalue;
- char *rvalue;
- char *type;
- char *value;
- int len;
- unsigned long flags;
- };
-
- struct picture {
- struct link link;
- struct viewport *viewport;
- struct field *field;
- struct literal *literal;
- struct event *event;
- unsigned long flags;
- };
-
- struct list {
- struct viewport *viewport;
- struct picture *picture;
- struct event *event;
- struct ccode *ccode;
- };
-
- extern int strequ(char *s1, char *s2); /* Case insensitive strcmp */
- extern void fatal(char *str); /* Give message and abort */
- extern void usage(void); /* Give usage message and abort */
- extern void error(char *); /* Give error message + lineno */
-
- /* malloc with memory check */
- extern void *_memalloc(char *file, int line, int size);
- extern char *_strduplicate(char *file, int line, const char *str);
- extern void *_reallocmem(char *file, int line, void *ptr, int size);
-
- extern struct picture *get_picture(), *unget_picture();
- extern struct event *get_event(), *unget_event();
- extern struct viewport *get_viewport(), *unget_viewport();
- extern struct field *get_field(), *unget_field();
- extern struct stmt *get_stmt();
- void unget_stmt();
- extern struct literal *get_literal(), *unget_literal();
- extern struct ccode *get_ccode(), *unget_ccode();
- extern struct link *find_name(struct link *first, char *name);
- extern void output(void);
- extern int GetPos(int *x, int *y);
- extern int skip_stmt(void);
- extern char *strip_quotes(char *str);
- extern char *strtoupper(char *str);
- extern void stmt_write(struct stmt *stmt, FILE *fp);
- void stmt_add(struct stmt **stmt, char *str, char *space);
- void debug(char *fmt, ...);
-
- #ifdef SIGNAL_INT
- extern int cleanup(int sig);
- #else
- extern void cleanup(int sig);
- #endif
-
- extern struct list list; /* The list of everything */
- extern char *filename; /* Name of input file */
-
- #endif _/* COMP_H */
-
-