#pragma once #include #include #include #include #include #include #include "common.h" class UserSettings { public: UserSettings(); void parseCmdArgs(const std::vector& arg_list); void showHelp(); // generic options const std::string getInputPath() const; FileType getFileType() const; CliOutputMode getCliOutputMode() const; // toggles bool isShowAsciiRepresentation() const; bool isShowOffset() const; // parameters const sOptional& getByteGroupingSize() const; const sOptional& getReadOffset() const; const sOptional& getReadSize() const; private: const std::string kModuleName = "UserSettings"; struct sCmdArgs { sCmdArgs() {} sOptional input_path; sOptional file_type; sOptional show_ascii; sOptional show_offset; sOptional verbose; sOptional byte_grouping; sOptional read_offset; sOptional read_size; }; std::string mInputPath; FileType mFileType; CliOutputMode mOutputMode; bool mShowAsciiRepresentation; bool mShowOffset; sOptional mByteGroupingSize; sOptional mReadOffset; sOptional mReadSize; void populateCmdArgs(const std::vector& arg_list, sCmdArgs& cmd_args); void populateUserSettings(sCmdArgs& args); FileType getFileTypeFromString(const std::string& type_str); };