/** * \file argParser.h * * \author Wesnydy Lima Ribeiro * \date 2015 */ #ifndef ARG_PARSER_H #define ARG_PARSER_H #include #include #include #include #include #include #include "logging.h" #include #define MAX_SIZE_PATH 256 using namespace std; using namespace util; /** \brief Analizador de argumentos de linha de comando. * * \headerfile util/src/include/argParser.h */ class ArgParser { public: /** Construtor */ ArgParser(); /** Destrutor */ ~ArgParser(); /** Analiza os argumentos da linha de comando. * * \param argv Os argumentos. * \param arc O número de argumentos. * \exception RuntimeException Se forem encontrados argumentos inválidos ou na falta de argumentos. */ void readArgs(char** argv, int argc); /** Retorna o serviço requisitado. * * \return O serviço. */ int getService(); /** Retorna a linguagem do arquivo de entrada. * * \return A linguagem do arquivo. */ int getLanguage(); /** Retorna a posição do vídeo de LIBRAS. * * \return A posição do vídeo. */ int getPosition(); /** Retorna o tamanho do vídeo de LIBRAS. * * \return O tamanho do vídeo. */ int getSize(); /** Retorna a transparência do plano de fundo. * * \return O background do vídeo. */ int getBackground(); /** Retorna o modo de execução. * * \return O modo de execução. */ int getMode(); /** Retorna opções extras ativadas. * * \return A opção extra. */ int getOption(); /** Retorna o path arquivo de entrada. * * \return O path do arquivo. */ string getInput(); /** Retorna o path arquivo de legendas. * * \return O path do arquivo de legendas. */ string getInputSRT(); /** Retorna a identificação do cliente. * * \return O ID do cliente. */ string getId(); /** Retorna o nível de log selecionado. * * \return O nível do log. */ util::logLevel getLog(); private: enum Services { _VIDEO_WITH_SRT = 1, _REC_VIDEO, _TEXT, _ONLY_SRT, _REC_AUDIO, _WITHOUT_MIXER, _TESTER , _HELP}; enum Languages { _PORTUGUESE = 1, _GLOSA }; enum Positions { _TOP_LEFT = 1, _TOP_RIGHT, _BOTTOM_RIGHT, _BOTTOM_LEFT }; enum Resolution { _SMALL = 1, _MEDIUM, _LARGE }; enum Background { _OPAQUE, _TRANSPARENT }; enum Options { _NO_MIXER = 1 }; enum Mode { _DEVEL = 1 , _PROD }; struct globalArgs_t { Services service; Languages language; Positions position; Resolution size; Background back; Options mixer; Mode mode; string input; string input_srt; string id; util::logLevel l_level; }globalArgs; /** Exibe erros ocorridos durante a analise dos argumentos. * * \param option A mensagem de erro. */ void returnErr(const string& option); /** Retorna a opção de linguagem a partir de uma string. * * \return A linguagem do arquivo. */ Languages languageFromString(const string& language); /** Retorna a opção de posição a partir de uma string. * * \return A posição do vídeo. */ Positions positionFromString(const string& position); /** Retorna a opção de resolução a partir de uma string. * * \return A resolução do vídeo. */ Resolution resolutionFromString(const string& resolution); /** Retorna a opção de background a partir de uma string. * * \return O background do vídeo. */ Background backgroundFromString(const string& backg); /** Retorna a opção do modo de execução a partir de uma string. * * \return O modo de execução. */ Mode executionModeFromString(const string& mode); /** Retorna o nível de log selecionado. * * \return O nível de log. */ util::logLevel logFromString(const string& level); }; #endif /* ARG_PARSER_H */