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