solarpowerlog trunk
/home/tobi/workspace/solarpowerlog/src/patterns/IValue.h
Go to the documentation of this file.
00001 /* ----------------------------------------------------------------------------
00002  solarpowerlog
00003  Copyright (C) 2009  Tobias Frost
00004 
00005  This file is part of solarpowerlog.
00006 
00007  Solarpowerlog is free software; However, it is dual-licenced
00008  as described in the file "COPYING".
00009 
00010  For this file (IValue.h), the license terms are:
00011 
00012  You can redistribute it and/or  modify it under the terms of the GNU Lesser
00013  General Public License (LGPL) as published by the Free Software Foundation;
00014  either version 3 of the License, or (at your option) any later version.
00015 
00016  This program is distributed in the hope that it will be useful, but
00017  WITHOUT ANY WARRANTY; without even the implied warranty of
00018  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00019  Lesser General Public License for more details.
00020 
00021  You should have received a copy of the GNU Library General Public
00022  License along with this proramm; if not, see
00023  <http://www.gnu.org/licenses/>.
00024  ----------------------------------------------------------------------------
00025  */
00026 
00033 #ifndef ICAPABILITY_H_
00034 #define ICAPABILITY_H_
00035 
00036 #ifdef HAVE_CONFIG_H
00037 #include "config.h"
00038 #endif
00039 
00040 #include <string>
00041 
00052 class IValue
00053 {
00054 public:
00055 
00058      enum factory_types
00059      {
00060           bool_type, 
00061           int_type, 
00062           float_type, 
00063           string_type
00065      };
00066 
00068      static IValue* Factory( const factory_types typedescriptor );
00069 
00071      virtual factory_types GetType( void ) const;
00072 
00073      // virtual std::string string GetValueAsString();
00074 
00075 public:
00077      virtual operator std::string() = 0;
00078 
00079 protected:
00080      IValue();
00081 public:
00082      virtual ~IValue();
00083 
00084 protected:
00085      factory_types type;
00086 
00087 };
00088 
00089 #endif /* ICAPABILITY_H_ */