A Discrete-Event Network Simulator
Home
Tutorials ▼
English
Documentation ▼
Installation
Manual
Models
Contributing
Wiki
Development ▼
API Docs
Issue Tracker
Merge Requests
API
Loading...
Searching...
No Matches
length-example.cc
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2019 Lawrence Livermore National Laboratory
3
*
4
* SPDX-License-Identifier: GPL-2.0-only
5
*
6
* Author: Mathew Bielejeski <bielejeski1@llnl.gov>
7
*/
8
9
#include "ns3/core-module.h"
10
#include "ns3/length.h"
11
12
#include <iostream>
13
14
/**
15
* @defgroup length-examples Demonstrates usage of the ns3::Length class
16
* @ingroup core-examples
17
* @ingroup length
18
*/
19
20
/**
21
* @file
22
* @ingroup length-examples
23
* Demonstrates usage of the ns3::Length class
24
*/
25
26
using namespace
ns3
;
27
28
/**
29
* @ingroup length-examples
30
* @brief Demonstrates the use of ns3::Length constructors.
31
*/
32
void
33
Constructors
()
34
{
35
double
input = 5;
36
Length::Quantity
quantity(input, Length::Unit::Meter);
37
38
std::cout <<
"\nConstructors:\n"
39
<<
"Length ("
<< input <<
", Unit::Meter) = "
<<
Length
(input, Length::Unit::Meter)
40
<<
"\n"
41
<<
"Length ("
<< input <<
", \"m\") = "
<<
Length
(input,
"m"
) <<
"\n"
42
<<
"Length ("
<< input <<
", \"meter\") = "
<<
Length
(input,
"meter"
) <<
"\n"
43
<<
"Length (Quantity("
<< input <<
", Unit::Meter)) = "
<<
Length
(quantity) <<
"\n"
44
<<
"Length (\"5m\") = "
<<
Length
(
"5m"
) <<
"\n"
45
<<
"Length (\"5 m\") = "
<<
Length
(
"5 m"
) <<
"\n"
46
<<
"Length (\"5meter\") = "
<<
Length
(
"5meter"
) <<
"\n"
47
<<
"Length (\"5 meter\") = "
<<
Length
(
"5 meter"
) <<
"\n"
48
<<
"Length (\"5meters\") = "
<<
Length
(
"5meters"
) <<
"\n"
49
<<
"Length (\"5 meters\") = "
<<
Length
(
"5 meters"
) << std::endl;
50
}
51
52
/**
53
* @ingroup length-examples
54
* @brief Demonstrates the use of ns3::Length conversions.
55
*/
56
void
57
Conversions
()
58
{
59
// construct length using value and unit
60
Length
moonDistance(3.84402e8, Length::Unit::Meter);
61
62
// Demonstrate conversion to various units
63
std::cout <<
"\n"
64
<<
"Conversions:\n"
65
<<
"Distance to moon = "
<< moonDistance <<
"\n"
66
<<
"In Feet: "
<< moonDistance.
As
(Length::Unit::Foot) <<
"\n"
67
<<
"In Miles: "
<< moonDistance.
As
(Length::Unit::Mile) <<
"\n"
68
<<
"In Kilometers: "
<< moonDistance.
As
(Length::Unit::Kilometer) << std::endl;
69
}
70
71
/**
72
* @ingroup length-examples
73
* @brief Demonstrates the use of ns3::Length arithmetic operators.
74
*/
75
void
76
ArithmeticOperators
()
77
{
78
double
scale = 10;
79
80
// construct lengths using helper functions
81
Length
oneMeter =
Meters
(1);
82
Length
twoMeter =
Meters
(2);
83
84
std::cout <<
"\n"
85
<<
"Arithmetic Operations:\n"
86
<<
"Addition: "
<< oneMeter <<
" + "
<< twoMeter <<
" = "
<< (oneMeter + twoMeter)
87
<<
"\n"
88
<<
"Subtraction: "
<< twoMeter <<
" - "
<< oneMeter <<
" = "
<< (twoMeter - oneMeter)
89
<<
"\n"
90
<<
"Multiplication By Scalar: "
<< oneMeter <<
" * "
<< scale <<
" = "
91
<< (oneMeter * scale) <<
"\n"
92
<<
"Division: "
<< oneMeter <<
" / "
<< twoMeter <<
" = "
<< (oneMeter / twoMeter)
93
<<
"\n"
94
<<
"Division By Scalar: "
<< oneMeter <<
" / "
<< scale <<
" = "
<< (oneMeter / scale)
95
<< std::endl;
96
}
97
98
/**
99
* @ingroup length-examples
100
* @brief Demonstrates the use of ns3::Length equality operators.
101
*/
102
void
103
EqualityOperators
()
104
{
105
Length
oneMeter =
Meters
(1);
106
Length
twoMeter =
Meters
(2);
107
Length
threeMeter =
Meters
(3);
108
109
// NOLINTBEGIN(misc-redundant-expression)
110
std::cout <<
"\n"
111
<<
"Comparison Operations:\n"
112
<< std::boolalpha <<
"Equality: "
<< oneMeter <<
" == "
<< oneMeter <<
" is "
113
<< (oneMeter == oneMeter) <<
"\n"
114
<<
"Equality: "
<< oneMeter <<
" == "
<< twoMeter <<
" is "
<< (oneMeter == twoMeter)
115
<<
"\n"
116
<<
"Inequality: "
<< oneMeter <<
" != "
<< oneMeter <<
" is "
117
<< (oneMeter != oneMeter) <<
"\n"
118
<<
"Inequality: "
<< oneMeter <<
" != "
<< twoMeter <<
" is "
119
<< (oneMeter != twoMeter) <<
"\n"
120
<<
"Lesser: "
<< oneMeter <<
" < "
<< oneMeter <<
" is "
<< (oneMeter < oneMeter)
121
<<
"\n"
122
<<
"Lesser: "
<< oneMeter <<
" < "
<< twoMeter <<
" is "
<< (oneMeter < twoMeter)
123
<<
"\n"
124
<<
"Lesser: "
<< threeMeter <<
" < "
<< oneMeter <<
" is "
<< (threeMeter < oneMeter)
125
<<
"\n"
126
<<
"Greater: "
<< oneMeter <<
" > "
<< oneMeter <<
" is "
<< (oneMeter > oneMeter)
127
<<
"\n"
128
<<
"Greater: "
<< oneMeter <<
" > "
<< twoMeter <<
" is "
<< (oneMeter > twoMeter)
129
<<
"\n"
130
<<
"Greater: "
<< threeMeter <<
" > "
<< oneMeter <<
" is "
<< (threeMeter > oneMeter)
131
<< std::endl;
132
// NOLINTEND(misc-redundant-expression)
133
}
134
135
/**
136
* @ingroup length-examples
137
* @brief Demonstrates the use of ns3::Length multiplications and divisions.
138
*/
139
void
140
DivAndMod
()
141
{
142
// construct length using helper function
143
Length
totalLen =
Feet
(20);
144
Length
pieceLen =
Feet
(3);
145
Length
remainder;
146
147
int64_t count =
Div
(totalLen, pieceLen, &remainder);
148
149
std::cout <<
"\nHow many times can a "
<< totalLen.
As
(Length::Unit::Foot) <<
" length "
150
<<
"be split into "
<< pieceLen.
As
(Length::Unit::Foot) <<
" sized pieces? "
<< count
151
<<
"\nremainder: "
<< remainder.
As
(Length::Unit::Foot) << std::endl;
152
153
std::cout <<
"\nHow much remains after splitting a "
<< totalLen.
As
(Length::Unit::Foot)
154
<<
" length into "
<< pieceLen.
As
(Length::Unit::Foot) <<
" sized pieces? "
155
<<
Mod
(totalLen, pieceLen).
As
(Length::Unit::Foot) << std::endl;
156
}
157
158
int
159
main(
int
argc,
char
** argv)
160
{
161
Constructors
();
162
Conversions
();
163
ArithmeticOperators
();
164
EqualityOperators
();
165
DivAndMod
();
166
167
return
0;
168
}
ns3::Length::Quantity
An immutable class which represents a value in a specific length unit.
Definition
length.h:261
ns3::Length
Represents a length in meters.
Definition
length.h:233
ns3::Length::As
Quantity As(Unit unit) const
Create a Quantity in a specific unit from a Length.
Definition
length.cc:376
Conversions
void Conversions()
Demonstrates the use of ns3::Length conversions.
Definition
length-example.cc:57
Constructors
void Constructors()
Demonstrates the use of ns3::Length constructors.
Definition
length-example.cc:33
EqualityOperators
void EqualityOperators()
Demonstrates the use of ns3::Length equality operators.
Definition
length-example.cc:103
ArithmeticOperators
void ArithmeticOperators()
Demonstrates the use of ns3::Length arithmetic operators.
Definition
length-example.cc:76
DivAndMod
void DivAndMod()
Demonstrates the use of ns3::Length multiplications and divisions.
Definition
length-example.cc:140
ns3::Feet
Length Feet(double value)
Construct a length from a value in the indicated unit.
Definition
length.cc:824
ns3::Mod
Length Mod(const Length &numerator, const Length &denominator)
Calculate the amount remaining after dividing two lengths.
Definition
length.cc:490
ns3::Meters
Length Meters(double value)
Construct a length from a value in the indicated unit.
Definition
length.cc:800
ns3::Div
int64_t Div(const Length &numerator, const Length &denominator, Length *remainder)
Calculate how many times numerator can be split into denominator sized pieces.
Definition
length.cc:471
ns3
Every class exported by the ns3 library is enclosed in the ns3 namespace.
src
core
examples
length-example.cc
Generated on Tue Apr 29 2025 18:20:41 for ns-3 by
1.11.0