Add some more documentation on how to navigate from a LambdaExpr::Capture
authorJames Dennett <jdennett@google.com>
Thu, 4 Jul 2013 22:15:44 +0000 (22:15 +0000)
committerJames Dennett <jdennett@google.com>
Thu, 4 Jul 2013 22:15:44 +0000 (22:15 +0000)
to the associated FieldDecl.

llvm-svn: 185674

clang/include/clang/AST/DeclCXX.h
clang/include/clang/AST/ExprCXX.h

index 2de99f0..3108457 100644 (file)
@@ -984,16 +984,17 @@ public:
   bool isLambda() const { return hasDefinition() && data().IsLambda; }
 
   /// \brief For a closure type, retrieve the mapping from captured
-  /// variables and this to the non-static data members that store the
+  /// variables and \c this to the non-static data members that store the
   /// values or references of the captures.
   ///
   /// \param Captures Will be populated with the mapping from captured
   /// variables to the corresponding fields.
   ///
   /// \param ThisCapture Will be set to the field declaration for the
-  /// 'this' capture.
+  /// \c this capture.
   ///
-  /// \note No entries will be added for init-captures.
+  /// \note No entries will be added for init-captures, as they do not capture
+  /// variables.
   void getCaptureFields(llvm::DenseMap<const VarDecl *, FieldDecl *> &Captures,
                         FieldDecl *&ThisCapture) const;
 
index a241d1e..925b166 100644 (file)
@@ -1401,6 +1401,10 @@ public:
     }
 
     /// \brief Retrieve the field for an init-capture.
+    ///
+    /// This works only for an init-capture.  To retrieve the FieldDecl for
+    /// a captured variable or for a capture of \c this, use
+    /// LambdaExpr::getLambdaClass and CXXRecordDecl::getCaptureFields.
     FieldDecl *getInitCaptureField() const {
       assert(getCaptureKind() == LCK_Init && "no field for non-init-capture");
       return cast<FieldDecl>(DeclAndBits.getPointer());
@@ -1410,8 +1414,8 @@ public:
     /// written between the square brackets introducing the lambda).
     bool isImplicit() const { return DeclAndBits.getInt() & Capture_Implicit; }
 
-    /// \brief Determine whether this was an explicit capturewritten
-    /// between the square brackets introducing the lambda.
+    /// \brief Determine whether this was an explicit capture (written
+    /// between the square brackets introducing the lambda).
     bool isExplicit() const { return !isImplicit(); }
 
     /// \brief Retrieve the source location of the capture.