DataMuseum.dk

Presents historical artifacts from the history of:

DKUUG/EUUG Conference tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about DKUUG/EUUG Conference tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download
Index: T t

⟦4386eb81a⟧ TextFile

    Length: 39256 (0x9958)
    Types: TextFile
    Names: »testc1.h«

Derivation

└─⟦db229ac7e⟧ Bits:30007240 EUUGD20: SSBA 1.2 / AFW Benchmarks
    └─⟦this⟧ »EUUGD20/AFUU-ssba1.21/ssba1.21E/testc/testc1.h« 
    └─⟦this⟧ »EUUGD20/AFUU-ssba1.21/ssba1.21F/testc/testc1.h« 

TextFile

/*---------------------------------------------------------------------*/
/* GKS ENUMERATION TYPEDEFs */

/* Gacf		attribute control flag */
	typedef	enum {
		GCURRENT,
		GSPECIFIED
	} Gacf;


/* Gasf		aspect source flag */
	typedef enum {
		GBUNDLED,
		GINDIVIDUAL 
	} Gasf;


/* Gattrs	attributes used */
	typedef enum {
		GPOLYLINE,
		GPOLYMARKER,
		GTEXT,
		GFILLAREA
	} Gattrs;


/* Gclip	clipping indicator */
	typedef enum {
		GCLIP,
		GNOCLIP
	} Gclip;


/* Gclrflag	clear control flag */
	typedef enum {
		GCONDITIONALLY,
		GALWAYS
	} Gclrflag;


/* Gcoavail	color availability */
	typedef enum {
		GCOLOUR,
		GMONOCHROME
	} Gcoavail;


/* Gcovalid	color values valid */
	typedef enum {
		GABSENT,
		GPRESENT
	} Gcovalid;

/* Gcstat	choice status */
	typedef enum {
		GC_OK,
		GC_NOCHOICE,
		GC_NONE
	} Gcstat;

/* Gcsw		coordinate switch */
	typedef enum {
		GWC,
		GNDC
	} Gcsw;

/* Gdefmode	deferral mode */
	typedef enum {
		GASAP,
		GBNIG,
		GBNIL,
		GASTI
	} Gdefmode;


/* Gdevunits	device coordinate units */
	typedef enum {
		GDC_METRES,
		GDC_OTHER
	} Gdevunits;


/* Gdspsurf	display surface */
	typedef enum {
		GEMPTY,
		GNOTEMPTY
	} Gdspsurf;


/* Gesw		echo switch */
	typedef enum {
		GECHO,
		GNOECHO
	} Gesw;


/* Gflinter	fill area interior style */
	typedef enum {
		GHOLLOW,
		GSOLID,
		GPATTERN,
		GHATCH
	} Gflinter;


/* Giclass	input class */
	typedef enum {
		GNCLASS,
		GLOCATOR,
		GSTROKE,
		GVALUATOR,
		GCHOICE,
		GPICK,
		GSTRING
	} Giclass;


/* Gimode	input mode */
	typedef enum {
		GREQUEST,
		GSAMPLE,
		GEVENT
	} Gimode;


/* Ginqtype	inquiry type */
	typedef enum {
		GSET,
		GREALIZED
	} Ginqtype;


/* Girgmode	implicit regeneration mode */
	typedef enum {
		GSUPPRESSED,
		GALLOWED
	} Girgmode;

/* Gistat	input status */
	typedef	enum {
		GOK,
		GNONE
	} Gistat;

/* Glastev	last event */
	typedef enum {
		GLAST,
		GNOTLAST
	} Glastev;

/* Glevel	level of GKS */
	typedef enum {
		GLMA = -3,
		GLMB,
		GLMC,
		GL0A,
		GL0B,
		GL0C,
		GL1A,
		GL1B,
		GL1C,
		GL2A,
		GL2B,
		GL2C
	} Glevel;

/* Gmodtype	dynamic modification type */
	typedef enum {
		GIRG,
		GIMM
	} Gmodtype;


/* Gnframe	new frame action at update */
	typedef enum {
		GNO,
		GYES
	} Gnframe;


/* Gopst	GKS operating state */
	typedef enum {
		GGKCL,
		GGKOP,
		GWSOP,
		GWSAC,
		GSGOP
	} Gopst;


/* Gpfcf	polyline / fill area control flag */
	typedef	enum {
		GPF_POLYLINE,
		GPF_FILLAREA
	} Gpfcf;


/* Gprflag	prompt flag */
	typedef	enum {
		GPROFF,
		GPRON
	} Gprflag;


/* Gpstat	pick status */
	typedef enum {
		GP_OK,
		GP_NOPICK,
		GP_NONE
	} Gpstat;


/* Gregen	regeneration flag */
	typedef enum {
		GPERFORM,
		GPOSTPONE
	} Gregen;


/* Gsegdet	segment detectability */
	typedef enum {
		GUNDETECTABLE,
		GDETECTABLE
	} Gsegdet;


/* Gseghi	segment highlighting */
	typedef enum {
		GNORMAL,
		GHIGHLIGHTED
	} Gseghi;


/* Gsegvis	segment visibility */
	typedef enum {
		GVISIBLE,
		GINVISIBLE
	} Gsegvis;


/* Gsimultev	simultaneous events */
	typedef enum {
		GNOMORE,
		GMORE
	} Gsimultev;


/* Gtxhor	text alignment horizontal component */
	typedef enum {
		GAH_NORMAL,
		GAH_LEFT,
		GAH_CENTRE,
		GAH_RIGHT
	} Gtxhor;


/* Gtxpath	text path */
	typedef enum {
		GTP_RIGHT,
		GTP_LEFT,
		GTP_UP,
		GTP_DOWN
	} Gtxpath;


/* Gtxprec	text precision */
	typedef enum {
		GP_STRING,
		GP_CHAR,
		GP_STROKE
	} Gtxprec;


/* Gtxver	text alignment vertical component */
	typedef enum {
		GAV_NORMAL,
		GAV_TOP,
		GAV_CAP,
		GAV_HALF,
		GAV_BASE,
		GAV_BOTTOM
	} Gtxver;


/* Gvpri	viewport input priority */
	typedef enum {
		GHIGHER,
		GLOWER
	} Gvpri;


