Enrico Granata | f2bbf71 | 2011-07-15 02:26:42 +0000 | [diff] [blame] | 1 | //===-- InputReaderEZ.cpp ---------------------------------------*- C++ -*-===// |
| 2 | // |
| 3 | // The LLVM Compiler Infrastructure |
| 4 | // |
| 5 | // This file is distributed under the University of Illinois Open Source |
| 6 | // License. See LICENSE.TXT for details. |
| 7 | // |
| 8 | //===----------------------------------------------------------------------===// |
| 9 | |
| 10 | #include <string> |
| 11 | |
| 12 | #include "lldb/Core/InputReaderEZ.h" |
| 13 | |
| 14 | #include "lldb/Core/Debugger.h" |
| 15 | #include "lldb/Interpreter/CommandInterpreter.h" |
| 16 | |
| 17 | using namespace lldb; |
| 18 | using namespace lldb_private; |
| 19 | |
| 20 | size_t |
| 21 | InputReaderEZ::Callback_Impl(void *baton, |
| 22 | InputReader &reader, |
| 23 | lldb::InputReaderAction notification, |
| 24 | const char *bytes, |
| 25 | size_t bytes_len) |
| 26 | |
| 27 | { |
| 28 | HandlerData hand_data(reader, |
| 29 | bytes, |
| 30 | bytes_len, |
| 31 | baton); |
| 32 | |
| 33 | switch (notification) |
| 34 | { |
| 35 | case eInputReaderActivate: |
| 36 | reader.ActivateHandler(hand_data); |
| 37 | break; |
| 38 | case eInputReaderDeactivate: |
| 39 | reader.DeactivateHandler(hand_data); |
| 40 | break; |
| 41 | case eInputReaderReactivate: |
| 42 | reader.ReactivateHandler(hand_data); |
| 43 | break; |
| 44 | case eInputReaderAsynchronousOutputWritten: |
| 45 | reader.AsynchronousOutputWrittenHandler(hand_data); |
| 46 | break; |
| 47 | case eInputReaderGotToken: |
Enrico Granata | c53114e | 2011-07-25 16:59:05 +0000 | [diff] [blame^] | 48 | { |
| 49 | if (reader.GetSaveUserInput()) |
| 50 | reader.GetUserInput().AppendString(bytes, bytes_len); |
Enrico Granata | f2bbf71 | 2011-07-15 02:26:42 +0000 | [diff] [blame] | 51 | reader.GotTokenHandler(hand_data); |
Enrico Granata | c53114e | 2011-07-25 16:59:05 +0000 | [diff] [blame^] | 52 | } |
Enrico Granata | f2bbf71 | 2011-07-15 02:26:42 +0000 | [diff] [blame] | 53 | break; |
| 54 | case eInputReaderInterrupt: |
| 55 | reader.InterruptHandler(hand_data); |
| 56 | break; |
| 57 | case eInputReaderEndOfFile: |
| 58 | reader.EOFHandler(hand_data); |
| 59 | break; |
| 60 | case eInputReaderDone: |
| 61 | reader.DoneHandler(hand_data); |
| 62 | break; |
| 63 | } |
| 64 | return bytes_len; |
| 65 | } |
| 66 | |
| 67 | Error |
| 68 | InputReaderEZ::Initialize(void* baton, |
| 69 | lldb::InputReaderGranularity token_size, |
| 70 | const char* end_token, |
| 71 | const char *prompt, |
| 72 | bool echo) |
| 73 | { |
| 74 | return InputReader::Initialize(Callback_Impl, |
| 75 | baton, |
| 76 | token_size, |
| 77 | end_token, |
| 78 | prompt, |
| 79 | echo); |
| 80 | } |
| 81 | |
Enrico Granata | 9dd75c8 | 2011-07-15 23:30:15 +0000 | [diff] [blame] | 82 | Error |
| 83 | InputReaderEZ::Initialize(InitializationParameters& params) |
| 84 | { |
Enrico Granata | c53114e | 2011-07-25 16:59:05 +0000 | [diff] [blame^] | 85 | Error ret = Initialize(params.m_baton, |
| 86 | params.m_token_size, |
| 87 | params.m_end_token, |
| 88 | params.m_prompt, |
| 89 | params.m_echo); |
| 90 | m_save_user_input = params.m_save_user_input; |
| 91 | return ret; |
Enrico Granata | 9dd75c8 | 2011-07-15 23:30:15 +0000 | [diff] [blame] | 92 | } |
| 93 | |
Enrico Granata | f2bbf71 | 2011-07-15 02:26:42 +0000 | [diff] [blame] | 94 | InputReaderEZ::~InputReaderEZ () |
| 95 | { |
| 96 | } |