void JavaArg::DeepCopyValue()

in language-extensions/java/src/JavaArgContainer.cpp [75:185]


void JavaArg::DeepCopyValue(
	SQLSMALLINT      type,
	SQLINTEGER       strLen_or_Ind,
	const SQLPOINTER value
	)
{
	switch (type)
	{
	case SQL_C_SLONG:
	{
		int *pValue = new int;
		*pValue = *(reinterpret_cast<const int*>(value));
		m_value = static_cast<SQLPOINTER>(pValue);

		break;
	}
	case SQL_C_BIT:
	{
		bool *pValue = new bool;
		*pValue = *(reinterpret_cast<const bool*>(value));
		m_value = static_cast<SQLPOINTER>(pValue);

		break;
	}
	case SQL_C_DOUBLE:
	{
		double *pValue = new double;
		*pValue = *(reinterpret_cast<const double*>(value));
		m_value = static_cast<SQLPOINTER>(pValue);

		break;
	}
	case SQL_C_FLOAT:
	{
		float *pValue = new float;
		*pValue = *(reinterpret_cast<const float*>(value));
		m_value = static_cast<SQLPOINTER>(pValue);

		break;
	}
	case SQL_C_SBIGINT:
	{
		long long *pValue = new long long;
		*pValue = *(reinterpret_cast<const long long*>(value));
		m_value = static_cast<SQLPOINTER>(pValue);

		break;
	}
	case SQL_C_UTINYINT:
	{
		unsigned char *pValue = new unsigned char;
		*pValue = *(reinterpret_cast<const unsigned char*>(value));
		m_value = static_cast<SQLPOINTER>(pValue);

		break;
	}
	case SQL_C_SSHORT:
	{
		short *pValue = new short;
		*pValue = *(reinterpret_cast<const short*>(value));
		m_value = static_cast<SQLPOINTER>(pValue);

		break;
	}
	case SQL_C_CHAR:
	case SQL_C_WCHAR:
	case SQL_C_BINARY:
	{
		char *pValue = new char[strLen_or_Ind];

		memcpy(pValue, value, strLen_or_Ind);
		m_value = static_cast<SQLPOINTER>(pValue);

		break;
	}
	case SQL_C_GUID:
	{
		SQLGUID *pValue = new SQLGUID;
		memcpy(pValue, value, sizeof(SQLGUID));
		m_value = static_cast<SQLPOINTER>(pValue);

		break;
	}
	case SQL_C_TYPE_DATE:
	{
		SQL_DATE_STRUCT *pValue = new SQL_DATE_STRUCT;
		memcpy(pValue, value, sizeof(SQL_DATE_STRUCT));
		m_value = static_cast<SQLPOINTER>(pValue);

		break;
	}
	case SQL_C_NUMERIC:
	{
		SQL_NUMERIC_STRUCT *pValue = new SQL_NUMERIC_STRUCT;
		memcpy(pValue, value, sizeof(SQL_NUMERIC_STRUCT));
		m_value = static_cast<SQLPOINTER>(pValue);

		break;
	}
	case SQL_C_TYPE_TIMESTAMP:
	{
		SQL_TIMESTAMP_STRUCT *pValue = new SQL_TIMESTAMP_STRUCT;
		memcpy(pValue, value, sizeof(SQL_TIMESTAMP_STRUCT));
		m_value = static_cast<SQLPOINTER>(pValue);

		break;
	}
	default:
		throw invalid_argument("Unsupported input parameter type");
	}
}