UUID: add nil value for UUIDs
Add `BLI_uuid_nil()` that returns the nil UUID (used to indicate "not set") and `BLI_uuid_is_nil(uuid)` to do an equality test with the nil value.
This commit is contained in:
@@ -37,6 +37,14 @@ extern "C" {
|
||||
* This function is not thread-safe. */
|
||||
UUID BLI_uuid_generate_random(void);
|
||||
|
||||
/**
|
||||
* Return the UUID nil value, consisting of all-zero fields.
|
||||
*/
|
||||
UUID BLI_uuid_nil(void);
|
||||
|
||||
/** Return true iff this is the nil UUID. */
|
||||
bool BLI_uuid_is_nil(UUID uuid);
|
||||
|
||||
/** Compare two UUIDs, return true if they are equal. */
|
||||
bool BLI_uuid_equal(UUID uuid1, UUID uuid2);
|
||||
|
||||
|
||||
@@ -78,6 +78,17 @@ UUID BLI_uuid_generate_random()
|
||||
return uuid;
|
||||
}
|
||||
|
||||
UUID BLI_uuid_nil(void)
|
||||
{
|
||||
const UUID nil = {0, 0, 0, 0, 0, 0};
|
||||
return nil;
|
||||
}
|
||||
|
||||
bool BLI_uuid_is_nil(UUID uuid)
|
||||
{
|
||||
return BLI_uuid_equal(BLI_uuid_nil(), uuid);
|
||||
}
|
||||
|
||||
bool BLI_uuid_equal(const UUID uuid1, const UUID uuid2)
|
||||
{
|
||||
return std::memcmp(&uuid1, &uuid2, sizeof(uuid1)) == 0;
|
||||
|
||||
@@ -48,6 +48,19 @@ TEST(BLI_uuid, generate_many_random)
|
||||
}
|
||||
}
|
||||
|
||||
TEST(BLI_uuid, nil_value)
|
||||
{
|
||||
const UUID nil_uuid = BLI_uuid_nil();
|
||||
const UUID zeroes_uuid = {0, 0, 0, 0, 0, 0};
|
||||
|
||||
EXPECT_TRUE(BLI_uuid_equal(nil_uuid, zeroes_uuid));
|
||||
EXPECT_TRUE(BLI_uuid_is_nil(nil_uuid));
|
||||
|
||||
std::string buffer(36, '\0');
|
||||
BLI_uuid_format(buffer.data(), nil_uuid);
|
||||
EXPECT_EQ("00000000-0000-0000-0000-000000000000", buffer);
|
||||
}
|
||||
|
||||
TEST(BLI_uuid, equality)
|
||||
{
|
||||
const UUID uuid1 = BLI_uuid_generate_random();
|
||||
|
||||
Reference in New Issue
Block a user