diff --git a/pykd/pytypeinfo.h b/pykd/pytypeinfo.h index 9500997..24cb707 100644 --- a/pykd/pytypeinfo.h +++ b/pykd/pytypeinfo.h @@ -450,14 +450,24 @@ struct SymbolEnumeratorAdapter return obj; } - std::wstring next() + python::tuple next() { - auto symName = m_symEnum->Next(); + std::wstring name; + kdlib::MEMOFFSET_64 offset; + kdlib::TypeInfoPtr typeInfo; - if (symName.empty()) - throw StopIteration("No more data."); + { + AutoRestorePyState pystate; - return symName; + if (!m_symEnum->Next()) + throw StopIteration("No more data."); + + name = m_symEnum->getName(); + offset = m_symEnum->getOffset(); + typeInfo = m_symEnum->getType(); + } + + return python::make_tuple(name, offset, typeInfo); } private: diff --git a/test/scripts/typeinfo.py b/test/scripts/typeinfo.py index 1f13ad7..d1a47ac 100644 --- a/test/scripts/typeinfo.py +++ b/test/scripts/typeinfo.py @@ -387,9 +387,9 @@ class TypeInfoTest( unittest.TestCase ): self.assertTrue(ti.isStaticField("m_staticConst")) self.assertFalse(ti.isConstField("m_staticConst")) - def testClangCompile(self): - src = "#include \r\n"; - opt = "-I\"C:/Program Files (x86)/Windows Kits/8.1/Include/um\" -I\"C:/Program Files (x86)/Windows Kits/8.1/Include/shared\" -w"; - symEnum = pykd.getSymbolProviderFromSource(src, opt) - for sym in symEnum: - print(sym) \ No newline at end of file + #def testClangCompile(self): + # src = "#include \r\n"; + # opt = "-I\"C:/Program Files (x86)/Windows Kits/8.1/Include/um\" -I\"C:/Program Files (x86)/Windows Kits/8.1/Include/shared\" -w"; + # symEnum = pykd.getSymbolProviderFromSource(src, opt) + # for sym, _, _ in symEnum: + # print(sym) \ No newline at end of file