src/simulator/simulator.h
author Craig Dowell <craigdo@ee.washington.edu>
Fri, 10 Oct 2008 16:22:13 -0700
changeset 3798 898d8a14b88f
parent 3796 75c6a3d424d9
child 3801 dc1f5e534e56
permissions -rw-r--r--
add dangerous realtime scheduling methods in an intentionally harder to find and use way
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
     1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     2
/*
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     3
 * Copyright (c) 2005 INRIA
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     4
 *
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     6
 * it under the terms of the GNU General Public License version 2 as
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     7
 * published by the Free Software Foundation;
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     8
 *
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    12
 * GNU General Public License for more details.
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    13
 *
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    14
 * You should have received a copy of the GNU General Public License
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    15
 * along with this program; if not, write to the Free Software
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    16
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    17
 *
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    18
 * Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    19
 */
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    20
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    21
#ifndef SIMULATOR_H
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    22
#define SIMULATOR_H
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    23
25
9b3bb088c560 first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 24
diff changeset
    24
#include "event-id.h"
9b3bb088c560 first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 24
diff changeset
    25
#include "event-impl.h"
108
6fd2357377ed rename time.h to nstime.h
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 100
diff changeset
    26
#include "nstime.h"
2559
ab98bf436a17 do not use DefaultValues in simulator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1863
diff changeset
    27
#include "scheduler.h"
3470
21022872009d make simulator implementation replaceable via global default value
Craig Dowell <craigdo@ee.washington.edu>
parents: 3469
diff changeset
    28
947
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
    29
#include "ns3/type-traits.h"
3489
b5ef00370c70 bug 252: get rid of dead code.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3470
diff changeset
    30
#include "ns3/deprecated.h"
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    31
3470
21022872009d make simulator implementation replaceable via global default value
Craig Dowell <craigdo@ee.washington.edu>
parents: 3469
diff changeset
    32
#include <stdint.h>
21022872009d make simulator implementation replaceable via global default value
Craig Dowell <craigdo@ee.washington.edu>
parents: 3469
diff changeset
    33
#include <string>
21022872009d make simulator implementation replaceable via global default value
Craig Dowell <craigdo@ee.washington.edu>
parents: 3469
diff changeset
    34
16
99e833adbb46 change yans namespace to ns3
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 9
diff changeset
    35
