Example #1
0
        /// <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);
        }
Example #2
0
        /// <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);
        }
Example #3
0
        /// <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);
        }
Example #4
0
        /// <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);
        }
Example #5
0
        /// <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);
        }
Example #6
0
        /// <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);
        }