# | Line 39 | Line 39 | |
---|---|---|
39 | * [4] Vardeman & Gezelter, in progress (2009). | |
40 | */ | |
41 | ||
42 | < | #include <algorithm> |
42 | > | #include <algorithm> |
43 | #include "utils/StringUtils.hpp" | |
44 | ||
45 | namespace OpenMD { | |
# | Line 218 | Line 218 | namespace OpenMD { | |
218 | return str.substr(0, str.find('.')); | |
219 | } | |
220 | ||
221 | < | bool isInteger(const std::string& str) { |
222 | < | |
221 | > | bool isInteger(const std::string& str) { |
222 | > | |
223 | bool result = false; | |
224 | < | |
224 | > | |
225 | std::string::const_iterator i = str.begin(); | |
226 | if (i != str.end() && (*i == '+' || *i == '-' || std::isdigit(*i) )) { | |
227 | < | ++i; |
228 | < | while (i != str.end() && std::isdigit(*i)) |
229 | < | ++i; |
230 | < | if (i == str.end()) |
231 | < | result = true; |
227 | > | ++i; |
228 | > | while (i != str.end() && std::isdigit(*i)) |
229 | > | ++i; |
230 | > | if (i == str.end()) |
231 | > | result = true; |
232 | } | |
233 | ||
234 | return result; | |
235 | < | } |
236 | < | |
235 | > | } |
236 | > | |
237 | bool CaseInsensitiveEquals(const char ch1, const char ch2) { | |
238 | return std::toupper((unsigned char)ch1) == std::toupper((unsigned char)ch2); | |
239 | } | |
# | Line 245 | Line 245 | size_t CaseInsensitiveFind(const std::string& str1, co | |
245 | else | |
246 | return pos - str1.begin(); | |
247 | } | |
248 | + | |
249 | + | /** |
250 | + | * memparse - parse a string with mem suffixes into a number |
251 | + | * @ptr: Where parse begins |
252 | + | * @retptr: (output) Pointer to next char after parse completes |
253 | + | * |
254 | + | * Parses a string into a number. The number stored at @ptr is |
255 | + | * potentially suffixed with %K (for kilobytes, or 1024 bytes), |
256 | + | * %M (for megabytes, or 1048576 bytes), or %G (for gigabytes, or |
257 | + | * 1073741824). If the number is suffixed with K, M, or G, then |
258 | + | * the return value is the number multiplied by one kilobyte, one |
259 | + | * megabyte, or one gigabyte, respectively. |
260 | + | */ |
261 | + | unsigned long long memparse (char *ptr, char **retptr) { |
262 | + | unsigned long long ret = strtoull (ptr, retptr, 0); |
263 | + | |
264 | + | switch (**retptr) { |
265 | + | case 'G': |
266 | + | case 'g': |
267 | + | ret <<= 10; |
268 | + | case 'M': |
269 | + | case 'm': |
270 | + | ret <<= 10; |
271 | + | case 'K': |
272 | + | case 'k': |
273 | + | ret <<= 10; |
274 | + | (*retptr)++; |
275 | + | default: |
276 | + | break; |
277 | + | } |
278 | + | return ret; |
279 | + | } |
280 | ||
281 | } |
– | Removed lines |
+ | Added lines |
< | Changed lines |
> | Changed lines |