Rev 136: Implement referrers. in http://bazaar.launchpad.net/~jameinel/meliae/mem-object-collection

John Arbash Meinel john at arbash-meinel.com
Mon Dec 28 05:13:40 GMT 2009


At http://bazaar.launchpad.net/~jameinel/meliae/mem-object-collection

------------------------------------------------------------
revno: 136
revision-id: john at arbash-meinel.com-20091228051325-w62x918u0rrz5v2d
parent: john at arbash-meinel.com-20091228050933-w7srqpdorh9tglby
committer: John Arbash Meinel <john at arbash-meinel.com>
branch nick: mem-object-collection
timestamp: Sun 2009-12-27 23:13:25 -0600
message:
  Implement referrers.
-------------- next part --------------
=== modified file 'meliae/_loader.pyx'
--- a/meliae/_loader.pyx	2009-12-28 05:09:33 +0000
+++ b/meliae/_loader.pyx	2009-12-28 05:13:25 +0000
@@ -256,6 +256,20 @@
             _free_ref_list(self._obj.ref_list)
             self._obj.ref_list = _list_to_ref_list(value)
 
+    property referrers:
+        """The list of objects that reference this object.
+
+        Original set to None, can be computed on demand.
+        """
+        def __get__(self):
+            self._ensure_obj()
+            return _ref_list_to_list(self._obj.referrer_list)
+
+        def __set__(self, value):
+            self._ensure_obj()
+            _free_ref_list(self._obj.referrer_list)
+            self._obj.referrer_list = _list_to_ref_list(value)
+
     def __getitem__(self, offset):
         cdef long off
         self._ensure_obj()

=== modified file 'meliae/tests/test__loader.py'
--- a/meliae/tests/test__loader.py	2009-12-28 05:09:33 +0000
+++ b/meliae/tests/test__loader.py	2009-12-28 05:13:25 +0000
@@ -335,3 +335,13 @@
         mop.total_size = (2**31+1)
         self.assertEqual(2**31+1, mop.total_size)
 
+    def test_referrers(self):
+        mop = self.moc.add(1234567, 'type', 256, ref_list=[0, 255])
+        mop0 = self.moc[0]
+        self.assertEqual((), mop0.referrers)
+        mop255 = self.moc[255]
+        self.assertEqual((), mop255.referrers)
+        mop0.referrers = [1234567]
+        self.assertEqual([1234567], mop0.referrers)
+        mop255.referrers = [1234567]
+        self.assertEqual([1234567], mop255.referrers)



More information about the bazaar-commits mailing list