summaryrefslogtreecommitdiff
path: root/src/common
diff options
context:
space:
mode:
authorBen Longbons <b.r.longbons@gmail.com>2013-11-15 21:52:11 -0800
committerBen Longbons <b.r.longbons@gmail.com>2013-11-15 21:52:26 -0800
commit4420659effaee63e1a814e5aae1350f1924731ab (patch)
tree840eaff58b703d097bb273779ba0e9c05c7546d7 /src/common
parent672c4091b5a43442759886144607aa407a04e5bc (diff)
downloadtmwa-4420659effaee63e1a814e5aae1350f1924731ab.tar.gz
tmwa-4420659effaee63e1a814e5aae1350f1924731ab.tar.bz2
tmwa-4420659effaee63e1a814e5aae1350f1924731ab.tar.xz
tmwa-4420659effaee63e1a814e5aae1350f1924731ab.zip
Another step towards proper header ordering
Diffstat (limited to 'src/common')
-rw-r--r--src/common/const_array.hpp2
-rw-r--r--src/common/core.hpp2
-rw-r--r--src/common/cxxstdio.hpp263
-rw-r--r--src/common/cxxstdio_test.cpp3
-rw-r--r--src/common/db.hpp2
-rw-r--r--src/common/dumb_ptr.hpp2
-rw-r--r--src/common/extract.hpp2
-rw-r--r--src/common/human_time_diff.hpp2
-rw-r--r--src/common/ip.cpp2
-rw-r--r--src/common/ip.hpp2
-rw-r--r--src/common/ip_test.cpp2
-rw-r--r--src/common/md5calc.cpp2
-rw-r--r--src/common/md5calc.hpp2
-rw-r--r--src/common/mmo.hpp2
-rw-r--r--src/common/nullpo.hpp2
-rw-r--r--src/common/random.hpp2
-rw-r--r--src/common/sanity.hpp34
-rw-r--r--src/common/socket.cpp2
-rw-r--r--src/common/socket.hpp2
-rw-r--r--src/common/timer.cpp3
-rw-r--r--src/common/timer.hpp2
-rw-r--r--src/common/utils.cpp2
-rw-r--r--src/common/utils.hpp2
-rw-r--r--src/common/utils2.hpp2
24 files changed, 22 insertions, 321 deletions
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 <http://www.gnu.org/licenses/>.
-#include "sanity.hpp"
+#include "../sanity.hpp"
#include <cstring>
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 <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 <cstdarg>
-#include <cstdio>
-
-#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<class T>
- 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>(t), fmt, ap);
- va_end(ap);
- return rv;
- }
-
- template<class T>
- 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>(t), fmt, ap);
- va_end(ap);
- return rv;
- }
-
-
- template<class T, typename=typename std::enable_if<!std::is_class<T>::value>::type>
- typename remove_enum<T>::type decay_for_printf(T v)
- {
- typedef typename remove_enum<T>::type repr_type;
- return repr_type(v);
- }
-
- template<class T, typename=decltype(decay_for_printf(std::declval<T&&>()))>
- T&& convert_for_printf(T&& v)
- {
- return std::forward<T>(v);
- }
-
- template<class T, typename = typename std::enable_if<!std::is_enum<T>::value>::type>
- T& convert_for_scanf(T& v)
- {
- return v;
- }
-
-#if 0
- template<class E>
- constexpr
- E get_enum_min_value(decltype(E::min_value))
- {
- return E::min_value;
- }
- template<class E>
- constexpr
- E get_enum_min_value(E def)
- {
- return def;
- }
-
- template<class E>
- constexpr
- E get_enum_max_value(decltype(E::max_value))
- {
- return E::max_value;
- }
- template<class E>
- constexpr
- E get_enum_max_value(E def)
- {
- return def;
- }
-#else
- template<class E>
- constexpr
- E get_enum_min_value(E)
- {
- return E::min_value;
- }
- template<class E>
- constexpr
- E get_enum_max_value(E)
- {
- return E::max_value;
- }
-#endif
-
- template<class E>
- class EnumConverter
- {
- E& out;
- typedef typename underlying_type<E>::type U;
-#if 0
- constexpr static
- U min_value = U(get_enum_min_value<E>(E(std::numeric_limits<U>::min())));
- constexpr static
- U max_value = U(get_enum_max_value<E>(E(std::numeric_limits<U>::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 &mid;
- }
- };
-
- template<class T, typename = typename std::enable_if<std::is_enum<T>::value>::type>
- EnumConverter<T> convert_for_scanf(T& v)
- {
- return v;
- }
-
- template<class Format>
- class PrintFormatter
- {
- public:
- template<class T, class... A>
- static
- int print(T&& t, A&&... a)
- {
- constexpr static
- const char *print_format = Format::print_format();
- return do_print(std::forward<T>(t), print_format,
- decay_for_printf(convert_for_printf(std::forward<A>(a)))...);
- }
- };
-
- template<class Format>
- class ScanFormatter
- {
- public:
- template<class T, class... A>
- static
- int scan(T&& t, A&&... a)
- {
- constexpr static
- const char *scan_format = Format::scan_format();
- return do_scan(std::forward<T>(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<format_impl>::print(out, ## __VA_ARGS__); \
- }/*()*/)
-
-#define XSCANF(out, fmt, ...) \
- (/*[&]() -> int*/ \
- { \
- struct format_impl \
- { \
- constexpr static \
- const char *scan_format() { return fmt; } \
- }; \
- /*return*/ cxxstdio::ScanFormatter<format_impl>::scan(out, ## __VA_ARGS__); \
- }/*()*/)
-
-#define FPRINTF(file, fmt, ...) XPRINTF(/*no_cast<FILE *>*/(file), fmt, ## __VA_ARGS__)
-#define FSCANF(file, fmt, ...) XSCANF(no_cast<FILE *>(file), fmt, ## __VA_ARGS__)
-#define PRINTF(fmt, ...) FPRINTF(stdout, fmt, ## __VA_ARGS__)
-#define SPRINTF(str, fmt, ...) XPRINTF(base_cast<FString&>(str), fmt, ## __VA_ARGS__)
-#define SNPRINTF(str, n, fmt, ...) XPRINTF(base_cast<VString<n-1>&>(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<n - 1>*/ \
- { \
- VString<n - 1> _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 <gtest/gtest.h>
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 <http://www.gnu.org/licenses/>.
-# include "sanity.hpp"
+# include "../sanity.hpp"
# include <map>
# include <memory>
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 <http://www.gnu.org/licenses/>.
-#include "sanity.hpp"
+#include "../sanity.hpp"
#include <cstring>
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 <http://www.gnu.org/licenses/>.
-#include "sanity.hpp"
+#include "../sanity.hpp"
#include <algorithm>
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 <http://www.gnu.org/licenses/>.
-#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 <http://www.gnu.org/licenses/>.
-#include "sanity.hpp"
+#include "../sanity.hpp"
#include <netinet/in.h>
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 <gtest/gtest.h>
-#include "cxxstdio.hpp"
+#include "../io/cxxstdio.hpp"
#define CB(X) (std::integral_constant<bool, (X)>::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 <netinet/in.h>
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 <random>
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 <cstdint>
-/// size_t, NULL
-# include <cstddef>
-
-# 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 <cstring>
#include <ctime>
-#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 <netinet/in.h>
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 <cstdio>
#include <cstring>
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 <algorithm>
#include <functional>