aboutsummaryrefslogtreecommitdiff
path: root/libbutl/uuid-io.cxx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2018-08-22 17:26:08 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2018-08-22 17:36:23 +0200
commitfebb9c275b5247df596876e4eea7fa17b7ec45e7 (patch)
tree214a192cc6b019fb25a659cfdb84601da74438bf /libbutl/uuid-io.cxx
parentf8fc81a5c9fcd986473797df9286c6c9fef683bf (diff)
Add support for UUID generation
Diffstat (limited to 'libbutl/uuid-io.cxx')
-rw-r--r--libbutl/uuid-io.cxx43
1 files changed, 43 insertions, 0 deletions
diff --git a/libbutl/uuid-io.cxx b/libbutl/uuid-io.cxx
new file mode 100644
index 0000000..7eed134
--- /dev/null
+++ b/libbutl/uuid-io.cxx
@@ -0,0 +1,43 @@
+// file : libbutl/uuid-io.cxx -*- C++ -*-
+// copyright : Copyright (c) 2014-2018 Code Synthesis Ltd
+// license : MIT; see accompanying LICENSE file
+
+#include <libbutl/uuid-io.hxx>
+
+#include <ostream>
+#include <istream>
+#include <stdexcept> // invalid_argument
+
+using namespace std;
+
+namespace butl
+{
+ ostream&
+ operator<< (ostream& os, const uuid& u)
+ {
+ return os << u.c_string ().data ();
+ }
+
+ istream&
+ operator>> (istream& is, uuid& u)
+ {
+ u = uuid ();
+
+ char s[37];
+ if (is.read (s, 36))
+ {
+ s[36] ='\0';
+
+ try
+ {
+ u = uuid (s);
+ }
+ catch (const invalid_argument&)
+ {
+ is.setstate (istream::failbit);
+ }
+ }
+
+ return is;
+ }
+}