Orocos Real-Time Toolkit  2.8.3
BoolTypeInfo.hpp
Go to the documentation of this file.
1 /***************************************************************************
2  tag: The SourceWorks Tue Sep 7 00:55:18 CEST 2010 BoolTypeInfo.hpp
3 
4  BoolTypeInfo.hpp - description
5  -------------------
6  begin : Tue September 07 2010
7  copyright : (C) 2010 The SourceWorks
8  email : peter@thesourceworks.com
9 
10  ***************************************************************************
11  * This library is free software; you can redistribute it and/or *
12  * modify it under the terms of the GNU General Public *
13  * License as published by the Free Software Foundation; *
14  * version 2 of the License. *
15  * *
16  * As a special exception, you may use this file as part of a free *
17  * software library without restriction. Specifically, if other files *
18  * instantiate templates or use macros or inline functions from this *
19  * file, or you compile this file and link it with other files to *
20  * produce an executable, this file does not by itself cause the *
21  * resulting executable to be covered by the GNU General Public *
22  * License. This exception does not however invalidate any other *
23  * reasons why the executable file might be covered by the GNU General *
24  * Public License. *
25  * *
26  * This library is distributed in the hope that it will be useful, *
27  * but WITHOUT ANY WARRANTY; without even the implied warranty of *
28  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
29  * Lesser General Public License for more details. *
30  * *
31  * You should have received a copy of the GNU General Public *
32  * License along with this library; if not, write to the Free Software *
33  * Foundation, Inc., 59 Temple Place, *
34  * Suite 330, Boston, MA 02111-1307 USA *
35  * *
36  ***************************************************************************/
37 
38 
39 #include "../types/Types.hpp"
40 #include "StdTypeInfo.hpp"
41 #include <ostream>
42 #include <istream>
43 
44 namespace RTT
45 {
46  namespace types
47  {
48 
52  struct BoolTypeInfo: public StdTypeInfo<bool>
53  {
55  StdTypeInfo<bool> ("bool")
56  {
57  }
58 
59  virtual std::ostream& write(std::ostream& os, base::DataSourceBase::shared_ptr in) const
60  {
61 #ifdef OS_HAVE_STREAMS
62  internal::DataSource<bool>::shared_ptr d = boost::dynamic_pointer_cast< internal::DataSource<bool> >(in);
63  if (d)
64  return os << std::boolalpha << d->value();
65 #endif
66  return os;
67  }
68 
69  virtual std::istream& read(std::istream& os, base::DataSourceBase::shared_ptr out) const
70  {
71 #ifdef OS_HAVE_STREAMS
73  if (d)
74  {
75  std::boolalpha(os);
76  os >> d->set();
77  d->updated(); // because use of set().
78  }
79 #endif
80  return os;
81  }
82 
83  virtual bool isStreamable() const {
84  return true;
85  }
86 
87  };
88 
89  }
90 }
Write boolean as &#39;true&#39; or &#39;false&#39;.
virtual std::ostream & write(std::ostream &os, base::DataSourceBase::shared_ptr in) const
Output this datasource as a human readable string.
virtual void set(param_t t)=0
Set this DataSource with a value.
virtual std::istream & read(std::istream &os, base::DataSourceBase::shared_ptr out) const
Read a new value for this datasource from a human readable string.
boost::intrusive_ptr< DataSource< T > > shared_ptr
Definition: DataSource.hpp:115
boost::intrusive_ptr< AssignableDataSource< T > > shared_ptr
Use this type to store a pointer to an AssignableDataSource.
Definition: DataSource.hpp:198
virtual result_t value() const =0
Return the result of the last evaluate() function.
boost::intrusive_ptr< DataSourceBase > shared_ptr
Use this type to store a pointer to a DataSourceBase.
Contains TaskContext, Activity, OperationCaller, Operation, Property, InputPort, OutputPort, Attribute.
Definition: Activity.cpp:51
virtual bool isStreamable() const
Returns true if this type is directly streamable using read()/write() or toString()/fromString().
virtual void updated()
In case the internal::DataSource returns a &#39;reference&#39; type, call this method to notify it that the d...
Definition: DataSource.cpp:112
Type information for standard C types or structs of which no introspection is required.
Definition: StdTypeInfo.hpp:58