LLDB mainline
Public Member Functions | Private Member Functions | Private Attributes | List of all members
IOHandlerLuaInterpreter Class Reference
Inheritance diagram for IOHandlerLuaInterpreter:
Inheritance graph
[legend]

Public Member Functions

 IOHandlerLuaInterpreter (Debugger &debugger, ScriptInterpreterLua &script_interpreter, ActiveIOHandler active_io_handler=eIOHandlerNone)
 
 ~IOHandlerLuaInterpreter () override
 
void IOHandlerActivated (IOHandler &io_handler, bool interactive) override
 
bool IOHandlerIsInputComplete (IOHandler &io_handler, StringList &lines) override
 Called to determine whether typing enter after the last line in lines should end input.
 
void IOHandlerInputComplete (IOHandler &io_handler, std::string &data) override
 Called when a line or lines have been retrieved.
 
- Public Member Functions inherited from lldb_private::IOHandlerDelegate
 IOHandlerDelegate (Completion completion=Completion::None)
 
virtual ~IOHandlerDelegate ()=default
 
virtual void IOHandlerActivated (IOHandler &io_handler, bool interactive)
 
virtual void IOHandlerDeactivated (IOHandler &io_handler)
 
virtual std::optional< std::string > IOHandlerSuggestion (IOHandler &io_handler, llvm::StringRef line)
 
virtual void IOHandlerComplete (IOHandler &io_handler, CompletionRequest &request)
 
virtual const char * IOHandlerGetFixIndentationCharacters ()
 
virtual int IOHandlerFixIndentation (IOHandler &io_handler, const StringList &lines, int cursor_position)
 Called when a new line is created or one of an identified set of indentation characters is typed.
 
virtual void IOHandlerInputComplete (IOHandler &io_handler, std::string &data)=0
 Called when a line or lines have been retrieved.
 
virtual void IOHandlerInputInterrupted (IOHandler &io_handler, std::string &data)
 
virtual bool IOHandlerIsInputComplete (IOHandler &io_handler, StringList &lines)
 Called to determine whether typing enter after the last line in lines should end input.
 
virtual llvm::StringRef IOHandlerGetControlSequence (char ch)
 
virtual const char * IOHandlerGetCommandPrefix ()
 
virtual const char * IOHandlerGetHelpPrologue ()
 
virtual bool IOHandlerInterrupt (IOHandler &io_handler)
 
- Public Member Functions inherited from lldb_private::IOHandlerEditline
 IOHandlerEditline (Debugger &debugger, IOHandler::Type type, const char *editline_name, llvm::StringRef prompt, llvm::StringRef continuation_prompt, bool multi_line, bool color, uint32_t line_number_start, IOHandlerDelegate &delegate)
 
 IOHandlerEditline (Debugger &debugger, IOHandler::Type type, const lldb::FileSP &input_sp, const lldb::StreamFileSP &output_sp, const lldb::StreamFileSP &error_sp, uint32_t flags, const char *editline_name, llvm::StringRef prompt, llvm::StringRef continuation_prompt, bool multi_line, bool color, uint32_t line_number_start, IOHandlerDelegate &delegate)
 
 IOHandlerEditline (Debugger &, IOHandler::Type, const char *, const char *, const char *, bool, bool, uint32_t, IOHandlerDelegate &)=delete
 
 IOHandlerEditline (Debugger &, IOHandler::Type, const lldb::FileSP &, const lldb::StreamFileSP &, const lldb::StreamFileSP &, uint32_t, const char *, const char *, const char *, bool, bool, uint32_t, IOHandlerDelegate &)=delete
 
 ~IOHandlerEditline () override
 
void Run () override
 
void Cancel () override
 
bool Interrupt () override
 
void GotEOF () override
 
void Activate () override
 
void Deactivate () override
 
void TerminalSizeChanged () override
 
llvm::StringRef GetControlSequence (char ch) override
 
const char * GetCommandPrefix () override
 
const char * GetHelpPrologue () override
 
const char * GetPrompt () override
 
bool SetPrompt (llvm::StringRef prompt) override
 
