xref: /plan9-contrib/sys/src/cmd/gs/src/iminst.h (revision 593dc095aefb2a85c828727bbfa9da139a49bdf4)
13ff48bf5SDavid du Colombier /* Copyright (C) 1995, 1996, 1997, 1998, 1999, 2001 Aladdin Enterprises.  All rights reserved.
27dd7cddfSDavid du Colombier 
3*593dc095SDavid du Colombier   This software is provided AS-IS with no warranty, either express or
4*593dc095SDavid du Colombier   implied.
57dd7cddfSDavid du Colombier 
6*593dc095SDavid du Colombier   This software is distributed under license and may not be copied,
7*593dc095SDavid du Colombier   modified or distributed except as expressly authorized under the terms
8*593dc095SDavid du Colombier   of the license contained in the file LICENSE in this distribution.
97dd7cddfSDavid du Colombier 
10*593dc095SDavid du Colombier   For more information about licensing, please refer to
11*593dc095SDavid du Colombier   http://www.ghostscript.com/licensing/. For information on
12*593dc095SDavid du Colombier   commercial licensing, go to http://www.artifex.com/licensing/ or
13*593dc095SDavid du Colombier   contact Artifex Software, Inc., 101 Lucas Valley Road #110,
14*593dc095SDavid du Colombier   San Rafael, CA  94903, U.S.A., +1(415)492-9861.
157dd7cddfSDavid du Colombier */
167dd7cddfSDavid du Colombier 
17*593dc095SDavid du Colombier /* $Id: iminst.h,v 1.8 2004/08/04 19:36:13 stefan Exp $ */
187dd7cddfSDavid du Colombier /* Definition of interpreter instance */
193ff48bf5SDavid du Colombier /* Requires stdio_.h, gsmemory.h, iref.h, iapi.h */
207dd7cddfSDavid du Colombier 
217dd7cddfSDavid du Colombier #ifndef iminst_INCLUDED
227dd7cddfSDavid du Colombier #  define iminst_INCLUDED
237dd7cddfSDavid du Colombier 
247dd7cddfSDavid du Colombier #ifndef gs_main_instance_DEFINED
257dd7cddfSDavid du Colombier #  define gs_main_instance_DEFINED
267dd7cddfSDavid du Colombier typedef struct gs_main_instance_s gs_main_instance;
277dd7cddfSDavid du Colombier #endif
287dd7cddfSDavid du Colombier 
297dd7cddfSDavid du Colombier /*
307dd7cddfSDavid du Colombier  * Define the structure of a search path.  Currently there is only one,
317dd7cddfSDavid du Colombier  * but there might be more someday.
327dd7cddfSDavid du Colombier  *
337dd7cddfSDavid du Colombier  *      container - an array large enough to hold the specified maximum
347dd7cddfSDavid du Colombier  * number of directories.  Both the array and all the strings in it are
357dd7cddfSDavid du Colombier  * in the 'foreign' VM space.
367dd7cddfSDavid du Colombier  *      list - the initial interval of container that defines the actual
377dd7cddfSDavid du Colombier  * search list.
387dd7cddfSDavid du Colombier  *      env - the contents of an environment variable, implicitly added
397dd7cddfSDavid du Colombier  * at the end of the list; may be 0.
407dd7cddfSDavid du Colombier  *      final - the final set of directories specified in the makefile;
417dd7cddfSDavid du Colombier  * may be 0.
427dd7cddfSDavid du Colombier  *      count - the number of elements in the list, excluding a possible
437dd7cddfSDavid du Colombier  * initial '.', env, and final.
447dd7cddfSDavid du Colombier  */
457dd7cddfSDavid du Colombier typedef struct gs_file_path_s {
467dd7cddfSDavid du Colombier     ref container;
477dd7cddfSDavid du Colombier     ref list;
487dd7cddfSDavid du Colombier     const char *env;
497dd7cddfSDavid du Colombier     const char *final;
507dd7cddfSDavid du Colombier     uint count;
517dd7cddfSDavid du Colombier } gs_file_path;
527dd7cddfSDavid du Colombier 
533ff48bf5SDavid du Colombier /* buffer sizes for stdio */
543ff48bf5SDavid du Colombier #define STDIN_BUF_SIZE 128
553ff48bf5SDavid du Colombier #define STDOUT_BUF_SIZE 128
563ff48bf5SDavid du Colombier #define STDERR_BUF_SIZE 128
573ff48bf5SDavid du Colombier 
587dd7cddfSDavid du Colombier /*
597dd7cddfSDavid du Colombier  * Here is where we actually define the structure of interpreter instances.
607dd7cddfSDavid du Colombier  * Clients should not reference any of the members.  Note that in order to
617dd7cddfSDavid du Colombier  * be able to initialize this structure statically, members including
627dd7cddfSDavid du Colombier  * unions must come last (and be initialized to 0 by default).
637dd7cddfSDavid du Colombier  */
647dd7cddfSDavid du Colombier struct gs_main_instance_s {
657dd7cddfSDavid du Colombier     /* The following are set during initialization. */
667dd7cddfSDavid du Colombier     gs_memory_t *heap;		/* (C) heap allocator */
677dd7cddfSDavid du Colombier     uint memory_chunk_size;	/* 'wholesale' allocation unit */
687dd7cddfSDavid du Colombier     ulong name_table_size;
697dd7cddfSDavid du Colombier     uint run_buffer_size;
707dd7cddfSDavid du Colombier     int init_done;		/* highest init done so far */
717dd7cddfSDavid du Colombier     int user_errors;		/* define what to do with errors */
727dd7cddfSDavid du Colombier     bool search_here_first;	/* if true, make '.' first lib dir */
737dd7cddfSDavid du Colombier     bool run_start;		/* if true, run 'start' after */
747dd7cddfSDavid du Colombier 				/* processing command line */
757dd7cddfSDavid du Colombier     gs_file_path lib_path;	/* library search list (GS_LIB) */
767dd7cddfSDavid du Colombier     long base_time[2];		/* starting usertime */
777dd7cddfSDavid du Colombier     void *readline_data;	/* data for gp_readline */
783ff48bf5SDavid du Colombier     char stdin_buf[STDIN_BUF_SIZE];	/* for e_NeedStdin callout */
793ff48bf5SDavid du Colombier     char stdout_buf[STDOUT_BUF_SIZE];	/* for e_NeedStdout callout */
803ff48bf5SDavid du Colombier     char stderr_buf[STDERR_BUF_SIZE];	/* for e_NeedStderr callout */
813ff48bf5SDavid du Colombier     ref error_object;		/* Use by gsapi_*() */
82*593dc095SDavid du Colombier #if 1
83*593dc095SDavid du Colombier     /* needs to be removed */
843ff48bf5SDavid du Colombier     display_callback *display;	/* callback structure for display device */
85*593dc095SDavid du Colombier #endif
86*593dc095SDavid du Colombier 
877dd7cddfSDavid du Colombier     /* The following are updated dynamically. */
887dd7cddfSDavid du Colombier     i_ctx_t *i_ctx_p;		/* current interpreter context state */
897dd7cddfSDavid du Colombier };
907dd7cddfSDavid du Colombier 
917dd7cddfSDavid du Colombier /*
927dd7cddfSDavid du Colombier  * Note that any file that uses the following definition of default values
937dd7cddfSDavid du Colombier  * must include gconfig.h, because of SEARCH_HERE_FIRST.
947dd7cddfSDavid du Colombier  */
957dd7cddfSDavid du Colombier #define gs_main_instance_default_init_values\
96*593dc095SDavid du Colombier   0, 20000, 0, 0, -1, 0, SEARCH_HERE_FIRST, 1
977dd7cddfSDavid du Colombier extern const gs_main_instance gs_main_instance_init_values;
987dd7cddfSDavid du Colombier 
997dd7cddfSDavid du Colombier #endif /* iminst_INCLUDED */
100