Coverage Report

Created: 2022-01-15 10:30

/Users/buildslave/jenkins/workspace/coverage/llvm-project/lldb/include/lldb/Core/FileLineResolver.h
Line
Count
Source
1
//===-- FileLineResolver.h --------------------------------------*- C++ -*-===//
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
#ifndef LLDB_CORE_FILELINERESOLVER_H
10
#define LLDB_CORE_FILELINERESOLVER_H
11
12
#include "lldb/Core/SearchFilter.h"
13
#include "lldb/Symbol/SymbolContext.h"
14
#include "lldb/Utility/FileSpec.h"
15
#include "lldb/lldb-defines.h"
16
17
#include <cstdint>
18
19
namespace lldb_private {
20
class Address;
21
class Stream;
22
23
/// \class FileLineResolver FileLineResolver.h "lldb/Core/FileLineResolver.h"
24
/// This class finds address for source file and line.  Optionally, it will
25
/// look for inlined instances of the file and line specification.
26
27
class FileLineResolver : public Searcher {
28
public:
29
  FileLineResolver()
30
      : m_file_spec(),
31
        // Set this to zero for all lines in a file
32
5.94k
        m_sc_list() {}
33
34
  FileLineResolver(const FileSpec &resolver, uint32_t line_no,
35
                   bool check_inlines);
36
37
  ~FileLineResolver() override;
38
39
  Searcher::CallbackReturn SearchCallback(SearchFilter &filter,
40
                                          SymbolContext &context,
41
                                          Address *addr) override;
42
43
  lldb::SearchDepth GetDepth() override;
44
45
  void GetDescription(Stream *s) override;
46
47
12
  const SymbolContextList &GetFileLineMatches() { return m_sc_list; }
48
49
  void Clear();
50
51
  void Reset(const FileSpec &file_spec, uint32_t line, bool check_inlines);
52
53
protected:
54
  FileSpec m_file_spec;   // This is the file spec we are looking for.
55
  uint32_t m_line_number =
56
      UINT32_MAX; // This is the line number that we are looking for.
57
  SymbolContextList m_sc_list;
58
  bool m_inlines = true; // This determines whether the resolver looks for
59
                         // inlined functions or not.
60
61
private:
62
  FileLineResolver(const FileLineResolver &) = delete;
63
  const FileLineResolver &operator=(const FileLineResolver &) = delete;
64
};
65
66
} // namespace lldb_private
67
68
#endif // LLDB_CORE_FILELINERESOLVER_H