Is there going to be a test for this? On Tue, Aug 30, 2016 at 1:48 PM Enrico Granata via lldb-commits < lldb-commits@lists.llvm.org> wrote:
> Author: enrico > Date: Tue Aug 30 15:39:58 2016 > New Revision: 280151 > > URL: http://llvm.org/viewvc/llvm-project?rev=280151&view=rev > Log: > Add SBType::GetArrayType() such that - given a type - one can make an > array (of a given size) of that type > > This is currently only implemented for the clang-based TypeSystem, but > other languages are welcome to jump in! > > > Modified: > lldb/trunk/include/lldb/API/SBType.h > lldb/trunk/include/lldb/Symbol/ClangASTContext.h > lldb/trunk/include/lldb/Symbol/CompilerType.h > lldb/trunk/include/lldb/Symbol/TypeSystem.h > lldb/trunk/scripts/interface/SBType.i > lldb/trunk/source/API/SBType.cpp > lldb/trunk/source/Symbol/ClangASTContext.cpp > lldb/trunk/source/Symbol/CompilerType.cpp > lldb/trunk/source/Symbol/TypeSystem.cpp > > Modified: lldb/trunk/include/lldb/API/SBType.h > URL: > http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/API/SBType.h?rev=280151&r1=280150&r2=280151&view=diff > > ============================================================================== > --- lldb/trunk/include/lldb/API/SBType.h (original) > +++ lldb/trunk/include/lldb/API/SBType.h Tue Aug 30 15:39:58 2016 > @@ -189,6 +189,9 @@ public: > GetArrayElementType (); > > lldb::SBType > + GetArrayType (uint64_t size); > + > + lldb::SBType > GetVectorElementType (); > > lldb::SBType > > Modified: lldb/trunk/include/lldb/Symbol/ClangASTContext.h > URL: > http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Symbol/ClangASTContext.h?rev=280151&r1=280150&r2=280151&view=diff > > ============================================================================== > --- lldb/trunk/include/lldb/Symbol/ClangASTContext.h (original) > +++ lldb/trunk/include/lldb/Symbol/ClangASTContext.h Tue Aug 30 15:39:58 > 2016 > @@ -790,6 +790,9 @@ public: > GetArrayElementType (lldb::opaque_compiler_type_t type, uint64_t > *stride) override; > > CompilerType > + GetArrayType (lldb::opaque_compiler_type_t type, uint64_t size) > override; > + > + CompilerType > GetCanonicalType (lldb::opaque_compiler_type_t type) override; > > CompilerType > > Modified: lldb/trunk/include/lldb/Symbol/CompilerType.h > URL: > http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Symbol/CompilerType.h?rev=280151&r1=280150&r2=280151&view=diff > > ============================================================================== > --- lldb/trunk/include/lldb/Symbol/CompilerType.h (original) > +++ lldb/trunk/include/lldb/Symbol/CompilerType.h Tue Aug 30 15:39:58 2016 > @@ -269,6 +269,9 @@ public: > GetArrayElementType(uint64_t *stride = nullptr) const; > > CompilerType > + GetArrayType (uint64_t size) const; > + > + CompilerType > GetCanonicalType () const; > > CompilerType > > Modified: lldb/trunk/include/lldb/Symbol/TypeSystem.h > URL: > http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Symbol/TypeSystem.h?rev=280151&r1=280150&r2=280151&view=diff > > ============================================================================== > --- lldb/trunk/include/lldb/Symbol/TypeSystem.h (original) > +++ lldb/trunk/include/lldb/Symbol/TypeSystem.h Tue Aug 30 15:39:58 2016 > @@ -274,6 +274,9 @@ public: > GetArrayElementType (lldb::opaque_compiler_type_t type, uint64_t > *stride) = 0; > > virtual CompilerType > + GetArrayType (lldb::opaque_compiler_type_t type, uint64_t size); > + > + virtual CompilerType > GetCanonicalType (lldb::opaque_compiler_type_t type) = 0; > > // Returns -1 if this isn't a function of if the function doesn't > have a prototype > > Modified: lldb/trunk/scripts/interface/SBType.i > URL: > http://llvm.org/viewvc/llvm-project/lldb/trunk/scripts/interface/SBType.i?rev=280151&r1=280150&r2=280151&view=diff > > ============================================================================== > --- lldb/trunk/scripts/interface/SBType.i (original) > +++ lldb/trunk/scripts/interface/SBType.i Tue Aug 30 15:39:58 2016 > @@ -247,6 +247,9 @@ public: > > lldb::SBType > GetArrayElementType (); > + > + lldb::SBType > + GetArrayType (uint64_t size); > > lldb::SBType > GetVectorElementType (); > > Modified: lldb/trunk/source/API/SBType.cpp > URL: > http://llvm.org/viewvc/llvm-project/lldb/trunk/source/API/SBType.cpp?rev=280151&r1=280150&r2=280151&view=diff > > ============================================================================== > --- lldb/trunk/source/API/SBType.cpp (original) > +++ lldb/trunk/source/API/SBType.cpp Tue Aug 30 15:39:58 2016 > @@ -229,6 +229,14 @@ SBType::GetArrayElementType() > } > > SBType > +SBType::GetArrayType (uint64_t size) > +{ > + if (!IsValid()) > + return SBType(); > + return SBType(TypeImplSP(new > TypeImpl(m_opaque_sp->GetCompilerType(true).GetArrayType(size)))); > +} > + > +SBType > SBType::GetVectorElementType () > { > SBType type_sb; > > Modified: lldb/trunk/source/Symbol/ClangASTContext.cpp > URL: > http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Symbol/ClangASTContext.cpp?rev=280151&r1=280150&r2=280151&view=diff > > ============================================================================== > --- lldb/trunk/source/Symbol/ClangASTContext.cpp (original) > +++ lldb/trunk/source/Symbol/ClangASTContext.cpp Tue Aug 30 15:39:58 2016 > @@ -4566,6 +4566,24 @@ ClangASTContext::GetArrayElementType (ll > } > > CompilerType > +ClangASTContext::GetArrayType (lldb::opaque_compiler_type_t type, > uint64_t size) > +{ > + if (type) > + { > + clang::QualType qual_type(GetCanonicalQualType(type)); > + if (clang::ASTContext *ast_ctx = getASTContext()) > + { > + if (size == 0) > + return CompilerType (ast_ctx, > ast_ctx->getConstantArrayType(qual_type, llvm::APInt(64, size), > clang::ArrayType::ArraySizeModifier::Normal, 0)); > + else > + return CompilerType (ast_ctx, > ast_ctx->getIncompleteArrayType(qual_type, > clang::ArrayType::ArraySizeModifier::Normal, 0)); > + } > + } > + > + return CompilerType(); > +} > + > +CompilerType > ClangASTContext::GetCanonicalType (lldb::opaque_compiler_type_t type) > { > if (type) > > Modified: lldb/trunk/source/Symbol/CompilerType.cpp > URL: > http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Symbol/CompilerType.cpp?rev=280151&r1=280150&r2=280151&view=diff > > ============================================================================== > --- lldb/trunk/source/Symbol/CompilerType.cpp (original) > +++ lldb/trunk/source/Symbol/CompilerType.cpp Tue Aug 30 15:39:58 2016 > @@ -467,7 +467,16 @@ CompilerType::GetArrayElementType (uint6 > if (IsValid()) > { > return m_type_system->GetArrayElementType(m_type, stride); > - > + } > + return CompilerType(); > +} > + > +CompilerType > +CompilerType::GetArrayType (uint64_t size) const > +{ > + if (IsValid()) > + { > + return m_type_system->GetArrayType(m_type, size); > } > return CompilerType(); > } > > Modified: lldb/trunk/source/Symbol/TypeSystem.cpp > URL: > http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Symbol/TypeSystem.cpp?rev=280151&r1=280150&r2=280151&view=diff > > ============================================================================== > --- lldb/trunk/source/Symbol/TypeSystem.cpp (original) > +++ lldb/trunk/source/Symbol/TypeSystem.cpp Tue Aug 30 15:39:58 2016 > @@ -62,6 +62,12 @@ TypeSystem::IsAnonymousType (lldb::opaqu > } > > CompilerType > +TypeSystem::GetArrayType (lldb::opaque_compiler_type_t type, uint64_t > size) > +{ > + return CompilerType(); > +} > + > +CompilerType > TypeSystem::GetLValueReferenceType (lldb::opaque_compiler_type_t type) > { > return CompilerType(); > > > _______________________________________________ > lldb-commits mailing list > lldb-commits@lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits >
_______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits