RPM: store libs in %{_libdir}
[idzebra-moved-to-github.git] / index / recindex.h
index 6310a24..1ce50fc 100644 (file)
@@ -1,8 +1,5 @@
-/* $Id: recindex.h,v 1.29 2006-09-15 10:45:13 adam Exp $
-   Copyright (C) 1995-2006
-   Index Data ApS
-
-This file is part of the Zebra server.
+/* This file is part of the Zebra server.
+   Copyright (C) 1994-2011 Index Data
 
 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
@@ -32,7 +29,7 @@ YAZ_BEGIN_CDECL
 #define REC_NO_INFO 8
 
 typedef struct record_info {
-    SYSNO sysno;
+    zint sysno;
     int newFlag;
     char *info[REC_NO_INFO];
     size_t size[REC_NO_INFO];
@@ -72,13 +69,22 @@ Record rec_new(Records p);
     \param sysno system ID (external number)
     \returns record pointer (or NULL on error)
 */
-Record rec_get(Records p, SYSNO sysno);
+Record rec_get(Records p, zint sysno);
 
 /** \brief gets root record
     \param p records handle
     \returns record pointer (or NULL on error)
 */
 Record rec_get_root(Records p);
+
+
+/** \brief gets next record - with given records
+    \param p records handle
+    \param rec record
+    \returns record pointer (or NULL on error)
+*/
+Record rec_get_next(Records p, Record rec);
+
 ZEBRA_RES rec_close (Records *p);
 
 /** \brief opens records system
@@ -88,14 +94,26 @@ ZEBRA_RES rec_close (Records *p);
 */
 Records rec_open(BFiles bfs, int rw, int compression_method);
 
+/** \brief check whether a compression method is supported
+    \param compression_method (REC_COMPRESS_..)
+    \retval 0 if method is unsupported
+    \retval 1 if method is supported
+*/
+int rec_check_compression_method(int compression_method);
+
 char *rec_strdup(const char *s, size_t *len);
-void rec_prstat(Records p);
+void rec_prstat(Records p, int verbose);
 
-SYSNO rec_sysno_to_int(SYSNO sysno);
+zint rec_sysno_to_int(zint sysno);
 
-/** \brief compression types */
+
+/** \brief No compression ("none") */
 #define REC_COMPRESS_NONE   0
+/** \brief BZIP2 compression (slow and requires big chunks) */
 #define REC_COMPRESS_BZIP2  1
+/** \brief zlib compression (faster and works off small chunks) */
+#define REC_COMPRESS_ZLIB   2
+
 
 enum { 
     recInfo_fileType, 
@@ -107,11 +125,32 @@ enum {
     recInfo_sortKeys
 };
 
+typedef struct recindex *recindex_t;
+
+/** \brief opens record index handle
+    \param bfs Block files handle
+    \param rw 1 for read and write; 0 for read-only
+    \param use_isamb 1 if ISAMB is to used for record index; 0 for flat (old)
+*/
+recindex_t recindex_open(BFiles bfs, int rw, int use_isamb);
+
+/** \brief closes record index handle
+    \param p records handle
+*/
+void recindex_close(recindex_t p);
+int recindex_read_head(recindex_t p, void *buf);
+const char *recindex_get_fname(recindex_t p);
+ZEBRA_RES recindex_write_head(recindex_t p, const void *buf, size_t len);
+int recindex_read_indx(recindex_t p, zint sysno, void *buf, int itemsize, 
+                       int ignoreError);
+void recindex_write_indx(recindex_t p, zint sysno, void *buf, int itemsize);
+
 YAZ_END_CDECL
 #endif
 /*
  * Local variables:
  * c-basic-offset: 4
+ * c-file-style: "Stroustrup"
  * indent-tabs-mode: nil
  * End:
  * vim: shiftwidth=4 tabstop=8 expandtab