X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=isamc%2Fisamc-p.h;h=ca82daa8455354b5fb07fafa78403c45c347266f;hb=a0c8ad663e1c39942375e032abfd0be156f9c2ca;hp=27c245494d87744d6572260802177d2c0e5064b0;hpb=ef696645cc3b7e0f4027008d1dc589c0f0f90c1f;p=idzebra-moved-to-github.git diff --git a/isamc/isamc-p.h b/isamc/isamc-p.h index 27c2454..ca82daa 100644 --- a/isamc/isamc-p.h +++ b/isamc/isamc-p.h @@ -1,44 +1,35 @@ -/* - * Copyright (c) 1995-1996, Index Data. - * See the file LICENSE for details. - * Sebastian Hammer, Adam Dickmeiss - * - * $Log: isamc-p.h,v $ - * Revision 1.7 1999-05-26 07:49:14 adam - * C++ compilation. - * - * Revision 1.6 1998/03/18 09:23:55 adam - * Blocks are stored in chunks on free list - up to factor 2 in speed. - * Fixed bug that could occur in block category rearrangemen. - * - * Revision 1.5 1998/03/16 10:37:24 adam - * Added more statistics. - * - * 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.16 2006-05-10 08:13:27 adam Exp $ + Copyright (C) 1995-2005 + 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 +#include +#include + +YAZ_BEGIN_CDECL typedef struct { - int lastblock; - int freelist; + zint lastblock; + zint freelist; } ISAMC_head; typedef unsigned ISAMC_BLOCK_SIZE; @@ -57,8 +48,8 @@ typedef struct ISAMC_file_s { int no_forward; int no_backward; - int sum_forward; - int sum_backward; + zint sum_forward; + zint sum_backward; int no_next; int no_prev; @@ -67,14 +58,14 @@ typedef struct ISAMC_file_s { int alloc_entries_max; int fc_max; - int *fc_list; + zint *fc_list; } *ISAMC_file; struct ISAMC_s { int no_files; int max_cat; char *merge_buf; - ISAMC_M method; + ISAMC_M *method; ISAMC_file files; }; @@ -83,22 +74,41 @@ struct ISAMC_PP_s { ISAMC_BLOCK_SIZE offset; ISAMC_BLOCK_SIZE size; int cat; - int pos; - int next; + zint pos; + zint next; ISAMC is; void *decodeClientData; int deleteFlag; - int numKeys; + zint numKeys; }; -#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); +/* + first block consists of + next pointer : zint + size : ISAMC_BLOCK_SIZE (int) + numkeys : zint + data + other blocks consists of + next pointer : zint + size : ISAMC_BLOCK_SIZE (int) + data +*/ +#define ISAMC_BLOCK_OFFSET_1 (sizeof(zint)+sizeof(ISAMC_BLOCK_SIZE)+sizeof(zint)) +#define ISAMC_BLOCK_OFFSET_N (sizeof(zint)+sizeof(ISAMC_BLOCK_SIZE)) + +zint isamc_alloc_block (ISAMC is, int cat); +void isamc_release_block (ISAMC is, int cat, zint pos); +int isamc_read_block (ISAMC is, int cat, zint pos, char *dst); +int isamc_write_block (ISAMC is, int cat, zint pos, char *src); + +YAZ_END_CDECL -#ifdef __cplusplus -} -#endif + +/* + * Local variables: + * c-basic-offset: 4 + * indent-tabs-mode: nil + * End: + * vim: shiftwidth=4 tabstop=8 expandtab + */