chiark / gitweb /
99688015252641a884983c387dd33f8af8b7ba0c
[chiark-tcl.git] / maskmap / maskmap.c
1 /*
2  */
3
4 #include "tables.h"
5 #include "hbytes.h"
6
7 typedef struct {
8   int prefixlen; /* there may be some empty slots with prefixlen==-1 at end */
9   Byte *prefix; /* ceil(prefixlen/8) bytes */
10   Tcl_Obj *data;
11 } MaskMap_Entry;
12
13 struct MaskMap_Value {
14   int allocd;
15   MaskMap_Entry *entries;
16 }; /* overlays internalRep */
17
18 int pat_maskmapv(Tcl_Interp *ip, Tcl_Obj *var, MaskMap_Var *agg) {
19   int rc;
20   rc= pat_somethingv(ip,var,&agg->sth,&maskmap_type);  if (rc) return rc;
21   agg->mm= (void*)&agg->sth.obj->internalRep;
22   return TCL_OK;
23 }
24
25 int do_maskmap_amend(ClientData cd, Tcl_Interp *ip,
26                      MaskMap_Var map, HBytes_Value prefix,
27                      int preflen, Tcl_Obj *data) {
28   return TCL_OK;
29 }
30
31 int do_maskmap_lookup(ClientData cd, Tcl_Interp *ip,
32                       MaskMap_Var map, HBytes_Value addr, Tcl_Obj *def,
33                       Tcl_Obj **result) {
34   return TCL_OK;
35 }
36
37 static void maskmap_t_free(Tcl_Obj *o) { }
38 static void maskmap_t_dup(Tcl_Obj *src, Tcl_Obj *dup) { }
39 static void maskmap_t_ustr(Tcl_Obj *o) { }
40 static int maskmap_t_sfa(Tcl_Interp *ip, Tcl_Obj *o) { return TCL_ERROR; }
41
42 Tcl_ObjType maskmap_type = {
43   "mask-map",
44   maskmap_t_free, maskmap_t_dup, maskmap_t_ustr, maskmap_t_sfa
45 };