/* Gwscat	workstation category */
	typedef enum {
		GOUTPUT,
		GINPUT,
		GOUTIN,
		GWISS,
		GMO,
		GMI
	} Gwscat;


/* Gwsclass	workstation classification */
	typedef enum {
		GVECTOR,
		GRASTER,
		GOTHER
	} Gwsclass;


/* Gwsstate	workstation state */
	typedef enum {
		GINACTIVE,
		GACTIVE
	} Gwsstate;


/* Gwstus	workstation transformation update state */
	typedef enum {
		GNOTPENDING,
		GPENDING
	} Gwstus;

/*----------------------------------------------------------------------------*/
/* GKS GENERIC DATA TYPEDEFs */

/* Gchar	character (8 bits minimum) */
	typedef	char	Gchar;


/* Gint		integer (16 bits minimum) */
	typedef	long	Gint;


/* Glong	integer (32 bits minimum) */
	typedef	long	Glong;


/* Gfloat	floating point number (single precision minimum) */
	typedef	double	Gfloat;


/* Gfile	file */
	typedef FILE	Gfile;


/* Gunint	unsigned integer */
	typedef unsigned int	Guint;


/*----------------------------------------------------------------------------*/
/* GKS POINT AND RECTANGLE TYPEDEFS */

/* Gipoint	integer point */
	typedef	struct {
	   	Gint	x;		/* x coordinate 	*/
	   	Gint	y;		/* y coordinate		*/
	} Gipoint;


/* Glimit	coordinate limits */
	typedef	struct {
	   	Gfloat	xmin;		/* x minimum limit	*/
	   	Gfloat	xmax;		/* x maximum limit	*/
	   	Gfloat	ymin;		/* y minimum limit	*/
	   	Gfloat	ymax;		/* y maximum limit	*/
	} Glimit;


/* Gpoint	coordinate point */
	typedef	struct {
	   	Gfloat	x;		/* x coordinate		*/
	   	Gfloat	y;		/* y coordinate		*/
	} Gpoint;

/*----------------------------------------------------------------------------*/

/* Gasfs	aspect source flags */
	typedef	struct {
	   	Gasf	ln_type;	/* line type		*/
	   	Gasf	ln_width;	/* line width		*/
	   	Gasf	ln_colour;	/* line colour		*/
	   	Gasf	mk_type;	/* marker type		*/
	   	Gasf	mk_size;	/* marker size		*/
	   	Gasf	mk_colour;	/* marker colour	*/
	   	Gasf	tx_fp;		/* text font and precision */
	   	Gasf	tx_exp;		/* text expansion	*/
	   	Gasf	tx_space;	/* text spacing		*/
	   	Gasf	tx_colour;	/* text colour		*/
	   	Gasf	fl_inter;	/* fill area interior style */
	   	Gasf	fl_style;	/* fill area style index */
	   	Gasf	fl_colour;	/* fill area colour	*/
	} Gasfs;


/* Gchoice	choice data */
	typedef	struct {
	   	Gcstat	status;		/* choice status	*/
	   	Gint	choice;		/* choice number	*/
	} Gchoice;


/* Gcliprect	clipping rectangle */
	typedef	struct {
	     	Gclip	ind;		/* clipping indicator	*/
	     	Glimit	rec;		/* clipping rectangle	*/
	} Gcliprect;


/* Gcobundl	colour bundle */
	typedef	struct {
	   	Gfloat	red;		/* red intensity	*/
	   	Gfloat	green;		/* green intensity	*/
	   	Gfloat	blue;		/* blue intensity	*/
	} Gcobundl;


/* Gcofac	colour facilities */
	typedef	struct {
	   	Gint		colours;	/* number of colours	*/
	   	Gcoavail 	coavail;	/* colour availability	*/
	   	Gint		predefined;	/* no. of predefined bundles */
	} Gcofac;


/* Gdefer	deferral state */
	typedef	struct {
	   	Gdefmode	defmode;	/* deferral mode	*/
	   	Girgmode	irgmode;	/* implicit regeneration mode */
	} Gdefer;


/* Gdim		dimensions in real values */
	typedef	struct {
	   	Gfloat	x_dim;		/* x component */
	   	Gfloat  y_dim;		/* y component */
	} Gdim;


/* Gdspsize	display size */
	typedef	struct {
	   	Gdevunits	units;		/* device coordinate units */
	   	Gpoint		device;		/* device coord unit size */
	   	Gipoint		raster;		/* raster unit size	*/
	} Gdspsize;


/* Gevent	event */
	typedef	struct {
	   	Gint		ws;		/* workstation		*/
	   	Gint		dev;		/* device number	*/
	   	Giclass		class;		/* event class		*/
	} Gevent;


/* Gextent	text extent */
	typedef	struct {
	   	Gpoint	concat;		/* concatenation point	*/
	   	Gpoint	corner_1;	/* corner 1		*/
	   	Gpoint	corner_2;	/* corner 2		*/
	   	Gpoint	corner_3;	/* corner 3		*/
	   	Gpoint	corner_4;	/* corner 4		*/
	} Gextent;



/* Gflbundl	fill area bundle */
	typedef	struct {
	   	Gflinter	inter;		/* fill area interior style */
	   	Gint		style;		/* fill area style index */
	   	Gint		colour;		/* fill area colour index */
	} Gflbundl;


/* Gflattr	fill area attributes */
	typedef	struct {
	   	Gasf	inter;		/* fill area interior style ASF */
	   	Gasf	style;		/* fill area style index ASF */
	   	Gasf	colour;		/* fill area colour ASF	*/
	   	Gint	fill;		/* fill area index	*/
	   	Gflbundl bundl;		/* fill area bundle	*/
	} Gflattr;


/* Gintlist	integer list */
	typedef	struct {
	   	Gint	number; 	/* number of integers in list */
	   	Gint	*integers;  	/* list of integers  */
	} Gintlist;


/* Gflfac	fill area facilities */
	typedef	struct {
	   	Gint	n_interiors;	/* no. of available interior styles */
	   	Gflinter *interiors;	/* list of available interior styles */
	   	Gintlist *hatches;	/* list of available hatch styles */
	   	Gint	predefined;	/* number of predefined bundles */
	} Gflfac;


