8 #define SOCI_FIREBIRD_SOURCE 19 position_ = position-1;
26 statement_.intos_.push_back(static_cast<void*>(
this));
28 XSQLVAR *var = statement_.sqldap_->sqlvar+position_;
32 var->sqlind = &indISCHolder_;
43 void setIntoVector(
void *p, std::size_t indx, T
const &val)
45 std::vector<T> *dest =
46 static_cast<std::vector<T> *
>(p);
48 std::vector<T> &v = *dest;
57 XSQLVAR *var = statement_.sqldap_->sqlvar+position_;
67 short tmp = from_isc<short>(var);
68 setIntoVector(data_, row, tmp);
73 int tmp = from_isc<int>(var);
74 setIntoVector(data_, row, tmp);
79 long long tmp = from_isc<long long>(var);
80 setIntoVector(data_, row, tmp);
85 double tmp = from_isc<double>(var);
86 setIntoVector(data_, row, tmp);
98 setIntoVector(data_, row, data);
103 throw soci_error(
"Into vector element used with non-supported type.");
115 std::size_t rows = statement_.rowsFetched_;
117 for (std::size_t i = 0; i<rows; ++i)
119 if (statement_.inds_[position_][i] ==
i_null && (ind == NULL))
121 throw soci_error(
"Null value fetched and no indicator defined.");
123 else if (ind != NULL)
125 ind[i] = statement_.inds_[position_][i];
136 resizeVector<char> (data_, sz);
139 resizeVector<short> (data_, sz);
142 resizeVector<int> (data_, sz);
145 resizeVector<long long> (data_, sz);
148 resizeVector<double> (data_, sz);
151 resizeVector<std::string> (data_, sz);
154 resizeVector<std::tm> (data_, sz);
158 throw soci_error(
"Into vector element used with non-supported type.");
169 sz = getVectorSize<char> (data_);
172 sz = getVectorSize<short> (data_);
175 sz = getVectorSize<int> (data_);
178 sz = getVectorSize<long long> (data_);
181 sz = getVectorSize<double> (data_);
184 sz = getVectorSize<std::string> (data_);
187 sz = getVectorSize<std::tm> (data_);
191 throw soci_error(
"Into vector element used with non-supported type.");
204 std::vector<void*>::iterator it =
205 std::find(statement_.intos_.begin(), statement_.intos_.end(),
this);
206 if (it != statement_.intos_.end())
207 statement_.intos_.erase(it);
virtual void define_by_pos(int &position, void *data, details::exchange_type type)
virtual void exchangeData(std::size_t row)
virtual std::size_t size()
char * allocBuffer(XSQLVAR *var)
void tmDecode(short type, void *src, std::tm *dst)
virtual void post_fetch(bool gotData, indicator *ind)
virtual void resize(std::size_t sz)
std::string getTextParam(XSQLVAR const *var)