Null set implemented.
authorAdam Dickmeiss <adam@indexdata.dk>
Wed, 6 Sep 1995 10:35:44 +0000 (10:35 +0000)
committerAdam Dickmeiss <adam@indexdata.dk>
Wed, 6 Sep 1995 10:35:44 +0000 (10:35 +0000)
include/rsnull.h [new file with mode: 0644]
rset/Makefile
rset/rsisam.c
rset/rsnull.c [new file with mode: 0644]

diff --git a/include/rsnull.h b/include/rsnull.h
new file mode 100644 (file)
index 0000000..ff0a322
--- /dev/null
@@ -0,0 +1,19 @@
+/*
+ * Copyright (C) 1994-1995, Index Data I/S 
+ * All rights reserved.
+ * Sebastian Hammer, Adam Dickmeiss
+ *
+ * $Log: rsnull.h,v $
+ * Revision 1.1  1995-09-06 10:36:16  adam
+ * Null set implemented.
+ *
+ */
+
+#ifndef RSET_NULL_H
+#define RSET_NULL_H
+
+#include <rset.h>
+
+extern const rset_control *rset_kind_null;
+
+#endif
index a87980c..362b5d0 100644 (file)
@@ -1,7 +1,7 @@
 # Copyright (C) 1994, Index Data I/S 
 # All rights reserved.
 # Sebastian Hammer, Adam Dickmeiss
-# $Id: Makefile,v 1.4 1995-09-04 12:33:55 adam Exp $
+# $Id: Makefile,v 1.5 1995-09-06 10:35:44 adam Exp $
 
 SHELL=/bin/sh
 RANLIB=ranlib
@@ -11,7 +11,7 @@ INCLUDE=-I../include -I$(YAZ)/include
 DEFS=$(INCLUDE)
 LIB=../lib/rset.a
 PROG=
-PO=rset.o rstemp.o rsisam.o
+PO=rset.o rstemp.o rsisam.o rsnull.o
 CPP=cc -E
 
 all: $(LIB)
index d6788bf..c194bf7 100644 (file)
@@ -4,7 +4,10 @@
  * Sebastian Hammer, Adam Dickmeiss
  *
  * $Log: rsisam.c,v $
- * Revision 1.6  1995-09-05 11:43:24  adam
+ * Revision 1.7  1995-09-06 10:35:44  adam
+ * Null set implemented.
+ *
+ * Revision 1.6  1995/09/05  11:43:24  adam
  * Complete version of temporary sets. Not tested yet though.
  *
  * Revision 1.5  1995/09/04  12:33:56  adam
@@ -55,7 +58,7 @@ static rset_control *r_create(const struct rset_control *sel, void *parms)
     rset_control *newct;
     rset_isam_parms *pt = parms;
 
-    logf (LOG_DEBUG, "risam_create(%s)", sel->desc);
+    logf (LOG_DEBUG, "rsisam_create(%s)", sel->desc);
     newct = xmalloc(sizeof(*newct));
     memcpy(newct, sel, sizeof(*sel));
     if (!(newct->buf = (char*) is_position(pt->is, pt->pos)))
@@ -82,14 +85,14 @@ static void r_close(rset_control *ct)
 
 static void r_delete(rset_control *ct)
 {
-    logf (LOG_DEBUG, "risam_delete");
+    logf (LOG_DEBUG, "rsisam_delete");
     is_pt_free((ISPT) ct->buf);
     xfree(ct);
 }
 
 static void r_rewind(rset_control *ct)
 {
-    logf (LOG_DEBUG, "risam_rewind");
+    logf (LOG_DEBUG, "rsisam_rewind");
     is_rewind((ISPT) ct->buf);
 }
 
diff --git a/rset/rsnull.c b/rset/rsnull.c
new file mode 100644 (file)
index 0000000..8c597b7
--- /dev/null
@@ -0,0 +1,90 @@
+/*
+ * Copyright (C) 1994-1995, Index Data I/S 
+ * All rights reserved.
+ * Sebastian Hammer, Adam Dickmeiss
+ *
+ * $Log: rsnull.c,v $
+ * Revision 1.1  1995-09-06 10:35:44  adam
+ * Null set implemented.
+ *
+ */
+
+#include <stdio.h>
+#include <rsnull.h>
+#include <alexutil.h>
+
+static rset_control *r_create(const struct rset_control *sel, void *parms);
+static int r_open (rset_control *ct, int wflag);
+static void r_close (rset_control *ct);
+static void r_delete (rset_control *ct);
+static void r_rewind (rset_control *ct);
+static int r_count (rset_control *ct);
+static int r_read (rset_control *ct, void *buf);
+static int r_write (rset_control *ct, const void *buf);
+
+static const rset_control control = 
+{
+    "NULL set type",
+    0,
+    r_create,
+    r_open,
+    r_close,
+    r_delete,
+    r_rewind,
+    r_count,
+    r_read,
+    r_write
+};
+
+const rset_control *rset_kind_null = &control;
+
+static rset_control *r_create(const struct rset_control *sel, void *parms)
+{
+    rset_control *newct;
+
+    logf (LOG_DEBUG, "rsnull_create(%s)", sel->desc);
+    newct = xmalloc(sizeof(*newct));
+    memcpy(newct, sel, sizeof(*sel));
+    return newct;
+}
+
+static int r_open(rset_control *ct, int wflag)
+{
+    if (wflag)
+    {
+       logf (LOG_FATAL, "NULL set type is read-only");
+       return -1;
+    }
+    return 0;
+}
+
+static void r_close(rset_control *ct)
+{
+    /* NOP */
+}
+
+static void r_delete(rset_control *ct)
+{
+    xfree(ct);
+}
+
+static void r_rewind(rset_control *ct)
+{
+    logf (LOG_DEBUG, "rsnull_rewind");
+}
+
+static int r_count (rset_control *ct)
+{
+    return 0;
+}
+
+static int r_read (rset_control *ct, void *buf)
+{
+    return 0;
+}
+
+static int r_write (rset_control *ct, const void *buf)
+{
+    logf (LOG_FATAL, "NULL set type is read-only");
+    return -1;
+}