src/core/model/make-event.cc
author Tom Henderson <tomh@tomh.org>
Fri, 18 Feb 2011 16:05:39 -0800
changeset 6821 203367ae7433
parent 6180 src/simulator/make-event.cc@cd0d8ba00e6c
child 9134 7a750f032acd
permissions -rw-r--r--
merge src/simulator into src/core; move src/core to new module layout
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3809
5e007004402e move MakeEvent out of Simulator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     1
#include "make-event.h"
5e007004402e move MakeEvent out of Simulator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     2
5e007004402e move MakeEvent out of Simulator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     3
namespace ns3 {
5e007004402e move MakeEvent out of Simulator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     4
6180
cd0d8ba00e6c coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3809
diff changeset
     5
EventImpl * MakeEvent (void (*f)(void))
3809
5e007004402e move MakeEvent out of Simulator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     6
{
5e007004402e move MakeEvent out of Simulator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     7
  // zero arg version
5e007004402e move MakeEvent out of Simulator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     8
  class EventFunctionImpl0 : public EventImpl
5e007004402e move MakeEvent out of Simulator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     9
  {
6180
cd0d8ba00e6c coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3809
diff changeset
    10
public:
3809
5e007004402e move MakeEvent out of Simulator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    11
    typedef void (*F)(void);
6180
cd0d8ba00e6c coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3809
diff changeset
    12
cd0d8ba00e6c coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3809
diff changeset
    13
    EventFunctionImpl0 (F function)
3809
5e007004402e move MakeEvent out of Simulator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    14
      : m_function (function)
6180
cd0d8ba00e6c coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3809
diff changeset
    15
    {
cd0d8ba00e6c coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3809
diff changeset
    16
    }
cd0d8ba00e6c coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3809
diff changeset
    17
    virtual ~EventFunctionImpl0 ()
cd0d8ba00e6c coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3809
diff changeset
    18
    {
3809
5e007004402e move MakeEvent out of Simulator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    19
    }
6180
cd0d8ba00e6c coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3809
diff changeset
    20
protected:
cd0d8ba00e6c coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3809
diff changeset
    21
    virtual void Notify (void)
cd0d8ba00e6c coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3809
diff changeset
    22
    {
cd0d8ba00e6c coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3809
diff changeset
    23
      (*m_function)();
cd0d8ba00e6c coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3809
diff changeset
    24
    }
cd0d8ba00e6c coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3809
diff changeset
    25
private:
cd0d8ba00e6c coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3809
diff changeset
    26
    F m_function;
3809
5e007004402e move MakeEvent out of Simulator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    27
  } *ev = new EventFunctionImpl0 (f);
5e007004402e move MakeEvent out of Simulator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    28
  return ev;
5e007004402e move MakeEvent out of Simulator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    29
}
5e007004402e move MakeEvent out of Simulator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    30
5e007004402e move MakeEvent out of Simulator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    31
} // namespace ns3