31 #if !defined(MYSQLPP_TYPE_INFO_H) 
   32 #define MYSQLPP_TYPE_INFO_H 
   44 #if !defined(DOXYGEN_IGNORE) 
   47 class MYSQLPP_EXPORT mysql_type_info;
 
   48 class MYSQLPP_EXPORT mysql_ti_sql_type_info_lookup;
 
   50 class MYSQLPP_EXPORT mysql_ti_sql_type_info
 
   60         friend class mysql_type_info;
 
   61         friend class mysql_ti_sql_type_info_lookup;
 
   63         mysql_ti_sql_type_info& operator=(
 
   64                         const mysql_ti_sql_type_info& b);
 
   68         mysql_ti_sql_type_info() :
 
   72 #if MYSQL_VERSION_ID > 40000
 
   82         mysql_ti_sql_type_info(
const char* s,
 
   83                         const std::type_info& t, 
const enum_field_types bt,
 
   84                         const unsigned int flags = 0) :
 
   92         bool is_default()
 const { 
return flags_ & tf_default; }
 
   93         bool is_null()
 const { 
return flags_ & tf_null; }
 
   94         bool is_unsigned()
 const { 
return flags_ & tf_unsigned; }
 
   96         const char* sql_name_;
 
   97         const std::type_info* c_type_;
 
   98         const enum_field_types base_type_;
 
   99         const unsigned int flags_;
 
  105         bool operator() (
const std::type_info* lhs,
 
  106                         const std::type_info* rhs)
 const 
  108                 return lhs->before(*rhs) != 0;
 
  112 class MYSQLPP_EXPORT mysql_ti_sql_type_info_lookup
 
  115         friend class mysql_type_info;
 
  117         typedef mysql_ti_sql_type_info sql_type_info;
 
  118         typedef std::map<const std::type_info*, unsigned char, type_info_cmp>
 
  121         mysql_ti_sql_type_info_lookup(
const sql_type_info types[],
 
  124         const unsigned char& operator [](
 
  125                         const std::type_info& ti)
 const 
  127                 map_type::const_iterator it = map_.find(&ti);
 
  128                 if (it != map_.end()) {
 
  132                         std::ostringstream outs;
 
  133                         outs << 
"Failed to find MySQL C API type ID for " << ti.name();
 
  134                         throw TypeLookupFailed(outs.str());
 
  141 #endif // !defined(DOXYGEN_IGNORE) 
  159         num_(static_cast<unsigned char>(-1))
 
  169                         bool _null = 
false) :
 
  170         num_(type(t, _unsigned, _null))
 
  210         const char* 
name()
 const { 
return deref().c_type_->name(); }
 
  215         const char* 
sql_name()
 const { 
return deref().sql_name_; }
 
  221         const std::type_info& 
c_type()
 const { 
return *deref().c_type_; }
 
  248         bool quote_q() 
const;
 
  255         bool escape_q() 
const;
 
  263                 return num_ < b.num_;
 
  270         static const enum_field_types string_type =
 
  271 #if MYSQL_VERSION_ID > 40000 
  278         typedef mysql_ti_sql_type_info sql_type_info;
 
  279         typedef mysql_ti_sql_type_info_lookup sql_type_info_lookup;
 
  281         static const sql_type_info types[];
 
  282         static const int num_types;
 
  284         static const sql_type_info_lookup lookups;
 
  304         static unsigned char type(enum_field_types t,
 
  305                         bool _unsigned, 
bool _null = 
false);
 
  307         const sql_type_info& deref()
 const 
  316 inline bool operator ==(
const mysql_type_info& a, 
const mysql_type_info& b)
 
  318         return a.id() == b.id();
 
  322 inline bool operator !=(
const mysql_type_info& a, 
const mysql_type_info& b)
 
  324         return a.id() != b.id();
 
  329 inline bool operator ==(
const std::type_info& a, 
const mysql_type_info& b)
 
  331         return a == b.c_type();
 
  336 inline bool operator !=(
const std::type_info& a, 
const mysql_type_info& b)
 
  338         return a != b.c_type();
 
  343 inline bool operator ==(
const mysql_type_info& a, 
const std::type_info& b)
 
  345         return a.c_type() == b;
 
  350 inline bool operator !=(
const mysql_type_info& a, 
const std::type_info& b)
 
  352         return a.c_type() != b;
 
  357 #endif // !defined(MYSQLPP_TYPE_INFO_H) 
int id() const 
Returns the ID of the SQL type. 
Definition: type_info.h:238
SQL field type information. 
Definition: type_info.h:148
const std::type_info & c_type() const 
Returns the type_info for the C++ type associated with the SQL type. 
Definition: type_info.h:221
Declares the MySQL++-specific exception classes. 
const char * sql_name() const 
Returns the name of the SQL type. 
Definition: type_info.h:215
mysql_type_info(const std::type_info &t)
Create object from a C++ type_info object. 
Definition: type_info.h:184
const char * name() const 
Returns an implementation-defined name of the C++ type. 
Definition: type_info.h:210
This file includes top-level definitions for use both internal to the library, and outside it...
mysql_type_info()
Default constructor. 
Definition: type_info.h:158
mysql_type_info(enum_field_types t, bool _unsigned=false, bool _null=false)
Create object from MySQL C API type info. 
Definition: type_info.h:168
mysql_type_info(const mysql_type_info &t)
Create object as a copy of another. 
Definition: type_info.h:175
bool before(mysql_type_info &b)
Provides a way to compare two types for sorting. 
Definition: type_info.h:261
const mysql_type_info base_type() const 
Returns the type_info for the C++ type inside of the mysqlpp::Null type. 
Definition: type_info.h:228