[cfe-commits] r94234 - /cfe/trunk/include/clang-c/Index.h

Douglas Gregor dgregor at apple.com
Fri Jan 22 14:29:16 PST 2010


Author: dgregor
Date: Fri Jan 22 16:29:16 2010
New Revision: 94234

URL: http://llvm.org/viewvc/llvm-project?rev=94234&view=rev
Log:
Improve content and structure of the Doxygen documentation for the
CIndex API. No functionality change.

Modified:
    cfe/trunk/include/clang-c/Index.h

Modified: cfe/trunk/include/clang-c/Index.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang-c/Index.h?rev=94234&r1=94233&r2=94234&view=diff

==============================================================================
--- cfe/trunk/include/clang-c/Index.h (original)
+++ cfe/trunk/include/clang-c/Index.h Fri Jan 22 16:29:16 2010
@@ -65,151 +65,11 @@
 typedef void *CXTranslationUnit;  /* A translation unit instance. */
 
 /**
- * \brief Describes the kind of entity that a cursor refers to.
+ * \brief Opaque pointer representing client data that will be passed through
+ * to various callbacks and visitors.
  */
-enum CXCursorKind {
- /* Declarations */
- CXCursor_FirstDecl                     = 1,
- /** 
-  * \brief A declaration whose specific kind is not exposed via this
-  * interface. 
-  *
-  * Unexposed declarations have the same operations as any other kind
-  * of declaration; one can extract their location information,
-  * spelling, find their definitions, etc. However, the specific kind
-  * of the declaration is not reported.
-  */
- CXCursor_UnexposedDecl                 = 1,
- /** \brief A C or C++ struct. */
- CXCursor_StructDecl                    = 2, 
- /** \brief A C or C++ union. */
- CXCursor_UnionDecl                     = 3,
- /** \brief A C++ class. */
- CXCursor_ClassDecl                     = 4,
- /** \brief An enumeration. */
- CXCursor_EnumDecl                      = 5,
- /** 
-  * \brief A field (in C) or non-static data member (in C++) in a
-  * struct, union, or C++ class.
-  */
- CXCursor_FieldDecl                     = 6,
- /** \brief An enumerator constant. */
- CXCursor_EnumConstantDecl              = 7,
- /** \brief A function. */
- CXCursor_FunctionDecl                  = 8,
- /** \brief A variable. */
- CXCursor_VarDecl                       = 9,
- /** \brief A function or method parameter. */
- CXCursor_ParmDecl                      = 10,
- /** \brief An Objective-C @interface. */
- CXCursor_ObjCInterfaceDecl             = 11,
- /** \brief An Objective-C @interface for a category. */
- CXCursor_ObjCCategoryDecl              = 12,
- /** \brief An Objective-C @protocol declaration. */
- CXCursor_ObjCProtocolDecl              = 13,
- /** \brief An Objective-C @property declaration. */
- CXCursor_ObjCPropertyDecl              = 14,
- /** \brief An Objective-C instance variable. */
- CXCursor_ObjCIvarDecl                  = 15,
- /** \brief An Objective-C instance method. */
- CXCursor_ObjCInstanceMethodDecl        = 16,
- /** \brief An Objective-C class method. */
- CXCursor_ObjCClassMethodDecl           = 17,
- /** \brief An Objective-C @implementation. */
- CXCursor_ObjCImplementationDecl        = 18,
- /** \brief An Objective-C @implementation for a category. */
- CXCursor_ObjCCategoryImplDecl          = 19,
- /** \brief A typedef */
- CXCursor_TypedefDecl                   = 20,
- CXCursor_LastDecl                      = 20,
- 
- /* References */
- CXCursor_FirstRef                      = 40, /* Decl references */
- CXCursor_ObjCSuperClassRef             = 40,            
- CXCursor_ObjCProtocolRef               = 41,
- CXCursor_ObjCClassRef                  = 42,
- /**
-  * \brief A reference to a type declaration.
-  *
-  * A type reference occurs anywhere where a type is named but not
-  * declared. For example, given:
-  *
-  * \code
-  * typedef unsigned size_type;
-  * size_type size;
-  * \endcode
-  *
-  * The typedef is a declaration of size_type (CXCursor_TypedefDecl),
-  * while the type of the variable "size" is referenced. The cursor
-  * referenced by the type of size is the typedef for size_type.
-  */
- CXCursor_TypeRef                       = 43,
- CXCursor_LastRef                       = 43,
- 
- /* Error conditions */
- CXCursor_FirstInvalid                  = 70,
- CXCursor_InvalidFile                   = 70,
- CXCursor_NoDeclFound                   = 71,
- CXCursor_NotImplemented                = 72,
- CXCursor_LastInvalid                   = 72,
-
- /* Expressions */
- CXCursor_FirstExpr                     = 100,
-
- /**
-  * \brief An expression whose specific kind is not exposed via this
-  * interface. 
-  *
-  * Unexposed expressions have the same operations as any other kind
-  * of expression; one can extract their location information,
-  * spelling, children, etc. However, the specific kind of the
-  * expression is not reported.
-  */
- CXCursor_UnexposedExpr                 = 100,
-
- /**
-  * \brief An expression that refers to some value declaration, such
-  * as a function, varible, or enumerator.
-  */
- CXCursor_DeclRefExpr                   = 101,
-
- /**
-  * \brief An expression that refers to a member of a struct, union,
-  * class, Objective-C class, etc.
-  */
- CXCursor_MemberRefExpr                 = 102,
-
- /** \brief An expression that calls a function. */
- CXCursor_CallExpr                      = 103,
-
- /** \brief An expression that sends a message to an Objective-C
-     object or class. */
- CXCursor_ObjCMessageExpr               = 104,
- CXCursor_LastExpr                      = 104,
-
- /* Statements */
- CXCursor_FirstStmt                     = 200,
- /**
-  * \brief A statement whose specific kind is not exposed via this
-  * interface.
-  *
-  * Unexposed statements have the same operations as any other kind of
-  * statement; one can extract their location information, spelling,
-  * children, etc. However, the specific kind of the statement is not
-  * reported.
-  */
- CXCursor_UnexposedStmt                 = 200,
- CXCursor_LastStmt                      = 200,
-
- /**
-  * \brief Cursor that represents the translation unit itself.
-  *
-  * The translation unit cursor exists primarily to act as the root
-  * cursor for traversing the contents of a translation unit.
-  */
- CXCursor_TranslationUnit               = 300
-};
-
+typedef void *CXClientData;
+  
 /**
  * \brief Provides the contents of a file that has not yet been saved to disk.
  *
@@ -239,29 +99,6 @@
 };
 
 /**
- * \brief A cursor representing some element in the abstract syntax tree for
- * a translation unit.
- *
- * The cursor abstraction unifies the different kinds of entities in a 
- * program--declaration, statements, expressions, references to declarations,
- * etc.--under a single "cursor" abstraction with a common set of operations.
- * Common operation for a cursor include: getting the physical location in
- * a source file where the cursor points, getting the name associated with a
- * cursor, and retrieving cursors for any child nodes of a particular cursor.
- *
- * Cursors can be produced in two specific ways.
- * clang_getTranslationUnitCursor() produces a cursor for a translation unit,
- * from which one can use clang_visitChildren() to explore the rest of the
- * translation unit. clang_getCursor() maps from a physical source location
- * to the entity that resides at that location, allowing one to map from the
- * source code into the AST.
- */
-typedef struct {
-  enum CXCursorKind kind;
-  void *data[3];
-} CXCursor;  
-
-/**
  * \defgroup CINDEX_STRING String manipulation routines
  *
  * @{
@@ -393,86 +230,8 @@
   const char **clang_command_line_args
 );
 
-typedef void *CXClientData;
-
-/**
- * \brief Retrieve the cursor that represents the given translation unit.
- *
- * The translation unit cursor can be used to start traversing the
- * various declarations within the given translation unit.
- */
-CINDEX_LINKAGE CXCursor clang_getTranslationUnitCursor(CXTranslationUnit);
-
-/**
- * \brief Describes how the traversal of the children of a particular
- * cursor should proceed after visiting a particular child cursor.
- *
- * A value of this enumeration type should be returned by each
- * \c CXCursorVisitor to indicate how clang_visitChildren() proceed.
- */
-enum CXChildVisitResult {
-  /**
-   * \brief Terminates the cursor traversal. 
-   */
-  CXChildVisit_Break,
-  /** 
-   * \brief Continues the cursor traversal with the next sibling of
-   * the cursor just visited, without visiting its children.
-   */
-  CXChildVisit_Continue,
-  /**
-   * \brief Recursively traverse the children of this cursor, using
-   * the same visitor and client data.
-   */
-  CXChildVisit_Recurse
-};
-
-/**
- * \brief Visitor invoked for each cursor found by a traversal.
- *
- * This visitor function will be invoked for each cursor found by
- * clang_visitCursorChildren(). Its first argument is the cursor being
- * visited, its second argument is the parent visitor for that cursor,
- * and its third argument is the client data provided to
- * clang_visitCursorChildren().
- *
- * The visitor should return one of the \c CXChildVisitResult values
- * to direct clang_visitCursorChildren().
- */
-typedef enum CXChildVisitResult (*CXCursorVisitor)(CXCursor cursor, 
-                                                   CXCursor parent, 
-                                                   CXClientData client_data);
-
-/**
- * \brief Visit the children of a particular cursor.
- *
- * This function visits all the direct children of the given cursor,
- * invoking the given \p visitor function with the cursors of each
- * visited child. The traversal may be recursive, if the visitor returns
- * \c CXChildVisit_Recurse. The traversal may also be ended prematurely, if
- * the visitor returns \c CXChildVisit_Break.
- *
- * \param tu the translation unit into which the cursor refers.
- *
- * \param parent the cursor whose child may be visited. All kinds of
- * cursors can be visited, including invalid visitors (which, by
- * definition, have no children).
- *
- * \param visitor the visitor function that will be invoked for each
- * child of \p parent.
- *
- * \param client_data pointer data supplied by the client, which will
- * be passed to the visitor each time it is invoked.
- *
- * \returns a non-zero value if the traversal was terminated
- * prematurely by the visitor returning \c CXChildVisit_Break.
- */
-CINDEX_LINKAGE unsigned clang_visitChildren(CXCursor parent, 
-                                            CXCursorVisitor visitor,
-                                            CXClientData client_data);
-
 /**
- * \defgroup CINDEX_FILES File manipulation routines.
+ * \defgroup CINDEX_FILES File manipulation routines
  *
  * @{
  */
