2 |
- |
1 |
/* Copyright (C) 2000 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: gsfunc4.h,v 1.5 2002/06/16 08:45:42 lpd Exp $ */
|
|
|
18 |
/* Definitions for "PostScript Calculator" Functions */
|
|
|
19 |
|
|
|
20 |
#ifndef gsfunc4_INCLUDED
|
|
|
21 |
# define gsfunc4_INCLUDED
|
|
|
22 |
|
|
|
23 |
#include "gsfunc.h"
|
|
|
24 |
|
|
|
25 |
/* ---------------- Types and structures ---------------- */
|
|
|
26 |
|
|
|
27 |
/* Define the Function type. */
|
|
|
28 |
#define function_type_PostScript_Calculator 4
|
|
|
29 |
|
|
|
30 |
/* Define the opcodes. */
|
|
|
31 |
typedef enum {
|
|
|
32 |
|
|
|
33 |
/* Arithmetic operators */
|
|
|
34 |
|
|
|
35 |
PtCr_abs, PtCr_add, PtCr_and, PtCr_atan, PtCr_bitshift,
|
|
|
36 |
PtCr_ceiling, PtCr_cos, PtCr_cvi, PtCr_cvr, PtCr_div, PtCr_exp,
|
|
|
37 |
PtCr_floor, PtCr_idiv, PtCr_ln, PtCr_log, PtCr_mod, PtCr_mul,
|
|
|
38 |
PtCr_neg, PtCr_not, PtCr_or, PtCr_round,
|
|
|
39 |
PtCr_sin, PtCr_sqrt, PtCr_sub, PtCr_truncate, PtCr_xor,
|
|
|
40 |
|
|
|
41 |
/* Comparison operators */
|
|
|
42 |
|
|
|
43 |
PtCr_eq, PtCr_ge, PtCr_gt, PtCr_le, PtCr_lt, PtCr_ne,
|
|
|
44 |
|
|
|
45 |
/* Stack operators */
|
|
|
46 |
|
|
|
47 |
PtCr_copy, PtCr_dup, PtCr_exch, PtCr_index, PtCr_pop, PtCr_roll,
|
|
|
48 |
|
|
|
49 |
/* Constants */
|
|
|
50 |
|
|
|
51 |
PtCr_byte, PtCr_int /* native */, PtCr_float /* native */,
|
|
|
52 |
PtCr_true, PtCr_false,
|
|
|
53 |
|
|
|
54 |
/* Special operators */
|
|
|
55 |
|
|
|
56 |
PtCr_if, PtCr_else, PtCr_return
|
|
|
57 |
|
|
|
58 |
} gs_PtCr_opcode_t;
|
|
|
59 |
#define PtCr_NUM_OPS ((int)PtCr_byte)
|
|
|
60 |
#define PtCr_NUM_OPCODES ((int)PtCr_return + 1)
|
|
|
61 |
|
|
|
62 |
/* Define PostScript Calculator functions. */
|
|
|
63 |
typedef struct gs_function_PtCr_params_s {
|
|
|
64 |
gs_function_params_common;
|
|
|
65 |
gs_const_string ops; /* gs_PtCr_opcode_t[] */
|
|
|
66 |
} gs_function_PtCr_params_t;
|
|
|
67 |
|
|
|
68 |
/****** NEEDS TO INCLUDE data_source ******/
|
|
|
69 |
#define private_st_function_PtCr() /* in gsfunc4.c */\
|
|
|
70 |
gs_private_st_suffix_add_strings1(st_function_PtCr, gs_function_PtCr_t,\
|
|
|
71 |
"gs_function_PtCr_t", function_PtCr_enum_ptrs, function_PtCr_reloc_ptrs,\
|
|
|
72 |
st_function, params.ops)
|
|
|
73 |
|
|
|
74 |
/* ---------------- Procedures ---------------- */
|
|
|
75 |
|
|
|
76 |
/* Allocate and initialize a PostScript Calculator function. */
|
|
|
77 |
int gs_function_PtCr_init(gs_function_t ** ppfn,
|
|
|
78 |
const gs_function_PtCr_params_t * params,
|
|
|
79 |
gs_memory_t * mem);
|
|
|
80 |
|
|
|
81 |
/* Free the parameters of a PostScript Calculator function. */
|
|
|
82 |
void gs_function_PtCr_free_params(gs_function_PtCr_params_t * params,
|
|
|
83 |
gs_memory_t * mem);
|
|
|
84 |
|
|
|
85 |
#endif /* gsfunc4_INCLUDED */
|