X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?p=chiark-tcl.git;a=blobdiff_plain;f=hbytes%2Fulongs.c;h=f8b8c9e722d1ed6fc303e9ca9f6baa43ce3ed8b4;hp=496273182d7c5df5981b6bede662901cd85aa60e;hb=ac8c0b3b18075ae4273779544eda01c09cfb5145;hpb=07876950ceee6d28473f347ad2f0c4422c266e32 diff --git a/hbytes/ulongs.c b/hbytes/ulongs.c index 4962731..f8b8c9e 100644 --- a/hbytes/ulongs.c +++ b/hbytes/ulongs.c @@ -6,6 +6,30 @@ /* nice simple functions */ +int do_hbytes_clockincrement(ClientData cd, Tcl_Interp *ip, + HBytes_Var value, int change, int *result) { + Byte *data; + int len, bv; + + if (change<-255 || change>255) + return staticerr(ip,"clockincrement change must be in range -255..255"); + + len= hbytes_len(value.hb); + data= hbytes_data(value.hb) + len; + while (len && change) { + bv= *--data; + bv += change; + *data= bv; + if (bv<0) change= -1; + else if (bv>255) change= +1; + else change= 0; + len--; + } + *result= change; + + return TCL_OK; +} + int do_ulong_int2ul(ClientData cd, Tcl_Interp *ip, int v, unsigned long *result) { if (v<0) return staticerr(ip,"cannot convert -ve integer to ulong");