src/core/default-value.cc
author Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
Sun, 02 Mar 2008 21:12:21 +0100
changeset 2532 86a40c7cbfe9
parent 2114 bfd8e5afb36d
permissions -rw-r--r--
register and unregister the NodeList as a config root namespace
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
439
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
     1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
599
7b7012218291 add license header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 439
diff changeset
     2
/*
7b7012218291 add license header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 439
diff changeset
     3
 * Copyright (c) 2007 INRIA
7b7012218291 add license header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 439
diff changeset
     4
 *
7b7012218291 add license header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 439
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
7b7012218291 add license header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 439
diff changeset
     6
 * it under the terms of the GNU General Public License version 2 as
7b7012218291 add license header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 439
diff changeset
     7
 * published by the Free Software Foundation;
7b7012218291 add license header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 439
diff changeset
     8
 *
7b7012218291 add license header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 439
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
7b7012218291 add license header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 439
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
7b7012218291 add license header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 439
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
7b7012218291 add license header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 439
diff changeset
    12
 * GNU General Public License for more details.
7b7012218291 add license header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 439
diff changeset
    13
 *
7b7012218291 add license header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 439
diff changeset
    14
 * You should have received a copy of the GNU General Public License
7b7012218291 add license header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 439
diff changeset
    15
 * along with this program; if not, write to the Free Software
7b7012218291 add license header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 439
diff changeset
    16
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
7b7012218291 add license header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 439
diff changeset
    17
 *
7b7012218291 add license header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 439
diff changeset
    18
 * Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
7b7012218291 add license header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 439
diff changeset
    19
 */
439
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
    20
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
    21
#include "default-value.h"
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
    22
#include "fatal-error.h"
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
    23
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
    24
