blob: 7a865bdc50973117e6039f874de8c2e7ec51ccdd [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
Enrico Granataf2bbf712011-07-15 02:26:42 +000010#include "lldb/Core/InputReaderEZ.h"
11
Enrico Granataf2bbf712011-07-15 02:26:42 +000012using namespace lldb;
13using namespace lldb_private;
14
15size_t
16InputReaderEZ::Callback_Impl(void *baton,
17 InputReader &reader,
18 lldb::InputReaderAction notification,
19 const char *bytes,
20 size_t bytes_len)
21
22{
23 HandlerData hand_data(reader,
24 bytes,
25 bytes_len,
26 baton);
27
28 switch (notification)
29 {
30 case eInputReaderActivate:
31 reader.ActivateHandler(hand_data);
32 break;
33 case eInputReaderDeactivate:
34 reader.DeactivateHandler(hand_data);
35 break;
36 case eInputReaderReactivate:
37 reader.ReactivateHandler(hand_data);
38 break;
39 case eInputReaderAsynchronousOutputWritten:
40 reader.AsynchronousOutputWrittenHandler(hand_data);
41 break;
42 case eInputReaderGotToken:
Enrico Granatac53114e2011-07-25 16:59:05 +000043 {
44 if (reader.GetSaveUserInput())
45 reader.GetUserInput().AppendString(bytes, bytes_len);
Enrico Granataf2bbf712011-07-15 02:26:42 +000046 reader.GotTokenHandler(hand_data);
Enrico Granatac53114e2011-07-25 16:59:05 +000047 }
Enrico Granataf2bbf712011-07-15 02:26:42 +000048 break;
49 case eInputReaderInterrupt:
50 reader.InterruptHandler(hand_data);
51 break;
52 case eInputReaderEndOfFile:
53 reader.EOFHandler(hand_data);
54 break;
55 case eInputReaderDone:
56 reader.DoneHandler(hand_data);
57 break;
58 }
59 return bytes_len;
60}
61
62Error
63InputReaderEZ::Initialize(void* baton,
64 lldb::InputReaderGranularity token_size,
65 const char* end_token,
66 const char *prompt,
67 bool echo)
68{
69 return InputReader::Initialize(Callback_Impl,
70 baton,
71 token_size,
72 end_token,
73 prompt,
74 echo);
75}
76
Enrico Granata9dd75c82011-07-15 23:30:15 +000077Error
78InputReaderEZ::Initialize(InitializationParameters& params)
79{
Enrico Granatac53114e2011-07-25 16:59:05 +000080 Error ret = Initialize(params.m_baton,
81 params.m_token_size,
82 params.m_end_token,
83 params.m_prompt,
84 params.m_echo);
85 m_save_user_input = params.m_save_user_input;
86 return ret;
Enrico Granata9dd75c82011-07-15 23:30:15 +000087}
88
Enrico Granataf2bbf712011-07-15 02:26:42 +000089InputReaderEZ::~InputReaderEZ ()
90{
Greg Clayton3418c852011-08-10 02:10:13 +000091}