This file is indexed.

/usr/include/ns3.27/ns3/event-id.h is in libns3-dev 3.27+dfsg-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
/*
 * Copyright (c) 2005 INRIA
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation;
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 *
 * Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
 */
#ifndef EVENT_ID_H
#define EVENT_ID_H

#include <stdint.h>
#include "ptr.h"
#include "event-impl.h"

/**
 * \file
 * \ingroup events
 * ns3::EventId declarations.
 */

namespace ns3 {

class EventImpl;

/**
 * \ingroup events
 * \brief An identifier for simulation events.
 *
 * Each EventId identifies a unique event scheduled with one
 * of the many Simulator::Schedule() methods. This EventId can
 * be used to cancel or remove events after they are scheduled
 * with Simulator::Cancel() or Simulator::Remove().
 *
 * The important thing to remember about this class is that
 * every variable of this type is _always_ in a valid state, 
 * even when it has not been assigned an EventId coming from a
 * Simulator::Schedule() method:  calling Simulator::Cancel(), IsRunning(),
 * IsExpired() or passing around instances of this object
 * will not result in crashes or memory leaks.
 */
class EventId {
public:
  /** Default constructor. This EventId does nothing. */
  EventId ();
  /**
   * Construct a real event.
   *
   * \param [in] impl The implementation of this event.
   * \param [in] ts The virtual time stamp this event should occur.
   * \param [in] context The execution context for this event.
   * \param [in] uid The unique id for this EventId.
   */
  EventId (const Ptr<EventImpl> &impl, uint64_t ts, uint32_t context, uint32_t uid);
  /**
   * This method is syntactic sugar for the ns3::Simulator::Cancel
   * method.
   */
  void Cancel (void);
  /**
   * This method is syntactic sugar for the ns3::Simulator::IsExpired
   * method.
   * \returns \c true if the event has expired, \c false otherwise.
   */
  bool IsExpired (void) const;
  /**
   * This method is syntactic sugar for !IsExpired().
   * 
   * \returns \c true if the event has not expired, \c false otherwise.
   */
  bool IsRunning (void) const;
public:
  /**
   * \name Scheduler Helpers.
   * \brief These methods are normally invoked only by
   * subclasses of the Scheduler base class.
   */
  /**@{*/
  /** \return The underlying EventImpl pointer. */
  EventImpl *PeekEventImpl (void) const;
  /** \return The virtual time stamp. */
  uint64_t GetTs (void) const;
  /** \return The event context. */
  uint32_t GetContext (void) const;
  /** \return The unique id. */
  uint32_t GetUid (void) const;
  /**@}*/
  
  /**
   * Test if two EventId's are equal.
   * \param [in] a The first EventId.
   * \param [in] b The second EventId.
   * \return \c true if the \p a and \p b represent the same event.
   */
  friend bool operator == (const EventId &a, const EventId &b);
  /**
   * Test if two EventId's are not equal.
   * \param [in] a The first EventId.
   * \param [in] b The second EventId.
   * \return \c true if the \p a and \p b are not the same event.
   */
  friend bool operator != (const EventId &a, const EventId &b);
  /**
   * Less than operator for two EventId's, based on time stamps.
   * \param [in] a The first EventId.
   * \param [in] b The second EventId.
   * \return \c true if \p a occurs before \p b.
   */
  friend bool operator <  (const EventId &a, const EventId &b);

private:
  Ptr<EventImpl> m_eventImpl;  /**< The underlying event implementation. */
  uint64_t m_ts;               /**< The virtual time stamp. */
  uint32_t m_context;          /**< The context. */
  uint32_t m_uid;              /**< The unique id. */
};

/*************************************************
 **  Inline implementations
 ************************************************/

inline  
bool
operator == (const EventId &a, const EventId &b)
{
  return 
    a.m_uid == b.m_uid && 
    a.m_context == b.m_context && 
    a.m_ts == b.m_ts && 
    a.m_eventImpl == b.m_eventImpl;
}
  
inline  
bool
operator != (const EventId &a, const EventId &b)
{
  return !(a == b);
}
  
inline  
bool
operator <  (const EventId &a, const EventId &b)
{
  return (a.GetTs () < b.GetTs ());
}

} // namespace ns3

#endif /* EVENT_ID_H */