Add an optional final qualifier to types

When building with GCC's -Wfinal-types, a lot of types of spdlog
are marked as being more optimizable if they were marked final.

This patch adds a possibility for the user of the library to `#define SPDLOG_FINAL final`
and enjoy potentially better performance : GCC is then able to replace virtual calls by true
function calls if it can ensure that there are no derived types).

By default SPDLOG_FINAL is defined to nothing to not break existing code that
may be inheriting of some of these types for some reason.
This commit is contained in:
Jean-Michaël Celerier
2017-04-28 17:24:55 +02:00
parent 9e6d81de08
commit 53138c20fb
8 changed files with 41 additions and 35 deletions

View File

@@ -29,6 +29,12 @@
#define SPDLOG_CONSTEXPR constexpr
#endif
// If an user of the library is not inheriting from the types provided by it,
// he can #define SPDLOG_FINAL final to get additional optimizations
#if !defined(SPDLOG_FINAL)
#define SPDLOG_FINAL
#endif
#if defined(__GNUC__) || defined(__clang__)
#define SPDLOG_DEPRECATED __attribute__((deprecated))
#elif defined(_MSC_VER)