diff paraspace/dexfile.py @ 93:2fa9b6f21344

Add DEXFile_linked to model linked DEX
author Thinker K.F. Li <thinker@codemud.net>
date Mon, 25 Jul 2011 13:23:02 +0800
parents 793af8437efe
children 88645ab29aeb
line wrap: on
line diff
--- a/paraspace/dexfile.py	Mon Jul 25 10:01:14 2011 +0800
+++ b/paraspace/dexfile.py	Mon Jul 25 13:23:02 2011 +0800
@@ -1658,6 +1658,36 @@
     pass
 
 
+## \brief A linked version of a DEXFile.
+#
+# Instances of this class was built from instances of DEXFile.
+# Dependencies are linked to depend-on objects; the target of a
+# dependence.
+#
+class DEXFile_linked(DEXFile):
+    def _copy_attributes(self, dex):
+        super(DEXFile_linked, self).__init__()
+        for attr, value in dex.__dict__.items():
+            setattr(self, attr, value)
+            pass
+        pass
+
+    ## \brief Factory function to return a DEXFile_linked of given DEXFile.
+    @staticmethod
+    def build_dependencies(dex, dep_decls):
+        from paraspace.dex_deptracker import build_dependencies
+
+        if not isinstance(dex, DEXFile):
+            raise TypeError, 'first argument must be an instance of DEXFile'
+        
+        linked = DEXFile_linked()
+        build_dependencies(dex, dep_decls)
+        linked._copy_attributes(dex)
+        
+        return linked
+    pass
+
+
 if __name__ == '__main__':
     import sys