src/network/utils/sequence-number.h
author Sébastien Deronne <sebastien.deronne@gmail.com>
Wed, 08 Jul 2015 23:44:17 +0200
changeset 11479 a3dcf66928f3
parent 11117 fbbbfb37b251
child 11598 b4d1339b4913
permissions -rw-r--r--
add support for HT MCS and A-MPDU in radiotap headers
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
6434
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
     1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
     2
//
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
     3
// Copyright (c) 2008-2010 INESC Porto
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
     4
//
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
     5
// This program is free software; you can redistribute it and/or modify
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
     6
// it under the terms of the GNU General Public License version 2 as
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
     7
// published by the Free Software Foundation;
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
     8
//
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
     9
// This program is distributed in the hope that it will be useful,
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    10
// but WITHOUT ANY WARRANTY; without even the implied warranty of
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    11
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    12
// GNU General Public License for more details.
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    13
//
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    14
// You should have received a copy of the GNU General Public License
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    15
// along with this program; if not, write to the Free Software
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    16
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    17
//
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    18
// Author: Gustavo J. A. M. Carneiro  <gjc@inescporto.pt> <gjcarneiro@gmail.com>
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    19
//
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    20
7353
09fccf6195ea bug 1203: Inconsistently named ifndef/define macros in ns-3 headers
Vedran Miletic <rivanvx@gmail.com>
parents: 7182
diff changeset
    21
#ifndef NS3_SEQ_NUM_H
09fccf6195ea bug 1203: Inconsistently named ifndef/define macros in ns-3 headers
Vedran Miletic <rivanvx@gmail.com>
parents: 7182
diff changeset
    22
