.\"
.\" $XConsortium: p043,v 5.4 94/04/17 20:54:44 keith Exp $
.\"
.\" 
$XMCOPY
.\" Copyright (c) 1990, 1991 by Sun Microsystems, Inc. and the X Consortium.
.\" 
.\"                         All Rights Reserved
.\" 
.\" Permission to use, copy, modify, and distribute this software and its 
.\" documentation for any purpose and without fee is hereby granted, 
.\" provided that the above copyright notice appear in all copies and that
.\" both that copyright notice and this permission notice appear in 
.\" supporting documentation, and that the names of Sun Microsystems,
.\" and the X Consortium not be used in advertising or publicity 
.\" pertaining to distribution of the software without specific, written 
.\" prior permission.  
.\" 
.\" SUN MICROSYSTEMS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, 
.\" INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
.\" EVENT SHALL SUN MICROSYSTEMS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
.\" CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
.\" USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
.\" OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
.\" PERFORMANCE OF THIS SOFTWARE.
.TH "ESCAPE" 3P "29 February 1991"
.SH NAME
ESCAPE \- invoke an implementation-dependent function
.IX "ESCAPE" pescape "" "pescape \(em \s-2C\s+2 function"
.IX pescape "" "pescape \(em \s-2C\s+2 function"
.IX "C functions" "pescape"
.IX "Implementation-Specific Functions" "ESCAPE"
.SH SYNOPSIS
.SS C Syntax
.ft B
.ta 1.25i 3i
.nf
void
pescape ( func_id, in, store, out )
Pint	func_id;	\fIescape function identifier\fP 
Pescape_in_data	*in;	\fIinput data for the function\fP 
Pstore	store;	
Pescape_out_data	**out;	\fI\s-2OUT\s+2 output data of the function\fP 
.fi
.ft R
.SS Required PHIGS Operating States
(PHOP, *, *, *)
.SH DESCRIPTION
.SS Purpose
\s-2ESCAPE\s+2 is a standard way of invoking \s-2PHIGS\s+2 functions
provided by the implementation but not defined in the \s-2PHIGS\s+2 standard.
Such functions are called \fIescape functions.\fP
This single function can access any of the implementation-dependent escape
functions provided.
These functions either perform an action or return
information not defined by the \s-2PHIGS\s+2 standard.
.LP
The provided escape functions are:
.RS
.sp .3
\(bu  Enforce synchronized error reporting
.sp .2
\(bu  Inquire a workstation's drawable and display
.sp .2
\(bu  Disable bounds checking of Device Coordinate parameters to \s-2PHIGS\s+2 functions
.RE
.LP
See the separate manual page for each individual escape for a full
description of its function.
.SS C Input Parameters
Applications using the \s-2C\s+2 binding must create a buffer to be used by this
function as memory space for storing data associated with the device state.
This buffer is passed as the \fIstore\fP argument.  
.LP
The store buffer is a data area managed by \s-2PHIGS\s+2. While the application 
is responsible for creating the inital buffer through a call to \s-2\CREATE STORE\s+2, 
\s-2PHIGS\s+2 manages this area such that there is sufficient memory for the 
specific inquiry. The data record within the store buffer is accessed 
by the pointer pointed to by \fIout\fR.
.IP \fIfunc_id \fP
An integer specifying which escape function to perform.
The recognized identifiers are:
.nf
.ta .5i +\w'-21 'u +\w'PUESC_IGNORE_DC_ERRORS   'u 
.sp
\-1	PUESC_ERRSYNC		\fIError Synchronization\fP
\-2	PUESC_DPYINFO		\fIInquire x_tool's drawable and display\fP
\-3	PUESC_IGNORE_DC_ERRORS	\fIDisable DC bounds checking\fP
.sp
.fi
.IP \fIin_data\fP
A pointer to a Pescape_in_data union containing the input data record
required by the escape function specified in the 
\fIfunc_id\fP parameter.
Pescape_in_data is defined in phigs.h as follows:
.nf
.ta .5i +.5i +.75i +1.3i
.sp .4
typedef union {
.sp .2
	/* Implementation dependent escape input data records. */
	struct {
		Perrsync	sync_on;
	} escape_in_u1;	
	struct {
		Pint	ws_id;
	} escape_in_u2;	
	struct {
		Pint	ignore_DC_errors;	/* ignore subsequent DC errors if non-zero */
	} escape_in_u3;
.sp .2
} Pescape_in_data;
.fi
.sp
.SS C Output Parameters
.IP \fIout_data\fP
A pointer to a pointer to a Pescape_out_data union.
If the specified escape function returns information,
\s-2PHIGS\s+2 copies a pointer to the requested information 
to the variable pointed to by this parameter.
This parameter is unused if the escape function does not return any
information.
Pescape_out_data is defined in phigs.h as follows:
.nf
.ta .5i +.5i +1.0i +1.5i
.sp .4
typedef union {
.sp .2
	/* Implementation dependent escape input data records. */
	struct {
	    Pint		 err_ind;	/* error indicator */
	    Display	*display;	/* may be returned as NULL */
	    XID		drawable_id;
	    XID      	 input_overlay_id;	/* will be 0 if category not OUTIN */
	    char       	*display_name;
	} escape_out_u2;	
.sp .2
} Pescape_out_data;
.fi
.SH ERRORS
.IP 002
Ignoring function, function requires state (\s-2PHOP, *, *, *\s+2)
.IP 350
Warning, the specified escape is not available on one or more workstations
in this implementation.
The escape will be processed by those workstations on which it is available
.IP 351
Ignoring function, one of the fields within the escape data record is in error
.SH SEE ALSO
.nf
.IP
.ta 0.5i
.SM "ESCAPE -1 (3P)"
.SM "ESCAPE -2 (3P)"
.SM "ESCAPE -3 (3P)"
.SM "CREATE STORE (3P)"
.SM "DELETE STORE (3P)"
.fi
