Changeset - r27333:8eb15d885acd
[Not reviewed]
master
0 1 0
Rubidium - 13 months ago 2023-05-12 18:56:09
rubidium@openttd.org
Codechange: use std::string instead of strecat to build hotkey strings
1 file changed with 21 insertions and 37 deletions:
0 comments (0 inline, 0 general)
src/hotkeys.cpp
Show inline comments
 
@@ -167,53 +167,41 @@ static void ParseHotkeys(Hotkey *hotkey,
 
 * by a '+'.
 
 * @param keycode The keycode to convert to a string.
 
 * @return A string representation of this keycode.
 
 * @note The return value is a static buffer, stredup the result before calling
 
 *  this function again.
 
 */
 
static const char *KeycodeToString(uint16 keycode)
 
static std::string KeycodeToString(uint16 keycode)
 
{
 
	static char buf[32];
 
	buf[0] = '\0';
 
	bool first = true;
 
	std::string str;
 
	if (keycode & WKC_GLOBAL_HOTKEY) {
 
		strecat(buf, "GLOBAL", lastof(buf));
 
		first = false;
 
		str += "GLOBAL";
 
	}
 
	if (keycode & WKC_SHIFT) {
 
		if (!first) strecat(buf, "+", lastof(buf));
 
		strecat(buf, "SHIFT", lastof(buf));
 
		first = false;
 
		if (!str.empty()) str += "+";
 
		str += "SHIFT";
 
	}
 
	if (keycode & WKC_CTRL) {
 
		if (!first) strecat(buf, "+", lastof(buf));
 
		strecat(buf, "CTRL", lastof(buf));
 
		first = false;
 
		if (!str.empty()) str += "+";
 
		str += "CTRL";
 
	}
 
	if (keycode & WKC_ALT) {
 
		if (!first) strecat(buf, "+", lastof(buf));
 
		strecat(buf, "ALT", lastof(buf));
 
		first = false;
 
		if (!str.empty()) str += "+";
 
		str += "ALT";
 
	}
 
	if (keycode & WKC_META) {
 
		if (!first) strecat(buf, "+", lastof(buf));
 
		strecat(buf, "META", lastof(buf));
 
		first = false;
 
		if (!str.empty()) str += "+";
 
		str += "META";
 
	}
 
	if (!first) strecat(buf, "+", lastof(buf));
 
	if (!str.empty()) str += "+";
 
	keycode = keycode & ~WKC_SPECIAL_KEYS;
 

	
 
	for (uint i = 0; i < lengthof(_keycode_to_name); i++) {
 
		if (_keycode_to_name[i].keycode == keycode) {
 
			strecat(buf, _keycode_to_name[i].name, lastof(buf));
 
			return buf;
 
			str += _keycode_to_name[i].name;
 
			return str;
 
		}
 
	}
 
	assert(keycode < 128);
 
	char key[2];
 
	key[0] = keycode;
 
	key[1] = '\0';
 
	strecat(buf, key, lastof(buf));
 
	return buf;
 
	str.push_back(keycode);
 
	return str;
 
}
 

	
 
/**
 
@@ -221,19 +209,15 @@ static const char *KeycodeToString(uint1
 
 * keycodes are attached to the hotkey they are split by a comma.
 
 * @param hotkey The keycodes of this hotkey need to be converted to a string.
 
 * @return A string representation of all keycodes.
 
 * @note The return value is a static buffer, stredup the result before calling
 
 *  this function again.
 
 */
 
const char *SaveKeycodes(const Hotkey *hotkey)
 
std::string SaveKeycodes(const Hotkey *hotkey)
 
{
 
	static char buf[128];
 
	buf[0] = '\0';
 
	std::string str;
 
	for (uint i = 0; i < hotkey->keycodes.size(); i++) {
 
		const char *str = KeycodeToString(hotkey->keycodes[i]);
 
		if (i > 0) strecat(buf, ",", lastof(buf));
 
		strecat(buf, str, lastof(buf));
 
		if (i > 0) str += ",";
 
		str += KeycodeToString(hotkey->keycodes[i]);
 
	}
 
	return buf;
 
	return str;
 
}
 

	
 
/**
0 comments (0 inline, 0 general)