-static Z_Operand *ccl_rpn_simple (ODR o, struct ccl_rpn_node *p)
-{
- Z_Operand *zo;
-
- zo = (Z_Operand *)odr_malloc (o, sizeof(*zo));
-
- switch (p->kind)
- {
- case CCL_RPN_TERM:
- zo->which = Z_Operand_APT;
- zo->u.attributesPlusTerm = ccl_rpn_term (o, p);
- break;
- case CCL_RPN_SET:
- zo->which = Z_Operand_resultSetId;
- zo->u.resultSetId = odr_strdup (o, p->u.setname);
- break;
- default:
- return 0;
- }
- return zo;
-}
-
-static Z_Complex *ccl_rpn_complex (ODR o, struct ccl_rpn_node *p)
-{
- Z_Complex *zc;
- Z_Operator *zo;
-
- zc = (Z_Complex *)odr_malloc (o, sizeof(*zc));
- zo = (Z_Operator *)odr_malloc (o, sizeof(*zo));
-
- zc->roperator = zo;
- switch (p->kind)
- {
- case CCL_RPN_AND:
- zo->which = Z_Operator_and;
- zo->u.and_not = odr_nullval();
- break;
- case CCL_RPN_OR:
- zo->which = Z_Operator_or;
- zo->u.and_not = odr_nullval();
- break;
- case CCL_RPN_NOT:
- zo->which = Z_Operator_and_not;
- zo->u.and_not = odr_nullval();
- break;
- case CCL_RPN_PROX:
- zo->which = Z_Operator_prox;
- zo->u.prox = (Z_ProximityOperator *)
- odr_malloc (o, sizeof(*zo->u.prox));
- zo->u.prox->exclusion = 0;
-
- zo->u.prox->distance = (int *)
- odr_malloc (o, sizeof(*zo->u.prox->distance));
- *zo->u.prox->distance = 2;
-
- zo->u.prox->ordered = (bool_t *)
- odr_malloc (o, sizeof(*zo->u.prox->ordered));
- *zo->u.prox->ordered = 0;
-
- zo->u.prox->relationType = (int *)
- odr_malloc (o, sizeof(*zo->u.prox->relationType));
- *zo->u.prox->relationType = Z_ProximityOperator_Prox_lessThan;
- zo->u.prox->which = Z_ProximityOperator_known;
- zo->u.prox->u.known =
- (Z_ProxUnit *) odr_malloc (o, sizeof(*zo->u.prox->u.known));
- *zo->u.prox->u.known = Z_ProxUnit_word;
- break;
- default:
- return 0;
- }
- zc->s1 = ccl_rpn_structure (o, p->u.p[0]);
- zc->s2 = ccl_rpn_structure (o, p->u.p[1]);
- return zc;
-}
-
-static Z_RPNStructure *ccl_rpn_structure (ODR o, struct ccl_rpn_node *p)