A Discrete-Event Network Simulator
API
rng-seed-manager.cc
Go to the documentation of this file.
1/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2/*
3 * Copyright (c) 2012 Mathieu Lacage
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License version 2 as
7 * published by the Free Software Foundation;
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 *
18 */
19
20#include "rng-seed-manager.h"
21#include "global-value.h"
22#include "attribute-helper.h"
23#include "uinteger.h"
24#include "config.h"
25#include "log.h"
26
33namespace ns3 {
34
35NS_LOG_COMPONENT_DEFINE ("RngSeedManager");
36
42static uint64_t g_nextStreamIndex = 0;
53static ns3::GlobalValue g_rngSeed ("RngSeed",
54 "The global seed of all rng streams",
56 ns3::MakeUintegerChecker<uint32_t> ());
67static ns3::GlobalValue g_rngRun ("RngRun",
68 "The substream index used for all streams",
70 ns3::MakeUintegerChecker<uint64_t> ());
71
72
74{
76 UintegerValue seedValue;
77 g_rngSeed.GetValue (seedValue);
78 return static_cast<uint32_t> (seedValue.Get ());
79}
80void
82{
83 NS_LOG_FUNCTION (seed);
84 Config::SetGlobal ("RngSeed", UintegerValue (seed));
85}
86
87void RngSeedManager::SetRun (uint64_t run)
88{
89 NS_LOG_FUNCTION (run);
90 Config::SetGlobal ("RngRun", UintegerValue (run));
91}
92
94{
96 UintegerValue value;
97 g_rngRun.GetValue (value);
98 uint64_t run = value.Get ();
99 return run;
100}
101
103{
105 uint64_t next = g_nextStreamIndex;
107 return next;
108}
109
110} // namespace ns3
Attribute helper (ATTRIBUTE_ )macros definition.
Hold a so-called 'global value'.
Definition: global-value.h:74
void GetValue(AttributeValue &value) const
Get the value.
static uint32_t GetSeed(void)
Get the current seed value which will be used by all subsequently instantiated RandomVariableStream o...
static void SetRun(uint64_t run)
Set the run number of simulation.
static ns3::GlobalValue g_rngRun("RngRun", "The substream index used for all streams", ns3::UintegerValue(1), ns3::MakeUintegerChecker< uint64_t >())
The random number generator substream index.
static ns3::GlobalValue g_rngSeed("RngSeed", "The global seed of all rng streams", ns3::UintegerValue(1), ns3::MakeUintegerChecker< uint32_t >())
The random number generator seed number global value.
static void SetSeed(uint32_t seed)
Set the seed.
static uint64_t GetNextStreamIndex(void)
Get the next automatically assigned stream index.
static uint64_t g_nextStreamIndex
The next random number generator stream number to use for automatic assignment.
static uint64_t GetRun(void)
Get the current run number.
Hold an unsigned integer type.
Definition: uinteger.h:44
uint64_t Get(void) const
Definition: uinteger.cc:35
Declaration of the various ns3::Config functions and classes.
ns3::GlobalValue declaration.
void SetGlobal(std::string name, const AttributeValue &value)
Definition: config.cc:891
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
Definition: log.h:205
#define NS_LOG_FUNCTION_NOARGS()
Output the name of the function.
#define NS_LOG_FUNCTION(parameters)
If log level LOG_FUNCTION is enabled, this macro will output all input parameters separated by ",...
Debug message logging.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
ns3::RngSeedManager declaration.
ns3::UintegerValue attribute value declarations and template implementations.