From: Joe Groff Date: Mon, 7 Jul 2014 22:25:15 +0000 (+0000) Subject: ASTContext: Factor 'getObjCEncodingForPropertyType' as its own method. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=5c688ad49cdb85539cbe779accf953f16dab77b2;p=clang ASTContext: Factor 'getObjCEncodingForPropertyType' as its own method. It is useful to get the property encoding for an ObjC type without a full ObjCPropertyDecl. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@212496 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/AST/ASTContext.h b/include/clang/AST/ASTContext.h index 40ccf8484e..0a991cc4ce 100644 --- a/include/clang/AST/ASTContext.h +++ b/include/clang/AST/ASTContext.h @@ -1373,6 +1373,10 @@ public: void getObjCEncodingForType(QualType T, std::string &S, const FieldDecl *Field=nullptr) const; + /// \brief Emit the Objective-C property type encoding for the given + /// type \p T into \p S. + void getObjCEncodingForPropertyType(QualType T, std::string &S) const; + void getLegacyIntegralTypeEncoding(QualType &t) const; /// \brief Put the string version of the type qualifiers \p QT into \p S. diff --git a/lib/AST/ASTContext.cpp b/lib/AST/ASTContext.cpp index 4250850467..6526a77754 100644 --- a/lib/AST/ASTContext.cpp +++ b/lib/AST/ASTContext.cpp @@ -5022,9 +5022,7 @@ void ASTContext::getObjCEncodingForPropertyDecl(const ObjCPropertyDecl *PD, // Encode result type. // GCC has some special rules regarding encoding of properties which // closely resembles encoding of ivars. - getObjCEncodingForTypeImpl(PD->getType(), S, true, true, nullptr, - true /* outermost type */, - true /* encoding for property */); + getObjCEncodingForPropertyType(PD->getType(), S); if (PD->isReadOnly()) { S += ",R"; @@ -5097,6 +5095,16 @@ void ASTContext::getObjCEncodingForType(QualType T, std::string& S, true /* outermost type */); } +void ASTContext::getObjCEncodingForPropertyType(QualType T, + std::string& S) const { + // Encode result type. + // GCC has some special rules regarding encoding of properties which + // closely resembles encoding of ivars. + getObjCEncodingForTypeImpl(T, S, true, true, nullptr, + true /* outermost type */, + true /* encoding property */); +} + static char getObjCEncodingForPrimitiveKind(const ASTContext *C, BuiltinType::Kind kind) { switch (kind) {