Reference to a field in a result set. More...
#include <field.hxx>
Public Types | |
typedef size_t | size_type |
Public Member Functions | |
field (const tuple &T, tuple_size_type C) throw () | |
Constructor. More... | |
template<> | |
bool | to (const char *&Obj) const |
Specialization: to(const char *&) . More... | |
Comparison | |
bool | operator== (const field &) const |
Byte-by-byte comparison of two fields (all nulls are considered equal) More... | |
bool | operator!= (const field &rhs) const |
Byte-by-byte comparison (all nulls are considered equal) More... | |
Column information | |
const char * | name () const |
Column name. More... | |
oid | type () const |
Column type. More... | |
oid | table () const |
What table did this column come from? More... | |
tuple_size_type | num () const |
tuple_size_type | table_column () const |
What column number in its originating table did this column come from? More... | |
Content access | |
const char * | c_str () const |
Read as plain C string. More... | |
template<typename T > | |
bool | to (T &Obj) const |
Read value into Obj; or leave Obj untouched and return false if null. More... | |
template<typename T > | |
bool | operator>> (T &Obj) const |
Read value into Obj; or leave Obj untouched and return false if null. More... | |
template<typename T > | |
bool | to (T &Obj, const T &Default) const |
Read value into Obj; or use Default & return false if null. More... | |
template<typename T > | |
T | as (const T &Default) const |
Return value as object of given type, or Default if null. More... | |
template<typename T > | |
T | as () const |
Return value as object of given type, or throw exception if null. More... | |
bool | is_null () const throw () |
size_type | size () const throw () |
Protected Member Functions | |
tuple_size_type | col () const throw () |
const result * | home () const throw () |
size_t | idx () const throw () |
Protected Attributes | |
tuple_size_type | m_col |
Private Attributes | |
const result * | m_home |
size_t | m_row |
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.
typedef size_t pqxx::field::size_type |
pqxx::field::field | ( | const tuple & | T, |
tuple_size_type | C | ||
) | throw () |
Constructor.
Create field as reference to a field in a result set.
T | Tuple that this field is part of. |
C | Column number of this field. |
|
inline |
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.
|
inline |
Return value as object of given type, or throw exception if null.
const char* pqxx::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.
Referenced by pqxx::from_string(), pqxx::field_streambuf< CHAR, TRAITS >::initialize(), pqxx::operator<<(), and pqxx::to_string().
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
bool pqxx::field::is_null | ( | ) | const throw () |
const char* pqxx::field::name | ( | ) | const |
Column name.
|
inline |
|
inline |
Byte-by-byte comparison (all nulls are considered equal)
bool pqxx::field::operator== | ( | const field & | ) | const |
Byte-by-byte comparison of two fields (all nulls are considered equal)
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.
|
inline |
Read value into Obj; or leave Obj untouched and return false
if null.
size_type pqxx::field::size | ( | ) | const throw () |
Referenced by pqxx::from_string(), pqxx::field_streambuf< CHAR, TRAITS >::initialize(), pqxx::operator<<(), and pqxx::to_string().
oid pqxx::field::table | ( | ) | const |
What table did this column come from?
tuple_size_type pqxx::field::table_column | ( | ) | const |
What column number in its originating table did this column come from?
|
inline |
Read value into Obj; or leave Obj untouched and return false
if null.
References pqxx::from_string().
|
inline |
Read value into Obj; or use Default & return false
if null.
|
inline |
Specialization: to(const char *&)
.
The buffer has the same lifetime as the data in this result (i.e. of this result object, or the last remaining one copied from it etc.), so take care not to use it after the last result object referring to this query result is destroyed.
oid pqxx::field::type | ( | ) | const |
Column type.
|
protected |
|
private |
|
private |