Note: Goby version 1 (shown here) is now considered obsolete. Please use version 2 for new projects, and consider upgrading old projects.

Goby Underwater Autonomy Project  Series: 1.1, revision: 163, released on 2013-02-06 14:23:27 -0500
acomms/libdccl/message_var_bool.h
00001 // copyright 2008, 2009 t. schneider tes@mit.edu
00002 // 
00003 // this file is part of the Dynamic Compact Control Language (DCCL),
00004 // the goby-acomms codec. goby-acomms is a collection of libraries 
00005 // for acoustic underwater networking
00006 //
00007 // This program is free software: you can redistribute it and/or modify
00008 // it under the terms of the GNU General Public License as published by
00009 // the Free Software Foundation, either version 3 of the License, or
00010 // (at your option) any later version.
00011 //
00012 // This software is distributed in the hope that it will be useful,
00013 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00014 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00015 // GNU General Public License for more details.
00016 //
00017 // You should have received a copy of the GNU General Public License
00018 // along with this software.  If not, see <http://www.gnu.org/licenses/>.
00019 
00020 #ifndef MESSAGE_VAR_BOOL20100317H
00021 #define MESSAGE_VAR_BOOL20100317H
00022 
00023 #include "message_var.h"
00024 
00025 namespace goby
00026 {
00027 namespace acomms
00028 {   
00029     class DCCLMessageVarBool : public DCCLMessageVar
00030     {
00031       public:
00032         int calc_size() const
00033         { return 1 + 1; }
00034 
00035         DCCLType type() const { return dccl_bool; }
00036         
00037       private:
00038         void initialize_specific()
00039         { }
00040         
00041         
00042         boost::dynamic_bitset<unsigned char> encode_specific(const DCCLMessageVal& v)
00043         {
00044             bool b;
00045             if(v.get(b))
00046                 return boost::dynamic_bitset<unsigned char>(calc_size(), ((b) ? 1 : 0) + 1);
00047             else
00048                 return boost::dynamic_bitset<unsigned char>();
00049         }
00050         
00051 
00052         DCCLMessageVal decode_specific(boost::dynamic_bitset<unsigned char>& b)
00053         {
00054 
00055             unsigned long t = b.to_ulong();
00056             if(t)
00057             {
00058                 --t;
00059                 return DCCLMessageVal(bool(t));
00060             }
00061             else
00062                 return DCCLMessageVal();
00063         }
00064 
00065         void get_display_specific(std::stringstream& ss) const
00066         { }        
00067 
00068     };
00069 }
00070 }
00071 
00072 #endif
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends