2 * Copyright (c) 1995-1998, 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
37 typedef struct Z_CommonInfo
39 char *dateAdded; /* OPTIONAL */
40 char *dateChanged; /* OPTIONAL */
41 char *expiry; /* OPTIONAL */
42 char *humanStringLanguage; /* OPTIONAL */
43 Z_OtherInformation *otherInfo; /* OPTIONAL */
46 typedef struct Z_HumanStringUnit
48 char *language; /* OPTIONAL */
52 typedef struct Z_HumanString
55 Z_HumanStringUnit **strings;
58 typedef struct Z_IconObjectUnit
61 #define Z_IconObjectUnit_ianaType 0
62 #define Z_IconObjectUnit_z3950type 1
63 #define Z_IconObjectUnit_otherType 2
68 typedef struct Z_IconObject
71 Z_IconObjectUnit **elements;
74 typedef struct Z_ContactInfo
76 char *name; /* OPTIONAL */
77 Z_HumanString *description; /* OPTIONAL */
78 Z_HumanString *address; /* OPTIONAL */
79 char *email; /* OPTIONAL */
80 char *phone; /* OPTIONAL */
83 typedef struct Z_NetworkAddressIA
89 typedef struct Z_NetworkAddressOPA
92 char *sSel; /* OPTIONAL */
93 char *tSel; /* OPTIONAL */
95 } Z_NetworkAddressOPA;
97 typedef struct Z_NetworkAddressOther
101 } Z_NetworkAddressOther;
103 typedef struct Z_NetworkAddress
106 #define Z_NetworkAddress_iA 0
107 #define Z_NetworkAddress_oPA 1
108 #define Z_NetworkAddress_other 2
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
148 #define Z_ProxSupportUnit_known 0
149 #define Z_ProxSupportUnit_private 1
153 Z_ProxSupportPrivate *zprivate;
157 typedef struct Z_ProximitySupport
160 int num_unitsSupported;
161 Z_ProxSupportUnit **unitsSupported; /* OPTIONAL */
162 } Z_ProximitySupport;
164 typedef struct Z_RpnCapabilities
167 int **operators; /* OPTIONAL */
168 bool_t *resultSetAsOperandSupported;
169 bool_t *restrictionOperandSupported;
170 Z_ProximitySupport *proximity; /* OPTIONAL */
173 typedef struct Z_Iso8777Capabilities
176 Z_SearchKey **searchKeys;
177 Z_HumanString *restrictions; /* OPTIONAL */
178 } Z_Iso8777Capabilities;
180 typedef struct Z_QueryTypeDetails
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
191 Z_PrivateCapabilities *zprivate;
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_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;
214 typedef struct Z_AccessRestrictions
217 Z_AccessRestrictionsUnit **elements;
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 */
265 char **unitSystems; /* 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 */
286 #define Z_AttributeOcc_any_or_none 0
287 #define Z_AttributeOcc_specific 1
290 Odr_null *any_or_none;
291 Z_AttributeValueList *specific;
293 } Z_AttributeOccurrence;
295 typedef struct Z_AttributeCombination
298 Z_AttributeOccurrence **occurrences;
299 } Z_AttributeCombination;
301 typedef struct Z_AttributeCombinations
303 Odr_oid *defaultAttributeSet;
304 int num_legalCombinations;
305 Z_AttributeCombination **legalCombinations;
306 } Z_AttributeCombinations;
308 typedef struct Z_AttributeValue
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 */
319 typedef struct Z_TargetInfo
321 Z_CommonInfo *commonInfo; /* OPTIONAL */
327 * non-key brief elements
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 */
341 Z_ContactInfo *contactInfo; /* OPTIONAL */
342 Z_HumanString *description; /* OPTIONAL */
345 Z_HumanString *usageRest; /* OPTIONAL */
346 Z_HumanString *paymentAddr; /* OPTIONAL */
347 Z_HumanString *hours; /* OPTIONAL */
348 int num_dbCombinations;
349 Z_DatabaseList **dbCombinations; /* OPTIONAL */
351 Z_NetworkAddress **addresses; /* OPTIONAL */
353 char **languages; /* OPTIONAL */
355 Z_AccessInfo *commonAccessInfo; /* OPTIONAL */
358 typedef struct Z_DatabaseInfo
360 Z_CommonInfo *commonInfo; /* OPTIONAL */
364 Z_DatabaseName *name;
368 Odr_null *explainDatabase; /* OPTIONAL */
370 Z_DatabaseName **nicknames; /* OPTIONAL */
371 Z_IconObject *icon; /* OPTIONAL */
374 Z_HumanString *titleString; /* OPTIONAL */
376 * Non-brief elements.
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 */
391 #define Z_DatabaseInfo_actualNumber 1
392 #define Z_DatabaseInfo_approxNumber 2
396 int recordCount_which;
397 #define Z_DatabaseInfo_actualNumber 0
398 #define Z_DatabaseInfo_approxNumber 1
399 int *recordCount; /* OPTIONAL */
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 */
418 typedef struct Z_TagTypeMapping
421 Odr_oid *tagSet; /* OPTIONAL */
422 Odr_null *defaultTagType; /* OPTIONAL */
425 typedef struct Z_PathUnit
428 Z_StringOrNumeric *tagValue;
431 typedef struct Z_Path
437 struct Z_ElementDataType;
438 typedef struct Z_ElementDataType Z_ElementDataType;
440 typedef struct Z_ElementInfo
443 Z_Path *elementTagPath;
444 Z_ElementDataType *dataType; /* OPTIONAL */
447 Z_HumanString *description; /* OPTIONAL */
450 typedef struct Z_ElementInfoList
453 Z_ElementInfo **list;
456 struct Z_ElementDataType
459 #define Z_ElementDataType_primitive 0
460 #define Z_ElementDataType_structured 1
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;
478 typedef struct Z_TagSetInfoElements
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;
490 typedef struct Z_SchemaInfo
492 Z_CommonInfo *commonInfo; /* OPTIONAL */
504 Z_HumanString *description; /* OPTIONAL */
505 int num_tagTypeMapping;
506 Z_TagTypeMapping **tagTypeMapping; /* OPTIONAL */
507 int num_recordStructure;
508 Z_ElementInfo **recordStructure; /* OPTIONAL */
512 typedef struct Z_TagSetInfo
514 Z_CommonInfo *commonInfo; /* OPTIONAL */
526 Z_HumanString *description; /* OPTIONAL */
528 Z_TagSetInfoElements **elements; /* OPTIONAL */
531 typedef struct Z_RecordSyntaxInfo
533 Z_CommonInfo *commonInfo; /* OPTIONAL */
537 Odr_oid *recordSyntax;
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;
553 typedef struct Z_AttributeDescription
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;
562 typedef struct Z_AttributeType
564 char *name; /* OPTIONAL */
565 Z_HumanString *description; /* OPTIONAL */
567 int num_attributeValues;
568 Z_AttributeDescription **attributeValues;
571 typedef struct Z_AttributeSetInfo
573 Z_CommonInfo *commonInfo; /* OPTIONAL */
577 Odr_oid *attributeSet;
586 Z_AttributeType **attributes; /* OPTIONAL */
587 Z_HumanString *description; /* OPTIONAL */
588 } Z_AttributeSetInfo;
590 typedef struct Z_TermListElement
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
601 char **broader; /* OPTIONAL */
603 char **narrower; /* OPTIONAL */
606 typedef struct Z_TermListInfo
608 Z_CommonInfo *commonInfo; /* OPTIONAL */
612 Z_DatabaseName *databaseName;
617 Z_TermListElement **termLists;
620 typedef struct Z_ExtendedServicesInfo
622 Z_CommonInfo *commonInfo; /* OPTIONAL */
630 char *name; /* OPTIONAL */
632 bool_t *restrictionsApply;
635 bool_t *retentionSupported;
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
645 Z_HumanString *description; /* OPTIONAL */
646 Z_External *specificExplain; /* OPTIONAL */
647 char *esASN; /* OPTIONAL */
648 } Z_ExtendedServicesInfo;
650 typedef struct Z_OmittedAttributeInterpretation
652 Z_StringOrNumeric *defaultValue; /* OPTIONAL */
653 Z_HumanString *defaultDescription; /* OPTIONAL */
654 } Z_OmittedAttributeInterpretation;
656 typedef struct Z_AttributeTypeDetails
659 Z_OmittedAttributeInterpretation *defaultIfOmitted; /* OPTIONAL */
660 int num_attributeValues;
661 Z_AttributeValue **attributeValues; /* OPTIONAL */
662 } Z_AttributeTypeDetails;
664 typedef struct Z_AttributeSetDetails
666 Odr_oid *attributeSet;
667 int num_attributesByType;
668 Z_AttributeTypeDetails **attributesByType;
669 } Z_AttributeSetDetails;
671 typedef struct Z_AttributeDetails
673 Z_CommonInfo *commonInfo; /* OPTIONAL */
677 Z_DatabaseName *databaseName;
681 int num_attributesBySet;
682 Z_AttributeSetDetails **attributesBySet; /* OPTIONAL */
683 Z_AttributeCombinations *attributeCombinations; /* OPTIONAL */
684 } Z_AttributeDetails;
686 typedef struct Z_EScanInfo
688 int *maxStepSize; /* OPTIONAL */
689 Z_HumanString *collatingSequence; /* OPTIONAL */
690 bool_t *increasing; /* OPTIONAL */
693 typedef struct Z_TermListDetails
695 Z_CommonInfo *commonInfo; /* OPTIONAL */
703 Z_HumanString *description; /* OPTIONAL */
704 Z_AttributeCombinations *attributes; /* OPTIONAL */
705 Z_EScanInfo *scanInfo; /* OPTIONAL */
706 int *estNumberTerms; /* OPTIONAL */
708 Z_Term **sampleTerms; /* OPTIONAL */
711 typedef struct Z_RecordTag
713 Z_StringOrNumeric *qualifier; /* OPTIONAL */
714 Z_StringOrNumeric *tagValue;
717 typedef struct Z_PerElementDetails
719 char *name; /* OPTIONAL */
720 Z_RecordTag *recordTag; /* OPTIONAL */
722 Z_Path **schemaTags; /* OPTIONAL */
723 int *maxSize; /* OPTIONAL */
724 int *minSize; /* OPTIONAL */
725 int *avgSize; /* OPTIONAL */
726 int *fixedSize; /* OPTIONAL */
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;
740 typedef struct Z_ElementSetDetails
742 Z_CommonInfo *commonInfo; /* OPTIONAL */
746 Z_DatabaseName *databaseName;
747 char *elementSetName;
748 Odr_oid *recordSyntax;
756 Z_HumanString *description; /* OPTIONAL */
757 int num_detailsPerElement;
758 Z_PerElementDetails **detailsPerElement; /* OPTIONAL */
759 } Z_ElementSetDetails;
761 typedef struct Z_RetrievalRecordDetails
763 Z_CommonInfo *commonInfo; /* OPTIONAL */
767 Z_DatabaseName *databaseName;
769 Odr_oid *recordSyntax;
773 Z_HumanString *description; /* OPTIONAL */
774 int num_detailsPerElement;
775 Z_PerElementDetails **detailsPerElement; /* OPTIONAL */
776 } Z_RetrievalRecordDetails;
778 typedef struct Z_SortKeyDetails
780 Z_HumanString *description; /* OPTIONAL */
781 int num_elementSpecifications;
782 Z_Specification **elementSpecifications; /* OPTIONAL */
783 Z_AttributeCombinations *attributeSpecifications; /* OPTIONAL */
785 #define Z_SortKeyDetails_character 0
786 #define Z_SortKeyDetails_numeric 1
787 #define Z_SortKeyDetails_structured 2
792 Z_HumanString *structured;
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
801 typedef struct Z_SortDetails
803 Z_CommonInfo *commonInfo; /* OPTIONAL */
807 Z_DatabaseName *databaseName;
812 Z_SortKeyDetails **sortKeys; /* OPTIONAL */
815 typedef struct Z_ProcessingInformation
817 Z_CommonInfo *commonInfo; /* OPTIONAL */
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
833 Z_HumanString *description; /* OPTIONAL */
834 Z_External *instructions; /* OPTIONAL */
835 } Z_ProcessingInformation;
837 typedef struct Z_ValueDescription
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
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 **elements;
867 } Z_ValueSetEnumerated;
869 typedef struct Z_ValueSet
872 #define Z_ValueSet_range 0
873 #define Z_ValueSet_enumerated 1
877 Z_ValueSetEnumerated *enumerated;
881 typedef struct Z_VariantValue
884 Z_ValueSet *values; /* OPTIONAL */
887 typedef struct Z_VariantType
889 char *name; /* OPTIONAL */
890 Z_HumanString *description; /* OPTIONAL */
892 Z_VariantValue *variantValue; /* OPTIONAL */
895 typedef struct Z_VariantClass
897 char *name; /* OPTIONAL */
898 Z_HumanString *description; /* OPTIONAL */
900 int num_variantTypes;
901 Z_VariantType **variantTypes;
904 typedef struct Z_VariantSetInfo
906 Z_CommonInfo *commonInfo; /* OPTIONAL */
919 Z_VariantClass **variants; /* OPTIONAL */
922 typedef struct Z_Units
924 char *name; /* OPTIONAL */
925 Z_HumanString *description; /* OPTIONAL */
926 Z_StringOrNumeric *unit;
929 typedef struct Z_UnitType
931 char *name; /* OPTIONAL */
932 Z_HumanString *description; /* OPTIONAL */
933 Z_StringOrNumeric *unitType;
938 typedef struct Z_UnitInfo
940 Z_CommonInfo *commonInfo; /* OPTIONAL */
948 Z_HumanString *description; /* OPTIONAL */
950 Z_UnitType **units; /* OPTIONAL */
953 typedef struct Z_CategoryInfo
956 char *originalCategory; /* OPTIONAL */
957 Z_HumanString *description; /* OPTIONAL */
958 char *asn1Module; /* OPTIONAL */
961 typedef struct Z_CategoryList
963 Z_CommonInfo *commonInfo; /* OPTIONAL */
965 Z_CategoryInfo **categories;
968 typedef struct Z_ExplainRecord
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
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;
1006 Z_CategoryList *categoryList;
1010 YAZ_EXPORT int z_ExplainRecord(ODR o, Z_ExplainRecord **p, int opt,