bool SetPrompt (const char *prompt)=delete
 
const char * GetContinuationPrompt ()
 
void SetContinuationPrompt (llvm::StringRef prompt)
 
void SetContinuationPrompt (const char *)=delete
 
bool GetLine (std::string &line, bool &interrupted)
 
bool GetLines (StringList &lines, bool &interrupted)
 
void SetBaseLineNumber (uint32_t line)
 
bool GetInterruptExits ()
 
void SetInterruptExits (bool b)
 
StringList GetCurrentLines () const
 
uint32_t GetCurrentLineIndex () const
 
void PrintAsync (const char *s, size_t len, bool is_stdout) override
 
- Public Member Functions inherited from lldb_private::IOHandler
 IOHandler (Debugger &debugger, IOHandler::Type type)
 
 IOHandler (Debugger &debugger, IOHandler::Type type, const lldb::FileSP &input_sp, const lldb::StreamFileSP &output_sp, const lldb::StreamFileSP &error_sp, uint32_t flags)
 
virtual ~IOHandler ()
 
virtual void Run ()=0
 
virtual void Cancel ()=0
 
virtual bool Interrupt ()=0
 
virtual void GotEOF ()=0
 
bool IsActive ()
 
void SetIsDone (bool b)
 
bool GetIsDone ()
 
Type GetType () const
 
virtual void Activate ()
 
virtual void Deactivate ()
 
virtual void TerminalSizeChanged ()
 
virtual const char * GetPrompt ()
 
virtual bool SetPrompt (llvm::StringRef prompt)
 
bool SetPrompt (const char *)=delete
 
virtual llvm::StringRef GetControlSequence (char ch)
 
virtual const char * GetCommandPrefix ()
 
virtual const char * GetHelpPrologue ()
 
int GetInputFD ()
 
int GetOutputFD ()
 
int GetErrorFD ()
 
FILE * GetInputFILE ()
 
FILE * GetOutputFILE ()
 
FILE * GetErrorFILE ()
 
lldb::FileSP GetInputFileSP ()
 
lldb::StreamFileSP GetOutputStreamFileSP ()
 
lldb::StreamFileSP GetErrorStreamFileSP ()
 
DebuggerGetDebugger ()
 
void * GetUserData ()
 
void SetUserData (void *user_data)
 
FlagsGetFlags ()
 
const FlagsGetFlags () const
 
bool GetIsInteractive ()
 Check if the input is being supplied interactively by a user.
 
bool GetIsRealTerminal ()
 Check if the input is coming from a real terminal.
 
void SetPopped (bool b)
 
void WaitForPop ()
 
virtual void PrintAsync (const char *s, size_t len, bool is_stdout)
 
std::recursive_mutex & GetOutputMutex ()
 

Private Member Functions

bool IsQuitCommand (llvm::StringRef cmd)
 

Private Attributes

ScriptInterpreterLuam_script_interpreter
 
ActiveIOHandler m_active_io_handler
 

Additional Inherited Members

- Public Types inherited from lldb_private::IOHandlerDelegate
enum class  Completion { None , LLDBCommand , Expression }
 
- Public Types inherited from lldb_private::IOHandler
enum class  Type {
  CommandInterpreter , CommandList , Confirm , Curses ,
  Expression , REPL , ProcessIO , PythonInterpreter ,
  LuaInterpreter , PythonCode , Other
}
 
- Protected Attributes inherited from lldb_private::IOHandlerDelegate
Completion m_completion
 
- Protected Attributes inherited from lldb_private::IOHandlerEditline
IOHandlerDelegatem_delegate
 
std::string m_prompt
 
std::string m_continuation_prompt
 
StringListm_current_lines_ptr
 
uint32_t m_base_line_number
 
uint32_t m_curr_line_idx
 
bool m_multi_line
 
bool m_color
 
bool m_interrupt_exits
 
std::string m_line_buffer
 
- Protected Attributes inherited from lldb_private::IOHandler
Debuggerm_debugger
 
lldb::FileSP m_input_sp
 
lldb::StreamFileSP m_output_sp
 