@@ -615,9 +374,255 @@
 /**
  * @}
  */
+
+/**
+ * \brief Describes the kind of entity that a cursor refers to.
+ */
+enum CXCursorKind {
+  /* Declarations */
+  CXCursor_FirstDecl                     = 1,
+  /** 
+   * \brief A declaration whose specific kind is not exposed via this
+   * interface. 
+   *
+   * Unexposed declarations have the same operations as any other kind
+   * of declaration; one can extract their location information,
+   * spelling, find their definitions, etc. However, the specific kind
+   * of the declaration is not reported.
+   */
+  CXCursor_UnexposedDecl                 = 1,
+  /** \brief A C or C++ struct. */
+  CXCursor_StructDecl                    = 2, 
+  /** \brief A C or C++ union. */
+  CXCursor_UnionDecl                     = 3,
+  /** \brief A C++ class. */
+  CXCursor_ClassDecl                     = 4,
+  /** \brief An enumeration. */
+  CXCursor_EnumDecl                      = 5,
+  /** 
+   * \brief A field (in C) or non-static data member (in C++) in a
+   * struct, union, or C++ class.
+   */
+  CXCursor_FieldDecl                     = 6,
+  /** \brief An enumerator constant. */
+  CXCursor_EnumConstantDecl              = 7,
+  /** \brief A function. */
+  CXCursor_FunctionDecl                  = 8,
+  /** \brief A variable. */
+  CXCursor_VarDecl                       = 9,
+  /** \brief A function or method parameter. */
+  CXCursor_ParmDecl                      = 10,
+  /** \brief An Objective-C @interface. */
+  CXCursor_ObjCInterfaceDecl             = 11,
+  /** \brief An Objective-C @interface for a category. */
+  CXCursor_ObjCCategoryDecl              = 12,
+  /** \brief An Objective-C @protocol declaration. */
+  CXCursor_ObjCProtocolDecl              = 13,
+  /** \brief An Objective-C @property declaration. */
+  CXCursor_ObjCPropertyDecl              = 14,
+  /** \brief An Objective-C instance variable. */
+  CXCursor_ObjCIvarDecl                  = 15,
+  /** \brief An Objective-C instance method. */
+  CXCursor_ObjCInstanceMethodDecl        = 16,
+  /** \brief An Objective-C class method. */
+  CXCursor_ObjCClassMethodDecl           = 17,
+  /** \brief An Objective-C @implementation. */
+  CXCursor_ObjCImplementationDecl        = 18,
+  /** \brief An Objective-C @implementation for a category. */
+  CXCursor_ObjCCategoryImplDecl          = 19,
+  /** \brief A typedef */
+  CXCursor_TypedefDecl                   = 20,
+  CXCursor_LastDecl                      = 20,
+  
+  /* References */
+  CXCursor_FirstRef                      = 40, /* Decl references */
+  CXCursor_ObjCSuperClassRef             = 40,            
+  CXCursor_ObjCProtocolRef               = 41,
+  CXCursor_ObjCClassRef                  = 42,
+  /**
+   * \brief A reference to a type declaration.
+   *
+   * A type reference occurs anywhere where a type is named but not
+   * declared. For example, given:
+   *
+   * \code
+   * typedef unsigned size_type;
+   * size_type size;
+   * \endcode
+   *
+   * The typedef is a declaration of size_type (CXCursor_TypedefDecl),
+   * while the type of the variable "size" is referenced. The cursor
+   * referenced by the type of size is the typedef for size_type.
+   */
+  CXCursor_TypeRef                       = 43,
+  CXCursor_LastRef                       = 43,
+  
+  /* Error conditions */
+  CXCursor_FirstInvalid                  = 70,
+  CXCursor_InvalidFile                   = 70,
+  CXCursor_NoDeclFound                   = 71,
+  CXCursor_NotImplemented                = 72,
+  CXCursor_LastInvalid                   = 72,
+  
+  /* Expressions */
+  CXCursor_FirstExpr                     = 100,
+  
+  /**
+   * \brief An expression whose specific kind is not exposed via this
+   * interface. 
+   *
+   * Unexposed expressions have the same operations as any other kind
+   * of expression; one can extract their location information,
+   * spelling, children, etc. However, the specific kind of the
+   * expression is not reported.
+   */
+  CXCursor_UnexposedExpr                 = 100,
+  
+  /**
+   * \brief An expression that refers to some value declaration, such
+   * as a function, varible, or enumerator.
+   */
+  CXCursor_DeclRefExpr                   = 101,
+  
+  /**
+   * \brief An expression that refers to a member of a struct, union,
+   * class, Objective-C class, etc.
+   */
+  CXCursor_MemberRefExpr                 = 102,
+  
+  /** \brief An expression that calls a function. */
+  CXCursor_CallExpr                      = 103,
+  
+  /** \brief An expression that sends a message to an Objective-C
+   object or class. */
+  CXCursor_ObjCMessageExpr               = 104,
+  CXCursor_LastExpr                      = 104,
+  
+  /* Statements */
+  CXCursor_FirstStmt                     = 200,
+  /**
+   * \brief A statement whose specific kind is not exposed via this
+   * interface.
+   *
+   * Unexposed statements have the same operations as any other kind of
+   * statement; one can extract their location information, spelling,
+   * children, etc. However, the specific kind of the statement is not
+   * reported.
+   */
+  CXCursor_UnexposedStmt                 = 200,
+  CXCursor_LastStmt                      = 200,
+  
+  /**
+   * \brief Cursor that represents the translation unit itself.
+   *
+   * The translation unit cursor exists primarily to act as the root
+   * cursor for traversing the contents of a translation unit.
+   */
+  CXCursor_TranslationUnit               = 300
+};
+
+/**
+ * \brief A cursor representing some element in the abstract syntax tree for
+ * a translation unit.
+ *
+ * The cursor abstraction unifies the different kinds of entities in a 
+ * program--declaration, statements, expressions, references to declarations,
+ * etc.--under a single "cursor" abstraction with a common set of operations.
+ * Common operation for a cursor include: getting the physical location in
+ * a source file where the cursor points, getting the name associated with a
+ * cursor, and retrieving cursors for any child nodes of a particular cursor.
+ *
+ * Cursors can be produced in two specific ways.
+ * clang_getTranslationUnitCursor() produces a cursor for a translation unit,
+ * from which one can use clang_visitChildren() to explore the rest of the
+ * translation unit. clang_getCursor() maps from a physical source location
+ * to the entity that resides at that location, allowing one to map from the
+ * source code into the AST.
+ */
+typedef struct {
+  enum CXCursorKind kind;
+  void *data[3];
+} CXCursor;  
+
+/**
+ * \defgroup CINDEX_CURSOR_MANIP Cursor manipulations
+ *
+ * @{
+ */
   
