2 * Copyright (c) 1995, Index Data.
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,
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.
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.
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
29 typedef struct Z_CommonInfo
31 char *dateAdded; /* OPTIONAL */
32 char *dateChanged; /* OPTIONAL */
33 char *expiry; /* OPTIONAL */
34 char *humanStringLanguage; /* OPTIONAL */
35 Z_OtherInformation *otherInfo; /* OPTIONAL */
38 typedef struct Z_HumanStringUnit
40 char *language; /* OPTIONAL */
44 typedef struct Z_HumanString
47 Z_HumanStringUnit **strings;
50 typedef struct Z_IconObjectUnit
54 Z_IconObject_ianaType,
55 Z_IconObject_z3950type,
56 Z_IconObject_otherType
62 typedef struct Z_IconObject
65 Z_IconObjectUnit **iconUnits;
68 typedef struct Z_ContactInfo
70 char *name; /* OPTIONAL */
71 Z_HumanString *description; /* OPTIONAL */
72 Z_HumanString *address; /* OPTIONAL */
73 char *email; /* OPTIONAL */
74 char *phone; /* OPTIONAL */
77 typedef struct Z_NetworkAddressIA
83 typedef struct Z_NetworkAddressOPA
86 char *sSel; /* OPTIONAL */
87 char *tSel; /* OPTIONAL */
89 } Z_NetworkAddressOPA;
91 typedef struct Z_NetworkAddressOther
95 } Z_NetworkAddressOther;
97 typedef struct Z_NetworkAddress
102 Z_NetworkAddress_oPA,
103 Z_NetworkAddress_other
107 Z_NetworkAddressIA *internetAddress;
108 Z_NetworkAddressOPA *osiPresentationAddress;
109 Z_NetworkAddressOther *other;
113 typedef struct Z_PrivateCapOperator
116 Z_HumanString *description; /* OPTIONAL */
117 } Z_PrivateCapOperator;
119 typedef struct Z_SearchKey
122 Z_HumanString *description; /* OPTIONAL */
125 typedef struct Z_PrivateCapabilities
128 Z_PrivateCapOperator **operators; /* OPTIONAL */
130 Z_SearchKey **searchKeys; /* OPTIONAL */
132 Z_HumanString **description; /* OPTIONAL */
133 } Z_PrivateCapabilities;
135 typedef struct Z_ProxSupportPrivate
138 Z_HumanString *description; /* OPTIONAL */
139 } Z_ProxSupportPrivate;
141 typedef struct Z_ProxSupportUnit
145 Z_ProxSupportUnit_known,
146 Z_ProxSupportUnit_private
151 Z_ProxSupportPrivate *private;
155 typedef struct Z_ProximitySupport
158 int num_unitsSupported;
159 Z_ProxSupportUnit **unitsSupported; /* OPTIONAL */
160 } Z_ProximitySupport;
162 typedef struct Z_RpnCapabilities
165 int **operators; /* OPTIONAL */
166 bool_t *resultSetAsOperandSupported;
167 bool_t *restrictionOperandSupported;
168 Z_ProximitySupport *proximity; /* OPTIONAL */
171 typedef struct Z_Iso8777Capabilities
174 Z_SearchKey **searchKeys;
175 Z_HumanString *restrictions; /* OPTIONAL */
176 } Z_Iso8777Capabilities;
178 typedef struct Z_QueryTypeDetails
182 Z_QueryTypeDetails_private,
183 Z_QueryTypeDetails_rpn,
184 Z_QueryTypeDetails_iso8777,
185 Z_QueryTypeDetails_z3958,
186 Z_QueryTypeDetails_erpn,
187 Z_QueryTypeDetails_rankedList
191 Z_PrivateCapabilities *private;
192 Z_RpnCapabilities *rpn;
193 Z_Iso8777Capabilities *iso8777;
194 Z_HumanString *z3958;
195 Z_RpnCapabilities *erpn;
196 Z_HumanString *rankedList;
198 } Z_QueryTypeDetails;
200 typedef struct Z_AccessRestrictionsUnit
203 #define Z_AccessRestrictions_any 0
204 #define Z_AccessRestrictions_search 1
205 #define Z_AccessRestrictions_present 2
206 #define Z_AccessRestrictions_specific_elements 3
207 #define Z_AccessRestrictions_extended_services 4
208 #define Z_AccessRestrictions_by database 5
209 Z_HumanString *accessText; /* OPTIONAL */
210 int num_accessChallenges;
211 Odr_oid **accessChallenges; /* OPTIONAL */
212 } Z_AccessRestrictionsUnit;
214 typedef struct Z_AccessRestrictions
216 int num_restrictions;
217 Z_AccessRestrictionsUnit **restrictions;
218 } Z_AccessRestrictions;
220 typedef struct Z_Charge
223 Z_Unit *perWhat; /* OPTIONAL */
224 Z_HumanString *text; /* OPTIONAL */
227 typedef struct Z_CostsOtherCharge
229 Z_HumanString *forWhat;
231 } Z_CostsOtherCharge;
233 typedef struct Z_Costs
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 */
244 typedef struct Z_AccessInfo
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 */
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 */
261 Odr_oid **variantSets; /* OPTIONAL */
262 int num_elementSetNames;
263 char **elementSetNames; /* OPTIONAL */
268 typedef struct Z_DatabaseList
271 Z_DatabaseName **databases;
274 typedef struct Z_AttributeValueList
277 Z_StringOrNumeric **attributes;
278 } Z_AttributeValueList;
280 typedef struct Z_AttributeOccurrence
282 Odr_oid *attributeSet; /* OPTIONAL */
284 Odr_null *mustBeSupplied; /* OPTIONAL */
287 Z_AttributeOcc_anyOrNone,
288 Z_AttributeOcc_specific
293 Z_AttributeValueList *specific;
295 } Z_AttributeOccurrence;
297 typedef struct Z_AttributeCombination
300 Z_AttributeOccurrence **occurrences;
301 } Z_AttributeCombination;
303 typedef struct Z_AttributeCombinations
305 Odr_oid *defaultAttributeSet;
306 int num_legalCombinations;
307 Z_AttributeCombination **legalCombinations;
308 } Z_AttributeCombinations;
310 typedef struct Z_AttributeValue
312 Z_StringOrNumeric *value;
313 Z_HumanString *description; /* OPTIONAL */
314 int num_subAttributes;
315 Z_StringOrNumeric **subAttributes; /* OPTIONAL */
316 int num_superAttributes;
317 Z_StringOrNumeric **superAttributes; /* OPTIONAL */
318 Odr_null *partialSupport; /* OPTIONAL */
321 typedef struct Z_TargetInfo
323 Z_CommonInfo *commonInfo; /* OPTIONAL */
329 * non-key brief elements
331 Z_HumanString *recentNews; /* OPTIONAL */
332 Z_IconObject *icon; /* OPTIONAL */
333 bool_t *namedResultSets;
334 bool_t *multipleDBsearch;
335 int *maxResultSets; /* OPTIONAL */
336 int *maxResultSize; /* OPTIONAL */
337 int *maxTerms; /* OPTIONAL */
338 Z_IntUnit *timeoutInterval; /* OPTIONAL */
339 Z_HumanString *welcomeMessage; /* OPTIONAL */
343 Z_ContactInfo *contactInfo; /* OPTIONAL */
344 Z_HumanString *description; /* OPTIONAL */
347 Z_HumanString *usageRest; /* OPTIONAL */
348 Z_HumanString *paymentAddr; /* OPTIONAL */
349 Z_HumanString *hours; /* OPTIONAL */
350 int num_dbCombinations;
351 Z_DatabaseList **dbCombinations; /* OPTIONAL */
353 Z_NetworkAddress **addresses; /* OPTIONAL */
354 Z_AccessInfo *commonAccessInfo; /* OPTIONAL */
357 typedef struct Z_DatabaseInfo
359 Z_CommonInfo *commonInfo; /* OPTIONAL */
363 Z_DatabaseName *name;
367 Odr_null *explainDatabase; /* OPTIONAL */
369 Z_DatabaseName **nicknames; /* OPTIONAL */
370 Z_IconObject *icon; /* OPTIONAL */
373 Z_HumanString *titleString; /* OPTIONAL */
375 * Non-brief elements.
378 Z_HumanString **keywords; /* OPTIONAL */
379 Z_HumanString *description; /* OPTIONAL */
380 Z_DatabaseList *associatedDbs; /* OPTIONAL */
381 Z_DatabaseList *subDbs; /* OPTIONAL */
382 Z_HumanString *disclaimers; /* OPTIONAL */
383 Z_HumanString *news; /* OPTIONAL */
386 Z_Exp_RecordCount_actualNumber,
387 Z_Exp_RecordCount_approxNumber
389 int *recordCount; /* OPTIONAL */
390 Z_HumanString *defaultOrder; /* OPTIONAL */
391 int *avRecordSize; /* OPTIONAL */
392 int *maxRecordSize; /* OPTIONAL */
393 Z_HumanString *hours; /* OPTIONAL */
394 Z_HumanString *bestTime; /* OPTIONAL */
395 char *lastUpdate; /* OPTIONAL */
396 Z_IntUnit *updateInterval; /* OPTIONAL */
397 Z_HumanString *coverage; /* OPTIONAL */
398 bool_t *proprietary; /* OPTIONAL */
399 Z_HumanString *copyrightText; /* OPTIONAL */
400 Z_HumanString *copyrightNotice; /* OPTIONAL */
401 Z_ContactInfo *producerContactInfo; /* OPTIONAL */
402 Z_ContactInfo *supplierContactInfo; /* OPTIONAL */
403 Z_ContactInfo *submissionContactInfo; /* OPTIONAL */
404 Z_AccessInfo *accessInfo; /* OPTIONAL */
407 typedef struct Z_TagTypeMapping
410 Odr_oid *tagSet; /* OPTIONAL */
411 Odr_null *defaultTagType; /* OPTIONAL */
414 typedef struct Z_PathUnit
417 Z_StringOrNumeric *tagValue;
420 typedef struct Z_Path
426 struct Z_ElementDataType;
427 typedef struct Z_ElementDataType Z_ElementDataType;
429 typedef struct Z_ElementInfo
432 Z_Path *elementTagPath;
433 Z_ElementDataType *dataType; /* OPTIONAL */
436 Z_HumanString *description; /* OPTIONAL */
439 typedef struct Z_ElementInfoList
442 Z_ElementInfo **list;
445 struct Z_ElementDataType
449 Z_ElementDataType_primitive,
450 Z_ElementDataType_structured
455 #define Z_PrimitiveElement_octetString 0
456 #define Z_PrimitiveElement_numeric 1
457 #define Z_PrimitiveElement_date 2
458 #define Z_PrimitiveElement_external 3
459 #define Z_PrimitiveElement_string 4
460 #define Z_PrimitiveElement_trueOrFalse 5
461 #define Z_PrimitiveElement_oid 6
462 #define Z_PrimitiveElement_intUnit 7
463 #define Z_PrimitiveElement_empty 8
464 #define Z_PrimitiveElement_noneOfTheAbove 100
465 Z_ElementInfoList *structured;
469 typedef struct Z_TagSetInfoElements
473 char **nicknames; /* OPTIONAL */
474 Z_StringOrNumeric *elementTag;
475 Z_HumanString *description; /* OPTIONAL */
476 int *dataType; /* OPTIONAL */
477 /* (value as in Z_PrimitiveElement) */
478 Z_OtherInformation *otherTagInfo; /* OPTIONAL */
479 } Z_TagSetInfoElements;
481 typedef struct Z_SchemaInfo
483 Z_CommonInfo *commonInfo; /* OPTIONAL */
495 Z_HumanString *description; /* OPTIONAL */
496 int num_tagTypeMapping;
497 Z_TagTypeMapping **tagTypeMapping; /* OPTIONAL */
498 int num_recordStructure;
499 Z_ElementInfo **recordStructure; /* OPTIONAL */
503 typedef struct Z_TagSetInfo
505 Z_CommonInfo *commonInfo; /* OPTIONAL */
517 Z_HumanString *description; /* OPTIONAL */
519 Z_TagSetInfoElements **elements; /* OPTIONAL */
522 typedef struct Z_RecordSyntaxInfo
524 Z_CommonInfo *commonInfo; /* OPTIONAL */
528 Odr_oid *recordSyntax;
536 int num_transferSyntaxes;
537 Odr_oid **transferSyntaxes; /* OPTIONAL */
538 Z_HumanString *description; /* OPTIONAL */
539 char *asn1Module; /* OPTIONAL */
540 int num_abstractStructure;
541 Z_ElementInfo **abstractStructure; /* OPTIONAL */
542 } Z_RecordSyntaxInfo;
544 typedef struct Z_AttributeDescription
546 char *name; /* OPTIONAL */
547 Z_HumanString *description; /* OPTIONAL */
548 Z_StringOrNumeric *attributeValue;
549 int num_equivalentAttributes;
550 Z_StringOrNumeric **equivalentAttributes; /* OPTIONAL */
551 } Z_AttributeDescription;
553 typedef struct Z_AttributeType
555 char *name; /* OPTIONAL */
556 Z_HumanString *description; /* OPTIONAL */
558 int num_attributeValues;
559 Z_AttributeDescription **attributeValues;
562 typedef struct Z_AttributeSetInfo
564 Z_CommonInfo *commonInfo; /* OPTIONAL */
568 Odr_oid *attributeSet;
577 Z_AttributeType **attributes; /* OPTIONAL */
578 Z_HumanString *description; /* OPTIONAL */
579 } Z_AttributeSetInfo;
581 typedef struct Z_TermListElement
584 Z_HumanString *title; /* OPTIONAL */
585 int *searchCost; /* OPTIONAL */
586 #define Z_TermListInfo_optimized 0
587 #define Z_TermListInfo_normal 1
588 #define Z_TermListInfo_expensive 2
589 #define Z_TermListInfo_filter 3
592 char **broader; /* OPTIONAL */
594 char **narrower; /* OPTIONAL */
597 typedef struct Z_TermListInfo
599 Z_CommonInfo *commonInfo; /* OPTIONAL */
603 Z_DatabaseName *databaseName;
608 Z_TermListElement **termLists;
611 typedef struct Z_ExtendedServicesInfo
613 Z_CommonInfo *commonInfo; /* OPTIONAL */
621 char *name; /* OPTIONAL */
623 bool_t *restrictionsApply;
626 bool_t *retentionSupported;
628 #define Z_ExtendedServicesInfo_waitSupported 1
629 #define Z_ExtendedServicesInfo_waitAlways 2
630 #define Z_ExtendedServicesInfo_waitNotSupported 3
631 #define Z_ExtendedServicesInfo_depends 4
632 #define Z_ExtendedServicesInfo_notSaying 5
636 Z_HumanString *description; /* OPTIONAL */
637 Z_External *specificExplain; /* OPTIONAL */
638 char *esASN; /* OPTIONAL */
639 } Z_ExtendedServicesInfo;
641 typedef struct Z_OmittedAttributeInterpretation
643 Z_StringOrNumeric *defaultValue; /* OPTIONAL */
644 Z_HumanString *defaultDescription; /* OPTIONAL */
645 } Z_OmittedAttributeInterpretation;
647 typedef struct Z_AttributeTypeDetails
650 Z_OmittedAttributeInterpretation *optionalType; /* OPTIONAL */
651 int num_attributeValues;
652 Z_AttributeValue **attributeValues; /* OPTIONAL */
653 } Z_AttributeTypeDetails;
655 typedef struct Z_AttributeSetDetails
657 Odr_oid *attributeSet;
658 int num_attributesByType;
659 Z_AttributeTypeDetails **attributesByType;
660 } Z_AttributeSetDetails;
662 typedef struct Z_AttributeDetails
664 Z_CommonInfo *commonInfo; /* OPTIONAL */
668 Z_DatabaseName *databaseName;
672 int num_attributesBySet;
673 Z_AttributeSetDetails **attributesBySet; /* OPTIONAL */
674 Z_AttributeCombinations *attributeCombinations; /* OPTIONAL */
675 } Z_AttributeDetails;
677 typedef struct Z_EScanInfo
679 int *maxStepSize; /* OPTIONAL */
680 Z_HumanString *collatingSequence; /* OPTIONAL */
681 bool_t *increasing; /* OPTIONAL */
684 typedef struct Z_TermListDetails
686 Z_CommonInfo *commonInfo; /* OPTIONAL */
694 Z_HumanString *description; /* OPTIONAL */
695 Z_AttributeCombinations *attributes; /* OPTIONAL */
696 Z_EScanInfo *scanInfo; /* OPTIONAL */
697 int *estNumberTerms; /* OPTIONAL */
699 Z_Term **sampleTerms; /* OPTIONAL */
702 typedef struct Z_RecordTag
704 Z_StringOrNumeric *qualifier; /* OPTIONAL */
705 Z_StringOrNumeric *tagValue;
708 typedef struct Z_PerElementDetails
710 char *name; /* OPTIONAL */
711 Z_RecordTag *recordTag; /* OPTIONAL */
713 Z_Path **schemaTags; /* OPTIONAL */
714 int *maxSize; /* OPTIONAL */
715 int *minSize; /* OPTIONAL */
716 int *avgSize; /* OPTIONAL */
717 int *fixedSize; /* OPTIONAL */
720 Z_HumanString *description; /* OPTIONAL */
721 Z_HumanString *contents; /* OPTIONAL */
722 Z_HumanString *billingInfo; /* OPTIONAL */
723 Z_HumanString *restrictions; /* OPTIONAL */
724 int num_alternateNames;
725 char **alternateNames; /* OPTIONAL */
726 int num_genericNames;
727 char **genericNames; /* OPTIONAL */
728 Z_AttributeCombinations *searchAccess; /* OPTIONAL */
729 } Z_PerElementDetails;
731 typedef struct Z_ElementSetDetails
733 Z_CommonInfo *commonInfo; /* OPTIONAL */
737 Z_DatabaseName *databaseName;
738 char *elementSetName;
739 Odr_oid *recordSyntax;
747 Z_HumanString *description; /* OPTIONAL */
748 int num_detailsPerElement;
749 Z_PerElementDetails **detailsPerElement; /* OPTIONAL */
750 } Z_ElementSetDetails;
752 typedef struct Z_RetrievalRecordDetails
754 Z_CommonInfo *commonInfo; /* OPTIONAL */
758 Z_DatabaseName *databaseName;
760 Odr_oid *recordSyntax;
764 Z_HumanString *description; /* OPTIONAL */
765 int num_detailsPerElement;
766 Z_PerElementDetails **detailsPerElement; /* OPTIONAL */
767 } Z_RetrievalRecordDetails;
769 typedef struct Z_SortKeyDetailsSortType
773 Z_SortKeyDetailsSortType_character,
774 Z_SortKeyDetailsSortType_numeric,
775 Z_SortKeyDetailsSortType_structured
781 Z_HumanString *structured;
783 } Z_SortKeyDetailsSortType;
785 typedef struct Z_SortKeyDetails
787 Z_HumanString *description; /* OPTIONAL */
788 int num_elementSpecifications;
789 Z_Specification **elementSpecifications; /* OPTIONAL */
790 Z_AttributeCombinations *attributeSpecifications; /* OPTIONAL */
791 Z_SortKeyDetailsSortType *sortType; /* OPTIONAL */
792 int *caseSensitivity; /* OPTIONAL */
793 #define Z_SortKeyDetails_always 0
794 #define Z_SortKeyDetails_never 1
795 #define Z_SortKeyDetails_defaultYes 2
796 #define Z_SortKeyDetails_defaultNo 3
799 typedef struct Z_SortDetails
801 Z_CommonInfo *commonInfo; /* OPTIONAL */
805 Z_DatabaseName *databaseName;
810 Z_SortKeyDetails **sortKeys; /* OPTIONAL */
813 typedef struct Z_ProcessingInformation
815 Z_CommonInfo *commonInfo; /* OPTIONAL */
819 Z_DatabaseName *databaseName;
820 int *processingContext;
821 #define Z_ProcessingInformation_access 0
822 #define Z_ProcessingInformation_search 1
823 #define Z_ProcessingInformation_retrieval 2
824 #define Z_ProcessingInformation_recordPresentation 3
825 #define Z_ProcessingInformation_recordHandling 4
831 Z_HumanString *description; /* OPTIONAL */
832 Z_External *instructions; /* OPTIONAL */
833 } Z_ProcessingInformation;
835 typedef struct Z_ValueDescription
839 Z_ValueDescription_integer,
840 Z_ValueDescription_string,
841 Z_ValueDescription_octets,
842 Z_ValueDescription_oid,
843 Z_ValueDescription_unit,
844 Z_ValueDescription_valueAndUnit
853 Z_IntUnit *valueAndUnit;
855 } Z_ValueDescription;
857 typedef struct Z_ValueRange
859 Z_ValueDescription *lower; /* OPTIONAL */
860 Z_ValueDescription *upper; /* OPTIONAL */
863 typedef struct Z_ValueSetEnumerated
866 Z_ValueDescription **enumerated;
867 } Z_ValueSetEnumerated;
869 typedef struct Z_ValueSet
874 Z_ValueSet_enumerated
879 Z_ValueSetEnumerated *enumerated;
883 typedef struct Z_VariantValue
886 Z_ValueSet *values; /* OPTIONAL */
889 typedef struct Z_VariantType
891 char *name; /* OPTIONAL */
892 Z_HumanString *description; /* OPTIONAL */
894 Z_VariantValue *variantValue; /* OPTIONAL */
897 typedef struct Z_VariantClass
899 char *name; /* OPTIONAL */
900 Z_HumanString *description; /* OPTIONAL */
902 int num_variantTypes;
903 Z_VariantType **variantTypes;
906 typedef struct Z_VariantSetInfo
908 Z_CommonInfo *commonInfo; /* OPTIONAL */
921 Z_VariantClass **variants; /* OPTIONAL */
924 typedef struct Z_Units
926 char *name; /* OPTIONAL */
927 Z_HumanString *description; /* OPTIONAL */
928 Z_StringOrNumeric *unit;
931 typedef struct Z_UnitType
933 char *name; /* OPTIONAL */
934 Z_HumanString *description; /* OPTIONAL */
935 Z_StringOrNumeric *unitType;
940 typedef struct Z_UnitInfo
942 Z_CommonInfo *commonInfo; /* OPTIONAL */
950 Z_HumanString *description; /* OPTIONAL */
952 Z_UnitType **units; /* OPTIONAL */
955 typedef struct Z_CategoryInfo
958 char *originalCategory; /* OPTIONAL */
959 Z_HumanString *description; /* OPTIONAL */
960 char *asn1Module; /* OPTIONAL */
963 typedef struct Z_CategoryList
965 Z_CommonInfo *commonInfo; /* OPTIONAL */
967 Z_CategoryInfo **categories;
970 typedef struct Z_ExplainRecord
974 Z_Explain_targetInfo,
975 Z_Explain_databaseInfo,
976 Z_Explain_schemaInfo,
977 Z_Explain_tagSetInfo,
978 Z_Explain_recordSyntaxInfo,
979 Z_Explain_attributeSetInfo,
980 Z_Explain_termListInfo,
981 Z_Explain_extendedServicesInfo,
982 Z_Explain_attributeDetails,
983 Z_Explain_termListDetails,
984 Z_Explain_elementSetDetails,
985 Z_Explain_retrievalRecordDetails,
986 Z_Explain_sortDetails,
987 Z_Explain_processing,
990 Z_Explain_categoryList
994 Z_TargetInfo *targetInfo;
995 Z_DatabaseInfo *databaseInfo;
996 Z_SchemaInfo *schemaInfo;
997 Z_TagSetInfo *tagSetInfo;
998 Z_RecordSyntaxInfo *recordSyntaxInfo;
999 Z_AttributeSetInfo *attributeSetInfo;
1000 Z_TermListInfo *termListInfo;
1001 Z_ExtendedServicesInfo *extendedServicesInfo;
1002 Z_AttributeDetails *attributeDetails;
1003 Z_TermListDetails *termListDetails;
1004 Z_ElementSetDetails *elementSetDetails;
1005 Z_RetrievalRecordDetails *retrievalRecordDetails;
1006 Z_SortDetails *sortDetails;
1007 Z_ProcessingInformation *processing;
1008 Z_VariantSetInfo *variants;
1010 Z_CategoryList *categoryList;
1014 int z_ExplainRecord(ODR o, Z_ExplainRecord **p, int opt);