X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=asn%2Fprt-exp.c;h=be6355d44159b8755905d3c3b45777263119aff5;hp=f7bcb2570a080c895c7a3202511cd3d61f1e7465;hb=b2d4fae21009b1909a35ef9ae6bcd27c1a5dca74;hpb=450302c17fd8b1c07fa1b5400e5b85645118d319 diff --git a/asn/prt-exp.c b/asn/prt-exp.c index f7bcb25..be6355d 100644 --- a/asn/prt-exp.c +++ b/asn/prt-exp.c @@ -4,7 +4,13 @@ * Sebastian Hammer, Adam Dickmeiss * * $Log: prt-exp.c,v $ - * Revision 1.5 1995-12-05 11:15:50 quinn + * 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 @@ -134,10 +140,8 @@ int z_HumanStringUnit(ODR o, Z_HumanStringUnit **p, int opt) int z_HumanString(ODR o, Z_HumanString **p, int opt) { - if (o->direction == ODR_DECODE) - *p = odr_malloc(o, sizeof(**p)); - else if (!*p) - return opt && odr_ok(o); + if (!odr_initmember(o, p, sizeof(**p))) + return opt && odr_ok(o); if (odr_sequence_of(o, z_HumanStringUnit, &(*p)->strings, &(*p)->num_strings)) return 1; @@ -170,10 +174,8 @@ int z_IconObjectUnit(ODR o, Z_IconObjectUnit **p, int opt) int z_IconObject(ODR o, Z_IconObject **p, int opt) { - 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_IconObjectUnit, &(*p)->iconUnits, &(*p)->num_iconUnits)) return 1; @@ -239,10 +241,8 @@ int z_NetworkAddress(ODR o, Z_NetworkAddress **p, int opt) {-1, -1, -1, -1, 0} }; - 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_choice(o, arm, &(*p)->u, &(*p)->which)) return 1; *p = 0; @@ -289,31 +289,29 @@ int z_AccessInfo(ODR o, Z_AccessInfo **p, int opt) 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); + 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 (!odr_initmember(o, p, sizeof(**p))) + return opt && odr_ok(o); + if (odr_choice(o, arm, &(*p)->u, &(*p)->which)) + return 1; + *p = 0; + return opt && odr_ok(o); } int z_PrivateCapOperator(ODR o, Z_PrivateCapOperator **p, int opt) @@ -393,10 +391,8 @@ int z_ProxSupportUnit(ODR o, Z_ProxSupportUnit **p, int opt) {-1, -1, -1, -1, 0} }; - 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_choice(o, arm, &(*p)->u, &(*p)->which)) return 1; *p = 0; @@ -440,10 +436,8 @@ int z_AccessRestrictionsUnit(ODR o, Z_AccessRestrictionsUnit **p, int opt) int z_AccessRestrictions(ODR o, Z_AccessRestrictions **p, int opt) { - 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_AccessRestrictionsUnit, &(*p)->restrictions, &(*p)->num_restrictions)) return 1; @@ -490,10 +484,8 @@ int z_Charge(ODR o, Z_Charge **p, int opt) int z_DatabaseList(ODR o, Z_DatabaseList **p, int opt) { - 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)) return 1; @@ -516,10 +508,8 @@ int z_AttributeCombinations(ODR o, Z_AttributeCombinations **p, int opt) int z_AttributeCombination(ODR o, Z_AttributeCombination **p, int opt) { - 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_AttributeOccurrence, &(*p)->occurrences, &(*p)->num_occurrences)) return 1; @@ -529,10 +519,8 @@ int z_AttributeCombination(ODR o, Z_AttributeCombination **p, int opt) int z_AttributeValueList(ODR o, Z_AttributeValueList **p, int opt) { - 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_StringOrNumeric, &(*p)->attributes, &(*p)->num_attributes)) return 1; @@ -739,10 +727,8 @@ int z_PathUnit(ODR o, Z_PathUnit **p, int opt) int z_Path(ODR o, Z_Path **p, int opt) { - 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)) @@ -753,10 +739,8 @@ int z_Path(ODR o, Z_Path **p, int opt) int z_ElementInfoList(ODR o, Z_Path **p, int opt) { - 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)) @@ -776,11 +760,8 @@ int z_ElementDataType(ODR o, Z_ElementDataType **p, int opt) {-1, -1, -1, -1, 0} }; - 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_choice(o, arm, &(*p)->u, &(*p)->which)) return 1; *p = 0; @@ -1119,10 +1100,8 @@ int z_SortKeyDetailsSortType(ODR o, Z_SortKeyDetailsSortType **p, int opt) {-1, -1, -1, -1, 0} }; - 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_choice(o, arm, &(*p)->u, &(*p)->which)) return 1; *p = 0; @@ -1219,10 +1198,8 @@ int z_VariantValue(ODR o, Z_VariantValue **p, int opt) int z_ValueSetEnumerated(ODR o, Z_ValueSetEnumerated **p, int opt) { - 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_ValueDescription, &(*p)->enumerated, &(*p)->num_enumerated)) return 1; @@ -1240,10 +1217,8 @@ int z_ValueSet(ODR o, Z_ValueSet **p, int opt) {-1, -1, -1, -1, 0} }; - 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_choice(o, arm, &(*p)->u, &(*p)->which)) return 1; *p = 0; @@ -1273,10 +1248,8 @@ int z_ValueDescription(ODR o, Z_ValueDescription **p, int opt) {-1, -1, -1, -1, 0} }; - if (o->direction == ODR_DECODE) - *p = odr_malloc(o, sizeof(**p)); - else if (!*p) - return opt && odr_ok(o); + if (!odr_initmember(o, p, sizeof(**p))) + return opt && odr_ok(o); if (odr_choice(o, arm, &(*p)->u, &(*p)->which)) return 1; *p = 0; @@ -1387,10 +1360,8 @@ int z_ExplainRecord(ODR o, Z_ExplainRecord **p, int opt) {-1, -1, -1, -1, 0} }; - 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_choice(o, arm, &(*p)->u, &(*p)->which)) return 1; *p = 0;