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
This commit is contained in:
Joe Groff 2014-07-07 22:25:15 +00:00
Родитель 077afe023b
Коммит 5c688ad49c
2 изменённых файлов: 15 добавлений и 3 удалений

Просмотреть файл

@ -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.

Просмотреть файл

@ -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) {