#define NS3_SEQ_NUM_H
6434
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    23
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    24
#include <limits>
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    25
#include <iostream>
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    26
#include <stdint.h>
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    27
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    28
namespace ns3 {
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    29
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    30
/**
11117
fbbbfb37b251 [Doxygen] Clean up references to non-POD TracedValueCallbacks
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 11010
diff changeset
    31
 * \ingroup network
6434
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    32
 * \brief Generic "sequence number" class
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    33
 *
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    34
 * This class can be used to handle sequence numbers.  In networking
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    35
 * protocols, sequence numbers are fixed precision integer numbers
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    36
 * that are used to order events relative to each other.  A sequence
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    37
 * number is expected to increase over time but, since it has a
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    38
 * limited number of bits, the number will "wrap around" from the
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    39
 * maximum value that can represented with the given number of bits
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    40
 * back to zero.  For this reason, comparison of two sequence numbers,
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    41
 * and subtraction, is non-trivial.  The SequenceNumber class behaves
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    42
 * like a number, with the usual arythmetic operators implemented, but
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    43
 * knows how to correctly compare and subtract sequence numbers.
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    44
 *
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    45
 * This is a templated class.  To use it you need to supply two
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    46
 * fundamental types as template parameters: NUMERIC_TYPE and
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    47
 * SIGNED_TYPE.  For instance, SequenceNumber<uint32_t, int32_t> gives
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    48
 * you a 32-bit sequence number, while SequenceNumber<uint16_t,
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    49
 * int16_t> is a 16-bit one.  For your convenience, these are
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    50
 * typedef'ed as SequenceNumber32 and SequenceNumber16, respectively.
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    51
 */
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    52
template<typename NUMERIC_TYPE, typename SIGNED_TYPE>
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    53
class SequenceNumber
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    54
{
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    55
public:
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    56
  SequenceNumber ()
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    57
    : m_value (0)
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    58
  {}
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    59
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    60
  /**
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    61
   * \brief Constructs a SequenceNumber with the given value
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    62
   * \param value the sequence number value
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    63
   */ 
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    64
  explicit SequenceNumber (NUMERIC_TYPE value)
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    65
    : m_value (value)
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    66
  {}
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    67
10416
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
    68
  /**
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
    69
   * \brief Constructs a SequenceNumber from a copy
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
    70
   * \param value sequence number to copy
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
    71
   */
6434
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    72
  SequenceNumber (SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE> const &value)
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    73
    : m_value (value.m_value)
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    74
  {}
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    75
10416
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
    76
  /**
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
    77
   * \brief Constructs a SequenceNumber from an assignment of given value
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
    78
   * \param value sequence number to copy
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
    79
   * \returns reference to the assignee
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
    80
   */
6434
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    81
  SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE>& operator= (NUMERIC_TYPE value)
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    82
  {
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    83
    m_value = value;
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    84
    return *this;
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    85
  }
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    86
10416
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
    87
  /**
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
    88
   * \brief Constructs a SequenceNumber from an assignment of another sequence number
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
    89
   * \param value sequence number to copy
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
    90
   * \returns reference to the assignee
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
    91
   */
6434
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    92
  SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE>& operator= (SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE> const &value)
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    93
  {
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    94
    m_value = value.m_value;
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    95
    return *this;
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    96
  }
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    97
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    98
#if 0
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
    99
  // a SequenceNumber implicitly converts to a plain number, but not the other way around
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   100
  operator NUMERIC_TYPE () const
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   101
  {
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   102
    return m_value;
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   103
  }
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   104
#endif
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   105
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   106
  /**
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   107
   * \brief Extracts the numeric value of the sequence number
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   108
   * \returns the sequence number value
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   109
   */ 
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   110
  NUMERIC_TYPE GetValue () const
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   111
  {
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   112
    return m_value;
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   113
  }
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   114
10416
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   115
  /**
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   116
   * \brief Prefix increment operator
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   117
   * \returns incremented sequence number
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   118
   */ 
6434
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   119
  SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE> operator++ ()
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   120
  {
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   121
    m_value++;
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   122
    return *this;
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   123
  }
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   124
10416
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   125
  /**
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   126
   * \brief Postfix increment operator
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   127
   * \returns incremented sequence number
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   128
   */ 
6434
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   129
  SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE> operator++ (int)
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   130
  {
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   131
    SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE> retval (m_value);
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   132
    m_value++;
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   133
    return retval;
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   134
  }
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   135
10416
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   136
  /**
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   137
   * \brief Prefix decrement operator
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   138
   * \returns decremented sequence number
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   139
   */ 
6434
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   140
  SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE> operator-- ()
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   141
  {
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   142
    m_value--;
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   143
    return *this;
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   144
  }
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   145
10416
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   146
   /**
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   147
   * \brief Postfix decrement operator
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   148
   * \returns incremented sequence number
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   149
   */ 
6434
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   150
  SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE> operator-- (int)
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   151
  {
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   152
    SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE> retval (m_value);
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   153
    m_value--;
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   154
    return retval;
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   155
  }
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   156
10416
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   157
  /**
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   158
   * \brief Plus equals operator
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   159
   * \param value value to add to sequence number
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   160
   * \returns incremented sequence number
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   161
   */ 
6434
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   162
  SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE>& operator+= (SIGNED_TYPE value)
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   163
  {
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   164
    m_value += value;
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   165
    return *this;
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   166
  }
10416
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   167
  
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   168
  /**
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   169
   * \brief Minus equals operator
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   170
   * \param value value to subtract from sequence number
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   171
   * \returns decremented sequence number
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   172
   */ 
6434
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   173
  SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE>& operator-= (SIGNED_TYPE value)
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   174
  {
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   175
    m_value -= value;
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   176
    return *this;
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   177
  }
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   178
10416
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   179
  /**
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   180
   * \brief Operator defining addition of two sequence numbers
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   181
   * \param other sequence number added to this
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   182
   * \returns sequence number representing sum
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   183
   */
6434
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   184
  SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE> operator + (const SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE> &other) const
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   185
  {
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   186
    return SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE> (m_value + other.m_value);
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   187
  }
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   188
10416
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   189
  /**
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   190
   * \brief Addition operator for adding numeric value to sequence number
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   191
   * \param delta value to add to sequence number
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   192
   * \returns sequence number representing sum
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   193
   */
6434
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   194
  SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE> operator + (SIGNED_TYPE delta) const
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   195
  {
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   196
    return SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE> (m_value + delta);
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   197
  }
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   198
10416
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   199
  /**
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   200
   * \brief Subtraction operator for subtracting numeric value from sequence number
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   201
   * \param delta value to subtract from sequence number
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   202
   * \returns sequence number representing difference
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   203
   */
6434
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   204
  SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE> operator - (SIGNED_TYPE delta) const
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   205
  {
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   206
    return SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE> (m_value - delta);
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   207
  }
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   208
10416
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   209
  /**
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   210
   * \brief Subtraction operator for subtracting sequence number from sequence number
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   211
   * \param other sequence number to subtract from this sequence number
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   212
   * \returns numeric value representing the difference
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   213
   */
6434
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   214
  SIGNED_TYPE operator - (const SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE> &other) const
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   215
  {
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   216
    static const NUMERIC_TYPE maxValue = std::numeric_limits<NUMERIC_TYPE>::max ();
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   217
    static const NUMERIC_TYPE halfMaxValue = std::numeric_limits<NUMERIC_TYPE>::max () / 2;
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   218
    if (m_value > other.m_value)
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   219
      {
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   220
        NUMERIC_TYPE diff = m_value - other.m_value;
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   221
        if (diff < halfMaxValue)
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   222
          {
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   223
            return static_cast<SIGNED_TYPE> (diff);
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   224
          }
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   225
        else
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   226
          {
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   227
            //      |------------|------------|
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   228
            //       ====                  ===
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   229
            //          ^                  ^
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   230
            //       other.m_value      m_value
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   231
            return -(static_cast<SIGNED_TYPE> (maxValue - m_value + 1 + other.m_value));
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   232
          }
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   233
      }
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   234
    else
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   235
      {
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   236
        NUMERIC_TYPE diff = other.m_value - m_value;
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   237
        if (diff < halfMaxValue)
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   238
          {
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   239
            //      |------------|------------|
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   240
            //          ========
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   241
            //          ^      ^
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   242
            //     m_value   other.m_value
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   243
            return -(static_cast<SIGNED_TYPE> (diff));
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   244
          }
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   245
        else
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   246
          {
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   247
            //      |------------|------------|
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   248
            //       ====                  ===
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   249
            //          ^                  ^
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   250
            //       m_value      other.m_value
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   251
            return static_cast<SIGNED_TYPE> (maxValue - other.m_value + 1 + m_value);
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   252
          }
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   253
      }
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   254
  }
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   255
10416
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   256
  /**
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   257
   * Here is the critical part, how the comparison is made taking into
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   258
   * account wrap-around.  From RFC 3626:
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   259
   *
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   260
   * The sequence number S1 is said to be "greater than" the sequence
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   261
   * number S2 if:
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   262
   *      S1 > S2 AND S1 - S2 <= MAXVALUE/2 OR
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   263
   *      S2 > S1 AND S2 - S1 > MAXVALUE/2
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   264
   *
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   265
   * \param other sequence number to compare to this one
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   266
   * \returns true if this sequence number is greater than other
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   267
   */
6434
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   268
  bool operator > (const SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE> &other) const
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   269
  {
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   270
    static const NUMERIC_TYPE halfMaxValue = std::numeric_limits<NUMERIC_TYPE>::max () / 2;
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   271
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   272
    return (((m_value > other.m_value) && (m_value - other.m_value) <= halfMaxValue)
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   273
            || ((other.m_value > m_value) && (other.m_value - m_value) > halfMaxValue));
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   274
  }
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   275
10416
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   276
  /**
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   277
   * \brief Equality operator for comparing sequence number
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   278
   * \param other sequence number to compare to this sequence number
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   279
   * \returns true if the sequence numbers are equal
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   280
   */
6434
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   281
  bool operator == (const SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE> &other) const
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   282
  {
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   283
    return (m_value == other.m_value);
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   284
  }
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   285
10416
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   286
  /**
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   287
   * \brief Inequality operator for comparing sequence numbers
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   288
   * \param other sequence number to compare to this sequence number
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   289
   * \returns true if the sequence numbers are not equal
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   290
   */
6434
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   291
  bool operator != (const SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE> &other) const
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   292
  {
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   293
    return (m_value != other.m_value);
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   294
  }
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   295
10416
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   296
  /**
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   297
   * \brief Less than or equal operator for comparing sequence numbers
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   298
   * \param other sequence number to compare to this sequence number
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   299
   * \returns true if this sequence number is less than or equal to other
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   300
   */
6434
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   301
  bool operator <= (const SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE> &other) const
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   302
  {
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   303
    return (!this->operator> (other));
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   304
  }
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   305
10416
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   306
  /**
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   307
   * \brief Greater than or equal operator for comparing sequence numbers
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   308
   * \param other sequence number to compare to this sequence number
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   309
   * \returns true if this sequence number is greater than or equal to other
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   310
   */
6434
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   311
  bool operator >= (const SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE> &other) const
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   312
  {
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   313
    return (this->operator> (other) || this->operator== (other));
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   314
  }
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   315
10416
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   316
  /**
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   317
   * \brief Less than operator for comparing sequence numbers
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   318
   * \param other sequence number to compare to this sequence number
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   319
   * \returns true if this sequence number is less than other
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   320
   */
6434
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   321
  bool operator < (const SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE> &other) const
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   322
  {
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   323
    return !this->operator> (other) && m_value != other.m_value;
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   324
  }
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   325
10416
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   326
  /**
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   327
   * \brief For printing sequence number
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   328
   * \param os output stream
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   329
   * \param val sequence number to display
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   330
   * \returns output stream os
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   331
   */
6434
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   332
  template<typename NUMERIC_TYPE2, typename SIGNED_TYPE2>
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   333
  friend std::ostream & operator<< (std::ostream& os, const SequenceNumber<NUMERIC_TYPE2, SIGNED_TYPE2> &val);
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   334
10416
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   335
  /**
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   336
   * \brief For loading sequence number from input streams
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   337
   * \param is input stream
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   338
   * \param val sequence number to load
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   339
   * \returns input stream is
b22e9f50a0da Network Doxygen warnings start
Brian Swenson <bswenson3@gatech.edu>
parents: 7353
diff changeset
   340
   */
6434
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   341
  template<typename NUMERIC_TYPE2, typename SIGNED_TYPE2>
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   342
  friend std::istream & operator >> (std::istream &is, const SequenceNumber<NUMERIC_TYPE2, SIGNED_TYPE2> &val);
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   343
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   344
private: // unimplemented operators
10657
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   345
  /**
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   346
   * \brief Plus equals operator - unimplemented
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   347
   * \param value value
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   348
   * \returns sequence number
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   349
   */
6434
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   350
  SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE>& operator+= (SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE> const &value);
10657
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   351
  /**
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   352
   * \brief Minus equals operator - unimplemented
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   353
   * \param value value
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   354
   * \returns sequence number
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   355
   */
6434
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   356
  SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE>& operator-= (SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE> const &value);
10657
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   357
  /**
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   358
   * \brief Multiplication operator - unimplemented
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   359
   * \param b value
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   360
   * \returns sequence number
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   361
   */
6434
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   362
  SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE> operator* (const SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE>& b) const;
10657
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   363
  /**
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   364
   * \brief Division operator - unimplemented
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   365
   * \param b value
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   366
   * \returns sequence number
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   367
   */
6434
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   368
  SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE> operator/ (const SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE>& b) const;
10657
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   369
  /**
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   370
   * \brief Modulo operator - unimplemented
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   371
   * \param b value
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   372
   * \returns sequence number
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   373
   */
6434
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   374
  SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE> operator% (const SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE>& b) const;
10657
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   375
  /**
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   376
   * \brief Logical NOT operator - unimplemented
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   377
   * \returns condition
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   378
   */
6434
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   379
  bool operator ! () const;
10657
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   380
  /**
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   381
   * \brief Logical AND operator - unimplemented
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   382
   * \param b value
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   383
   * \returns condition
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   384
   */
6434
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   385
  bool operator && (const SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE>& b) const;
10657
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   386
  /**
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   387
   * \brief Logical OR operator - unimplemented
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   388
   * \param b value
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   389
   * \returns condition
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   390
   */
6434
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   391
  bool operator || (const SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE>& b) const;
10657
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   392
  /**
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   393
   * \brief Bitwise NOT operator - unimplemented
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   394
   * \returns sequence number
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   395
   */
6434
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   396
  SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE> operator~ () const;
10657
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   397
  /**
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   398
   * \brief Bitwise AND operator - unimplemented
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   399
   * \param b value
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   400
   * \returns sequence number
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   401
   */
6434
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   402
  SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE> operator& (const SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE>& b) const;
10657
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   403
  /**
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   404
   * \brief Bitwise OR operator - unimplemented
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   405
   * \param b value
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   406
   * \returns sequence number
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   407
   */
6434
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   408
  SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE> operator| (const SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE>& b) const;
10657
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   409
  /**
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   410
   * \brief Bitwise XOR operator - unimplemented
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   411
   * \param b value
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   412
   * \returns sequence number
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   413
   */
6434
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   414
  SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE> operator^ (const SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE>& b) const;
10657
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   415
  /**
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   416
   * \brief Bitwise left shift operator - unimplemented
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   417
   * \param b value
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   418
   * \returns sequence number
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   419
   */
6434
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   420
  SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE> operator<< (const SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE>& b) const;
10657
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   421
  /**
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   422
   * \brief Bitwise right shift operator - unimplemented
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   423
   * \param b value
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   424
   * \returns sequence number
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   425
   */
6434
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   426
  SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE> operator>> (const SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE>& b) const;
10657
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   427
  /**
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   428
   * \brief Indirection operator - unimplemented
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   429
   * \returns integer
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   430
   */
6434
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   431
  int operator* ();
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   432
  //SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE>* operator& ();
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   433
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   434
private:
10657
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   435
  NUMERIC_TYPE m_value; //!< Sequence number value
6434
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   436
};
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   437
10657
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   438
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   439
/**
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   440
 * \brief Stream insertion operator.
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   441
 *
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   442
 * \param os the stream
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   443
 * \param val the value
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   444
 * \returns a reference to the stream
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   445
 */
6434
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   446
template<typename NUMERIC_TYPE, typename SIGNED_TYPE>
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   447
std::ostream &
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   448
operator<< (std::ostream& os, const SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE> &val)
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   449
{
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   450
  os << val.m_value;
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   451
  return os;
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   452
}
7182
5ecfee5d17de network coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6823
diff changeset
   453
10657
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   454
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   455
/**
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   456
 * \brief Stream extraction operator.
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   457
 *
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   458
 * \param is the stream
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   459
 * \param val the value
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   460
 * \returns a reference to the stream
6531a8817def [Doxygen] network module
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10416
diff changeset
   461
 */
6434
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   462
template<typename NUMERIC_TYPE, typename SIGNED_TYPE>
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   463
std::istream & operator >> (std::istream &is, const SequenceNumber<NUMERIC_TYPE, SIGNED_TYPE> &val)
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   464
{
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   465
  is >> val.m_value;
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   466
  return is;
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   467
}
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   468
11117
fbbbfb37b251 [Doxygen] Clean up references to non-POD TracedValueCallbacks
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 11010
diff changeset
   469
/**
fbbbfb37b251 [Doxygen] Clean up references to non-POD TracedValueCallbacks
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 11010
diff changeset
   470
 * \ingroup network
fbbbfb37b251 [Doxygen] Clean up references to non-POD TracedValueCallbacks
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 11010
diff changeset
   471
 * 32 bit Sequence number.
fbbbfb37b251 [Doxygen] Clean up references to non-POD TracedValueCallbacks
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 11010
diff changeset
   472
 */
6434
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   473
typedef SequenceNumber<uint32_t, int32_t> SequenceNumber32;
11117
fbbbfb37b251 [Doxygen] Clean up references to non-POD TracedValueCallbacks
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 11010
diff changeset
   474
/**
fbbbfb37b251 [Doxygen] Clean up references to non-POD TracedValueCallbacks
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 11010
diff changeset
   475
 * \ingroup network
fbbbfb37b251 [Doxygen] Clean up references to non-POD TracedValueCallbacks
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 11010
diff changeset
   476
 * 16 bit Sequence number.
fbbbfb37b251 [Doxygen] Clean up references to non-POD TracedValueCallbacks
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 11010
diff changeset
   477
 */
6434
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   478
typedef SequenceNumber<uint16_t, int16_t> SequenceNumber16;
11117
fbbbfb37b251 [Doxygen] Clean up references to non-POD TracedValueCallbacks
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 11010
diff changeset
   479
/**
fbbbfb37b251 [Doxygen] Clean up references to non-POD TracedValueCallbacks
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 11010
diff changeset
   480
 * \ingroup network
fbbbfb37b251 [Doxygen] Clean up references to non-POD TracedValueCallbacks
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 11010
diff changeset
   481
 * 8 bit Sequence number.
fbbbfb37b251 [Doxygen] Clean up references to non-POD TracedValueCallbacks
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 11010
diff changeset
   482
 */
10733
53b629afb241 Possible bug fix and sequence number as SequenceNumber8
Tommaso Pecorella <tommaso.pecorella@unifi.it>
parents: 10657
diff changeset
   483
typedef SequenceNumber<uint8_t, int8_t> SequenceNumber8;
6434
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   484
10978
754c8256c35c TracedValue callback function signatures.
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 10733
diff changeset
   485
/**
11117
fbbbfb37b251 [Doxygen] Clean up references to non-POD TracedValueCallbacks
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 11010
diff changeset
   486
 * \ingroup network
10978
754c8256c35c TracedValue callback function signatures.
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 10733
diff changeset
   487
 * TracedValue callback signature for SequenceNumber32
754c8256c35c TracedValue callback function signatures.
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 10733
diff changeset
   488
 *
754c8256c35c TracedValue callback function signatures.
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 10733
diff changeset
   489
 * \param [in] oldValue original value of the traced variable
754c8256c35c TracedValue callback function signatures.
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 10733
diff changeset
   490
 * \param [in] newValue new value of the traced variable
754c8256c35c TracedValue callback function signatures.
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 10733
diff changeset
   491
 */
754c8256c35c TracedValue callback function signatures.
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 10733
diff changeset
   492
typedef void (* SequenceNumber32TracedValueCallback)(const SequenceNumber32 oldValue,
754c8256c35c TracedValue callback function signatures.
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 10733
diff changeset
   493
                                                     const SequenceNumber32 newValue);
754c8256c35c TracedValue callback function signatures.
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 10733
diff changeset
   494
6434
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   495
} // namespace ns3
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   496
7353
09fccf6195ea bug 1203: Inconsistently named ifndef/define macros in ns-3 headers
Vedran Miletic <rivanvx@gmail.com>
parents: 7182
diff changeset
   497
#endif /* NS3_SEQ_NUM_H */
6434
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   498
ac8b4bf77e50 Bug 385 - Add a generic "sequence number" class.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents:
diff changeset
   499