From: Sergey Matveev Date: Wed, 26 Mar 2025 06:39:39 +0000 (+0300) Subject: Hexlet workability X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=668b749624da5ca623fac53048bee3e66541ba158424d7cd28b7c28ecb7966b4;p=keks.git Hexlet workability --- diff --git a/c/cmd/deatomiser/deatomiser.c b/c/cmd/deatomiser/deatomiser.c index 6e6c5a8..528621e 100644 --- a/c/cmd/deatomiser/deatomiser.c +++ b/c/cmd/deatomiser/deatomiser.c @@ -76,8 +76,8 @@ main(int argc, char **argv) case KEKSItemTrue: fputs("TRUE\n", stdout); break; - case KEKSItemUUID: - UUIDPrint(atom.v.uuid); + case KEKSItemHexlet: + UUIDPrint(atom.v.hexlet); fputs("\n", stdout); break; case KEKSItemMagic: diff --git a/c/cmd/test-vector/test-vector.c b/c/cmd/test-vector/test-vector.c index d16c141..f49862f 100644 --- a/c/cmd/test-vector/test-vector.c +++ b/c/cmd/test-vector/test-vector.c @@ -37,6 +37,16 @@ main(void) adder(KEKSAtomMapEncode(&Got, buf + Off, len - Off)); // . + { + adder(KEKSAtomStrEncode( + &Got, buf + Off, len - Off, (const unsigned char *)"ip", 2)); + memcpy( + bin, + (const unsigned char + *)"\x20\x01\x0d\xb8\x85\xa3\x08\xd3\x13\x19\x8a\x2e\x03\x70\x73\x48", + 16); + adder(KEKSAtomHexletEncode(&Got, buf + Off, len - Off, bin)); + } adder( KEKSAtomStrEncode(&Got, buf + Off, len - Off, (const unsigned char *)"nil", 3)); adder(KEKSAtomNILEncode(&Got, buf + Off, len - Off)); @@ -190,7 +200,7 @@ main(void) adder(KEKSAtomStrEncode( &Got, buf + Off, len - Off, (const unsigned char *)"uuid", 4)); - adder(KEKSAtomUUIDEncode( + adder(KEKSAtomHexletEncode( &Got, buf + Off, len - Off, @@ -259,7 +269,7 @@ main(void) adder(KEKSAtomBlobEncode(&Got, buf + Off, len - Off, 123)); adder(KEKSAtomBinEncode(&Got, buf + Off, len - Off, NULL, 0)); memset(bin, '\x00', 16); - adder(KEKSAtomUUIDEncode(&Got, buf + Off, len - Off, bin)); + adder(KEKSAtomHexletEncode(&Got, buf + Off, len - Off, bin)); { buf[Off] = KEKSAtomTAI64; Off++; diff --git a/c/doc/atom.texi b/c/doc/atom.texi index 51ba86c..9f7074b 100644 --- a/c/doc/atom.texi +++ b/c/doc/atom.texi @@ -14,7 +14,7 @@ @anchor{KEKSAtomNILEncode} @DOCSTRING KEKSAtomNILEncode@ @DOCSTRING KEKSAtomBoolEncode@ -@DOCSTRING KEKSAtomUUIDEncode@ +@DOCSTRING KEKSAtomHexletEncode@ @DOCSTRING KEKSAtomMagicEncode@ @DOCSTRING KEKSAtomUintEncode@ @DOCSTRING KEKSAtomSintEncode@ diff --git a/c/lib/atom.h b/c/lib/atom.h index a0f91f5..6ab480f 100644 --- a/c/lib/atom.h +++ b/c/lib/atom.h @@ -9,7 +9,7 @@ enum KEKSAtomType { KEKSAtomNIL = 0x01, KEKSAtomFalse = 0x02, KEKSAtomTrue = 0x03, - KEKSAtomUUID = 0x04, + KEKSAtomHexlet = 0x04, KEKSAtomList = 0x08, KEKSAtomMap = 0x09, KEKSAtomBlob = 0x0B, @@ -38,7 +38,7 @@ enum KEKSAtomType { // @item KEKSItemNIL // @item KEKSItemFalse // @item KEKSItemTrue -// @item KEKSItemUUID +// @item KEKSItemHexlet // @item KEKSItemPint -- positive integer // @item KEKSItemNint -- negative integer // @item KEKSItemList @@ -57,7 +57,7 @@ enum KEKSItemType { KEKSItemNIL, KEKSItemFalse, KEKSItemTrue, - KEKSItemUUID, + KEKSItemHexlet, KEKSItemPint, KEKSItemNint, KEKSItemList, @@ -78,8 +78,8 @@ enum KEKSItemType { // @item .typ // High level @ref{KEKSItemType, type} of the atom's value. As a rule // you should look solely on it. -// @item .v.uuid -// Pointer to 16-byte UUID value. +// @item .v.hexlet +// Pointer to 16-byte hexlet value. // @item .v.pint // Value of the positive integer. // @item .v.nint @@ -103,7 +103,7 @@ enum KEKSItemType { // @end deftp struct KEKSAtom { union { - const unsigned char *uuid; + const unsigned char *hexlet; uint64_t pint; int64_t nint; struct { diff --git a/c/lib/dec.c b/c/lib/dec.c index 93a2f2a..f5048df 100644 --- a/c/lib/dec.c +++ b/c/lib/dec.c @@ -109,13 +109,13 @@ KEKSAtomDecode( // NOLINT(misc-no-recursion) case KEKSAtomTrue: atom->typ = KEKSItemTrue; break; - case KEKSAtomUUID: - atom->typ = KEKSItemUUID; + case KEKSAtomHexlet: + atom->typ = KEKSItemHexlet; (*got) += 16; if (len < (*got)) { return KEKSErrNotEnough; } - atom->v.uuid = buf + 1; + atom->v.hexlet = buf + 1; break; case KEKSAtomMagic: atom->typ = KEKSItemMagic; diff --git a/c/lib/enc.c b/c/lib/enc.c index ff30afc..a3b2e74 100644 --- a/c/lib/enc.c +++ b/c/lib/enc.c @@ -56,7 +56,7 @@ KEKSAtomBoolEncode(size_t *len, unsigned char *buf, const size_t cap, const bool } bool -KEKSAtomUUIDEncode( +KEKSAtomHexletEncode( size_t *len, unsigned char *buf, const size_t cap, @@ -66,7 +66,7 @@ KEKSAtomUUIDEncode( if (cap < (1 + 16)) { return false; } - buf[0] = KEKSAtomUUID; + buf[0] = KEKSAtomHexlet; memcpy(buf + 1, v, 16); return true; } diff --git a/c/lib/enc.h b/c/lib/enc.h index 1256646..908eb25 100644 --- a/c/lib/enc.h +++ b/c/lib/enc.h @@ -35,15 +35,15 @@ KEKSAtomNILEncode(size_t *len, unsigned char *buf, const size_t cap); bool KEKSAtomBoolEncode(size_t *len, unsigned char *buf, const size_t cap, const bool v); -// TEXINFO: KEKSAtomUUIDEncode -// @deftypefun bool KEKSAtomUUIDEncode @ +// TEXINFO: KEKSAtomHexletEncode +// @deftypefun bool KEKSAtomHexletEncode @ // (size_t *len, unsigned char *buf, const size_t cap, const unsigned char v[16]) -// Encode UUID atom in provided @var{buf} with capacity of @var{cap}. +// Encode hexlet atom in provided @var{buf} with capacity of @var{cap}. // In case of success, true is returned and @var{len} will hold how many // bytes were written to buffer. // @end deftypefun bool -KEKSAtomUUIDEncode( +KEKSAtomHexletEncode( size_t *len, unsigned char *buf, const size_t cap, diff --git a/c/lib/items.c b/c/lib/items.c index 4483c35..d19501d 100644 --- a/c/lib/items.c +++ b/c/lib/items.c @@ -305,8 +305,8 @@ KEKSItemsEncode( // NOLINT(misc-no-recursion) case KEKSItemTrue: ok = KEKSAtomBoolEncode(&got, buf + *off, cap - (*off), true); break; - case KEKSItemUUID: - ok = KEKSAtomUUIDEncode(&got, buf + *off, cap - (*off), item->atom.v.uuid); + case KEKSItemHexlet: + ok = KEKSAtomHexletEncode(&got, buf + *off, cap - (*off), item->atom.v.hexlet); break; case KEKSItemMagic: ok = KEKSAtomMagicEncode(