From 1d9d1396ac7fe4f9fcaae16110f524acfa3c8758 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Tue, 14 Jul 2020 15:41:19 +0200 Subject: [PATCH] - got rid of print.h (a.k.a. 'how not do design a text formatting library'.) --- source/build/include/print.h | 194 -------------------------------- source/build/src/scriptfile.cpp | 2 +- source/core/gamestruct.h | 1 - 3 files changed, 1 insertion(+), 196 deletions(-) delete mode 100644 source/build/include/print.h diff --git a/source/build/include/print.h b/source/build/include/print.h deleted file mode 100644 index 30f703882..000000000 --- a/source/build/include/print.h +++ /dev/null @@ -1,194 +0,0 @@ - -#pragma once - -#ifndef print_h_ -#define print_h_ - -#ifdef HAVE_CXX11_HEADERS - -template -struct binwrap -{ - T data; -}; -template -static FORCE_INLINE constexpr binwrap bin(T x) -{ - return binwrap{x}; -} -template -struct octwrap -{ - T data; -}; -template -static FORCE_INLINE constexpr octwrap oct(T x) -{ - return octwrap{x}; -} -template -struct hexwrap -{ - T data; -}; -template -static FORCE_INLINE constexpr hexwrap hex(T x) -{ - return hexwrap{x}; -} -template -struct HEXwrap -{ - T data; -}; -template -static FORCE_INLINE constexpr HEXwrap HEX(T x) -{ - return HEXwrap{x}; -} - -FORCE_INLINE constexpr size_t buildprintpiece(void) -{ - return 0; -} - -template -enable_if_t::value, size_t> buildprintpiece(T x) -{ - // log_10(2^x) = x * log(2)/log(10) ~= x * 0.30103 - size_t constexpr numdigits = (sizeof(T) * CHAR_BIT + 1) / 3; - char str[numdigits + 2]; // +2 for '-', '\0' - - char * strptr = str; - - size_t totalChars; - if (x < 0) - { - size_t numChars = logbasenegative<10>(x); - totalChars = numChars+1; - *strptr++ = '-'; - strptr[numChars] = '\0'; - do - { - DivResult const qr = divrhs<10>(x); - x = qr.q; - strptr[numChars-1] = '0' - (char)qr.r; - } - while (--numChars); - } - else - { - size_t numChars = logbase<10>(x); - totalChars = numChars; - strptr[numChars] = '\0'; - do - { - DivResult const qr = divrhs<10>(x); - x = qr.q; - strptr[numChars-1] = '0' + (char)qr.r; - } - while (--numChars); - } - - PrintString(PRINT_HIGH, str); - return totalChars; -} - -template -enable_if_t::value, size_t> buildprintpiece(binwrap x) -{ - make_unsigned_t const data = x.data; - - int constexpr numChars = sizeof(x)*CHAR_BIT; - char str[numChars+1]; - str[numChars] = '\0'; - - for (int p = 0; p < numChars; ++p) - str[numChars - 1 - p] = '0' + (char)((data >> p) & 1); - - PrintString(PRINT_HIGH, str); - return numChars; -} - -template -enable_if_t::value, size_t> buildprintpiece(octwrap x) -{ - make_unsigned_t const data = x.data; - - int constexpr numChars = (sizeof(x)*CHAR_BIT + 2) / 3; - char str[numChars+1]; - str[numChars] = '\0'; - - for (int p = 0; p < numChars; ++p) - str[numChars - 1 - p] = '0' + (char)((data >> (p*3)) & 7); - - PrintString(PRINT_HIGH, str); - return numChars; -} - -template -enable_if_t::value, size_t> buildprintpiece(hexwrap x) -{ - static char const hexletters[] = "0123456789abcdef"; - - make_unsigned_t const data = x.data; - - int constexpr numChars = (sizeof(x)*CHAR_BIT + 3) >> 2; - char str[numChars+1]; - str[numChars] = '\0'; - - for (int p = 0; p < numChars; ++p) - str[numChars - 1 - p] = hexletters[(int)((data >> (p<<2)) & 0xF)]; - - PrintString(PRINT_HIGH, str); - return numChars; -} - -template -enable_if_t::value, size_t> buildprintpiece(HEXwrap x) -{ - static char const HEXletters[] = "0123456789ABCDEF"; - - make_unsigned_t const data = x.data; - - int constexpr numChars = (sizeof(x)*CHAR_BIT + 3) >> 2; - char str[numChars+1]; - str[numChars] = '\0'; - - for (int p = 0; p < numChars; ++p) - str[numChars - 1 - p] = HEXletters[(int)((data >> (p<<2)) & 0xF)]; - - PrintString(PRINT_HIGH, str); - return numChars; -} - -template -FORCE_INLINE size_t buildprintpiece(const T * x) -{ - return buildprintpiece(hex((uintptr_t)x)); -} - -FORCE_INLINE size_t buildprintpiece(char const *str) -{ - PrintString(PRINT_HIGH, str); - return strlen(str); -} - -template -static FORCE_INLINE size_t buildprint(T first) -{ - return buildprintpiece(first); -} - -template -size_t buildprint(T first, Args... args) -{ - size_t const len = buildprintpiece(first); - return len + buildprint(args...); -} - -// this file is incomplete. a fuller implementation exists but has not been completed and debugged. - -#endif - -#endif // print_h_ diff --git a/source/build/src/scriptfile.cpp b/source/build/src/scriptfile.cpp index 395a642cc..f645b98fb 100644 --- a/source/build/src/scriptfile.cpp +++ b/source/build/src/scriptfile.cpp @@ -381,7 +381,7 @@ int32_t scriptfile_getsymbolvalue(char const *name, int32_t *val) sscanf(name + 2, "%" PRIx64 "", &x); if (EDUKE32_PREDICT_FALSE(x > UINT32_MAX)) - buildprint("warning: number 0x", hex(x), " truncated to 32 bits.\n"); + Printf("warning: number 0x%x" PRIx64 " truncated to 32 bits.\n", x); *val = x; return 1; diff --git a/source/core/gamestruct.h b/source/core/gamestruct.h index cf120e4f2..588496e09 100644 --- a/source/core/gamestruct.h +++ b/source/core/gamestruct.h @@ -3,7 +3,6 @@ bool System_WantGuiCapture(); // During playing this tells us whether the game must be paused due to active GUI elememts. #include -#include "print.h" #include "vectors.h" struct GameStats