public T Deserialize <T>(pb::MessageParser <T> parser) where T : pb::IMessage <T> { var bytes = new byte[_length]; Marshal.Copy(_str, bytes, 0, bytes.Length); return(parser.ParseFrom(bytes)); }
static Func <byte[], T> DeserializerFn(pb::MessageParser <T> parser) { return((serialized) => { pb::CodedInputStream inStream = new pb::CodedInputStream(serialized); return parser.ParseFrom(inStream); }); }
public static T DeserializeProto <T>(IntPtr ptr, pb::MessageParser <T> parser) where T : pb::IMessage <T> { var serializedProto = Marshal.PtrToStructure <SerializedProto>(ptr); var bytes = new byte[serializedProto.length]; Marshal.Copy(serializedProto.str, bytes, 0, bytes.Length); return(parser.ParseFrom(bytes)); }
/// <summary> /// </summary> public static CalculatorGraphConfig ParseFromTextFormat(this pb::MessageParser <CalculatorGraphConfig> parser, string configText) { UnsafeNativeMethods.mp_api__ConvertFromCalculatorGraphConfigTextFormat(configText, out var serializedProtoPtr).Assert(); var config = Protobuf.DeserializeProto(serializedProtoPtr, CalculatorGraphConfig.Parser); UnsafeNativeMethods.mp_api_SerializedProto__delete(serializedProtoPtr); return(config); }
public static CalculatorGraphConfig ParseFromTextFormat(this pb::MessageParser <CalculatorGraphConfig> _, string configText) { if (UnsafeNativeMethods.mp_api__ConvertFromCalculatorGraphConfigTextFormat(configText, out var serializedProto)) { var config = serializedProto.Deserialize(CalculatorGraphConfig.Parser); serializedProto.Dispose(); return(config); } throw new MediaPipeException("Failed to parse config text. See error logs for more details"); }
public static T FromPtr <T>(IntPtr ptr, pb::MessageParser <T> parser) where T : pb::IMessage <T> { var inner = Marshal.PtrToStructure <SerializedProtoInner>(ptr); var bytes = new byte[inner.length]; unsafe { Marshal.Copy((IntPtr)inner.serializedStr, bytes, 0, inner.length); } return(parser.ParseFrom(bytes)); }
public static List <T> DeserializeProtoVector <T>(IntPtr ptr, pb::MessageParser <T> parser) where T : pb::IMessage <T> { var serializedProtoVector = Marshal.PtrToStructure <SerializedProtoVector>(ptr); var protos = new List <T>(serializedProtoVector.size); unsafe { byte **protoPtr = (byte **)serializedProtoVector.data; for (var i = 0; i < serializedProtoVector.size; i++) { protos.Add(Protobuf.DeserializeProto <T>((IntPtr)(*protoPtr++), parser)); } } return(protos); }
public static List <T> FromPtr <T>(IntPtr ptr, pb::MessageParser <T> parser) where T : pb::IMessage <T> { var inner = Marshal.PtrToStructure <SerializedProtoVectorInner>(ptr); var protos = new List <T>(inner.size); unsafe { var arr = inner.data; for (var i = 0; i < inner.size; i++) { protos.Add(SerializedProto.FromPtr <T>((IntPtr)(*arr++), parser)); } } return(protos); }
public List <T> Deserialize <T>(pb::MessageParser <T> parser) where T : pb::IMessage <T> { var protos = new List <T>(size); unsafe { SerializedProto *protoPtr = (SerializedProto *)data; for (var i = 0; i < size; i++) { var serializedProto = Marshal.PtrToStructure <SerializedProto>((IntPtr)protoPtr++); protos.Add(serializedProto.Deserialize <T>(parser)); } } return(protos); }
public ProtoMarshaller(pb::MessageParser <T> parser) : base(ProtoMarshaller <T> .Serializer, ProtoMarshaller <T> .DeserializerFn(parser)) { }