2 |
- |
1 |
/* Portions Copyright (C) 2003 artofcode LLC.
|
|
|
2 |
Portions Copyright (C) 2003 Artifex Software Inc.
|
|
|
3 |
This software is based in part on the work of the Independent JPEG Group.
|
|
|
4 |
All Rights Reserved.
|
|
|
5 |
|
|
|
6 |
This software is distributed under license and may not be copied, modified
|
|
|
7 |
or distributed except as expressly authorized under the terms of that
|
|
|
8 |
license. Refer to licensing information at http://www.artifex.com/ or
|
|
|
9 |
contact Artifex Software, Inc., 101 Lucas Valley Road #110,
|
|
|
10 |
San Rafael, CA 94903, (415)492-9861, for further information. */
|
|
|
11 |
|
|
|
12 |
/*$Id: gslibctx.h,v 1.5 2004/11/03 17:46:16 giles Exp $ */
|
|
|
13 |
#ifndef GSLIBCTX_H
|
|
|
14 |
#define GSLIBCTX_H
|
|
|
15 |
|
|
|
16 |
#include "std.h"
|
|
|
17 |
#include "stdio_.h"
|
|
|
18 |
#include "gs_dll_call.h"
|
|
|
19 |
|
|
|
20 |
|
|
|
21 |
typedef struct name_table_s *name_table_ptr;
|
|
|
22 |
|
|
|
23 |
typedef struct gs_lib_ctx_s
|
|
|
24 |
{
|
|
|
25 |
gs_memory_t *memory; /* mem->gs_lib_ctx->memory == mem */
|
|
|
26 |
FILE *fstdin;
|
|
|
27 |
FILE *fstdout;
|
|
|
28 |
FILE *fstderr;
|
|
|
29 |
FILE *fstdout2; /* for redirecting %stdout and diagnostics */
|
|
|
30 |
bool stdout_is_redirected; /* to stderr or fstdout2 */
|
|
|
31 |
bool stdout_to_stderr;
|
|
|
32 |
bool stdin_is_interactive;
|
|
|
33 |
void *caller_handle; /* identifies caller of GS DLL/shared object */
|
|
|
34 |
int (GSDLLCALL *stdin_fn)(void *caller_handle, char *buf, int len);
|
|
|
35 |
int (GSDLLCALL *stdout_fn)(void *caller_handle, const char *str, int len);
|
|
|
36 |
int (GSDLLCALL *stderr_fn)(void *caller_handle, const char *str, int len);
|
|
|
37 |
int (GSDLLCALL *poll_fn)(void *caller_handle);
|
|
|
38 |
ulong gs_next_id; /* gs_id initialized here, private variable of gs_next_ids() */
|
|
|
39 |
void *top_of_system; /* use accessor functions to walk down the system
|
|
|
40 |
* to the desired structure gs_lib_ctx_get_*()
|
|
|
41 |
*/
|
|
|
42 |
name_table_ptr gs_name_table; /* hack this is the ps interpreters name table
|
|
|
43 |
* doesn't belong here
|
|
|
44 |
*/
|
|
|
45 |
/* Define whether dictionaries expand automatically when full. */
|
|
|
46 |
bool dict_auto_expand; /* ps dictionary: false level 1 true level 2 or 3 */
|
|
|
47 |
} gs_lib_ctx_t;
|
|
|
48 |
|
|
|
49 |
/** initializes and stores itself in the given gs_memory_t pointer.
|
|
|
50 |
* it is the responsibility of the gs_memory_t objects to copy
|
|
|
51 |
* the pointer to subsequent memory objects.
|
|
|
52 |
*/
|
|
|
53 |
int gs_lib_ctx_init( gs_memory_t *mem );
|
|
|
54 |
|
|
|
55 |
void *gs_lib_ctx_get_interp_instance( gs_memory_t *mem );
|
|
|
56 |
|
|
|
57 |
/* HACK to get at non garbage collection memory pointer
|
|
|
58 |
*
|
|
|
59 |
*/
|
|
|
60 |
const gs_memory_t * gs_lib_ctx_get_non_gc_memory_t(void);
|
|
|
61 |
|
|
|
62 |
#endif /* GSLIBCTX_H */
|