namespace ns3 {
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
    25
1224
7cbc1d661b89 rename Bind to DefaultValue::Bind. fix bug 62
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1216
diff changeset
    26
namespace DefaultValue {
7cbc1d661b89 rename Bind to DefaultValue::Bind. fix bug 62
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1216
diff changeset
    27
7cbc1d661b89 rename Bind to DefaultValue::Bind. fix bug 62
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1216
diff changeset
    28
enum BindStatus {
7cbc1d661b89 rename Bind to DefaultValue::Bind. fix bug 62
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1216
diff changeset
    29
  OK,
7cbc1d661b89 rename Bind to DefaultValue::Bind. fix bug 62
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1216
diff changeset
    30
  INVALID_VALUE,
7cbc1d661b89 rename Bind to DefaultValue::Bind. fix bug 62
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1216
diff changeset
    31
  NOT_FOUND
7cbc1d661b89 rename Bind to DefaultValue::Bind. fix bug 62
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1216
diff changeset
    32
};
7cbc1d661b89 rename Bind to DefaultValue::Bind. fix bug 62
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1216
diff changeset
    33
7cbc1d661b89 rename Bind to DefaultValue::Bind. fix bug 62
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1216
diff changeset
    34
7cbc1d661b89 rename Bind to DefaultValue::Bind. fix bug 62
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1216
diff changeset
    35
static 
7cbc1d661b89 rename Bind to DefaultValue::Bind. fix bug 62
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1216
diff changeset
    36
enum BindStatus
7cbc1d661b89 rename Bind to DefaultValue::Bind. fix bug 62
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1216
diff changeset
    37
BindSafe (std::string name, std::string value)
7cbc1d661b89 rename Bind to DefaultValue::Bind. fix bug 62
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1216
diff changeset
    38
{
7cbc1d661b89 rename Bind to DefaultValue::Bind. fix bug 62
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1216
diff changeset
    39
  for (DefaultValueList::Iterator i = DefaultValueList::Begin ();
7cbc1d661b89 rename Bind to DefaultValue::Bind. fix bug 62
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1216
diff changeset
    40
       i != DefaultValueList::End (); i++)
7cbc1d661b89 rename Bind to DefaultValue::Bind. fix bug 62
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1216
diff changeset
    41
    {
7cbc1d661b89 rename Bind to DefaultValue::Bind. fix bug 62
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1216
diff changeset
    42
      DefaultValueBase *cur = *i;
7cbc1d661b89 rename Bind to DefaultValue::Bind. fix bug 62
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1216
diff changeset
    43
      if (cur->GetName () == name)
7cbc1d661b89 rename Bind to DefaultValue::Bind. fix bug 62
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1216
diff changeset
    44
	{
7cbc1d661b89 rename Bind to DefaultValue::Bind. fix bug 62
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1216
diff changeset
    45
	  if (!cur->ParseValue (value))
7cbc1d661b89 rename Bind to DefaultValue::Bind. fix bug 62
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1216
diff changeset
    46
	    {
7cbc1d661b89 rename Bind to DefaultValue::Bind. fix bug 62
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1216
diff changeset
    47
	      return INVALID_VALUE;
7cbc1d661b89 rename Bind to DefaultValue::Bind. fix bug 62
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1216
diff changeset
    48
	    }
7cbc1d661b89 rename Bind to DefaultValue::Bind. fix bug 62
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1216
diff changeset
    49
	  return OK;
7cbc1d661b89 rename Bind to DefaultValue::Bind. fix bug 62
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1216
diff changeset
    50
	}
7cbc1d661b89 rename Bind to DefaultValue::Bind. fix bug 62
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1216
diff changeset
    51
    }
7cbc1d661b89 rename Bind to DefaultValue::Bind. fix bug 62
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1216
diff changeset
    52
  return NOT_FOUND;
7cbc1d661b89 rename Bind to DefaultValue::Bind. fix bug 62
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1216
diff changeset
    53
}
7cbc1d661b89 rename Bind to DefaultValue::Bind. fix bug 62
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1216
diff changeset
    54
7cbc1d661b89 rename Bind to DefaultValue::Bind. fix bug 62
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1216
diff changeset
    55
void
7cbc1d661b89 rename Bind to DefaultValue::Bind. fix bug 62
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1216
diff changeset
    56
Bind (std::string name, std::string value)
7cbc1d661b89 rename Bind to DefaultValue::Bind. fix bug 62
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1216
diff changeset
    57
{
7cbc1d661b89 rename Bind to DefaultValue::Bind. fix bug 62
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1216
diff changeset
    58
  switch (BindSafe (name, value)) {
7cbc1d661b89 rename Bind to DefaultValue::Bind. fix bug 62
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1216
diff changeset
    59
  case INVALID_VALUE:
7cbc1d661b89 rename Bind to DefaultValue::Bind. fix bug 62
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1216
diff changeset
    60
    NS_FATAL_ERROR ("Invalid value: "<<name<<"="<<value);
7cbc1d661b89 rename Bind to DefaultValue::Bind. fix bug 62
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1216
diff changeset
    61
    break;
7cbc1d661b89 rename Bind to DefaultValue::Bind. fix bug 62
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1216
diff changeset
    62
  case NOT_FOUND:
7cbc1d661b89 rename Bind to DefaultValue::Bind. fix bug 62
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1216
diff changeset
    63
    NS_FATAL_ERROR ("No registered DefaultValue=\"" << name << "\"");
7cbc1d661b89 rename Bind to DefaultValue::Bind. fix bug 62
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1216
diff changeset
    64
    break;
7cbc1d661b89 rename Bind to DefaultValue::Bind. fix bug 62
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1216
diff changeset
    65
  case OK:
7cbc1d661b89 rename Bind to DefaultValue::Bind. fix bug 62
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1216
diff changeset
    66
    break;
7cbc1d661b89 rename Bind to DefaultValue::Bind. fix bug 62
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1216
diff changeset
    67
  }
7cbc1d661b89 rename Bind to DefaultValue::Bind. fix bug 62
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1216
diff changeset
    68
}
7cbc1d661b89 rename Bind to DefaultValue::Bind. fix bug 62
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1216
diff changeset
    69
7cbc1d661b89 rename Bind to DefaultValue::Bind. fix bug 62
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1216
diff changeset
    70
}
7cbc1d661b89 rename Bind to DefaultValue::Bind. fix bug 62
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1216
diff changeset
    71
439
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
    72
DefaultValueBase::DefaultValueBase (const std::string &name,
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
    73
				    const std::string &help)
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
    74
  : m_name (name),
965
afb54e2e7d59 add dirtyness tracking to DefaultValueBase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 959
diff changeset
    75
    m_help (help),
afb54e2e7d59 add dirtyness tracking to DefaultValueBase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 959
diff changeset
    76
    m_dirty (false)
439
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
    77
{}
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
    78
DefaultValueBase::~DefaultValueBase ()
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
    79
{}
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
    80
std::string 
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
    81
DefaultValueBase::GetName (void) const
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
    82
{
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
    83
  return m_name;
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
    84
}
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
    85
std::string 
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
    86
DefaultValueBase::GetHelp (void) const
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
    87
{
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
    88
  return m_help;
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
    89
}
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
    90
bool 
965
afb54e2e7d59 add dirtyness tracking to DefaultValueBase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 959
diff changeset
    91
DefaultValueBase::IsDirty (void) const
afb54e2e7d59 add dirtyness tracking to DefaultValueBase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 959
diff changeset
    92
{
afb54e2e7d59 add dirtyness tracking to DefaultValueBase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 959
diff changeset
    93
  return m_dirty;
afb54e2e7d59 add dirtyness tracking to DefaultValueBase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 959
diff changeset
    94
}
afb54e2e7d59 add dirtyness tracking to DefaultValueBase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 959
diff changeset
    95
void 
afb54e2e7d59 add dirtyness tracking to DefaultValueBase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 959
diff changeset
    96
DefaultValueBase::ClearDirtyFlag (void)
afb54e2e7d59 add dirtyness tracking to DefaultValueBase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 959
diff changeset
    97
{
afb54e2e7d59 add dirtyness tracking to DefaultValueBase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 959
diff changeset
    98
  m_dirty = false;
afb54e2e7d59 add dirtyness tracking to DefaultValueBase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 959
diff changeset
    99
}
afb54e2e7d59 add dirtyness tracking to DefaultValueBase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 959
diff changeset
   100
bool 
439
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   101
DefaultValueBase::ParseValue (const std::string &value)
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   102
{
965
afb54e2e7d59 add dirtyness tracking to DefaultValueBase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 959
diff changeset
   103
  bool ok = DoParseValue (value);
afb54e2e7d59 add dirtyness tracking to DefaultValueBase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 959
diff changeset
   104
  if (ok)
afb54e2e7d59 add dirtyness tracking to DefaultValueBase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 959
diff changeset
   105
    {
afb54e2e7d59 add dirtyness tracking to DefaultValueBase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 959
diff changeset
   106
      m_dirty = true;
afb54e2e7d59 add dirtyness tracking to DefaultValueBase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 959
diff changeset
   107
    }
afb54e2e7d59 add dirtyness tracking to DefaultValueBase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 959
diff changeset
   108
  return ok;
439
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   109
}
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   110
std::string 
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   111
DefaultValueBase::GetType (void) const
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   112
{
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   113
  return DoGetType ();
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   114
}
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   115
std::string 
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   116
DefaultValueBase::GetDefaultValue (void) const
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   117
{
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   118
  return DoGetDefaultValue ();
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   119
}
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   120
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   121
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   122
DefaultValueList::Iterator 
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   123
DefaultValueList::Begin (void)
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   124
{
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   125
  return GetList ()->begin ();
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   126
}
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   127
DefaultValueList::Iterator 
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   128
DefaultValueList::End (void)
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   129
{
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   130
  return GetList ()->end ();
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   131
}
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   132
void
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   133
DefaultValueList::Remove (const std::string &name)
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   134
{
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   135
  DefaultValueList::List *list = GetList ();
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   136
  for (List::iterator i = list->begin (); i != list->end (); /* nothing */)
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   137
    {
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   138
      if ((*i)->GetName () == name)
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   139
        {
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   140
          i = list->erase (i);
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   141
        }
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   142
      else
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   143
        {
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   144
          i++;
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   145
        }
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   146
    }
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   147
}
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   148
void 
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   149
DefaultValueList::Add (DefaultValueBase *defaultValue)
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   150
{
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   151
  GetList ()->push_back (defaultValue);
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   152
}
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   153
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   154
DefaultValueList::List *
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   155
DefaultValueList::GetList (void)
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   156
{
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   157
  static List list;
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   158
  return &list;
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   159
}
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   160
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   161
BooleanDefaultValue::BooleanDefaultValue (std::string name,
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   162
					  std::string help,
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   163
					  bool defaultValue)
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   164
  : DefaultValueBase (name, help),
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   165
    m_defaultValue (defaultValue),
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   166
    m_value (defaultValue)
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   167
{
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   168
  DefaultValueList::Add (this);
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   169
}
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   170
bool 
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   171
BooleanDefaultValue::GetValue (void) const
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   172
{
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   173
  return m_value;
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   174
}
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   175
bool 
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   176
BooleanDefaultValue::DoParseValue (const std::string &value)
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   177
{
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   178
  if (value.compare ("0") == 0 ||
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   179
      value.compare ("f") == 0 ||
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   180
      value.compare ("false") == 0 ||
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   181
      value.compare ("FALSE") == 0) 
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   182
    {
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   183
      m_value = false;
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   184
      return true;
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   185
    } 
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   186
  else if (value.compare ("1") == 0 ||
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   187
	   value.compare ("t") == 0 ||
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   188
	   value.compare ("true") == 0 ||
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   189
	   value.compare ("TRUE") == 0) 
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   190
    {
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   191
      m_value = true;
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   192
      return true;
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   193
    } 
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   194
  else 
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   195
    {
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   196
      return false;
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   197
    }
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   198
}
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   199
std::string 
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   200
BooleanDefaultValue::DoGetType (void) const
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   201
{
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   202
  return "bool";
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   203
}
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   204
std::string 
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   205
BooleanDefaultValue::DoGetDefaultValue (void) const
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   206
{
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   207
  return m_defaultValue?"true":"false";
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   208
}
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   209
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   210
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   211
StringEnumDefaultValue::StringEnumDefaultValue (const std::string &name,
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   212
                                                const std::string &help)
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   213
  : DefaultValueBase (name, help),
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   214
    m_oneDefault (false)
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   215
{
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   216
  DefaultValueList::Add (this);
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   217
}
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   218
void 
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   219
StringEnumDefaultValue::AddDefaultValue (const std::string &value)
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   220
{
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   221
  if (m_oneDefault)
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   222
    {
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   223
      NS_FATAL_ERROR ("More than one default value registered: " << value);
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   224
    }
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   225
  m_oneDefault = true;
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   226
  for (std::list<std::string>::iterator i = m_possibleValues.begin ();
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   227
       i != m_possibleValues.end (); i++)
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   228
    {
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   229
      if (value == *i)
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   230
        {
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   231
          NS_FATAL_ERROR ("Value already exists: " << value);
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   232
        }
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   233
    }  
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   234
  m_possibleValues.push_back (value);
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   235
  m_value = value;
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   236
  m_defaultValue = value;
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   237
}
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   238
void 
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   239
StringEnumDefaultValue::AddPossibleValue (const std::string &value)
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   240
{
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   241
  for (std::list<std::string>::iterator i = m_possibleValues.begin ();
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   242
       i != m_possibleValues.end (); i++)
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   243
    {
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   244
      if (value == *i)
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   245
        {
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   246
          NS_FATAL_ERROR ("Value already exists: " << value);
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   247
        }
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   248
    }
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   249
  m_possibleValues.push_back (value);
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   250
}
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   251
std::string 
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   252
StringEnumDefaultValue::GetValue (void) const
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   253
{
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   254
  return m_value;
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   255
}
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   256
bool 
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   257
StringEnumDefaultValue::DoParseValue (const std::string &value)
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   258
{
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   259
  for (std::list<std::string>::iterator i = m_possibleValues.begin ();
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   260
       i != m_possibleValues.end (); i++)
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   261
    {
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   262
      if (value == *i)
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   263
        {
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   264
          m_value = value;
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   265
          return true;
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   266
        }
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   267
    }
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   268
  return false;
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   269
}
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   270
std::string 
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   271
StringEnumDefaultValue::DoGetType (void) const
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   272
{
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   273
  std::string retval;
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   274
  retval += "(";
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   275
  for (std::list<std::string>::const_iterator i = m_possibleValues.begin ();
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   276
       i != m_possibleValues.end (); i++)
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   277
    {
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   278
      if (i != m_possibleValues.begin ())
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   279
	{
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   280
	  retval += "|";
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   281
	}
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   282
      retval += *i;
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   283
    }
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   284
  retval += ")";
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   285
  return retval;
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   286
}
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   287
std::string 
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   288
StringEnumDefaultValue::DoGetDefaultValue (void) const
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   289
{
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   290
  return m_defaultValue;
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   291
}
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   292
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   293
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   294
CommandDefaultValue::CommandDefaultValue (const std::string &name,
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   295
					  const std::string &help,
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   296
					  Callback<void> cb)
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   297
  : DefaultValueBase (name, help),
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   298
    m_cb (cb)
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   299
{
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   300
  DefaultValueList::Add (this);
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   301
}
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   302
bool 
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   303
CommandDefaultValue::DoParseValue (const std::string &value)
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   304
{
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   305
  m_cb ();
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   306
  return true;
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   307
}
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   308
std::string 
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   309
CommandDefaultValue::DoGetType (void) const
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   310
{
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   311
  return "";
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   312
}
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   313
std::string 
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   314
CommandDefaultValue::DoGetDefaultValue (void) const
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   315
{
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   316
  return "";
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   317
}
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   318
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   319
1823
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   320
StringDefaultValue::StringDefaultValue (const std::string &name,
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   321
                                        const std::string &help,
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   322
                                        const std::string defaultValue)
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   323
  : DefaultValueBase (name, help),
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   324
    m_defaultValue (defaultValue),
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   325
    m_value (defaultValue),
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   326
    m_minSize (0),
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   327
    m_maxSize (-1)
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   328
{
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   329
  DefaultValueList::Add (this);
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   330
}
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   331
StringDefaultValue::StringDefaultValue (const std::string &name,
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   332
                                        const std::string &help,
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   333
                                        const std::string defaultValue,
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   334
                                        int maxSize)
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   335
  : DefaultValueBase (name, help),
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   336
    m_defaultValue (defaultValue),
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   337
    m_value (defaultValue),
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   338
    m_minSize (0),
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   339
    m_maxSize (maxSize)
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   340
{
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   341
  DefaultValueList::Add (this);
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   342
}
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   343
StringDefaultValue::StringDefaultValue (const std::string &name,
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   344
                                        const std::string &help,
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   345
                                        const std::string defaultValue,
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   346
                                        int minSize,
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   347
                                        int maxSize)
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   348
  : DefaultValueBase (name, help),
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   349
    m_defaultValue (defaultValue),
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   350
    m_value (defaultValue),
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   351
    m_minSize (minSize),
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   352
    m_maxSize (maxSize)
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   353
{
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   354
  DefaultValueList::Add (this);
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   355
}
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   356
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   357
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   358
std::string 
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   359
StringDefaultValue::GetValue (void) const
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   360
{
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   361
  return m_value;
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   362
}
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   363
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   364
bool 
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   365
StringDefaultValue::DoParseValue (const std::string &value)
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   366
{
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   367
  if ((int)value.size () < m_minSize)
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   368
    {
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   369
      return false;
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   370
    }
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   371
  if (m_maxSize != -1 && (int)value.size () > m_maxSize)
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   372
    {
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   373
      return false;
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   374
    }
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   375
  m_value = value;
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   376
  return true;
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   377
}
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   378
std::string 
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   379
StringDefaultValue::DoGetType (void) const
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   380
{
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   381
  if (m_maxSize == -1)
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   382
    {
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   383
      return "string:0";
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   384
    }
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   385
  else 
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   386
    {
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   387
      std::ostringstream oss;
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   388
      oss << "string:0:" << m_maxSize;
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   389
      return oss.str ();
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   390
    }
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   391
}
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   392
std::string 
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   393
StringDefaultValue::DoGetDefaultValue (void) const
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   394
{
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   395
  return m_defaultValue;
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   396
}
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   397
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   398
2bb2839641f9 implement StringDefaultValue; bug93 patch from Mathieu
Tom Henderson <tomh@tomh.org>
parents: 1822
diff changeset
   399
439
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   400
}//namespace ns3
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   401
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   402
#ifdef RUN_SELF_TESTS
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   403
#include "test.h"
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   404
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   405
namespace ns3 {
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   406
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   407
enum MyEnum {
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   408
  MY_ENUM_A,
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   409
  MY_ENUM_B,
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   410
  MY_ENUM_C,
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   411
  MY_ENUM_D,
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   412
};
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   413
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   414
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   415
class DefaultValueTest : public Test
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   416
{
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   417
public:
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   418
  DefaultValueTest ();
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   419
  virtual bool RunTests (void);
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   420
};
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   421
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   422
DefaultValueTest::DefaultValueTest ()
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   423
  : Test ("DefaultValue")
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   424
{}
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   425
bool 
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   426
DefaultValueTest::RunTests (void)
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   427
{
1215
f95194229d84 use NS_TEST_ASSERT macros
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 965
diff changeset
   428
  bool result = true;
439
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   429
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   430
  BooleanDefaultValue a ("bool-a", "help a", true);
1215
f95194229d84 use NS_TEST_ASSERT macros
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 965
diff changeset
   431
  NS_TEST_ASSERT (a.GetValue ());
1224
7cbc1d661b89 rename Bind to DefaultValue::Bind. fix bug 62
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1216
diff changeset
   432
  DefaultValue::Bind ("bool-a", "false");
1215
f95194229d84 use NS_TEST_ASSERT macros
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 965
diff changeset
   433
  NS_TEST_ASSERT (!a.GetValue ());
439
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   434
  BooleanDefaultValue b ("bool-b", "help b", false);
1224
7cbc1d661b89 rename Bind to DefaultValue::Bind. fix bug 62
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1216
diff changeset
   435
  DefaultValue::Bind ("bool-b", "true");
1215
f95194229d84 use NS_TEST_ASSERT macros
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 965
diff changeset
   436
  NS_TEST_ASSERT (b.GetValue ());
1224
7cbc1d661b89 rename Bind to DefaultValue::Bind. fix bug 62
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1216
diff changeset
   437
  DefaultValue::Bind ("bool-b", "0");
1215
f95194229d84 use NS_TEST_ASSERT macros
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 965
diff changeset
   438
  NS_TEST_ASSERT (!b.GetValue ());
1224
7cbc1d661b89 rename Bind to DefaultValue::Bind. fix bug 62
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1216
diff changeset
   439
  DefaultValue::Bind ("bool-b", "1");
1215
f95194229d84 use NS_TEST_ASSERT macros
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 965
diff changeset
   440
  NS_TEST_ASSERT (b.GetValue ());
1224
7cbc1d661b89 rename Bind to DefaultValue::Bind. fix bug 62
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1216
diff changeset
   441
  DefaultValue::Bind ("bool-b", "f");
1215
f95194229d84 use NS_TEST_ASSERT macros
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 965
diff changeset
   442
  NS_TEST_ASSERT (!b.GetValue ());
1224
7cbc1d661b89 rename Bind to DefaultValue::Bind. fix bug 62
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1216
diff changeset
   443
  DefaultValue::Bind ("bool-b", "t");
1215
f95194229d84 use NS_TEST_ASSERT macros
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 965
diff changeset
   444
  NS_TEST_ASSERT (b.GetValue ());
439
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   445
1224
7cbc1d661b89 rename Bind to DefaultValue::Bind. fix bug 62
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1216
diff changeset
   446
  DefaultValue::Bind ("bool-b", "false");
1215
f95194229d84 use NS_TEST_ASSERT macros
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 965
diff changeset
   447
  NS_TEST_ASSERT (!b.GetValue ());
1224
7cbc1d661b89 rename Bind to DefaultValue::Bind. fix bug 62
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1216
diff changeset
   448
  NS_TEST_ASSERT_EQUAL (DefaultValue::BindSafe ("bool-b", "tr"), DefaultValue::INVALID_VALUE)
439
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   449
1216
938d76a512b8 use fixed-width types to avoid portability problems
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1215
diff changeset
   450
  NumericDefaultValue<int32_t> i ("test-i", "help-i", -1);
1215
f95194229d84 use NS_TEST_ASSERT macros
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 965
diff changeset
   451
  NS_TEST_ASSERT_EQUAL (i.GetValue (), -1);
1224
7cbc1d661b89 rename Bind to DefaultValue::Bind. fix bug 62
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1216
diff changeset
   452
  DefaultValue::Bind ("test-i", "-2");
1215
f95194229d84 use NS_TEST_ASSERT macros
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 965
diff changeset
   453
  NS_TEST_ASSERT_EQUAL (i.GetValue (), -2);
1224
7cbc1d661b89 rename Bind to DefaultValue::Bind. fix bug 62
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1216
diff changeset
   454
  DefaultValue::Bind ("test-i", "+2");
1215
f95194229d84 use NS_TEST_ASSERT macros
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 965
diff changeset
   455
  NS_TEST_ASSERT_EQUAL (i.GetValue (), 2);
f95194229d84 use NS_TEST_ASSERT macros
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 965
diff changeset
   456
  NS_TEST_ASSERT_EQUAL (i.GetType (), "int32_t(-2147483648:2147483647)");
959
bc215f926abd IntegerDefaultValue -> NumericDefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 599
diff changeset
   457
  NumericDefaultValue<uint32_t> ui32 ("test-ui32", "help-ui32", 10);
1215
f95194229d84 use NS_TEST_ASSERT macros
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 965
diff changeset
   458
  NS_TEST_ASSERT_EQUAL (ui32.GetType (), "uint32_t(0:4294967295)");
1216
938d76a512b8 use fixed-width types to avoid portability problems
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1215
diff changeset
   459
  NumericDefaultValue<int8_t> c ("test-c", "help-c", 10);
1215
f95194229d84 use NS_TEST_ASSERT macros
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 965
diff changeset
   460
  NS_TEST_ASSERT_EQUAL (c.GetValue (), 10);
1224
7cbc1d661b89 rename Bind to DefaultValue::Bind. fix bug 62
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1216
diff changeset
   461
  DefaultValue::Bind ("test-c", "257");  
959
bc215f926abd IntegerDefaultValue -> NumericDefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 599
diff changeset
   462
  NumericDefaultValue<float> x ("test-x", "help-x", 10.0);
bc215f926abd IntegerDefaultValue -> NumericDefaultValue
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 599
diff changeset
   463
  NumericDefaultValue<double> y ("test-y", "help-y", 10.0);
1822
056a2eb1e924 fix bug 100 DefaultValue::Bind for floats
Tom Henderson <tomh@tomh.org>
parents: 1771
diff changeset
   464
  DefaultValue::Bind ("test-y", "-3");  
439
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   465
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   466
  EnumDefaultValue<enum MyEnum> e ("test-e", "help-e",
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   467
				   MY_ENUM_C, "C",
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   468
				   MY_ENUM_A, "A",
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   469
				   MY_ENUM_B, "B",
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   470
				   0, (void*)0);
1215
f95194229d84 use NS_TEST_ASSERT macros
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 965
diff changeset
   471
  NS_TEST_ASSERT_EQUAL (e.GetValue (), MY_ENUM_C);
1224
7cbc1d661b89 rename Bind to DefaultValue::Bind. fix bug 62
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1216
diff changeset
   472
  DefaultValue::Bind ("test-e", "B");
1215
f95194229d84 use NS_TEST_ASSERT macros
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 965
diff changeset
   473
  NS_TEST_ASSERT_EQUAL (e.GetValue (), MY_ENUM_B);
1224
7cbc1d661b89 rename Bind to DefaultValue::Bind. fix bug 62
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1216
diff changeset
   474
  NS_TEST_ASSERT_EQUAL (DefaultValue::BindSafe ("test-e", "D"), DefaultValue::INVALID_VALUE);
439
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   475
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   476
  class MyEnumSubclass : public EnumDefaultValue<enum MyEnum>
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   477
  {
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   478
  public:
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   479
    MyEnumSubclass () 
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   480
      : EnumDefaultValue<enum MyEnum> ("test-e1", "help-e1",
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   481
				       MY_ENUM_B, "B",
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   482
				       MY_ENUM_A, "A",
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   483
				       0, (void*)0)
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   484
    {
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   485
      AddPossibleValue (MY_ENUM_C, "C");
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   486
      AddPossibleValue (MY_ENUM_D, "D");
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   487
    }
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   488
  } e1 ;
1215
f95194229d84 use NS_TEST_ASSERT macros
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 965
diff changeset
   489
  NS_TEST_ASSERT_EQUAL (e1.GetValue (), MY_ENUM_B);
1224
7cbc1d661b89 rename Bind to DefaultValue::Bind. fix bug 62
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1216
diff changeset
   490
  DefaultValue::Bind ("test-e1", "D");
1215
f95194229d84 use NS_TEST_ASSERT macros
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 965
diff changeset
   491
  NS_TEST_ASSERT_EQUAL (e1.GetValue (), MY_ENUM_D);
439
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   492
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   493
  DefaultValueList::Remove ("test-e1");
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   494
  DefaultValueList::Remove ("test-e");
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   495
  DefaultValueList::Remove ("bool-b");
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   496
  DefaultValueList::Remove ("bool-a");
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   497
  DefaultValueList::Remove ("test-i");
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   498
  DefaultValueList::Remove ("test-c");
1771
a2ac71194cd1 make sure we cleanup after ourselves in DefaultValueTests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   499
  DefaultValueList::Remove ("test-x");
a2ac71194cd1 make sure we cleanup after ourselves in DefaultValueTests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1224
diff changeset
   500
  DefaultValueList::Remove ("test-y");
439
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   501
  DefaultValueList::Remove ("test-ui32");
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   502
  
1215
f95194229d84 use NS_TEST_ASSERT macros
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 965
diff changeset
   503
  return result;
439
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   504
}
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   505
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   506
static DefaultValueTest g_default_value_tests;
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   507
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   508
}//namespace ns3
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   509
fed13fb45eef Incorporated defaults and command-line arguments
Raj Bhattacharjea <raj.b@gatech.edu>
parents:
diff changeset
   510
#endif /* RUN_SELF_TESTS */