void Routine::releaseStatement(thread_db* tdbb) { if (getStatement()) { getStatement()->release(tdbb); setStatement(NULL); } setInputFormat(NULL); setOutputFormat(NULL); flags &= ~FLAG_SCANNED; }
/*! \brief Add the \l CoordinateConversionOptions object \a option to the list of options. */ void CoordinateConversionController::addOption(CoordinateConversionOptions* option) { m_options.append(option); if (m_options.size() == 1) setInputFormat(option->name()); if (!m_coordinateFormats.contains(option->name())) { m_coordinateFormats.append(option->name()); emit coordinateFormatsChanged(); } emit optionsChanged(); }
// Parse the messages of a blr request. For specified message, allocate a format (Format) block. void Routine::parseMessages(thread_db* tdbb, CompilerScratch* csb, BlrReader blrReader) { if (blrReader.getLength() < 2) status_exception::raise(Arg::Gds(isc_metadata_corrupt)); csb->csb_blr_reader = blrReader; const SSHORT version = csb->csb_blr_reader.getByte(); switch (version) { case blr_version4: case blr_version5: //case blr_version6: break; default: status_exception::raise( Arg::Gds(isc_metadata_corrupt) << Arg::Gds(isc_wroblrver2) << Arg::Num(blr_version4) << Arg::Num(blr_version5/*6*/) << Arg::Num(version)); } if (csb->csb_blr_reader.getByte() != blr_begin) status_exception::raise(Arg::Gds(isc_metadata_corrupt)); while (csb->csb_blr_reader.getByte() == blr_message) { const USHORT msgNumber = csb->csb_blr_reader.getByte(); USHORT count = csb->csb_blr_reader.getWord(); Format* format = Format::newFormat(*tdbb->getDefaultPool(), count); USHORT padField; const bool shouldPad = csb->csb_message_pad.get(msgNumber, padField); USHORT maxAlignment = 0; ULONG offset = 0; USHORT i = 0; for (Format::fmt_desc_iterator desc = format->fmt_desc.begin(); i < count; ++i, ++desc) { const USHORT align = PAR_desc(tdbb, csb, &*desc); if (align) offset = FB_ALIGN(offset, align); desc->dsc_address = (UCHAR*)(IPTR) offset; offset += desc->dsc_length; maxAlignment = MAX(maxAlignment, align); if (maxAlignment && shouldPad && i + 1 == padField) offset = FB_ALIGN(offset, maxAlignment); } format->fmt_length = offset; switch (msgNumber) { case 0: setInputFormat(format); break; case 1: setOutputFormat(format); break; default: delete format; } } }
/*! \brief Sets any values in \a properties which are relevant for the coordinate conversion controller. This tool will use the following key/value pairs in the \a properties map if they are set: \list \li CoordinateFormat. The default input coordinate format for the tool. \endlist */ void CoordinateConversionController::setProperties(const QVariantMap& properties) { auto findFormatIt = properties.find(CoordinateConversionConstants::COORDINATE_FORMAT_PROPERTY); if (findFormatIt != properties.end()) setInputFormat(findFormatIt.value().toString()); }