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
-
- #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 N_KEYS (sizeof keys / sizeof keys[0])
- #define N_CMDS (sizeof lookup / sizeof lookup[0])
-
- /* Common used struct for command parsing */
- static struct lookup_s {
- char *cmd;
- int (*func)();
- };
-
- static struct keys_s {
- char *key;
- char *code;
- };
-
- struct stmt {
- struct stmt *next;
- int line;
- char txt[1];
- };
-
- struct link {
- struct link *next;
- int type;
- char *name;
- };
-
- struct literal {
- struct link link;
- struct xy pos;
- int display_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;
- struct stmt *stmt;
- };
-
- struct field {
- struct link link;
- struct xy pos;
- struct event *event;
- char *lvalue;
- char *rvalue;
- char *type;
- int len;
- int flags;
- };
-
- struct picture {
- struct link link;
- struct viewport *viewport;
- struct field *field;
- struct literal *literal;
- struct event *event;
- };
-
- 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 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 void link(struct link **head, struct link *item, int type);
- extern void link_name(struct link *item, char *name);
- extern struct link *find_name(struct link *first, char *name);
-
- extern int GetPos(int *x, int *y);
- extern struct list list;
- extern char version[];
-
- #endif _/* COMP_H */
-
-