src/simulator/scheduler-list.cc
changeset 46 627df4c75852
parent 36 e622fb7a8262
child 53 ae406f4957d5
equal deleted inserted replaced
45:f963078c6e95 46:627df4c75852
    58 	return i;
    58 	return i;
    59 }
    59 }
    60 
    60 
    61 
    61 
    62 EventId
    62 EventId
    63 SchedulerList::insert (EventImpl *event, Scheduler::EventKey key)
    63 SchedulerList::real_insert (EventImpl *event, Scheduler::EventKey key)
    64 {
    64 {
    65 	Scheduler::EventKeyCompare compare;
    65 	Scheduler::EventKeyCompare compare;
    66 	for (EventsI i = m_events.begin (); i != m_events.end (); i++) {
    66 	for (EventsI i = m_events.begin (); i != m_events.end (); i++) {
    67 		if (compare (key, i->second)) {
    67 		if (compare (key, i->second)) {
    68 			m_events.insert (i, std::make_pair (event, key));
    68 			m_events.insert (i, std::make_pair (event, key));
    71 	}
    71 	}
    72 	m_events.push_back (std::make_pair (event, key));
    72 	m_events.push_back (std::make_pair (event, key));
    73 	return get_event_id (key, --(m_events.end ()));
    73 	return get_event_id (key, --(m_events.end ()));
    74 }
    74 }
    75 bool 
    75 bool 
    76 SchedulerList::is_empty (void) const
    76 SchedulerList::real_is_empty (void) const
    77 {
    77 {
    78 	return m_events.empty ();
    78 	return m_events.empty ();
    79 }
    79 }
    80 EventImpl *
    80 EventImpl *
    81 SchedulerList::peek_next (void) const
    81 SchedulerList::real_peek_next (void) const
    82 {
    82 {
    83 	assert (!is_empty ());
       
    84 	return m_events.front ().first;
    83 	return m_events.front ().first;
    85 }
    84 }
    86 Scheduler::EventKey
    85 Scheduler::EventKey
    87 SchedulerList::peek_next_key (void) const
    86 SchedulerList::real_peek_next_key (void) const
    88 {
    87 {
    89 	assert (!is_empty ());
       
    90 	return m_events.front ().second;
    88 	return m_events.front ().second;
    91 }
    89 }
    92 
    90 
    93 void
    91 void
    94 SchedulerList::remove_next (void)
    92 SchedulerList::real_remove_next (void)
    95 {
    93 {
    96 	m_events.pop_front ();
    94 	m_events.pop_front ();
    97 }
    95 }
    98 
    96 
    99 EventImpl *
    97 EventImpl *
   100 SchedulerList::remove (EventId id, Scheduler::EventKey *key)
    98 SchedulerList::real_remove (EventId id, Scheduler::EventKey *key)
   101 {
    99 {
   102 	EventsI i = get_iterator (id);
   100 	EventsI i = get_iterator (id);
   103 	*key = i->second;
   101 	*key = i->second;
   104 	assert (key->m_ns == id.get_ns () &&
   102 	assert (key->m_ns == id.get_ns () &&
   105 		key->m_uid == id.get_uid ());
   103 		key->m_uid == id.get_uid ());
   107 	m_events.erase (i);
   105 	m_events.erase (i);
   108 	return ev;
   106 	return ev;
   109 }
   107 }
   110 
   108 
   111 bool 
   109 bool 
   112 SchedulerList::is_valid (EventId id)
   110 SchedulerList::real_is_valid (EventId id)
   113 {
   111 {
   114 	EventsI i = get_iterator (id);
   112 	EventsI i = get_iterator (id);
   115 	Scheduler::EventKey key = i->second;
   113 	Scheduler::EventKey key = i->second;
   116 	return (key.m_ns == id.get_ns () &&
   114 	return (key.m_ns == id.get_ns () &&
   117 		key.m_uid == id.get_uid ());
   115 		key.m_uid == id.get_uid ());