From 44ba9a9eebec2ffe202fc5594f76864a56f3730a Mon Sep 17 00:00:00 2001 From: Ben Longbons Date: Wed, 23 Jul 2014 17:05:58 -0700 Subject: Enums are not usually integers, sorry --- src/mmo/extract_enums.hpp | 69 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 src/mmo/extract_enums.hpp (limited to 'src/mmo/extract_enums.hpp') diff --git a/src/mmo/extract_enums.hpp b/src/mmo/extract_enums.hpp new file mode 100644 index 0000000..613fae9 --- /dev/null +++ b/src/mmo/extract_enums.hpp @@ -0,0 +1,69 @@ +#pragma once +// extract_enums.hpp - Opt-in integer extraction support for enums. +// +// Copyright © 2014 Ben Longbons +// +// 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 . + +#include "fwd.hpp" + +#include + +#include "extract.hpp" + + +namespace tmwa +{ +namespace e +{ +enum class EPOS : uint16_t; +enum class MobMode : uint16_t; +enum class Opt1 : uint16_t; +enum class Opt2 : uint16_t; +enum class Option : uint16_t; + +inline +bool extract(XString str, EPOS *iv) { return extract_as_int(str, iv); } +inline +bool extract(XString str, MobMode *iv) { return extract_as_int(str, iv); } +inline +bool extract(XString str, Opt1 *iv) { return extract_as_int(str, iv); } +inline +bool extract(XString str, Opt2 *iv) { return extract_as_int(str, iv); } +inline +bool extract(XString str, Option *iv) { return extract_as_int(str, iv); } +} + +enum class ItemLook : uint16_t; +enum class ItemType : uint8_t; +enum class Race : uint8_t; +enum class SEX : uint8_t; +enum class SkillID : uint16_t; +enum class StatusChange : uint16_t; + +inline +bool extract(XString str, ItemLook *iv) { return extract_as_int(str, iv); } +inline +bool extract(XString str, ItemType *iv) { return extract_as_int(str, iv); } +inline +bool extract(XString str, Race *iv) { return extract_as_int(str, iv); } +inline +bool extract(XString str, SEX *iv) { return extract_as_int(str, iv); } +inline +bool extract(XString str, SkillID *iv) { return extract_as_int(str, iv); } +inline +bool extract(XString str, StatusChange *iv) { return extract_as_int(str, iv); } +} // namespace tmwa -- cgit v1.2.3-60-g2f50