DWARFAttribute.h revision d996d0c32b483c2190e1eb288cd3bbbd259c2960
1f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.com//===-- DWARFAttribute.h ----------------------------------------*- C++ -*-===// 2a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org// 3a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org// The LLVM Compiler Infrastructure 4a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org// 5a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org// This file is distributed under the University of Illinois Open Source 6a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org// License. See LICENSE.TXT for details. 7a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org// 8a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org//===----------------------------------------------------------------------===// 9a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org 10a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org#ifndef SymbolFileDWARF_DWARFAttribute_h_ 11a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org#define SymbolFileDWARF_DWARFAttribute_h_ 12a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org 13a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org#include "DWARFDefines.h" 14a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org#include <vector> 15a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org 16a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.orgclass DWARFAttribute 17a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org{ 18a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.orgpublic: 19a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org DWARFAttribute(dw_attr_t attr, dw_form_t form) : 20a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org m_attr_form ( attr << 16 | form ) 21a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org { 22a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org } 23a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org 24a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org void set(dw_attr_t attr, dw_form_t form) { m_attr_form = (attr << 16) | form; } 25a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org void set_attr(dw_attr_t attr) { m_attr_form = (m_attr_form & 0x0000ffffu) | (attr << 16); } 26a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org void set_form(dw_form_t form) { m_attr_form = (m_attr_form & 0xffff0000u) | form; } 27a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org dw_attr_t get_attr() const { return m_attr_form >> 16; } 28a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org dw_form_t get_form() const { return m_attr_form; } 29a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org void get(dw_attr_t& attr, dw_form_t& form) const 302e04b58f1dc7cee8fdf047b5dbc9dc93e767821dulan@chromium.org { 31a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org register uint32_t attr_form = m_attr_form; 321510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org attr = attr_form >> 16; 33a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org form = attr_form; 34a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org } 35a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org bool operator == (const DWARFAttribute& rhs) const { return m_attr_form == rhs.m_attr_form; } 36a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org typedef std::vector<DWARFAttribute> collection; 37a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org typedef collection::iterator iterator; 38a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org typedef collection::const_iterator const_iterator; 39a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org 407516f05132429850aa326421ed3e25f23b4c071blrn@chromium.orgprotected: 417516f05132429850aa326421ed3e25f23b4c071blrn@chromium.org uint32_t m_attr_form; // Upper 16 bits is attribute, lower 16 bits is form 42a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org}; 43a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org 44a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org 45a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org#endif // SymbolFileDWARF_DWARFAttribute_h_ 46a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org