//===-- IOHandler.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_CORE_IOHANDLER_H #define LLDB_CORE_IOHANDLER_H #include "lldb/Core/ValueObjectList.h" #include "lldb/Host/Config.h" #include "lldb/Utility/CompletionRequest.h" #include "lldb/Utility/Flags.h" #include "lldb/Utility/Predicate.h" #include "lldb/Utility/Stream.h" #include "lldb/Utility/StringList.h" #include "lldb/lldb-defines.h" #include "lldb/lldb-forward.h" #include "llvm/ADT/StringRef.h" #include <memory> #include <mutex> #include <optional> #include <string> #include <vector> #include <cstdint> #include <cstdio> namespace lldb_private { class Debugger; } // namespace lldb_private namespace curses { class Application; ApplicationAP; } // namespace curses namespace lldb_private { class IOHandler { … }; /// A delegate class for use with IOHandler subclasses. /// /// The IOHandler delegate is designed to be mixed into classes so /// they can use an IOHandler subclass to fetch input and notify the /// object that inherits from this delegate class when a token is /// received. class IOHandlerDelegate { … }; // IOHandlerDelegateMultiline // // A IOHandlerDelegate that handles terminating multi-line input when // the last line is equal to "end_line" which is specified in the constructor. class IOHandlerDelegateMultiline : public IOHandlerDelegate { … }; class IOHandlerEditline : public IOHandler { … }; // The order of base classes is important. Look at the constructor of // IOHandlerConfirm to see how. class IOHandlerConfirm : public IOHandlerDelegate, public IOHandlerEditline { … }; class IOHandlerStack { … }; } // namespace lldb_private #endif // LLDB_CORE_IOHANDLER_H