[Zope-Checkins] CVS: ZODB3/BTrees - Interfaces.py:1.18.92.1

Tim Peters tim.one@comcast.net
Tue, 1 Jul 2003 18:04:14 -0400


Update of /cvs-repository/ZODB3/BTrees
In directory cvs.zope.org:/tmp/cvs-serv26554/BTrees

Modified Files:
      Tag: zodb33-devel-branch
	Interfaces.py 
Log Message:
Add IMergeIntegerKey (multiunion) BTrees interface from ZODB4.


=== ZODB3/BTrees/Interfaces.py 1.18 => 1.18.92.1 ===
--- ZODB3/BTrees/Interfaces.py:1.18	Tue Jun 25 18:46:42 2002
+++ ZODB3/BTrees/Interfaces.py	Tue Jul  1 18:04:14 2003
@@ -348,6 +348,38 @@
         Note that c1 and c2 must be collections.
         """
 
+class IMergeIntegerKey(IMerge):
+    """IMerge-able objects with integer keys.
+
+    Concretely, this means the types in IOBTree and IIBTree.
+    """
+
+    def multiunion(seq):
+        """Return union of (zero or more) integer sets, as an integer set.
+
+        seq is a sequence of objects each convertible to an integer set.
+        These objects are convertible to an integer set:
+
+        + An integer, which is added to the union.
+
+        + A Set or TreeSet from the same module (for example, an
+          IIBTree.TreeSet for IIBTree.multiunion()).  The elements of the
+          set are added to the union.
+
+        + A Bucket or BTree from the same module (for example, an
+          IOBTree.IOBTree for IOBTree.multiunion()).  The keys of the
+          mapping are added to the union.
+
+        The union is returned as a Set from the same module (for example,
+        IIBTree.multiunion() returns an IIBTree.IISet).
+
+        The point to this method is that it can run much faster than
+        doing a sequence of two-input union() calls.  Under the covers,
+        all the integers in all the inputs are sorted via a single
+        linear-time radix sort, then duplicates are removed in a second
+        linear-time pass.
+        """
+
 ###############################################################
 # IMPORTANT NOTE
 #