src/core/boolean.h
author Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
Sat, 04 Jul 2009 08:15:48 +0200
changeset 4654 2eaebe77d66b
parent 3182 61fe7fe81ebd
permissions -rw-r--r--
Added tag ns-3.5 for changeset c975274c9707
     1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
     2 /*
     3  * Copyright (c) 2008 INRIA
     4  *
     5  * This program is free software; you can redistribute it and/or modify
     6  * it under the terms of the GNU General Public License version 2 as
     7  * published by the Free Software Foundation;
     8  *
     9  * This program is distributed in the hope that it will be useful,
    10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
    11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    12  * GNU General Public License for more details.
    13  *
    14  * You should have received a copy of the GNU General Public License
    15  * along with this program; if not, write to the Free Software
    16  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
    17  *
    18  * Authors: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
    19  */
    20 #ifndef BOOLEAN_H
    21 #define BOOLEAN_H
    22 
    23 #include "attribute.h"
    24 #include "attribute-helper.h"
    25 
    26 namespace ns3 {
    27 
    28 /**
    29  * \ingroup attribute
    30  *
    31  * \brief Hold a bool native type
    32  *
    33  * \anchor bool
    34  *
    35  * This class can be used to hold bool variables
    36  * which must go through the Attribute system.
    37  */
    38 class BooleanValue : public AttributeValue
    39 {
    40 public:
    41   BooleanValue ();
    42   BooleanValue (bool value);
    43   void Set (bool value);
    44   bool Get (void) const;
    45   template <typename T>
    46   bool GetAccessor (T &v) const;
    47   
    48   operator bool () const;
    49 
    50   virtual Ptr<AttributeValue> Copy (void) const;
    51   virtual std::string SerializeToString (Ptr<const AttributeChecker> checker) const;
    52   virtual bool DeserializeFromString (std::string value, Ptr<const AttributeChecker> checker);
    53 private:
    54   bool m_value;
    55 };
    56 
    57 template <typename T>
    58 bool BooleanValue::GetAccessor (T &v) const
    59 {
    60   v = T (m_value);
    61   return true;
    62 }
    63 
    64 std::ostream & operator << (std::ostream &os, const BooleanValue &value);
    65 
    66 ATTRIBUTE_CHECKER_DEFINE (Boolean);
    67 ATTRIBUTE_ACCESSOR_DEFINE (Boolean);
    68 
    69 } // namespace ns3
    70 
    71 #endif /* BOOLEAN_H */