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