#include "Pgsql_Params.h" using namespace Pgsql; Params::Params() {} Params::Params(const Params& rhs) : m_paramTypes(rhs.m_paramTypes) , m_paramLengths(rhs.m_paramLengths) , m_paramFormats(rhs.m_paramFormats) { //std::vector m_paramValues; copyValues(rhs.m_paramValues); } Params& Params::operator=(const Params& rhs) { if (&rhs != this) { m_paramTypes = rhs.m_paramTypes; m_paramLengths = rhs.m_paramLengths; m_paramFormats = rhs.m_paramFormats; copyValues(rhs.m_paramValues); } return *this; } Params::Params(const Params&& rhs) : m_paramTypes(std::move(rhs.m_paramTypes)) , m_paramValues(std::move(rhs.m_paramValues)) , m_paramLengths(std::move(rhs.m_paramLengths)) , m_paramFormats(std::move(rhs.m_paramFormats)) {} Params::~Params() { deleteValues(); } void Params::addText(const char *data, Oid oid) { m_paramTypes.push_back(oid); m_paramValues.push_back(data); m_paramLengths.push_back(data ? strlen(data) + 1 : 0); m_paramFormats.push_back(0); } void Params::add(const QString &s, Oid oid) { auto ba = s.toUtf8(); const int len = ba.size(); char * p = new char[len]; std::memcpy(p, ba.data(), len); addText(p, oid); } void Params::addBinary(const char *data, int length, Oid oid) { m_paramTypes.push_back(oid); m_paramValues.push_back(data); m_paramLengths.push_back(length); m_paramFormats.push_back(1); } void Params::clear() { m_paramTypes.clear(); deleteValues(); m_paramValues.clear(); m_paramLengths.clear(); m_paramFormats.clear(); } void Params::copyValues(const t_paramValues &r) { const int n = m_paramTypes.size(); m_paramValues.reserve(n); for (int i = 0; i < n; ++i) { const int len = m_paramLengths[i]; char * p = new char[len]; std::memcpy(p, r[i], len); m_paramValues.push_back(p); } }