https://github.com/PublicHealthDynamicsLab/FRED
Revision a45e04ad99c865724a3c2b1a2d3fd979b3c6be88 authored by John Grefenstette on 07 January 2016, 16:32:02 UTC, committed by John Grefenstette on 07 January 2016, 16:32:02 UTC
1 parent 9bc2dce
Tip revision: a45e04ad99c865724a3c2b1a2d3fd979b3c6be88 authored by John Grefenstette on 07 January 2016, 16:32:02 UTC
working markov epidemic model
working markov epidemic model
Tip revision: a45e04a
Events.cc
/*
This file is part of the FRED system.
Copyright (c) 2010-2015, University of Pittsburgh, John Grefenstette,
Shawn Brown, Roni Rosenfield, Alona Fyshe, David Galloway, Nathan
Stone, Jay DePasse, Anuroop Sriram, and Donald Burke.
Licensed under the BSD 3-Clause license. See the file "LICENSE" for
more information.
*/
//
//
// File: Events.cc
//
#include "Events.h"
Events::Events() {
for (int day = 0; day < MAX_DAYS; ++day) {
clear_events(day);
}
}
void Events::add_event(int day, event_t item) {
if (day < 0 || MAX_DAYS <= day) {
// won't happen during this simulation
return;
}
if(this->events[day].size() == this->events[day].capacity()) {
if(events[day].capacity() < 4) {
this->events[day].reserve(4);
}
this->events[day].reserve(2 * this->events[day].capacity());
}
this->events[day].push_back(item);
// printf("\nadd_event day %d new size %d\n", day, get_size(day));
// print_events(day);
}
void Events::delete_event(int day, event_t item) {
if (day < 0 || MAX_DAYS <= day) {
// won't happen during this simulation
return;
}
// find item in the list
int size = get_size(day);
for(int pos = 0; pos < size; ++pos) {
if(this->events[day][pos] == item) {
// copy last item in list into this slot
this->events[day][pos] = this->events[day].back();
// delete last slot
this->events[day].pop_back();
// printf("\ndelete_event day %d final size %d\n", day, get_size(day));
// print_events(day);
return;
}
}
// item not found
printf("delete_events: item not found\n");
assert(false);
}
void Events::clear_events(int day) {
assert(0 <= day && day < MAX_DAYS);
this->events[day] = events_t();
// printf("clear_events day %d size %d\n", day, get_size(day));
}
int Events::get_size(int day) {
assert(0 <= day && day < MAX_DAYS);
return static_cast<int>(this->events[day].size());
}
event_t Events::get_event(int day, int i) {
assert(0 <= day && day < MAX_DAYS);
assert(0 <= i && i < static_cast<int>(this->events[day].size()));
return this->events[day][i];
}
void Events::print_events(FILE* fp, int day) {
assert(0 <= day && day < MAX_DAYS);
events_itr_t itr_end = this->events[day].end();
fprintf(fp, "events[%d] = %d : ", day, get_size(day));
for (events_itr_t itr = events[day].begin(); itr != itr_end; ++itr) {
// fprintf(fp, "id %d age %d ", (*itr)->get_id(), (*itr)->get_age());
}
fprintf(fp,"\n");
fflush(fp);
}
void Events::print_events(int day) {
print_events(stdout, day);
}
Computing file changes ...