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
33 typedef struct Z_CommonInfo
35 char *dateAdded; /* OPTIONAL */
36 char *dateChanged; /* OPTIONAL */
37 char *expiry; /* OPTIONAL */
38 char *humanStringLanguage; /* OPTIONAL */
39 Z_OtherInformation *otherInfo; /* OPTIONAL */
42 typedef struct Z_HumanStringUnit
44 char *language; /* OPTIONAL */
48 typedef struct Z_HumanString
51 Z_HumanStringUnit **strings;
54 typedef struct Z_IconObjectUnit
58 Z_IconObject_ianaType,
59 Z_IconObject_z3950type,
60 Z_IconObject_otherType
66 typedef struct Z_IconObject
69 Z_IconObjectUnit **iconUnits;
72 typedef struct Z_ContactInfo
74 char *name; /* OPTIONAL */
75 Z_HumanString *description; /* OPTIONAL */
76 Z_HumanString *address; /* OPTIONAL */
77 char *email; /* OPTIONAL */
78 char *phone; /* OPTIONAL */
81 typedef struct Z_NetworkAddressIA
87 typedef struct Z_NetworkAddressOPA
90 char *sSel; /* OPTIONAL */
91 char *tSel; /* OPTIONAL */
93 } Z_NetworkAddressOPA;
95 typedef struct Z_NetworkAddressOther
99 } Z_NetworkAddressOther;
101 typedef struct Z_NetworkAddress
106 Z_NetworkAddress_oPA,
107 Z_NetworkAddress_other
111 Z_NetworkAddressIA *internetAddress;
112 Z_NetworkAddressOPA *osiPresentationAddress;
113 Z_NetworkAddressOther *other;
117 typedef struct Z_PrivateCapOperator
120 Z_HumanString *description; /* OPTIONAL */
121 } Z_PrivateCapOperator;
123 typedef struct Z_SearchKey
126 Z_HumanString *description; /* OPTIONAL */
129 typedef struct Z_PrivateCapabilities
132 Z_PrivateCapOperator **operators; /* OPTIONAL */
134 Z_SearchKey **searchKeys; /* OPTIONAL */
136 Z_HumanString **description; /* OPTIONAL */
137 } Z_PrivateCapabilities;
139 typedef struct Z_ProxSupportPrivate
142 Z_HumanString *description; /* OPTIONAL */
143 } Z_ProxSupportPrivate;
145 typedef struct Z_ProxSupportUnit
149 Z_ProxSupportUnit_known,
150 Z_ProxSupportUnit_private
155 Z_ProxSupportPrivate *private;
159 typedef struct Z_ProximitySupport
162 int num_unitsSupported;
163 Z_ProxSupportUnit **unitsSupported; /* OPTIONAL */
164 } Z_ProximitySupport;
166 typedef struct Z_RpnCapabilities
169 int **operators; /* OPTIONAL */
170 bool_t *resultSetAsOperandSupported;
171 bool_t *restrictionOperandSupported;
172 Z_ProximitySupport *proximity; /* OPTIONAL */
175 typedef struct Z_Iso8777Capabilities
178 Z_SearchKey **searchKeys;
179 Z_HumanString *restrictions; /* OPTIONAL */
180 } Z_Iso8777Capabilities;
182 typedef struct Z_QueryTypeDetails
186 Z_QueryTypeDetails_private,
187 Z_QueryTypeDetails_rpn,
188 Z_QueryTypeDetails_iso8777,
189 Z_QueryTypeDetails_z3958,
190 Z_QueryTypeDetails_erpn,
191 Z_QueryTypeDetails_rankedList
195 Z_PrivateCapabilities *private;
196 Z_RpnCapabilities *rpn;
197 Z_Iso8777Capabilities *iso8777;
198 Z_HumanString *z3958;
199 Z_RpnCapabilities *erpn;
200 Z_HumanString *rankedList;
202 } Z_QueryTypeDetails;
204 typedef struct Z_AccessRestrictionsUnit
207 #define Z_AccessRestrictions_any 0
208 #define Z_AccessRestrictions_search 1
209 #define Z_AccessRestrictions_present 2
210 #define Z_AccessRestrictions_specific_elements 3
211 #define Z_AccessRestrictions_extended_services 4
212 #define Z_AccessRestrictions_by database 5
213 Z_HumanString *accessText; /* OPTIONAL */
214 int num_accessChallenges;
215 Odr_oid **accessChallenges; /* OPTIONAL */
216 } Z_AccessRestrictionsUnit;
218 typedef struct Z_AccessRestrictions
220 int num_restrictions;
221 Z_AccessRestrictionsUnit **restrictions;
222 } Z_AccessRestrictions;
224 typedef struct Z_Charge
227 Z_Unit *perWhat; /* OPTIONAL */
228 Z_HumanString *text; /* OPTIONAL */
231 typedef struct Z_CostsOtherCharge
233 Z_HumanString *forWhat;
235 } Z_CostsOtherCharge;
237 typedef struct Z_Costs
239 Z_Charge *connectCharge; /* OPTIONAL */
240 Z_Charge *connectTime; /* OPTIONAL */
241 Z_Charge *displayCharge; /* OPTIONAL */
242 Z_Charge *searchCharge; /* OPTIONAL */
243 Z_Charge *subscriptCharge; /* OPTIONAL */
244 int num_otherCharges;
245 Z_CostsOtherCharge **otherCharges; /* OPTIONAL */
248 typedef struct Z_AccessInfo
250 int num_queryTypesSupported;
251 Z_QueryTypeDetails **queryTypesSupported; /* OPTIONAL */
252 int num_diagnosticsSets;
253 Odr_oid **diagnosticsSets; /* OPTIONAL */
254 int num_attributeSetIds;
255 Odr_oid **attributeSetIds; /* OPTIONAL */
257 Odr_oid **schemas; /* OPTIONAL */
258 int num_recordSyntaxes;
259 Odr_oid **recordSyntaxes; /* OPTIONAL */
260 int num_resourceChallenges;
261 Odr_oid **resourceChallenges; /* OPTIONAL */
262 Z_AccessRestrictions *restrictedAccess; /* OPTIONAL */
263 Z_Costs *costInfo; /* OPTIONAL */
265 Odr_oid **variantSets; /* OPTIONAL */
266 int num_elementSetNames;
267 char **elementSetNames; /* OPTIONAL */
272 typedef struct Z_DatabaseList
275 Z_DatabaseName **databases;
278 typedef struct Z_AttributeValueList
281 Z_StringOrNumeric **attributes;
282 } Z_AttributeValueList;
284 typedef struct Z_AttributeOccurrence
286 Odr_oid *attributeSet; /* OPTIONAL */
288 Odr_null *mustBeSupplied; /* OPTIONAL */
291 Z_AttributeOcc_anyOrNone,
292 Z_AttributeOcc_specific
297 Z_AttributeValueList *specific;
299 } Z_AttributeOccurrence;
301 typedef struct Z_AttributeCombination
304 Z_AttributeOccurrence **occurrences;
305 } Z_AttributeCombination;
307 typedef struct Z_AttributeCombinations
309 Odr_oid *defaultAttributeSet;
310 int num_legalCombinations;
311 Z_AttributeCombination **legalCombinations;
312 } Z_AttributeCombinations;
314 typedef struct Z_AttributeValue
316 Z_StringOrNumeric *value;
317 Z_HumanString *description; /* OPTIONAL */
318 int num_subAttributes;
319 Z_StringOrNumeric **subAttributes; /* OPTIONAL */
320 int num_superAttributes;
321 Z_StringOrNumeric **superAttributes; /* OPTIONAL */
322 Odr_null *partialSupport; /* OPTIONAL */
325 typedef struct Z_TargetInfo
327 Z_CommonInfo *commonInfo; /* OPTIONAL */
333 * non-key brief elements
335 Z_HumanString *recentNews; /* OPTIONAL */
336 Z_IconObject *icon; /* OPTIONAL */
337 bool_t *namedResultSets;
338 bool_t *multipleDBsearch;
339 int *maxResultSets; /* OPTIONAL */
340 int *maxResultSize; /* OPTIONAL */
341 int *maxTerms; /* OPTIONAL */
342 Z_IntUnit *timeoutInterval; /* OPTIONAL */
343 Z_HumanString *welcomeMessage; /* OPTIONAL */
347 Z_ContactInfo *contactInfo; /* OPTIONAL */
348 Z_HumanString *description; /* OPTIONAL */
351 Z_HumanString *usageRest; /* OPTIONAL */
352 Z_HumanString *paymentAddr; /* OPTIONAL */
353 Z_HumanString *hours; /* OPTIONAL */
354 int num_dbCombinations;
355 Z_DatabaseList **dbCombinations; /* OPTIONAL */
357 Z_NetworkAddress **addresses; /* OPTIONAL */
358 Z_AccessInfo *commonAccessInfo; /* OPTIONAL */
361 typedef struct Z_DatabaseInfo
363 Z_CommonInfo *commonInfo; /* OPTIONAL */
367 Z_DatabaseName *name;
371 Odr_null *explainDatabase; /* OPTIONAL */
373 Z_DatabaseName **nicknames; /* OPTIONAL */
374 Z_IconObject *icon; /* OPTIONAL */
377 Z_HumanString *titleString; /* OPTIONAL */
379 * Non-brief elements.
382 Z_HumanString **keywords; /* OPTIONAL */
383 Z_HumanString *description; /* OPTIONAL */
384 Z_DatabaseList *associatedDbs; /* OPTIONAL */
385 Z_DatabaseList *subDbs; /* OPTIONAL */
386 Z_HumanString *disclaimers; /* OPTIONAL */
387 Z_HumanString *news; /* OPTIONAL */
390 Z_Exp_RecordCount_actualNumber,
391 Z_Exp_RecordCount_approxNumber
393 int *recordCount; /* OPTIONAL */
394 Z_HumanString *defaultOrder; /* OPTIONAL */
395 int *avRecordSize; /* OPTIONAL */
396 int *maxRecordSize; /* OPTIONAL */
397 Z_HumanString *hours; /* OPTIONAL */
398 Z_HumanString *bestTime; /* OPTIONAL */
399 char *lastUpdate; /* OPTIONAL */
400 Z_IntUnit *updateInterval; /* OPTIONAL */
401 Z_HumanString *coverage; /* OPTIONAL */
402 bool_t *proprietary; /* OPTIONAL */
403 Z_HumanString *copyrightText; /* OPTIONAL */
404 Z_HumanString *copyrightNotice; /* OPTIONAL */
405 Z_ContactInfo *producerContactInfo; /* OPTIONAL */
406 Z_ContactInfo *supplierContactInfo; /* OPTIONAL */
407 Z_ContactInfo *submissionContactInfo; /* OPTIONAL */
408 Z_AccessInfo *accessInfo; /* OPTIONAL */
411 typedef struct Z_TagTypeMapping
414 Odr_oid *tagSet; /* OPTIONAL */
415 Odr_null *defaultTagType; /* OPTIONAL */
418 typedef struct Z_PathUnit
421 Z_StringOrNumeric *tagValue;
424 typedef struct Z_Path
430 struct Z_ElementDataType;
431 typedef struct Z_ElementDataType Z_ElementDataType;
433 typedef struct Z_ElementInfo
436 Z_Path *elementTagPath;
437 Z_ElementDataType *dataType; /* OPTIONAL */
440 Z_HumanString *description; /* OPTIONAL */
443 typedef struct Z_ElementInfoList
446 Z_ElementInfo **list;
449 struct Z_ElementDataType
453 Z_ElementDataType_primitive,
454 Z_ElementDataType_structured
459 #define Z_PrimitiveElement_octetString 0
460 #define Z_PrimitiveElement_numeric 1
461 #define Z_PrimitiveElement_date 2
462 #define Z_PrimitiveElement_external 3
463 #define Z_PrimitiveElement_string 4
464 #define Z_PrimitiveElement_trueOrFalse 5
465 #define Z_PrimitiveElement_oid 6
466 #define Z_PrimitiveElement_intUnit 7
467 #define Z_PrimitiveElement_empty 8
468 #define Z_PrimitiveElement_noneOfTheAbove 100
469 Z_ElementInfoList *structured;
473 typedef struct Z_TagSetInfoElements
477 char **nicknames; /* OPTIONAL */
478 Z_StringOrNumeric *elementTag;
479 Z_HumanString *description; /* OPTIONAL */
480 int *dataType; /* OPTIONAL */
481 /* (value as in Z_PrimitiveElement) */
482 Z_OtherInformation *otherTagInfo; /* OPTIONAL */
483 } Z_TagSetInfoElements;
485 typedef struct Z_SchemaInfo
487 Z_CommonInfo *commonInfo; /* OPTIONAL */
499 Z_HumanString *description; /* OPTIONAL */
500 int num_tagTypeMapping;
501 Z_TagTypeMapping **tagTypeMapping; /* OPTIONAL */
502 int num_recordStructure;
503 Z_ElementInfo **recordStructure; /* OPTIONAL */
507 typedef struct Z_TagSetInfo
509 Z_CommonInfo *commonInfo; /* OPTIONAL */
521 Z_HumanString *description; /* OPTIONAL */
523 Z_TagSetInfoElements **elements; /* OPTIONAL */
526 typedef struct Z_RecordSyntaxInfo
528 Z_CommonInfo *commonInfo; /* OPTIONAL */
532 Odr_oid *recordSyntax;
540 int num_transferSyntaxes;
541 Odr_oid **transferSyntaxes; /* OPTIONAL */
542 Z_HumanString *description; /* OPTIONAL */
543 char *asn1Module; /* OPTIONAL */
544 int num_abstractStructure;
545 Z_ElementInfo **abstractStructure; /* OPTIONAL */
546 } Z_RecordSyntaxInfo;
548 typedef struct Z_AttributeDescription
550 char *name; /* OPTIONAL */
551 Z_HumanString *description; /* OPTIONAL */
552 Z_StringOrNumeric *attributeValue;
553 int num_equivalentAttributes;
554 Z_StringOrNumeric **equivalentAttributes; /* OPTIONAL */
555 } Z_AttributeDescription;
557 typedef struct Z_AttributeType
559 char *name; /* OPTIONAL */
560 Z_HumanString *description; /* OPTIONAL */
562 int num_attributeValues;
563 Z_AttributeDescription **attributeValues;
566 typedef struct Z_AttributeSetInfo
568 Z_CommonInfo *commonInfo; /* OPTIONAL */
572 Odr_oid *attributeSet;
581 Z_AttributeType **attributes; /* OPTIONAL */
582 Z_HumanString *description; /* OPTIONAL */
583 } Z_AttributeSetInfo;
585 typedef struct Z_TermListElement
588 Z_HumanString *title; /* OPTIONAL */
589 int *searchCost; /* OPTIONAL */
590 #define Z_TermListInfo_optimized 0
591 #define Z_TermListInfo_normal 1
592 #define Z_TermListInfo_expensive 2
593 #define Z_TermListInfo_filter 3
596 char **broader; /* OPTIONAL */
598 char **narrower; /* OPTIONAL */
601 typedef struct Z_TermListInfo
603 Z_CommonInfo *commonInfo; /* OPTIONAL */
607 Z_DatabaseName *databaseName;
612 Z_TermListElement **termLists;
615 typedef struct Z_ExtendedServicesInfo
617 Z_CommonInfo *commonInfo; /* OPTIONAL */
625 char *name; /* OPTIONAL */
627 bool_t *restrictionsApply;
630 bool_t *retentionSupported;
632 #define Z_ExtendedServicesInfo_waitSupported 1
633 #define Z_ExtendedServicesInfo_waitAlways 2
634 #define Z_ExtendedServicesInfo_waitNotSupported 3
635 #define Z_ExtendedServicesInfo_depends 4
636 #define Z_ExtendedServicesInfo_notSaying 5
640 Z_HumanString *description; /* OPTIONAL */
641 Z_External *specificExplain; /* OPTIONAL */
642 char *esASN; /* OPTIONAL */
643 } Z_ExtendedServicesInfo;
645 typedef struct Z_OmittedAttributeInterpretation
647 Z_StringOrNumeric *defaultValue; /* OPTIONAL */
648 Z_HumanString *defaultDescription; /* OPTIONAL */
649 } Z_OmittedAttributeInterpretation;
651 typedef struct Z_AttributeTypeDetails
654 Z_OmittedAttributeInterpretation *optionalType; /* OPTIONAL */
655 int num_attributeValues;
656 Z_AttributeValue **attributeValues; /* OPTIONAL */
657 } Z_AttributeTypeDetails;
659 typedef struct Z_AttributeSetDetails
661 Odr_oid *attributeSet;
662 int num_attributesByType;
663 Z_AttributeTypeDetails **attributesByType;
664 } Z_AttributeSetDetails;
666 typedef struct Z_AttributeDetails
668 Z_CommonInfo *commonInfo; /* OPTIONAL */
672 Z_DatabaseName *databaseName;
676 int num_attributesBySet;
677 Z_AttributeSetDetails **attributesBySet; /* OPTIONAL */
678 Z_AttributeCombinations *attributeCombinations; /* OPTIONAL */
679 } Z_AttributeDetails;
681 typedef struct Z_EScanInfo
683 int *maxStepSize; /* OPTIONAL */
684 Z_HumanString *collatingSequence; /* OPTIONAL */
685 bool_t *increasing; /* OPTIONAL */
688 typedef struct Z_TermListDetails
690 Z_CommonInfo *commonInfo; /* OPTIONAL */
698 Z_HumanString *description; /* OPTIONAL */
699 Z_AttributeCombinations *attributes; /* OPTIONAL */
700 Z_EScanInfo *scanInfo; /* OPTIONAL */
701 int *estNumberTerms; /* OPTIONAL */
703 Z_Term **sampleTerms; /* OPTIONAL */
706 typedef struct Z_RecordTag
708 Z_StringOrNumeric *qualifier; /* OPTIONAL */
709 Z_StringOrNumeric *tagValue;
712 typedef struct Z_PerElementDetails
714 char *name; /* OPTIONAL */
715 Z_RecordTag *recordTag; /* OPTIONAL */
717 Z_Path **schemaTags; /* OPTIONAL */
718 int *maxSize; /* OPTIONAL */
719 int *minSize; /* OPTIONAL */
720 int *avgSize; /* OPTIONAL */
721 int *fixedSize; /* OPTIONAL */
724 Z_HumanString *description; /* OPTIONAL */
725 Z_HumanString *contents; /* OPTIONAL */
726 Z_HumanString *billingInfo; /* OPTIONAL */
727 Z_HumanString *restrictions; /* OPTIONAL */
728 int num_alternateNames;
729 char **alternateNames; /* OPTIONAL */
730 int num_genericNames;
731 char **genericNames; /* OPTIONAL */
732 Z_AttributeCombinations *searchAccess; /* OPTIONAL */
733 } Z_PerElementDetails;
735 typedef struct Z_ElementSetDetails
737 Z_CommonInfo *commonInfo; /* OPTIONAL */
741 Z_DatabaseName *databaseName;
742 char *elementSetName;
743 Odr_oid *recordSyntax;
751 Z_HumanString *description; /* OPTIONAL */
752 int num_detailsPerElement;
753 Z_PerElementDetails **detailsPerElement; /* OPTIONAL */
754 } Z_ElementSetDetails;
756 typedef struct Z_RetrievalRecordDetails
758 Z_CommonInfo *commonInfo; /* OPTIONAL */
762 Z_DatabaseName *databaseName;
764 Odr_oid *recordSyntax;
768 Z_HumanString *description; /* OPTIONAL */
769 int num_detailsPerElement;
770 Z_PerElementDetails **detailsPerElement; /* OPTIONAL */
771 } Z_RetrievalRecordDetails;
773 typedef struct Z_SortKeyDetailsSortType
777 Z_SortKeyDetailsSortType_character,
778 Z_SortKeyDetailsSortType_numeric,
779 Z_SortKeyDetailsSortType_structured
785 Z_HumanString *structured;
787 } Z_SortKeyDetailsSortType;
789 typedef struct Z_SortKeyDetails
791 Z_HumanString *description; /* OPTIONAL */
792 int num_elementSpecifications;
793 Z_Specification **elementSpecifications; /* OPTIONAL */
794 Z_AttributeCombinations *attributeSpecifications; /* OPTIONAL */
795 Z_SortKeyDetailsSortType *sortType; /* OPTIONAL */
796 int *caseSensitivity; /* OPTIONAL */
797 #define Z_SortKeyDetails_always 0
798 #define Z_SortKeyDetails_never 1
799 #define Z_SortKeyDetails_defaultYes 2
800 #define Z_SortKeyDetails_defaultNo 3
803 typedef struct Z_SortDetails
805 Z_CommonInfo *commonInfo; /* OPTIONAL */
809 Z_DatabaseName *databaseName;
814 Z_SortKeyDetails **sortKeys; /* OPTIONAL */
817 typedef struct Z_ProcessingInformation
819 Z_CommonInfo *commonInfo; /* OPTIONAL */
823 Z_DatabaseName *databaseName;
824 int *processingContext;
825 #define Z_ProcessingInformation_access 0
826 #define Z_ProcessingInformation_search 1
827 #define Z_ProcessingInformation_retrieval 2
828 #define Z_ProcessingInformation_recordPresentation 3
829 #define Z_ProcessingInformation_recordHandling 4
835 Z_HumanString *description; /* OPTIONAL */
836 Z_External *instructions; /* OPTIONAL */
837 } Z_ProcessingInformation;
839 typedef struct Z_ValueDescription
843 Z_ValueDescription_integer,
844 Z_ValueDescription_string,
845 Z_ValueDescription_octets,
846 Z_ValueDescription_oid,
847 Z_ValueDescription_unit,
848 Z_ValueDescription_valueAndUnit
857 Z_IntUnit *valueAndUnit;
859 } Z_ValueDescription;
861 typedef struct Z_ValueRange
863 Z_ValueDescription *lower; /* OPTIONAL */
864 Z_ValueDescription *upper; /* OPTIONAL */
867 typedef struct Z_ValueSetEnumerated
870 Z_ValueDescription **enumerated;
871 } Z_ValueSetEnumerated;
873 typedef struct Z_ValueSet
878 Z_ValueSet_enumerated
883 Z_ValueSetEnumerated *enumerated;
887 typedef struct Z_VariantValue
890 Z_ValueSet *values; /* OPTIONAL */
893 typedef struct Z_VariantType
895 char *name; /* OPTIONAL */
896 Z_HumanString *description; /* OPTIONAL */
898 Z_VariantValue *variantValue; /* OPTIONAL */
901 typedef struct Z_VariantClass
903 char *name; /* OPTIONAL */
904 Z_HumanString *description; /* OPTIONAL */
906 int num_variantTypes;
907 Z_VariantType **variantTypes;
910 typedef struct Z_VariantSetInfo
912 Z_CommonInfo *commonInfo; /* OPTIONAL */
925 Z_VariantClass **variants; /* OPTIONAL */
928 typedef struct Z_Units
930 char *name; /* OPTIONAL */
931 Z_HumanString *description; /* OPTIONAL */
932 Z_StringOrNumeric *unit;
935 typedef struct Z_UnitType
937 char *name; /* OPTIONAL */
938 Z_HumanString *description; /* OPTIONAL */
939 Z_StringOrNumeric *unitType;
944 typedef struct Z_UnitInfo
946 Z_CommonInfo *commonInfo; /* OPTIONAL */
954 Z_HumanString *description; /* OPTIONAL */
956 Z_UnitType **units; /* OPTIONAL */
959 typedef struct Z_CategoryInfo
962 char *originalCategory; /* OPTIONAL */
963 Z_HumanString *description; /* OPTIONAL */
964 char *asn1Module; /* OPTIONAL */
967 typedef struct Z_CategoryList
969 Z_CommonInfo *commonInfo; /* OPTIONAL */
971 Z_CategoryInfo **categories;
974 typedef struct Z_ExplainRecord
978 Z_Explain_targetInfo,
979 Z_Explain_databaseInfo,
980 Z_Explain_schemaInfo,
981 Z_Explain_tagSetInfo,
982 Z_Explain_recordSyntaxInfo,
983 Z_Explain_attributeSetInfo,
984 Z_Explain_termListInfo,
985 Z_Explain_extendedServicesInfo,
986 Z_Explain_attributeDetails,
987 Z_Explain_termListDetails,
988 Z_Explain_elementSetDetails,
989 Z_Explain_retrievalRecordDetails,
990 Z_Explain_sortDetails,
991 Z_Explain_processing,
994 Z_Explain_categoryList
998 Z_TargetInfo *targetInfo;
999 Z_DatabaseInfo *databaseInfo;
1000 Z_SchemaInfo *schemaInfo;
1001 Z_TagSetInfo *tagSetInfo;
1002 Z_RecordSyntaxInfo *recordSyntaxInfo;
1003 Z_AttributeSetInfo *attributeSetInfo;
1004 Z_TermListInfo *termListInfo;
1005 Z_ExtendedServicesInfo *extendedServicesInfo;
1006 Z_AttributeDetails *attributeDetails;
1007 Z_TermListDetails *termListDetails;
1008 Z_ElementSetDetails *elementSetDetails;
1009 Z_RetrievalRecordDetails *retrievalRecordDetails;
1010 Z_SortDetails *sortDetails;
1011 Z_ProcessingInformation *processing;
1012 Z_VariantSetInfo *variants;
1014 Z_CategoryList *categoryList;
1018 int MDF z_ExplainRecord(ODR o, Z_ExplainRecord **p, int opt);