From a88ffd2d9b2adec5de19a1bb88e6b8656985a044 Mon Sep 17 00:00:00 2001 From: Ben Longbons Date: Wed, 27 Aug 2014 13:40:22 -0700 Subject: Yes, I do --- Makefile.in | 2 ++ src/map/script.cpp | 24 +++++++++++++++++++----- tools/debug-debug-scripts | 28 ++++++++++++++++++++++++++-- 3 files changed, 47 insertions(+), 7 deletions(-) diff --git a/Makefile.in b/Makefile.in index a2cb67b..ee7a15d 100644 --- a/Makefile.in +++ b/Makefile.in @@ -360,6 +360,8 @@ o: ${PDC_OBJECTS} # duplicates, and PDC is more common, and also some override rules are only # currently defined for PDC +clean-stamp: + -$l find obj -name '*.stamp' -delete clean-deps: -$l find obj -name '*.d' -delete clean-format: diff --git a/src/map/script.cpp b/src/map/script.cpp index d5eb379..4aeb7d9 100644 --- a/src/map/script.cpp +++ b/src/map/script.cpp @@ -1195,15 +1195,29 @@ RString conv_str(ScriptState *st, struct script_data *data) static __attribute__((warn_unused_result)) int conv_num(ScriptState *st, struct script_data *data) { + int rv = 0; get_val(st, data); assert (!data->is()); - if (auto *u = data->get_if()) + MATCH (*data) { - RString p = u->str; - *data = ScriptDataInt{atoi(p.c_str())}; + default: + abort(); + CASE (const ScriptDataStr&, u) + { + RString p = u.str; + rv = atoi(p.c_str()); + } + CASE (const ScriptDataInt&, u) + { + return u.numi; + } + CASE (const ScriptDataPos&, u) + { + return u.numi; + } } - // TODO see if I also need to return for other types? - return data->get_if()->numi; + *data = ScriptDataInt{rv}; + return rv; } static __attribute__((warn_unused_result)) diff --git a/tools/debug-debug-scripts b/tools/debug-debug-scripts index 79520e9..e5eeb6c 100755 --- a/tools/debug-debug-scripts +++ b/tools/debug-debug-scripts @@ -1,7 +1,26 @@ #!/usr/bin/env python - +# encoding: utf-8 from __future__ import print_function +copyright = ''' +// 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 . +''' + import itertools import os import subprocess @@ -57,8 +76,13 @@ def gen_test(name, expr, expected): print('}') def main(args): - print('// Generated by', __file__) + print('// test.cpp - generated by', __file__) + print(copyright) print('#include ') + print('// just mention "fwd.hpp" and "../poison.hpp" to make formatter happy') + print('namespace tmwa') + print('{') + print('} // namespace tmwa') print() print('template') print('__attribute__((noinline))') -- cgit v1.2.3-70-g09d2