file src/ScannerBit/python/src/diagnostics.cpp

[No description available]

Namespaces

Name
Gambit
TODO: see if we can use this one:
Gambit::Scanner
Gambit::Scanner::Python

Source code


#include <vector>
#include <sstream>
#include "gambit/Utils/screen_print_utils.hpp"
#include "gambit/ScannerBit/plugin_loader.hpp"
#include "gambit/ScannerBit/scanner_utils.hpp"
#include "interface.hpp"


namespace Gambit
{
    
    namespace Scanner
    {
        
        namespace Python
        {

            inline void scanner_diagnostic()
            {
                std::string output = Scanner::Plugins::plugin_info().print_all("scanner");
                if (output.length() > 0)
                    print_to_screen(output, "scanners");
            }

            inline void test_function_diagnostic()
            {
                std::string output = Scanner::Plugins::plugin_info().print_all("objective");
                if (output.length() > 0)
                    print_to_screen(output, "objectives");
            }

            inline void prior_diagnostic()
            {
                std::string output = Scanner::Plugins::plugin_info().print_priors("priors");
                if (output.length() > 0)
                    print_to_screen(output, "priors");
            }

            inline void ff_prior_diagnostic(const std::string& command)
            {
                if (command != "priors")
                {
                    std::string output = Scanner::Plugins::plugin_info().print_priors(command);
                    if (output.length() > 0)
                        print_to_screen(output, command);
                }
            }

            inline void ff_scanner_diagnostic(const std::string& command)
            {
                std::string output = Scanner::Plugins::plugin_info().print_plugin("scanner", command);
                if (output.length() > 0)
                    print_to_screen(output, command);
            }

            inline void ff_test_function_diagnostic(const std::string& command)
            {
                std::string output = Scanner::Plugins::plugin_info().print_plugin("objective", command);
                if (output.length() > 0)
                    print_to_screen(output, command);
            }

            diagnostics::diagnostics()
            {
                std::vector<std::string> scanner_names = Scanner::Plugins::plugin_info().print_plugin_names("scanner");
                std::vector<std::string> objective_names = Scanner::Plugins::plugin_info().print_plugin_names("objective");
                std::vector<std::string> prior_groups = Scanner::Plugins::plugin_info().list_prior_groups();
                valid_commands.insert(scanner_names.begin(), scanner_names.end());
                valid_commands.insert(objective_names.begin(), objective_names.end());
                valid_commands.insert(prior_groups.begin(), prior_groups.end());
                valid_commands.insert("priors");
                valid_commands.insert("objectives");
                valid_commands.insert("test-functions");
                valid_commands.insert("scanners");
            }

            void diagnostics::operator()(const std::vector<std::string> &args)
            {
                for (auto &&command : args)
                {
                    if (valid_commands.find(command) != valid_commands.end())
                    {
                        if (command == "scanners") scanner_diagnostic();
                        if (command == "test-functions" || command == "objectives") test_function_diagnostic();
                        if (command == "priors") prior_diagnostic();
                        ff_scanner_diagnostic(command);
                        ff_test_function_diagnostic(command);
                        ff_prior_diagnostic(command);
                    }
                }
            }
                    
            void diagnostics::operator()(const std::string &command)
            {
                if (valid_commands.find(command) != valid_commands.end())
                {
                    if (command == "scanners") scanner_diagnostic();
                    if (command == "test-functions" || command == "objectives") test_function_diagnostic();
                    if (command == "priors") prior_diagnostic();
                    ff_scanner_diagnostic(command);
                    ff_test_function_diagnostic(command);
                    ff_prior_diagnostic(command);
                }
            }

        }
        
    }
    
}

Updated on 2026-11-03 at 14:50:45 +0000