View | Details | Raw Unified | Return to bug 100
Collapse All | Expand All

(-)a/src/core/default-value.cc (-4 / +5 lines)
 Lines 373-387   DefaultValueTest::RunTests (void) Link Here 
373
  NS_TEST_ASSERT_EQUAL (i.GetValue (), -2);
373
  NS_TEST_ASSERT_EQUAL (i.GetValue (), -2);
374
  DefaultValue::Bind ("test-i", "+2");
374
  DefaultValue::Bind ("test-i", "+2");
375
  NS_TEST_ASSERT_EQUAL (i.GetValue (), 2);
375
  NS_TEST_ASSERT_EQUAL (i.GetValue (), 2);
376
  NS_TEST_ASSERT_EQUAL (i.GetType (), "int32_t(-2147483648:2147483647)");
376
  NS_TEST_ASSERT_EQUAL (i.GetType (), "int32_t(no min specified:no max specified)");
377
  NumericDefaultValue<uint32_t> ui32 ("test-ui32", "help-ui32", 10);
377
  NumericDefaultValue<uint32_t> ui32 ("test-ui32", "help-ui32", 10);
378
  NS_TEST_ASSERT_EQUAL (ui32.GetType (), "uint32_t(0:4294967295)");
378
  NS_TEST_ASSERT_EQUAL (ui32.GetType (), "uint32_t(no min specified:no max specified)");
379
  NumericDefaultValue<int8_t> c ("test-c", "help-c", 10);
379
  NumericDefaultValue<int8_t> c ("test-c", "help-c", 10);
380
  NS_TEST_ASSERT_EQUAL (c.GetValue (), 10);
380
  NS_TEST_ASSERT_EQUAL (c.GetValue (), 10);
381
  DefaultValue::Bind ("test-c", "257");  
381
  DefaultValue::Bind ("test-c", "257");  
382
  NumericDefaultValue<float> x ("test-x", "help-x", 10.0);
382
  NumericDefaultValue<float> x ("test-x", "help-x", 10.0);
383
  NumericDefaultValue<double> y ("test-y", "help-y", 10.0);
383
  NumericDefaultValue<double> y ("test-y", "help-y", -10.0);
384
384
  NumericDefaultValue<double> z ("test-z", "help-z", 3.1, 0);
385
  NS_TEST_ASSERT_EQUAL (z.GetType (), "double(0:no max specified)");
385
386
386
  EnumDefaultValue<enum MyEnum> e ("test-e", "help-e",
387
  EnumDefaultValue<enum MyEnum> e ("test-e", "help-e",
387
				   MY_ENUM_C, "C",
388
				   MY_ENUM_C, "C",
(-)a/src/core/default-value.h (-10 / +38 lines)
 Lines 223-228   private: Link Here 
223
  T m_minValue;
223
  T m_minValue;
224
  T m_maxValue;
224
  T m_maxValue;
225
  T m_value;
225
  T m_value;
226
  bool m_minValueSet;
227
  bool m_maxValueSet;
226
};
228
};
227
229
228
/**
230
/**
 Lines 379-385   NumericDefaultValue<T>::NumericDefaultVa Link Here 
379
    m_defaultValue (defaultValue),
381
    m_defaultValue (defaultValue),
380
    m_minValue (std::numeric_limits<T>::min ()),
382
    m_minValue (std::numeric_limits<T>::min ()),
381
    m_maxValue (std::numeric_limits<T>::max ()),
383
    m_maxValue (std::numeric_limits<T>::max ()),
382
    m_value (defaultValue)
384
    m_value (defaultValue),
385
    m_minValueSet (false),
386
    m_maxValueSet (false)
383
{
387
{
384
  DefaultValueList::Add (this);
388
  DefaultValueList::Add (this);
385
  NS_ASSERT (m_minValue < m_maxValue);
389
  NS_ASSERT (m_minValue < m_maxValue);
 Lines 393-399   NumericDefaultValue<T>::NumericDefaultVa Link Here 
393
    m_defaultValue (defaultValue),
397
    m_defaultValue (defaultValue),
394
    m_minValue (minValue),
398
    m_minValue (minValue),
395
    m_maxValue (std::numeric_limits<T>::max ()),
399
    m_maxValue (std::numeric_limits<T>::max ()),
396
    m_value (defaultValue)
400
    m_value (defaultValue),
401
    m_minValueSet (true),
402
    m_maxValueSet (false)
397
{
403
{
398
  DefaultValueList::Add (this);
404
  DefaultValueList::Add (this);
399
  NS_ASSERT (m_minValue < m_maxValue);
405
  NS_ASSERT (m_minValue < m_maxValue);
 Lines 410-416   NumericDefaultValue<T>::NumericDefaultVa Link Here 
410
    m_defaultValue (defaultValue),
416
    m_defaultValue (defaultValue),
411
    m_minValue (minValue),
417
    m_minValue (minValue),
412
    m_maxValue (maxValue),
418
    m_maxValue (maxValue),
413
    m_value (defaultValue)
419
    m_value (defaultValue),
420
    m_minValueSet (true),
421
    m_maxValueSet (true)
414
{
422
{
415
  DefaultValueList::Add (this);
423
  DefaultValueList::Add (this);
416
  NS_ASSERT (m_minValue < m_maxValue);
424
  NS_ASSERT (m_minValue < m_maxValue);
 Lines 422-429   void Link Here 
422
void 
430
void 
423
NumericDefaultValue<T>::SetValue (T v)
431
NumericDefaultValue<T>::SetValue (T v)
424
{
432
{
425
  NS_ASSERT (v <= m_maxValue &&
433
  if (m_minValueSet) 
426
	     v >= m_minValue);
434
    {
435
      NS_ASSERT (v >= m_minValue);
436
    }
437
  if (m_maxValueSet) 
438
    {
439
      NS_ASSERT (v <= m_maxValue);
440
    }
427
  m_value = v;
441
  m_value = v;
428
}
442
}
429
443
 Lines 441-448   NumericDefaultValue<T>::DoParseValue (co Link Here 
441
  std::istringstream iss;
455
  std::istringstream iss;
442
  iss.str (value);
456
  iss.str (value);
443
  iss >> m_value;
457
  iss >> m_value;
444
  if (m_value > m_maxValue ||
458
  if ( (m_maxValueSet && m_value > m_maxValue) ||
445
      m_value < m_minValue)
459
      (m_minValueSet && m_value < m_minValue) )
446
    {
460
    {
447
      return false;
461
      return false;
448
    }
462
    }
 Lines 454-462   NumericDefaultValue<T>::DoGetType (void) Link Here 
454
NumericDefaultValue<T>::DoGetType (void) const
468
NumericDefaultValue<T>::DoGetType (void) const
455
{
469
{
456
  std::ostringstream oss;
470
  std::ostringstream oss;
457
  oss << TypeNameGet<T> () << "("
471
  oss << TypeNameGet<T> () << "(";
458
      << m_minValue << ":" 
472
  if (m_minValueSet) 
459
      << m_maxValue << ")";
473
    {
474
      oss << m_minValue << ":";
475
    } 
476
  else
477
    {
478
      oss << "no min specified" << ":"; 
479
    }
480
  if (m_maxValueSet) 
481
    {
482
      oss << m_maxValue << ")";
483
    } 
484
  else
485
    {
486
      oss << "no max specified" << ")"; 
487
    }
460
  return oss.str ();
488
  return oss.str ();
461
}
489
}
462
490

Return to bug 100