This file is indexed.

/usr/include/ns3.27/ns3/spectrum-model.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
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
/*
 * Copyright (c) 2009 CTTC
 *
 * 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: Nicola Baldo <nbaldo@cttc.es>
 */

#ifndef SPECTRUM_MODEL_H
#define SPECTRUM_MODEL_H

#include <ns3/simple-ref-count.h>
#include <vector>

namespace ns3 {

/**
 * \defgroup spectrum Spectrum Models
 *
 */

/**
 * \ingroup spectrum
 *
 * The building block of a SpectrumModel. This struct models
 * a frequency band defined by the frequency interval [fl, fc] and
 * with center frequency fc. Typically, the center frequency will be
 * used for stuff such as propagation modeling, while the interval
 * boundaries will be used for bandwidth calculation and for
 * conversion between different SpectrumRepresentations.
 *
 */
struct BandInfo
{
  double fl; //!< lower limit of subband
  double fc; //!< center frequency
  double fh; //!< upper limit of subband
};


/// Container of BandInfo
typedef std::vector<BandInfo> Bands;

/// Uid for SpectrumModels
typedef uint32_t SpectrumModelUid_t;

/**
 * Set of frequency values implementing the domain of the functions in
 * the Function Space defined by SpectrumValue. Frequency values are in
 * Hz. It is intended that frequency values are non-negative, though
 * this is not enforced.
 *
 */
class SpectrumModel : public SimpleRefCount<SpectrumModel>
{
public:
  /**
   * Comparison operator. Returns true if the two SpectumModels are identical
   * \param lhs left operand
   * \param rhs right operand
   * \returns true if the two operands are identical
   */
  friend bool operator== (const SpectrumModel& lhs, const SpectrumModel& rhs);

  /**
   * This constructs a SpectrumModel based on a given set of frequencies,
   * which is assumed to be sorted by increasing frequency. The lower
   * (resp. upper) frequency band limit is determined as the mean value
   * between the center frequency of the considered band and the
   * center frequency of the adjacent lower (resp. upper) band.
   *
   * @param centerFreqs the vector of center frequencies.
   *
   * @return
   */
  SpectrumModel (std::vector<double> centerFreqs);


  /**
   * This construct a SpectrumModel based on the explicit values of
   * center frequencies and boundaries of each subband.
   *
   * @param bands
   *
   * @return
   */
  SpectrumModel (Bands bands);

  /**
   *
   * @return the number of frequencies in this SpectrumModel
   */
  size_t GetNumBands () const;


  /**
   *
   * @return the unique id of this SpectrumModel
   */
  SpectrumModelUid_t GetUid () const;

  /**
   * Const Iterator to the model Bands container start.
   */
  Bands::const_iterator Begin () const;
  /**
   * Const Iterator to the model Bands container end.
   */
  Bands::const_iterator End () const;

  /**
   * Check if another SpectrumModels has bands orthogonal to our bands.
   *
   * \param other another SpectrumModel
   * \returns true if bands are orthogonal
   */
  bool IsOrthogonal (const SpectrumModel &other) const;

private:
  Bands m_bands;         //!< Actual definition of frequency bands within this SpectrumModel
  SpectrumModelUid_t m_uid;        //!< unique id for a given set of frequencies
  static SpectrumModelUid_t m_uidCount;    //!< counter to assign m_uids
};


} // namespace ns3

#endif /* SPECTRUM_MODEL_H */