X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=ir-tclp.h;h=a64fbfa1f367e59a4e97a66940fa2335967bcbc1;hb=920d8fddbb9d7206a083c88f3a5a934abee82cf7;hp=4813c41105a2c4d23a14b5d1baf4d88129603bc0;hpb=63352c7277aa5760cca113b9a97d09716ba4e7f8;p=ir-tcl-moved-to-github.git diff --git a/ir-tclp.h b/ir-tclp.h index 4813c41..a64fbfa 100644 --- a/ir-tclp.h +++ b/ir-tclp.h @@ -1,11 +1,52 @@ /* * IR toolkit for tcl/tk - * (c) Index Data 1995 + * (c) Index Data 1995-1998 * See the file LICENSE for details. * Sebastian Hammer, Adam Dickmeiss * * $Log: ir-tclp.h,v $ - * Revision 1.26 1996-02-21 10:16:20 adam + * Revision 1.37 1998-04-02 14:31:08 adam + * This version works with compiled ASN.1 code. + * + * Revision 1.36 1997/11/19 11:22:09 adam + * Object identifiers can be accessed in GRS-1 records. + * + * Revision 1.35 1997/09/09 10:19:54 adam + * New MSV5.0 port with fewer warnings. + * + * Revision 1.34 1996/08/16 15:07:47 adam + * First work on Explain. + * + * Revision 1.33 1996/07/03 13:31:13 adam + * The xmalloc/xfree functions from YAZ are used to manage memory. + * + * Revision 1.32 1996/03/20 13:54:05 adam + * The Tcl_File structure is only manipulated in the Tk-event interface + * in tkinit.c. + * + * Revision 1.31 1996/03/05 09:21:19 adam + * Bug fix: memory used by GRS records wasn't freed. + * Rewrote some of the error handling code - the connection is always + * closed before failback is called. + * If failback is defined the send APDU methods (init, search, ...) will + * return OK but invoke failback (as is the case if the write operation + * fails). + * Bug fix: ref_count in assoc object could grow if fraction of PDU was + * read. + * + * Revision 1.30 1996/02/29 15:30:23 adam + * Export of IrTcl functionality to extensions. + * + * Revision 1.29 1996/02/26 18:38:33 adam + * Work on export of set methods. + * + * Revision 1.28 1996/02/23 17:31:41 adam + * More functions made available to the wais tcl extension. + * + * Revision 1.27 1996/02/23 13:41:41 adam + * Work on public access to simple ir class system. + * + * Revision 1.26 1996/02/21 10:16:20 adam * Simplified select handling. Only one function ir_tcl_select_set has * to be externally defined. * @@ -126,10 +167,22 @@ #include #include #include +#include #include "ir-tcl.h" typedef struct { + char *name; + int (*method) (void *obj, Tcl_Interp *interp, int argc, char **argv); + char *desc; +} IrTcl_Method; + +typedef struct { + void *obj; + IrTcl_Method *tab; +} IrTcl_Methods; + +typedef struct { char **databaseNames; int num_databaseNames; char *queryType; @@ -153,10 +206,7 @@ typedef struct { int protocol_type; int failInfo; COMSTACK cs_link; -#if IRTCL_GENERIC_FILES - Tcl_File csFile; -#endif - + int state; int preferredMessageSize; @@ -231,11 +281,12 @@ struct GRS_Record_entry { struct IrTcl_GRS_Record_ *sub; char *str; struct { - int len; + size_t len; char *buf; } octets; int num; int bool; + Odr_oid *oid; } tagData; }; @@ -255,7 +306,10 @@ typedef struct IrTcl_RecordList_ { union { IrTcl_GRS_Record *grs1; } u; + int type; +#if 0 enum oid_value type; +#endif } dbrec; struct { int num; @@ -311,7 +365,9 @@ typedef struct IrTcl_ScanObj_ { int positionOfTerm; int entries_flag; +#if 0 int which; +#endif int num_entries; int num_diagRecs; @@ -337,14 +393,38 @@ int ir_tcl_strdup (Tcl_Interp *interp, char** p, const char *s); int ir_tcl_strdel (Tcl_Interp *interp, char **p); char *ir_tcl_fread_marc (FILE *inf, size_t *size); -void ir_tcl_read_grs (Z_GenericRecord *r, IrTcl_GRS_Record **grs_record); +void ir_tcl_grs_mk (Z_GenericRecord *r, IrTcl_GRS_Record **grs_record); +void ir_tcl_grs_del (IrTcl_GRS_Record **grs_record); int ir_tcl_get_grs (Tcl_Interp *interp, IrTcl_GRS_Record *grs_record, int argc, char **argv); +int ir_tcl_get_explain (Tcl_Interp *interp, Z_ExplainRecord *rec, + int argc, char **argv); + +int ir_tcl_method (Tcl_Interp *interp, int argc, char **argv, + IrTcl_Methods *tab, int *ret); +int ir_tcl_get_set_int (int *val, Tcl_Interp *interp, int argc, char **argv); + +typedef struct { + const char *name; + int (*ir_init) (ClientData clientData, Tcl_Interp *interp, + int argc, char **argv, ClientData *subData, + ClientData parentData); + int (*ir_method) (ClientData clientData, Tcl_Interp *interp, + int argc, char **argv); + void (*ir_delete)(ClientData clientData); +} IrTcl_Class; + +extern IrTcl_Class ir_obj_class; +extern IrTcl_Class ir_set_obj_class; + void ir_select_add (int fd, void *obj); void ir_select_add_write (int fd, void *obj); void ir_select_remove (int fd, void *obj); -void ir_selcet_remove_write (int fd, void *obj); +void ir_select_remove_write (int fd, void *obj); + +int ir_tcl_eval (Tcl_Interp *interp, const char *command); +void ir_tcl_disconnect (IrTcl_Obj *p); #define IR_TCL_FAIL_CONNECT 1 #define IR_TCL_FAIL_READ 2