Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Namespace Members | Class Members | File Members

pqxx-object/query_helpers.h

Go to the documentation of this file.
00001 // database query helper functions                               -*- C++ -*-
00002 // $Id: query_helpers.h,v 1.1 2004/04/01 10:13:09 roger Exp $
00003 //
00004 // Copyright (C) 2003  Roger Leigh <rleigh@debian.org>
00005 //
00006 //
00007 //  All rights reserved.
00008 //
00009 //  Redistribution and use in source and binary forms, with or without
00010 //  modification, are permitted provided that the following conditions
00011 //  are met:
00012 //
00013 //  * Redistributions of source code must retain the above copyright
00014 //    notice, this list of conditions and the following disclaimer.
00015 //  * Redistributions in binary form must reproduce the above
00016 //    copyright notice, this list of conditions and the following
00017 //    disclaimer in the documentation and/or other materials provided
00018 //    with the distribution.
00019 //  * Neither the name of the author, nor the names of other
00020 //    contributors may be used to endorse or promote products derived
00021 //    from this software without specific prior written permission.
00022 //
00023 //  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
00024 //  CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
00025 //  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
00026 //  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
00027 //  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
00028 //  BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
00029 //  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
00030 //  TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
00031 //  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
00032 //  ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
00033 //  TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
00034 //  THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
00035 //  SUCH DAMAGE.
00036 //
00038 
00039 #ifndef PQXX_OBJECT_QUERY_HELPERSH
00040 #define PQXX_OBJECT_QUERY_HELPERSH
00041 
00042 #include <sstream>
00043 
00044 namespace pqxxobject
00045 {
00051   template< typename T, template <typename> class F >
00052   struct query_helper
00053   {
00060     std::pair< std::string, std::string >
00061     apply(F<T>& field)
00062     {
00063       std::ostringstream value;
00064       value << field;
00065       return std::pair< std::string, std::string >
00066         (field.get_column_name(), value.str());
00067     }
00068   };
00069 
00070   template< template <typename> class F >
00071   struct query_helper< std::string, F >
00072   {
00073     std::pair< std::string, std::string >
00074     apply(F<std::string>& field)
00075     {
00076       std::ostringstream value;
00077       value << pqxx::Quote(*field);
00078       return std::pair< std::string, std::string >
00079         (field.get_column_name(), value.str());
00080     }
00081   };
00082 
00083   template< template <typename> class F >
00084   struct query_helper< bool, F >
00085   {
00086     std::pair< std::string, std::string >
00087     apply(F<bool>& field)
00088     {
00089       std::ostringstream value;
00090       value << (*field ? "true" : "false");
00091       return std::pair< std::string, std::string >
00092         (field.get_column_name(), value.str());
00093     }
00094   };
00095 
00096 }; // namespace pqxxobject
00097 
00098 #endif // PQXX_OBJECT_QUERY_HELPERSH

Generated on Thu Apr 1 12:53:10 2004 for pqxx-object API Reference by doxygen 1.3.5