LLDB mainline
SBProgress.h
Go to the documentation of this file.
1//===-- SBProgress.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_API_SBPROGRESS_H
10#define LLDB_API_SBPROGRESS_H
11
12#include "lldb/API/SBDebugger.h"
13#include "lldb/API/SBDefines.h"
14
15namespace lldb {
16
17/// A Progress indicator helper class.
18///
19/// Any potentially long running sections of code in LLDB should report
20/// progress so that clients are aware of delays that might appear during
21/// debugging. Delays commonly include indexing debug information, parsing
22/// symbol tables for object files, downloading symbols from remote
23/// repositories, and many more things.
24///
25/// The Progress class helps make sure that progress is correctly reported
26/// and will always send an initial progress update, updates when
27/// Progress::Increment() is called, and also will make sure that a progress
28/// completed update is reported even if the user doesn't explicitly cause one
29/// to be sent.
31public:
32 /// Construct a progress object with a title, details and a given debugger.
33 /// \param title
34 /// The title of the progress object.
35 /// \param details
36 /// The details of the progress object.
37 /// \param debugger
38 /// The debugger for this progress object to report to.
39 SBProgress(const char *title, const char *details, SBDebugger &debugger);
40
41 /// Construct a progress object with a title, details, the total units of work
42 /// to be done, and a given debugger.
43 /// \param title
44 /// The title of the progress object.
45 /// \param details
46 /// The details of the progress object.
47 /// \param total_units
48 /// The total number of units of work to be done.
49 /// \param debugger
50 /// The debugger for this progress object to report to.
51 SBProgress(const char *title, const char *details, uint64_t total_units,
52 SBDebugger &debugger);
53
54#ifndef SWIG
56#endif
57
59
60 void Increment(uint64_t amount, const char *description = nullptr);
61
62 /// Explicitly finalize an SBProgress, this can be used to terminate a
63 /// progress on command instead of waiting for a garbage collection or other
64 /// RAII to destroy the contained progress object.
65 void Finalize();
66
67protected:
69
70private:
71 SBProgress(const SBProgress &rhs) = delete;
72 const SBProgress &operator=(const SBProgress &rhs) = delete;
73
74 std::unique_ptr<lldb_private::Progress> m_opaque_up;
75}; // SBProgress
76} // namespace lldb
77
78#endif // LLDB_API_SBPROGRESS_H
#define LLDB_API
Definition SBDefines.h:28
lldb_private::Progress & ref() const
void Finalize()
Explicitly finalize an SBProgress, this can be used to terminate a progress on command instead of wai...
const SBProgress & operator=(const SBProgress &rhs)=delete
SBProgress(const SBProgress &rhs)=delete
SBProgress(const char *title, const char *details, SBDebugger &debugger)
Construct a progress object with a title, details and a given debugger.
void Increment(uint64_t amount, const char *description=nullptr)
std::unique_ptr< lldb_private::Progress > m_opaque_up
Definition SBProgress.h:74
A Progress indicator helper class.
Definition Progress.h:60