summaryrefslogtreecommitdiff
path: root/shared/assert_static.h
diff options
context:
space:
mode:
authorDaniel Wilhelm <daniel@wili.li>2014-04-18 17:08:06 +0200
committerDaniel Wilhelm <daniel@wili.li>2014-04-18 17:08:06 +0200
commitfbe76102e941b9f1edaf236788e42678f05fdf9a (patch)
treef5f538316019fa89be8dc478103490c3a826f3ac /shared/assert_static.h
parent3.8 (diff)
downloadFreeFileSync-fbe76102e941b9f1edaf236788e42678f05fdf9a.tar.gz
FreeFileSync-fbe76102e941b9f1edaf236788e42678f05fdf9a.tar.bz2
FreeFileSync-fbe76102e941b9f1edaf236788e42678f05fdf9a.zip
3.9
Diffstat (limited to 'shared/assert_static.h')
-rw-r--r--shared/assert_static.h37
1 files changed, 37 insertions, 0 deletions
diff --git a/shared/assert_static.h b/shared/assert_static.h
new file mode 100644
index 00000000..9eb94f3c
--- /dev/null
+++ b/shared/assert_static.h
@@ -0,0 +1,37 @@
+// **************************************************************************
+// * This file is part of the FreeFileSync project. It is distributed under *
+// * GNU General Public License: http://www.gnu.org/licenses/gpl.html *
+// * Copyright (C) 2008-2010 ZenJu (zhnmju123 AT gmx.de) *
+// **************************************************************************
+//
+#ifndef ASSERTSTATIC_H_INCLUDED
+#define ASSERTSTATIC_H_INCLUDED
+
+//compile time assert based on Loki (http://loki-lib.sourceforge.net)
+
+#ifdef NDEBUG
+
+#define assert_static(x) ((void)0)
+
+#else /* debugging enabled */
+namespace StaticCheckImpl
+{
+template<int>
+struct CompileTimeError;
+
+template<>
+struct CompileTimeError<true> {};
+}
+
+#define LOKI_CONCAT( X, Y ) LOKI_CONCAT_SUB( X, Y )
+#define LOKI_CONCAT_SUB( X, Y ) X##Y
+
+#define assert_static(expr) \
+ enum { LOKI_CONCAT(loki_enum_dummy_value, __LINE__) = sizeof(StaticCheckImpl::CompileTimeError<static_cast<bool>(expr) >) }
+
+/*#define assert_static(expr) \
+ { Loki::CompileTimeError<((expr) != 0)> Static_Assert_Has_Failed; (void)Static_Assert_Has_Failed; } */
+
+#endif
+
+#endif //ASSERTSTATIC_H_INCLUDED
bgstack15