int log_io; /* log level for bf_read/bf_write calls */
int log_freelist; /* log level for freelist handling */
zint skipped_numbers; /* on a leaf node */
zint returned_numbers;
int log_io; /* log level for bf_read/bf_write calls */
int log_freelist; /* log level for freelist handling */
zint skipped_numbers; /* on a leaf node */
zint returned_numbers;
zint accessed_nodes[ISAMB_MAX_LEVEL]; /* nodes we did not skip */
struct ISAMB_block **block;
int scope; /* on what level we forward */
zint accessed_nodes[ISAMB_MAX_LEVEL]; /* nodes we did not skip */
struct ISAMB_block **block;
int scope; /* on what level we forward */
- isamb->skipped_numbers=0;
- isamb->returned_numbers=0;
- for (i=0;i<ISAMB_MAX_LEVEL;i++)
+ isamb->skipped_numbers = 0;
+ isamb->returned_numbers = 0;
+ for (i = 0;i<ISAMB_MAX_LEVEL;i++)
- for (i=0;isamb->accessed_nodes[i];i++)
- yaz_log(YLOG_DEBUG,"isamb_close level leaf-%d: "ZINT_FORMAT" read, "
+ for (i = 0;isamb->accessed_nodes[i];i++)
+ yaz_log(YLOG_DEBUG, "isamb_close level leaf-%d: "ZINT_FORMAT" read, "
"skipped "ZINT_FORMAT,
isamb->skipped_numbers, isamb->returned_numbers);
for (i = 0; i<isamb->no_cat; i++)
"skipped "ZINT_FORMAT,
isamb->skipped_numbers, isamb->returned_numbers);
for (i = 0; i<isamb->no_cat; i++)
- pp->skipped_numbers=0;
- pp->returned_numbers=0;
- pp->scope=scope;
- for (i=0;i<ISAMB_MAX_LEVEL;i++)
+ pp->skipped_numbers = 0;
+ pp->returned_numbers = 0;
+ pp->scope = scope;
+ for (i = 0;i<ISAMB_MAX_LEVEL;i++)
- for (i=pp->maxlevel;i>=0;i--)
- if ( pp->skipped_nodes[i] || pp->accessed_nodes[i])
- yaz_log(YLOG_DEBUG,"isamb_pp_close level leaf-%d: "
+ for (i = pp->maxlevel;i>=0;i--)
+ if (pp->skipped_nodes[i] || pp->accessed_nodes[i])
+ yaz_log(YLOG_DEBUG, "isamb_pp_close level leaf-%d: "
ZINT_FORMAT" read, "ZINT_FORMAT" skipped", i,
pp->accessed_nodes[i], pp->skipped_nodes[i]);
pp->isamb->skipped_numbers += pp->skipped_numbers;
pp->isamb->returned_numbers += pp->returned_numbers;
ZINT_FORMAT" read, "ZINT_FORMAT" skipped", i,
pp->accessed_nodes[i], pp->skipped_nodes[i]);
pp->isamb->skipped_numbers += pp->skipped_numbers;
pp->isamb->returned_numbers += pp->returned_numbers;
{
pp->isamb->accessed_nodes[i] += pp->accessed_nodes[i];
pp->isamb->skipped_nodes[i] += pp->skipped_nodes[i];
{
pp->isamb->accessed_nodes[i] += pp->accessed_nodes[i];
pp->isamb->skipped_nodes[i] += pp->skipped_nodes[i];
isamb_dump_r(b, sub, pr, level+1);
}
}
isamb_dump_r(b, sub, pr, level+1);
}
}
- (*pp->isamb->method->codec.log_item)(YLOG_DEBUG,untilbuf,"on_leaf: until");
- (*pp->isamb->method->codec.log_item)(YLOG_DEBUG,src,"on_leaf: value");
+ (*pp->isamb->method->codec.log_item)(YLOG_DEBUG, untilbuf, "on_leaf: until");
+ (*pp->isamb->method->codec.log_item)(YLOG_DEBUG, src, "on_leaf: value");
- yaz_log(YLOG_DEBUG,"isamb_pp_on_right returning true "
- "cmp=%d lev=%d ofs=%d",cmp,level,p->offset);
+ yaz_log(YLOG_DEBUG, "isamb_pp_on_right returning true "
+ "cmp=%d lev=%d ofs=%d", cmp, level, p->offset);
- yaz_log(YLOG_DEBUG,"isamb_pp_on_right returning false "
- "cmp=%d lev=%d ofs=%d",cmp,level,p->offset);
+ yaz_log(YLOG_DEBUG, "isamb_pp_on_right returning false "
+ "cmp=%d lev=%d ofs=%d", cmp, level, p->offset);
- src=p->bytes + p->offset;
- dst=buf;
- (*pp->isamb->method->codec.decode)(p->decodeClientData,&dst, &src);
+ src = p->bytes + p->offset;
+ dst = buf;
+ (*pp->isamb->method->codec.decode)(p->decodeClientData, &dst, &src);
p->offset = src - (char*) p->bytes;
#if ISAMB_DEBUG
(*pp->isamb->method->codec.log_item)(YLOG_DEBUG, buf, "read_on_leaf returning 1");
p->offset = src - (char*) p->bytes;
#if ISAMB_DEBUG
(*pp->isamb->method->codec.log_item)(YLOG_DEBUG, buf, "read_on_leaf returning 1");
static int isamb_pp_forward_on_leaf(ISAMB_PP pp, void *buf, const void *untilbuf)
{ /* forwards on the current leaf, returns 0 if not found */
int cmp;
static int isamb_pp_forward_on_leaf(ISAMB_PP pp, void *buf, const void *untilbuf)
{ /* forwards on the current leaf, returns 0 if not found */
int cmp;
- cmp=(*pp->isamb->method->compare_item)(untilbuf,buf);
- if (cmp <pp->scope){ /* cmp<2 found a good one */
+ cmp=(*pp->isamb->method->compare_item)(untilbuf, buf);
+ if (cmp <pp->scope)
+ { /* cmp<2 found a good one */
"at level %d node %d ofs=%d sz=%d",
pp->level, p->pos, p->offset, p->size);
#endif
"at level %d node %d ofs=%d sz=%d",
pp->level, p->pos, p->offset, p->size);
#endif
pp->level, p->pos, p->offset);
#endif
assert(!p->leaf);
assert(p->offset <= p->size);
pp->level, p->pos, p->offset);
#endif
assert(!p->leaf);
assert(p->offset <= p->size);
/* parent node, but that gets messy. Presumably the cost is */
/* pretty low anyway */
struct ISAMB_block *p = pp->block[pp->level];
/* parent node, but that gets messy. Presumably the cost is */
/* pretty low anyway */
struct ISAMB_block *p = pp->block[pp->level];
"at level %d node %d ofs=%di sz=%d",
pp->level, p->pos, p->offset, p->size);
#endif
assert(!p->leaf);
assert(p->offset <= p->size);
"at level %d node %d ofs=%di sz=%d",
pp->level, p->pos, p->offset, p->size);
#endif
assert(!p->leaf);
assert(p->offset <= p->size);
"at level %d node %d ofs=%di sz=%d",
pp->level, p->pos, p->offset, p->size);
#endif
return pos; /* already at the end of it */
}
"at level %d node %d ofs=%di sz=%d",
pp->level, p->pos, p->offset, p->size);
#endif
return pos; /* already at the end of it */
}
- while(p->offset < p->size) {
- decode_ptr(&src,&item_len);
- cmp=(*pp->isamb->method->compare_item)(untilbuf,src);
+ while(p->offset < p->size)
+ {
+ decode_ptr(&src, &item_len);
+ cmp=(*pp->isamb->method->compare_item)(untilbuf, src);
"at level %d node %d ofs=%d sz=%d",
pp->level, p->pos, p->offset, p->size);
#endif
return pos;
} /* found one */
"at level %d node %d ofs=%d sz=%d",
pp->level, p->pos, p->offset, p->size);
#endif
return pos;
} /* found one */
"at level %d node %d ofs=%d sz=%d skips=%d",
pp->level, p->pos, p->offset, p->size, skips);
#endif
"at level %d node %d ofs=%d sz=%d skips=%d",
pp->level, p->pos, p->offset, p->size, skips);
#endif
"starting at lev %d node %d ofs=%d lf=%d u=%p",
pp->level, p->pos, p->offset, p->leaf, untilbuf);
#endif
if (untilbuf)
"starting at lev %d node %d ofs=%d lf=%d u=%p",
pp->level, p->pos, p->offset, p->leaf, untilbuf);
#endif
if (untilbuf)
"got lev %d node %d lf=%d",
pp->level, p->pos, p->leaf);
#endif
if (p->leaf)
return;
"got lev %d node %d lf=%d",
pp->level, p->pos, p->leaf);
#endif
if (p->leaf)
return;
- p->offset=src-(char*)p->bytes;
- isamb_pp_descend_to_leaf(pp,pos,untilbuf);
+ p->offset = src-(char*)p->bytes;
+ isamb_pp_descend_to_leaf(pp, pos, untilbuf);
"returning at lev %d node %d ofs=%d lf=%d",
pp->level, p->pos, p->offset, p->leaf);
#endif
"returning at lev %d node %d ofs=%d lf=%d",
pp->level, p->pos, p->offset, p->leaf);
#endif
"at level %d node %d ofs=%d sz=%d",
pp->level, p->pos, p->offset, p->size);
#endif
"at level %d node %d ofs=%d sz=%d",
pp->level, p->pos, p->offset, p->size);
#endif
return 0;
/* see if it would pay to climb one higher */
if (!isamb_pp_on_right_node(pp, pp->level, untilbuf))
return 0;
/* see if it would pay to climb one higher */
if (!isamb_pp_on_right_node(pp, pp->level, untilbuf))
"at level %d node %d ofs=%d sz=%d",
pp->level, p->pos, p->offset, p->size);
#endif
"at level %d node %d ofs=%d sz=%d",
pp->level, p->pos, p->offset, p->size);
#endif
- pp->level, p->pos, p->offset, p->size,untilbuf, scope);
+ pp->level, p->pos, p->offset, p->size, untilbuf, scope);
"at level %d node %d ofs=%d sz=%d",
pp->level, p->pos, p->offset, p->size);
#endif
return 1;
}
"at level %d node %d ofs=%d sz=%d",
pp->level, p->pos, p->offset, p->size);
#endif
return 1;
}
"at level %d node %d ofs=%d sz=%d",
pp->level, p->pos, p->offset, p->size);
#endif
return 0; /* could not find a leaf */
}
"at level %d node %d ofs=%d sz=%d",
pp->level, p->pos, p->offset, p->size);
#endif
return 0; /* could not find a leaf */
}
"at level %d node %d ofs=%d sz=%d",
pp->level, p->pos, p->offset, p->size);
#endif
return 1;
}
"at level %d node %d ofs=%d sz=%d",
pp->level, p->pos, p->offset, p->size);
#endif
return 1;
}
return 0; /* could not find at all */
}
else { /* no untilbuf, a straight read */
return 0; /* could not find at all */
}
else { /* no untilbuf, a straight read */
* directly into the pp_read */
/* keeping here now, to keep same
* interface as the old fwd */
* directly into the pp_read */
/* keeping here now, to keep same
* interface as the old fwd */
"at level %d node %d ofs=%d sz=%d",
pp->level, p->pos, p->offset, p->size);
#endif
return 1;
}
"at level %d node %d ofs=%d sz=%d",
pp->level, p->pos, p->offset, p->size);
#endif
return 1;
}
"at level %d node %d ofs=%d sz=%d",
pp->level, p->pos, p->offset, p->size);
#endif
"at level %d node %d ofs=%d sz=%d",
pp->level, p->pos, p->offset, p->size);
#endif
{ /* return an estimate of the current position and of the total number of */
/* occureences in the isam tree, based on the current leaf */
struct ISAMB_block *p = pp->block[pp->level];
{ /* return an estimate of the current position and of the total number of */
/* occureences in the isam tree, based on the current leaf */
struct ISAMB_block *p = pp->block[pp->level];