-/*
- * CXCursor Operations.
+/**
+ * \brief Retrieve the NULL cursor, which represents no entity.
+ */
+CINDEX_LINKAGE CXCursor clang_getNullCursor(void);
+  
+/**
+ * \brief Retrieve the cursor that represents the given translation unit.
+ *
+ * The translation unit cursor can be used to start traversing the
+ * various declarations within the given translation unit.
+ */
+CINDEX_LINKAGE CXCursor clang_getTranslationUnitCursor(CXTranslationUnit);
+
+/**
+ * \brief Determine whether two cursors are equivalent.
+ */
+CINDEX_LINKAGE unsigned clang_equalCursors(CXCursor, CXCursor);
+  
+/**
+ * \brief Retrieve the kind of the given cursor.
+ */
+CINDEX_LINKAGE enum CXCursorKind clang_getCursorKind(CXCursor);
+
+/**
+ * \brief Determine whether the given cursor kind represents a declaration.
+ */
+CINDEX_LINKAGE unsigned clang_isDeclaration(enum CXCursorKind);
+
+/**
+ * \brief Determine whether the given cursor kind represents a simple
+ * reference.
+ *
+ * Note that other kinds of cursors (such as expressions) can also refer to
+ * other cursors. Use clang_getCursorReferenced() to determine whether a
+ * particular cursor refers to another entity.
+ */
+CINDEX_LINKAGE unsigned clang_isReference(enum CXCursorKind);
+
+/**
+ * \brief Determine whether the given cursor kind represents an expression.
+ */
+CINDEX_LINKAGE unsigned clang_isExpression(enum CXCursorKind);
+
+/**
+ * \brief Determine whether the given cursor kind represents a statement.
+ */
+CINDEX_LINKAGE unsigned clang_isStatement(enum CXCursorKind);
+
+/**
+ * \brief Determine whether the given cursor kind represents an invalid 
+ * cursor.
+ */  
+CINDEX_LINKAGE unsigned clang_isInvalid(enum CXCursorKind);
+
+/**
+ * \brief Determine whether the given cursor kind represents a translation 
+ * unit.   
+ */
+CINDEX_LINKAGE unsigned clang_isTranslationUnit(enum CXCursorKind);
+  
+/**
+ * @}
+ */
+  
+/**
+ * \defgroup CINDEX_CURSOR_SOURCE Mapping between cursors and source code
+ *
+ * Cursors represent a location within the Abstract Syntax Tree (AST). These
+ * routines help map between cursors and the physical locations where the
+ * described entities occur in the source code. The mapping is provided in
+ * both directions, so one can map from source code to the AST and back.
+ *
+ * @{
  */
   
 /**
@@ -636,24 +641,7 @@
  * a NULL cursor if no such entity can be found.
  */
 CINDEX_LINKAGE CXCursor clang_getCursor(CXTranslationUnit, CXSourceLocation);
