aboutsummaryrefslogtreecommitdiffstats
path: root/host/lib/deps/rpclib/include/rpc/msgpack/object_fwd.hpp
diff options
context:
space:
mode:
authorAndrej Rode <andrej.rode@ettus.com>2017-04-03 18:49:58 -0700
committerMartin Braun <martin.braun@ettus.com>2017-12-22 15:03:45 -0800
commit53795c74aead4e6021bc788b788f8ed5b4a0166d (patch)
tree45e4075f3d8ffdee7dff7c72dd665f5c5b0c746c /host/lib/deps/rpclib/include/rpc/msgpack/object_fwd.hpp
parent6a12add1560545438e1bebc05efbafd05aace4f9 (diff)
downloaduhd-53795c74aead4e6021bc788b788f8ed5b4a0166d.tar.gz
uhd-53795c74aead4e6021bc788b788f8ed5b4a0166d.tar.bz2
uhd-53795c74aead4e6021bc788b788f8ed5b4a0166d.zip
uhd: add cut-down rpclib source tree and import tool
Diffstat (limited to 'host/lib/deps/rpclib/include/rpc/msgpack/object_fwd.hpp')
-rw-r--r--host/lib/deps/rpclib/include/rpc/msgpack/object_fwd.hpp203
1 files changed, 203 insertions, 0 deletions
diff --git a/host/lib/deps/rpclib/include/rpc/msgpack/object_fwd.hpp b/host/lib/deps/rpclib/include/rpc/msgpack/object_fwd.hpp
new file mode 100644
index 000000000..d76c48759
--- /dev/null
+++ b/host/lib/deps/rpclib/include/rpc/msgpack/object_fwd.hpp
@@ -0,0 +1,203 @@
+//
+// MessagePack for C++ static resolution routine
+//
+// Copyright (C) 2008-2014 FURUHASHI Sadayuki and KONDO Takatoshi
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#ifndef MSGPACK_OBJECT_FWD_HPP
+#define MSGPACK_OBJECT_FWD_HPP
+
+#include "rpc/msgpack/versioning.hpp"
+#include "rpc/msgpack/zone.hpp"
+#include "rpc/msgpack/object.h"
+
+#include <typeinfo>
+
+namespace clmdep_msgpack {
+
+/// @cond
+MSGPACK_API_VERSION_NAMESPACE(v1) {
+/// @endcond
+
+
+namespace type {
+ enum object_type {
+ NIL = MSGPACK_OBJECT_NIL,
+ BOOLEAN = MSGPACK_OBJECT_BOOLEAN,
+ POSITIVE_INTEGER = MSGPACK_OBJECT_POSITIVE_INTEGER,
+ NEGATIVE_INTEGER = MSGPACK_OBJECT_NEGATIVE_INTEGER,
+ FLOAT = MSGPACK_OBJECT_FLOAT,
+#if defined(MSGPACK_USE_LEGACY_NAME_AS_FLOAT)
+ DOUBLE = MSGPACK_OBJECT_DOUBLE, // obsolete
+#endif // MSGPACK_USE_LEGACY_NAME_AS_FLOAT
+ STR = MSGPACK_OBJECT_STR,
+ BIN = MSGPACK_OBJECT_BIN,
+ ARRAY = MSGPACK_OBJECT_ARRAY,
+ MAP = MSGPACK_OBJECT_MAP,
+ EXT = MSGPACK_OBJECT_EXT
+ };
+}
+
+
+struct object;
+struct object_kv;
+
+struct object_array {
+ uint32_t size;
+ clmdep_msgpack::object* ptr;
+};
+
+struct object_map {
+ uint32_t size;
+ clmdep_msgpack::object_kv* ptr;
+};
+
+struct object_str {
+ uint32_t size;
+ const char* ptr;
+};
+
+struct object_bin {
+ uint32_t size;
+ const char* ptr;
+};
+
+struct object_ext {
+ int8_t type() const { return ptr[0]; }
+ const char* data() const { return &ptr[1]; }
+ uint32_t size;
+ const char* ptr;
+};
+
+
+#if !defined(MSGPACK_USE_CPP03)
+struct object;
+
+namespace adaptor {
+template <typename T, typename Enabler = void>
+struct as;
+} // namespace adaptor
+
+template <typename T>
+struct has_as {
+private:
+ template <typename U>
+ static auto check(U*) ->
+ typename std::is_same<
+ decltype(clmdep_msgpack::adaptor::as<U>()(std::declval<clmdep_msgpack::object>())),
+ T>::type;
+ template <typename>
+ static std::false_type check(...);
+public:
+ using type = decltype(check<T>(nullptr));
+ static constexpr bool value = type::value;
+};
+
+#endif // !defined(MSGPACK_USE_CPP03)
+
+
+struct object {
+ union union_type {
+ bool boolean;
+ uint64_t u64;
+ int64_t i64;
+#if defined(MSGPACK_USE_LEGACY_NAME_AS_FLOAT)
+ double dec; // obsolete
+#endif // MSGPACK_USE_LEGACY_NAME_AS_FLOAT
+ double f64;
+ clmdep_msgpack::object_array array;
+ clmdep_msgpack::object_map map;
+ clmdep_msgpack::object_str str;
+ clmdep_msgpack::object_bin bin;
+ clmdep_msgpack::object_ext ext;
+ };
+
+ clmdep_msgpack::type::object_type type;
+ union_type via;
+
+ bool is_nil() const { return type == clmdep_msgpack::type::NIL; }
+
+#if defined(MSGPACK_USE_CPP03)
+
+ template <typename T>
+ T as() const;
+
+#else // defined(MSGPACK_USE_CPP03)
+
+ template <typename T>
+ typename std::enable_if<clmdep_msgpack::has_as<T>::value, T>::type as() const;
+
+ template <typename T>
+ typename std::enable_if<!clmdep_msgpack::has_as<T>::value, T>::type as() const;
+
+#endif // defined(MSGPACK_USE_CPP03)
+
+ template <typename T>
+ T& convert(T& v) const;
+ template <typename T>
+ T* convert(T* v) const;
+
+ template <typename T>
+ bool convert_if_not_nil(T& v) const;
+
+ object();
+
+ object(const msgpack_object& o);
+
+ template <typename T>
+ explicit object(const T& v);
+
+ template <typename T>
+ object(const T& v, clmdep_msgpack::zone& z);
+
+ // obsolete
+ template <typename T>
+ object(const T& v, clmdep_msgpack::zone* z);
+
+ template <typename T>
+ object& operator=(const T& v);
+
+ operator msgpack_object() const;
+
+ struct with_zone;
+
+private:
+ struct implicit_type;
+
+public:
+ implicit_type convert() const;
+};
+
+class type_error : public std::bad_cast { };
+
+struct object_kv {
+ clmdep_msgpack::object key;
+ clmdep_msgpack::object val;
+};
+
+struct object::with_zone : object {
+ with_zone(clmdep_msgpack::zone& zone) : zone(zone) { }
+ clmdep_msgpack::zone& zone;
+private:
+ with_zone();
+};
+
+/// @cond
+} // MSGPACK_API_VERSION_NAMESPACE(v1)
+/// @endcond
+
+} // namespace clmdep_msgpack
+
+#endif // MSGPACK_OBJECT_FWD_HPP