/* Ggdpfac	GDP facilities */
	typedef	struct {
	   	Gint	n_attrs;	/* number of attributes used */
	   	Gattrs	*attrs;		/* list of attributes used   */
	} Ggdpfac;


/* Ggksmit	GKS metafile item */
	typedef	struct {
	   	Gint	type;		/* item type		*/
	   	Gint	length;		/* item length		*/
	} Ggksmit;


/* Gidim	dimensions in integer values */
	typedef	struct {
	   	Guint	x_dim;		/* x component */
	   	Guint	y_dim;		/* y component */
	} Gidim;


/* Gtxfp	text font and precision */
	typedef	struct {
	   	Gint		font;		/* text font		*/
	   	Gtxprec		prec;		/* text precision	*/
	} Gtxfp;


/* Gindivattr	individual attribute values */
	typedef	struct {
	   	Gint		ln_type;	/* linetype */
	   	Gfloat		ln_width;	/* linewidth scale factor */
	   	Gint		ln_colour;	/* line colour index */
	   	Gint		mk_type;	/* marker type */
	   	Gfloat		mk_size;	/* marker size */
	   	Gint		mk_colour;	/* marker colour index */
	   	Gtxfp		tx_fontprec;	/* text font and precision */
	   	Gfloat		ch_exp;		/* character expansion factor */
	   	Gfloat		ch_space;	/* character spacing */
	   	Gint		tx_colour;	/* text colour index */
	   	Gflinter	fl_interior;	/* fill area interior */
	   	Gint		fl_style;	/* fill area interior style */
	   	Gint		fl_colour;	/* fill area colour index */
	   	Gasfs		asfs;		/* asf flags */
	} Gindivattr;


/* Glnbundl	polyline bundle */
	typedef	struct {
	   	Gint		type;		/* line type		*/
	   	Gfloat		width;		/* linewidth scale factor */
	   	Gint		colour;		/* polyline colour index  */
	} Glnbundl;


/* Glnattr	polyline attributes */
	typedef	struct {
	   	Gasf		type;		/* linetype ASF		*/
	   	Gasf		width;		/* linewidth ASF	*/
	   	Gasf		colour;		/* line colour ASF	*/
	   	Gint		line;		/* line index		*/
	   	Glnbundl	bundl;		/* line bundle		*/
	} Glnattr;


/* Glnfac	polyline facilities */
	typedef	struct {
		Gintlist	*types;	
	   	Gint		widths;		/* number of line widths */
	   	Gfloat		nom_width;	/* nominal width	*/
	   	Gfloat		min_width;	/* minimum width	*/
	   	Gfloat		max_width;	/* maximum width	*/
	   	Gint		predefined;	/* no. of predefined bundles */
	} Glnfac;


/* Gloc		locator data */
	typedef	struct {
	   	Gint	transform;	/* normalization transformation no. */
	   	Gpoint	position;	/* locator position	*/
	} Gloc;


/* Gmkbundl	polymarker bundle */
	typedef	struct {
	   	Gint		type;		/* marker type 		*/
	   	Gfloat		size;		/* marker size 		*/
	   	Gint		colour;		/* marker colour 	*/
	} Gmkbundl;


/* Gmkattr	polymarker attributes */
	typedef	struct {
	   	Gasf		type;		/* marker type ASF	*/
	   	Gasf		size;		/* marker size ASF	*/
	   	Gasf		colour;		/* marker colour ASF	*/
	   	Gint		mark;		/* marker index		*/
	   	Gmkbundl	bundl;		/* marker bundle	*/
	} Gmkattr;


/* Gmkfac	polymarker facilities */
	typedef	struct {
		Gintlist	*types;
		Gint		sizes;		/* number of marker sizes */
		Gfloat		nom_size;	/* nominal size */
		Gfloat		min_size;	/* minimum size */
		Gfloat		max_size;	/* maximum size */
		Gint		predefined;	/* no. of predefined bundles */
	} Gmkfac;


/* Gmodseg	dynamic modification of segment attributes */
	typedef	struct {
		Gmodtype	transform;  /* transformation */
		Gmodtype	appear;	    /* appearing (turning visible) */
		Gmodtype	disappear;  /*disappearing (turning invisible)*/
		Gmodtype	highlight;  /* highlighting */
		Gmodtype	priority;   /* priority */
		Gmodtype	addition;   /* addition of primitives to seg */
		Gmodtype	deletion;   /* deletion of segment */
	} Gmodseg;


/* Gmodws	dynamic modification of workstation attributes */
	typedef	struct {
		Gmodtype	line;		/* polyline */
		Gmodtype	mark;		/* polymarker */
		Gmodtype	text;		/* text */
		Gmodtype	fill;		/* fill area */
		Gmodtype	pat;		/* pattern */
		Gmodtype	colour;		/* color */
		Gmodtype	wstran;		/* workstation transformation */
	} Gmodws;



/* Gnumdev	number of input devices */
	typedef	struct {
		Gint	locator;	/* locators */
		Gint	stroke;		/* strokes */
		Gint	valuator;	/* valuators */
		Gint	choice;		/* choices */
		Gint	pick;		/* picks */
		Gint	string;		/* strings */
	} Gnumdev;



/* Gpick	pick data */
	typedef	struct {
		Gpstat		status;		/* pick status */
		Gint		seg;		/* pick segment */
		Gint		pickid;		/* pick identifier */
	} Gpick;



/* Gtxalign	text alignment */
	typedef	struct {
		Gtxhor		hor;		/* horizontal component */
		Gtxver		ver;		/* vertical component */
	} Gtxalign;


/* Gprimattr	primitive attributes */
	typedef	struct {
		Gint		ln_index;	/* line index */
		Gint		mk_index;	/* marker index */
		Gint		tx_index;	/* text index */
		Gfloat		ch_height;	/* character height */
		Gpoint		ch_up;		/* character up vector */
		Gfloat		ch_width;	/* character width */
		Gpoint		ch_base;	/* character base vector */
		Gtxpath		tx_path;	/* text path */
		Gtxalign	tx_align;	/* text align */
		Gint		fl_index;	/* fill area index */
		Gpoint		pa_width;	/* pattern width */
		Gpoint		pa_height;	/* pattern height */
		Gpoint		pa_refpt;	/* pattern reference point */
	} Gprimattr;


