Reorganizes project and sets up bazel.
This commit is contained in:
293
strmanip.cpp
Executable file
293
strmanip.cpp
Executable file
@@ -0,0 +1,293 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2001-2023 by Tom Hicks *
|
||||
* headhunter3@gmail.com *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
||||
***************************************************************************/
|
||||
#include "strmanip.h"
|
||||
|
||||
#include <cctype>
|
||||
|
||||
#include "keys.h"
|
||||
|
||||
bool Truth(std::string str) {
|
||||
if (toupper(str[0]) == 'T' || str[0] == '1')
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
int Integer(std::string str) {
|
||||
int last = str.length() - 1;
|
||||
int number = 0;
|
||||
|
||||
for (int x = last; x >= 0; x--) {
|
||||
switch (str[x]) {
|
||||
case '1':
|
||||
number += (int)pow(10.0, last - x);
|
||||
break;
|
||||
case '2':
|
||||
number += 2 * (int)pow(10.0, last - x);
|
||||
break;
|
||||
case '3':
|
||||
number += 3 * (int)pow(10.0, last - x);
|
||||
break;
|
||||
case '4':
|
||||
number += 4 * (int)pow(10.0, last - x);
|
||||
break;
|
||||
case '5':
|
||||
number += 5 * (int)pow(10.0, last - x);
|
||||
break;
|
||||
case '6':
|
||||
number += 6 * (int)pow(10.0, last - x);
|
||||
break;
|
||||
case '7':
|
||||
number += 7 * (int)pow(10.0, last - x);
|
||||
break;
|
||||
case '8':
|
||||
number += 8 * (int)pow(10.0, last - x);
|
||||
break;
|
||||
case '9':
|
||||
number += 9 * (int)pow(10.0, last - x);
|
||||
}
|
||||
}
|
||||
return number;
|
||||
}
|
||||
|
||||
float Floating(std::string str) {
|
||||
// this doesn't work right yet so use atof for now
|
||||
|
||||
int last = str.length() - 1;
|
||||
float number = 0.0f;
|
||||
bool period = false;
|
||||
|
||||
for (int x = last; x >= 0; x--) {
|
||||
switch (str[x]) {
|
||||
case '1':
|
||||
number += (float)pow(10.0, last - x);
|
||||
break;
|
||||
case '2':
|
||||
number += 2 * (float)pow(10.0, last - x);
|
||||
break;
|
||||
case '3':
|
||||
number += 3 * (float)pow(10.0, last - x);
|
||||
break;
|
||||
case '4':
|
||||
number += 4 * (float)pow(10.0, last - x);
|
||||
break;
|
||||
case '5':
|
||||
number += 5 * (float)pow(10.0, last - x);
|
||||
break;
|
||||
case '6':
|
||||
number += 6 * (float)pow(10.0, last - x);
|
||||
break;
|
||||
case '7':
|
||||
number += 7 * (float)pow(10.0, last - x);
|
||||
break;
|
||||
case '8':
|
||||
number += 8 * (float)pow(10.0, last - x);
|
||||
break;
|
||||
case '9':
|
||||
number += 9 * (float)pow(10.0, last - x);
|
||||
break;
|
||||
case '.':
|
||||
if (!period) {
|
||||
number *= (float)pow(10.0, -(last - x));
|
||||
last -= (x + 1);
|
||||
period = true;
|
||||
} else
|
||||
return number;
|
||||
}
|
||||
}
|
||||
|
||||
if (str[0] == '-')
|
||||
return -number;
|
||||
else
|
||||
return number;
|
||||
}
|
||||
|
||||
string KeyString(uint8_t key) {
|
||||
switch (key) {
|
||||
case OpenArena::KEY_LBUTTON:
|
||||
return "mouse1";
|
||||
case OpenArena::KEY_RBUTTON:
|
||||
return "mouse2";
|
||||
case OpenArena::KEY_MBUTTON:
|
||||
return "mouse3";
|
||||
case OpenArena::KEY_TAB:
|
||||
return "tab";
|
||||
case OpenArena::KEY_RETURN:
|
||||
return "enter";
|
||||
case OpenArena::KEY_SHIFT:
|
||||
return "shift";
|
||||
case OpenArena::KEY_CONTROL:
|
||||
return "control";
|
||||
case OpenArena::KEY_PAUSE:
|
||||
return "pause";
|
||||
case OpenArena::KEY_CAPITAL:
|
||||
return "capslock";
|
||||
case OpenArena::KEY_ESCAPE:
|
||||
return "esc";
|
||||
case OpenArena::KEY_SPACE:
|
||||
return "space";
|
||||
case OpenArena::KEY_PRIOR:
|
||||
return "pageup";
|
||||
case OpenArena::KEY_NEXT:
|
||||
return "pagedown";
|
||||
case OpenArena::KEY_END:
|
||||
return "end";
|
||||
case OpenArena::KEY_HOME:
|
||||
return "home";
|
||||
case OpenArena::KEY_LEFT:
|
||||
return "left";
|
||||
case OpenArena::KEY_UP:
|
||||
return "up";
|
||||
case OpenArena::KEY_RIGHT:
|
||||
return "right";
|
||||
case OpenArena::KEY_DOWN:
|
||||
return "down";
|
||||
case OpenArena::KEY_INSERT:
|
||||
return "insert";
|
||||
case OpenArena::KEY_DELETE:
|
||||
return "delete";
|
||||
case OpenArena::KEY_LWIN:
|
||||
return "lwin";
|
||||
case OpenArena::KEY_RWIN:
|
||||
return "rwin";
|
||||
case OpenArena::KEY_APPS:
|
||||
return "apps";
|
||||
case OpenArena::KEY_NUMPAD0:
|
||||
return "numpad0";
|
||||
case OpenArena::KEY_NUMPAD1:
|
||||
return "numpad1";
|
||||
case OpenArena::KEY_NUMPAD2:
|
||||
return "numpad2";
|
||||
case OpenArena::KEY_NUMPAD3:
|
||||
return "numpad3";
|
||||
case OpenArena::KEY_NUMPAD4:
|
||||
return "numpad4";
|
||||
case OpenArena::KEY_NUMPAD5:
|
||||
return "numpad5";
|
||||
case OpenArena::KEY_NUMPAD6:
|
||||
return "numpad6";
|
||||
case OpenArena::KEY_NUMPAD7:
|
||||
return "numpad7";
|
||||
case OpenArena::KEY_NUMPAD8:
|
||||
return "numpad8";
|
||||
case OpenArena::KEY_NUMPAD9:
|
||||
return "numpad9";
|
||||
case OpenArena::KEY_MULTIPLY:
|
||||
return "numpad*";
|
||||
case OpenArena::KEY_ADD:
|
||||
return "numpad+";
|
||||
case OpenArena::KEY_SUBTRACT:
|
||||
return "numpad-";
|
||||
case OpenArena::KEY_DIVIDE:
|
||||
return "numpad/";
|
||||
case OpenArena::KEY_F1:
|
||||
return "f1";
|
||||
case OpenArena::KEY_F2:
|
||||
return "f2";
|
||||
case OpenArena::KEY_F3:
|
||||
return "f3";
|
||||
case OpenArena::KEY_F4:
|
||||
return "f4";
|
||||
case OpenArena::KEY_F5:
|
||||
return "f5";
|
||||
case OpenArena::KEY_F6:
|
||||
return "f6";
|
||||
case OpenArena::KEY_F7:
|
||||
return "f7";
|
||||
case OpenArena::KEY_F8:
|
||||
return "f8";
|
||||
case OpenArena::KEY_F9:
|
||||
return "f9";
|
||||
case OpenArena::KEY_F10:
|
||||
return "f10";
|
||||
case OpenArena::KEY_F11:
|
||||
return "f11";
|
||||
case OpenArena::KEY_F12:
|
||||
return "f2";
|
||||
case OpenArena::KEY_NUMLOCK:
|
||||
return "numlock";
|
||||
case OpenArena::KEY_SCROLL:
|
||||
return "scroll";
|
||||
case OpenArena::KEY_SEPARATOR:
|
||||
return "separator";
|
||||
default:
|
||||
return "null";
|
||||
};
|
||||
}
|
||||
|
||||
string Right(string str, uint32_t len) {
|
||||
return str.substr(str.length() - len, len);
|
||||
}
|
||||
|
||||
string Left(string str, uint32_t len) {
|
||||
return str.substr(0, len);
|
||||
}
|
||||
|
||||
string tolower(string str) {
|
||||
for (uint32_t i = 0; i < str.length(); i++) str[i] = tolower(str[i]);
|
||||
|
||||
return str;
|
||||
}
|
||||
|
||||
string toupper(string str) {
|
||||
for (uint32_t i = 0; i < str.length(); i++) str[i] = toupper(str[i]);
|
||||
|
||||
return str;
|
||||
}
|
||||
|
||||
string word(string str, uint32_t wordNum) {
|
||||
///////////////
|
||||
// stopped here
|
||||
///////////////
|
||||
uint32_t start = 0;
|
||||
uint32_t length = 0;
|
||||
uint32_t maxLength = str.length();
|
||||
if (str.length() > 0) {
|
||||
if (wordNum < 1) {
|
||||
while (isspace(str[start])) ++start;
|
||||
|
||||
while (!isspace(str[++length]) && length < maxLength)
|
||||
;
|
||||
|
||||
if (length < maxLength || isspace(str[length])) {
|
||||
if (length > 0) {
|
||||
length--;
|
||||
}
|
||||
}
|
||||
return str.substr(start, length);
|
||||
} else {
|
||||
while (isspace(str[start])) ++start;
|
||||
|
||||
for (uint32_t i = 0; i < wordNum; i++) {
|
||||
while (start < maxLength && !isspace(str[start])) // && start <= maxLength)
|
||||
++start;
|
||||
while (start < maxLength && isspace(str[start])) ++start;
|
||||
}
|
||||
|
||||
;
|
||||
|
||||
while ((start + length) < maxLength && !isspace(str[start + length])) ++length;
|
||||
|
||||
return str.substr(start, length);
|
||||
}
|
||||
} else {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user