Exemplo n.º 1
0
bool CmdLineParser::token_to_fullkeyname(const string& token, string& fullkey) {

	fullkey = "";
	int ctDashes = 0;
	if(starts_with(token, string("--")))
		ctDashes = 2;
	else if(starts_with(token, string("-")))
		ctDashes = 1;

	if(ctDashes == 0)
		return false;

	if(ctDashes == 2) {
		if(m_mapKeySwitch.find(token) == m_mapKeySwitch.end()) {
            vlogerror("Unrecognized key passed %s", token.c_str());
			return false;
		}
		fullkey = token;
	}
	else if(ctDashes == 1) {
		if(m_mapShortcutKeys.find(token) == m_mapShortcutKeys.end()) {
            vlogerror("Unrecognized shortcut key passed %s", token.c_str());
			return false;
		}

		fullkey = m_mapShortcutKeys[token];
	}

	return (fullkey.length() > 0);
}
Exemplo n.º 2
0
bool CmdLineParser::addSwitch(const CmdSwitch& s) {

	CmdSwitch cmd = s;

	if(cmd.desc.length() == 0) {
        vlogerror("No description provided!");
		return false;
	}

	//check input
	if(cmd.key.find("--") != 0 || cmd.key.length() < 3) {
        vlogerror("The input key is invalid. Please start with -- and keep a length >= 3");
		return false;
	}

	if(m_mapKeySwitch.find(cmd.key) != m_mapKeySwitch.end()) {
        vlogerror("This key %s is taken already!", cmd.key.c_str());
		return false;
	}

	if(cmd.shortcut.length() == 0) {

		string temp = "-" + cmd.key[2];

		int i = 3;
		while(m_mapShortcutKeys.find(temp) != m_mapShortcutKeys.end() && (size_t)i < cmd.key.length()) {
			temp = "-" + s.key[i];
			i++;
		}

		cmd.shortcut = temp;
        vloginfo("Automatic shortcut assigned %s to %s", temp.c_str(), cmd.key.c_str());
	}

	if(s.istoggle) {
		cmd.default_value = string("false");
		cmd.value = cmd.default_value;
		cmd.isvalid = true;
	}
	else {
		cmd.value = cmd.default_value;
		cmd.isvalid = false;
	}

	//add
	CmdSwitch* pcmd = new CmdSwitch(cmd);
	m_vSwitches.push_back(pcmd);
	m_mapShortcutKeys[s.shortcut] = cmd.key;
	m_mapKeySwitch[s.key] = pcmd;

	return true;
}
Exemplo n.º 3
0
void CLIB_DECL logerror(const char *format, ...)
{
	va_list arg;
	va_start(arg, format);
	vlogerror(format, arg);
	va_end(arg);
}
Exemplo n.º 4
0
void diablo_hd_device::logprintf(int level, const char* format, ...)
{
	if (level > m_log_level)
		return;
	va_list ap;
	va_start(ap, format);
	vlogerror(format, ap);
	va_end(ap);
}
Exemplo n.º 5
0
void CLIB_DECL logerror(const char *text,...)
{
	va_list arg;

	/* standard vfprintf stuff here */
	va_start(arg, text);
	vlogerror(text, arg);
	va_end(arg);
}
Exemplo n.º 6
0
void CLIB_DECL running_machine::logerror(const char *format, ...)
{
	// process only if there is a target
	if (m_logerror_list.first() != NULL)
	{
		va_list arg;
		va_start(arg, format);
		vlogerror(format, arg);
		va_end(arg);
	}
}
Exemplo n.º 7
0
bool CmdLineParser::setDefaultKey(const char* key) {
	string strKey(key);
	if(!starts_with(strKey, "--"))
		strKey = "--" + strKey;

	if(m_mapKeySwitch.find(strKey) != m_mapKeySwitch.end()) {
		CmdSwitch* pcmd = m_mapKeySwitch[m_strDefaultKey];
		if(pcmd != NULL) {
			if(pcmd->istoggle) {
                vlogerror("Boolean command line options can not be used as default keys");
				return false;
			}
		}

		//set default key
		m_strDefaultKey = strKey;
		return true;
	}
	else
		return false;
}
Exemplo n.º 8
0
int CmdLineParser::parse(int argc, char* argv[]) {

	int i = 0;
	int ctOptions = 0;
	while(i < argc) {
		string key, val;
		bool iskey = false;
		string token = string(argv[i]);

		bool isNextTokenKey = false;
		if(i + 1 < argc) {
			 string peeknext = string(argv[i+1]);
			 if(starts_with(peeknext, "-") || starts_with(peeknext, "--")) {
				 string fullkey;
				 isNextTokenKey = token_to_fullkeyname(peeknext, fullkey);
			 }
		}




		//full-key
		if(starts_with(token, string("--"))) {
			if(m_mapKeySwitch.find(token) == m_mapKeySwitch.end()) {
                vlogerror("Unrecognized key passed %s", token.c_str());
				printHelp();
				return -1;
			}

			key = token;
			iskey = true;
		}
		//shortcut
		else if(starts_with(token, "-")) {
			if(m_mapShortcutKeys.find(token) == m_mapShortcutKeys.end()) {
                vlogerror("Unrecognized shortcut key passed %s", token.c_str());
				printHelp();
				return -1;
			}

			key = m_mapShortcutKeys[token];
			iskey = true;
		}
		//default key, the value for default key is the last argument
		else if(isNextTokenKey == false && m_strDefaultKey.length() > 0 && i == argc - 2) {
			if(m_mapKeySwitch.find(m_strDefaultKey) == m_mapKeySwitch.end()) {
                vlogerror("Unrecognized default key %s", m_strDefaultKey.c_str());
				printHelp();
				return -1;
			}

            vloginfo("Using default key: %s", m_strDefaultKey.c_str());
			key = m_strDefaultKey;
			iskey = true;
		}

		//if iskey and needs param then read it
		if(iskey) {
			ctOptions++;

			if(key == "--help") {
				printHelp();
				return 1;
			}

			//fetch value
			CmdSwitch* pcmd = m_mapKeySwitch[key];

			//read next
			if(pcmd->istoggle) {
				pcmd->value = string("true");
				pcmd->isvalid = true;
			}
			else {
				i++;
				pcmd->value = string(argv[i]);
				pcmd->isvalid = true;
			}

		}

		//next token
		i++;
	}

	//capture real app name
	if(argc > 0) {
		m_appname = string(argv[0]);
	}

	return ctOptions;
}