/// <inheritdoc /> public override void SetArray(MemoryIndex index, AssociativeArray arrayValue) { IIndexDefinition data; if (!indexDefinitions.TryGetValue(index, out data)) { data = new CopyIndexDefinition(); } IIndexDefinitionBuilder builder = data.Builder(this); builder.SetArray(arrayValue); indexDefinitions[index] = builder.Build(this); IArrayDescriptor descriptor; if (TryGetDescriptor(arrayValue, out descriptor)) { if (descriptor.ParentIndex != null) { GetWriteableStackContext(descriptor.ParentIndex.CallLevel).WriteableArrays.Remove(arrayValue); } } GetWriteableStackContext(index.CallLevel).WriteableArrays.Add(arrayValue); }
/// <inheritdoc /> public override void SetArray(MemoryIndex index, AssociativeArray arrayValue) { IIndexDefinition data; if (!indexDefinitions.TryGetValue(index, out data)) { data = Factories.StructuralContainersFactories.IndexDefinitionFactory.CreateIndexDefinition(this); } IIndexDefinitionBuilder builder = data.Builder(this); builder.SetArray(arrayValue); indexDefinitions[index] = builder.Build(this); changeTracker.ModifiedIndex(index); IArrayDescriptor descriptor; if (TryGetDescriptor(arrayValue, out descriptor)) { if (descriptor.ParentIndex != null) { GetWriteableStackContext(descriptor.ParentIndex.CallLevel).WriteableArrays.Remove(arrayValue); } } GetWriteableStackContext(index.CallLevel).WriteableArrays.Add(arrayValue); }
/// <inheritdoc /> public override void SetAlias(MemoryIndex index, IMemoryAlias alias) { IIndexDefinition data; if (!indexDefinitions.TryGetValue(index, out data)) { data = new CopyIndexDefinition(); } IIndexDefinitionBuilder builder = data.Builder(this); builder.SetAliases(alias); indexDefinitions[index] = builder.Build(this); }
/// <inheritdoc /> public override void SetObjects(MemoryIndex index, IObjectValueContainer objects) { IIndexDefinition data; if (!indexDefinitions.TryGetValue(index, out data)) { data = new CopyIndexDefinition(); } IIndexDefinitionBuilder builder = data.Builder(this); builder.SetObjects(objects); indexDefinitions[index] = builder.Build(this); }
/// <inheritdoc /> public override void SetAlias(MemoryIndex index, IMemoryAlias alias) { IIndexDefinition data; if (!indexDefinitions.TryGetValue(index, out data)) { data = Factories.StructuralContainersFactories.IndexDefinitionFactory.CreateIndexDefinition(this); } IIndexDefinitionBuilder builder = data.Builder(this); builder.SetAliases(alias); indexDefinitions[index] = builder.Build(this); changeTracker.ModifiedIndex(index); }
/// <inheritdoc /> public override void RemoveArray(MemoryIndex index, AssociativeArray arrayValue) { arrayDescriptors.Remove(arrayValue); IIndexDefinition data; if (!indexDefinitions.TryGetValue(index, out data)) { data = new CopyIndexDefinition(); } IIndexDefinitionBuilder builder = data.Builder(this); builder.SetArray(null); indexDefinitions[index] = builder.Build(this); GetWriteableStackContext(index.CallLevel).WriteableArrays.Remove(arrayValue); }