Go back to Richel Bilderbeek's homepage.

Go back to Richel Bilderbeek's C++ page.

 

 

 

 

 

(C++) RichelBilderbeekProgram

 

STLQt CreatorLubuntu

 

RichelBilderbeekProgram is a class for a ProjectRichelBilderbeek class.

Technical facts

 

 

 

 

 

 

./CppRichelBilderbeekProgram/CppRichelBilderbeekProgram.pri

 

INCLUDEPATH += \
    ../../Classes/CppRichelBilderbeekProgram

SOURCES += \
    ../../Classes/CppRichelBilderbeekProgram/richelbilderbeekprogram.cpp \
    ../../Classes/CppRichelBilderbeekProgram/richelbilderbeekprogramstatus.cpp \
    ../../Classes/CppRichelBilderbeekProgram/richelbilderbeekprogramtype.cpp \
    ../../Classes/CppRichelBilderbeekProgram/richelbilderbeekprogramtypes.cpp

HEADERS  += \
    ../../Classes/CppRichelBilderbeekProgram/richelbilderbeekprogram.h \
    ../../Classes/CppRichelBilderbeekProgram/richelbilderbeekprogramtype.h \
    ../../Classes/CppRichelBilderbeekProgram/richelbilderbeekprogramtypes.h

OTHER_FILES += \
    ../../Classes/CppRichelBilderbeekProgram/Licence.txt

 

 

 

 

 

./CppRichelBilderbeekProgram/richelbilderbeekprogram.h

 

//---------------------------------------------------------------------------
/*
Program, class for a program by Richel Bilderbeek
Copyright (C) 2012-2015 Richel Bilderbeek

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program.If not, see <http://www.gnu.org/licenses/>.
*/
//---------------------------------------------------------------------------
//From http://www.richelbilderbeek.nl/ProjectRichelBilderbeekProgram.htm
//---------------------------------------------------------------------------
#ifndef RIBI_RICHELBILDERBEEKPROGRAM_H
#define RIBI_RICHELBILDERBEEKPROGRAM_H

#include <string>

#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Weffc++"
#pragma GCC diagnostic ignored "-Wunused-local-typedefs"
#pragma GCC diagnostic ignored "-Wunused-but-set-parameter"
#include <boost/shared_ptr.hpp>
#include "richelbilderbeekprogramstatus.h"
#include "richelbilderbeekprogramtype.h"
#pragma GCC diagnostic pop

namespace ribi {

///RichelBilderbeek::Program is the base class for program information
struct Program
{
  virtual ~Program() noexcept {}

  ///Create a std::vector with all different Program instances in it
  static boost::shared_ptr<Program> CreateProgram(const ProgramType type) noexcept;

  ///Create a std::vector with all different Program instances in it
  static std::vector<boost::shared_ptr<Program>> GetAllPrograms() noexcept;

  ///Get the filename of a console version screenshot
  virtual std::string GetFilenameConsole() const noexcept = 0;

  ///Get the filename of a desktop platform-independent version screenshot
  virtual std::string GetFilenameDesktop() const noexcept = 0;

  ///Get the filename of a desktop windows-only version screenshot
  virtual std::string GetFilenameDesktopWindowsOnly() const noexcept = 0;

  ///Get the filename of a web application version screenshot
  virtual std::string GetFilenameWeb() const noexcept = 0;

  ///Status of the console-only version
  virtual ProgramStatus GetStatusConsole() const noexcept = 0;

  ///Status of the Windows-only desktop version
  virtual ProgramStatus GetStatusDesktopWindowsOnly() const noexcept = 0;

  ///Status of the platform-independent desktop version
  virtual ProgramStatus GetStatusDesktop() const noexcept = 0;

  ///Status of the web application version
  virtual ProgramStatus GetStatusWebApplication() const noexcept = 0;

  ///The item its enum name, e.g. 'k3OpEenRij'
  std::string GetName() const noexcept;

  ///The item its on-screen name, e.g. 'K3-Op-Een-Rij'
  virtual std::string GetScreenName() const noexcept;

  ///The program, e.g. 'RichelBilderbeekProgramType::boenken'
  virtual ProgramType GetType() const noexcept = 0;

  ///The type of program its name, e.g. 'Game'
  virtual std::string GetTypeName() const noexcept = 0;

  ///The item its URL (at http://ww.richelbilderbeek.nl), e.g. 'ToolSimMysteryMachine.htm'
  virtual std::string GetUrl() const noexcept = 0;

  ///Obtain the version of this class
  static std::string GetVersion() noexcept;

  ///Obtain the version history of this class
  static std::vector<std::string> GetVersionHistory() noexcept;

  private:
  ///Get the base of a filename
  std::string GetFilenameBase() const noexcept;
};

///ProgramClass is the base class for all class demonstration programs
struct ProgramClass : public Program
{
  virtual ~ProgramClass() noexcept {}

  ///The type of program its name, e.g. 'game'
  std::string GetTypeName() const noexcept override { return "class"; }
};

struct ProgramGame : public Program
{
  virtual ~ProgramGame() noexcept {}

  ///The type of program its name, e.g. 'game'
  std::string GetTypeName() const noexcept override { return "game"; }
};

struct ProgramProject : public Program
{
  virtual ~ProgramProject() noexcept {}

  ///The type of program its name, e.g. 'game'
  std::string GetTypeName() const noexcept override { return "project"; }
};

struct ProgramTool : public Program
{
  virtual ~ProgramTool() noexcept {}

  ///The type of program its name, e.g. 'game'
  std::string GetTypeName() const noexcept override { return "tool"; }
};

struct ProgramAthleticLandVcl : public ProgramGame
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return "GameAthleticLand_0_9.png"; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "Athletic Land (VCL)"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::nvr; }
  ProgramType GetType() const noexcept override final { return ProgramType::athleticLandVcl; }
  std::string GetUrl() const noexcept override final { return "GameAthleticLandVcl.htm"; }
};

struct ProgramAsciiArter : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolAsciiArter_6_0.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return "ToolAsciiArter_5_2.png"; }
  std::string GetScreenName() const noexcept override final { return "AsciiArter"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::yes; }
  ProgramType GetType() const noexcept override final { return ProgramType::asciiArter; }
  std::string GetUrl() const noexcept override final { return "ToolAsciiArter.htm"; }
};

struct ProgramAsciiArterVcl : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return "ToolAsciiArter_1_0.png"; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "AsciiArter (VCL)"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::nvr; }
  ProgramType GetType() const noexcept override final { return ProgramType::asciiArterVcl; }
  std::string GetUrl() const noexcept override final { return "ToolAsciiArterVcl.htm"; }
};

struct ProgramBarbaImage : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return "ToolBarbaImage_1_3.png"; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "BarbaImage"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::barbaImage; }
  std::string GetUrl() const noexcept override final { return "ToolBarbaImage.htm"; }
};

struct ProgramBeerWanter : public ProgramGame
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "GameBeerWanter5.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "BeerWanter"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::beerWanter; }
  std::string GetUrl() const noexcept override final { return "GameBeerWanter.htm"; }
};

struct ProgramBeerWanterVcl : public ProgramGame
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return "GameBeerWanter3.png"; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "BeerWanter (VCL)"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::nvr; }
  ProgramType GetType() const noexcept override final { return ProgramType::beerWanterVcl; }
  std::string GetUrl() const noexcept override final { return "GameBeerWanterVcl.htm"; }
};

struct ProgramBochum : public ProgramProject
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ProjectBochumGaborFiltersResults.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "Project Bochum"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::nvr; }
  ProgramType GetType() const noexcept override final { return ProgramType::bochum; }
  std::string GetUrl() const noexcept override final { return "ProjectBochum.htm"; }
};

struct ProgramBoenken : public ProgramGame
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "GameBoenken_4_1.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "Boenken"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::boenken; }
  std::string GetUrl() const noexcept override final { return "GameBoenken.htm"; }
};

struct ProgramBoenkenVcl : public ProgramGame
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return "GameBoenken_1_0.png"; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "Boenken (VCL)"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::nvr; }
  ProgramType GetType() const noexcept override final { return ProgramType::boenkenVcl; }
  std::string GetUrl() const noexcept override final { return "GameBoenkenVcl.htm"; }
};

struct ProgramBrainweaver : public ProgramProject
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "Brainweaver"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::wip; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::brainweaver; }
  std::string GetUrl() const noexcept override final { return "ProjectBrainweaver.htm"; }
};

struct ProgramBristol : public ProgramProject
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ProjectBristol_1_0.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "Bristol"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::nvr; }
  ProgramType GetType() const noexcept override final { return ProgramType::bristol; }
  std::string GetUrl() const noexcept override final { return "ProjectBristol.htm"; }
};

struct ProgramCaesarCipher : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolCaesarCipher_1_0.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "CaesarCipher"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::wip; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::wip; }
  ProgramType GetType() const noexcept override final { return ProgramType::caesarCipher; }
  std::string GetUrl() const noexcept override final { return "ToolCaesarCipher.htm"; }
};

struct ProgramChrisWiley : public ProgramProject
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return "ProjectChrisWiley_1_0.png"; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "Project Chris Wiley"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::nvr; }
  ProgramType GetType() const noexcept override final { return ProgramType::chrisWiley; }
  std::string GetUrl() const noexcept override final { return "ProjectChrisWiley.htm"; }
};

/*
struct ProgramCodeBreaker : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "CodeBreaker"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::wip; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::wip; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::codeBreaker; }
  std::string GetUrl() const noexcept override final { return "ToolCodeBreaker.htm"; }
};
*/

struct ProgramCodeToHtml : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolCodeToHtml_3_1.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return "ToolCodeToHtml_2_0.png"; }
  std::string GetScreenName() const noexcept override final { return "CodeToHtml"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::yes; }
  ProgramType GetType() const noexcept override final { return ProgramType::codeToHtml; }
  std::string GetUrl() const noexcept override final { return "ToolCodeToHtml.htm"; }
};

struct ProgramConnectThree : public ProgramGame
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "GameConnectThree_5_2.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return "GameConnectThree_6_0.png"; }
  std::string GetScreenName() const noexcept override final { return "ConnectThree"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::wip; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::yes; }
  ProgramType GetType() const noexcept override final { return ProgramType::connectThree; }
  std::string GetUrl() const noexcept override final { return "GameConnectThree.htm"; }
};

struct ProgramCorridor : public ProgramGame
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "GameCorridor.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "Corridor"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::nvr; }
  ProgramType GetType() const noexcept override final { return ProgramType::corridor; }
  std::string GetUrl() const noexcept override final { return "GameCorridor.htm"; }
};

struct ProgramCreateGlossary : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolCreateGlossary_1_2.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "CreateGlossary"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::createGlossary; }
  std::string GetUrl() const noexcept override final { return "ToolCreateGlossary.htm"; }
};

struct ProgramCreateQtProjectZipFile : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolCreateQtProjectZipFile_2_0.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "CreateQtProjectZipFile"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::wip; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::createQtProjectZipFile; }
  std::string GetUrl() const noexcept override final { return "ToolCreateQtProjectZipFile.htm"; }
};

struct ProgramCrossPoll : public ProgramProject
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return "ProjectCrossPoll3.png"; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "CrossPoll"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::nvr; }
  ProgramType GetType() const noexcept override final { return ProgramType::crossPoll; }
  std::string GetUrl() const noexcept override final { return "ProjectCrossPoll.htm"; }
};

struct ProgramDasWahreSchlagerfest : public ProgramGame
{
  std::string GetFilenameConsole() const noexcept override final { return "GameDasWahreSchlagerfest_2_5.png"; }
  std::string GetFilenameDesktop() const noexcept override final { return "GameDasWahreSchlagerfest_2_2.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "Das Wahre Schlagerfest"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::dasWahreSchlagerfest; }
  std::string GetUrl() const noexcept override final { return "GameDasWahreSchlagerfest.htm"; }
};

struct ProgramDasWahreSchlagerfestVcl : public ProgramGame
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return "GameDasWahreSchlagerfest_1_0.png"; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "Das Wahre Schlagerfest (VCL)"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::nvr; }
  ProgramType GetType() const noexcept override final { return ProgramType::dasWahreSchlagerfestVcl; }
  std::string GetUrl() const noexcept override final { return "GameDasWahreSchlagerfestVcl.htm"; }
};

struct ProgramDotMatrix : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolDotMatrix_2_1.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "DotMatrix"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::yes; }
  ProgramType GetType() const noexcept override final { return ProgramType::dotMatrix; }
  std::string GetUrl() const noexcept override final { return "ToolDotMatrix.htm"; }
};

struct ProgramDotMatrixVcl : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return "ToolDotMatrix_1_0.png"; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "DotMatrix (VCL)"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::nvr; }
  ProgramType GetType() const noexcept override final { return ProgramType::dotMatrixVcl; }
  std::string GetUrl() const noexcept override final { return "ToolDotMatrixVcl.htm"; }
};

struct ProgramEncranger : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolEncranger_2_5.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return "ToolEncranger_1_0.png"; }
  std::string GetFilenameWeb() const noexcept override final { return "ToolEncranger_2_1.png"; }
  std::string GetScreenName() const noexcept override final { return "Encranger"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::yes; }
  ProgramType GetType() const noexcept override final { return ProgramType::encranger; }
  std::string GetUrl() const noexcept override final { return "ToolEncranger.htm"; }
};

struct ProgramEverythingToPiecesShooter : public ProgramGame
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "EverythingToPiecesShooter"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::nvr; }
  ProgramType GetType() const noexcept override final { return ProgramType::everythingToPiecesShooter; }
  std::string GetUrl() const noexcept override final { return "GameEverythingToPiecesShooter.htm"; }
};

struct ProgramFilterOperationer : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolFilterOperationer_2_0.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "FilterOperationer"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::wip; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::wip; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::filterOperationer; }
  std::string GetUrl() const noexcept override final { return "ToolFilterOperationer.htm"; }
};

struct ProgramFilterOperationerVcl : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return "ToolFilterOperationer_1_0.png"; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "FilterOperationer (VCL)"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::nvr; }
  ProgramType GetType() const noexcept override final { return ProgramType::filterOperationerVcl; }
  std::string GetUrl() const noexcept override final { return "ToolFilterOperationerVcl.htm"; }
};

struct ProgramFisherWrighter : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "FisherWrighter"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::fisherWrighter; }
  std::string GetUrl() const noexcept override final { return "ToolFisherWrighter.htm"; }
};

struct ProgramFryskLeareLieder : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return "ToolFryskLeareLieder_1_0.png"; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "FryskLeareLieder"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::nvr; }
  ProgramType GetType() const noexcept override final { return ProgramType::fryskLeareLieder; }
  std::string GetUrl() const noexcept override final { return "ToolFryskLeareLieder.htm"; }
};

struct ProgramFunctionPlotter : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolFunctionPlotter_2_0.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "FunctionPlotter"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::wip; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::functionPlotter; }
  std::string GetUrl() const noexcept override final { return "ToolFunctionPlotter.htm"; }
};

struct ProgramFunctionPlotterVcl : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return "ToolFunctionPlotter_1_1.png"; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "FunctionPlotter (VCL)"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::nvr; }
  ProgramType GetType() const noexcept override final { return ProgramType::functionPlotterVcl; }
  std::string GetUrl() const noexcept override final { return "ToolFunctionPlotterVcl.htm"; }
};

struct ProgramGaborFilter : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolGaborFilter_2_0.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "GaborFilter"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::wip; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::wip; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::gaborFilter; }
  std::string GetUrl() const noexcept override final { return "ToolGaborFilter.htm"; }
};

struct ProgramGaborFilterVcl : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return "ToolGaborFilter_1_0.png"; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "GaborFilter (VCL)"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::nvr; }
  ProgramType GetType() const noexcept override final { return ProgramType::gaborFilterVcl; }
  std::string GetUrl() const noexcept override final { return "ToolGaborFilterVcl.htm"; }
};

struct ProgramGrayCoder : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolGrayCoder_2_1.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "GrayCoder"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::yes; }
  ProgramType GetType() const noexcept override final { return ProgramType::grayCoder; }
  std::string GetUrl() const noexcept override final { return "ToolGrayCoder.htm"; }
};

struct ProgramGrayCoderVcl : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return "ToolGrayCoder_1_0.png"; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "GrayCoder (VCL)"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::nvr; }
  ProgramType GetType() const noexcept override final { return ProgramType::grayCoderVcl; }
  std::string GetUrl() const noexcept override final { return "ToolGrayCoderVcl.htm"; }
};

struct ProgramGtst : public ProgramProject
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return "ProjectGtst_1_2.png"; }
  std::string GetScreenName() const noexcept override final { return "GTST"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::yes; }
  ProgramType GetType() const noexcept override final { return ProgramType::gtst; }
  std::string GetUrl() const noexcept override final { return "ProjectGtst.htm"; }
};

struct ProgramHistogramEqualizationer : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolHistogramEqualizationer_2_0.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "HistogramEqualizationer"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::unk; }
  ProgramType GetType() const noexcept override final { return ProgramType::histogramEqualizationer; }
  std::string GetUrl() const noexcept override final { return "ToolHistogramEqualizationer.htm"; }
};

