Fixed Makefile(s).
[yaz-moved-to-github.git] / asn / prt-exp.c
index f7bcb25..b11a9aa 100644 (file)
@@ -4,7 +4,16 @@
  * Sebastian Hammer, Adam Dickmeiss
  *
  * $Log: prt-exp.c,v $
- * Revision 1.5  1995-12-05 11:15:50  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
@@ -134,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;
@@ -170,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;
@@ -239,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;
@@ -289,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)
@@ -321,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);
 }
@@ -393,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;
@@ -440,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;
@@ -490,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;
@@ -516,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;
@@ -529,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;
@@ -739,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))
@@ -753,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))
@@ -776,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;
@@ -1119,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;
@@ -1219,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;
@@ -1240,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;
@@ -1273,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;
@@ -1387,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;