- odr_sequence_of(o, z_Estimate1, &(*p)->estimates,
- &(*p)->num_estimates) &&
- odr_implicit(o, odr_visiblestring, &(*p)->message, ODR_CONTEXT, 2, 0) &&
+ odr_sequence_of(o, (Odr_fun)z_Estimate1, &(*p)->estimates,
+ &(*p)->num_estimates, 0) &&
+ odr_implicit(o, odr_visiblestring, &(*p)->message,
+ ODR_CONTEXT, 2, 0) &&
+ odr_sequence_end(o);
+}
+
+/* -------------------- Resource 2 ------------------------- */
+
+/* int z_StringOrNumeric(ODR, Z_StringOrNumeric **, int); */
+/* int z_IntUnit(ODR, Z_IntUnit **, int); */
+
+int z_Estimate2(ODR o, Z_Estimate2 **p, int opt, const char *name)
+{
+ if (!odr_sequence_begin(o, p, sizeof(**p), 0))
+ return opt && odr_ok(o);
+ return
+ odr_explicit(o, z_StringOrNumeric, &(*p)->type, ODR_CONTEXT, 1, 0) &&
+ odr_implicit(o, z_IntUnit, &(*p)->value, ODR_CONTEXT, 2, 0) &&
+ odr_sequence_end(o);
+}
+
+int z_ResourceReport2(ODR o, Z_ResourceReport2 **p, int opt, const char *name)
+{
+ if (!odr_sequence_begin(o, p, sizeof(**p), 0))
+ return opt && odr_ok(o);
+ return
+ odr_implicit_settag(o, ODR_CONTEXT, 1) &&
+ (odr_sequence_of(o, (Odr_fun)z_Estimate2, &(*p)->estimates,
+ &(*p)->num_estimates, 0) || odr_ok(o)) &&
+ odr_implicit(o, odr_visiblestring, &(*p)->message,
+ ODR_CONTEXT, 2, 1) &&