Serenity Operating System
at master 49 lines 1.2 kB view raw
1/* 2 * Copyright (c) 2021, Daniel Bertalan <dani@danielbertalan.dev> 3 * 4 * SPDX-License-Identifier: BSD-2-Clause 5 */ 6 7#include "AttributeValue.h" 8#include "CompilationUnit.h" 9 10namespace Debug::Dwarf { 11 12ErrorOr<FlatPtr> AttributeValue::as_addr() const 13{ 14 switch (m_form) { 15 case AttributeDataForm::Addr: 16 return m_data.as_addr; 17 case AttributeDataForm::AddrX: 18 case AttributeDataForm::AddrX1: 19 case AttributeDataForm::AddrX2: 20 case AttributeDataForm::AddrX3: 21 case AttributeDataForm::AddrX4: { 22 auto index = m_data.as_unsigned; 23 return m_compilation_unit->get_address(index); 24 } 25 default: 26 VERIFY_NOT_REACHED(); 27 } 28} 29 30ErrorOr<char const*> AttributeValue::as_string() const 31{ 32 switch (m_form) { 33 case AttributeDataForm::String: 34 case AttributeDataForm::StringPointer: 35 case AttributeDataForm::LineStrP: 36 return m_data.as_string; 37 case AttributeDataForm::StrX: 38 case AttributeDataForm::StrX1: 39 case AttributeDataForm::StrX2: 40 case AttributeDataForm::StrX3: 41 case AttributeDataForm::StrX4: { 42 auto index = m_data.as_unsigned; 43 return m_compilation_unit->get_string(index); 44 } 45 default: 46 VERIFY_NOT_REACHED(); 47 } 48} 49}