src/core/uint-value.cc
author Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
Mon, 04 Feb 2008 22:47:26 +0100
changeset 2379 db1eb36bfaa4
child 2427 9245ec163111
permissions -rw-r--r--
forgot to add new files
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2379
db1eb36bfaa4 forgot to add new files
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     1
#include "uint-value.h"
db1eb36bfaa4 forgot to add new files
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     2
#include "fatal-error.h"
db1eb36bfaa4 forgot to add new files
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     3
#include <sstream>
db1eb36bfaa4 forgot to add new files
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     4
db1eb36bfaa4 forgot to add new files
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     5
namespace ns3 {
db1eb36bfaa4 forgot to add new files
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     6
db1eb36bfaa4 forgot to add new files
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     7
UintValue::UintValue (uint64_t value)
db1eb36bfaa4 forgot to add new files
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     8
  : m_value (value)
db1eb36bfaa4 forgot to add new files
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     9
{}
db1eb36bfaa4 forgot to add new files
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    10
PValue
db1eb36bfaa4 forgot to add new files
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    11
UintValue::Copy (void) const
db1eb36bfaa4 forgot to add new files
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    12
{
db1eb36bfaa4 forgot to add new files
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    13
  return PValue::Create<UintValue> (*this);
db1eb36bfaa4 forgot to add new files
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    14
}
db1eb36bfaa4 forgot to add new files
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    15
db1eb36bfaa4 forgot to add new files
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    16
void 
db1eb36bfaa4 forgot to add new files
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    17
UintValue::Set (uint64_t value)
db1eb36bfaa4 forgot to add new files
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    18
{
db1eb36bfaa4 forgot to add new files
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    19
  m_value = value;
db1eb36bfaa4 forgot to add new files
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    20
}
db1eb36bfaa4 forgot to add new files
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    21
uint64_t 
db1eb36bfaa4 forgot to add new files
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    22
UintValue::Get (void) const
db1eb36bfaa4 forgot to add new files
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    23
{
db1eb36bfaa4 forgot to add new files
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    24
  return m_value;
db1eb36bfaa4 forgot to add new files
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    25
}
db1eb36bfaa4 forgot to add new files
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    26
std::string 
db1eb36bfaa4 forgot to add new files
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    27
UintValue::SerializeToString (Ptr<const ParamSpec> spec) const
db1eb36bfaa4 forgot to add new files
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    28
{
db1eb36bfaa4 forgot to add new files
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    29
  std::ostringstream oss;
db1eb36bfaa4 forgot to add new files
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    30
  oss << m_value;
db1eb36bfaa4 forgot to add new files
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    31
  return oss.str ();
db1eb36bfaa4 forgot to add new files
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    32
}
db1eb36bfaa4 forgot to add new files
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    33
bool 
db1eb36bfaa4 forgot to add new files
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    34
UintValue::DeserializeFromString (std::string value, Ptr<const ParamSpec> spec)
db1eb36bfaa4 forgot to add new files
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    35
{
db1eb36bfaa4 forgot to add new files
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    36
  uint64_t v;
db1eb36bfaa4 forgot to add new files
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    37
  std::istringstream iss;
db1eb36bfaa4 forgot to add new files
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    38
  iss.str (value);
db1eb36bfaa4 forgot to add new files
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    39
  iss >> v;
db1eb36bfaa4 forgot to add new files
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    40
  bool ok = !iss.bad () && !iss.fail ();
db1eb36bfaa4 forgot to add new files
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    41
  if (ok)
db1eb36bfaa4 forgot to add new files
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    42
    {
db1eb36bfaa4 forgot to add new files
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    43
      m_value = v;
db1eb36bfaa4 forgot to add new files
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    44
    }
db1eb36bfaa4 forgot to add new files
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    45
  return ok;
db1eb36bfaa4 forgot to add new files
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    46
}
db1eb36bfaa4 forgot to add new files
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    47
db1eb36bfaa4 forgot to add new files
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    48
UintValue::UintValue (PValue value)
db1eb36bfaa4 forgot to add new files
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    49
{
db1eb36bfaa4 forgot to add new files
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    50
  const UintValue *v = value.DynCast<const UintValue *> ();
db1eb36bfaa4 forgot to add new files
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    51
  if (v == 0)
db1eb36bfaa4 forgot to add new files
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    52
    {
db1eb36bfaa4 forgot to add new files
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    53
      NS_FATAL_ERROR ("assigning non-Uint value to Uint value.");
db1eb36bfaa4 forgot to add new files
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    54
    }
db1eb36bfaa4 forgot to add new files
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    55
  m_value = v->m_value;
db1eb36bfaa4 forgot to add new files
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    56
}
db1eb36bfaa4 forgot to add new files
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    57
UintValue::operator PValue () const
db1eb36bfaa4 forgot to add new files
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    58
{
db1eb36bfaa4 forgot to add new files
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    59
  return PValue::Create<UintValue> (*this);
db1eb36bfaa4 forgot to add new files
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    60
}
db1eb36bfaa4 forgot to add new files
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    61
db1eb36bfaa4 forgot to add new files
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    62
db1eb36bfaa4 forgot to add new files
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    63
db1eb36bfaa4 forgot to add new files
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    64
UintValueChecker::UintValueChecker (uint64_t minValue, uint64_t maxValue)
db1eb36bfaa4 forgot to add new files
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    65
  : m_minValue (minValue),
db1eb36bfaa4 forgot to add new files
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    66
    m_maxValue (maxValue)
db1eb36bfaa4 forgot to add new files
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    67
{}
db1eb36bfaa4 forgot to add new files
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    68
bool 
db1eb36bfaa4 forgot to add new files
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    69
UintValueChecker::Check (const uint64_t &value) const
db1eb36bfaa4 forgot to add new files
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    70
{
db1eb36bfaa4 forgot to add new files
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    71
  return value >= m_minValue && value <= m_maxValue;
db1eb36bfaa4 forgot to add new files
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    72
}
db1eb36bfaa4 forgot to add new files
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    73
db1eb36bfaa4 forgot to add new files
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    74
db1eb36bfaa4 forgot to add new files
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    75
} // namespace ns3