'\"macro stdmacro
.if n .pH g3x11.XSContext @(#)XSContext	40.3 of 1/19/90
.ds tk X Toolkit
.ds xT X Toolkit Intrinsics \- C Language Interface
.ds xI Intrinsics
.ds xW Athena X Widgets \- C Language X Toolkit Interface
.ds xL Xlib \- C Language X Interface
.ds xC Inter-Client Communication Conventions Manual
.ds Rn 3
.ds Vn 2.2
.hw XtMake-Geometry-Request XtQuery-Geometry wid-get
.na
.de Ds
.nf
.\\$1D \\$2 \\$1
.ft 1
.ps \\n(PS
.\".if \\n(VS>=40 .vs \\n(VSu
.\".if \\n(VS<=39 .vs \\n(VSp
..
.de De
.ce 0
.if \\n(BD .DF
.nr BD 0
.in \\n(OIu
.if \\n(TM .ls 2
.sp \\n(DDu
.fi
..
.de FD
.LP
.KS
.TA .5i 3i
.ta .5i 3i
.nf
..
.de FN
.fi
.KE
.LP
..
.de IN		\" send an index entry to the stderr
.tm \\n%:\\$1:\\$2:\\$3
..
.de C{
.KS
.nf
.D
.\"
.\"	choose appropriate monospace font
.\"	the imagen conditional, 480,
.\"	may be changed to L if LB is too
.\"	heavy for your eyes...
.\"
.ie "\\*(.T"480" .ft L
.el .ie "\\*(.T"300" .ft L
.el .ie "\\*(.T"202" .ft PO
.el .ie "\\*(.T"aps" .ft CW
.el .ft R
.ps \\n(PS
.ie \\n(VS>40 .vs \\n(VSu
.el .vs \\n(VSp
..
.de C}
.DE
.R
..
.de Pn
.ie t \\$1\fB\^\\$2\^\fR\\$3
.el \\$1\fI\^\\$2\^\fP\\$3
..
.de PN
.ie t \fB\^\\$1\^\fR\\$2
.el \fI\^\\$1\^\fP\\$2
..
.de NT
.ne 7
.ds NO Note
.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
.ie n .sp
.el .sp 10p
.TB
.ce
\\*(NO
.ie n .sp
.el .sp 5p
.if '\\$1'C' .ce 99
.if '\\$2'C' .ce 99
.in +5n
.ll -5n
.R
..
.		\" Note End -- doug kraft 3/85
.de NE
.ce 0
.in -5n
.ll +5n
.ie n .sp
.el .sp 10p
..
.ny0
.nr X
.if \nX=0 .ds x} XSaveContext 3X11 "9/1/88" "XWIN 3.0" "\&"
.if \nX=1 .ds x} XSaveContext 3X11 "9/1/88" "XWIN 3.0"
.if \nX=2 .ds x} XSaveContext 3X11 "" "\&"
.if \nX=3 .ds x} XSaveContext "" "" "\&"
.TH \*(x}
.SH NAME
XSaveContext, XFindContext, XDeleteContext, XUniqueContext \
\- associative look-up routines
.SH SYNTAX
int XSaveContext(\^\fIdisplay\fP, \fIw\fP, \fIcontext\fP, \fIdata\fP\^)
.br
      Display *\fIdisplay\fP\^;	
.br
      Window \fIw\fP\^;
.br
      XContext \fIcontext\fP\^;
.br
      caddr_t \fIdata\fP\^;
.LP
int XFindContext(\^\fIdisplay\fP, \fIw\fP, \fIcontext\fP, \fIdata_return\fP\^)
.br
      Display *\fIdisplay\fP\^;
.br
      Window \fIw\fP\^;
.br
      XContext \fIcontext\fP\^;
.br
      caddr_t *\fIdata_return\fP\^;	
.LP
int XDeleteContext(\^\fIdisplay\fP, \fIw\fP, \fIcontext\fP\^)
.br
      Display *\fIdisplay\fP\^;
.br
      Window \fIw\fP;
.br
      XContext \fIcontext\fP;
.LP
XContext XUniqueContext(\^)
.SH ARGUMENTS
.IP \fIcontext\fP 1i
Specifies the context type to which the data belongs.
.IP \fIdata\fP 1i
Specifies the data to be associated with the window and type.
.IP \fIdata_return\fP 1i
Returns a pointer to the data.
.\" $Header: display.a,v 1.1 88/02/26 10:26:29 mento Exp $
.IP \fIdisplay\fP 1i
Specifies the connection to the X\s-2WIN\s+2 server.
.IP \fIw\fP 1i
Specifies the window with which the data is associated.
.SH DESCRIPTION
.\" $Header: XSContext.d,v 1.2 88/06/11 07:52:54 mento Exp $
If an entry with the specified window and type already exists,
.PN XSaveContext
overrides it with the specified context.
The
.PN XSaveContext
function returns a nonzero error code if an error has occurred
and zero otherwise.
Possible errors are
.PN XCNOMEM
(out of memory).
.LP
.\" $Header: XFContext.d,v 1.2 88/06/11 07:50:11 mento Exp $
Because it is a return value,
the data is a pointer.
The
.PN XFindContext
function returns a nonzero error code if an error has occurred
and zero otherwise.
Possible errors are
.PN XCNOENT
(context-not-found).
.LP
.\" $Header: XDContext.d,v 1.3 88/08/20 10:50:15 mento Exp $
The
.PN XDeleteContext
function deletes the entry for the given window 
and type from the data structure.
This function returns the same error codes that
.PN XFindContext
returns if called with the same arguments.
.PN XDeleteContext
does not free the data whose address was saved.
.LP
.\" $Header: XUContext.d,v 1.1 88/02/26 10:51:25 mento Exp $
The
.PN XUniqueContext
function creates a unique context type that may be used in subsequent calls to
.PN XSaveContext .
.SH "SEE ALSO"
\fI\*(xL\fP
