Browse Source

Walk the vtable further down after all the child declarations of the class have been processed so that we find the proper methods once we walk the vtable components.

pull/22/merge
triton 13 years ago
parent
commit
0926734f38
  1. 6
      src/Parser/Parser.cpp

6
src/Parser/Parser.cpp

@ -567,8 +567,6 @@ CppSharp::AST::Class^ Parser::WalkRecordCXX(clang::CXXRecordDecl* Record)
RC->Layout->DataSize = (int)Layout->getDataSize().getQuantity(); RC->Layout->DataSize = (int)Layout->getDataSize().getQuantity();
RC->Layout->HasOwnVFPtr = Layout->hasOwnVFPtr(); RC->Layout->HasOwnVFPtr = Layout->hasOwnVFPtr();
RC->Layout->VBPtrOffset = Layout->getVBPtrOffset().getQuantity(); RC->Layout->VBPtrOffset = Layout->getVBPtrOffset().getQuantity();
if (Record->isDynamicClass())
WalkVTable(Record, RC);
} }
CppSharp::AST::AccessSpecifierDecl^ AccessDecl = nullptr; CppSharp::AST::AccessSpecifierDecl^ AccessDecl = nullptr;
@ -641,6 +639,10 @@ CppSharp::AST::Class^ Parser::WalkRecordCXX(clang::CXXRecordDecl* Record)
RC->Bases->Add(Base); RC->Bases->Add(Base);
} }
// Process the vtables
if (Record->isDynamicClass())
WalkVTable(Record, RC);
return RC; return RC;
} }

Loading…
Cancel
Save