+static Z_ProximityOperator *rpn_proximity (struct lex_info *li, ODR o)
+{
+ Z_ProximityOperator *p = (Z_ProximityOperator *)odr_malloc (o, sizeof(*p));
+
+ if (!lex (li))
+ return NULL;
+ if (*li->lex_buf == '1')
+ {
+ p->exclusion = (int *)odr_malloc (o, sizeof(*p->exclusion));
+ *p->exclusion = 1;
+ }
+ else if (*li->lex_buf == '0')
+ {
+ p->exclusion = (int *)odr_malloc (o, sizeof(*p->exclusion));
+ *p->exclusion = 0;
+ }
+ else
+ p->exclusion = NULL;
+
+ if (!lex (li))
+ return NULL;
+ p->distance = (int *)odr_malloc (o, sizeof(*p->distance));
+ *p->distance = atoi (li->lex_buf);
+
+ if (!lex (li))
+ return NULL;
+ p->ordered = (int *)odr_malloc (o, sizeof(*p->ordered));
+ *p->ordered = atoi (li->lex_buf);
+
+ if (!lex (li))
+ return NULL;
+ p->relationType = (int *)odr_malloc (o, sizeof(*p->relationType));
+ *p->relationType = atoi (li->lex_buf);
+
+ if (!lex (li))
+ return NULL;
+ if (*li->lex_buf == 'k')
+ p->which = 0;
+ else if (*li->lex_buf == 'p')
+ p->which = 1;
+ else
+ p->which = atoi (li->lex_buf);
+
+ if (!lex (li))
+ return NULL;
+#ifdef ASN_COMPILED
+ p->which = Z_ProximityOperator_known;
+ p->u.known = (int *)odr_malloc (o, sizeof(*p->u.known));
+ *p->u.known = atoi (li->lex_buf);
+#else
+ p->proximityUnitCode = (int *)odr_malloc (o, sizeof(*p->proximityUnitCode));
+ *p->proximityUnitCode = atoi (li->lex_buf);
+#endif
+ return p;
+}
+
+static Z_Complex *rpn_complex (struct lex_info *li, ODR o, oid_proto proto,