/* 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
* 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 */
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 */