/// <summary>
        /// Remove an element from the index using its key.
        /// </summary>
        ///
        /// <param name="key">
        /// The key to remove.
        /// </param>
        /// <param name="element">
        /// The element to remove.
        /// </param>

        public void RemoveFromIndex(ushort[] key, IDomIndexedNode element)
        {
            IndexValue existing;

            if (Index.TryGetValue(key, out existing))
            {
                existing.Set.Remove(element.IndexReference);
                existing.IsSorted = false;
            }
        }
Exemple #2
0
        /// <summary>
        /// Add an element to the index using the default keys for this element.
        /// </summary>
        ///
        /// <param name="element">
        /// The element to add
        /// </param>

        public void AddToIndex(IDomIndexedNode element)
        {

            if (element.HasChildren)
            {
                foreach (DomElement child in ((IDomContainer)element).ChildElements)
                {
                    AddToIndex(child);
                }
            }

        }
Exemple #3
0
        public void AddToIndex(IDomIndexedNode element)
        {
            foreach (string key in element.IndexKeys())
            {
                AddToIndex(key, element);
            }

            if (element.HasChildren)
            {
                foreach (DomElement child in ((IDomContainer)element).ChildElements)
                {
                    AddToIndex(child);
                }
            }
        }
        /// <summary>
        /// Adds an element to the index for the specified key.
        /// </summary>
        ///
        /// <param name="key">
        /// The key to remove.
        /// </param>
        /// <param name="element">
        /// The element to add.
        /// </param>

        public void AddToIndex(ushort[] key, IDomIndexedNode element)
        {
            IndexValue existing;
            if (!Index.TryGetValue(key, out existing))
            {
                existing.Initialize();
                existing.Set.Add(element.IndexReference);
                Index.Add(key, existing);
            }
            else
            {
                existing.Set.Add(element.IndexReference);
                existing.IsSorted = false;
            }
        }
        /// <summary>
        /// Adds an element to the index for the specified key.
        /// </summary>
        ///
        /// <param name="key">
        /// The key to remove.
        /// </param>
        /// <param name="element">
        /// The element to add.
        /// </param>

        public void AddToIndex(ushort[] key, IDomIndexedNode element)
        {
            IndexValue existing;

            if (!Index.TryGetValue(key, out existing))
            {
                existing.Initialize();
                existing.Set.Add(element.IndexReference);
                Index.Add(key, existing);
            }
            else
            {
                existing.Set.Add(element.IndexReference);
                existing.IsSorted = false;
            }
        }
Exemple #6
0
        /// <summary>
        /// Add an element to the index using a specified index key.
        /// </summary>
        ///
        /// <param name="key">
        /// The key
        /// </param>
        /// <param name="element">
        /// The element target
        /// </param>

        private void QueueAddToIndex(ushort[] key, IDomIndexedNode element)
        {
            if (QueueChanges)
            {
                PendingIndexChanges.Enqueue(new IndexOperation
                {
                    Key   = key,
                    Value = element.IndexReference,
                    IndexOperationType = IndexOperationType.Add
                });
            }
            else
            {
                SelectorXref.Add(key, element.IndexReference);
            }
        }
        /// <summary>
        /// Add an element to the index using the default keys for this element.
        /// </summary>
        ///
        /// <param name="element">
        /// The element to add
        /// </param>

        public void AddToIndex(IDomIndexedNode element)
        {

            if (element.HasChildren)
            {
                foreach (DomElement child in ((IDomContainer)element).ChildElements)
                {
                    AddToIndex(child);
                }
            }

            foreach (var key in element.IndexKeys())
            {
                AddToIndex(key, element);
            }

        }
Exemple #8
0
        public void RemoveFromIndex(IDomIndexedNode element)
        {
            if (element.HasChildren)
            {
                foreach (IDomElement child in ((IDomContainer)element).ChildElements)
                {
                    if (child.IsIndexed)
                    {
                        RemoveFromIndex(child);
                    }
                }
            }

            foreach (string key in element.IndexKeys())
            {
                RemoveFromIndex(key);
            }
        }
Exemple #9
0
        /// <summary>
        /// Add an element to the index using the default keys for this element.
        /// </summary>
        ///
        /// <param name="element">
        /// The element to add
        /// </param>

        public void AddToIndex(IDomIndexedNode element)
        {
            ushort[] path = element.IndexReference.NodePath;

            QueueAddToIndex(RangePath(path), element);


            foreach (ushort[] key in element.IndexKeys())
            {
                QueueAddToIndex(RangePath(key, path), element);
            }

            if (element.HasChildren)
            {
                foreach (DomElement child in ((IDomContainer)element).ChildElements)
                {
                    AddToIndex(child);
                }
            }
        }
Exemple #10
0
        /// <summary>
        /// Remove an element from the index.
        /// </summary>
        ///
        /// <param name="element">
        /// The element to remove
        /// </param>

        public void RemoveFromIndex(IDomIndexedNode element)
        {
            ushort[] path = element.IndexReference.NodePath;

            QueueRemoveFromIndex(RangePath(null, path));


            if (element.HasChildren)
            {
                foreach (IDomElement child in ((IDomContainer)element).ChildElements)
                {
                    if (child.IsIndexed)
                    {
                        RemoveFromIndex(child);
                    }
                }
            }

            foreach (ushort[] key in element.IndexKeys())
            {
                QueueRemoveFromIndex(RangePath(key, path));
            }
        }
Exemple #11
0
        /// <summary>
        /// Remove an element from the index.
        /// </summary>
        ///
        /// <param name="element">
        /// The element to remove
        /// </param>

        public void RemoveFromIndex(IDomIndexedNode element)
        {
            return;
        }
Exemple #12
0
        /// <summary>
        /// Remove an element from the index using its key.
        /// </summary>
        ///
        /// <param name="key">
        /// The key to remove.
        /// </param>
        /// <param name="element">
        /// The element to remove.
        /// </param>

        public void RemoveFromIndex(ushort[] key, IDomIndexedNode element)
        {
            return;
        }
Exemple #13
0
        /// <summary>
        /// Add an element to the index using a specified index key.
        /// </summary>
        ///
        /// <param name="key">
        /// The key
        /// </param>
        /// <param name="element">
        /// The element target
        /// </param>

        private void QueueAddToIndex(ushort[] key, IDomIndexedNode element)
        {
            //if (QueueChanges)
            //{
              
            //    PendingIndexChanges.Enqueue(new IndexOperation
            //    {
            //        Key = key,
            //        Value = element.IndexReference,
            //        IndexOperationType = IndexOperationType.Add
            //    });
            //}
            //else
            //{
            //    SelectorXref.Add(key, element.IndexReference);
            //}
        }
Exemple #14
0
        /// <summary>
        /// Remove an element from the index using its key.
        /// </summary>
        ///
        /// <param name="key">
        /// The key to remove.
        /// </param>
        /// <param name="element">
        /// The element to remove; this is ignored fort IDomIndexRange because it is identified by the key.
        /// </param>

        public void RemoveFromIndex(ushort[] key, IDomIndexedNode element)
        {
            QueueRemoveFromIndex(RangePath(key, element));
        }
        /// <summary>
        /// Add an element to the index using a specified index key.
        /// </summary>
        ///
        /// <param name="key">
        /// The key
        /// </param>
        /// <param name="element">
        /// The element target
        /// </param>

        private void QueueAddToIndex(ushort[] key, IDomIndexedNode element)
        {
            if (QueueChanges)
            {
              
                PendingIndexChanges.Enqueue(new IndexOperation
                {
                    Key = key,
                    Value = element.IndexReference,
                    IndexOperationType = IndexOperationType.Add
                });
            }
            else
            {
                SelectorXref.Add(key, element.IndexReference);
            }
        }
        /// <summary>
        /// Remove an element from the index using its key.
        /// </summary>
        ///
        /// <param name="key">
        /// The key to remove.
        /// </param>
        /// <param name="element">
        /// The element to remove; this is ignored fort IDomIndexRange because it is identified by the key.
        /// </param>

        public void RemoveFromIndex(ushort[] key, IDomIndexedNode element)
        {
            QueueRemoveFromIndex(RangePath(key,element));
        }
        /// <summary>
        /// Remove an element from the index using its key.
        /// </summary>
        ///
        /// <param name="key">
        /// The key to remove.
        /// </param>
        /// <param name="element">
        /// The element to remove.
        /// </param>

        public void RemoveFromIndex(ushort[] key, IDomIndexedNode element)
        {
            IndexValue existing;
            if (Index.TryGetValue(key, out existing))
            {
                existing.Set.Remove(element.IndexReference);
                existing.IsSorted = false;
            }
        }
Exemple #18
0
 public void AddToIndex(string key, IDomIndexedNode element)
 {
     SelectorXref.Add(key, element.IndexReference);
 }
Exemple #19
0
        /// <summary>
        /// Adds an element to the index for the specified key.
        /// </summary>
        ///
        /// <param name="key">
        /// The key to remove.
        /// </param>
        /// <param name="element">
        /// The element to add.
        /// </param>

        public void AddToIndex(ushort[] key, IDomIndexedNode element)
        {
            return;
        }
Exemple #20
0
        /// <summary>
        /// Adds an element to the index for the specified key.
        /// </summary>
        ///
        /// <param name="key">
        /// The key to remove.
        /// </param>
        /// <param name="element">
        /// The element to add.
        /// </param>

        public void AddToIndex(ushort[] key, IDomIndexedNode element)
        {
         //   Index.Add(key,element.IndexKeysRanged());
     
        }
Exemple #21
0
        /// <summary>
        /// Remove an element from the index using its key.
        /// </summary>
        ///
        /// <param name="key">
        /// The key to remove.
        /// </param>
        /// <param name="element">
        /// The element to remove.
        /// </param>

        public void RemoveFromIndex(ushort[] key, IDomIndexedNode element)
        {
            return;
        }
        /// <summary>
        /// Add an element to the index using the default keys for this element.
        /// </summary>
        ///
        /// <param name="element">
        /// The element to add
        /// </param>

        public void AddToIndex(IDomIndexedNode element)
        {

            
            ushort[] path = element.IndexReference.NodePath;

            QueueAddToIndex(RangePath(path), element);


            foreach (ushort[] key in element.IndexKeys())
            {
                QueueAddToIndex(RangePath(key,path), element);
            }

            if (element.HasChildren)
            {
                foreach (DomElement child in ((IDomContainer)element).ChildElements)
                {
                    AddToIndex(child);
                }
            }

        }
        /// <summary>
        /// Adds an element to the index for the specified key.
        /// </summary>
        ///
        /// <param name="key">
        /// The key to remove.
        /// </param>
        /// <param name="element">
        /// The element to add.
        /// </param>

        public void AddToIndex(ushort[] key, IDomIndexedNode element)
        {
            QueueAddToIndex(RangePath(key, element),element);
        }
        /// <summary>
        /// Remove an element from the index.
        /// </summary>
        ///
        /// <param name="element">
        /// The element to remove
        /// </param>

        public void RemoveFromIndex(IDomIndexedNode element)
        {
            if (element.HasChildren)
            {
                foreach (IDomElement child in ((IDomContainer)element).ChildElements)
                {
                    if (child.IsIndexed)
                    {
                        RemoveFromIndex(child);
                    }
                }
            }

            foreach (ushort[] key in element.IndexKeys())
            {
                RemoveFromIndex(key, element);
            }
        }
        /// <summary>
        /// Remove an element from the index.
        /// </summary>
        ///
        /// <param name="element">
        /// The element to remove
        /// </param>

        public void RemoveFromIndex(IDomIndexedNode element)
        {
            ushort[] path = element.IndexReference.NodePath;

            QueueRemoveFromIndex(RangePath(null, path));


            if (element.HasChildren)
            {
                foreach (IDomElement child in ((IDomContainer)element).ChildElements)
                {
                    if (child.IsIndexed)
                    {
                        RemoveFromIndex(child);
                    }
                }
            }

            foreach (ushort[] key in element.IndexKeys())
            {
                QueueRemoveFromIndex(RangePath(key,path));
            }
        }
