blob: c8362fbb8f5f9a291e459fdb0a2fdf128cb43ff7 [file] [log] [blame]
Enrico Granataf2bbf712011-07-15 02:26:42 +00001//===-- 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
17using namespace lldb;
18using namespace lldb_private;
19
20size_t
21InputReaderEZ::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 Granatac53114e2011-07-25 16:59:05 +000048 {
49 if (reader.GetSaveUserInput())
50 reader.GetUserInput().AppendString(bytes, bytes_len);
Enrico Granataf2bbf712011-07-15 02:26:42 +000051 reader.GotTokenHandler(hand_data);
Enrico Granatac53114e2011-07-25 16:59:05 +000052 }
Enrico Granataf2bbf712011-07-15 02:26:42 +000053 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
67Error
68InputReaderEZ::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 Granata9dd75c82011-07-15 23:30:15 +000082Error
83InputReaderEZ::Initialize(InitializationParameters& params)
84{
Enrico Granatac53114e2011-07-25 16:59:05 +000085 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 Granata9dd75c82011-07-15 23:30:15 +000092}
93
Enrico Granataf2bbf712011-07-15 02:26:42 +000094InputReaderEZ::~InputReaderEZ ()
95{
96}