OpenShot Audio Library | OpenShotAudio
1.0.0
Toggle main menu visibility
Loading...
Searching...
No Matches
juce_Uuid.cpp
1
/*
2
==============================================================================
3
4
This file is part of the JUCE library.
5
Copyright (c) 2022 - Raw Material Software Limited
6
7
JUCE is an open source library subject to commercial or open-source
8
licensing.
9
10
The code included in this file is provided under the terms of the ISC license
11
http://www.isc.org/downloads/software-support-policy/isc-license. Permission
12
To use, copy, modify, and/or distribute this software for any purpose with or
13
without fee is hereby granted provided that the above copyright notice and
14
this permission notice appear in all copies.
15
16
JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
17
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
18
DISCLAIMED.
19
20
==============================================================================
21
*/
22
23
namespace
juce
24
{
25
26
Uuid::Uuid
()
27
{
28
Random
r;
29
30
for
(
size_t
i = 0; i <
sizeof
(uuid); ++i)
31
uuid[i] = (uint8) (r.
nextInt
(256));
32
33
// To make it RFC 4122 compliant, need to force a few bits...
34
uuid[6] = (uuid[6] & 0x0f) | 0x40;
35
uuid[8] = (uuid[8] & 0x3f) | 0x80;
36
}
37
38
Uuid::~Uuid
() noexcept {}
39
40
Uuid::Uuid
(
const
Uuid
& other)
noexcept
41
{
42
memcpy (uuid, other.uuid, sizeof (uuid));
43
}
44
45
Uuid
&
Uuid::operator=
(
const
Uuid
& other)
noexcept
46
{
47
memcpy (uuid, other.uuid, sizeof (uuid));
48
return
*
this
;
49
}
50
51
bool
Uuid::operator== (
const
Uuid
& other)
const
noexcept
{
return
memcmp (uuid, other.uuid, sizeof (uuid)) == 0; }
52
bool
Uuid::operator!= (
const
Uuid& other)
const
noexcept
{
return
! operator== (other); }
53
54
bool
Uuid::operator< (
const
Uuid
& other)
const
noexcept
{
return
compare (other) < 0; }
55
bool
Uuid::operator> (
const
Uuid
& other)
const
noexcept
{
return
compare (other) > 0; }
56
bool
Uuid::operator<= (
const
Uuid
& other)
const
noexcept
{
return
compare (other) <= 0; }
57
bool
Uuid::operator>= (
const
Uuid
& other)
const
noexcept
{
return
compare (other) >= 0; }
58
59
int
Uuid::compare (
Uuid
other)
const
noexcept
60
{
61
for
(
size_t
i = 0; i <
sizeof
(uuid); ++i)
62
if
(
int
diff = uuid[i] - (
int
) other.uuid[i])
63
return
diff > 0 ? 1 : -1;
64
65
return
0;
66
}
67
68
Uuid
Uuid::null
() noexcept
69
{
70
return
Uuid
((
const
uint8*)
nullptr
);
71
}
72
73
bool
Uuid::isNull
() const noexcept
74
{
75
for
(
auto
i : uuid)
76
if
(i != 0)
77
return
false
;
78
79
return
true
;
80
}
81
82
String
Uuid::getHexRegion (
int
start,
int
length)
const
83
{
84
return
String::toHexString
(uuid + start, length, 0);
85
}
86
87
String
Uuid::toString
()
const
88
{
89
return
getHexRegion (0, 16);
90
}
91
92
String
Uuid::toDashedString
()
const
93
{
94
return
getHexRegion (0, 4)
95
+
"-"
+ getHexRegion (4, 2)
96
+
"-"
+ getHexRegion (6, 2)
97
+
"-"
+ getHexRegion (8, 2)
98
+
"-"
+ getHexRegion (10, 6);
99
}
100
101
Uuid::Uuid
(
const
String
& uuidString)
102
{
103
operator=
(uuidString);
104
}
105
106
Uuid
&
Uuid::operator=
(
const
String
& uuidString)
107
{
108
MemoryBlock
mb;
109
mb.
loadFromHexString
(uuidString);
110
mb.
ensureSize
(
sizeof
(uuid),
true
);
111
mb.
copyTo
(uuid, 0,
sizeof
(uuid));
112
return
*
this
;
113
}
114
115
Uuid::Uuid
(
const
uint8*
const
rawData)
noexcept
116
{
117
operator= (rawData);
118
}
119
120
Uuid
&
Uuid::operator=
(
const
uint8*
const
rawData)
noexcept
121
{
122
if
(rawData !=
nullptr
)
123
memcpy (uuid, rawData,
sizeof
(uuid));
124
else
125
zeromem (uuid,
sizeof
(uuid));
126
127
return
*
this
;
128
}
129
130
uint32
Uuid::getTimeLow
() const noexcept {
return
ByteOrder::bigEndianInt
(uuid); }
131
uint16
Uuid::getTimeMid
() const noexcept {
return
ByteOrder::bigEndianShort
(uuid + 4); }
132
uint16
Uuid::getTimeHighAndVersion
() const noexcept {
return
ByteOrder::bigEndianShort
(uuid + 6); }
133
uint8
Uuid::getClockSeqAndReserved
() const noexcept {
return
uuid[8]; }
134
uint8
Uuid::getClockSeqLow
() const noexcept {
return
uuid[9]; }
135
uint64
Uuid::getNode
() const noexcept {
return
(((uint64)
ByteOrder::bigEndianShort
(uuid + 10)) << 32) +
ByteOrder::bigEndianInt
(uuid + 12); }
136
137
uint64
Uuid::hash
() const noexcept
138
{
139
uint64 result = 0;
140
141
for
(
auto
n : uuid)
142
result = ((uint64) 101) * result + n;
143
144
return
result;
145
}
146
147
}
// namespace juce
juce::ByteOrder::bigEndianInt
static constexpr uint32 bigEndianInt(const void *bytes) noexcept
Definition
juce_ByteOrder.h:207
juce::ByteOrder::bigEndianShort
static constexpr uint16 bigEndianShort(const void *bytes) noexcept
Definition
juce_ByteOrder.h:206
juce::MemoryBlock
Definition
juce_MemoryBlock.h:33
juce::MemoryBlock::copyTo
void copyTo(void *destData, int sourceOffset, size_t numBytes) const noexcept
Definition
juce_MemoryBlock.cpp:242
juce::MemoryBlock::loadFromHexString
void loadFromHexString(StringRef sourceHexString)
Definition
juce_MemoryBlock.cpp:319
juce::MemoryBlock::ensureSize
void ensureSize(size_t minimumSize, bool initialiseNewSpaceToZero=false)
Definition
juce_MemoryBlock.cpp:148
juce::Random
Definition
juce_Random.h:35
juce::Random::nextInt
int nextInt() noexcept
Definition
juce_Random.cpp:74
juce::String
Definition
juce_String.h:53
juce::String::toHexString
static String toHexString(IntegerType number)
Definition
juce_String.h:1097
juce::Uuid
Definition
juce_Uuid.h:39
juce::Uuid::hash
uint64 hash() const noexcept
Definition
juce_Uuid.cpp:137
juce::Uuid::Uuid
Uuid()
Definition
juce_Uuid.cpp:26
juce::Uuid::toString
String toString() const
Definition
juce_Uuid.cpp:87
juce::Uuid::operator=
Uuid & operator=(const Uuid &) noexcept
Definition
juce_Uuid.cpp:45
juce::Uuid::~Uuid
~Uuid() noexcept
Definition
juce_Uuid.cpp:38
juce::Uuid::getClockSeqAndReserved
uint8 getClockSeqAndReserved() const noexcept
Definition
juce_Uuid.cpp:133
juce::Uuid::getTimeMid
uint16 getTimeMid() const noexcept
Definition
juce_Uuid.cpp:131
juce::Uuid::getTimeLow
uint32 getTimeLow() const noexcept
Definition
juce_Uuid.cpp:130
juce::Uuid::getClockSeqLow
uint8 getClockSeqLow() const noexcept
Definition
juce_Uuid.cpp:134
juce::Uuid::getTimeHighAndVersion
uint16 getTimeHighAndVersion() const noexcept
Definition
juce_Uuid.cpp:132
juce::Uuid::isNull
bool isNull() const noexcept
Definition
juce_Uuid.cpp:73
juce::Uuid::toDashedString
String toDashedString() const
Definition
juce_Uuid.cpp:92
juce::Uuid::getNode
uint64 getNode() const noexcept
Definition
juce_Uuid.cpp:135
juce::Uuid::null
static Uuid null() noexcept
Definition
juce_Uuid.cpp:68
libopenshot-audio
JuceLibraryCode
modules
juce_core
misc
juce_Uuid.cpp
Generated by
1.18.0