using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Hydro.Core.Model { public class Parts { List _parts = null; List _parts_before = null; public int Length { get { if (_parts != null) return _parts.Count; else return -1; } } public int Count { get { if (_parts != null) return _parts.Count; else return -1; } } public Parts(string[] strings) { _parts = strings.ToList(); } public Parts(string line) { List sp = line.Split(new char[] { '\t', ' ' }, StringSplitOptions.RemoveEmptyEntries).ToList(); int pos = sp.IndexOf(";"); if (pos > 0) { _parts = new List(); _parts_before = new List(); for (int i = 0; i < pos; i++) { _parts.Add(sp[i]); } for (int i = pos; i < sp.Count; i++) { _parts_before.Add(sp[i]); } } else { _parts = new List(); _parts.AddRange(sp); } } public string this[int index] { get { if (index < 0) { index = Math.Abs(index); if (_parts_before != null && _parts_before.Count > index) return _parts_before[index]; else return null; } else { if (_parts != null && _parts.Count > index) return _parts[index]; else return null; } } set { _parts[index] = value; } } public float ToFloat(int index, float defaultValue) { float f = defaultValue; if (this[index] != null && float.TryParse(this[index], out f)) { } return f; } public int ToInt(int index, int defaultValue) { int f = defaultValue; if (this[index] != null && int.TryParse(this[index], out f)) { } return f; } public string ToString(int index, string defaultValue) { string f = defaultValue; if (this[index] != null) { return this[index]; } return f; } public bool ToBool(int index, bool defaultValue) { bool f = defaultValue; if (this[index] != null && bool.TryParse(this[index], out f)) { } return f; } } }