home *** CD-ROM | disk | FTP | other *** search
/ APDL Public Domain 1 / APDL_PD1A.iso / program / assembler / as / src / h / value < prev    next >
Encoding:
Text File  |  1993-03-06  |  1.4 KB  |  71 lines

  1.  
  2. /*
  3.  * value.h
  4.  * Copyright © 1992 Niklas Röjemo
  5.  */
  6.  
  7. #ifndef _value_h
  8. #define _value_h
  9.  
  10. #ifndef _global_h
  11. #include "global.h"
  12. #endif
  13.  
  14. typedef struct SYMBOL;  /* Cannot include symbol.h as it needs value.h */
  15.  
  16. typedef union  CODE;
  17.  
  18. typedef struct LATEINFO {
  19.    struct LATEINFO *next;
  20.    int             factor;
  21.    struct SYMBOL  *symbol;
  22. } LateInfo;
  23.  
  24. typedef enum {
  25.   ValueIllegal   =  0,
  26.   ValueInt       =  1,
  27.   ValueFloat     =  2,
  28.   ValueString    =  4,
  29.   ValueBool      =  8,
  30.   ValueCode      = 16,
  31.   ValueLateLabel = 32
  32. } ValueTag;
  33.  
  34. #define ValueAll (ValueInt|ValueFloat|ValueString|ValueBool|ValueCode|ValueLateLabel)
  35.  
  36. typedef union {
  37.   ValueTag Tag;
  38.   struct {             /* ValueInt */
  39.     ValueTag Tag;
  40.     int i;
  41.   } ValueInt;
  42.   struct {             /* ValueFloat */
  43.     ValueTag Tag;
  44.     FLOAT f;
  45.   } ValueFloat;
  46.   struct {             /* ValueString */
  47.     ValueTag Tag;
  48.     int  len;
  49.     char *s;
  50.   } ValueString;
  51.   struct {             /* ValueBool */
  52.     ValueTag Tag;
  53.     BOOL b;
  54.   } ValueBool;
  55.   struct {             /* ValueCode */
  56.     ValueTag Tag;
  57.     int len;
  58.     union CODE *c;
  59.   } ValueCode;
  60.   struct {             /* ValueLateLabel */
  61.     ValueTag Tag;      /* Must start identical with ValueInt */
  62.     int i;
  63.     struct LATEINFO *late;
  64.   } ValueLate;
  65. } Value;
  66.  
  67. Value valueLateToCode(int offset,LateInfo *late);
  68. Value valueCopy(Value value);
  69. int valueEqual(Value *a, Value *b);
  70. #endif
  71.