using System; using System.Collections; using System.Collections.Generic; using Int8 = System.SByte; using UInt8 = System.Byte; using ViArrayIdx = System.Int32; public class ViStringIStream { public int RemainLength { get { return _buffer.Count - _offset; } } public void Init(List buffer) { _buffer = buffer; _offset = 0; } public void ReWind() { _offset = 0; } public bool Read(out Int8 value) { ViDebuger.AssertError(_buffer); if (_offset >= _buffer.Count) { value = (Int8)0; return false; } return Int8.TryParse(_buffer[_offset++], out value); } public bool Read(out UInt8 value) { ViDebuger.AssertError(_buffer); if (_offset >= _buffer.Count) { value = (UInt8)0; return false; } return UInt8.TryParse(_buffer[_offset++], out value); } public bool Read(out Int16 value) { ViDebuger.AssertError(_buffer); if (_offset >= _buffer.Count) { value = (Int16)0; return false; } return Int16.TryParse(_buffer[_offset++], out value); } public bool Read(out UInt16 value) { ViDebuger.AssertError(_buffer); if (_offset >= _buffer.Count) { value = (UInt16)0; return false; } return UInt16.TryParse(_buffer[_offset++], out value); } public bool Read(out Int32 value) { ViDebuger.AssertError(_buffer); if (_offset >= _buffer.Count) { value = (Int32)0; return false; } return Int32.TryParse(_buffer[_offset++], out value); } public bool Read(out UInt32 value) { ViDebuger.AssertError(_buffer); if (_offset >= _buffer.Count) { value = (UInt32)0; return false; } return UInt32.TryParse(_buffer[_offset++], out value); } public bool Read(out Int64 value) { ViDebuger.AssertError(_buffer); if (_offset >= _buffer.Count) { value = (Int64)0; return false; } return Int64.TryParse(_buffer[_offset++], out value); } public bool Read(out UInt64 value) { ViDebuger.AssertError(_buffer); if (_offset >= _buffer.Count) { value = (UInt64)0; return false; } return UInt64.TryParse(_buffer[_offset++], out value); } public bool Read(out float value) { ViDebuger.AssertError(_buffer); if (_offset >= _buffer.Count) { value = (float)0; return false; } return float.TryParse(_buffer[_offset++], out value); } public bool Read(out double value) { ViDebuger.AssertError(_buffer); if (_offset >= _buffer.Count) { value = (double)0; return false; } return double.TryParse(_buffer[_offset++], out value); } public bool Read(out string value) { ViDebuger.AssertError(_buffer); if (_offset >= _buffer.Count) { value = string.Empty; return false; } value = _buffer[_offset]; ++_offset; return true; } public bool Read(out List list) { ViArrayIdx size; Read(out size); list = new List((int)size); for (ViArrayIdx idx = 0; idx < size; ++idx) { Int8 value; if (Read(out value) == false) { return false; } list.Add(value); } return true; } public bool Read(out List list) { ViArrayIdx size; Read(out size); list = new List((int)size); for (ViArrayIdx idx = 0; idx < size; ++idx) { UInt8 value; if (Read(out value) == false) { return false; } list.Add(value); } return true; } public bool Read(out List list) { ViArrayIdx size; Read(out size); list = new List((int)size); for (ViArrayIdx idx = 0; idx < size; ++idx) { Int16 value; if (Read(out value) == false) { return false; } list.Add(value); } return true; } public bool Read(out List list) { ViArrayIdx size; Read(out size); list = new List((int)size); for (ViArrayIdx idx = 0; idx < size; ++idx) { UInt16 value; if (Read(out value) == false) { return false; } list.Add(value); } return true; } public bool Read(out List list) { ViArrayIdx size; Read(out size); list = new List((int)size); for (ViArrayIdx idx = 0; idx < size; ++idx) { Int32 value; if (Read(out value) == false) { return false; } list.Add(value); } return true; } public bool Read(out List list) { ViArrayIdx size; Read(out size); list = new List((int)size); for (ViArrayIdx idx = 0; idx < size; ++idx) { UInt32 value; if (Read(out value) == false) { return false; } list.Add(value); } return true; } public bool Read(out List list) { ViArrayIdx size; Read(out size); list = new List((int)size); for (ViArrayIdx idx = 0; idx < size; ++idx) { Int64 value; if (Read(out value) == false) { return false; } list.Add(value); } return true; } public bool Read(out List list) { ViArrayIdx size; Read(out size); list = new List((int)size); for (ViArrayIdx idx = 0; idx < size; ++idx) { UInt64 value; if (Read(out value) == false) { return false; } list.Add(value); } return true; } public bool Read(out List list) { ViArrayIdx size; Read(out size); list = new List((int)size); for (ViArrayIdx idx = 0; idx < size; ++idx) { float value; if (Read(out value) == false) { return false; } list.Add(value); } return true; } public bool Read(out List list) { ViArrayIdx size; Read(out size); list = new List((int)size); for (ViArrayIdx idx = 0; idx < size; ++idx) { double value; if (Read(out value) == false) { return false; } list.Add(value); } return true; } public bool Read(out List list) { ViArrayIdx size; Read(out size); list = new List((int)size); for (ViArrayIdx idx = 0; idx < size; ++idx) { string value; if (Read(out value) == false) { return false; } list.Add(value); } return true; } List _buffer; int _offset; }