bf120b5abcf00815e4216e679f80b3887df2a12b
[yaz-moved-to-github.git] / include / prt-arc.h
1 /*
2  * Copyright (c) 1995,1996 Index Data.
3  *
4  * Permission to use, copy, modify, distribute, and sell this software and
5  * its documentation, in whole or in part, for any purpose, is hereby granted,
6  * provided that:
7  *
8  * 1. This copyright and permission notice appear in all copies of the
9  * software and its documentation. Notices of copyright or attribution
10  * which appear at the beginning of any file must remain unchanged.
11  *
12  * 2. The names of Index Data or the individual authors may not be used to
13  * endorse or promote products derived from this software without specific
14  * prior written permission.
15  *
16  * THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT WARRANTY OF ANY KIND,
17  * EXPRESS, IMPLIED, OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
18  * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
19  * IN NO EVENT SHALL INDEX DATA BE LIABLE FOR ANY SPECIAL, INCIDENTAL,
20  * INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES
21  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR
22  * NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
23  * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
24  * OF THIS SOFTWARE.
25  *
26  */
27
28 #ifndef PRT_ARC_H
29 #define PRT_ARC_H
30
31 #ifdef __cplusplus
32 extern "C" {
33 #endif
34
35 /* ------------------- Summary Record --------------------- */
36
37 typedef struct Z_FormatSpec
38 {
39     char *type;
40     int *size;                    /* OPTIONAL */
41     int *bestPosn;                /* OPTIONAL */
42 } Z_FormatSpec;
43
44 typedef struct Z_BriefBib
45 {
46     char *title;
47     char *author;                  /* OPTIONAL */
48     char *callNumber;              /* OPTIONAL */
49     char *recordType;              /* OPTIONAL */
50     char *bibliographicLevel;      /* OPTIONAL */
51     int num_format;
52     Z_FormatSpec **format;         /* OPTIONAL */
53     char *publicationPlace;        /* OPTIONAL */
54     char *publicationDate;         /* OPTIONAL */
55     char *targetSystemKey;         /* OPTIONAL */
56     char *satisfyingElement;       /* OPTIONAL */
57     int *rank;                     /* OPTIONAL */
58     char *documentId;              /* OPTIONAL */
59     char *abstract;                /* OPTIONAL */
60     Z_OtherInformation *otherInfo; /* OPTIONAL */
61 } Z_BriefBib;
62
63 /* ------------------- OPAC Record --------------------- */
64
65 typedef struct Z_CircRecord
66 {
67     bool_t *availableNow;
68     char *availabilityDate;        /* OPTIONAL */
69     char *availableThru;           /* OPTIONAL */
70     char *restrictions;            /* OPTIONAL */
71     char *itemId;                  /* OPTIONAL */
72     bool_t *renewable;
73     bool_t *onHold;
74     char *enumAndChron;            /* OPTIONAL */
75     char *midspine;                /* OPTIONAL */
76     char *temporaryLocation;       /* OPTIONAL */
77 } Z_CircRecord;
78
79 typedef struct Z_Volume
80 {
81     char *enumeration;             /* OPTIONAL */
82     char *chronology;              /* OPTIONAL */
83     char *enumAndChron;            /* OPTIONAL */
84 } Z_Volume;
85
86 typedef struct Z_HoldingsAndCircData
87 {
88     char *typeOfRecord;            /* OPTIONAL */
89     char *encodingLevel;           /* OPTIONAL */
90     char *format;                  /* OPTIONAL */
91     char *receiptAcqStatus;        /* OPTIONAL */
92     char *generalRetention;        /* OPTIONAL */
93     char *completeness;            /* OPTIONAL */
94     char *dateOfReport;            /* OPTIONAL */
95     char *nucCode;                 /* OPTIONAL */
96     char *localLocation;           /* OPTIONAL */
97     char *shelvingLocation;        /* OPTIONAL */
98     char *callNumber;              /* OPTIONAL */
99     char *shelvingData;            /* OPTIONAL */
100     char *copyNumber;              /* OPTIONAL */
101     char *publicNote;              /* OPTIONAL */
102     char *reproductionNote;        /* OPTIONAL */
103     char *termsUseRepro;           /* OPTIONAL */
104     char *enumAndChron;            /* OPTIONAL */
105     int num_volumes;
106     Z_Volume **volumes;            /* OPTIONAL */
107     int num_circulationData;
108     Z_CircRecord **circulationData;/* OPTIONAL */
109 } Z_HoldingsAndCircData;
110
111 typedef struct Z_HoldingsRecord
112 {
113     int which;
114 #define Z_HoldingsRecord_marcHoldingsRecord    0
115 #define Z_HoldingsRecord_holdingsAndCirc       1
116     union
117     {
118         Z_External *marcHoldingsRecord;
119         Z_HoldingsAndCircData *holdingsAndCirc;
120     } u;
121 } Z_HoldingsRecord;
122
123 typedef struct Z_OPACRecord
124 {
125     Z_External *bibliographicRecord;   /* OPTIONAL */
126     int num_holdingsData;
127     Z_HoldingsRecord **holdingsData;   /* OPTIONAL */
128 } Z_OPACRecord;
129
130 int z_BriefBib(ODR o, Z_BriefBib **p, int opt);
131 int z_OPACRecord(ODR o, Z_OPACRecord **p, int opt);
132
133 #ifdef __cplusplus
134 }
135 #endif
136
137 #endif