[cfe-commits] r90154 - /cfe/trunk/tools/CIndex/CIndex.cpp

Daniel Dunbar daniel at zuster.org
Mon Nov 30 12:42:43 PST 2009


Author: ddunbar
Date: Mon Nov 30 14:42:43 2009
New Revision: 90154

URL: http://llvm.org/viewvc/llvm-project?rev=90154&view=rev
Log:
Strip trailing space.

Modified:
    cfe/trunk/tools/CIndex/CIndex.cpp

Modified: cfe/trunk/tools/CIndex/CIndex.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/CIndex/CIndex.cpp?rev=90154&r1=90153&r2=90154&view=diff

==============================================================================
--- cfe/trunk/tools/CIndex/CIndex.cpp (original)
+++ cfe/trunk/tools/CIndex/CIndex.cpp Mon Nov 30 14:42:43 2009
@@ -4,7 +4,7 @@
 //
 // This file is distributed under the University of Illinois Open Source
 // License. See LICENSE.TXT for details.
-// 
+//
 //===----------------------------------------------------------------------===//
 //
 // This file implements the Clang-C Source Indexing library.
@@ -47,7 +47,7 @@
 using namespace idx;
 
 namespace {
-static enum CXCursorKind TranslateDeclRefExpr(DeclRefExpr *DRE) 
+static enum CXCursorKind TranslateDeclRefExpr(DeclRefExpr *DRE)
 {
   NamedDecl *D = DRE->getDecl();
   if (isa<VarDecl>(D))
@@ -56,7 +56,7 @@
     return CXCursor_FunctionRef;
   else if (isa<EnumConstantDecl>(D))
     return CXCursor_EnumConstantRef;
-  else 
+  else
     return CXCursor_NotImplemented;
 }
 
@@ -66,16 +66,16 @@
   CXDecl CDecl;
   CXDeclIterator Callback;
   CXClientData CData;
-  
+
   void Call(enum CXCursorKind CK, Stmt *SRef) {
     CXCursor C = { CK, CDecl, SRef };
     Callback(CDecl, C, CData);
   }
 
 public:
-  CRefVisitor(CXDecl C, CXDeclIterator cback, CXClientData D) : 
+  CRefVisitor(CXDecl C, CXDeclIterator cback, CXClientData D) :
     CDecl(C), Callback(cback), CData(D) {}
-  
+
   void VisitStmt(Stmt *S) {
     for (Stmt::child_iterator C = S->child_begin(), CEnd = S->child_end();
          C != CEnd; ++C)
@@ -95,13 +95,13 @@
   }
 };
 #endif
-  
+
 /// IgnoreDiagnosticsClient - A DiagnosticsClient that just ignores emitted
 /// warnings and errors.
 class VISIBILITY_HIDDEN IgnoreDiagnosticsClient : public DiagnosticClient {
 public:
   virtual ~IgnoreDiagnosticsClient() {}
-  virtual void HandleDiagnostic(Diagnostic::Level, const DiagnosticInfo &) {}  
+  virtual void HandleDiagnostic(Diagnostic::Level, const DiagnosticInfo &) {}
 };
 
 // Translation Unit Visitor.
@@ -109,30 +109,30 @@
   CXTranslationUnit TUnit;
   CXTranslationUnitIterator Callback;
   CXClientData CData;
-  
+
   // MaxPCHLevel - the maximum PCH level of declarations that we will pass on
   // to the visitor. Declarations with a PCH level greater than this value will
   // be suppressed.
   unsigned MaxPCHLevel;
-  
+
   void Call(enum CXCursorKind CK, NamedDecl *ND) {
     // Filter any declarations that have a PCH level greater than what we allow.
     if (ND->getPCHLevel() > MaxPCHLevel)
       return;
-    
+
     // Filter any implicit declarations (since the source info will be bogus).
     if (ND->isImplicit())
       return;
-      
+
     CXCursor C = { CK, ND, 0 };
     Callback(TUnit, C, CData);
   }
 public:
-  TUVisitor(CXTranslationUnit CTU, 
+  TUVisitor(CXTranslationUnit CTU,
             CXTranslationUnitIterator cback, CXClientData D,
-            unsigned MaxPCHLevel) : 
+            unsigned MaxPCHLevel) :
     TUnit(CTU), Callback(cback), CData(D), MaxPCHLevel(MaxPCHLevel) {}
-  
+
   void VisitTranslationUnitDecl(TranslationUnitDecl *D) {
     VisitDeclContext(dyn_cast<DeclContext>(D));
   }
@@ -157,7 +157,7 @@
   }
   void VisitObjCInterfaceDecl(ObjCInterfaceDecl *ND) {
     Call(CXCursor_ObjCInterfaceDecl, ND);
-  }  
+  }
   void VisitObjCProtocolDecl(ObjCProtocolDecl *ND) {
     Call(CXCursor_ObjCProtocolDecl, ND);
   }
@@ -177,43 +177,43 @@
         break;
     }
   }
-  void VisitTypedefDecl(TypedefDecl *ND) { 
-    Call(CXCursor_TypedefDecl, ND); 
-  }  
+  void VisitTypedefDecl(TypedefDecl *ND) {
+    Call(CXCursor_TypedefDecl, ND);
+  }
   void VisitVarDecl(VarDecl *ND) {
     Call(CXCursor_VarDecl, ND);
-  }  
+  }
 };
-  
+
 
 // Declaration visitor.
 class CDeclVisitor : public DeclVisitor<CDeclVisitor> {
   CXDecl CDecl;
   CXDeclIterator Callback;
   CXClientData CData;
-  
+
   // MaxPCHLevel - the maximum PCH level of declarations that we will pass on
   // to the visitor. Declarations with a PCH level greater than this value will
   // be suppressed.
   unsigned MaxPCHLevel;
-  
+
   void Call(enum CXCursorKind CK, NamedDecl *ND) {
     // Disable the callback when the context is equal to the visiting decl.
     if (CDecl == ND && !clang_isReference(CK))
       return;
-    
+
     // Filter any declarations that have a PCH level greater than what we allow.
     if (ND->getPCHLevel() > MaxPCHLevel)
       return;
-    
+
     CXCursor C = { CK, ND, 0 };
     Callback(CDecl, C, CData);
   }
 public:
-  CDeclVisitor(CXDecl C, CXDeclIterator cback, CXClientData D, 
-               unsigned MaxPCHLevel) : 
+  CDeclVisitor(CXDecl C, CXDeclIterator cback, CXClientData D,
+               unsigned MaxPCHLevel) :
     CDecl(C), Callback(cback), CData(D), MaxPCHLevel(MaxPCHLevel) {}
-    
+
   void VisitObjCCategoryDecl(ObjCCategoryDecl *ND) {
     // Issue callbacks for the containing class.
     Call(CXCursor_ObjCClassRef, ND);
@@ -225,16 +225,16 @@
     if (D->getSuperClass())
       Call(CXCursor_ObjCSuperClassRef, D);
 
-    for (ObjCProtocolDecl::protocol_iterator I = D->protocol_begin(), 
+    for (ObjCProtocolDecl::protocol_iterator I = D->protocol_begin(),
          E = D->protocol_end(); I != E; ++I)
       Call(CXCursor_ObjCProtocolRef, *I);
     VisitDeclContext(dyn_cast<DeclContext>(D));
   }
   void VisitObjCProtocolDecl(ObjCProtocolDecl *PID) {
-    for (ObjCProtocolDecl::protocol_iterator I = PID->protocol_begin(), 
+    for (ObjCProtocolDecl::protocol_iterator I = PID->protocol_begin(),
          E = PID->protocol_end(); I != E; ++I)
       Call(CXCursor_ObjCProtocolRef, *I);
-      
+
     VisitDeclContext(dyn_cast<DeclContext>(PID));
   }
   void VisitTagDecl(TagDecl *D) {
@@ -292,9 +292,9 @@
 };
 
 class CIndexer : public Indexer {
-public:  
-  explicit CIndexer(Program *prog) : Indexer(*prog), 
-                                     OnlyLocalDecls(false), 
+public:
+  explicit CIndexer(Program *prog) : Indexer(*prog),
+                                     OnlyLocalDecls(false),
                                      DisplayDiagnostics(false) {}
 
   virtual ~CIndexer() { delete &getProgram(); }
@@ -305,17 +305,17 @@
   bool getOnlyLocalDecls() const { return OnlyLocalDecls; }
   void setOnlyLocalDecls(bool Local = true) { OnlyLocalDecls = Local; }
 
-  void setDisplayDiagnostics(bool Display = true) { 
+  void setDisplayDiagnostics(bool Display = true) {
     DisplayDiagnostics = Display;
   }
   bool getDisplayDiagnostics() const { return DisplayDiagnostics; }
-  
+
   /// \brief Get the path of the clang binary.
   const llvm::sys::Path& getClangPath();
 private:
   bool OnlyLocalDecls;
   bool DisplayDiagnostics;
-  
+
   llvm::sys::Path ClangPath;
 };
 
@@ -360,7 +360,7 @@
 
 }
 
-static SourceLocation getLocationFromCursor(CXCursor C, 
+static SourceLocation getLocationFromCursor(CXCursor C,
                                             SourceManager &SourceMgr,
                                             NamedDecl *ND) {
   if (clang_isReference(C.kind)) {
@@ -439,8 +439,8 @@
 extern "C" {
 
 CXIndex clang_createIndex(int excludeDeclarationsFromPCH,
-                          int displayDiagnostics) 
-{  
+                          int displayDiagnostics)
+{
   CIndexer *CIdxr = new CIndexer(new Program());
   if (excludeDeclarationsFromPCH)
     CIdxr->setOnlyLocalDecls();
@@ -457,28 +457,28 @@
 
 // FIXME: need to pass back error info.
 CXTranslationUnit clang_createTranslationUnit(
-  CXIndex CIdx, const char *ast_filename) 
+  CXIndex CIdx, const char *ast_filename)
 {
   assert(CIdx && "Passed null CXIndex");
   CIndexer *CXXIdx = static_cast<CIndexer *>(CIdx);
   std::string astName(ast_filename);
   std::string ErrMsg;
-  
+
   CXTranslationUnit TU =
-    ASTUnit::LoadFromPCHFile(astName, &ErrMsg, 
-                           CXXIdx->getDisplayDiagnostics() ? 
+    ASTUnit::LoadFromPCHFile(astName, &ErrMsg,
+                           CXXIdx->getDisplayDiagnostics() ?
                            NULL : new IgnoreDiagnosticsClient(),
                            CXXIdx->getOnlyLocalDecls(),
                            /* UseBumpAllocator = */ true);
-  
+
   if (CXXIdx->getDisplayDiagnostics() && !ErrMsg.empty())
     llvm::errs() << "clang_createTranslationUnit: " << ErrMsg  << '\n';
-  
+
   return TU;
 }
 
 CXTranslationUnit clang_createTranslationUnitFromSourceFile(
-  CXIndex CIdx, 
+  CXIndex CIdx,
   const char *source_filename,
   int num_command_line_args, const char **command_line_args)  {
   assert(CIdx && "Passed null CXIndex");
@@ -486,19 +486,19 @@
 
   // Build up the arguments for invoking 'clang'.
   std::vector<const char *> argv;
-  
+
   // First add the complete path to the 'clang' executable.
   llvm::sys::Path ClangPath = static_cast<CIndexer *>(CIdx)->getClangPath();
   argv.push_back(ClangPath.c_str());
-  
+
   // Add the '-emit-ast' option as our execution mode for 'clang'.
   argv.push_back("-emit-ast");
-  
+
   // The 'source_filename' argument is optional.  If the caller does not
   // specify it then it is assumed that the source file is specified
   // in the actual argument list.
-  if (source_filename)  
-    argv.push_back(source_filename);  
+  if (source_filename)
+    argv.push_back(source_filename);
 
   // Generate a temporary name for the AST file.
   argv.push_back("-o");
@@ -521,7 +521,7 @@
       // Keep the argument.
       argv.push_back(arg);
     }
-    
+
   // Add the null terminator.
   argv.push_back(NULL);
 
@@ -533,9 +533,9 @@
   llvm::sys::Program::ExecuteAndWait(ClangPath, &argv[0], /* env */ NULL,
       /* redirects */ !CXXIdx->getDisplayDiagnostics() ? &Redirects[0] : NULL,
       /* secondsToWait */ 0, /* memoryLimits */ 0, &ErrMsg);
-  
+
   if (CXXIdx->getDisplayDiagnostics() && !ErrMsg.empty()) {
-    llvm::errs() << "clang_createTranslationUnitFromSourceFile: " << ErrMsg 
+    llvm::errs() << "clang_createTranslationUnitFromSourceFile: " << ErrMsg
       << '\n' << "Arguments: \n";
     for (std::vector<const char*>::iterator I = argv.begin(), E = argv.end();
          I!=E; ++I) {
@@ -554,12 +554,12 @@
 }
 
 void clang_disposeTranslationUnit(
-  CXTranslationUnit CTUnit) 
+  CXTranslationUnit CTUnit)
 {
   assert(CTUnit && "Passed null CXTranslationUnit");
   delete static_cast<ASTUnit *>(CTUnit);
 }
-  
+
 CXString clang_getTranslationUnitSpelling(CXTranslationUnit CTUnit)
 {
   assert(CTUnit && "Passed null CXTranslationUnit");
@@ -567,25 +567,25 @@
   return createCXString(CXXUnit->getOriginalSourceFileName().c_str(), true);
 }
 
-void clang_loadTranslationUnit(CXTranslationUnit CTUnit, 
+void clang_loadTranslationUnit(CXTranslationUnit CTUnit,
                                CXTranslationUnitIterator callback,
                                CXClientData CData)
 {
   assert(CTUnit && "Passed null CXTranslationUnit");
   ASTUnit *CXXUnit = static_cast<ASTUnit *>(CTUnit);
   ASTContext &Ctx = CXXUnit->getASTContext();
-  
-  TUVisitor DVisit(CTUnit, callback, CData, 
+
+  TUVisitor DVisit(CTUnit, callback, CData,
                    CXXUnit->getOnlyLocalDecls()? 1 : Decl::MaxPCHLevel);
   DVisit.Visit(Ctx.getTranslationUnitDecl());
 }
 
-void clang_loadDeclaration(CXDecl Dcl, 
-                           CXDeclIterator callback, 
+void clang_loadDeclaration(CXDecl Dcl,
+                           CXDeclIterator callback,
                            CXClientData CData)
 {
   assert(Dcl && "Passed null CXDecl");
-  
+
   CDeclVisitor DVisit(Dcl, callback, CData,
                       static_cast<Decl *>(Dcl)->getPCHLevel());
   DVisit.Visit(static_cast<Decl *>(Dcl));
@@ -593,14 +593,14 @@
 
 // Some notes on CXEntity:
 //
-// - Since the 'ordinary' namespace includes functions, data, typedefs, 
-// ObjC interfaces, thecurrent algorithm is a bit naive (resulting in one 
+// - Since the 'ordinary' namespace includes functions, data, typedefs,
+// ObjC interfaces, thecurrent algorithm is a bit naive (resulting in one
 // entity for 2 different types). For example:
 //
 // module1.m: @interface Foo @end Foo *x;
 // module2.m: void Foo(int);
 //
-// - Since the unique name spans translation units, static data/functions 
+// - Since the unique name spans translation units, static data/functions
 // within a CXTranslationUnit are *not* currently represented by entities.
 // As a result, there will be no entity for the following:
 //
@@ -665,7 +665,7 @@
   return SourceMgr.getSpellingColumnNumber(ND->getLocation());
 }
 
-const char *clang_getDeclSource(CXDecl AnonDecl) 
+const char *clang_getDeclSource(CXDecl AnonDecl)
 {
   assert(AnonDecl && "Passed null CXDecl");
   FileEntry *FEnt = static_cast<FileEntry *>(clang_getDeclSourceFile(AnonDecl));
@@ -674,7 +674,7 @@
 }
 
 static const FileEntry *getFileEntryFromSourceLocation(SourceManager &SMgr,
-                                                       SourceLocation SLoc) 
+                                                       SourceLocation SLoc)
 {
   FileID FID;
   if (SLoc.isFileID())
@@ -684,7 +684,7 @@
   return SMgr.getFileEntryForID(FID);
 }
 
-CXFile clang_getDeclSourceFile(CXDecl AnonDecl) 
+CXFile clang_getDeclSourceFile(CXDecl AnonDecl)
 {
   assert(AnonDecl && "Passed null CXDecl");
   NamedDecl *ND = static_cast<NamedDecl *>(AnonDecl);
@@ -781,12 +781,12 @@
    case CXCursor_ObjCProtocolRef: return "ObjCProtocolRef";
    case CXCursor_ObjCClassRef: return "ObjCClassRef";
    case CXCursor_ObjCSelectorRef: return "ObjCSelectorRef";
-   
+
    case CXCursor_VarRef: return "VarRef";
    case CXCursor_FunctionRef: return "FunctionRef";
    case CXCursor_EnumConstantRef: return "EnumConstantRef";
    case CXCursor_MemberRef: return "MemberRef";
-   
+
    case CXCursor_InvalidFile: return "InvalidFile";
    case CXCursor_NoDeclFound: return "NoDeclFound";
    case CXCursor_NotImplemented: return "NotImplemented";
@@ -820,29 +820,29 @@
 //
 // CXCursor Operations.
 //
-CXCursor clang_getCursor(CXTranslationUnit CTUnit, const char *source_name, 
+CXCursor clang_getCursor(CXTranslationUnit CTUnit, const char *source_name,
                          unsigned line, unsigned column)
 {
   assert(CTUnit && "Passed null CXTranslationUnit");
   ASTUnit *CXXUnit = static_cast<ASTUnit *>(CTUnit);
-  
+
   FileManager &FMgr = CXXUnit->getFileManager();
-  const FileEntry *File = FMgr.getFile(source_name, 
-                                       source_name+strlen(source_name));  
+  const FileEntry *File = FMgr.getFile(source_name,
+                                       source_name+strlen(source_name));
   if (!File) {
     CXCursor C = { CXCursor_InvalidFile, 0, 0 };
     return C;
   }
-  SourceLocation SLoc = 
+  SourceLocation SLoc =
     CXXUnit->getSourceManager().getLocation(File, line, column);
-                                                                
+
   ASTLocation LastLoc = CXXUnit->getLastASTLocation();
 
-  ASTLocation ALoc = ResolveLocationInAST(CXXUnit->getASTContext(), SLoc, 
+  ASTLocation ALoc = ResolveLocationInAST(CXXUnit->getASTContext(), SLoc,
                                           &LastLoc);
   if (ALoc.isValid())
     CXXUnit->setLastASTLocation(ALoc);
-    
+
   Decl *Dcl = ALoc.getParentDecl();
   if (ALoc.isNamedRef())
     Dcl = ALoc.AsNamedRef().ND;
@@ -855,7 +855,7 @@
       } else if (ObjCMessageExpr *MExp = dyn_cast<ObjCMessageExpr>(Stm)) {
         CXCursor C = { CXCursor_ObjCSelectorRef, Dcl, MExp };
         return C;
-      } 
+      }
       // Fall through...treat as a decl, not a ref.
     }
     if (ALoc.isNamedRef()) {
@@ -886,12 +886,12 @@
 unsigned clang_equalCursors(CXCursor X, CXCursor Y) {
   return X.kind == Y.kind && X.decl == Y.decl && X.stmt == Y.stmt;
 }
-  
+
 CXCursor clang_getCursorFromDecl(CXDecl AnonDecl)
 {
   assert(AnonDecl && "Passed null CXDecl");
   NamedDecl *ND = static_cast<NamedDecl *>(AnonDecl);
-  
+
   CXCursor C = { TranslateKind(ND), ND, 0 };
   return C;
 }
@@ -939,14 +939,14 @@
   return 0;
 }
 
-CXDecl clang_getCursorDecl(CXCursor C) 
+CXDecl clang_getCursorDecl(CXCursor C)
 {
   if (clang_isDeclaration(C.kind))
     return C.decl;
-    
+
   if (clang_isReference(C.kind)) {
     if (C.stmt) {
-      if (C.kind == CXCursor_ObjCClassRef || 
+      if (C.kind == CXCursor_ObjCClassRef ||
           C.kind == CXCursor_ObjCProtocolRef)
         return static_cast<Stmt *>(C.stmt);
       else
@@ -962,7 +962,7 @@
   assert(C.decl && "CXCursor has null decl");
   NamedDecl *ND = static_cast<NamedDecl *>(C.decl);
   SourceManager &SourceMgr = ND->getASTContext().getSourceManager();
-  
+
   SourceLocation SLoc = getLocationFromCursor(C, SourceMgr, ND);
   return SourceMgr.getSpellingLineNumber(SLoc);
 }
@@ -971,7 +971,7 @@
 const char *clang_getCString(CXString string) {
   return string.Spelling;
 }
- 
+
 // Free CXString.
 void clang_disposeString(CXString string) {
   if (string.MustFreeString)
@@ -983,18 +983,18 @@
   assert(C.decl && "CXCursor has null decl");
   NamedDecl *ND = static_cast<NamedDecl *>(C.decl);
   SourceManager &SourceMgr = ND->getASTContext().getSourceManager();
-  
+
   SourceLocation SLoc = getLocationFromCursor(C, SourceMgr, ND);
   return SourceMgr.getSpellingColumnNumber(SLoc);
 }
-const char *clang_getCursorSource(CXCursor C) 
+const char *clang_getCursorSource(CXCursor C)
 {
   assert(C.decl && "CXCursor has null decl");
   NamedDecl *ND = static_cast<NamedDecl *>(C.decl);
   SourceManager &SourceMgr = ND->getASTContext().getSourceManager();
-  
+
   SourceLocation SLoc = getLocationFromCursor(C, SourceMgr, ND);
-  
+
   if (SLoc.isFileID()) {
     const char *bufferName = SourceMgr.getBufferName(SLoc);
     return bufferName[0] == '<' ? NULL : bufferName;
@@ -1003,7 +1003,7 @@
   // Retrieve the file in which the macro was instantiated, then provide that
   // buffer name.
   // FIXME: Do we want to give specific macro-instantiation information?
-  const llvm::MemoryBuffer *Buffer 
+  const llvm::MemoryBuffer *Buffer
     = SourceMgr.getBuffer(SourceMgr.getDecomposedSpellingLoc(SLoc).first);
   if (!Buffer)
     return 0;
@@ -1016,24 +1016,24 @@
   assert(C.decl && "CXCursor has null decl");
   NamedDecl *ND = static_cast<NamedDecl *>(C.decl);
   SourceManager &SourceMgr = ND->getASTContext().getSourceManager();
-  
+
   return (void *)getFileEntryFromSourceLocation(SourceMgr,
                                         getLocationFromCursor(C,SourceMgr, ND));
 }
 
-void clang_getDefinitionSpellingAndExtent(CXCursor C, 
+void clang_getDefinitionSpellingAndExtent(CXCursor C,
                                           const char **startBuf,
                                           const char **endBuf,
                                           unsigned *startLine,
                                           unsigned *startColumn,
                                           unsigned *endLine,
-                                          unsigned *endColumn) 
+                                          unsigned *endColumn)
 {
   assert(C.decl && "CXCursor has null decl");
   NamedDecl *ND = static_cast<NamedDecl *>(C.decl);
   FunctionDecl *FD = dyn_cast<FunctionDecl>(ND);
   CompoundStmt *Body = dyn_cast<CompoundStmt>(FD->getBody());
-  
+
   SourceManager &SM = FD->getASTContext().getSourceManager();
   *startBuf = SM.getCharacterData(Body->getLBracLoc());
   *endBuf = SM.getCharacterData(Body->getRBracLoc());
@@ -1043,20 +1043,20 @@
   *endColumn = SM.getSpellingColumnNumber(Body->getRBracLoc());
 }
 
-enum CXCompletionChunkKind 
+enum CXCompletionChunkKind
 clang_getCompletionChunkKind(CXCompletionString completion_string,
                              unsigned chunk_number) {
   CodeCompletionString *CCStr = (CodeCompletionString *)completion_string;
   if (!CCStr || chunk_number >= CCStr->size())
     return CXCompletionChunk_Text;
-  
+
   switch ((*CCStr)[chunk_number].Kind) {
   case CodeCompletionString::CK_TypedText:
     return CXCompletionChunk_TypedText;
   case CodeCompletionString::CK_Text:
     return CXCompletionChunk_Text;
   case CodeCompletionString::CK_Optional:
-    return CXCompletionChunk_Optional; 
+    return CXCompletionChunk_Optional;
   case CodeCompletionString::CK_Placeholder:
     return CXCompletionChunk_Placeholder;
   case CodeCompletionString::CK_Informative:
@@ -1082,17 +1082,17 @@
   case CodeCompletionString::CK_Comma:
     return CXCompletionChunk_Comma;
   }
-  
+
   // Should be unreachable, but let's be careful.
   return CXCompletionChunk_Text;
 }
-  
+
 const char *clang_getCompletionChunkText(CXCompletionString completion_string,
                                          unsigned chunk_number) {
   CodeCompletionString *CCStr = (CodeCompletionString *)completion_string;
   if (!CCStr || chunk_number >= CCStr->size())
     return 0;
-  
+
   switch ((*CCStr)[chunk_number].Kind) {
   case CodeCompletionString::CK_TypedText:
   case CodeCompletionString::CK_Text:
@@ -1109,23 +1109,23 @@
   case CodeCompletionString::CK_RightAngle:
   case CodeCompletionString::CK_Comma:
     return (*CCStr)[chunk_number].Text;
-      
+
   case CodeCompletionString::CK_Optional:
     // Note: treated as an empty text block.
     return 0;
   }
-  
+
   // Should be unreachable, but let's be careful.
   return 0;
 }
-  
+
 CXCompletionString
 clang_getCompletionChunkCompletionString(CXCompletionString completion_string,
                                          unsigned chunk_number) {
   CodeCompletionString *CCStr = (CodeCompletionString *)completion_string;
   if (!CCStr || chunk_number >= CCStr->size())
     return 0;
-  
+
   switch ((*CCStr)[chunk_number].Kind) {
   case CodeCompletionString::CK_TypedText:
   case CodeCompletionString::CK_Text:
@@ -1142,16 +1142,16 @@
   case CodeCompletionString::CK_RightAngle:
   case CodeCompletionString::CK_Comma:
     return 0;
-    
+
   case CodeCompletionString::CK_Optional:
     // Note: treated as an empty text block.
     return (*CCStr)[chunk_number].Optional;
   }
-  
+
   // Should be unreachable, but let's be careful.
   return 0;
 }
-  
+
 unsigned clang_getNumCompletionChunks(CXCompletionString completion_string) {
   CodeCompletionString *CCStr = (CodeCompletionString *)completion_string;
   return CCStr? CCStr->size() : 0;
@@ -1167,7 +1167,7 @@
     .Case("Field", CXCursor_FieldDecl)
     .Case("EnumConstant", CXCursor_EnumConstantDecl)
     .Case("Function", CXCursor_FunctionDecl)
-    // FIXME: Hacks here to make C++ member functions look like C functions    
+    // FIXME: Hacks here to make C++ member functions look like C functions
     .Case("CXXMethod", CXCursor_FunctionDecl)
     .Case("CXXConstructor", CXCursor_FunctionDecl)
     .Case("CXXDestructor", CXCursor_FunctionDecl)
@@ -1183,10 +1183,10 @@
     .Case("ObjCClassMethod", CXCursor_ObjCClassMethodDecl)
     .Default(CXCursor_NotImplemented);
 }
-  
-void clang_codeComplete(CXIndex CIdx, 
+
+void clang_codeComplete(CXIndex CIdx,
                         const char *source_filename,
-                        int num_command_line_args, 
+                        int num_command_line_args,
                         const char **command_line_args,
                         const char *complete_filename,
                         unsigned complete_line,
@@ -1195,15 +1195,15 @@
                         CXClientData client_data)  {
   // The indexer, which is mainly used to determine where diagnostics go.
   CIndexer *CXXIdx = static_cast<CIndexer *>(CIdx);
-  
+
   // Build up the arguments for invoking 'clang'.
   std::vector<const char *> argv;
-  
+
   // First add the complete path to the 'clang' executable.
   llvm::sys::Path ClangPath = CXXIdx->getClangPath();
   argv.push_back(ClangPath.c_str());
-  
-  // Add the '-fsyntax-only' argument so that we only perform a basic 
+
+  // Add the '-fsyntax-only' argument so that we only perform a basic
   // syntax check of the code.
   argv.push_back("-fsyntax-only");
 
@@ -1220,12 +1220,12 @@
   argv.push_back(code_complete_at.c_str());
   argv.push_back("-Xclang");
   argv.push_back("-no-code-completion-debug-printer");
-  
+
   // Add the source file name (FIXME: later, we'll want to build temporary
   // file from the buffer, or just feed the source text via standard input).
   if (source_filename)
-    argv.push_back(source_filename);  
-  
+    argv.push_back(source_filename);
+
   // Process the compiler options, stripping off '-o', '-c', '-fsyntax-only'.
   for (int i = 0; i < num_command_line_args; ++i)
     if (const char *arg = command_line_args[i]) {
@@ -1238,19 +1238,19 @@
           strcmp(arg, "-fsyntax-only") == 0) {
         continue;
       }
-      
+
       // Keep the argument.
       argv.push_back(arg);
     }
-  
+
   // Add the null terminator.
   argv.push_back(NULL);
-  
+
   // Generate a temporary name for the AST file.
   char tmpFile[L_tmpnam];
   char *tmpFileName = tmpnam(tmpFile);
   llvm::sys::Path ResultsFile(tmpFileName);
-  
+
   // Invoke 'clang'.
   llvm::sys::Path DevNull; // leave empty, causes redirection to /dev/null
                            // on Unix or NUL (Windows).
@@ -1258,11 +1258,11 @@
   const llvm::sys::Path *Redirects[] = { &DevNull, &ResultsFile, &DevNull, 0 };
   llvm::sys::Program::ExecuteAndWait(ClangPath, &argv[0], /* env */ NULL,
                                      /* redirects */ &Redirects[0],
-                                     /* secondsToWait */ 0, 
+                                     /* secondsToWait */ 0,
                                      /* memoryLimits */ 0, &ErrMsg);
-  
+
   if (CXXIdx->getDisplayDiagnostics() && !ErrMsg.empty()) {
-    llvm::errs() << "clang_codeComplete: " << ErrMsg 
+    llvm::errs() << "clang_codeComplete: " << ErrMsg
     << '\n' << "Arguments: \n";
     for (std::vector<const char*>::iterator I = argv.begin(), E = argv.end();
          I!=E; ++I) {
@@ -1282,25 +1282,25 @@
       StringRef::size_type OverloadIdx = Buffer.find("OVERLOAD:");
       if (CompletionIdx == StringRef::npos && OverloadIdx == StringRef::npos)
         break;
-      
+
       if (OverloadIdx < CompletionIdx) {
         // Parse an overload result.
         Buffer = Buffer.substr(OverloadIdx);
-        
+
         // Skip past the OVERLOAD:
         Buffer = Buffer.substr(Buffer.find(':') + 1);
-        
+
         // Find the entire completion string.
         StringRef::size_type EOL = Buffer.find_first_of("\n\r");
         if (EOL == StringRef::npos)
           continue;
-        
+
         StringRef Line = Buffer.substr(0, EOL);
         Buffer = Buffer.substr(EOL + 1);
         CodeCompletionString *CCStr = CodeCompletionString::Deserialize(Line);
         if (!CCStr || CCStr->empty())
           continue;
-        
+
         // Vend the code-completion result to the caller.
         CXCompletionResult Result;
         Result.CursorKind = CXCursor_NotImplemented;
@@ -1308,41 +1308,41 @@
         if (completion_iterator)
           completion_iterator(&Result, client_data);
         delete CCStr;
-        
+
         continue;
       }
-      
+
       // Parse a completion result.
       Buffer = Buffer.substr(CompletionIdx);
-      
+
       // Skip past the COMPLETION:
       Buffer = Buffer.substr(Buffer.find(':') + 1);
-      
+
       // Get the rank
       unsigned Rank = 0;
       StringRef::size_type AfterRank = Buffer.find(':');
       Buffer.substr(0, AfterRank).getAsInteger(10, Rank);
       Buffer = Buffer.substr(AfterRank + 1);
-      
+
       // Get the kind of result.
       StringRef::size_type AfterKind = Buffer.find(':');
       StringRef Kind = Buffer.substr(0, AfterKind);
       Buffer = Buffer.substr(AfterKind + 1);
-      
+
       // Skip over any whitespace.
       Buffer = Buffer.substr(Buffer.find_first_not_of(" \t"));
-      
+
       // Find the entire completion string.
       StringRef::size_type EOL = Buffer.find_first_of("\n\r");
       if (EOL == StringRef::npos)
         continue;
-      
+
       StringRef Line = Buffer.substr(0, EOL);
       Buffer = Buffer.substr(EOL + 1);
       CodeCompletionString *CCStr = CodeCompletionString::Deserialize(Line);
       if (!CCStr || CCStr->empty())
         continue;
-          
+
       // Vend the code-completion result to the caller.
       CXCompletionResult Result;
       Result.CursorKind = parseResultKind(Kind);
@@ -1352,9 +1352,9 @@
       delete CCStr;
     } while (true);
     delete F;
-  }  
-  
+  }
+
   ResultsFile.eraseFromDisk();
 }
-  
+
 } // end extern "C"





More information about the cfe-commits mailing list