home *** CD-ROM | disk | FTP | other *** search
/ Amiga Elysian Archive / AmigaElysianArchive.iso / printer / post14.lzh / source / postlib.h < prev    next >
C/C++ Source or Header  |  1991-01-22  |  5KB  |  175 lines

  1. /* PostScript interpreter file "postlib.h" - library interface header (Amiga)
  2.  * (C) Adrian Aylward 1989, 1991.
  3.  *
  4.  * You may freely copy and use this file.  It was written for Lattice C
  5.  * V5.05.  N.B. all ints are 32 bits!
  6.  *
  7.  * This file defines the library interface, so that other programs can
  8.  * use the PostScript drawing machinery.  It is totally Amiga specific.
  9.  *
  10.  * N.B. the symbol STATICLINK is used for building a statically linked
  11.  * version of Post for debugging purposes.  It should not be defined for
  12.  * normal use.
  13.  */
  14.  
  15. # ifndef POSTLIB_H
  16. # define POSTLIB_H
  17.  
  18. /* The version number */
  19.  
  20. # define POSTVER "Post V1.4"
  21.  
  22. /* Default and minimum memory sizes */
  23.  
  24. # define defmemflen  60000
  25. # define defmemhlen  20000
  26. # define defmemvlen  50000
  27. # define defmemllen  10000
  28. # define minmemflen   5000
  29. # define minmemhlen   1000
  30. # define minmemvlen   5000
  31. # define minmemllen   1000
  32.  
  33. /* The device page and parameter block */
  34.  
  35. struct PSdevice
  36. {   char *buf[24];
  37.     int len;
  38.     short depth, reserved[3];
  39.     short xoff, yoff;
  40.     short xbytes, xsize, ysize, ybase, yheight;
  41.     short xden, yden, ydir;
  42. };
  43.  
  44. /* The parameter block */
  45.  
  46. struct PSparm
  47. {   struct PSdevice page;
  48.     int memvlen, memflen, memllen, memhlen;
  49.     APTR userdata, flushfunc, copyfunc;
  50.     BPTR infh, outfh, errfh;
  51.     int funcmax;
  52.     APTR *functab;
  53.     int reserved[2];
  54. };
  55.  
  56. /* Virtual machine objects */
  57.  
  58. struct PSobject
  59. {   unsigned char type, flags;
  60.     unsigned short length;
  61.     union
  62.     {    int               ival;
  63.          float             rval;
  64.          unsigned          vref;
  65.     } value;
  66. };
  67.  
  68. /* Object types and flags */
  69.  
  70. # ifndef POST_H
  71. # define typenull        0   /* null object is binary zeros */
  72. # define typemark        1   /* mark */
  73. # define typesave        2   /* save object */
  74. # define typeoper        3   /* operator */
  75. # define typefile        4   /* file */
  76. # define typeint         5   /* integer */
  77. # define typereal        6   /* real */
  78. # define typebool        7   /* boolean */
  79. # define typearray       8   /* array */
  80. # define typepacked      9   /* packedarray */
  81. # define typestring     10   /* string */
  82. # define typename       11   /* name */
  83. # define typedict       12   /* dictionary */
  84. # define typefont       13   /* fontID */
  85. # define typemax        14
  86.  
  87. # define flagexec      128   /* executable (not literal) */
  88. # define flagwprot      64   /* write protection */
  89. # define flagrprot      32   /* read protection */
  90. # define flagxprot      16   /* execute protection */
  91. # endif
  92.  
  93. /* Errors */
  94.  
  95. # ifndef POST_H
  96. # define errdictfull             1
  97. # define errdictstackoverflow    2
  98. # define errdictstackunderflow   3
  99. # define errexecstackoverflow    4
  100. # define errinterrupt            5
  101. # define errinvalidaccess        6
  102. # define errinvalidexit          7
  103. # define errinvalidfileaccess    8
  104. # define errinvalidfont          9
  105. # define errinvalidrestore      10
  106. # define errinvalidstop         11
  107. # define errioerror             12
  108. # define errlimitcheck          13
  109. # define errnocurrentpoint      14
  110. # define errrangecheck          15
  111. # define errstackoverflow       16
  112. # define errstackunderflow      17
  113. # define errsyntaxerror         18
  114. # define errtimeout             19
  115. # define errtypecheck           20
  116. # define errundefined           21
  117. # define errundefinedfilename   22
  118. # define errundefinedresult     23
  119. # define errunmatchedmark       24
  120. # define errunregistered        25
  121. # define errVMerror             26
  122. # define errmemoryallocation    27
  123. # define errmax                 27
  124. # endif
  125.  
  126. /* Flags */
  127.  
  128. # define PSFLAGSTRING  1 /* Interpret string */
  129. # define PSFLAGFILE    2 /* Interpret file */
  130. # define PSFLAGINTER   4 /* Interactive, issue propmts */
  131. # define PSFLAGCLEAR   8 /* Clear stacks afterwards */
  132. # define PSFLAGSAVE   16 /* Save and restore */
  133. # define PSFLAGERASE  32 /* Erase page afterwards */
  134.  
  135. /* Entry points */
  136.  
  137. # ifdef STATICLINK
  138. # define PScreateact(parm)          initialise(parm)
  139. # define PSdeleteact(arec)          terminate()
  140. # define PSintstring(arec, s, l, f) intstring(s, l, f)
  141. # define PSsignalint(arec, f)       signalint(f)
  142. # define PSsignalfpe(arec)          signalfpe()
  143. # define PSerror(arec, n)           error(n)
  144. # endif
  145.  
  146. /* Entry points */
  147.  
  148. extern int      PScreateact(struct PSparm *parm);
  149. extern void     PSdeleteact(int arec);
  150. extern int      PSintstring(int arec, char *string, int length, int flags);
  151. extern void     PSsignalint(int arec, int flag);
  152. extern void     PSsignalfpe(int arec);
  153. extern void     PSerror(int arec, int errnum);
  154. extern unsigned PSallocvm(int arec, int size);
  155. extern void    *PSvreftoptr(int arec, unsigned vref);
  156. extern void     PSsetdevice(int arec, struct PSdevice *page);
  157.  
  158. # ifndef STATICLINK
  159. # ifdef LATTICE
  160. # pragma libcall PSbase PScreateact  1e    901 ; d0 = (a1)
  161. # pragma libcall PSbase PSdeleteact  24    801 ;      (a0)
  162. # pragma libcall PSbase PSintstring  2A 109804 ; d0 = (a0, a1, d0, d1)
  163. # pragma libcall PSbase PSsignalint  30   0802 ;      (a0, d0)
  164. # pragma libcall PSbase PSsignalfpe  36    801 ;      (a0)
  165. # pragma libcall PSbase PSerror      3C   0802 ;      (a0, d0)
  166. # pragma libcall PSbase PSallocvm    42   0802 ; d0 = (a0, d0)
  167. # pragma libcall PSbase PSvreftoptr  48   0802 ; d0 = (a0, d0)
  168. # pragma libcall PSbase PSsetdevice  4E   9802 ;      (a0, a1)
  169. # endif
  170. # endif
  171.  
  172. # endif
  173.  
  174. /* End of file "postlib.h" */
  175.