home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / unix / volume26 / cforms / part01 / src / comp.h < prev    next >
Encoding:
C/C++ Source or Header  |  1992-05-18  |  3.2 KB  |  140 lines

  1. /*******************************************************************************
  2.  *
  3.  *        C O M P . H
  4.  *        -----------
  5.  *
  6.  * Description:
  7.  *    Headerfile for compiler.
  8.  *
  9.  * Revision:
  10.  *    Ver    Date    By        Reason
  11.  *    ---    ----    --        ------
  12.  *    1.00    900619    Lars Berntzon    Created
  13.  *
  14.  ******************************************************************************/
  15. #ifndef _COMP_H
  16. #define _COMP_H
  17.  
  18. #include "cforms.h"
  19.  
  20. #define offsetof(type, item) (((int) &( ((type *)2)->item )) - 2)
  21.  
  22. #define NEXT_VIEWPORT(ptr) ((struct viewport *)ptr->link.next)
  23. #define NEXT_PICTURE(ptr)  ((struct picture *)ptr->link.next)
  24. #define NEXT_FIELD(ptr)    ((struct field *)ptr->link.next)
  25. #define NEXT_EVENT(ptr)    ((struct event *)ptr->link.next)
  26. #define NEXT_LITERAL(ptr)  ((struct literal *)ptr->link.next)
  27. #define NEXT_CCODE(ptr)    ((struct ccode *)ptr->link.next)
  28.  
  29. #define TYPE_VIEWPORT    1
  30. #define TYPE_PICTURE    2
  31. #define TYPE_FIELD    3
  32. #define TYPE_EVENT    4
  33. #define TYPE_LITERAL    5
  34. #define TYPE_CCODE    6
  35.  
  36. #define memalloc(size)    _memalloc(__FILE__, __LINE__, (size))
  37.  
  38. #define N_KEYS    (sizeof keys / sizeof keys[0])
  39. #define N_CMDS    (sizeof lookup / sizeof lookup[0])
  40.  
  41. /* Common used struct for command parsing */
  42. static struct lookup_s {
  43.     char *cmd;
  44.     int (*func)();
  45. };
  46.  
  47. static struct keys_s {
  48.     char *key;
  49.     char *code;
  50. };
  51.  
  52. struct stmt {
  53.     struct stmt *next;
  54.     int line;
  55.     char txt[1];
  56. };
  57.  
  58. struct link {
  59.     struct link *next;
  60.     int type;
  61.     char *name;
  62. };
  63.  
  64. struct literal {
  65.     struct link link;
  66.     struct xy pos;
  67.     int display_flags;
  68. };
  69.  
  70. struct viewport {
  71.     struct link link;
  72.     struct xy pos;
  73.     struct xy size;
  74. };
  75.  
  76. struct ccode {
  77.     struct link link;
  78.     struct stmt *stmt;
  79. };
  80.  
  81. struct event {
  82.     struct link link;
  83.     char *type;
  84.     char *code;
  85.     struct stmt *stmt;
  86. };
  87.  
  88. struct field {
  89.     struct link link;
  90.     struct xy pos;
  91.     struct event *event;
  92.     char *lvalue;
  93.     char *rvalue;
  94.     char *type;
  95.     int len;
  96.     int flags;
  97. };
  98.  
  99. struct picture {
  100.     struct link link;
  101.     struct viewport *viewport;
  102.     struct field *field;
  103.     struct literal *literal;
  104.     struct event *event;
  105. };
  106.  
  107. struct list {
  108.     struct viewport *viewport;
  109.     struct picture *picture;
  110.     struct event *event;
  111.     struct ccode *ccode;
  112. };
  113.  
  114. extern int strequ(char *s1, char *s2);    /* Case insensitive strcmp    */
  115. extern void fatal(char *str);        /* Give message and abort    */
  116. extern void usage(void);        /* Give usage message and abort    */
  117. extern void error(char *);        /* Give error message + lineno    */
  118.  
  119.     /* malloc with memory check    */
  120. extern void *_memalloc(char *file, int line, int size);
  121.  
  122. extern struct picture  *get_picture(), *unget_picture();
  123. extern struct event    *get_event(), *unget_event();
  124. extern struct viewport *get_viewport(), *unget_viewport();
  125. extern struct field    *get_field(), *unget_field();
  126. extern struct stmt     *get_stmt();
  127. void   unget_stmt();
  128. extern struct literal  *get_literal(), *unget_literal();
  129. extern struct ccode    *get_ccode(), *unget_ccode();
  130. extern void            link(struct link **head, struct link *item, int type);
  131. extern void            link_name(struct link *item, char *name);
  132. extern struct link    *find_name(struct link *first, char *name);
  133.  
  134. extern int GetPos(int *x, int *y);
  135. extern struct list list;
  136. extern char version[];
  137.  
  138. #endif _/* COMP_H */
  139.  
  140.