10b57cec5SDimitry Andric 20b57cec5SDimitry Andric //===-- SBTypeEnumMember.h --------------------------------------*- C++ -*-===// 30b57cec5SDimitry Andric // 40b57cec5SDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 50b57cec5SDimitry Andric // See https://llvm.org/LICENSE.txt for license information. 60b57cec5SDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 70b57cec5SDimitry Andric // 80b57cec5SDimitry Andric //===----------------------------------------------------------------------===// 90b57cec5SDimitry Andric 100b57cec5SDimitry Andric #ifndef LLDB_API_SBTYPEENUMMEMBER_H 110b57cec5SDimitry Andric #define LLDB_API_SBTYPEENUMMEMBER_H 120b57cec5SDimitry Andric 130b57cec5SDimitry Andric #include "lldb/API/SBDefines.h" 140b57cec5SDimitry Andric 150b57cec5SDimitry Andric namespace lldb { 160b57cec5SDimitry Andric 170b57cec5SDimitry Andric class LLDB_API SBTypeEnumMember { 180b57cec5SDimitry Andric public: 190b57cec5SDimitry Andric SBTypeEnumMember(); 200b57cec5SDimitry Andric 210b57cec5SDimitry Andric SBTypeEnumMember(const SBTypeEnumMember &rhs); 220b57cec5SDimitry Andric 230b57cec5SDimitry Andric ~SBTypeEnumMember(); 240b57cec5SDimitry Andric 250b57cec5SDimitry Andric SBTypeEnumMember &operator=(const SBTypeEnumMember &rhs); 260b57cec5SDimitry Andric 270b57cec5SDimitry Andric explicit operator bool() const; 280b57cec5SDimitry Andric 290b57cec5SDimitry Andric bool IsValid() const; 300b57cec5SDimitry Andric 310b57cec5SDimitry Andric int64_t GetValueAsSigned(); 320b57cec5SDimitry Andric 330b57cec5SDimitry Andric uint64_t GetValueAsUnsigned(); 340b57cec5SDimitry Andric 350b57cec5SDimitry Andric const char *GetName(); 360b57cec5SDimitry Andric 370b57cec5SDimitry Andric lldb::SBType GetType(); 380b57cec5SDimitry Andric 390b57cec5SDimitry Andric bool GetDescription(lldb::SBStream &description, 400b57cec5SDimitry Andric lldb::DescriptionLevel description_level); 410b57cec5SDimitry Andric 420b57cec5SDimitry Andric protected: 430b57cec5SDimitry Andric friend class SBType; 440b57cec5SDimitry Andric friend class SBTypeEnumMemberList; 450b57cec5SDimitry Andric 460b57cec5SDimitry Andric void reset(lldb_private::TypeEnumMemberImpl *); 470b57cec5SDimitry Andric 480b57cec5SDimitry Andric lldb_private::TypeEnumMemberImpl &ref(); 490b57cec5SDimitry Andric 500b57cec5SDimitry Andric const lldb_private::TypeEnumMemberImpl &ref() const; 510b57cec5SDimitry Andric 520b57cec5SDimitry Andric lldb::TypeEnumMemberImplSP m_opaque_sp; 530b57cec5SDimitry Andric 540b57cec5SDimitry Andric SBTypeEnumMember(const lldb::TypeEnumMemberImplSP &); 550b57cec5SDimitry Andric }; 560b57cec5SDimitry Andric 570b57cec5SDimitry Andric class SBTypeEnumMemberList { 580b57cec5SDimitry Andric public: 590b57cec5SDimitry Andric SBTypeEnumMemberList(); 600b57cec5SDimitry Andric 610b57cec5SDimitry Andric SBTypeEnumMemberList(const SBTypeEnumMemberList &rhs); 620b57cec5SDimitry Andric 630b57cec5SDimitry Andric ~SBTypeEnumMemberList(); 640b57cec5SDimitry Andric 650b57cec5SDimitry Andric SBTypeEnumMemberList &operator=(const SBTypeEnumMemberList &rhs); 660b57cec5SDimitry Andric 670b57cec5SDimitry Andric explicit operator bool() const; 680b57cec5SDimitry Andric 690b57cec5SDimitry Andric bool IsValid(); 700b57cec5SDimitry Andric 710b57cec5SDimitry Andric void Append(SBTypeEnumMember entry); 720b57cec5SDimitry Andric 730b57cec5SDimitry Andric SBTypeEnumMember GetTypeEnumMemberAtIndex(uint32_t index); 740b57cec5SDimitry Andric 750b57cec5SDimitry Andric uint32_t GetSize(); 760b57cec5SDimitry Andric 770b57cec5SDimitry Andric private: 780b57cec5SDimitry Andric std::unique_ptr<lldb_private::TypeEnumMemberListImpl> m_opaque_up; 790b57cec5SDimitry Andric }; 800b57cec5SDimitry Andric 810b57cec5SDimitry Andric } // namespace lldb 820b57cec5SDimitry Andric 830b57cec5SDimitry Andric #endif // LLDB_API_SBTYPEENUMMEMBER_H 84