cgv
Loading...
Searching...
No Matches
guid.cxx
1#include "guid.h"
2
3namespace cgv {
4 namespace utils {
5 guid guid_from_string(const std::string& str)
6 {
7 guid id;
8 sscanf(str.c_str(), "{%8x-%4hx-%4hx-%2hhx%2hhx-%2hhx%2hhx%2hhx%2hhx%2hhx%2hhx}",
9 &id.d1, &id.d2, &id.d3, &id.d4[0], &id.d4[1], &id.d4[2], &id.d4[3], &id.d4[4], &id.d4[5], &id.d4[6], &id.d4[7]);
10 return id;
11 }
12 std::string to_string(const guid& id)
13 {
14 char str[39];
15 snprintf(str, sizeof(str), "{%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}",
16 id.d1, id.d2, id.d3, id.d4[0], id.d4[1], id.d4[2], id.d4[3], id.d4[4], id.d4[5], id.d4[6], id.d4[7]);
17 return std::string(str);
18 }
19 bool operator < (const guid& g1, const guid& g2)
20 {
21 const uint64_t& hi1 = reinterpret_cast<const uint64_t&>(g1.d1);
22 const uint64_t& lo1 = reinterpret_cast<const uint64_t&>(g1.d4[0]);
23 const uint64_t& hi2 = reinterpret_cast<const uint64_t&>(g2.d1);
24 const uint64_t& lo2 = reinterpret_cast<const uint64_t&>(g2.d4[0]);
25 return hi1 < hi2 || (hi1 == hi2 && lo1 < lo2);
26 }
27 bool operator == (const guid& g1, const guid& g2)
28 {
29 const uint64_t& hi1 = reinterpret_cast<const uint64_t&>(g1.d1);
30 const uint64_t& lo1 = reinterpret_cast<const uint64_t&>(g1.d4[0]);
31 const uint64_t& hi2 = reinterpret_cast<const uint64_t&>(g2.d1);
32 const uint64_t& lo2 = reinterpret_cast<const uint64_t&>(g2.d4[0]);
33 return hi1 == hi2 && lo1 == lo2;
34 }
35 }
36}
std::string to_string(const std::string &v, unsigned int w, unsigned int p, bool)
specialization of conversion from string to strings
guid guid_from_string(const std::string &str)
convert string to guid
Definition guid.cxx:5
bool operator==(const guid &g1, const guid &g2)
comparison operation
Definition guid.cxx:27
bool operator<(const guid &g1, const guid &g2)
comparison operation
Definition guid.cxx:19
the cgv namespace
Definition print.h:11
simple struct to represent guid
Definition guid.h:12