summaryrefslogtreecommitdiff
path: root/Source/cmUuid.h
diff options
context:
space:
mode:
authorNils Gladitz <nilsgladitz@gmail.com>2014-08-25 22:44:06 +0200
committerNils Gladitz <nilsgladitz@gmail.com>2014-08-28 15:13:54 +0200
commit328e8694335ca76fb29ebd5fafe4456a89ac25c7 (patch)
treeebd88c211455ff0a7a1ce8081b1c48bcd01fc214 /Source/cmUuid.h
parentc2a47a9ac3fef38d9da6260725708c2246c1b9c1 (diff)
downloadcmake-328e8694335ca76fb29ebd5fafe4456a89ac25c7.tar.gz
StringUuid: Implement new string(UUID) sub-command.
Diffstat (limited to 'Source/cmUuid.h')
-rw-r--r--Source/cmUuid.h55
1 files changed, 55 insertions, 0 deletions
diff --git a/Source/cmUuid.h b/Source/cmUuid.h
new file mode 100644
index 0000000000..0dda357588
--- /dev/null
+++ b/Source/cmUuid.h
@@ -0,0 +1,55 @@
+/*============================================================================
+ CMake - Cross Platform Makefile Generator
+ Copyright 2014 Kitware, Inc., Insight Software Consortium
+
+ Distributed under the OSI-approved BSD License (the "License");
+ see accompanying file Copyright.txt for details.
+
+ This software is distributed WITHOUT ANY WARRANTY; without even the
+ implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ See the License for more information.
+============================================================================*/
+#ifndef cmUuid_h
+#define cmUuid_h
+
+#include "cmStandardIncludes.h"
+
+/** \class cmUuid
+ * \brief Utility class to generate UUIDs as defined by RFC4122
+ *
+ */
+class cmUuid
+{
+public:
+ cmUuid();
+
+ std::string FromMd5(std::vector<unsigned char> const& uuidNamespace,
+ std::string const& name) const;
+
+ std::string FromSha1(std::vector<unsigned char> const& uuidNamespace,
+ std::string const& name) const;
+
+ bool StringToBinary(std::string const& input,
+ std::vector<unsigned char> &output) const;
+
+private:
+ std::string ByteToHex(unsigned char byte) const;
+
+ void CreateHashInput(std::vector<unsigned char> const& uuidNamespace,
+ std::string const& name, std::vector<unsigned char> &output) const;
+
+ std::string FromDigest(const unsigned char* digest,
+ unsigned char version) const;
+
+ bool StringToBinaryImpl(std::string const& input,
+ std::vector<unsigned char> &output) const;
+
+ std::string BinaryToString(const unsigned char* input) const;
+
+ bool IntFromHexDigit(char input, char& output) const;
+
+ std::vector<int> Groups;
+};
+
+
+#endif