From 5dd9eb1f679124e7cddd12fa17ca1a58ae468e85 Mon Sep 17 00:00:00 2001 From: houxiao <houxiao@454eff88-639b-444f-9e54-f578c98de674> Date: 星期三, 02 八月 2017 10:23:33 +0800 Subject: [PATCH] panshen add capnproto lib --- VisitFace/RtspNativeCodec/app/libs/capnproto/include/capnp/dynamic.h | 20 ++++++++++++++++++++ 1 files changed, 20 insertions(+), 0 deletions(-) diff --git a/VisitFace/RtspNativeCodec/app/libs/capnproto/include/dynamic.h b/VisitFace/RtspNativeCodec/app/libs/capnproto/include/capnp/dynamic.h similarity index 98% rename from VisitFace/RtspNativeCodec/app/libs/capnproto/include/dynamic.h rename to VisitFace/RtspNativeCodec/app/libs/capnproto/include/capnp/dynamic.h index fcefcc3..58192d0 100644 --- a/VisitFace/RtspNativeCodec/app/libs/capnproto/include/dynamic.h +++ b/VisitFace/RtspNativeCodec/app/libs/capnproto/include/capnp/dynamic.h @@ -179,6 +179,8 @@ template <typename T, typename = kj::EnableIf<kind<FromReader<T>>() == Kind::STRUCT>> inline Reader(T&& value): Reader(toDynamic(value)) {} + inline operator AnyStruct::Reader() const { return AnyStruct::Reader(reader); } + inline MessageSize totalSize() const { return reader.totalSize().asPublic(); } template <typename T> @@ -234,6 +236,7 @@ friend class Orphan<DynamicStruct>; friend class Orphan<DynamicValue>; friend class Orphan<AnyPointer>; + friend class AnyStruct::Reader; }; class DynamicStruct::Builder { @@ -245,6 +248,8 @@ template <typename T, typename = kj::EnableIf<kind<FromBuilder<T>>() == Kind::STRUCT>> inline Builder(T&& value): Builder(toDynamic(value)) {} + + inline operator AnyStruct::Reader() { return AnyStruct::Builder(builder); } inline MessageSize totalSize() const { return asReader().totalSize(); } @@ -323,6 +328,7 @@ friend class Orphan<DynamicStruct>; friend class Orphan<DynamicValue>; friend class Orphan<AnyPointer>; + friend class AnyStruct::Builder; }; class DynamicStruct::Pipeline { @@ -363,6 +369,8 @@ template <typename T, typename = kj::EnableIf<kind<FromReader<T>>() == Kind::LIST>> inline Reader(T&& value): Reader(toDynamic(value)) {} + + inline operator AnyList::Reader() const { return AnyList::Reader(reader); } template <typename T> typename T::Reader as() const; @@ -406,6 +414,8 @@ template <typename T, typename = kj::EnableIf<kind<FromBuilder<T>>() == Kind::LIST>> inline Builder(T&& value): Builder(toDynamic(value)) {} + + inline operator AnyList::Builder() { return AnyList::Builder(builder); } template <typename T> typename T::Builder as(); @@ -1516,6 +1526,16 @@ return AnyStruct::Builder(builder); } +template <> +inline DynamicStruct::Reader AnyStruct::Reader::as<DynamicStruct>(StructSchema schema) const { + return DynamicStruct::Reader(schema, _reader); +} + +template <> +inline DynamicStruct::Builder AnyStruct::Builder::as<DynamicStruct>(StructSchema schema) { + return DynamicStruct::Builder(schema, _builder); +} + template <typename T> typename T::Pipeline DynamicStruct::Pipeline::releaseAs() { static_assert(kind<T>() == Kind::STRUCT, -- Gitblit v1.8.0