source: trunk/gsdl/packages/yaz/include/yaz/prt-exp.h@ 1343

Last change on this file since 1343 was 1343, checked in by johnmcp, 24 years ago

Added the YAZ toolkit source to the packages directory (for z39.50 stuff)

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