X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=asn%2Fprt-exp.c;h=b11a9aa612d8fe4b121d9ed2c25aec10fdb7ed89;hb=d77bb491a62b7cb0f444bc88467c69c0b090e43a;hp=2904d45e14850915387787744a09352b1fbde679;hpb=6123c0dac006084449fb80900c5764417a6bd706;p=yaz-moved-to-github.git diff --git a/asn/prt-exp.c b/asn/prt-exp.c index 2904d45..b11a9aa 100644 --- a/asn/prt-exp.c +++ b/asn/prt-exp.c @@ -4,14 +4,34 @@ * Sebastian Hammer, Adam Dickmeiss * * $Log: prt-exp.c,v $ - * Revision 1.1 1995-08-10 08:54:02 quinn + * 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 * Added Explain * * */ #include -#include int z_LanguageCode(ODR o, char **p, int opt); int z_CommonInfo(ODR o, Z_CommonInfo **p, int opt); @@ -123,10 +143,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; @@ -159,10 +177,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; @@ -228,10 +244,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; @@ -278,31 +292,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) @@ -310,7 +322,7 @@ int z_PrivateCapOperator(ODR o, Z_PrivateCapOperator **p, int opt) if (!odr_sequence_begin(o, p, sizeof(**p))) return opt && odr_ok(o); return - odr_implicit(o, z_InternationalString, &(*p)->operator, ODR_CONTEXT, 0, 0) && + 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); } @@ -382,10 +394,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; @@ -429,10 +439,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; @@ -479,10 +487,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; @@ -505,10 +511,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; @@ -518,10 +522,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; @@ -642,7 +644,7 @@ int z_DatabaseInfo(ODR o, Z_DatabaseInfo **p, int opt) 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_constructed_begin(o, &(*p)->recordCount, 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, @@ -728,10 +730,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)) @@ -742,10 +742,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)) @@ -765,11 +763,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; @@ -923,7 +918,7 @@ int z_ExtendedServicesInfo(ODR o, Z_ExtendedServicesInfo **p, int opt) 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, odr_external, &(*p)->specificExplain, ODR_CONTEXT, 11, 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); } @@ -1108,10 +1103,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; @@ -1150,7 +1143,7 @@ int z_ProcessingInformation(ODR o, Z_ProcessingInformation **p, int opt) 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, odr_external, &(*p)->instructions, ODR_CONTEXT, 6, 1) && + odr_implicit(o, z_External, &(*p)->instructions, ODR_CONTEXT, 6, 1) && odr_sequence_end(o); } @@ -1208,10 +1201,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; @@ -1229,10 +1220,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; @@ -1262,10 +1251,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; @@ -1376,10 +1363,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;