//===-- StackFrameRecognizer.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_TARGET_STACKFRAMERECOGNIZER_H #define LLDB_TARGET_STACKFRAMERECOGNIZER_H #include "lldb/Core/ValueObject.h" #include "lldb/Core/ValueObjectList.h" #include "lldb/Symbol/VariableList.h" #include "lldb/Target/StopInfo.h" #include "lldb/Utility/StructuredData.h" #include "lldb/lldb-private-forward.h" #include "lldb/lldb-public.h" #include <cstdint> #include <deque> #include <optional> #include <vector> namespace lldb_private { /// \class RecognizedStackFrame /// /// This class provides extra information about a stack frame that was /// provided by a specific stack frame recognizer. Right now, this class only /// holds recognized arguments (via GetRecognizedArguments). class RecognizedStackFrame : public std::enable_shared_from_this<RecognizedStackFrame> { … }; /// \class StackFrameRecognizer /// /// A base class for frame recognizers. Subclasses (actual frame recognizers) /// should implement RecognizeFrame to provide a RecognizedStackFrame for a /// given stack frame. class StackFrameRecognizer : public std::enable_shared_from_this<StackFrameRecognizer> { … }; /// \class ScriptedStackFrameRecognizer /// /// Python implementation for frame recognizers. An instance of this class /// tracks a particular Python classobject, which will be asked to recognize /// stack frames. class ScriptedStackFrameRecognizer : public StackFrameRecognizer { … }; /// Class that provides a registry of known stack frame recognizers. class StackFrameRecognizerManager { … }; /// \class ValueObjectRecognizerSynthesizedValue /// /// ValueObject subclass that presents the passed ValueObject as a recognized /// value with the specified ValueType. Frame recognizers should return /// instances of this class as the returned objects in GetRecognizedArguments(). class ValueObjectRecognizerSynthesizedValue : public ValueObject { … }; } // namespace lldb_private #endif // LLDB_TARGET_STACKFRAMERECOGNIZER_H