MCPcopy Create free account
hub / github.com/ThatOpen/engine_web-ifc / WriteValue

Function WriteValue

src/cpp/wasm/web-ifc-wasm.cpp:420–473  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

418}
419
420bool WriteValue(uint32_t modelID, webifc::parsing::IfcTokenType t, emscripten::val value)
421{
422 bool responseCode = true;
423 auto loader = manager.GetIfcLoader(modelID);
424 switch (t)
425 {
426 case webifc::parsing::IfcTokenType::STRING:
427 case webifc::parsing::IfcTokenType::ENUM:
428 {
429 std::string copy;
430 if (value.isTrue())
431 copy = "T";
432 else if (value.isFalse())
433 copy = "F";
434 else if (value.isUndefined() || value.isNull())
435 copy = "U";
436 else
437 copy = value.as<std::string>();
438 if (copy == "true")
439 copy = "T";
440 else if (copy == "false")
441 copy = "F";
442 uint16_t length = copy.size();
443 loader->Push<uint16_t>((uint16_t)length);
444 loader->Push((void *)copy.c_str(), copy.size());
445
446 break;
447 }
448 case webifc::parsing::IfcTokenType::REF:
449 {
450 uint32_t val = value.as<uint32_t>();
451 loader->Push<uint32_t>(val);
452
453 break;
454 }
455 case webifc::parsing::IfcTokenType::REAL:
456 {
457 double val = value.as<double>();
458 loader->PushDouble(val);
459 break;
460 }
461 case webifc::parsing::IfcTokenType::INTEGER:
462 {
463 int val = value.as<int>();
464 loader->PushInt(val);
465 break;
466 }
467 default:
468 // use undefined to signal val parse issue
469 loader->Push<uint8_t>('?');
470 responseCode = false;
471 }
472 return responseCode;
473}
474
475bool WriteSet(uint32_t modelID, emscripten::val &val)
476{

Callers 1

WriteSetFunction · 0.85

Calls 5

GetIfcLoaderMethod · 0.80
sizeMethod · 0.80
PushDoubleMethod · 0.80
PushIntMethod · 0.80
PushMethod · 0.45

Tested by

no test coverage detected