Mercurial > paraspace
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