Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

pqxx::result::field Class Reference

Reference to a field in a result set. More...

#include <result.hxx>

Inheritance diagram for pqxx::result::field:

pqxx::result::const_fielditerator pqxx::result::const_reverse_fielditerator List of all members.

Public Types

typedef size_t size_type

Public Member Functions

 field (const tuple &T, tuple::size_type C) throw ()
 Constructor.
bool operator== (const field &) const
 Byte-by-byte comparison of two fields (all nulls are considered equal).
bool operator!= (const field &rhs) const
 Byte-by-byte comparison (all nulls are considered equal).
const char * c_str () const
 Read as plain C string.
const char * name () const
 Column name.
oid type () const
 Column type.
template<typename T>
bool to (T &Obj) const
 Read value into Obj; or leave Obj untouched and return false if null.
template<typename T>
bool operator>> (T &Obj) const
 Read value into Obj; or leave Obj untouched and return false if null.
template<typename T>
bool to (T &Obj, const T &Default) const
 Read value into Obj; or use Default & return false if null.
template<typename T>
as (const T &Default) const
 Return value as object of given type, or Default if null.
template<typename T>
as () const
 Return value as object of given type, or throw exception if null.
bool is_null () const
size_type size () const throw ()
tuple::size_type num () const

Protected Member Functions

const tuple::size_type col () const throw ()

Protected Attributes

tuple m_tup
tuple::size_type m_col

Detailed Description

Reference to a field in a result set.

A field represents one entry in a tuple. It represents an actual value in the result set, and can be converted to various types.


Member Typedef Documentation

typedef size_t pqxx::result::field::size_type
 

Reimplemented in pqxx::result::const_fielditerator.


Constructor & Destructor Documentation

pqxx::result::field::field const tuple T,
tuple::size_type  C
throw ()
 

Constructor.

Create field as reference to a field in a result set.

Parameters:
T Tuple that this field is part of.
C Column number of this field.


Member Function Documentation

template<typename T>
T pqxx::result::field::as  )  const
 

Return value as object of given type, or throw exception if null.

template<typename T>
T pqxx::result::field::as const T &  Default  )  const
 

Return value as object of given type, or Default if null.

Note that unless the function is instantiated with an explicit template argument, the Default value's type also determines the result type.

const char* pqxx::result::field::c_str  )  const
 

Read as plain C string.

Since the field's data is stored internally in the form of a zero-terminated C string, this is the fastest way to read it. Use the to() or as() functions to convert the string to other types such as int, or to C++ strings.

const tuple::size_type pqxx::result::field::col  )  const throw () [protected]
 

bool pqxx::result::field::is_null  )  const
 

const char* pqxx::result::field::name  )  const
 

Column name.

tuple::size_type pqxx::result::field::num  )  const
 

bool pqxx::result::field::operator!= const field rhs  )  const
 

Byte-by-byte comparison (all nulls are considered equal).

Warning:
See operator== for important information about this operator

bool pqxx::result::field::operator== const field  )  const
 

Byte-by-byte comparison of two fields (all nulls are considered equal).

Warning:
null handling is still open to discussion and change!
Handling of null values differs from that in SQL where a comparison involving a null value yields null, so nulls are never considered equal to one another or even to themselves.

Null handling also probably differs from the closest equivalent in C++, which is the NaN (Not-a-Number) value, a singularity comparable to SQL's null. This is because the builtin == operator demands that a == a.

The usefulness of this operator is questionable. No interpretation whatsoever is imposed on the data; 0 and 0.0 are considered different, as are null vs. the empty string, or even different (but possibly equivalent and equally valid) encodings of the same Unicode character etc.

template<typename T>
bool pqxx::result::field::operator>> T &  Obj  )  const
 

Read value into Obj; or leave Obj untouched and return false if null.

size_type pqxx::result::field::size  )  const throw ()
 

template<typename T>
bool pqxx::result::field::to T &  Obj,
const T &  Default
const
 

Read value into Obj; or use Default & return false if null.

template<typename T>
bool pqxx::result::field::to T &  Obj  )  const
 

Read value into Obj; or leave Obj untouched and return false if null.

oid pqxx::result::field::type  )  const
 

Column type.


Member Data Documentation

tuple::size_type pqxx::result::field::m_col [protected]
 

tuple pqxx::result::field::m_tup [protected]
 


The documentation for this class was generated from the following files:
Generated on Mon Nov 15 11:28:04 2004 for libpqxx by  doxygen 1.3.9.1