ASTContext: Factor 'getObjCEncodingForPropertyType' as its own method.
authorJoe Groff <arcata@gmail.com>
Mon, 7 Jul 2014 22:25:15 +0000 (22:25 +0000)
committerJoe Groff <arcata@gmail.com>
Mon, 7 Jul 2014 22:25:15 +0000 (22:25 +0000)
It is useful to get the property encoding for an ObjC type without a full
ObjCPropertyDecl.

llvm-svn: 212496

clang/include/clang/AST/ASTContext.h
clang/lib/AST/ASTContext.cpp

index 40ccf84..0a991cc 100644 (file)
@@ -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.
index 4250850..6526a77 100644 (file)
@@ -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) {