コード例 #1
0
ファイル: Macro.cs プロジェクト: tuanthng/opencvsharp
        /// <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);
             * }
             * //*/
        }