示例#1
0
void wn_mbact
(
  wn_mbtree tree,
  void (*paction)(wn_mbhandle handle),
  ptr low_key,
  int low_compare,
  ptr high_key,
  int high_compare
)
{
  wn_mbhandle low_handle, high_handle;

  wn_mbget(&low_handle,  tree, low_key,  low_compare);
  wn_mbget(&high_handle, tree, high_key, high_compare);

  if(
      (low_handle == NULL)||(high_handle == NULL)
        ||
      !(lo_range_is_reasonable(low_handle->key,high_handle->key,
                                tree->pcompare_keys_func))
    )
  {
    return;  /* do nothing */
  }

  lo_act_on_handle_tree(tree->handle_tree,paction,
                     low_handle->key,high_handle->key,
                     tree->pcompare_keys_func);
} /* wn_mbact */
示例#2
0
local void lo_insert_free_block_into_big_free_list(wn_free_block free_block,
/**/								wn_memgp group)
{
  free_list_type free_list = (free_list_type) group->free_list;
  wn_mbtree tree = free_list->big_blocks_tree;
  wn_mbhandle handle, hdr_handle;
  /* int mbhandle_chunk_size;	 ** unused - bchapman 041111 */
  /* int total_size;		 ** unused - bchapman 041111 */
  /* wn_free_block free_block_2; ** unused - bchapman 041111 */

  wn_assert(free_block->free_block_size >= SMALL_SIZE);
  wn_assert((((long unsigned int) free_block) & 7) == 4);

  handle = WN_FREE_BLOCK_TO_MBHANDLE(free_block);

  wn_mbget(&hdr_handle, tree, (ptr) free_block->free_block_size, WN_MB_EQ);
  if (hdr_handle)
  {
    handle->next_free_block = hdr_handle->free_block_list;
    hdr_handle->free_block_list = free_block;
  }
  else
  {
    wn_mbins(handle, tree, (ptr) free_block->free_block_size);
    handle->next_free_block =
    handle->free_block_list = NULL;
    wn_assert(handle->key == (ptr) free_block->free_block_size);
  }
} /* lo_insert_free_block_into_big_free_list */