A Discrete-Event Network Simulator
API
Loading...
Searching...
No Matches
ns3::internal Namespace Reference

Namespace for implementation details. More...

Classes

class  AttributeContainerChecker
 
struct  EventMemberImplObjTraits
 Helper for the MakeEvent functions which take a class method. More...
 
struct  EventMemberImplObjTraits< Ptr< T > >
 Helper for the MakeEvent functions which take a class method. More...
 
struct  EventMemberImplObjTraits< T * >
 Helper for the MakeEvent functions which take a class method. More...
 
struct  GetStoredIe
 
struct  GetStoredIe< std::optional< T > >
 
struct  GetStoredIe< std::vector< T > >
 
class  ObjectPtrContainerChecker
 ObjectPtrContainerChecker implementation class. More...
 
class  PairChecker
 Internal checker class templated to each AttributeChecker for each entry in the pair. More...
 
class  PointerChecker
 PointerChecker implementation. More...
 
class  TimerImpl
 The timer implementation underlying Timer and Watchdog. More...
 
struct  TimerImplX
 TimerImpl specialization class for varying numbers of arguments. More...
 
class  TupleChecker
 Internal checker class templated to each AttributeChecker for each entry in the tuple. More...
 
struct  TupleHelper
 Helper class defining static methods for MakeTupleChecker and MakeTupleAccessor that are called when user specifies the list of AttributeValue types included in a TupleValue type. More...
 
struct  TupleHelper< std::tuple< Args... > >
 Helper class defining static methods for MakeTupleValue, MakeTupleChecker and MakeTupleAccessor that are called when user provides a std::tuple of the AttributeValue types included in a TupleValue type. More...
 

Typedefs

template<class T >
using GetStoredIeT = typename GetStoredIe<T>::type
 

Functions

template<typename T , typename Derived >
void DoCopyIeFromContainingFrame (std::optional< T > &elem, const Derived &frame)
 
template<typename T , typename Derived >
void DoCopyIeFromContainingFrame (std::vector< T > &elems, const Derived &frame)
 
template<typename T >
uint16_t DoGetSerializedSize (const std::optional< T > &elem)
 
template<typename T >
uint16_t DoGetSerializedSize (const std::vector< T > &elems)
 
template<typename T >
void DoPrint (const std::optional< T > &elem, std::ostream &os)
 
template<typename T >
void DoPrint (const std::vector< T > &elems, std::ostream &os)
 
template<typename T >
Buffer::Iterator DoSerialize (const std::optional< T > &elem, Buffer::Iterator start)
 
template<typename T >
Buffer::Iterator DoSerialize (const std::vector< T > &elems, Buffer::Iterator start)
 
Ptr< const AttributeCheckerMakeDoubleChecker (double min, double max, std::string name)
 Make a Double attribute checker with embedded numeric type name.
 
Ptr< const AttributeCheckerMakeIntegerChecker (int64_t min, int64_t max, std::string name)
 Make an Integer attribute checker with embedded numeric type name.
 
template<typename U , typename... Ts>
TimerImplMakeTimerImpl (U(fn)(Ts...))
 Make a TimerImpl from a function pointer taking varying numbers of arguments.
 
template<typename OBJ_PTR , typename U , typename V , typename... Ts>
TimerImplMakeTimerImpl (U(V::*memPtr)(Ts...), OBJ_PTR objPtr)
 Make a TimerImpl from a class method pointer taking a varying number of arguments.
 
Ptr< const AttributeCheckerMakeUintegerChecker (uint64_t min, uint64_t max, std::string name)
 Make an Uinteger attribute checker with embedded numeric type name.
 
template<typename T , typename Derived >
std::optional< std::pair< uint8_t, uint8_t > > MustBeListedInNonInheritance (const std::optional< T > &elem, const Derived &frame)
 
template<typename T , typename Derived >
std::optional< std::pair< uint8_t, uint8_t > > MustBeListedInNonInheritance (const std::vector< T > &elems, const Derived &frame)
 
template<typename T , typename Derived >
bool MustBeSerializedInPerStaProfile (const std::optional< T > &elem, const Derived &frame)
 
