X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?a=blobdiff_plain;ds=inline;f=hbytes%2Fhbytes.h;h=1bf433bb77e89bf1ef8744498cede5eb0a4242e4;hb=55fb3084cebdac13d1b1d4589bdd00a075fce31d;hp=2b032877587cebcf815a987fd8883edcc2da9293;hpb=9e72d3c3d91b86842aa947297e0d30bbc741c7b1;p=chiark-tcl.git diff --git a/hbytes/hbytes.h b/hbytes/hbytes.h index 2b03287..1bf433b 100644 --- a/hbytes/hbytes.h +++ b/hbytes/hbytes.h @@ -202,23 +202,24 @@ void sockaddr_free(const SockAddr_Value*); typedef struct { /* semi-opaque - read only, and then only where commented */ Tcl_Interp *ip; /* valid, non-0 and useable if set */ Tcl_Obj *obj; /* non-0 iff set (but only test for 0/non-0) */ + Tcl_Obj *xargs; int llength; } ScriptToInvoke; void scriptinv_init(ScriptToInvoke *si); -int scriptinv_set(ScriptToInvoke *si, Tcl_Interp *ip, Tcl_Obj *newscript); +int scriptinv_set(ScriptToInvoke *si, Tcl_Interp *ip, + Tcl_Obj *newscript, Tcl_Obj *xargs); void scriptinv_cancel(ScriptToInvoke *si); /* then don't invoke */ /* no separate free function - just cancel */ -void scriptinv_invoke(ScriptToInvoke *si, int argc, Tcl_Obj **argv); +void scriptinv_invoke(ScriptToInvoke *si, int argc, Tcl_Obj *const *argv); /* from idtable.c */ typedef struct { - const char *const prefix; - int n; - void **a; -} IdDataTable; + const char *valprefix, *assockey; + void (*destroyitem)(Tcl_Interp *ip, void *val); +} IdDataSpec; /* The stored struct must start with a single int, conventionally * named `ix'. When the struct is returned for the first time ix must @@ -226,10 +227,10 @@ typedef struct { * the struct is registered by the iddatatable machinery. */ extern Tcl_ObjType tabledataid_nearlytype; -int tabledataid_parse(Tcl_Interp *ip, Tcl_Obj *o, IdDataTable *tab); -void tabledataid_disposing(void *val, IdDataTable *tab); +int tabledataid_parse(Tcl_Interp *ip, Tcl_Obj *o, const IdDataSpec *idds); +void tabledataid_disposing(Tcl_Interp *ip, void *val, const IdDataSpec *idds); /* call this when you destroy the struct, to remove its name; - * _disposing is idempotent*/ + * _disposing is idempotent */ /* from adns.c */ @@ -238,16 +239,16 @@ typedef struct { adns_rrtype number; } AdnsTclRRTypeInfo; -extern IdDataTable adnstcl_queries, adnstcl_resolvers; +extern const IdDataSpec adnstcl_queries, adnstcl_resolvers; /* from dgram.c */ -extern IdDataTable dgram_socks; +extern const IdDataSpec dgram_socks; int newfdposixerr(Tcl_Interp *ip, int fd, const char *m); /* from tuntap.c */ -extern IdDataTable tuntap_socks; +extern const IdDataSpec tuntap_socks; /* from hook.c */