namespace ns3 {
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    36
3469
9e763021e045 factor simulator into interface and (multiple) implementation pieces
Craig Dowell <craigdo@ee.washington.edu>
parents: 3390
diff changeset
    37
class SimulatorImpl;
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    38
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    39
/**
3182
61fe7fe81ebd Doxygen organization
Tom Henderson <tomh@tomh.org>
parents: 3174
diff changeset
    40
 * \ingroup simulator
61fe7fe81ebd Doxygen organization
Tom Henderson <tomh@tomh.org>
parents: 3174
diff changeset
    41
 *
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    42
 * \brief Control the scheduling of simulation events. 
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    43
 *
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    44
 * The internal simulation clock is maintained
682
d876b6dfb32e more dox improvements
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 679
diff changeset
    45
 * as a 64-bit integer in a unit specified by the user
d876b6dfb32e more dox improvements
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 679
diff changeset
    46
 * through the TimeStepPrecision::Set function. This means that it is
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    47
 * not possible to specify event expiration times with anything better
682
d876b6dfb32e more dox improvements
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 679
diff changeset
    48
 * than this user-specified accuracy. Events whose expiration time is
d876b6dfb32e more dox improvements
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 679
diff changeset
    49
 * the same modulo this accuracy are scheduled in FIFO order: the 
d876b6dfb32e more dox improvements
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 679
diff changeset
    50
 * first event inserted in the scheduling queue is scheduled to 
d876b6dfb32e more dox improvements
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 679
diff changeset
    51
 * expire first.
84
63b3ed9ce4e4 integrate sample code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 76
diff changeset
    52
 * 
63b3ed9ce4e4 integrate sample code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 76
diff changeset
    53
 * A simple example of how to use the Simulator class to schedule events
63b3ed9ce4e4 integrate sample code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 76
diff changeset
    54
 * is shown below:
63b3ed9ce4e4 integrate sample code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 76
diff changeset
    55
 * \include samples/main-simulator.cc
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    56
 */
3390
5caa582619ec kill dead unimplemented API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3369
diff changeset
    57
class Simulator 
5caa582619ec kill dead unimplemented API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3369
diff changeset
    58
{
3798
898d8a14b88f add dangerous realtime scheduling methods in an intentionally harder to find and use way
Craig Dowell <craigdo@ee.washington.edu>
parents: 3796
diff changeset
    59
  friend class RealtimeSimulatorExtension;
898d8a14b88f add dangerous realtime scheduling methods in an intentionally harder to find and use way
Craig Dowell <craigdo@ee.washington.edu>
parents: 3796
diff changeset
    60
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    61
public:
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
    62
  /**
3470
21022872009d make simulator implementation replaceable via global default value
Craig Dowell <craigdo@ee.washington.edu>
parents: 3469
diff changeset
    63
   * \param impl a new simulator implementation
21022872009d make simulator implementation replaceable via global default value
Craig Dowell <craigdo@ee.washington.edu>
parents: 3469
diff changeset
    64
   *
21022872009d make simulator implementation replaceable via global default value
Craig Dowell <craigdo@ee.washington.edu>
parents: 3469
diff changeset
    65
   * The simulator provides a mechanism to swap out different implementations.
21022872009d make simulator implementation replaceable via global default value
Craig Dowell <craigdo@ee.washington.edu>
parents: 3469
diff changeset
    66
   * For example, the default implementation is a single-threaded simulator
21022872009d make simulator implementation replaceable via global default value
Craig Dowell <craigdo@ee.washington.edu>
parents: 3469
diff changeset
    67
   * that performs no realtime synchronization.  By calling this method, you
21022872009d make simulator implementation replaceable via global default value
Craig Dowell <craigdo@ee.washington.edu>
parents: 3469
diff changeset
    68
   * can substitute in a new simulator implementation that might be multi-
21022872009d make simulator implementation replaceable via global default value
Craig Dowell <craigdo@ee.washington.edu>
parents: 3469
diff changeset
    69
   * threaded and synchronize events to a realtime clock.
21022872009d make simulator implementation replaceable via global default value
Craig Dowell <craigdo@ee.washington.edu>
parents: 3469
diff changeset
    70
   *
21022872009d make simulator implementation replaceable via global default value
Craig Dowell <craigdo@ee.washington.edu>
parents: 3469
diff changeset
    71
   * The simulator implementation can be set when the simulator is not 
21022872009d make simulator implementation replaceable via global default value
Craig Dowell <craigdo@ee.washington.edu>
parents: 3469
diff changeset
    72
   * running.
21022872009d make simulator implementation replaceable via global default value
Craig Dowell <craigdo@ee.washington.edu>
parents: 3469
diff changeset
    73
   */
21022872009d make simulator implementation replaceable via global default value
Craig Dowell <craigdo@ee.washington.edu>
parents: 3469
diff changeset
    74
  static void SetImplementation (Ptr<SimulatorImpl> impl);
21022872009d make simulator implementation replaceable via global default value
Craig Dowell <craigdo@ee.washington.edu>
parents: 3469
diff changeset
    75
21022872009d make simulator implementation replaceable via global default value
Craig Dowell <craigdo@ee.washington.edu>
parents: 3469
diff changeset
    76
  /**
3188
080e43146c47 fix a couple of XXX
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3182
diff changeset
    77
   * \param scheduler a new event scheduler
080e43146c47 fix a couple of XXX
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3182
diff changeset
    78
   *
080e43146c47 fix a couple of XXX
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3182
diff changeset
    79
   * The event scheduler can be set at any time: the events scheduled
080e43146c47 fix a couple of XXX
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3182
diff changeset
    80
   * in the previous scheduler will be transfered to the new scheduler
080e43146c47 fix a couple of XXX
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3182
diff changeset
    81
   * before we start to use it.
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
    82
   */
2559
ab98bf436a17 do not use DefaultValues in simulator
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1863
diff changeset
    83
  static void SetScheduler (Ptr<Scheduler> scheduler);
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    84
3489
b5ef00370c70 bug 252: get rid of dead code.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3470
diff changeset
    85
  static void EnableLogTo (char const *filename) NS_DEPRECATED;
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    86
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
    87
  /**
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
    88
   * Every event scheduled by the Simulator::insertAtDestroy method is
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
    89
   * invoked. Then, we ensure that any memory allocated by the 
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
    90
   * Simulator is freed.
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
    91
   * This method is typically invoked at the end of a simulation
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
    92
   * to avoid false-positive reports by a leak checker.
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
    93
   * After this method has been invoked, it is actually possible
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
    94
   * to restart a new simulation with a set of calls to Simulator::run
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
    95
   * and Simulator::insert_*.
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
    96
   */
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
    97
  static void Destroy (void);
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    98
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
    99
  /**
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   100
   * If there any any events lefts to be scheduled, return
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   101
   * true. Return false otherwise.
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   102
   */
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   103
  static bool IsFinished (void);
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   104
  /**
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   105
   * If Simulator::isFinished returns true, the behavior of this
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   106
   * method is undefined. Otherwise, it returns the microsecond-based
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   107
   * time of the next event expected to be scheduled.
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   108
   */
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   109
  static Time Next (void);
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   110
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   111
  /**
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   112
   * Run the simulation until one of:
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   113
   *   - no events are present anymore
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   114
   *   - the user called Simulator::stop
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   115
   *   - the user called Simulator::stopAtUs and the
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   116
   *     expiration time of the next event to be processed
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   117
   *     is greater than or equal to the stop time.
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   118
   */
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   119
  static void Run (void);
3470
21022872009d make simulator implementation replaceable via global default value
Craig Dowell <craigdo@ee.washington.edu>
parents: 3469
diff changeset
   120
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   121
  /**
3515
88e9cee20461 Bug #270: Simulator::RunOneEvent
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 3489
diff changeset
   122
   * Process only the next simulation event, then return immediately.
88e9cee20461 Bug #270: Simulator::RunOneEvent
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 3489
diff changeset
   123
   */
88e9cee20461 Bug #270: Simulator::RunOneEvent
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 3489
diff changeset
   124
  static void RunOneEvent (void);
88e9cee20461 Bug #270: Simulator::RunOneEvent
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 3489
diff changeset
   125
88e9cee20461 Bug #270: Simulator::RunOneEvent
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 3489
diff changeset
   126
  /**
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   127
   * If an event invokes this method, it will be the last
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   128
   * event scheduled by the Simulator::run method before
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   129
   * returning to the caller.
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   130
   */
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   131
  static void Stop (void);
3470
21022872009d make simulator implementation replaceable via global default value
Craig Dowell <craigdo@ee.washington.edu>
parents: 3469
diff changeset
   132
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   133
  /**
3174
efeb6e5c276d Make Application::Start/Stop times relative, Simulator::StopAt(time) renamed to Simulator::Stop(time) and time also made relative, to improve consistency of the API which uses relative times everywhere else. Closes bug #191.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 2901
diff changeset
   134
   * Force the Simulator::run method to return to the caller when the
efeb6e5c276d Make Application::Start/Stop times relative, Simulator::StopAt(time) renamed to Simulator::Stop(time) and time also made relative, to improve consistency of the API which uses relative times everywhere else. Closes bug #191.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 2901
diff changeset
   135
   * expiration time of the next event to be processed is greater than
efeb6e5c276d Make Application::Start/Stop times relative, Simulator::StopAt(time) renamed to Simulator::Stop(time) and time also made relative, to improve consistency of the API which uses relative times everywhere else. Closes bug #191.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 2901
diff changeset
   136
   * or equal to the stop time.  The stop time is relative to the
efeb6e5c276d Make Application::Start/Stop times relative, Simulator::StopAt(time) renamed to Simulator::Stop(time) and time also made relative, to improve consistency of the API which uses relative times everywhere else. Closes bug #191.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 2901
diff changeset
   137
   * current simulation time.
efeb6e5c276d Make Application::Start/Stop times relative, Simulator::StopAt(time) renamed to Simulator::Stop(time) and time also made relative, to improve consistency of the API which uses relative times everywhere else. Closes bug #191.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 2901
diff changeset
   138
   * @param time the stop time, relative to the current time.
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   139
   */
3174
efeb6e5c276d Make Application::Start/Stop times relative, Simulator::StopAt(time) renamed to Simulator::Stop(time) and time also made relative, to improve consistency of the API which uses relative times everywhere else. Closes bug #191.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 2901
diff changeset
   140
  static void Stop (Time const &time);
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   141
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   142
  /**
3796
75c6a3d424d9 make simulator schedule calls explicitly relative throughout. fixes multithread problem in realtime simulator
Craig Dowell <craigdo@ee.washington.edu>
parents: 3515
diff changeset
   143
   * Schedule an event to expire at the relative time "time"
75c6a3d424d9 make simulator schedule calls explicitly relative throughout. fixes multithread problem in realtime simulator
Craig Dowell <craigdo@ee.washington.edu>
parents: 3515
diff changeset
   144
   * is reached.  This can be thought of as scheduling an event
75c6a3d424d9 make simulator schedule calls explicitly relative throughout. fixes multithread problem in realtime simulator
Craig Dowell <craigdo@ee.washington.edu>
parents: 3515
diff changeset
   145
   * for the current simulation time plus the Time passed as a
75c6a3d424d9 make simulator schedule calls explicitly relative throughout. fixes multithread problem in realtime simulator
Craig Dowell <craigdo@ee.washington.edu>
parents: 3515
diff changeset
   146
   * parameter
75c6a3d424d9 make simulator schedule calls explicitly relative throughout. fixes multithread problem in realtime simulator
Craig Dowell <craigdo@ee.washington.edu>
parents: 3515
diff changeset
   147
   *
75c6a3d424d9 make simulator schedule calls explicitly relative throughout. fixes multithread problem in realtime simulator
Craig Dowell <craigdo@ee.washington.edu>
parents: 3515
diff changeset
   148
   * When the event expires (when it becomes due to be run), the 
75c6a3d424d9 make simulator schedule calls explicitly relative throughout. fixes multithread problem in realtime simulator
Craig Dowell <craigdo@ee.washington.edu>
parents: 3515
diff changeset
   149
   * input method will be invoked on the input object.  
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   150
   *
345
47b41507a45a move channel.cc channel.h to node directory; merge ns-3-tracing from mathieu
Tom Henderson <tomh@tomh.org>
parents: 160
diff changeset
   151
   * @param time the relative expiration time of the event.
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   152
   * @param mem_ptr member method pointer to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   153
   * @param obj the object on which to invoke the member method
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   154
   * @returns an id for the scheduled event.
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   155
   */
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   156
  template <typename MEM, typename OBJ>
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   157
  static EventId Schedule (Time const &time, MEM mem_ptr, OBJ obj);
3470
21022872009d make simulator implementation replaceable via global default value
Craig Dowell <craigdo@ee.washington.edu>
parents: 3469
diff changeset
   158
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   159
  /**
345
47b41507a45a move channel.cc channel.h to node directory; merge ns-3-tracing from mathieu
Tom Henderson <tomh@tomh.org>
parents: 160
diff changeset
   160
   * @param time the relative expiration time of the event.
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   161
   * @param mem_ptr member method pointer to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   162
   * @param obj the object on which to invoke the member method
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   163
   * @param a1 the first argument to pass to the invoked method
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   164
   * @returns an id for the scheduled event.
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   165
   */
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   166
  template <typename MEM, typename OBJ, typename T1>
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   167
  static EventId Schedule (Time const &time, MEM mem_ptr, OBJ obj, T1 a1);
3470
21022872009d make simulator implementation replaceable via global default value
Craig Dowell <craigdo@ee.washington.edu>
parents: 3469
diff changeset
   168
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   169
  /**
345
47b41507a45a move channel.cc channel.h to node directory; merge ns-3-tracing from mathieu
Tom Henderson <tomh@tomh.org>
parents: 160
diff changeset
   170
   * @param time the relative expiration time of the event.
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   171
   * @param mem_ptr member method pointer to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   172
   * @param obj the object on which to invoke the member method
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   173
   * @param a1 the first argument to pass to the invoked method
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   174
   * @param a2 the second argument to pass to the invoked method
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   175
   * @returns an id for the scheduled event.
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   176
   */
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   177
  template <typename MEM, typename OBJ, typename T1, typename T2>
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   178
  static EventId Schedule (Time const &time, MEM mem_ptr, OBJ obj, T1 a1, T2 a2);
3470
21022872009d make simulator implementation replaceable via global default value
Craig Dowell <craigdo@ee.washington.edu>
parents: 3469
diff changeset
   179
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   180
  /**
345
47b41507a45a move channel.cc channel.h to node directory; merge ns-3-tracing from mathieu
Tom Henderson <tomh@tomh.org>
parents: 160
diff changeset
   181
   * @param time the relative expiration time of the event.
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   182
   * @param mem_ptr member method pointer to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   183
   * @param obj the object on which to invoke the member method
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   184
   * @param a1 the first argument to pass to the invoked method
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   185
   * @param a2 the second argument to pass to the invoked method
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   186
   * @param a3 the third argument to pass to the invoked method
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   187
   * @returns an id for the scheduled event.
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   188
   */
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   189
  template <typename MEM, typename OBJ, 
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
   190
            typename T1, typename T2, typename T3>
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   191
  static EventId Schedule (Time const &time, MEM mem_ptr, OBJ obj, T1 a1, T2 a2, T3 a3);
3470
21022872009d make simulator implementation replaceable via global default value
Craig Dowell <craigdo@ee.washington.edu>
parents: 3469
diff changeset
   192
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   193
  /**
345
47b41507a45a move channel.cc channel.h to node directory; merge ns-3-tracing from mathieu
Tom Henderson <tomh@tomh.org>
parents: 160
diff changeset
   194
   * @param time the relative expiration time of the event.
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   195
   * @param mem_ptr member method pointer to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   196
   * @param obj the object on which to invoke the member method
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   197
   * @param a1 the first argument to pass to the invoked method
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   198
   * @param a2 the second argument to pass to the invoked method
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   199
   * @param a3 the third argument to pass to the invoked method
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   200
   * @param a4 the fourth argument to pass to the invoked method
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   201
   * @returns an id for the scheduled event.
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   202
   */
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   203
  template <typename MEM, typename OBJ, 
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
   204
            typename T1, typename T2, typename T3, typename T4>
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   205
  static EventId Schedule (Time const &time, MEM mem_ptr, OBJ obj, T1 a1, T2 a2, T3 a3, T4 a4);
3470
21022872009d make simulator implementation replaceable via global default value
Craig Dowell <craigdo@ee.washington.edu>
parents: 3469
diff changeset
   206
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   207
  /**
345
47b41507a45a move channel.cc channel.h to node directory; merge ns-3-tracing from mathieu
Tom Henderson <tomh@tomh.org>
parents: 160
diff changeset
   208
   * @param time the relative expiration time of the event.
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   209
   * @param mem_ptr member method pointer to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   210
   * @param obj the object on which to invoke the member method
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   211
   * @param a1 the first argument to pass to the invoked method
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   212
   * @param a2 the second argument to pass to the invoked method
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   213
   * @param a3 the third argument to pass to the invoked method
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   214
   * @param a4 the fourth argument to pass to the invoked method
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   215
   * @param a5 the fifth argument to pass to the invoked method
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   216
   * @returns an id for the scheduled event.
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   217
   */
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   218
  template <typename MEM, typename OBJ, 
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
   219
            typename T1, typename T2, typename T3, typename T4, typename T5>
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   220
  static EventId Schedule (Time const &time, MEM mem_ptr, OBJ obj, 
690
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 682
diff changeset
   221
                           T1 a1, T2 a2, T3 a3, T4 a4, T5 a5);
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   222
  /**
345
47b41507a45a move channel.cc channel.h to node directory; merge ns-3-tracing from mathieu
Tom Henderson <tomh@tomh.org>
parents: 160
diff changeset
   223
   * @param time the relative expiration time of the event.
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   224
   * @param f the function to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   225
   * @returns an id for the scheduled event.
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   226
   */
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   227
  static EventId Schedule (Time const &time, void (*f) (void));
3470
21022872009d make simulator implementation replaceable via global default value
Craig Dowell <craigdo@ee.washington.edu>
parents: 3469
diff changeset
   228
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   229
  /**
345
47b41507a45a move channel.cc channel.h to node directory; merge ns-3-tracing from mathieu
Tom Henderson <tomh@tomh.org>
parents: 160
diff changeset
   230
   * @param time the relative expiration time of the event.
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   231
   * @param f the function to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   232
   * @param a1 the first argument to pass to the function to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   233
   * @returns an id for the scheduled event.
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   234
   */
947
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   235
  template <typename U1, typename T1>
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   236
  static EventId Schedule (Time const &time, void (*f) (U1), T1 a1);
3470
21022872009d make simulator implementation replaceable via global default value
Craig Dowell <craigdo@ee.washington.edu>
parents: 3469
diff changeset
   237
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   238
  /**
345
47b41507a45a move channel.cc channel.h to node directory; merge ns-3-tracing from mathieu
Tom Henderson <tomh@tomh.org>
parents: 160
diff changeset
   239
   * @param time the relative expiration time of the event.
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   240
   * @param f the function to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   241
   * @param a1 the first argument to pass to the function to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   242
   * @param a2 the second argument to pass to the function to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   243
   * @returns an id for the scheduled event.
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   244
   */
947
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   245
  template <typename U1, typename U2, typename T1, typename T2>
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   246
  static EventId Schedule (Time const &time, void (*f) (U1,U2), T1 a1, T2 a2);
3470
21022872009d make simulator implementation replaceable via global default value
Craig Dowell <craigdo@ee.washington.edu>
parents: 3469
diff changeset
   247
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   248
  /**
345
47b41507a45a move channel.cc channel.h to node directory; merge ns-3-tracing from mathieu
Tom Henderson <tomh@tomh.org>
parents: 160
diff changeset
   249
   * @param time the relative expiration time of the event.
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   250
   * @param f the function to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   251
   * @param a1 the first argument to pass to the function to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   252
   * @param a2 the second argument to pass to the function to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   253
   * @param a3 the third argument to pass to the function to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   254
   * @returns an id for the scheduled event.
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   255
   */
947
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   256
  template <typename U1, typename U2, typename U3, typename T1, typename T2, typename T3>
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   257
  static EventId Schedule (Time const &time, void (*f) (U1,U2,U3), T1 a1, T2 a2, T3 a3);
3470
21022872009d make simulator implementation replaceable via global default value
Craig Dowell <craigdo@ee.washington.edu>
parents: 3469
diff changeset
   258
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   259
  /**
345
47b41507a45a move channel.cc channel.h to node directory; merge ns-3-tracing from mathieu
Tom Henderson <tomh@tomh.org>
parents: 160
diff changeset
   260
   * @param time the relative expiration time of the event.
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   261
   * @param f the function to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   262
   * @param a1 the first argument to pass to the function to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   263
   * @param a2 the second argument to pass to the function to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   264
   * @param a3 the third argument to pass to the function to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   265
   * @param a4 the fourth argument to pass to the function to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   266
   * @returns an id for the scheduled event.
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   267
   */
947
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   268
  template <typename U1, typename U2, typename U3, typename U4, 
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   269
            typename T1, typename T2, typename T3, typename T4>
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   270
  static EventId Schedule (Time const &time, void (*f) (U1,U2,U3,U4), T1 a1, T2 a2, T3 a3, T4 a4);
3470
21022872009d make simulator implementation replaceable via global default value
Craig Dowell <craigdo@ee.washington.edu>
parents: 3469
diff changeset
   271
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   272
  /**
345
47b41507a45a move channel.cc channel.h to node directory; merge ns-3-tracing from mathieu
Tom Henderson <tomh@tomh.org>
parents: 160
diff changeset
   273
   * @param time the relative expiration time of the event.
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   274
   * @param f the function to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   275
   * @param a1 the first argument to pass to the function to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   276
   * @param a2 the second argument to pass to the function to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   277
   * @param a3 the third argument to pass to the function to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   278
   * @param a4 the fourth argument to pass to the function to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   279
   * @param a5 the fifth argument to pass to the function to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   280
   * @returns an id for the scheduled event.
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   281
   */
947
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   282
  template <typename U1, typename U2, typename U3, typename U4, typename U5,
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   283
            typename T1, typename T2, typename T3, typename T4, typename T5>
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   284
  static EventId Schedule (Time const &time, void (*f) (U1,U2,U3,U4,U5), T1 a1, T2 a2, T3 a3, T4 a4, T5 a5);
142
dcf83cc9d52a move event generation to MakeEvent methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 131
diff changeset
   285
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   286
  /**
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   287
   * Schedule an event to expire Now. All events scheduled to
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   288
   * to expire "Now" are scheduled FIFO, after all normal events
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   289
   * have expired. 
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   290
   *
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   291
   * @param mem_ptr member method pointer to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   292
   * @param obj the object on which to invoke the member method
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   293
   */
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   294
  template <typename MEM, typename OBJ>
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   295
  static EventId ScheduleNow (MEM mem_ptr, OBJ obj);
3470
21022872009d make simulator implementation replaceable via global default value
Craig Dowell <craigdo@ee.washington.edu>
parents: 3469
diff changeset
   296
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   297
  /**
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   298
   * @param mem_ptr member method pointer to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   299
   * @param obj the object on which to invoke the member method
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   300
   * @param a1 the first argument to pass to the invoked method
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   301
   */
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   302
  template <typename MEM, typename OBJ, 
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
   303
            typename T1>
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   304
  static EventId ScheduleNow (MEM mem_ptr, OBJ obj, T1 a1);
3470
21022872009d make simulator implementation replaceable via global default value
Craig Dowell <craigdo@ee.washington.edu>
parents: 3469
diff changeset
   305
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   306
  /**
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   307
   * @param mem_ptr member method pointer to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   308
   * @param obj the object on which to invoke the member method
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   309
   * @param a1 the first argument to pass to the invoked method
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   310
   * @param a2 the second argument to pass to the invoked method
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   311
   */
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   312
  template <typename MEM, typename OBJ, 
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
   313
            typename T1, typename T2>
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   314
  static EventId ScheduleNow (MEM mem_ptr, OBJ obj, T1 a1, T2 a2);
3470
21022872009d make simulator implementation replaceable via global default value
Craig Dowell <craigdo@ee.washington.edu>
parents: 3469
diff changeset
   315
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   316
  /**
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   317
   * @param mem_ptr member method pointer to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   318
   * @param obj the object on which to invoke the member method
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   319
   * @param a1 the first argument to pass to the invoked method
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   320
   * @param a2 the second argument to pass to the invoked method
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   321
   * @param a3 the third argument to pass to the invoked method
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   322
   */
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   323
  template <typename MEM, typename OBJ, 
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
   324
            typename T1, typename T2, typename T3>
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   325
  static EventId ScheduleNow (MEM mem_ptr, OBJ obj, T1 a1, T2 a2, T3 a3);
3470
21022872009d make simulator implementation replaceable via global default value
Craig Dowell <craigdo@ee.washington.edu>
parents: 3469
diff changeset
   326
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   327
  /**
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   328
   * @param mem_ptr member method pointer to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   329
   * @param obj the object on which to invoke the member method
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   330
   * @param a1 the first argument to pass to the invoked method
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   331
   * @param a2 the second argument to pass to the invoked method
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   332
   * @param a3 the third argument to pass to the invoked method
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   333
   * @param a4 the fourth argument to pass to the invoked method
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   334
   */
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   335
  template <typename MEM, typename OBJ, 
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
   336
            typename T1, typename T2, typename T3, typename T4>
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   337
  static EventId ScheduleNow (MEM mem_ptr, OBJ obj, 
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   338
                              T1 a1, T2 a2, T3 a3, T4 a4);
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   339
  /**
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   340
   * @param mem_ptr member method pointer to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   341
   * @param obj the object on which to invoke the member method
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   342
   * @param a1 the first argument to pass to the invoked method
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   343
   * @param a2 the second argument to pass to the invoked method
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   344
   * @param a3 the third argument to pass to the invoked method
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   345
   * @param a4 the fourth argument to pass to the invoked method
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   346
   * @param a5 the fifth argument to pass to the invoked method
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   347
   */
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   348
  template <typename MEM, typename OBJ, 
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
   349
            typename T1, typename T2, typename T3, typename T4, typename T5>
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   350
  static EventId ScheduleNow (MEM mem_ptr, OBJ obj, 
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   351
                              T1 a1, T2 a2, T3 a3, T4 a4, T5 a5);
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   352
  /**
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   353
   * @param f the function to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   354
   */
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   355
  static EventId ScheduleNow (void (*f) (void));
3470
21022872009d make simulator implementation replaceable via global default value
Craig Dowell <craigdo@ee.washington.edu>
parents: 3469
diff changeset
   356
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   357
  /**
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   358
   * @param f the function to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   359
   * @param a1 the first argument to pass to the function to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   360
   */
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
   361
  template <typename U1,
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
   362
            typename T1>
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   363
  static EventId ScheduleNow (void (*f) (U1), T1 a1);
3470
21022872009d make simulator implementation replaceable via global default value
Craig Dowell <craigdo@ee.washington.edu>
parents: 3469
diff changeset
   364
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   365
  /**
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   366
   * @param f the function to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   367
   * @param a1 the first argument to pass to the function to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   368
   * @param a2 the second argument to pass to the function to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   369
   */
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
   370
  template <typename U1, typename U2,
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
   371
            typename T1, typename T2>
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   372
  static EventId ScheduleNow (void (*f) (U1,U2), T1 a1, T2 a2);
3470
21022872009d make simulator implementation replaceable via global default value
Craig Dowell <craigdo@ee.washington.edu>
parents: 3469
diff changeset
   373
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   374
  /**
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   375
   * @param f the function to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   376
   * @param a1 the first argument to pass to the function to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   377
   * @param a2 the second argument to pass to the function to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   378
   * @param a3 the third argument to pass to the function to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   379
   */
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
   380
  template <typename U1, typename U2, typename U3,
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
   381
            typename T1, typename T2, typename T3>
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   382
  static EventId ScheduleNow (void (*f) (U1,U2,U3), T1 a1, T2 a2, T3 a3);
3470
21022872009d make simulator implementation replaceable via global default value
Craig Dowell <craigdo@ee.washington.edu>
parents: 3469
diff changeset
   383
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   384
  /**
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   385
   * @param f the function to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   386
   * @param a1 the first argument to pass to the function to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   387
   * @param a2 the second argument to pass to the function to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   388
   * @param a3 the third argument to pass to the function to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   389
   * @param a4 the fourth argument to pass to the function to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   390
   */
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
   391
  template <typename U1, typename U2, typename U3, typename U4,
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
   392
            typename T1, typename T2, typename T3, typename T4>
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   393
  static EventId ScheduleNow (void (*f) (U1,U2,U3,U4), T1 a1, T2 a2, T3 a3, T4 a4);
3470
21022872009d make simulator implementation replaceable via global default value
Craig Dowell <craigdo@ee.washington.edu>
parents: 3469
diff changeset
   394
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   395
  /**
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   396
   * @param f the function to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   397
   * @param a1 the first argument to pass to the function to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   398
   * @param a2 the second argument to pass to the function to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   399
   * @param a3 the third argument to pass to the function to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   400
   * @param a4 the fourth argument to pass to the function to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   401
   * @param a5 the fifth argument to pass to the function to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   402
   */
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
   403
  template <typename U1, typename U2, typename U3, typename U4, typename U5,
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
   404
            typename T1, typename T2, typename T3, typename T4, typename T5>
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   405
  static EventId ScheduleNow (void (*f) (U1,U2,U3,U4,U5), T1 a1, T2 a2, T3 a3, T4 a4, T5 a5);
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   406
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   407
  /**
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   408
   * Schedule an event to expire at Destroy time. All events 
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   409
   * scheduled to expire at "Destroy" time are scheduled FIFO, 
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   410
   * after all normal events have expired and only when 
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   411
   * Simulator::Destroy is invoked.
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   412
   *
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   413
   * @param mem_ptr member method pointer to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   414
   * @param obj the object on which to invoke the member method
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   415
   */
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   416
  template <typename MEM, typename OBJ>
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   417
  static EventId ScheduleDestroy (MEM mem_ptr, OBJ obj);
3470
21022872009d make simulator implementation replaceable via global default value
Craig Dowell <craigdo@ee.washington.edu>
parents: 3469
diff changeset
   418
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   419
  /**
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   420
   * @param mem_ptr member method pointer to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   421
   * @param obj the object on which to invoke the member method
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   422
   * @param a1 the first argument to pass to the invoked method
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   423
   */
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   424
  template <typename MEM, typename OBJ, 
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
   425
            typename T1>
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   426
  static EventId ScheduleDestroy (MEM mem_ptr, OBJ obj, T1 a1);
3470
21022872009d make simulator implementation replaceable via global default value
Craig Dowell <craigdo@ee.washington.edu>
parents: 3469
diff changeset
   427
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   428
  /**
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   429
   * @param mem_ptr member method pointer to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   430
   * @param obj the object on which to invoke the member method
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   431
   * @param a1 the first argument to pass to the invoked method
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   432
   * @param a2 the second argument to pass to the invoked method
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   433
   */
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   434
  template <typename MEM, typename OBJ,
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
   435
            typename T1, typename T2>
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   436
  static EventId ScheduleDestroy (MEM mem_ptr, OBJ obj, T1 a1, T2 a2);
3470
21022872009d make simulator implementation replaceable via global default value
Craig Dowell <craigdo@ee.washington.edu>
parents: 3469
diff changeset
   437
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   438
  /**
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   439
   * @param mem_ptr member method pointer to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   440
   * @param obj the object on which to invoke the member method
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   441
   * @param a1 the first argument to pass to the invoked method
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   442
   * @param a2 the second argument to pass to the invoked method
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   443
   * @param a3 the third argument to pass to the invoked method
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   444
   */
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   445
  template <typename MEM, typename OBJ, 
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
   446
            typename T1, typename T2, typename T3>
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   447
  static EventId ScheduleDestroy (MEM mem_ptr, OBJ obj, T1 a1, T2 a2, T3 a3);
3470
21022872009d make simulator implementation replaceable via global default value
Craig Dowell <craigdo@ee.washington.edu>
parents: 3469
diff changeset
   448
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   449
  /**
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   450
   * @param mem_ptr member method pointer to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   451
   * @param obj the object on which to invoke the member method
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   452
   * @param a1 the first argument to pass to the invoked method
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   453
   * @param a2 the second argument to pass to the invoked method
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   454
   * @param a3 the third argument to pass to the invoked method
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   455
   * @param a4 the fourth argument to pass to the invoked method
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   456
   */
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   457
  template <typename MEM, typename OBJ, 
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
   458
            typename T1, typename T2, typename T3, typename T4>
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   459
  static EventId ScheduleDestroy (MEM mem_ptr, OBJ obj, 
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   460
                                  T1 a1, T2 a2, T3 a3, T4 a4);
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   461
  /**
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   462
   * @param mem_ptr member method pointer to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   463
   * @param obj the object on which to invoke the member method
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   464
   * @param a1 the first argument to pass to the invoked method
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   465
   * @param a2 the second argument to pass to the invoked method
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   466
   * @param a3 the third argument to pass to the invoked method
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   467
   * @param a4 the fourth argument to pass to the invoked method
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   468
   * @param a5 the fifth argument to pass to the invoked method
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   469
   */
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   470
  template <typename MEM, typename OBJ, 
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
   471
            typename T1, typename T2, typename T3, typename T4, typename T5>
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   472
  static EventId ScheduleDestroy (MEM mem_ptr, OBJ obj, 
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   473
                                  T1 a1, T2 a2, T3 a3, T4 a4, T5 a5);
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   474
  /**
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   475
   * @param f the function to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   476
   */
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   477
  static EventId ScheduleDestroy (void (*f) (void));
3470
21022872009d make simulator implementation replaceable via global default value
Craig Dowell <craigdo@ee.washington.edu>
parents: 3469
diff changeset
   478
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   479
  /**
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   480
   * @param f the function to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   481
   * @param a1 the first argument to pass to the function to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   482
   */
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
   483
  template <typename U1,
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
   484
            typename T1>
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   485
  static EventId ScheduleDestroy (void (*f) (U1), T1 a1);
3470
21022872009d make simulator implementation replaceable via global default value
Craig Dowell <craigdo@ee.washington.edu>
parents: 3469
diff changeset
   486
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   487
  /**
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   488
   * @param f the function to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   489
   * @param a1 the first argument to pass to the function to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   490
   * @param a2 the second argument to pass to the function to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   491
   */
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
   492
  template <typename U1, typename U2,
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
   493
            typename T1, typename T2>
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   494
  static EventId ScheduleDestroy (void (*f) (U1,U2), T1 a1, T2 a2);
3470
21022872009d make simulator implementation replaceable via global default value
Craig Dowell <craigdo@ee.washington.edu>
parents: 3469
diff changeset
   495
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   496
  /**
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   497
   * @param f the function to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   498
   * @param a1 the first argument to pass to the function to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   499
   * @param a2 the second argument to pass to the function to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   500
   * @param a3 the third argument to pass to the function to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   501
   */
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
   502
  template <typename U1, typename U2, typename U3,
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
   503
            typename T1, typename T2, typename T3>
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   504
  static EventId ScheduleDestroy (void (*f) (U1,U2,U3), T1 a1, T2 a2, T3 a3);
3470
21022872009d make simulator implementation replaceable via global default value
Craig Dowell <craigdo@ee.washington.edu>
parents: 3469
diff changeset
   505
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   506
  /**
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   507
   * @param f the function to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   508
   * @param a1 the first argument to pass to the function to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   509
   * @param a2 the second argument to pass to the function to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   510
   * @param a3 the third argument to pass to the function to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   511
   * @param a4 the fourth argument to pass to the function to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   512
   */
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
   513
  template <typename U1, typename U2, typename U3, typename U4,
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
   514
            typename T1, typename T2, typename T3, typename T4>
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   515
  static EventId ScheduleDestroy (void (*f) (U1,U2,U3,U4), T1 a1, T2 a2, T3 a3, T4 a4);
3470
21022872009d make simulator implementation replaceable via global default value
Craig Dowell <craigdo@ee.washington.edu>
parents: 3469
diff changeset
   516
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   517
  /**
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   518
   * @param f the function to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   519
   * @param a1 the first argument to pass to the function to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   520
   * @param a2 the second argument to pass to the function to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   521
   * @param a3 the third argument to pass to the function to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   522
   * @param a4 the fourth argument to pass to the function to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   523
   * @param a5 the fifth argument to pass to the function to invoke
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   524
   */
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
   525
  template <typename U1, typename U2, typename U3, typename U4, typename U5,
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
   526
            typename T1, typename T2, typename T3, typename T4, typename T5>
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
   527
  static EventId ScheduleDestroy (void (*f) (U1,U2,U3,U4,U5), T1 a1, T2 a2, T3 a3, T4 a4, T5 a5);
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
   528
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   529
  /**
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   530
   * Remove an event from the event list. 
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   531
   * This method has the same visible effect as the 
472
41aa5fca4f49 make sure that Simulator::Cancel deals correctly with events which were already scheduled
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 345
diff changeset
   532
   * ns3::EventId::Cancel method
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   533
   * but its algorithmic complexity is much higher: it has often 
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   534
   * O(log(n)) complexity, sometimes O(n), sometimes worse.
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   535
   * Note that it is not possible to remove events which were scheduled
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   536
   * for the "destroy" time. Doing so will result in a program error (crash).
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   537
   *
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   538
   * @param id the event to remove from the list of scheduled events.
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   539
   */
1011
7e5be9b118c9 be more consistant in the handling of references
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1010
diff changeset
   540
  static void Remove (const EventId &id);
3470
21022872009d make simulator implementation replaceable via global default value
Craig Dowell <craigdo@ee.washington.edu>
parents: 3469
diff changeset
   541
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   542
  /**
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   543
   * Set the cancel bit on this event: the event's associated function
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   544
   * will not be invoked when it expires. 
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   545
   * This method has the same visible effect as the 
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   546
   * ns3::Simulator::remove method but its algorithmic complexity is 
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   547
   * much lower: it has O(1) complexity.
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   548
   * This method has the exact same semantics as ns3::EventId::cancel.
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   549
   * Note that it is not possible to cancel events which were scheduled
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   550
   * for the "destroy" time. Doing so will result in a program error (crash).
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   551
   * 
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   552
   * @param id the event to cancel
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   553
   */
1011
7e5be9b118c9 be more consistant in the handling of references
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1010
diff changeset
   554
  static void Cancel (const EventId &id);
3470
21022872009d make simulator implementation replaceable via global default value
Craig Dowell <craigdo@ee.washington.edu>
parents: 3469
diff changeset
   555
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   556
  /**
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   557
   * This method has O(1) complexity.
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   558
   * Note that it is not possible to test for the expiration of
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   559
   * events which were scheduled for the "destroy" time. Doing so
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   560
   * will result in a program error (crash).
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   561
   * An event is said to "expire" when it starts being scheduled
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   562
   * which means that if the code executed by the event calls
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   563
   * this function, it will get true.
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   564
   *
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   565
   * @param id the event to test for expiration
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   566
   * @returns true if the event has expired, false otherwise.
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   567
   */
1011
7e5be9b118c9 be more consistant in the handling of references
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1010
diff changeset
   568
  static bool IsExpired (const EventId &id);
3470
21022872009d make simulator implementation replaceable via global default value
Craig Dowell <craigdo@ee.washington.edu>
parents: 3469
diff changeset
   569
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   570
  /**
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   571
   * Return the "current simulation time".
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   572
   */
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   573
  static Time Now (void);
3470
21022872009d make simulator implementation replaceable via global default value
Craig Dowell <craigdo@ee.washington.edu>
parents: 3469
diff changeset
   574
1690
16b198d63c1e add Simulator::GetDelayLeft
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1295
diff changeset
   575
  /**
16b198d63c1e add Simulator::GetDelayLeft
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1295
diff changeset
   576
   * \param id the event id to analyse
16b198d63c1e add Simulator::GetDelayLeft
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1295
diff changeset
   577
   * \returns the delay left until the input event id expires.
16b198d63c1e add Simulator::GetDelayLeft
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1295
diff changeset
   578
   *          if the event is not running, this method returns
16b198d63c1e add Simulator::GetDelayLeft
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1295
diff changeset
   579
   *          zero.
16b198d63c1e add Simulator::GetDelayLeft
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1295
diff changeset
   580
   */
16b198d63c1e add Simulator::GetDelayLeft
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1295
diff changeset
   581
  static Time GetDelayLeft (const EventId &id);
1863
50fa1ca3b26c bug 104: add a method to retrive the maximum simulation time.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1696
diff changeset
   582
50fa1ca3b26c bug 104: add a method to retrive the maximum simulation time.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1696
diff changeset
   583
  /**
50fa1ca3b26c bug 104: add a method to retrive the maximum simulation time.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1696
diff changeset
   584
   * \returns the maximum simulation time at which an event 
50fa1ca3b26c bug 104: add a method to retrive the maximum simulation time.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1696
diff changeset
   585
   *          can be scheduled.
50fa1ca3b26c bug 104: add a method to retrive the maximum simulation time.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1696
diff changeset
   586
   *
50fa1ca3b26c bug 104: add a method to retrive the maximum simulation time.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1696
diff changeset
   587
   * The returned value will always be bigger than or equal to Simulator::Now.
50fa1ca3b26c bug 104: add a method to retrive the maximum simulation time.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1696
diff changeset
   588
   */
50fa1ca3b26c bug 104: add a method to retrive the maximum simulation time.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1696
diff changeset
   589
  static Time GetMaximumSimulationTime (void);
3470
21022872009d make simulator implementation replaceable via global default value
Craig Dowell <craigdo@ee.washington.edu>
parents: 3469
diff changeset
   590
3369
30750f23d51a export new methods for language bindings
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3188
diff changeset
   591
  /**
30750f23d51a export new methods for language bindings
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3188
diff changeset
   592
   * \param time delay until the event expires
30750f23d51a export new methods for language bindings
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3188
diff changeset
   593
   * \param event the event to schedule
30750f23d51a export new methods for language bindings
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3188
diff changeset
   594
   * \returns a unique identifier for the newly-scheduled event.
30750f23d51a export new methods for language bindings
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3188
diff changeset
   595
   *
30750f23d51a export new methods for language bindings
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3188
diff changeset
   596
   * This method will be typically used by language bindings
30750f23d51a export new methods for language bindings
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3188
diff changeset
   597
   * to delegate events to their own subclass of the EventImpl base class.
30750f23d51a export new methods for language bindings
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3188
diff changeset
   598
   */
30750f23d51a export new methods for language bindings
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3188
diff changeset
   599
  static EventId Schedule (Time const &time, const Ptr<EventImpl> &event);  
3470
21022872009d make simulator implementation replaceable via global default value
Craig Dowell <craigdo@ee.washington.edu>
parents: 3469
diff changeset
   600
3369
30750f23d51a export new methods for language bindings
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3188
diff changeset
   601
  /**
30750f23d51a export new methods for language bindings
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3188
diff changeset
   602
   * \param event the event to schedule
30750f23d51a export new methods for language bindings
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3188
diff changeset
   603
   * \returns a unique identifier for the newly-scheduled event.
30750f23d51a export new methods for language bindings
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3188
diff changeset
   604
   *
30750f23d51a export new methods for language bindings
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3188
diff changeset
   605
   * This method will be typically used by language bindings
30750f23d51a export new methods for language bindings
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3188
diff changeset
   606
   * to delegate events to their own subclass of the EventImpl base class.
30750f23d51a export new methods for language bindings
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3188
diff changeset
   607
   */
30750f23d51a export new methods for language bindings
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3188
diff changeset
   608
  static EventId ScheduleDestroy (const Ptr<EventImpl> &event);
3470
21022872009d make simulator implementation replaceable via global default value
Craig Dowell <craigdo@ee.washington.edu>
parents: 3469
diff changeset
   609
3369
30750f23d51a export new methods for language bindings
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3188
diff changeset
   610
  /**
30750f23d51a export new methods for language bindings
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3188
diff changeset
   611
   * \param event the event to schedule
30750f23d51a export new methods for language bindings
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3188
diff changeset
   612
   * \returns a unique identifier for the newly-scheduled event.
30750f23d51a export new methods for language bindings
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3188
diff changeset
   613
   *
30750f23d51a export new methods for language bindings
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3188
diff changeset
   614
   * This method will be typically used by language bindings
30750f23d51a export new methods for language bindings
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3188
diff changeset
   615
   * to delegate events to their own subclass of the EventImpl base class.
30750f23d51a export new methods for language bindings
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3188
diff changeset
   616
   */
30750f23d51a export new methods for language bindings
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3188
diff changeset
   617
  static EventId ScheduleNow (const Ptr<EventImpl> &event);
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   618
private:
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   619
  Simulator ();
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   620
  ~Simulator ();
947
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   621
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   622
  template <typename MEM, typename OBJ>
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   623
  static Ptr<EventImpl> MakeEvent (MEM mem_ptr, OBJ obj);
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   624
  template <typename MEM, typename OBJ, 
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
   625
            typename T1>
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   626
  static Ptr<EventImpl> MakeEvent (MEM mem_ptr, OBJ obj, T1 a1);
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   627
  template <typename MEM, typename OBJ, 
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
   628
            typename T1, typename T2>
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   629
  static Ptr<EventImpl> MakeEvent (MEM mem_ptr, OBJ obj, T1 a1, T2 a2);
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   630
  template <typename MEM, typename OBJ, 
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
   631
            typename T1, typename T2, typename T3>
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   632
  static Ptr<EventImpl> MakeEvent (MEM mem_ptr, OBJ obj, T1 a1, T2 a2, T3 a3);
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   633
  template <typename MEM, typename OBJ, 
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
   634
            typename T1, typename T2, typename T3, typename T4>
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   635
  static Ptr<EventImpl> MakeEvent (MEM mem_ptr, OBJ obj, T1 a1, T2 a2, T3 a3, T4 a4);
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   636
  template <typename MEM, typename OBJ, 
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
   637
            typename T1, typename T2, typename T3, typename T4, typename T5>
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   638
  static Ptr<EventImpl> MakeEvent (MEM mem_ptr, OBJ obj, 
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   639
                                   T1 a1, T2 a2, T3 a3, T4 a4, T5 a5);
1008
6f2ea723a1db use a Ptr<> to manage EventImpl instances
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 963
diff changeset
   640
  static Ptr<EventImpl> MakeEvent (void (*f) (void));
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
   641
  template <typename U1, 
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
   642
            typename T1>
1008
6f2ea723a1db use a Ptr<> to manage EventImpl instances
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 963
diff changeset
   643
  static Ptr<EventImpl> MakeEvent (void (*f) (U1), T1 a1);
947
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   644
  template <typename U1, typename U2, 
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   645
            typename T1, typename T2>
1008
6f2ea723a1db use a Ptr<> to manage EventImpl instances
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 963
diff changeset
   646
  static Ptr<EventImpl> MakeEvent (void (*f) (U1,U2), T1 a1, T2 a2);
947
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   647
  template <typename U1, typename U2, typename U3,
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   648
            typename T1, typename T2, typename T3>
1008
6f2ea723a1db use a Ptr<> to manage EventImpl instances
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 963
diff changeset
   649
  static Ptr<EventImpl> MakeEvent (void (*f) (U1,U2,U3), T1 a1, T2 a2, T3 a3);
947
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   650
  template <typename U1, typename U2, typename U3, typename U4,
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   651
            typename T1, typename T2, typename T3, typename T4>
1008
6f2ea723a1db use a Ptr<> to manage EventImpl instances
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 963
diff changeset
   652
  static Ptr<EventImpl> MakeEvent (void (*f) (U1,U2,U3,U4), T1 a1, T2 a2, T3 a3, T4 a4);
947
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   653
  template <typename U1, typename U2, typename U3, typename U4, typename U5,
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   654
            typename T1, typename T2, typename T3, typename T4, typename T5>
1008
6f2ea723a1db use a Ptr<> to manage EventImpl instances
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 963
diff changeset
   655
  static Ptr<EventImpl> MakeEvent (void (*f) (U1,U2,U3,U4,U5), T1 a1, T2 a2, T3 a3, T4 a4, T5 a5);
142
dcf83cc9d52a move event generation to MakeEvent methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 131
diff changeset
   656
3470
21022872009d make simulator implementation replaceable via global default value
Craig Dowell <craigdo@ee.washington.edu>
parents: 3469
diff changeset
   657
  static SimulatorImpl *GetImpl (void);
3469
9e763021e045 factor simulator into interface and (multiple) implementation pieces
Craig Dowell <craigdo@ee.washington.edu>
parents: 3390
diff changeset
   658
  static Ptr<SimulatorImpl> m_impl;
3470
21022872009d make simulator implementation replaceable via global default value
Craig Dowell <craigdo@ee.washington.edu>
parents: 3469
diff changeset
   659
  static std::string m_typeImpl;
21022872009d make simulator implementation replaceable via global default value
Craig Dowell <craigdo@ee.washington.edu>
parents: 3469
diff changeset
   660
  static std::string m_typeSched;
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   661
};
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   662
679
0c4773ca0f29 avoid cyclic dependency between Simulator and Time code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 536
diff changeset
   663
/**
0c4773ca0f29 avoid cyclic dependency between Simulator and Time code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 536
diff changeset
   664
 * \brief create an ns3::Time instance which contains the
0c4773ca0f29 avoid cyclic dependency between Simulator and Time code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 536
diff changeset
   665
 *        current simulation time.
0c4773ca0f29 avoid cyclic dependency between Simulator and Time code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 536
diff changeset
   666
 *
0c4773ca0f29 avoid cyclic dependency between Simulator and Time code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 536
diff changeset
   667
 * This is really a shortcut for the ns3::Simulator::Now method.
0c4773ca0f29 avoid cyclic dependency between Simulator and Time code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 536
diff changeset
   668
 * It is typically used as shown below to schedule an event
0c4773ca0f29 avoid cyclic dependency between Simulator and Time code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 536
diff changeset
   669
 * which expires at the absolute time "2 seconds":
0c4773ca0f29 avoid cyclic dependency between Simulator and Time code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 536
diff changeset
   670
 * \code
0c4773ca0f29 avoid cyclic dependency between Simulator and Time code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 536
diff changeset
   671
 * Simulator::Schedule (Seconds (2.0) - Now (), &my_function);
0c4773ca0f29 avoid cyclic dependency between Simulator and Time code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 536
diff changeset
   672
 * \endcode
0c4773ca0f29 avoid cyclic dependency between Simulator and Time code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 536
diff changeset
   673
 */
0c4773ca0f29 avoid cyclic dependency between Simulator and Time code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 536
diff changeset
   674
Time Now (void);
0c4773ca0f29 avoid cyclic dependency between Simulator and Time code
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 536
diff changeset
   675
16
99e833adbb46 change yans namespace to ns3
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 9
diff changeset
   676
}; // namespace ns3
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   677
75
0f3f4b0a158b reorganize the implementation of template member methods in Simulator class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 71
diff changeset
   678
