* Sebastian Hammer, Adam Dickmeiss
*
* $Log: prt-exp.c,v $
- * Revision 1.4 1995-09-29 17:11:54 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
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;
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;
{-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;
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)
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);
}
{-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;
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;
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;
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;
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;
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,
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))
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))
{-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;
{-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;
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;
{-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;
{-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, -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;