From 4420659effaee63e1a814e5aae1350f1924731ab Mon Sep 17 00:00:00 2001 From: Ben Longbons Date: Fri, 15 Nov 2013 21:52:11 -0800 Subject: Another step towards proper header ordering --- src/common/const_array.hpp | 2 +- src/common/core.hpp | 2 +- src/common/cxxstdio.hpp | 263 ----------------------------------------- src/common/cxxstdio_test.cpp | 3 - src/common/db.hpp | 2 +- src/common/dumb_ptr.hpp | 2 +- src/common/extract.hpp | 2 +- src/common/human_time_diff.hpp | 2 +- src/common/ip.cpp | 2 +- src/common/ip.hpp | 2 +- src/common/ip_test.cpp | 2 +- src/common/md5calc.cpp | 2 +- src/common/md5calc.hpp | 2 +- src/common/mmo.hpp | 2 +- src/common/nullpo.hpp | 2 +- src/common/random.hpp | 2 +- src/common/sanity.hpp | 34 ------ src/common/socket.cpp | 2 +- src/common/socket.hpp | 2 +- src/common/timer.cpp | 3 +- src/common/timer.hpp | 2 +- src/common/utils.cpp | 2 +- src/common/utils.hpp | 2 +- src/common/utils2.hpp | 2 +- 24 files changed, 22 insertions(+), 321 deletions(-) delete mode 100644 src/common/cxxstdio.hpp delete mode 100644 src/common/cxxstdio_test.cpp delete mode 100644 src/common/sanity.hpp (limited to 'src/common') diff --git a/src/common/const_array.hpp b/src/common/const_array.hpp index 314eccf..383a4e2 100644 --- a/src/common/const_array.hpp +++ b/src/common/const_array.hpp @@ -19,7 +19,7 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . -#include "sanity.hpp" +#include "../sanity.hpp" #include diff --git a/src/common/core.hpp b/src/common/core.hpp index 1cbd0c2..11b04fd 100644 --- a/src/common/core.hpp +++ b/src/common/core.hpp @@ -1,7 +1,7 @@ #ifndef CORE_HPP #define CORE_HPP -#include "sanity.hpp" +#include "../sanity.hpp" #include "../strings/fwd.hpp" diff --git a/src/common/cxxstdio.hpp b/src/common/cxxstdio.hpp deleted file mode 100644 index 1ae1be3..0000000 --- a/src/common/cxxstdio.hpp +++ /dev/null @@ -1,263 +0,0 @@ -#ifndef CXXSTDIO_HPP -#define CXXSTDIO_HPP -// cxxstdio.hpp - pass C++ types through scanf/printf -// -// Copyright © 2011-2013 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 "sanity.hpp" - -#include -#include - -#include "../io/fwd.hpp" - -#include "const_array.hpp" -#include "utils2.hpp" - - -namespace cxxstdio -{ - // other implementations of do_vprint or do_vscan are injected by ADL. - inline __attribute__((format(printf, 2, 0))) - int do_vprint(FILE *out, const char *fmt, va_list ap) - { - return vfprintf(out, fmt, ap); - } - - inline __attribute__((format(scanf, 2, 0))) - int do_vscan(FILE *in, const char *fmt, va_list ap) - { - return vfscanf(in, fmt, ap); - } - -#if 0 - inline __attribute__((format(scanf, 2, 0))) - int do_vscan(const char *in, const char *fmt, va_list ap) - { - return vsscanf(in, fmt, ap); - } -#else - inline - int do_vscan(const char *, const char *, va_list) = delete; -#endif - - template - inline __attribute__((format(printf, 2, 3))) - int do_print(T&& t, const char *fmt, ...) throw() - { - int rv; - va_list ap; - va_start(ap, fmt); - rv = do_vprint(std::forward(t), fmt, ap); - va_end(ap); - return rv; - } - - template - inline __attribute__((format(scanf, 2, 3))) - int do_scan(T&& t, const char *fmt, ...) throw() - { - int rv; - va_list ap; - va_start(ap, fmt); - rv = do_vscan(std::forward(t), fmt, ap); - va_end(ap); - return rv; - } - - - template::value>::type> - typename remove_enum::type decay_for_printf(T v) - { - typedef typename remove_enum::type repr_type; - return repr_type(v); - } - - template()))> - T&& convert_for_printf(T&& v) - { - return std::forward(v); - } - - template::value>::type> - T& convert_for_scanf(T& v) - { - return v; - } - -#if 0 - template - constexpr - E get_enum_min_value(decltype(E::min_value)) - { - return E::min_value; - } - template - constexpr - E get_enum_min_value(E def) - { - return def; - } - - template - constexpr - E get_enum_max_value(decltype(E::max_value)) - { - return E::max_value; - } - template - constexpr - E get_enum_max_value(E def) - { - return def; - } -#else - template - constexpr - E get_enum_min_value(E) - { - return E::min_value; - } - template - constexpr - E get_enum_max_value(E) - { - return E::max_value; - } -#endif - - template - class EnumConverter - { - E& out; - typedef typename underlying_type::type U; -#if 0 - constexpr static - U min_value = U(get_enum_min_value(E(std::numeric_limits::min()))); - constexpr static - U max_value = U(get_enum_max_value(E(std::numeric_limits::max()))); -#else - constexpr static - U min_value = U(get_enum_min_value(E())); - constexpr static - U max_value = U(get_enum_max_value(E())); -#endif - U mid; - public: - EnumConverter(E& e) - : out(e), mid(0) - {} - ~EnumConverter() - { -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wtype-limits" - if (min_value <= mid && mid <= max_value) -#pragma GCC diagnostic pop - out = E(mid); - } - U *operator &() - { - return ∣ - } - }; - - template::value>::type> - EnumConverter convert_for_scanf(T& v) - { - return v; - } - - template - class PrintFormatter - { - public: - template - static - int print(T&& t, A&&... a) - { - constexpr static - const char *print_format = Format::print_format(); - return do_print(std::forward(t), print_format, - decay_for_printf(convert_for_printf(std::forward(a)))...); - } - }; - - template - class ScanFormatter - { - public: - template - static - int scan(T&& t, A&&... a) - { - constexpr static - const char *scan_format = Format::scan_format(); - return do_scan(std::forward(t), scan_format, - &convert_for_scanf(*a)...); - } - }; - -#define XPRINTF(out, fmt, ...) \ - (/*[&]() -> int*/ \ - { \ - struct format_impl \ - { \ - constexpr static \ - const char *print_format() { return fmt; } \ - }; \ - /*return*/ cxxstdio::PrintFormatter::print(out, ## __VA_ARGS__); \ - }/*()*/) - -#define XSCANF(out, fmt, ...) \ - (/*[&]() -> int*/ \ - { \ - struct format_impl \ - { \ - constexpr static \ - const char *scan_format() { return fmt; } \ - }; \ - /*return*/ cxxstdio::ScanFormatter::scan(out, ## __VA_ARGS__); \ - }/*()*/) - -#define FPRINTF(file, fmt, ...) XPRINTF(/*no_cast*/(file), fmt, ## __VA_ARGS__) -#define FSCANF(file, fmt, ...) XSCANF(no_cast(file), fmt, ## __VA_ARGS__) -#define PRINTF(fmt, ...) FPRINTF(stdout, fmt, ## __VA_ARGS__) -#define SPRINTF(str, fmt, ...) XPRINTF(base_cast(str), fmt, ## __VA_ARGS__) -#define SNPRINTF(str, n, fmt, ...) XPRINTF(base_cast&>(str), fmt, ## __VA_ARGS__) -#define SCANF(fmt, ...) FSCANF(stdin, fmt, ## __VA_ARGS__) -#define SSCANF(str, fmt, ...) XSCANF(/*ZString or compatible*/str, fmt, ## __VA_ARGS__) - -#define STRPRINTF(fmt, ...) \ - (/*[&]() -> FString*/ \ - { \ - FString _out_impl; \ - SPRINTF(_out_impl, fmt, ## __VA_ARGS__);\ - /*return*/ _out_impl; \ - }/*()*/) - -#define STRNPRINTF(n, fmt, ...) \ - (/*[&]() -> VString*/ \ - { \ - VString _out_impl; \ - SNPRINTF(_out_impl, n, fmt, ## __VA_ARGS__);\ - /*return*/ _out_impl; \ - }/*()*/) - -} // namespace cxxstdio - -#endif // CXXSTDIO_HPP diff --git a/src/common/cxxstdio_test.cpp b/src/common/cxxstdio_test.cpp deleted file mode 100644 index 9b6eeb2..0000000 --- a/src/common/cxxstdio_test.cpp +++ /dev/null @@ -1,3 +0,0 @@ -#include "cxxstdio.hpp" - -#include diff --git a/src/common/db.hpp b/src/common/db.hpp index 927db22..0384f1c 100644 --- a/src/common/db.hpp +++ b/src/common/db.hpp @@ -19,7 +19,7 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . -# include "sanity.hpp" +# include "../sanity.hpp" # include # include diff --git a/src/common/dumb_ptr.hpp b/src/common/dumb_ptr.hpp index bcc9dda..1dba39d 100644 --- a/src/common/dumb_ptr.hpp +++ b/src/common/dumb_ptr.hpp @@ -19,7 +19,7 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . -#include "sanity.hpp" +#include "../sanity.hpp" #include diff --git a/src/common/extract.hpp b/src/common/extract.hpp index dd0a8a3..4f90be4 100644 --- a/src/common/extract.hpp +++ b/src/common/extract.hpp @@ -19,7 +19,7 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . -#include "sanity.hpp" +#include "../sanity.hpp" #include diff --git a/src/common/human_time_diff.hpp b/src/common/human_time_diff.hpp index a937316..b8754b2 100644 --- a/src/common/human_time_diff.hpp +++ b/src/common/human_time_diff.hpp @@ -19,7 +19,7 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . -#include "sanity.hpp" +#include "../sanity.hpp" #include "../strings/xstring.hpp" diff --git a/src/common/ip.cpp b/src/common/ip.cpp index a1fdfda..146734a 100644 --- a/src/common/ip.cpp +++ b/src/common/ip.cpp @@ -21,7 +21,7 @@ #include "../strings/xstring.hpp" #include "../strings/vstring.hpp" -#include "cxxstdio.hpp" +#include "../io/cxxstdio.hpp" #include "../poison.hpp" diff --git a/src/common/ip.hpp b/src/common/ip.hpp index cce6c2b..7e645bb 100644 --- a/src/common/ip.hpp +++ b/src/common/ip.hpp @@ -19,7 +19,7 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . -#include "sanity.hpp" +#include "../sanity.hpp" #include diff --git a/src/common/ip_test.cpp b/src/common/ip_test.cpp index 64a537f..7ef1047 100644 --- a/src/common/ip_test.cpp +++ b/src/common/ip_test.cpp @@ -2,7 +2,7 @@ #include -#include "cxxstdio.hpp" +#include "../io/cxxstdio.hpp" #define CB(X) (std::integral_constant::value) TEST(ip4addr, cmp) diff --git a/src/common/md5calc.cpp b/src/common/md5calc.cpp index 70b0e1f..8d650fa 100644 --- a/src/common/md5calc.cpp +++ b/src/common/md5calc.cpp @@ -5,9 +5,9 @@ #include "../strings/xstring.hpp" #include "../strings/vstring.hpp" +#include "../io/cxxstdio.hpp" #include "../io/read.hpp" -#include "cxxstdio.hpp" #include "random.hpp" #include "utils.hpp" diff --git a/src/common/md5calc.hpp b/src/common/md5calc.hpp index 205c21a..479c1a9 100644 --- a/src/common/md5calc.hpp +++ b/src/common/md5calc.hpp @@ -1,7 +1,7 @@ #ifndef MD5CALC_HPP #define MD5CALC_HPP -#include "sanity.hpp" +#include "../sanity.hpp" #include diff --git a/src/common/mmo.hpp b/src/common/mmo.hpp index cfc7b78..0f89c81 100644 --- a/src/common/mmo.hpp +++ b/src/common/mmo.hpp @@ -2,7 +2,7 @@ #ifndef MMO_HPP #define MMO_HPP -# include "sanity.hpp" +# include "../sanity.hpp" # include "../strings/vstring.hpp" diff --git a/src/common/nullpo.hpp b/src/common/nullpo.hpp index 9eb9ea9..26aab20 100644 --- a/src/common/nullpo.hpp +++ b/src/common/nullpo.hpp @@ -21,7 +21,7 @@ # define nullpo_ret(t) nullpo_retr(0, t) # define nullpo_retv(t) nullpo_retr(, t) -# include "sanity.hpp" +# include "../sanity.hpp" /// Used by macros in this header bool nullpo_chk(const char *file, int line, const char *func, diff --git a/src/common/random.hpp b/src/common/random.hpp index 44057ed..a694cce 100644 --- a/src/common/random.hpp +++ b/src/common/random.hpp @@ -3,7 +3,7 @@ # include "random.t.hpp" -# include "sanity.hpp" +# include "../sanity.hpp" # include diff --git a/src/common/sanity.hpp b/src/common/sanity.hpp deleted file mode 100644 index 3658f9f..0000000 --- a/src/common/sanity.hpp +++ /dev/null @@ -1,34 +0,0 @@ -/// return wrappers for unexpected NULL pointers -#ifndef SANITY_HPP -#define SANITY_HPP - -# ifndef __cplusplus -# error "Please compile in C++ mode" -# endif // __cplusplus - -# if __GNUC__ < 4 -# error "Your compiler is absolutely ancient. You have no chance ..." -# endif // __GNUC__ < 4 - -/// Convert type assumptions to use the standard types here -# include -/// size_t, NULL -# include - -# if __GNUC__ == 4 -// clang identifies as GCC 4.2, but is mostly okay. -// Until a bug-free release of it happens, though, I won't recommend it. -// (patched) clang 3.1 would be the requirement -# if __GNUC_MINOR__ < 6 && !defined(__clang__) -# error "Please upgrade to at least GCC 4.6" -# endif // __GNUC_MINOR__ < 6 && !defined(__clang__) -# endif // __GNUC__ == 4 - -# if not defined(__i386__) and not defined(__x86_64__) -// Known platform dependencies: -// endianness for the [RW]FIFO.* macros -// possibly, some signal-handling -# error "Unsupported platform use x86 / amd64 only" -# endif // not __i386__ - -#endif // SANITY_HPP diff --git a/src/common/socket.cpp b/src/common/socket.cpp index c7e6ed2..b507cd8 100644 --- a/src/common/socket.cpp +++ b/src/common/socket.cpp @@ -12,7 +12,7 @@ #include #include -#include "cxxstdio.hpp" +#include "../io/cxxstdio.hpp" //#include "mmo.hpp" #include "utils.hpp" diff --git a/src/common/socket.hpp b/src/common/socket.hpp index 1ff400a..8a2ee3a 100644 --- a/src/common/socket.hpp +++ b/src/common/socket.hpp @@ -1,7 +1,7 @@ #ifndef SOCKET_HPP #define SOCKET_HPP -# include "sanity.hpp" +# include "../sanity.hpp" # include diff --git a/src/common/timer.cpp b/src/common/timer.cpp index 17c6d80..ee62df2 100644 --- a/src/common/timer.cpp +++ b/src/common/timer.cpp @@ -10,7 +10,8 @@ #include "../strings/zstring.hpp" -#include "cxxstdio.hpp" +#include "../io/cxxstdio.hpp" + #include "utils.hpp" #include "../poison.hpp" diff --git a/src/common/timer.hpp b/src/common/timer.hpp index de867ab..a54cb36 100644 --- a/src/common/timer.hpp +++ b/src/common/timer.hpp @@ -3,7 +3,7 @@ # include "timer.t.hpp" -# include "sanity.hpp" +# include "../sanity.hpp" # include "../strings/fwd.hpp" diff --git a/src/common/utils.cpp b/src/common/utils.cpp index 0f8a0af..7f9a7ee 100644 --- a/src/common/utils.cpp +++ b/src/common/utils.cpp @@ -9,9 +9,9 @@ #include "../strings/zstring.hpp" #include "../strings/xstring.hpp" +#include "../io/cxxstdio.hpp" #include "../io/write.hpp" -#include "cxxstdio.hpp" #include "extract.hpp" #include "../poison.hpp" diff --git a/src/common/utils.hpp b/src/common/utils.hpp index 4171759..2d2e2d5 100644 --- a/src/common/utils.hpp +++ b/src/common/utils.hpp @@ -1,7 +1,7 @@ #ifndef UTILS_HPP #define UTILS_HPP -#include "sanity.hpp" +#include "../sanity.hpp" #include #include diff --git a/src/common/utils2.hpp b/src/common/utils2.hpp index adcb465..7dbd741 100644 --- a/src/common/utils2.hpp +++ b/src/common/utils2.hpp @@ -1,7 +1,7 @@ #ifndef UTILS2_HPP #define UTILS2_HPP -#include "sanity.hpp" +#include "../sanity.hpp" #include #include -- cgit v1.2.3-70-g09d2