76
65d10fd77589 add comment on implementation location
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 75
diff changeset
   679
/********************************************************************
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   680
   Implementation of templates defined above
76
65d10fd77589 add comment on implementation location
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 75
diff changeset
   681
 ********************************************************************/
65d10fd77589 add comment on implementation location
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 75
diff changeset
   682
75
0f3f4b0a158b reorganize the implementation of template member methods in Simulator class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 71
diff changeset
   683
namespace ns3 {
0f3f4b0a158b reorganize the implementation of template member methods in Simulator class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 71
diff changeset
   684
0f3f4b0a158b reorganize the implementation of template member methods in Simulator class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 71
diff changeset
   685
template <typename T>
946
f589f6cf42ca rename traits to handle Ptr<> object pointers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 944
diff changeset
   686
struct EventMemberImplObjTraits;
690
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 682
diff changeset
   687
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 682
diff changeset
   688
template <typename T>
946
f589f6cf42ca rename traits to handle Ptr<> object pointers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 944
diff changeset
   689
struct EventMemberImplObjTraits<T *>
690
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 682
diff changeset
   690
{
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 682
diff changeset
   691
  static T &GetReference (T *p) {
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 682
diff changeset
   692
    return *p;
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 682
diff changeset
   693
  }
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 682
diff changeset
   694
};
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 682
diff changeset
   695
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   696
template <typename MEM, typename OBJ>
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   697
Ptr<EventImpl> Simulator::MakeEvent (MEM mem_ptr, OBJ obj) 
75
0f3f4b0a158b reorganize the implementation of template member methods in Simulator class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 71
diff changeset
   698
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   699
  // zero argument version
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   700
  class EventMemberImpl0 : public EventImpl {
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   701
  public:
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   702
    EventMemberImpl0 (OBJ obj, MEM function) 
690
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 682
diff changeset
   703
      : m_obj (obj), 
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 682
diff changeset
   704
        m_function (function)
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 682
diff changeset
   705
    {}
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 682
diff changeset
   706
    virtual ~EventMemberImpl0 () {}
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   707
  private:
690
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 682
diff changeset
   708
    virtual void Notify (void) { 
946
f589f6cf42ca rename traits to handle Ptr<> object pointers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 944
diff changeset
   709
      (EventMemberImplObjTraits<OBJ>::GetReference (m_obj).*m_function) (); 
690
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 682
diff changeset
   710
    }
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 682
diff changeset
   711
    OBJ m_obj;
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   712
    MEM m_function;
1008
6f2ea723a1db use a Ptr<> to manage EventImpl instances
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 963
diff changeset
   713
  } * ev = new EventMemberImpl0 (obj, mem_ptr);
6f2ea723a1db use a Ptr<> to manage EventImpl instances
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 963
diff changeset
   714
  return Ptr<EventImpl> (ev, false);
75
0f3f4b0a158b reorganize the implementation of template member methods in Simulator class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 71
diff changeset
   715
}
0f3f4b0a158b reorganize the implementation of template member methods in Simulator class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 71
diff changeset
   716