template<typename T , typename Derived >
bool MustBeSerializedInPerStaProfile (const std::vector< T > &elems, const Derived &frame)
 
template<typename T >
void RemoveIfNotInherited (std::optional< T > &elem, const NonInheritance &nonInheritance)
 
template<typename T >
void RemoveIfNotInherited (std::vector< T > &elem, const NonInheritance &nonInheritance)
 

Detailed Description

Namespace for implementation details.

Typedef Documentation

◆ GetStoredIeT

template<class T >
using ns3::internal::GetStoredIeT = typename GetStoredIe<T>::type

Template Parameters
T[explicit] An Information Element type

Provides the type used to store Information Elements in the tuple held by WifiMgtHeader:

  • a mandatory Information Element of type T is stored as std::optional<T>
  • an optional Information Element of type T is stored as std::optional<T>
  • an Information Element of type T that can appear 0 or more times is stored as std::vector<T>

Definition at line 66 of file wifi-mgt-header.h.

Function Documentation

◆ DoCopyIeFromContainingFrame() [1/2]

template<typename T , typename Derived >
void ns3::internal::DoCopyIeFromContainingFrame ( std::optional< T > & elem,
const Derived & frame )
Template Parameters
T[deduced] the type of the given Information Element
Derived[deduced] the type of the containing management frame
Parameters
elemthe given Information Element
framethe containing management frame

Copy the given Information Element from the containing frame to the Per-STA Profile subelement of the Multi-Link Element, if the Information Element has been inherited (i.e., it is present outside the Multi-Link Element and not present in the Per-STA Profile subelement)

Definition at line 828 of file wifi-mgt-header.h.

References ns3::CanBeInPerStaProfileV.

Referenced by ns3::MgtHeaderInPerStaProfile< Derived, std::tuple< Elems... > >::CopyIesFromContainingFrame().

+ Here is the caller graph for this function:

◆ DoCopyIeFromContainingFrame() [2/2]

template<typename T , typename Derived >
void ns3::internal::DoCopyIeFromContainingFrame ( std::vector< T > & elems,
const Derived & frame )
Template Parameters
T[deduced] the type of the given vector of Information Elements
Derived[deduced] the type of the containing management frame
Parameters
elemsthe given vector of Information Elements
framethe containing management frame

Copy the given Information Element from the containing frame to the Per-STA Profile subelement of the Multi-Link Element, if the Information Element has been inherited (i.e., it is present outside the Multi-Link Element and not present in the Per-STA Profile subelement)

Definition at line 849 of file wifi-mgt-header.h.

References ns3::CanBeInPerStaProfileV.

◆ DoGetSerializedSize() [1/2]

template<typename T >
uint16_t ns3::internal::DoGetSerializedSize ( const std::optional< T > & elem)
Template Parameters
T[deduced] the type of the Information Element
Parameters
elemthe optional Information Element
Returns
the serialized size of the Information Element, if present, or 0, otherwise

Definition at line 400 of file wifi-mgt-header.h.

Referenced by ns3::WifiMgtHeader< Derived, std::tuple< Elems... > >::GetSerializedSizeImpl(), and ns3::MgtHeaderInPerStaProfile< Derived, std::tuple< Elems... > >::GetSerializedSizeInPerStaProfileImpl().

+ Here is the caller graph for this function:

◆ DoGetSerializedSize() [2/2]

template<typename T >
uint16_t ns3::internal::DoGetSerializedSize ( const std::vector< T > & elems)
Template Parameters
T[deduced] the type of the Information Elements
Parameters
elemsa vector of Information Elements
Returns
the serialized size of the Information Elements

Definition at line 412 of file wifi-mgt-header.h.

◆ DoPrint() [1/2]

template<typename T >
void ns3::internal::DoPrint ( const std::optional< T > & elem,
std::ostream & os )
Template Parameters
T[deduced] the type of the Information Element
Parameters
elemthe optional Information Element
osthe output stream

Definition at line 571 of file wifi-mgt-header.h.

Referenced by ns3::WifiMgtHeader< Derived, std::tuple< Elems... > >::PrintImpl().

+ Here is the caller graph for this function:

◆ DoPrint() [2/2]

