xref: /plan9/sys/src/cmd/gs/src/opextern.h (revision 593dc095aefb2a85c828727bbfa9da139a49bdf4)
1 /* Copyright (C) 1995, 1996, 1999 Aladdin Enterprises.  All rights reserved.
2 
3   This software is provided AS-IS with no warranty, either express or
4   implied.
5 
6   This software is distributed under license and may not be copied,
7   modified or distributed except as expressly authorized under the terms
8   of the license contained in the file LICENSE in this distribution.
9 
10   For more information about licensing, please refer to
11   http://www.ghostscript.com/licensing/. For information on
12   commercial licensing, go to http://www.artifex.com/licensing/ or
13   contact Artifex Software, Inc., 101 Lucas Valley Road #110,
14   San Rafael, CA  94903, U.S.A., +1(415)492-9861.
15 */
16 
17 /* $Id: opextern.h,v 1.6 2002/06/16 04:47:10 lpd Exp $ */
18 /* Externally accessible operator declarations */
19 
20 #ifndef opextern_INCLUDED
21 #  define opextern_INCLUDED
22 
23 /*
24  * Normally, the procedures that implement PostScript operators (named zX
25  * where X is the name of the operator, e.g., zadd) are private to the
26  * file in which they are defined.  There are, however, a surprising
27  * number of these procedures that are used from other files.
28  * This file, opextern.h, declares all z* procedures that are
29  *      - referenced from outside their defining file, and
30  *      - present in *all* configurations of the interpreter.
31  * For z* procedures referenced from outside their file but not present
32  * in all configurations (e.g., Level 2 operators), the file making the
33  * reference must include a local extern.  Not pretty, but c'est la vie.
34  */
35 
36 /* Operators exported for the special operator encoding in interp.c. */
37 int zadd(i_ctx_t *);
38 int zdef(i_ctx_t *);
39 int zdup(i_ctx_t *);
40 int zexch(i_ctx_t *);
41 int zif(i_ctx_t *);
42 int zifelse(i_ctx_t *);
43 int zindex(i_ctx_t *);
44 int zpop(i_ctx_t *);
45 int zroll(i_ctx_t *);
46 int zsub(i_ctx_t *);
47 /* Internal entry points for the interpreter. */
48 int zop_add(ref *);
49 int zop_def(i_ctx_t *);
50 int zop_sub(ref *);
51 
52 /* Operators exported for server loop implementations. */
53 int zflush(i_ctx_t *);
54 int zflushpage(i_ctx_t *);
55 int zsave(i_ctx_t *);
56 int zrestore(i_ctx_t *);
57 
58 /* Operators exported for save/restore. */
59 int zgsave(i_ctx_t *);
60 int zgrestore(i_ctx_t *);
61 
62 /* Operators exported for Level 2 pagedevice facilities. */
63 int zcopy_gstate(i_ctx_t *);
64 int zcurrentgstate(i_ctx_t *);
65 int zgrestoreall(i_ctx_t *);
66 int zgstate(i_ctx_t *);
67 int zreadonly(i_ctx_t *);
68 int zsetdevice(i_ctx_t *);
69 int zsetgstate(i_ctx_t *);
70 
71 /* Operators exported for Level 2 "wrappers". */
72 int zcopy(i_ctx_t *);
73 int zimage(i_ctx_t *);
74 int zimagemask(i_ctx_t *);
75 int zwhere(i_ctx_t *);
76 
77 /* Operators exported for specific-VM operators. */
78 int zarray(i_ctx_t *);
79 int zdict(i_ctx_t *);
80 int zpackedarray(i_ctx_t *);
81 int zstring(i_ctx_t *);
82 
83 /* Operators exported for user path decoding. */
84 /* Note that only operators defined in all configurations are declared here. */
85 int zclosepath(i_ctx_t *);
86 int zcurveto(i_ctx_t *);
87 int zlineto(i_ctx_t *);
88 int zmoveto(i_ctx_t *);
89 int zrcurveto(i_ctx_t *);
90 int zrlineto(i_ctx_t *);
91 int zrmoveto(i_ctx_t *);
92 
93 /* Operators exported for the FunctionType 4 interpreter. */
94 /* zarith.c: */
95 int zabs(i_ctx_t *);
96 int zceiling(i_ctx_t *);
97 int zdiv(i_ctx_t *);
98 int zfloor(i_ctx_t *);
99 int zidiv(i_ctx_t *);
100 int zmod(i_ctx_t *);
101 int zmul(i_ctx_t *);
102 int zneg(i_ctx_t *);
103 int zround(i_ctx_t *);
104 int ztruncate(i_ctx_t *);
105 /* zmath.c: */
106 int zatan(i_ctx_t *);
107 int zcos(i_ctx_t *);
108 int zexp(i_ctx_t *);
109 int zln(i_ctx_t *);
110 int zlog(i_ctx_t *);
111 int zsin(i_ctx_t *);
112 int zsqrt(i_ctx_t *);
113 /* zrelbit.c: */
114 int zand(i_ctx_t *);
115 int zbitshift(i_ctx_t *);
116 int zeq(i_ctx_t *);
117 int zge(i_ctx_t *);
118 int zgt(i_ctx_t *);
119 int zle(i_ctx_t *);
120 int zlt(i_ctx_t *);
121 int zne(i_ctx_t *);
122 int znot(i_ctx_t *);
123 int zor(i_ctx_t *);
124 int zxor(i_ctx_t *);
125 /* ztype.c: */
126 int zcvi(i_ctx_t *);
127 int zcvr(i_ctx_t *);
128 
129 /* Operators exported for CIE cache loading. */
130 int zcvx(i_ctx_t *);
131 int zexec(i_ctx_t *);		/* also for .runexec */
132 int zfor(i_ctx_t *);
133 
134 /* Odds and ends */
135 int zbegin(i_ctx_t *);
136 int zcleartomark(i_ctx_t *);
137 int zclosefile(i_ctx_t *);	/* for runexec_cleanup */
138 int zcopy_dict(i_ctx_t *);	/* for zcopy */
139 int zend(i_ctx_t *);
140 int zfor_samples(i_ctx_t *); /* for function sampling */
141 int zsetfont(i_ctx_t *);	/* for cshow_continue */
142 
143 /* Operators exported for special customer needs. */
144 int zcurrentdevice(i_ctx_t *);
145 int ztoken(i_ctx_t *);
146 int ztokenexec(i_ctx_t *);
147 int zwrite(i_ctx_t *);
148 
149 #endif /* opextern_INCLUDED */
150