X-Git-Url: http://git.indexdata.com/?p=idzebra-moved-to-github.git;a=blobdiff_plain;f=include%2Frecctrl.h;h=f134e3ddec8b093483c5acd6677de30da9fbbad1;hp=d992dbcd990c6647f9e76998e744d6b250599a7a;hb=8ee402d79e37344b08c2b54ad45b50e8327a6c03;hpb=47ea1fc957c7b97bb30a26698f072109cae275e4 diff --git a/include/recctrl.h b/include/recctrl.h index d992dbc..f134e3d 100644 --- a/include/recctrl.h +++ b/include/recctrl.h @@ -1,135 +1,26 @@ -/* - * Copyright (C) 1994-1998, Index Data - * All rights reserved. - * Sebastian Hammer, Adam Dickmeiss - * - * $Log: recctrl.h,v $ - * Revision 1.37 2002-07-25 13:06:43 adam - * Character set negotiation updates - * - * Revision 1.36 2002/07/02 20:20:09 adam - * idzebra:{filename,score,size,localnumber} tags for XML - * - * Revision 1.35 2002/04/13 18:16:42 adam - * More XPATH work; common sequence numbers for extract keys - * - * Revision 1.34 2000/03/20 19:08:36 adam - * Added remote record import using Z39.50 extended services and Segment - * Requests. - * - * Revision 1.33 2000/02/25 13:24:49 adam - * Fixed bug regarding pointer conversion that showed up on OSF V5. - * - * Revision 1.32 1999/11/30 13:48:03 adam - * Improved installation. Updated for inclusion of YAZ header files. - * - * Revision 1.31 1999/09/07 07:19:21 adam - * Work on character mapping. Implemented replace rules. - * - * Revision 1.30 1999/05/21 12:00:17 adam - * Better diagnostics for extraction process. - * - * Revision 1.29 1999/05/20 12:57:18 adam - * Implemented TCL filter. Updated recctrl system. - * - * Revision 1.28 1999/03/02 16:15:42 quinn - * Added "tagsysno" and "tagrank" directives to zebra.cfg. - * - * Revision 1.27 1998/10/16 08:14:28 adam - * Updated record control system. - * - * Revision 1.26 1998/05/20 10:12:12 adam - * Implemented automatic EXPLAIN database maintenance. - * Modified Zebra to work with ASN.1 compiled version of YAZ. - * - * Revision 1.25 1998/03/11 11:19:04 adam - * Changed the way sequence numbers are generated. - * - * Revision 1.24 1998/03/05 08:38:46 adam - * New member recordSize in recRetrieveCtrl. - * - * Revision 1.23 1998/02/10 12:03:05 adam - * Implemented Sort. - * - * Revision 1.22 1997/10/27 14:33:04 adam - * Moved towards generic character mapping depending on "structure" - * field in abstract syntax file. Fixed a few memory leaks. Fixed - * bug with negative integers when doing searches with relational - * operators. - * - * Revision 1.21 1997/09/18 08:59:19 adam - * Extra generic handle for the character mapping routines. - * - * Revision 1.20 1997/09/17 12:19:10 adam - * Zebra version corresponds to YAZ version 1.4. - * Changed Zebra server so that it doesn't depend on global common_resource. - * - * Revision 1.19 1997/09/05 15:30:02 adam - * Changed prototype for chr_map_input - added const. - * Added support for C++, headers uses extern "C" for public definitions. - * - * Revision 1.18 1997/09/04 13:56:15 adam - * Added new filter grs.marc. where refers to - * abstract syntax. New method tellf in extract/retrieve control - * block. - * - * Revision 1.17 1997/04/30 08:56:04 quinn - * null - * - * Revision 1.16 1996/10/11 10:56:25 adam - * New module recctrl. Used to manage records (extract/retrieval). - * All record types are accessed by means of definitions in recctrl.h. - * - * Revision 1.15 1996/06/06 12:08:16 quinn - * Added showRecord Group entry - * - * Revision 1.14 1996/05/09 07:28:49 quinn - * Work towards phrases and multiple registers - * - * Revision 1.13 1996/05/01 13:44:05 adam - * Added seek function to the recExtractCtrl and recRetrieveCtrl control - * structures. Added end-of-file indicator function and start offset to - * recExtractCtrl. - * - * Revision 1.12 1996/01/17 15:01:25 adam - * Prototype changed for reader functions in extract/retrieve. File - * is identified by 'void *' instead of 'int'. - * - * Revision 1.11 1995/12/04 14:20:54 adam - * Extra arg to recType_byName. - * - * Revision 1.10 1995/10/16 14:03:06 quinn - * Changes to support element set names and espec1 - * - * Revision 1.9 1995/10/06 14:37:53 adam - * New result set method: r_score. - * Local no (sysno) and score is transferred to retrieveCtrl. - * - * Revision 1.8 1995/10/02 15:43:35 adam - * Extract uses file descriptors instead of FILE pointers. - * - * Revision 1.7 1995/10/02 15:18:09 adam - * Minor changes. - * - * Revision 1.6 1995/10/02 15:05:26 quinn - * Added a few fields. - * - * Revision 1.5 1995/10/02 14:55:52 quinn - * *** empty log message *** - * - * Revision 1.4 1995/09/27 16:17:29 adam - * More work on retrieve. - * - * Revision 1.3 1995/09/27 12:21:25 adam - * New function: recType_byName. - * - * Revision 1.2 1995/09/15 14:45:03 adam - * Retrieve control. - * - * Revision 1.1 1995/09/14 07:48:13 adam - * Record control management. - * - */ +/* $Id: recctrl.h,v 1.42 2004-09-27 10:44:48 adam Exp $ + Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003,2004 + 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. +*/ + + #ifndef RECCTRL_H #define RECCTRL_H @@ -137,7 +28,8 @@ #include #include #include -#include +#include +#include #include #ifdef __cplusplus @@ -164,7 +56,6 @@ struct recExtractCtrl { off_t (*tellf)(void *fh); /* tell function */ void (*endf)(void *fh, off_t offset); /* end of record position */ off_t offset; /* start offset */ - char *subType; void (*init)(struct recExtractCtrl *p, RecWord *w); void *clientData; void (*tokenAdd)(RecWord *w); @@ -188,11 +79,10 @@ struct recRetrieveCtrl { oid_value input_format; /* Preferred record syntax */ Z_RecordComposition *comp; /* formatting instructions */ char *encoding; /* preferred character encoding */ - int localno; /* local id of record */ + zint localno; /* local id of record */ int score; /* score 0-1000 or -1 if none */ int recordSize; /* size of record in bytes */ char *fname; /* name of file (or NULL if internal) */ - char *subType; data1_handle dh; /* response */ @@ -208,7 +98,8 @@ typedef struct recType *RecType; struct recType { char *name; /* Name of record type */ - void *(*init)(RecType recType); /* Init function - called once */ + void *(*init)(Res res, RecType recType); /* Init function - called once */ + void (*config)(void *clientData, Res res, const char *args); /* Config */ void (*destroy)(void *clientData); /* Destroy function */ int (*extract)(void *clientData, struct recExtractCtrl *ctrl); /* Extract proc */ @@ -218,16 +109,24 @@ struct recType #define RECCTRL_EXTRACT_OK 0 #define RECCTRL_EXTRACT_EOF 1 -#define RECCTRL_EXTRACT_ERROR 2 +#define RECCTRL_EXTRACT_ERROR_GENERIC 2 +#define RECCTRL_EXTRACT_ERROR_NO_SUCH_FILTER 3 +typedef struct recTypeClass *RecTypeClass; typedef struct recTypes *RecTypes; -RecTypes recTypes_init (data1_handle dh); -void recTypes_destroy (RecTypes recTypes); -void recTypes_default_handlers (RecTypes recTypes); +RecTypeClass recTypeClass_create (Res res, NMEM nmem); +void recTypeClass_destroy(RecTypeClass rtc); +void recTypeClass_info(RecTypeClass rtc, void *cd, + void (*cb)(void *cd, const char *s)); + +RecTypes recTypes_init(RecTypeClass rtc, data1_handle dh); +void recTypes_destroy(RecTypes recTypes); +void recTypes_default_handlers(RecTypes recTypes, Res res); + +RecType recType_byName(RecTypes rts, Res res, const char *name, + void **clientDataP); -RecType recType_byName (RecTypes rts, const char *name, char *subType, - void **clientDataP); int grs_extract_tree(struct recExtractCtrl *p, data1_node *n);