13e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton//===-- SBSection.h ---------------------------------------------*- C++ -*-===//
23e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton//
33e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton//                     The LLVM Compiler Infrastructure
43e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton//
53e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton// This file is distributed under the University of Illinois Open Source
63e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton// License. See LICENSE.TXT for details.
73e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton//
83e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton//===----------------------------------------------------------------------===//
93e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton
103e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton#ifndef LLDB_SBSection_h_
113e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton#define LLDB_SBSection_h_
123e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton
133e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton#include "lldb/API/SBDefines.h"
143e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton#include "lldb/API/SBData.h"
153e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton
163e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Claytonnamespace lldb {
173e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton
183e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Claytonclass SBSection
193e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton{
203e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Claytonpublic:
213e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton
223e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    SBSection ();
233e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton
243e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    SBSection (const lldb::SBSection &rhs);
253e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton
263e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    ~SBSection ();
273e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton
283e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    const lldb::SBSection &
293e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    operator = (const lldb::SBSection &rhs);
307dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton
313e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    bool
323e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    IsValid () const;
333e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton
34980c7500ca60ce7ee0917ea77bc9bb4563950c57Greg Clayton    const char *
35980c7500ca60ce7ee0917ea77bc9bb4563950c57Greg Clayton    GetName ();
36ba3ebe1d3e6d13c42f7e35ff715431573af65681Greg Clayton
37ba3ebe1d3e6d13c42f7e35ff715431573af65681Greg Clayton    lldb::SBSection
38ba3ebe1d3e6d13c42f7e35ff715431573af65681Greg Clayton    GetParent();
39ba3ebe1d3e6d13c42f7e35ff715431573af65681Greg Clayton
403e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    lldb::SBSection
413e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    FindSubSection (const char *sect_name);
423e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton
433e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    size_t
443e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    GetNumSubSections ();
453e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton
463e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    lldb::SBSection
473e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    GetSubSectionAtIndex (size_t idx);
483e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton
493e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    lldb::addr_t
503e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    GetFileAddress ();
513e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton
523e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    lldb::addr_t
535c5a38e7c640e9448241ec2aca0c60047ec3273cGreg Clayton    GetLoadAddress (lldb::SBTarget &target);
545c5a38e7c640e9448241ec2aca0c60047ec3273cGreg Clayton
555c5a38e7c640e9448241ec2aca0c60047ec3273cGreg Clayton    lldb::addr_t
563e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    GetByteSize ();
573e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton
583e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    uint64_t
593e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    GetFileOffset ();
603e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton
613e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    uint64_t
623e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    GetFileByteSize ();
633e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton
643e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    lldb::SBData
6515ef51e3bd8229d3779f96e08b25b26182c91c6cGreg Clayton    GetSectionData ();
663e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton
6715ef51e3bd8229d3779f96e08b25b26182c91c6cGreg Clayton    lldb::SBData
6815ef51e3bd8229d3779f96e08b25b26182c91c6cGreg Clayton    GetSectionData (uint64_t offset,
6915ef51e3bd8229d3779f96e08b25b26182c91c6cGreg Clayton                    uint64_t size);
7015ef51e3bd8229d3779f96e08b25b26182c91c6cGreg Clayton
713e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    SectionType
723e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    GetSectionType ();
733e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton
743e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    bool
753e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    operator == (const lldb::SBSection &rhs);
763e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton
773e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    bool
783e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    operator != (const lldb::SBSection &rhs);
793e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton
803e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    bool
813e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    GetDescription (lldb::SBStream &description);
823e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton
83ba3ebe1d3e6d13c42f7e35ff715431573af65681Greg Clayton
843e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Claytonprivate:
853e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton
863e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    friend class SBAddress;
873e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    friend class SBModule;
883e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    friend class SBTarget;
893e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton
903508c387c3f0c9ecc439d98048fd7694d41bab1bGreg Clayton    SBSection (const lldb::SectionSP &section_sp);
913e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton
923508c387c3f0c9ecc439d98048fd7694d41bab1bGreg Clayton    lldb::SectionSP
933508c387c3f0c9ecc439d98048fd7694d41bab1bGreg Clayton    GetSP() const;
943e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton
953e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton    void
963508c387c3f0c9ecc439d98048fd7694d41bab1bGreg Clayton    SetSP(const lldb::SectionSP &section_sp);
973e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton
983508c387c3f0c9ecc439d98048fd7694d41bab1bGreg Clayton    lldb::SectionWP m_opaque_wp;
993e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton};
1003e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton
1013e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton
1023e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton} // namespace lldb
1033e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton
1043e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton#endif // LLDB_SBSection_h_
105