struct ProgramHistogramEqualizationerVcl : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return "ToolHistogramEqualizationer_1_0.png"; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "HistogramEqualizationer (VCL)"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::nvr; }
  ProgramType GetType() const noexcept override final { return ProgramType::histogramEqualizationerVcl; }
  std::string GetUrl() const noexcept override final { return "ToolHistogramEqualizationerVcl.htm"; }
};

struct ProgramHometrainer : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return "ToolHometrainer_2_0.png"; }
  std::string GetScreenName() const noexcept override final { return "Hometrainer"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::yes; }
  ProgramType GetType() const noexcept override final { return ProgramType::hometrainer; }
  std::string GetUrl() const noexcept override final { return "ToolHometrainer.htm"; }
};

struct ProgramHometrainerVcl : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return "ToolHometrainer_1_8.png"; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "Hometrainer (VCL)"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::nvr; }
  ProgramType GetType() const noexcept override final { return ProgramType::hometrainerVcl; }
  std::string GetUrl() const noexcept override final { return "ToolHometrainerVcl.htm"; }
};

struct ProgramImageRotater : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolImageRotater_2_0.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "ImageRotater"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::unk; }
  ProgramType GetType() const noexcept override final { return ProgramType::imageRotater; }
  std::string GetUrl() const noexcept override final { return "ToolImageRotater.htm"; }
};


struct ProgramImageRotaterClx : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return "ToolImageRotaterClx_1_0.png"; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "ImageRotater (CLX)"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::nvr; }
  ProgramType GetType() const noexcept override final { return ProgramType::imageRotaterClx; }
  std::string GetUrl() const noexcept override final { return "ToolImageRotaterClx.htm"; }
};

struct ProgramImageRotaterVcl : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return "ToolImageRotaterVcl_1_0.png"; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "ImageRotater (VCL)"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::nvr; }
  ProgramType GetType() const noexcept override final { return ProgramType::imageRotaterVcl; }
  std::string GetUrl() const noexcept override final { return "ToolImageRotaterVcl.htm"; }
};

struct ProgramK3OpEenRij : public ProgramGame
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "GameK3OpEenRij_6_0.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return "GameK3OpEenRij_5_0.png"; }
  std::string GetScreenName() const noexcept override final { return "K3 Op Een Rij"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::yes; }
  ProgramType GetType() const noexcept override final { return ProgramType::k3OpEenRij; }
  std::string GetUrl() const noexcept override final { return "GameK3OpEenRij.htm"; }
};

struct ProgramK3OpEenRijVcl : public ProgramGame
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return "GameK3OpEenRij_4_0.png"; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "K3 Op Een Rij (VCL)"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::nvr; }
  ProgramType GetType() const noexcept override final { return ProgramType::k3OpEenRijVcl; }
  std::string GetUrl() const noexcept override final { return "GameK3OpEenRijVcl.htm"; }
};

struct ProgramKalmanFilterer : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolKalmanFilterer_1_15.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "KalmanFilterer"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::kalmanFilterer; }
  std::string GetUrl() const noexcept override final { return "ToolKalmanFilterer.htm"; }
};

struct ProgramKeySender : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolKeySender_1_0.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "KeySender"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::keySender; }
  std::string GetUrl() const noexcept override final { return "ToolKeySender.htm"; }
};

struct ProgramKnokfighterVcl : public ProgramGame
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return "GameKnokfighter_1_0.png"; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "Knokfighter (VCL)"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::nvr; }
  ProgramType GetType() const noexcept override final { return ProgramType::knokfighterVcl; }
  std::string GetUrl() const noexcept override final { return "GameKnokfighterVcl.htm"; }
};


struct ProgramKTouchLectureCreator : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "KTouchLectureCreator"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::kTouchLectureCreator; }
  std::string GetUrl() const noexcept override final { return "ToolKTouchLectureCreator.htm"; }
};

struct ProgramLambdaBot : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "LambdaBot"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::lambdaBot; }
  std::string GetUrl() const noexcept override final { return "ToolLambdaBot.htm"; }
};

struct ProgramLearyCircumplex : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return "ToolLearyCircumplex_1_0.png"; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "LearyCircumplex"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::learyCircumplex; }
  std::string GetUrl() const noexcept override final { return "ToolLearyCircumplex.htm"; }
};

struct ProgramLizardPaperRockScissorsSpock : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "LizardPaperRockScissorsSpock"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::lizardPaperRockScissorsSpock; }
  std::string GetUrl() const noexcept override final { return "ToolLizardPaperRockScissorsSpock.htm"; }
};

struct ProgramLogisticGrowthSimulator : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return "ToolLogisticGrowthSimulator_1_0.png"; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "LogisticGrowthSimulator"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::logisticGrowthSimulator; }
  std::string GetUrl() const noexcept override final { return "ToolLogisticGrowthSimulator.htm"; }
};

struct ProgramLoose : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return "ToolLoose_2_0.png"; }
  std::string GetScreenName() const noexcept override final { return "Loose"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::yes; }
  ProgramType GetType() const noexcept override final { return ProgramType::loose; }
  std::string GetUrl() const noexcept override final { return "ToolLoose.htm"; }
};

struct ProgramMartianCafeTuinemaTycoon : public ProgramGame
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return "GameMartianCafeTuinemaTycoon_1_0.png"; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "MartianCafeTuinemaTycoon"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::martianCafeTuinemaTycoon; }
  std::string GetUrl() const noexcept override final { return "GameMartianCafeTuinemaTycoon.htm"; }
};

struct ProgramMazeCreator : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolMazeCreator_2_0.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "MazeCreator"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::wip; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::mazeCreator; }
  std::string GetUrl() const noexcept override final { return "ToolMazeCreator.htm"; }
};

struct ProgramMazeCreatorVcl : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return "ToolMazeCreator_1_0.png"; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "MazeCreator (VCL)"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::nvr; }
  ProgramType GetType() const noexcept override final { return ProgramType::mazeCreatorVcl; }
  std::string GetUrl() const noexcept override final { return "ToolMazeCreatorVcl.htm"; }
};

struct ProgramMaziak : public ProgramGame
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "GameMaziak_1_3.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "Maziak"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::maziak; }
  std::string GetUrl() const noexcept override final { return "GameMaziak.htm"; }
};

struct ProgramMaziakVcl : public ProgramGame
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return "GameMaziak_2_0.png"; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "Maziak (VCL)"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::nvr; }
  ProgramType GetType() const noexcept override final { return ProgramType::maziakVcl; }
  std::string GetUrl() const noexcept override final { return "GameMaziakVcl.htm"; }
};

/*
struct ProgramMetZnDrieen : public ProgramGame
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "MetZnDrieen"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::metZnDrieen; }
  std::string GetUrl() const noexcept override final { return "GameMetZnDrieen.htm"; }
};
*/

struct ProgramMetZnDrieenVcl : public ProgramGame
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return "GameMetZnDrieen_1_3.png"; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "MetZnDrieen (VCL)"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::nvr; }
  ProgramType GetType() const noexcept override final { return ProgramType::metZnDrieenVcl; }
  std::string GetUrl() const noexcept override final { return "GameMetZnDrieenVcl.htm"; }
};

struct ProgramMidiLessonCreator : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "MidiLessonCreator"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::wip; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::midiLessonCreator; }
  std::string GetUrl() const noexcept override final { return "ToolMidiLessonCreator.htm"; }
};

struct ProgramMorpher : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return "ToolMorpher_1_0.png"; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "Morpher"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::morpher; }
  std::string GetUrl() const noexcept override final { return "ToolMorpher.htm"; }
};

struct ProgramMultiEncranger : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolMultiEncranger_2_3.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "MultiEncranger"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::multiEncranger; }
  std::string GetUrl() const noexcept override final { return "ToolMultiEncranger.htm"; }
};

struct ProgramMultiEncrangerVcl : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return "ToolMultiEncranger_1_0.png"; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "MultiEncranger (VCL)"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::nvr; }
  ProgramType GetType() const noexcept override final { return ProgramType::multiEncrangerVcl; }
  std::string GetUrl() const noexcept override final { return "ToolMultiEncrangerVcl.htm"; }
};

struct ProgramMuscaDomestica : public ProgramProject
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return "ProjectMuscaDomestica_1_0.png"; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "Project Musca Domestica"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::muscaDomestica; }
  std::string GetUrl() const noexcept override final { return "ProjectMuscaDomestica.htm"; }
};

struct ProgramMusicTheory : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolMusicTheory_1_0.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "MusicTheory"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::busicTheory; }
  std::string GetUrl() const noexcept override final { return "ToolMusicTheory.htm"; }
};

struct ProgramMutualismBreakdowner : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "MutualismBreakdowner"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::mutualismBreakdowner; }
  std::string GetUrl() const noexcept override final { return "ToolMutualismBreakdowner.htm"; }
};

struct ProgramNdsmake : public ProgramClass
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "Ndsmake"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::ndsmake; }
  std::string GetUrl() const noexcept override final { return "ToolNdsmake.htm"; }
};


struct ProgramPaperRockScissors : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "PaperRockScissors"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::paperRockScissors; }
  std::string GetUrl() const noexcept override final { return "ToolPaperRockScissors.htm"; }
};

struct ProgramPaperRockScissorsVcl : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return "ToolPaperRockScissors_1_0.png"; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "PaperRockScissors (VCL)"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::paperRockScissorsVcl; }
  std::string GetUrl() const noexcept override final { return "ToolPaperRockScissorsVcl.htm"; }
};

struct ProgramPaperRockScissorsWithTrait : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "PaperRockScissorsWithTrait"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::paperRockScissorsWithTrait; }
  std::string GetUrl() const noexcept override final { return "ToolPaperRockScissorsWithTrait.htm"; }
};

struct ProgramPause : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "Pause"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::pause; }
  std::string GetUrl() const noexcept override final { return "ToolPause.htm"; }
};

struct ProgramPerfectElasticCollision : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolPerfectElasticCollision_1_0.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "PerfectElasticCollision"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::perfectElasticCollision; }
  std::string GetUrl() const noexcept override final { return "ToolPerfectElasticCollision.htm"; }
};

struct ProgramPicToCode : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolPicToCode_1_2.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return "ToolPicToCode_1_3.png"; }
  std::string GetScreenName() const noexcept override final { return "PicToCode"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::yes; }
  ProgramType GetType() const noexcept override final { return ProgramType::picToCode; }
  std::string GetUrl() const noexcept override final { return "ToolPicToCode.htm"; }
};

struct ProgramPixelator : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "Pixelator"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::wip; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::wip; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::pixelator; }
  std::string GetUrl() const noexcept override final { return "ToolPixelator.htm"; }
};

struct ProgramPixelatorVcl : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return "ToolPixelator_1_0.png"; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "Pixelator (VCL)"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::nvr; }
  ProgramType GetType() const noexcept override final { return ProgramType::pixelatorVcl; }
  std::string GetUrl() const noexcept override final { return "ToolPixelatorVcl.htm"; }
};

struct ProgramPokeVolleyVcl : public ProgramGame
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return "GamePokeVolley_2_0.png"; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "PokeVolley (VCL)"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::pokeVolleyVcl; }
  std::string GetUrl() const noexcept override final { return "GamePokeVolley.htm"; }
};

struct ProgramPreDickAdvocaTor : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolPreDickAdvocaTor_2_1.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "PreDickAdvocaTor"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::wip; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::preDickAdvocaTor; }
  std::string GetUrl() const noexcept override final { return "ToolPreDickAdvocaTor.htm"; }
};

struct ProgramPrimeExpert : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolPrimeExpert_2_1.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return "ToolTestPrimeExpert_1_0.png"; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "PrimeExpert"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::primeExpert; }
  std::string GetUrl() const noexcept override final { return "ToolPrimeExpert.htm"; }
};

struct ProgramProjectRichelBilderbeek : public ProgramProject
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ProjectRichelBilderbeek_1_14.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "ProjectRichelBilderbeek"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::yes; }
  ProgramType GetType() const noexcept override final { return ProgramType::projectRichelBilderbeek; }
  std::string GetUrl() const noexcept override final { return "ProjectRichelBilderbeek.htm"; }
};


struct ProgramPylos : public ProgramGame
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "GamePylos_2_1.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "Pylos"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::wip; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::wip; }
  ProgramType GetType() const noexcept override final { return ProgramType::pylos; }
  std::string GetUrl() const noexcept override final { return "GamePylos.htm"; }
};

struct ProgramQmakeWatcher : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolQmakeWatcher_1_0.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "QmakeWatcher"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::qmakeWatcher; }
  std::string GetUrl() const noexcept override final { return "ToolQmakeWatcher.htm"; }
};

struct ProgramQuadraticSolver : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return "ToolQuadraticSolver_1_0.png"; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolQuadraticSolver_2_1.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "QuadraticSolver"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::quadraticSolver; }
  std::string GetUrl() const noexcept override final { return "ToolQuadraticSolver.htm"; }
};

struct ProgramRampalEtienne : public ProgramProject
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "ProjectRampalEtienne"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::rampalEtienne; }
  std::string GetUrl() const noexcept override final { return "ProjectRampalEtienne.htm"; }
};

struct ProgramRandomCode : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolRandomCode_4_2.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return "ToolRandomCode_3_0.png"; }
  std::string GetScreenName() const noexcept override final { return "RandomCode"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::yes; }
  ProgramType GetType() const noexcept override final { return ProgramType::randomCode; }
  std::string GetUrl() const noexcept override final { return "ToolRandomCode.htm"; }
};

struct ProgramRandomCodeVcl : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return "ToolRandomCode_1_0.png"; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "RandomCode (VCL)"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::nvr; }
  ProgramType GetType() const noexcept override final { return ProgramType::randomCodeVcl; }
  std::string GetUrl() const noexcept override final { return "ToolRandomCodeVcl.htm"; }
};

struct ProgramRasper : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return "ToolRasper_0_3.png"; }
  std::string GetScreenName() const noexcept override final { return "Rasper"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::yes; }
  ProgramType GetType() const noexcept override final { return ProgramType::rasper; }
  std::string GetUrl() const noexcept override final { return "ToolRasper.htm"; }
};

struct ProgramRefrigeratorPuzzleSolver : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return "ToolRefrigeratorPuzzleSolver_1_0.png"; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "RefrigeratorPuzzleSolver"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::refrigeratorPuzzleSolver; }
  std::string GetUrl() const noexcept override final { return "ToolRefrigeratorPuzzleSolver.htm"; }
};

struct ProgramRegexTester : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolRegexTester_1_1.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "RegexTester"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::regexTester; }
  std::string GetUrl() const noexcept override final { return "ToolRegexTester.htm"; }
};

struct ProgramReversi : public ProgramGame
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return "GameReversi_0_1.png"; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "Reversi"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::wip; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::wip; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::wip; }
  ProgramType GetType() const noexcept override final { return ProgramType::reversi; }
  std::string GetUrl() const noexcept override final { return "GameReversi.htm"; }
};

struct ProgramReversiVcl : public ProgramGame
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return "GameReversiVcl_1_0.png"; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "Reversi VCL"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::reversiVcl; }
  std::string GetUrl() const noexcept override final { return "GameReversiVcl.htm"; }
};


struct ProgramRichelBilderbeekGallery : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolRichelBilderbeekGallery_1_0.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "RichelBilderbeekGallery"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::richelBilderbeekGallery; }
  std::string GetUrl() const noexcept override final { return "ToolRichelBilderbeekGallery.htm"; }
};

struct ProgramRichelBilderbeekNlSitemapGenerator : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "RichelBilderbeekNlSitemapGenerator"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::richelbilderbeekNlSitemapGenerator; }
  std::string GetUrl() const noexcept override final { return "ToolRichelbilderbeekNlSitemapGenerator.htm"; }
};

struct ProgramRubiksClock : public ProgramGame
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "GameRubiksClock_2_3.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return "GameRubiksClock_2_1.png"; }
  std::string GetScreenName() const noexcept override final { return "Rubik's Clock"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::yes; }
  ProgramType GetType() const noexcept override final { return ProgramType::rubiksClock; }
  std::string GetUrl() const noexcept override final { return "GameRubiksClock.htm"; }
};

struct ProgramRubiksClockVcl : public ProgramGame
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return "GameRubiksClock_1_0.png"; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "Rubik's Clock (VCL)"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::nvr; }
  ProgramType GetType() const noexcept override final { return ProgramType::rubiksClockVcl; }
  std::string GetUrl() const noexcept override final { return "GameRubiksClockVcl.htm"; }
};

struct ProgramSearchAndDestroyChess : public ProgramGame
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "Search And Destroy Chess"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::wip; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::wip; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::searchAndDestroyChess; }
  std::string GetUrl() const noexcept override final { return "GameSearchAndDestroyChess.htm"; }
};

struct ProgramSearchAndDestroyChessVcl : public ProgramGame
{
  std::string GetFilenameConsole() const noexcept override final { return "GameSearchAndDestroyChessConsole_1_0.png"; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return "GameSearchAndDestroyChess_2_0.png"; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "Search And Destroy Chess (VCL)"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::nvr; }
  ProgramType GetType() const noexcept override final { return ProgramType::searchAndDestroyChessVcl; }
  std::string GetUrl() const noexcept override final { return "GameSearchAndDestroyChessVcl.htm"; }
};

