1f7a9b14c2c02d2fa9fad586c19f29d77533fcc09Enrico Granata//===-- InputReaderEZ.h -----------------------------------------*- C++ -*-===//
2f7a9b14c2c02d2fa9fad586c19f29d77533fcc09Enrico Granata//
3f7a9b14c2c02d2fa9fad586c19f29d77533fcc09Enrico Granata//                     The LLVM Compiler Infrastructure
4f7a9b14c2c02d2fa9fad586c19f29d77533fcc09Enrico Granata//
5f7a9b14c2c02d2fa9fad586c19f29d77533fcc09Enrico Granata// This file is distributed under the University of Illinois Open Source
6f7a9b14c2c02d2fa9fad586c19f29d77533fcc09Enrico Granata// License. See LICENSE.TXT for details.
7f7a9b14c2c02d2fa9fad586c19f29d77533fcc09Enrico Granata//
8f7a9b14c2c02d2fa9fad586c19f29d77533fcc09Enrico Granata//===----------------------------------------------------------------------===//
9f7a9b14c2c02d2fa9fad586c19f29d77533fcc09Enrico Granata
10f7a9b14c2c02d2fa9fad586c19f29d77533fcc09Enrico Granata#ifndef liblldb_InputReaderEZ_h_
11f7a9b14c2c02d2fa9fad586c19f29d77533fcc09Enrico Granata#define liblldb_InputReaderEZ_h_
12f7a9b14c2c02d2fa9fad586c19f29d77533fcc09Enrico Granata
13f7a9b14c2c02d2fa9fad586c19f29d77533fcc09Enrico Granata#include "lldb/Core/InputReader.h"
14f7a9b14c2c02d2fa9fad586c19f29d77533fcc09Enrico Granata
15f7a9b14c2c02d2fa9fad586c19f29d77533fcc09Enrico Granatanamespace lldb_private {
16f7a9b14c2c02d2fa9fad586c19f29d77533fcc09Enrico Granata
17f7a9b14c2c02d2fa9fad586c19f29d77533fcc09Enrico Granataclass InputReaderEZ : public InputReader
18f7a9b14c2c02d2fa9fad586c19f29d77533fcc09Enrico Granata{
19f7a9b14c2c02d2fa9fad586c19f29d77533fcc09Enrico Granata
20f7a9b14c2c02d2fa9fad586c19f29d77533fcc09Enrico Granataprivate:
21f7a9b14c2c02d2fa9fad586c19f29d77533fcc09Enrico Granata
222bc9eb3ba78efc64a273729b480bafc3bbaa433aJohnny Chen    static size_t Callback_Impl(void *baton,
232bc9eb3ba78efc64a273729b480bafc3bbaa433aJohnny Chen                                InputReader &reader,
242bc9eb3ba78efc64a273729b480bafc3bbaa433aJohnny Chen                                lldb::InputReaderAction notification,
252bc9eb3ba78efc64a273729b480bafc3bbaa433aJohnny Chen                                const char *bytes,
262bc9eb3ba78efc64a273729b480bafc3bbaa433aJohnny Chen                                size_t bytes_len);
27f7a9b14c2c02d2fa9fad586c19f29d77533fcc09Enrico Granatapublic:
2890d207ede88604e278f68ee1b02600a35e56dd14Enrico Granata
29f7a9b14c2c02d2fa9fad586c19f29d77533fcc09Enrico Granata    InputReaderEZ (Debugger &debugger) :
30f7a9b14c2c02d2fa9fad586c19f29d77533fcc09Enrico Granata    InputReader(debugger)
31f7a9b14c2c02d2fa9fad586c19f29d77533fcc09Enrico Granata    {}
32f7a9b14c2c02d2fa9fad586c19f29d77533fcc09Enrico Granata
33f7a9b14c2c02d2fa9fad586c19f29d77533fcc09Enrico Granata    virtual
34f7a9b14c2c02d2fa9fad586c19f29d77533fcc09Enrico Granata    ~InputReaderEZ ();
35f7a9b14c2c02d2fa9fad586c19f29d77533fcc09Enrico Granata
362bc9eb3ba78efc64a273729b480bafc3bbaa433aJohnny Chen    using InputReader::Initialize;
3790d207ede88604e278f68ee1b02600a35e56dd14Enrico Granata    virtual Error
3890d207ede88604e278f68ee1b02600a35e56dd14Enrico Granata    Initialize(void* baton,
3990d207ede88604e278f68ee1b02600a35e56dd14Enrico Granata               lldb::InputReaderGranularity token_size = lldb::eInputReaderGranularityLine,
4090d207ede88604e278f68ee1b02600a35e56dd14Enrico Granata               const char* end_token = "DONE",
4190d207ede88604e278f68ee1b02600a35e56dd14Enrico Granata               const char *prompt = "> ",
4290d207ede88604e278f68ee1b02600a35e56dd14Enrico Granata               bool echo = true);
4390d207ede88604e278f68ee1b02600a35e56dd14Enrico Granata
4490d207ede88604e278f68ee1b02600a35e56dd14Enrico Granata    virtual Error
4590d207ede88604e278f68ee1b02600a35e56dd14Enrico Granata    Initialize(InitializationParameters& params);
46f7a9b14c2c02d2fa9fad586c19f29d77533fcc09Enrico Granata
47f7a9b14c2c02d2fa9fad586c19f29d77533fcc09Enrico Granata    virtual void
48f7a9b14c2c02d2fa9fad586c19f29d77533fcc09Enrico Granata    ActivateHandler(HandlerData&) {}
49f7a9b14c2c02d2fa9fad586c19f29d77533fcc09Enrico Granata
50f7a9b14c2c02d2fa9fad586c19f29d77533fcc09Enrico Granata    virtual void
51f7a9b14c2c02d2fa9fad586c19f29d77533fcc09Enrico Granata    DeactivateHandler(HandlerData&) {}
52f7a9b14c2c02d2fa9fad586c19f29d77533fcc09Enrico Granata
53f7a9b14c2c02d2fa9fad586c19f29d77533fcc09Enrico Granata    virtual void
54f7a9b14c2c02d2fa9fad586c19f29d77533fcc09Enrico Granata    ReactivateHandler(HandlerData&) {}
55f7a9b14c2c02d2fa9fad586c19f29d77533fcc09Enrico Granata
56f7a9b14c2c02d2fa9fad586c19f29d77533fcc09Enrico Granata    virtual void
57f7a9b14c2c02d2fa9fad586c19f29d77533fcc09Enrico Granata    AsynchronousOutputWrittenHandler(HandlerData&) {}
58f7a9b14c2c02d2fa9fad586c19f29d77533fcc09Enrico Granata
59f7a9b14c2c02d2fa9fad586c19f29d77533fcc09Enrico Granata    virtual void
60f7a9b14c2c02d2fa9fad586c19f29d77533fcc09Enrico Granata    GotTokenHandler(HandlerData&) {}
61f7a9b14c2c02d2fa9fad586c19f29d77533fcc09Enrico Granata
62f7a9b14c2c02d2fa9fad586c19f29d77533fcc09Enrico Granata    virtual void
63f7a9b14c2c02d2fa9fad586c19f29d77533fcc09Enrico Granata    InterruptHandler(HandlerData&) {}
64f7a9b14c2c02d2fa9fad586c19f29d77533fcc09Enrico Granata
65f7a9b14c2c02d2fa9fad586c19f29d77533fcc09Enrico Granata    virtual void
66f7a9b14c2c02d2fa9fad586c19f29d77533fcc09Enrico Granata    EOFHandler(HandlerData&) {}
67f7a9b14c2c02d2fa9fad586c19f29d77533fcc09Enrico Granata
68f7a9b14c2c02d2fa9fad586c19f29d77533fcc09Enrico Granata    virtual void
69f7a9b14c2c02d2fa9fad586c19f29d77533fcc09Enrico Granata    DoneHandler(HandlerData&) {}
70f7a9b14c2c02d2fa9fad586c19f29d77533fcc09Enrico Granata
71e89ab7b58d2542f4f42e923fa65ef8984840a90cEnrico Granata    virtual bool
72e89ab7b58d2542f4f42e923fa65ef8984840a90cEnrico Granata    GetSaveUserInput()
73e89ab7b58d2542f4f42e923fa65ef8984840a90cEnrico Granata    {
74e89ab7b58d2542f4f42e923fa65ef8984840a90cEnrico Granata        return m_save_user_input;
75e89ab7b58d2542f4f42e923fa65ef8984840a90cEnrico Granata    }
76e89ab7b58d2542f4f42e923fa65ef8984840a90cEnrico Granata
77f7a9b14c2c02d2fa9fad586c19f29d77533fcc09Enrico Granataprotected:
78f7a9b14c2c02d2fa9fad586c19f29d77533fcc09Enrico Granata    friend class Debugger;
79f7a9b14c2c02d2fa9fad586c19f29d77533fcc09Enrico Granata
80f7a9b14c2c02d2fa9fad586c19f29d77533fcc09Enrico Granataprivate:
81f7a9b14c2c02d2fa9fad586c19f29d77533fcc09Enrico Granata    DISALLOW_COPY_AND_ASSIGN (InputReaderEZ);
82f7a9b14c2c02d2fa9fad586c19f29d77533fcc09Enrico Granata
83f7a9b14c2c02d2fa9fad586c19f29d77533fcc09Enrico Granata};
84f7a9b14c2c02d2fa9fad586c19f29d77533fcc09Enrico Granata
85f7a9b14c2c02d2fa9fad586c19f29d77533fcc09Enrico Granata} // namespace lldb_private
86f7a9b14c2c02d2fa9fad586c19f29d77533fcc09Enrico Granata
87f7a9b14c2c02d2fa9fad586c19f29d77533fcc09Enrico Granata#endif // #ifndef liblldb_InputReaderEZ_h_
88