1 //===-- SWIG Interface for SBCommandReturnObject ----------------*- C++ -*-===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 
9 namespace lldb {
10 
11 %feature("docstring",
12 "Represents a container which holds the result from command execution.
13 It works with SBCommandInterpreter.HandleCommand() to encapsulate the result
14 of command execution.
15 
16 See SBCommandInterpreter for example usage of SBCommandReturnObject."
17 ) SBCommandReturnObject;
18 class SBCommandReturnObject
19 {
20 public:
21 
22     SBCommandReturnObject ();
23 
24     SBCommandReturnObject (const lldb::SBCommandReturnObject &rhs);
25 
26     ~SBCommandReturnObject ();
27 
28     bool
29     IsValid() const;
30 
31     explicit operator bool() const;
32 
33     const char *
34     GetOutput ();
35 
36     const char *
37     GetError ();
38 
39     size_t
40     GetOutputSize ();
41 
42     size_t
43     GetErrorSize ();
44 
45     const char *
46     GetOutput (bool only_if_no_immediate);
47 
48     const char *
49     GetError (bool if_no_immediate);
50 
51     size_t
52     PutOutput (lldb::SBFile file);
53 
54     size_t
55     PutError (lldb::SBFile file);
56 
57     size_t
58     PutOutput (lldb::FileSP BORROWED);
59 
60     size_t
61     PutError (lldb::FileSP BORROWED);
62 
63     void
64     Clear();
65 
66     void
67     SetStatus (lldb::ReturnStatus status);
68 
69     void
70     SetError (lldb::SBError &error,
71               const char *fallback_error_cstr = NULL);
72 
73     void
74     SetError (const char *error_cstr);
75 
76     lldb::ReturnStatus
77     GetStatus();
78 
79     bool
80     Succeeded ();
81 
82     bool
83     HasResult ();
84 
85     void
86     AppendMessage (const char *message);
87 
88     void
89     AppendWarning (const char *message);
90 
91     bool
92     GetDescription (lldb::SBStream &description);
93 
94     void SetImmediateOutputFile(lldb::SBFile file);
95     void SetImmediateErrorFile(lldb::SBFile file);
96     void SetImmediateOutputFile(lldb::FileSP BORROWED);
97     void SetImmediateErrorFile(lldb::FileSP BORROWED);
98 
99     STRING_EXTENSION(SBCommandReturnObject)
100 
101     %extend {
102         // transfer_ownership does nothing, and is here for compatibility with
103         // old scripts.  Ownership is tracked by reference count in the ordinary way.
104 
SetImmediateOutputFile(lldb::FileSP BORROWED,bool transfer_ownership)105         void SetImmediateOutputFile(lldb::FileSP BORROWED, bool transfer_ownership) {
106             self->SetImmediateOutputFile(BORROWED);
107         }
SetImmediateErrorFile(lldb::FileSP BORROWED,bool transfer_ownership)108         void SetImmediateErrorFile(lldb::FileSP BORROWED, bool transfer_ownership) {
109             self->SetImmediateErrorFile(BORROWED);
110         }
111     }
112 
113 	void
114 	PutCString(const char* string, int len);
115 
116     // wrapping the variadic Printf() with a plain Print()
117     // because it is hard to support varargs in SWIG bridgings
118     %extend {
Print(const char * str)119         void Print (const char* str)
120         {
121             self->Printf("%s", str);
122         }
123     }
124 
125 };
126 
127 } // namespace lldb
128