/* Gptbundl	pattern bundle */
	typedef	struct {
		Gipoint		size;		/* pattern array size */
		Gint		*array;		/* pattern array */
	} Gptbundl;


/* Gqloc	request locator */
	typedef	struct {
		Gistat		status;		/* request status */
		Gloc		loc;		/* locator data */
	} Gqloc;



/* Gqstring	request string */
	typedef	struct {
		Gistat		status;		/* request status */
		Gchar		*string;	/* string data */
	} Gqstring;



/* Gstroke	stroke data */
	typedef	struct {
		Gint		transform;   /* normalization transform number*/
		Gint		n_points;    /* number of points in stroke */
		Gpoint		*points;     /* points in stroke */
	} Gstroke;


/* Gqstroke	request stroke */
	typedef	struct {
		Gistat		status;		/* request status */
		Gstroke		stroke;		/* stroke data */
	} Gqstroke;



/* Gqueue	queue information */
	typedef	struct {
		Gint		ws;		/* workstation identifier */
		Giclass		class;		/* event class */
		Gint		devno;		/* logical input device no. */
	} Gqueue;


/* Gqval	request valuator */
	typedef	struct {
		Gistat		status;		/* request status */
		Gfloat		val;		/* valuator data */
	} Gqval;


/* Grect	coordinate rectangle */
	typedef struct {
		Gpoint		ul;		/* upper left corner */
		Gpoint		lr;		/* lower right corner */
	} Grect;


/* Gscale	scale vector */
	typedef struct {
		Gfloat		x_scale;	/* x component */
		Gfloat		y_scale;	/* y component */
	} Gscale;


/* Gsegattr	segment attribute values */
	typedef struct {
		Gfloat		segtran[2][3];	/* segment transformation */
		Gsegvis		segvis;		/* segment visibility */
		Gseghi		seghi;		/* segment highlighting */
		Gfloat		segpri;		/* segment priority */
		Gsegdet		segdet;		/* segment detectability */
	} Gsegattr;



/* Gstrlist	string list */
	typedef struct {
		Gint		n_strings;	/* number of strings in list */
		Gchar		**strings;	/* list of strings */ 
	} Gstrlist;



/* Gtran	transformation */
	typedef struct {
		Glimit		w;		/* window */
		Glimit		v;		/* viewport */
	} Gtran;


/* Gtxbundl	text bundle */
	typedef	struct {
		Gtxfp		fp;		/* font and precision */
		Gfloat		exp;		/* character expansion */
		Gfloat		space;		/* character spacing */
		Gint		colour;		/* text color */
	} Gtxbundl;


/* Gtxattr	text attributes */
	typedef struct {
		Gasf	fp;		/* text font and precision ASF */
		Gasf	exp;		/* text character expansion ASF */
		Gasf	space;		/* text character spacing ASF */
		Gasf	colour;		/* text colour ASF */
		Gint	text;		/* text index */
		Gtxbundl  bundl;	/* text bundle */
	} Gtxattr;



/* Gtxfac	text facilities */
	typedef	struct {
		Gint	fps;		/* number of fonts and precisions */
		Gtxfp	*fp_list;	/* list of avail fonts and precisions */
		Gint	heights;	/* number of character heights */
		Gfloat	min_ht;		/* minimum height */
		Gfloat	max_ht;		/* maximum height */
		Gint	expansions;	/* number of char expansion factors */
		Gfloat	min_exp;	/* minimum expansion factor */
		Gfloat	max_exp;	/* maximum expansion factor */
		Gint	predefined;	/* number of predefined bundles */
	} Gtxfac;


/* Gwsdus	workstation deferral and update state */
	typedef	struct {
		Gdefmode	defmode;	/* deferral mode */
		Gdspsurf	dspsurf;	/* display surface */
		Girgmode	irgmode;	/* implicit regeneration mode */
		Gnframe		nframe;		/* new frame action at update */
	} Gwsdus;


/* Gwsmax	workstation maximum numbers */
	typedef	struct {
		Gint	open;		/* number of open workstations */
		Gint	active;		/* number of active workstations */
		Gint	assoc;		/* number of associated workstations */
	} Gwsmax;


/* Gwstables	length of workstation tables */
	typedef	struct {
		Gint		line;		/* polyline tables */
		Gint		mark;		/* polymarker tables */
		Gint		text;		/* text tables */
		Gint		fill;		/* fill area tables */
		Gint		pat;		/* pattern tables */
		Gint		colour;		/* color tables */
	} Gwstables;



/* Gwsti	workstation transformation information */
	typedef	struct {
		Gwstus		wstus;	  /* workstn transform update state */
		Gtran		request;  /* requested transformation */
		Gtran		current;  /* current transformation */
	} Gwsti;


/*------------------------------------------------------------------*/
/* CHOICE DATA TYPE DEFINITIONS */

/* Gchoicepet0001	choice prompt and echo type 1 data record */
	typedef struct {
		Gint		number;		/* number of choice strings */
		Gchar		**strings;	/* array of strings 	*/
	} Gchoicepet0001;

/* Gchoicepet0002	choice prompt and echo type 2 data record */
	typedef struct {
		Gint		number;		/* number of alternatives */
		Gprflag		*enable;	/* array of prompts 	*/
	} Gchoicepet0002;


/* Gchoicepet0003	choice prompt and echo type 3 data record */
	typedef struct {
		Gint		number;		/* number of choice strings */
		Gchar		**strings;	/* array of strings 	*/
	} Gchoicepet0003;


/* Gchoicepet0004	choice prompt and echo type 4 data record */
	typedef struct {
		Gint		number;		/* number of choice strings */
		Gchar		**strings;	/* array of strings 	*/
	} Gchoicepet0004;


/* Gchoicepet0005	choice prompt and echo type 5 data record */
	typedef struct {
		Gint		seg;		/* segment name */
		Gint		number;		/* number of alternatives */
		Gint		*pickids;	/* array of pick identifiers */
	} Gchoicepet0005;


/* Gchoicerec 		choice data record */
	typedef	union {
		Gchoicepet0001		choicepet1_datarec;
		Gchoicepet0002		choicepet2_datarec;
		Gchoicepet0003		choicepet3_datarec;
		Gchoicepet0004		choicepet4_datarec;
		Gchoicepet0005		choicepet5_datarec;
	} Gchoicerec;


