X-Git-Url: http://git.indexdata.com/?p=idzebra-moved-to-github.git;a=blobdiff_plain;f=include%2Frecctrl.h;h=71680b336a0284aff181fff6d014243129cd2bec;hp=717a61df9776bcaeb61a598d40f8f456d11a17e6;hb=896c0427df9d8eff5de6a1735dcd992e067df844;hpb=a91b23986dd5ad1cbbc05522297b5db770b11c5d diff --git a/include/recctrl.h b/include/recctrl.h index 717a61d..71680b3 100644 --- a/include/recctrl.h +++ b/include/recctrl.h @@ -1,104 +1,129 @@ -/* - * Copyright (C) 1994-1995, Index Data I/S - * All rights reserved. - * Sebastian Hammer, Adam Dickmeiss - * - * $Log: recctrl.h,v $ - * 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.38 2002-08-02 19:26:55 adam Exp $ + Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002 + 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 -#include -#include +#include +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif /* single word entity */ typedef struct { int attrSet; int attrUse; - enum { - Word_String, - Word_Numeric - } which; - union { - char *string; - int numeric; - } u; - int seqno; + unsigned reg_type; + char *string; + int length; + int seqno; + ZebraMaps zebra_maps; + struct recExtractCtrl *extractCtrl; } RecWord; /* Extract record control */ struct recExtractCtrl { -<<<<<<< recctrl.h - int inf; - char *subType; - void (*init)(RecWord *p); - void (*add)(const RecWord *p); -||||||| 1.4 - FILE *inf; - char *subType; - void (*init)(RecWord *p); - void (*add)(const RecWord *p); -======= - /* input parameters ... */ - FILE *inf; /* Extract from this file */ - char *subType; /* Sub type - may be NULL */ - void (*init)(RecWord *p); /* Init of word spec */ - void (*add)(const RecWord *p); /* Addition of a single word */ ->>>>>>> /tmp/T4a00136 + void *fh; /* File handle and read function */ + int (*readf)(void *fh, char *buf, size_t count); + off_t (*seekf)(void *fh, off_t offset); /* seek function */ + 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); + ZebraMaps zebra_maps; + int flagShowRecords; + int seqno[256]; + void (*schemaAdd)(struct recExtractCtrl *p, Odr_oid *oid); + data1_handle dh; + void *handle; }; /* Retrieve record control */ struct recRetrieveCtrl { /* Input parameters ... */ - ODR odr; /* ODR used to create response */ - int fd; /* File descriptor and read function */ - int (*readf)(int fd, char *buf, size_t count); - oid_value input_format; /* Preferred record syntax */ + Res res; /* Resource pool */ + ODR odr; /* ODR used to create response */ + void *fh; /* File descriptor and read function */ + int (*readf)(void *fh, char *buf, size_t count); + off_t (*seekf)(void *fh, off_t offset); + off_t (*tellf)(void *fh); + oid_value input_format; /* Preferred record syntax */ + Z_RecordComposition *comp; /* formatting instructions */ + char *encoding; /* preferred character encoding */ + int 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; -<<<<<<< recctrl.h /* response */ oid_value output_format; void *rec_buf; - size_t rec_len; - int diagnostic; + int rec_len; + int diagnostic; char *message; -||||||| 1.4 - /* response */ - oid_value output_format; - void *rec_buf; - size_t rec_len; -======= - /* output parameters ... */ - oid_value output_format; /* Record syntax of returned record */ - void *rec_buf; /* Record buffer */ - size_t rec_len; /* Length of record */ ->>>>>>> /tmp/T4a00136 }; -typedef struct recType +typedef struct recType *RecType; + +struct recType { - char *name; /* Name of record type */ - void (*init)(void); /* Init function - called once */ - int (*extract)(struct recExtractCtrl *ctrl); /* Extract proc */ - int (*retrieve)(struct recRetrieveCtrl *ctrl); /* Retrieve proc */ -} *RecType; + char *name; /* Name of record type */ + void *(*init)(RecType recType); /* Init function - called once */ + void (*destroy)(void *clientData); /* Destroy function */ + int (*extract)(void *clientData, + struct recExtractCtrl *ctrl); /* Extract proc */ + int (*retrieve)(void *clientData, + struct recRetrieveCtrl *ctrl); /* Retrieve proc */ +}; + +#define RECCTRL_EXTRACT_OK 0 +#define RECCTRL_EXTRACT_EOF 1 +#define RECCTRL_EXTRACT_ERROR 2 + +typedef struct recTypes *RecTypes; -RecType recType_byName (const char *name); +RecTypes recTypes_init (data1_handle dh); +void recTypes_destroy (RecTypes recTypes); +void recTypes_default_handlers (RecTypes recTypes); + +RecType recType_byName (RecTypes rts, const char *name, char *subType, + void **clientDataP); + +int grs_extract_tree(struct recExtractCtrl *p, data1_node *n); + +#ifdef __cplusplus +} +#endif #endif