public override void UnpackReadResult(MessageElementNestedElementList res, vector_uint64_t bufferpos, vector_uint64_t count) { using (res) using (bufferpos) using (count) { PodMultiDimArray res1 = RobotRaconteurNode.s.UnpackPodMultiDimArrayDispose <T>(res); buffer.AssignSubArray(bufferpos.Select(x => (uint)x).ToArray(), res1, new uint[buffer.Dims.Length], count.Select(x => (uint)x).ToArray()); } }
public T UnpackStructure <T>(MessageElementNestedElementList m) { if (m == null) { return(default(T)); } ostruct2 s = new ostruct2(); using (vectorptr_messageelement mm = m.Elements) { s.a1 = MessageElementUtil.UnpackArray <double>(MessageElement.FindElement(mm, "a1")); T st; try { st = (T)((object)s); } catch (InvalidCastException) { throw new DataTypeMismatchException("Wrong structuretype"); } return(st); } }
public override void Write(ulong memorypos, MessageElementNestedElementList buffer, ulong bufferpos, ulong count) { try { using (buffer) { T[] buffer2 = (T[])RobotRaconteurNode.s.UnpackPodArray <T>(buffer); mem.Write(memorypos, buffer2, bufferpos, count); } } catch (Exception e) { using (MessageEntry merr = new MessageEntry()) { RobotRaconteurExceptionUtil.ExceptionToMessageEntry(e, merr); RRDirectorExceptionHelper.SetError(merr, e.ToString()); } } }
public override void Write(vector_uint64_t memorypos, MessageElementNestedElementList buffer, vector_uint64_t bufferpos, vector_uint64_t count) { try { using (buffer) using (memorypos) using (bufferpos) using (count) { PodMultiDimArray buffer2 = RobotRaconteurNode.s.UnpackPodMultiDimArray <T>(buffer); mem.Write(memorypos.ToArray(), buffer2, bufferpos.ToArray(), count.ToArray()); } } catch (Exception e) { using (MessageEntry merr = new MessageEntry()) { RobotRaconteurExceptionUtil.ExceptionToMessageEntry(e, merr); RRDirectorExceptionHelper.SetError(merr, e.ToString()); } } }
public override void UnpackReadResult(MessageElementNestedElementList res, ulong bufferpos, ulong count) { T[] res1 = RobotRaconteurNode.s.UnpackPodArrayDispose <T>(res); Array.Copy(res1, 0, buffer, (long)bufferpos, (long)count); }