X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=isamc%2Fisamc-p.h;h=d2af54993bcd29056e6a3681a1e92524a0e00fd0;hb=138b954cffe470bf0e62d812cae6e859aa57cdb5;hp=0d4d021e46414ae871515078ca29ca2e4f58816e;hpb=7af74fb4a98eb4baeffb6a1a648e837563fe7b4f;p=idzebra-moved-to-github.git diff --git a/isamc/isamc-p.h b/isamc/isamc-p.h index 0d4d021..d2af549 100644 --- a/isamc/isamc-p.h +++ b/isamc/isamc-p.h @@ -1,32 +1,41 @@ -/* - * Copyright (c) 1995-1996, Index Data. - * See the file LICENSE for details. - * Sebastian Hammer, Adam Dickmeiss - * - * $Log: isamc-p.h,v $ - * Revision 1.4 1996-11-08 11:15:28 adam - * Number of keys in chain are stored in first block and the function - * to retrieve this information, isc_pp_num is implemented. - * - * Revision 1.3 1996/11/04 14:08:55 adam - * Optimized free block usage. - * - * Revision 1.2 1996/11/01 08:59:13 adam - * First version of isc_merge that supports update/delete. - * - * Revision 1.1 1996/10/29 13:40:47 adam - * First work. - * - */ +/* $Id: isamc-p.h,v 1.9 2003-06-23 15:36:11 adam Exp $ + Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003 + Index Data Aps + +This file is part of the Zebra server. + +Zebra is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 2, or (at your option) any later +version. + +Zebra is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License +along with Zebra; see the file LICENSE.zebra. If not, write to the +Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA +02111-1307, USA. +*/ + + #include #include +#ifdef __cplusplus +extern "C" { +#endif + typedef struct { int lastblock; int freelist; } ISAMC_head; +typedef unsigned ISAMC_BLOCK_SIZE; + typedef struct ISAMC_file_s { ISAMC_head head; BFile bf; @@ -39,6 +48,17 @@ typedef struct ISAMC_file_s { int no_released; int no_remap; + int no_forward; + int no_backward; + int sum_forward; + int sum_backward; + int no_next; + int no_prev; + + char *alloc_buf; + int alloc_entries_num; + int alloc_entries_max; + int fc_max; int *fc_list; } *ISAMC_file; @@ -47,14 +67,14 @@ struct ISAMC_s { int no_files; int max_cat; char *merge_buf; - ISAMC_M method; + ISAMC_M *method; ISAMC_file files; }; struct ISAMC_PP_s { char *buf; - unsigned offset; - unsigned short size; + ISAMC_BLOCK_SIZE offset; + ISAMC_BLOCK_SIZE size; int cat; int pos; int next; @@ -64,10 +84,14 @@ struct ISAMC_PP_s { int numKeys; }; -#define ISAMC_BLOCK_OFFSET_N (sizeof(int)+sizeof(short)) -#define ISAMC_BLOCK_OFFSET_1 (sizeof(int)+sizeof(short)+sizeof(int)) - +#define ISAMC_BLOCK_OFFSET_N (sizeof(int)+sizeof(ISAMC_BLOCK_SIZE)) +#define ISAMC_BLOCK_OFFSET_1 (sizeof(int)+sizeof(ISAMC_BLOCK_SIZE)+sizeof(int)) int isc_alloc_block (ISAMC is, int cat); void isc_release_block (ISAMC is, int cat, int pos); int isc_read_block (ISAMC is, int cat, int pos, char *dst); int isc_write_block (ISAMC is, int cat, int pos, char *src); + +#ifdef __cplusplus +} +#endif +