MCPcopy Create free account
hub / github.com/NGT-labs/NGT / setObject

Method setObject

lib/NGT/ObjectRepository.h:246–290  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

244 }
245
246 template <typename T> void setObject(void *object, T *o, size_t size) {
247 if (type == typeid(uint8_t)) {
248 uint8_t *obj = static_cast<uint8_t *>(object);
249 for (size_t i = 0; i < size; i++) {
250 obj[i] = static_cast<uint8_t>(o[i]);
251 }
252 } else if (type == typeid(float)) {
253 float *obj = static_cast<float *>(object);
254 for (size_t i = 0; i < size; i++) {
255 obj[i] = static_cast<float>(o[i]);
256 }
257#ifdef NGT_HALF_FLOAT
258 } else if (type == typeid(float16)) {
259 float16 *obj = static_cast<float16 *>(object);
260 for (size_t i = 0; i < size; i++) {
261 obj[i] = static_cast<float16>(o[i]);
262 }
263#endif
264 } else if (type == typeid(qsint8)) {
265 uint8_t *obj = static_cast<uint8_t *>(object);
266 for (size_t i = 0; i < size; i++) {
267 auto i8 = static_cast<int8_t>(o[i]);
268 obj[i] = *reinterpret_cast<uint8_t *>(&i8);
269 }
270#ifdef NGT_BFLOAT
271 } else if (type == typeid(bfloat16)) {
272 bfloat16 *obj = static_cast<bfloat16 *>(object);
273 for (size_t i = 0; i < size; i++) {
274 obj[i] = static_cast<bfloat16>(o[i]);
275 }
276#endif
277#ifdef NGT_PQ4
278 } else if (type == typeid(qint4)) {
279 qint4 *obj = static_cast<qint4 *>(object);
280 for (size_t i = 0; i < size; i++) {
281 obj[i] = static_cast<qint4>(o[i]);
282 }
283#endif
284 } else {
285 std::stringstream msg;
286 msg << "ObjectSpace::setObject: Fatal error: unsupported type! " << type.name();
287 NGTThrowException(msg);
288 }
289 return;
290 }
291
292 template <typename T> void setObject(NGT::Object &obj, T *o, size_t size) {
293 void *object = obj.getPointer();

Callers 2

updateMethod · 0.80
updateToRefinementMethod · 0.80

Calls 3

dataMethod · 0.80
getPointerMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected