Example #1
0
        static int SetOrder(NeSetObj obj1, NeSetObj obj2)
        {
            int size1 = obj1.GetSize();
            int size2 = obj2.GetSize();

            if (size1 != size2)
            {
                return(size1 < size2 ? -1 : 1);
            }
            else
            {
                return(Order(obj1.Elts(), obj2.Elts()));
            }
        }
Example #2
0
        //////////////////////////////////////////////////////////////////////////////
        //////////////////////////////////////////////////////////////////////////////

        public NeSetObj Packed()
        {
            if (rootNode != null)
            {
                Debug.Assert(packed == null);
                int   size  = GetSize();
                Obj[] elts  = new Obj[size];
                int   count = rootNode.Traverse(elts, 0);
                Debug.Assert(count == size);
                // packed = new NeSetObj(elts);
                packed   = (NeSetObj)Builder.CreateSet(elts); //## BAD BAD BAD
                rootNode = null;
            }
            return(packed);
        }
Example #3
0
        //////////////////////////////////////////////////////////////////////////////

        public override int InternalOrder(Obj other)
        {
            Debug.Assert(GetSize() == other.GetSize());

            if (other is NeTreeSetObj)
            {
                return(-other.InternalOrder(this));
            }

            NeSetObj otherSet = (NeSetObj)other;
            int      size     = GetSize();

            Obj[] otherElts = otherSet.elts;
            for (int i = 0; i < size; i++)
            {
                int ord = elts[i].QuickOrder(otherElts[i]);
                if (ord != 0)
                {
                    return(ord);
                }
            }
            return(0);
        }