Ok, I've already started. Don't let me down, my life is on the line here :)
On Tue, Aug 30, 2016 at 2:40 PM Enrico Granata <egran...@apple.com> wrote: > The plan is definitely to have one > > I am not done yet with being ready to use this though; the wait should be > short enough that you can hold your breath through it :-) > > On Aug 30, 2016, at 2:29 PM, Zachary Turner <ztur...@google.com> wrote: > > 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 >> > > > Thanks, > *- Enrico* > 📩 egranata@.com ☎️ 27683 > >
_______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits