]> CyberLeo.Net >> Repos - FreeBSD/releng/10.0.git/blob - contrib/llvm/tools/lldb/include/lldb/API/SBInputReader.h
- Copy stable/10 (r259064) to releng/10.0 as part of the
[FreeBSD/releng/10.0.git] / contrib / llvm / tools / lldb / include / lldb / API / SBInputReader.h
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_