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

Function GetArgs

src/cpp/test/web-ifc-test.cpp:181–249  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

179}
180
181std::string GetArgs(webifc::parsing::IfcLoader &loader, bool inObject = false, bool inList = false)
182{
183 std::string arguments;
184 size_t size = 0;
185 bool endOfLine = false;
186 while (!loader.IsAtEnd() && !endOfLine)
187 {
188 webifc::parsing::IfcTokenType t = loader.GetTokenType();
189
190 switch (t)
191 {
192 case webifc::parsing::IfcTokenType::LINE_END:
193 {
194 endOfLine = true;
195 break;
196 }
197 case webifc::parsing::IfcTokenType::EMPTY:
198 {
199 arguments += " Empty ";
200 break;
201 }
202 case webifc::parsing::IfcTokenType::SET_BEGIN:
203 {
204 arguments += GetArgs(loader, false, true);
205 break;
206 }
207 case webifc::parsing::IfcTokenType::SET_END:
208 {
209 endOfLine = true;
210 break;
211 }
212 case webifc::parsing::IfcTokenType::LABEL:
213 {
214 // read label
215 std::string obj;
216 obj = " type: LABEL ";
217 loader.StepBack();
218 auto s = loader.GetStringArgument();
219 // read set open
220 loader.GetTokenType();
221 obj += " value " + GetArgs(loader, true) + " ";
222 arguments += obj;
223 break;
224 }
225 case webifc::parsing::IfcTokenType::STRING:
226 case webifc::parsing::IfcTokenType::ENUM:
227 case webifc::parsing::IfcTokenType::REAL:
228 case webifc::parsing::IfcTokenType::INTEGER:
229 case webifc::parsing::IfcTokenType::REF:
230 {
231 loader.StepBack();
232 std::string obj;
233 if (inObject)
234 obj = ReadValue(loader, t);
235 else
236 {
237 std::string obj;
238 obj += " type REF ";

Callers 1

GetLineFunction · 0.70

Calls 5

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

Tested by

no test coverage detected