logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

zuuid - Class for UUID support class

Authors

       The czmq manual was written by the authors in the AUTHORS file.

Description

       The zuuid class generates UUIDs and provides methods for working with them. If you build CZMQ with
       libuuid, on Unix/Linux, it will use that library. On Windows it will use UuidCreate(). Otherwise it will
       use a random number generator to produce convincing imitations of UUIDs.

       Please add @discuss section in ./../src/zuuid.c.

Example

Fromzuuid_testmethod.

           //  Simple create/destroy test
           assert (ZUUID_LEN == 16);
           assert (ZUUID_STR_LEN == 32);

           zuuid_t *uuid = zuuid_new ();
           assert (uuid);
           assert (zuuid_size (uuid) == ZUUID_LEN);
           assert (strlen (zuuid_str (uuid)) == ZUUID_STR_LEN);
           zuuid_t *copy = zuuid_dup (uuid);
           assert (streq (zuuid_str (uuid), zuuid_str (copy)));

           //  Check set/set_str/export methods
           const char *myuuid = "8CB3E9A9649B4BEF8DE225E9C2CEBB38";
           const char *myuuid2 = "8CB3E9A9-649B-4BEF-8DE2-25E9C2CEBB38";
           const char *myuuid3 = "{8CB3E9A9-649B-4BEF-8DE2-25E9C2CEBB38}";
           const char *myuuid4 = "8CB3E9A9649B4BEF8DE225E9C2CEBB3838";
           int rc = zuuid_set_str (uuid, myuuid);
           assert (rc == 0);
           assert (streq (zuuid_str (uuid), myuuid));
           rc = zuuid_set_str (uuid, myuuid2);
           assert (rc == 0);
           assert (streq (zuuid_str (uuid), myuuid));
           rc = zuuid_set_str (uuid, myuuid3);
           assert (rc == 0);
           assert (streq (zuuid_str (uuid), myuuid));
           rc = zuuid_set_str (uuid, myuuid4);
           assert (rc == -1);
           byte copy_uuid [ZUUID_LEN];
           zuuid_export (uuid, copy_uuid);
           zuuid_set (uuid, copy_uuid);
           assert (streq (zuuid_str (uuid), myuuid));

           //  Check the canonical string format
           assert (streq (zuuid_str_canonical (uuid),
                          "8cb3e9a9-649b-4bef-8de2-25e9c2cebb38"));

           zuuid_destroy (&uuid);
           zuuid_destroy (&copy);

           #if defined (__WINDOWS__)
           zsys_shutdown();
           #endif

Name

       zuuid - Class for UUID support class

Notes

Resources

       Main web site:

       Report bugs to the email <zeromq-dev@lists.zeromq.org[1]>

Synopsis

       //  This is a stable class, and may not change except for emergencies. It
       //  is provided in stable builds.
       //  Create a new UUID object.
       CZMQ_EXPORT zuuid_t *
           zuuid_new (void);

       //  Create UUID object from supplied ZUUID_LEN-octet value.
       CZMQ_EXPORT zuuid_t *
           zuuid_new_from (const byte *source);

       //  Destroy a specified UUID object.
       CZMQ_EXPORT void
           zuuid_destroy (zuuid_t **self_p);

       //  Set UUID to new supplied ZUUID_LEN-octet value.
       CZMQ_EXPORT void
           zuuid_set (zuuid_t *self, const byte *source);

       //  Set UUID to new supplied string value skipping '-' and '{' '}'
       //  optional delimiters. Return 0 if OK, else returns -1.
       CZMQ_EXPORT int
           zuuid_set_str (zuuid_t *self, const char *source);

       //  Return UUID binary data.
       CZMQ_EXPORT const byte *
           zuuid_data (zuuid_t *self);

       //  Return UUID binary size
       CZMQ_EXPORT size_t
           zuuid_size (zuuid_t *self);

       //  Returns UUID as string
       CZMQ_EXPORT const char *
           zuuid_str (zuuid_t *self);

       //  Return UUID in the canonical string format: 8-4-4-4-12, in lower
       //  case. Caller does not modify or free returned value. See
       //  http://en.wikipedia.org/wiki/Universally_unique_identifier
       CZMQ_EXPORT const char *
           zuuid_str_canonical (zuuid_t *self);

       //  Store UUID blob in target array
       CZMQ_EXPORT void
           zuuid_export (zuuid_t *self, byte *target);

       //  Check if UUID is same as supplied value
       CZMQ_EXPORT bool
           zuuid_eq (zuuid_t *self, const byte *compare);

       //  Check if UUID is different from supplied value
       CZMQ_EXPORT bool
           zuuid_neq (zuuid_t *self, const byte *compare);

       //  Make copy of UUID object; if uuid is null, or memory was exhausted,
       //  returns null.
       CZMQ_EXPORT zuuid_t *
           zuuid_dup (zuuid_t *self);

       //  Self test of this class.
       CZMQ_EXPORT void
           zuuid_test (bool verbose);

       Please add '@interface' section in './../src/zuuid.c'.

See Also