Subversion Repositories planix.SVN

Rev

Rev 2 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
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 */