aboutsummaryrefslogtreecommitdiff
path: root/xsd/cxx/option-types.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'xsd/cxx/option-types.cxx')
-rw-r--r--xsd/cxx/option-types.cxx49
1 files changed, 49 insertions, 0 deletions
diff --git a/xsd/cxx/option-types.cxx b/xsd/cxx/option-types.cxx
new file mode 100644
index 0000000..4dc2aef
--- /dev/null
+++ b/xsd/cxx/option-types.cxx
@@ -0,0 +1,49 @@
+// file : xsd/cxx/option-types.cxx
+// author : Boris Kolpackov <boris@codesynthesis.com>
+// copyright : Copyright (c) 2005-2011 Code Synthesis Tools CC
+// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
+
+#include <istream>
+#include <ostream>
+
+#include <cxx/option-types.hxx>
+
+using namespace std;
+
+namespace CXX
+{
+ //
+ // cxx_version
+ //
+
+ static const char* cxx_version_[] =
+ {
+ "c++98",
+ "c++11"
+ };
+
+ string cxx_version::
+ string () const
+ {
+ return cxx_version_[v_];
+ }
+
+ istream&
+ operator>> (istream& is, cxx_version& v)
+ {
+ string s;
+ is >> s;
+
+ if (!is.fail ())
+ {
+ if (s == "c++98")
+ v = cxx_version::cxx98;
+ else if (s == "c++11")
+ v = cxx_version::cxx11;
+ else
+ is.setstate (istream::failbit);
+ }
+
+ return is;
+ }
+}