#pragma once // command line utility // // created on 2023-02-10 // #include "referer.h" #include #include #define CONSOLE_COLOR_NONE "\033[0m" #define CONSOLE_COLOR_FRONT_BLACK "\033[0;30m" #define CONSOLE_COLOR_FRONT_DARK_GRAY "\033[1;30m" #define CONSOLE_COLOR_FRONT_RED "\033[0;31m" #define CONSOLE_COLOR_FRONT_LIGHT_RED "\033[1;31m" #define CONSOLE_COLOR_FRONT_GREEN "\033[0;32m" #define CONSOLE_COLOR_FRONT_LIGHT_GREEN "\033[1;32m" #define CONSOLE_COLOR_FRONT_BROWN "\033[0;33m" #define CONSOLE_COLOR_FRONT_YELLOW "\033[1;33m" #define CONSOLE_COLOR_FRONT_BLUE "\033[0;34m" #define CONSOLE_COLOR_FRONT_LIGHT_BLUE "\033[1;34m" #define CONSOLE_COLOR_FRONT_PURPLE "\033[0;35m" #define CONSOLE_COLOR_FRONT_LIGHT_PURPLE "\033[1;35m" #define CONSOLE_COLOR_FRONT_CYAN "\033[0;36m" #define CONSOLE_COLOR_FRONT_LIGHT_CYAN "\033[1;36m" #define CONSOLE_COLOR_FRONT_LIGHT_GRAY "\033[0;37m" #define CONSOLE_COLOR_FRONT_WHITE "\033[1;37m" #define CONSOLE_COLOR_BACK_BLACK "\033[0;40m" #define CONSOLE_COLOR_BACK_DARK_GRAY "\033[1;40m" #define CONSOLE_COLOR_BACK_RED "\033[0;41m" #define CONSOLE_COLOR_BACK_LIGHT_RED "\033[1;41m" #define CONSOLE_COLOR_BACK_GREEN "\033[0;42m" #define CONSOLE_COLOR_BACK_LIGHT_GREEN "\033[1;42m" #define CONSOLE_COLOR_BACK_BROWN "\033[0;43m" #define CONSOLE_COLOR_BACK_YELLOW "\033[1;43m" #define CONSOLE_COLOR_BACK_BLUE "\033[0;44m" #define CONSOLE_COLOR_BACK_LIGHT_BLUE "\033[1;44m" #define CONSOLE_COLOR_BACK_PURPLE "\033[0;45m" #define CONSOLE_COLOR_BACK_LIGHT_PURPLE "\033[1;45m" #define CONSOLE_COLOR_BACK_CYAN "\033[0;46m" #define CONSOLE_COLOR_BACK_LIGHT_CYAN "\033[1;46m" #define CONSOLE_COLOR_BACK_LIGHT_GRAY "\033[0;47m" #define CONSOLE_COLOR_BACK_WHITE "\033[1;47m" namespace console { // special effects: // \033[0m close all attributes // \033[1m set high-light // \033[4m underline // \033[5m blink // \033[7m reverse(反显) // \033[8m blanking(消隐) // \033[30m -- \033[37m set foreground color // \033[40m -- \033[47m set background color // // cursor position: // \033[nA move up n lines // \033[nB move down n lines // \033[nC move right n cols // \033[nD move left n cols // \033[y;xH set cursor position // \033[2J clear screen // \033[K clear the line after cursor position // \033[s save cursor position // \033[u restore cursor position // \033[?25l hide cursor // \033[?25h show cursor }; class cmd_line : public refer { std::string cmd_line_; std::vector arguments_; protected: cmd_line(); ~cmd_line(); public: static cmd_line* from_console(const char* tips); static cmd_line* from_command_line(const char* cmdl); public: size_t count(void); const char* parameter(int ind); const char* parameter(const char* key); };