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 
33 namespace ns3 {
34 
35 NS_LOG_COMPONENT_DEFINE ("RngSeedManager");
36 
42 static uint64_t g_nextStreamIndex = 0;
53 static ns3::GlobalValue g_rngSeed ("RngSeed",
54  "The global seed of all rng streams",
56  ns3::MakeUintegerChecker<uint32_t> ());
67 static ns3::GlobalValue g_rngRun ("RngRun",
68  "The substream index used for all streams",
70  ns3::MakeUintegerChecker<uint64_t> ());
71 
72 
73 uint32_t RngSeedManager::GetSeed (void)
74 {
76  UintegerValue seedValue;
77  g_rngSeed.GetValue (seedValue);
78  return static_cast<uint32_t> (seedValue.Get ());
79 }
80 void
81 RngSeedManager::SetSeed (uint32_t seed)
82 {
83  NS_LOG_FUNCTION (seed);
84  Config::SetGlobal ("RngSeed", UintegerValue (seed));
85 }
86 
87 void 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
void GetValue(AttributeValue &value) const
Get the value.
#define NS_LOG_FUNCTION(parameters)
If log level LOG_FUNCTION is enabled, this macro will output all input parameters separated by "...
ns3::UintegerValue attribute value declarations and template implementations.
#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.
Hold a so-called &#39;global value&#39;.
Definition: global-value.h:73
Declaration of the various ns3::Config functions and classes.
static void SetRun(uint64_t run)
Set the run number of simulation.
static uint64_t GetRun(void)
Get the current run number.
static ns3::GlobalValue g_rngSeed("RngSeed", "The global seed of all rng streams", ns3::UintegerValue(1), ns3::MakeUintegerChecker< uint32_t >())
ns3::RngSeedManager declaration.
Hold an unsigned integer type.
Definition: uinteger.h:44
uint64_t Get(void) const
Definition: uinteger.cc:35
Every class exported by the ns3 library is enclosed in the ns3 namespace.
ns3::GlobalValue declaration.
static uint32_t GetSeed(void)
Get the current seed value which will be used by all subsequently instantiated RandomVariableStream o...
Attribute helper (ATTRIBUTE_ )macros definition.
static void SetSeed(uint32_t seed)
Set the seed.
void SetGlobal(std::string name, const AttributeValue &value)
Definition: config.cc:889
static uint64_t GetNextStreamIndex(void)
Get the next automatically assigned stream index.
static uint64_t g_nextStreamIndex
Debug message logging.
static ns3::GlobalValue g_rngRun("RngRun", "The substream index used for all streams", ns3::UintegerValue(1), ns3::MakeUintegerChecker< uint64_t >())