lldb::StreamFileSP m_error_sp
 
std::recursive_mutex m_output_mutex
 
Predicate< bool > m_popped
 
Flags m_flags
 
Type m_type
 
void * m_user_data
 
bool m_done
 
bool m_active
 

Detailed Description

Definition at line 36 of file ScriptInterpreterLua.cpp.

Constructor & Destructor Documentation

◆ IOHandlerLuaInterpreter()

IOHandlerLuaInterpreter::IOHandlerLuaInterpreter ( Debugger debugger,
ScriptInterpreterLua script_interpreter,
ActiveIOHandler  active_io_handler = eIOHandlerNone 
)
inline

◆ ~IOHandlerLuaInterpreter()

IOHandlerLuaInterpreter::~IOHandlerLuaInterpreter ( )
inlineoverride

Member Function Documentation

◆ IOHandlerActivated()

void IOHandlerLuaInterpreter::IOHandlerActivated ( IOHandler io_handler,
bool  interactive 
)
inlineoverridevirtual

◆ IOHandlerInputComplete()

void IOHandlerLuaInterpreter::IOHandlerInputComplete ( IOHandler io_handler,
std::string &  data 
)
inlineoverridevirtual

Called when a line or lines have been retrieved.

This function can handle the current line and possibly call IOHandler::SetIsDone(true) when the IO handler is done like when "quit" is entered as a command, of when an empty line is received. It is up to the delegate to determine when a line should cause a IOHandler to exit.

Implements lldb_private::IOHandlerDelegate.

Definition at line 105 of file ScriptInterpreterLua.cpp.

References eIOHandlerBreakpoint, eIOHandlerNone, eIOHandlerWatchpoint, error(), lldb_private::IOHandler::GetErrorStreamFileSP(), lldb_private::ScriptInterpreterLua::GetLua(), lldb_private::IOHandler::GetUserData(), IsQuitCommand(), m_active_io_handler, m_script_interpreter, lldb_private::Lua::Run(), lldb_private::ScriptInterpreterLua::SetBreakpointCommandCallback(), lldb_private::IOHandler::SetIsDone(), lldb_private::ScriptInterpreterLua::SetWatchpointCommandCallback(), and lldb_private::toString().

◆ IOHandlerIsInputComplete()

bool IOHandlerLuaInterpreter::IOHandlerIsInputComplete ( IOHandler io_handler,
StringList lines 
)
inlineoverridevirtual

Called to determine whether typing enter after the last line in lines should end input.

This function will not be called on IOHandler objects that are getting single lines.

Parameters
[in]io_handlerThe IOHandler that responsible for updating the lines.
[in]linesThe current multi-line content. May be altered to provide alternative input when complete.
Returns
Return an boolean to indicate whether input is complete, true indicates that no additional input is necessary, while false indicates that more input is required.

Reimplemented from lldb_private::IOHandlerDelegate.

Definition at line 83 of file ScriptInterpreterLua.cpp.

References lldb_private::Lua::CheckSyntax(), lldb_private::StringList::DeleteStringAtIndex(), eIOHandlerBreakpoint, eIOHandlerWatchpoint, lldb_private::ScriptInterpreterLua::GetLua(), lldb_private::StringList::GetSize(), lldb_private::StreamString::GetString(), lldb_private::StringList::GetStringAtIndex(), IsQuitCommand(), lldb_private::StringList::Join(), m_active_io_handler, m_script_interpreter, and lldb_private::toString().

◆ IsQuitCommand()

bool IOHandlerLuaInterpreter::IsQuitCommand ( llvm::StringRef  cmd)
inlineprivate

Definition at line 143 of file ScriptInterpreterLua.cpp.

Referenced by IOHandlerInputComplete(), and IOHandlerIsInputComplete().

Member Data Documentation

◆ m_active_io_handler

ActiveIOHandler IOHandlerLuaInterpreter::m_active_io_handler
private

◆ m_script_interpreter

ScriptInterpreterLua& IOHandlerLuaInterpreter::m_script_interpreter
private

The documentation for this class was generated from the following file: