From c4019f7916b6e148e3f9a0e3c7dece422d78c342 Mon Sep 17 00:00:00 2001
From: pans <pans@454eff88-639b-444f-9e54-f578c98de674>
Date: 星期三, 09 八月 2017 12:35:20 +0800
Subject: [PATCH] update capnp

---
 VisitFace/RtspNativeCodec/app/libs/capnproto/include/capnp/schema.h |   28 ++++++++++++++++++++++++++++
 1 files changed, 28 insertions(+), 0 deletions(-)

diff --git a/VisitFace/RtspNativeCodec/app/libs/capnproto/include/capnp/schema.h b/VisitFace/RtspNativeCodec/app/libs/capnproto/include/capnp/schema.h
index d59fa75..cd859f2 100644
--- a/VisitFace/RtspNativeCodec/app/libs/capnproto/include/capnp/schema.h
+++ b/VisitFace/RtspNativeCodec/app/libs/capnproto/include/capnp/schema.h
@@ -599,6 +599,8 @@
 
   template <typename T>
   inline static Type from();
+  template <typename T>
+  inline static Type from(T&& value);
 
   inline schema::Type::Which which() const;
 
@@ -679,6 +681,9 @@
   }
 
   void requireUsableAs(Type expected) const;
+
+  template <typename T, Kind k>
+  struct FromValueImpl;
 
   friend class ListSchema;  // only for requireUsableAs()
 };
@@ -899,6 +904,29 @@
 template <typename T>
 inline Type Type::from() { return Type(Schema::from<T>()); }
 
+template <typename T, Kind k>
+struct Type::FromValueImpl {
+  template <typename U>
+  static inline Type type(U&& value) {
+    return Type::from<T>();
+  }
+};
+
+template <typename T>
+struct Type::FromValueImpl<T, Kind::OTHER> {
+  template <typename U>
+  static inline Type type(U&& value) {
+    // All dynamic types have getSchema().
+    return value.getSchema();
+  }
+};
+
+template <typename T>
+inline Type Type::from(T&& value) {
+  typedef FromAny<kj::Decay<T>> Base;
+  return Type::FromValueImpl<Base, kind<Base>()>::type(kj::fwd<T>(value));
+}
+
 inline bool Type::isVoid   () const { return baseType == schema::Type::VOID     && listDepth == 0; }
 inline bool Type::isBool   () const { return baseType == schema::Type::BOOL     && listDepth == 0; }
 inline bool Type::isInt8   () const { return baseType == schema::Type::INT8     && listDepth == 0; }

--
Gitblit v1.8.0