#define DP_FUNC_PRINTF(n) __attribute__ ((format (printf, n, n+1)))
#define DP_FUNC_PURE __attribute__ ((pure))
#define DP_FUNC_NORETURN __attribute__ ((noreturn))
+#define DP_FUNC_ALWAYSINLINE inline __attribute__((always_inline))
#else
#define DP_FUNC_PRINTF(n)
#define DP_FUNC_PURE
#define DP_FUNC_NORETURN
+# if defined (MSVC)
+# define DP_FUNC_ALWAYSINLINE __forceinline
+# else
+# define DP_FUNC_ALWAYS_INLINE inline
+# endif
#endif
#ifdef DP_GCC_COMPATIBLE
// This also includes extended characters, and ALL control chars
#define ISWHITESPACEORCONTROL(ch) ((signed char) (ch) <= (signed char) ' ')
+#define DOUBLE_IS_TRUE_FOR_INT(x) ((x) & 0x7FFFFFFFFFFFFFFF) // also match "negative zero" doubles of value 0x8000000000000000
+#define DOUBLE_LOSSLESS_FORMAT "%.17g"
+#define DOUBLE_VECTOR_LOSSLESS_FORMAT "%.17g %.17g %.17g"
+#define FLOAT_IS_TRUE_FOR_INT(x) ((x) & 0x7FFFFFFF) // also match "negative zero" floats of value 0x80000000
+#define FLOAT_LOSSLESS_FORMAT "%.9g"
+#define FLOAT_VECTOR_LOSSLESS_FORMAT "%.9g %.9g %.9g"
#ifdef PRVM_64
#define FLOAT_IS_TRUE_FOR_INT(x) ((x) & 0x7FFFFFFFFFFFFFFF) // also match "negative zero" doubles of value 0x8000000000000000
#define FLOAT_LOSSLESS_FORMAT "%.17g"