public void ChangeValue(MegaloScriptModel model, string varName) { Contract.Requires(!string.IsNullOrEmpty(varName)); var id_resolving_ctxt = new MegaloScriptModelVariableSet.IndexNameResolvingContext(model, ValueType); Value = MegaloScriptModelVariableSet.IndexNameResolvingContext.IdResolver(id_resolving_ctxt, varName); }
protected override void SerializeValue <TDoc, TCursor>(MegaloScriptModel model, IO.TagElementStream <TDoc, TCursor, string> s) { if ((model.TagElementStreamSerializeFlags & MegaloScriptModelTagElementStreamFlags.UseIndexNames) != 0) { var resolving_ctxt = new MegaloScriptModelVariableSet.IndexNameResolvingContext(model, ValueType, supportNone: true); s.StreamCursorIdAsString(ref mValue, resolving_ctxt, MegaloScriptModelVariableSet.IndexNameResolvingContext.IdResolver, MegaloScriptModelVariableSet.IndexNameResolvingContext.NameResolver); } else { s.StreamCursor(ref mValue); } if (!ValidateValue(model)) { throw new System.IO.InvalidDataException(string.Format("VarIndex value #{0} has an invalid value {1}", Id, Value)); } }
void SerializeData <TDoc, TCursor>(MegaloScriptModel model, IO.TagElementStream <TDoc, TCursor, string> s, Proto.MegaloScriptValueType valueType) where TDoc : class where TCursor : class { var base_type = valueType.BaseType; switch (base_type) { case Proto.MegaloScriptValueBaseType.Int: case Proto.MegaloScriptValueBaseType.UInt: s.StreamCursor(ref Data); break; case Proto.MegaloScriptValueBaseType.Var: if ((model.TagElementStreamSerializeFlags & MegaloScriptModelTagElementStreamFlags.UseIndexNames) != 0) { var resolving_ctxt = new MegaloScriptModelVariableSet.IndexNameResolvingContext(model, valueType); s.StreamCursorIdAsString(ref Data, resolving_ctxt, MegaloScriptModelVariableSet.IndexNameResolvingContext.IdResolver, MegaloScriptModelVariableSet.IndexNameResolvingContext.NameResolver); } else { s.StreamCursor(ref Data); } break; case Proto.MegaloScriptValueBaseType.Enum: MegaloScriptEnumValue.SerializeValue(model, s, valueType, ref Data, IO.TagElementNodeType.Text); break; case Proto.MegaloScriptValueBaseType.Index: MegaloScriptIndexValue.SerializeValue(model, s, valueType, ref Data, IO.TagElementNodeType.Text); break; default: throw new KSoft.Debug.UnreachableException(base_type.ToString()); } }