X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=include%2Frecctrl.h;h=d992dbcd990c6647f9e76998e744d6b250599a7a;hb=47ea1fc957c7b97bb30a26698f072109cae275e4;hp=1b646bdd5307c3cc79abf44f22c3fb1887486d40;hpb=e9b33fe049e35d06dfeedb830feea32553d26cee;p=idzebra-moved-to-github.git diff --git a/include/recctrl.h b/include/recctrl.h index 1b646bd..d992dbc 100644 --- a/include/recctrl.h +++ b/include/recctrl.h @@ -4,7 +4,35 @@ * Sebastian Hammer, Adam Dickmeiss * * $Log: recctrl.h,v $ - * Revision 1.28 1999-03-02 16:15:42 quinn + * 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 @@ -106,10 +134,10 @@ #ifndef RECCTRL_H #define RECCTRL_H -#include -#include -#include -#include +#include +#include +#include +#include #include #ifdef __cplusplus @@ -123,8 +151,9 @@ typedef struct { unsigned reg_type; char *string; int length; - int *seqnos; + int seqno; ZebraMaps zebra_maps; + struct recExtractCtrl *extractCtrl; } RecWord; /* Extract record control */ @@ -137,12 +166,14 @@ struct recExtractCtrl { off_t offset; /* start offset */ char *subType; void (*init)(struct recExtractCtrl *p, RecWord *w); - void (*addWord)(RecWord *p); + void *clientData; + void (*tokenAdd)(RecWord *w); ZebraMaps zebra_maps; int flagShowRecords; int seqno[256]; - void (*addSchema)(struct recExtractCtrl *p, Odr_oid *oid); + void (*schemaAdd)(struct recExtractCtrl *p, Odr_oid *oid); data1_handle dh; + void *handle; }; /* Retrieve record control */ @@ -156,16 +187,18 @@ struct recRetrieveCtrl { 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; /* response */ oid_value output_format; void *rec_buf; - size_t rec_len; + int rec_len; int diagnostic; char *message; }; @@ -174,21 +207,27 @@ typedef struct recType *RecType; struct recType { - char *name; /* Name of record type */ - void (*init)(RecType recType); /* Init function - called once */ - void (*destroy)(RecType recType); /* Destroy function */ - int (*extract)(struct recExtractCtrl *ctrl); /* Extract proc */ - int (*retrieve)(struct recRetrieveCtrl *ctrl); /* Retrieve proc */ - void *clientData; /* data handle */ + 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); +RecType recType_byName (RecTypes rts, const char *name, char *subType, + void **clientDataP); int grs_extract_tree(struct recExtractCtrl *p, data1_node *n);