0f3f4b0a158b reorganize the implementation of template member methods in Simulator class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 71
diff changeset
   717
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   718
template <typename MEM, typename OBJ, 
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
   719
          typename T1>
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   720
Ptr<EventImpl> Simulator::MakeEvent (MEM mem_ptr, OBJ obj, T1 a1)
75
0f3f4b0a158b reorganize the implementation of template member methods in Simulator class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 71
diff changeset
   721
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   722
  // one argument version
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   723
  class EventMemberImpl1 : public EventImpl {
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   724
  public:
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   725
    EventMemberImpl1 (OBJ obj, MEM function, T1 a1) 
690
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 682
diff changeset
   726
      : m_obj (obj), 
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 682
diff changeset
   727
        m_function (function),
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 682
diff changeset
   728
        m_a1 (a1)
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 682
diff changeset
   729
    {}
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   730
  protected:
690
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 682
diff changeset
   731
    virtual ~EventMemberImpl1 () {}
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   732
  private:
690
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 682
diff changeset
   733
    virtual void Notify (void) { 
946
f589f6cf42ca rename traits to handle Ptr<> object pointers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 944
diff changeset
   734
      (EventMemberImplObjTraits<OBJ>::GetReference (m_obj).*m_function) (m_a1);
690
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 682
diff changeset
   735
    }
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 682
diff changeset
   736
    OBJ m_obj;
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   737
    MEM m_function;
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
   738
    typename TypeTraits<T1>::ReferencedType m_a1;
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   739
  } *ev = new EventMemberImpl1 (obj, mem_ptr, a1);
