76 case DMLFieldType::GID:
77 gidValue =
static_cast<uint64_t
>(value);
79 case DMLFieldType::I16:
80 intValue =
static_cast<int16_t
>(value);
82 case DMLFieldType::U8:
83 intValue =
static_cast<uint8_t
>(value);
85 case DMLFieldType::DFLOAT:
88 case DMLFieldType::I32:
89 intValue =
static_cast<int32_t
>(value);
91 case DMLFieldType::U16:
92 intValue =
static_cast<uint16_t
>(value);
94 case DMLFieldType::U32:
95 intValue =
static_cast<uint32_t
>(value);
97 case DMLFieldType::DDOUBLE:
100 case DMLFieldType::STR:
101 if constexpr (std::is_same<T, std::string>::value) {
103 strValue =
new char[value.length() + 1];
106 throw std::invalid_argument(
107 "Type mismatch: expected std::string for STR");
110 case DMLFieldType::WSTR:
111 if constexpr (std::is_same<T, std::wstring>::value) {
113 wstrValue =
new wchar_t[value.length() + 1];
116 throw std::invalid_argument(
117 "Type mismatch: expected std::wstring for WSTR");
121 throw std::invalid_argument(
"Unknown DMLFieldType");
123 }
catch (
const std::exception &e) {
124 std::cerr <<
"Error setting value: " << e.what() << std::endl;