+static Z_ProximityOperator *rpn_proximity (ODR o)
+{
+ Z_ProximityOperator *p = odr_malloc (o, sizeof(*p));
+
+ if (!lex ())
+ return NULL;
+ if (*query_lex_buf == '1')
+ {
+ p->exclusion = odr_malloc (o, sizeof(*p->exclusion));
+ *p->exclusion = 1;
+ }
+ else if (*query_lex_buf == '0')
+ {
+ p->exclusion = odr_malloc (o, sizeof(*p->exclusion));
+ *p->exclusion = 0;
+ }
+ else
+ p->exclusion = NULL;
+
+ if (!lex ())
+ return NULL;
+ p->distance = odr_malloc (o, sizeof(*p->distance));
+ *p->distance = atoi (query_lex_buf);
+
+ if (!lex ())
+ return NULL;
+ p->ordered = odr_malloc (o, sizeof(*p->ordered));
+ *p->ordered = atoi (query_lex_buf);
+
+ if (!lex ())
+ return NULL;
+ p->relationType = odr_malloc (o, sizeof(*p->relationType));
+ *p->relationType = atoi (query_lex_buf);
+
+ if (!lex ())
+ return NULL;
+ if (*query_lex_buf == 'k')
+ p->which = 0;
+ else if (*query_lex_buf == 'p')
+ p->which = 1;
+ else
+ p->which = atoi (query_lex_buf);
+
+ if (!lex ())
+ return NULL;
+ p->proximityUnitCode = odr_malloc (o, sizeof(*p->proximityUnitCode));
+ *p->proximityUnitCode = atoi (query_lex_buf);
+
+ return p;
+}
+
+static Z_Complex *rpn_complex (ODR o, oid_proto proto,
+ int num_attr, int max_attr,
+ int *attr_list, oid_value *attr_set)