added TypeInfo.isConstField method (return True if a field is a const field)

This commit is contained in:
ussrhero 2019-09-17 00:30:20 +03:00
parent 7d9b0faffa
commit 85028a9a1b
3 changed files with 23 additions and 1 deletions

View File

@ -917,6 +917,10 @@ void pykd_init()
"Return True if a field is a static field by field name")
.def("isStaticField", TypeInfoAdapter::isStaticFieldByIndex,
"Return True if a field is a static field by field name")
.def("isConstField", TypeInfoAdapter::isConstField,
"Return True if a field is a const field by field name")
.def("isConstField", TypeInfoAdapter::isConstFieldByIndex,
"Return True if a field is a const field by field name")
.def("bitOffset", TypeInfoAdapter::getBitOffset,
"Return bit field's offset")
.def("bitWidth", TypeInfoAdapter::getBitWidth,

View File

@ -155,6 +155,19 @@ struct TypeInfoAdapter : public kdlib::TypeInfo {
return typeInfo->isStaticMember(index);
}
static bool isConstField(const kdlib::TypeInfoPtr &typeInfo, const std::wstring &name)
{
AutoRestorePyState pystate;
return typeInfo->isConstMember(name);
}
static bool isConstFieldByIndex(const kdlib::TypeInfoPtr &typeInfo, size_t index)
{
AutoRestorePyState pystate;
return typeInfo->isConstMember(index);
}
static kdlib::TypeInfoPtr getElementByName( kdlib::TypeInfo &typeInfo, const std::wstring &name )
{
AutoRestorePyState pystate;

View File

@ -381,3 +381,8 @@ class TypeInfoTest( unittest.TestCase ):
ti = pykd.typeInfo("classChild")
self.assertTrue(ti.isStaticField("m_staticField"))
self.assertFalse(ti.isStaticField("m_baseField"))
def testIsConstField(self):
ti = pykd.typeInfo("classChild")
self.assertTrue(ti.isStaticField("m_staticConst"))
self.assertFalse(ti.isConstField("m_staticConst"))