Ejemplo n.º 1
0
        public override object Clone()
        {
            ONCollection lCollection = ONContext.GetComponent_Collection(ClassName, OnContext);

            lCollection.Union(this);

            return(lCollection);
        }
Ejemplo n.º 2
0
        public static ONCollection Union(ONCollection collection1, ONCollection collection2)
        {
            ONCollection lCollection = collection1.Clone() as ONCollection;

            lCollection.Union(collection2);

            return(lCollection);
        }
Ejemplo n.º 3
0
        public static ONCollection operator +(ONCollection collection, ONInstance instance)
        {
            ONCollection lCollection = ONContext.GetComponent_Collection(collection.ClassName, collection.OnContext);

            lCollection.Union(collection);
            lCollection.Add(instance);

            return(lCollection);
        }
Ejemplo n.º 4
0
        public static ONCollection Intersection(ONCollection collection1, ONCollection collection2)
        {
            ONCollection lCollection = ONContext.GetComponent_Collection(collection1.ClassName, collection1.OnContext);

            if ((collection1 == null) || (collection2 == null))
            {
                return(lCollection);
            }

            foreach (ONInstance lInstance in collection1)
            {
                if (!collection2.Contains(lInstance))
                {
                    lCollection.Add(lInstance);
                }
            }

            return(lCollection);
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Adds an instance to the collection in the order that the Order Criteria sets.
        /// </summary>
        /// <param name="instance">Instance to add</param>
        /// <param name="comparer">Order criteria to apply</param>
        /// <param name="onContext">context of the query</param>
        public void AddOrdered(ONInstance instance, ONOrderCriteria comparer, ONContext onContext)
        {
            // Empty lists
            if (Count == 0)
            {
                Add(instance);
                return;
            }

            int i            = 0;
            int j            = 0;
            int lComparation = 0;

            // Clone and clear collection
            ONCollection lList = Clone() as ONCollection;

            this.Clear();

            // Create data component for default comparation
            ONData lData = null;

            if (comparer == null)
            {
                lData = ONContext.GetComponent_Data(ClassName, onContext);
            }

            ONInstance lInstance1 = lList.Array[i];

            while ((i < lList.Count) && (j < 1))
            {
                if (comparer != null)
                {
                    lComparation = comparer.CompareUnion(lInstance1, instance);
                }
                else
                {
                    lComparation = lData.CompareUnionOID(lInstance1, instance);
                }

                if (lComparation < 0)
                {
                    Add(lInstance1);
                    i += 1;
                    if (lList.Count > i)
                    {
                        lInstance1 = lList.Array[i];
                    }
                }
                else if (lComparation > 0)
                {
                    Add(instance);
                    j += 1;
                }
                else
                {
                    Add(lInstance1);
                    Add(instance);
                    i += 1;
                    j += 1;
                }
            }

            AddRange(lList);
            if (j == 0)
            {
                Add(instance);
            }
        }