//===-- SBSaveCoreOptions.h -------------------------------------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #ifndef LLDB_API_SBSAVECOREOPTIONS_H #define LLDB_API_SBSAVECOREOPTIONS_H #include "lldb/API/SBDefines.h" #include "lldb/API/SBError.h" #include "lldb/API/SBFileSpec.h" #include "lldb/API/SBProcess.h" #include "lldb/API/SBThread.h" namespace lldb { class LLDB_API SBSaveCoreOptions { public: SBSaveCoreOptions(); SBSaveCoreOptions(const lldb::SBSaveCoreOptions &rhs); ~SBSaveCoreOptions(); const SBSaveCoreOptions &operator=(const lldb::SBSaveCoreOptions &rhs); /// Set the plugin name. Supplying null or empty string will reset /// the option. /// /// \param plugin Name of the object file plugin. SBError SetPluginName(const char *plugin); /// Get the Core dump plugin name, if set. /// /// \return The name of the plugin, or null if not set. const char *GetPluginName() const; /// Set the Core dump style. /// /// \param style The style of the core dump. void SetStyle(lldb::SaveCoreStyle style); /// Get the Core dump style, if set. /// /// \return The core dump style, or undefined if not set. lldb::SaveCoreStyle GetStyle() const; /// Set the output file path /// /// \param output_file a /// \class SBFileSpec object that describes the output file. void SetOutputFile(SBFileSpec output_file); /// Get the output file spec /// /// \return The output file spec. SBFileSpec GetOutputFile() const; /// Set the process to save, or unset if supplied with a default constructed /// process. /// /// \param process The process to save. /// \return Success if process was set, otherwise an error /// \note This will clear all process specific options if a different process /// is specified than the current set process, either explicitly from this /// api, or implicitly from any function that requires a process. SBError SetProcess(lldb::SBProcess process); /// Add a thread to save in the core file. /// /// \param thread The thread to save. /// \note This will set the process if it is not already set, or return /// and error if the SBThread is not from the set process. SBError AddThread(lldb::SBThread thread); /// Remove a thread from the list of threads to save. /// /// \param thread The thread to remove. /// \return True if the thread was removed, false if it was not in the list. bool RemoveThread(lldb::SBThread thread); /// Reset all options. void Clear(); protected: friend class SBProcess; lldb_private::SaveCoreOptions &ref() const; private: std::unique_ptr m_opaque_up; }; // SBSaveCoreOptions } // namespace lldb #endif // LLDB_API_SBSAVECOREOPTIONS_H