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");
}
}