Renamed ASN.1 compiler to yaz-comp (used to be yc.tcl).
[yaz-moved-to-github.git] / include / yaz / z-exp.h
1 /* Generated automatically by the YAZ ASN.1 Compiler 0.3 */
2 /* Module-H RecordSyntax-explain */
3
4 #ifndef z_exp_H
5 #define z_exp_H
6
7 #include <yaz/odr.h>
8 #include <yaz/z-core.h>
9 #ifdef __cplusplus
10 extern "C" {
11 #endif
12
13 typedef struct Z_ExplainRecord Z_ExplainRecord;
14 YAZ_EXPORT int z_ExplainRecord (ODR o, Z_ExplainRecord **p, int opt, const char *name);
15
16 typedef struct Z_TargetInfo Z_TargetInfo;
17 YAZ_EXPORT int z_TargetInfo (ODR o, Z_TargetInfo **p, int opt, const char *name);
18
19 typedef struct Z_DatabaseInfo Z_DatabaseInfo;
20 YAZ_EXPORT int z_DatabaseInfo (ODR o, Z_DatabaseInfo **p, int opt, const char *name);
21
22 typedef struct Z_TagTypeMapping Z_TagTypeMapping;
23 YAZ_EXPORT int z_TagTypeMapping (ODR o, Z_TagTypeMapping **p, int opt, const char *name);
24
25 typedef struct Z_SchemaInfo Z_SchemaInfo;
26 YAZ_EXPORT int z_SchemaInfo (ODR o, Z_SchemaInfo **p, int opt, const char *name);
27
28 typedef struct Z_ElementInfo Z_ElementInfo;
29 YAZ_EXPORT int z_ElementInfo (ODR o, Z_ElementInfo **p, int opt, const char *name);
30
31 typedef struct Z_PathUnit Z_PathUnit;
32 YAZ_EXPORT int z_PathUnit (ODR o, Z_PathUnit **p, int opt, const char *name);
33
34 typedef struct Z_Path Z_Path;
35 YAZ_EXPORT int z_Path (ODR o, Z_Path **p, int opt, const char *name);
36
37 typedef struct Z_ElementInfoList Z_ElementInfoList;
38 YAZ_EXPORT int z_ElementInfoList (ODR o, Z_ElementInfoList **p, int opt, const char *name);
39
40 typedef struct Z_ElementDataType Z_ElementDataType;
41 YAZ_EXPORT int z_ElementDataType (ODR o, Z_ElementDataType **p, int opt, const char *name);
42
43 typedef int  Z_PrimitiveDataType;
44 YAZ_EXPORT int z_PrimitiveDataType (ODR o, Z_PrimitiveDataType **p, int opt, const char *name);
45
46 typedef struct Z_TagSetElements Z_TagSetElements;
47 YAZ_EXPORT int z_TagSetElements (ODR o, Z_TagSetElements **p, int opt, const char *name);
48
49 typedef struct Z_TagSetInfo Z_TagSetInfo;
50 YAZ_EXPORT int z_TagSetInfo (ODR o, Z_TagSetInfo **p, int opt, const char *name);
51
52 typedef struct Z_RecordSyntaxInfo Z_RecordSyntaxInfo;
53 YAZ_EXPORT int z_RecordSyntaxInfo (ODR o, Z_RecordSyntaxInfo **p, int opt, const char *name);
54
55 typedef struct Z_AttributeSetInfo Z_AttributeSetInfo;
56 YAZ_EXPORT int z_AttributeSetInfo (ODR o, Z_AttributeSetInfo **p, int opt, const char *name);
57
58 typedef struct Z_AttributeType Z_AttributeType;
59 YAZ_EXPORT int z_AttributeType (ODR o, Z_AttributeType **p, int opt, const char *name);
60
61 typedef struct Z_AttributeDescription Z_AttributeDescription;
62 YAZ_EXPORT int z_AttributeDescription (ODR o, Z_AttributeDescription **p, int opt, const char *name);
63
64 typedef struct Z_TermListElement Z_TermListElement;
65 YAZ_EXPORT int z_TermListElement (ODR o, Z_TermListElement **p, int opt, const char *name);
66
67 typedef struct Z_TermListInfo Z_TermListInfo;
68 YAZ_EXPORT int z_TermListInfo (ODR o, Z_TermListInfo **p, int opt, const char *name);
69
70 typedef struct Z_ExtendedServicesInfo Z_ExtendedServicesInfo;
71 YAZ_EXPORT int z_ExtendedServicesInfo (ODR o, Z_ExtendedServicesInfo **p, int opt, const char *name);
72
73 typedef struct Z_AttributeDetails Z_AttributeDetails;
74 YAZ_EXPORT int z_AttributeDetails (ODR o, Z_AttributeDetails **p, int opt, const char *name);
75
76 typedef struct Z_AttributeSetDetails Z_AttributeSetDetails;
77 YAZ_EXPORT int z_AttributeSetDetails (ODR o, Z_AttributeSetDetails **p, int opt, const char *name);
78
79 typedef struct Z_AttributeTypeDetails Z_AttributeTypeDetails;
80 YAZ_EXPORT int z_AttributeTypeDetails (ODR o, Z_AttributeTypeDetails **p, int opt, const char *name);
81
82 typedef struct Z_OmittedAttributeInterpretation Z_OmittedAttributeInterpretation;
83 YAZ_EXPORT int z_OmittedAttributeInterpretation (ODR o, Z_OmittedAttributeInterpretation **p, int opt, const char *name);
84
85 typedef struct Z_AttributeValue Z_AttributeValue;
86 YAZ_EXPORT int z_AttributeValue (ODR o, Z_AttributeValue **p, int opt, const char *name);
87
88 typedef struct Z_EScanInfo Z_EScanInfo;
89 YAZ_EXPORT int z_EScanInfo (ODR o, Z_EScanInfo **p, int opt, const char *name);
90
91 typedef struct Z_TermListDetails Z_TermListDetails;
92 YAZ_EXPORT int z_TermListDetails (ODR o, Z_TermListDetails **p, int opt, const char *name);
93
94 typedef struct Z_ElementSetDetails Z_ElementSetDetails;
95 YAZ_EXPORT int z_ElementSetDetails (ODR o, Z_ElementSetDetails **p, int opt, const char *name);
96
97 typedef struct Z_RetrievalRecordDetails Z_RetrievalRecordDetails;
98 YAZ_EXPORT int z_RetrievalRecordDetails (ODR o, Z_RetrievalRecordDetails **p, int opt, const char *name);
99
100 typedef struct Z_PerElementDetails Z_PerElementDetails;
101 YAZ_EXPORT int z_PerElementDetails (ODR o, Z_PerElementDetails **p, int opt, const char *name);
102
103 typedef struct Z_RecordTag Z_RecordTag;
104 YAZ_EXPORT int z_RecordTag (ODR o, Z_RecordTag **p, int opt, const char *name);
105
106 typedef struct Z_SortDetails Z_SortDetails;
107 YAZ_EXPORT int z_SortDetails (ODR o, Z_SortDetails **p, int opt, const char *name);
108
109 typedef struct Z_SortKeyDetails Z_SortKeyDetails;
110 YAZ_EXPORT int z_SortKeyDetails (ODR o, Z_SortKeyDetails **p, int opt, const char *name);
111
112 typedef struct Z_ProcessingInformation Z_ProcessingInformation;
113 YAZ_EXPORT int z_ProcessingInformation (ODR o, Z_ProcessingInformation **p, int opt, const char *name);
114
115 typedef struct Z_VariantSetInfo Z_VariantSetInfo;
116 YAZ_EXPORT int z_VariantSetInfo (ODR o, Z_VariantSetInfo **p, int opt, const char *name);
117
118 typedef struct Z_VariantClass Z_VariantClass;
119 YAZ_EXPORT int z_VariantClass (ODR o, Z_VariantClass **p, int opt, const char *name);
120
121 typedef struct Z_VariantType Z_VariantType;
122 YAZ_EXPORT int z_VariantType (ODR o, Z_VariantType **p, int opt, const char *name);
123
124 typedef struct Z_VariantValue Z_VariantValue;
125 YAZ_EXPORT int z_VariantValue (ODR o, Z_VariantValue **p, int opt, const char *name);
126
127 typedef struct Z_ValueSetEnumerated Z_ValueSetEnumerated;
128 YAZ_EXPORT int z_ValueSetEnumerated (ODR o, Z_ValueSetEnumerated **p, int opt, const char *name);
129
130 typedef struct Z_ValueSet Z_ValueSet;
131 YAZ_EXPORT int z_ValueSet (ODR o, Z_ValueSet **p, int opt, const char *name);
132
133 typedef struct Z_ValueRange Z_ValueRange;
134 YAZ_EXPORT int z_ValueRange (ODR o, Z_ValueRange **p, int opt, const char *name);
135
136 typedef struct Z_ValueDescription Z_ValueDescription;
137 YAZ_EXPORT int z_ValueDescription (ODR o, Z_ValueDescription **p, int opt, const char *name);
138
139 typedef struct Z_UnitInfo Z_UnitInfo;
140 YAZ_EXPORT int z_UnitInfo (ODR o, Z_UnitInfo **p, int opt, const char *name);
141
142 typedef struct Z_UnitType Z_UnitType;
143 YAZ_EXPORT int z_UnitType (ODR o, Z_UnitType **p, int opt, const char *name);
144
145 typedef struct Z_Units Z_Units;
146 YAZ_EXPORT int z_Units (ODR o, Z_Units **p, int opt, const char *name);
147
148 typedef struct Z_CategoryList Z_CategoryList;
149 YAZ_EXPORT int z_CategoryList (ODR o, Z_CategoryList **p, int opt, const char *name);
150
151 typedef struct Z_CategoryInfo Z_CategoryInfo;
152 YAZ_EXPORT int z_CategoryInfo (ODR o, Z_CategoryInfo **p, int opt, const char *name);
153
154 typedef struct Z_CommonInfo Z_CommonInfo;
155 YAZ_EXPORT int z_CommonInfo (ODR o, Z_CommonInfo **p, int opt, const char *name);
156
157 typedef struct Z_HumanStringUnit Z_HumanStringUnit;
158 YAZ_EXPORT int z_HumanStringUnit (ODR o, Z_HumanStringUnit **p, int opt, const char *name);
159
160 typedef struct Z_HumanString Z_HumanString;
161 YAZ_EXPORT int z_HumanString (ODR o, Z_HumanString **p, int opt, const char *name);
162
163 typedef struct Z_IconObjectUnit Z_IconObjectUnit;
164 YAZ_EXPORT int z_IconObjectUnit (ODR o, Z_IconObjectUnit **p, int opt, const char *name);
165
166 typedef struct Z_IconObject Z_IconObject;
167 YAZ_EXPORT int z_IconObject (ODR o, Z_IconObject **p, int opt, const char *name);
168
169 typedef Z_InternationalString  Z_LanguageCode;
170 YAZ_EXPORT int z_LanguageCode (ODR o, Z_LanguageCode **p, int opt, const char *name);
171
172 typedef struct Z_ContactInfo Z_ContactInfo;
173 YAZ_EXPORT int z_ContactInfo (ODR o, Z_ContactInfo **p, int opt, const char *name);
174
175 typedef struct Z_NetworkAddressIA Z_NetworkAddressIA;
176 YAZ_EXPORT int z_NetworkAddressIA (ODR o, Z_NetworkAddressIA **p, int opt, const char *name);
177
178 typedef struct Z_NetworkAddressOPA Z_NetworkAddressOPA;
179 YAZ_EXPORT int z_NetworkAddressOPA (ODR o, Z_NetworkAddressOPA **p, int opt, const char *name);
180
181 typedef struct Z_NetworkAddressOther Z_NetworkAddressOther;
182 YAZ_EXPORT int z_NetworkAddressOther (ODR o, Z_NetworkAddressOther **p, int opt, const char *name);
183
184 typedef struct Z_NetworkAddress Z_NetworkAddress;
185 YAZ_EXPORT int z_NetworkAddress (ODR o, Z_NetworkAddress **p, int opt, const char *name);
186
187 typedef struct Z_AccessInfo Z_AccessInfo;
188 YAZ_EXPORT int z_AccessInfo (ODR o, Z_AccessInfo **p, int opt, const char *name);
189
190 typedef struct Z_QueryTypeDetails Z_QueryTypeDetails;
191 YAZ_EXPORT int z_QueryTypeDetails (ODR o, Z_QueryTypeDetails **p, int opt, const char *name);
192
193 typedef struct Z_PrivateCapOperator Z_PrivateCapOperator;
194 YAZ_EXPORT int z_PrivateCapOperator (ODR o, Z_PrivateCapOperator **p, int opt, const char *name);
195
196 typedef struct Z_PrivateCapabilities Z_PrivateCapabilities;
197 YAZ_EXPORT int z_PrivateCapabilities (ODR o, Z_PrivateCapabilities **p, int opt, const char *name);
198
199 typedef struct Z_RpnCapabilities Z_RpnCapabilities;
200 YAZ_EXPORT int z_RpnCapabilities (ODR o, Z_RpnCapabilities **p, int opt, const char *name);
201
202 typedef struct Z_Iso8777Capabilities Z_Iso8777Capabilities;
203 YAZ_EXPORT int z_Iso8777Capabilities (ODR o, Z_Iso8777Capabilities **p, int opt, const char *name);
204
205 typedef struct Z_ProxSupportPrivate Z_ProxSupportPrivate;
206 YAZ_EXPORT int z_ProxSupportPrivate (ODR o, Z_ProxSupportPrivate **p, int opt, const char *name);
207
208 typedef struct Z_ProxSupportUnit Z_ProxSupportUnit;
209 YAZ_EXPORT int z_ProxSupportUnit (ODR o, Z_ProxSupportUnit **p, int opt, const char *name);
210
211 typedef struct Z_ProximitySupport Z_ProximitySupport;
212 YAZ_EXPORT int z_ProximitySupport (ODR o, Z_ProximitySupport **p, int opt, const char *name);
213
214 typedef struct Z_SearchKey Z_SearchKey;
215 YAZ_EXPORT int z_SearchKey (ODR o, Z_SearchKey **p, int opt, const char *name);
216
217 typedef struct Z_AccessRestrictionsUnit Z_AccessRestrictionsUnit;
218 YAZ_EXPORT int z_AccessRestrictionsUnit (ODR o, Z_AccessRestrictionsUnit **p, int opt, const char *name);
219
220 typedef struct Z_AccessRestrictions Z_AccessRestrictions;
221 YAZ_EXPORT int z_AccessRestrictions (ODR o, Z_AccessRestrictions **p, int opt, const char *name);
222
223 typedef struct Z_CostsOtherCharge Z_CostsOtherCharge;
224 YAZ_EXPORT int z_CostsOtherCharge (ODR o, Z_CostsOtherCharge **p, int opt, const char *name);
225
226 typedef struct Z_Costs Z_Costs;
227 YAZ_EXPORT int z_Costs (ODR o, Z_Costs **p, int opt, const char *name);
228
229 typedef struct Z_Charge Z_Charge;
230 YAZ_EXPORT int z_Charge (ODR o, Z_Charge **p, int opt, const char *name);
231
232 typedef struct Z_DatabaseList Z_DatabaseList;
233 YAZ_EXPORT int z_DatabaseList (ODR o, Z_DatabaseList **p, int opt, const char *name);
234
235 typedef struct Z_AttributeCombinations Z_AttributeCombinations;
236 YAZ_EXPORT int z_AttributeCombinations (ODR o, Z_AttributeCombinations **p, int opt, const char *name);
237
238 typedef struct Z_AttributeCombination Z_AttributeCombination;
239 YAZ_EXPORT int z_AttributeCombination (ODR o, Z_AttributeCombination **p, int opt, const char *name);
240
241 typedef struct Z_AttributeValueList Z_AttributeValueList;
242 YAZ_EXPORT int z_AttributeValueList (ODR o, Z_AttributeValueList **p, int opt, const char *name);
243
244 typedef struct Z_AttributeOccurrence Z_AttributeOccurrence;
245 YAZ_EXPORT int z_AttributeOccurrence (ODR o, Z_AttributeOccurrence **p, int opt, const char *name);
246 #ifdef __cplusplus
247 }
248 #endif
249 #ifdef __cplusplus
250 extern "C" {
251 #endif
252 struct Z_ExplainRecord {
253         int which;
254         union {
255                 Z_TargetInfo *targetInfo;
256                 Z_DatabaseInfo *databaseInfo;
257                 Z_SchemaInfo *schemaInfo;
258                 Z_TagSetInfo *tagSetInfo;
259                 Z_RecordSyntaxInfo *recordSyntaxInfo;
260                 Z_AttributeSetInfo *attributeSetInfo;
261                 Z_TermListInfo *termListInfo;
262                 Z_ExtendedServicesInfo *extendedServicesInfo;
263                 Z_AttributeDetails *attributeDetails;
264                 Z_TermListDetails *termListDetails;
265                 Z_ElementSetDetails *elementSetDetails;
266                 Z_RetrievalRecordDetails *retrievalRecordDetails;
267                 Z_SortDetails *sortDetails;
268                 Z_ProcessingInformation *processing;
269                 Z_VariantSetInfo *variants;
270                 Z_UnitInfo *units;
271                 Z_CategoryList *categoryList;
272 #define Z_Explain_targetInfo 1
273 #define Z_Explain_databaseInfo 2
274 #define Z_Explain_schemaInfo 3
275 #define Z_Explain_tagSetInfo 4
276 #define Z_Explain_recordSyntaxInfo 5
277 #define Z_Explain_attributeSetInfo 6
278 #define Z_Explain_termListInfo 7
279 #define Z_Explain_extendedServicesInfo 8
280 #define Z_Explain_attributeDetails 9
281 #define Z_Explain_termListDetails 10
282 #define Z_Explain_elementSetDetails 11
283 #define Z_Explain_retrievalRecordDetails 12
284 #define Z_Explain_sortDetails 13
285 #define Z_Explain_processing 14
286 #define Z_Explain_variants 15
287 #define Z_Explain_units 16
288 #define Z_Explain_categoryList 17
289         } u;
290 };
291
292 struct Z_TargetInfo {
293         Z_CommonInfo *commonInfo; /* OPT */
294         Z_InternationalString *name;
295         Z_HumanString *recentNews; /* OPT */
296         Z_IconObject *icon; /* OPT */
297         bool_t *namedResultSets;
298         bool_t *multipleDBsearch;
299         int *maxResultSets; /* OPT */
300         int *maxResultSize; /* OPT */
301         int *maxTerms; /* OPT */
302         Z_IntUnit *timeoutInterval; /* OPT */
303         Z_HumanString *welcomeMessage; /* OPT */
304         Z_ContactInfo *contactInfo; /* OPT */
305         Z_HumanString *description; /* OPT */
306         int num_nicknames;
307         Z_InternationalString **nicknames; /* OPT */
308         Z_HumanString *usageRest; /* OPT */
309         Z_HumanString *paymentAddr; /* OPT */
310         Z_HumanString *hours; /* OPT */
311         int num_dbCombinations;
312         Z_DatabaseList **dbCombinations; /* OPT */
313         int num_addresses;
314         Z_NetworkAddress **addresses; /* OPT */
315         int num_languages;
316         Z_InternationalString **languages; /* OPT */
317         Z_AccessInfo *commonAccessInfo; /* OPT */
318 };
319
320 struct Z_DatabaseInfo {
321         Z_CommonInfo *commonInfo; /* OPT */
322         Z_DatabaseName *name;
323         Odr_null *explainDatabase; /* OPT */
324         int num_nicknames;
325         Z_DatabaseName **nicknames; /* OPT */
326         Z_IconObject *icon; /* OPT */
327         bool_t *userFee;
328         bool_t *available;
329         Z_HumanString *titleString; /* OPT */
330         int num_keywords;
331         Z_HumanString **keywords; /* OPT */
332         Z_HumanString *description; /* OPT */
333         Z_DatabaseList *associatedDbs; /* OPT */
334         Z_DatabaseList *subDbs; /* OPT */
335         Z_HumanString *disclaimers; /* OPT */
336         Z_HumanString *news; /* OPT */
337         int which;
338         union {
339                 int *actualNumber;
340                 int *approxNumber;
341 #define Z_DatabaseInfo_actualNumber 1
342 #define Z_DatabaseInfo_approxNumber 2
343         } u; /* OPT */
344         Z_HumanString *defaultOrder; /* OPT */
345         int *avRecordSize; /* OPT */
346         int *maxRecordSize; /* OPT */
347         Z_HumanString *hours; /* OPT */
348         Z_HumanString *bestTime; /* OPT */
349         char *lastUpdate; /* OPT */
350         Z_IntUnit *updateInterval; /* OPT */
351         Z_HumanString *coverage; /* OPT */
352         bool_t *proprietary; /* OPT */
353         Z_HumanString *copyrightText; /* OPT */
354         Z_HumanString *copyrightNotice; /* OPT */
355         Z_ContactInfo *producerContactInfo; /* OPT */
356         Z_ContactInfo *supplierContactInfo; /* OPT */
357         Z_ContactInfo *submissionContactInfo; /* OPT */
358         Z_AccessInfo *accessInfo; /* OPT */
359 };
360
361 struct Z_TagTypeMapping {
362         int *tagType;
363         Odr_oid *tagSet; /* OPT */
364         Odr_null *defaultTagType; /* OPT */
365 };
366
367 struct Z_SchemaInfo {
368         Z_CommonInfo *commonInfo; /* OPT */
369         Odr_oid *schema;
370         Z_InternationalString *name;
371         Z_HumanString *description; /* OPT */
372         int num_tagTypeMapping;
373         Z_TagTypeMapping **tagTypeMapping; /* OPT */
374         int num_recordStructure;
375         Z_ElementInfo **recordStructure; /* OPT */
376 };
377
378 struct Z_ElementInfo {
379         Z_InternationalString *elementName;
380         Z_Path *elementTagPath;
381         Z_ElementDataType *dataType; /* OPT */
382         bool_t *required;
383         bool_t *repeatable;
384         Z_HumanString *description; /* OPT */
385 };
386
387 struct Z_PathUnit {
388         int *tagType;
389         Z_StringOrNumeric *tagValue;
390 };
391
392 struct Z_Path {
393         int num;
394         Z_PathUnit **elements;
395 };
396
397 struct Z_ElementInfoList {
398         int num;
399         Z_ElementInfo **elements;
400 };
401
402 struct Z_ElementDataType {
403         int which;
404         union {
405                 Z_PrimitiveDataType *primitive;
406                 Z_ElementInfoList *structured;
407 #define Z_ElementDataType_primitive 1
408 #define Z_ElementDataType_structured 2
409         } u;
410 };
411
412 #define Z_PrimitiveDataType_octetString 0
413 #define Z_PrimitiveDataType_numeric 1
414 #define Z_PrimitiveDataType_date 2
415 #define Z_PrimitiveDataType_external 3
416 #define Z_PrimitiveDataType_string 4
417 #define Z_PrimitiveDataType_trueOrFalse 5
418 #define Z_PrimitiveDataType_oid 6
419 #define Z_PrimitiveDataType_intUnit 7
420 #define Z_PrimitiveDataType_empty 8
421 #define Z_PrimitiveDataType_noneOfTheAbove 100
422
423 struct Z_TagSetElements {
424         Z_InternationalString *elementname;
425         int num_nicknames;
426         Z_InternationalString **nicknames; /* OPT */
427         Z_StringOrNumeric *elementTag;
428         Z_HumanString *description; /* OPT */
429         Z_PrimitiveDataType *dataType; /* OPT */
430         Z_OtherInformation *otherTagInfo; /* OPT */
431 };
432
433 struct Z_TagSetInfo {
434         Z_CommonInfo *commonInfo; /* OPT */
435         Odr_oid *tagSet;
436         Z_InternationalString *name;
437         Z_HumanString *description; /* OPT */
438         int num_elements;
439         Z_TagSetElements **elements; /* OPT */
440 };
441
442 struct Z_RecordSyntaxInfo {
443         Z_CommonInfo *commonInfo; /* OPT */
444         Odr_oid *recordSyntax;
445         Z_InternationalString *name;
446         int num_transferSyntaxes;
447         Odr_oid **transferSyntaxes; /* OPT */
448         Z_HumanString *description; /* OPT */
449         Z_InternationalString *asn1Module; /* OPT */
450         int num_abstractStructure;
451         Z_ElementInfo **abstractStructure; /* OPT */
452 };
453
454 struct Z_AttributeSetInfo {
455         Z_CommonInfo *commonInfo; /* OPT */
456         Z_AttributeSetId *attributeSet;
457         Z_InternationalString *name;
458         int num_attributes;
459         Z_AttributeType **attributes; /* OPT */
460         Z_HumanString *description; /* OPT */
461 };
462
463 struct Z_AttributeType {
464         Z_InternationalString *name; /* OPT */
465         Z_HumanString *description; /* OPT */
466         int *attributeType;
467         int num_attributeValues;
468         Z_AttributeDescription **attributeValues;
469 };
470
471 struct Z_AttributeDescription {
472         Z_InternationalString *name; /* OPT */
473         Z_HumanString *description; /* OPT */
474         Z_StringOrNumeric *attributeValue;
475         int num_equivalentAttributes;
476         Z_StringOrNumeric **equivalentAttributes; /* OPT */
477 };
478
479 struct Z_TermListElement {
480         Z_InternationalString *name;
481         Z_HumanString *title; /* OPT */
482 #define Z_TermListElement_optimized 0
483 #define Z_TermListElement_normal 1
484 #define Z_TermListElement_expensive 2
485 #define Z_TermListElement_filter 3
486         int *searchCost; /* OPT */
487         bool_t *scanable;
488         int num_broader;
489         Z_InternationalString **broader; /* OPT */
490         int num_narrower;
491         Z_InternationalString **narrower; /* OPT */
492 };
493
494 struct Z_TermListInfo {
495         Z_CommonInfo *commonInfo; /* OPT */
496         Z_DatabaseName *databaseName;
497         int num_termLists;
498         Z_TermListElement **termLists;
499 };
500
501 struct Z_ExtendedServicesInfo {
502         Z_CommonInfo *commonInfo; /* OPT */
503         Odr_oid *type;
504         Z_InternationalString *name; /* OPT */
505         bool_t *privateType;
506         bool_t *restrictionsApply;
507         bool_t *feeApply;
508         bool_t *available;
509         bool_t *retentionSupported;
510 #define Z_ExtendedServicesInfo_waitSupported 1
511 #define Z_ExtendedServicesInfo_waitAlways 2
512 #define Z_ExtendedServicesInfo_waitNotSupported 3
513 #define Z_ExtendedServicesInfo_depends 4
514 #define Z_ExtendedServicesInfo_notSaying 5
515         int *waitAction;
516         Z_HumanString *description; /* OPT */
517         Z_External *specificExplain; /* OPT */
518         Z_InternationalString *esASN; /* OPT */
519 };
520
521 struct Z_AttributeDetails {
522         Z_CommonInfo *commonInfo; /* OPT */
523         Z_DatabaseName *databaseName;
524         int num_attributesBySet;
525         Z_AttributeSetDetails **attributesBySet; /* OPT */
526         Z_AttributeCombinations *attributeCombinations; /* OPT */
527 };
528
529 struct Z_AttributeSetDetails {
530         Z_AttributeSetId *attributeSet;
531         int num_attributesByType;
532         Z_AttributeTypeDetails **attributesByType;
533 };
534
535 struct Z_AttributeTypeDetails {
536         int *attributeType;
537         Z_OmittedAttributeInterpretation *defaultIfOmitted; /* OPT */
538         int num_attributeValues;
539         Z_AttributeValue **attributeValues; /* OPT */
540 };
541
542 struct Z_OmittedAttributeInterpretation {
543         Z_StringOrNumeric *defaultValue; /* OPT */
544         Z_HumanString *defaultDescription; /* OPT */
545 };
546
547 struct Z_AttributeValue {
548         Z_StringOrNumeric *value;
549         Z_HumanString *description; /* OPT */
550         int num_subAttributes;
551         Z_StringOrNumeric **subAttributes; /* OPT */
552         int num_superAttributes;
553         Z_StringOrNumeric **superAttributes; /* OPT */
554         Odr_null *partialSupport; /* OPT */
555 };
556
557 struct Z_EScanInfo {
558         int *maxStepSize; /* OPT */
559         Z_HumanString *collatingSequence; /* OPT */
560         bool_t *increasing; /* OPT */
561 };
562
563 struct Z_TermListDetails {
564         Z_CommonInfo *commonInfo; /* OPT */
565         Z_InternationalString *termListName;
566         Z_HumanString *description; /* OPT */
567         Z_AttributeCombinations *attributes; /* OPT */
568         Z_EScanInfo *scanInfo; /* OPT */
569         int *estNumberTerms; /* OPT */
570         int num_sampleTerms;
571         Z_Term **sampleTerms; /* OPT */
572 };
573
574 struct Z_ElementSetDetails {
575         Z_CommonInfo *commonInfo; /* OPT */
576         Z_DatabaseName *databaseName;
577         Z_ElementSetName *elementSetName;
578         Odr_oid *recordSyntax;
579         Odr_oid *schema;
580         Z_HumanString *description; /* OPT */
581         int num_detailsPerElement;
582         Z_PerElementDetails **detailsPerElement; /* OPT */
583 };
584
585 struct Z_RetrievalRecordDetails {
586         Z_CommonInfo *commonInfo; /* OPT */
587         Z_DatabaseName *databaseName;
588         Odr_oid *schema;
589         Odr_oid *recordSyntax;
590         Z_HumanString *description; /* OPT */
591         int num_detailsPerElement;
592         Z_PerElementDetails **detailsPerElement; /* OPT */
593 };
594
595 struct Z_PerElementDetails {
596         Z_InternationalString *name; /* OPT */
597         Z_RecordTag *recordTag; /* OPT */
598         int num_schemaTags;
599         Z_Path **schemaTags; /* OPT */
600         int *maxSize; /* OPT */
601         int *minSize; /* OPT */
602         int *avgSize; /* OPT */
603         int *fixedSize; /* OPT */
604         bool_t *repeatable;
605         bool_t *required;
606         Z_HumanString *description; /* OPT */
607         Z_HumanString *contents; /* OPT */
608         Z_HumanString *billingInfo; /* OPT */
609         Z_HumanString *restrictions; /* OPT */
610         int num_alternateNames;
611         Z_InternationalString **alternateNames; /* OPT */
612         int num_genericNames;
613         Z_InternationalString **genericNames; /* OPT */
614         Z_AttributeCombinations *searchAccess; /* OPT */
615 };
616
617 struct Z_RecordTag {
618         Z_StringOrNumeric *qualifier; /* OPT */
619         Z_StringOrNumeric *tagValue;
620 };
621
622 struct Z_SortDetails {
623         Z_CommonInfo *commonInfo; /* OPT */
624         Z_DatabaseName *databaseName;
625         int num_sortKeys;
626         Z_SortKeyDetails **sortKeys; /* OPT */
627 };
628
629 struct Z_SortKeyDetails {
630         Z_HumanString *description; /* OPT */
631         int num_elementSpecifications;
632         Z_Specification **elementSpecifications; /* OPT */
633         Z_AttributeCombinations *attributeSpecifications; /* OPT */
634         int which;
635         union {
636                 Odr_null *character;
637                 Odr_null *numeric;
638                 Z_HumanString *structured;
639 #define Z_SortKeyDetails_character 1
640 #define Z_SortKeyDetails_numeric 2
641 #define Z_SortKeyDetails_structured 3
642         } u; /* OPT */
643 #define Z_SortKeyDetails_always 0
644 #define Z_SortKeyDetails_never 1
645 #define Z_SortKeyDetails_default_yes 2
646 #define Z_SortKeyDetails_default_no 3
647         int *caseSensitivity; /* OPT */
648 };
649
650 struct Z_ProcessingInformation {
651         Z_CommonInfo *commonInfo; /* OPT */
652         Z_DatabaseName *databaseName;
653 #define Z_ProcessingInformation_access 0
654 #define Z_ProcessingInformation_search 1
655 #define Z_ProcessingInformation_retrieval 2
656 #define Z_ProcessingInformation_record_presentation 3
657 #define Z_ProcessingInformation_record_handling 4
658         int *processingContext;
659         Z_InternationalString *name;
660         Odr_oid *oid;
661         Z_HumanString *description; /* OPT */
662         Z_External *instructions; /* OPT */
663 };
664
665 struct Z_VariantSetInfo {
666         Z_CommonInfo *commonInfo; /* OPT */
667         Odr_oid *variantSet;
668         Z_InternationalString *name;
669         int num_variants;
670         Z_VariantClass **variants; /* OPT */
671 };
672
673 struct Z_VariantClass {
674         Z_InternationalString *name; /* OPT */
675         Z_HumanString *description; /* OPT */
676         int *variantClass;
677         int num_variantTypes;
678         Z_VariantType **variantTypes;
679 };
680
681 struct Z_VariantType {
682         Z_InternationalString *name; /* OPT */
683         Z_HumanString *description; /* OPT */
684         int *variantType;
685         Z_VariantValue *variantValue; /* OPT */
686 };
687
688 struct Z_VariantValue {
689         Z_PrimitiveDataType *dataType;
690         Z_ValueSet *values; /* OPT */
691 };
692
693 struct Z_ValueSetEnumerated {
694         int num;
695         Z_ValueDescription **elements;
696 };
697
698 struct Z_ValueSet {
699         int which;
700         union {
701                 Z_ValueRange *range;
702                 Z_ValueSetEnumerated *enumerated;
703 #define Z_ValueSet_range 1
704 #define Z_ValueSet_enumerated 2
705         } u;
706 };
707
708 struct Z_ValueRange {
709         Z_ValueDescription *lower; /* OPT */
710         Z_ValueDescription *upper; /* OPT */
711 };
712
713 struct Z_ValueDescription {
714         int which;
715         union {
716                 int *integer;
717                 Z_InternationalString *string;
718                 Odr_oct *octets;
719                 Odr_oid *oid;
720                 Z_Unit *unit;
721                 Z_IntUnit *valueAndUnit;
722 #define Z_ValueDescription_integer 1
723 #define Z_ValueDescription_string 2
724 #define Z_ValueDescription_octets 3
725 #define Z_ValueDescription_oid 4
726 #define Z_ValueDescription_unit 5
727 #define Z_ValueDescription_valueAndUnit 6
728         } u;
729 };
730
731 struct Z_UnitInfo {
732         Z_CommonInfo *commonInfo; /* OPT */
733         Z_InternationalString *unitSystem;
734         Z_HumanString *description; /* OPT */
735         int num_units;
736         Z_UnitType **units; /* OPT */
737 };
738
739 struct Z_UnitType {
740         Z_InternationalString *name; /* OPT */
741         Z_HumanString *description; /* OPT */
742         Z_StringOrNumeric *unitType;
743         int num_units;
744         Z_Units **units;
745 };
746
747 struct Z_Units {
748         Z_InternationalString *name; /* OPT */
749         Z_HumanString *description; /* OPT */
750         Z_StringOrNumeric *unit;
751 };
752
753 struct Z_CategoryList {
754         Z_CommonInfo *commonInfo; /* OPT */
755         int num_categories;
756         Z_CategoryInfo **categories;
757 };
758
759 struct Z_CategoryInfo {
760         Z_InternationalString *category;
761         Z_InternationalString *originalCategory; /* OPT */
762         Z_HumanString *description; /* OPT */
763         Z_InternationalString *asn1Module; /* OPT */
764 };
765
766 struct Z_CommonInfo {
767         char *dateAdded; /* OPT */
768         char *dateChanged; /* OPT */
769         char *expiry; /* OPT */
770         Z_LanguageCode *humanStringLanguage; /* OPT */
771         Z_OtherInformation *otherInfo; /* OPT */
772 };
773
774 struct Z_HumanStringUnit {
775         Z_LanguageCode *language; /* OPT */
776         Z_InternationalString *text;
777 };
778
779 struct Z_HumanString {
780         int num_strings;
781         Z_HumanStringUnit **strings;
782 };
783
784 struct Z_IconObjectUnit {
785         int which;
786         union {
787                 Z_InternationalString *ianaType;
788                 Z_InternationalString *z3950type;
789                 Z_InternationalString *otherType;
790 #define Z_IconObjectUnit_ianaType 1
791 #define Z_IconObjectUnit_z3950type 2
792 #define Z_IconObjectUnit_otherType 3
793         } u;
794         Odr_oct *content;
795 };
796
797 struct Z_IconObject {
798         int num;
799         Z_IconObjectUnit **elements;
800 };
801
802
803
804 struct Z_ContactInfo {
805         Z_InternationalString *name; /* OPT */
806         Z_HumanString *description; /* OPT */
807         Z_HumanString *address; /* OPT */
808         Z_InternationalString *email; /* OPT */
809         Z_InternationalString *phone; /* OPT */
810 };
811
812 struct Z_NetworkAddressIA {
813         Z_InternationalString *hostAddress;
814         int *port;
815 };
816
817 struct Z_NetworkAddressOPA {
818         Z_InternationalString *pSel;
819         Z_InternationalString *sSel; /* OPT */
820         Z_InternationalString *tSel; /* OPT */
821         Z_InternationalString *nSap;
822 };
823
824 struct Z_NetworkAddressOther {
825         Z_InternationalString *type;
826         Z_InternationalString *address;
827 };
828
829 struct Z_NetworkAddress {
830         int which;
831         union {
832                 Z_NetworkAddressIA *internetAddress;
833                 Z_NetworkAddressOPA *osiPresentationAddress;
834                 Z_NetworkAddressOther *other;
835 #define Z_NetworkAddress_iA 1
836 #define Z_NetworkAddress_oPA 2
837 #define Z_NetworkAddress_other 3
838         } u;
839 };
840
841 struct Z_AccessInfo {
842         int num_queryTypesSupported;
843         Z_QueryTypeDetails **queryTypesSupported; /* OPT */
844         int num_diagnosticsSets;
845         Odr_oid **diagnosticsSets; /* OPT */
846         int num_attributeSetIds;
847         Z_AttributeSetId **attributeSetIds; /* OPT */
848         int num_schemas;
849         Odr_oid **schemas; /* OPT */
850         int num_recordSyntaxes;
851         Odr_oid **recordSyntaxes; /* OPT */
852         int num_resourceChallenges;
853         Odr_oid **resourceChallenges; /* OPT */
854         Z_AccessRestrictions *restrictedAccess; /* OPT */
855         Z_Costs *costInfo; /* OPT */
856         int num_variantSets;
857         Odr_oid **variantSets; /* OPT */
858         int num_elementSetNames;
859         Z_ElementSetName **elementSetNames; /* OPT */
860         int num_unitSystems;
861         Z_InternationalString **unitSystems;
862 };
863
864 struct Z_QueryTypeDetails {
865         int which;
866         union {
867                 Z_PrivateCapabilities *zprivate;
868                 Z_RpnCapabilities *rpn;
869                 Z_Iso8777Capabilities *iso8777;
870                 Z_HumanString *z39_58;
871                 Z_RpnCapabilities *erpn;
872                 Z_HumanString *rankedList;
873 #define Z_QueryTypeDetails_private 1
874 #define Z_QueryTypeDetails_rpn 2
875 #define Z_QueryTypeDetails_iso8777 3
876 #define Z_QueryTypeDetails_z39_58 4
877 #define Z_QueryTypeDetails_erpn 5
878 #define Z_QueryTypeDetails_rankedList 6
879         } u;
880 };
881
882 struct Z_PrivateCapOperator {
883         Z_InternationalString *roperator;
884         Z_HumanString *description; /* OPT */
885 };
886
887 struct Z_PrivateCapabilities {
888         int num_operators;
889         Z_PrivateCapOperator **operators; /* OPT */
890         int num_searchKeys;
891         Z_SearchKey **searchKeys; /* OPT */
892         int num_description;
893         Z_HumanString **description; /* OPT */
894 };
895
896 struct Z_RpnCapabilities {
897         int num_operators;
898         int **operators; /* OPT */
899         bool_t *resultSetAsOperandSupported;
900         bool_t *restrictionOperandSupported;
901         Z_ProximitySupport *proximity; /* OPT */
902 };
903
904 struct Z_Iso8777Capabilities {
905         int num_searchKeys;
906         Z_SearchKey **searchKeys;
907         Z_HumanString *restrictions; /* OPT */
908 };
909
910 struct Z_ProxSupportPrivate {
911         int *unit;
912         Z_HumanString *description; /* OPT */
913 };
914
915 struct Z_ProxSupportUnit {
916         int which;
917         union {
918                 int *known;
919                 Z_ProxSupportPrivate *zprivate;
920 #define Z_ProxSupportUnit_known 1
921 #define Z_ProxSupportUnit_private 2
922         } u;
923 };
924
925 struct Z_ProximitySupport {
926         bool_t *anySupport;
927         int num_unitsSupported;
928         Z_ProxSupportUnit **unitsSupported; /* OPT */
929 };
930
931 struct Z_SearchKey {
932         Z_InternationalString *searchKey;
933         Z_HumanString *description; /* OPT */
934 };
935
936 struct Z_AccessRestrictionsUnit {
937 #define Z_AccessRestrictionsUnit_any 0
938 #define Z_AccessRestrictionsUnit_search 1
939 #define Z_AccessRestrictionsUnit_present 2
940 #define Z_AccessRestrictionsUnit_specific_elements 3
941 #define Z_AccessRestrictionsUnit_extended_services 4
942 #define Z_AccessRestrictionsUnit_by_database 5
943         int *accessType;
944         Z_HumanString *accessText; /* OPT */
945         int num_accessChallenges;
946         Odr_oid **accessChallenges; /* OPT */
947 };
948
949 struct Z_AccessRestrictions {
950         int num;
951         Z_AccessRestrictionsUnit **elements;
952 };
953
954 struct Z_CostsOtherCharge {
955         Z_HumanString *forWhat;
956         Z_Charge *charge;
957 };
958
959 struct Z_Costs {
960         Z_Charge *connectCharge; /* OPT */
961         Z_Charge *connectTime; /* OPT */
962         Z_Charge *displayCharge; /* OPT */
963         Z_Charge *searchCharge; /* OPT */
964         Z_Charge *subscriptCharge; /* OPT */
965         int num_otherCharges;
966         Z_CostsOtherCharge **otherCharges; /* OPT */
967 };
968
969 struct Z_Charge {
970         Z_IntUnit *cost;
971         Z_Unit *perWhat; /* OPT */
972         Z_HumanString *text; /* OPT */
973 };
974
975 struct Z_DatabaseList {
976         int num_databases;
977         Z_DatabaseName **databases;
978 };
979
980 struct Z_AttributeCombinations {
981         Z_AttributeSetId *defaultAttributeSet;
982         int num_legalCombinations;
983         Z_AttributeCombination **legalCombinations;
984 };
985
986 struct Z_AttributeCombination {
987         int num_occurrences;
988         Z_AttributeOccurrence **occurrences;
989 };
990
991 struct Z_AttributeValueList {
992         int num_attributes;
993         Z_StringOrNumeric **attributes;
994 };
995
996 struct Z_AttributeOccurrence {
997         Z_AttributeSetId *attributeSet; /* OPT */
998         int *attributeType;
999         Odr_null *mustBeSupplied; /* OPT */
1000         int which;
1001         union {
1002                 Odr_null *any_or_none;
1003                 Z_AttributeValueList *specific;
1004 #define Z_AttributeOcc_any_or_none 1
1005 #define Z_AttributeOcc_specific 2
1006         } attributeValues;
1007 };
1008
1009 #ifdef __cplusplus
1010 }
1011 #endif
1012 #endif