X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?p=chiark-tcl.git;a=blobdiff_plain;f=base%2Fparse.c;h=539f0748727a31d1b88db14225d35781d89c300e;hp=5e1f918d99d886a829fb06c8cf8afefa5888cb91;hb=a41625aefb08ed5bf5f07951841bdfe30c4a72c7;hpb=743de63e7b3214a5abc748ec0fa90160b6983551 diff --git a/base/parse.c b/base/parse.c index 5e1f918..539f074 100644 --- a/base/parse.c +++ b/base/parse.c @@ -30,6 +30,11 @@ int pat_long(Tcl_Interp *ip, Tcl_Obj *obj, long *val) { return Tcl_GetLongFromObj(ip, obj, val); } +int pat_string(Tcl_Interp *ip, Tcl_Obj *obj, const char **val) { + *val= Tcl_GetString(obj); + return TCL_OK; +} + int pat_hbv(Tcl_Interp *ip, Tcl_Obj *var, HBytes_Var *agg) { int rc; Tcl_Obj *val; @@ -42,11 +47,11 @@ int pat_hbv(Tcl_Interp *ip, Tcl_Obj *var, HBytes_Var *agg) { rc= Tcl_ConvertToType(ip,val,&hbytes_type); if (rc) return rc; - Tcl_InvalidateStringRep(val); if (Tcl_IsShared(val)) { val= Tcl_DuplicateObj(val); agg->copied= 1; } + Tcl_InvalidateStringRep(val); agg->obj= val; agg->hb= OBJ_HBYTES(val); @@ -89,6 +94,10 @@ Tcl_Obj *ret_long(Tcl_Interp *ip, long val) { return Tcl_NewLongObj(val); } +Tcl_Obj *ret_string(Tcl_Interp *ip, const char *val) { + return Tcl_NewStringObj(val,-1); +} + Tcl_Obj *ret_obj(Tcl_Interp *ip, Tcl_Obj *val) { return val; }