| 418 | } |
| 419 | |
| 420 | bool 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 | |
| 475 | bool WriteSet(uint32_t modelID, emscripten::val &val) |
| 476 | { |
no test coverage detected