template<typename T >
void ns3::internal::DoPrint ( const std::vector< T > & elems,
std::ostream & os )
Template Parameters
T[deduced] the type of the Information Elements
Parameters
elemsa vector of Information Elements
osthe output stream

Definition at line 586 of file wifi-mgt-header.h.

◆ DoSerialize() [1/2]

template<typename T >
Buffer::Iterator ns3::internal::DoSerialize ( const std::optional< T > & elem,
Buffer::Iterator start )
Template Parameters
T[deduced] the type of the Information Element
Parameters
elemthe optional Information Element
startthe buffer iterator pointing to where serialization starts
Returns
an iterator pointing to where serialization terminated

Definition at line 447 of file wifi-mgt-header.h.

Referenced by ns3::WifiMgtHeader< Derived, std::tuple< Elems... > >::SerializeImpl(), and ns3::MgtHeaderInPerStaProfile< Derived, std::tuple< Elems... > >::SerializeInPerStaProfileImpl().

+ Here is the caller graph for this function:

◆ DoSerialize() [2/2]

template<typename T >
Buffer::Iterator ns3::internal::DoSerialize ( const std::vector< T > & elems,
Buffer::Iterator start )
Template Parameters
T[deduced] the type of the Information Elements
Parameters
elemsa vector of Information Elements
startthe buffer iterator pointing to where serialization starts
Returns
an iterator pointing to where serialization terminated

Definition at line 460 of file wifi-mgt-header.h.

◆ MakeDoubleChecker()

Ptr< const AttributeChecker > ns3::internal::MakeDoubleChecker ( double min,
double max,
std::string name )

Make a Double attribute checker with embedded numeric type name.

Parameters
[in]minThe minimum allowed value.
[in]maxThe maximum allowed value.
[in]nameThe original type name ("float", "double").
Returns
The AttributeChecker.

Definition at line 42 of file double.cc.

References ns3::Copy(), ns3::Create(), ns3::DoubleValue::Get(), NS_LOG_FUNCTION, and NS_LOG_FUNCTION_NOARGS.

Referenced by ns3::MakeDoubleChecker(), ns3::MakeDoubleChecker(), and ns3::MakeDoubleChecker().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ MakeIntegerChecker()

Ptr< const AttributeChecker > ns3::internal::MakeIntegerChecker ( int64_t min,
int64_t max,
std::string name )

Make an Integer attribute checker with embedded numeric type name.

Parameters
[in]minThe minimum allowed value.
[in]maxThe maximum allowed value.
[in]nameThe original type name ("int8_t", "int16_t", etc.).
Returns
The AttributeChecker.

Definition at line 41 of file integer.cc.

References ns3::Copy(), ns3::Create(), ns3::IntegerValue::Get(), NS_LOG_FUNCTION, and NS_LOG_FUNCTION_NOARGS.

Referenced by ns3::MakeIntegerChecker(), ns3::MakeIntegerChecker(), and ns3::MakeIntegerChecker().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ MakeUintegerChecker()

Ptr< const AttributeChecker > ns3::internal::MakeUintegerChecker ( uint64_t min,
uint64_t max,
std::string name )

Make an Uinteger attribute checker with embedded numeric type name.

Parameters
[in]minThe minimum allowed value.
[in]maxThe maximum allowed value.
[in]nameThe original type name ("uint8_t", "uint16_t", etc.).
Returns
The AttributeChecker.

Definition at line 41 of file uinteger.cc.

References ns3::Copy(), ns3::Create(), ns3::UintegerValue::Get(), NS_LOG_FUNCTION, and NS_LOG_FUNCTION_NOARGS.

Referenced by ns3::MakeUintegerChecker(), ns3::MakeUintegerChecker(), and ns3::MakeUintegerChecker().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ MustBeListedInNonInheritance() [1/2]

template<typename T , typename Derived >
std::optional< std::pair< uint8_t, uint8_t > > ns3::internal::MustBeListedInNonInheritance ( const std::optional< T > & elem,
const Derived & frame )
Template Parameters
T[deduced] the type of the given Information Element
Derived[deduced] the type of the containing management frame
Parameters
elemthe given Information Element
framethe containing management frame
Returns
a pair (Element ID, Element ID Extension) if the given Information Element shall be listed in the Non-Inheritance IE of the Per-STA Profile subelement of the Multi-Link Element included in the containing management frame

