summaryrefslogtreecommitdiff
path: root/psi/iminst.h
diff options
context:
space:
mode:
Diffstat (limited to 'psi/iminst.h')
-rw-r--r--psi/iminst.h94
1 files changed, 94 insertions, 0 deletions
diff --git a/psi/iminst.h b/psi/iminst.h
new file mode 100644
index 000000000..1e8012330
--- /dev/null
+++ b/psi/iminst.h
@@ -0,0 +1,94 @@
+/* Copyright (C) 2001-2012 Artifex Software, Inc.
+ All Rights Reserved.
+
+ This software is provided AS-IS with no warranty, either express or
+ implied.
+
+ This software is distributed under license and may not be copied,
+ modified or distributed except as expressly authorized under the terms
+ of the license contained in the file LICENSE in this distribution.
+
+ Refer to licensing information at http://www.artifex.com or contact
+ Artifex Software, Inc., 7 Mt. Lassen Drive - Suite A-134, San Rafael,
+ CA 94903, U.S.A., +1(415)492-9861, for further information.
+*/
+
+
+/* Definition of interpreter instance */
+/* Requires stdio_.h, gsmemory.h, iref.h, iapi.h */
+
+#ifndef iminst_INCLUDED
+# define iminst_INCLUDED
+
+#ifndef gs_main_instance_DEFINED
+# define gs_main_instance_DEFINED
+typedef struct gs_main_instance_s gs_main_instance;
+#endif
+
+/*
+ * Define the structure of a search path. Currently there is only one,
+ * but there might be more someday.
+ *
+ * container - an array large enough to hold the specified maximum
+ * number of directories. Both the array and all the strings in it are
+ * in the 'foreign' VM space.
+ * list - the initial interval of container that defines the actual
+ * search list.
+ * env - the contents of an environment variable, implicitly added
+ * at the end of the list; may be 0.
+ * final - the final set of directories specified in the makefile;
+ * may be 0.
+ * count - the number of elements in the list, excluding a possible
+ * initial '.', env, and final.
+ */
+typedef struct gs_file_path_s {
+ ref container;
+ ref list;
+ const char *env;
+ const char *final;
+ uint count;
+} gs_file_path;
+
+/*
+ * Here is where we actually define the structure of interpreter instances.
+ * Clients should not reference any of the members. Note that in order to
+ * be able to initialize this structure statically, members including
+ * unions must come last (and be initialized to 0 by default).
+ */
+struct gs_main_instance_s {
+ /* The following are set during initialization. */
+ gs_memory_t *heap; /* (C) heap allocator */
+ uint memory_chunk_size; /* 'wholesale' allocation unit */
+ ulong name_table_size;
+ uint run_buffer_size;
+ int init_done; /* highest init done so far */
+ int user_errors; /* define what to do with errors */
+ bool search_here_first; /* if true, make '.' first lib dir */
+ bool run_start; /* if true, run 'start' after */
+ /* processing command line */
+ gs_file_path lib_path; /* library search list (GS_LIB) */
+ long base_time[2]; /* starting usertime */
+ void *readline_data; /* data for gp_readline */
+ ref error_object; /* Use by gsapi_*() */
+ int (*get_codepoint)(FILE *file, const char **astr);
+ /* Get next 'unicode' codepoint (in
+ * GS_NO_UTF8 builds, these will actually
+ * just be 8 bit clean values). */
+ display_callback *display; /* callback structure for display device */
+ /* The following are updated dynamically. */
+ i_ctx_t *i_ctx_p; /* current interpreter context state */
+ char *saved_pages_initial_arg; /* used to defer processing of --saved-pages=begin... */
+ bool saved_pages_test_mode; /* for regression testing of saved-pages */
+};
+
+/*
+ * Note that any file that uses the following definition of default values
+ * must include gconfig.h, because of SEARCH_HERE_FIRST.
+ */
+#define gs_main_instance_default_init_values\
+ 0/* heap */, 20000/* chunk_size */, 0/* name_table_size */, 0/* run_buffer_size */,\
+ -1/* init_done */, 0/* user_errors */, SEARCH_HERE_FIRST/* duh */, 1/* run_start */,
+
+extern const gs_main_instance gs_main_instance_init_values;
+
+#endif /* iminst_INCLUDED */