//===-- DWARFDebugMacinfoEntry.h --------------------------------*- C++ -*-===//
//
//                     The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//

#ifndef SymbolFileDWARF_DWARFDebugMacinfoEntry_h_
#define SymbolFileDWARF_DWARFDebugMacinfoEntry_h_

#include "SymbolFileDWARF.h"

class DWARFDebugMacinfoEntry
{
public:
    DWARFDebugMacinfoEntry();

    ~DWARFDebugMacinfoEntry();

    uint8_t
    TypeCode() const
    {
        return m_type_code;
    }

    uint8_t
    GetLineNumber() const
    {
        return m_line;
    }

    void
    Dump(lldb_private::Stream *s) const;

    const char*
    GetCString() const;

    bool
    Extract(const lldb_private::DWARFDataExtractor& mac_info_data,
            lldb::offset_t* offset_ptr);

protected:

private:
    uint8_t m_type_code;
    dw_uleb128_t m_line;
    union
    {
        dw_uleb128_t file_idx;
        const char* cstr;
    } m_op2;
};


#endif  // SymbolFileDWARF_DWARFDebugMacinfoEntry_h_