struct ProgramSecretMessage : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolSecretMessage_2_1.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "SecretMessage"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::wip; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::wip; }
  ProgramType GetType() const noexcept override final { return ProgramType::secretMessage; }
  std::string GetUrl() const noexcept override final { return "ToolSecretMessage.htm"; }
};

struct ProgramSecretMessageVcl : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return "ToolSecretMessage_1_0.png"; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "SecretMessage (VCL)"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::nvr; }
  ProgramType GetType() const noexcept override final { return ProgramType::secretMessageVcl; }
  std::string GetUrl() const noexcept override final { return "ToolSecretMessageVcl.htm"; }
};

struct ProgramSimBrainiac : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return "ToolSimBrainiac_1_0.png"; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "SimBrainiac"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::simBrainiac; }
  std::string GetUrl() const noexcept override final { return "ToolSimBrainiac.htm"; }
};

struct ProgramSimImmuneResponse : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return "ToolSimImmuneResponse_1_0.png"; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "SimImmuneResponse"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::simImmuneResponse; }
  std::string GetUrl() const noexcept override final { return "ToolSimImmuneResponse.htm"; }
};

struct ProgramSimMysteryMachine : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolSimMysteryMachine_1_2.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return "ToolSimMysteryMachine_1_1_web.png"; }
  std::string GetScreenName() const noexcept override final { return "SimMysteryMachine"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::yes; }
  ProgramType GetType() const noexcept override final { return ProgramType::simMysteryMachine; }
  std::string GetUrl() const noexcept override final { return "ToolSimMysteryMachine.htm"; }
};

struct ProgramSimplifyNewick : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolSimplifyNewick_1_2.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "SimplifyNewick"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::simplifyNewick; }
  std::string GetUrl() const noexcept override final { return "ToolSimplifyNewick.htm"; }
};

struct ProgramSimPredatorVcl : public ProgramGame
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return "GameSimPredator_1_0.png"; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "SimPredator (VCL)"; }

  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::simPredatorVcl; }
  std::string GetUrl() const noexcept override final { return "GameSimPredator.htm"; }
};

struct ProgramSimStagecraft : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return "ToolSimStagecraft_1_1.png"; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "SimStagecraft"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::simStagecraft; }
  std::string GetUrl() const noexcept override final { return "ToolSimStagecraft.htm"; }
};


struct ProgramSimTopPredatorPrey : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "SimTopPredatorPrey"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::simTopPredatorPrey; }
  std::string GetUrl() const noexcept override final { return "ToolSimTopPredatorPrey"; }
};

struct ProgramSoaSim : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return "ToolSoaSim_1_0.png"; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "SoaSim"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::soaSim; }
  std::string GetUrl() const noexcept override final { return "ToolSoaSim.htm"; }
};

struct ProgramSolvePuzzleX : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "SolvePuzzleX"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::solvePuzzleX; }
  std::string GetUrl() const noexcept override final { return "ToolSolvePuzzleX.htm"; }
};

struct ProgramSpaceHarryVcl : public ProgramGame
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return "GameSpaceHarry_1_0.png"; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "Space Harry (VCL)"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::nvr; }
  ProgramType GetType() const noexcept override final { return ProgramType::spaceHarryVcl; }
  std::string GetUrl() const noexcept override final { return "GameSpaceHarryVcl.htm"; }
};

struct ProgramStaircaseCardCreator : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "StaircaseCardCreator"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::staircaseCardCreator ; }
  std::string GetUrl() const noexcept override final { return "ToolStaircaseCardCreator.htm"; }
};

struct ProgramStateObserver : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolStateObserver_1_0.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "StateObserver"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::stateObserver; }
  std::string GetUrl() const noexcept override final { return "ToolStateObserver.htm"; }
};


struct ProgramStochasticityInspector : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "StochasticityInspector"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::stochasticityInspector; }
  std::string GetUrl() const noexcept override final { return "ToolStochasticityInspector.htm"; }
};

struct ProgramStyleSheetSetter : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "StyleSheetSetter"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::styleSheetSetter; }
  std::string GetUrl() const noexcept override final { return "ToolStyleSheetSetter.htm"; }
};

struct ProgramSurfacePlotter : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolSurfacePlotter_2_0.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "SurfacePlotter"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::surfacePlotter; }
  std::string GetUrl() const noexcept override final { return "ToolSurfacePlotter.htm"; }
};

struct ProgramSurfacePlotterVcl : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return "ToolSurfacePlotter_1_2.png"; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "SurfacePlotter (VCL)"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::nvr; }
  ProgramType GetType() const noexcept override final { return ProgramType::surfacePlotterVcl; }
  std::string GetUrl() const noexcept override final { return "ToolSurfacePlotterVcl.htm"; }
};

struct ProgramTankBattalion : public ProgramGame
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "TankBattalion"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::tankBattalion; }
  std::string GetUrl() const noexcept override final { return "GameTankBattalion.htm"; }
};

struct ProgramTestAbout : public ProgramClass
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolTestAbout_1_1.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "TestAbout"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::testAbout; }
  std::string GetUrl() const noexcept override final { return "ToolTestAbout.htm"; }
};

struct ProgramTestApproximator : public ProgramClass
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolTestApproximator_1_0.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "TestApproximator"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::testApproximator; }
  std::string GetUrl() const noexcept override final { return "ToolTestApproximator.htm"; }
};

struct ProgramTestBinaryNewickVector : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolTestBinaryNewickVector_1_5.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "TestBinaryNewickVector"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::testBinaryNewickVector; }
  std::string GetUrl() const noexcept override final { return "ToolTestBinaryNewickVector.htm"; }
};

struct ProgramTestBouncingBallsWidget : public ProgramClass
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolTestBouncingBallsWidget_1_0.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "TestBouncingBallsWidget"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::testBouncingBallsWidget; }
  std::string GetUrl() const noexcept override final { return "ToolTestBouncingBallsWidget.htm"; }
};

struct ProgramTestBouncingRectsWidget : public ProgramClass
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolTestBouncingRectsWidget_1_0.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "TestBouncingRectsWidget"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::testBouncingRectsWidget; }
  std::string GetUrl() const noexcept override final { return "ToolTestBouncingRectsWidget.htm"; }
};

struct ProgramTestBroadcastServer : public ProgramClass
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return "ToolTestBroadcastServer_1_0.png"; }
  std::string GetScreenName() const noexcept override final { return "TestBroadcastServer"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::n_a; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::n_a; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::yes; }
  ProgramType GetType() const noexcept override final { return ProgramType::testBroadcastServer; }
  std::string GetUrl() const noexcept override final { return "ToolTestBroadcastServer.htm"; }
};


struct ProgramTestChess : public ProgramClass
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolTestChess20120209.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return "ToolTestChess20120207.png"; }
  std::string GetScreenName() const noexcept override final { return "TestChess"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::wip; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::wip; }
  ProgramType GetType() const noexcept override final { return ProgramType::testChess; }
  std::string GetUrl() const noexcept override final { return "ToolTestChess.htm"; }
};

struct ProgramTestConceptMap : public ProgramClass
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolTestConceptMap_1_0.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "TestConceptMap"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::wip; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::wip; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::unk; }
  ProgramType GetType() const noexcept override final { return ProgramType::testConceptMap; }
  std::string GetUrl() const noexcept override final { return "ToolTestConceptMap.htm"; }
};

struct ProgramTestDial : public ProgramClass
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolTestDial_2_3.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return "ToolTestDial_1_1.png"; }
  std::string GetScreenName() const noexcept override final { return "TestDial"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::n_a; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::yes; }
  ProgramType GetType() const noexcept override final { return ProgramType::testDial; }
  std::string GetUrl() const noexcept override final { return "ToolTestDial.htm"; }
};

struct ProgramTestDrawCanvas : public ProgramClass
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolTestDrawCanvas_1_2.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "TestDrawCanvas"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::testDrawCanvas; }
  std::string GetUrl() const noexcept override final { return "ToolTestDrawCanvas.htm"; }
};

struct ProgramTestEntrance : public ProgramClass
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return "ToolTestEntrance_1_0.png"; }
  std::string GetScreenName() const noexcept override final { return "TestEntrance"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::n_a; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::n_a; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::yes; }
  ProgramType GetType() const noexcept override final { return ProgramType::testEntrance; }
  std::string GetUrl() const noexcept override final { return "ToolTestEntrance.htm"; }
};

struct ProgramTestExercise : public ProgramClass
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return "ToolTestExercise_1_0.png"; }
  std::string GetScreenName() const noexcept override final { return "TestExercise"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::unk; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::yes; }
  ProgramType GetType() const noexcept override final { return ProgramType::testExercise; }
  std::string GetUrl() const noexcept override final { return "ToolTestExercise.htm"; }
};

struct ProgramTestFunctionParser : public ProgramClass
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolTestFunctionParser_2_0.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return "ToolTestFunctionParser_1_0.png"; }
  std::string GetFilenameWeb() const noexcept override final { return "ToolTestFunctionParser_2_1.png"; }
  std::string GetScreenName() const noexcept override final { return "TestFunctionParser"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::yes; }
  ProgramType GetType() const noexcept override final { return ProgramType::testFunctionParser; }
  std::string GetUrl() const noexcept override final { return "ToolTestFunctionParser.htm"; }
};

struct ProgramTestGnuplotInterface : public ProgramClass
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "TestGnuplotInterface"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::testGnuplotInterface; }
  std::string GetUrl() const noexcept override final { return "ToolTestGnuplotInterface.htm"; }
};

struct ProgramTestGraphicsProxyWidget : public ProgramClass
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolTestGraphicsProxyWidget_0_1.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "TestGraphicsProxyWidget"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::testGraphicsProxyWidget; }
  std::string GetUrl() const noexcept override final { return "ToolTestGraphicsProxyWidget.htm"; }
};

struct ProgramTestGravityWidget : public ProgramClass
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolTestGravityWidget_0_1.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "TestGravityWidget"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::testGravityWidget; }
  std::string GetUrl() const noexcept override final { return "ToolTestGravityWidget.htm"; }
};

struct ProgramTestGroupWidget : public ProgramClass
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return "ToolTestGroupWidget_1_0.png"; }
  std::string GetScreenName() const noexcept override final { return "TestGroupWidget"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::yes; }
  ProgramType GetType() const noexcept override final { return ProgramType::testGroupWidget; }
  std::string GetUrl() const noexcept override final { return "ToolTestGroupWidget.htm"; }
};

struct ProgramTestHugeVector : public ProgramClass
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "TestHugeVector"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::testHugeVector; }
  std::string GetUrl() const noexcept override final { return "ToolTestHugeVector.htm"; }
};

struct ProgramTestImageCanvas : public ProgramClass
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolTestImageCanvas_1_0.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "TestImageCanvas"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::testImageCanvas; }
  std::string GetUrl() const noexcept override final { return "ToolTestImageCanvas.htm"; }
};

struct ProgramTestLazy_init : public ProgramClass
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "TestLazy_init"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::testLazy_init; }
  std::string GetUrl() const noexcept override final { return "ToolTestLazy_init.htm"; }
};

struct ProgramTestLed : public ProgramClass
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolTestLed_1_0.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return "ToolTestLed_1_1.png"; }
  std::string GetScreenName() const noexcept override final { return "TestLed"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::yes; }
  ProgramType GetType() const noexcept override final { return ProgramType::testLed; }
  std::string GetUrl() const noexcept override final { return "ToolTestLed.htm"; }
};

struct ProgramTestManyDigitNewick : public ProgramClass
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolTestManyDigitNewick_1_0.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "TestManyDigitNewick"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::testManyDigitNewick; }
  std::string GetUrl() const noexcept override final { return "ToolTestManyDigitNewick.htm"; }
};

struct ProgramTestMultiApproximator : public ProgramClass
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolTestMultiApproximator_1_0.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "TestMultiApproximator"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::testMultiApproximator; }
  std::string GetUrl() const noexcept override final { return "ToolTestMultiApproximator.htm"; }
};

struct ProgramTestMultiCanvas : public ProgramClass
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolTestMultiCanvas_1_0.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "TestMultiCanvas"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::wip; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::testMultiCanvas; }
  std::string GetUrl() const noexcept override final { return "ToolTestMultiCanvas.htm"; }
};

struct ProgramTestMultipleChoiceQuestion : public ProgramClass
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolTestMultipleChoiceQuestionDialog_1_0.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "TestMultipleChoiceQuestion"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::testMultipleChoiceQuestion; }
  std::string GetUrl() const noexcept override final { return "ToolTestMultipleChoiceQuestion.htm"; }
};

struct ProgramTestMultiVector : public ProgramClass
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "TestMultiVector"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::testMultiVector; }
  std::string GetUrl() const noexcept override final { return "ToolTestMultiVector.htm"; }
};

struct ProgramTestPlane : public ProgramClass
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolTestPlane_1_1.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "TestPlane"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::testPlane; }
  std::string GetUrl() const noexcept override final { return "ToolTestPlane.htm"; }
};

struct ProgramTestNdsmake : public ProgramClass
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolTestNdsmake_1_0.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "TestNdsmake"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::testNdsmake; }
  std::string GetUrl() const noexcept override final { return "ToolTestNdsmake.htm"; }
};

struct ProgramTestNeuralNet : public ProgramClass
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolTestNeuralNet_0_1.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "TestNeuralNet"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::testNeuralNet; }
  std::string GetUrl() const noexcept override final { return "ToolTestNeuralNet.htm"; }
};

struct ProgramTestNewick : public ProgramClass
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "TestNewick"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::testNewick; }
  std::string GetUrl() const noexcept override final { return "ToolTestNewick.htm"; }
};

struct ProgramTestNewickVector : public ProgramClass
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolTestNewickVector_3_2.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "TestNewickVector"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::testNewickVector; }
  std::string GetUrl() const noexcept override final { return "ToolTestNewickVector.htm"; }
};

struct ProgramTestOpenQuestion : public ProgramClass
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolTestOpenQuestion_1_0.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "TestOpenQuestion"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::testOpenQuestion; }
  std::string GetUrl() const noexcept override final { return "ToolTestOpenQuestion.htm"; }
};

struct ProgramTestPolyFile : public ProgramClass
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "TestPolyFile"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::wip; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::wip; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::testPolyFile; }
  std::string GetUrl() const noexcept override final { return "ToolTestPolyFile.htm"; }
};

struct ProgramTestPolyFileFromPolygons : public ProgramClass
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "TestPolyFileFromPolygons"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::wip; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::wip; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::testPolyFileFromPolygons; }
  std::string GetUrl() const noexcept override final { return "ToolTestPolyFileFromPolygons.htm"; }
};

struct ProgramTestPylos : public ProgramClass
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolTestPylos_1_0.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "TestPylos"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::testPylos; }
  std::string GetUrl() const noexcept override final { return "ToolTestPylos.htm"; }
};

struct ProgramTestQrcFile : public ProgramClass
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolTestQrcFile_1_3.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "TestQrcFile"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::testQrcFile; }
  std::string GetUrl() const noexcept override final { return "ToolTestQrcFile.htm"; }
};

struct ProgramTestQtArrowItems : public ProgramClass
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolTestQtArrowItems_1_0.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "TestQtArrowItems"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::testQtArrowItems; }
  std::string GetUrl() const noexcept override final { return "ToolTestQtArrowItems.htm"; }
};

struct ProgramTestQtCreatorProFile : public ProgramClass
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolTestQtCreatorProFile_1_4.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "TestQtCreatorProFile"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::testQtCreatorProFile; }
  std::string GetUrl() const noexcept override final { return "ToolTestQtCreatorProFile.htm"; }
};

struct ProgramTestQtHideAndShowDialog : public ProgramClass
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolTestQtHideAndShowDialog_0_1.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "TestQtHideAndShowDialog"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::testQtHideAndShowDialog; }
  std::string GetUrl() const noexcept override final { return "ToolTestQtHideAndShowDialog.htm"; }
};

struct ProgramTestQtKeyboardFriendlyGraphicsView : public ProgramClass
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolTestKeyboardFriendlyGraphicsView_0_4.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "TestQtKeyboardFriendlyGraphicsView"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::testQtKeyboardFriendlyGraphicsView; }
  std::string GetUrl() const noexcept override final { return "ToolTestQtKeyboardFriendlyGraphicsView.htm"; }
};

struct ProgramTestQtModels : public ProgramClass
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolTestQtModels_1_2.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "TestQtModels"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::testQtModels; }
  std::string GetUrl() const noexcept override final { return "ToolTestQtModels.htm"; }
};

struct ProgramTestQtOcrWidget : public ProgramClass
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "TestQtOcrWidget"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::testQtOcrWidget; }
  std::string GetUrl() const noexcept override final { return "ToolTestQtOcrWidget.htm"; }
};

