[Zope3-checkins] CVS: Zope3/src/zodb/btrees - interfaces.py:1.11
Tim Peters
tim.one@comcast.net
Mon, 23 Jun 2003 17:01:53 -0400
Update of /cvs-repository/Zope3/src/zodb/btrees
In directory cvs.zope.org:/tmp/cvs-serv14905/src/zodb/btrees
Modified Files:
interfaces.py
Log Message:
Document multiunion(), via a new interface.
=== Zope3/src/zodb/btrees/interfaces.py 1.10 => 1.11 ===
--- Zope3/src/zodb/btrees/interfaces.py:1.10 Fri Jun 6 11:24:19 2003
+++ Zope3/src/zodb/btrees/interfaces.py Mon Jun 23 17:01:52 2003
@@ -375,6 +375,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
#