- Fix Dynamic* constructor to add them objects into the correct

vector
- Split push_back in constructors on two lines so the compiler warns
us if returned vectors are temporary objects, or do not match the
expected type


git-svn-id: svn://svn.gna.org/svn/sgpemv2/trunk@745 3ecf2c5c-341e-0410-92b4-d18e462d057c
This commit is contained in:
tchernobog 2006-07-09 15:48:24 +00:00
parent 301775debd
commit 0e79b163f3
4 changed files with 15 additions and 15 deletions

View File

@ -327,13 +327,7 @@ ConcreteHistory::add_thread(const Glib::ustring& name,
StaticProcess& parent_core = parent_process.get_core(); StaticProcess& parent_core = parent_process.get_core();
StaticThread* core = new StaticThread(name, parent_core, cpu_time, arrival_time, base_priority); StaticThread* core = new StaticThread(name, parent_core, cpu_time, arrival_time, base_priority);
DynamicThread* thread = new DynamicThread(core, &parent_process); DynamicThread* thread = new DynamicThread(core, &parent_process);
// modified 9/7/06 - ps
std::vector<StaticThread*>& sta_thr = parent_core.get_threads();
sta_thr.push_back(core);
std::vector<DynamicThread*>& dyn_thr = parent_process.get_dynamic_threads();
dyn_thr.push_back(thread);
notify_change(); notify_change();
return *thread; return *thread;
} }
@ -351,10 +345,7 @@ ConcreteHistory::add_request(Thread& owner,
StaticRequest* core = new StaticRequest(&owner_core, instant); StaticRequest* core = new StaticRequest(&owner_core, instant);
DynamicRequest* req = new DynamicRequest(core, &dyn_owner); DynamicRequest* req = new DynamicRequest(core, &dyn_owner);
// dyn_owner.get_requests().push_back(req); dyn_owner.get_requests().push_back(req);
// modified 9/7/06 - ps
dyn_owner.get_dynamic_requests().push_back(req);
owner_core.get_requests().push_back(core);
notify_change(); notify_change();
return *req; return *req;
@ -375,7 +366,7 @@ ConcreteHistory::add_subrequest(Request& request,
DynamicSubRequest* subreq = new DynamicSubRequest(core, &dyn_request); DynamicSubRequest* subreq = new DynamicSubRequest(core, &dyn_request);
dyn_request.get_subrequests().push_back(subreq); dyn_request.get_subrequests().push_back(subreq);
notify_change(); notify_change();
return *subreq; return *subreq;
} }

View File

@ -40,7 +40,10 @@ DynamicRequest::DynamicRequest(StaticRequest *core,
{ {
assert(core != NULL); assert(core != NULL);
assert(owner != NULL); assert(owner != NULL);
owner->get_requests().push_back(this); // Leave this line: it helps us with a compiler warning if
// the get_dynamic* method signature changes:
std::vector<DynamicRequest*>& siblings = owner->get_dynamic_requests();
siblings.push_back(this);
} }

View File

@ -35,7 +35,10 @@ DynamicSubRequest::DynamicSubRequest(StaticSubRequest* core,
_queue_position(-1) _queue_position(-1)
{ {
assert(core != NULL); assert(core != NULL);
owner->get_subrequests().push_back(this); // Leave this line: it helps us with a compiler warning if
// the get_dynamic* method signature changes:
std::vector<DynamicSubRequest*>& siblings = owner->get_dynamic_subrequests();
siblings.push_back(this);
} }

View File

@ -37,7 +37,10 @@ DynamicThread::DynamicThread(StaticThread* core, DynamicProcess* parent)
: DynamicSchedulable(), _core(core), _state(state_future), _parent(parent), : DynamicSchedulable(), _core(core), _state(state_future), _parent(parent),
_ran_for(0), _last_acquisition(-1), _last_release(-1) _ran_for(0), _last_acquisition(-1), _last_release(-1)
{ {
parent->get_threads().push_back(this); // Leave this line: it helps us with a compiler warning if
// the get_dynamic* method signature changes:
std::vector<DynamicThread*>& siblings = parent->get_dynamic_threads();
siblings.push_back(this);
} }
DynamicThread::DynamicThread(const DynamicThread &other) : DynamicThread::DynamicThread(const DynamicThread &other) :