-                         
-CINDEX_LINKAGE CXCursor clang_getNullCursor(void);
-
-/* clang_getCursorUSR() returns the USR (if any) associated with entity referred to by the
- *   provided CXCursor object. */
-CINDEX_LINKAGE CXString clang_getCursorUSR(CXCursor);
-
-CINDEX_LINKAGE enum CXCursorKind clang_getCursorKind(CXCursor);
-CINDEX_LINKAGE unsigned clang_isDeclaration(enum CXCursorKind);
-CINDEX_LINKAGE unsigned clang_isReference(enum CXCursorKind);
-CINDEX_LINKAGE unsigned clang_isExpression(enum CXCursorKind);
-CINDEX_LINKAGE unsigned clang_isStatement(enum CXCursorKind);
-CINDEX_LINKAGE unsigned clang_isInvalid(enum CXCursorKind);
-CINDEX_LINKAGE unsigned clang_isTranslationUnit(enum CXCursorKind);
-CINDEX_LINKAGE unsigned clang_equalCursors(CXCursor, CXCursor);
-
-CINDEX_LINKAGE CXString clang_getCursorSpelling(CXCursor);
-
+  
 /**
  * \brief Retrieve the physical location of the source constructor referenced
  * by the given cursor.
@@ -665,7 +653,7 @@
  * source code.
  */
 CINDEX_LINKAGE CXSourceLocation clang_getCursorLocation(CXCursor);
