zcov: / lib/Basic/Version.cpp


Files: 1 Branches Taken: 57.7% 15 / 26
Generated: 2010-02-10 01:31 Branches Executed: 100.0% 26 / 26
Line Coverage: 93.9% 31 / 33


Programs: 2 Runs 3018


       1                 : //===- Version.cpp - Clang Version Number -----------------------*- C++ -*-===//
       2                 : //
       3                 : //                     The LLVM Compiler Infrastructure
       4                 : //
       5                 : // This file is distributed under the University of Illinois Open Source
       6                 : // License. See LICENSE.TXT for details.
       7                 : //
       8                 : //===----------------------------------------------------------------------===//
       9                 : //
      10                 : // This file defines several version-related utility functions for Clang.
      11                 : //
      12                 : //===----------------------------------------------------------------------===//
      13                 : 
      14                 : #include "clang/Basic/Version.h"
      15                 : #include "llvm/Support/raw_ostream.h"
      16                 : #include <cstring>
      17                 : #include <cstdlib>
      18                 : 
      19                 : using namespace std;
      20                 : 
      21                 : namespace clang {
      22                 :   
      23              144: llvm::StringRef getClangRepositoryPath() {
      24                 :   static const char URL[] = "$URL: https://ddunbar@llvm.org/svn/llvm-project/cfe/trunk/lib/Basic/Version.cpp $";
      25              144:   const char *URLEnd = URL + strlen(URL);
      26                 : 
      27              144:   const char *End = strstr(URL, "/lib/Basic");
                      144: branch 0 taken
                        0: branch 1 not taken
      28              144:   if (End)
      29              144:     URLEnd = End;
      30                 : 
      31              144:   End = strstr(URL, "/clang/tools/clang");
                        0: branch 0 not taken
                      144: branch 1 taken
      32              144:   if (End)
      33                0:     URLEnd = End;
      34                 : 
      35              144:   const char *Begin = strstr(URL, "cfe/");
                      144: branch 0 taken
                        0: branch 1 not taken
      36              144:   if (Begin)
      37              144:     return llvm::StringRef(Begin + 4, URLEnd - Begin - 4);
      38                 : 
      39                0:   return llvm::StringRef(URL, URLEnd - URL);
      40                 : }
      41                 : 
      42                 : 
      43              144: llvm::StringRef getClangRevision() {
      44                 : #ifndef SVN_REVISION
      45                 :   // Subversion was not available at build time?
      46                 :   return llvm::StringRef();
      47                 : #else
                      144: branch 0 taken
                        0: branch 1 not taken
                      144: branch 3 taken
                        0: branch 4 not taken
      48              144:   static std::string revision;
                      144: branch 1 taken
                        0: branch 2 not taken
      49              144:   if (revision.empty()) {
      50              144:     llvm::raw_string_ostream OS(revision);
      51              144:     OS << strtol(SVN_REVISION, 0, 10);
      52                 :   }
      53              144:   return revision;
      54                 : #endif
      55                 : }
      56                 : 
      57              146: llvm::StringRef getClangFullRepositoryVersion() {
                      144: branch 0 taken
                        2: branch 1 taken
                      144: branch 3 taken
                        0: branch 4 not taken
      58              146:   static std::string buf;
                      144: branch 1 taken
                        2: branch 2 taken
      59              146:   if (buf.empty()) {
      60              144:     llvm::raw_string_ostream OS(buf);
      61              144:     OS << getClangRepositoryPath();
      62              144:     llvm::StringRef Revision = getClangRevision();
                      144: branch 1 taken
                        0: branch 2 not taken
      63              144:     if (!Revision.empty())
      64              144:       OS << ' ' << Revision;
      65                 :   }
      66              146:   return buf;
      67                 : }
      68                 :   
      69               54: const char *getClangFullVersion() {
                       54: branch 0 taken
                        0: branch 1 not taken
                       54: branch 3 taken
                        0: branch 4 not taken
      70               54:   static std::string buf;
                       54: branch 1 taken
                        0: branch 2 not taken
      71               54:   if (buf.empty()) {
      72               54:     llvm::raw_string_ostream OS(buf);
      73                 : #ifdef CLANG_VENDOR
      74                 :     OS << CLANG_VENDOR;
      75                 : #endif
      76                 :     OS << "clang version " CLANG_VERSION_STRING " ("
      77               54:        << getClangFullRepositoryVersion() << ')';
      78                 :   }
      79               54:   return buf.c_str();
      80                 : }
      81                 :   
      82                 : } // end namespace clang

Generated: 2010-02-10 01:31 by zcov