Exemple #26
0
        /// <summary>
        /// Adds an element to the index.
        /// </summary>
        ///
        /// <param name="element">
        /// The element to add.
        /// </param>

        public void AddToIndex(IDomIndexedNode element)
        {
            return;
        }
        /// <summary>
        /// Convert a key/path combination to a path suitable for view selection.
        /// </summary>
        ///
        /// <param name="key">
        /// The key to remove.
        /// </param>
        /// <param name="element">
        /// The element to add.
        /// </param>
        ///
        /// <returns>
        /// A key.
        /// </returns>

        private ushort[] RangePath(ushort[] key, IDomIndexedNode element)
        {
            ushort[] path = element.IndexReference.NodePath;
            return RangePath(key, path);
        }
Exemple #28
0
        /// <summary>
        /// Add an element to the index using the default keys for this element.
        /// </summary>
        ///
        /// <param name="element">
        /// The element to add
        /// </param>

        public void AddToIndex(IDomIndexedNode element)
        {
            foreach (ushort[] key in element.IndexKeysRanged())
            {
                QueueAddToIndex(key, element);
            }

            if (element.HasChildren)
            {
                foreach (DomElement child in ((IDomContainer)element).ChildElements)
                {
                    AddToIndex(child);
                }
            }

        }
Exemple #29
0
        /// <summary>
        /// Adds an element to the index for the specified key.
        /// </summary>
        ///
        /// <param name="key">
        /// The key to remove.
        /// </param>
        /// <param name="element">
        /// The element to add.
        /// </param>

        public void AddToIndex(ushort[] key, IDomIndexedNode element)
        {
            QueueAddToIndex(RangePath(key, element), element);
        }
Exemple #30
0
        /// <summary>
        /// Adds an element to the index.
        /// </summary>
        ///
        /// <param name="element">
        /// The element to add.
        /// </param>

        public void AddToIndex(IDomIndexedNode element)
        {
            return;
        }
Exemple #31
0
        /// <summary>
        /// Adds an element to the index for the specified key.
        /// </summary>
        ///
        /// <param name="key">
        /// The key to remove.
        /// </param>
        /// <param name="element">
        /// The element to add.
        /// </param>

        public void AddToIndex(ushort[] key, IDomIndexedNode element)
        {
            return;
        }
Exemple #32
0
        /// <summary>
        /// Remove an element from the index.
        /// </summary>
        ///
        /// <param name="element">
        /// The element to remove
        /// </param>

        public void RemoveFromIndex(IDomIndexedNode element)
        {
            return;
        }
Exemple #33
0
        /// <summary>
        /// Convert a key/path combination to a path suitable for view selection.
        /// </summary>
        ///
        /// <param name="key">
        /// The key to remove.
        /// </param>
        /// <param name="element">
        /// The element to add.
        /// </param>
        ///
        /// <returns>
        /// A key.
        /// </returns>

        private ushort[] RangePath(ushort[] key, IDomIndexedNode element)
        {
            ushort[] path = element.IndexReference.NodePath;
            return(RangePath(key, path));
        }
Exemple #34
0
        /// <summary>
        /// Convert a key/path combination to a path suitable for view selection.
        /// </summary>
        ///
        /// <param name="key">
        /// The key to remove.
        /// </param>
        /// <param name="element">
        /// The element to add.
        /// </param>
        ///
        /// <returns>
        /// A key.
        /// </returns>

        private ulong[] RangePath(ulong[] key, IDomIndexedNode element)
        {
            var path = element.IndexReference.NodePath;

            return(RangePath(key, path));
        }