protected Column(Timeline timeline, RCArray <int> index, object data) { _tlcount = timeline.Count; RCArray <T> original = (RCArray <T>)data; if (original.Locked()) { _data = new RCArray <T> (original.Count); _index = new RCArray <int> (original.Count); for (int i = 0; i < original.Count; ++i) { _data.Write(original[i]); _index.Write(index[i]); } } else { _data = (RCArray <T>)data; _index = index; } if (timeline.Has("S")) { _last = new Dictionary <RCSymbolScalar, T> (); for (int i = 0; i < _data.Count; ++i) { RCSymbolScalar key = timeline.Symbol[index[i]]; T val = _data[i]; if (_last != null) { _last[key] = val; } } } }