Squashed 'third_party/boostorg/serialization/' content from commit 738695b

Change-Id: I48528198ad1f62b90288d249eb2243d4db02fd5d
git-subtree-dir: third_party/boostorg/serialization
git-subtree-split: 738695b70733f9d592a570fb17a505d6a029b48a
diff --git a/src/xml_archive_exception.cpp b/src/xml_archive_exception.cpp
new file mode 100644
index 0000000..f4ca98c
--- /dev/null
+++ b/src/xml_archive_exception.cpp
@@ -0,0 +1,68 @@
+/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
+// xml_archive_exception.cpp:
+
+// (C) Copyright 2009 Robert Ramey - http://www.rrsd.com . 
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+//  See http://www.boost.org for updates, documentation, and revision history.
+
+#if (defined _MSC_VER) && (_MSC_VER == 1200)
+#  pragma warning (disable : 4786) // too long name, harmless warning
+#endif
+
+
+#include <exception>
+#include <string>
+
+#include <boost/assert.hpp>
+
+#define BOOST_ARCHIVE_SOURCE
+#include <boost/serialization/config.hpp>
+#include <boost/archive/xml_archive_exception.hpp>
+
+namespace boost {
+namespace archive {
+
+BOOST_ARCHIVE_DECL
+xml_archive_exception::xml_archive_exception(
+        exception_code c, 
+        const char * e1,
+        const char * e2
+    ) : 
+        archive_exception(other_exception, e1, e2)
+    {
+        switch(c){
+        case xml_archive_parsing_error:
+            archive_exception::append(0, "unrecognized XML syntax");
+            break;
+        case xml_archive_tag_mismatch:{
+            unsigned int l;
+            l = archive_exception::append(0, "XML start/end tag mismatch");
+            if(NULL != e1){
+                l = archive_exception::append(l, " - ");
+                archive_exception::append(l, e1);
+            }    
+            break;
+        }
+        case xml_archive_tag_name_error:
+            archive_exception::append(0, "Invalid XML tag name");
+            break;
+        default:
+            BOOST_ASSERT(false);
+            archive_exception::append(0, "programming error");
+            break;
+        }
+    }
+    
+BOOST_ARCHIVE_DECL
+xml_archive_exception::xml_archive_exception(xml_archive_exception const & oth) :
+ 	archive_exception(oth)
+	{
+	}
+	
+BOOST_ARCHIVE_DECL xml_archive_exception::~xml_archive_exception() BOOST_NOEXCEPT_OR_NOTHROW {}
+
+} // archive
+} // boost