2 #include "event/Block.h"
6 MemoryBlock
*Memory::get_block(Word address
) const {
7 for(block_set_t::const_iterator i
= block_set
.begin(); i
!= block_set
.end(); i
++) {
8 if((*i
)->get_address() == address
) return *i
;
13 void Memory::remove_block(MemoryBlock
*block
) {
14 for(block_set_t::iterator i
= block_set
.begin(); i
!= block_set
.end(); i
++) {
15 if((*i
) != block
) continue;
21 void Memory::handle_event(Event::BasicEvent
*event
) {
22 if(event
->get_type() == Event::BasicEvent::BLOCK_EVENT
) {
23 Event::Block
*be
= dynamic_cast<Event::Block
*>(event
);
24 switch(be
->get_block_type()) {
25 case Event::Block::ALLOC_EVENT
:
26 add_block(new MemoryBlock(be
->get_address(), be
->get_size()));
28 case Event::Block::FREE_EVENT
:
29 remove_block(get_block(be
->get_address()));
31 case Event::Block::REALLOC_EVENT
:
32 MemoryBlock
*block
= get_block(be
->get_address());
33 block
->set_address(be
->get_new_address());
34 block
->set_size(be
->get_size());
40 } // namespace Tracker