struct ProgramTestQtRoundedEditRectItem : public ProgramClass
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolTestQtRoundedEditRectItem_1_2.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "TestQtRoundedEditRectItem"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::testQtRoundedEditRectItem; }
  std::string GetUrl() const noexcept override final { return "ToolTestQtRoundedEditRectItem.htm"; }
};

struct ProgramTestQtRoundedRectItem : public ProgramClass
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolTestQtRoundedRectItem_1_2.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "TestQtRoundedRectItem"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::testQtRoundedRectItem; }
  std::string GetUrl() const noexcept override final { return "ToolTestQtRoundedRectItem.htm"; }
};

/*
struct ProgramTestQtRoundedTextRectItem : public ProgramClass
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolTestQtRoundedTextRectItem_1_2.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "TestQtRoundedTextRectItem"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::testQtRoundedTextRectItem; }
  std::string GetUrl() const noexcept override final { return "ToolTestQtRoundedTextRectItem.htm"; }
};
*/

struct ProgramTestQuestion : public ProgramClass
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolTestQuestion_3_1.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "TestQuestion"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::unk; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::yes; }
  ProgramType GetType() const noexcept override final { return ProgramType::testQuestion; }
  std::string GetUrl() const noexcept override final { return "ToolTestQuestion.htm"; }
};

struct ProgramTestReversi : public ProgramClass
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolTestReversi_0_1.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "TestReversi"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::testReversi; }
  std::string GetUrl() const noexcept override final { return "ToolTestReversi.htm"; }
};

struct ProgramTestSelectFileDialog : public ProgramClass
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return "ToolTestSelectFileDialog_1_1.png"; }
  std::string GetScreenName() const noexcept override final { return "TestSelectFileDialog"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::yes; }
  ProgramType GetType() const noexcept override final { return ProgramType::testSelectFileDialog; }
  std::string GetUrl() const noexcept override final { return "ToolTestSelectFileDialog.htm"; }
};

struct ProgramTestServerPusher : public ProgramClass
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "TestServerPusher"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::yes; }
  ProgramType GetType() const noexcept override final { return ProgramType::testServerPusher; }
  std::string GetUrl() const noexcept override final { return "ToolTestServerPusher.htm"; }
};

struct ProgramTestShape : public ProgramClass
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolTestShape_2_1.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return "ToolTestShape_1_0_web.png"; }
  std::string GetScreenName() const noexcept override final { return "TestShape"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::yes; }
  ProgramType GetType() const noexcept override final { return ProgramType::testShape; }
  std::string GetUrl() const noexcept override final { return "ToolTestShape.htm"; }
};

struct ProgramTestShinyButton : public ProgramClass
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolTestShinyButton_2_1.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return "ToolTestShinyButton_2_0_web.png"; }
  std::string GetScreenName() const noexcept override final { return "TestShinyButton"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::yes; }
  ProgramType GetType() const noexcept override final { return ProgramType::testShinyButton; }
  std::string GetUrl() const noexcept override final { return "ToolTestShinyButton.htm"; }
};

struct ProgramTestSimpleLinearRegression : public ProgramClass
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolTestSimpleLinearRegression_1_2.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "TestSimpleLinearRegression"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::testSimpleLinearRegression; }
  std::string GetUrl() const noexcept override final { return "ToolTestSimpleLinearRegression.htm"; }
};

struct ProgramTestStopwatch : public ProgramClass
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "TestStopwatch"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::testStopwatch; }
  std::string GetUrl() const noexcept override final { return "ToolTestStopwatch.htm"; }
};

struct ProgramTestTextCanvas : public ProgramClass
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolTestTextCanvas_1_0.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "TestTextCanvas"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::testTextCanvas; }
  std::string GetUrl() const noexcept override final { return "ToolTestTextCanvas.htm"; }
};

struct ProgramTestTextPositionWidget : public ProgramClass
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolTestTextPositionWidget_1_4.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "TestTextPositionWidget"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::testTextPositionWidget; }
  std::string GetUrl() const noexcept override final { return "ToolTestTextPositionWidget.htm"; }
};

struct ProgramTestTicTacToe : public ProgramClass
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolTestTicTacToe_1_1.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return "ToolTestTicTacToe_1_2.png"; }
  std::string GetScreenName() const noexcept override final { return "TestTicTacToe"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::yes; }
  ProgramType GetType() const noexcept override final { return ProgramType::testTicTacToe; }
  std::string GetUrl() const noexcept override final { return "ToolTestTicTacToe.htm"; }
};

struct ProgramTestTimedServerPusher : public ProgramClass
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "TestTimedServerPusher"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::yes; }
  ProgramType GetType() const noexcept override final { return ProgramType::testTimedServerPusher; }
  std::string GetUrl() const noexcept override final { return "ToolTestTimedServerPusher.htm"; }
};

struct ProgramTestToggleButton : public ProgramClass
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolTestToggleButton_1_4.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "TestToggleButton"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::yes; }
  ProgramType GetType() const noexcept override final { return ProgramType::testToggleButton; }
  std::string GetUrl() const noexcept override final { return "ToolTestToggleButton.htm"; }
};

struct ProgramTestTriangle : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolTestTriangle_1_1.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "TestTriangle"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::testTriangle; }
  std::string GetUrl() const noexcept override final { return "ToolTestTriangle.htm"; }
};


struct ProgramTestTwoDigitNewick : public ProgramClass
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolTestTwoDigitNewick_2_2.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "TestTwoDigitNewick"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::testTwoDigitNewick; }
  std::string GetUrl() const noexcept override final { return "ToolTestTwoDigitNewick.htm"; }
};

struct ProgramThorVeen : public ProgramProject
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return "ProjectThorVeen_0_9.png"; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "Project ThorVeen"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::nvr; }
  ProgramType GetType() const noexcept override final { return ProgramType::thorVeen; }
  std::string GetUrl() const noexcept override final { return "ProjectThorVeen.htm"; }
};

struct ProgramThresholdFilterer : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolThresholdFilterer_2_0.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "ThresholdFilterer"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::wip; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::thresholdFilterer; }
  std::string GetUrl() const noexcept override final { return "ToolThresholdFilterer.htm"; }
};

struct ProgramThresholdFiltererVcl : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return "ToolThresholdFilterer_1_0.png"; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "ThresholdFilterer (VCL)"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::nvr; }
  ProgramType GetType() const noexcept override final { return ProgramType::thresholdFiltererVcl; }
  std::string GetUrl() const noexcept override final { return "ToolThresholdFiltererVcl.htm"; }
};

struct ProgramTicTacToe : public ProgramGame
{
  std::string GetFilenameConsole() const noexcept override final { return "GameTicTacToe_1_6.png"; }
  std::string GetFilenameDesktop() const noexcept override final { return "GameTicTacToe_1_5.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return "GameTicTacToe_1_4.png"; }
  std::string GetScreenName() const noexcept override final { return "TicTacToe"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::yes; }
  ProgramType GetType() const noexcept override final { return ProgramType::ticTacToe; }
  std::string GetUrl() const noexcept override final { return "GameTicTacToe.htm"; }
};

struct ProgramTimePoll : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return "ToolTimePoll_4_1.png"; }
  std::string GetScreenName() const noexcept override final { return "TimePoll"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::yes; }
  ProgramType GetType() const noexcept override final { return ProgramType::timePoll; }
  std::string GetUrl() const noexcept override final { return "ToolTimePoll.htm"; }
};

struct ProgramTriangleMeshCreator : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolTriangleMeshCreator_1_2.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "TriangleMeshCreator"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::triangleMeshCreator; }
  std::string GetUrl() const noexcept override final { return "ToolTriangleMeshCreator.htm"; }
};

struct ProgramTronCollection : public ProgramGame
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "TronCollection"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::wip; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::tronCollection; }
  std::string GetUrl() const noexcept override final { return "GameTronCollection.htm"; }
};

struct ProgramTronCollectionVcl : public ProgramGame
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "TronCollection (VCL)"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::nvr; }
  ProgramType GetType() const noexcept override final { return ProgramType::tronCollectionVcl; }
  std::string GetUrl() const noexcept override final { return "GameTronCollectionVcl.htm"; }
};

struct ProgramUbuntuOneWatcher : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return "ToolUbuntuOneWatcher_1_0.png"; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "UbuntuOneWatcher"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::ubuntuOneWatcher; }
  std::string GetUrl() const noexcept override final { return "ToolUbuntuOneWatcher.htm"; }
};


struct ProgramValentineCardDecrypter : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolValentineCardDecrypter_2_0.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "ValentineCardDecrypter"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::valentineCardDecrypter; }
  std::string GetUrl() const noexcept override final { return "ToolValentineCardDecrypter.htm"; }
};

struct ProgramVigenereCipher : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolVigenereCipher_1_0.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "VigenereCipher"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::wip; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::wip; }
  ProgramType GetType() const noexcept override final { return ProgramType::vigenereCipher; }
  std::string GetUrl() const noexcept override final { return "ToolVigenereCipher.htm"; }
};

struct ProgramVirtualBastard : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "VirtualBastard"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::virtualBastard; }
  std::string GetUrl() const noexcept override final { return "ToolVirtualBastard.htm"; }
};

struct ProgramVisualAbc : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolVisualAbc_1_0.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "VisualAbc"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::visualAbc; }
  std::string GetUrl() const noexcept override final { return "ToolVisualAbc.htm"; }
};

struct ProgramWktToSvg : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "ToolWktToSvg_1_3.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "WktToSvg"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::wktToSvg; }
  std::string GetUrl() const noexcept override final { return "ToolWktToSvg.htm"; }
};

struct ProgramXeNonZero : public ProgramGame
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return "GameXeNonZero_0_1.png"; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "XeNonZero"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::xeNonZero; }
  std::string GetUrl() const noexcept override final { return "GameXeNonZero.htm"; }
};

struct ProgramZork : public ProgramGame
{
  std::string GetFilenameConsole() const noexcept override final { return "GameZork.png"; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetScreenName() const noexcept override final { return "Zork"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::zork; }
  std::string GetUrl() const noexcept override final { return "GameZork.htm"; }
};

/*
struct ProgramNewickVector : public ProgramProject
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetName() const { return "NewickVector"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::yes; }
  ProgramType GetType() const noexcept override final { return ProgramType::newickVector; }
  std::string GetUrl() const noexcept override final { return "ProjectNewickVector.htm"; }
};


struct ProgramTwoDigitNewick : public ProgramProject
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetName() const { return "TwoDigitNewick"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::twoDigitNewick; }
  std::string GetUrl() const noexcept override final { return "ProjectTwoDigitNewick.htm"; }
};






struct ProgramCreateSitemap : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return ""; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetName() const { return "CreateSitemap"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::nvr; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::createSitemap; }
  std::string GetUrl() const noexcept override final { return "ToolCreateSitemap.htm"; }
};


struct ProgramEncranger : public ProgramTool
{
  std::string GetFilenameConsole() const noexcept override final { return ""; }
  std::string GetFilenameDesktop() const noexcept override final { return ""; }
  std::string GetFilenameDesktopWindowsOnly() const noexcept override final { return "ToolEncranger_1_0.png"; }
  std::string GetFilenameWeb() const noexcept override final { return ""; }
  std::string GetName() const { return "Encranger"; }
  ProgramStatus GetStatusConsole() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusDesktopWindowsOnly() const noexcept override final { return ProgramStatus::yes; }
  ProgramStatus GetStatusDesktop() const noexcept override final { return ProgramStatus::no; }
  ProgramStatus GetStatusWebApplication() const noexcept override final { return ProgramStatus::no; }
  ProgramType GetType() const noexcept override final { return ProgramType::encranger; }
  std::string GetUrl() const noexcept override final { return "ToolEncranger.htm"; }
};

*/

std::ostream& operator<<(std::ostream& os, const Program& p) noexcept;
bool operator<(const Program& lhs, const Program& rhs) noexcept;

} //~namespace ribi

#endif // RIBI_RICHELBILDERBEEKPROGRAM_H

 

 

 

 

 

./CppRichelBilderbeekProgram/richelbilderbeekprogram.cpp

 

//---------------------------------------------------------------------------
/*
RichelBilderbeek::Program, class for a program by Richel Bilderbeek
Copyright (C) 2012-2015 Richel Bilderbeek

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program.If not, see <http://www.gnu.org/licenses/>.
*/
//---------------------------------------------------------------------------
//From http://www.richelbilderbeek.nl/CppProjectRichelBilderbeekProgram.htm
//---------------------------------------------------------------------------
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Weffc++"
#pragma GCC diagnostic ignored "-Wunused-local-typedefs"
#include "richelbilderbeekprogram.h"

#include <iostream>
#include <stdexcept>

#include "richelbilderbeekprogramtypes.h"
#include "richelbilderbeekprogramstatus.h"
#include "trace.h"
#pragma GCC diagnostic pop