1008
6f2ea723a1db use a Ptr<> to manage EventImpl instances
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 963
diff changeset
   740
  return Ptr<EventImpl> (ev, false);
75
0f3f4b0a158b reorganize the implementation of template member methods in Simulator class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 71
diff changeset
   741
}
0f3f4b0a158b reorganize the implementation of template member methods in Simulator class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 71
diff changeset
   742
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   743
template <typename MEM, typename OBJ, 
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
   744
          typename T1, typename T2>
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   745
Ptr<EventImpl> Simulator::MakeEvent (MEM mem_ptr, OBJ obj, T1 a1, T2 a2) 
75
0f3f4b0a158b reorganize the implementation of template member methods in Simulator class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 71
diff changeset
   746
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   747
  // two argument version
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   748
  class EventMemberImpl2 : public EventImpl {
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   749
  public:
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   750
    EventMemberImpl2 (OBJ obj, MEM function, T1 a1, T2 a2) 
690
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 682
diff changeset
   751
      : m_obj (obj), 
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 682
diff changeset
   752
        m_function (function),
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 682
diff changeset
   753
        m_a1 (a1),
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 682
diff changeset
   754
        m_a2 (a2)
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 682
diff changeset
   755
    { }
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   756
  protected:
690
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 682
diff changeset
   757
    virtual ~EventMemberImpl2 () {}
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   758
  private:
690
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 682
diff changeset
   759
    virtual void Notify (void) { 
946
f589f6cf42ca rename traits to handle Ptr<> object pointers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 944
diff changeset
   760
      (EventMemberImplObjTraits<OBJ>::GetReference (m_obj).*m_function) (m_a1, m_a2);
690
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 682
diff changeset
   761
    }
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 682
diff changeset
   762
    OBJ m_obj;
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   763
    MEM m_function;
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
   764
    typename TypeTraits<T1>::ReferencedType m_a1;
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
   765
    typename TypeTraits<T2>::ReferencedType m_a2;
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   766
  } *ev = new EventMemberImpl2 (obj, mem_ptr, a1, a2);
