/*
- * Copyright (c) 1995, Index Data.
+ * Copyright (c) 1995-1998, Index Data.
* See the file LICENSE for details.
* Sebastian Hammer, Adam Dickmeiss
*
* $Log: prt-exp.c,v $
- * Revision 1.4 1995-09-29 17:11:54 quinn
+ * 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
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_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_sequence_of(o, z_HumanStringUnit, &(*p)->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))
return 1;
*p = 0;
{
static Odr_arm arm[] =
{
- {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_IconObject_ianaType,
+ {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_IconObjectUnit_ianaType,
z_InternationalString},
- {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_IconObject_z3950type,
+ {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_IconObjectUnit_z3950type,
z_InternationalString},
- {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_IconObject_otherType,
+ {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_IconObjectUnit_otherType,
z_InternationalString},
{-1, -1, -1, -1, 0}
};
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_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))
return 1;
*p = 0;
return opt && odr_ok(o);
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}
};
- 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;
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);
}
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}
- };
+ static Odr_arm arm[] =
+ {
+ {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_QueryTypeDetails_private,
+ (Odr_fun)z_PrivateCapabilities},
+ {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_QueryTypeDetails_rpn,
+ (Odr_fun)z_RpnCapabilities},
+ {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_QueryTypeDetails_iso8777,
+ (Odr_fun)z_Iso8777Capabilities},
+ {ODR_IMPLICIT, ODR_CONTEXT, 3, Z_QueryTypeDetails_z39_58,
+ (Odr_fun)z_HumanString},
+ {ODR_IMPLICIT, ODR_CONTEXT, 4, Z_QueryTypeDetails_erpn,
+ (Odr_fun)z_RpnCapabilities},
+ {ODR_IMPLICIT, ODR_CONTEXT, 5, Z_QueryTypeDetails_rankedList,
+ (Odr_fun)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);
+ 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)
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);
}
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);
}
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,
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) &&
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}
};
- 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;
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);
}
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);
}
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_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))
return 1;
*p = 0;
return opt && odr_ok(o);
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);
}
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;
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);
}
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_sequence_of(o, z_AttributeOccurrence, &(*p)->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))
return 1;
*p = 0;
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_sequence_of(o, z_StringOrNumeric, &(*p)->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))
return 1;
*p = 0;
{
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},
{ODR_IMPLICIT, ODR_CONTEXT, 4, Z_AttributeOcc_specific,
- z_AttributeValueList},
+ (Odr_fun)z_AttributeValueList},
{-1, -1, -1, -1, 0}
};
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);
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_sequence_of(o, (Odr_fun)z_InternationalString, &(*p)->languages,
+ &(*p)->num_languages) || odr_ok(o)) &&
odr_implicit(o, z_AccessInfo, &(*p)->commonAccessInfo, ODR_CONTEXT,
19, 1) &&
odr_sequence_end(o);
{
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},
+ {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_DatabaseInfo_actualNumber,
+ (Odr_fun)odr_integer},
+ {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_DatabaseInfo_approxNumber,
+ (Odr_fun)odr_integer},
{-1, -1, -1, -1, 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_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,
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_begin(o, &(*p)->u.actualNumber, ODR_CONTEXT, 14) &&
+ odr_choice(o, arm, &(*p)->u.actualNumber, &(*p)->which) &&
odr_constructed_end(o)) || odr_ok(o)) &&
odr_implicit(o, z_HumanString, &(*p)->defaultOrder, ODR_CONTEXT,
15, 1) &&
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);
}
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,
+ if (odr_sequence_of(o, (Odr_fun)z_OtherInformationUnit, &(*p)->list,
&(*p)->num))
return 1;
*p = 0;
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,
+ if (odr_sequence_of(o, (Odr_fun)z_OtherInformationUnit, &(*p)->list,
&(*p)->num))
return 1;
*p = 0;
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}
};
- 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;
if (!odr_sequence_begin(o, p, sizeof(**p)))
return opt;
return
- odr_implicit(o, z_InternationalString, &(*p)->elementName,
+ 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,
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);
}
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);
}
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);
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);
}
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);
}
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);
}
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);
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);
}
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, z_OmittedAttributeInterpretation, &(*p)->defaultIfOmitted,
+ 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);
}
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);
}
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);
}
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);
}
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) &&
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);
}
-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_IMPLICIT, ODR_CONTEXT, 0, Z_SortKeyDetailsSortType_numeric,
- odr_null},
- {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_SortKeyDetailsSortType_structured,
- 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_SortKeyDetails(ODR o, Z_SortKeyDetails **p, int opt)
+int z_SortKeyDetails (ODR o, Z_SortKeyDetails **p, int opt)
{
- if (!odr_sequence_begin(o, p, sizeof(**p)))
- 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);
+ static Odr_arm arm[] = {
+ {ODR_IMPLICIT, ODR_CONTEXT, 0, Z_SortKeyDetails_character,
+ (Odr_fun) odr_null},
+ {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_SortKeyDetails_numeric,
+ (Odr_fun) odr_null},
+ {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_SortKeyDetails_structured,
+ (Odr_fun) z_HumanString},
+ {-1, -1, -1, -1, (Odr_fun) 0}
+ };
+ if (!odr_sequence_begin (o, p, sizeof(**p)))
+ 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, (Odr_fun) z_Specification, &(*p)->elementSpecifications,
+ &(*p)->num_elementSpecifications) || odr_ok(o)) &&
+ odr_implicit (o, z_AttributeCombinations,
+ &(*p)->attributeSpecifications, ODR_CONTEXT, 2, 1) &&
+ ((odr_constructed_begin (o, &(*p)->u, ODR_CONTEXT, 3) &&
+ odr_choice (o, arm, &(*p)->u, &(*p)->which) &&
+ 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)
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);
}
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);
}
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_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))
return 1;
*p = 0;
return opt && odr_ok(o);
{
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}
};
- 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;
{
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}
};
- 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;
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);
}
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);
}
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);
}
{
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}
};
- 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;