123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- /*
- ==============================================================================
- This file is part of the juce_core module of the JUCE library.
- Copyright (c) 2013 - Raw Material Software Ltd.
- Permission to use, copy, modify, and/or distribute this software for any purpose with
- or without fee is hereby granted, provided that the above copyright notice and this
- permission notice appear in all copies.
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD
- TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN
- NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
- DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
- IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- ------------------------------------------------------------------------------
- NOTE! This permissive ISC license applies ONLY to files within the juce_core module!
- All other JUCE modules are covered by a dual GPL/commercial license, so if you are
- using any other modules, be sure to check that you also comply with their license.
- For more details, visit www.juce.com
- ==============================================================================
- */
- #ifndef JUCE_UUID_H_INCLUDED
- #define JUCE_UUID_H_INCLUDED
- //==============================================================================
- /**
- A universally unique 128-bit identifier.
- This class generates very random unique numbers. It's vanishingly unlikely
- that two identical UUIDs would ever be created by chance. The values are
- formatted to meet the RFC 4122 version 4 standard.
- The class includes methods for saving the ID as a string or as raw binary data.
- */
- class JUCE_API Uuid
- {
- public:
- //==============================================================================
- /** Creates a new unique ID, compliant with RFC 4122 version 4. */
- Uuid();
- /** Destructor. */
- ~Uuid() noexcept;
- /** Creates a copy of another UUID. */
- Uuid (const Uuid&) noexcept;
- /** Copies another UUID. */
- Uuid& operator= (const Uuid&) noexcept;
- //==============================================================================
- /** Returns true if the ID is zero. */
- bool isNull() const noexcept;
- /** Returns a null Uuid object. */
- static Uuid null() noexcept;
- bool operator== (const Uuid&) const noexcept;
- bool operator!= (const Uuid&) const noexcept;
- //==============================================================================
- /** Returns a stringified version of this UUID.
- A Uuid object can later be reconstructed from this string using operator= or
- the constructor that takes a string parameter.
- @returns a 32 character hex string.
- */
- String toString() const;
- /** Returns a stringified version of this UUID, separating it into sections with dashes.
- @returns a string in the format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
- */
- String toDashedString() const;
- /** Creates an ID from an encoded string version.
- @see toString
- */
- Uuid (const String& uuidString);
- /** Copies from a stringified UUID.
- The string passed in should be one that was created with the toString() method.
- */
- Uuid& operator= (const String& uuidString);
- //==============================================================================
- /** Returns a pointer to the internal binary representation of the ID.
- This is an array of 16 bytes. To reconstruct a Uuid from its data, use
- the constructor or operator= method that takes an array of uint8s.
- */
- const uint8* getRawData() const noexcept { return uuid; }
- /** Creates a UUID from a 16-byte array.
- @see getRawData
- */
- Uuid (const uint8* rawData) noexcept;
- /** Sets this UUID from 16-bytes of raw data. */
- Uuid& operator= (const uint8* rawData) noexcept;
- private:
- //==============================================================================
- uint8 uuid[16];
- String getHexRegion (int, int) const;
- JUCE_LEAK_DETECTOR (Uuid)
- };
- #endif // JUCE_UUID_H_INCLUDED
|