.\"
.\" $XConsortium: p179,v 5.4 94/04/17 20:56:30 hersh 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.
.ds f \s-2INQUIRE PICK DEVICE STATE 3\s+2
.TH "INQUIRE PICK DEVICE STATE 3" 3P "16 August 1991"
.SH NAME
INQUIRE PICK DEVICE STATE 3 \- inquire state of a pick device
.IX "Pick Input Devices" "INQUIRE PICK DEVICE STATE 3"
.SH SYNOPSIS
.SS C Syntax
.ft B
.ta 1.25i 3i
.nf
void
pinq_pick_st3 ( ws, dev, type, store, err, op_mode, echo_switch, filter, init_status, init_pick, 
    prompt_echo, echo_vol,  path_data, pick_order )
Pint	ws;	\fIworkstation identifier\fP
Pint	dev;	\fIpick device number\fP
Pinq_type	type;	\fItype of returned value\fP
Pstore	store;	\fIhandle to store object\fP
Pint	*err;	\fIOUT error indicator\fP
Pop_mode	*op_mode;	\fIOUT operating mode\fP
Pecho_switch	*echo_switch;	\fIOUT echo switch\fP
Pfilter	**filter;	\fIOUT pick filter\fP
Pin_status	*init_status;	\fIOUT initial pick status\fP
Ppick_path	**init_pick;	\fIOUT initial pick path\fP
Pint	*prompt_echo;	\fIOUT prompt/echo type\fP
Plimit3	*echo_vol;	\fIOUT echo  area\fP
Ppick_data3	**pick_data;	\fIOUT data record\fP
Ppath_order	*path_order;	\fIOUT path order\fP
.fi
.ft R
.SS Required PHIGS Operating States
(PHOP, WSOP, *, *)
.SH DESCRIPTION
.SS Purpose
Use \*f to retrieve the current state
of the specified pick device.
.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 pick device data record within the store buffer is accessed 
by the pointer pointed to by pick_data.
.IP \fIws\fP
Workstation identifier. An integer specifying the workstation with which
the specified pick device is associated.
.IP \fIdev\fP
The device number of the pick device.
See the \fIAvailable Devices\fP section of \s-2INITIALIZE PICK\s+2
for a description of the available devices.
.IP \fItype\fP
An enumerated value specifying whether the values to be returned are 
those originally specified by the application (\s-2PINQ_SET\s+2), or
those resulting after \s-2PHIGS\s+2 mapped them to ones available on the
workstation (\s-2PINQ_REALIZED\s+2).  A Pinq_type structure is defined as:
.nf
.ta .5i +\w'PINQ_REALIZED     'u
.sp .4
typedef enum {
.sp .2
	PINQ_SET,
	PINQ_REALIZED
.sp .2
} Pinq_type;
.fi
.IP \fIstore\fP
The memory buffer \s-2PHIGS\s+2 is to use for storing the information
returned.  
This buffer must exist prior to calling this function (see
\s-2CREATE STORE (3P)\s+2).
.SS C Output Parameters
.IP \fIerr\fP
The error indicator.  See the \fIExecution\fP section below for a
description of its use.  See the \fIErrors\fP section below for the
possible values it may return.
.bp
.IP \fIop_mode\fP
The operating mode. Pop_mode is an enumerated type with the following values:
.sp .2
.ta .5i
.nf
	POP_REQ
	POP_SAMPLE
	POP_EVENT
.fi
.IP \fIecho_switch\fP
The echo state. Pecho_switch is an enumerated type with the following values:
.sp .2
.ta .5i
.nf
	PSWITCH_ECHO
	PSWITCH_NO_ECHO