boost::shared_ptr<ribi::Program> ribi::Program::CreateProgram(const ProgramType type) noexcept
{
  boost::shared_ptr<Program> p;
  switch (type)
  {
    case ProgramType::asciiArter: p.reset(new ProgramAsciiArter); break;
    case ProgramType::asciiArterVcl: p.reset(new ProgramAsciiArterVcl); break;
    case ProgramType::barbaImage: p.reset(new ProgramBarbaImage); break;
    case ProgramType::beerWanter: p.reset(new ProgramBeerWanter); break;
    case ProgramType::beerWanterVcl: p.reset(new ProgramBeerWanterVcl); break;
    case ProgramType::athleticLandVcl: p.reset(new ProgramAthleticLandVcl); break;
    case ProgramType::bochum: p.reset(new ProgramBochum); break;
    case ProgramType::boenken: p.reset(new ProgramBoenken); break;
    case ProgramType::boenkenVcl: p.reset(new ProgramBoenkenVcl); break;
    case ProgramType::brainweaver: p.reset(new ProgramBrainweaver); break;
    case ProgramType::bristol: p.reset(new ProgramBristol); break;
    case ProgramType::caesarCipher: p.reset(new ProgramCaesarCipher); break;
    case ProgramType::chrisWiley: p.reset(new ProgramChrisWiley); break;
    case ProgramType::codeToHtml: p.reset(new ProgramCodeToHtml); break;
    case ProgramType::connectThree: p.reset(new ProgramConnectThree); break;
    case ProgramType::corridor: p.reset(new ProgramCorridor); break;
    case ProgramType::createGlossary: p.reset(new ProgramCreateGlossary); break;
    case ProgramType::createQtProjectZipFile: p.reset(new ProgramCreateQtProjectZipFile); break;
    case ProgramType::crossPoll: p.reset(new ProgramCrossPoll); break;
    case ProgramType::dasWahreSchlagerfest: p.reset(new ProgramDasWahreSchlagerfest); break;
    case ProgramType::dasWahreSchlagerfestVcl: p.reset(new ProgramDasWahreSchlagerfestVcl); break;
    case ProgramType::dotMatrix: p.reset(new ProgramDotMatrix); break;
    case ProgramType::dotMatrixVcl: p.reset(new ProgramDotMatrixVcl); break;
    case ProgramType::encranger: p.reset(new ProgramEncranger); break;
    case ProgramType::everythingToPiecesShooter: p.reset(new ProgramEverythingToPiecesShooter); break;
    case ProgramType::filterOperationer: p.reset(new ProgramFilterOperationer); break;
    case ProgramType::filterOperationerVcl: p.reset(new ProgramFilterOperationerVcl); break;
    case ProgramType::fisherWrighter: p.reset(new ProgramFisherWrighter); break;
    case ProgramType::fryskLeareLieder: p.reset(new ProgramFryskLeareLieder); break;
    case ProgramType::functionPlotter: p.reset(new ProgramFunctionPlotter); break;
    case ProgramType::functionPlotterVcl: p.reset(new ProgramFunctionPlotterVcl); break;
    case ProgramType::gaborFilter: p.reset(new ProgramGaborFilter); break;
    case ProgramType::gaborFilterVcl: p.reset(new ProgramGaborFilterVcl); break;
    case ProgramType::grayCoder: p.reset(new ProgramGrayCoder); break;
    case ProgramType::grayCoderVcl: p.reset(new ProgramGrayCoderVcl); break;
    case ProgramType::gtst: p.reset(new ProgramGtst); break;
    case ProgramType::histogramEqualizationer: p.reset(new ProgramHistogramEqualizationer); break;
    case ProgramType::histogramEqualizationerVcl: p.reset(new ProgramHistogramEqualizationerVcl); break;
    case ProgramType::hometrainer: p.reset(new ProgramHometrainer); break;
    case ProgramType::hometrainerVcl: p.reset(new ProgramHometrainerVcl); break;
    case ProgramType::imageRotater: p.reset(new ProgramImageRotater); break;
    case ProgramType::imageRotaterClx: p.reset(new ProgramImageRotaterClx); break;
    case ProgramType::imageRotaterVcl: p.reset(new ProgramImageRotaterVcl); break;
    case ProgramType::k3OpEenRij: p.reset(new ProgramK3OpEenRij); break;
    case ProgramType::k3OpEenRijVcl: p.reset(new ProgramK3OpEenRijVcl); break;
    case ProgramType::kalmanFilterer: p.reset(new ProgramKalmanFilterer); break;
    case ProgramType::keySender: p.reset(new ProgramKeySender); break;
    case ProgramType::knokfighterVcl: p.reset(new ProgramKnokfighterVcl); break;
    case ProgramType::kTouchLectureCreator: p.reset(new ProgramKTouchLectureCreator); break;
    case ProgramType::lambdaBot: p.reset(new ProgramLambdaBot); break;
    case ProgramType::learyCircumplex: p.reset(new ProgramLearyCircumplex); break;
    case ProgramType::lizardPaperRockScissorsSpock: p.reset(new ProgramLizardPaperRockScissorsSpock); break;
    case ProgramType::logisticGrowthSimulator: p.reset(new ProgramLogisticGrowthSimulator); break;
    case ProgramType::loose: p.reset(new ProgramLoose); break;
    case ProgramType::martianCafeTuinemaTycoon: p.reset(new ProgramMartianCafeTuinemaTycoon); break;
    case ProgramType::mazeCreator: p.reset(new ProgramMazeCreator); break;
    case ProgramType::mazeCreatorVcl: p.reset(new ProgramMazeCreatorVcl); break;
    case ProgramType::maziak: p.reset(new ProgramMaziak); break;
    case ProgramType::maziakVcl: p.reset(new ProgramMaziakVcl); break;
    case ProgramType::metZnDrieenVcl: p.reset(new ProgramMetZnDrieenVcl); break;
    case ProgramType::midiLessonCreator: p.reset(new ProgramMidiLessonCreator); break;
    case ProgramType::morpher: p.reset(new ProgramMorpher); break;
    case ProgramType::multiEncranger: p.reset(new ProgramMultiEncranger); break;
    case ProgramType::multiEncrangerVcl: p.reset(new ProgramMultiEncrangerVcl); break;
    case ProgramType::muscaDomestica: p.reset(new ProgramMuscaDomestica); break;
    case ProgramType::busicTheory: p.reset(new ProgramMusicTheory); break;
    case ProgramType::mutualismBreakdowner: p.reset(new ProgramMutualismBreakdowner); break;
    case ProgramType::ndsmake: p.reset(new ProgramNdsmake); break;
    case ProgramType::paperRockScissors: p.reset(new ProgramPaperRockScissors); break;
    case ProgramType::paperRockScissorsVcl: p.reset(new ProgramPaperRockScissorsVcl); break;
    case ProgramType::paperRockScissorsWithTrait: p.reset(new ProgramPaperRockScissorsWithTrait); break;
    case ProgramType::pause: p.reset(new ProgramPause); break;
    case ProgramType::perfectElasticCollision: p.reset(new ProgramPerfectElasticCollision); break;
    case ProgramType::picToCode: p.reset(new ProgramPicToCode); break;
    case ProgramType::pixelator: p.reset(new ProgramPixelator); break;
    case ProgramType::pixelatorVcl: p.reset(new ProgramPixelatorVcl); break;
    case ProgramType::pokeVolleyVcl: p.reset(new ProgramPokeVolleyVcl); break;
    case ProgramType::preDickAdvocaTor: p.reset(new ProgramPreDickAdvocaTor); break;
    case ProgramType::primeExpert: p.reset(new ProgramPrimeExpert); break;
    case ProgramType::projectRichelBilderbeek: p.reset(new ProgramProjectRichelBilderbeek); break;
    case ProgramType::pylos: p.reset(new ProgramPylos); break;
    case ProgramType::qmakeWatcher: p.reset(new ProgramQmakeWatcher); break;
    case ProgramType::quadraticSolver: p.reset(new ProgramQuadraticSolver); break;
    case ProgramType::rampalEtienne: p.reset(new ProgramRampalEtienne); break;
    case ProgramType::randomCode: p.reset(new ProgramRandomCode); break;
    case ProgramType::randomCodeVcl: p.reset(new ProgramRandomCodeVcl); break;
    case ProgramType::rasper: p.reset(new ProgramRasper); break;
    case ProgramType::refrigeratorPuzzleSolver: p.reset(new ProgramRefrigeratorPuzzleSolver); break;
    case ProgramType::regexTester: p.reset(new ProgramRegexTester); break;
    case ProgramType::reversi: p.reset(new ProgramReversi); break;
    case ProgramType::reversiVcl: p.reset(new ProgramReversiVcl); break;
    case ProgramType::richelBilderbeekGallery: p.reset(new ProgramRichelBilderbeekGallery); break;
    case ProgramType::richelbilderbeekNlSitemapGenerator: p.reset(new ProgramRichelBilderbeekNlSitemapGenerator); break;
    case ProgramType::rubiksClock: p.reset(new ProgramRubiksClock); break;
    case ProgramType::rubiksClockVcl: p.reset(new ProgramRubiksClockVcl); break;
    case ProgramType::searchAndDestroyChess: p.reset(new ProgramSearchAndDestroyChess); break;
    case ProgramType::searchAndDestroyChessVcl: p.reset(new ProgramSearchAndDestroyChessVcl); break;
    case ProgramType::secretMessage: p.reset(new ProgramSecretMessage); break;
    case ProgramType::secretMessageVcl: p.reset(new ProgramSecretMessageVcl); break;
    case ProgramType::simBrainiac: p.reset(new ProgramSimBrainiac); break;
    case ProgramType::simImmuneResponse: p.reset(new ProgramSimImmuneResponse); break;
    case ProgramType::simMysteryMachine: p.reset(new ProgramSimMysteryMachine); break;
    case ProgramType::simplifyNewick: p.reset(new ProgramSimplifyNewick); break;
    case ProgramType::simPredatorVcl: p.reset(new ProgramSimPredatorVcl); break;
    case ProgramType::simStagecraft: p.reset(new ProgramSimStagecraft); break;
    case ProgramType::simTopPredatorPrey: p.reset(new ProgramSimTopPredatorPrey); break;

    case ProgramType::soaSim: p.reset(new ProgramSoaSim); break;
    case ProgramType::solvePuzzleX: p.reset(new ProgramSolvePuzzleX); break;
    case ProgramType::spaceHarryVcl: p.reset(new ProgramSpaceHarryVcl); break;
    case ProgramType::staircaseCardCreator : p.reset(new ProgramStaircaseCardCreator); break;
    case ProgramType::stateObserver: p.reset(new ProgramStateObserver); break;
    case ProgramType::stochasticityInspector: p.reset(new ProgramStochasticityInspector); break;
    case ProgramType::styleSheetSetter: p.reset(new ProgramStyleSheetSetter); break;
    case ProgramType::surfacePlotter: p.reset(new ProgramSurfacePlotter); break;
    case ProgramType::surfacePlotterVcl: p.reset(new ProgramSurfacePlotterVcl); break;
    case ProgramType::tankBattalion: p.reset(new ProgramTankBattalion); break;
    case ProgramType::testAbout: p.reset(new ProgramTestAbout); break;
    case ProgramType::testApproximator: p.reset(new ProgramTestApproximator); break;
    case ProgramType::testBinaryNewickVector: p.reset(new ProgramTestBinaryNewickVector); break;
    case ProgramType::testBouncingBallsWidget: p.reset(new ProgramTestBouncingBallsWidget); break;
    case ProgramType::testBouncingRectsWidget: p.reset(new ProgramTestBouncingRectsWidget); break;
    case ProgramType::testBroadcastServer: p.reset(new ProgramTestBroadcastServer); break;
    case ProgramType::testChess: p.reset(new ProgramTestChess); break;
    case ProgramType::testConceptMap: p.reset(new ProgramTestConceptMap); break;
    case ProgramType::testDial: p.reset(new ProgramTestDial); break;
    case ProgramType::testDrawCanvas: p.reset(new ProgramTestDrawCanvas); break;
    case ProgramType::testEntrance: p.reset(new ProgramTestEntrance); break;
    case ProgramType::testExercise: p.reset(new ProgramTestExercise); break;
    case ProgramType::testFunctionParser: p.reset(new ProgramTestFunctionParser); break;
    case ProgramType::testGnuplotInterface: p.reset(new ProgramTestGnuplotInterface); break;
    case ProgramType::testGraphicsProxyWidget: p.reset(new ProgramTestGraphicsProxyWidget); break;
    case ProgramType::testGravityWidget: p.reset(new ProgramTestGravityWidget); break;
    case ProgramType::testGroupWidget: p.reset(new ProgramTestGroupWidget); break;
    case ProgramType::testHugeVector: p.reset(new ProgramTestHugeVector); break;
    case ProgramType::testImageCanvas: p.reset(new ProgramTestImageCanvas); break;
    case ProgramType::testLazy_init: p.reset(new ProgramTestLazy_init); break;
    case ProgramType::testLed: p.reset(new ProgramTestLed); break;
    case ProgramType::testManyDigitNewick: p.reset(new ProgramTestManyDigitNewick); break;
    case ProgramType::testMultiApproximator: p.reset(new ProgramTestMultiApproximator); break;
    case ProgramType::testMultiCanvas: p.reset(new ProgramTestMultiCanvas); break;
    case ProgramType::testMultipleChoiceQuestion: p.reset(new ProgramTestMultipleChoiceQuestion); break;
    case ProgramType::testMultiVector: p.reset(new ProgramTestMultiVector); break;
    case ProgramType::testNdsmake: p.reset(new ProgramTestNdsmake); break;
    case ProgramType::testNeuralNet: p.reset(new ProgramTestNeuralNet); break;
    case ProgramType::testNewick: p.reset(new ProgramTestNewick); break;
    case ProgramType::testNewickVector: p.reset(new ProgramTestNewickVector); break;
    case ProgramType::testOpenQuestion: p.reset(new ProgramTestOpenQuestion); break;
    case ProgramType::testPlane: p.reset(new ProgramTestPlane); break;
    case ProgramType::testPolyFile: p.reset(new ProgramTestPolyFile); break;
    case ProgramType::testPolyFileFromPolygons: p.reset(new ProgramTestPolyFileFromPolygons); break;
    case ProgramType::testPylos: p.reset(new ProgramTestPylos); break;
    case ProgramType::testQrcFile: p.reset(new ProgramTestQrcFile); break;
    case ProgramType::testQtArrowItems: p.reset(new ProgramTestQtArrowItems); break;
    case ProgramType::testQtCreatorProFile: p.reset(new ProgramTestQtCreatorProFile); break;
    case ProgramType::testQtHideAndShowDialog: p.reset(new ProgramTestQtHideAndShowDialog); break;
    case ProgramType::testQtKeyboardFriendlyGraphicsView: p.reset(new ProgramTestQtKeyboardFriendlyGraphicsView); break;
    case ProgramType::testQtOcrWidget: p.reset(new ProgramTestQtOcrWidget); break;
    case ProgramType::testQtModels: p.reset(new ProgramTestQtModels); break;
    case ProgramType::testQtRoundedEditRectItem: p.reset(new ProgramTestQtRoundedEditRectItem); break;
    case ProgramType::testQtRoundedRectItem: p.reset(new ProgramTestQtRoundedRectItem); break;
    case ProgramType::testQuestion: p.reset(new ProgramTestQuestion); break;
    case ProgramType::testReversi: p.reset(new ProgramTestReversi); break;
    case ProgramType::testSelectFileDialog: p.reset(new ProgramTestSelectFileDialog); break;
    case ProgramType::testServerPusher: p.reset(new ProgramTestServerPusher); break;
    case ProgramType::testShape: p.reset(new ProgramTestShape); break;
    case ProgramType::testShinyButton: p.reset(new ProgramTestShinyButton); break;
    case ProgramType::testSimpleLinearRegression: p.reset(new ProgramTestSimpleLinearRegression); break;
    case ProgramType::testStopwatch: p.reset(new ProgramTestStopwatch); break;
    case ProgramType::testTextCanvas: p.reset(new ProgramTestTextCanvas); break;
    case ProgramType::testTextPositionWidget: p.reset(new ProgramTestTextPositionWidget); break;
    case ProgramType::testTicTacToe: p.reset(new ProgramTestTicTacToe); break;
    case ProgramType::testTimedServerPusher: p.reset(new ProgramTestTimedServerPusher); break;
    case ProgramType::testToggleButton: p.reset(new ProgramTestToggleButton); break;
    case ProgramType::testTriangle: p.reset(new ProgramTestTriangle); break;
    case ProgramType::triangleMeshCreator: p.reset(new ProgramTriangleMeshCreator); break;
    case ProgramType::testTwoDigitNewick: p.reset(new ProgramTestTwoDigitNewick); break;
    case ProgramType::thorVeen: p.reset(new ProgramThorVeen); break;
    case ProgramType::thresholdFilterer: p.reset(new ProgramThresholdFilterer); break;
    case ProgramType::thresholdFiltererVcl: p.reset(new ProgramThresholdFiltererVcl); break;
    case ProgramType::ticTacToe: p.reset(new ProgramTicTacToe); break;
    case ProgramType::timePoll: p.reset(new ProgramTimePoll); break;
    case ProgramType::tronCollection: p.reset(new ProgramTronCollection); break;
    case ProgramType::tronCollectionVcl: p.reset(new ProgramTronCollectionVcl); break;
    case ProgramType::ubuntuOneWatcher: p.reset(new ProgramUbuntuOneWatcher); break;
    case ProgramType::valentineCardDecrypter: p.reset(new ProgramValentineCardDecrypter); break;
    case ProgramType::vigenereCipher: p.reset(new ProgramVigenereCipher); break;
    case ProgramType::virtualBastard: p.reset(new ProgramVirtualBastard); break;
    case ProgramType::visualAbc: p.reset(new ProgramVisualAbc); break;
    case ProgramType::wktToSvg: p.reset(new ProgramWktToSvg); break;
    case ProgramType::xeNonZero: p.reset(new ProgramXeNonZero); break;
    case ProgramType::zork: p.reset(new ProgramZork); break;
    case ProgramType::n_types:
      assert(!"Unimplemented RichelBilderbeek::ProgramType");
      throw std::logic_error("Unimplemented RichelBilderbeek::ProgramType");
  }
  #ifndef NDEBUG
  if (!p)
  {
    TRACE(ProgramTypes::ProgramTypeToEnumName(type));
  }
  assert(p);
  if (p->GetType() != type)
  {
    TRACE("ERROR");
    TRACE(p->GetName());
    TRACE(ProgramTypes::ProgramTypeToEnumName(type));
    TRACE(ProgramTypes::ProgramTypeToEnumName(p->GetType()));
  }
  #endif
  assert(p->GetType() == type
    && "type and Program::GetType must match");

  return p;
}

std::string ribi::Program::GetName() const noexcept
{
  return ribi::ProgramTypes::ProgramTypeToEnumName(this->GetType());
}

std::string ribi::Program::GetScreenName() const noexcept
{
  return ribi::ProgramTypes::ProgramTypeToScreenName(this->GetType());
}

std::vector<boost::shared_ptr<ribi::Program>> ribi::Program::GetAllPrograms() noexcept
{
  const std::vector<ProgramType> types = ProgramTypes::GetAll();
  std::vector<boost::shared_ptr<Program>> v;

  for (const ProgramType type: types)
  {
    const boost::shared_ptr<Program> p = CreateProgram(type);
    assert(p);
    assert(p->GetType() == type);
    v.push_back(p);
  }
  assert(v.size() == types.size());
  std::sort(v.begin(),v.end(),
    [](const boost::shared_ptr<Program>& lhs, const boost::shared_ptr<Program>& rhs) { return lhs->GetName() < rhs->GetName(); }
    );
  return v;
}

std::string ribi::Program::GetFilenameBase() const noexcept
{
  std::string s = this->GetTypeName();
  s[0] = std::toupper(s[0]);
  return s + GetScreenName();
}

std::string ribi::Program::GetTypeName() const noexcept
{
  return ProgramTypes::ProgramTypeToEnumName(this->GetType());
}

std::string ribi::Program::GetVersion() noexcept
{
  return "1.0";
}

std::vector<std::string> ribi::Program::GetVersionHistory() noexcept
{
  return {
    "2012-02-19: Version 1.0: initial version"
  };
}

std::ostream& ribi::operator<<(std::ostream& os, const Program& p) noexcept
{
  const std::string name = p.GetName();

  os << name;

  if (name.size() < 10) { os << '\t'; }

  os
     << '\t' << p.GetTypeName()
     << '\t' << ProgramStatusToStr(p.GetStatusConsole())
     << '\t' << ProgramStatusToStr(p.GetStatusDesktopWindowsOnly())
     << '\t' << ProgramStatusToStr(p.GetStatusDesktop())
     << '\t' << ProgramStatusToStr(p.GetStatusWebApplication());
   return os;
}

bool ribi::operator<(const Program& lhs, const Program& rhs) noexcept
{
  if (lhs.GetTypeName() < rhs.GetTypeName()) return true;
  if (lhs.GetTypeName() > rhs.GetTypeName()) return false;
  return lhs.GetName() < rhs.GetName();
}

 

 

 

 

 

./CppRichelBilderbeekProgram/richelbilderbeekprogramstatus.h

 

