Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-05-10 08:42:56

0001 //===-- TraceExporter.h -----------------------------------------*- C++ -*-===//
0002 //
0003 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
0004 // See https://llvm.org/LICENSE.txt for license information.
0005 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
0006 //
0007 //===----------------------------------------------------------------------===//
0008 
0009 #ifndef LLDB_TARGET_TRACE_EXPORTER_H
0010 #define LLDB_TARGET_TRACE_EXPORTER_H
0011 
0012 #include "lldb/Core/PluginInterface.h"
0013 #include "lldb/lldb-forward.h"
0014 #include "llvm/Support/Error.h"
0015 
0016 namespace lldb_private {
0017 
0018 /// \class TraceExporter TraceExporter.h "lldb/Target/TraceExporter.h"
0019 /// A plug-in interface definition class for trace exporters.
0020 ///
0021 /// Trace exporter plug-ins operate on traces, converting the trace data
0022 /// provided by an \a lldb_private::TraceCursor into a different format that can
0023 /// be digested by other tools, e.g. Chrome Trace Event Profiler.
0024 ///
0025 /// Trace exporters are supposed to operate on an architecture-agnostic fashion,
0026 /// as a TraceCursor, which feeds the data, hides the actual trace technology
0027 /// being used.
0028 class TraceExporter : public PluginInterface {
0029 public:
0030   /// Create an instance of a trace exporter plugin given its name.
0031   ///
0032   /// \param[in] plugin_Name
0033   ///     Plug-in name to search.
0034   ///
0035   /// \return
0036   ///     A \a TraceExporterUP instance, or an \a llvm::Error if the plug-in
0037   ///     name doesn't match any registered plug-ins.
0038   static llvm::Expected<lldb::TraceExporterUP>
0039   FindPlugin(llvm::StringRef plugin_name);
0040 };
0041 
0042 } // namespace lldb_private
0043 
0044 #endif // LLDB_TARGET_TRACE_EXPORTER_H