Definition at line 691 of file wifi-mgt-header.h.

References ns3::CanBeInPerStaProfileV.

Referenced by ns3::MgtHeaderInPerStaProfile< Derived, std::tuple< Elems... > >::GetSerializedSizeInPerStaProfileImpl(), and ns3::MgtHeaderInPerStaProfile< Derived, std::tuple< Elems... > >::SerializeInPerStaProfileImpl().

+ Here is the caller graph for this function:

◆ MustBeListedInNonInheritance() [2/2]

template<typename T , typename Derived >
std::optional< std::pair< uint8_t, uint8_t > > ns3::internal::MustBeListedInNonInheritance ( const std::vector< T > & elems,
const Derived & frame )
Template Parameters
T[deduced] the type of the given vector of Information Elements
Derived[deduced] the type of the containing management frame
Parameters
elemsthe given Information Elements
framethe containing management frame
Returns
a pair (Element ID, Element ID Extension) if the given Information Element shall be listed in the Non-Inheritance IE of the Per-STA Profile subelement of the Multi-Link Element included in the containing management frame

Definition at line 712 of file wifi-mgt-header.h.

References ns3::CanBeInPerStaProfileV.

◆ MustBeSerializedInPerStaProfile() [1/2]

template<typename T , typename Derived >
bool ns3::internal::MustBeSerializedInPerStaProfile ( const std::optional< T > & elem,
const Derived & frame )
Template Parameters
T[deduced] the type of the given Information Element
Derived[deduced] the type of the containing management frame
Parameters
elemthe given Information Element
framethe containing management frame
Returns
whether the given Information Element shall be serialized in a Per-STA Profile subelement of the Multi-Link Element included in the containing management frame

Definition at line 620 of file wifi-mgt-header.h.

References ns3::CanBeInPerStaProfileV.

Referenced by ns3::MgtHeaderInPerStaProfile< Derived, std::tuple< Elems... > >::GetSerializedSizeInPerStaProfileImpl(), and ns3::MgtHeaderInPerStaProfile< Derived, std::tuple< Elems... > >::SerializeInPerStaProfileImpl().

+ Here is the caller graph for this function:

◆ MustBeSerializedInPerStaProfile() [2/2]

template<typename T , typename Derived >
bool ns3::internal::MustBeSerializedInPerStaProfile ( const std::vector< T > & elems,
const Derived & frame )
Template Parameters
T[deduced] the type of the given vector of Information Elements
Derived[deduced] the type of the containing management frame
Parameters
elemsthe given vector of Information Elements
framethe containing management frame
Returns
whether the given Information Elements shall be serialized in a Per-STA Profile subelement of the Multi-Link Element included in the containing management frame

Definition at line 655 of file wifi-mgt-header.h.

References ns3::CanBeInPerStaProfileV.

◆ RemoveIfNotInherited() [1/2]

template<typename T >
void ns3::internal::RemoveIfNotInherited ( std::optional< T > & elem,
const NonInheritance & nonInheritance )
Template Parameters
T[deduced] the type of the given Information Element
Parameters
elemthe given Information Element
nonInheritancethe Non-Inheritance information element

Remove the given Information Element from this header, if it is present and is listed in the given Non-Inheritance element.

Definition at line 918 of file wifi-mgt-header.h.

References ns3::NonInheritance::IsPresent().

Referenced by ns3::MgtHeaderInPerStaProfile< Derived, std::tuple< Elems... > >::CopyIesFromContainingFrame().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ RemoveIfNotInherited() [2/2]

template<typename T >
void ns3::internal::RemoveIfNotInherited ( std::vector< T > & elem,
const NonInheritance & nonInheritance )
Template Parameters
T[deduced] the type of the given vector of Information Elements
Parameters
elemthe given Information Elements
nonInheritancethe Non-Inheritance information element

Remove the given Information Elements from this header, if they are present and are listed in the given Non-Inheritance element.

Definition at line 936 of file wifi-mgt-header.h.

References ns3::NonInheritance::IsPresent().

+ Here is the call graph for this function: