00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef UINTEGER_H
00021 #define UINTEGER_H
00022
00023 #include "attribute.h"
00024 #include "attribute-helper.h"
00025 #include <stdint.h>
00026 #include <limits>
00027
00028 namespace ns3 {
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046 ATTRIBUTE_VALUE_DEFINE_WITH_NAME (uint64_t, Uinteger);
00047 ATTRIBUTE_ACCESSOR_DEFINE (Uinteger);
00048
00049 template <typename T>
00050 Ptr<const AttributeChecker> MakeUintegerChecker (void);
00051
00052 template <typename T>
00053 Ptr<const AttributeChecker> MakeUintegerChecker (uint64_t min);
00054
00055 template <typename T>
00056 Ptr<const AttributeChecker> MakeUintegerChecker (uint64_t min, uint64_t max);
00057
00058 }
00059
00060 #include "type-name.h"
00061
00062 namespace ns3 {
00063
00064 namespace internal {
00065
00066 Ptr<const AttributeChecker> MakeUintegerChecker (uint64_t min, uint64_t max, std::string name);
00067
00068 }
00069
00070
00071 template <typename T>
00072 Ptr<const AttributeChecker> MakeUintegerChecker (void)
00073 {
00074 return internal::MakeUintegerChecker (std::numeric_limits<T>::min (),
00075 std::numeric_limits<T>::max (),
00076 TypeNameGet<T> ());
00077 }
00078
00079 template <typename T>
00080 Ptr<const AttributeChecker> MakeUintegerChecker (uint64_t min)
00081 {
00082 return internal::MakeUintegerChecker (min,
00083 std::numeric_limits<T>::max (),
00084 TypeNameGet<T> ());
00085 }
00086
00087 template <typename T>
00088 Ptr<const AttributeChecker> MakeUintegerChecker (uint64_t min, uint64_t max)
00089 {
00090 return internal::MakeUintegerChecker (min,
00091 max,
00092 TypeNameGet<T> ());
00093 }
00094
00095 }
00096
00097 #endif