Changed code so that it compiles as C++.
[yaz-moved-to-github.git] / asn / prt-exp.c
index b11a9aa..b030e1f 100644 (file)
@@ -4,7 +4,10 @@
  * Sebastian Hammer, Adam Dickmeiss
  *
  * $Log: prt-exp.c,v $
- * Revision 1.8  1996-01-02 11:46:41  quinn
+ * 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
@@ -145,7 +148,7 @@ int z_HumanString(ODR o, Z_HumanString **p, int opt)
 {
     if (!odr_initmember(o, p, sizeof(**p)))
        return opt && odr_ok(o);
-    if (odr_sequence_of(o, z_HumanStringUnit, &(*p)->strings,
+    if (odr_sequence_of(o, (Odr_fun)z_HumanStringUnit, &(*p)->strings,
        &(*p)->num_strings))
        return 1;
     *p = 0;
@@ -179,7 +182,7 @@ int z_IconObject(ODR o, Z_IconObject **p, int opt)
 {
     if (!odr_initmember(o, p, sizeof(**p)))
        return opt && odr_ok(o);
-    if (odr_sequence_of(o, z_IconObjectUnit, &(*p)->iconUnits,
+    if (odr_sequence_of(o, (Odr_fun)z_IconObjectUnit, &(*p)->iconUnits,
        &(*p)->num_iconUnits))
        return 1;
     *p = 0;
@@ -236,11 +239,11 @@ int z_NetworkAddress(ODR o, Z_NetworkAddress **p, int opt)
     static Odr_arm arm[] =
     {
        {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_NetworkAddress_iA,
-           z_NetworkAddressIA},
+           (Odr_fun)z_NetworkAddressIA},
        {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_NetworkAddress_oPA,
-           z_NetworkAddressOPA},
+           (Odr_fun)z_NetworkAddressOPA},
        {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_NetworkAddress_other,
-           z_NetworkAddressOther},
+           (Odr_fun)z_NetworkAddressOther},
        {-1, -1, -1, -1, 0}
     };
 
@@ -258,34 +261,34 @@ int z_AccessInfo(ODR o, Z_AccessInfo **p, int opt)
         return opt && odr_ok(o);
     return
        odr_implicit_settag(o, ODR_CONTEXT, 0) &&
-       (odr_sequence_of(o, z_QueryTypeDetails, &(*p)->queryTypesSupported,
+       (odr_sequence_of(o, (Odr_fun)z_QueryTypeDetails, &(*p)->queryTypesSupported,
            &(*p)->num_queryTypesSupported) || odr_ok(o)) &&
        odr_implicit_settag(o, ODR_CONTEXT, 1) &&
-       (odr_sequence_of(o, odr_oid, &(*p)->diagnosticsSets,
+       (odr_sequence_of(o, (Odr_fun)odr_oid, &(*p)->diagnosticsSets,
            &(*p)->num_diagnosticsSets) || odr_ok(o)) &&
        odr_implicit_settag(o, ODR_CONTEXT, 2) &&
-       (odr_sequence_of(o, odr_oid, &(*p)->attributeSetIds,
+       (odr_sequence_of(o, (Odr_fun)odr_oid, &(*p)->attributeSetIds,
            &(*p)->num_attributeSetIds) || odr_ok(o)) &&
        odr_implicit_settag(o, ODR_CONTEXT, 3) &&
-       (odr_sequence_of(o, odr_oid, &(*p)->schemas, &(*p)->num_schemas) ||
+       (odr_sequence_of(o, (Odr_fun)odr_oid, &(*p)->schemas, &(*p)->num_schemas) ||
            odr_ok(o)) &&
        odr_implicit_settag(o, ODR_CONTEXT, 4) &&
-       (odr_sequence_of(o, odr_oid, &(*p)->recordSyntaxes,
+       (odr_sequence_of(o, (Odr_fun)odr_oid, &(*p)->recordSyntaxes,
            &(*p)->num_recordSyntaxes) || odr_ok(o)) &&
        odr_implicit_settag(o, ODR_CONTEXT, 5) &&
-       (odr_sequence_of(o, odr_oid, &(*p)->resourceChallenges,
+       (odr_sequence_of(o, (Odr_fun)odr_oid, &(*p)->resourceChallenges,
            &(*p)->num_resourceChallenges) || odr_ok(o)) &&
         odr_implicit(o, z_AccessRestrictions, &(*p)->restrictedAccess,
            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,
+       (odr_sequence_of(o, (Odr_fun)odr_oid, &(*p)->variantSets,
            &(*p)->num_variantSets) || odr_ok(o)) &&
        odr_implicit_settag(o, ODR_CONTEXT, 10) &&
-       (odr_sequence_of(o, z_ElementSetName, &(*p)->elementSetNames,
+       (odr_sequence_of(o, (Odr_fun)z_ElementSetName, &(*p)->elementSetNames,
            &(*p)->num_elementSetNames) || odr_ok(o)) &&
        odr_implicit_settag(o, ODR_CONTEXT, 11) &&
-       (odr_sequence_of(o, z_InternationalString, &(*p)->unitSystems,
+       (odr_sequence_of(o, (Odr_fun)z_InternationalString, &(*p)->unitSystems,
            &(*p)->num_unitSystems) || odr_ok(o)) &&
        odr_sequence_end(o);
 }
@@ -295,17 +298,17 @@ 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_fun)z_PrivateCapabilities},
        {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_QueryTypeDetails_rpn,
-           z_RpnCapabilities},
+           (Odr_fun)z_RpnCapabilities},
        {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_QueryTypeDetails_iso8777,
-           z_Iso8777Capabilities},
+           (Odr_fun)z_Iso8777Capabilities},
        {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_QueryTypeDetails_z3958,
-           z_HumanString},
+           (Odr_fun)z_HumanString},
        {ODR_IMPLICIT, ODR_CONTEXT, 4, Z_QueryTypeDetails_erpn,
-           z_RpnCapabilities},
+           (Odr_fun)z_RpnCapabilities},
        {ODR_IMPLICIT, ODR_CONTEXT, 5, Z_QueryTypeDetails_rankedList,
-           z_HumanString},
+           (Odr_fun)z_HumanString},
        {-1, -1, -1, -1, 0}
     };
 
@@ -333,13 +336,13 @@ int z_PrivateCapabilities(ODR o, Z_PrivateCapabilities **p, int opt)
        return opt && odr_ok(o);
     return
        odr_implicit_settag(o, ODR_CONTEXT, 0) &&
-       (odr_sequence_of(o, z_PrivateCapOperator, &(*p)->operators,
+       (odr_sequence_of(o, (Odr_fun)z_PrivateCapOperator, &(*p)->operators,
            &(*p)->num_operators) || odr_ok(o)) &&
        odr_implicit_settag(o, ODR_CONTEXT, 1) &&
-       (odr_sequence_of(o, z_SearchKey, &(*p)->searchKeys,
+       (odr_sequence_of(o, (Odr_fun)z_SearchKey, &(*p)->searchKeys,
            &(*p)->num_searchKeys) || odr_ok(o)) &&
        odr_implicit_settag(o, ODR_CONTEXT, 2) &&
-       (odr_sequence_of(o, z_HumanString, &(*p)->description,
+       (odr_sequence_of(o, (Odr_fun)z_HumanString, &(*p)->description,
            &(*p)->num_description) || odr_ok(o)) &&
         odr_sequence_end(o);
 }
@@ -350,7 +353,7 @@ int z_RpnCapabilities(ODR o, Z_RpnCapabilities **p, int opt)
         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) || odr_ok(o)) &&
         odr_implicit(o, odr_bool, &(*p)->resultSetAsOperandSupported,
            ODR_CONTEXT, 1, 0) &&
         odr_implicit(o, odr_bool, &(*p)->restrictionOperandSupported,
@@ -366,7 +369,7 @@ int z_Iso8777Capabilities(ODR o, Z_Iso8777Capabilities **p, int opt)
         return opt && odr_ok(o);
     return
        odr_implicit_settag(o, ODR_CONTEXT, 0) &&
-       odr_sequence_of(o, z_SearchKey, &(*p)->searchKeys,
+       odr_sequence_of(o, (Odr_fun)z_SearchKey, &(*p)->searchKeys,
            &(*p)->num_searchKeys) &&
         odr_implicit(o, z_HumanString, &(*p)->restrictions, ODR_CONTEXT,
            1, 1) &&
@@ -388,9 +391,9 @@ int z_ProxSupportUnit(ODR o, Z_ProxSupportUnit **p, int opt)
     static Odr_arm arm[] =
     {
        {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_ProxSupportUnit_known,
-           odr_integer},
+           (Odr_fun)odr_integer},
        {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_ProxSupportUnit_private,
-           z_ProxSupportPrivate},
+           (Odr_fun)z_ProxSupportPrivate},
        {-1, -1, -1, -1, 0}
     };
 
@@ -409,7 +412,7 @@ int z_ProximitySupport(ODR o, Z_ProximitySupport **p, int opt)
     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,
+       (odr_sequence_of(o, (Odr_fun)z_ProxSupportUnit, &(*p)->unitsSupported,
            &(*p)->num_unitsSupported) || odr_ok(o)) &&
         odr_sequence_end(o);
 }
@@ -432,7 +435,7 @@ int z_AccessRestrictionsUnit(ODR o, Z_AccessRestrictionsUnit **p, int opt)
         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,
+       (odr_sequence_of(o, (Odr_fun)odr_oid, &(*p)->accessChallenges,
            &(*p)->num_accessChallenges) || odr_ok(o)) &&
         odr_sequence_end(o);
 }
@@ -441,7 +444,7 @@ int z_AccessRestrictions(ODR o, Z_AccessRestrictions **p, int opt)
 {
     if (!odr_initmember(o, p, sizeof(**p)))
        return opt && odr_ok(o);
-    if (odr_sequence_of(o, z_AccessRestrictionsUnit, &(*p)->restrictions,
+    if (odr_sequence_of(o, (Odr_fun)z_AccessRestrictionsUnit, &(*p)->restrictions,
        &(*p)->num_restrictions))
        return 1;
     *p = 0;
@@ -469,7 +472,7 @@ 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,
+       (odr_sequence_of(o, (Odr_fun)z_CostsOtherCharge, &(*p)->otherCharges,
            &(*p)->num_otherCharges) || odr_ok(o)) &&
         odr_sequence_end(o);
 }
@@ -504,7 +507,7 @@ int z_AttributeCombinations(ODR o, Z_AttributeCombinations **p, int opt)
         odr_implicit(o, odr_oid, &(*p)->defaultAttributeSet,
            ODR_CONTEXT, 0, 0) &&
        odr_implicit_settag(o, ODR_CONTEXT, 1) &&
-       odr_sequence_of(o, z_AttributeCombination, &(*p)->legalCombinations,
+       odr_sequence_of(o, (Odr_fun)z_AttributeCombination, &(*p)->legalCombinations,
            &(*p)->num_legalCombinations) &&
         odr_sequence_end(o);
 }
@@ -513,7 +516,7 @@ int z_AttributeCombination(ODR o, Z_AttributeCombination **p, int opt)
 {
     if (!odr_initmember(o, p, sizeof(**p)))
        return opt && odr_ok(o);
-    if (odr_sequence_of(o, z_AttributeOccurrence, &(*p)->occurrences,
+    if (odr_sequence_of(o, (Odr_fun)z_AttributeOccurrence, &(*p)->occurrences,
        &(*p)->num_occurrences))
        return 1;
     *p = 0;
@@ -524,7 +527,7 @@ int z_AttributeValueList(ODR o, Z_AttributeValueList **p, int opt)
 {
     if (!odr_initmember(o, p, sizeof(**p)))
        return opt && odr_ok(o);
-    if (odr_sequence_of(o, z_StringOrNumeric, &(*p)->attributes,
+    if (odr_sequence_of(o, (Odr_fun)z_StringOrNumeric, &(*p)->attributes,
        &(*p)->num_attributes))
        return 1;
     *p = 0;
@@ -535,9 +538,9 @@ int z_AttributeOccurrence(ODR o, Z_AttributeOccurrence **p, int opt)
 {
     static Odr_arm arm[] =
     {
-       {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_AttributeOcc_anyOrNone, odr_null},
+       {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_AttributeOcc_anyOrNone, (Odr_fun)odr_null},
        {ODR_IMPLICIT, ODR_CONTEXT, 4, Z_AttributeOcc_specific,
-           z_AttributeValueList},
+           (Odr_fun)z_AttributeValueList},
        {-1, -1, -1, -1, 0}
     };
 
@@ -559,10 +562,10 @@ int z_AttributeValue(ODR o, Z_AttributeValue **p, int opt)
         odr_explicit(o, z_StringOrNumeric, &(*p)->value, ODR_CONTEXT, 0, 0) &&
         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,
+       (odr_sequence_of(o, (Odr_fun)z_StringOrNumeric, &(*p)->subAttributes,
            &(*p)->num_subAttributes) || odr_ok(o)) &&
        odr_implicit_settag(o, ODR_CONTEXT, 3) &&
-       (odr_sequence_of(o, z_StringOrNumeric, &(*p)->superAttributes,
+       (odr_sequence_of(o, (Odr_fun)z_StringOrNumeric, &(*p)->superAttributes,
            &(*p)->num_superAttributes) || odr_ok(o)) &&
         odr_implicit(o, odr_null, &(*p)->partialSupport, ODR_CONTEXT, 4, 1) &&
        odr_sequence_end(o);
@@ -600,10 +603,10 @@ int z_TargetInfo(ODR o, Z_TargetInfo **p, int opt)
            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,
+       (odr_sequence_of(o, (Odr_fun)z_DatabaseList, &(*p)->dbCombinations,
            &(*p)->num_dbCombinations) || odr_ok(o)) &&
        odr_implicit_settag(o, ODR_CONTEXT, 18) &&
-       (odr_sequence_of(o, z_NetworkAddress, &(*p)->addresses,
+       (odr_sequence_of(o, (Odr_fun)z_NetworkAddress, &(*p)->addresses,
            &(*p)->num_addresses) || odr_ok(o)) &&
         odr_implicit(o, z_AccessInfo, &(*p)->commonAccessInfo, ODR_CONTEXT,
            19, 1) &&
@@ -615,9 +618,9 @@ int z_DatabaseInfo(ODR o, Z_DatabaseInfo **p, int opt)
     static Odr_arm arm[] =
     {
        {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_Exp_RecordCount_actualNumber,
-           odr_integer},
+           (Odr_fun)odr_integer},
        {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_Exp_RecordCount_approxNumber,
-           odr_integer},
+           (Odr_fun)odr_integer},
        {-1, -1, -1, -1, 0}
     };
 
@@ -635,7 +638,7 @@ int z_DatabaseInfo(ODR o, Z_DatabaseInfo **p, int opt)
         odr_implicit(o, odr_bool, &(*p)->available, ODR_CONTEXT, 6, 0) &&
         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,
+       (odr_sequence_of(o, (Odr_fun)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,
@@ -695,10 +698,10 @@ int z_SchemaInfo(ODR o, Z_SchemaInfo **p, int opt)
            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_TagTypeMapping, &(*p)->tagTypeMapping,
+       (odr_sequence_of(o, (Odr_fun)z_TagTypeMapping, &(*p)->tagTypeMapping,
            &(*p)->num_tagTypeMapping) || odr_ok(o)) &&
        odr_implicit_settag(o, ODR_CONTEXT, 5) &&
-       (odr_sequence_of(o, z_ElementInfo, &(*p)->recordStructure,
+       (odr_sequence_of(o, (Odr_fun)z_ElementInfo, &(*p)->recordStructure,
            &(*p)->num_recordStructure) || odr_ok(o)) &&
         odr_sequence_end(o);
 }
@@ -733,7 +736,7 @@ int z_Path(ODR o, Z_Path **p, int 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,
+    if (odr_sequence_of(o, (Odr_fun)z_OtherInformationUnit, &(*p)->list,
        &(*p)->num))
        return 1;
     *p = 0;
@@ -745,7 +748,7 @@ int z_ElementInfoList(ODR o, Z_Path **p, int 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,
+    if (odr_sequence_of(o, (Odr_fun)z_OtherInformationUnit, &(*p)->list,
        &(*p)->num))
        return 1;
     *p = 0;
@@ -757,9 +760,9 @@ int z_ElementDataType(ODR o, Z_ElementDataType **p, int opt)
     static Odr_arm arm[] =
     {
        {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_ElementDataType_primitive,
-           odr_integer},
+           (Odr_fun)odr_integer},
        {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_ElementDataType_structured,
-           z_ElementInfoList},
+           (Odr_fun)z_ElementInfoList},
        {-1, -1, -1, -1, 0}
     };
 
@@ -802,7 +805,7 @@ int z_TagSetInfo(ODR o, Z_TagSetInfo **p, int opt)
         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,
+       (odr_sequence_of(o, (Odr_fun)z_TagSetInfoElements, &(*p)->elements,
            &(*p)->num_elements) || odr_ok(o)) &&
         odr_sequence_end(o);
 }
@@ -817,13 +820,13 @@ int z_RecordSyntaxInfo(ODR o, Z_RecordSyntaxInfo **p, int opt)
         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,
+       (odr_sequence_of(o, (Odr_fun)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_implicit_settag(o, ODR_CONTEXT, 6) &&
-       (odr_sequence_of(o, z_ElementInfo, &(*p)->abstractStructure,
+       (odr_sequence_of(o, (Odr_fun)z_ElementInfo, &(*p)->abstractStructure,
            &(*p)->num_abstractStructure) || odr_ok(o)) &&
         odr_sequence_end(o);
 }
@@ -837,7 +840,7 @@ int z_AttributeSetInfo(ODR o, Z_AttributeSetInfo **p, int opt)
         odr_implicit(o, odr_oid, &(*p)->attributeSet, ODR_CONTEXT, 1, 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,
+       (odr_sequence_of(o, (Odr_fun)z_AttributeType, &(*p)->attributes,
            &(*p)->num_attributes) || odr_ok(o)) &&
         odr_implicit(o, z_HumanString, &(*p)->description, ODR_CONTEXT, 4, 1) &&
         odr_sequence_end(o);
@@ -852,7 +855,7 @@ int z_AttributeType(ODR o, Z_AttributeType **p, int opt)
         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,
+       odr_sequence_of(o, (Odr_fun)z_AttributeDescription, &(*p)->attributeValues,
            &(*p)->num_attributeValues) &&
         odr_sequence_end(o);
 }
@@ -866,7 +869,7 @@ int z_AttributeDescription(ODR o, Z_AttributeDescription **p, int opt)
         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,
+       (odr_sequence_of(o, (Odr_fun)z_StringOrNumeric, &(*p)->equivalentAttributes,
            &(*p)->num_equivalentAttributes) || odr_ok(o)) &&
         odr_sequence_end(o);
 }
@@ -898,7 +901,7 @@ int z_TermListInfo(ODR o, Z_TermListInfo **p, int opt)
         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,
+       (odr_sequence_of(o, (Odr_fun)z_TermListElement, &(*p)->termLists,
            &(*p)->num_termLists) || odr_ok(o)) &&
         odr_sequence_end(o);
 }
@@ -931,7 +934,7 @@ int z_AttributeDetails(ODR o, Z_AttributeDetails **p, int opt)
         odr_implicit(o, z_CommonInfo, &(*p)->commonInfo, ODR_CONTEXT, 0, 1) &&
         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,
+       (odr_sequence_of(o, (Odr_fun)z_AttributeSetDetails, &(*p)->attributesBySet,
            &(*p)->num_attributesBySet) && odr_ok(o)) &&
         odr_implicit(o, z_AttributeCombinations, &(*p)->attributeCombinations, ODR_CONTEXT, 3, 1) &&
         odr_sequence_end(o);
@@ -945,7 +948,7 @@ int z_AttributeSetDetails(ODR o, Z_AttributeSetDetails **p, int opt)
         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,
+       odr_sequence_of(o, (Odr_fun)z_AttributeTypeDetails, &(*p)->attributesByType,
            &(*p)->num_attributesByType) &&
         odr_sequence_end(o);
 }
@@ -958,7 +961,7 @@ int z_AttributeTypeDetails(ODR o, Z_AttributeTypeDetails **p, int opt)
         odr_implicit(o, odr_integer, &(*p)->attributeType, ODR_CONTEXT, 0, 0) &&
         odr_implicit(o, z_OmittedAttributeInterpretation, &(*p)->optionalType, ODR_CONTEXT, 1, 1) &&
        odr_implicit_settag(o, ODR_CONTEXT, 2) &&
-       (odr_sequence_of(o, z_AttributeValue, &(*p)->attributeValues,
+       (odr_sequence_of(o, (Odr_fun)z_AttributeValue, &(*p)->attributeValues,
            &(*p)->num_attributeValues) || odr_ok(o)) &&
         odr_sequence_end(o);
 }
@@ -996,7 +999,7 @@ int z_TermListDetails(ODR o, Z_TermListDetails **p, int opt)
        odr_implicit(o, z_EScanInfo, &(*p)->scanInfo, ODR_CONTEXT, 4, 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,
+       (odr_sequence_of(o, (Odr_fun)z_Term, &(*p)->sampleTerms,
            &(*p)->num_sampleTerms) || odr_ok(o)) &&
         odr_sequence_end(o);
 }
@@ -1013,7 +1016,7 @@ int z_ElementSetDetails(ODR o, Z_ElementSetDetails **p, int opt)
         odr_implicit(o, odr_oid, &(*p)->schema, ODR_CONTEXT, 4, 0) &&
         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) || odr_ok(o)) &&
         odr_sequence_end(o);
 }
 
@@ -1028,7 +1031,7 @@ int z_RetrievalRecordDetails(ODR o, Z_RetrievalRecordDetails **p, int opt)
         odr_implicit(o, odr_oid, &(*p)->recordSyntax, ODR_CONTEXT, 3, 0) &&
         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,
+       (odr_sequence_of(o, (Odr_fun)z_PerElementDetails, &(*p)->detailsPerElement,
            &(*p)->num_detailsPerElement) || odr_ok(o)) &&
         odr_sequence_end(o);
 }
@@ -1041,7 +1044,7 @@ int z_PerElementDetails(ODR o, Z_PerElementDetails **p, int opt)
         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_sequence_of(o, (Odr_fun)z_Path, &(*p)->schemaTags, &(*p)->num_schemaTags) ||
        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) &&
@@ -1085,7 +1088,7 @@ int z_SortDetails(ODR o, Z_SortDetails **p, int opt)
         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,
+       (odr_sequence_of(o, (Odr_fun)z_SortKeyDetails, &(*p)->sortKeys,
            &(*p)->num_sortKeys) || odr_ok(o)) &&
         odr_sequence_end(o);
 }
@@ -1095,11 +1098,11 @@ int z_SortKeyDetailsSortType(ODR o, Z_SortKeyDetailsSortType **p, int opt)
     static Odr_arm arm[] =
     {
        {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_SortKeyDetailsSortType_character,
-           odr_null},
+           (Odr_fun)odr_null},
        {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_SortKeyDetailsSortType_numeric,
-           odr_null},
+           (Odr_fun)odr_null},
        {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_SortKeyDetailsSortType_structured,
-           z_HumanString},
+           (Odr_fun)z_HumanString},
        {-1, -1, -1, -1, 0}
     };
 
@@ -1118,7 +1121,7 @@ int z_SortKeyDetails(ODR o, Z_SortKeyDetails **p, int opt)
     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,
+       (odr_sequence_of(o, (Odr_fun)z_Specification, &(*p)->elementSpecifications,
            &(*p)->num_elementSpecifications) || odr_ok(o)) &&
         odr_implicit(o, z_AttributeCombinations, &(*p)->attributeSpecifications,
            ODR_CONTEXT, 2, 1) &&
@@ -1157,7 +1160,7 @@ int z_VariantSetInfo(ODR o, Z_VariantSetInfo **p, int opt)
         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,
+       (odr_sequence_of(o, (Odr_fun)z_VariantClass, &(*p)->variants,
            &(*p)->num_variants) || odr_ok(o)) &&
         odr_sequence_end(o);
 }
@@ -1172,7 +1175,7 @@ int z_VariantClass(ODR o, Z_VariantClass **p, int opt)
         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,
+       odr_sequence_of(o, (Odr_fun)z_VariantType, &(*p)->variantTypes,
            &(*p)->num_variantTypes) &&
         odr_sequence_end(o);
 }
@@ -1203,7 +1206,7 @@ int z_ValueSetEnumerated(ODR o, Z_ValueSetEnumerated **p, int opt)
 {
     if (!odr_initmember(o, p, sizeof(**p)))
        return opt && odr_ok(o);
-    if (odr_sequence_of(o, z_ValueDescription, &(*p)->enumerated,
+    if (odr_sequence_of(o, (Odr_fun)z_ValueDescription, &(*p)->enumerated,
        &(*p)->num_enumerated))
        return 1;
     *p = 0;
@@ -1214,9 +1217,9 @@ int z_ValueSet(ODR o, Z_ValueSet **p, int opt)
 {
     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},
        {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_ValueSet_enumerated,
-           z_ValueSetEnumerated},
+           (Odr_fun)z_ValueSetEnumerated},
        {-1, -1, -1, -1, 0}
     };
 
@@ -1242,12 +1245,12 @@ int z_ValueDescription(ODR o, Z_ValueDescription **p, int opt)
 {
     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},
+       {ODR_NONE, -1, -1, Z_ValueDescription_integer, (Odr_fun)odr_integer},
+       {ODR_NONE, -1, -1, Z_ValueDescription_string, (Odr_fun)z_InternationalString},
+       {ODR_NONE, -1, -1, Z_ValueDescription_octets, (Odr_fun)odr_octetstring},
+       {ODR_NONE, -1, -1, Z_ValueDescription_oid, (Odr_fun)odr_oid},
+       {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_ValueDescription_unit, (Odr_fun)z_Unit},
+       {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_ValueDescription_valueAndUnit, (Odr_fun)z_IntUnit},
        {-1, -1, -1, -1, 0}
     };
 
@@ -1269,7 +1272,7 @@ int z_UnitInfo(ODR o, Z_UnitInfo **p, int opt)
            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_sequence_of(o,  (Odr_fun)z_UnitType, &(*p)->units, &(*p)->num_units) ||
        odr_ok(o)) &&
         odr_sequence_end(o);
 }
@@ -1285,7 +1288,7 @@ int z_UnitType(ODR o, Z_UnitType **p, int opt)
         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) &&
         odr_sequence_end(o);
 }
 
@@ -1307,7 +1310,7 @@ int z_CategoryList(ODR o, Z_CategoryList **p, int opt)
     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,
+       odr_sequence_of(o, (Odr_fun)z_CategoryInfo, &(*p)->categories,
            &(*p)->num_categories) &&
         odr_sequence_end(o);
 }
@@ -1331,35 +1334,35 @@ int z_ExplainRecord(ODR o, Z_ExplainRecord **p, int opt)
 {
     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},
+       {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_Explain_databaseInfo, (Odr_fun)z_DatabaseInfo},
+       {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_Explain_schemaInfo, (Odr_fun)z_SchemaInfo},
+       {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_Explain_tagSetInfo, (Odr_fun)z_TagSetInfo},
        {ODR_IMPLICIT, ODR_CONTEXT, 4, Z_Explain_recordSyntaxInfo,
-           z_RecordSyntaxInfo},
+           (Odr_fun)z_RecordSyntaxInfo},
        {ODR_IMPLICIT, ODR_CONTEXT, 5, Z_Explain_attributeSetInfo,
-           z_AttributeSetInfo},
+           (Odr_fun)z_AttributeSetInfo},
        {ODR_IMPLICIT, ODR_CONTEXT, 6, Z_Explain_termListInfo,
-           z_TermListInfo},
+           (Odr_fun)z_TermListInfo},
        {ODR_IMPLICIT, ODR_CONTEXT, 7, Z_Explain_extendedServicesInfo,
-           z_ExtendedServicesInfo},
+           (Odr_fun)z_ExtendedServicesInfo},
        {ODR_IMPLICIT, ODR_CONTEXT, 8, Z_Explain_attributeDetails,
-           z_AttributeDetails},
+           (Odr_fun)z_AttributeDetails},
        {ODR_IMPLICIT, ODR_CONTEXT, 9, Z_Explain_termListDetails,
-           z_TermListDetails},
+           (Odr_fun)z_TermListDetails},
        {ODR_IMPLICIT, ODR_CONTEXT, 10, Z_Explain_elementSetDetails,
-           z_ElementSetDetails},
+           (Odr_fun)z_ElementSetDetails},
        {ODR_IMPLICIT, ODR_CONTEXT, 11, Z_Explain_retrievalRecordDetails,
-           z_RetrievalRecordDetails},
+           (Odr_fun)z_RetrievalRecordDetails},
        {ODR_IMPLICIT, ODR_CONTEXT, 12, Z_Explain_sortDetails,
-           z_SortDetails},
+           (Odr_fun)z_SortDetails},
        {ODR_IMPLICIT, ODR_CONTEXT, 13, Z_Explain_processing,
-           z_ProcessingInformation},
+           (Odr_fun)z_ProcessingInformation},
        {ODR_IMPLICIT, ODR_CONTEXT, 14, Z_Explain_variants,
-           z_VariantSetInfo},
-       {ODR_IMPLICIT, ODR_CONTEXT, 15, Z_Explain_units, z_UnitInfo},
+           (Odr_fun)z_VariantSetInfo},
+       {ODR_IMPLICIT, ODR_CONTEXT, 15, Z_Explain_units, (Odr_fun)z_UnitInfo},
        {ODR_IMPLICIT, ODR_CONTEXT, 100, Z_Explain_categoryList,
-           z_CategoryList},
+           (Odr_fun)z_CategoryList},
        {-1, -1, -1, -1, 0}
     };