Пример #1
0
        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);
        }
Пример #2
0
        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());
            }
        }