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)); }
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()); }