Move data from user variables to the request input message.
| 218 | |
| 219 | // Move data from user variables to the request input message. |
| 220 | void PreparedStatement::Builder::moveToStatement(thread_db* tdbb, PreparedStatement* stmt) const |
| 221 | { |
| 222 | for (Array<InputSlot>::const_iterator i = inputSlots.begin(); i != inputSlots.end(); ++i) |
| 223 | { |
| 224 | if (i->specifiedAddress && !*i->specifiedAddress) |
| 225 | { |
| 226 | stmt->setNull(i->number); |
| 227 | continue; |
| 228 | } |
| 229 | |
| 230 | switch (i->type) |
| 231 | { |
| 232 | case TYPE_SSHORT: |
| 233 | stmt->setSmallInt(tdbb, i->number, *(SSHORT*) i->address); |
| 234 | break; |
| 235 | |
| 236 | case TYPE_SLONG: |
| 237 | stmt->setInt(tdbb, i->number, *(SLONG*) i->address); |
| 238 | break; |
| 239 | |
| 240 | case TYPE_SINT64: |
| 241 | stmt->setBigInt(tdbb, i->number, *(SINT64*) i->address); |
| 242 | break; |
| 243 | |
| 244 | case TYPE_DOUBLE: |
| 245 | stmt->setDouble(tdbb, i->number, *(double*) i->address); |
| 246 | break; |
| 247 | |
| 248 | case TYPE_STRING: |
| 249 | stmt->setString(tdbb, i->number, *(AbstractString*) i->address); |
| 250 | break; |
| 251 | |
| 252 | case TYPE_METANAME: |
| 253 | stmt->setMetaName(tdbb, i->number, *(MetaName*) i->address); |
| 254 | break; |
| 255 | |
| 256 | case TYPE_METASTRING: |
| 257 | stmt->setMetaString(tdbb, i->number, *(MetaString*) i->address); |
| 258 | break; |
| 259 | |
| 260 | default: |
| 261 | fb_assert(false); |
| 262 | } |
| 263 | } |
| 264 | } |
| 265 | |
| 266 | |
| 267 | PreparedStatement::PreparedStatement(thread_db* tdbb, MemoryPool& pool, |
no test coverage detected