contrib-json_spirit:  adding library to reduce external dependencies

moreover, the current macports version is not usable due to a missing
header

Change-Id: I7cd80ecf17b1ca50e5c71badba56d0bf3d390f4f
diff --git a/contrib/json_spirit/json_spirit_error_position.h b/contrib/json_spirit/json_spirit_error_position.h
new file mode 100644
index 0000000..e6f63bb
--- /dev/null
+++ b/contrib/json_spirit/json_spirit_error_position.h
@@ -0,0 +1,54 @@
+#ifndef JSON_SPIRIT_ERROR_POSITION

+#define JSON_SPIRIT_ERROR_POSITION

+

+//          Copyright John W. Wilkinson 2007 - 2011

+// Distributed under the MIT License, see accompanying file LICENSE.txt

+

+// json spirit version 4.05

+

+#if defined(_MSC_VER) && (_MSC_VER >= 1020)

+# pragma once

+#endif

+

+#include <string>

+

+namespace json_spirit

+{

+    // An Error_position exception is thrown by the "read_or_throw" functions below on finding an error.

+    // Note the "read_or_throw" functions are around 3 times slower than the standard functions "read" 

+    // functions that return a bool.

+    //

+    struct Error_position

+    {

+        Error_position();

+        Error_position( unsigned int line, unsigned int column, const std::string& reason );

+        bool operator==( const Error_position& lhs ) const;

+        unsigned int line_;

+        unsigned int column_;

+        std::string reason_;

+    };

+

+    inline Error_position::Error_position()

+    :   line_( 0 )

+    ,   column_( 0 )

+    {

+    }

+

+    inline Error_position::Error_position( unsigned int line, unsigned int column, const std::string& reason )

+    :   line_( line )

+    ,   column_( column )

+    ,   reason_( reason )

+    {

+    }

+

+    inline bool Error_position::operator==( const Error_position& lhs ) const

+    {

+        if( this == &lhs ) return true;

+

+        return ( reason_ == lhs.reason_ ) &&

+               ( line_   == lhs.line_ ) &&

+               ( column_ == lhs.column_ ); 

+    }

+}

+

+#endif