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())); } }
////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////// 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); }
////////////////////////////////////////////////////////////////////////////// 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); }