+static void r_pos(RSFD rfd, double *current, double *total)
+{
+ struct rfd_private *p = (struct rfd_private *)rfd->priv;
+ double lcur, ltot;
+ double rcur, rtot;
+ double r;
+ ltot = -1;
+ rtot = -1;
+ rset_pos(p->rfd_l, &lcur, <ot);
+ rset_pos(p->rfd_r, &rcur, &rtot);
+ if ( (rtot<0) && (ltot<0)) { /*no position */
+ *current = rcur; /* return same as you got */
+ *total = rtot; /* probably -1 for not available */
+ }
+ if (rtot < 0)
+ rtot = rcur = 0; /* if only one useful, use it */
+ if (ltot < 0)
+ ltot = lcur = 0;
+ if (rtot+ltot < 1)
+ { /* empty rset */
+ *current = *total = 0;
+ return;
+ }
+ r = 1.0*(lcur+rcur)/(ltot+rtot); /* weighed average of l and r */
+ *current = (double) (p->hits);
+ *total = *current/r ;
+#if RSET_DEBUG
+ yaz_log(YLOG_DEBUG,"bool_pos: (%s/%s) %0.1f/%0.1f= %0.4f ",
+ info->rset_l->control->desc, info->rset_r->control->desc,
+ *current, *total, r);
+#endif
+}
+
+static void r_get_terms(RSET ct, TERMID *terms, int maxterms, int *curterm)
+{
+ struct rset_private *info = (struct rset_private *) ct->priv;
+ rset_getterms(info->rset_l, terms, maxterms, curterm);
+ rset_getterms(info->rset_r, terms, maxterms, curterm);
+}
+
+/*
+ * Local variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ * vim: shiftwidth=4 tabstop=8 expandtab
+ */
+