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
integer.cc
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2008 INRIA
3
*
4
* SPDX-License-Identifier: GPL-2.0-only
5
*
6
* Authors: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
7
*/
8
#include "
integer.h
"
9
10
#include "
fatal-error.h
"
11
#include "
log.h
"
12
13
#include <sstream>
14
15
/**
16
* \file
17
* \ingroup attribute_Integer
18
* ns3::MakeIntegerChecker implementation.
19
*/
20
21
namespace
ns3
22
{
23
24
NS_LOG_COMPONENT_DEFINE
(
"Integer"
);
25
26
ATTRIBUTE_VALUE_IMPLEMENT_WITH_NAME
(int64_t, Integer);
27
28
namespace
internal
29
{
30
31
/**
32
* \ingroup attribute_Integer
33
* Make an Integer attribute checker with embedded numeric type name.
34
*
35
* \param [in] min The minimum allowed value.
36
* \param [in] max The maximum allowed value.
37
* \param [in] name The original type name ("int8_t", "int16_t", _etc_.).
38
* \returns The AttributeChecker.
39
*/
40
Ptr<const AttributeChecker>
41
MakeIntegerChecker
(int64_t min, int64_t max, std::string name)
42
{
43
NS_LOG_FUNCTION
(min << max << name);
44
45
struct
IntegerChecker :
public
AttributeChecker
46
{
47
IntegerChecker(int64_t minValue, int64_t maxValue, std::string name)
48
: m_minValue(minValue),
49
m_maxValue(maxValue),
50
m_name(name)
51
{
52
}
53
54
bool
Check(
const
AttributeValue
& value)
const override
55
{
56
NS_LOG_FUNCTION
(&value);
57
const
auto
v =
dynamic_cast<
const
IntegerValue
*
>
(&value);
58
if
(v ==
nullptr
)
59
{
60
return
false
;
61
}
62
return
v->
Get
() >= m_minValue && v->Get() <= m_maxValue;
63
}
64
65
std::string GetValueTypeName()
const override
66
{
67
NS_LOG_FUNCTION_NOARGS
();
68
return
"ns3::IntegerValue"
;
69
}
70
71
bool
HasUnderlyingTypeInformation()
const override
72
{
73
NS_LOG_FUNCTION_NOARGS
();
74
return
true
;
75
}
76
77
std::string GetUnderlyingTypeInformation()
const override
78
{
79
NS_LOG_FUNCTION_NOARGS
();
80
std::ostringstream oss;
81
oss << m_name <<
" "
<< m_minValue <<
":"
<< m_maxValue;
82
return
oss.str();
83
}
84
85
Ptr<AttributeValue>
Create
()
const override
86
{
87
NS_LOG_FUNCTION_NOARGS
();
88
return
ns3::Create<IntegerValue>
();
89
}
90
91
bool
Copy
(
const
AttributeValue
& src,
AttributeValue
& dst)
const override
92
{
93
NS_LOG_FUNCTION
(&src << &dst);
94
const
auto
source =
dynamic_cast<
const
IntegerValue
*
>
(&src);
95
auto
destination =
dynamic_cast<
IntegerValue
*
>
(&dst);
96
if
(source ==
nullptr
|| destination ==
nullptr
)
97
{
98
return
false
;
99
}
100
*destination = *source;
101
return
true
;
102
}
103
104
int64_t m_minValue;
105
int64_t m_maxValue;
106
std::string m_name;
107
}* checker =
new
IntegerChecker(min, max, name);
108
109
return
Ptr<AttributeChecker>
(checker,
false
);
110
}
111
112
}
// namespace internal
113
114
}
// namespace ns3
ns3::AttributeChecker
Represent the type of an attribute.
Definition
attribute.h:157
ns3::AttributeValue
Hold a value for an Attribute.
Definition
attribute.h:59
ns3::IntegerValue
Hold a signed integer type.
Definition
integer.h:34
ns3::IntegerValue::Get
int64_t Get() const
Definition
integer.cc:26
ns3::Ptr
Smart pointer class similar to boost::intrusive_ptr.
Definition
mpi-test-fixtures.h:37
fatal-error.h
NS_FATAL_x macro definitions.
ATTRIBUTE_VALUE_IMPLEMENT_WITH_NAME
#define ATTRIBUTE_VALUE_IMPLEMENT_WITH_NAME(type, name)
Define the class methods belonging to the attribute value class nameValue of the underlying class typ...
Definition
attribute-helper.h:283
NS_LOG_COMPONENT_DEFINE
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
Definition
log.h:191
NS_LOG_FUNCTION_NOARGS
#define NS_LOG_FUNCTION_NOARGS()
Output the name of the function.
Definition
log-macros-enabled.h:195
NS_LOG_FUNCTION
#define NS_LOG_FUNCTION(parameters)
If log level LOG_FUNCTION is enabled, this macro will output all input parameters separated by ",...
Definition
log-macros-enabled.h:229
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
integer.h
ns3::IntegerValue attribute value declarations and template implementations.
log.h
Debug message logging.
ns3
Every class exported by the ns3 library is enclosed in the ns3 namespace.
ns3::MakeIntegerChecker
Ptr< const AttributeChecker > MakeIntegerChecker()
Definition
integer.h:99
ns3::Copy
Ptr< T > Copy(Ptr< T > object)
Return a deep copy of a Ptr.
Definition
ptr.h:604
src
core
model
integer.cc
Generated on Fri Nov 8 2024 13:58:59 for ns-3 by
1.11.0