//---------------------------------------------------------------------------
/*
RichelBilderbeek::ProgramStatus, status of a program by Richel Bilderbeek
Copyright (C) 2012-2014 Richel Bilderbeek

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program.If not, see <http://www.gnu.org/licenses/>.
*/
//---------------------------------------------------------------------------
//From http://www.richelbilderbeek.nl/ProjectRichelBilderbeekProgramStatus.htm
//---------------------------------------------------------------------------
#ifndef RIBI_RICHELBILDERBEEKPROGRAMSTATUS_H
#define RIBI_RICHELBILDERBEEKPROGRAMSTATUS_H

#include <string>
#include <vector>

namespace ribi {

///Status: yes, no, never, not applicable, work in progress, to be done and unknown
enum class ProgramStatus { yes, no, nvr, n_a, wip, tbd, unk };

struct ProgramStatusVersion
{
  ///Obtain the version of this class
  static std::string GetVersion() noexcept;

  ///Obtain the version history of this class
  static std::vector<std::string> GetVersionHistory() noexcept;
};

std::string ProgramStatusToStr(const ProgramStatus c);
std::ostream& operator<<(std::ostream& os, const ProgramStatus c);

} //~namespace ribi

#endif // RIBI_RICHELBILDERBEEKPROGRAMSTATUS_H

 

 

 

 

 

./CppRichelBilderbeekProgram/richelbilderbeekprogramstatus.cpp

 

//---------------------------------------------------------------------------
/*
RichelBilderbeek::ProgramStatus, status of a program by Richel Bilderbeek
Copyright (C) 2012-2015 Richel Bilderbeek

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program.If not, see <http://www.gnu.org/licenses/>.
*/
//---------------------------------------------------------------------------
//From http://www.richelbilderbeek.nl/CppProjectRichelBilderbeekProgramStatus.htm
//---------------------------------------------------------------------------
#include "richelbilderbeekprogramstatus.h"

#include <cassert>
#include <iostream>
#include <stdexcept>

std::string ribi::ProgramStatusToStr(const ProgramStatus c)
{
  switch (c)
  {
    case ProgramStatus::yes: return "yes";
    case ProgramStatus::no : return "no";
    case ProgramStatus::nvr: return "never";
    case ProgramStatus::n_a: return "n/a";
    case ProgramStatus::wip: return "wip";
    case ProgramStatus::tbd: return "todo";
    case ProgramStatus::unk: return "unknown";
    default: assert(!"Should not get here");
  }
  throw std::logic_error("RichelBilderbeek::ProgramStatusToStr");
}

std::string ribi::ProgramStatusVersion::GetVersion() noexcept
{
  return "1.0";
}

std::vector<std::string> ribi::ProgramStatusVersion::GetVersionHistory() noexcept
{
  return {
    "2012-02-19: Version 1.0: initial version"
  };
}

std::ostream& ribi::operator<<(std::ostream& os, const ProgramStatus c)
{
  os << ProgramStatusToStr(c);
  return os;
}

 

 

 

 

 

./CppRichelBilderbeekProgram/richelbilderbeekprogramtype.h

 

//---------------------------------------------------------------------------
/*
RichelBilderbeek::ProgramType, enum for a program by Richel Bilderbeek
Copyright (C 2013-2015 Richel Bilderbeek

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program.If not, see <http://www.gnu.org/licenses/>.
*/
//---------------------------------------------------------------------------
//From http://www.richelbilderbeek.nl/ProjectRichelBilderbeek.htm
//---------------------------------------------------------------------------
#ifndef RIBI_RICHELBILDERBEEKPROGRAMTYPE_H
#define RIBI_RICHELBILDERBEEKPROGRAMTYPE_H

#include <vector>

namespace ribi {

///ProgramTypes works with ProgramType
enum class ProgramType
{
  athleticLandVcl,
  asciiArter,
  asciiArterVcl,
  barbaImage,
  beerWanter,
  beerWanterVcl,
  bochum,
  boenken,
  boenkenVcl,
  brainweaver,
  bristol,
  caesarCipher,
  chrisWiley,
  codeToHtml,
  connectThree,
  corridor,
  createGlossary,
  createQtProjectZipFile,
  crossPoll,
  dasWahreSchlagerfest,
  dasWahreSchlagerfestVcl,
  dotMatrix,
  dotMatrixVcl,
  encranger,
  everythingToPiecesShooter,
  filterOperationer,
  filterOperationerVcl,
  fisherWrighter,
  fryskLeareLieder,
  functionPlotter,
  functionPlotterVcl,
  gaborFilter,
  gaborFilterVcl,
  grayCoder,
  grayCoderVcl,
  gtst,
  histogramEqualizationer,
  histogramEqualizationerVcl,
  hometrainer,
  hometrainerVcl,
  imageRotater,
  imageRotaterClx,
  imageRotaterVcl,
  k3OpEenRij,
  k3OpEenRijVcl,
  kalmanFilterer,
  keySender,
  knokfighterVcl,
  kTouchLectureCreator,
  lambdaBot,
  learyCircumplex,
  lizardPaperRockScissorsSpock,
  logisticGrowthSimulator,
  loose,
  martianCafeTuinemaTycoon,
  mazeCreator,
  mazeCreatorVcl,
  maziak,
  maziakVcl,
  metZnDrieenVcl,
  midiLessonCreator,
  morpher,
  multiEncranger,
  multiEncrangerVcl,
  muscaDomestica,
  busicTheory,
  mutualismBreakdowner,
  ndsmake,
  paperRockScissors,
  paperRockScissorsVcl,
  paperRockScissorsWithTrait,
  pause,
  perfectElasticCollision,
  picToCode,
  pixelator,
  pixelatorVcl,
  pokeVolleyVcl,
  preDickAdvocaTor,
  primeExpert,
  projectRichelBilderbeek,
  pylos,
  qmakeWatcher,
  quadraticSolver,
  rampalEtienne,
  randomCode,
  randomCodeVcl,
  rasper,
  refrigeratorPuzzleSolver,
  regexTester,
  reversi,
  reversiVcl,
  richelBilderbeekGallery,
  richelbilderbeekNlSitemapGenerator,
  rubiksClock,
  rubiksClockVcl,
  searchAndDestroyChess,
  searchAndDestroyChessVcl,
  secretMessage,
  secretMessageVcl,
  simBrainiac,
  simImmuneResponse,
  simMysteryMachine,
  simplifyNewick,
  simPredatorVcl,
  simStagecraft,
  simTopPredatorPrey,
  soaSim,
  solvePuzzleX,
  spaceHarryVcl,
  staircaseCardCreator ,
  stateObserver,
  stochasticityInspector,
  styleSheetSetter,
  surfacePlotter,
  surfacePlotterVcl,
  tankBattalion,
  testAbout,
  testApproximator,
  testBinaryNewickVector,
  testBouncingBallsWidget,
  testBouncingRectsWidget,
  testBroadcastServer,
  testChess,
  testConceptMap,
  testDial,
  testDrawCanvas,
  testEntrance,
  testExercise,
  testFunctionParser,
  testGnuplotInterface,
  testGraphicsProxyWidget,
  testGravityWidget,
  testGroupWidget,
  testHugeVector,
  testImageCanvas,
  testLazy_init,
  testLed,
  testManyDigitNewick,
  testMultiApproximator,
  testMultiCanvas,
  testMultipleChoiceQuestion,
  testMultiVector,
  testNdsmake,
  testNeuralNet,
  testNewick,
  testNewickVector,
  testOpenQuestion,
  testPlane,
  testPolyFile,
  testPolyFileFromPolygons,
  testPylos,
  testQrcFile,
  testQtArrowItems,
  testQtCreatorProFile,
  testQtHideAndShowDialog,
  testQtKeyboardFriendlyGraphicsView,
  testQtModels,
  testQtOcrWidget,
  testQtRoundedEditRectItem,
  testQtRoundedRectItem,
  testQuestion,
  testReversi,
  testSelectFileDialog,
  testServerPusher,
  testShape,
  testShinyButton,
  testSimpleLinearRegression,
  testStopwatch,
  testTextCanvas,
  testTextPositionWidget,
  testTicTacToe,
  testTimedServerPusher,
  testToggleButton,
  testTriangle,
  testTwoDigitNewick,
  thorVeen,
  thresholdFilterer,
  thresholdFiltererVcl,
  ticTacToe,
  timePoll,
  triangleMeshCreator,
  tronCollection,
  tronCollectionVcl,
  ubuntuOneWatcher,
  valentineCardDecrypter,
  vigenereCipher,
  virtualBastard,
  visualAbc,
  wktToSvg,
  xeNonZero,
  zork,

  n_types //Used for debugging
};

} //~namespace ribi

#endif // RIBI_RICHELBILDERBEEKPROGRAMTYPE_H

 

 

 

 

 

./CppRichelBilderbeekProgram/richelbilderbeekprogramtype.cpp

 

//---------------------------------------------------------------------------
/*
RichelBilderbeek::ProgramType, enum for a program by Richel Bilderbeek
Copyright (C) 2013-2015 Richel Bilderbeek

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program.If not, see <http://www.gnu.org/licenses/>.
*/
//---------------------------------------------------------------------------
//From http://www.richelbilderbeek.nl/CppProjectRichelBilderbeek.htm
//---------------------------------------------------------------------------

 

 

 

 

 

./CppRichelBilderbeekProgram/richelbilderbeekprogramtypes.h

 

#ifndef RIBI_RICHELBILDERBEEKPROGRAMTYPES_H
#define RIBI_RICHELBILDERBEEKPROGRAMTYPES_H

#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Weffc++"
#pragma GCC diagnostic ignored "-Wunused-local-typedefs"
#pragma GCC diagnostic ignored "-Wunused-but-set-parameter"
#include <boost/bimap.hpp>
#include "richelbilderbeekprogramtype.h"
#pragma GCC diagnostic pop

namespace ribi {

struct ProgramTypes
{
  ///Convert a type to its enum name
  ///For example, ProgramType 'x' becomes std::string "x"
  static std::string ProgramTypeToEnumName(const ProgramType t) noexcept;

  ///Convert a type to its screen name
  ///For example, ProgramType 'abcDef' might become std::string "Abc Def"
  static std::string ProgramTypeToScreenName(const ProgramType t) noexcept;

  static ProgramType EnumNameToProgramType(const std::string& s);

  static std::vector<std::string> GetAllEnumNames() noexcept;
  static std::vector<std::string> GetAllScreenNames() noexcept;
  static std::vector<ProgramType> GetAll() noexcept;

  private:
  ///Created by lazy initialization
  static boost::bimap<ProgramType,std::string> m_map_to_enumname;

  ///Created by lazy initialization
  static boost::bimap<ProgramType,std::string> m_map_to_screenname;

  static boost::bimap<ProgramType,std::string> CreateEnumNameMap();
  static boost::bimap<ProgramType,std::string> CreateScreenNameMap();

  #ifndef NDEBUG
  static void Test() noexcept;
  #endif
};

} //~namespace ribi

#endif // RIBI_RICHELBILDERBEEKPROGRAMTYPES_H

 

 

 

 

 

./CppRichelBilderbeekProgram/richelbilderbeekprogramtypes.cpp

 

//---------------------------------------------------------------------------
/*
RichelBilderbeek::ProgramType, enum for a program by Richel Bilderbeek
Copyright (C) 2013-2015 Richel Bilderbeek

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program.If not, see <http://www.gnu.org/licenses/>.
*/
//---------------------------------------------------------------------------
//From http://www.richelbilderbeek.nl/CppProjectRichelBilderbeek.htm
//---------------------------------------------------------------------------
#include "richelbilderbeekprogramtypes.h"

#include "richelbilderbeekprogramtype.h"

#include <cassert>

#include "testtimer.h"
#include "trace.h"

//Lazy initializion
boost::bimap<ribi::ProgramType,std::string> ribi::ProgramTypes::m_map_to_enumname {};
//Lazy initializion
boost::bimap<ribi::ProgramType,std::string> ribi::ProgramTypes::m_map_to_screenname {};

