#ifndef MODULAR_ADAPTER_HPP #define MODULAR_ADAPTER_HPP #include #include #include /** * @brief Parsed command-line arguments. */ struct CommandLineArgs { std::string config_path; ///< Path to config file (--config ). bool show_help = false; ///< Whether --help was passed. bool show_version = false; ///< Whether --version was passed. bool has_errors = false; ///< Whether there were parsing errors. std::string error_msg; ///< Error message if has_errors is true. }; /** * @brief Adapter for parsing CLI arguments and dispatching commands. * * Supports: * --config Load configuration from file * --help Display help message * --version Display application version */ class CommandLineAdapter { public: /** * @brief Construct the adapter with argc/argv. * @param argc Argument count (from main). * @param argv Argument vector (from main). */ CommandLineAdapter(int argc, char* argv[]); /** * @brief Parse the stored arguments. * @return A CommandLineArgs struct containing parsed values. */ CommandLineArgs parse(); /** * @brief Print the help message to stdout. */ static void printHelp(); /** * @brief Print the version string to stdout. */ static void printVersion(); private: int argc_; char** argv_; /** * @brief Get argument at index i, or empty string if out of range. */ std::string argAt(int i) const; }; #endif // MODULAR_ADAPTER_HPP