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