+static Z_ProximityOperator *rpn_proximity (struct lex_info *li, ODR o)
+{
+ Z_ProximityOperator *p = odr_malloc (o, sizeof(*p));
+
+ if (!lex (li))
+ return NULL;
+ if (*li->lex_buf == '1')
+ {
+ p->exclusion = odr_malloc (o, sizeof(*p->exclusion));
+ *p->exclusion = 1;
+ }
+ else if (*li->lex_buf == '0')
+ {
+ p->exclusion = odr_malloc (o, sizeof(*p->exclusion));
+ *p->exclusion = 0;
+ }
+ else
+ p->exclusion = NULL;
+
+ if (!lex (li))
+ return NULL;
+ p->distance = odr_malloc (o, sizeof(*p->distance));
+ *p->distance = atoi (li->lex_buf);
+
+ if (!lex (li))
+ return NULL;
+ p->ordered = odr_malloc (o, sizeof(*p->ordered));
+ *p->ordered = atoi (li->lex_buf);
+
+ if (!lex (li))
+ return NULL;
+ p->relationType = 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;
+ p->proximityUnitCode = odr_malloc (o, sizeof(*p->proximityUnitCode));
+ *p->proximityUnitCode = atoi (li->lex_buf);
+
+ return p;
+}
+
+static Z_Complex *rpn_complex (struct lex_info *li, ODR o, oid_proto proto,
+ int num_attr, int max_attr,
+ int *attr_list, oid_value *attr_set)