Type hb: HBytes_Value @ Init hb hbytes_sentinel(&@); Type hbv: HBytes_Var @ Init hbv @.hb=0; @.obj=0; @.var=0; Fini hbv fini_hbv(ip, rc, &@); Type sockaddr: SockAddr_Value @ Init sockaddr sockaddr_clear(&@); Type sockid: DgramSockID @ Type ulong: unsigned long @ H-Include "hbytes.h" Table toplevel TopLevel_Command hbytes subcmd enum(HBytes_SubCommand, "hbytes subcommand") ... obj dgram-socket subcmd enum(DgramSocket_SubCommand,"dgram-socket subcommand") ... obj ulong subcmd enum(ULong_SubCommand,"ulong subcommand") ... obj Table ulong ULong_SubCommand shift right charfrom("lr", "shift direction") v ulong bits int => ulong mask a ulong b ulong => ulong compare a ulong b ulong => int ul2int v ulong => int int2ul v int => ulong ul2bitfields value ulong ... obj => int bitfields2ul base ulong ... obj => ulong Table hbytes HBytes_SubCommand raw2h binary obj => hb h2raw hex hb => obj ulong2h value ulong => hb h2ulong hex hb => ulong ushort2h value ulong => hb h2ushort hex hb => ulong length v hb => int compare a hb b hb => int range v hb start int size int => hb prepend v hbv ... str append v hbv ... str rep-info v obj => obj concat ... str => hb unprepend v hbv length int => hb unappend v hbv length int => hb chopto v hbv length int => hb pkcs5 meth enum(PadMethod, "hbytes pad subcommand") v hbv block obj => int blockcipher encrypt charfrom("de","encrypt/decrypt") v hbv alg enum(BlockCipherAlgInfo, "alg") key obj mode enum(BlockCipherModeInfo, "mode") ?iv hb => hb hash alg enum(HashAlgInfo, "hash alg") message hb => hb hmac alg enum(HashAlgInfo, "hash alg for hmac") message hb key obj ?maclen obj => hb zeroes length int => hb random length int => hb Table dgram_socket DgramSocket_SubCommand create local sockaddr => sockid close sock sockid transmit sock sockid data hb remote sockaddr on-receive sock sockid ?script obj