BlobValue.h

Go to the documentation of this file.
00001 // -*- mode: C++ -*- 
00002 //
00003 // Copyright (C) 2006 Christian Holm Christensen <cholm@nbi.dk>
00004 //
00005 // This library is free software; you can redistribute it and/or
00006 // modify it under the terms of the GNU Lesser General Public License
00007 // as published by the Free Software Foundation; either version 2.1
00008 // of the License, or (at your option) any later version.
00009 //
00010 // This library is distributed in the hope that it will be useful,
00011 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00012 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00013 // Lesser General Public License for more details.
00014 //
00015 // You should have received a copy of the GNU Lesser General Public
00016 // License along with this library; if not, write to the Free
00017 // Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
00018 // 02111-1307 USA
00019 //
00025 #ifndef RCUCONF_BLOBVALUE_H
00026 #define RCUCONF_BLOBVALUE_H
00027 #ifndef RCUCONF_VALUE_H
00028 # include <rcuconf/Value.h>
00029 #endif
00030 #ifndef RCUDB_BLOB_H
00031 # include <rcudb/Blob.h>
00032 #endif
00033 #ifndef __LIST__
00034 # include <list>
00035 #endif
00036 // Forward declarations 
00037 namespace RcuDb 
00038 {
00039   class Row;
00040   class Sql;
00041 }
00042 
00043 namespace RcuConf 
00044 {
00045   class Parameter;
00046   class Config;
00047   
00053   class BlobValue : public Value
00054   {
00055   public:
00062     template <typename T>
00063     BlobValue(int                   config, 
00064               int                   param, 
00065               int                   address, 
00066               const std::vector<T>& value) 
00067       : Value(config, param, address),
00068         fValue(value)
00069     {}
00071     virtual ~BlobValue() { }
00072 
00074     typedef std::list<BlobValue*> List;
00075 
00077     virtual void Print() const;
00080     virtual bool Insert(RcuDb::Server& s);
00083     static  bool Create(RcuDb::Server& s);
00086     static  bool Drop(RcuDb::Server& s);
00092     static  bool Select(List& l, RcuDb::Server& s, const RcuDb::Sql& cond);
00103     static  bool Select(List& l, RcuDb::Server& s, 
00104                         const Config&    c,
00105                         const Parameter& p, 
00106                         int addr=-1);
00117     static  bool Select(List& l, RcuDb::Server& s, int c, int p, 
00118                         int addr=-1);
00119 
00121     template <typename T>
00122     void Values(std::vector<T>& v) const
00123     {
00124       fValue.Decode(v);
00125     }
00127     template <typename T> 
00128     void Set(const std::vector<T>& v) 
00129     {
00130       fValue.Encode(v);
00131     }
00133     static const std::string fgName;
00134   protected:
00137     BlobValue(RcuDb::Row& row);
00139     RcuDb::Blob fValue;
00141     friend class Value;
00142   };
00143 }
00144 #endif
00145 //
00146 // EOF
00147 //
00148 
Top of page Last update Fri Apr 27 01:54:15 2007
Copyright © 2004 Christian Holm Created by DoxyGen 1.3.5