home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 3 / PDCD_3.iso / languages / pot / potsrc / lib / Core / h / pOtRTL < prev    next >
Text File  |  1995-01-22  |  6KB  |  162 lines

  1. #ifndef pOt__pOtRTL__INC
  2. #define pOt__pOtRTL__INC
  3. /* pOt RTL definitions file, DT Wed Jan 26 1994 */
  4.  
  5. #if defined(__STDC__) && __STDC__ && !defined(__LCC__)
  6. #  define pOt__ANSI_C 1
  7. #else
  8. #  define pOt__ANSI_C 0
  9. #endif
  10.  
  11. #if pOt__ANSI_C
  12. #  define pOt__ARGS(args) args
  13. #else
  14. #  define pOt__ARGS(args) ()
  15. #endif
  16.  
  17. #define pOt__MaxStrLen 127
  18. #define pOt__MaxExts   16
  19.  
  20. #define pOt_NIL     (void *)0 
  21. #define pOt_FALSE   0
  22. #define pOt_TRUE    1
  23.  
  24. typedef unsigned char pOt_BYTE_SYSTEM;
  25. typedef char          pOt_BOOLEAN;
  26. typedef char          pOt_CHAR;
  27. typedef char          pOt_SHORTINT;
  28. typedef short         pOt_INTEGER;
  29. typedef long          pOt_LONGINT;
  30. typedef unsigned long pOt_SET;
  31. typedef float         pOt_REAL;
  32. typedef double        pOt_LONGREAL;
  33.  
  34. /* type descriptors */
  35.  /* 0 - rec, 
  36.     1 - arr of basic type, 
  37.     2 - arr of ptr,
  38.     3 -arr of proc, 
  39.     4 - arr of str or arr */
  40. typedef struct pOt__tag_TypDsc {
  41.   pOt_INTEGER mode;
  42. } pOt__TypDsc;
  43.  
  44. /* type 0 - records */
  45. typedef struct pOt__tag_RecTypDsc {
  46.   pOt_INTEGER mode;
  47.   pOt_LONGINT size;
  48.   pOt_INTEGER extlev, nstr, nptr, npro;
  49.   struct pOt__tag_RecTypDsc *base_td[pOt__MaxExts];
  50.   struct {pOt_LONGINT poffs; pOt__TypDsc *fld_td;} tab[1];
  51. } pOt__RecTypDsc; 
  52.  
  53. /* type 1 - array of basic types (neither initialization nor GC is required) */
  54. typedef struct pOt__tag_ArrTypDsc {
  55.   pOt_INTEGER mode;
  56.   pOt_LONGINT nofel, elsize; 
  57. } pOt__ArrTypDsc;
  58.  
  59. /* type 2, 3 - initialized with zeroes, gc works if 2 */
  60. typedef struct pOt__tag_PtrArrTypDsc {
  61.   pOt_INTEGER mode;
  62.   pOt_LONGINT nofel, elsize; 
  63. } pOt__PtrArrTypDsc;
  64.  
  65. /* type 4 - records are initialized */
  66. typedef struct pOt__tag_StrArrTypDsc {
  67.   pOt_INTEGER mode;
  68.   pOt_LONGINT nofel, elsize; 
  69.   pOt__TypDsc *base_td;
  70. } pOt__StrArrTypDsc;
  71.  
  72. typedef pOt__ArrTypDsc *pOt__DynArr;
  73.  
  74. /* byte array */
  75. typedef struct pOt__tag_BytArr {
  76.   pOt_LONGINT len;
  77.   pOt_BYTE_SYSTEM *data;
  78. } pOt__BytArr;
  79.  
  80. typedef pOt_CHAR *pOt_String;
  81.  
  82. extern int pOt__gc_enabled;
  83. extern struct pOt__tag_gc_node *pOt__gc_root;
  84. extern char *pOt__parfilename;
  85.  
  86. void pOt__init_var pOt__ARGS((pOt__TypDsc **rec, pOt__TypDsc *td));
  87.     
  88. /* halt & trap */
  89. void pOt__halt pOt__ARGS((char *filename, unsigned long line, pOt_SHORTINT trapnum));
  90.  
  91. /* checks */
  92. pOt_LONGINT pOt__inxchk pOt__ARGS((char *filename, unsigned long line, pOt_LONGINT len, pOt_LONGINT li));
  93. void *pOt__nilchk pOt__ARGS((char *filename, unsigned long line, void *ptr));
  94. pOt_REAL     pOt__rngchk_r pOt__ARGS((char *filename, unsigned long line, pOt_LONGREAL lr));
  95. pOt_LONGINT  pOt__rngchk_li pOt__ARGS((char *filename, unsigned long line, pOt_LONGREAL lr));
  96. pOt_INTEGER  pOt__rngchk_i pOt__ARGS((char *filename, unsigned long line, pOt_LONGINT li));
  97. pOt_SHORTINT pOt__rngchk_si pOt__ARGS((char *filename, unsigned long line, pOt_INTEGER i));
  98. pOt_SHORTINT pOt__rngchk_se pOt__ARGS((char *filename, unsigned long line, pOt_LONGINT i));
  99. unsigned char pOt__rngchk_cn pOt__ARGS((char *filename, unsigned long line, pOt_LONGINT li));
  100. pOt__RecTypDsc **pOt__typchk pOt__ARGS((char *filename, unsigned long line, pOt__RecTypDsc**rec, pOt__RecTypDsc *td, pOt_LONGINT extlev));
  101.  
  102. /* operations */
  103. pOt_LONGINT pOt__addchk pOt__ARGS((char *filename, unsigned long line, pOt_LONGINT x, pOt_LONGINT y, pOt_SHORTINT typ));
  104. pOt_LONGINT pOt__subchk pOt__ARGS((char *filename, unsigned long line, pOt_LONGINT x, pOt_LONGINT y, pOt_SHORTINT typ));
  105. pOt_LONGINT pOt__mulchk pOt__ARGS((char *filename, unsigned long line, pOt_LONGINT x, pOt_LONGINT y, pOt_SHORTINT typ));
  106. pOt_LONGINT pOt__div pOt__ARGS((pOt_LONGINT x, pOt_LONGINT y));
  107. pOt_LONGINT pOt__divchk pOt__ARGS((char *filename, unsigned long line, pOt_LONGINT x, pOt_LONGINT y, pOt_SHORTINT typ));
  108. pOt_LONGINT pOt__mod pOt__ARGS((pOt_LONGINT x, pOt_LONGINT y));
  109. pOt_LONGINT pOt__modchk pOt__ARGS((char *filename, unsigned long line, pOt_LONGINT x, pOt_LONGINT y, pOt_SHORTINT typ));
  110.  
  111. pOt_BOOLEAN pOt__typtest pOt__ARGS((pOt__RecTypDsc **rec, pOt__RecTypDsc *td, pOt_LONGINT extlev));
  112.  
  113. /* strings relations */
  114. pOt_BOOLEAN pOt__cmpss pOt__ARGS((pOt_CHAR*,pOt_CHAR*,pOt_INTEGER op));
  115. pOt_BOOLEAN pOt__cmpsc pOt__ARGS((pOt_CHAR*,pOt_CHAR,pOt_INTEGER op));
  116. pOt_BOOLEAN pOt__cmpcs pOt__ARGS((pOt_CHAR,pOt_CHAR*,pOt_INTEGER op));
  117.  
  118. /* built-in functions */
  119. void pOt__new pOt__ARGS((char *filename, unsigned long line, pOt__TypDsc ***pp, pOt__TypDsc *td)); /* calls init_var */
  120.  
  121. pOt_LONGINT pOt__abs pOt__ARGS((pOt_LONGINT x));
  122. pOt_LONGREAL pOt__fabs pOt__ARGS((pOt_LONGREAL x));
  123.  
  124. pOt_CHAR pOt__cap pOt__ARGS((pOt_CHAR c));
  125. pOt_LONGINT pOt__entier pOt__ARGS((pOt_LONGREAL lr));
  126.  
  127. pOt_LONGINT pOt__ash pOt__ARGS((pOt_LONGINT x, pOt_LONGINT n));
  128. pOt_LONGINT pOt__lsh pOt__ARGS((pOt_LONGINT x, pOt_LONGINT n));
  129. pOt_LONGINT pOt__rot pOt__ARGS((pOt_LONGINT x, pOt_SHORTINT l, pOt_LONGINT n));
  130.  
  131. void pOt__copy pOt__ARGS((pOt_CHAR *src, pOt_CHAR *dst));
  132. void pOt__copychk pOt__ARGS((char *filename, unsigned long line, pOt_CHAR *src, pOt_CHAR *dst));
  133.  
  134. void pOt__get pOt__ARGS((pOt_BYTE_SYSTEM *src, pOt_BYTE_SYSTEM *dst,pOt_LONGINT size));
  135. void pOt__put pOt__ARGS((pOt_BYTE_SYSTEM *dst, pOt_BYTE_SYSTEM *src, pOt_LONGINT size));
  136. void pOt__move pOt__ARGS((pOt_BYTE_SYSTEM *src, pOt_BYTE_SYSTEM *dst, pOt_LONGINT size));
  137. void *pOt__alloc pOt__ARGS((char *filename, unsigned long line, pOt_LONGINT size));
  138.  
  139. /* strings constants */
  140. extern pOt__ArrTypDsc pOt__str_td[pOt__MaxStrLen+1];
  141. pOt__ArrTypDsc **pOt__set_str_td pOt__ARGS((pOt_CHAR *, pOt__ArrTypDsc *));
  142.  
  143. /* passing as parameters */
  144. pOt__BytArr pOt__make_byte_arr pOt__ARGS((void*,pOt_INTEGER,pOt_LONGINT));
  145. pOt__BytArr pOt__dup_byte_arr pOt__ARGS((char *filename, unsigned long line, void*,pOt_INTEGER));
  146. void pOt__rm_byte_arr pOt__ARGS((pOt__BytArr));
  147.  
  148. pOt__ArrTypDsc **pOt__dup_arr pOt__ARGS((char *filename, unsigned long line, pOt__ArrTypDsc**));
  149. pOt__RecTypDsc **pOt__dup_rec pOt__ARGS((char *filename, unsigned long line, pOt__RecTypDsc**,pOt__RecTypDsc*));
  150. void pOt__rm_par pOt__ARGS((pOt__TypDsc**));
  151.  
  152. /* assignment */
  153. void pOt__arr_assign pOt__ARGS((pOt__ArrTypDsc**,pOt__ArrTypDsc**));
  154. void pOt__rec_assign pOt__ARGS((pOt__RecTypDsc**,pOt__RecTypDsc**));
  155. void pOt__varrec_assign pOt__ARGS((char*filename,unsigned long line,pOt__RecTypDsc**,pOt__RecTypDsc**));
  156.  
  157. /* system dependant keywords */
  158. #define pOt__interrupt
  159.  
  160. /* the end */
  161. #endif
  162.