.fi
.IP \fIfilter\fP
A pointer to a pointer to the location to store the device's
detectability filter.
Pfilter is defined in phigs.h as follows:
.nf
.ta .5i +1i +1.25i
.sp .4
typedef struct {
.sp .2
	Pint_list	incl_set;	/* inclusion set */
	Pint_list	excl_set;	/* exclusion set */
} Pfilter;
.IP
Pint_list is defined in phigs.h as follows:
.nf
.ta .5i +1i +1.25i
.sp .4
typedef struct {
.sp .2
	Pint	num_ints;	/* number of Pints in list */
	Pint	*ints;	/* list of integers        */
.sp .2
} Pint_list;
.fi
.IP \fIinit_status\fP
A pointer to the initial pick status.
Pin_status is an enumerated type with the following values:
.sp .4
.nf
.ta .5i
typedef enum {
.sp .2
	PIN_STATUS_NONE,
	PIN_STATUS_OK,
	PIN_STATUS_NO_IN
.sp .2
} Pin_status;
.fi
.IP \fIinit_pick\fP
A pointer to the initial pick path.
Ppick_path is defined in phigs.h as follows:
.sp .4
.nf
.ta .5i +1i +1i
typedef struct {
.sp .2
	Pint	depth;	/* pick path_list depth */
	Ppick_path_elem	*path_list;	/* pick path */
.sp .2
} Ppick_path;
.fi
Ppick_path_elem is defined in phigs.h as follows:
.sp .4
.nf
.ta .5i +1i +1i
typedef struct {
.sp .2
	Pint	struct_id;	/* structure identifier */
	Pint	pick_id;	/* hierarchical pick identifier */
	Pint	elem_pos;	/* element sequence number */
.sp .2
} Ppick_path_elem;
.fi
.IP \fIprompt_echo\fP
The prompt/echo type desired.
See the \fIAvailable Devices\fP Section of \s-2INITIALIZE PICK\s+2
for a description of the available types.
.IP \fIecho_vol\fP
A pointer to a Plimit3 structure defining the
\fIx\fP, \fIy\fP, and \fIz\fP
components of the echo volume, in Device Coordinates.
Plimit3 is defined in phigs.h as follows:
.sp .4
.ta .5i +1i  +1i
.nf
typedef struct {
.sp .2
	Pfloat	x_min;	/* minimum x coordinate value */
	Pfloat	x_max;	/* maximum x coordinate value */
	Pfloat	y_min;	/* minimum y coordinate value */
	Pfloat	y_max;	/* maximum y coordinate value */
	Pfloat	z_min;	/* minimum z coordinate value */
	Pfloat	z_max;	/* maximum z coordinate value */
.sp .2
} Plimit3;
.fi
.IP \fIpick_data\fP
Pointer to a pointer that points to the pick device state within the store.
Pick_data3 is defined in phigs.h as follows:
.nf
.ta .5i +.5i +.5i
.sp .4
typedef struct {
.sp .2
      union {
	struct {
		Pint	unused;
	} pet_r1;
      } pets;
.sp .2
} Ppick_data3;
.fi
.IP \fIpath_order\fP
A pointer to the path order.
Ppath_order is an enumerated type with the following values:
.nf
.ta .5i
.sp .4
typedef enum {
.sp .2
	PORDER_TOP_FIRST,
	PORDER_BOTTOM_FIRST
.sp .2
} Ppath_order;
.fi
.SS Execution
\*f returns the current state of the
specified pick device, which is stored in the workstation
state list of the workstation associated with the device.  The
current state includes the operating mode, echo switch, initial pick,
prompt/echo type, echo volume, pick path order, data record, and pick filter.
See \s-2SET PICK MODE\s+2 for a description of the operating mode and the
echo switch, and how to set these values.
See \s-2INITIALIZE PICK 3\s+2 for a description of the initial pick,
prompt/echo type, echo volume, pick path order, and data record contents,
and how to set these values.
See \s-2SET PICK FILTER\s+2 for a description of the pick filter and how to
set it.
.LP
In the event of an error, the \fIerror indicator\fP 
indicates the error number of the error detected, and no other output data
is returned.  If no error is detected, the \fIerror indicator\fP 
is set to zero, and the inquired information will be available in the output
parameters.  Since this is an inquiry function, \s-2ERROR HANDLING\s+2 is not
invoked when an error is detected by this function.
.SH ERRORS
.IP 003
Ignoring function, function requires state (\s-2PHOP, WSOP, *, *\s+2)
.IP 054
Ignoring function, the specified workstation is not open
.IP 060
Ignoring function, specified workstation is not of category \s-2OUTIN\s+2
.IP 250
Ignoring function, the specified device is not available
on the specified workstation
.SH SEE ALSO
.nf
.IP
.ta 0.5i
.SM "INITIALIZE PICK 3 (3P)"
.SM "SET PICK MODE (3P)"
.SM "SET PICK FILTER (3P)"
.SM "INQUIRE PICK DEVICE STATE (3P)"
.SM "CREATE STORE (3P)"
.SM "DELETE STORE (3P)"
.fi
