From 7c83b816235ca3007bd4f35757e1588cf0f5230f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Villemot?= Date: Mon, 11 Dec 2023 17:27:17 +0100 Subject: [PATCH] Turn some configuration-related classes into nested classes --- src/Configuration.cc | 23 ++++----- src/Configuration.hh | 120 +++++++++++++++++++------------------------ 2 files changed, 64 insertions(+), 79 deletions(-) diff --git a/src/Configuration.cc b/src/Configuration.cc index b03b9820..94aa5049 100644 --- a/src/Configuration.cc +++ b/src/Configuration.cc @@ -20,7 +20,6 @@ #include #include #include -#include #include "Configuration.hh" @@ -31,9 +30,7 @@ #include #pragma GCC diagnostic pop -using namespace std; - -Hook::Hook(string global_init_file_arg) +Configuration::Hook::Hook(string global_init_file_arg) { if (global_init_file_arg.empty()) { @@ -43,7 +40,7 @@ Hook::Hook(string global_init_file_arg) hooks["global_init_file"] = move(global_init_file_arg); } -Path::Path(vector includepath_arg) +Configuration::Path::Path(vector includepath_arg) { if (includepath_arg.empty()) { @@ -53,12 +50,13 @@ Path::Path(vector includepath_arg) paths["include"] = move(includepath_arg); } -FollowerNode::FollowerNode(string computerName_arg, string port_arg, int minCpuNbr_arg, - int maxCpuNbr_arg, string userName_arg, string password_arg, - string remoteDrive_arg, string remoteDirectory_arg, - string programPath_arg, string programConfig_arg, - string matlabOctavePath_arg, bool singleCompThread_arg, - int numberOfThreadsPerJob_arg, string operatingSystem_arg) : +Configuration::FollowerNode::FollowerNode(string computerName_arg, string port_arg, + int minCpuNbr_arg, int maxCpuNbr_arg, string userName_arg, + string password_arg, string remoteDrive_arg, + string remoteDirectory_arg, string programPath_arg, + string programConfig_arg, string matlabOctavePath_arg, + bool singleCompThread_arg, int numberOfThreadsPerJob_arg, + string operatingSystem_arg) : computerName {move(computerName_arg)}, port {move(port_arg)}, minCpuNbr {minCpuNbr_arg}, @@ -89,7 +87,8 @@ FollowerNode::FollowerNode(string computerName_arg, string port_arg, int minCpuN } } -Cluster::Cluster(member_nodes_t member_nodes_arg) : member_nodes {move(member_nodes_arg)} +Configuration::Cluster::Cluster(member_nodes_t member_nodes_arg) : + member_nodes {move(member_nodes_arg)} { if (member_nodes.empty()) { diff --git a/src/Configuration.hh b/src/Configuration.hh index 8e8a59e4..5b6014c2 100644 --- a/src/Configuration.hh +++ b/src/Configuration.hh @@ -28,73 +28,6 @@ using namespace std; -using member_nodes_t = map; - -class Hook -{ -public: - explicit Hook(string global_init_file_arg); - -private: - map hooks; - -public: - [[nodiscard]] map - get_hooks() const - { - return hooks; - }; -}; - -class Path -{ -public: - explicit Path(vector includepath_arg); - -private: - map> paths; - -public: - [[nodiscard]] map> - get_paths() const - { - return paths; - }; -}; - -class FollowerNode -{ - friend class Configuration; - -public: - FollowerNode(string computerName_arg, string port_arg, int minCpuNbr_arg, int maxCpuNbr_arg, - string userName_arg, string password_arg, string remoteDrive_arg, - string remoteDirectory_arg, string programPath_arg, string programConfig_arg, - string matlabOctavePath_arg, bool singleCompThread_arg, - int numberOfThreadsPerJob_arg, string operatingSystem_arg); - -protected: - const string computerName, port; - int minCpuNbr, maxCpuNbr; - const string userName, password; - const string remoteDrive, remoteDirectory; - const string programPath, programConfig, matlabOctavePath; - const bool singleCompThread; - const int numberOfThreadsPerJob; - const string operatingSystem; -}; - -class Cluster -{ - friend class Configuration; - -public: - explicit Cluster(member_nodes_t member_nodes_arg); - -protected: - member_nodes_t member_nodes; -}; - /* The abstract representation of the configuration. Merges information from the command-line and from the configuration file. */ class Configuration @@ -104,6 +37,59 @@ public: bool parallel_use_psexec_arg, string cluster_name); private: + using member_nodes_t = map; + + class Hook + { + public: + explicit Hook(string global_init_file_arg); + [[nodiscard]] map + get_hooks() const + { + return hooks; + }; + + private: + map hooks; + }; + + class Path + { + public: + explicit Path(vector includepath_arg); + [[nodiscard]] map> + get_paths() const + { + return paths; + }; + + private: + map> paths; + }; + + struct FollowerNode + { + FollowerNode(string computerName_arg, string port_arg, int minCpuNbr_arg, int maxCpuNbr_arg, + string userName_arg, string password_arg, string remoteDrive_arg, + string remoteDirectory_arg, string programPath_arg, string programConfig_arg, + string matlabOctavePath_arg, bool singleCompThread_arg, + int numberOfThreadsPerJob_arg, string operatingSystem_arg); + const string computerName, port; + int minCpuNbr, maxCpuNbr; + const string userName, password; + const string remoteDrive, remoteDirectory; + const string programPath, programConfig, matlabOctavePath; + const bool singleCompThread; + const int numberOfThreadsPerJob; + const string operatingSystem; + }; + + struct Cluster + { + explicit Cluster(member_nodes_t member_nodes_arg); + member_nodes_t member_nodes; + }; + const bool parallel, parallel_test, parallel_follower_open_mode, parallel_use_psexec; const string cluster_name; string firstClusterName;