DataBlock.hh (7454:3a3e8e8cce1b) | DataBlock.hh (8090:722a0d28ee83) |
---|---|
1/* 2 * Copyright (c) 1999-2008 Mark D. Hill and David A. Wood 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions are 7 * met: redistributions of source code must retain the above copyright 8 * notice, this list of conditions and the following disclaimer; --- 19 unchanged lines hidden (view full) --- 28 29#ifndef __MEM_RUBY_COMMON_DATABLOCK_HH__ 30#define __MEM_RUBY_COMMON_DATABLOCK_HH__ 31 32#include <iomanip> 33#include <iostream> 34 35#include "mem/ruby/common/Global.hh" | 1/* 2 * Copyright (c) 1999-2008 Mark D. Hill and David A. Wood 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions are 7 * met: redistributions of source code must retain the above copyright 8 * notice, this list of conditions and the following disclaimer; --- 19 unchanged lines hidden (view full) --- 28 29#ifndef __MEM_RUBY_COMMON_DATABLOCK_HH__ 30#define __MEM_RUBY_COMMON_DATABLOCK_HH__ 31 32#include <iomanip> 33#include <iostream> 34 35#include "mem/ruby/common/Global.hh" |
36#include "mem/ruby/system/System.hh" | |
37 38class DataBlock 39{ 40 public: 41 DataBlock() 42 { 43 alloc(); 44 } 45 | 36 37class DataBlock 38{ 39 public: 40 DataBlock() 41 { 42 alloc(); 43 } 44 |
46 DataBlock(const DataBlock &cp) 47 { 48 m_data = new uint8[RubySystem::getBlockSizeBytes()]; 49 memcpy(m_data, cp.m_data, RubySystem::getBlockSizeBytes()); 50 m_alloc = true; 51 } | 45 DataBlock(const DataBlock &cp); |
52 53 ~DataBlock() 54 { 55 if (m_alloc) 56 delete [] m_data; 57 } 58 59 DataBlock& operator=(const DataBlock& obj); --- 20 unchanged lines hidden (view full) --- 80{ 81 if (m_alloc) { 82 delete [] m_data; 83 } 84 m_data = data; 85 m_alloc = false; 86} 87 | 46 47 ~DataBlock() 48 { 49 if (m_alloc) 50 delete [] m_data; 51 } 52 53 DataBlock& operator=(const DataBlock& obj); --- 20 unchanged lines hidden (view full) --- 74{ 75 if (m_alloc) { 76 delete [] m_data; 77 } 78 m_data = data; 79 m_alloc = false; 80} 81 |
88inline void 89DataBlock::alloc() 90{ 91 m_data = new uint8[RubySystem::getBlockSizeBytes()]; 92 m_alloc = true; 93 clear(); 94} 95 96inline void 97DataBlock::clear() 98{ 99 memset(m_data, 0, RubySystem::getBlockSizeBytes()); 100} 101 102inline bool 103DataBlock::equal(const DataBlock& obj) const 104{ 105 return !memcmp(m_data, obj.m_data, RubySystem::getBlockSizeBytes()); 106} 107 108inline void 109DataBlock::print(std::ostream& out) const 110{ 111 using namespace std; 112 113 int size = RubySystem::getBlockSizeBytes(); 114 out << "[ "; 115 for (int i = 0; i < size; i++) { 116 out << setw(2) << setfill('0') << hex << "0x" << (int)m_data[i] << " "; 117 out << setfill(' '); 118 } 119 out << dec << "]" << flush; 120} 121 | |
122inline uint8 123DataBlock::getByte(int whichByte) const 124{ 125 return m_data[whichByte]; 126} 127 | 82inline uint8 83DataBlock::getByte(int whichByte) const 84{ 85 return m_data[whichByte]; 86} 87 |
128inline const uint8* 129DataBlock::getData(int offset, int len) const 130{ 131 assert(offset + len <= RubySystem::getBlockSizeBytes()); 132 return &m_data[offset]; 133} 134 | |
135inline void 136DataBlock::setByte(int whichByte, uint8 data) 137{ 138 m_data[whichByte] = data; 139} 140 141inline void | 88inline void 89DataBlock::setByte(int whichByte, uint8 data) 90{ 91 m_data[whichByte] = data; 92} 93 94inline void |
142DataBlock::setData(uint8* data, int offset, int len) 143{ 144 assert(offset + len <= RubySystem::getBlockSizeBytes()); 145 memcpy(&m_data[offset], data, len); 146} 147 148inline void | |
149DataBlock::copyPartial(const DataBlock & dblk, int offset, int len) 150{ 151 setData(&dblk.m_data[offset], offset, len); 152} 153 154inline std::ostream& 155operator<<(std::ostream& out, const DataBlock& obj) 156{ --- 12 unchanged lines hidden --- | 95DataBlock::copyPartial(const DataBlock & dblk, int offset, int len) 96{ 97 setData(&dblk.m_data[offset], offset, len); 98} 99 100inline std::ostream& 101operator<<(std::ostream& out, const DataBlock& obj) 102{ --- 12 unchanged lines hidden --- |