boost::bimap<ribi::ProgramType,std::string> ribi::ProgramTypes::CreateEnumNameMap()
{
  #ifndef NDEBUG
  Test();
  #endif

  boost::bimap<ProgramType,std::string> m;
  typedef boost::bimap<ProgramType,std::string>::value_type Pair;
  ///Generated with Gnumeric:
  /// =CONCATENATE("m.insert(Pair(ProgramType::",A1,",\"",A1,"\"));")
  ///where A1 to Ax contain the programType enum values
  m.insert(Pair(ProgramType::athleticLandVcl,"athleticLandVcl"));
  m.insert(Pair(ProgramType::asciiArter,"asciiArter"));
  m.insert(Pair(ProgramType::asciiArterVcl,"asciiArterVcl"));
  m.insert(Pair(ProgramType::barbaImage,"barbaImage"));
  m.insert(Pair(ProgramType::beerWanter,"beerWanter"));
  m.insert(Pair(ProgramType::beerWanterVcl,"beerWanterVcl"));
  m.insert(Pair(ProgramType::bochum,"bochum"));
  m.insert(Pair(ProgramType::boenken,"boenken"));
  m.insert(Pair(ProgramType::boenkenVcl,"boenkenVcl"));
  m.insert(Pair(ProgramType::brainweaver,"brainweaver"));
  m.insert(Pair(ProgramType::bristol,"bristol"));
  m.insert(Pair(ProgramType::caesarCipher,"caesarCipher"));
  m.insert(Pair(ProgramType::chrisWiley,"chrisWiley"));
  //m.insert(Pair(ProgramType::codeBreaker,"codeBreaker"));
  m.insert(Pair(ProgramType::codeToHtml,"codeToHtml"));
  m.insert(Pair(ProgramType::connectThree,"connectThree"));
  m.insert(Pair(ProgramType::corridor,"corridor"));
  m.insert(Pair(ProgramType::createGlossary,"createGlossary"));
  m.insert(Pair(ProgramType::createQtProjectZipFile,"createQtProjectZipFile"));
  m.insert(Pair(ProgramType::crossPoll,"crossPoll"));
  m.insert(Pair(ProgramType::dasWahreSchlagerfest,"dasWahreSchlagerfest"));
  m.insert(Pair(ProgramType::dasWahreSchlagerfestVcl,"dasWahreSchlagerfestVcl"));
  m.insert(Pair(ProgramType::dotMatrix,"dotMatrix"));
  m.insert(Pair(ProgramType::dotMatrixVcl,"dotMatrixVcl"));
  m.insert(Pair(ProgramType::encranger,"encranger"));
  m.insert(Pair(ProgramType::everythingToPiecesShooter,"everythingToPiecesShooter"));
  m.insert(Pair(ProgramType::filterOperationer,"filterOperationer"));
  m.insert(Pair(ProgramType::filterOperationerVcl,"filterOperationerVcl"));
  m.insert(Pair(ProgramType::fisherWrighter,"fisherWrighter"));
  m.insert(Pair(ProgramType::fryskLeareLieder,"fryskLeareLieder"));
  m.insert(Pair(ProgramType::functionPlotter,"functionPlotter"));
  m.insert(Pair(ProgramType::functionPlotterVcl,"functionPlotterVcl"));
  m.insert(Pair(ProgramType::gaborFilter,"gaborFilter"));
  m.insert(Pair(ProgramType::gaborFilterVcl,"gaborFilterVcl"));
  m.insert(Pair(ProgramType::grayCoder,"grayCoder"));
  m.insert(Pair(ProgramType::grayCoderVcl,"grayCoderVcl"));
  m.insert(Pair(ProgramType::gtst,"gtst"));
  m.insert(Pair(ProgramType::histogramEqualizationer,"histogramEqualizationer"));
  m.insert(Pair(ProgramType::histogramEqualizationerVcl,"histogramEqualizationerVcl"));
  m.insert(Pair(ProgramType::hometrainer,"hometrainer"));
  m.insert(Pair(ProgramType::hometrainerVcl,"hometrainerVcl"));
  m.insert(Pair(ProgramType::imageRotater,"imageRotater"));
  m.insert(Pair(ProgramType::imageRotaterClx,"imageRotaterClx"));
  m.insert(Pair(ProgramType::imageRotaterVcl,"imageRotaterVcl"));
  m.insert(Pair(ProgramType::k3OpEenRij,"k3OpEenRij"));
  m.insert(Pair(ProgramType::k3OpEenRijVcl,"k3OpEenRijVcl"));
  m.insert(Pair(ProgramType::kalmanFilterer,"kalmanFilterer"));
  m.insert(Pair(ProgramType::keySender,"keySender"));
  m.insert(Pair(ProgramType::knokfighterVcl,"knokfighterVcl"));
  m.insert(Pair(ProgramType::kTouchLectureCreator,"kTouchLectureCreator"));
  m.insert(Pair(ProgramType::lambdaBot,"lambdaBot"));
  m.insert(Pair(ProgramType::learyCircumplex,"learyCircumplex"));
  m.insert(Pair(ProgramType::lizardPaperRockScissorsSpock,"lizardPaperRockScissorsSpock"));
  m.insert(Pair(ProgramType::logisticGrowthSimulator,"logisticGrowthSimulator"));
  m.insert(Pair(ProgramType::loose,"loose"));
  m.insert(Pair(ProgramType::martianCafeTuinemaTycoon,"martianCafeTuinemaTycoon"));
  m.insert(Pair(ProgramType::mazeCreator,"mazeCreator"));
  m.insert(Pair(ProgramType::mazeCreatorVcl,"mazeCreatorVcl"));
  m.insert(Pair(ProgramType::maziak,"maziak"));
  m.insert(Pair(ProgramType::maziakVcl,"maziakVcl"));
  //m.insert(Pair(ProgramType::metZnDrieen,"metZnDrieen"));
  m.insert(Pair(ProgramType::metZnDrieenVcl,"metZnDrieenVcl"));
  m.insert(Pair(ProgramType::midiLessonCreator,"midiLessonCreator"));
  m.insert(Pair(ProgramType::morpher,"morpher"));
  m.insert(Pair(ProgramType::multiEncranger,"multiEncranger"));
  m.insert(Pair(ProgramType::multiEncrangerVcl,"multiEncrangerVcl"));
  m.insert(Pair(ProgramType::muscaDomestica,"muscaDomestica"));
  m.insert(Pair(ProgramType::busicTheory,"busicTheory"));
  m.insert(Pair(ProgramType::mutualismBreakdowner,"mutualismBreakdowner"));
  m.insert(Pair(ProgramType::ndsmake,"ndsmake"));
  m.insert(Pair(ProgramType::paperRockScissors,"paperRockScissors"));
  m.insert(Pair(ProgramType::paperRockScissorsWithTrait,"paperRockScissorsWithTrait"));
  m.insert(Pair(ProgramType::paperRockScissorsVcl,"paperRockScissorsVcl"));
  m.insert(Pair(ProgramType::pause,"pause"));
  m.insert(Pair(ProgramType::perfectElasticCollision,"perfectElasticCollision"));
  m.insert(Pair(ProgramType::picToCode,"picToCode"));
  m.insert(Pair(ProgramType::pixelator,"pixelator"));
  m.insert(Pair(ProgramType::pixelatorVcl,"pixelatorVcl"));
  m.insert(Pair(ProgramType::pokeVolleyVcl,"pokeVolleyVcl"));
  m.insert(Pair(ProgramType::preDickAdvocaTor,"preDickAdvocaTor"));
  m.insert(Pair(ProgramType::primeExpert,"primeExpert"));
  m.insert(Pair(ProgramType::projectRichelBilderbeek,"projectRichelBilderbeek"));
  m.insert(Pair(ProgramType::pylos,"pylos"));
  m.insert(Pair(ProgramType::qmakeWatcher,"qmakeWatcher"));
  m.insert(Pair(ProgramType::quadraticSolver,"quadraticSolver"));
  m.insert(Pair(ProgramType::rampalEtienne,"rampalEtienne"));
  m.insert(Pair(ProgramType::randomCode,"randomCode"));
  m.insert(Pair(ProgramType::randomCodeVcl,"randomCodeVcl"));
  m.insert(Pair(ProgramType::rasper,"rasper"));
  m.insert(Pair(ProgramType::refrigeratorPuzzleSolver,"refrigeratorPuzzleSolver"));
  m.insert(Pair(ProgramType::regexTester,"regexTester"));
  m.insert(Pair(ProgramType::reversi,"reversi"));
  m.insert(Pair(ProgramType::reversiVcl,"reversiVcl"));
  m.insert(Pair(ProgramType::richelBilderbeekGallery,"richelBilderbeekGallery"));
  m.insert(Pair(ProgramType::richelbilderbeekNlSitemapGenerator,"richelbilderbeekNlSitemapGenerator"));
  m.insert(Pair(ProgramType::rubiksClock,"rubiksClock"));
  m.insert(Pair(ProgramType::rubiksClockVcl,"rubiksClockVcl"));
  m.insert(Pair(ProgramType::searchAndDestroyChess,"searchAndDestroyChess"));
  m.insert(Pair(ProgramType::searchAndDestroyChessVcl,"searchAndDestroyChessVcl"));
  m.insert(Pair(ProgramType::secretMessage,"secretMessage"));
  m.insert(Pair(ProgramType::secretMessageVcl,"secretMessageVcl"));
  m.insert(Pair(ProgramType::simBrainiac,"simBrainiac"));
  m.insert(Pair(ProgramType::simImmuneResponse,"simImmuneResponse"));
  m.insert(Pair(ProgramType::simMysteryMachine,"simMysteryMachine"));
  m.insert(Pair(ProgramType::simplifyNewick,"simplifyNewick"));
  m.insert(Pair(ProgramType::simPredatorVcl,"simPredatorVcl"));
  m.insert(Pair(ProgramType::simStagecraft,"simStagecraft"));
  m.insert(Pair(ProgramType::simTopPredatorPrey,"simTopPredatorPrey"));
  m.insert(Pair(ProgramType::soaSim,"soaSim"));
  m.insert(Pair(ProgramType::solvePuzzleX,"solvePuzzleX"));
  m.insert(Pair(ProgramType::spaceHarryVcl,"spaceHarryVcl"));
  m.insert(Pair(ProgramType::staircaseCardCreator ,"staircaseCardCreator "));
  m.insert(Pair(ProgramType::stateObserver,"stateObserver"));
  m.insert(Pair(ProgramType::stochasticityInspector,"stochasticityInspector"));
  m.insert(Pair(ProgramType::styleSheetSetter,"styleSheetSetter"));
  m.insert(Pair(ProgramType::surfacePlotter,"surfacePlotter"));
  m.insert(Pair(ProgramType::surfacePlotterVcl,"surfacePlotterVcl"));
  m.insert(Pair(ProgramType::tankBattalion,"tankBattalion"));
  m.insert(Pair(ProgramType::testAbout,"testAbout"));
  m.insert(Pair(ProgramType::testApproximator,"testApproximator"));
  m.insert(Pair(ProgramType::testBinaryNewickVector,"testBinaryNewickVector"));
  m.insert(Pair(ProgramType::testBouncingBallsWidget,"testBouncingBallsWidget"));
  m.insert(Pair(ProgramType::testBouncingRectsWidget,"testBouncingRectsWidget"));
  m.insert(Pair(ProgramType::testBroadcastServer,"testBroadcastServer"));
  m.insert(Pair(ProgramType::testChess,"testChess"));
  m.insert(Pair(ProgramType::testConceptMap,"testConceptMap"));
  m.insert(Pair(ProgramType::testDial,"testDial"));
  m.insert(Pair(ProgramType::testDrawCanvas,"testDrawCanvas"));
  m.insert(Pair(ProgramType::testEntrance,"testEntrance"));
  m.insert(Pair(ProgramType::testExercise,"testExercise"));
  m.insert(Pair(ProgramType::testFunctionParser,"testFunctionParser"));
  m.insert(Pair(ProgramType::testGnuplotInterface,"testGnuplotInterface"));
  m.insert(Pair(ProgramType::testGraphicsProxyWidget,"testGraphicsProxyWidget"));
  m.insert(Pair(ProgramType::testGravityWidget,"testGravityWidget"));
  m.insert(Pair(ProgramType::testGroupWidget,"testGroupWidget"));
  m.insert(Pair(ProgramType::testHugeVector,"testHugeVector"));
  m.insert(Pair(ProgramType::testImageCanvas,"testImageCanvas"));
  m.insert(Pair(ProgramType::testLazy_init,"testLazy_init"));
  m.insert(Pair(ProgramType::testLed,"testLed"));
  m.insert(Pair(ProgramType::testManyDigitNewick,"testManyDigitNewick"));
  m.insert(Pair(ProgramType::testMultiApproximator,"testMultiApproximator"));
  m.insert(Pair(ProgramType::testMultiCanvas,"testMultiCanvas"));
  m.insert(Pair(ProgramType::testMultipleChoiceQuestion,"testMultipleChoiceQuestion"));
  m.insert(Pair(ProgramType::testMultiVector,"testMultiVector"));
  m.insert(Pair(ProgramType::testNdsmake,"testNdsmake"));
  m.insert(Pair(ProgramType::testNeuralNet,"testNeuralNet"));
  m.insert(Pair(ProgramType::testNewick,"testNewick"));
  m.insert(Pair(ProgramType::testNewickVector,"testNewickVector"));
  m.insert(Pair(ProgramType::testOpenQuestion,"testOpenQuestion"));
  m.insert(Pair(ProgramType::testPlane,"testPlane"));
  m.insert(Pair(ProgramType::testPolyFile,"testPolyFile"));
  m.insert(Pair(ProgramType::testPolyFileFromPolygons,"testPolyFileFromPolygons"));
  m.insert(Pair(ProgramType::testPylos,"testPylos"));
  m.insert(Pair(ProgramType::testQrcFile,"testQrcFile"));
  m.insert(Pair(ProgramType::testQtArrowItems,"testQtArrowItems"));
  m.insert(Pair(ProgramType::testQtCreatorProFile,"testQtCreatorProFile"));
  m.insert(Pair(ProgramType::testQtHideAndShowDialog,"testQtHideAndShowDialog"));
  m.insert(Pair(ProgramType::testQtKeyboardFriendlyGraphicsView,"testQtKeyboardFriendlyGraphicsView"));
  m.insert(Pair(ProgramType::testQtModels,"testQtModels"));
  m.insert(Pair(ProgramType::testQtOcrWidget,"testQtOcrWidget"));
  m.insert(Pair(ProgramType::testQtRoundedEditRectItem,"testQtRoundedEditRectItem"));
  m.insert(Pair(ProgramType::testQtRoundedRectItem,"testQtRoundedRectItem"));
  m.insert(Pair(ProgramType::testQtRoundedEditRectItem,"testQtRoundedEditRectItem"));
  m.insert(Pair(ProgramType::testQuestion,"testQuestion"));
  m.insert(Pair(ProgramType::testReversi,"testReversi"));
  m.insert(Pair(ProgramType::testSelectFileDialog,"testSelectFileDialog"));
  m.insert(Pair(ProgramType::testServerPusher,"testServerPusher"));
  m.insert(Pair(ProgramType::testShape,"testShape"));
  m.insert(Pair(ProgramType::testShinyButton,"testShinyButton"));
  m.insert(Pair(ProgramType::testSimpleLinearRegression,"testSimpleLinearRegression"));
  m.insert(Pair(ProgramType::testStopwatch,"testStopwatch"));
  m.insert(Pair(ProgramType::testTextCanvas,"testTextCanvas"));
  m.insert(Pair(ProgramType::testTextPositionWidget,"testTextPositionWidget"));
  m.insert(Pair(ProgramType::testTicTacToe,"testTicTacToe"));
  m.insert(Pair(ProgramType::testTimedServerPusher,"testTimedServerPusher"));
  m.insert(Pair(ProgramType::testToggleButton,"testToggleButton"));
  m.insert(Pair(ProgramType::testTriangle,"testTriangle"));
  m.insert(Pair(ProgramType::testTwoDigitNewick,"testTwoDigitNewick"));
  m.insert(Pair(ProgramType::thorVeen,"thorVeen"));
  m.insert(Pair(ProgramType::thresholdFilterer,"thresholdFilterer"));
  m.insert(Pair(ProgramType::thresholdFiltererVcl,"thresholdFiltererVcl"));
  m.insert(Pair(ProgramType::ticTacToe,"ticTacToe"));
  m.insert(Pair(ProgramType::timePoll,"timePoll"));
  m.insert(Pair(ProgramType::triangleMeshCreator,"triangleMeshCreator"));
  m.insert(Pair(ProgramType::tronCollection,"tronCollection"));
  m.insert(Pair(ProgramType::tronCollectionVcl,"tronCollectionVcl"));
  m.insert(Pair(ProgramType::ubuntuOneWatcher,"ubuntuOneWatcher"));
  m.insert(Pair(ProgramType::valentineCardDecrypter,"valentineCardDecrypter"));
  m.insert(Pair(ProgramType::vigenereCipher,"vigenereCipher"));
  m.insert(Pair(ProgramType::virtualBastard,"virtualBastard"));
  m.insert(Pair(ProgramType::visualAbc,"visualAbc"));
  m.insert(Pair(ProgramType::wktToSvg,"wktToSvg"));
  m.insert(Pair(ProgramType::xeNonZero,"xeNonZero"));
  m.insert(Pair(ProgramType::zork,"zork"));
  assert(m.left.size() == m.right.size());
  #ifndef NDEBUG
  if (static_cast<int>(m.left.size()) != static_cast<int>(ProgramType::n_types))
  {
    TRACE(m.left.size());
    TRACE(static_cast<int>(ProgramType::n_types));
    TRACE("Copy the contents of ProgramType (except n_types) to above here");
  }
  #endif
  assert(static_cast<int>(m.left.size()) == static_cast<int>(ProgramType::n_types));
  return m;
}

