[pygccxml-commit] SF.net SVN: pygccxml: [773]
Brought to you by:
mbaas,
roman_yakovenko
From: <rom...@us...> - 2006-12-01 21:19:09
|
Revision: 773 http://svn.sourceforge.net/pygccxml/?rev=773&view=rev Author: roman_yakovenko Date: 2006-12-01 13:19:09 -0800 (Fri, 01 Dec 2006) Log Message: ----------- fixing dependency manager to not report missing declarations for implementation details of a class Modified Paths: -------------- pygccxml_dev/pygccxml/declarations/calldef.py pygccxml_dev/pygccxml/declarations/class_declaration.py pygccxml_dev/pygccxml/declarations/declaration.py pygccxml_dev/pygccxml/declarations/enumeration.py pygccxml_dev/pygccxml/declarations/namespace.py pygccxml_dev/pygccxml/declarations/typedef.py pygccxml_dev/pygccxml/declarations/variable.py pyplusplus_dev/pyplusplus/module_creator/dependencies_manager.py Modified: pygccxml_dev/pygccxml/declarations/calldef.py =================================================================== --- pygccxml_dev/pygccxml/declarations/calldef.py 2006-12-01 19:47:39 UTC (rev 772) +++ pygccxml_dev/pygccxml/declarations/calldef.py 2006-12-01 21:19:09 UTC (rev 773) @@ -271,7 +271,7 @@ demangled_name = property( _get_demangled_name , doc="returns function demangled name. It can help you to deal with function template instantiations") - def i_depend_on_them( self ): + def i_depend_on_them( self, recursive=True ): report_dependency = lambda x: dependencies.dependency_info_t( self, x ) answer = [] map( lambda arg: answer.append( report_dependency( arg.type ) ) Modified: pygccxml_dev/pygccxml/declarations/class_declaration.py =================================================================== --- pygccxml_dev/pygccxml/declarations/class_declaration.py 2006-12-01 19:47:39 UTC (rev 772) +++ pygccxml_dev/pygccxml/declarations/class_declaration.py 2006-12-01 21:19:09 UTC (rev 773) @@ -85,7 +85,7 @@ """implementation details""" return [] - def i_depend_on_them( self ): + def i_depend_on_them( self, recursive=True ): return [] class class_t( scopedef.scopedef_t ): @@ -337,21 +337,22 @@ def __find_out_member_dependencies( self, access_type ): members = self.get_members( access_type ) answer = [] - map( lambda mem: answer.extend( mem.i_depend_on_them() ), members ) + map( lambda mem: answer.extend( mem.i_depend_on_them(recursive=True) ), members ) member_ids = set( map( lambda m: id( m ), members ) ) for dependency in answer: if id( dependency.declaration ) in member_ids: dependency.access_type = access_type return answer - def i_depend_on_them( self ): + def i_depend_on_them( self, recursive=True ): report_dependency = lambda *args: dependencies.dependency_info_t( self, *args ) answer = [] map( lambda base: answer.append( report_dependency( base.related_class, base.access_type ) ) , self.bases ) - map( lambda access_type: answer.extend( self.__find_out_member_dependencies( access_type ) ) - , ACCESS_TYPES.ALL ) + if recursive: + map( lambda access_type: answer.extend( self.__find_out_member_dependencies( access_type ) ) + , ACCESS_TYPES.ALL ) return answer Modified: pygccxml_dev/pygccxml/declarations/declaration.py =================================================================== --- pygccxml_dev/pygccxml/declarations/declaration.py 2006-12-01 19:47:39 UTC (rev 772) +++ pygccxml_dev/pygccxml/declarations/declaration.py 2006-12-01 21:19:09 UTC (rev 773) @@ -245,7 +245,7 @@ """ return self._cache - def i_depend_on_them( self ): + def i_depend_on_them( self, recursive=True ): #this method should return list of all types, declarations it depends on print self raise NotImplementedError() Modified: pygccxml_dev/pygccxml/declarations/enumeration.py =================================================================== --- pygccxml_dev/pygccxml/declarations/enumeration.py 2006-12-01 19:47:39 UTC (rev 772) +++ pygccxml_dev/pygccxml/declarations/enumeration.py 2006-12-01 21:19:09 UTC (rev 773) @@ -114,5 +114,5 @@ x[val] = num return x - def i_depend_on_them( self ): + def i_depend_on_them( self, recursive=True ): return [] Modified: pygccxml_dev/pygccxml/declarations/namespace.py =================================================================== --- pygccxml_dev/pygccxml/declarations/namespace.py 2006-12-01 19:47:39 UTC (rev 772) +++ pygccxml_dev/pygccxml/declarations/namespace.py 2006-12-01 21:19:09 UTC (rev 773) @@ -135,7 +135,8 @@ , recursive=recursive , allow_empty=allow_empty) - def i_depend_on_them( self ): + def i_depend_on_them( self, recursive=True ): answer = [] - map( lambda decl: answer.extend( decl.i_depend_on_them() ), self.declarations ) + if recursive: + map( lambda decl: answer.extend( decl.i_depend_on_them() ), self.declarations ) return answer Modified: pygccxml_dev/pygccxml/declarations/typedef.py =================================================================== --- pygccxml_dev/pygccxml/declarations/typedef.py 2006-12-01 19:47:39 UTC (rev 772) +++ pygccxml_dev/pygccxml/declarations/typedef.py 2006-12-01 21:19:09 UTC (rev 773) @@ -34,5 +34,5 @@ type = property( _get_type, _set_type , doc="reference to the original L{type<type_t>}" ) - def i_depend_on_them( self ): + def i_depend_on_them( self, recursive=True ): return [ dependencies.dependency_info_t( self, self.type ) ] Modified: pygccxml_dev/pygccxml/declarations/variable.py =================================================================== --- pygccxml_dev/pygccxml/declarations/variable.py 2006-12-01 19:47:39 UTC (rev 772) +++ pygccxml_dev/pygccxml/declarations/variable.py 2006-12-01 21:19:09 UTC (rev 773) @@ -69,5 +69,5 @@ raise RuntimeError( "access_type functionality only available on member variables and not on global variables" ) return self.parent.find_out_member_access_type( self ) - def i_depend_on_them( self ): + def i_depend_on_them( self, recursive=True ): return [ dependencies.dependency_info_t( self, self.type ) ] Modified: pyplusplus_dev/pyplusplus/module_creator/dependencies_manager.py =================================================================== --- pyplusplus_dev/pyplusplus/module_creator/dependencies_manager.py 2006-12-01 19:47:39 UTC (rev 772) +++ pyplusplus_dev/pyplusplus/module_creator/dependencies_manager.py 2006-12-01 21:19:09 UTC (rev 773) @@ -47,8 +47,13 @@ def __build_dependencies( self, decl ): if self.__is_std_decl( decl ): return [] #std declarations should be exported by Py++! - return decl.i_depend_on_them() + dependencies = decl.i_depend_on_them(recursive=False) + if isinstance( decl, declarations.class_t ): + dependencies = filter( lambda d: d.access_type != declarations.ACCESS_TYPES.PRIVATE + , dependencies ) + return dependencies + def __find_out_used_but_not_exported( self ): used_not_exported = [] exported_ids = set( map( lambda d: id( d ), self.__exported_decls ) ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |