diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2018-08-22 17:26:08 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2018-08-22 17:36:23 +0200 |
commit | febb9c275b5247df596876e4eea7fa17b7ec45e7 (patch) | |
tree | 214a192cc6b019fb25a659cfdb84601da74438bf /libbutl/uuid-io.cxx | |
parent | f8fc81a5c9fcd986473797df9286c6c9fef683bf (diff) |
Add support for UUID generation
Diffstat (limited to 'libbutl/uuid-io.cxx')
-rw-r--r-- | libbutl/uuid-io.cxx | 43 |
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; + } +} |