1008
6f2ea723a1db use a Ptr<> to manage EventImpl instances
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 963
diff changeset
   767
  return Ptr<EventImpl> (ev, false);
75
0f3f4b0a158b reorganize the implementation of template member methods in Simulator class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 71
diff changeset
   768
}
0f3f4b0a158b reorganize the implementation of template member methods in Simulator class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 71
diff changeset
   769
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   770
template <typename MEM, typename OBJ, 
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
   771
          typename T1, typename T2, typename T3>
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   772
Ptr<EventImpl> Simulator::MakeEvent (MEM mem_ptr, OBJ obj, T1 a1, T2 a2, T3 a3) 
75
0f3f4b0a158b reorganize the implementation of template member methods in Simulator class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 71
diff changeset
   773
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   774
  // three argument version
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   775
  class EventMemberImpl3 : public EventImpl {
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   776
  public:
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   777
    EventMemberImpl3 (OBJ obj, MEM function, T1 a1, T2 a2, T3 a3) 
690
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 682
diff changeset
   778
      : m_obj (obj), 
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 682
diff changeset
   779
        m_function (function),
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 682
diff changeset
   780
        m_a1 (a1),
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 682
diff changeset
   781
        m_a2 (a2),
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 682
diff changeset
   782
        m_a3 (a3)
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 682
diff changeset
   783
    { }
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   784
  protected:
690
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 682
diff changeset
   785
    virtual ~EventMemberImpl3 () {}
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   786
  private:
690
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 682
diff changeset
   787
    virtual void Notify (void) { 
946
f589f6cf42ca rename traits to handle Ptr<> object pointers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 944
diff changeset
   788
      (EventMemberImplObjTraits<OBJ>::GetReference (m_obj).*m_function) (m_a1, m_a2, m_a3);
690
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 682
diff changeset
   789
    }
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 682
diff changeset
   790
    OBJ m_obj;
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   791
    MEM m_function;
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
   792
    typename TypeTraits<T1>::ReferencedType m_a1;
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
   793
    typename TypeTraits<T2>::ReferencedType m_a2;
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
   794
    typename TypeTraits<T3>::ReferencedType m_a3;
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   795
  } *ev = new EventMemberImpl3 (obj, mem_ptr, a1, a2, a3);
1008
6f2ea723a1db use a Ptr<> to manage EventImpl instances
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 963
diff changeset
   796
  return Ptr<EventImpl> (ev, false);
75
0f3f4b0a158b reorganize the implementation of template member methods in Simulator class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 71
diff changeset
   797
}
0f3f4b0a158b reorganize the implementation of template member methods in Simulator class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 71
diff changeset
   798
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   799
template <typename MEM, typename OBJ, 
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
   800
          typename T1, typename T2, typename T3, typename T4>
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   801
Ptr<EventImpl> Simulator::MakeEvent (MEM mem_ptr, OBJ obj, T1 a1, T2 a2, T3 a3, T4 a4) 
75
0f3f4b0a158b reorganize the implementation of template member methods in Simulator class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 71
diff changeset
   802
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   803
  // four argument version
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   804
  class EventMemberImpl4 : public EventImpl {
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   805
  public:
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   806
    EventMemberImpl4 (OBJ obj, MEM function, T1 a1, T2 a2, T3 a3, T4 a4) 
690
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 682
diff changeset
   807
      : m_obj (obj), 
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 682
diff changeset
   808
        m_function (function),
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 682
diff changeset
   809
        m_a1 (a1),
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 682
diff changeset
   810
        m_a2 (a2),
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 682
diff changeset
   811
        m_a3 (a3),
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 682
diff changeset
   812
        m_a4 (a4)
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 682
diff changeset
   813
    { }
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   814
  protected:
690
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 682
diff changeset
   815
    virtual ~EventMemberImpl4 () {}
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   816
  private:
690
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 682
diff changeset
   817
    virtual void Notify (void) { 
946
f589f6cf42ca rename traits to handle Ptr<> object pointers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 944
diff changeset
   818
      (EventMemberImplObjTraits<OBJ>::GetReference (m_obj).*m_function) (m_a1, m_a2, m_a3, m_a4);
690
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 682
diff changeset
   819
    }
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 682
diff changeset
   820
    OBJ m_obj;
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   821
    MEM m_function;
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
   822
    typename TypeTraits<T1>::ReferencedType m_a1;
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
   823
    typename TypeTraits<T2>::ReferencedType m_a2;
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
   824
    typename TypeTraits<T3>::ReferencedType m_a3;
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
   825
    typename TypeTraits<T4>::ReferencedType m_a4;
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   826
  } *ev = new EventMemberImpl4 (obj, mem_ptr, a1, a2, a3, a4);
1008
6f2ea723a1db use a Ptr<> to manage EventImpl instances
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 963
diff changeset
   827
  return Ptr<EventImpl> (ev, false);
75
0f3f4b0a158b reorganize the implementation of template member methods in Simulator class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 71
diff changeset
   828
}
0f3f4b0a158b reorganize the implementation of template member methods in Simulator class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 71
diff changeset
   829
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   830
template <typename MEM, typename OBJ, 
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
   831
          typename T1, typename T2, typename T3, typename T4, typename T5>
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   832
Ptr<EventImpl> Simulator::MakeEvent (MEM mem_ptr, OBJ obj, 
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   833
                                     T1 a1, T2 a2, T3 a3, T4 a4, T5 a5) 
75
0f3f4b0a158b reorganize the implementation of template member methods in Simulator class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 71
diff changeset
   834
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   835
  // five argument version
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   836
  class EventMemberImpl5 : public EventImpl {
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   837
  public:
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   838
    EventMemberImpl5 (OBJ obj, MEM function, T1 a1, T2 a2, T3 a3, T4 a4, T5 a5) 
690
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 682
diff changeset
   839
      : m_obj (obj), 
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 682
diff changeset
   840
        m_function (function),
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 682
diff changeset
   841
        m_a1 (a1),
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 682
diff changeset
   842
        m_a2 (a2),
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 682
diff changeset
   843
        m_a3 (a3),
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 682
diff changeset
   844
        m_a4 (a4),
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 682
diff changeset
   845
        m_a5 (a5)
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 682
diff changeset
   846
    { }
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   847
  protected:
690
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 682
diff changeset
   848
    virtual ~EventMemberImpl5 () {}
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   849
  private:
690
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 682
diff changeset
   850
    virtual void Notify (void) { 
946
f589f6cf42ca rename traits to handle Ptr<> object pointers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 944
diff changeset
   851
      (EventMemberImplObjTraits<OBJ>::GetReference (m_obj).*m_function) (m_a1, m_a2, m_a3, m_a4, m_a5);
690
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 682
diff changeset
   852
    }
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 682
diff changeset
   853
    OBJ m_obj;
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
   854
    MEM m_function;
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
   855
    typename TypeTraits<T1>::ReferencedType m_a1;
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
   856
    typename TypeTraits<T2>::ReferencedType m_a2;
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
   857
    typename TypeTraits<T3>::ReferencedType m_a3;
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
   858
    typename TypeTraits<T4>::ReferencedType m_a4;
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
   859
    typename TypeTraits<T5>::ReferencedType m_a5;
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   860
  } *ev = new EventMemberImpl5 (obj, mem_ptr, a1, a2, a3, a4, a5);
1008
6f2ea723a1db use a Ptr<> to manage EventImpl instances
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 963
diff changeset
   861
  return Ptr<EventImpl> (ev, false);
75
0f3f4b0a158b reorganize the implementation of template member methods in Simulator class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 71
diff changeset
   862
}
0f3f4b0a158b reorganize the implementation of template member methods in Simulator class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 71
diff changeset
   863
947
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   864
template <typename U1, typename T1>
1008
6f2ea723a1db use a Ptr<> to manage EventImpl instances
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 963
diff changeset
   865
Ptr<EventImpl> Simulator::MakeEvent (void (*f) (U1), T1 a1) 
75
0f3f4b0a158b reorganize the implementation of template member methods in Simulator class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 71
diff changeset
   866
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   867
  // one arg version
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   868
  class EventFunctionImpl1 : public EventImpl {
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   869
  public:
947
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   870
    typedef void (*F)(U1);
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   871
      
947
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   872
    EventFunctionImpl1 (F function, T1 a1) 
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   873
      : m_function (function),
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   874
        m_a1 (a1)
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   875
    { }
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   876
  protected:
947
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   877
    virtual ~EventFunctionImpl1 () {}
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   878
  private:
947
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   879
    virtual void Notify (void) { 
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   880
      (*m_function) (m_a1);
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   881
    }
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   882
    F m_function;
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   883
    typename TypeTraits<T1>::ReferencedType m_a1;
1008
6f2ea723a1db use a Ptr<> to manage EventImpl instances
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 963
diff changeset
   884
  } *ev = new EventFunctionImpl1 (f, a1);
6f2ea723a1db use a Ptr<> to manage EventImpl instances
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 963
diff changeset
   885
  return Ptr<EventImpl> (ev, false);
75
0f3f4b0a158b reorganize the implementation of template member methods in Simulator class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 71
diff changeset
   886
}
0f3f4b0a158b reorganize the implementation of template member methods in Simulator class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 71
diff changeset
   887
947
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   888
template <typename U1, typename U2, typename T1, typename T2>
1008
6f2ea723a1db use a Ptr<> to manage EventImpl instances
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 963
diff changeset
   889
Ptr<EventImpl> Simulator::MakeEvent (void (*f) (U1,U2), T1 a1, T2 a2) 
75
0f3f4b0a158b reorganize the implementation of template member methods in Simulator class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 71
diff changeset
   890
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   891
  // two arg version
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   892
  class EventFunctionImpl2 : public EventImpl {
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   893
  public:
947
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   894
    typedef void (*F)(U1, U2);
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   895
      
947
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   896
    EventFunctionImpl2 (F function, T1 a1, T2 a2) 
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   897
      : m_function (function),
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   898
        m_a1 (a1),
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   899
        m_a2 (a2)
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   900
    {}
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   901
  protected:
947
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   902
    virtual ~EventFunctionImpl2 () {}
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   903
  private:
947
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   904
    virtual void Notify (void) { 
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   905
      (*m_function) (m_a1, m_a2);
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   906
    }
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   907
    F m_function;
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   908
    typename TypeTraits<T1>::ReferencedType m_a1;
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   909
    typename TypeTraits<T2>::ReferencedType m_a2;
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   910
  } *ev = new EventFunctionImpl2 (f, a1, a2);
1008
6f2ea723a1db use a Ptr<> to manage EventImpl instances
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 963
diff changeset
   911
  return Ptr<EventImpl> (ev, false);
