| //===-- SBStructuredData.h --------------------------------------*- C++ -*-===// |
| // |
| // The LLVM Compiler Infrastructure |
| // |
| // This file is distributed under the University of Illinois Open Source |
| // License. See LICENSE.TXT for details. |
| // |
| //===----------------------------------------------------------------------===// |
| |
| #ifndef SBStructuredData_h |
| #define SBStructuredData_h |
| |
| #include "lldb/API/SBDefines.h" |
| #include "lldb/API/SBModule.h" |
| |
| namespace lldb { |
| |
| class SBStructuredData { |
| public: |
| SBStructuredData(); |
| |
| SBStructuredData(const lldb::SBStructuredData &rhs); |
| |
| SBStructuredData(const lldb::EventSP &event_sp); |
| |
| ~SBStructuredData(); |
| |
| lldb::SBStructuredData &operator=(const lldb::SBStructuredData &rhs); |
| |
| bool IsValid() const; |
| |
| lldb::SBError SetFromJSON(lldb::SBStream &stream); |
| |
| void Clear(); |
| |
| lldb::SBError GetAsJSON(lldb::SBStream &stream) const; |
| |
| lldb::SBError GetDescription(lldb::SBStream &stream) const; |
| |
| //------------------------------------------------------------------ |
| /// Return the type of data in this data structure |
| //------------------------------------------------------------------ |
| lldb::StructuredDataType GetType() const; |
| |
| //------------------------------------------------------------------ |
| /// Return the size (i.e. number of elements) in this data structure |
| /// if it is an array or dictionary type. For other types, 0 will be |
| // returned. |
| //------------------------------------------------------------------ |
| size_t GetSize() const; |
| |
| //------------------------------------------------------------------ |
| /// Return the value corresponding to a key if this data structure |
| /// is a dictionary type. |
| //------------------------------------------------------------------ |
| lldb::SBStructuredData GetValueForKey(const char *key) const; |
| |
| //------------------------------------------------------------------ |
| /// Return the value corresponding to an index if this data structure |
| /// is array. |
| //------------------------------------------------------------------ |
| lldb::SBStructuredData GetItemAtIndex(size_t idx) const; |
| |
| //------------------------------------------------------------------ |
| /// Return the integer value if this data structure is an integer type. |
| //------------------------------------------------------------------ |
| uint64_t GetIntegerValue(uint64_t fail_value = 0) const; |
| |
| //------------------------------------------------------------------ |
| /// Return the floating point value if this data structure is a floating |
| /// type. |
| //------------------------------------------------------------------ |
| double GetFloatValue(double fail_value = 0.0) const; |
| |
| //------------------------------------------------------------------ |
| /// Return the boolean value if this data structure is a boolean type. |
| //------------------------------------------------------------------ |
| bool GetBooleanValue(bool fail_value = false) const; |
| |
| //------------------------------------------------------------------ |
| /// Provides the string value if this data structure is a string type. |
| /// |
| /// @param[out] dst |
| /// pointer where the string value will be written. In case it is null, |
| /// nothing will be written at @dst. |
| /// |
| /// @param[in] dst_len |
| /// max number of characters that can be written at @dst. In case it is |
| /// zero, nothing will be written at @dst. If this length is not enough |
| /// to write the complete string value, (dst_len-1) bytes of the string |
| /// value will be written at @dst followed by a null character. |
| /// |
| /// @return |
| /// Returns the byte size needed to completely write the string value at |
| /// @dst in all cases. |
| //------------------------------------------------------------------ |
| size_t GetStringValue(char *dst, size_t dst_len) const; |
| |
| protected: |
| friend class SBTraceOptions; |
| friend class SBDebugger; |
| friend class SBTarget; |
| |
| StructuredDataImplUP m_impl_up; |
| }; |
| } // namespace lldb |
| |
| #endif /* SBStructuredData_h */ |