void Write <TDoc, TCursor>(MegaloScriptModel model, IO.TagElementStream <TDoc, TCursor, string> s, bool embedValues) where TDoc : class where TCursor : class { bool multiple_params = mValueIds.Length > 1; bool write_extra_info = s.IsWriting && model.TagElementStreamSerializeFlags.HasParamFlags(); for (int x = 0; x < mValueIds.Length; x++) { using (s.EnterCursorBookmark("Param")) { if (write_extra_info) { ProtoData.ParameterList[x].WriteExtraModelInfo(model.Database, s, multiple_params, model.TagElementStreamSerializeFlags); } Contract.Assert(mValueIds[x].IsNotNone()); if (embedValues) { MegaloScriptValueBase.SerializeValueForEmbed(model, s, ref mValueIds[x]); } else { s.StreamCursor(ref mValueIds[x]); } } } }
void Read <TDoc, TCursor>(MegaloScriptModel model, IO.TagElementStream <TDoc, TCursor, string> s, bool embedValues) where TDoc : class where TCursor : class { int param_index = 0; foreach (var node in s.ElementsByName("Param")) { using (s.EnterCursorBookmark(node)) { if (embedValues) { MegaloScriptValueBase.SerializeValueForEmbed(model, s, ref mValueIds[param_index]); } else { s.StreamCursor(ref mValueIds[param_index]); } Contract.Assert(mValueIds[param_index].IsNotNone()); param_index++; if (param_index == mValueIds.Length) { break; } } } }