mathieu@2581: /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */ mathieu@2581: /* mathieu@2581: * Copyright (c) 2008 INRIA mathieu@2581: * mathieu@2581: * This program is free software; you can redistribute it and/or modify mathieu@2581: * it under the terms of the GNU General Public License version 2 as mathieu@2581: * published by the Free Software Foundation; mathieu@2581: * mathieu@2581: * This program is distributed in the hope that it will be useful, mathieu@2581: * but WITHOUT ANY WARRANTY; without even the implied warranty of mathieu@2581: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the mathieu@2581: * GNU General Public License for more details. mathieu@2581: * mathieu@2581: * You should have received a copy of the GNU General Public License mathieu@2581: * along with this program; if not, write to the Free Software mathieu@2581: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA mathieu@2581: * mathieu@2581: * Authors: Mathieu Lacage mathieu@2581: */ mathieu@2453: #ifndef BOOLEAN_H mathieu@2453: #define BOOLEAN_H mathieu@2371: mathieu@2438: #include "attribute.h" mathieu@2451: #include "attribute-helper.h" mathieu@2371: mathieu@2371: namespace ns3 { mathieu@2371: mathieu@2584: /** tomh@3182: * \ingroup attribute tomh@3182: * mathieu@2584: * \brief Hold a bool native type mathieu@2584: * mathieu@2928: * \anchor bool mathieu@2928: * mathieu@2584: * This class can be used to hold bool variables mathieu@2584: * which must go through the Attribute system. mathieu@2584: */ mathieu@2965: class BooleanValue : public AttributeValue mathieu@2371: { mathieu@2371: public: mathieu@2965: BooleanValue (); mathieu@2965: BooleanValue (bool value); mathieu@2371: void Set (bool value); mathieu@2371: bool Get (void) const; mathieu@3763: template mathieu@3763: bool GetAccessor (T &v) const; mathieu@2965: mathieu@2441: operator bool () const; mathieu@2372: mathieu@2965: virtual Ptr Copy (void) const; mathieu@2965: virtual std::string SerializeToString (Ptr checker) const; mathieu@2965: virtual bool DeserializeFromString (std::string value, Ptr checker); mathieu@2371: private: mathieu@2371: bool m_value; mathieu@2371: }; mathieu@2371: mathieu@3763: template mathieu@3763: bool BooleanValue::GetAccessor (T &v) const mathieu@3763: { mathieu@3763: v = T (m_value); mathieu@3763: return true; mathieu@3763: } mathieu@3763: mathieu@2965: std::ostream & operator << (std::ostream &os, const BooleanValue &value); mathieu@2410: mathieu@2441: ATTRIBUTE_CHECKER_DEFINE (Boolean); mathieu@2441: ATTRIBUTE_ACCESSOR_DEFINE (Boolean); mathieu@2371: mathieu@2371: } // namespace ns3 mathieu@2371: mathieu@2453: #endif /* BOOLEAN_H */