+
+Z_RpnCapabilities *f_rpnCapabilities (ExpHandle *eh, data1_node *c)
+{
+ Z_RpnCapabilities *res = odr_malloc (eh->o, sizeof(*res));
+
+ res->num_operators = 0;
+ res->operators = NULL;
+ res->resultSetAsOperandSupported = eh->false_value;
+ res->restrictionOperandSupported = eh->false_value;
+ res->proximity = NULL;
+ /* fix */ /* 550 - 560 */
+ return res;
+}
+
+Z_QueryTypeDetails **f_queryTypesSupported (ExpHandle *eh, data1_node *c,
+ int *num)
+{
+ data1_node *n;
+ Z_QueryTypeDetails **res;
+ int i;
+
+ *num = 0;
+ for (n = c->child; n; n = n->next)
+ {
+ if (is_numeric_tag(eh, n) != 519)
+ continue;
+ /* fix */ /* 518 and 520 */
+ (*num)++;
+ }
+ if (!*num)
+ return NULL;
+ res = odr_malloc (eh->o, *num * sizeof(*res));
+ i = 0;
+ for (n = c->child; n; n = n->next)
+ {
+ if (is_numeric_tag(eh, n) == 519)
+ {
+ res[i] = odr_malloc (eh->o, sizeof(**res));
+ res[i]->which = Z_QueryTypeDetails_rpn;
+ res[i]->u.rpn = f_rpnCapabilities (eh, n);
+ i++;
+ }
+ else
+ continue;
+ /* fix */ /* 518 and 520 */
+ }
+ return res;
+}
+