Happy new year.
[idzebra-moved-to-github.git] / include / idzebra / recctrl.h
index e4d3604..e8f88c3 100644 (file)
@@ -1,8 +1,5 @@
-/* $Id: recctrl.h,v 1.38 2007-10-31 16:56:14 adam Exp $
-   Copyright (C) 1995-2007
-   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
@@ -84,11 +81,18 @@ struct ZebraRecStream {
     void      (*destroy)(struct ZebraRecStream *s);
 };
 
+/** record update action */
 enum zebra_recctrl_action_t {
+    /** insert record (fail if it exists already) */
     action_insert = 1,
+    /** replace record (fail it it does not exist) */
     action_replace,
+    /** delete record (fail if it does not exist) */
     action_delete,
-    action_update  /* insert or replace as needed */
+    /** insert or replace */
+    action_update,
+    /** delete record (ignore if it does not exist) */
+    action_a_delete
 };
 
 /** \brief record extract for indexing */
@@ -123,8 +127,6 @@ struct recRetrieveCtrl {
     int       recordSize;             /* size of record in bytes */
     char      *fname;                 /* name of file (or NULL if internal) */
     data1_handle dh;
-    zebra_snippets *hit_snippet;
-    zebra_snippets *doc_snippet;
     
     /* response */
     const Odr_oid * output_format;    /* output format OID */
@@ -132,6 +134,13 @@ struct recRetrieveCtrl {
     int        rec_len;
     int        diagnostic;
     char *     addinfo;
+    
+    /* special fetch to be included in retrieved response (say snippets) */
+    void *handle;
+    int (*special_fetch)(void *handle, const char *esn,
+                         const Odr_oid *input_format,
+                         const Odr_oid **output_format,
+                         WRBUF result, WRBUF addinfo);
 };
 
 typedef struct recType *RecType;
@@ -195,6 +204,7 @@ YAZ_END_CDECL
 /*
  * Local variables:
  * c-basic-offset: 4
+ * c-file-style: "Stroustrup"
  * indent-tabs-mode: nil
  * End:
  * vim: shiftwidth=4 tabstop=8 expandtab