1 //===-- SBCommandReturnObject.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_SBCommandReturnObject_h_ 11 #define LLDB_SBCommandReturnObject_h_ 12 13 #include <stdio.h> 14 15 #include "lldb/API/SBDefines.h" 16 17 namespace lldb { 18 19 class SBCommandReturnObject 20 { 21 public: 22 23 SBCommandReturnObject (); 24 25 SBCommandReturnObject (const lldb::SBCommandReturnObject &rhs); 26 27 const lldb::SBCommandReturnObject & 28 operator = (const lldb::SBCommandReturnObject &rhs); 29 30 31 SBCommandReturnObject (lldb_private::CommandReturnObject *ptr); 32 33 lldb_private::CommandReturnObject * 34 Release (); 35 36 ~SBCommandReturnObject (); 37 38 bool 39 IsValid() const; 40 41 const char * 42 GetOutput (); 43 44 const char * 45 GetError (); 46 47 size_t 48 PutOutput (FILE *fh); 49 50 size_t 51 GetOutputSize (); 52 53 size_t 54 GetErrorSize (); 55 56 size_t 57 PutError (FILE *fh); 58 59 void 60 Clear(); 61 62 lldb::ReturnStatus 63 GetStatus(); 64 65 void 66 SetStatus (lldb::ReturnStatus status); 67 68 bool 69 Succeeded (); 70 71 bool 72 HasResult (); 73 74 void 75 AppendMessage (const char *message); 76 77 void 78 AppendWarning (const char *message); 79 80 bool 81 GetDescription (lldb::SBStream &description); 82 83 void 84 SetImmediateOutputFile (FILE *fh); 85 86 void 87 SetImmediateErrorFile (FILE *fh); 88 89 void 90 PutCString(const char* string, int len = -1); 91 92 size_t 93 Printf(const char* format, ...) __attribute__ ((format (printf, 2, 3))); 94 95 const char * 96 GetOutput (bool only_if_no_immediate); 97 98 const char * 99 GetError (bool only_if_no_immediate); 100 101 void 102 SetError (lldb::SBError &error, 103 const char *fallback_error_cstr = NULL); 104 105 void 106 SetError (const char* error_cstr); 107 108 protected: 109 friend class SBCommandInterpreter; 110 friend class SBOptions; 111 112 lldb_private::CommandReturnObject * 113 operator->() const; 114 115 lldb_private::CommandReturnObject * 116 get() const; 117 118 lldb_private::CommandReturnObject & 119 operator*() const; 120 121 lldb_private::CommandReturnObject & 122 ref() const; 123 124 void 125 SetLLDBObjectPtr (lldb_private::CommandReturnObject *ptr); 126 127 private: 128 std::unique_ptr<lldb_private::CommandReturnObject> m_opaque_ap; 129 }; 130 131 } // namespace lldb 132 133 #endif // LLDB_SBCommandReturnObject_h_ 134