in cppcache/src/PdxInstanceImpl.cpp [963:1151]
std::string PdxInstanceImpl::toString() const {
std::string result = "PDX[" + std::to_string(pdxType_->getTypeId()) + "," +
pdxType_->getPdxClassName() + "]{";
bool firstElement = true;
auto identityFields = getIdentityPdxFields();
for (size_t i = 0; i < identityFields.size(); i++) {
if (firstElement) {
firstElement = false;
} else {
result += ",";
}
result += identityFields.at(i)->getFieldName();
result += "=";
switch (identityFields.at(i)->getTypeId()) {
case PdxFieldTypes::BOOLEAN: {
auto&& value = getBooleanField(identityFields.at(i)->getFieldName());
result += value ? "true" : "false";
break;
}
case PdxFieldTypes::BYTE: {
auto&& value = getByteField(identityFields.at(i)->getFieldName());
result += std::to_string(value);
break;
}
case PdxFieldTypes::SHORT: {
int16_t value = getShortField(identityFields.at(i)->getFieldName());
result += std::to_string(value);
break;
}
case PdxFieldTypes::INT: {
int32_t value = getIntField(identityFields.at(i)->getFieldName());
result += std::to_string(value);
break;
}
case PdxFieldTypes::LONG: {
int64_t value = getLongField(identityFields.at(i)->getFieldName());
result += std::to_string(value);
break;
}
case PdxFieldTypes::FLOAT: {
float value = getFloatField(identityFields.at(i)->getFieldName());
result += std::to_string(value);
break;
}
case PdxFieldTypes::DOUBLE: {
double value = getDoubleField(identityFields.at(i)->getFieldName());
result += std::to_string(value);
break;
}
case PdxFieldTypes::CHAR: {
auto value = getCharField(identityFields.at(i)->getFieldName());
result += to_utf8(std::u16string{value});
break;
}
case PdxFieldTypes::STRING: {
auto value = getStringField(identityFields.at(i)->getFieldName());
result += value;
break;
}
case PdxFieldTypes::CHAR_ARRAY: {
auto value = getCharArrayField(identityFields.at(i)->getFieldName());
auto length = value.size();
if (length > 0) {
result += to_utf8(std::u16string(value.data(), length));
}
break;
}
case PdxFieldTypes::STRING_ARRAY: {
auto value = getStringArrayField(identityFields.at(i)->getFieldName());
for (auto&& v : value) {
result += v;
}
break;
}
case PdxFieldTypes::BYTE_ARRAY: {
auto value = getByteArrayField(identityFields.at(i)->getFieldName());
auto length = value.size();
if (length > 0) {
for (auto&& v : value) {
result += std::to_string(v);
}
}
break;
}
case PdxFieldTypes::SHORT_ARRAY: {
auto value = getShortArrayField(identityFields.at(i)->getFieldName());
auto length = value.size();
if (length > 0) {
for (auto&& v : value) {
result += std::to_string(v);
}
}
break;
}
case PdxFieldTypes::INT_ARRAY: {
auto value = getIntArrayField(identityFields.at(i)->getFieldName());
auto length = value.size();
if (length > 0) {
for (auto&& v : value) {
result += std::to_string(v);
}
}
break;
}
case PdxFieldTypes::LONG_ARRAY: {
auto value = getLongArrayField(identityFields.at(i)->getFieldName());
auto length = value.size();
if (length > 0) {
for (auto&& v : value) {
result += std::to_string(v);
}
}
break;
}
case PdxFieldTypes::FLOAT_ARRAY: {
auto value = getFloatArrayField(identityFields.at(i)->getFieldName());
auto length = value.size();
if (length > 0) {
for (auto&& v : value) {
result += std::to_string(v);
}
}
break;
}
case PdxFieldTypes::DOUBLE_ARRAY: {
auto value = getDoubleArrayField(identityFields.at(i)->getFieldName());
auto length = value.size();
if (length > 0) {
for (auto&& v : value) {
result += std::to_string(v);
}
}
break;
}
case PdxFieldTypes::DATE: {
auto value =
getCacheableDateField(identityFields.at(i)->getFieldName());
if (value != nullptr) {
result += value->toString().c_str();
}
break;
}
case PdxFieldTypes::BOOLEAN_ARRAY: {
auto value = getBooleanArrayField(identityFields.at(i)->getFieldName());
auto length = value.size();
if (length > 0) {
for (auto&& v : value) {
result += v ? "true" : "false";
}
}
break;
}
case PdxFieldTypes::ARRAY_OF_BYTE_ARRAYS: {
int8_t** value = nullptr;
int32_t arrayLength;
int32_t* elementLength;
getField(identityFields.at(i)->getFieldName(), &value, arrayLength,
elementLength);
if (arrayLength > 0) {
for (int j = 0; j < arrayLength; j++) {
for (int k = 0; k < elementLength[j]; k++) {
result += std::to_string(value[j][k]);
}
}
}
break;
}
case PdxFieldTypes::OBJECT_ARRAY: {
auto value =
getCacheableObjectArrayField(identityFields.at(i)->getFieldName());
if (value != nullptr) {
result += value->toString().c_str();
}
break;
}
case PdxFieldTypes::OBJECT:
case PdxFieldTypes::UNKNOWN: {
auto value = getCacheableField(identityFields.at(i)->getFieldName());
if (value != nullptr) {
result += value->toString().c_str();
}
}
}
}
result += "}";
return result;
}