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

binarystring.hxx

Go to the documentation of this file.
00001 /*-------------------------------------------------------------------------
00002  *
00003  *   FILE
00004  *      pqxx/binarystring.hxx
00005  *
00006  *   DESCRIPTION
00007  *      declarations for bytea (binary string) conversions
00008  *   DO NOT INCLUDE THIS FILE DIRECTLY; include pqxx/binarystring instead.
00009  *
00010  * Copyright (c) 2003, Jeroen T. Vermeulen <jtv@xs4all.nl>
00011  *
00012  * See COPYING for copyright license.  If you did not receive a file called
00013  * COPYING with this source code, please notify the distributor of this mistake,
00014  * or contact the author.
00015  *
00016  *-------------------------------------------------------------------------
00017  */
00018 #include "pqxx/libcompiler.h"
00019 
00020 #include <string>
00021 
00022 #include "pqxx/result"
00023 
00024 
00025 namespace pqxx
00026 {
00027 
00029 
00041 class PQXX_LIBEXPORT binarystring : PQAlloc<unsigned char>
00042 {
00043   // TODO: Templatize on character type?
00044 public:
00045   typedef unsigned char char_type;
00046   typedef PGSTD::char_traits<char_type>::char_type value_type;
00047   typedef size_t size_type;
00048   typedef ptrdiff_t difference_type;
00049   typedef const value_type &const_reference;
00050   typedef const value_type *const_pointer;
00051   typedef const_pointer const_iterator;
00052   typedef PGSTD::reverse_iterator<const_iterator> const_reverse_iterator;
00053 
00054 private:
00055   typedef PQAlloc<value_type> super;
00056 
00057 public:
00059 
00062   explicit binarystring(const result::field &F);                        //[t62]
00063 
00065   size_type size() const throw () { return m_size; }                    //[t62]
00066   size_type length() const throw () { return size(); }                  //[t62]
00067   bool empty() const throw () { return size()==0; }                     //[t62]
00068 
00069   const_iterator begin() const throw () { return data(); }              //[t62]
00070   const_iterator end() const throw () { return data()+m_size; }         //[t62]
00071 
00072   const_reverse_iterator rbegin() const                                 //[t62]
00073         { return const_reverse_iterator(end()); }
00074   const_reverse_iterator rend() const                                   //[t62]
00075         { return const_reverse_iterator(begin()); }
00076 
00078   const value_type *data() const throw () {return super::c_ptr();}      //[t62]
00079 
00080   const_reference operator[](size_type i) const throw ()                //[t62]
00081         { return data()[i]; }
00082 
00083   const_reference at(size_type n) const;                                //[t62]
00084 
00086   const char *c_ptr() const throw ()                                    //[t62]
00087   {
00088     return reinterpret_cast<char *>(super::c_ptr());
00089   }
00090 
00092 
00094   const PGSTD::string &str() const;                                     //[t62]
00095 
00096 private:
00097   size_type m_size;
00098   mutable PGSTD::string m_str;
00099 };
00100 
00101 
00103 PGSTD::string escape_binary(const PGSTD::string &bin);
00105 PGSTD::string escape_binary(const char bin[]);
00107 PGSTD::string escape_binary(const char bin[], size_t len);
00109 PGSTD::string escape_binary(const unsigned char bin[]);
00111 PGSTD::string escape_binary(const unsigned char bin[], size_t len);
00112 
00113 
00114 }
00115 

Generated on Sun Oct 5 05:38:07 2003 for libpqxx by doxygen 1.3.2