/* * Copyright (c) 2008 INRIA * * SPDX-License-Identifier: GPL-2.0-only * * Authors: Mathieu Lacage */ #ifndef INTEGER_H #define INTEGER_H #include "attribute-helper.h" #include "attribute.h" #include #include /** * @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 Ptr 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 Ptr 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 Ptr MakeIntegerChecker(int64_t min, int64_t max); } // namespace ns3 /*************************************************************** * Implementation of the templates declared above. ***************************************************************/ #include "type-name.h" namespace ns3 { namespace internal { Ptr MakeIntegerChecker(int64_t min, int64_t max, std::string name); } // namespace internal template Ptr MakeIntegerChecker(int64_t min, int64_t max) { return internal::MakeIntegerChecker(min, max, TypeNameGet()); } template Ptr MakeIntegerChecker(int64_t min) { return internal::MakeIntegerChecker(min, std::numeric_limits::max(), TypeNameGet()); } template Ptr MakeIntegerChecker() { return internal::MakeIntegerChecker(std::numeric_limits::min(), std::numeric_limits::max(), TypeNameGet()); } } // namespace ns3 #endif /* INTEGER_H */