00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
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 : internal::PQAlloc<unsigned char>
00042 {
00043
00044
public:
00045 typedef content_type
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
00053
#ifdef PQXX_HAVE_REVERSE_ITERATOR
00054
typedef PGSTD::reverse_iterator<const_iterator> const_reverse_iterator;
00055
#endif
00056
00057
private:
00058
typedef internal::PQAlloc<value_type> super;
00059
00060
public:
00062
00065
explicit binarystring(
const result::field &F);
00066
00068 size_type size() const throw () {
return m_size; }
00069 size_type length() const throw () {
return size(); }
00070 bool empty() const throw () {
return size()==0; }
00071
00072 const_iterator begin() const throw () {
return data(); }
00073 const_iterator end() const throw () {
return data()+m_size; }
00074
00075
#ifdef PQXX_HAVE_REVERSE_ITERATOR
00076
const_reverse_iterator rbegin() const
00077 {
return const_reverse_iterator(end()); }
00078 const_reverse_iterator rend() const
00079 {
return const_reverse_iterator(begin()); }
00080
#endif
00081
00083 const value_type *data() const throw () {
return super::c_ptr();}
00084
00085 const_reference operator[](
size_type i)
const throw ()
00086 {
return data()[i]; }
00087
00089 const_reference at(size_type) const;
00090
00092
00095 const
char *c_ptr() const throw ()
00096 {
00097
return reinterpret_cast<char *>(super::c_ptr());
00098 }
00099
00101
00103
const PGSTD::string &str() const;
00104
00105 private:
00106 size_type m_size;
00107 mutable PGSTD::string m_str;
00108 };
00109
00110
00112 PGSTD::string PQXX_LIBEXPORT escape_binary(const PGSTD::string &bin);
00114 PGSTD::string PQXX_LIBEXPORT escape_binary(const
char bin[]);
00116 PGSTD::string PQXX_LIBEXPORT escape_binary(const
char bin[], size_t len);
00118 PGSTD::string PQXX_LIBEXPORT escape_binary(const
unsigned char bin[]);
00120 PGSTD::string PQXX_LIBEXPORT escape_binary(const
unsigned char bin[], size_t len);
00121
00122
00123 }
00124