boost::bimap<ribi::ProgramType,std::string> ribi::ProgramTypes::CreateScreenNameMap()
{
  #ifndef NDEBUG
  Test();
  #endif

  boost::bimap<ProgramType,std::string> m;
  typedef boost::bimap<ProgramType,std::string>::value_type Pair;
  ///Generated with Gnumeric:
  /// =CONCATENATE("m.insert(Pair(ProgramType::",A1,",\"",A1,"\"));")
  ///where A1 to Ax contain the programType enum values
  m.insert(Pair(ProgramType::asciiArter,"AsciiArter"));
  m.insert(Pair(ProgramType::asciiArterVcl,"AsciiArter (VCL)"));
  m.insert(Pair(ProgramType::athleticLandVcl,"Athletic Land (VCL)"));
  m.insert(Pair(ProgramType::barbaImage,"BarbaImage"));
  m.insert(Pair(ProgramType::beerWanter,"BeerWanter"));
  m.insert(Pair(ProgramType::beerWanterVcl,"BeerWanter (VCL)"));
  m.insert(Pair(ProgramType::bochum,"Bochum"));
  m.insert(Pair(ProgramType::boenken,"Boenken"));
  m.insert(Pair(ProgramType::boenkenVcl,"Boenken (VCL)"));
  m.insert(Pair(ProgramType::brainweaver,"Brainweaver"));
  m.insert(Pair(ProgramType::bristol,"Bristol"));
  m.insert(Pair(ProgramType::caesarCipher,"CaesarCipher"));
  m.insert(Pair(ProgramType::chrisWiley,"Chris Wiley"));
  //m.insert(Pair(ProgramType::codeBreaker,"CodeBreaker"));
  m.insert(Pair(ProgramType::codeToHtml,"CodeToHtml"));
  m.insert(Pair(ProgramType::connectThree,"ConnectThree"));
  m.insert(Pair(ProgramType::corridor,"Corridor"));
  m.insert(Pair(ProgramType::createGlossary,"CreateGlossary"));
  m.insert(Pair(ProgramType::createQtProjectZipFile,"CreateQtProjectZipFile"));
  m.insert(Pair(ProgramType::crossPoll,"CrossPoll"));
  m.insert(Pair(ProgramType::dasWahreSchlagerfest,"Das Wahre Schlagerfest"));
  m.insert(Pair(ProgramType::dasWahreSchlagerfestVcl,"Das Wahre Schlagerfest (VCL)"));
  m.insert(Pair(ProgramType::dotMatrix,"DotMatrix"));
  m.insert(Pair(ProgramType::dotMatrixVcl,"DotMatrix (VCL)"));
  m.insert(Pair(ProgramType::encranger,"Encranger"));
  m.insert(Pair(ProgramType::everythingToPiecesShooter,"EverythingToPiecesShooter"));
  m.insert(Pair(ProgramType::filterOperationer,"FilterOperationer"));
  m.insert(Pair(ProgramType::filterOperationerVcl,"FilterOperationer (VCL)"));
  m.insert(Pair(ProgramType::fisherWrighter,"FisherWrighter"));
  m.insert(Pair(ProgramType::fryskLeareLieder,"Frysk Leare Lieder"));
  m.insert(Pair(ProgramType::functionPlotter,"FunctionPlotter"));
  m.insert(Pair(ProgramType::functionPlotterVcl,"FunctionPlotter (VCL)"));
  m.insert(Pair(ProgramType::gaborFilter,"GaborFilter"));
  m.insert(Pair(ProgramType::gaborFilterVcl,"GaborFilter (VCL)"));
  m.insert(Pair(ProgramType::grayCoder,"GrayCoder"));
  m.insert(Pair(ProgramType::grayCoderVcl,"GrayCoder (VCL)"));
  m.insert(Pair(ProgramType::gtst,"GTST"));
  m.insert(Pair(ProgramType::histogramEqualizationer,"HistogramEqualizationer"));
  m.insert(Pair(ProgramType::histogramEqualizationerVcl,"HistogramEqualizationer (VCL)"));
  m.insert(Pair(ProgramType::hometrainer,"Hometrainer"));
  m.insert(Pair(ProgramType::hometrainerVcl,"Hometrainer (VCL)"));
  m.insert(Pair(ProgramType::imageRotater,"ImageRotater"));
  m.insert(Pair(ProgramType::imageRotaterClx,"ImageRotater (CLX)"));
  m.insert(Pair(ProgramType::imageRotaterVcl,"ImageRotater (VCL)"));
  m.insert(Pair(ProgramType::k3OpEenRij,"K3 Op Een Rij"));
  m.insert(Pair(ProgramType::k3OpEenRijVcl,"K3 Op Een Rij (VCL)"));
  m.insert(Pair(ProgramType::kalmanFilterer,"KalmanFilterer"));
  m.insert(Pair(ProgramType::keySender,"KeySender"));
  m.insert(Pair(ProgramType::knokfighterVcl,"KnokfighterVcl"));
  m.insert(Pair(ProgramType::kTouchLectureCreator,"KTouch Lecture Creator"));
  m.insert(Pair(ProgramType::lambdaBot,"LambdaBot"));
  m.insert(Pair(ProgramType::learyCircumplex,"LearyCircumplex"));
  m.insert(Pair(ProgramType::lizardPaperRockScissorsSpock,"LizardPaperRockScissorsSpock"));
  m.insert(Pair(ProgramType::logisticGrowthSimulator,"LogisticGrowthSimulator"));
  m.insert(Pair(ProgramType::loose,"Loose"));
  m.insert(Pair(ProgramType::martianCafeTuinemaTycoon,"MartianCafeTuinemaTycoon"));
  m.insert(Pair(ProgramType::mazeCreator,"MazeCreator"));
  m.insert(Pair(ProgramType::mazeCreatorVcl,"MazeCreator (VCL)"));
  m.insert(Pair(ProgramType::maziak,"Maziak"));
  m.insert(Pair(ProgramType::maziakVcl,"Maziak (VCL)"));
  m.insert(Pair(ProgramType::metZnDrieenVcl,"Met Z'n Drieen (VCL)"));
  m.insert(Pair(ProgramType::midiLessonCreator,"MIDI Lesson Creator"));
  m.insert(Pair(ProgramType::morpher,"Morpher"));
  m.insert(Pair(ProgramType::multiEncranger,"MultiEncranger"));
  m.insert(Pair(ProgramType::multiEncrangerVcl,"MultiEncranger (VCL)"));
  m.insert(Pair(ProgramType::muscaDomestica,"MuscaDomestica"));
  m.insert(Pair(ProgramType::busicTheory,"MusicTheory"));
  m.insert(Pair(ProgramType::mutualismBreakdowner,"MutualismBreakdowner"));
  m.insert(Pair(ProgramType::ndsmake,"ndsmake"));
  m.insert(Pair(ProgramType::paperRockScissors,"PaperRockScissors"));
  m.insert(Pair(ProgramType::paperRockScissorsVcl,"PaperRockScissors (VCL)"));
  m.insert(Pair(ProgramType::paperRockScissorsWithTrait,"PaperRockScissorsWithTrait"));
  m.insert(Pair(ProgramType::pause,"Pause"));
  m.insert(Pair(ProgramType::perfectElasticCollision,"PerfectElasticCollision"));
  m.insert(Pair(ProgramType::picToCode,"PicToCode"));
  m.insert(Pair(ProgramType::pixelator,"Pixelator"));
  m.insert(Pair(ProgramType::pixelatorVcl,"Pixelator (VCL)"));
  m.insert(Pair(ProgramType::pokeVolleyVcl,"PokeVolley (VCL)"));
  m.insert(Pair(ProgramType::preDickAdvocaTor,"PreDickAdvocaTor"));
  m.insert(Pair(ProgramType::primeExpert,"PrimeExpert"));
  m.insert(Pair(ProgramType::projectRichelBilderbeek,"ProjectRichelBilderbeek"));
  m.insert(Pair(ProgramType::pylos,"Pylos"));
  m.insert(Pair(ProgramType::qmakeWatcher,"qmake Watcher"));
  m.insert(Pair(ProgramType::quadraticSolver,"QuadraticSolver"));
  m.insert(Pair(ProgramType::rampalEtienne,"RampalEtienne"));
  m.insert(Pair(ProgramType::randomCode,"RandomCode"));
  m.insert(Pair(ProgramType::randomCodeVcl,"RandomCode (VCL)"));
  m.insert(Pair(ProgramType::rasper,"Rasper"));
  m.insert(Pair(ProgramType::refrigeratorPuzzleSolver,"RefrigeratorPuzzleSolver"));
  m.insert(Pair(ProgramType::regexTester,"RegexTester"));
  m.insert(Pair(ProgramType::reversi,"Reversi"));
  m.insert(Pair(ProgramType::reversiVcl,"Reversi (VCL)"));
  m.insert(Pair(ProgramType::richelBilderbeekGallery,"RichelBilderbeekGallery"));
  m.insert(Pair(ProgramType::richelbilderbeekNlSitemapGenerator,"RichelbilderbeekNlSitemapGenerator"));
  m.insert(Pair(ProgramType::rubiksClock,"Rubik's Clock"));
  m.insert(Pair(ProgramType::rubiksClockVcl,"Rubik's Clock (VCL)"));
  m.insert(Pair(ProgramType::searchAndDestroyChess,"SearchAndDestroyChess"));
  m.insert(Pair(ProgramType::searchAndDestroyChessVcl,"SearchAndDestroyChess (VCL)"));
  m.insert(Pair(ProgramType::secretMessage,"SecretMessage"));
  m.insert(Pair(ProgramType::secretMessageVcl,"SecretMessage (VCL)"));
  m.insert(Pair(ProgramType::simBrainiac,"SimBrainiac"));
  m.insert(Pair(ProgramType::simImmuneResponse,"SimImmuneResponse"));
  m.insert(Pair(ProgramType::simMysteryMachine,"SimMysteryMachine"));
  m.insert(Pair(ProgramType::simplifyNewick,"SimplifyNewick"));
  m.insert(Pair(ProgramType::simPredatorVcl,"SimPredator (VCL)"));
  m.insert(Pair(ProgramType::simStagecraft,"SimStagecraft"));
  m.insert(Pair(ProgramType::simTopPredatorPrey,"SimTopPredatorPrey"));
  m.insert(Pair(ProgramType::soaSim,"SoaSim"));
  m.insert(Pair(ProgramType::solvePuzzleX,"SolvePuzzleX"));
  m.insert(Pair(ProgramType::spaceHarryVcl,"SpaceHarry (VCL)"));
  m.insert(Pair(ProgramType::staircaseCardCreator ,"StaircaseCardCreator"));
  m.insert(Pair(ProgramType::stateObserver,"StateObserver"));
  m.insert(Pair(ProgramType::stochasticityInspector,"StochasticityInspector"));
  m.insert(Pair(ProgramType::styleSheetSetter,"StyleSheetSetter"));
  m.insert(Pair(ProgramType::surfacePlotter,"SurfacePlotter"));
  m.insert(Pair(ProgramType::surfacePlotterVcl,"SurfacePlotter (VCL)"));
  m.insert(Pair(ProgramType::tankBattalion,"Tank Battalion"));
  m.insert(Pair(ProgramType::testAbout,"Test About"));
  m.insert(Pair(ProgramType::testApproximator,"Test Approximator"));
  m.insert(Pair(ProgramType::testBinaryNewickVector,"Test BinaryNewickVector"));
  m.insert(Pair(ProgramType::testBouncingBallsWidget,"Test BouncingBallsWidget"));
  m.insert(Pair(ProgramType::testBouncingRectsWidget,"Test BouncingRectsWidget"));
  m.insert(Pair(ProgramType::testBroadcastServer,"Test BroadcastServer"));
  m.insert(Pair(ProgramType::testChess,"Test Chess"));
  m.insert(Pair(ProgramType::testConceptMap,"Test ConceptMap"));
  m.insert(Pair(ProgramType::testDial,"Test Dial"));
  m.insert(Pair(ProgramType::testDrawCanvas,"Test DrawCanvas"));
  m.insert(Pair(ProgramType::testEntrance,"Test Entrance"));
  m.insert(Pair(ProgramType::testExercise,"Test Exercise"));
  m.insert(Pair(ProgramType::testFunctionParser,"Test FunctionParser"));
  m.insert(Pair(ProgramType::testGnuplotInterface,"Test GnuplotInterface"));
  m.insert(Pair(ProgramType::testGraphicsProxyWidget,"Test GraphicsProxyWidget"));
  m.insert(Pair(ProgramType::testGravityWidget,"Test GravityWidget"));
  m.insert(Pair(ProgramType::testGroupWidget,"Test GroupWidget"));
  m.insert(Pair(ProgramType::testHugeVector,"Test HugeVector"));
  m.insert(Pair(ProgramType::testImageCanvas,"Test ImageCanvas"));
  m.insert(Pair(ProgramType::testLazy_init,"Test Lazy_init"));
  m.insert(Pair(ProgramType::testLed,"Test Led"));
  m.insert(Pair(ProgramType::testManyDigitNewick,"Test ManyDigitNewick"));
  m.insert(Pair(ProgramType::testMultiApproximator,"Test MultiApproximator"));
  m.insert(Pair(ProgramType::testMultiCanvas,"Test MultiCanvas"));
  m.insert(Pair(ProgramType::testMultipleChoiceQuestion,"Test MultipleChoiceQuestion"));
  m.insert(Pair(ProgramType::testMultiVector,"Test MultiVector"));
  m.insert(Pair(ProgramType::testNdsmake,"Test ndsmake"));
  m.insert(Pair(ProgramType::testNeuralNet,"Test NeuralNet"));
  m.insert(Pair(ProgramType::testNewick,"Test Newick"));
  m.insert(Pair(ProgramType::testNewickVector,"Test NewickVector"));
  m.insert(Pair(ProgramType::testOpenQuestion,"Test OpenQuestion"));
  m.insert(Pair(ProgramType::testPlane,"Test Plane"));
  m.insert(Pair(ProgramType::testPolyFile,"Test PolyFile"));
  m.insert(Pair(ProgramType::testPolyFileFromPolygons,"Test PolyFileFromPolygons"));
  m.insert(Pair(ProgramType::testPylos,"Test Pylos"));
  m.insert(Pair(ProgramType::testQrcFile,"Test QrcFile"));
  m.insert(Pair(ProgramType::testQtArrowItems,"Test QtArrowItems"));
  m.insert(Pair(ProgramType::testQtCreatorProFile,"Test QtCreatorProFile"));
  m.insert(Pair(ProgramType::testQtHideAndShowDialog,"Test QtHideAndShowDialog"));
  m.insert(Pair(ProgramType::testQtKeyboardFriendlyGraphicsView,"Test QtKeyboardFriendlyGraphicsView"));
  m.insert(Pair(ProgramType::testQtModels,"Test QtModels"));
  m.insert(Pair(ProgramType::testQtOcrWidget,"Test QtOcrWidget"));
  m.insert(Pair(ProgramType::testQtRoundedEditRectItem,"Test QtRoundedEditRectItem"));
  m.insert(Pair(ProgramType::testQtRoundedRectItem,"Test QtRoundedRectItem"));
  m.insert(Pair(ProgramType::testQtRoundedEditRectItem,"Test QtRoundedEditRectItem"));
  m.insert(Pair(ProgramType::testQuestion,"Test Question"));
  m.insert(Pair(ProgramType::testReversi,"Test Reversi"));
  m.insert(Pair(ProgramType::testSelectFileDialog,"Test SelectFileDialog"));
  m.insert(Pair(ProgramType::testServerPusher,"Test ServerPusher"));
  m.insert(Pair(ProgramType::testShape,"Test Shape"));
  m.insert(Pair(ProgramType::testShinyButton,"Test ShinyButton"));
  m.insert(Pair(ProgramType::testSimpleLinearRegression,"Test SimpleLinearRegression"));
  m.insert(Pair(ProgramType::testStopwatch,"Test Stopwatch"));
  m.insert(Pair(ProgramType::testTextCanvas,"Test TextCanvas"));
  m.insert(Pair(ProgramType::testTextPositionWidget,"Test TextPositionWidget"));
  m.insert(Pair(ProgramType::testTicTacToe,"Test TicTacToe"));
  m.insert(Pair(ProgramType::testTimedServerPusher,"Test TimedServerPusher"));
  m.insert(Pair(ProgramType::testToggleButton,"Test ToggleButton"));
  m.insert(Pair(ProgramType::testTriangle,"Test Triangle"));
  m.insert(Pair(ProgramType::testTwoDigitNewick,"Test TwoDigitNewick"));
  m.insert(Pair(ProgramType::thorVeen,"Thor Veen"));
  m.insert(Pair(ProgramType::thresholdFilterer,"ThresholdFilterer"));
  m.insert(Pair(ProgramType::thresholdFiltererVcl,"ThresholdFilterer (VCL)"));
  m.insert(Pair(ProgramType::ticTacToe,"TicTacToe"));
  m.insert(Pair(ProgramType::timePoll,"TimePoll"));
  m.insert(Pair(ProgramType::triangleMeshCreator,"TriangleMeshCreator"));
  m.insert(Pair(ProgramType::tronCollection,"Tron Collection"));
  m.insert(Pair(ProgramType::tronCollectionVcl,"Tron Collection (VCL)"));
  m.insert(Pair(ProgramType::ubuntuOneWatcher,"UbuntuOne Watcher"));
  m.insert(Pair(ProgramType::valentineCardDecrypter,"ValentineCardDecrypter"));
  m.insert(Pair(ProgramType::vigenereCipher,"VigenereCipher"));
  m.insert(Pair(ProgramType::virtualBastard,"Virtual Bastard"));
  m.insert(Pair(ProgramType::visualAbc,"Visual ABC"));
  m.insert(Pair(ProgramType::wktToSvg,"WktToSvg"));
  m.insert(Pair(ProgramType::xeNonZero,"XeNonZero"));
  m.insert(Pair(ProgramType::zork,"Zork"));
  assert(m.left.size() == m.right.size());
  #ifndef NDEBUG
  if (static_cast<int>(m.left.size()) != static_cast<int>(ProgramType::n_types))
  {
    TRACE(m.left.size());
    TRACE(static_cast<int>(ProgramType::n_types));
    TRACE("Copy the contents of ProgramType (except n_types) to above here");
  }
  #endif
  assert(static_cast<int>(m.left.size()) == static_cast<int>(ProgramType::n_types));
  return m;
}

std::vector<std::string> ribi::ProgramTypes::GetAllEnumNames() noexcept
{
  if (m_map_to_enumname.right.empty()) { m_map_to_enumname = CreateEnumNameMap(); }
  assert(!m_map_to_enumname.right.empty());

  //Copy right map of bimap
  std::vector<std::string> v;
  for (const auto& t: m_map_to_enumname.right) { v.push_back(t.first); }
  assert(!v.empty());
  assert(m_map_to_enumname.right.size() == v.size());
  return v;
}

std::vector<std::string> ribi::ProgramTypes::GetAllScreenNames() noexcept
{
  if (m_map_to_screenname.right.empty()) { m_map_to_screenname = CreateScreenNameMap(); }
  assert(!m_map_to_screenname.right.empty());

  //Copy right map of bimap
  std::vector<std::string> v;
  for (const auto& t: m_map_to_screenname.right) { v.push_back(t.first); }
  assert(!v.empty());
  assert(m_map_to_screenname.right.size() == v.size());
  return v;
}

std::vector<ribi::ProgramType> ribi::ProgramTypes::GetAll() noexcept
{
  if (m_map_to_enumname.left.empty()) { m_map_to_enumname = CreateEnumNameMap(); }
  assert(!m_map_to_enumname.left.empty());

  //Copy left map of bimap
  std::vector<ProgramType> v;
  for (const auto& t: m_map_to_enumname.left) { v.push_back(t.first); }
  assert(!v.empty());
  assert(m_map_to_enumname.left.size() == v.size());
  return v;
}

std::string ribi::ProgramTypes::ProgramTypeToEnumName(const ProgramType t) noexcept
{
  if (m_map_to_enumname.left.empty()) { m_map_to_enumname = CreateEnumNameMap(); }
  assert(m_map_to_enumname.left.find(t) != m_map_to_enumname.left.end());
  return m_map_to_enumname.left.find(t)->second;
}

std::string ribi::ProgramTypes::ProgramTypeToScreenName(const ProgramType t) noexcept
{
  if (m_map_to_screenname.left.empty()) { m_map_to_screenname = CreateEnumNameMap(); }
  assert(m_map_to_screenname.left.find(t) != m_map_to_screenname.left.end());
  return m_map_to_screenname.left.find(t)->second;
}

#ifndef NDEBUG
void ribi::ProgramTypes::Test() noexcept
{
  {
    static bool is_tested{false};
    if (is_tested) return;
    is_tested = true;
  }
  const TestTimer test_timer(__func__,__FILE__,1.0);
  assert(GetAll().size() == GetAllEnumNames().size());
  assert(GetAll().size() == GetAllScreenNames().size());
}
#endif

 

 

 

 

 

Go back to Richel Bilderbeek's C++ page.

Go back to Richel Bilderbeek's homepage.

 

Valid XHTML 1.0 Strict

This page has been created by the tool CodeToHtml