public static DocTransform Deserialize(dynamic _reader) { DocTransform transform = new DocTransform(_reader.ReadInt32()); int iOpCount = _reader.ReadInt32(); List <DocOp> lOps = new List <DocOp>(); for (int iOp = 0; iOp < iOpCount; iOp++) { DocOpType opType = (DocOpType)_reader.ReadByte(); switch (opType) { case DocOpType.Insert: lOps.Add(DocOp.Insert(_reader.ReadUInt16(), _reader.ReadInt32(), (char)_reader.ReadUInt16())); break; case DocOpType.Delete: lOps.Add(DocOp.Delete(_reader.ReadUInt16(), _reader.ReadInt32())); break; } } transform.Append(lOps); return(transform); }
public DocTransform Clone() { DocTransform clone = new DocTransform(ParentStateIndex); clone.mlOps = new List <DocOp>(mlOps); return(clone); }
public void Transform(DocTransform _transform) { if (ParentStateIndex != _transform.ParentStateIndex) { throw new InvalidOperationException(); } foreach (DocOp refOp in _transform.mlOps) { TransformOp(refOp); } ParentStateIndex++; }
//---------------------------------------------------------------------- public void Include(DocTransform _transform) { Transform(_transform); mlOps.InsertRange(0, _transform.mlOps); }