Coverage Report

Created: 2023-11-11 10:31

/Users/buildslave/jenkins/workspace/coverage/llvm-project/clang/tools/libclang/CXString.h
Line
Count
Source
1
//===- CXString.h - Routines for manipulating CXStrings -------------------===//
2
//
3
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
// See https://llvm.org/LICENSE.txt for license information.
5
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
//
7
//===----------------------------------------------------------------------===//
8
//
9
// This file defines routines for manipulating CXStrings.
10
//
11
//===----------------------------------------------------------------------===//
12
13
#ifndef LLVM_CLANG_TOOLS_LIBCLANG_CXSTRING_H
14
#define LLVM_CLANG_TOOLS_LIBCLANG_CXSTRING_H
15
16
#include "clang-c/Index.h"
17
#include "clang/Basic/LLVM.h"
18
#include "llvm/ADT/SmallString.h"
19
#include "llvm/ADT/StringRef.h"
20
#include "llvm/Support/Compiler.h"
21
#include <string>
22
#include <vector>
23
24
namespace clang {
25
namespace cxstring {
26
27
struct CXStringBuf;
28
29
/// Create a CXString object for an empty "" string.
30
CXString createEmpty();
31
32
/// Create a CXString object for an NULL string.
33
///
34
/// A NULL string should be used as an "invalid" value in case of errors.
35
CXString createNull();
36
37
/// Create a CXString object from a nul-terminated C string.  New
38
/// CXString may contain a pointer to \p String.
39
///
40
/// \p String should not be changed by the caller afterwards.
41
CXString createRef(const char *String);
42
43
/// Create a CXString object from a nul-terminated C string.  New
44
/// CXString will contain a copy of \p String.
45
///
46
/// \p String can be changed or freed by the caller.
47
CXString createDup(const char *String);
48
49
/// Create a CXString object from a StringRef.  New CXString may
50
/// contain a pointer to the undrelying data of \p String.
51
///
52
/// \p String should not be changed by the caller afterwards.
53
CXString createRef(StringRef String);
54
55
/// Create a CXString object from a StringRef.  New CXString will
56
/// contain a copy of \p String.
57
///
58
/// \p String can be changed or freed by the caller.
59
CXString createDup(StringRef String);
60
61
// Usually std::string is intended to be used as backing storage for CXString.
62
// In this case, call \c createRef(String.c_str()).
63
//
64
// If you need to make a copy, call \c createDup(StringRef(String)).
65
CXString createRef(std::string String) = delete;
66
67
/// Create a CXString object that is backed by a string buffer.
68
CXString createCXString(CXStringBuf *buf);
69
70
CXStringSet *createSet(const std::vector<std::string> &Strings);
71
72
/// A string pool used for fast allocation/deallocation of strings.
73
class CXStringPool {
74
public:
75
  ~CXStringPool();
76
77
  CXStringBuf *getCXStringBuf(CXTranslationUnit TU);
78
79
private:
80
  std::vector<CXStringBuf *> Pool;
81
82
  friend struct CXStringBuf;
83
};
84
85
struct CXStringBuf {
86
  SmallString<128> Data;
87
  CXTranslationUnit TU;
88
89
132
  CXStringBuf(CXTranslationUnit TU) : TU(TU) {}
90
91
  /// Return this buffer to the pool.
92
  void dispose();
93
};
94
95
CXStringBuf *getCXStringBuf(CXTranslationUnit TU);
96
97
/// Returns true if the CXString data is managed by a pool.
98
bool isManagedByPool(CXString str);
99
100
}
101
102
24
static inline StringRef getContents(const CXUnsavedFile &UF) {
103
24
  return StringRef(UF.Contents, UF.Length);
104
24
}
Unexecuted instantiation: ARCMigrate.cpp:clang::getContents(CXUnsavedFile const&)
Unexecuted instantiation: BuildSystem.cpp:clang::getContents(CXUnsavedFile const&)
CIndex.cpp:clang::getContents(CXUnsavedFile const&)
Line
Count
Source
102
16
static inline StringRef getContents(const CXUnsavedFile &UF) {
103
16
  return StringRef(UF.Contents, UF.Length);
104
16
}
CIndexCodeCompletion.cpp:clang::getContents(CXUnsavedFile const&)
Line
Count
Source
102
4
static inline StringRef getContents(const CXUnsavedFile &UF) {
103
4
  return StringRef(UF.Contents, UF.Length);
104
4
}
Unexecuted instantiation: CIndexDiagnostic.cpp:clang::getContents(CXUnsavedFile const&)
Unexecuted instantiation: CIndexHigh.cpp:clang::getContents(CXUnsavedFile const&)
Unexecuted instantiation: CIndexInclusionStack.cpp:clang::getContents(CXUnsavedFile const&)
Unexecuted instantiation: CIndexUSRs.cpp:clang::getContents(CXUnsavedFile const&)
CIndexer.cpp:clang::getContents(CXUnsavedFile const&)
Line
Count
Source
102
4
static inline StringRef getContents(const CXUnsavedFile &UF) {
103
4
  return StringRef(UF.Contents, UF.Length);
104
4
}
Unexecuted instantiation: CXComment.cpp:clang::getContents(CXUnsavedFile const&)
Unexecuted instantiation: CXCursor.cpp:clang::getContents(CXUnsavedFile const&)
Unexecuted instantiation: CXExtractAPI.cpp:clang::getContents(CXUnsavedFile const&)
Unexecuted instantiation: CXIndexDataConsumer.cpp:clang::getContents(CXUnsavedFile const&)
Unexecuted instantiation: CXCompilationDatabase.cpp:clang::getContents(CXUnsavedFile const&)
Unexecuted instantiation: CXLoadedDiagnostic.cpp:clang::getContents(CXUnsavedFile const&)
Unexecuted instantiation: CXSourceLocation.cpp:clang::getContents(CXUnsavedFile const&)
Unexecuted instantiation: CXStoredDiagnostic.cpp:clang::getContents(CXUnsavedFile const&)
Unexecuted instantiation: CXString.cpp:clang::getContents(CXUnsavedFile const&)
Unexecuted instantiation: CXType.cpp:clang::getContents(CXUnsavedFile const&)
Unexecuted instantiation: Indexing.cpp:clang::getContents(CXUnsavedFile const&)
Unexecuted instantiation: Rewrite.cpp:clang::getContents(CXUnsavedFile const&)
105
}
106
107
#endif
108