8 #define SOCI_FIREBIRD_SOURCE 20 position_ = position-1;
27 statement_.intos_.push_back(static_cast<void*>(
this));
29 XSQLVAR *var = statement_.sqldap_->sqlvar+position_;
33 var->sqlind = &indISCHolder_;
42 bool gotData,
bool calledFromFetch,
indicator * ind)
44 if (calledFromFetch && (gotData ==
false))
53 if (
i_null == statement_.inds_[position_][0] && NULL == ind)
55 throw soci_error(
"Null value fetched and no indicator defined.");
59 *ind = statement_.inds_[position_][0];
67 XSQLVAR *var = statement_.sqldap_->sqlvar+position_;
77 short t = from_isc<short>(var);
78 *
reinterpret_cast<short*
>(data_) = t;
83 int t = from_isc<int>(var);
84 *
reinterpret_cast<int *
>(data_) = t;
89 long long t = from_isc<long long>(var);
90 *
reinterpret_cast<long long *
>(data_) = t;
95 double t = from_isc<double>(var);
96 *
reinterpret_cast<double*
>(data_) = t;
102 *(
reinterpret_cast<std::string*
>(data_)) =
getTextParam(var);
106 buf_, static_cast<std::tm*>(data_));
112 static_cast<std::tm*
>(data_)->tm_isdst = -1;
118 blob *tmp =
reinterpret_cast<blob*
>(data_);
125 throw soci_error(
"Can't get Firebid BLOB BackEnd");
128 blob->
assign(*reinterpret_cast<ISC_QUAD*>(buf_));
132 throw soci_error(
"Into element used with non-supported type.");
143 std::vector<void*>::iterator it =
144 std::find(statement_.intos_.begin(), statement_.intos_.end(),
this);
145 if (it != statement_.intos_.end())
146 statement_.intos_.erase(it);
virtual void assign(ISC_QUAD const &bid)
virtual void define_by_pos(int &position, void *data, details::exchange_type type)
char * allocBuffer(XSQLVAR *var)
void tmDecode(short type, void *src, std::tm *dst)
details::blob_backend * get_backend()
virtual void post_fetch(bool gotData, bool calledFromFetch, indicator *ind)
virtual void exchangeData()
std::string getTextParam(XSQLVAR const *var)