From e6de2de5110992326d9a7d35f5f94fa0700cea0f Mon Sep 17 00:00:00 2001 From: triton Date: Wed, 6 Mar 2013 03:51:15 +0000 Subject: [PATCH] Fields now keep a reference to their class. --- src/Bridge/Field.cs | 1 + src/Parser/Parser.cpp | 5 +++-- src/Parser/Parser.h | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/Bridge/Field.cs b/src/Bridge/Field.cs index 99244dcd..9d7510fa 100644 --- a/src/Bridge/Field.cs +++ b/src/Bridge/Field.cs @@ -10,6 +10,7 @@ namespace Cxxi public AccessSpecifier Access { get; set; } public uint Offset { get; set; } + public Class Class { get; set; } public Field() { diff --git a/src/Parser/Parser.cpp b/src/Parser/Parser.cpp index cb88094f..1070170e 100644 --- a/src/Parser/Parser.cpp +++ b/src/Parser/Parser.cpp @@ -381,7 +381,7 @@ Cxxi::Class^ Parser::WalkRecordCXX(clang::CXXRecordDecl* Record, bool IsDependen { FieldDecl* FD = (*it); - Cxxi::Field^ Field = WalkFieldCXX(FD); + Cxxi::Field^ Field = WalkFieldCXX(FD, RC); if (Layout) Field->Offset = Layout->getFieldOffset(FD->getFieldIndex()); @@ -513,7 +513,7 @@ Cxxi::Method^ Parser::WalkMethodCXX(clang::CXXMethodDecl* MD) //-----------------------------------// -Cxxi::Field^ Parser::WalkFieldCXX(clang::FieldDecl* FD) +Cxxi::Field^ Parser::WalkFieldCXX(clang::FieldDecl* FD, Cxxi::Class^ Class) { using namespace clang; using namespace clix; @@ -528,6 +528,7 @@ Cxxi::Field^ Parser::WalkFieldCXX(clang::FieldDecl* FD) auto TL = FD->getTypeSourceInfo()->getTypeLoc(); F->QualifiedType = GetQualifiedType(FD->getType(), WalkType(FD->getType(), &TL)); F->Access = ConvertToAccess(FD->getAccess()); + F->Class = Class; HandleComments(FD, F); diff --git a/src/Parser/Parser.h b/src/Parser/Parser.h index 73a90a34..54000b45 100644 --- a/src/Parser/Parser.h +++ b/src/Parser/Parser.h @@ -99,7 +99,7 @@ protected: Cxxi::Function^ WalkFunction(clang::FunctionDecl*, bool IsDependent = false); Cxxi::Class^ WalkRecordCXX(clang::CXXRecordDecl*, bool IsDependent = false); Cxxi::Method^ WalkMethodCXX(clang::CXXMethodDecl*); - Cxxi::Field^ WalkFieldCXX(clang::FieldDecl*); + Cxxi::Field^ WalkFieldCXX(clang::FieldDecl*, Cxxi::Class^); Cxxi::ClassTemplate^ Parser::WalkClassTemplate(clang::ClassTemplateDecl*); Cxxi::FunctionTemplate^ Parser::WalkFunctionTemplate( clang::FunctionTemplateDecl*);