/* Gchoicest	choice state */
	typedef	struct {
		Gimode		mode;		/* mode */
		Gesw		esw;		/* echo switch */
		Gchoice		choice;		/* choice data */
		Gint		pet;		/* prompt and echo type */
		Glimit		e_area;		/* echo area */
		Gchoicerec	record;		/* choice data record */
	} Gchoicest;


/* Gdefchoice	default choice data */
	typedef	struct {
		Gint		choices;	/* maximum number of choices */
		Gintlist	*pets;
		Glimit		e_area;		/* default echo area */
		Gchoicerec	record;		/* default choice data record */
	} Gdefchoice;

/*---------------------------------------------------------------*/
/* LOCATOR DATA TYPE DEFINITIONS */


/* Glocpet0001		locator prompt and echo type 1 data record */
	typedef struct {
		Gint 	dummy;	/* not used */
	} Glocpet0001;


/* Glocpet0002		locator prompt and echo type 2 data record */
	typedef struct {
		Gint 	dummy;	/* not used */
	} Glocpet0002;


/* Glocpet0003		locator prompt and echo type 3 data record */
	typedef struct {
		Gint 	dummy;	/* not used */
	} Glocpet0003;


/* Glocpet0004		locator prompt and echo type 4 data record */
	typedef struct {
		Gacf		acf;	/* attribute control flag */
		Glnattr		ln;	/* polyline attributes */
	} Glocpet0004;


/* Glocpet0005		locator prompt and echo type 5 data record */
	typedef struct {
		Gpfcf	pfcf;		/* polyline/fill area control flag */
		Gacf	acf;		/* attribute control flag */
		union {
			Glnattr	ln;	/* line attributes */	
			Gflattr fl;	/* fill area attributes */
		} attr;
	} Glocpet0005;


/* Glocpet0006		locator prompt and echo type 6 data record */
	typedef struct {
		Gint	dummy;	/* not used */
	} Glocpet0006;


/* Glocrec	locator data record */
	typedef	union {
		Glocpet0001	locpet1_datarec;
		Glocpet0002	locpet2_datarec;
		Glocpet0003	locpet3_datarec;
		Glocpet0004	locpet4_datarec;
		Glocpet0005	locpet5_datarec;
		Glocpet0006	locpet6_datarec;
	} Glocrec;


/* Glocst	locator state */
	typedef	struct {
		Gimode		mode;		/* mode */
		Gesw		esw;		/* echo switch */
		Gloc		loc;		/* locator data */
		Gint		pet;		/* prompt and echo type */
		Glimit		e_area;		/* echo area */
		Glocrec		record;		/* locator data record */
	} Glocst;


/* Gdefloc	default locator data */
	typedef	struct {
		Gpoint		position;	/* initial position */
		Gintlist	*pets;
		Glimit		e_area;		/* default echo area */
		Glocrec		record;		/* default locator data rec */
	} Gdefloc;

/*-----------------------------------------------------------------*/
/* PICK DATA TYPES */

/* Gpickpet0001		pick prompt and echo type 1 data record */
	typedef struct {
		Gint	dummy;
	} Gpickpet0001;


/* Gpickpet0002		pick prompt and echo type 2 data record */
	typedef struct {
		Gint	dummy;
	} Gpickpet0002;


/* Gpickpet0003		pick prompt and echo type 3 data record */
	typedef struct {
		Gint	dummy;
	} Gpickpet0003;


/* Gupickpet0021		pick prompt and echo type 21 data record */
	typedef struct {
		Gint		type;		/* trap type for pets 21, 22 */
		Gfloat		trap[2];	/* trap definition in WC */
		Gint		dcTrap[2];	/* trap definition in DC */
		Gfloat		trapCenter[2];	/* trap center point in WC */
		Gint		dcCenter[2];	/* trap center point in DC */
		Gchar		pickSet;  /* pick id set (or single pick id)? */
		Gchar		center;	  /* center point for trap specified? */
	} Gupickpet0021;


/* Gupickpet0022		pick prompt and echo type 22 data record */
	typedef struct {
		Gint		type;		/* trap type for pets 21, 22 */
		Gfloat		trap[2];	/* trap definition in WC */
		Gint		dcTrap[2];	/* trap definition in DC */
		Gfloat		trapCenter[2];	/* trap center point in WC */
		Gint		dcCenter[2];	/* trap center point in DC */
		Gchar		pickSet;  /* pick id set (or single pick id)? */
		Gchar		center;	  /* center point for trap specified? */
	} Gupickpet0022;


/* Gpickrec	pick data record */
	typedef union {
		Gpickpet0001	pickpet1_datarec;
		Gpickpet0002	pickpet2_datarec;
		Gpickpet0003	pickpet3_datarec;
		Gupickpet0021	pickpet21_datarec;
		Gupickpet0022	pickpet22_datarec;
	} Gpickrec;


/* Gpickst	pick state */
	typedef	struct {
		Gimode		mode;	 	/* mode */
		Gesw		esw;		/* echo switch */
		Gpick		pick;		/* pick data */
		Gint		pet;		/* prompt and echo type */
		Glimit		e_area;		/* echo area */
		Gpickrec	record;		/* pick data record */
	} Gpickst;


/* Gdefpick	default pick data */
	typedef	struct {
		Gintlist	*pets;
		Glimit		e_area;		/* default echo area */
		Gpickrec	record;		/* default pick data record */
	} Gdefpick;


/* pick trap types for ArteG prompt/echo types 21 and 22 */
#define NO_TRAP		0		/* pets that don't use trap */
#define	CIR_TRAP	1		/* circular pick trap */
#define	RECT_TRAP	2		/* rectangular pick trap */

/*----------------------------------------------------------------------*/
/* STRING DATA TYPE DEFINITIONS */


/* Gstringpet0001		string prompt and echo type data record */
	typedef struct {
		Gint	bufsiz;
		Gint	position;
	} Gstringpet0001;


/* Gstringrec	string data record */
	typedef	union {
		Gstringpet0001	stringpet1_datarec;		
	} Gstringrec;

/* Gstringst	string state */
	typedef	struct {
		Gimode		mode;		/* mode */
		Gesw		esw;		/* echo switch */
		Gchar		*string;	/* string data */
		Gint		pet;		/* prompt and echo type */
		Glimit		e_area;		/* echo area */
		Gstringrec	record;		/* string data record */
	} Gstringst;


