/// <summary> /// シーケンスの要素を一つ読みだして、読み出しポインタを次へ1つ移動させる /// </summary> /// <param name="elem"></param> /// <param name="reader"></param> #else /// <summary> /// /// </summary> /// <typeparam name="T"></typeparam> /// <param name="elem"></param> /// <param name="reader"></param> #endif public static void REV_READ_SEQ_ELEM <T>(out T elem, CvSeqReader reader) where T : struct { if (reader == null) { throw new ArgumentNullException("reader"); } //Type t = typeof(t); //if (t.IsValueType) { using (StructurePointer <T> elemPtr = new StructurePointer <T>()) { if (reader.Seq.ElemSize != elemPtr.Size) { throw new OpenCvSharpException(); } Util.CopyMemory(elemPtr.Ptr, reader.Ptr, elemPtr.Size); PREV_SEQ_ELEM(elemPtr.Size, reader); elem = elemPtr.ToStructure(); } } /* * else * { * IntPtr elemPtr; * REV_READ_SEQ_ELEM<IntPtr>(out elemPtr, reader); * elem = Util.ToObject<t>(elemPtr); * } * //*/ }