-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathstamping.go
27 lines (21 loc) · 903 Bytes
/
stamping.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package uuid
// StampVersion stamps the version and variant of the UUID.
func StampVersionVariant(uuid UUID, version Version, variant Variant) UUID {
versionMask := getVersionMask()
variantMask := getVariantMask(variant)
uuid[VERSION_BYTE_INDEX] = (uuid[VERSION_BYTE_INDEX] & ^versionMask) | byte(version)
uuid[VARIANT_BYTE_INDEX] = (uuid[VARIANT_BYTE_INDEX] & ^variantMask) | byte(variant)
return uuid
}
// batchStampVersionVariant stamps the version and variant of the UUIDs.
func batchStampVersionVariant(uuids []UUID, version Version, variant Variant) []UUID {
versionMask := getVersionMask()
variantMask := getVariantMask(variant)
for i := range uuids {
uuid := uuids[i]
uuid[VERSION_BYTE_INDEX] = (uuid[VERSION_BYTE_INDEX] & ^versionMask) | byte(version)
uuid[VARIANT_BYTE_INDEX] = (uuid[VARIANT_BYTE_INDEX] & ^variantMask) | byte(variant)
uuids[i] = uuid
}
return uuids
}