/* Gdefstring	default string data */
	typedef	struct {
		Gint		bufsiz;		/* initial buffer size */
		Gintlist	*pets;
		Glimit		e_area;		/* default echo area */
		Gstringrec	record;		/* default stroke data record */
	} Gdefstring;


/*----------------------------------------------------------------------*/
/* STROKE DATA TYPE DEFINITIONS */


/* Gstrokepet0001	stroke prompt and echo type 1 data record */
	typedef	struct {
		Gint	bufsiz;		/* input buffer size */
		Gint	editpos;	/* editing position */
		Gpoint	interval;	/* x, y interval */
		Gfloat	time;		/* time interval */
	} Gstrokepet0001;
		

/* Gstrokepet0002	stroke prompt and echo type 2 data record */
	typedef	struct {
		Gint	bufsiz;		/* input buffer size */
		Gint	editpos;	/* editing position */
		Gpoint	interval;	/* x, y interval */
		Gfloat	time;		/* time interval */
	} Gstrokepet0002;


/* Gstrokepet0003	stroke prompt and echo type 3 data record */
	typedef	struct {
		Gint		bufsiz;		/* input buffer size */
		Gint		editpos;	/* editing position */
		Gpoint		interval;	/* x, y interval */
		Gfloat		time;		/* time interval */
		Gacf		acf;		/* attribute control flag */
		Gmkattr		mk;		/* marker attributes */
	} Gstrokepet0003;


/* Gstrokepet0004	stroke prompt and echo type 4 data record */
	typedef	struct {
		Gint		bufsiz;		/* input buffer size */
		Gint		editpos;	/* editing position */
		Gpoint		interval;	/* x, y interval */
		Gfloat		time;		/* time interval */
		Gacf		acf;		/* attribute control flag */
		Glnattr		ln;		/* line attributes */
	} Gstrokepet0004;


/* Gstrokerec	stroke data record */
	typedef	union {
		Gstrokepet0001	strokepet1_datarec;
		Gstrokepet0002	strokepet2_datarec;
		Gstrokepet0003	strokepet3_datarec;
		Gstrokepet0004	strokepet4_datarec;
	} Gstrokerec;


/* Gstrokest	stroke state */
	typedef	struct {
		Gimode		mode;		/* mode */
		Gesw		esw;		/* echo switch */
		Gstroke		stroke;		/* stroke data */
		Gint		pet;		/* prompt and echo type */
		Glimit		e_area;		/* echo area */
		Gstrokerec	record;		/* stroke data record */
	} Gstrokest;


/* Gdefstroke	default stroke data */
	typedef struct {
		Gint		bufsiz;		/* buffer size */
		Gintlist	*pets;
		Glimit		e_area;		/* default echo area */
		Gstrokerec	record;		/* default stroke data record */
	} Gdefstroke;


/*----------------------------------------------------------------------*/
/* VALUATOR DATA TYPE DEFINITIONS */

/* Gvalpet0001		valuator prompt and echo type 1 data record */
	typedef struct {
		Gfloat	low;		/* low range limit */
		Gfloat	high;		/* high range limit */
	} Gvalpet0001;


/* Gvalpet0002		valuator prompt and echo type 2 data record */
	typedef struct {
		Gfloat	low;		/* low range limit */
		Gfloat	high;		/* high range limit */
	} Gvalpet0002;


/* Gvalpet0003		valuator prompt and echo type 3 data record */
	typedef struct {
		Gfloat	low;		/* low range limit */
		Gfloat	high;		/* high range limit */
	} Gvalpet0003;


/* Gvalrec	valuator data record */
	typedef	union {
		Gvalpet0001	valpet1_datarec;
		Gvalpet0002	valpet2_datarec;
		Gvalpet0003	valpet3_datarec;
	} Gvalrec;


/* Gvalst	valuator state */
	typedef	struct {
		Gimode		mode;		/* mode */
		Gesw		esw;		/* echo switch */
		Gfloat		val;		/* valuator data */
		Gint		pet;		/* prompt and echo type */
		Glimit		e_area;		/* echo area */
		Gvalrec		record;		/* valuator data record */
	} Gvalst;


/* Gdefval	default valuator data */
	typedef	struct {
		Gfloat		value;		/* initial value */
		Gintlist	*pets;
		Glimit		e_area;		/* default echo area */
		Gvalrec		record;		/* default valuator data rec */
	} Gdefval;

/*--------------------------------------------------------------------*/
/* WORKSTATION AND METAFILE TYPE DEFINITIONS */


/* Gconn	connection identifier */
	typedef Gchar Gconn;


/* Ggksmrec	GKS metafile data record */
	typedef Gchar Ggksmrec;


/* Gwstype	workstation type */
	typedef Gchar Gwstype; 
	
/* Gwsct	workstation connection and type */
	typedef struct {
		Gconn		*conn;		/* workstation connection */
		Gwstype		*type;		/* workstation type */
	} Gwsct;

/*--------------------------------------------------------------------*/
/* ESCAPE DATA TYPE DEFINITIONS (NOT USED) */

/* Gescin	escape input data record */
/*	typedef union { 
		Gesc0001_idatarec	esc1_idatarec;
		Gesc0002_idatarec	esc2_idatarec;
	} Gescin; 
*/


/* Gescout	escape output data record */
/*	typedef union { 
		Gesc0001_odatarec	esc1_odatarec;
		Gesc0002_odatarec	esc2_odatarec;
	} Gescout; 
*/

/*--------------------------------------------------------------------*/
/* GDP DATA TYPE DEFINITIONS */

/*
The following are not currently used in the ArteG C Language binding.
See include file `artegks2c.h' for GDPs in the ArteG Objective-C binding.
*/

/* Ggdp0001_datarec	GDP data record */
	typedef struct {
		Gint	dummy;	
	} Ggdp0001_datarec;


/* Ggdp0002_datarec	GDP data record */
	typedef struct {
		Gint	dummy;	
	} Ggdp0002_datarec;


/* Ggdprec 	GDP data record */
	typedef union {
		Ggdp0001_datarec	gdp1_datarec;
		Ggdp0002_datarec	gdp2_datarec;
	} Ggdprec;

