MCPcopy Create free account
hub / github.com/covscript/covscript / covscript_debugger

Function covscript_debugger

sources/debugger.cpp:325–384  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

323}
324
325bool covscript_debugger()
326{
327 std::string cmd, func, args;
328#ifdef COVSCRIPT_PLATFORM_WIN32
329 std::cout << "> " << std::flush;
330 // Workaround: https://stackoverflow.com/a/26763490
331 while (true) {
332 cs::current_process->poll_event();
333 std::getline(std::cin, cmd);
334 if (std::cin)
335 break;
336 }
337#else
338 if (!std::cin) {
339 int code = 0;
340 cs::process_context::on_process_exit_default_handler(&code);
341 }
342 std::cout << "> " << std::flush;
343 std::getline(std::cin, cmd);
344 cs::current_process->poll_event();
345#endif
346 std::size_t posit = 0;
347 for (; posit < cmd.size(); ++posit)
348 if (std::isspace(cmd[posit]))
349 break;
350 else
351 func.push_back(cmd[posit]);
352 for (; posit < cmd.size(); ++posit)
353 if (!std::isspace(cmd[posit]))
354 break;
355 for (; posit < cmd.size(); ++posit)
356 args.push_back(cmd[posit]);
357 if (func.empty())
358 return true;
359 if (!func_map.exist(func)) {
360 std::cout << "Undefined command: \"" << func << R"(". Try "help".)" << std::endl;
361 return true;
362 }
363 else {
364 try {
365 return func_map.call(func, args);
366 }
367 catch (const std::exception &e) {
368 if (context.get() == nullptr) {
369 if (!log_path.empty()) {
370 if (!log_stream.is_open())
371 log_stream.open(::log_path);
372 if (log_stream)
373 log_stream << e.what() << std::endl;
374 else
375 std::cerr << "Write log failed." << std::endl;
376 }
377 std::cerr << e.what() << std::endl;
378 return true;
379 }
380 else
381 throw;
382 }

Callers 2

covscript_mainFunction · 0.85

Calls 9

getlineFunction · 0.85
isspaceFunction · 0.85
poll_eventMethod · 0.80
sizeMethod · 0.80
emptyMethod · 0.45
existMethod · 0.45
callMethod · 0.45
getMethod · 0.45
whatMethod · 0.45

Tested by

no test coverage detected