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 #define multipleDbSearch multipleDBsearch
35 typedef struct Z_CommonInfo
37 char *dateAdded; /* OPTIONAL */
38 char *dateChanged; /* OPTIONAL */
39 char *expiry; /* OPTIONAL */
40 char *humanStringLanguage; /* OPTIONAL */
41 Z_OtherInformation *otherInfo; /* OPTIONAL */
44 typedef struct Z_HumanStringUnit
46 char *language; /* OPTIONAL */
50 typedef struct Z_HumanString
53 Z_HumanStringUnit **strings;
56 typedef struct Z_IconObjectUnit
59 #define Z_IconObject_ianaType 0
60 #define Z_IconObject_z3950type 1
61 #define Z_IconObject_otherType 2
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
104 #define Z_NetworkAddress_iA 0
105 #define Z_NetworkAddress_oPA 1
106 #define Z_NetworkAddress_other 2
109 Z_NetworkAddressIA *internetAddress;
110 Z_NetworkAddressOPA *osiPresentationAddress;
111 Z_NetworkAddressOther *other;
115 typedef struct Z_PrivateCapOperator
118 Z_HumanString *description; /* OPTIONAL */
119 } Z_PrivateCapOperator;
121 typedef struct Z_SearchKey
124 Z_HumanString *description; /* OPTIONAL */
127 typedef struct Z_PrivateCapabilities
130 Z_PrivateCapOperator **operators; /* OPTIONAL */
132 Z_SearchKey **searchKeys; /* OPTIONAL */
134 Z_HumanString **description; /* OPTIONAL */
135 } Z_PrivateCapabilities;
137 typedef struct Z_ProxSupportPrivate
140 Z_HumanString *description; /* OPTIONAL */
141 } Z_ProxSupportPrivate;
143 typedef struct Z_ProxSupportUnit
146 #define Z_ProxSupportUnit_known 0
147 #define Z_ProxSupportUnit_private 1
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
181 #define Z_QueryTypeDetails_private 0
182 #define Z_QueryTypeDetails_rpn 1
183 #define Z_QueryTypeDetails_iso8777 2
184 #define Z_QueryTypeDetails_z3958 3
185 #define Z_QueryTypeDetails_erpn 4
186 #define Z_QueryTypeDetails_rankedList 5
189 Z_PrivateCapabilities *private;
190 Z_RpnCapabilities *rpn;
191 Z_Iso8777Capabilities *iso8777;
192 Z_HumanString *z3958;
193 Z_RpnCapabilities *erpn;
194 Z_HumanString *rankedList;
196 } Z_QueryTypeDetails;
198 typedef struct Z_AccessRestrictionsUnit
201 #define Z_AccessRestrictions_any 0
202 #define Z_AccessRestrictions_search 1
203 #define Z_AccessRestrictions_present 2
204 #define Z_AccessRestrictions_specific_elements 3
205 #define Z_AccessRestrictions_extended_services 4
206 #define Z_AccessRestrictions_by_database 5
207 Z_HumanString *accessText; /* OPTIONAL */
208 int num_accessChallenges;
209 Odr_oid **accessChallenges; /* OPTIONAL */
210 } Z_AccessRestrictionsUnit;
212 typedef struct Z_AccessRestrictions
214 int num_restrictions;
215 Z_AccessRestrictionsUnit **restrictions;
216 } Z_AccessRestrictions;
218 typedef struct Z_Charge
221 Z_Unit *perWhat; /* OPTIONAL */
222 Z_HumanString *text; /* OPTIONAL */
225 typedef struct Z_CostsOtherCharge
227 Z_HumanString *forWhat;
229 } Z_CostsOtherCharge;
231 typedef struct Z_Costs
233 Z_Charge *connectCharge; /* OPTIONAL */
234 Z_Charge *connectTime; /* OPTIONAL */
235 Z_Charge *displayCharge; /* OPTIONAL */
236 Z_Charge *searchCharge; /* OPTIONAL */
237 Z_Charge *subscriptCharge; /* OPTIONAL */
238 int num_otherCharges;
239 Z_CostsOtherCharge **otherCharges; /* OPTIONAL */
242 typedef struct Z_AccessInfo
244 int num_queryTypesSupported;
245 Z_QueryTypeDetails **queryTypesSupported; /* OPTIONAL */
246 int num_diagnosticsSets;
247 Odr_oid **diagnosticsSets; /* OPTIONAL */
248 int num_attributeSetIds;
249 Odr_oid **attributeSetIds; /* OPTIONAL */
251 Odr_oid **schemas; /* OPTIONAL */
252 int num_recordSyntaxes;
253 Odr_oid **recordSyntaxes; /* OPTIONAL */
254 int num_resourceChallenges;
255 Odr_oid **resourceChallenges; /* OPTIONAL */
256 Z_AccessRestrictions *restrictedAccess; /* OPTIONAL */
257 Z_Costs *costInfo; /* OPTIONAL */
259 Odr_oid **variantSets; /* OPTIONAL */
260 int num_elementSetNames;
261 char **elementSetNames; /* OPTIONAL */
263 char **unitSystems; /* OPTIONAL */
266 typedef struct Z_DatabaseList
269 Z_DatabaseName **databases;
272 typedef struct Z_AttributeValueList
275 Z_StringOrNumeric **attributes;
276 } Z_AttributeValueList;
278 typedef struct Z_AttributeOccurrence
280 Odr_oid *attributeSet; /* OPTIONAL */
282 Odr_null *mustBeSupplied; /* OPTIONAL */
284 #define Z_AttributeOcc_anyOrNone 0
285 #define Z_AttributeOcc_specific 1
289 Z_AttributeValueList *specific;
291 } Z_AttributeOccurrence;
293 typedef struct Z_AttributeCombination
296 Z_AttributeOccurrence **occurrences;
297 } Z_AttributeCombination;
299 typedef struct Z_AttributeCombinations
301 Odr_oid *defaultAttributeSet;
302 int num_legalCombinations;
303 Z_AttributeCombination **legalCombinations;
304 } Z_AttributeCombinations;
306 typedef struct Z_AttributeValue
308 Z_StringOrNumeric *value;
309 Z_HumanString *description; /* OPTIONAL */
310 int num_subAttributes;
311 Z_StringOrNumeric **subAttributes; /* OPTIONAL */
312 int num_superAttributes;
313 Z_StringOrNumeric **superAttributes; /* OPTIONAL */
314 Odr_null *partialSupport; /* OPTIONAL */
317 typedef struct Z_TargetInfo
319 Z_CommonInfo *commonInfo; /* OPTIONAL */
325 * non-key brief elements
327 Z_HumanString *recentNews; /* OPTIONAL */
328 Z_IconObject *icon; /* OPTIONAL */
329 bool_t *namedResultSets;
330 bool_t *multipleDbSearch;
331 int *maxResultSets; /* OPTIONAL */
332 int *maxResultSize; /* OPTIONAL */
333 int *maxTerms; /* OPTIONAL */
334 Z_IntUnit *timeoutInterval; /* OPTIONAL */
335 Z_HumanString *welcomeMessage; /* OPTIONAL */
339 Z_ContactInfo *contactInfo; /* OPTIONAL */
340 Z_HumanString *description; /* OPTIONAL */
343 Z_HumanString *usageRest; /* OPTIONAL */
344 Z_HumanString *paymentAddr; /* OPTIONAL */
345 Z_HumanString *hours; /* OPTIONAL */
346 int num_dbCombinations;
347 Z_DatabaseList **dbCombinations; /* OPTIONAL */
349 Z_NetworkAddress **addresses; /* OPTIONAL */
350 Z_AccessInfo *commonAccessInfo; /* OPTIONAL */
353 typedef struct Z_DatabaseInfo
355 Z_CommonInfo *commonInfo; /* OPTIONAL */
359 Z_DatabaseName *name;
363 Odr_null *explainDatabase; /* OPTIONAL */
365 Z_DatabaseName **nicknames; /* OPTIONAL */
366 Z_IconObject *icon; /* OPTIONAL */
369 Z_HumanString *titleString; /* OPTIONAL */
371 * Non-brief elements.
374 Z_HumanString **keywords; /* OPTIONAL */
375 Z_HumanString *description; /* OPTIONAL */
376 Z_DatabaseList *associatedDbs; /* OPTIONAL */
377 Z_DatabaseList *subDbs; /* OPTIONAL */
378 Z_HumanString *disclaimers; /* OPTIONAL */
379 Z_HumanString *news; /* OPTIONAL */
380 int recordCount_which;
381 #define Z_Exp_RecordCount_actualNumber 0
382 #define Z_Exp_RecordCount_approxNumber 1
383 int *recordCount; /* OPTIONAL */
384 Z_HumanString *defaultOrder; /* OPTIONAL */
385 int *avRecordSize; /* OPTIONAL */
386 int *maxRecordSize; /* OPTIONAL */
387 Z_HumanString *hours; /* OPTIONAL */
388 Z_HumanString *bestTime; /* OPTIONAL */
389 char *lastUpdate; /* OPTIONAL */
390 Z_IntUnit *updateInterval; /* OPTIONAL */
391 Z_HumanString *coverage; /* OPTIONAL */
392 bool_t *proprietary; /* OPTIONAL */
393 Z_HumanString *copyrightText; /* OPTIONAL */
394 Z_HumanString *copyrightNotice; /* OPTIONAL */
395 Z_ContactInfo *producerContactInfo; /* OPTIONAL */
396 Z_ContactInfo *supplierContactInfo; /* OPTIONAL */
397 Z_ContactInfo *submissionContactInfo; /* OPTIONAL */
398 Z_AccessInfo *accessInfo; /* OPTIONAL */
401 typedef struct Z_TagTypeMapping
404 Odr_oid *tagSet; /* OPTIONAL */
405 Odr_null *defaultTagType; /* OPTIONAL */
408 typedef struct Z_PathUnit
411 Z_StringOrNumeric *tagValue;
414 typedef struct Z_Path
420 struct Z_ElementDataType;
421 typedef struct Z_ElementDataType Z_ElementDataType;
423 typedef struct Z_ElementInfo
426 Z_Path *elementTagPath;
427 Z_ElementDataType *dataType; /* OPTIONAL */
430 Z_HumanString *description; /* OPTIONAL */
433 typedef struct Z_ElementInfoList
436 Z_ElementInfo **list;
439 struct Z_ElementDataType
442 #define Z_ElementDataType_primitive 0
443 #define Z_ElementDataType_structured 1
447 #define Z_PrimitiveElement_octetString 0
448 #define Z_PrimitiveElement_numeric 1
449 #define Z_PrimitiveElement_date 2
450 #define Z_PrimitiveElement_external 3
451 #define Z_PrimitiveElement_string 4
452 #define Z_PrimitiveElement_trueOrFalse 5
453 #define Z_PrimitiveElement_oid 6
454 #define Z_PrimitiveElement_intUnit 7
455 #define Z_PrimitiveElement_empty 8
456 #define Z_PrimitiveElement_noneOfTheAbove 100
457 Z_ElementInfoList *structured;
461 typedef struct Z_TagSetInfoElements
465 char **nicknames; /* OPTIONAL */
466 Z_StringOrNumeric *elementTag;
467 Z_HumanString *description; /* OPTIONAL */
468 int *dataType; /* OPTIONAL */
469 /* (value as in Z_PrimitiveElement) */
470 Z_OtherInformation *otherTagInfo; /* OPTIONAL */
471 } Z_TagSetInfoElements;
473 typedef struct Z_SchemaInfo
475 Z_CommonInfo *commonInfo; /* OPTIONAL */
487 Z_HumanString *description; /* OPTIONAL */
488 int num_tagTypeMapping;
489 Z_TagTypeMapping **tagTypeMapping; /* OPTIONAL */
490 int num_recordStructure;
491 Z_ElementInfo **recordStructure; /* OPTIONAL */
495 typedef struct Z_TagSetInfo
497 Z_CommonInfo *commonInfo; /* OPTIONAL */
509 Z_HumanString *description; /* OPTIONAL */
511 Z_TagSetInfoElements **elements; /* OPTIONAL */
514 typedef struct Z_RecordSyntaxInfo
516 Z_CommonInfo *commonInfo; /* OPTIONAL */
520 Odr_oid *recordSyntax;
528 int num_transferSyntaxes;
529 Odr_oid **transferSyntaxes; /* OPTIONAL */
530 Z_HumanString *description; /* OPTIONAL */
531 char *asn1Module; /* OPTIONAL */
532 int num_abstractStructure;
533 Z_ElementInfo **abstractStructure; /* OPTIONAL */
534 } Z_RecordSyntaxInfo;
536 typedef struct Z_AttributeDescription
538 char *name; /* OPTIONAL */
539 Z_HumanString *description; /* OPTIONAL */
540 Z_StringOrNumeric *attributeValue;
541 int num_equivalentAttributes;
542 Z_StringOrNumeric **equivalentAttributes; /* OPTIONAL */
543 } Z_AttributeDescription;
545 typedef struct Z_AttributeType
547 char *name; /* OPTIONAL */
548 Z_HumanString *description; /* OPTIONAL */
550 int num_attributeValues;
551 Z_AttributeDescription **attributeValues;
554 typedef struct Z_AttributeSetInfo
556 Z_CommonInfo *commonInfo; /* OPTIONAL */
560 Odr_oid *attributeSet;
569 Z_AttributeType **attributes; /* OPTIONAL */
570 Z_HumanString *description; /* OPTIONAL */
571 } Z_AttributeSetInfo;
573 typedef struct Z_TermListElement
576 Z_HumanString *title; /* OPTIONAL */
577 int *searchCost; /* OPTIONAL */
578 #define Z_TermListInfo_optimized 0
579 #define Z_TermListInfo_normal 1
580 #define Z_TermListInfo_expensive 2
581 #define Z_TermListInfo_filter 3
584 char **broader; /* OPTIONAL */
586 char **narrower; /* OPTIONAL */
589 typedef struct Z_TermListInfo
591 Z_CommonInfo *commonInfo; /* OPTIONAL */
595 Z_DatabaseName *databaseName;
600 Z_TermListElement **termLists;
603 typedef struct Z_ExtendedServicesInfo
605 Z_CommonInfo *commonInfo; /* OPTIONAL */
613 char *name; /* OPTIONAL */
615 bool_t *restrictionsApply;
618 bool_t *retentionSupported;
620 #define Z_ExtendedServicesInfo_waitSupported 1
621 #define Z_ExtendedServicesInfo_waitAlways 2
622 #define Z_ExtendedServicesInfo_waitNotSupported 3
623 #define Z_ExtendedServicesInfo_depends 4
624 #define Z_ExtendedServicesInfo_notSaying 5
628 Z_HumanString *description; /* OPTIONAL */
629 Z_External *specificExplain; /* OPTIONAL */
630 char *esASN; /* OPTIONAL */
631 } Z_ExtendedServicesInfo;
633 typedef struct Z_OmittedAttributeInterpretation
635 Z_StringOrNumeric *defaultValue; /* OPTIONAL */
636 Z_HumanString *defaultDescription; /* OPTIONAL */
637 } Z_OmittedAttributeInterpretation;
639 typedef struct Z_AttributeTypeDetails
642 Z_OmittedAttributeInterpretation *optionalType; /* OPTIONAL */
643 int num_attributeValues;
644 Z_AttributeValue **attributeValues; /* OPTIONAL */
645 } Z_AttributeTypeDetails;
647 typedef struct Z_AttributeSetDetails
649 Odr_oid *attributeSet;
650 int num_attributesByType;
651 Z_AttributeTypeDetails **attributesByType;
652 } Z_AttributeSetDetails;
654 typedef struct Z_AttributeDetails
656 Z_CommonInfo *commonInfo; /* OPTIONAL */
660 Z_DatabaseName *databaseName;
664 int num_attributesBySet;
665 Z_AttributeSetDetails **attributesBySet; /* OPTIONAL */
666 Z_AttributeCombinations *attributeCombinations; /* OPTIONAL */
667 } Z_AttributeDetails;
669 typedef struct Z_EScanInfo
671 int *maxStepSize; /* OPTIONAL */
672 Z_HumanString *collatingSequence; /* OPTIONAL */
673 bool_t *increasing; /* OPTIONAL */
676 typedef struct Z_TermListDetails
678 Z_CommonInfo *commonInfo; /* OPTIONAL */
686 Z_HumanString *description; /* OPTIONAL */
687 Z_AttributeCombinations *attributes; /* OPTIONAL */
688 Z_EScanInfo *scanInfo; /* OPTIONAL */
689 int *estNumberTerms; /* OPTIONAL */
691 Z_Term **sampleTerms; /* OPTIONAL */
694 typedef struct Z_RecordTag
696 Z_StringOrNumeric *qualifier; /* OPTIONAL */
697 Z_StringOrNumeric *tagValue;
700 typedef struct Z_PerElementDetails
702 char *name; /* OPTIONAL */
703 Z_RecordTag *recordTag; /* OPTIONAL */
705 Z_Path **schemaTags; /* OPTIONAL */
706 int *maxSize; /* OPTIONAL */
707 int *minSize; /* OPTIONAL */
708 int *avgSize; /* OPTIONAL */
709 int *fixedSize; /* OPTIONAL */
712 Z_HumanString *description; /* OPTIONAL */
713 Z_HumanString *contents; /* OPTIONAL */
714 Z_HumanString *billingInfo; /* OPTIONAL */
715 Z_HumanString *restrictions; /* OPTIONAL */
716 int num_alternateNames;
717 char **alternateNames; /* OPTIONAL */
718 int num_genericNames;
719 char **genericNames; /* OPTIONAL */
720 Z_AttributeCombinations *searchAccess; /* OPTIONAL */
721 } Z_PerElementDetails;
723 typedef struct Z_ElementSetDetails
725 Z_CommonInfo *commonInfo; /* OPTIONAL */
729 Z_DatabaseName *databaseName;
730 char *elementSetName;
731 Odr_oid *recordSyntax;
739 Z_HumanString *description; /* OPTIONAL */
740 int num_detailsPerElement;
741 Z_PerElementDetails **detailsPerElement; /* OPTIONAL */
742 } Z_ElementSetDetails;
744 typedef struct Z_RetrievalRecordDetails
746 Z_CommonInfo *commonInfo; /* OPTIONAL */
750 Z_DatabaseName *databaseName;
752 Odr_oid *recordSyntax;
756 Z_HumanString *description; /* OPTIONAL */
757 int num_detailsPerElement;
758 Z_PerElementDetails **detailsPerElement; /* OPTIONAL */
759 } Z_RetrievalRecordDetails;
761 typedef struct Z_SortKeyDetailsSortType
764 #define Z_SortKeyDetailsSortType_character 0
765 #define Z_SortKeyDetailsSortType_numeric 1
766 #define Z_SortKeyDetailsSortType_structured 2
771 Z_HumanString *structured;
773 } Z_SortKeyDetailsSortType;
775 typedef struct Z_SortKeyDetails
777 Z_HumanString *description; /* OPTIONAL */
778 int num_elementSpecifications;
779 Z_Specification **elementSpecifications; /* OPTIONAL */
780 Z_AttributeCombinations *attributeSpecifications; /* OPTIONAL */
781 Z_SortKeyDetailsSortType *sortType; /* OPTIONAL */
782 int *caseSensitivity; /* OPTIONAL */
783 #define Z_SortKeyDetails_always 0
784 #define Z_SortKeyDetails_never 1
785 #define Z_SortKeyDetails_defaultYes 2
786 #define Z_SortKeyDetails_defaultNo 3
789 typedef struct Z_SortDetails
791 Z_CommonInfo *commonInfo; /* OPTIONAL */
795 Z_DatabaseName *databaseName;
800 Z_SortKeyDetails **sortKeys; /* OPTIONAL */
803 typedef struct Z_ProcessingInformation
805 Z_CommonInfo *commonInfo; /* OPTIONAL */
809 Z_DatabaseName *databaseName;
810 int *processingContext;
811 #define Z_ProcessingInformation_access 0
812 #define Z_ProcessingInformation_search 1
813 #define Z_ProcessingInformation_retrieval 2
814 #define Z_ProcessingInformation_recordPresentation 3
815 #define Z_ProcessingInformation_recordHandling 4
821 Z_HumanString *description; /* OPTIONAL */
822 Z_External *instructions; /* OPTIONAL */
823 } Z_ProcessingInformation;
825 typedef struct Z_ValueDescription
828 #define Z_ValueDescription_integer 0
829 #define Z_ValueDescription_string 1
830 #define Z_ValueDescription_octets 2
831 #define Z_ValueDescription_oid 3
832 #define Z_ValueDescription_unit 4
833 #define Z_ValueDescription_valueAndUnit 5
841 Z_IntUnit *valueAndUnit;
843 } Z_ValueDescription;
845 typedef struct Z_ValueRange
847 Z_ValueDescription *lower; /* OPTIONAL */
848 Z_ValueDescription *upper; /* OPTIONAL */
851 typedef struct Z_ValueSetEnumerated
854 Z_ValueDescription **enumerated;
855 } Z_ValueSetEnumerated;
857 typedef struct Z_ValueSet
860 #define Z_ValueSet_range 0
861 #define Z_ValueSet_enumerated 1
865 Z_ValueSetEnumerated *enumerated;
869 typedef struct Z_VariantValue
872 Z_ValueSet *values; /* OPTIONAL */
875 typedef struct Z_VariantType
877 char *name; /* OPTIONAL */
878 Z_HumanString *description; /* OPTIONAL */
880 Z_VariantValue *variantValue; /* OPTIONAL */
883 typedef struct Z_VariantClass
885 char *name; /* OPTIONAL */
886 Z_HumanString *description; /* OPTIONAL */
888 int num_variantTypes;
889 Z_VariantType **variantTypes;
892 typedef struct Z_VariantSetInfo
894 Z_CommonInfo *commonInfo; /* OPTIONAL */
907 Z_VariantClass **variants; /* OPTIONAL */
910 typedef struct Z_Units
912 char *name; /* OPTIONAL */
913 Z_HumanString *description; /* OPTIONAL */
914 Z_StringOrNumeric *unit;
917 typedef struct Z_UnitType
919 char *name; /* OPTIONAL */
920 Z_HumanString *description; /* OPTIONAL */
921 Z_StringOrNumeric *unitType;
926 typedef struct Z_UnitInfo
928 Z_CommonInfo *commonInfo; /* OPTIONAL */
936 Z_HumanString *description; /* OPTIONAL */
938 Z_UnitType **units; /* OPTIONAL */
941 typedef struct Z_CategoryInfo
944 char *originalCategory; /* OPTIONAL */
945 Z_HumanString *description; /* OPTIONAL */
946 char *asn1Module; /* OPTIONAL */
949 typedef struct Z_CategoryList
951 Z_CommonInfo *commonInfo; /* OPTIONAL */
953 Z_CategoryInfo **categories;
956 typedef struct Z_ExplainRecord
959 #define Z_Explain_targetInfo 0
960 #define Z_Explain_databaseInfo 1
961 #define Z_Explain_schemaInfo 2
962 #define Z_Explain_tagSetInfo 3
963 #define Z_Explain_recordSyntaxInfo 4
964 #define Z_Explain_attributeSetInfo 5
965 #define Z_Explain_termListInfo 6
966 #define Z_Explain_extendedServicesInfo 7
967 #define Z_Explain_attributeDetails 8
968 #define Z_Explain_termListDetails 9
969 #define Z_Explain_elementSetDetails 10
970 #define Z_Explain_retrievalRecordDetails 11
971 #define Z_Explain_sortDetails 12
972 #define Z_Explain_processing 13
973 #define Z_Explain_variants 14
974 #define Z_Explain_units 15
975 #define Z_Explain_categoryList 16
978 Z_TargetInfo *targetInfo;
979 Z_DatabaseInfo *databaseInfo;
980 Z_SchemaInfo *schemaInfo;
981 Z_TagSetInfo *tagSetInfo;
982 Z_RecordSyntaxInfo *recordSyntaxInfo;
983 Z_AttributeSetInfo *attributeSetInfo;
984 Z_TermListInfo *termListInfo;
985 Z_ExtendedServicesInfo *extendedServicesInfo;
986 Z_AttributeDetails *attributeDetails;
987 Z_TermListDetails *termListDetails;
988 Z_ElementSetDetails *elementSetDetails;
989 Z_RetrievalRecordDetails *retrievalRecordDetails;
990 Z_SortDetails *sortDetails;
991 Z_ProcessingInformation *processing;
992 Z_VariantSetInfo *variants;
994 Z_CategoryList *categoryList;
998 int z_ExplainRecord(ODR o, Z_ExplainRecord **p, int opt);