diff options
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; + } +} |