예제 #1
0
 def test_pdbs( self ):
     for f in filter( lambda f: f.endswith( 'pdb' ), os.listdir( r'E:\pdbs' ) ):
         try:
             reader = mspdb.decl_loader_t( f )
             reader.read()
             f = file( d + '.txt', 'w+' )
             declarations.print_declarations( reader.global_ns, writer=lambda line: f.write(line+'\n') )
             f.close()
         except Exception, error:
             print 'unable to load pdb file ', f, ' Error: ', str(error)
예제 #2
0
    def test_create_nss(self):
        reader = mspdb.decl_loader_t( self.pdb_file )
        print reader.symbols_table.name
        reader.read()
        f = file( 'decls.cpp', 'w+' )
        declarations.print_declarations( reader.global_ns, writer=lambda line: f.write(line+'\n') )
        f.close()

        f = file( 'symbols.txt', 'w+')
        for smbl in reader.symbols.itervalues():
            f.write( smbl.uname )
            f.write( os.linesep )
            f.write( '\t' + str(smbl.name) )
        f.close()
import os
import unittest
import autoconfig

import pprint
from pygccxml.binary_parsers import mspdb
from pygccxml import declarations
from pygccxml.binary_parsers import common_utils as msvc_utils

pdb_file = r'E:\development\language-binding\pyplusplus_dev\pyplusplus\cpptypes\mydll\release\mydll.pdb'
pdb_file = r'D:\AC_SERVER_4_VS2005\libs\Debug\SPDBLib_d.pdb'
reader = mspdb.decl_loader_t( pdb_file )
opt = mspdb.enums.UNDECORATE_NAME_OPTIONS.UNDNAME_SHORT_UNIQUE
opt = 0

public_smbls = {}
for smbl in reader.public_symbols.iterkeys():
    name = smbl.name
    undecorated_name = smbl.get_undecoratedNameEx(opt).strip()
    if undecorated_name.endswith( ')const' ):
        undecorated_name = undecorated_name[ : -len('const')]
    public_smbls[ name ] = undecorated_name
    public_smbls[ undecorated_name ] = name

pprint.pprint( public_smbls )

#~ for smbl in reader.symbols.itervalues():
    #~ if not smbl.classParent:
        #~ continue
    #~ undecorated_name = smbl.get_undecoratedNameEx(opt)
    #~ if not undecorated_name: