X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?a=blobdiff_plain;f=base%2Fchiark-tcl.h;h=864019e50d82a9edfb297cbf335b6a5953872bce;hb=79480f2c416419bcde9b9ac78f5f10bd4cc724e3;hp=951ae12ee3e5d28889ceacab9bb84dcf15ef89a3;hpb=d23a32272b954579fe15c78d6ea605e087d0a512;p=chiark-tcl.git diff --git a/base/chiark-tcl.h b/base/chiark-tcl.h index 951ae12..864019e 100644 --- a/base/chiark-tcl.h +++ b/base/chiark-tcl.h @@ -13,6 +13,35 @@ * hbytes chopto VAR NEWVARLENGTH => suffix (removed from VAR) * (too short? error) * + * hbytes range VALUE START SIZE => substring (or error) + * + * hbytes h2ulong HEX => ulong (HEX len must be 4) + * hbytes ulong2h UL => hex + * + * ulong ul2bitfields VALUE [SIZE TYPE [TYPE-ARG...] ...] => 0/1 + * ulong bitfields2ul BASE [SIZE TYPE [TYPE-ARG...] ...] => ULONG + * goes from left (MSbit) to right (LSbit) where + * SIZE is size in bits + * TYPE [TYPE-ARGS...] is as below + * zero + * ignore + * fixed ULONG-VALUE + * uint VARNAME/VALUE (VARNAME if ul2bitfields; + * ulong VARNAME/VALUE VALUE if bitfields2ul) + * + * ulong ul2int ULONG => INT can fail if >INT_MAX + * ulong int2ul INT => ULONG can fail if <0 + * + * hbytes shift l|r ULONG BITS fails if BITS >32 + * hbytes mask A B => A & B + * + * hbytes compare A B + * => -2 A is lexically earlier than B and not a prefix of B (A worked? (always 1 for p) * hbytes pkcs5 pn|un VAR BLOCKSIZE => worked? (always 1 for p) * hbytes blockcipher d|e VAR ALG KEY MODE [IV] => IV @@ -32,6 +61,7 @@ #include #include #include +#include #include #include @@ -112,7 +142,8 @@ void sockaddr_free(const SockAddr_Value*); /* from dgram.c */ -extern Tcl_ObjType sockid_type; +extern Tcl_ObjType dgramsockid_type; +typedef struct DgramSocket *DgramSockID; /* from hook.c */ @@ -125,6 +156,11 @@ void obj_updatestr_array(Tcl_Obj *o, const Byte *array, int l); void obj_updatestr_array_prefix(Tcl_Obj *o, const Byte *byte, int l, const char *prefix); +void obj_updatestr_vstringls(Tcl_Obj *o, ...); + /* const char*, int, const char*, int, ..., (const char*)0 */ +void obj_updatestr_string_len(Tcl_Obj *o, const char *str, int l); +void obj_updatestr_string(Tcl_Obj *o, const char *str); + /* from parse.c */ typedef struct { @@ -135,6 +171,11 @@ typedef struct { void fini_hbv(Tcl_Interp *ip, int rc, HBytes_Var *agg); /* from chop.c */ + /* only do_... functions declared in tables.h */ + +/* from ulong.c */ + +Tcl_ObjType ulong_type; /* from enum.c */ @@ -168,7 +209,7 @@ typedef struct { int pad, use_algname; } PadMethod; -Tcl_ObjType blockcipherkey_type; +extern Tcl_ObjType blockcipherkey_type; /* from algtables.c */