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:"
39
<<
"\nLength ("
<<
input
<<
", Unit::Meter) = "
<<
Length
(
input
, Length::Unit::Meter)
40
<<
"\nLength ("
<<
input
<<
", \"m\") = "
<<
Length
(
input
,
"m"
) <<
"\nLength ("
41
<<
input
<<
", \"meter\") = "
<<
Length
(
input
,
"meter"
) <<
"\nLength (Quantity("
42
<<
input
<<
", Unit::Meter)) = "
<<
Length
(
quantity
)
43
<<
"\nLength (\"5m\") = "
<<
Length
(
"5m"
) <<
"\nLength (\"5 m\") = "
<<
Length
(
"5 m"
)
44
<<
"\nLength (\"5meter\") = "
<<
Length
(
"5meter"
)
45
<<
"\nLength (\"5 meter\") = "
<<
Length
(
"5 meter"
)
46
<<
"\nLength (\"5meters\") = "
<<
Length
(
"5meters"
)
47
<<
"\nLength (\"5 meters\") = "
<<
Length
(
"5 meters"
) << std::endl;
48
}
49
50
/**
51
* @ingroup length-examples
52
* @brief Demonstrates the use of ns3::Length conversions.
53
*/
54
void
55
Conversions
()
56
{
57
// construct length using value and unit
58
Length
moonDistance
(3.84402e8, Length::Unit::Meter);
59
60
// Demonstrate conversion to various units
61
std::cout <<
"\n"
62
<<
"Conversions:\n"
63
<<
"Distance to moon = "
<<
moonDistance
<<
"\n"
64
<<
"In Feet: "
<<
moonDistance
.As(Length::Unit::Foot) <<
"\n"
65
<<
"In Miles: "
<<
moonDistance
.As(Length::Unit::Mile) <<
"\n"
66
<<
"In Kilometers: "
<<
moonDistance
.As(Length::Unit::Kilometer) << std::endl;
67
}
68
69
/**
70
* @ingroup length-examples
71
* @brief Demonstrates the use of ns3::Length arithmetic operators.
72
*/
73
void
74
ArithmeticOperators
()
75
{
76
double
scale
= 10;
77
78
// construct lengths using helper functions
79
Length
oneMeter
=
Meters
(1);
80
Length
twoMeter
=
Meters
(2);
81
82
std::cout <<
"\n"
83
<<
"Arithmetic Operations:\n"
84
<<
"Addition: "
<<
oneMeter
<<
" + "
<<
twoMeter
<<
" = "
<< (
oneMeter
+
twoMeter
)
85
<<
"\n"
86
<<
"Subtraction: "
<<
twoMeter
<<
" - "
<<
oneMeter
<<
" = "
<< (
twoMeter
-
oneMeter
)
87
<<
"\n"
88
<<
"Multiplication By Scalar: "
<<
oneMeter
<<
" * "
<<
scale
<<
" = "
89
<< (
oneMeter
*
scale
) <<
"\n"
90
<<
"Division: "
<<
oneMeter
<<
" / "
<<
twoMeter
<<
" = "
<< (
oneMeter
/
twoMeter
)
91
<<
"\n"
92
<<
"Division By Scalar: "
<<
oneMeter
<<
" / "
<<
scale
<<
" = "
<< (
oneMeter
/
scale
)
93
<< std::endl;
94
}
95
96
/**
97
* @ingroup length-examples
98
* @brief Demonstrates the use of ns3::Length equality operators.
99
*/
100
void
101
EqualityOperators
()
102
{
103
Length
oneMeter
=
Meters
(1);
104
Length
twoMeter
=
Meters
(2);
105
Length
threeMeter
=
Meters
(3);
106
107
// NOLINTBEGIN(misc-redundant-expression)
108
std::cout <<
"\n"
109
<<
"Comparison Operations:\n"
110
<< std::boolalpha <<
"Equality: "
<<
oneMeter
<<
" == "
<<
oneMeter
<<
" is "
111
<< (
oneMeter
==
oneMeter
) <<
"\n"
112
<<
"Equality: "
<<
oneMeter
<<
" == "
<<
twoMeter
<<
" is "
<< (
oneMeter
==
twoMeter
)
113
<<
"\n"
114
<<
"Inequality: "
<<
oneMeter
<<
" != "
<<
oneMeter
<<
" is "
115
<< (
oneMeter
!=
oneMeter
) <<
"\n"
116
<<
"Inequality: "
<<
oneMeter
<<
" != "
<<
twoMeter
<<
" is "
117
<< (
oneMeter
!=
twoMeter
) <<
"\n"
118
<<
"Lesser: "
<<
oneMeter
<<
" < "
<<
oneMeter
<<
" is "
<< (
oneMeter
<
oneMeter
)
119
<<
"\n"
120
<<
"Lesser: "
<<
oneMeter
<<
" < "
<<
twoMeter
<<
" is "
<< (
oneMeter
<
twoMeter
)
121
<<
"\n"
122
<<
"Lesser: "
<<
threeMeter
<<
" < "
<<
oneMeter
<<
" is "
<< (
threeMeter
<
oneMeter
)
123
<<
"\n"
124
<<
"Greater: "
<<
oneMeter
<<
" > "
<<
oneMeter
<<
" is "
<< (
oneMeter
>
oneMeter
)
125
<<
"\n"
126
<<
"Greater: "
<<
oneMeter
<<
" > "
<<
twoMeter
<<
" is "
<< (
oneMeter
>
twoMeter
)
127
<<
"\n"
128
<<
"Greater: "
<<
threeMeter
<<
" > "
<<
oneMeter
<<
" is "
<< (
threeMeter
>
oneMeter
)
129
<< std::endl;
130
// NOLINTEND(misc-redundant-expression)
131
}
132
133
/**
134
* @ingroup length-examples
135
* @brief Demonstrates the use of ns3::Length multiplications and divisions.
136
*/
137
void
138
DivAndMod
()
139
{
140
// construct length using helper function
141
Length
totalLen
=
Feet
(20);
142
Length
pieceLen
=
Feet
(3);
143
Length
remainder
;
144
145
int64_t count =
Div
(
totalLen
,
pieceLen
, &
remainder
);
146
147
std::cout <<
"\nHow many times can a "
<<
totalLen
.As(Length::Unit::Foot) <<
" length "
148
<<
"be split into "
<<
pieceLen
.As(Length::Unit::Foot) <<
" sized pieces? "
<< count
149
<<
"\nremainder: "
<<
remainder
.As(Length::Unit::Foot) << std::endl;
150
151
std::cout <<
"\nHow much remains after splitting a "
<<
totalLen
.As(Length::Unit::Foot)
152
<<
" length into "
<<
pieceLen
.As(Length::Unit::Foot) <<
" sized pieces? "
153
<<
Mod
(
totalLen
,
pieceLen
).
As
(Length::Unit::Foot) << std::endl;
154
}
155
156
int
157
main(
int
argc
,
char
**
argv
)
158
{
159
Constructors
();
160
Conversions
();
161
ArithmeticOperators
();
162
EqualityOperators
();
163
DivAndMod
();
164
165
return
0;
166
}
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:55
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:101
ArithmeticOperators
void ArithmeticOperators()
Demonstrates the use of ns3::Length arithmetic operators.
Definition
length-example.cc:74
DivAndMod
void DivAndMod()
Demonstrates the use of ns3::Length multiplications and divisions.
Definition
length-example.cc:138
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::Create
Ptr< T > Create(Ts &&... args)
Create class instances by constructors with varying numbers of arguments and return them by Ptr.
Definition
ptr.h:436
ns3
Every class exported by the ns3 library is enclosed in the ns3 namespace.
src
core
examples
length-example.cc
Generated on Mon Dec 15 2025 15:21:50 for ns-3 by
1.9.8