This code is still untested aside from that it compiles. I mostly want to put an early work-in-progress up here to make sure I'm on the right path and am not doing anything fundamentally wrong. Not all types are supported, and I don't intend to support all types with this initial commit. Things like const / volatile are not important for a first pass, and I'm only looking at getting the most common basic types of types working.
One oddity of PDB is that the debug info does not maintain enough information to accurately reconstruct the DeclContext hierarchy. If you have this:
namespace Foo { class Bar { class Baz { }; }; }
then that will appear in the PDB as a type with the name Foo::Bar::Baz, and there's no information about whether Foo and Bar are namespaces or classes. It is possible to give a best effort attempt, but it's going to be outside the scope of this patch. So, for now, I intend to put every single type under the master translation unit decl with fully scoped names. This isn't perfect, but we can iterate on it in the future.
Again, this is a work in progress, mostly just want to make sure this looks like the right approach.
The byte sizes of your basic types need to come from getting the bit size of your basic types in your current clang::ASTContext which you can get from your m_ast:
See the function ClangASTContext::GetBuiltinTypeForDWARFEncodingAndBitSize(...) for more hints.
As a hint this is how your float cases should look:
Same goes for all other types.