.\"##
.\" $XConsortium: p266,v 5.2 94/04/17 20:57:31 rws Exp $
.\"##
.\"## 
$XMCOPY
.\"## Copyright (c) 1990, 1991 by Sun Microsystems, Inc. 
.\"## 
.\"##                         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 name of Sun Microsystems,
.\"## 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 "RETRIEVE STRUCTURES" 3P "29 February 1991"
.SH NAME
RETRIEVE STRUCTURES \- retrieve specified structures from an archive file
.IX "Archive Files" "RETRIEVE STRUCTURES"
.IX "Structures" "RETRIEVE STRUCTURES"
.SH SYNOPSIS
.SS C Syntax
.ft B
.ta 1.25i 3i
.nf
void
pret_structs ( archive_id, struct_ids )
Pint	archive_id;	\fIarchive identifier\fP
Pint_list	*struct_ids;	\fIlist of structure identifiers\fP
.fi
.ft R
.SS Required PHIGS Operating States
(PHOP, *, *, AROP)
.SH DESCRIPTION
.SS Purpose
Use \s-2RETRIEVE STRUCTURES\s+2 to retrieve a list of structures
from the specified open archive file into the \s-2CSS\s+2.
.SS C Input Parameters
.IP \fIarchive_id\fP
The archive identifier specifying the open archive file to read from.
.IP \fIstruct_ids\fP
A pointer to a Pint_list structure containing the list of structure
identifiers to be retrieved.
The Pint_list structure is defined in phigs.h as follows:
.sp .4
.ta .5i +\w'Pint     'u +\w'num_ints;     'u
.nf
typedef struct {
.sp .2
	Pint	num_ints;	/* number of Pints in list */
	Pint	*ints;	/* list of integers */
.sp .2
} Pint_list;
.fi
.IP
The \fInum_ints\fP component specifies the number of structure identifiers
in the list.
.IP
The \fIints\fP component is a pointer to a list,
\fInum_ints\fP long, of the structure identifiers.
.SS Execution
The specified structures are copied from the indicated open archive file
into the Central Structure Store (\s-2CSS\s+2).
If any of the structures to be retrieved currently
exist in the \s-2CSS\s+2, the conflict is resolved as follows:
.sp .5v
.in +0.5i
.ta +0.2i
.ti -0.2i
\(bu	If the retrieval conflict resolution flag is \s-2MAINTAIN\s+2,
then the conflicting structure will not be copied
into the \s-2CSS\s+2
(its contents are maintained).
.sp .5v
.ti -0.2i
\(bu	If the retrieval conflict resolution flag is \s-2UPDATE\s+2,
then the conflicting structure in the \s-2CSS\s+2 will be overwritten
(its contents are updated).
.sp .5v
.ti -0.2i
\(bu	If the retrieval conflict resolution flag is \s-2ABANDON\s+2,
then no structures will be copied to the \s-2CSS\s+2.
.LP
The retrieval conflict resolution flag is set by the 
\s-2SET CONFLICT RESOLUTION\s+2 subroutine.
.LP
If the currently open structure must be overwritten because
of a conflict while
the retrieval conflict resolution flag is \s-2UPDATE\s+2, then
it is closed, its contents are
overwritten, and it is re-opened. The element pointer will be set to point
to the last element.
.LP
If any of the structures to be retrieved do not exist in the
archive file, then an empty structure is created in the
\s-2CSS\s+2, a warning is generated, and the retrieval operation
continues for the remaining structures.
.SH ERRORS
.IP 007
Ignoring function, function requires state (\s-2PHOP, *, *, AROP\s+2)
.IP 404
Ignoring function, the specified archive file is not open
.IP 405
Ignoring function, name conflict occurred while conflict resolution flag
has value \s-2ABANDON\s+2
.IP 408
Warning, some of the specified structures do not exist on the archive file.
\s-2PHIGS\s+2 will create empty structures in their places
.SH SEE ALSO
.nf
.IP
.ta 0.5i
.SM "OPEN ARCHIVE FILE (3P)"
.SM "ARCHIVE STRUCTURES (3P)"
.SM "SET CONFLICT RESOLUTION (3P)"
.SM "INQUIRE ALL CONFLICTING STRUCTURES (3P)"
.SM "RETRIEVE ALL STRUCTURES (3P)"
.SM "RETRIEVE STRUCTURE IDENTIFIERS (3P)"
.SM "RETRIEVE STRUCTURE NETWORKS (3P)"
.SM "DELETE STRUCTURES FROM ARCHIVE (3P)"
.fi
