Files
clang-p2996/lldb/source/Plugins/StructuredData/DarwinLog/StructuredDataDarwinLog.h
Kate Stone b9c1b51e45 *** This commit represents a complete reformatting of the LLDB source code
*** to conform to clang-format’s LLVM style.  This kind of mass change has
*** two obvious implications:

Firstly, merging this particular commit into a downstream fork may be a huge
effort.  Alternatively, it may be worth merging all changes up to this commit,
performing the same reformatting operation locally, and then discarding the
merge for this particular commit.  The commands used to accomplish this
reformatting were as follows (with current working directory as the root of
the repository):

    find . \( -iname "*.c" -or -iname "*.cpp" -or -iname "*.h" -or -iname "*.mm" \) -exec clang-format -i {} +
    find . -iname "*.py" -exec autopep8 --in-place --aggressive --aggressive {} + ;

The version of clang-format used was 3.9.0, and autopep8 was 1.2.4.

Secondly, “blame” style tools will generally point to this commit instead of
a meaningful prior commit.  There are alternatives available that will attempt
to look through this change and find the appropriate prior commit.  YMMV.

llvm-svn: 280751
2016-09-06 20:57:50 +00:00

136 lines
4.8 KiB
C++

//===-- StructuredDataDarwinLog.h -------------------------------*- C++ -*-===//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
#ifndef StructuredDataDarwinLog_h
#define StructuredDataDarwinLog_h
#include "lldb/Target/StructuredDataPlugin.h"
#include <mutex>
// Forward declarations
namespace sddarwinlog_private {
class EnableCommand;
}
namespace lldb_private {
class StructuredDataDarwinLog : public StructuredDataPlugin {
friend sddarwinlog_private::EnableCommand;
public:
// -------------------------------------------------------------------------
// Public static API
// -------------------------------------------------------------------------
static void Initialize();
static void Terminate();
static const ConstString &GetStaticPluginName();
// -------------------------------------------------------------------------
/// Return whether the DarwinLog functionality is enabled.
///
/// The DarwinLog functionality is enabled if the user expicitly enabled
/// it with the enable command, or if the user has the setting set
/// that controls if we always enable it for newly created/attached
/// processes.
///
/// @return
/// True if DarwinLog support is/will be enabled for existing or
/// newly launched/attached processes.
// -------------------------------------------------------------------------
static bool IsEnabled();
// -------------------------------------------------------------------------
// PluginInterface API
// -------------------------------------------------------------------------
ConstString GetPluginName() override;
uint32_t GetPluginVersion() override;
// -------------------------------------------------------------------------
// StructuredDataPlugin API
// -------------------------------------------------------------------------
bool SupportsStructuredDataType(const ConstString &type_name) override;
void HandleArrivalOfStructuredData(
Process &process, const ConstString &type_name,
const StructuredData::ObjectSP &object_sp) override;
Error GetDescription(const StructuredData::ObjectSP &object_sp,
lldb_private::Stream &stream) override;
bool GetEnabled(const ConstString &type_name) const override;
void ModulesDidLoad(Process &process, ModuleList &module_list) override;
private:
// -------------------------------------------------------------------------
// Private constructors
// -------------------------------------------------------------------------
StructuredDataDarwinLog(const lldb::ProcessWP &process_wp);
// -------------------------------------------------------------------------
// Private static methods
// -------------------------------------------------------------------------
static lldb::StructuredDataPluginSP CreateInstance(Process &process);
static void DebuggerInitialize(Debugger &debugger);
static bool InitCompletionHookCallback(void *baton,
StoppointCallbackContext *context,
lldb::user_id_t break_id,
lldb::user_id_t break_loc_id);
static Error FilterLaunchInfo(ProcessLaunchInfo &launch_info, Target *target);
// -------------------------------------------------------------------------
// Internal helper methods used by friend classes
// -------------------------------------------------------------------------
void SetEnabled(bool enabled);
void AddInitCompletionHook(Process &process);
// -------------------------------------------------------------------------
// Private methods
// -------------------------------------------------------------------------
void DumpTimestamp(Stream &stream, uint64_t timestamp);
size_t DumpHeader(Stream &stream, const StructuredData::Dictionary &event);
size_t HandleDisplayOfEvent(const StructuredData::Dictionary &event,
Stream &stream);
// -------------------------------------------------------------------------
/// Call the enable command again, using whatever settings were initially
/// made.
// -------------------------------------------------------------------------
void EnableNow();
// -------------------------------------------------------------------------
// Private data
// -------------------------------------------------------------------------
bool m_recorded_first_timestamp;
uint64_t m_first_timestamp_seen;
bool m_is_enabled;
std::mutex m_added_breakpoint_mutex;
bool m_added_breakpoint;
};
}
#endif /* StructuredDataPluginDarwinLog_hpp */