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