示例#1
0
 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);
            }
        }
示例#3
0
 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());
         }
     }
 }
示例#4
0
 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());
         }
     }
 }
示例#5
0
 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);
 }