75
0f3f4b0a158b reorganize the implementation of template member methods in Simulator class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 71
diff changeset
   912
}
0f3f4b0a158b reorganize the implementation of template member methods in Simulator class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 71
diff changeset
   913
947
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   914
template <typename U1, typename U2, typename U3,
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   915
          typename T1, typename T2, typename T3>
1008
6f2ea723a1db use a Ptr<> to manage EventImpl instances
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 963
diff changeset
   916
Ptr<EventImpl> Simulator::MakeEvent (void (*f) (U1,U2,U3), T1 a1, T2 a2, T3 a3)
75
0f3f4b0a158b reorganize the implementation of template member methods in Simulator class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 71
diff changeset
   917
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   918
  // three arg version
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   919
  class EventFunctionImpl3 : public EventImpl {
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   920
  public:
947
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   921
    typedef void (*F)(U1, U2, U3);
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   922
      
947
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   923
    EventFunctionImpl3 (F function, T1 a1, T2 a2, T3 a3) 
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   924
      : m_function (function),
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   925
        m_a1 (a1),
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   926
        m_a2 (a2),
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   927
        m_a3 (a3)
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   928
    { }
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   929
  protected:
947
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   930
    virtual ~EventFunctionImpl3 () {}
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   931
  private:
947
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   932
    virtual void Notify (void) { 
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   933
      (*m_function) (m_a1, m_a2, m_a3);
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   934
    }
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   935
    F m_function;
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   936
    typename TypeTraits<T1>::ReferencedType m_a1;
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   937
    typename TypeTraits<T2>::ReferencedType m_a2;
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   938
    typename TypeTraits<T3>::ReferencedType m_a3;
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   939
  } *ev = new EventFunctionImpl3 (f, a1, a2, a3);
1008
6f2ea723a1db use a Ptr<> to manage EventImpl instances
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 963
diff changeset
   940
  return Ptr<EventImpl> (ev, false);
75
0f3f4b0a158b reorganize the implementation of template member methods in Simulator class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 71
diff changeset
   941
}
0f3f4b0a158b reorganize the implementation of template member methods in Simulator class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 71
diff changeset
   942
947
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   943
template <typename U1, typename U2, typename U3, typename U4,
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   944
          typename T1, typename T2, typename T3, typename T4>
1008
6f2ea723a1db use a Ptr<> to manage EventImpl instances
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 963
diff changeset
   945
Ptr<EventImpl> Simulator::MakeEvent (void (*f) (U1,U2,U3,U4), T1 a1, T2 a2, T3 a3, T4 a4) 
75
0f3f4b0a158b reorganize the implementation of template member methods in Simulator class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 71
diff changeset
   946
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   947
  // four arg version
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   948
  class EventFunctionImpl4 : public EventImpl {
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   949
  public:
947
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   950
    typedef void (*F)(U1, U2, U3, U4);
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   951
      
947
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   952
    EventFunctionImpl4 (F function, T1 a1, T2 a2, T3 a3, T4 a4) 
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   953
      : m_function (function),
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   954
        m_a1 (a1),
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   955
        m_a2 (a2),
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   956
        m_a3 (a3),
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   957
        m_a4 (a4)
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   958
    { }
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   959
  protected:
947
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   960
    virtual ~EventFunctionImpl4 () {}
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   961
  private:
947
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   962
    virtual void Notify (void) { 
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   963
      (*m_function) (m_a1, m_a2, m_a3, m_a4);
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   964
    }
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   965
    F m_function;
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   966
    typename TypeTraits<T1>::ReferencedType m_a1;
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   967
    typename TypeTraits<T2>::ReferencedType m_a2;
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   968
    typename TypeTraits<T3>::ReferencedType m_a3;
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   969
    typename TypeTraits<T4>::ReferencedType m_a4;
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   970
  } *ev = new EventFunctionImpl4 (f, a1, a2, a3, a4);
1008
6f2ea723a1db use a Ptr<> to manage EventImpl instances
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 963
diff changeset
   971
  return Ptr<EventImpl> (ev, false);
75
0f3f4b0a158b reorganize the implementation of template member methods in Simulator class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 71
diff changeset
   972
}
0f3f4b0a158b reorganize the implementation of template member methods in Simulator class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 71
diff changeset
   973
947
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   974
template <typename U1, typename U2, typename U3, typename U4, typename U5,
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   975
          typename T1, typename T2, typename T3, typename T4, typename T5>
1008
6f2ea723a1db use a Ptr<> to manage EventImpl instances
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 963
diff changeset
   976
Ptr<EventImpl> Simulator::MakeEvent (void (*f) (U1,U2,U3,U4,U5), T1 a1, T2 a2, T3 a3, T4 a4, T5 a5) 
75
0f3f4b0a158b reorganize the implementation of template member methods in Simulator class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 71
diff changeset
   977
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   978
  // five arg version
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   979
  class EventFunctionImpl5 : public EventImpl {
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   980
  public:
947
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   981
    typedef void (*F)(U1,U2,U3,U4,U5);
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   982
      
947
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   983
    EventFunctionImpl5 (F function, T1 a1, T2 a2, T3 a3, T4 a4, T5 a5) 
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   984
      : m_function (function),
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   985
        m_a1 (a1),
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   986
        m_a2 (a2),
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   987
        m_a3 (a3),
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   988
        m_a4 (a4),
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   989
        m_a5 (a5)
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   990
    {}
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   991
  protected:
947
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   992
    virtual ~EventFunctionImpl5 () {}
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
   993
  private:
947
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   994
    virtual void Notify (void) { 
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   995
      (*m_function) (m_a1, m_a2, m_a3, m_a4, m_a5);
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   996
    }
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   997
    F m_function;
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   998
    typename TypeTraits<T1>::ReferencedType m_a1;
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
   999
    typename TypeTraits<T2>::ReferencedType m_a2;
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
  1000
    typename TypeTraits<T3>::ReferencedType m_a3;
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
  1001
    typename TypeTraits<T4>::ReferencedType m_a4;
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
  1002
    typename TypeTraits<T5>::ReferencedType m_a5;
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
  1003
  } *ev = new EventFunctionImpl5 (f, a1, a2, a3, a4, a5);
1008
6f2ea723a1db use a Ptr<> to manage EventImpl instances
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 963
diff changeset
  1004
  return Ptr<EventImpl> (ev, false);
142
dcf83cc9d52a move event generation to MakeEvent methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 131
diff changeset
  1005
}
dcf83cc9d52a move event generation to MakeEvent methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 131
diff changeset
  1006
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
  1007
template <typename MEM, typename OBJ>
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
  1008
EventId Simulator::Schedule (Time const &time, MEM mem_ptr, OBJ obj) 
142
dcf83cc9d52a move event generation to MakeEvent methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 131
diff changeset
  1009
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
  1010
  return Schedule (time, MakeEvent (mem_ptr, obj));
142
dcf83cc9d52a move event generation to MakeEvent methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 131
diff changeset
  1011
}
dcf83cc9d52a move event generation to MakeEvent methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 131
diff changeset
  1012
dcf83cc9d52a move event generation to MakeEvent methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 131
diff changeset
  1013
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
  1014
template <typename MEM, typename OBJ,
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
  1015
          typename T1>
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
  1016
EventId Simulator::Schedule (Time const &time, MEM mem_ptr, OBJ obj, T1 a1) 
142
dcf83cc9d52a move event generation to MakeEvent methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 131
diff changeset
  1017
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
  1018
  return Schedule (time, MakeEvent (mem_ptr, obj, a1));
142
dcf83cc9d52a move event generation to MakeEvent methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 131
diff changeset
  1019
}
dcf83cc9d52a move event generation to MakeEvent methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 131
diff changeset
  1020
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
  1021
template <typename MEM, typename OBJ, 
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
  1022
          typename T1, typename T2>
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
  1023
EventId Simulator::Schedule (Time const &time, MEM mem_ptr, OBJ obj, T1 a1, T2 a2)
142
dcf83cc9d52a move event generation to MakeEvent methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 131
diff changeset
  1024
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
  1025
  return Schedule (time, MakeEvent (mem_ptr, obj, a1, a2));
142
dcf83cc9d52a move event generation to MakeEvent methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 131
diff changeset
  1026
}
dcf83cc9d52a move event generation to MakeEvent methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 131
diff changeset
  1027
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
  1028
template <typename MEM, typename OBJ,
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
  1029
          typename T1, typename T2, typename T3>
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
  1030
EventId Simulator::Schedule (Time const &time, MEM mem_ptr, OBJ obj, T1 a1, T2 a2, T3 a3) 
142
dcf83cc9d52a move event generation to MakeEvent methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 131
diff changeset
  1031
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
  1032
  return Schedule (time, MakeEvent (mem_ptr, obj, a1, a2, a3));
142
dcf83cc9d52a move event generation to MakeEvent methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 131
diff changeset
  1033
}
dcf83cc9d52a move event generation to MakeEvent methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 131
diff changeset
  1034
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
  1035
template <typename MEM, typename OBJ, 
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
  1036
          typename T1, typename T2, typename T3, typename T4>
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
  1037
EventId Simulator::Schedule (Time const &time, MEM mem_ptr, OBJ obj, T1 a1, T2 a2, T3 a3, T4 a4) 
142
dcf83cc9d52a move event generation to MakeEvent methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 131
diff changeset
  1038
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
  1039
  return Schedule (time, MakeEvent (mem_ptr, obj, a1, a2, a3, a4));
142
dcf83cc9d52a move event generation to MakeEvent methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 131
diff changeset
  1040
}
dcf83cc9d52a move event generation to MakeEvent methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 131
diff changeset
  1041
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
  1042
template <typename MEM, typename OBJ, 
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
  1043
          typename T1, typename T2, typename T3, typename T4, typename T5>
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
  1044
EventId Simulator::Schedule (Time const &time, MEM mem_ptr, OBJ obj, 
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
  1045
                             T1 a1, T2 a2, T3 a3, T4 a4, T5 a5) 
142
dcf83cc9d52a move event generation to MakeEvent methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 131
diff changeset
  1046
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
  1047
  return Schedule (time, MakeEvent (mem_ptr, obj, a1, a2, a3, a4, a5));
142
dcf83cc9d52a move event generation to MakeEvent methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 131
diff changeset
  1048
}
dcf83cc9d52a move event generation to MakeEvent methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 131
diff changeset
  1049
947
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
  1050
template <typename U1, typename T1>
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
  1051
EventId Simulator::Schedule (Time const &time, void (*f) (U1), T1 a1) 
142
dcf83cc9d52a move event generation to MakeEvent methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 131
diff changeset
  1052
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
  1053
  return Schedule (time, MakeEvent (f, a1));
142
dcf83cc9d52a move event generation to MakeEvent methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 131
diff changeset
  1054
}
dcf83cc9d52a move event generation to MakeEvent methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 131
diff changeset
  1055
947
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
  1056
template <typename U1, typename U2, 
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
  1057
          typename T1, typename T2>
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
  1058
EventId Simulator::Schedule (Time const &time, void (*f) (U1,U2), T1 a1, T2 a2) 
142
dcf83cc9d52a move event generation to MakeEvent methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 131
diff changeset
  1059
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
  1060
  return Schedule (time, MakeEvent (f, a1, a2));
142
dcf83cc9d52a move event generation to MakeEvent methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 131
diff changeset
  1061
}
dcf83cc9d52a move event generation to MakeEvent methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 131
diff changeset
  1062
947
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
  1063
template <typename U1, typename U2, typename U3,
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
  1064
          typename T1, typename T2, typename T3>
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
  1065
EventId Simulator::Schedule (Time const &time, void (*f) (U1,U2,U3), T1 a1, T2 a2, T3 a3)
142
dcf83cc9d52a move event generation to MakeEvent methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 131
diff changeset
  1066
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
  1067
  return Schedule (time, MakeEvent (f, a1, a2, a3));
