public override Literal Write(Literal lit) { switch (lit.vid) { case LiteralVidEnumeration.typedObject: TypedObject valu = (TypedObject)lit.Value; lit.Offset = typedObjectsCell.Root.AppendElement(new object[] { valu.Value, valu.Type }); break; case LiteralVidEnumeration.integer: lit.Offset = doublesCell.Root.AppendElement(lit.Value); break; case LiteralVidEnumeration.text: Text value = (Text)lit.Value; stringsArhive.AddFrequency(value.Value); stringsArhive.AddFrequency(value.Lang); lit.Offset = stringsCell.Root.AppendElement(new object[] { value.Value, value.Lang }); break; case LiteralVidEnumeration.date: lit.Offset = (long)lit.Value; break; case LiteralVidEnumeration.boolean: lit.Offset = boolsCell.Root.AppendElement(lit.Value); break; case LiteralVidEnumeration.nil: lit.Offset = long.MaxValue; break; default: throw new ArgumentOutOfRangeException(); } var da = Literal.ToObjects(lit); //в памяти сам литерал уже не хранится lit.Value = null; Flush(); return(lit); }