public virtual bool ReadCsvLineData(List <string> data)
        {
            bool ret = false;

            if (data.Count < 10)
            {
                Console.Out.WriteLine("Insufficient data count. Skipping record.");
                return(ret);
            }

            //ret = _id.SetValue(_id.Header, data[0], true) || ret; // id should be read only
            ret = _actor.SetValue(_actor.Header, data[1], true) || ret;
            //ret = _start.SetValue(_start.Header, data[2], true) || ret; // start should be read only
            ret = _unknown.SetValue(_unknown.Header, data[3], true) || ret;
            data.RemoveRange(0, 4);

            if (_timing != null)
            {
                ret = _timing.ReadCsvData(data) || ret;
            }
            else
            {
                MtpTimingEntry.TrimData(data);
            }
            if (_sentence != null)
            {
                ret = _sentence.ReadCsvData(data) || ret;
            }
            else
            {
                MtpSentence.TrimData(data);
            }

            return(ret);
        }
        private int ReadForTiming(int matchLoc, FileStream esrStream)
        {
            int size = 1024 * 1024;

            for (int pl = 0; pl < esrStream.Length; pl += size)
            {
                var buff      = new byte[size];
                int bytesRead = esrStream.Read(buff, 0, buff.Length);
                matchLoc = indexOfMatch(buff, bytesRead, _id.GetRawBytes());
            }

            if (matchLoc > -1)
            {
                //extract info see: http://pastebin.com/sPTiT3b4
                //  [id] [startframe / framecount] [position?] [position?]
                _timing = new MtpTimingEntry(esrStream, matchLoc);
            }

            esrStream.Close();
            return(matchLoc);
        }
        public void WriteCsv(StreamWriter stream)
        {
            _id.WriteCsv(stream);
            stream.Write(',');
            _actor.WriteCsv(stream);
            stream.Write(',');
            _start.WriteCsv(stream);
            stream.Write(',');
            _unknown.WriteCsv(stream);
            stream.Write(',');

            if (_timing != null)
            {
                _timing.WriteCsv(stream);
            }
            else
            {
                MtpTimingEntry.WriteCsvFiller(stream);
            }

            _sentence.WriteCsv(stream);
        }
        private int ReadForTiming(int matchLoc, FileStream esrStream)
        {
            int size = 1024 * 1024;
            for (int pl = 0; pl < esrStream.Length; pl += size)
            {
                var buff = new byte[size];
                int bytesRead = esrStream.Read(buff, 0, buff.Length);
                matchLoc = indexOfMatch(buff, bytesRead, _id.GetRawBytes());
            }

            if (matchLoc > -1)
            {
                //extract info see: http://pastebin.com/sPTiT3b4
                //  [id] [startframe / framecount] [position?] [position?]
                _timing = new MtpTimingEntry(esrStream, matchLoc);
            }

            esrStream.Close();
            return matchLoc;
        }
 public static void WriteCsvHeaders(StreamWriter stream)
 {
     stream.Write("hId,hActor,hStart,hUnknown,");
     MtpTimingEntry.WriteCsvHeaders(stream);
     MtpSentence.WriteCsvHeaders(stream);
 }