예제 #1
0
        public static FileVariable Create(IScriptFile file, AccessModifier access, string @namespace, string name, TypeReference type, bool readOnly,
                                          int line, int column, int codeHash,
                                          VariableContainerAction resetter,
                                          VariableContainerAction creator,
                                          VariableContainerAction initializer)
        {
            var vcOwnerAccess = VariableContainer.Create(@namespace, name, type, readOnly);

            vcOwnerAccess.FileLine   = line;
            vcOwnerAccess.FileColumn = column;
            vcOwnerAccess.CodeHash   = codeHash;
            vcOwnerAccess.Tag        = new Dictionary <Type, Object>();
            if (resetter != null)
            {
                vcOwnerAccess.DataResetter = resetter;
            }
            if (creator != null)
            {
                vcOwnerAccess.DataCreator = creator;
            }
            if (initializer != null)
            {
                vcOwnerAccess.DataInitializer = initializer;
            }
            return(new FileVariable(file, access, line, null, @namespace, name, vcOwnerAccess, vcOwnerAccess.Container.UniqueID));
        }
예제 #2
0
        public void TestContainer()
        {
            var containerAccess = VariableContainer.Create("", "Anders", TypeReference.TypeInt32, false);

            Assert.IsNotNull(containerAccess);
            var container = containerAccess.Container as IValueContainer <int>;

            Assert.IsNotNull(container);
            var rc = container as IValueContainerRich;

            Assert.IsNotNull(rc);
            Assert.AreEqual(0, rc.ValueChangeIndex);
            Assert.AreEqual(0, container.GetValue());
            containerAccess.SetValue(14, null);
            Assert.AreEqual(1, rc.ValueChangeIndex);
            Assert.AreEqual(14, container.GetValue());

            ValueContainerModifier <int> modifier = (int i, out int o) => { o = i + 2; return(i); };

            Assert.AreEqual(14, container.Modify(modifier));
            Assert.AreEqual(2, rc.ValueChangeIndex);
            Assert.AreEqual(16, container.GetValue());
        }