diff options
author | Ben Longbons <b.r.longbons@gmail.com> | 2014-03-15 19:34:59 -0700 |
---|---|---|
committer | Ben Longbons <b.r.longbons@gmail.com> | 2014-03-16 18:58:48 -0700 |
commit | c812c92d1a1835f0bda783e709481188c8d92225 (patch) | |
tree | b401ede48a088ad1aaed88fe3b997cd26ff7ae08 /src/common/human_time_diff.hpp | |
parent | de9ee1b9754af9d954487121947352f32d7ebb7e (diff) | |
download | tmwa-c812c92d1a1835f0bda783e709481188c8d92225.tar.gz tmwa-c812c92d1a1835f0bda783e709481188c8d92225.tar.bz2 tmwa-c812c92d1a1835f0bda783e709481188c8d92225.tar.xz tmwa-c812c92d1a1835f0bda783e709481188c8d92225.zip |
Clean up header organization
Diffstat (limited to 'src/common/human_time_diff.hpp')
-rw-r--r-- | src/common/human_time_diff.hpp | 86 |
1 files changed, 0 insertions, 86 deletions
diff --git a/src/common/human_time_diff.hpp b/src/common/human_time_diff.hpp deleted file mode 100644 index b8040b8..0000000 --- a/src/common/human_time_diff.hpp +++ /dev/null @@ -1,86 +0,0 @@ -#ifndef TMWA_COMMON_HUMAN_TIME_DIFF_HPP -#define TMWA_COMMON_HUMAN_TIME_DIFF_HPP -// human_time_diff.hpp - broken deltas -// -// Copyright © 2013 Ben Longbons <b.r.longbons@gmail.com> -// -// This file is part of The Mana World (Athena server) -// -// 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 3 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, see <http://www.gnu.org/licenses/>. - -# include "../sanity.hpp" - -# include "../strings/xstring.hpp" - -# include "extract.hpp" - -struct HumanTimeDiff -{ - short year, month, day, hour, minute, second; - - explicit - operator bool() - { - return year || month || day || hour || minute || second; - } - - bool operator !() - { - return !bool(*this); - } -}; - -inline -bool extract(XString str, HumanTimeDiff *iv) -{ - // str is a sequence of [-+]?[0-9]+([ay]|m|[jd]|h|mn|s) - // there are NO spaces here - // parse by counting the number starts - auto is_num = [](char c) - { return c == '-' || c == '+' || ('0' <= c && c <= '9'); }; - if (!str || !is_num(str.front())) - return false; - *iv = HumanTimeDiff{}; - while (str) - { - auto it = std::find_if_not(str.begin(), str.end(), is_num); - auto it2 = std::find_if(it, str.end(), is_num); - XString number = str.xislice_h(it); - XString suffix = str.xislice(it, it2); - str = str.xislice_t(it2); - - short *ptr = nullptr; - if (suffix == "y" || suffix == "a") - ptr = &iv->year; - else if (suffix == "m") - ptr = &iv->month; - else if (suffix == "j" || suffix == "d") - ptr = &iv->day; - else if (suffix == "h") - ptr = &iv->hour; - else if (suffix == "mn") - ptr = &iv->minute; - else if (suffix == "s") - ptr = &iv->second; - else - return false; - if (number.startswith('+') && !number.startswith("+-")) - number = number.xslice_t(1); - if (*ptr || !extract(number, ptr)) - return false; - } - return true; -} - -#endif // TMWA_COMMON_HUMAN_TIME_DIFF_HPP |