src/core/uint-value.h
author Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
Thu, 21 Feb 2008 18:54:02 +0100
changeset 2451 8979f07befd5
parent 2439 4a0b22a3f5fa
permissions -rw-r--r--
value-helper.h -> attribute-helper.h

#ifndef UINTEGER_H
#define UINTEGER_H

#include "attribute.h"
#include "attribute-helper.h"
#include <stdint.h>

namespace ns3 {

class Uinteger
{
public:
  Uinteger (uint64_t value);
  Uinteger ();

  void Set (uint64_t value);
  uint64_t Get (void) const;

  operator uint64_t () const;

  ATTRIBUTE_CONVERTER_DEFINE (Uinteger);
private:
  uint64_t m_value;
};

std::ostream & operator << (std::ostream &os, const Uinteger &uinteger);
std::istream & operator >> (std::istream &is, Uinteger &uinteger);

ATTRIBUTE_VALUE_DEFINE (Uinteger);
ATTRIBUTE_ACCESSOR_DEFINE (Uinteger);

template <typename T>
Ptr<const AttributeChecker> MakeUintegerChecker (void);

Ptr<const AttributeChecker> MakeUintegerChecker (uint64_t min, uint64_t max);

} // namespace ns3

namespace ns3 {

template <typename T>
Ptr<const AttributeChecker> MakeUintegerChecker (void)
{
  return MakeUintegerChecker (std::numeric_limits<T>::min (),
			      std::numeric_limits<T>::max ());
}

} // namespace ns3

#endif /* UINTEGER_H */