Home | History | Annotate | Download | only in API
      1 //===-- SBInputReader.h -----------------------------------------*- 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 #ifndef LLDB_SBInputReader_h_
     11 #define LLDB_SBInputReader_h_
     12 
     13 #include "lldb/API/SBDefines.h"
     14 
     15 namespace lldb {
     16 
     17 class SBInputReader
     18 {
     19 public:
     20 
     21     typedef size_t (*Callback) (void *baton,
     22                                 SBInputReader *reader,
     23                                 InputReaderAction notification,
     24                                 const char *bytes,
     25                                 size_t bytes_len);
     26 
     27     SBInputReader ();
     28 
     29     SBInputReader (const lldb::InputReaderSP &reader_sp);
     30 
     31     SBInputReader (const lldb::SBInputReader &rhs);
     32 
     33     ~SBInputReader ();
     34 
     35 
     36     SBError
     37     Initialize (SBDebugger &debugger,
     38                 Callback callback,
     39                 void *callback_baton,
     40                 lldb::InputReaderGranularity granularity,
     41                 const char *end_token,
     42                 const char *prompt,
     43                 bool echo);
     44 
     45     bool
     46     IsValid () const;
     47 
     48     const lldb::SBInputReader &
     49     operator = (const lldb::SBInputReader &rhs);
     50 
     51     bool
     52     IsActive () const;
     53 
     54     bool
     55     IsDone () const;
     56 
     57     void
     58     SetIsDone (bool value);
     59 
     60     InputReaderGranularity
     61     GetGranularity ();
     62 
     63 protected:
     64     friend class SBDebugger;
     65 
     66     lldb_private::InputReader *
     67     operator->() const;
     68 
     69     lldb::InputReaderSP &
     70     operator *();
     71 
     72     const lldb::InputReaderSP &
     73     operator *() const;
     74 
     75     lldb_private::InputReader *
     76     get() const;
     77 
     78     lldb_private::InputReader &
     79     ref() const;
     80 
     81 private:
     82 
     83     static size_t
     84     PrivateCallback (void *baton,
     85                      lldb_private::InputReader &reader,
     86                      lldb::InputReaderAction notification,
     87                      const char *bytes,
     88                      size_t bytes_len);
     89 
     90     lldb::InputReaderSP m_opaque_sp;
     91     Callback m_callback_function;
     92     void *m_callback_baton;
     93 };
     94 
     95 } // namespace lldb
     96 
     97 #endif // LLDB_SBInputReader_h_
     98