src/core/ptr.cc
author Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
Thu, 24 May 2007 14:53:10 +0200
changeset 685 2613b7ad02a5
parent 573 0da9201a048e
child 689 49bccd847179
permissions -rw-r--r--
fix bug 23
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
223
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     2
/*
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     3
 * Copyright (c) 2005,2006 INRIA
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     4
 * All rights reserved.
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     5
 *
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     6
 * This program is free software; you can redistribute it and/or modify
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     7
 * it under the terms of the GNU General Public License version 2 as
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     8
 * published by the Free Software Foundation;
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     9
 *
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    10
 * This program is distributed in the hope that it will be useful,
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    13
 * GNU General Public License for more details.
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    14
 *
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    16
 * along with this program; if not, write to the Free Software
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    17
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    18
 *
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    19
 * Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    20
 */
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    21
#include "ptr.h"
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    22
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    23
#ifdef RUN_SELF_TESTS
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    24
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    25
#include "test.h"
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    26
#include "callback.h"
542
00722b9a01b3 Ptr changed to use Object's refcounts
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 227
diff changeset
    27
#include "object.h"
223
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    28
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    29
namespace ns3 {
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    30
542
00722b9a01b3 Ptr changed to use Object's refcounts
Raj Bhattacharjea <raj.b@gatech.edu>
parents: 227
diff changeset
    31
class NoCount : public Object
223
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    32
{
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    33
public:
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    34
  NoCount (Callback<void> cb);
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    35
  ~NoCount ();
685
2613b7ad02a5 fix bug 23
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 573
diff changeset
    36
  void Nothing (void) const;
223
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    37
private:
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    38
  Callback<void> m_cb;
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    39
};
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    40
NoCount::NoCount (Callback<void> cb)
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    41
  : m_cb (cb)
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    42
{}
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    43
NoCount::~NoCount ()
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    44
{
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    45
  m_cb ();
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    46
}
227
482a61824ef4 add ns3::Ptr<T>::operator * with a few tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 225
diff changeset
    47
void
482a61824ef4 add ns3::Ptr<T>::operator * with a few tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 225
diff changeset
    48
NoCount::Nothing () const
482a61824ef4 add ns3::Ptr<T>::operator * with a few tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 225
diff changeset
    49
{}
223
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    50
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    51
class PtrTest : Test
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    52
{
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    53
public:
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    54
  PtrTest ();
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    55
  virtual ~PtrTest ();
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    56
  virtual bool RunTests (void);
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    57
private:
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    58
  void DestroyNotify (void);
224
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
    59
  Ptr<NoCount> CallTest (Ptr<NoCount> p);
225
dad23ccd9e6c more tests, fix bugs uncovered by tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 224
diff changeset
    60
  Ptr<NoCount> const CallTestConst (Ptr<NoCount> const p);
224
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
    61
  uint32_t m_nDestroyed;
223
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    62
};
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    63
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    64
PtrTest::PtrTest ()
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    65
  : Test ("Ptr")
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    66
{}
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    67
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    68
PtrTest::~PtrTest ()
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    69
{}
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    70
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    71
void 
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    72
PtrTest::DestroyNotify (void)
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    73
{
224
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
    74
  m_nDestroyed++;
223
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    75
}
224
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
    76
Ptr<NoCount> 
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
    77
PtrTest::CallTest (Ptr<NoCount> p)
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
    78
{
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
    79
  return p;
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
    80
}
223
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    81
225
dad23ccd9e6c more tests, fix bugs uncovered by tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 224
diff changeset
    82
Ptr<NoCount> const 
dad23ccd9e6c more tests, fix bugs uncovered by tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 224
diff changeset
    83
PtrTest::CallTestConst (Ptr<NoCount> const p)
dad23ccd9e6c more tests, fix bugs uncovered by tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 224
diff changeset
    84
{
dad23ccd9e6c more tests, fix bugs uncovered by tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 224
diff changeset
    85
  return p;
dad23ccd9e6c more tests, fix bugs uncovered by tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 224
diff changeset
    86
}
dad23ccd9e6c more tests, fix bugs uncovered by tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 224
diff changeset
    87
223
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    88
bool
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    89
PtrTest::RunTests (void)
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    90
{
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    91
  bool ok = true;
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    92
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    93
  Callback<void> cb = MakeCallback (&PtrTest::DestroyNotify, this);
224
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
    94
  m_nDestroyed = false;
223
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    95
  {
569
31a7c6fc511e add MakeNewObject template function and fix operator == (T1,T2)
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 567
diff changeset
    96
    Ptr<NoCount> p = MakeNewObject<NoCount> (cb);
223
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    97
  }
224
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
    98
  if (m_nDestroyed != 1)
223
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    99
    {
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   100
      ok = false;
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   101
    }
224
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   102
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   103
  m_nDestroyed = 0;
223
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   104
  {
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   105
    Ptr<NoCount> p;
569
31a7c6fc511e add MakeNewObject template function and fix operator == (T1,T2)
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 567
diff changeset
   106
    p = MakeNewObject<NoCount> (cb);
225
dad23ccd9e6c more tests, fix bugs uncovered by tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 224
diff changeset
   107
    p = p;
223
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   108
  }
224
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   109
  if (m_nDestroyed != 1)
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   110
    {
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   111
      ok = false;
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   112
    }
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   113
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   114
  m_nDestroyed = 0;
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   115
  {
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   116
    Ptr<NoCount> p1;
569
31a7c6fc511e add MakeNewObject template function and fix operator == (T1,T2)
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 567
diff changeset
   117
    p1 = MakeNewObject<NoCount> (cb);
224
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   118
    Ptr<NoCount> p2 = p1;
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   119
  }
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   120
  if (m_nDestroyed != 1)
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   121
    {
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   122
      ok = false;
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   123
    }
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   124
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   125
  m_nDestroyed = 0;
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   126
  {
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   127
    Ptr<NoCount> p1;
569
31a7c6fc511e add MakeNewObject template function and fix operator == (T1,T2)
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 567
diff changeset
   128
    p1 = MakeNewObject<NoCount> (cb);
224
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   129
    Ptr<NoCount> p2;
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   130
    p2 = p1;
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   131
  }
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   132
  if (m_nDestroyed != 1)
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   133
    {
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   134
      ok = false;
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   135
    }
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   136
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   137
  m_nDestroyed = 0;
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   138
  {
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   139
    Ptr<NoCount> p1;
569
31a7c6fc511e add MakeNewObject template function and fix operator == (T1,T2)
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 567
diff changeset
   140
    p1 = MakeNewObject<NoCount> (cb);
31a7c6fc511e add MakeNewObject template function and fix operator == (T1,T2)
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 567
diff changeset
   141
    Ptr<NoCount> p2 = MakeNewObject<NoCount> (cb);
224
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   142
    p2 = p1;
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   143
  }
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   144
  if (m_nDestroyed != 2)
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   145
    {
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   146
      ok = false;
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   147
    }
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   148
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   149
  m_nDestroyed = 0;
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   150
  {
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   151
    Ptr<NoCount> p1;
569
31a7c6fc511e add MakeNewObject template function and fix operator == (T1,T2)
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 567
diff changeset
   152
    p1 = MakeNewObject<NoCount> (cb);
224
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   153
    Ptr<NoCount> p2;
569
31a7c6fc511e add MakeNewObject template function and fix operator == (T1,T2)
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 567
diff changeset
   154
    p2 = MakeNewObject<NoCount> (cb);
224
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   155
    p2 = p1;
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   156
  }
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   157
  if (m_nDestroyed != 2)
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   158
    {
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   159
      ok = false;
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   160
    }
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   161
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   162
  m_nDestroyed = 0;
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   163
  {
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   164
    Ptr<NoCount> p1;
569
31a7c6fc511e add MakeNewObject template function and fix operator == (T1,T2)
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 567
diff changeset
   165
    p1 = MakeNewObject<NoCount> (cb);
31a7c6fc511e add MakeNewObject template function and fix operator == (T1,T2)
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 567
diff changeset
   166
    p1 = MakeNewObject<NoCount> (cb);
224
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   167
  }
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   168
  if (m_nDestroyed != 2)
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   169
    {
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   170
      ok = false;
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   171
    }
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   172
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   173
  m_nDestroyed = 0;
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   174
  {
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   175
    Ptr<NoCount> p1;
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   176
    {
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   177
      Ptr<NoCount> p2;
569
31a7c6fc511e add MakeNewObject template function and fix operator == (T1,T2)
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 567
diff changeset
   178
      p1 = MakeNewObject<NoCount> (cb);
31a7c6fc511e add MakeNewObject template function and fix operator == (T1,T2)
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 567
diff changeset
   179
      p2 = MakeNewObject<NoCount> (cb);
224
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   180
      p2 = p1;
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   181
    }
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   182
    if (m_nDestroyed != 1)
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   183
      {
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   184
        ok = false;
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   185
      }
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   186
  }
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   187
  if (m_nDestroyed != 2)
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   188
    {
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   189
      ok = false;
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   190
    }
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   191
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   192
  m_nDestroyed = 0;
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   193
  {
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   194
    Ptr<NoCount> p1;
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   195
    {
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   196
      Ptr<NoCount> p2;
569
31a7c6fc511e add MakeNewObject template function and fix operator == (T1,T2)
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 567
diff changeset
   197
      p1 = MakeNewObject<NoCount> (cb);
31a7c6fc511e add MakeNewObject template function and fix operator == (T1,T2)
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 567
diff changeset
   198
      p2 = MakeNewObject<NoCount> (cb);
224
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   199
      p2 = CallTest (p1);
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   200
    }
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   201
    if (m_nDestroyed != 1)
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   202
      {
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   203
        ok = false;
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   204
      }
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   205
  }
47985883d0f4 smart pointer tests. no bugs for now
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 223
diff changeset
   206
  if (m_nDestroyed != 2)
223
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   207
    {
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   208
      ok = false;
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   209
    }
225
dad23ccd9e6c more tests, fix bugs uncovered by tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 224
diff changeset
   210
dad23ccd9e6c more tests, fix bugs uncovered by tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 224
diff changeset
   211
  {
dad23ccd9e6c more tests, fix bugs uncovered by tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 224
diff changeset
   212
    Ptr<NoCount> p1;
dad23ccd9e6c more tests, fix bugs uncovered by tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 224
diff changeset
   213
    Ptr<NoCount> const p2 = CallTest (p1);
dad23ccd9e6c more tests, fix bugs uncovered by tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 224
diff changeset
   214
    Ptr<NoCount> const p3 = CallTestConst (p1);
dad23ccd9e6c more tests, fix bugs uncovered by tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 224
diff changeset
   215
    Ptr<NoCount> p4 = CallTestConst (p1);
dad23ccd9e6c more tests, fix bugs uncovered by tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 224
diff changeset
   216
    Ptr<NoCount const> p5 = p4;
dad23ccd9e6c more tests, fix bugs uncovered by tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 224
diff changeset
   217
    //p4 = p5; You cannot make a const pointer be a non-const pointer.
dad23ccd9e6c more tests, fix bugs uncovered by tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 224
diff changeset
   218
    // but if you use const_pointer_cast, you can.
dad23ccd9e6c more tests, fix bugs uncovered by tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 224
diff changeset
   219
    p4 = const_pointer_cast<NoCount> (p5);
dad23ccd9e6c more tests, fix bugs uncovered by tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 224
diff changeset
   220
    p5 = p1;
dad23ccd9e6c more tests, fix bugs uncovered by tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 224
diff changeset
   221
    Ptr<NoCount> p;
dad23ccd9e6c more tests, fix bugs uncovered by tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 224
diff changeset
   222
    if (p == 0)
dad23ccd9e6c more tests, fix bugs uncovered by tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 224
diff changeset
   223
      {}
dad23ccd9e6c more tests, fix bugs uncovered by tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 224
diff changeset
   224
    if (p != 0)
dad23ccd9e6c more tests, fix bugs uncovered by tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 224
diff changeset
   225
      {}
dad23ccd9e6c more tests, fix bugs uncovered by tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 224
diff changeset
   226
    if (0 == p)
dad23ccd9e6c more tests, fix bugs uncovered by tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 224
diff changeset
   227
      {}
dad23ccd9e6c more tests, fix bugs uncovered by tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 224
diff changeset
   228
    if (0 != p)
dad23ccd9e6c more tests, fix bugs uncovered by tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 224
diff changeset
   229
      {}
dad23ccd9e6c more tests, fix bugs uncovered by tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 224
diff changeset
   230
    if (p)
dad23ccd9e6c more tests, fix bugs uncovered by tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 224
diff changeset
   231
      {}
dad23ccd9e6c more tests, fix bugs uncovered by tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 224
diff changeset
   232
    if (!p)
dad23ccd9e6c more tests, fix bugs uncovered by tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 224
diff changeset
   233
      {}
dad23ccd9e6c more tests, fix bugs uncovered by tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 224
diff changeset
   234
  }
dad23ccd9e6c more tests, fix bugs uncovered by tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 224
diff changeset
   235
dad23ccd9e6c more tests, fix bugs uncovered by tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 224
diff changeset
   236
  m_nDestroyed = 0;
dad23ccd9e6c more tests, fix bugs uncovered by tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 224
diff changeset
   237
  {
dad23ccd9e6c more tests, fix bugs uncovered by tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 224
diff changeset
   238
    NoCount *raw;
dad23ccd9e6c more tests, fix bugs uncovered by tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 224
diff changeset
   239
    {
569
31a7c6fc511e add MakeNewObject template function and fix operator == (T1,T2)
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 567
diff changeset
   240
      Ptr<NoCount> p = MakeNewObject<NoCount> (cb);
225
dad23ccd9e6c more tests, fix bugs uncovered by tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 224
diff changeset
   241
      {
dad23ccd9e6c more tests, fix bugs uncovered by tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 224
diff changeset
   242
        Ptr<NoCount const> p1 = p;
dad23ccd9e6c more tests, fix bugs uncovered by tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 224
diff changeset
   243
      }
573
0da9201a048e rename Ptr::Get and Ptr::Peek to GetPointer and PeekPointer
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 569
diff changeset
   244
      raw = GetPointer (p);
544
cbc4158d47c9 remove ptr::Remove, make ptr::Peek share the same signature as ptr::Get
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 543
diff changeset
   245
      p = 0;
225
dad23ccd9e6c more tests, fix bugs uncovered by tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 224
diff changeset
   246
    }
dad23ccd9e6c more tests, fix bugs uncovered by tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 224
diff changeset
   247
    if (m_nDestroyed != 0)
dad23ccd9e6c more tests, fix bugs uncovered by tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 224
diff changeset
   248
      {
dad23ccd9e6c more tests, fix bugs uncovered by tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 224
diff changeset
   249
        ok = false;
dad23ccd9e6c more tests, fix bugs uncovered by tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 224
diff changeset
   250
      }
dad23ccd9e6c more tests, fix bugs uncovered by tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 224
diff changeset
   251
    delete raw;
dad23ccd9e6c more tests, fix bugs uncovered by tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 224
diff changeset
   252
  }
227
482a61824ef4 add ns3::Ptr<T>::operator * with a few tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 225
diff changeset
   253
482a61824ef4 add ns3::Ptr<T>::operator * with a few tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 225
diff changeset
   254
482a61824ef4 add ns3::Ptr<T>::operator * with a few tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 225
diff changeset
   255
  m_nDestroyed = 0;
482a61824ef4 add ns3::Ptr<T>::operator * with a few tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 225
diff changeset
   256
  {
569
31a7c6fc511e add MakeNewObject template function and fix operator == (T1,T2)
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 567
diff changeset
   257
    Ptr<NoCount> p = MakeNewObject<NoCount> (cb);
573
0da9201a048e rename Ptr::Get and Ptr::Peek to GetPointer and PeekPointer
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 569
diff changeset
   258
    const NoCount *v1 = PeekPointer (p);
0da9201a048e rename Ptr::Get and Ptr::Peek to GetPointer and PeekPointer
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 569
diff changeset
   259
    NoCount *v2 = PeekPointer (p);
544
cbc4158d47c9 remove ptr::Remove, make ptr::Peek share the same signature as ptr::Get
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 543
diff changeset
   260
    v1->Nothing ();
cbc4158d47c9 remove ptr::Remove, make ptr::Peek share the same signature as ptr::Get
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 543
diff changeset
   261
    v2->Nothing ();
227
482a61824ef4 add ns3::Ptr<T>::operator * with a few tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 225
diff changeset
   262
  }
544
cbc4158d47c9 remove ptr::Remove, make ptr::Peek share the same signature as ptr::Get
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 543
diff changeset
   263
  if (m_nDestroyed != 1)
227
482a61824ef4 add ns3::Ptr<T>::operator * with a few tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 225
diff changeset
   264
    {
482a61824ef4 add ns3::Ptr<T>::operator * with a few tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 225
diff changeset
   265
      ok = false;
482a61824ef4 add ns3::Ptr<T>::operator * with a few tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 225
diff changeset
   266
    }
567
6fb98941c36f remove leaks and rework the Ptr class to work with a new refcount mechanism
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 544
diff changeset
   267
6fb98941c36f remove leaks and rework the Ptr class to work with a new refcount mechanism
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 544
diff changeset
   268
  {
569
31a7c6fc511e add MakeNewObject template function and fix operator == (T1,T2)
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 567
diff changeset
   269
    Ptr<Object> p0 = MakeNewObject<NoCount> (cb);
31a7c6fc511e add MakeNewObject template function and fix operator == (T1,T2)
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 567
diff changeset
   270
    Ptr<NoCount> p1 = MakeNewObject<NoCount> (cb);
567
6fb98941c36f remove leaks and rework the Ptr class to work with a new refcount mechanism
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 544
diff changeset
   271
    if (p0 == p1)
6fb98941c36f remove leaks and rework the Ptr class to work with a new refcount mechanism
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 544
diff changeset
   272
      {
6fb98941c36f remove leaks and rework the Ptr class to work with a new refcount mechanism
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 544
diff changeset
   273
        ok = false;
6fb98941c36f remove leaks and rework the Ptr class to work with a new refcount mechanism
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 544
diff changeset
   274
      }
6fb98941c36f remove leaks and rework the Ptr class to work with a new refcount mechanism
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 544
diff changeset
   275
    if (p0 != p1)
6fb98941c36f remove leaks and rework the Ptr class to work with a new refcount mechanism
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 544
diff changeset
   276
      {
6fb98941c36f remove leaks and rework the Ptr class to work with a new refcount mechanism
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 544
diff changeset
   277
      }
6fb98941c36f remove leaks and rework the Ptr class to work with a new refcount mechanism
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 544
diff changeset
   278
    else
6fb98941c36f remove leaks and rework the Ptr class to work with a new refcount mechanism
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 544
diff changeset
   279
      {
6fb98941c36f remove leaks and rework the Ptr class to work with a new refcount mechanism
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 544
diff changeset
   280
        ok = false;
6fb98941c36f remove leaks and rework the Ptr class to work with a new refcount mechanism
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 544
diff changeset
   281
      }
6fb98941c36f remove leaks and rework the Ptr class to work with a new refcount mechanism
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 544
diff changeset
   282
  }
685
2613b7ad02a5 fix bug 23
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 573
diff changeset
   283
2613b7ad02a5 fix bug 23
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 573
diff changeset
   284
  {
2613b7ad02a5 fix bug 23
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 573
diff changeset
   285
    Ptr<NoCount> p = MakeNewObject<NoCount> (cb);
2613b7ad02a5 fix bug 23
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 573
diff changeset
   286
    Callback<void> callback = MakeCallback (&NoCount::Nothing, p);
2613b7ad02a5 fix bug 23
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 573
diff changeset
   287
  }
2613b7ad02a5 fix bug 23
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 573
diff changeset
   288
  {
2613b7ad02a5 fix bug 23
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 573
diff changeset
   289
    Ptr<const NoCount> p = MakeNewObject<NoCount> (cb);
2613b7ad02a5 fix bug 23
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 573
diff changeset
   290
    Callback<void> callback = MakeCallback (&NoCount::Nothing, p);
2613b7ad02a5 fix bug 23
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 573
diff changeset
   291
  }
2613b7ad02a5 fix bug 23
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 573
diff changeset
   292
2613b7ad02a5 fix bug 23
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 573
diff changeset
   293
#if 0
2613b7ad02a5 fix bug 23
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 573
diff changeset
   294
  // as expected, fails compilation.
2613b7ad02a5 fix bug 23
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 573
diff changeset
   295
  {
2613b7ad02a5 fix bug 23
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 573
diff changeset
   296
    Ptr<const Object> p = MakeNewObject<NoCount> (cb);
2613b7ad02a5 fix bug 23
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 573
diff changeset
   297
    Callback<void> callback = MakeCallback (&NoCount::Nothing, p);
2613b7ad02a5 fix bug 23
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 573
diff changeset
   298
  }
2613b7ad02a5 fix bug 23
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 573
diff changeset
   299
#endif
223
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   300
  
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   301
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   302
  return ok;
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   303
}
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   304
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   305
PtrTest g_ptr_test;
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   306
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   307
}; // namespace ns3
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   308
80f1c6b76999 initial go at smart pointer implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   309
#endif /* RUN_SELF_TESTS */