X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=asn%2Fprt-exp.c;h=9e9243f52594784fbc4586cf6fbfa91c67f7b57d;hb=006c3df264a95c03bfc557b2004595fc6cc3ee14;hp=92499331187ae2ca3d04d5fc85bdb7a3bb4b353c;hpb=72592d242326dea9e05cae90d50348a2da0c0948;p=yaz-moved-to-github.git diff --git a/asn/prt-exp.c b/asn/prt-exp.c index 9249933..9e9243f 100644 --- a/asn/prt-exp.c +++ b/asn/prt-exp.c @@ -1,10 +1,46 @@ /* - * Copyright (c) 1995, Index Data. + * Copyright (c) 1995-1999, Index Data. * See the file LICENSE for details. * Sebastian Hammer, Adam Dickmeiss * * $Log: prt-exp.c,v $ - * Revision 1.2 1995-08-15 11:59:43 quinn + * Revision 1.13 1999-11-30 13:47:11 adam + * Improved installation. Moved header files to include/yaz. + * + * Revision 1.12 1999/04/20 09:56:48 adam + * Added 'name' paramter to encoder/decoder routines (typedef Odr_fun). + * Modified all encoders/decoders to reflect this change. + * + * Revision 1.11 1999/03/18 12:57:13 adam + * Fixed bug in TargetInfo encoder/decoder. + * + * Revision 1.10 1998/05/18 13:06:52 adam + * Changed the way attribute sets are handled by the retriaval module. + * Extended Explain conversion / schema. + * Modified server and client to work with ASN.1 compiled protocol handlers. + * + * Revision 1.9 1998/02/11 11:53:32 adam + * Changed code so that it compiles as C++. + * + * Revision 1.8 1996/01/02 11:46:41 quinn + * Changed 'operator' to 'roperator' to avoid C++ conflict. + * + * Revision 1.7 1995/12/14 16:28:07 quinn + * More explain stuff. + * + * Revision 1.6 1995/12/14 11:09:09 quinn + * Fixed bug in tagging. + * + * Revision 1.5 1995/12/05 11:15:50 quinn + * Work. + * + * Revision 1.4 1995/09/29 17:11:54 quinn + * Smallish + * + * Revision 1.3 1995/09/27 15:02:42 quinn + * Modified function heads & prototypes. + * + * Revision 1.2 1995/08/15 11:59:43 quinn * Updated External * * Revision 1.1 1995/08/10 08:54:02 quinn @@ -13,448 +49,503 @@ * */ -#include - -int z_LanguageCode(ODR o, char **p, int opt); -int z_CommonInfo(ODR o, Z_CommonInfo **p, int opt); -int z_HumanStringUnit(ODR o, Z_HumanStringUnit **p, int opt); -int z_HumanString(ODR o, Z_HumanString **p, int opt); -int z_IconObjectUnit(ODR o, Z_IconObjectUnit **p, int opt); -int z_IconObject(ODR o, Z_IconObject **p, int opt); -int z_ContactInfo(ODR o, Z_ContactInfo **p, int opt); -int z_NetworkAddressIA(ODR o, Z_NetworkAddressIA **p, int opt); -int z_NetworkAddressOPA(ODR o, Z_NetworkAddressOPA **p, int opt); -int z_NetworkAddressOther(ODR o, Z_NetworkAddressOther **p, int opt); -int z_NetworkAddress(ODR o, Z_NetworkAddress **p, int opt); -int z_AccessInfo(ODR o, Z_AccessInfo **p, int opt); -int z_QueryTypeDetails(ODR o, Z_QueryTypeDetails **p, int opt); -int z_PrivateCapOperator(ODR o, Z_PrivateCapOperator **p, int opt); -int z_PrivateCapabilities(ODR o, Z_PrivateCapabilities **p, int opt); -int z_RpnCapabilities(ODR o, Z_RpnCapabilities **p, int opt); -int z_Iso8777Capabilities(ODR o, Z_Iso8777Capabilities **p, int opt); -int z_ProxSupportPrivate(ODR o, Z_ProxSupportPrivate **p, int opt); -int z_ProxSupportUnit(ODR o, Z_ProxSupportUnit **p, int opt); -int z_ProximitySupport(ODR o, Z_ProximitySupport **p, int opt); -int z_SearchKey(ODR o, Z_SearchKey **p, int opt); -int z_AccessRestrictionsUnit(ODR o, Z_AccessRestrictionsUnit **p, int opt); -int z_AccessRestrictions(ODR o, Z_AccessRestrictions **p, int opt); -int z_CostsOtherCharge(ODR o, Z_CostsOtherCharge **p, int opt); -int z_Costs(ODR o, Z_Costs **p, int opt); -int z_Charge(ODR o, Z_Charge **p, int opt); -int z_DatabaseList(ODR o, Z_DatabaseList **p, int opt); -int z_AttributeCombinations(ODR o, Z_AttributeCombinations **p, int opt); -int z_AttributeCombination(ODR o, Z_AttributeCombination **p, int opt); -int z_AttributeValueList(ODR o, Z_AttributeValueList **p, int opt); -int z_AttributeOccurrence(ODR o, Z_AttributeOccurrence **p, int opt); -int z_AttributeValue(ODR o, Z_AttributeValue **p, int opt); -int z_TargetInfo(ODR o, Z_TargetInfo **p, int opt); -int z_DatabaseInfo(ODR o, Z_DatabaseInfo **p, int opt); -int z_TagTypeMapping(ODR o, Z_TagTypeMapping **p, int opt); -int z_SchemaInfo(ODR o, Z_SchemaInfo **p, int opt); -int z_ElementInfo(ODR o, Z_ElementInfo **p, int opt); -int z_PathUnit(ODR o, Z_PathUnit **p, int opt); -int z_Path(ODR o, Z_Path **p, int opt); -int z_ElementInfoList(ODR o, Z_Path **p, int opt); -int z_ElementDataType(ODR o, Z_ElementDataType **p, int opt); -int z_TagSetInfoElements(ODR o, Z_TagSetInfoElements **p, int opt); -int z_TagSetInfo(ODR o, Z_TagSetInfo **p, int opt); -int z_RecordSyntaxInfo(ODR o, Z_RecordSyntaxInfo **p, int opt); -int z_AttributeSetInfo(ODR o, Z_AttributeSetInfo **p, int opt); -int z_AttributeType(ODR o, Z_AttributeType **p, int opt); -int z_AttributeDescription(ODR o, Z_AttributeDescription **p, int opt); -int z_TermListElement(ODR o, Z_TermListElement **p, int opt); -int z_TermListInfo(ODR o, Z_TermListInfo **p, int opt); -int z_ExtendedServicesInfo(ODR o, Z_ExtendedServicesInfo **p, int opt); -int z_AttributeDetails(ODR o, Z_AttributeDetails **p, int opt); -int z_AttributeSetDetails(ODR o, Z_AttributeSetDetails **p, int opt); -int z_AttributeTypeDetails(ODR o, Z_AttributeTypeDetails **p, int opt); -int z_OmittedAttributeInterpretation(ODR o, Z_OmittedAttributeInterpretation **p, int opt); -int z_EScanInfo(ODR o, Z_EScanInfo **p, int opt); -int z_TermListDetails(ODR o, Z_TermListDetails **p, int opt); -int z_ElementSetDetails(ODR o, Z_ElementSetDetails **p, int opt); -int z_RetrievalRecordDetails(ODR o, Z_RetrievalRecordDetails **p, int opt); -int z_PerElementDetails(ODR o, Z_PerElementDetails **p, int opt); -int z_RecordTag(ODR o, Z_RecordTag **p, int opt); -int z_SortDetails(ODR o, Z_SortDetails **p, int opt); -int z_SortKeyDetailsSortType(ODR o, Z_SortKeyDetailsSortType **p, int opt); -int z_SortKeyDetails(ODR o, Z_SortKeyDetails **p, int opt); -int z_ProcessingInformation(ODR o, Z_ProcessingInformation **p, int opt); -int z_VariantSetInfo(ODR o, Z_VariantSetInfo **p, int opt); -int z_VariantClass(ODR o, Z_VariantClass **p, int opt); -int z_VariantType(ODR o, Z_VariantType **p, int opt); -int z_VariantValue(ODR o, Z_VariantValue **p, int opt); -int z_ValueSetEnumerated(ODR o, Z_ValueSetEnumerated **p, int opt); -int z_ValueSet(ODR o, Z_ValueSet **p, int opt); -int z_ValueRange(ODR o, Z_ValueRange **p, int opt); -int z_ValueDescription(ODR o, Z_ValueDescription **p, int opt); -int z_UnitInfo(ODR o, Z_UnitInfo **p, int opt); -int z_UnitType(ODR o, Z_UnitType **p, int opt); -int z_Units(ODR o, Z_Units **p, int opt); -int z_CategoryList(ODR o, Z_CategoryList **p, int opt); -int z_CategoryInfo(ODR o, Z_CategoryInfo **p, int opt); -int z_ExplainRecord(ODR o, Z_ExplainRecord **p, int opt); - -int z_LanguageCode(ODR o, char **p, int opt) -{ - return z_InternationalString(o, p, opt); -} - -int z_CommonInfo(ODR o, Z_CommonInfo **p, int opt) -{ - if (!odr_sequence_begin(o, p, sizeof(**p))) +#include + +int z_LanguageCode(ODR o, char **p, int opt, const char *name); +int z_CommonInfo(ODR o, Z_CommonInfo **p, int opt, const char *name); +int z_HumanStringUnit(ODR o, Z_HumanStringUnit **p, int opt, const char *name); +int z_HumanString(ODR o, Z_HumanString **p, int opt, const char *name); +int z_IconObjectUnit(ODR o, Z_IconObjectUnit **p, int opt, const char *name); +int z_IconObject(ODR o, Z_IconObject **p, int opt, const char *name); +int z_ContactInfo(ODR o, Z_ContactInfo **p, int opt, const char *name); +int z_NetworkAddressIA(ODR o, Z_NetworkAddressIA **p, int opt, + const char *name); +int z_NetworkAddressOPA(ODR o, Z_NetworkAddressOPA **p, int opt, + const char *name); +int z_NetworkAddressOther(ODR o, Z_NetworkAddressOther **p, int opt, + const char *name); +int z_NetworkAddress(ODR o, Z_NetworkAddress **p, int opt, const char *name); +int z_AccessInfo(ODR o, Z_AccessInfo **p, int opt, const char *name); +int z_QueryTypeDetails(ODR o, Z_QueryTypeDetails **p, int opt, + const char *name); +int z_PrivateCapOperator(ODR o, Z_PrivateCapOperator **p, int opt, + const char *name); +int z_PrivateCapabilities(ODR o, Z_PrivateCapabilities **p, int opt, + const char *name); +int z_RpnCapabilities(ODR o, Z_RpnCapabilities **p, int opt, const char *name); +int z_Iso8777Capabilities(ODR o, Z_Iso8777Capabilities **p, int opt, + const char *name); +int z_ProxSupportPrivate(ODR o, Z_ProxSupportPrivate **p, int opt, + const char *name); +int z_ProxSupportUnit(ODR o, Z_ProxSupportUnit **p, int opt, const char *name); +int z_ProximitySupport(ODR o, Z_ProximitySupport **p, int opt, + const char *name); +int z_SearchKey(ODR o, Z_SearchKey **p, int opt, const char *name); +int z_AccessRestrictionsUnit(ODR o, Z_AccessRestrictionsUnit **p, int opt, + const char *name); +int z_AccessRestrictions(ODR o, Z_AccessRestrictions **p, int opt, + const char *name); +int z_CostsOtherCharge(ODR o, Z_CostsOtherCharge **p, int opt, + const char *name); +int z_Costs(ODR o, Z_Costs **p, int opt, const char *name); +int z_Charge(ODR o, Z_Charge **p, int opt, const char *name); +int z_DatabaseList(ODR o, Z_DatabaseList **p, int opt, const char *name); +int z_AttributeCombinations(ODR o, Z_AttributeCombinations **p, int opt, + const char *name); +int z_AttributeCombination(ODR o, Z_AttributeCombination **p, int opt, + const char *name); +int z_AttributeValueList(ODR o, Z_AttributeValueList **p, int opt, + const char *name); +int z_AttributeOccurrence(ODR o, Z_AttributeOccurrence **p, int opt, + const char *name); +int z_AttributeValue(ODR o, Z_AttributeValue **p, int opt, const char *name); +int z_TargetInfo(ODR o, Z_TargetInfo **p, int opt, const char *name); +int z_DatabaseInfo(ODR o, Z_DatabaseInfo **p, int opt, const char *name); +int z_TagTypeMapping(ODR o, Z_TagTypeMapping **p, int opt, const char *name); +int z_SchemaInfo(ODR o, Z_SchemaInfo **p, int opt, const char *name); +int z_ElementInfo(ODR o, Z_ElementInfo **p, int opt, const char *name); +int z_PathUnit(ODR o, Z_PathUnit **p, int opt, const char *name); +int z_Path(ODR o, Z_Path **p, int opt, const char *name); +int z_ElementInfoList(ODR o, Z_Path **p, int opt, const char *name); +int z_ElementDataType(ODR o, Z_ElementDataType **p, int opt, const char *name); +int z_TagSetInfoElements(ODR o, Z_TagSetInfoElements **p, int opt, + const char *name); +int z_TagSetInfo(ODR o, Z_TagSetInfo **p, int opt, const char *name); +int z_RecordSyntaxInfo(ODR o, Z_RecordSyntaxInfo **p, int opt, + const char *name); +int z_AttributeSetInfo(ODR o, Z_AttributeSetInfo **p, int opt, + const char *name); +int z_AttributeType(ODR o, Z_AttributeType **p, int opt, const char *name); +int z_AttributeDescription(ODR o, Z_AttributeDescription **p, int opt, + const char *name); +int z_TermListElement(ODR o, Z_TermListElement **p, int opt, const char *name); +int z_TermListInfo(ODR o, Z_TermListInfo **p, int opt, const char *name); +int z_ExtendedServicesInfo(ODR o, Z_ExtendedServicesInfo **p, int opt, + const char *name); +int z_AttributeDetails(ODR o, Z_AttributeDetails **p, int opt, + const char *name); +int z_AttributeSetDetails(ODR o, Z_AttributeSetDetails **p, int opt, + const char *name); +int z_AttributeTypeDetails(ODR o, Z_AttributeTypeDetails **p, int opt, + const char *name); +int z_OmittedAttributeInterpretation(ODR o, + Z_OmittedAttributeInterpretation **p, + int opt, const char *name); +int z_EScanInfo(ODR o, Z_EScanInfo **p, int opt, const char *name); +int z_TermListDetails(ODR o, Z_TermListDetails **p, int opt, const char *name); +int z_ElementSetDetails(ODR o, Z_ElementSetDetails **p, int opt, + const char *name); +int z_RetrievalRecordDetails(ODR o, Z_RetrievalRecordDetails **p, int opt, + const char *name); +int z_PerElementDetails(ODR o, Z_PerElementDetails **p, int opt, + const char *name); +int z_RecordTag(ODR o, Z_RecordTag **p, int opt, const char *name); +int z_SortDetails(ODR o, Z_SortDetails **p, int opt, const char *name); +int z_SortKeyDetails(ODR o, Z_SortKeyDetails **p, int opt, const char *name); +int z_ProcessingInformation(ODR o, Z_ProcessingInformation **p, int opt, + const char *name); +int z_VariantSetInfo(ODR o, Z_VariantSetInfo **p, int opt, const char *name); +int z_VariantClass(ODR o, Z_VariantClass **p, int opt, const char *name); +int z_VariantType(ODR o, Z_VariantType **p, int opt, const char *name); +int z_VariantValue(ODR o, Z_VariantValue **p, int opt, const char *name); +int z_ValueSetEnumerated(ODR o, Z_ValueSetEnumerated **p, int opt, + const char *name); +int z_ValueSet(ODR o, Z_ValueSet **p, int opt, const char *name); +int z_ValueRange(ODR o, Z_ValueRange **p, int opt, const char *name); +int z_ValueDescription(ODR o, Z_ValueDescription **p, int opt, + const char *name); +int z_UnitInfo(ODR o, Z_UnitInfo **p, int opt, const char *name); +int z_UnitType(ODR o, Z_UnitType **p, int opt, const char *name); +int z_Units(ODR o, Z_Units **p, int opt, const char *name); +int z_CategoryList(ODR o, Z_CategoryList **p, int opt, const char *name); +int z_CategoryInfo(ODR o, Z_CategoryInfo **p, int opt, const char *name); +int z_ExplainRecord(ODR o, Z_ExplainRecord **p, int opt, const char *name); + +int z_LanguageCode(ODR o, char **p, int opt, const char *name) +{ + return z_InternationalString(o, p, opt, 0); +} + +int z_CommonInfo(ODR o, Z_CommonInfo **p, int opt, const char *name) +{ + if (!odr_sequence_begin(o, p, sizeof(**p), 0)) return opt && odr_ok(o); return - odr_implicit(o, odr_generalizedtime, &(*p)->dateAdded, ODR_CONTEXT, 0, 1) && - odr_implicit(o, odr_generalizedtime, &(*p)->dateChanged, ODR_CONTEXT, 1, 1) && - odr_implicit(o, odr_generalizedtime, &(*p)->expiry, ODR_CONTEXT, 2, 1) && - odr_implicit(o, z_LanguageCode, &(*p)->humanStringLanguage, ODR_CONTEXT, 3, 1) && - z_OtherInformation(o, &(*p)->otherInfo, 1) && + odr_implicit(o, odr_generalizedtime, &(*p)->dateAdded, + ODR_CONTEXT, 0, 1) && + odr_implicit(o, odr_generalizedtime, &(*p)->dateChanged, + ODR_CONTEXT, 1, 1) && + odr_implicit(o, odr_generalizedtime, &(*p)->expiry, + ODR_CONTEXT, 2, 1) && + odr_implicit(o, z_LanguageCode, &(*p)->humanStringLanguage, + ODR_CONTEXT, 3, 1) && + z_OtherInformation(o, &(*p)->otherInfo, 1, 0) && odr_sequence_end(o); } -int z_HumanStringUnit(ODR o, Z_HumanStringUnit **p, int opt) +int z_HumanStringUnit(ODR o, Z_HumanStringUnit **p, int opt, const char *name) { - if (!odr_sequence_begin(o, p, sizeof(**p))) + if (!odr_sequence_begin(o, p, sizeof(**p), 0)) return opt && odr_ok(o); return odr_implicit(o, z_LanguageCode, &(*p)->language, ODR_CONTEXT, 0, 1) && odr_implicit(o, z_InternationalString, &(*p)->text, ODR_CONTEXT, - 1, 0) && + 1, 0) && odr_sequence_end(o); } -int z_HumanString(ODR o, Z_HumanString **p, int opt) +int z_HumanString(ODR o, Z_HumanString **p, int opt, const char *name) { - if (o->direction == ODR_DECODE) - *p = odr_malloc(o, sizeof(**p)); - else if (!*p) - return opt && odr_ok(o); - if (odr_sequence_of(o, z_HumanStringUnit, &(*p)->strings, - &(*p)->num_strings)) + if (!odr_initmember(o, p, sizeof(**p))) + return opt && odr_ok(o); + if (odr_sequence_of(o, (Odr_fun)z_HumanStringUnit, &(*p)->strings, + &(*p)->num_strings, 0)) return 1; *p = 0; return opt && odr_ok(o); } -int z_IconObjectUnit(ODR o, Z_IconObjectUnit **p, int opt) +int z_IconObjectUnit(ODR o, Z_IconObjectUnit **p, int opt, const char *name) { static Odr_arm arm[] = { - {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_IconObject_ianaType, - z_InternationalString}, - {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_IconObject_z3950type, - z_InternationalString}, - {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_IconObject_otherType, - z_InternationalString}, - {-1, -1, -1, -1, 0} + {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_IconObjectUnit_ianaType, + z_InternationalString, 0}, + {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_IconObjectUnit_z3950type, + z_InternationalString, 0}, + {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_IconObjectUnit_otherType, + z_InternationalString, 0}, + {-1, -1, -1, -1, 0, 0} }; - if (!odr_sequence_begin(o, p, sizeof(**p))) + if (!odr_sequence_begin(o, p, sizeof(**p), 0)) return opt && odr_ok(o); return - odr_constructed_begin(o, &(*p)->bodyType, ODR_CONTEXT, 1) && - odr_choice(o, arm, &(*p)->bodyType, &(*p)->which) && + odr_constructed_begin(o, &(*p)->bodyType, ODR_CONTEXT, 1, 0) && + odr_choice(o, arm, &(*p)->bodyType, &(*p)->which, 0) && odr_constructed_end(o) && odr_implicit(o, odr_octetstring, &(*p)->content, ODR_CONTEXT, 2, 0) && odr_sequence_end(o); } -int z_IconObject(ODR o, Z_IconObject **p, int opt) +int z_IconObject(ODR o, Z_IconObject **p, int opt, const char *name) { - if (o->direction == ODR_DECODE) - *p = odr_malloc(o, sizeof(**p)); - else if (!*p) - return opt; - if (odr_sequence_of(o, z_IconObjectUnit, &(*p)->iconUnits, - &(*p)->num_iconUnits)) + if (!odr_initmember(o, p, sizeof(**p))) + return opt && odr_ok(o); + if (odr_sequence_of(o, (Odr_fun)z_IconObjectUnit, &(*p)->elements, + &(*p)->num, 0)) return 1; *p = 0; return opt && odr_ok(o); } -int z_ContactInfo(ODR o, Z_ContactInfo **p, int opt) +int z_ContactInfo(ODR o, Z_ContactInfo **p, int opt, const char *name) { - if (!odr_sequence_begin(o, p, sizeof(**p))) + if (!odr_sequence_begin(o, p, sizeof(**p), 0)) return opt && odr_ok(o); return - odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 0, 1) && - odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) && - odr_implicit(o, z_HumanString, &(*p)->address, ODR_CONTEXT, 2, 1) && - odr_implicit(o, z_InternationalString, &(*p)->email, ODR_CONTEXT, 3, 1) && - odr_implicit(o, z_InternationalString, &(*p)->phone, ODR_CONTEXT, 4, 1) && + odr_implicit(o, z_InternationalString, &(*p)->name, + ODR_CONTEXT, 0, 1) && + odr_implicit(o, z_HumanString, &(*p)->description, + ODR_CONTEXT, 1, 1) && + odr_implicit(o, z_HumanString, &(*p)->address, + ODR_CONTEXT, 2, 1) && + odr_implicit(o, z_InternationalString, &(*p)->email, + ODR_CONTEXT, 3, 1) && + odr_implicit(o, z_InternationalString, &(*p)->phone, + ODR_CONTEXT, 4, 1) && odr_sequence_end(o); } -int z_NetworkAddressIA(ODR o, Z_NetworkAddressIA **p, int opt) +int z_NetworkAddressIA(ODR o, Z_NetworkAddressIA **p, int opt, + const char *name) { - if (!odr_sequence_begin(o, p, sizeof(**p))) + if (!odr_sequence_begin(o, p, sizeof(**p), 0)) return opt; return - odr_implicit(o, z_InternationalString, &(*p)->hostAddress, ODR_CONTEXT, 0, 0) && + odr_implicit(o, z_InternationalString, &(*p)->hostAddress, + ODR_CONTEXT, 0, 0) && odr_implicit(o, odr_integer, &(*p)->port, ODR_CONTEXT, 1, 0) && odr_sequence_end(o); } -int z_NetworkAddressOPA(ODR o, Z_NetworkAddressOPA **p, int opt) +int z_NetworkAddressOPA(ODR o, Z_NetworkAddressOPA **p, int opt, + const char *name) { - if (!odr_sequence_begin(o, p, sizeof(**p))) + if (!odr_sequence_begin(o, p, sizeof(**p), 0)) return opt; return - odr_implicit(o, z_InternationalString, &(*p)->pSel, ODR_CONTEXT, 0, 0) && - odr_implicit(o, z_InternationalString, &(*p)->sSel, ODR_CONTEXT, 1, 1) && - odr_implicit(o, z_InternationalString, &(*p)->tSel, ODR_CONTEXT, 2, 1) && - odr_implicit(o, z_InternationalString, &(*p)->nSap, ODR_CONTEXT, 3, 0) && + odr_implicit(o, z_InternationalString, &(*p)->pSel, + ODR_CONTEXT, 0, 0) && + odr_implicit(o, z_InternationalString, &(*p)->sSel, + ODR_CONTEXT, 1, 1) && + odr_implicit(o, z_InternationalString, &(*p)->tSel, + ODR_CONTEXT, 2, 1) && + odr_implicit(o, z_InternationalString, &(*p)->nSap, + ODR_CONTEXT, 3, 0) && odr_sequence_end(o); } -int z_NetworkAddressOther(ODR o, Z_NetworkAddressOther **p, int opt) +int z_NetworkAddressOther(ODR o, Z_NetworkAddressOther **p, int opt, + const char *name) { - if (!odr_sequence_begin(o, p, sizeof(**p))) + if (!odr_sequence_begin(o, p, sizeof(**p), 0)) return opt; return - odr_implicit(o, z_InternationalString, &(*p)->type, ODR_CONTEXT, 0, 0) && - odr_implicit(o, z_InternationalString, &(*p)->address, ODR_CONTEXT, 1, 0) && + odr_implicit(o, z_InternationalString, &(*p)->type, + ODR_CONTEXT, 0, 0) && + odr_implicit(o, z_InternationalString, &(*p)->address, + ODR_CONTEXT, 1, 0) && odr_sequence_end(o); } -int z_NetworkAddress(ODR o, Z_NetworkAddress **p, int opt) +int z_NetworkAddress(ODR o, Z_NetworkAddress **p, int opt, const char *name) { static Odr_arm arm[] = { {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_NetworkAddress_iA, - z_NetworkAddressIA}, + (Odr_fun)z_NetworkAddressIA, 0}, {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_NetworkAddress_oPA, - z_NetworkAddressOPA}, + (Odr_fun)z_NetworkAddressOPA, 0}, {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_NetworkAddress_other, - z_NetworkAddressOther}, - {-1, -1, -1, -1, 0} + (Odr_fun)z_NetworkAddressOther, 0}, + {-1, -1, -1, -1, 0, 0} }; - if (o->direction == ODR_DECODE) - *p = odr_malloc(o, sizeof(**p)); - else if (!*p) - return opt; - if (odr_choice(o, arm, &(*p)->u, &(*p)->which)) + if (!odr_initmember(o, p, sizeof(**p))) + return opt && odr_ok(o); + if (odr_choice(o, arm, &(*p)->u, &(*p)->which, 0)) return 1; *p = 0; return opt && odr_ok(o); } -int z_AccessInfo(ODR o, Z_AccessInfo **p, int opt) +int z_AccessInfo(ODR o, Z_AccessInfo **p, int opt, const char *name) { - if (!odr_sequence_begin(o, p, sizeof(**p))) + if (!odr_sequence_begin(o, p, sizeof(**p), 0)) return opt && odr_ok(o); return odr_implicit_settag(o, ODR_CONTEXT, 0) && - (odr_sequence_of(o, z_QueryTypeDetails, &(*p)->queryTypesSupported, - &(*p)->num_queryTypesSupported) || odr_ok(o)) && + (odr_sequence_of(o, (Odr_fun)z_QueryTypeDetails, + &(*p)->queryTypesSupported, + &(*p)->num_queryTypesSupported, 0) || odr_ok(o)) && odr_implicit_settag(o, ODR_CONTEXT, 1) && - (odr_sequence_of(o, odr_oid, &(*p)->diagnosticsSets, - &(*p)->num_diagnosticsSets) || odr_ok(o)) && + (odr_sequence_of(o, (Odr_fun)odr_oid, &(*p)->diagnosticsSets, + &(*p)->num_diagnosticsSets, 0) || odr_ok(o)) && odr_implicit_settag(o, ODR_CONTEXT, 2) && - (odr_sequence_of(o, odr_oid, &(*p)->attributeSetIds, - &(*p)->num_attributeSetIds) || odr_ok(o)) && + (odr_sequence_of(o, (Odr_fun)odr_oid, &(*p)->attributeSetIds, + &(*p)->num_attributeSetIds, 0) || odr_ok(o)) && odr_implicit_settag(o, ODR_CONTEXT, 3) && - (odr_sequence_of(o, odr_oid, &(*p)->schemas, &(*p)->num_schemas) || - odr_ok(o)) && + (odr_sequence_of(o, (Odr_fun)odr_oid, &(*p)->schemas, + &(*p)->num_schemas, 0) || + odr_ok(o)) && odr_implicit_settag(o, ODR_CONTEXT, 4) && - (odr_sequence_of(o, odr_oid, &(*p)->recordSyntaxes, - &(*p)->num_recordSyntaxes) || odr_ok(o)) && + (odr_sequence_of(o, (Odr_fun)odr_oid, &(*p)->recordSyntaxes, + &(*p)->num_recordSyntaxes, 0) || odr_ok(o)) && odr_implicit_settag(o, ODR_CONTEXT, 5) && - (odr_sequence_of(o, odr_oid, &(*p)->resourceChallenges, - &(*p)->num_resourceChallenges) || odr_ok(o)) && + (odr_sequence_of(o, (Odr_fun)odr_oid, &(*p)->resourceChallenges, + &(*p)->num_resourceChallenges, 0) || odr_ok(o)) && odr_implicit(o, z_AccessRestrictions, &(*p)->restrictedAccess, - ODR_CONTEXT, 6, 1) && + ODR_CONTEXT, 6, 1) && odr_implicit(o, z_Costs, &(*p)->costInfo, ODR_CONTEXT, 8, 1) && odr_implicit_settag(o, ODR_CONTEXT, 9) && - (odr_sequence_of(o, odr_oid, &(*p)->variantSets, - &(*p)->num_variantSets) || odr_ok(o)) && + (odr_sequence_of(o, (Odr_fun)odr_oid, &(*p)->variantSets, + &(*p)->num_variantSets, 0) || odr_ok(o)) && odr_implicit_settag(o, ODR_CONTEXT, 10) && - (odr_sequence_of(o, z_ElementSetName, &(*p)->elementSetNames, - &(*p)->num_elementSetNames) || odr_ok(o)) && + (odr_sequence_of(o, (Odr_fun)z_ElementSetName, &(*p)->elementSetNames, + &(*p)->num_elementSetNames, 0) || odr_ok(o)) && odr_implicit_settag(o, ODR_CONTEXT, 11) && - (odr_sequence_of(o, z_InternationalString, &(*p)->unitSystems, - &(*p)->num_unitSystems) || odr_ok(o)) && + (odr_sequence_of(o, (Odr_fun)z_InternationalString, &(*p)->unitSystems, + &(*p)->num_unitSystems, 0) || odr_ok(o)) && odr_sequence_end(o); } -int z_QueryTypeDetails(ODR o, Z_QueryTypeDetails **p, int opt) -{ - static Odr_arm arm[] = - { - {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_QueryTypeDetails_private, - z_PrivateCapabilities}, - {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_QueryTypeDetails_rpn, - z_RpnCapabilities}, - {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_QueryTypeDetails_iso8777, - z_Iso8777Capabilities}, - {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_QueryTypeDetails_z3958, - z_HumanString}, - {ODR_IMPLICIT, ODR_CONTEXT, 4, Z_QueryTypeDetails_erpn, - z_RpnCapabilities}, - {ODR_IMPLICIT, ODR_CONTEXT, 5, Z_QueryTypeDetails_rankedList, - z_HumanString}, - {-1, -1, -1, -1, 0} - }; - - if (o->direction == ODR_DECODE) - *p = odr_malloc(o, sizeof(**p)); - else if (!*p) - return opt; - if (odr_choice(o, arm, &(*p)->u, &(*p)->which)) - return 1; - *p = 0; - return opt && odr_ok(o); +int z_QueryTypeDetails(ODR o, Z_QueryTypeDetails **p, int opt, + const char *name) +{ + static Odr_arm arm[] = + { + {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_QueryTypeDetails_private, + (Odr_fun)z_PrivateCapabilities, 0}, + {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_QueryTypeDetails_rpn, + (Odr_fun)z_RpnCapabilities, 0}, + {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_QueryTypeDetails_iso8777, + (Odr_fun)z_Iso8777Capabilities, 0}, + {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_QueryTypeDetails_z39_58, + (Odr_fun)z_HumanString, 0}, + {ODR_IMPLICIT, ODR_CONTEXT, 4, Z_QueryTypeDetails_erpn, + (Odr_fun)z_RpnCapabilities, 0}, + {ODR_IMPLICIT, ODR_CONTEXT, 5, Z_QueryTypeDetails_rankedList, + (Odr_fun)z_HumanString, 0}, + {-1, -1, -1, -1, 0, 0} + }; + + if (!odr_initmember(o, p, sizeof(**p))) + return opt && odr_ok(o); + if (odr_choice(o, arm, &(*p)->u, &(*p)->which, 0)) + return 1; + *p = 0; + return opt && odr_ok(o); } -int z_PrivateCapOperator(ODR o, Z_PrivateCapOperator **p, int opt) +int z_PrivateCapOperator(ODR o, Z_PrivateCapOperator **p, int opt, + const char *name) { - if (!odr_sequence_begin(o, p, sizeof(**p))) + if (!odr_sequence_begin(o, p, sizeof(**p), 0)) return opt && odr_ok(o); return - odr_implicit(o, z_InternationalString, &(*p)->operator, ODR_CONTEXT, 0, 0) && - odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) && + odr_implicit(o, z_InternationalString, &(*p)->roperator, + ODR_CONTEXT, 0, 0) && + odr_implicit(o, z_HumanString, &(*p)->description, + ODR_CONTEXT, 1, 1) && odr_sequence_end(o); } -int z_PrivateCapabilities(ODR o, Z_PrivateCapabilities **p, int opt) +int z_PrivateCapabilities(ODR o, Z_PrivateCapabilities **p, int opt, + const char *name) { - if (!odr_sequence_begin(o, p, sizeof(**p))) + if (!odr_sequence_begin(o, p, sizeof(**p), 0)) return opt && odr_ok(o); return odr_implicit_settag(o, ODR_CONTEXT, 0) && - (odr_sequence_of(o, z_PrivateCapOperator, &(*p)->operators, - &(*p)->num_operators) || odr_ok(o)) && + (odr_sequence_of(o, (Odr_fun)z_PrivateCapOperator, &(*p)->operators, + &(*p)->num_operators, 0) || odr_ok(o)) && odr_implicit_settag(o, ODR_CONTEXT, 1) && - (odr_sequence_of(o, z_SearchKey, &(*p)->searchKeys, - &(*p)->num_searchKeys) || odr_ok(o)) && + (odr_sequence_of(o, (Odr_fun)z_SearchKey, &(*p)->searchKeys, + &(*p)->num_searchKeys, 0) || odr_ok(o)) && odr_implicit_settag(o, ODR_CONTEXT, 2) && - (odr_sequence_of(o, z_HumanString, &(*p)->description, - &(*p)->num_description) || odr_ok(o)) && + (odr_sequence_of(o, (Odr_fun)z_HumanString, &(*p)->description, + &(*p)->num_description, 0) || odr_ok(o)) && odr_sequence_end(o); } -int z_RpnCapabilities(ODR o, Z_RpnCapabilities **p, int opt) +int z_RpnCapabilities(ODR o, Z_RpnCapabilities **p, int opt, const char *name) { - if (!odr_sequence_begin(o, p, sizeof(**p))) + if (!odr_sequence_begin(o, p, sizeof(**p), 0)) return opt && odr_ok(o); return odr_implicit_settag(o, ODR_CONTEXT, 0) && - (odr_sequence_of(o, odr_integer, &(*p)->operators, &(*p)->num_operators) || odr_ok(o)) && + (odr_sequence_of(o, (Odr_fun)odr_integer, &(*p)->operators, + &(*p)->num_operators, 0) || odr_ok(o)) && odr_implicit(o, odr_bool, &(*p)->resultSetAsOperandSupported, - ODR_CONTEXT, 1, 0) && + ODR_CONTEXT, 1, 0) && odr_implicit(o, odr_bool, &(*p)->restrictionOperandSupported, - ODR_CONTEXT, 2, 0) && + ODR_CONTEXT, 2, 0) && odr_implicit(o, z_ProximitySupport, &(*p)->proximity, ODR_CONTEXT, - 3, 1) && + 3, 1) && odr_sequence_end(o); } -int z_Iso8777Capabilities(ODR o, Z_Iso8777Capabilities **p, int opt) +int z_Iso8777Capabilities(ODR o, Z_Iso8777Capabilities **p, int opt, + const char *name) { - if (!odr_sequence_begin(o, p, sizeof(**p))) + if (!odr_sequence_begin(o, p, sizeof(**p), 0)) return opt && odr_ok(o); return odr_implicit_settag(o, ODR_CONTEXT, 0) && - odr_sequence_of(o, z_SearchKey, &(*p)->searchKeys, - &(*p)->num_searchKeys) && + odr_sequence_of(o, (Odr_fun)z_SearchKey, &(*p)->searchKeys, + &(*p)->num_searchKeys, 0) && odr_implicit(o, z_HumanString, &(*p)->restrictions, ODR_CONTEXT, - 1, 1) && + 1, 1) && odr_sequence_end(o); } -int z_ProxSupportPrivate(ODR o, Z_ProxSupportPrivate **p, int opt) +int z_ProxSupportPrivate(ODR o, Z_ProxSupportPrivate **p, int opt, + const char *name) { - if (!odr_sequence_begin(o, p, sizeof(**p))) + if (!odr_sequence_begin(o, p, sizeof(**p), 0)) return opt && odr_ok(o); return odr_implicit(o, odr_integer, &(*p)->unit, ODR_CONTEXT, 0, 0) && - odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) && + odr_implicit(o, z_HumanString, &(*p)->description, + ODR_CONTEXT, 1, 1) && odr_sequence_end(o); } -int z_ProxSupportUnit(ODR o, Z_ProxSupportUnit **p, int opt) +int z_ProxSupportUnit(ODR o, Z_ProxSupportUnit **p, int opt, const char *name) { static Odr_arm arm[] = { {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_ProxSupportUnit_known, - odr_integer}, + (Odr_fun)odr_integer, 0}, {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_ProxSupportUnit_private, - z_ProxSupportPrivate}, - {-1, -1, -1, -1, 0} + (Odr_fun)z_ProxSupportPrivate, 0}, + {-1, -1, -1, -1, 0, 0} }; - - if (o->direction == ODR_DECODE) - *p = odr_malloc(o, sizeof(**p)); - else if (!*p) - return opt; - if (odr_choice(o, arm, &(*p)->u, &(*p)->which)) + + if (!odr_initmember(o, p, sizeof(**p))) + return opt && odr_ok(o); + if (odr_choice(o, arm, &(*p)->u, &(*p)->which, 0)) return 1; *p = 0; return opt && odr_ok(o); } -int z_ProximitySupport(ODR o, Z_ProximitySupport **p, int opt) +int z_ProximitySupport(ODR o, Z_ProximitySupport **p, int opt, + const char *name) { - if (!odr_sequence_begin(o, p, sizeof(**p))) + if (!odr_sequence_begin(o, p, sizeof(**p), 0)) return opt && odr_ok(o); return odr_implicit(o, odr_bool, &(*p)->anySupport, ODR_CONTEXT, 0, 0) && odr_implicit_settag(o, ODR_CONTEXT, 1) && - (odr_sequence_of(o, z_ProxSupportUnit, &(*p)->unitsSupported, - &(*p)->num_unitsSupported) || odr_ok(o)) && + (odr_sequence_of(o, (Odr_fun)z_ProxSupportUnit, &(*p)->unitsSupported, + &(*p)->num_unitsSupported, 0) || odr_ok(o)) && odr_sequence_end(o); } -int z_SearchKey(ODR o, Z_SearchKey **p, int opt) +int z_SearchKey(ODR o, Z_SearchKey **p, int opt, const char *name) { - if (!odr_sequence_begin(o, p, sizeof(**p))) + if (!odr_sequence_begin(o, p, sizeof(**p), 0)) return opt && odr_ok(o); return - odr_implicit(o, z_InternationalString, &(*p)->searchKey, ODR_CONTEXT, 0, 0) && - odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) && + odr_implicit(o, z_InternationalString, &(*p)->searchKey, + ODR_CONTEXT, 0, 0) && + odr_implicit(o, z_HumanString, &(*p)->description, + ODR_CONTEXT, 1, 1) && odr_sequence_end(o); } -int z_AccessRestrictionsUnit(ODR o, Z_AccessRestrictionsUnit **p, int opt) +int z_AccessRestrictionsUnit(ODR o, Z_AccessRestrictionsUnit **p, int opt, + const char *name) { - if (!odr_sequence_begin(o, p, sizeof(**p))) + if (!odr_sequence_begin(o, p, sizeof(**p), 0)) return opt && odr_ok(o); return odr_explicit(o, odr_integer, &(*p)->accessType, ODR_CONTEXT, 0, 0) && odr_implicit(o, z_HumanString, &(*p)->accessText, ODR_CONTEXT, 1, 1) && odr_implicit_settag(o, ODR_CONTEXT, 2) && - (odr_sequence_of(o, odr_oid, &(*p)->accessChallenges, - &(*p)->num_accessChallenges) || odr_ok(o)) && + (odr_sequence_of(o, (Odr_fun)odr_oid, &(*p)->accessChallenges, + &(*p)->num_accessChallenges, 0) || odr_ok(o)) && odr_sequence_end(o); } -int z_AccessRestrictions(ODR o, Z_AccessRestrictions **p, int opt) +int z_AccessRestrictions(ODR o, Z_AccessRestrictions **p, int opt, + const char *name) { - if (o->direction == ODR_DECODE) - *p = odr_malloc(o, sizeof(**p)); - else if (!*p) - return opt; - if (odr_sequence_of(o, z_AccessRestrictionsUnit, &(*p)->restrictions, - &(*p)->num_restrictions)) + if (!odr_initmember(o, p, sizeof(**p))) + return opt && odr_ok(o); + if (odr_sequence_of(o, (Odr_fun)z_AccessRestrictionsUnit, &(*p)->elements, + &(*p)->num, 0)) return 1; *p = 0; return opt && odr_ok(o); } -int z_CostsOtherCharge(ODR o, Z_CostsOtherCharge **p, int opt) +int z_CostsOtherCharge(ODR o, Z_CostsOtherCharge **p, int opt, + const char *name) { - if (!odr_sequence_begin(o, p, sizeof(**p))) + if (!odr_sequence_begin(o, p, sizeof(**p), 0)) return opt && odr_ok(o); return odr_implicit(o, z_HumanString, &(*p)->forWhat, ODR_CONTEXT, 1, 0) && odr_implicit(o, z_Charge, &(*p)->charge, ODR_CONTEXT, 2, 1) && odr_sequence_end(o); } - -int z_Costs(ODR o, Z_Costs **p, int opt) + +int z_Costs(ODR o, Z_Costs **p, int opt, const char *name) { - if (!odr_sequence_begin(o, p, sizeof(**p))) + if (!odr_sequence_begin(o, p, sizeof(**p), 0)) return opt && odr_ok(o); return odr_implicit(o, z_Charge, &(*p)->connectCharge, ODR_CONTEXT, 0, 1) && @@ -463,14 +554,14 @@ int z_Costs(ODR o, Z_Costs **p, int opt) odr_implicit(o, z_Charge, &(*p)->searchCharge, ODR_CONTEXT, 3, 1) && odr_implicit(o, z_Charge, &(*p)->subscriptCharge, ODR_CONTEXT, 4, 1) && odr_implicit_settag(o, ODR_CONTEXT, 5) && - (odr_sequence_of(o, z_CostsOtherCharge, &(*p)->otherCharges, - &(*p)->num_otherCharges) || odr_ok(o)) && + (odr_sequence_of(o, (Odr_fun)z_CostsOtherCharge, &(*p)->otherCharges, + &(*p)->num_otherCharges, 0) || odr_ok(o)) && odr_sequence_end(o); } -int z_Charge(ODR o, Z_Charge **p, int opt) +int z_Charge(ODR o, Z_Charge **p, int opt, const char *name) { - if (!odr_sequence_begin(o, p, sizeof(**p))) + if (!odr_sequence_begin(o, p, sizeof(**p), 0)) return opt && odr_ok(o); return odr_implicit(o, z_IntUnit, &(*p)->cost, ODR_CONTEXT, 1, 0) && @@ -479,149 +570,164 @@ int z_Charge(ODR o, Z_Charge **p, int opt) odr_sequence_end(o); } -int z_DatabaseList(ODR o, Z_DatabaseList **p, int opt) +int z_DatabaseList(ODR o, Z_DatabaseList **p, int opt, const char *name) { - if (o->direction == ODR_DECODE) - *p = odr_malloc(o, sizeof(**p)); - else if (!*p) - return opt; + if (!odr_initmember(o, p, sizeof(**p))) + return opt && odr_ok(o); if (odr_sequence_of(o, z_DatabaseName, &(*p)->databases, - &(*p)->num_databases)) + &(*p)->num_databases, 0)) return 1; *p = 0; return opt && odr_ok(o); } -int z_AttributeCombinations(ODR o, Z_AttributeCombinations **p, int opt) +int z_AttributeCombinations(ODR o, Z_AttributeCombinations **p, int opt, + const char *name) { - if (!odr_sequence_begin(o, p, sizeof(**p))) + if (!odr_sequence_begin(o, p, sizeof(**p), 0)) return opt && odr_ok(o); return odr_implicit(o, odr_oid, &(*p)->defaultAttributeSet, - ODR_CONTEXT, 0, 0) && + ODR_CONTEXT, 0, 0) && odr_implicit_settag(o, ODR_CONTEXT, 1) && - odr_sequence_of(o, z_AttributeCombination, &(*p)->legalCombinations, - &(*p)->num_legalCombinations) && + odr_sequence_of(o, (Odr_fun)z_AttributeCombination, + &(*p)->legalCombinations, + &(*p)->num_legalCombinations, 0) && odr_sequence_end(o); } -int z_AttributeCombination(ODR o, Z_AttributeCombination **p, int opt) +int z_AttributeCombination(ODR o, Z_AttributeCombination **p, int opt, + const char *name) { - if (o->direction == ODR_DECODE) - *p = odr_malloc(o, sizeof(**p)); - else if (!*p) - return opt; - if (odr_sequence_of(o, z_AttributeOccurrence, &(*p)->occurrences, - &(*p)->num_occurrences)) + if (!odr_initmember(o, p, sizeof(**p))) + return opt && odr_ok(o); + if (odr_sequence_of(o, (Odr_fun)z_AttributeOccurrence, &(*p)->occurrences, + &(*p)->num_occurrences, 0)) return 1; *p = 0; return opt && odr_ok(o); } -int z_AttributeValueList(ODR o, Z_AttributeValueList **p, int opt) +int z_AttributeValueList(ODR o, Z_AttributeValueList **p, int opt, + const char *name) { - if (o->direction == ODR_DECODE) - *p = odr_malloc(o, sizeof(**p)); - else if (!*p) - return opt; - if (odr_sequence_of(o, z_StringOrNumeric, &(*p)->attributes, - &(*p)->num_attributes)) + if (!odr_initmember(o, p, sizeof(**p))) + return opt && odr_ok(o); + if (odr_sequence_of(o, (Odr_fun)z_StringOrNumeric, &(*p)->attributes, + &(*p)->num_attributes, 0)) return 1; *p = 0; return opt && odr_ok(o); } -int z_AttributeOccurrence(ODR o, Z_AttributeOccurrence **p, int opt) +int z_AttributeOccurrence(ODR o, Z_AttributeOccurrence **p, int opt, + const char *name) { static Odr_arm arm[] = { - {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_AttributeOcc_anyOrNone, odr_null}, + {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_AttributeOcc_any_or_none, + (Odr_fun)odr_null, 0}, {ODR_IMPLICIT, ODR_CONTEXT, 4, Z_AttributeOcc_specific, - z_AttributeValueList}, - {-1, -1, -1, -1, 0} + (Odr_fun)z_AttributeValueList, 0}, + {-1, -1, -1, -1, 0, 0} }; - - if (!odr_sequence_begin(o, p, sizeof(**p))) + + if (!odr_sequence_begin(o, p, sizeof(**p), 0)) return opt && odr_ok(o); return odr_implicit(o, odr_oid, &(*p)->attributeSet, ODR_CONTEXT, 0, 1) && - odr_implicit(o, odr_integer, &(*p)->attributeType, ODR_CONTEXT, 1, 0) && + odr_implicit(o, odr_integer, &(*p)->attributeType, + ODR_CONTEXT, 1, 0) && odr_implicit(o, odr_null, &(*p)->mustBeSupplied, ODR_CONTEXT, 2, 1) && - odr_choice(o, arm, &(*p)->attributeValues, &(*p)->which) && + odr_choice(o, arm, &(*p)->attributeValues, &(*p)->which, 0) && odr_sequence_end(o); } -int z_AttributeValue(ODR o, Z_AttributeValue **p, int opt) +int z_AttributeValue(ODR o, Z_AttributeValue **p, int opt, const char *name) { - if (!odr_sequence_begin(o, p, sizeof(**p))) + if (!odr_sequence_begin(o, p, sizeof(**p), 0)) return opt && odr_ok(o); return odr_explicit(o, z_StringOrNumeric, &(*p)->value, ODR_CONTEXT, 0, 0) && - odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) && + odr_implicit(o, z_HumanString, &(*p)->description, + ODR_CONTEXT, 1, 1) && odr_implicit_settag(o, ODR_CONTEXT, 2) && - (odr_sequence_of(o, z_StringOrNumeric, &(*p)->subAttributes, - &(*p)->num_subAttributes) || odr_ok(o)) && + (odr_sequence_of(o, (Odr_fun)z_StringOrNumeric, &(*p)->subAttributes, + &(*p)->num_subAttributes, 0) || odr_ok(o)) && odr_implicit_settag(o, ODR_CONTEXT, 3) && - (odr_sequence_of(o, z_StringOrNumeric, &(*p)->superAttributes, - &(*p)->num_superAttributes) || odr_ok(o)) && + (odr_sequence_of(o, (Odr_fun)z_StringOrNumeric, &(*p)->superAttributes, + &(*p)->num_superAttributes, 0) || odr_ok(o)) && odr_implicit(o, odr_null, &(*p)->partialSupport, ODR_CONTEXT, 4, 1) && odr_sequence_end(o); } -int z_TargetInfo(ODR o, Z_TargetInfo **p, int opt) +int z_TargetInfo(ODR o, Z_TargetInfo **p, int opt, const char *name) { - if (!odr_sequence_begin(o, p, sizeof(**p))) + if (!odr_sequence_begin(o, p, sizeof(**p), 0)) return opt && odr_ok(o); return - odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) && - odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, - 1, 0) && - odr_implicit(o, z_HumanString, &(*p)->recentNews, ODR_CONTEXT, 2, 1) && - odr_implicit(o, z_IconObject, &(*p)->icon, ODR_CONTEXT, 3, 1) && - odr_implicit(o, odr_bool, &(*p)->namedResultSets, ODR_CONTEXT, 4, 0) && - odr_implicit(o, odr_bool, &(*p)->multipleDBsearch, ODR_CONTEXT, 5, 0) && - odr_implicit(o, odr_integer, &(*p)->maxResultSets, ODR_CONTEXT, 6, 1) && - odr_implicit(o, odr_integer, &(*p)->maxResultSize, ODR_CONTEXT, 7, 1) && - odr_implicit(o, odr_integer, &(*p)->maxTerms, ODR_CONTEXT, 8, 1) && - odr_implicit(o, z_IntUnit, &(*p)->timeoutInterval, ODR_CONTEXT, 9, 1) && - odr_implicit(o, z_HumanString, &(*p)->welcomeMessage, ODR_CONTEXT, - 10, 1) && - odr_implicit(o, z_ContactInfo, &(*p)->contactInfo, ODR_CONTEXT, - 11, 1) && - odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, - 12, 1) && + odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, + ODR_CONTEXT, 0, 1) && + odr_implicit(o, z_InternationalString, &(*p)->name, + ODR_CONTEXT, 1, 0) && + odr_implicit(o, z_HumanString, &(*p)->recentNews, + ODR_CONTEXT, 2, 1) && + odr_implicit(o, z_IconObject, &(*p)->icon, + ODR_CONTEXT, 3, 1) && + odr_implicit(o, odr_bool, &(*p)->namedResultSets, + ODR_CONTEXT, 4, 0) && + odr_implicit(o, odr_bool, &(*p)->multipleDBsearch, + ODR_CONTEXT, 5, 0) && + odr_implicit(o, odr_integer, &(*p)->maxResultSets, + ODR_CONTEXT, 6, 1) && + odr_implicit(o, odr_integer, &(*p)->maxResultSize, + ODR_CONTEXT, 7, 1) && + odr_implicit(o, odr_integer, &(*p)->maxTerms, + ODR_CONTEXT, 8, 1) && + odr_implicit(o, z_IntUnit, &(*p)->timeoutInterval, + ODR_CONTEXT, 9, 1) && + odr_implicit(o, z_HumanString, &(*p)->welcomeMessage, + ODR_CONTEXT, 10, 1) && + odr_implicit(o, z_ContactInfo, &(*p)->contactInfo, + ODR_CONTEXT, 11, 1) && + odr_implicit(o, z_HumanString, &(*p)->description, + ODR_CONTEXT, 12, 1) && odr_implicit_settag(o, ODR_CONTEXT, 13) && (odr_sequence_of(o, z_InternationalString, &(*p)->nicknames, - &(*p)->num_nicknames) || odr_ok(o)) && - odr_implicit(o, z_HumanString, &(*p)->usageRest, ODR_CONTEXT, 14, 1) && - odr_implicit(o, z_HumanString, &(*p)->paymentAddr, ODR_CONTEXT, - 15, 1) && + &(*p)->num_nicknames, 0) || odr_ok(o)) && + odr_implicit(o, z_HumanString, &(*p)->usageRest, + ODR_CONTEXT, 14, 1) && + odr_implicit(o, z_HumanString, &(*p)->paymentAddr, + ODR_CONTEXT, 15, 1) && odr_implicit(o, z_HumanString, &(*p)->hours, ODR_CONTEXT, 16, 1) && odr_implicit_settag(o, ODR_CONTEXT, 17) && - (odr_sequence_of(o, z_DatabaseList, &(*p)->dbCombinations, - &(*p)->num_dbCombinations) || odr_ok(o)) && + (odr_sequence_of(o, (Odr_fun)z_DatabaseList, &(*p)->dbCombinations, + &(*p)->num_dbCombinations, 0) || odr_ok(o)) && odr_implicit_settag(o, ODR_CONTEXT, 18) && - (odr_sequence_of(o, z_NetworkAddress, &(*p)->addresses, - &(*p)->num_addresses) || odr_ok(o)) && - odr_implicit(o, z_AccessInfo, &(*p)->commonAccessInfo, ODR_CONTEXT, - 19, 1) && + (odr_sequence_of(o, (Odr_fun)z_NetworkAddress, &(*p)->addresses, + &(*p)->num_addresses, 0) || odr_ok(o)) && + odr_implicit_settag (o, ODR_CONTEXT, 101) && + (odr_sequence_of(o, (Odr_fun) z_InternationalString, &(*p)->languages, + &(*p)->num_languages, 0) || odr_ok(o)) && + odr_implicit(o, z_AccessInfo, &(*p)->commonAccessInfo, + ODR_CONTEXT, 19, 1) && odr_sequence_end(o); } -int z_DatabaseInfo(ODR o, Z_DatabaseInfo **p, int opt) +int z_DatabaseInfo(ODR o, Z_DatabaseInfo **p, int opt, const char *name) { static Odr_arm arm[] = { - {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_Exp_RecordCount_actualNumber, - odr_integer}, - {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_Exp_RecordCount_approxNumber, - odr_integer}, - {-1, -1, -1, -1, 0} + {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_DatabaseInfo_actualNumber, + (Odr_fun)odr_integer, 0}, + {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_DatabaseInfo_approxNumber, + (Odr_fun)odr_integer, 0}, + {-1, -1, -1, -1, 0, 0} }; - if (!odr_sequence_begin(o, p, sizeof(**p))) + if (!odr_sequence_begin(o, p, sizeof(**p), 0)) return opt && odr_ok(o); return odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) && @@ -629,53 +735,58 @@ int z_DatabaseInfo(ODR o, Z_DatabaseInfo **p, int opt) odr_implicit(o, odr_null, &(*p)->explainDatabase, ODR_CONTEXT, 2, 1) && odr_implicit_settag(o, ODR_CONTEXT, 3) && (odr_sequence_of(o, z_DatabaseName, &(*p)->nicknames, - &(*p)->num_nicknames) || odr_ok(o)) && + &(*p)->num_nicknames, 0) || odr_ok(o)) && odr_implicit(o, z_IconObject, &(*p)->icon, ODR_CONTEXT, 4, 1) && odr_implicit(o, odr_bool, &(*p)->userFee, ODR_CONTEXT, 5, 0) && odr_implicit(o, odr_bool, &(*p)->available, ODR_CONTEXT, 6, 0) && - odr_implicit(o, z_HumanString, &(*p)->titleString, ODR_CONTEXT, 7, 1) && + odr_implicit(o, z_HumanString, &(*p)->titleString, + ODR_CONTEXT, 7, 1) && odr_implicit_settag(o, ODR_CONTEXT, 8) && - (odr_sequence_of(o, z_HumanString, &(*p)->keywords, - &(*p)->num_keywords) || odr_ok(o)) && - odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 9, 1) && - odr_implicit(o, z_DatabaseList, &(*p)->associatedDbs, ODR_CONTEXT, - 10, 1) && + (odr_sequence_of(o, (Odr_fun)z_HumanString, &(*p)->keywords, + &(*p)->num_keywords, 0) || odr_ok(o)) && + odr_implicit(o, z_HumanString, &(*p)->description, + ODR_CONTEXT, 9, 1) && + odr_implicit(o, z_DatabaseList, &(*p)->associatedDbs, + ODR_CONTEXT, 10, 1) && odr_implicit(o, z_DatabaseList, &(*p)->subDbs, ODR_CONTEXT, 11, 1) && - odr_implicit(o, z_HumanString, &(*p)->disclaimers, ODR_CONTEXT, - 12, 1) && + odr_implicit(o, z_HumanString, &(*p)->disclaimers, + ODR_CONTEXT, 12, 1) && odr_implicit(o, z_HumanString, &(*p)->news, ODR_CONTEXT, 13, 1) && - ((odr_constructed_begin(o, p, ODR_CONTEXT, 14) && - odr_choice(o, arm, &(*p)->recordCount, &(*p)->recordCount_which) && - odr_constructed_end(o)) || odr_ok(o)) && - odr_implicit(o, z_HumanString, &(*p)->defaultOrder, ODR_CONTEXT, - 15, 1) && - odr_implicit(o, odr_integer, &(*p)->avRecordSize, ODR_CONTEXT, 16, 1) && - odr_implicit(o, odr_integer, &(*p)->maxRecordSize, ODR_CONTEXT, - 17, 1) && + ((odr_constructed_begin(o, &(*p)->u.actualNumber, + ODR_CONTEXT, 14, 0) && + odr_choice(o, arm, &(*p)->u.actualNumber, &(*p)->which, 0) && + odr_constructed_end(o)) || odr_ok(o)) && + odr_implicit(o, z_HumanString, &(*p)->defaultOrder, + ODR_CONTEXT, 15, 1) && + odr_implicit(o, odr_integer, &(*p)->avRecordSize, + ODR_CONTEXT, 16, 1) && + odr_implicit(o, odr_integer, &(*p)->maxRecordSize, + ODR_CONTEXT, 17, 1) && odr_implicit(o, z_HumanString, &(*p)->hours, ODR_CONTEXT, 18, 1) && odr_implicit(o, z_HumanString, &(*p)->bestTime, ODR_CONTEXT, 19, 1) && - odr_implicit(o, odr_generalizedtime, &(*p)->lastUpdate, ODR_CONTEXT, - 20, 1) && - odr_implicit(o, z_IntUnit, &(*p)->updateInterval, ODR_CONTEXT, 21, 1) && + odr_implicit(o, odr_generalizedtime, &(*p)->lastUpdate, + ODR_CONTEXT, 20, 1) && + odr_implicit(o, z_IntUnit, &(*p)->updateInterval, + ODR_CONTEXT, 21, 1) && odr_implicit(o, z_HumanString, &(*p)->coverage, ODR_CONTEXT, 22, 1) && odr_implicit(o, odr_bool, &(*p)->proprietary, ODR_CONTEXT, 23, 1) && - odr_implicit(o, z_HumanString, &(*p)->copyrightText, ODR_CONTEXT, - 24, 1) && - odr_implicit(o, z_HumanString, &(*p)->copyrightNotice, ODR_CONTEXT, - 25, 1) && - odr_implicit(o, z_ContactInfo, &(*p)->producerContactInfo, ODR_CONTEXT, - 26, 1) && - odr_implicit(o, z_ContactInfo, &(*p)->supplierContactInfo, ODR_CONTEXT, - 27, 1) && + odr_implicit(o, z_HumanString, &(*p)->copyrightText, + ODR_CONTEXT, 24, 1) && + odr_implicit(o, z_HumanString, &(*p)->copyrightNotice, + ODR_CONTEXT, 25, 1) && + odr_implicit(o, z_ContactInfo, &(*p)->producerContactInfo, + ODR_CONTEXT, 26, 1) && + odr_implicit(o, z_ContactInfo, &(*p)->supplierContactInfo, + ODR_CONTEXT, 27, 1) && odr_implicit(o, z_ContactInfo, &(*p)->submissionContactInfo, - ODR_CONTEXT, 28, 1) && + ODR_CONTEXT, 28, 1) && odr_implicit(o, z_AccessInfo, &(*p)->accessInfo, ODR_CONTEXT, 29, 1) && odr_sequence_end(o); } -int z_TagTypeMapping(ODR o, Z_TagTypeMapping **p, int opt) +int z_TagTypeMapping(ODR o, Z_TagTypeMapping **p, int opt, const char *name) { - if (!odr_sequence_begin(o, p, sizeof(**p))) + if (!odr_sequence_begin(o, p, sizeof(**p), 0)) return opt; return odr_implicit(o, odr_integer, &(*p)->tagType, ODR_CONTEXT, 0, 0) && @@ -684,523 +795,574 @@ int z_TagTypeMapping(ODR o, Z_TagTypeMapping **p, int opt) odr_sequence_end(o); } -int z_SchemaInfo(ODR o, Z_SchemaInfo **p, int opt) +int z_SchemaInfo(ODR o, Z_SchemaInfo **p, int opt, const char *name) { - if (!odr_sequence_begin(o, p, sizeof(**p))) + if (!odr_sequence_begin(o, p, sizeof(**p), 0)) return opt && odr_ok(o); return odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) && odr_implicit(o, odr_oid, &(*p)->schema, ODR_CONTEXT, 1, 0) && odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 2, 0) && - odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 3, 1) && + odr_implicit(o, z_HumanString, &(*p)->description, + ODR_CONTEXT, 3, 1) && odr_implicit_settag(o, ODR_CONTEXT, 4) && - (odr_sequence_of(o, z_TagTypeMapping, &(*p)->tagTypeMapping, - &(*p)->num_tagTypeMapping) || odr_ok(o)) && + (odr_sequence_of(o, (Odr_fun)z_TagTypeMapping, &(*p)->tagTypeMapping, + &(*p)->num_tagTypeMapping, 0) || odr_ok(o)) && odr_implicit_settag(o, ODR_CONTEXT, 5) && - (odr_sequence_of(o, z_ElementInfo, &(*p)->recordStructure, - &(*p)->num_recordStructure) || odr_ok(o)) && + (odr_sequence_of(o, (Odr_fun)z_ElementInfo, &(*p)->recordStructure, + &(*p)->num_recordStructure, 0) || odr_ok(o)) && odr_sequence_end(o); } -int z_ElementInfo(ODR o, Z_ElementInfo **p, int opt) +int z_ElementInfo(ODR o, Z_ElementInfo **p, int opt, const char *name) { - if (!odr_sequence_begin(o, p, sizeof(**p))) + if (!odr_sequence_begin(o, p, sizeof(**p), 0)) return opt && odr_ok(o); return - odr_implicit(o, z_InternationalString, &(*p)->elementName, ODR_CONTEXT, 1, 0) && + odr_implicit(o, z_InternationalString, &(*p)->elementName, + ODR_CONTEXT, 1, 0) && odr_implicit(o, z_Path, &(*p)->elementTagPath, ODR_CONTEXT, 2, 0) && - odr_explicit(o, z_ElementDataType, &(*p)->dataType, ODR_CONTEXT, 3, 1) && + odr_explicit(o, z_ElementDataType, &(*p)->dataType, + ODR_CONTEXT, 3, 1) && odr_implicit(o, odr_bool, &(*p)->required, ODR_CONTEXT, 4, 0) && odr_implicit(o, odr_bool, &(*p)->repeatable, ODR_CONTEXT, 5, 0) && - odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 6, 1) && + odr_implicit(o, z_HumanString, &(*p)->description, + ODR_CONTEXT, 6, 1) && odr_sequence_end(o); } -int z_PathUnit(ODR o, Z_PathUnit **p, int opt) +int z_PathUnit(ODR o, Z_PathUnit **p, int opt, const char *name) { - if (!odr_sequence_begin(o, p, sizeof(**p))) + if (!odr_sequence_begin(o, p, sizeof(**p), 0)) return opt; return odr_implicit(o, odr_integer, &(*p)->tagType, ODR_CONTEXT, 1, 0) && - odr_explicit(o, z_StringOrNumeric, &(*p)->tagValue, ODR_CONTEXT, - 2, 0) && + odr_explicit(o, z_StringOrNumeric, &(*p)->tagValue, + ODR_CONTEXT, 2, 0) && odr_sequence_end(o); } -int z_Path(ODR o, Z_Path **p, int opt) +int z_Path(ODR o, Z_Path **p, int opt, const char *name) { - if (o->direction == ODR_DECODE) - *p = odr_malloc(o, sizeof(**p)); - else if (!*p) - return opt; + if (!odr_initmember(o, p, sizeof(**p))) + return opt && odr_ok(o); odr_implicit_settag(o, ODR_CONTEXT, 201); - if (odr_sequence_of(o, z_OtherInformationUnit, &(*p)->list, - &(*p)->num)) + if (odr_sequence_of(o, (Odr_fun)z_OtherInformationUnit, &(*p)->list, + &(*p)->num, 0)) return 1; *p = 0; return opt && odr_ok(o); } -int z_ElementInfoList(ODR o, Z_Path **p, int opt) +int z_ElementInfoList(ODR o, Z_Path **p, int opt, const char *name) { - if (o->direction == ODR_DECODE) - *p = odr_malloc(o, sizeof(**p)); - else if (!*p) - return opt; + if (!odr_initmember(o, p, sizeof(**p))) + return opt && odr_ok(o); odr_implicit_settag(o, ODR_CONTEXT, 201); - if (odr_sequence_of(o, z_OtherInformationUnit, &(*p)->list, - &(*p)->num)) + if (odr_sequence_of(o, (Odr_fun)z_OtherInformationUnit, &(*p)->list, + &(*p)->num, 0)) return 1; *p = 0; return opt && odr_ok(o); } -int z_ElementDataType(ODR o, Z_ElementDataType **p, int opt) +int z_ElementDataType(ODR o, Z_ElementDataType **p, int opt, const char *name) { static Odr_arm arm[] = { {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_ElementDataType_primitive, - odr_integer}, + (Odr_fun)odr_integer, 0}, {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_ElementDataType_structured, - z_ElementInfoList}, - {-1, -1, -1, -1, 0} + (Odr_fun)z_ElementInfoList, 0}, + {-1, -1, -1, -1, 0, 0} }; - - if (o->direction == ODR_DECODE) - *p = odr_malloc(o, sizeof(**p)); - else if (!*p) - return opt; - - if (odr_choice(o, arm, &(*p)->u, &(*p)->which)) + + if (!odr_initmember(o, p, sizeof(**p))) + return opt && odr_ok(o); + if (odr_choice(o, arm, &(*p)->u, &(*p)->which, 0)) return 1; *p = 0; return opt && odr_ok(o); } -int z_TagSetInfoElements(ODR o, Z_TagSetInfoElements **p, int opt) +int z_TagSetInfoElements(ODR o, Z_TagSetInfoElements **p, int opt, + const char *name) { - if (!odr_sequence_begin(o, p, sizeof(**p))) + if (!odr_sequence_begin(o, p, sizeof(**p), 0)) return opt; return - odr_implicit(o, z_InternationalString, &(*p)->elementName, - ODR_CONTEXT, 1, 0) && + odr_implicit(o, z_InternationalString, &(*p)->elementname, + ODR_CONTEXT, 1, 0) && odr_implicit_settag(o, ODR_CONTEXT, 2) && (odr_sequence_of(o, z_InternationalString, &(*p)->nicknames, - &(*p)->num_nicknames) || odr_ok(o)) && - odr_explicit(o, z_StringOrNumeric, &(*p)->elementTag, ODR_CONTEXT, - 3, 0) && - odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, - 4, 1) && + &(*p)->num_nicknames, 0) || odr_ok(o)) && + odr_explicit(o, z_StringOrNumeric, &(*p)->elementTag, + ODR_CONTEXT, 3, 0) && + odr_implicit(o, z_HumanString, &(*p)->description, + ODR_CONTEXT, 4, 1) && odr_implicit(o, odr_integer, &(*p)->dataType, ODR_CONTEXT, 5, 1) && - z_OtherInformation(o, &(*p)->otherTagInfo, 1) && + z_OtherInformation(o, &(*p)->otherTagInfo, 1, 0) && odr_sequence_end(o); } -int z_TagSetInfo(ODR o, Z_TagSetInfo **p, int opt) +int z_TagSetInfo(ODR o, Z_TagSetInfo **p, int opt, const char *name) { - if (!odr_sequence_begin(o, p, sizeof(**p))) + if (!odr_sequence_begin(o, p, sizeof(**p), 0)) return opt && odr_ok(o); return odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) && odr_implicit(o, odr_oid, &(*p)->tagSet, ODR_CONTEXT, 1, 0) && - odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, - 2, 0) && - odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, - 3, 1) && + odr_implicit(o, z_InternationalString, &(*p)->name, + ODR_CONTEXT, 2, 0) && + odr_implicit(o, z_HumanString, &(*p)->description, + ODR_CONTEXT, 3, 1) && odr_implicit_settag(o, ODR_CONTEXT, 4) && - (odr_sequence_of(o, z_TagSetInfoElements, &(*p)->elements, - &(*p)->num_elements) || odr_ok(o)) && + (odr_sequence_of(o, (Odr_fun)z_TagSetInfoElements, &(*p)->elements, + &(*p)->num_elements, 0) || odr_ok(o)) && odr_sequence_end(o); } -int z_RecordSyntaxInfo(ODR o, Z_RecordSyntaxInfo **p, int opt) +int z_RecordSyntaxInfo(ODR o, Z_RecordSyntaxInfo **p, int opt, + const char *name) { - if (!odr_sequence_begin(o, p, sizeof(**p))) + if (!odr_sequence_begin(o, p, sizeof(**p), 0)) return opt && odr_ok(o); return odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) && odr_implicit(o, odr_oid, &(*p)->recordSyntax, ODR_CONTEXT, 1, 0) && - odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, - 2, 0) && + odr_implicit(o, z_InternationalString, &(*p)->name, + ODR_CONTEXT, 2, 0) && odr_implicit_settag(o, ODR_CONTEXT, 3) && - (odr_sequence_of(o, odr_oid, &(*p)->transferSyntaxes, - &(*p)->num_transferSyntaxes) || odr_ok(o)) && - odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 4, 1) && - odr_implicit(o, z_InternationalString, &(*p)->asn1Module, ODR_CONTEXT, - 5, 1) && + (odr_sequence_of(o, (Odr_fun)odr_oid, &(*p)->transferSyntaxes, + &(*p)->num_transferSyntaxes, 0) || odr_ok(o)) && + odr_implicit(o, z_HumanString, &(*p)->description, + ODR_CONTEXT, 4, 1) && + odr_implicit(o, z_InternationalString, &(*p)->asn1Module, + ODR_CONTEXT, 5, 1) && odr_implicit_settag(o, ODR_CONTEXT, 6) && - (odr_sequence_of(o, z_ElementInfo, &(*p)->abstractStructure, - &(*p)->num_abstractStructure) || odr_ok(o)) && + (odr_sequence_of(o, (Odr_fun)z_ElementInfo, &(*p)->abstractStructure, + &(*p)->num_abstractStructure, 0) || odr_ok(o)) && odr_sequence_end(o); } -int z_AttributeSetInfo(ODR o, Z_AttributeSetInfo **p, int opt) +int z_AttributeSetInfo(ODR o, Z_AttributeSetInfo **p, int opt, + const char *name) { - if (!odr_sequence_begin(o, p, sizeof(**p))) + if (!odr_sequence_begin(o, p, sizeof(**p), 0)) return opt && odr_ok(o); return odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) && odr_implicit(o, odr_oid, &(*p)->attributeSet, ODR_CONTEXT, 1, 0) && - odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 2, 0) && + odr_implicit(o, z_InternationalString, &(*p)->name, + ODR_CONTEXT, 2, 0) && odr_implicit_settag(o, ODR_CONTEXT, 3) && - (odr_sequence_of(o, z_AttributeType, &(*p)->attributes, - &(*p)->num_attributes) || odr_ok(o)) && - odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 4, 1) && + (odr_sequence_of(o, (Odr_fun)z_AttributeType, &(*p)->attributes, + &(*p)->num_attributes, 0) || odr_ok(o)) && + odr_implicit(o, z_HumanString, &(*p)->description, + ODR_CONTEXT, 4, 1) && odr_sequence_end(o); } -int z_AttributeType(ODR o, Z_AttributeType **p, int opt) +int z_AttributeType(ODR o, Z_AttributeType **p, int opt, const char *name) { - if (!odr_sequence_begin(o, p, sizeof(**p))) + if (!odr_sequence_begin(o, p, sizeof(**p), 0)) return opt && odr_ok(o); return - odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 0, 1) && - odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) && - odr_implicit(o, odr_integer, &(*p)->attributeType, ODR_CONTEXT, 2, 0) && + odr_implicit(o, z_InternationalString, &(*p)->name, + ODR_CONTEXT, 0, 1) && + odr_implicit(o, z_HumanString, &(*p)->description, + ODR_CONTEXT, 1, 1) && + odr_implicit(o, odr_integer, &(*p)->attributeType, + ODR_CONTEXT, 2, 0) && odr_implicit_settag(o, ODR_CONTEXT, 3) && - odr_sequence_of(o, z_AttributeDescription, &(*p)->attributeValues, - &(*p)->num_attributeValues) && + odr_sequence_of(o, (Odr_fun)z_AttributeDescription, + &(*p)->attributeValues, + &(*p)->num_attributeValues, 0) && odr_sequence_end(o); } -int z_AttributeDescription(ODR o, Z_AttributeDescription **p, int opt) +int z_AttributeDescription(ODR o, Z_AttributeDescription **p, int opt, + const char *name) { - if (!odr_sequence_begin(o, p, sizeof(**p))) + if (!odr_sequence_begin(o, p, sizeof(**p), 0)) return opt && odr_ok(o); return - odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 0, 1) && - odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) && - odr_explicit(o, z_StringOrNumeric, &(*p)->attributeValue, ODR_CONTEXT, 2, 0) && + odr_implicit(o, z_InternationalString, &(*p)->name, + ODR_CONTEXT, 0, 1) && + odr_implicit(o, z_HumanString, &(*p)->description, + ODR_CONTEXT, 1, 1) && + odr_explicit(o, z_StringOrNumeric, &(*p)->attributeValue, + ODR_CONTEXT, 2, 0) && odr_implicit_settag(o, ODR_CONTEXT, 3) && - (odr_sequence_of(o, z_StringOrNumeric, &(*p)->equivalentAttributes, - &(*p)->num_equivalentAttributes) || odr_ok(o)) && + (odr_sequence_of(o, (Odr_fun)z_StringOrNumeric, + &(*p)->equivalentAttributes, + &(*p)->num_equivalentAttributes, 0) || odr_ok(o)) && odr_sequence_end(o); } -int z_TermListElement(ODR o, Z_TermListElement **p, int opt) +int z_TermListElement(ODR o, Z_TermListElement **p, int opt, const char *name) { - if (!odr_sequence_begin(o, p, sizeof(**p))) + if (!odr_sequence_begin(o, p, sizeof(**p), 0)) return opt && odr_ok(o); return - odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 1, 0) && + odr_implicit(o, z_InternationalString, &(*p)->name, + ODR_CONTEXT, 1, 0) && odr_implicit(o, z_HumanString, &(*p)->title, ODR_CONTEXT, 2, 1) && odr_implicit(o, odr_integer, &(*p)->searchCost, ODR_CONTEXT, 3, 1) && odr_implicit(o, odr_bool, &(*p)->scanable, ODR_CONTEXT, 4, 0) && odr_implicit_settag(o, ODR_CONTEXT, 5) && (odr_sequence_of(o, z_InternationalString, &(*p)->broader, - &(*p)->num_broader) || odr_ok(o)) && + &(*p)->num_broader, 0) || odr_ok(o)) && odr_implicit_settag(o, ODR_CONTEXT, 6) && (odr_sequence_of(o, z_InternationalString, &(*p)->narrower, - &(*p)->num_narrower) || odr_ok(o)) && + &(*p)->num_narrower, 0) || odr_ok(o)) && odr_sequence_end(o); } -int z_TermListInfo(ODR o, Z_TermListInfo **p, int opt) +int z_TermListInfo(ODR o, Z_TermListInfo **p, int opt, const char *name) { - if (!odr_sequence_begin(o, p, sizeof(**p))) + if (!odr_sequence_begin(o, p, sizeof(**p), 0)) return opt && odr_ok(o); return odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) && - odr_implicit(o, z_DatabaseName, &(*p)->databaseName, ODR_CONTEXT, - 1, 0) && + odr_implicit(o, z_DatabaseName, &(*p)->databaseName, + ODR_CONTEXT, 1, 0) && odr_implicit_settag(o, ODR_CONTEXT, 2) && - (odr_sequence_of(o, z_TermListElement, &(*p)->termLists, - &(*p)->num_termLists) || odr_ok(o)) && + (odr_sequence_of(o, (Odr_fun)z_TermListElement, &(*p)->termLists, + &(*p)->num_termLists, 0) || odr_ok(o)) && odr_sequence_end(o); } -int z_ExtendedServicesInfo(ODR o, Z_ExtendedServicesInfo **p, int opt) +int z_ExtendedServicesInfo(ODR o, Z_ExtendedServicesInfo **p, int opt, + const char *name) { - if (!odr_sequence_begin(o, p, sizeof(**p))) + if (!odr_sequence_begin(o, p, sizeof(**p), 0)) return opt && odr_ok(o); return odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) && odr_implicit(o, odr_oid, &(*p)->type, ODR_CONTEXT, 1, 0) && - odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 2, 1) && + odr_implicit(o, z_InternationalString, &(*p)->name, + ODR_CONTEXT, 2, 1) && odr_implicit(o, odr_bool, &(*p)->privateType, ODR_CONTEXT, 3, 0) && - odr_implicit(o, odr_bool, &(*p)->restrictionsApply, ODR_CONTEXT, 5, 0) && + odr_implicit(o, odr_bool, &(*p)->restrictionsApply, + ODR_CONTEXT, 5, 0) && odr_implicit(o, odr_bool, &(*p)->feeApply, ODR_CONTEXT, 6, 0) && odr_implicit(o, odr_bool, &(*p)->available, ODR_CONTEXT, 7, 0) && - odr_implicit(o, odr_bool, &(*p)->retentionSupported, ODR_CONTEXT, 8, 0) && + odr_implicit(o, odr_bool, &(*p)->retentionSupported, + ODR_CONTEXT, 8, 0) && odr_implicit(o, odr_integer, &(*p)->waitAction, ODR_CONTEXT, 9, 0) && - odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 10, 1) && - odr_implicit(o, z_External, &(*p)->specificExplain, ODR_CONTEXT, 11, 1) && - odr_implicit(o, z_InternationalString, &(*p)->esASN, ODR_CONTEXT, 12, 1) && + odr_implicit(o, z_HumanString, &(*p)->description, + ODR_CONTEXT, 10, 1) && + odr_implicit(o, z_External, &(*p)->specificExplain, + ODR_CONTEXT, 11, 1) && + odr_implicit(o, z_InternationalString, &(*p)->esASN, + ODR_CONTEXT, 12, 1) && odr_sequence_end(o); } -int z_AttributeDetails(ODR o, Z_AttributeDetails **p, int opt) +int z_AttributeDetails(ODR o, Z_AttributeDetails **p, int opt, + const char *name) { - if (!odr_sequence_begin(o, p, sizeof(**p))) + if (!odr_sequence_begin(o, p, sizeof(**p), 0)) return opt && odr_ok(o); return odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) && - odr_implicit(o, z_DatabaseName, &(*p)->databaseName, ODR_CONTEXT, 1, 0) && + odr_implicit(o, z_DatabaseName, &(*p)->databaseName, + ODR_CONTEXT, 1, 0) && odr_implicit_settag(o, ODR_CONTEXT, 2) && - (odr_sequence_of(o, z_AttributeSetDetails, &(*p)->attributesBySet, - &(*p)->num_attributesBySet) && odr_ok(o)) && - odr_implicit(o, z_AttributeCombinations, &(*p)->attributeCombinations, ODR_CONTEXT, 3, 1) && + (odr_sequence_of(o, (Odr_fun)z_AttributeSetDetails, + &(*p)->attributesBySet, + &(*p)->num_attributesBySet, 0) && odr_ok(o)) && + odr_implicit(o, z_AttributeCombinations, &(*p)->attributeCombinations, + ODR_CONTEXT, 3, 1) && odr_sequence_end(o); } -int z_AttributeSetDetails(ODR o, Z_AttributeSetDetails **p, int opt) +int z_AttributeSetDetails(ODR o, Z_AttributeSetDetails **p, int opt, + const char *name) { - if (!odr_sequence_begin(o, p, sizeof(**p))) + if (!odr_sequence_begin(o, p, sizeof(**p), 0)) return opt && odr_ok(o); return - odr_implicit(o, odr_oid, &(*p)->attributeSet, ODR_CONTEXT, - 0, 0) && + odr_implicit(o, odr_oid, &(*p)->attributeSet, + ODR_CONTEXT, 0, 0) && odr_implicit_settag(o, ODR_CONTEXT, 1) && - odr_sequence_of(o, z_AttributeTypeDetails, &(*p)->attributesByType, - &(*p)->num_attributesByType) && + odr_sequence_of(o, (Odr_fun)z_AttributeTypeDetails, + &(*p)->attributesByType, + &(*p)->num_attributesByType, 0) && odr_sequence_end(o); } -int z_AttributeTypeDetails(ODR o, Z_AttributeTypeDetails **p, int opt) +int z_AttributeTypeDetails(ODR o, Z_AttributeTypeDetails **p, int opt, + const char *name) { - if (!odr_sequence_begin(o, p, sizeof(**p))) + if (!odr_sequence_begin(o, p, sizeof(**p), 0)) return opt && odr_ok(o); return - odr_implicit(o, odr_integer, &(*p)->attributeType, ODR_CONTEXT, 0, 0) && - odr_implicit(o, z_OmittedAttributeInterpretation, &(*p)->optionalType, ODR_CONTEXT, 1, 1) && + odr_implicit(o, odr_integer, &(*p)->attributeType, + ODR_CONTEXT, 0, 0) && + odr_implicit(o, z_OmittedAttributeInterpretation, + &(*p)->defaultIfOmitted, + ODR_CONTEXT, 1, 1) && odr_implicit_settag(o, ODR_CONTEXT, 2) && - (odr_sequence_of(o, z_AttributeValue, &(*p)->attributeValues, - &(*p)->num_attributeValues) || odr_ok(o)) && + (odr_sequence_of(o, (Odr_fun)z_AttributeValue, &(*p)->attributeValues, + &(*p)->num_attributeValues, 0) || odr_ok(o)) && odr_sequence_end(o); } -int z_OmittedAttributeInterpretation(ODR o, Z_OmittedAttributeInterpretation **p, int opt) +int z_OmittedAttributeInterpretation(ODR o, + Z_OmittedAttributeInterpretation **p, + int opt, const char *name) { - if (!odr_sequence_begin(o, p, sizeof(**p))) + if (!odr_sequence_begin(o, p, sizeof(**p), 0)) return opt && odr_ok(o); return - odr_explicit(o, z_StringOrNumeric, &(*p)->defaultValue, ODR_CONTEXT, 0, 1) && - odr_implicit(o, z_HumanString, &(*p)->defaultDescription, ODR_CONTEXT, 1, 1) && + odr_explicit(o, z_StringOrNumeric, &(*p)->defaultValue, + ODR_CONTEXT, 0, 1) && + odr_implicit(o, z_HumanString, &(*p)->defaultDescription, + ODR_CONTEXT, 1, 1) && odr_sequence_end(o); } -int z_EScanInfo(ODR o, Z_EScanInfo **p, int opt) +int z_EScanInfo(ODR o, Z_EScanInfo **p, int opt, const char *name) { - if (!odr_sequence_begin(o, p, sizeof(**p))) + if (!odr_sequence_begin(o, p, sizeof(**p), 0)) return opt && odr_ok(o); return odr_implicit(o, odr_integer, &(*p)->maxStepSize, ODR_CONTEXT, 0, 1) && - odr_implicit(o, z_HumanString, &(*p)->collatingSequence, ODR_CONTEXT, 1, 1) && + odr_implicit(o, z_HumanString, &(*p)->collatingSequence, + ODR_CONTEXT, 1, 1) && odr_implicit(o, odr_bool, &(*p)->increasing, ODR_CONTEXT, 2, 1) && odr_sequence_end(o); } -int z_TermListDetails(ODR o, Z_TermListDetails **p, int opt) +int z_TermListDetails(ODR o, Z_TermListDetails **p, int opt, const char *name) { - if (!odr_sequence_begin(o, p, sizeof(**p))) + if (!odr_sequence_begin(o, p, sizeof(**p), 0)) return opt && odr_ok(o); return odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) && - odr_implicit(o, z_InternationalString, &(*p)->termListName, ODR_CONTEXT, 1, 0) && - odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 2, 1) && - odr_implicit(o, z_AttributeCombinations, &(*p)->attributes, ODR_CONTEXT, 3, 1) && + odr_implicit(o, z_InternationalString, &(*p)->termListName, + ODR_CONTEXT, 1, 0) && + odr_implicit(o, z_HumanString, &(*p)->description, + ODR_CONTEXT, 2, 1) && + odr_implicit(o, z_AttributeCombinations, &(*p)->attributes, + ODR_CONTEXT, 3, 1) && odr_implicit(o, z_EScanInfo, &(*p)->scanInfo, ODR_CONTEXT, 4, 1) && - odr_implicit(o, odr_integer, &(*p)->estNumberTerms, ODR_CONTEXT, 5, 1) && + odr_implicit(o, odr_integer, &(*p)->estNumberTerms, + ODR_CONTEXT, 5, 1) && odr_implicit_settag(o, ODR_CONTEXT, 6) && - (odr_sequence_of(o, z_Term, &(*p)->sampleTerms, - &(*p)->num_sampleTerms) || odr_ok(o)) && + (odr_sequence_of(o, (Odr_fun)z_Term, &(*p)->sampleTerms, + &(*p)->num_sampleTerms, 0) || odr_ok(o)) && odr_sequence_end(o); } -int z_ElementSetDetails(ODR o, Z_ElementSetDetails **p, int opt) +int z_ElementSetDetails(ODR o, Z_ElementSetDetails **p, int opt, + const char *name) { - if (!odr_sequence_begin(o, p, sizeof(**p))) + if (!odr_sequence_begin(o, p, sizeof(**p), 0)) return opt && odr_ok(o); return odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) && - odr_implicit(o, z_DatabaseName, &(*p)->databaseName, ODR_CONTEXT, 1, 0) && - odr_implicit(o, z_ElementSetName, &(*p)->elementSetName, ODR_CONTEXT, 2, 0) && + odr_implicit(o, z_DatabaseName, &(*p)->databaseName, + ODR_CONTEXT, 1, 0) && + odr_implicit(o, z_ElementSetName, &(*p)->elementSetName, + ODR_CONTEXT, 2, 0) && odr_implicit(o, odr_oid, &(*p)->recordSyntax, ODR_CONTEXT, 3, 0) && odr_implicit(o, odr_oid, &(*p)->schema, ODR_CONTEXT, 4, 0) && - odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 5, 1) && + odr_implicit(o, z_HumanString, &(*p)->description, + ODR_CONTEXT, 5, 1) && odr_implicit_settag(o, ODR_CONTEXT, 6) && - (odr_sequence_of(o, z_PerElementDetails, &(*p)->detailsPerElement, &(*p)->num_detailsPerElement) || odr_ok(o)) && + (odr_sequence_of(o, (Odr_fun)z_PerElementDetails, + &(*p)->detailsPerElement, + &(*p)->num_detailsPerElement, 0) || odr_ok(o)) && odr_sequence_end(o); } -int z_RetrievalRecordDetails(ODR o, Z_RetrievalRecordDetails **p, int opt) +int z_RetrievalRecordDetails(ODR o, Z_RetrievalRecordDetails **p, int opt, + const char *name) { - if (!odr_sequence_begin(o, p, sizeof(**p))) + if (!odr_sequence_begin(o, p, sizeof(**p), 0)) return opt && odr_ok(o); return odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) && - odr_implicit(o, z_DatabaseName, &(*p)->databaseName, ODR_CONTEXT, 1, 0) && + odr_implicit(o, z_DatabaseName, &(*p)->databaseName, + ODR_CONTEXT, 1, 0) && odr_implicit(o, odr_oid, &(*p)->schema, ODR_CONTEXT, 2, 0) && odr_implicit(o, odr_oid, &(*p)->recordSyntax, ODR_CONTEXT, 3, 0) && - odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 4, 1) && + odr_implicit(o, z_HumanString, &(*p)->description, + ODR_CONTEXT, 4, 1) && odr_implicit_settag(o, ODR_CONTEXT, 5) && - (odr_sequence_of(o, z_PerElementDetails, &(*p)->detailsPerElement, - &(*p)->num_detailsPerElement) || odr_ok(o)) && + (odr_sequence_of(o, (Odr_fun)z_PerElementDetails, + &(*p)->detailsPerElement, + &(*p)->num_detailsPerElement, 0) || odr_ok(o)) && odr_sequence_end(o); } -int z_PerElementDetails(ODR o, Z_PerElementDetails **p, int opt) +int z_PerElementDetails(ODR o, Z_PerElementDetails **p, int opt, + const char *name) { - if (!odr_sequence_begin(o, p, sizeof(**p))) + if (!odr_sequence_begin(o, p, sizeof(**p), 0)) return opt && odr_ok(o); return - odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 0, 1) && + odr_implicit(o, z_InternationalString, &(*p)->name, + ODR_CONTEXT, 0, 1) && odr_implicit(o, z_RecordTag, &(*p)->recordTag, ODR_CONTEXT, 1, 1) && odr_implicit_settag(o, ODR_CONTEXT, 2) && - (odr_sequence_of(o, z_Path, &(*p)->schemaTags, &(*p)->num_schemaTags) || - odr_ok(o)) && + (odr_sequence_of(o, (Odr_fun)z_Path, &(*p)->schemaTags, + &(*p)->num_schemaTags, 0) || + odr_ok(o)) && odr_implicit(o, odr_integer, &(*p)->maxSize, ODR_CONTEXT, 3, 1) && odr_implicit(o, odr_integer, &(*p)->minSize, ODR_CONTEXT, 4, 1) && odr_implicit(o, odr_integer, &(*p)->avgSize, ODR_CONTEXT, 5, 1) && odr_implicit(o, odr_integer, &(*p)->fixedSize, ODR_CONTEXT, 6, 1) && odr_implicit(o, odr_bool, &(*p)->repeatable, ODR_CONTEXT, 8, 0) && odr_implicit(o, odr_bool, &(*p)->required, ODR_CONTEXT, 9, 0) && - odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 12, 1) && + odr_implicit(o, z_HumanString, &(*p)->description, + ODR_CONTEXT, 12, 1) && odr_implicit(o, z_HumanString, &(*p)->contents, ODR_CONTEXT, 13, 1) && - odr_implicit(o, z_HumanString, &(*p)->billingInfo, ODR_CONTEXT, 14, 1) && - odr_implicit(o, z_HumanString, &(*p)->restrictions, ODR_CONTEXT, 15, 1) && + odr_implicit(o, z_HumanString, &(*p)->billingInfo, + ODR_CONTEXT, 14, 1) && + odr_implicit(o, z_HumanString, &(*p)->restrictions, + ODR_CONTEXT, 15, 1) && odr_implicit_settag(o, ODR_CONTEXT, 16) && (odr_sequence_of(o, z_InternationalString, &(*p)->alternateNames, - &(*p)->num_alternateNames) || odr_ok(o)) && + &(*p)->num_alternateNames, 0) || odr_ok(o)) && odr_implicit_settag(o, ODR_CONTEXT, 17) && (odr_sequence_of(o, z_InternationalString, &(*p)->genericNames, - &(*p)->num_genericNames) || odr_ok(o)) && + &(*p)->num_genericNames, 0) || odr_ok(o)) && odr_implicit(o, z_AttributeCombinations, &(*p)->searchAccess, - ODR_CONTEXT, 18, 1) && + ODR_CONTEXT, 18, 1) && odr_sequence_end(o); } -int z_RecordTag(ODR o, Z_RecordTag **p, int opt) +int z_RecordTag(ODR o, Z_RecordTag **p, int opt, const char *name) { - if (!odr_sequence_begin(o, p, sizeof(**p))) + if (!odr_sequence_begin(o, p, sizeof(**p), 0)) return opt && odr_ok(o); return - odr_explicit(o, z_StringOrNumeric, &(*p)->qualifier, ODR_CONTEXT, - 0, 1) && - odr_explicit(o, z_StringOrNumeric, &(*p)->tagValue, ODR_CONTEXT, - 1, 0) && + odr_explicit(o, z_StringOrNumeric, &(*p)->qualifier, + ODR_CONTEXT, 0, 1) && + odr_explicit(o, z_StringOrNumeric, &(*p)->tagValue, + ODR_CONTEXT, 1, 0) && odr_sequence_end(o); } -int z_SortDetails(ODR o, Z_SortDetails **p, int opt) +int z_SortDetails(ODR o, Z_SortDetails **p, int opt, const char *name) { - if (!odr_sequence_begin(o, p, sizeof(**p))) + if (!odr_sequence_begin(o, p, sizeof(**p), 0)) return opt && odr_ok(o); return odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) && - odr_implicit(o, z_DatabaseName, &(*p)->databaseName, ODR_CONTEXT, - 1, 0) && + odr_implicit(o, z_DatabaseName, &(*p)->databaseName, + ODR_CONTEXT, 1, 0) && odr_implicit_settag(o, ODR_CONTEXT, 2) && - (odr_sequence_of(o, z_SortKeyDetails, &(*p)->sortKeys, - &(*p)->num_sortKeys) || odr_ok(o)) && + (odr_sequence_of(o, (Odr_fun)z_SortKeyDetails, &(*p)->sortKeys, + &(*p)->num_sortKeys, 0) || odr_ok(o)) && odr_sequence_end(o); } -int z_SortKeyDetailsSortType(ODR o, Z_SortKeyDetailsSortType **p, int opt) +int z_SortKeyDetails (ODR o, Z_SortKeyDetails **p, int opt, const char *name) { - static Odr_arm arm[] = - { - {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_SortKeyDetailsSortType_character, - odr_null}, - {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_SortKeyDetailsSortType_numeric, - odr_null}, - {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_SortKeyDetailsSortType_structured, - z_HumanString}, - {-1, -1, -1, -1, 0} + static Odr_arm arm[] = { + {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_SortKeyDetails_character, + (Odr_fun) odr_null, 0}, + {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_SortKeyDetails_numeric, + (Odr_fun) odr_null, 0}, + {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_SortKeyDetails_structured, + (Odr_fun) z_HumanString, 0}, + {-1, -1, -1, -1, (Odr_fun) 0, 0} }; - - if (o->direction == ODR_DECODE) - *p = odr_malloc(o, sizeof(**p)); - else if (!*p) - return opt; - if (odr_choice(o, arm, &(*p)->u, &(*p)->which)) - return 1; - *p = 0; - return opt && odr_ok(o); -} - -int z_SortKeyDetails(ODR o, Z_SortKeyDetails **p, int opt) -{ - if (!odr_sequence_begin(o, p, sizeof(**p))) - return opt && odr_ok(o); + if (!odr_sequence_begin (o, p, sizeof(**p), 0)) + return opt && odr_ok (o); return - odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 0, 1) && - odr_implicit_settag(o, ODR_CONTEXT, 1) && - (odr_sequence_of(o, z_Specification, &(*p)->elementSpecifications, - &(*p)->num_elementSpecifications) || odr_ok(o)) && - odr_implicit(o, z_AttributeCombinations, &(*p)->attributeSpecifications, - ODR_CONTEXT, 2, 1) && - odr_explicit(o, z_SortKeyDetailsSortType, &(*p)->sortType, ODR_CONTEXT, - 3, 1) && - odr_implicit(o, odr_integer, &(*p)->caseSensitivity, ODR_CONTEXT, - 4, 1) && - odr_sequence_end(o); -} - -int z_ProcessingInformation(ODR o, Z_ProcessingInformation **p, int opt) -{ - if (!odr_sequence_begin(o, p, sizeof(**p))) + odr_implicit (o, z_HumanString, + &(*p)->description, ODR_CONTEXT, 0, 1) && + odr_implicit_settag (o, ODR_CONTEXT, 1) && + (odr_sequence_of(o, (Odr_fun) z_Specification, + &(*p)->elementSpecifications, + &(*p)->num_elementSpecifications, 0) || odr_ok(o)) && + odr_implicit (o, z_AttributeCombinations, + &(*p)->attributeSpecifications, ODR_CONTEXT, 2, 1) && + ((odr_constructed_begin (o, &(*p)->u, ODR_CONTEXT, 3, 0) && + odr_choice (o, arm, &(*p)->u, &(*p)->which, 0) && + odr_constructed_end (o)) || odr_ok(o)) && + odr_implicit (o, odr_integer, + &(*p)->caseSensitivity, ODR_CONTEXT, 4, 1) && + odr_sequence_end (o); +} + +int z_ProcessingInformation(ODR o, Z_ProcessingInformation **p, int opt, + const char *name) +{ + if (!odr_sequence_begin(o, p, sizeof(**p), 0)) return opt && odr_ok(o); return odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) && - odr_implicit(o, z_DatabaseName, &(*p)->databaseName, ODR_CONTEXT, - 1, 0) && - odr_implicit(o, odr_integer, &(*p)->processingContext, ODR_CONTEXT, - 2, 0) && - odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, - 3, 0) && + odr_implicit(o, z_DatabaseName, &(*p)->databaseName, + ODR_CONTEXT, 1, 0) && + odr_implicit(o, odr_integer, &(*p)->processingContext, + ODR_CONTEXT, 2, 0) && + odr_implicit(o, z_InternationalString, &(*p)->name, + ODR_CONTEXT, 3, 0) && odr_implicit(o, odr_oid, &(*p)->oid, ODR_CONTEXT, 4, 0) && - odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 5, 1) && + odr_implicit(o, z_HumanString, &(*p)->description, + ODR_CONTEXT, 5, 1) && odr_implicit(o, z_External, &(*p)->instructions, ODR_CONTEXT, 6, 1) && odr_sequence_end(o); } -int z_VariantSetInfo(ODR o, Z_VariantSetInfo **p, int opt) +int z_VariantSetInfo(ODR o, Z_VariantSetInfo **p, int opt, const char *name) { - if (!odr_sequence_begin(o, p, sizeof(**p))) + if (!odr_sequence_begin(o, p, sizeof(**p), 0)) return opt && odr_ok(o); return odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) && odr_implicit(o, odr_oid, &(*p)->variantSet, ODR_CONTEXT, 1, 0) && - odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, - 2, 0) && + odr_implicit(o, z_InternationalString, &(*p)->name, + ODR_CONTEXT, 2, 0) && odr_implicit_settag(o, ODR_CONTEXT, 3) && - (odr_sequence_of(o, z_VariantClass, &(*p)->variants, - &(*p)->num_variants) || odr_ok(o)) && + (odr_sequence_of(o, (Odr_fun)z_VariantClass, &(*p)->variants, + &(*p)->num_variants, 0) || odr_ok(o)) && odr_sequence_end(o); } -int z_VariantClass(ODR o, Z_VariantClass **p, int opt) +int z_VariantClass(ODR o, Z_VariantClass **p, int opt, const char *name) { - if (!odr_sequence_begin(o, p, sizeof(**p))) + if (!odr_sequence_begin(o, p, sizeof(**p), 0)) return opt && odr_ok(o); return - odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, - 0, 1) && - odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) && + odr_implicit(o, z_InternationalString, &(*p)->name, + ODR_CONTEXT, 0, 1) && + odr_implicit(o, z_HumanString, &(*p)->description, + ODR_CONTEXT, 1, 1) && odr_implicit(o, odr_integer, &(*p)->variantClass, ODR_CONTEXT, 2, 0) && odr_implicit_settag(o, ODR_CONTEXT, 3) && - odr_sequence_of(o, z_VariantType, &(*p)->variantTypes, - &(*p)->num_variantTypes) && + odr_sequence_of(o, (Odr_fun)z_VariantType, &(*p)->variantTypes, + &(*p)->num_variantTypes, 0) && odr_sequence_end(o); } -int z_VariantType(ODR o, Z_VariantType **p, int opt) +int z_VariantType(ODR o, Z_VariantType **p, int opt, const char *name) { - if (!odr_sequence_begin(o, p, sizeof(**p))) + if (!odr_sequence_begin(o, p, sizeof(**p), 0)) return opt && odr_ok(o); return - odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 0, 1) && - odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) && - odr_implicit(o, odr_integer, &(*p)->variantType, ODR_CONTEXT, 2, 0) && - odr_implicit(o, z_VariantValue, &(*p)->variantValue, ODR_CONTEXT, 3, 1) && + odr_implicit(o, z_InternationalString, &(*p)->name, + ODR_CONTEXT, 0, 1) && + odr_implicit(o, z_HumanString, &(*p)->description, + ODR_CONTEXT, 1, 1) && + odr_implicit(o, odr_integer, &(*p)->variantType, + ODR_CONTEXT, 2, 0) && + odr_implicit(o, z_VariantValue, &(*p)->variantValue, + ODR_CONTEXT, 3, 1) && odr_sequence_end(o); } -int z_VariantValue(ODR o, Z_VariantValue **p, int opt) +int z_VariantValue(ODR o, Z_VariantValue **p, int opt, const char *name) { - if (!odr_sequence_begin(o, p, sizeof(**p))) + if (!odr_sequence_begin(o, p, sizeof(**p), 0)) return opt && odr_ok(o); return odr_explicit(o, odr_integer, &(*p)->dataType, ODR_CONTEXT, 0, 0) && @@ -1208,42 +1370,40 @@ int z_VariantValue(ODR o, Z_VariantValue **p, int opt) odr_sequence_end(o); } -int z_ValueSetEnumerated(ODR o, Z_ValueSetEnumerated **p, int opt) +int z_ValueSetEnumerated(ODR o, Z_ValueSetEnumerated **p, int opt, + const char *name) { - if (o->direction == ODR_DECODE) - *p = odr_malloc(o, sizeof(**p)); - else if (!*p) - return opt; - if (odr_sequence_of(o, z_ValueDescription, &(*p)->enumerated, - &(*p)->num_enumerated)) + if (!odr_initmember(o, p, sizeof(**p))) + return opt && odr_ok(o); + if (odr_sequence_of(o, (Odr_fun)z_ValueDescription, &(*p)->elements, + &(*p)->num, 0)) return 1; *p = 0; return opt && odr_ok(o); } -int z_ValueSet(ODR o, Z_ValueSet **p, int opt) +int z_ValueSet(ODR o, Z_ValueSet **p, int opt, const char *name) { static Odr_arm arm[] = { - {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_ValueSet_range, z_ValueRange}, + {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_ValueSet_range, + (Odr_fun)z_ValueRange, 0}, {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_ValueSet_enumerated, - z_ValueSetEnumerated}, - {-1, -1, -1, -1, 0} + (Odr_fun)z_ValueSetEnumerated, 0}, + {-1, -1, -1, -1, 0, 0} }; - - if (o->direction == ODR_DECODE) - *p = odr_malloc(o, sizeof(**p)); - else if (!*p) - return opt; - if (odr_choice(o, arm, &(*p)->u, &(*p)->which)) + + if (!odr_initmember(o, p, sizeof(**p))) + return opt && odr_ok(o); + if (odr_choice(o, arm, &(*p)->u, &(*p)->which, 0)) return 1; *p = 0; return opt && odr_ok(o); } -int z_ValueRange(ODR o, Z_ValueRange **p, int opt) +int z_ValueRange(ODR o, Z_ValueRange **p, int opt, const char *name) { - if (!odr_sequence_begin(o, p, sizeof(**p))) + if (!odr_sequence_begin(o, p, sizeof(**p), 0)) return opt && odr_ok(o); return odr_explicit(o, z_ValueDescription, &(*p)->lower, ODR_CONTEXT, 0, 1) && @@ -1251,138 +1411,154 @@ int z_ValueRange(ODR o, Z_ValueRange **p, int opt) odr_sequence_end(o); } -int z_ValueDescription(ODR o, Z_ValueDescription **p, int opt) +int z_ValueDescription(ODR o, Z_ValueDescription **p, int opt, + const char *name) { static Odr_arm arm[] = { - {ODR_NONE, -1, -1, Z_ValueDescription_integer, odr_integer}, - {ODR_NONE, -1, -1, Z_ValueDescription_string, z_InternationalString}, - {ODR_NONE, -1, -1, Z_ValueDescription_octets, odr_octetstring}, - {ODR_NONE, -1, -1, Z_ValueDescription_oid, odr_oid}, - {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_ValueDescription_unit, z_Unit}, - {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_ValueDescription_valueAndUnit, z_IntUnit}, - {-1, -1, -1, -1, 0} + {ODR_NONE, -1, -1, Z_ValueDescription_integer, + (Odr_fun)odr_integer, 0}, + {ODR_NONE, -1, -1, Z_ValueDescription_string, + (Odr_fun)z_InternationalString, 0}, + {ODR_NONE, -1, -1, Z_ValueDescription_octets, + (Odr_fun)odr_octetstring, 0}, + {ODR_NONE, -1, -1, Z_ValueDescription_oid, + (Odr_fun)odr_oid, 0}, + {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_ValueDescription_unit, + (Odr_fun)z_Unit, 0}, + {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_ValueDescription_valueAndUnit, + (Odr_fun)z_IntUnit, 0}, + {-1, -1, -1, -1, 0, 0} }; - - if (o->direction == ODR_DECODE) - *p = odr_malloc(o, sizeof(**p)); - else if (!*p) - return opt && odr_ok(o); - if (odr_choice(o, arm, &(*p)->u, &(*p)->which)) + + if (!odr_initmember(o, p, sizeof(**p))) + return opt && odr_ok(o); + if (odr_choice(o, arm, &(*p)->u, &(*p)->which, 0)) return 1; *p = 0; return opt && odr_ok(o); } -int z_UnitInfo(ODR o, Z_UnitInfo **p, int opt) +int z_UnitInfo(ODR o, Z_UnitInfo **p, int opt, const char *name) { - if (!odr_sequence_begin(o, p, sizeof(**p))) + if (!odr_sequence_begin(o, p, sizeof(**p), 0)) return opt && odr_ok(o); return odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) && - odr_implicit(o, z_InternationalString, &(*p)->unitSystem, ODR_CONTEXT, - 1, 0) && - odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 2, 1) && + odr_implicit(o, z_InternationalString, &(*p)->unitSystem, + ODR_CONTEXT, 1, 0) && + odr_implicit(o, z_HumanString, &(*p)->description, + ODR_CONTEXT, 2, 1) && odr_implicit_settag(o, ODR_CONTEXT, 3) && - (odr_sequence_of(o, z_UnitType, &(*p)->units, &(*p)->num_units) || - odr_ok(o)) && + (odr_sequence_of(o, (Odr_fun)z_UnitType, &(*p)->units, + &(*p)->num_units, 0) || + odr_ok(o)) && odr_sequence_end(o); } -int z_UnitType(ODR o, Z_UnitType **p, int opt) +int z_UnitType(ODR o, Z_UnitType **p, int opt, const char *name) { - if (!odr_sequence_begin(o, p, sizeof(**p))) + if (!odr_sequence_begin(o, p, sizeof(**p), 0)) return opt && odr_ok(o); return - odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, - 0, 1) && - odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) && - odr_explicit(o, z_StringOrNumeric, &(*p)->unitType, ODR_CONTEXT, - 2, 0) && + odr_implicit(o, z_InternationalString, &(*p)->name, + ODR_CONTEXT, 0, 1) && + odr_implicit(o, z_HumanString, &(*p)->description, + ODR_CONTEXT, 1, 1) && + odr_explicit(o, z_StringOrNumeric, &(*p)->unitType, + ODR_CONTEXT, 2, 0) && odr_implicit_settag(o, ODR_CONTEXT, 3) && - odr_sequence_of(o, z_Units, &(*p)->units, &(*p)->num_units) && + odr_sequence_of(o, (Odr_fun)z_Units, &(*p)->units, + &(*p)->num_units, 0) && odr_sequence_end(o); } -int z_Units(ODR o, Z_Units **p, int opt) +int z_Units(ODR o, Z_Units **p, int opt, const char *name) { - if (!odr_sequence_begin(o, p, sizeof(**p))) + if (!odr_sequence_begin(o, p, sizeof(**p), 0)) return opt && odr_ok(o); return - odr_implicit(o, z_InternationalString, &(*p)->name, ODR_CONTEXT, 0, 1) && - odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 1, 1) && - odr_explicit(o, z_StringOrNumeric, &(*p)->unit, ODR_CONTEXT, 2, 0) && + odr_implicit(o, z_InternationalString, &(*p)->name, + ODR_CONTEXT, 0, 1) && + odr_implicit(o, z_HumanString, &(*p)->description, + ODR_CONTEXT, 1, 1) && + odr_explicit(o, z_StringOrNumeric, &(*p)->unit, + ODR_CONTEXT, 2, 0) && odr_sequence_end(o); } -int z_CategoryList(ODR o, Z_CategoryList **p, int opt) +int z_CategoryList(ODR o, Z_CategoryList **p, int opt, const char *name) { - if (!odr_sequence_begin(o, p, sizeof(**p))) + if (!odr_sequence_begin(o, p, sizeof(**p), 0)) return opt && odr_ok(o); return odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) && odr_implicit_settag(o, ODR_CONTEXT, 1) && - odr_sequence_of(o, z_CategoryInfo, &(*p)->categories, - &(*p)->num_categories) && + odr_sequence_of(o, (Odr_fun)z_CategoryInfo, &(*p)->categories, + &(*p)->num_categories, 0) && odr_sequence_end(o); } -int z_CategoryInfo(ODR o, Z_CategoryInfo **p, int opt) +int z_CategoryInfo(ODR o, Z_CategoryInfo **p, int opt, const char *name) { - if (!odr_sequence_begin(o, p, sizeof(**p))) + if (!odr_sequence_begin(o, p, sizeof(**p), 0)) return opt && odr_ok(o); return - odr_implicit(o, z_InternationalString, &(*p)->category, ODR_CONTEXT, - 1, 0) && + odr_implicit(o, z_InternationalString, &(*p)->category, + ODR_CONTEXT, 1, 0) && odr_implicit(o, z_InternationalString, &(*p)->originalCategory, - ODR_CONTEXT, 2, 1) && - odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 3, 1) && - odr_implicit(o, z_InternationalString, &(*p)->asn1Module, ODR_CONTEXT, - 4, 1) && + ODR_CONTEXT, 2, 1) && + odr_implicit(o, z_HumanString, &(*p)->description, + ODR_CONTEXT, 3, 1) && + odr_implicit(o, z_InternationalString, &(*p)->asn1Module, + ODR_CONTEXT, 4, 1) && odr_sequence_end(o); } -int z_ExplainRecord(ODR o, Z_ExplainRecord **p, int opt) +int z_ExplainRecord(ODR o, Z_ExplainRecord **p, int opt, const char *name) { static Odr_arm arm[] = { - {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_Explain_targetInfo, z_TargetInfo}, - {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_Explain_databaseInfo, z_DatabaseInfo}, - {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_Explain_schemaInfo, z_SchemaInfo}, - {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_Explain_tagSetInfo, z_TagSetInfo}, + {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_Explain_targetInfo, + (Odr_fun)z_TargetInfo, 0}, + {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_Explain_databaseInfo, + (Odr_fun)z_DatabaseInfo, 0}, + {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_Explain_schemaInfo, + (Odr_fun)z_SchemaInfo, 0}, + {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_Explain_tagSetInfo, + (Odr_fun)z_TagSetInfo, 0}, {ODR_IMPLICIT, ODR_CONTEXT, 4, Z_Explain_recordSyntaxInfo, - z_RecordSyntaxInfo}, + (Odr_fun)z_RecordSyntaxInfo, 0}, {ODR_IMPLICIT, ODR_CONTEXT, 5, Z_Explain_attributeSetInfo, - z_AttributeSetInfo}, + (Odr_fun)z_AttributeSetInfo, 0}, {ODR_IMPLICIT, ODR_CONTEXT, 6, Z_Explain_termListInfo, - z_TermListInfo}, + (Odr_fun)z_TermListInfo, 0}, {ODR_IMPLICIT, ODR_CONTEXT, 7, Z_Explain_extendedServicesInfo, - z_ExtendedServicesInfo}, + (Odr_fun)z_ExtendedServicesInfo, 0}, {ODR_IMPLICIT, ODR_CONTEXT, 8, Z_Explain_attributeDetails, - z_AttributeDetails}, + (Odr_fun)z_AttributeDetails, 0}, {ODR_IMPLICIT, ODR_CONTEXT, 9, Z_Explain_termListDetails, - z_TermListDetails}, + (Odr_fun)z_TermListDetails, 0}, {ODR_IMPLICIT, ODR_CONTEXT, 10, Z_Explain_elementSetDetails, - z_ElementSetDetails}, + (Odr_fun)z_ElementSetDetails, 0}, {ODR_IMPLICIT, ODR_CONTEXT, 11, Z_Explain_retrievalRecordDetails, - z_RetrievalRecordDetails}, + (Odr_fun)z_RetrievalRecordDetails, 0}, {ODR_IMPLICIT, ODR_CONTEXT, 12, Z_Explain_sortDetails, - z_SortDetails}, + (Odr_fun)z_SortDetails, 0}, {ODR_IMPLICIT, ODR_CONTEXT, 13, Z_Explain_processing, - z_ProcessingInformation}, + (Odr_fun)z_ProcessingInformation, 0}, {ODR_IMPLICIT, ODR_CONTEXT, 14, Z_Explain_variants, - z_VariantSetInfo}, - {ODR_IMPLICIT, ODR_CONTEXT, 15, Z_Explain_units, z_UnitInfo}, + (Odr_fun)z_VariantSetInfo, 0}, + {ODR_IMPLICIT, ODR_CONTEXT, 15, Z_Explain_units, + (Odr_fun)z_UnitInfo, 0}, {ODR_IMPLICIT, ODR_CONTEXT, 100, Z_Explain_categoryList, - z_CategoryList}, - {-1, -1, -1, -1, 0} + (Odr_fun)z_CategoryList, 0}, + {-1, -1, -1, -1, 0, 0} }; - - if (o->direction == ODR_DECODE) - *p = odr_malloc(o, sizeof(**p)); - else if (!*p) - return opt; - if (odr_choice(o, arm, &(*p)->u, &(*p)->which)) + + if (!odr_initmember(o, p, sizeof(**p))) + return opt && odr_ok(o); + if (odr_choice(o, arm, &(*p)->u, &(*p)->which, 0)) return 1; *p = 0; return opt && odr_ok(o);