00001 // database column container -*- C++ -*- 00002 // $Id: row_base.h,v 1.2 2004/01/07 14:29:39 roger Exp $ 00003 // 00004 // Copyright (C) 2003 Roger Leigh <rleigh@debian.org> 00005 // 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 2 of the License, or 00010 // (at your option) any later version. 00011 // 00012 // This program 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 program; if not, write to the Free Software 00019 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 00020 00021 #ifndef PQXX_OBJECT_COLUMN_H 00022 #define PQXX_OBJECT_COLUMN_H 00023 00024 #include <sigc++/signal.h> 00025 00026 namespace pqxxobject 00027 { 00028 template<typename T> 00029 class column 00030 { 00031 public: 00032 typedef T value_type; 00033 00035 column(): 00036 m_value() 00037 {} 00038 00040 column(const value_type& value): 00041 m_value(value) 00042 {} 00043 00045 column(const column<value_type>& rhs): 00046 m_value(rhs.m_value), 00047 m_signal_changed() 00048 {} 00049 00050 virtual ~column() 00051 {} 00052 00053 column<value_type>& operator = (const column<value_type>& rhs) 00054 { 00055 set_value(rhs.m_value); 00056 return *this; 00057 } 00058 00059 column<value_type>& operator = (const value_type& rhs) 00060 { 00061 set_value(rhs); 00062 return *this; 00063 } 00064 00065 operator const value_type& () const 00066 { 00067 return m_value; 00068 } 00069 00070 value_type& get_value() 00071 { 00072 return m_value; 00073 } 00074 00075 void set_value(const value_type& value) 00076 { 00077 m_value = value; 00078 m_signal_changed.emit(); 00079 } 00080 00081 SigC::Signal0<void>& signal_changed() 00082 { 00083 return m_signal_changed; 00084 } 00085 00086 private: 00087 value_type m_value; 00088 SigC::Signal0<void> m_signal_changed; 00089 00090 }; // class column 00091 00092 }; // namespace pqxxobject 00093 00094 #endif // PQXX_OBJECT_COLUMN_H