 |
|
 |
|
| 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 |
| |
 |
|
 |
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