X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=include%2Frecctrl.h;h=44d461817a9749c5b95e3d96ff85a25be9fd42ce;hb=27babe1d585162b54b750fd5bf6a2139dee42bc1;hp=adc12c43371169085b47feb03d0447291870e4ff;hpb=bf52d699af06165384b2dfd74a1848bf529ed600;p=idzebra-moved-to-github.git diff --git a/include/recctrl.h b/include/recctrl.h index adc12c4..44d4618 100644 --- a/include/recctrl.h +++ b/include/recctrl.h @@ -1,10 +1,60 @@ /* - * Copyright (C) 1994-1996, Index Data I/S + * Copyright (C) 1994-1998, Index Data * All rights reserved. * Sebastian Hammer, Adam Dickmeiss * * $Log: recctrl.h,v $ - * Revision 1.16 1996-10-11 10:56:25 adam + * 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. * @@ -65,21 +115,22 @@ #include #include #include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif /* single word entity */ typedef struct { int attrSet; int attrUse; - enum { - Word_String, - Word_Phrase, - Word_Numeric - } which; - union { - char *string; - int numeric; - } u; - int seqno; + unsigned reg_type; + char *string; + int length; + int *seqnos; + ZebraMaps zebra_maps; } RecWord; /* Extract record control */ @@ -87,27 +138,35 @@ struct recExtractCtrl { 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)(RecWord *p); - void (*add)(const RecWord *p); - char **(*map_chrs_input)(char **from, int len); + void (*init)(struct recExtractCtrl *p, RecWord *w); + void (*addWord)(RecWord *p); + ZebraMaps zebra_maps; int flagShowRecords; + int seqno[256]; + void (*addSchema)(struct recExtractCtrl *p, Odr_oid *oid); + data1_handle dh; }; /* 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); 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 */ 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; @@ -117,14 +176,36 @@ struct recRetrieveCtrl { 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 */ +}; -RecType recType_byName (const char *name, char *subType); +#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); + +int grs_extract_tree(struct recExtractCtrl *p, data1_node *n); + +#ifdef __cplusplus +} +#endif #endif