]> Cypherpunks repositories - keks.git/commitdiff
Hexlet workability
authorSergey Matveev <stargrave@stargrave.org>
Wed, 26 Mar 2025 06:39:39 +0000 (09:39 +0300)
committerSergey Matveev <stargrave@stargrave.org>
Wed, 26 Mar 2025 06:39:39 +0000 (09:39 +0300)
c/cmd/deatomiser/deatomiser.c
c/cmd/test-vector/test-vector.c
c/doc/atom.texi
c/lib/atom.h
c/lib/dec.c
c/lib/enc.c
c/lib/enc.h
c/lib/items.c

index 6e6c5a8e9da8270098afe6a493cfa4657ee9dd146e87d6c2eb4986150480155d..528621eafe6affbba4e9ccb2025573f648a499be1e1fa8f60db493a54ca11eba 100644 (file)
@@ -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:
index d16c1412357ed88808950ecb8478f6afdc1e73e54ded001cb8dbbc4bf254b557..f49862fd6f54cd2fd8b86cbdcd0be35f483178236e0ebd4bbd7aa675dce10f77 100644 (file)
@@ -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++;
index 51ba86c2f0330faa474000415e837d0cdb21a22ad37b17da4447246fdd311f6f..9f7074b2bede8496acf60a77f233bec54fff8f3ce3113d71974d561e32d75424 100644 (file)
@@ -14,7 +14,7 @@
 @anchor{KEKSAtomNILEncode}
 @DOCSTRING KEKSAtomNILEncode@
 @DOCSTRING KEKSAtomBoolEncode@
-@DOCSTRING KEKSAtomUUIDEncode@
+@DOCSTRING KEKSAtomHexletEncode@
 @DOCSTRING KEKSAtomMagicEncode@
 @DOCSTRING KEKSAtomUintEncode@
 @DOCSTRING KEKSAtomSintEncode@
index a0f91f5db34d9c7053b47174fefd91155f2a7c10721553d215e3dab411efa5c5..6ab480f71fdb2bb92664a3db433b853692283c518c5f22d4c1df206b5ce75c3f 100644 (file)
@@ -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 {
index 93a2f2a23c4671e46e312a70a37b9015cb3cfd6769f38cd79aff2ddc6de4a9f2..f5048dff09f2cf9f2249c324cec8fe13f4ef3f9d102f56a76463407514c20bd5 100644 (file)
@@ -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;
index ff30afc614c96807633edd401661b3408d6801a8cab1833201323e4abba4dc37..a3b2e7497a2d35dae7d9f5343c14139a58e10ffebc59f8394aec5a584e33779f 100644 (file)
@@ -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;
 }
index 1256646a87ccbef79ee6e5f305782a7399c12b6042c69bf858cb6b135fb81ab5..908eb252e785ca42e1713f242b705b6a05458ff1d6ab4fca735d84c365f316f7 100644 (file)
@@ -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,
index 4483c35b9e303a72cc3ae77c2349ab79a9442723bbc3c9e66de34316eeb23d9f..d19501dd65ca3fe8b18036c3f9353c8a631a784099918c086534bc7b4f1c7443 100644 (file)
@@ -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(