argParser.h 1.66 KB
#ifndef ARG_PARSER_H
#define ARG_PARSER_H

#include <stdio.h>
#include <string.h>
#include <iostream>
#include <stdlib.h>
#include <unistd.h>
#include <getopt.h>
#include "logging.h"
#include <lavidlib/base/RuntimeException.h>

#define MAX_SIZE_PATH 256

using namespace std;
using namespace util;

class ArgParser {
public:
	ArgParser();
	~ArgParser();
	void readArgs(char** argv, int argc);

	int getService();
	int getLanguage();
	int getPosition();
	int getSize();
	int getBackground();
	int getMode();
	int getOption();

	string getInput();
	string getInputSRT();
	string getId();
	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;

	void returnErr(const string& option);
	Languages  languageFromString(const string& language);
	Positions  positionFromString(const string& position);
	Resolution resolutionFromString(const string& resolution);
	Background backgroundFromString(const string& backg);
	Mode executionModeFromString(const string& mode);
	util::logLevel logFromString(const string& level);
};

#endif /* ARG_PARSER_H */