109 lines
2.5 KiB
C++
109 lines
2.5 KiB
C++
/*
|
|
* Copyright (c) 2008 INRIA
|
|
*
|
|
* SPDX-License-Identifier: GPL-2.0-only
|
|
*
|
|
* Authors: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
|
|
*/
|
|
#ifndef INTEGER_H
|
|
#define INTEGER_H
|
|
|
|
#include "attribute-helper.h"
|
|
#include "attribute.h"
|
|
|
|
#include <limits>
|
|
#include <stdint.h>
|
|
|
|
/**
|
|
* @file
|
|
* @ingroup attribute_Integer
|
|
* ns3::IntegerValue attribute value declarations and template implementations.
|
|
*/
|
|
|
|
namespace ns3
|
|
{
|
|
|
|
// Additional docs for class IntegerValue:
|
|
/**
|
|
* Hold a signed integer type
|
|
*
|
|
* This class can be used to hold variables of signed integer
|
|
* type such as int8_t, int16_t, int32_t, int64_t, or,
|
|
* int, etc.
|
|
*/
|
|
ATTRIBUTE_VALUE_DEFINE_WITH_NAME(int64_t, Integer);
|
|
ATTRIBUTE_ACCESSOR_DEFINE(Integer);
|
|
|
|
template <typename T>
|
|
Ptr<const AttributeChecker> MakeIntegerChecker();
|
|
|
|
/**
|
|
* Make a checker with a minimum value.
|
|
*
|
|
* The minimum value is included in the allowed range.
|
|
*
|
|
* @param [in] min The minimum value.
|
|
* @returns The AttributeChecker.
|
|
* @see AttributeChecker
|
|
*/
|
|
template <typename T>
|
|
Ptr<const AttributeChecker> MakeIntegerChecker(int64_t min);
|
|
|
|
/**
|
|
* Make a checker with a minimum and a maximum value.
|
|
*
|
|
* The minimum and maximum values are included in the allowed range.
|
|
*
|
|
* @param [in] min The minimum value.
|
|
* @param [in] max The maximum value.
|
|
* @returns The AttributeChecker.
|
|
* @see AttributeChecker
|
|
*/
|
|
template <typename T>
|
|
Ptr<const AttributeChecker> MakeIntegerChecker(int64_t min, int64_t max);
|
|
|
|
} // namespace ns3
|
|
|
|
/***************************************************************
|
|
* Implementation of the templates declared above.
|
|
***************************************************************/
|
|
|
|
#include "type-name.h"
|
|
|
|
namespace ns3
|
|
{
|
|
|
|
namespace internal
|
|
{
|
|
|
|
Ptr<const AttributeChecker> MakeIntegerChecker(int64_t min, int64_t max, std::string name);
|
|
|
|
} // namespace internal
|
|
|
|
template <typename T>
|
|
Ptr<const AttributeChecker>
|
|
MakeIntegerChecker(int64_t min, int64_t max)
|
|
{
|
|
return internal::MakeIntegerChecker(min, max, TypeNameGet<T>());
|
|
}
|
|
|
|
template <typename T>
|
|
Ptr<const AttributeChecker>
|
|
MakeIntegerChecker(int64_t min)
|
|
{
|
|
return internal::MakeIntegerChecker(min, std::numeric_limits<T>::max(), TypeNameGet<T>());
|
|
}
|
|
|
|
template <typename T>
|
|
Ptr<const AttributeChecker>
|
|
MakeIntegerChecker()
|
|
{
|
|
return internal::MakeIntegerChecker(std::numeric_limits<T>::min(),
|
|
std::numeric_limits<T>::max(),
|
|
TypeNameGet<T>());
|
|
}
|
|
|
|
} // namespace ns3
|
|
|
|
#endif /* INTEGER_H */
|