def __load_base_classes( self ):
make_hi = declarations.hierarchy_info_t
is_base_class = lambda smbl: smbl.symTag == msdia.SymTagBaseClass \
and False == smbl.indirectVirtualBaseClass
self.logger.info( 'building class hierarchies' )
for count, smbl in enumerate( itertools.ifilter( is_base_class, self.symbols.itervalues() ) ):
base_id = smbl.type.symIndexId
derived_id = smbl.classParentId
hi_base = make_hi( self.__id2decl[base_id]
, self.__guess_access_type( smbl )
, bool( smbl.virtualBaseClass ) )
self.__id2decl[ derived_id ].bases.append( hi_base )
hi_derived = make_hi( self.__id2decl[derived_id]
, self.__guess_access_type( smbl )
, bool( smbl.virtualBaseClass ) )
self.__id2decl[ base_id ].derived.append( hi_derived )
self.logger.info( 'building class hierarchies(%d) - done', count )
评论列表
文章目录