chiark / gitweb /
new constv type
authorian <ian>
Thu, 25 Nov 2004 00:33:01 +0000 (00:33 +0000)
committerian <ian>
Thu, 25 Nov 2004 00:33:01 +0000 (00:33 +0000)
base/parse.c
base/tables-examples.tct
hbytes/parse.c
maskmap/maskmap.c

index 1d91238..0fa5acd 100644 (file)
@@ -23,6 +23,23 @@ int pat_string(Tcl_Interp *ip, Tcl_Obj *obj, const char **val) {
   return TCL_OK;
 }
 
+int pat_constv(Tcl_Interp *ip, Tcl_Obj *var,
+              Tcl_Obj **val_r, Tcl_ObjType *type) {
+  int rc;
+  Tcl_Obj *val;
+  
+  val= Tcl_ObjGetVar2(ip,var,0,TCL_LEAVE_ERR_MSG);
+  if (!val) return TCL_ERROR;
+
+  if (type) {
+    rc= Tcl_ConvertToType(ip,val,type);
+    if (rc) return rc;
+  }
+
+  *val_r= val;
+  return TCL_OK;
+}
+
 void init_somethingv(Something_Var *sth) {
   sth->obj=0; sth->var=0; sth->copied=0;
 }
index 8396130..267b88c 100644 (file)
@@ -5,6 +5,8 @@ Type hbv:                       HBytes_Var @
 Init hbv                       @.hb=0; init_somethingv(&@.sth);
 Fini hbv                       fini_somethingv(ip, rc, &@.sth);
 
+Type constv(Tcl_ObjType*):     Tcl_Obj *@
+
 Type maskmapv:                 MaskMap_Var @
 Init maskmapv                  @.mm=0; init_somethingv(&@.sth);
 Fini maskmapv                  fini_somethingv(ip, rc, &@.sth);
@@ -37,7 +39,7 @@ Table toplevel TopLevel_Command
 
 Table maskmap MaskMap_SubCommand
        lookup
-               map     maskmapv
+               map     constv(&maskmap_type)
                addr    hb
                ?def    obj
                =>      obj
index 1d91238..0fa5acd 100644 (file)
@@ -23,6 +23,23 @@ int pat_string(Tcl_Interp *ip, Tcl_Obj *obj, const char **val) {
   return TCL_OK;
 }
 
+int pat_constv(Tcl_Interp *ip, Tcl_Obj *var,
+              Tcl_Obj **val_r, Tcl_ObjType *type) {
+  int rc;
+  Tcl_Obj *val;
+  
+  val= Tcl_ObjGetVar2(ip,var,0,TCL_LEAVE_ERR_MSG);
+  if (!val) return TCL_ERROR;
+
+  if (type) {
+    rc= Tcl_ConvertToType(ip,val,type);
+    if (rc) return rc;
+  }
+
+  *val_r= val;
+  return TCL_OK;
+}
+
 void init_somethingv(Something_Var *sth) {
   sth->obj=0; sth->var=0; sth->copied=0;
 }
index e0c7f90..1ae8439 100644 (file)
@@ -106,8 +106,9 @@ int do_maskmap_amend(ClientData cd, Tcl_Interp *ip,
 }
 
 int do_maskmap_lookup(ClientData cd, Tcl_Interp *ip,
-                     MaskMap_Var map, HBytes_Value addr, Tcl_Obj *def,
+                     Tcl_Obj *mapo, HBytes_Value addr, Tcl_Obj *def,
                      Tcl_Obj **result) {
+  /*MaskMap_Var *map= (void*)&mapo->internalRep;*/
   *result= Tcl_NewIntObj(42);
   return TCL_OK; /*fixme*/
 }