Skip to content

Commit bbee1c8

Browse files
committed
First draft for LLDBParser::enumerateClassFunctions
1 parent 07333c2 commit bbee1c8

File tree

3 files changed

+17
-1
lines changed

3 files changed

+17
-1
lines changed

oi/type_graph/LLDBParser.cpp

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,7 @@ Class& LLDBParser::enumerateClass(lldb::SBType& type) {
120120
auto &c = makeType<Class>(type, kind, displayName, name, size, virtuality);
121121

122122
enumerateClassMembers(type, c.members);
123+
enumerateClassFunctions(type, c.functions);
123124

124125
return c;
125126
}
@@ -128,6 +129,7 @@ void LLDBParser::enumerateClassMembers(lldb::SBType& type, std::vector<Member>&
128129
assert(members.empty());
129130
members.reserve(type.GetNumberOfFields());
130131

132+
/* TODO: We are missing the _vptr */
131133
for (uint32_t i = 0; i < type.GetNumberOfFields(); i++) {
132134
auto field = type.GetFieldAtIndex(i);
133135
if (field.GetName() == nullptr)
@@ -146,6 +148,19 @@ void LLDBParser::enumerateClassMembers(lldb::SBType& type, std::vector<Member>&
146148
});
147149
}
148150

151+
void LLDBParser::enumerateClassFunctions(lldb::SBType &type, std::vector<Function>& functions) {
152+
assert(functions.empty());
153+
functions.reserve(type.GetNumberOfMemberFunctions());
154+
155+
/* TODO: We are missing the default constructors */
156+
for (uint32_t i = 0; i < type.GetNumberOfMemberFunctions(); i++) {
157+
auto function = type.GetMemberFunctionAtIndex(i);
158+
159+
/* TODO: We don't know if the function is virtual */
160+
functions.emplace_back(function.GetName(), false);
161+
}
162+
}
163+
149164
Enum& LLDBParser::enumerateEnum(lldb::SBType& type) {
150165
const char *typeName = type.GetName();
151166
std::string name = typeName ? typeName : "";

oi/type_graph/LLDBParser.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ class LLDBParser {
6868
Primitive::Kind primitiveFloatKind(lldb::SBType& type);
6969

7070
void enumerateClassMembers(lldb::SBType& type, std::vector<Member>& members);
71+
void enumerateClassFunctions(lldb::SBType &type, std::vector<Function>& functions);
7172

7273
bool chasePointer() const;
7374

test/test_lldb_parser.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -542,7 +542,7 @@ TEST_F(LLDBParserTest, VirtualFunctions) {
542542
testMultiCompiler("oid_test_case_inheritance_polymorphic_a_as_a",
543543
R"(
544544
[1] Pointer
545-
[0] Class: A (size: 16)
545+
[0] Class: ns_inheritance_polymorphic::A (size: 16)
546546
Member: _vptr$A (offset: 0)
547547
Primitive: StubbedPointer
548548
Member: int_a (offset: 8)

0 commit comments

Comments
 (0)