A Discrete-Event Network Simulator
Home
Tutorials ▼
English
Docs ▼
Wiki
Manual
Models
Develop ▼
API
Bugs
API
length-example.cc
Go to the documentation of this file.
1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2
/*
3
* Copyright (c) 2019 Lawrence Livermore National Laboratory
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
* Author: Mathew Bielejeski <bielejeski1@llnl.gov>
19
*/
20
21
#include "ns3/core-module.h"
22
#include "ns3/length.h"
23
24
#include <iostream>
25
33
using namespace
ns3
;
34
using
Unit
=
Length::Unit
;
35
36
void
Constructors
()
37
{
38
double
input = 5;
39
Length::Quantity
quantity (input, Unit::Meter);
40
41
std::cout <<
"\nConstructors:"
42
<<
"\nLength ("
<< input <<
", Unit::Meter) = "
<<
Length
(input, Unit::Meter)
43
<<
"\nLength ("
<< input <<
", \"m\") = "
<<
Length
(input,
"m"
)
44
<<
"\nLength ("
<< input <<
", \"meter\") = "
<<
Length
(input,
"meter"
)
45
<<
"\nLength (Quantity("
<< input <<
", Unit::Meter)) = "
<<
Length
(quantity)
46
<<
"\nLength (\"5m\") = "
<<
Length
(
"5m"
)
47
<<
"\nLength (\"5 m\") = "
<<
Length
(
"5 m"
)
48
<<
"\nLength (\"5meter\") = "
<<
Length
(
"5meter"
)
49
<<
"\nLength (\"5 meter\") = "
<<
Length
(
"5 meter"
)
50
<<
"\nLength (\"5meters\") = "
<<
Length
(
"5meters"
)
51
<<
"\nLength (\"5 meters\") = "
<<
Length
(
"5 meters"
)
52
<< std::endl;
53
}
54
55
void
Conversions
()
56
{
57
//construct length using value and unit
58
Length
moonDistance (3.84402e8, Unit::Meter);
59
60
//Demonstrate conversion to various units
61
std::cout <<
"\nConversions: "
62
<<
"\nDistance to moon = "
<< moonDistance
63
<<
"\nIn Feet: "
<< moonDistance.
As
(Unit::Foot)
64
<<
"\nIn Miles: "
<< moonDistance.
As
(Unit::Mile)
65
<<
"\nIn Kilometers: "
<< moonDistance.
As
(Unit::Kilometer)
66
<< std::endl;
67
}
68
69
void
ArithmeticOperators
()
70
{
71
double
scale = 10;
72
73
//construct lengths using helper functions
74
Length
oneMeter =
Meters
(1);
75
Length
twoMeter =
Meters
(2);
76
77
std::cout <<
"\nArithmetic Operations:"
78
<<
"\nAddition: "
<< oneMeter <<
" + "
<< oneMeter <<
" = "
79
<< (oneMeter + oneMeter)
80
<<
"\nSubtraction: "
<< oneMeter <<
" - "
<< oneMeter <<
" = "
81
<< (oneMeter - oneMeter)
82
<<
"\nMultiplication By Scalar: "
<< oneMeter <<
" * "
<< scale <<
" = "
83
<< (oneMeter * scale)
84
<<
"\nDivision: "
<< oneMeter <<
" / "
<< twoMeter <<
" = "
85
<< (oneMeter / twoMeter)
86
<<
"\nDivision By Scalar: "
<< oneMeter <<
" / "
<< scale <<
" = "
87
<< (oneMeter / scale)
88
<< std::endl;
89
90
}
91
92
void
EqualityOperators
()
93
{
94
Length
oneMeter =
Meters
(1);
95
Length
twoMeter =
Meters
(2);
96
Length
threeMeter =
Meters
(3);
97
98
std::cout <<
"\nComparison Operations:"
<< std::boolalpha
99
<<
"\nEquality: "
<< oneMeter <<
" == "
<< oneMeter <<
" is "
100
<< (oneMeter == oneMeter)
101
<<
"\nEquality: "
<< oneMeter <<
" == "
<< twoMeter <<
" is "
102
<< (oneMeter == twoMeter)
103
<<
"\nInequality: "
<< oneMeter <<
" != "
<< oneMeter <<
" is "
104
<< (oneMeter != oneMeter)
105
<<
"\nInequality: "
<< oneMeter <<
" != "
<< twoMeter <<
" is "
106
<< (oneMeter != twoMeter)
107
<<
"\nLesser: "
<< oneMeter <<
" < "
<< oneMeter <<
" is "
108
<< (oneMeter < oneMeter)
109
<<
"\nLesser: "
<< oneMeter <<
" < "
<< twoMeter <<
" is "
110
<< (oneMeter < twoMeter)
111
<<
"\nLesser: "
<< threeMeter <<
" < "
<< oneMeter <<
" is "
112
<< (threeMeter < oneMeter)
113
<<
"\nGreater: "
<< oneMeter <<
" > "
<< oneMeter <<
" is "
114
<< (oneMeter > oneMeter)
115
<<
"\nGreater: "
<< oneMeter <<
" > "
<< twoMeter <<
" is "
116
<< (oneMeter > twoMeter)
117
<<
"\nGreater: "
<< threeMeter <<
" > "
<< oneMeter <<
" is "
118
<< (threeMeter > oneMeter)
119
<< std::endl;
120
}
121
122
void
DivAndMod
()
123
{
124
//construct length using helper function
125
Length
totalLen =
Feet
(20);
126
Length
pieceLen =
Feet
(3);
127
Length
remainder;
128
129
int64_t count =
Div
(totalLen, pieceLen, &remainder);
130
131
std::cout <<
"\nHow many times can a "
<< totalLen.
As
(Unit::Foot) <<
" length "
132
<<
"be split into "
<< pieceLen.
As
(Unit::Foot) <<
" sized pieces? "
133
<< count
134
<<
"\nremainder: "
<< remainder.
As
(Unit::Foot)
135
<< std::endl;
136
137
std::cout <<
"\nHow much remains after splitting a "
138
<< totalLen.
As
(Unit::Foot) <<
" length into "
139
<< pieceLen.
As
(Unit::Foot) <<
" sized pieces? "
140
<<
Mod
(totalLen, pieceLen).
As
(Unit::Foot)
141
<< std::endl;
142
}
143
144
int
main (
int
argc,
char
** argv)
145
{
146
Constructors
();
147
Conversions
();
148
ArithmeticOperators
();
149
EqualityOperators
();
150
DivAndMod
();
151
152
return
0;
153
}
Constructors
void Constructors()
Definition:
length-example.cc:36
ns3::Length::As
Quantity As(Unit unit) const
Create a Quantity in a specific unit from a Length.
Definition:
length.cc:388
ns3::Mod
Length Mod(const Length &numerator, const Length &denominator)
This function provides a string parsing method that does not rely on istream, which has been found to...
Definition:
length.cc:507
ns3
Every class exported by the ns3 library is enclosed in the ns3 namespace.
ns3::Length::Quantity
An immutable class which represents a value in a specific length unit.
Definition:
length.h:267
ns3::Length::Unit
Unit
Units of length in various measurement systems that are supported by the Length class.
Definition:
length.h:246
ArithmeticOperators
void ArithmeticOperators()
Definition:
length-example.cc:69
DivAndMod
void DivAndMod()
Definition:
length-example.cc:122
ns3::Length
Represents a length in meters.
Definition:
length.h:239
ns3::Feet
Length Feet(double value)
This function provides a string parsing method that does not rely on istream, which has been found to...
Definition:
length.cc:844
Conversions
void Conversions()
Definition:
length-example.cc:55
ns3::Meters
Length Meters(double value)
This function provides a string parsing method that does not rely on istream, which has been found to...
Definition:
length.cc:820
EqualityOperators
void EqualityOperators()
Definition:
length-example.cc:92
ns3::Div
int64_t Div(const Length &numerator, const Length &denominator, Length *remainder)
This function provides a string parsing method that does not rely on istream, which has been found to...
Definition:
length.cc:488
src
core
examples
length-example.cc
Generated on Fri Oct 1 2021 17:02:56 for ns-3 by
1.8.20