-    
+
 /**
  * \brief Retrieve the physical extent of the source construct referenced by
  * the given cursor.
@@ -679,6 +667,118 @@
  */
 CINDEX_LINKAGE CXSourceRange clang_getCursorExtent(CXCursor);
 
+/**
+ * @}
+ */
+  
+/**
+ * \defgroup CINDEX_CURSOR_TRAVERSAL Traversing the AST with cursors
+ *
+ * These routines provide the ability to traverse the abstract syntax tree
+ * using cursors.
+ *
+ * @{
+ */
+  
+/**
+ * \brief Describes how the traversal of the children of a particular
+ * cursor should proceed after visiting a particular child cursor.
+ *
+ * A value of this enumeration type should be returned by each
+ * \c CXCursorVisitor to indicate how clang_visitChildren() proceed.
+ */
+enum CXChildVisitResult {
+  /**
+   * \brief Terminates the cursor traversal. 
+   */
+  CXChildVisit_Break,
+  /** 
+   * \brief Continues the cursor traversal with the next sibling of
+   * the cursor just visited, without visiting its children.
+   */
+  CXChildVisit_Continue,
+  /**
+   * \brief Recursively traverse the children of this cursor, using
+   * the same visitor and client data.
+   */
+  CXChildVisit_Recurse
+};
+
+/**
+ * \brief Visitor invoked for each cursor found by a traversal.
+ *
+ * This visitor function will be invoked for each cursor found by
+ * clang_visitCursorChildren(). Its first argument is the cursor being
+ * visited, its second argument is the parent visitor for that cursor,
+ * and its third argument is the client data provided to
+ * clang_visitCursorChildren().
+ *
+ * The visitor should return one of the \c CXChildVisitResult values
+ * to direct clang_visitCursorChildren().
+ */
+typedef enum CXChildVisitResult (*CXCursorVisitor)(CXCursor cursor, 
+                                                   CXCursor parent, 
+                                                   CXClientData client_data);
+
+/**
+ * \brief Visit the children of a particular cursor.
+ *
+ * This function visits all the direct children of the given cursor,
+ * invoking the given \p visitor function with the cursors of each
+ * visited child. The traversal may be recursive, if the visitor returns
+ * \c CXChildVisit_Recurse. The traversal may also be ended prematurely, if
+ * the visitor returns \c CXChildVisit_Break.
+ *
+ * \param tu the translation unit into which the cursor refers.
+ *
+ * \param parent the cursor whose child may be visited. All kinds of
+ * cursors can be visited, including invalid visitors (which, by
+ * definition, have no children).
+ *
+ * \param visitor the visitor function that will be invoked for each
+ * child of \p parent.
+ *
+ * \param client_data pointer data supplied by the client, which will
+ * be passed to the visitor each time it is invoked.
+ *
+ * \returns a non-zero value if the traversal was terminated
+ * prematurely by the visitor returning \c CXChildVisit_Break.
+ */
+CINDEX_LINKAGE unsigned clang_visitChildren(CXCursor parent, 
+                                            CXCursorVisitor visitor,
+                                            CXClientData client_data);
+  
+/**
+ * @}
+ */
+  
+/**
+ * \defgroup CINDEX_CURSOR_XREF Cross-referencing in the AST
+ *
+ * These routines provide the ability to determine references within and 
+ * across translation units, by providing the names of the entities referenced
+ * by cursors, follow reference cursors to the declarations they reference,
+ * and associate declarations with their definitions.
+ *
+ * @{
+ */
+  
+/**
+ * \brief Retrieve a Unified Symbol Resolution (USR) for the entity referenced
+ * by the given cursor.
+ *
+ * A Unified Symbol Resolution (USR) is a string that identifies a particular
+ * entity (function, class, variable, etc.) within a program. USRs can be
+ * compared across translation units to determine, e.g., when references in
+ * one translation refer to an entity defined in another translation unit.
+ */
+CINDEX_LINKAGE CXString clang_getCursorUSR(CXCursor);
+
+/**
+ * \brief Retrieve a name for the entity referenced by this cursor.
+ */
+CINDEX_LINKAGE CXString clang_getCursorSpelling(CXCursor);
+
 /** \brief For a cursor that is a reference, retrieve a cursor representing the
  * entity that it references.
  *
@@ -727,6 +827,19 @@
  */
 CINDEX_LINKAGE unsigned clang_isCursorDefinition(CXCursor);
 
