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

Function GetArgs

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

Source from the content-addressed store, hash-verified

701}
702
703emscripten::val GetArgs(uint32_t modelID, bool inObject = false, bool inList = false)
704{
705 auto loader = manager.GetIfcLoader(modelID);
706 auto arguments = emscripten::val::array();
707 size_t size = 0;
708 bool endOfLine = false;
709 while (!loader->IsAtEnd() && !endOfLine)
710 {
711 webifc::parsing::IfcTokenType t = loader->GetTokenType();
712
713 switch (t)
714 {
715 case webifc::parsing::IfcTokenType::LINE_END:
716 {
717 endOfLine = true;
718 break;
719 }
720 case webifc::parsing::IfcTokenType::EMPTY:
721 {
722 arguments.set(size++, emscripten::val::null());
723 break;
724 }
725 case webifc::parsing::IfcTokenType::SET_BEGIN:
726 {
727 arguments.set(size++, GetArgs(modelID, false, true));
728 break;
729 }
730 case webifc::parsing::IfcTokenType::SET_END:
731 {
732 endOfLine = true;
733 break;
734 }
735 case webifc::parsing::IfcTokenType::LABEL:
736 {
737 // read label
738 auto obj = emscripten::val::object();
739 obj.set("type", emscripten::val(static_cast<uint32_t>(webifc::parsing::IfcTokenType::LABEL)));
740 loader->StepBack();
741 auto s = loader->GetStringArgument();
742 auto typeCode = manager.GetSchemaManager().IfcTypeToTypeCode(s);
743 obj.set("typecode", emscripten::val(typeCode));
744 // read set open
745 loader->GetTokenType();
746 obj.set("value", GetArgs(modelID, true));
747 arguments.set(size++, obj);
748 break;
749 }
750 case webifc::parsing::IfcTokenType::STRING:
751 case webifc::parsing::IfcTokenType::ENUM:
752 case webifc::parsing::IfcTokenType::REAL:
753 case webifc::parsing::IfcTokenType::INTEGER:
754 case webifc::parsing::IfcTokenType::REF:
755 {
756 loader->StepBack();
757 emscripten::val obj;
758 if (inObject)
759 obj = ReadValue(modelID, t);
760 else

Callers 2

GetHeaderLineFunction · 0.70
GetLineFunction · 0.70

Calls 7

GetIfcLoaderMethod · 0.80
GetTokenTypeMethod · 0.80
StepBackMethod · 0.80
GetStringArgumentMethod · 0.80
IfcTypeToTypeCodeMethod · 0.80
ReadValueFunction · 0.70
IsAtEndMethod · 0.45

Tested by

no test coverage detected