X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=include%2Frecctrl.h;h=1b3cce8db204ffcf8960ceeaaf55e7a23b0d8d95;hb=69da23537c6bb71ab948e079708bf8ea090de73f;hp=9000fdaf7222ce5324c81361fd509f7d6c64d725;hpb=5c693d36af8be6f6642257160b3c6441d2e2d762;p=idzebra-moved-to-github.git diff --git a/include/recctrl.h b/include/recctrl.h index 9000fda..1b3cce8 100644 --- a/include/recctrl.h +++ b/include/recctrl.h @@ -1,10 +1,45 @@ /* - * Copyright (C) 1994-1997, Index Data I/S + * Copyright (C) 1994-1998, Index Data * All rights reserved. * Sebastian Hammer, Adam Dickmeiss * * $Log: recctrl.h,v $ - * Revision 1.23 1998-02-10 12:03:05 adam + * 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 @@ -90,17 +125,16 @@ #ifndef RECCTRL_H #define RECCTRL_H -#include -#include -#include -#include +#include +#include +#include +#include #include #ifdef __cplusplus extern "C" { #endif - /* single word entity */ typedef struct { int attrSet; @@ -108,8 +142,9 @@ typedef struct { unsigned reg_type; char *string; int length; - int seqno; + int *seqnos; ZebraMaps zebra_maps; + struct recExtractCtrl *extractCtrl; } RecWord; /* Extract record control */ @@ -122,15 +157,20 @@ struct recExtractCtrl { off_t offset; /* start offset */ char *subType; void (*init)(struct recExtractCtrl *p, RecWord *w); - void (*add)(RecWord *p); + 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 ... */ + 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); @@ -140,26 +180,45 @@ struct recRetrieveCtrl { Z_RecordComposition *comp; /* formatting instructions */ int localno; /* local id of record */ int score; /* score 0-1000 or -1 if none */ + int recordSize; /* size of record in bytes */ char *subType; data1_handle dh; /* response */ oid_value output_format; void *rec_buf; - size_t rec_len; + int rec_len; int diagnostic; char *message; }; -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; + +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); -RecType recType_byName (const char *name, char *subType); +int grs_extract_tree(struct recExtractCtrl *p, data1_node *n); #ifdef __cplusplus }