/* added defines for gdp types */
#define CIRCLEGDP 1
#define ELLIPSEGDP 2

/*--------------------------------------------------------------------*/
/* LINETYPE AND MARKER TYPE DEFINITIONS */

#define GLN_SOLID	1	/* solid line		*/
#define GLN_DASH	2	/* dashed line		*/
#define GLN_DOT		3	/* dotted line		*/
#define GLN_DOTDASH	4	/* dashed-dooted line	*/

#define GMK_POINT	1	/* point		*/
#define GMK_PLUS	2	/* plus sign		*/
#define GMK_STAR	3	/* asterisk		*/
#define GMK_O		4	/* circle		*/
#define GMK_X		5	/* diagonal cross	*/

/*--------------------------------------------------------------------*/
/*--------------------------------------------------------------------*/
/* GKS ERROR DEFINES */

/* No Error */
#define	E_NO_ERROR	0	/* No error */

/* States */
#define	E_NOTGKCL	1	/* GKS not in state GKCL */
#define	E_NOTGKOP	2	/* GKS not in state GKOP */
#define	E_NOTWSAC	3	/* GKS not in state WSAC */
#define	E_NOTSGOP	4	/* GKS not in state SGOP */
#define	E_NOTACOP	5	/* GKS not in state WSAC or SGOP */
#define	E_NOTOPAC	6	/* GKS not in state WSOP or WSAC */
#define	E_NOTWSOP	7	/* GKS not in state WSOP, WSAC, or SGOP */
#define	E_NOTGWWS	8	/* GKS not in state GKOP, WSOP, WSAC or SGOP */

/* Workstations */
#define	E_WSIDINV	20	/* Specified wkstn id is invalid */
#define	E_CNIDINV	21	/* Specified connection id is invalid */
#define	E_WSTPINV	22	/* Specified wkstn type is invalid */
#define	E_NOWSTYP	23	/* Specified wkstn type does not exist */
#define	E_WSISOPN	24	/* Specified wkstn is open */
#define	E_WSNOTOP	25	/* Specified wkstn not open */
#define	E_WSCNTOP	26	/* Specified wkstn cannot be opened */
#define	E_WISSNOP	27	/* WISS not open */
#define	E_WISSOPN	28	/* WISS is already open */
#define	E_WSISACT	29	/* Wkstn is active */
#define	E_WSNTACT	30	/* Wkstn not active */
#define	E_WSCATMO	31	/* Wkstn is of category MO */
#define	E_WSNOTMO	32	/* Wkstn not of category MO */
#define	E_WSCATMI	33	/* Wkstn is of category MI */
#define	E_WSNOTMI	34	/* Wkstn not of category MI */
#define	E_WSCATIN	35	/* Wkstn is of category INPUT */
#define	E_WSIWISS	36	/* Wkstn is WISS */
#define	E_WSNOTOI	37	/* Wkstn not of category OUTIN */
#define	E_WSNOTIO	38	/* Wkstn not INPUT nor OUTIN */
#define	E_WSNOTOO	39	/* Wkstn not OUTPUT nor OUTIN */
#define	E_WSNOPXL	40	/* Wkstn has no pixel readback capability */
#define	E_WSNOGDP	41	/* Wkstn type unable to generate this GDP */
#define E_WSMXOPN	42	/* Max # of simultaneously open WS exceeded */	
#define E_WSMXACT	43	/* Max # of simultaneously active WS exceeded */

/* Transformations */
#define	E_BADXFRM	50	/* Transformation number is invalid */
#define	E_BADRCTD	51	/* Rectangle definition is invalid */
#define	E_BDVIEWP	52	/* Viewport not within NDC */
#define	E_BDWINDW	53	/* Wkstn window not within NDC */
#define	E_VIEWDSP	54	/* Wkstn viewport not within display space */

/* Output Attributes */
#define	E_BADLINX	60	/* Polyline index is invalid */
#define	E_NOLINEX	61	/* Polyline index not defined on this wkstn */
#define E_NOPLINX	62	/* Polyline index not predefined on this ws */
#define	E_LINEEQZ	63	/* Linetype is equal to zero */
#define	E_NOLINTP	64	/* Linetype not supported on this wkstn */
#define	E_LNWDLTZ	65	/* Linewidth scale factor is less than zero */
#define	E_BADMRKX	66	/* Polymarker index is invalid */
#define	E_NOMARKX	67	/* Polymarker index not defined on this wkstn */
#define	E_NOPMRKX	68	/* Polymarker index not predefined on this ws */
#define	E_MARKEQZ	69	/* Marker type is equal to zero */
#define	E_NOMRKTP	70	/* Marker type not supported on this wkstn */
#define	E_MKSZLTZ	71	/* Marker size scale factor is less than zero */
#define	E_BADTXTX	72	/* Text index is invalid */
#define	E_NOTEXTX	73	/* Text index not defined on this wkstn */
#define	E_NOPTXTX	74	/* Text index not predefined on this wkstn */
#define	E_TXTFEQZ	75	/* Text font is equal to zero */
#define	E_NOTXTFP	76	/* Text font precision not on this wkstn */
#define	E_CEXFLEX	77	/* Char exp factor less than or equal to zero */
#define	E_CHHTLEZ	78	/* Char height is less than or equal to zero */
#define	E_CHRUPVZ	79	/* Length of character up vector is zero */
#define	E_BADFILX	80	/* Fill area index is invalid */
#define	E_NOFILLX	81	/* Fill area index not defined on this wkstn */
#define	E_NOPFILX	82	/* Fill area index not predefined on this ws */
#define	E_NOFSTYL	83	/* Fill area inter style not on this wkstn */
#define	E_STYLEQZ	84	/* Style index equal to zero */
#define	E_BADPATN	85	/* Specified pattern index is invalid */
#define	E_NOHATCH	86	/* Hatch style not supported on this wkstn */
#define	E_PATSZLZ	87	/* Pattern size less than or equal to zero */
#define	E_NOPATNX	88	/* Pattern index not defined on this wkstn */
#define	E_NOPPTNX	89	/* Pattern index not predefined on this wkstn */
#define	E_NOPSTYL	90	/* Interior style not supported on this wkstn */
#define	E_CADIMEN	91	/* Dimensions of colour array are invalid */
#define	E_CINDXLZ	92	/* Colour index is less than zero */
#define	E_BADCOLX	93	/* Colour index is invalid */
#define	E_NOCOLRX	94	/* Colour index not defined on this wkstn */
#define	E_NOPCLRX	95	/* Colour index not predefined on this wkstn */
#define	E_COLRNGE	96	/* Colour is outside range (0,1) */
#define	E_BADPICK	97	/* Pick id is invalid */

