1*993229b6Sjkunz /* 2*993229b6Sjkunz * File: Value.cpp 3*993229b6Sjkunz * 4*993229b6Sjkunz * Copyright (c) Freescale Semiconductor, Inc. All rights reserved. 5*993229b6Sjkunz * See included license file for license details. 6*993229b6Sjkunz */ 7*993229b6Sjkunz 8*993229b6Sjkunz #include "Value.h" 9*993229b6Sjkunz 10*993229b6Sjkunz using namespace elftosb; 11*993229b6Sjkunz 12*993229b6Sjkunz //! Returns a varying size depending on the word size attribute. 13*993229b6Sjkunz //! getSize() const14*993229b6Sjkunzsize_t SizedIntegerValue::getSize() const 15*993229b6Sjkunz { 16*993229b6Sjkunz switch (m_size) 17*993229b6Sjkunz { 18*993229b6Sjkunz case kWordSize: 19*993229b6Sjkunz return sizeof(uint32_t); 20*993229b6Sjkunz case kHalfWordSize: 21*993229b6Sjkunz return sizeof(uint16_t); 22*993229b6Sjkunz case kByteSize: 23*993229b6Sjkunz return sizeof(uint8_t); 24*993229b6Sjkunz } 25*993229b6Sjkunz return kWordSize; 26*993229b6Sjkunz } 27*993229b6Sjkunz 28*993229b6Sjkunz //! The resulting mask can be used to truncate the integer value to be 29*993229b6Sjkunz //! certain it doesn't extend beyond the associated word size. getWordSizeMask() const30*993229b6Sjkunzuint32_t SizedIntegerValue::getWordSizeMask() const 31*993229b6Sjkunz { 32*993229b6Sjkunz switch (m_size) 33*993229b6Sjkunz { 34*993229b6Sjkunz case kWordSize: 35*993229b6Sjkunz return 0xffffffff; 36*993229b6Sjkunz case kHalfWordSize: 37*993229b6Sjkunz return 0x0000ffff; 38*993229b6Sjkunz case kByteSize: 39*993229b6Sjkunz return 0x000000ff; 40*993229b6Sjkunz } 41*993229b6Sjkunz return 0; 42*993229b6Sjkunz } 43*993229b6Sjkunz 44