+/**
+ * @}
+ */
+  
+/**
+ * \defgroup CINDEX_DEBUG Debugging facilities
+ *
+ * These routines are used for testing and debugging, only, and should not
+ * be relied upon.
+ *
+ * @{
+ */
+  
 /* for debug/testing */
 CINDEX_LINKAGE const char *clang_getCursorKindSpelling(enum CXCursorKind Kind); 
 CINDEX_LINKAGE void clang_getDefinitionSpellingAndExtent(CXCursor, 
@@ -738,6 +851,22 @@
                                           unsigned *endColumn);
 
 /**
+ * @}
+ */
+  
+/**
+ * \defgroup CINDEX_CODE_COMPLET Code completion
+ *
+ * Code completion involves taking an (incomplete) source file, along with
+ * knowledge of where the user is actively editing that file, and suggesting
+ * syntactically- and semantically-valid constructs that the user might want to
+ * use at that particular point in the source code. These data structures and
+ * routines provide support for code completion.
+ *
+ * @{
+ */
+  
+/**
  * \brief A semantic string that describes a code-completion result.
  *
  * A semantic string that describes the formatting of a code-completion
@@ -1108,6 +1237,11 @@
 /**
  * @}
  */
+  
+/**
+ * @}
+ */
+  
 #ifdef __cplusplus
 }
 #endif





More information about the cfe-commits mailing list