/* Output Primitives */
#define	E_NPOINTS	100	/* Number of points is invalid */
#define	E_CHRCODE	101	/* Invalid code in string */
#define	E_BDGDPID	102	/* GDP id is invalid */
#define	E_GDPDATA	103	/* Content of GDP data record is invalid */
#define	E_CANTGDP	104	/* Not able to generate the specified GDP */
#define	E_CNTGDPC	105	/* Not able to generate the specified GDP 
				   under current xforms and clipping rect */

/* Segments */
#define	E_BADNAME	120	/* Specified segment name is invalid */
#define	E_NAMUSED	121	/* Specified segment name is already in use */
#define	E_WHATSEG	122	/* Specified segment does not exist */
#define	E_WORKSEG	123	/* Specified segment not on specified wkstn */
#define	E_WISSSEG	124	/* Specified segment does not exist on WISS */
#define	E_SEGOPEN	125	/* Specified segment is open */
#define	E_SEGPRIR	126	/* Segment priority is outside range (0,1) */

/* Input */
#define	E_NOINDEV	140	/* Specified input device not on wkstn */
#define	E_REQUEST	141	/* Input device not in REQUEST mode */
#define	E_NSAMPLE	142	/* Input device not in SAMPLE mode */
#define	E_NOEVSMP	143	/* EVENT and SAMPLE not at this level of GKS */
#define	E_NOPETWS	144	/* Prompt and echo type not on this wkstn */
#define	E_EBOUNDS	145	/* Echo area is outside display space */
#define	E_BADDATA	146	/* Contents of input data record are invalid */
#define	E_INQOVFL	147	/* Input queue has overflowed */
#define	E_NOQOVFL	148	/* Input queue has not overflowed */
#define	E_ASWSCLO	149	/* Input queue has overflowed, but wkstn closed */
#define	E_NOCURIV	150	/* No input of correct class in event report */
#define	E_INVTOUT	151	/* Timeout is invalid */
#define	E_BDINITV	152	/* Initial value is invalid */
#define	E_STROKSZ	153	/* Number of pts in initial stroke too big */
#define	E_STRINSZ	154	/* Length of initial string too big */

/* Metafiles */
#define	E_RESERVE	160	/* Item type not allowed for user items */
#define	E_BDLNGTH	161	/* Item length is invalid */
#define	E_MNOITEM	162	/* No item is left in GKS metafile input */
#define	E_MITMINV	163	/* Metafile item is invalid */
#define	E_NOTGKSI	164	/* ITEM type not a valid GKS item */
#define	E_BADCNTS	165	/* Item data record is invalid */
#define	E_EBDMXDR	166	/* Maximum item data record length is invalid */
#define	E_INTERPT	167	/* User item cannot be interpreted */
#define	E_NOFUNCT	168	/* Speced function not supported at this level*/

/* Escape */
#define	E_NOESCFN	180	/* Specified escape function not supported */
#define	E_SCIDINV	181	/* Specified escape function id is invalid */
#define	E_ESCDATA	182	/* Contents of escape data record are invalid */

/* Miscellaneous */
#define	E_BDERRFL	200	/* Specified error file in invalid */

/* Implementation Dependent - GKS Defined */
#define	E_MEMSPAC	300	/* Storage overflow has occurred in GKS */
#define	E_SEGSPAC	301	/* Storage overflow in segment storage */
#define	E_IO_READ	302	/* I/O error while reading */
#define	E_IOWRITE	303	/* I/O error while writing */
#define	E_IOSENDD	304	/* I/O error sending data to a wkstn */
#define	E_IORECDA	305	/* I/O error receiving data from a wkstn */
#define	E_IOLIBMG	306	/* I/O error during program library mgt */
#define	E_IORDWDT	307	/* I/O error reading wkstn description table */
#define	E_MATHERR	308	/* Arithmetic error */

/* Implementation Dependent - Implementor Defined */
#define	E_SGMMWRF      	910	/* Segment memory write failure */
#define	E_SGMMRDF      	911	/* Segment memory read failure */
#define	E_SGMMNAC      	912	/* Segment memory not allocated */
#define	E_SSLALOC	913	/* Segment state list alloc failure */
#define	E_SSLDLOC	914	/* Segment state list dealloc failure */
#define	E_SSLREAD	915	/* Segment Sate list read failure */
#define	E_WSSLALC	916	/* Workstation segment alloc failure */
#define	E_SGTBLALC	917	/* Segment table alloc failure */
#define	E_SGTBLDLC	918	/* Segment table dealloc failure */
#define	E_SGTBLRD	919	/* Segment table read failure */
#define	E_PRTBALC	920	/* Primitive table alloc failure */
#define	E_PRTBDLC	922	/* Primitive table dealloc failure */
#define	E_PRTBLRD	923	/* Primitive table read failure */
#define	E_PRIMALC	924	/* Primitive alloc failure */
#define	E_PRIMDLC	925	/* Primitive dealloc failure */
#define	E_NTPREVU      	926	/* Normal xform number previously used */
#define	E_RADNOS	927	/* Radial grid unsupported */
#define	E_SURNOS	928	/* Surface grid unsupported */
#define	E_WEIRD		929	/* Weird state, should not have happened */
#define	E_PARACLS	930	/* Parabola is closed */
#define	E_NTUSED	931	/* Normalization transform already used */
#define E_NMSTINV	932	/* Name set is invalid */
#define E_INUMFTR	933	/* Invalid number of filters specified */
#define	E_FLTRINV	934	/* Filter is invalid */

#define	E_NYETIMP      	998	/* Not yet implemented */
#define	E_IMPERRO      	999	/* Implementation error */

#define E_BUFSPAC	2200	/* Buffer overflow on input or inquiry funct */
#define E_RRLOGMT	2201	/* Error log is empty */ 
#define E_OUTRANG	2202	/* Out of range */