summaryrefslogtreecommitdiff
path: root/src/mmo/extract.cpp
diff options
context:
space:
mode:
authorBen Longbons <b.r.longbons@gmail.com>2014-10-25 15:24:26 -0700
committerBen Longbons <b.r.longbons@gmail.com>2014-10-26 14:21:48 -0700
commit86395f53634b3ef1ce76a7f1e5edfdb61f8ffd80 (patch)
tree2710c62fe71d5e0d2e228fba9c951a040c4dcddf /src/mmo/extract.cpp
parent6800761863dd45b6055768febc6ace6a20120dc7 (diff)
downloadtmwa-86395f53634b3ef1ce76a7f1e5edfdb61f8ffd80.tar.gz
tmwa-86395f53634b3ef1ce76a7f1e5edfdb61f8ffd80.tar.bz2
tmwa-86395f53634b3ef1ce76a7f1e5edfdb61f8ffd80.tar.xz
tmwa-86395f53634b3ef1ce76a7f1e5edfdb61f8ffd80.zip
Fix header ranking
Diffstat (limited to 'src/mmo/extract.cpp')
-rw-r--r--src/mmo/extract.cpp280
1 files changed, 0 insertions, 280 deletions
diff --git a/src/mmo/extract.cpp b/src/mmo/extract.cpp
deleted file mode 100644
index 9123237..0000000
--- a/src/mmo/extract.cpp
+++ /dev/null
@@ -1,280 +0,0 @@
-#include "extract.hpp"
-// extract.cpp - a simple, hierarchical, tokenizer
-//
-// 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 <algorithm>
-
-#include "../strings/astring.hpp"
-#include "../strings/xstring.hpp"
-#include "../strings/vstring.hpp"
-
-#include "extract_enums.hpp"
-#include "mmo.hpp"
-
-#include "../poison.hpp"
-
-
-// TODO move this whole file to io/ or something.
-// It needs to be lower in the include hierarchy so it can be implemented
-// for library types. Also it should pass an io::LineSpan around.
-namespace tmwa
-{
-bool extract(XString str, XString *rv)
-{
- *rv = str;
- return true;
-}
-
-bool extract(XString str, RString *rv)
-{
- *rv = str;
- return true;
-}
-
-bool extract(XString str, AString *rv)
-{
- *rv = str;
- return true;
-}
-
-bool extract(XString str, GlobalReg *var)
-{
- return extract(str,
- record<','>(&var->str, &var->value));
-}
-
-bool extract(XString str, Item *it)
-{
- XString ignored;
- XString corruption_hack_amount;
- bool rv = extract(str,
- record<',', 11>(
- &ignored,
- &it->nameid,
- &corruption_hack_amount,
- &it->equip,
- &ignored,
- &ignored,
- &ignored,
- &ignored,
- &ignored,
- &ignored,
- &ignored,
- &ignored));
- if (rv)
- {
- if (corruption_hack_amount == "-1"_s)
- it->amount = 0;
- else
- rv = extract(corruption_hack_amount, &it->amount);
- }
- return rv;
-}
-
-bool extract(XString str, MapName *m)
-{
- XString::iterator it = std::find(str.begin(), str.end(), '.');
- str = str.xislice_h(it);
- VString<15> tmp;
- bool rv = extract(str, &tmp);
- *m = tmp;
- return rv;
-}
-
-bool extract(XString str, CharName *out)
-{
- VString<23> tmp;
- if (extract(str, &tmp))
- {
- *out = CharName(tmp);
- return true;
- }
- return false;
-}
-
-bool extract(XString str, std::chrono::nanoseconds *ns)
-{
- std::chrono::nanoseconds::rep rep;
- if (extract(str, &rep))
- {
- *ns = std::chrono::nanoseconds(rep);
- return true;
- }
- if (str.endswith("ns"_s))
- {
- if (extract(str.xrslice_h("ns"_s.size()), &rep))
- {
- *ns = std::chrono::nanoseconds(rep);
- return true;
- }
- return false;
- }
- std::chrono::microseconds bigger;
- if (extract(str, &bigger))
- {
- *ns = bigger;
- return *ns == bigger;
- }
- return false;
-}
-bool extract(XString str, std::chrono::microseconds *us)
-{
- std::chrono::microseconds::rep rep;
- if (extract(str, &rep))
- {
- *us = std::chrono::microseconds(rep);
- return true;
- }
- if (str.endswith("us"_s))
- {
- if (extract(str.xrslice_h("us"_s.size()), &rep))
- {
- *us = std::chrono::microseconds(rep);
- return true;
- }
- return false;
- }
- std::chrono::milliseconds bigger;
- if (extract(str, &bigger))
- {
- *us = bigger;
- return *us == bigger;
- }
- return false;
-}
-bool extract(XString str, std::chrono::milliseconds *ms)
-{
- std::chrono::milliseconds::rep rep;
- if (extract(str, &rep))
- {
- *ms = std::chrono::milliseconds(rep);
- return true;
- }
- if (str.endswith("ms"_s))
- {
- if (extract(str.xrslice_h("ms"_s.size()), &rep))
- {
- *ms = std::chrono::milliseconds(rep);
- return true;
- }
- return false;
- }
- std::chrono::seconds bigger;
- if (extract(str, &bigger))
- {
- *ms = bigger;
- return *ms == bigger;
- }
- return false;
-}
-bool extract(XString str, std::chrono::seconds *s)
-{
- std::chrono::seconds::rep rep;
- if (extract(str, &rep))
- {
- *s = std::chrono::seconds(rep);
- return true;
- }
- if (str.endswith("s"_s))
- {
- if (extract(str.xrslice_h("s"_s.size()), &rep))
- {
- *s = std::chrono::seconds(rep);
- return true;
- }
- return false;
- }
- std::chrono::minutes bigger;
- if (extract(str, &bigger))
- {
- *s = bigger;
- return *s == bigger;
- }
- return false;
-}
-bool extract(XString str, std::chrono::minutes *min)
-{
- std::chrono::minutes::rep rep;
- if (extract(str, &rep))
- {
- *min = std::chrono::minutes(rep);
- return true;
- }
- if (str.endswith("min"_s))
- {
- if (extract(str.xrslice_h("min"_s.size()), &rep))
- {
- *min = std::chrono::minutes(rep);
- return true;
- }
- return false;
- }
- std::chrono::hours bigger;
- if (extract(str, &bigger))
- {
- *min = bigger;
- return *min == bigger;
- }
- return false;
-}
-bool extract(XString str, std::chrono::hours *h)
-{
- std::chrono::hours::rep rep;
- if (extract(str, &rep))
- {
- *h = std::chrono::hours(rep);
- return true;
- }
- if (str.endswith("h"_s))
- {
- if (extract(str.xrslice_h("h"_s.size()), &rep))
- {
- *h = std::chrono::hours(rep);
- return true;
- }
- return false;
- }
- std::chrono::duration<int, std::ratio<60*60*24>> bigger;
- if (extract(str, &bigger))
- {
- *h = bigger;
- return *h == bigger;
- }
- return false;
-}
-bool extract(XString str, std::chrono::duration<int, std::ratio<60*60*24>> *d)
-{
- std::chrono::duration<int, std::ratio<60*60*24>>::rep rep;
- if (extract(str, &rep))
- {
- *d = std::chrono::duration<int, std::ratio<60*60*24>>(rep);
- return true;
- }
- if (str.endswith("d"_s))
- {
- if (extract(str.xrslice_h("d"_s.size()), &rep))
- {
- *d = std::chrono::duration<int, std::ratio<60*60*24>>(rep);
- return true;
- }
- return false;
- }
- return false;
-}
-} // namespace tmwa