142
dcf83cc9d52a move event generation to MakeEvent methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 131
diff changeset
  1068
}
dcf83cc9d52a move event generation to MakeEvent methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 131
diff changeset
  1069
947
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
  1070
template <typename U1, typename U2, typename U3, typename U4,
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
  1071
          typename T1, typename T2, typename T3, typename T4>
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
  1072
EventId Simulator::Schedule (Time const &time, void (*f) (U1,U2,U3,U4), T1 a1, T2 a2, T3 a3, T4 a4) 
142
dcf83cc9d52a move event generation to MakeEvent methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 131
diff changeset
  1073
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
  1074
  return Schedule (time, MakeEvent (f, a1, a2, a3, a4));
142
dcf83cc9d52a move event generation to MakeEvent methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 131
diff changeset
  1075
}
dcf83cc9d52a move event generation to MakeEvent methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 131
diff changeset
  1076
947
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
  1077
template <typename U1, typename U2, typename U3, typename U4, typename U5,
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
  1078
          typename T1, typename T2, typename T3, typename T4, typename T5>
755e3df63fc2 fix testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 946
diff changeset
  1079
EventId Simulator::Schedule (Time const &time, void (*f) (U1,U2,U3,U4,U5), T1 a1, T2 a2, T3 a3, T4 a4, T5 a5) 
142
dcf83cc9d52a move event generation to MakeEvent methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 131
diff changeset
  1080
{
150
663120712cd9 fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 146
diff changeset
  1081
  return Schedule (time, MakeEvent (f, a1, a2, a3, a4, a5));
75
0f3f4b0a158b reorganize the implementation of template member methods in Simulator class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 71
diff changeset
  1082
}
0f3f4b0a158b reorganize the implementation of template member methods in Simulator class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 71
diff changeset
  1083
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
  1084
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
  1085
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
  1086
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
  1087
template <typename MEM, typename OBJ>
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
  1088
EventId
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
  1089
Simulator::ScheduleNow (MEM mem_ptr, OBJ obj) 
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
  1090
{
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
  1091
  return ScheduleNow (MakeEvent (mem_ptr, obj));
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
  1092
}
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
  1093
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
  1094
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
  1095
template <typename MEM, typename OBJ, 
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
  1096
          typename T1>
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
  1097
EventId
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
  1098
Simulator::ScheduleNow (MEM mem_ptr, OBJ obj, T1 a1) 
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
  1099
{
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
  1100
  return ScheduleNow (MakeEvent (mem_ptr, obj, a1));
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
  1101
}
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
  1102
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
  1103
template <typename MEM, typename OBJ, 
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
  1104
          typename T1, typename T2>
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
  1105
EventId
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
  1106
Simulator::ScheduleNow (MEM mem_ptr, OBJ obj, T1 a1, T2 a2) 
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
  1107
{
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
  1108
  return ScheduleNow (MakeEvent (mem_ptr, obj, a1, a2));
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
  1109
}
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
  1110
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
  1111
template <typename MEM, typename OBJ, 
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
  1112
          typename T1, typename T2, typename T3>
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
  1113
EventId
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
  1114
Simulator::ScheduleNow (MEM mem_ptr, OBJ obj, T1 a1, T2 a2, T3 a3) 
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
  1115
{
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
  1116
  return ScheduleNow (MakeEvent (mem_ptr, obj, a1, a2, a3));
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
  1117
}
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
  1118
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
  1119
template <typename MEM, typename OBJ, 
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
  1120
          typename T1, typename T2, typename T3, typename T4>
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
  1121
EventId
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
  1122
Simulator::ScheduleNow (MEM mem_ptr, OBJ obj, T1 a1, T2 a2, T3 a3, T4 a4) 
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
  1123
{
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
  1124
  return ScheduleNow (MakeEvent (mem_ptr, obj, a1, a2, a3, a4));
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
  1125
}
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
  1126
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
  1127
template <typename MEM, typename OBJ, 
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
  1128
          typename T1, typename T2, typename T3, typename T4, typename T5>
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
  1129
EventId
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
  1130
Simulator::ScheduleNow (MEM mem_ptr, OBJ obj, 
690
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 682
diff changeset
  1131
                        T1 a1, T2 a2, T3 a3, T4 a4, T5 a5) 
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
  1132
{
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
  1133
  return ScheduleNow (MakeEvent (mem_ptr, obj, a1, a2, a3, a4, a5));
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
  1134
}
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
  1135
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
  1136
template <typename U1,
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
  1137
          typename T1>
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
  1138
EventId
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
  1139
Simulator::ScheduleNow (void (*f) (U1), T1 a1) 
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
  1140
{
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
  1141
  return ScheduleNow (MakeEvent (f, a1));
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
  1142
}
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
  1143
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
  1144
template <typename U1, typename U2,
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
  1145
          typename T1, typename T2>
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
  1146
EventId
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
  1147
Simulator::ScheduleNow (void (*f) (U1,U2), T1 a1, T2 a2) 
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
  1148
{
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
  1149
  return ScheduleNow (MakeEvent (f, a1, a2));
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
  1150
}
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
  1151
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
  1152
template <typename U1, typename U2, typename U3,
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
  1153
          typename T1, typename T2, typename T3>
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
  1154
EventId
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
  1155
Simulator::ScheduleNow (void (*f) (U1,U2,U3), T1 a1, T2 a2, T3 a3)
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
  1156
{
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
  1157
  return ScheduleNow (MakeEvent (f, a1, a2, a3));
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
  1158
}
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
  1159
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
  1160
template <typename U1, typename U2, typename U3, typename U4,
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
  1161
          typename T1, typename T2, typename T3, typename T4>
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
  1162
EventId
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
  1163
Simulator::ScheduleNow (void (*f) (U1,U2,U3,U4), T1 a1, T2 a2, T3 a3, T4 a4) 
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
  1164
{
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
  1165
  return ScheduleNow (MakeEvent (f, a1, a2, a3, a4));
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
  1166
}
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
  1167
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
  1168
template <typename U1, typename U2, typename U3, typename U4, typename U5,
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
  1169
          typename T1, typename T2, typename T3, typename T4, typename T5>
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
  1170
EventId
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
  1171
Simulator::ScheduleNow (void (*f) (U1,U2,U3,U4,U5), T1 a1, T2 a2, T3 a3, T4 a4, T5 a5) 
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
  1172
{
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
  1173
  return ScheduleNow (MakeEvent (f, a1, a2, a3, a4, a5));
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
  1174
}
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
  1175
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
  1176
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
  1177
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
  1178
template <typename MEM, typename OBJ>
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
  1179
EventId
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
  1180
Simulator::ScheduleDestroy (MEM mem_ptr, OBJ obj) 
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
  1181
{
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
  1182
  return ScheduleDestroy (MakeEvent (mem_ptr, obj));
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
  1183
}
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
  1184
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
  1185
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
  1186
template <typename MEM, typename OBJ, 
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
  1187
          typename T1>
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
  1188
EventId
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
  1189
Simulator::ScheduleDestroy (MEM mem_ptr, OBJ obj, T1 a1) 
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
  1190
{
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
  1191
  return ScheduleDestroy (MakeEvent (mem_ptr, obj, a1));
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
  1192
}
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
  1193
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
  1194
template <typename MEM, typename OBJ, 
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
  1195
          typename T1, typename T2>
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
  1196
EventId
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
  1197
Simulator::ScheduleDestroy (MEM mem_ptr, OBJ obj, T1 a1, T2 a2) 
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
  1198
{
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
  1199
  return ScheduleDestroy (MakeEvent (mem_ptr, obj, a1, a2));
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
  1200
}
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
  1201
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
  1202
template <typename MEM, typename OBJ, 
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
  1203
          typename T1, typename T2, typename T3>
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
  1204
EventId
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
  1205
Simulator::ScheduleDestroy (MEM mem_ptr, OBJ obj, T1 a1, T2 a2, T3 a3) 
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
  1206
{
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
  1207
  return ScheduleDestroy (MakeEvent (mem_ptr, obj, a1, a2, a3));
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
  1208
}
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
  1209
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
  1210
template <typename MEM, typename OBJ,
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
  1211
          typename T1, typename T2, typename T3, typename T4>
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
  1212
EventId
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
  1213
Simulator::ScheduleDestroy (MEM mem_ptr, OBJ obj, T1 a1, T2 a2, T3 a3, T4 a4) 
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
  1214
{
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
  1215
  return ScheduleDestroy (MakeEvent (mem_ptr, obj, a1, a2, a3, a4));
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
  1216
}
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
  1217
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
  1218
template <typename MEM, typename OBJ, 
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
  1219
          typename T1, typename T2, typename T3, typename T4, typename T5>
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
  1220
EventId
1295
6d84582d9999 fix first part of errors introduced by new tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1011
diff changeset
  1221
Simulator::ScheduleDestroy (MEM mem_ptr, OBJ obj, 
690
48cf425136d6 fix bug 24
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 682
diff changeset
  1222
                            T1 a1, T2 a2, T3 a3, T4 a4, T5 a5) 
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
  1223
{
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
  1224
  return ScheduleDestroy (MakeEvent (mem_ptr, obj, a1, a2, a3, a4, a5));
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
  1225
}
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
  1226
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
  1227
template <typename U1,
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
  1228
          typename T1>
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
  1229
EventId
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
  1230
Simulator::ScheduleDestroy (void (*f) (U1), T1 a1) 
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
  1231
{
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
  1232
  return ScheduleDestroy (MakeEvent (f, a1));
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
  1233
}
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
  1234
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
  1235
template <typename U1, typename U2,
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
  1236
          typename T1, typename T2>
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
  1237
EventId
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
  1238
Simulator::ScheduleDestroy (void (*f) (U1,U2), T1 a1, T2 a2) 
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
  1239
{
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
  1240
  return ScheduleDestroy (MakeEvent (f, a1, a2));
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
  1241
}
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
  1242
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
  1243
template <typename U1, typename U2, typename U3,
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
  1244
          typename T1, typename T2, typename T3>
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
  1245
EventId
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
  1246
Simulator::ScheduleDestroy (void (*f) (U1,U2,U3), T1 a1, T2 a2, T3 a3)
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
  1247
{
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
  1248
  return ScheduleDestroy (MakeEvent (f, a1, a2, a3));
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
  1249
}
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
  1250
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
  1251
template <typename U1, typename U2, typename U3, typename U4,
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
  1252
          typename T1, typename T2, typename T3, typename T4>
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
  1253
EventId
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
  1254
Simulator::ScheduleDestroy (void (*f) (U1,U2,U3,U4), T1 a1, T2 a2, T3 a3, T4 a4) 
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
  1255
{
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
  1256
  return ScheduleDestroy (MakeEvent (f, a1, a2, a3, a4));
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
  1257
}
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
  1258
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
  1259
template <typename U1, typename U2, typename U3, typename U4, typename U5,
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
  1260
          typename T1, typename T2, typename T3, typename T4, typename T5>
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
  1261
EventId
948
8dc076230f11 finish support for references as arguments to event handlers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 947
diff changeset
  1262
Simulator::ScheduleDestroy (void (*f) (U1,U2,U3,U4,U5), T1 a1, T2 a2, T3 a3, T4 a4, T5 a5) 
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
  1263
{
963
3a7a66d1942c add support to cancel Now and Destroy events.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 948
diff changeset
  1264
  return ScheduleDestroy (MakeEvent (f, a1, a2, a3, a4, a5));
146
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
  1265
}
2c9ef359e320 implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 145
diff changeset
  1266
75
0f3f4b0a158b reorganize the implementation of template member methods in Simulator class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 71
diff changeset
  1267
}; // namespace ns3
0f3f4b0a158b reorganize the implementation of template member methods in Simulator class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 71
diff changeset
  1268
9
2c31ae7c94db import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
  1269
#endif /* SIMULATOR_H */