diff options
author | Norbert Preining <norbert@preining.info> | 2020-10-12 03:04:00 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2020-10-12 03:04:00 +0000 |
commit | 0ce40abb18ec02ec6fd6bcc5f21612c88daa7578 (patch) | |
tree | 416289fe1448873fd8ca33051f50ad85bffa8aaa /support/dktools/dk4numl.ctr | |
parent | fdb18507cd80dc17f5a5256153d34668b4f4e61c (diff) |
CTAN sync 202010120303
Diffstat (limited to 'support/dktools/dk4numl.ctr')
-rw-r--r-- | support/dktools/dk4numl.ctr | 143 |
1 files changed, 0 insertions, 143 deletions
diff --git a/support/dktools/dk4numl.ctr b/support/dktools/dk4numl.ctr deleted file mode 100644 index 2789707eae..0000000000 --- a/support/dktools/dk4numl.ctr +++ /dev/null @@ -1,143 +0,0 @@ -%% options - -copyright owner = Dirk Krause -copyright year = 2015-xxxx -SPDX-License-Identifier: BSD-3-Clause - - - -%% header - -/** @file - Text representation length for numbers. - When showing information in a table one needs to know the length - of each field. - This module provides the dk4numlength() funtion to find the string - length needed for an integer value of a given size (number of bytes). - - CRT on Windows: Not used. -*/ - -#ifndef DK4CONF_H_INCLUDED -#if DK4_BUILDING_DKTOOLS4 -#include "dk4conf.h" -#else -#include <dktools-4/dk4conf.h> -#endif -#endif - -#ifndef DK4TYPES_H_INCLUDED -#if DK4_BUILDING_DKTOOLS4 -#include "dk4types.h" -#else -#include <dktools-4/dk4types.h> -#endif -#endif - - -#ifdef __cplusplus -extern "C" { -#endif - -/** Find number of digits for data type. - @param isz Integer data type size in bytes. - @param sgn Flag: Signed data type (0=unsigned, other=signed). - @return Maximum string length used when data is shown as text. -*/ -size_t -dk4numlength(size_t isz, int sgn); - -#ifdef __cplusplus -} -#endif - -%% module - -#include "dk4conf.h" -#include "dk4error.h" -#include "dk4numl.h" -#include "dk4maadu.h" - -size_t -dk4numlength(size_t isz, int sgn) -{ - dk4_er_t er; - dk4_um_t co; - size_t back = 0; - if (1 < isz) { - if (2 < isz) { - if (4 < isz) { - if (8 < isz) { - if (16 < isz) { -#if VERSION_BEFORE_20141122 - if (0 != (isz % 2)) { isz++; } - back = 5 * (isz / 2); - if (0 != sgn) { back++; } -#else - dk4error_init(&er); - if (0 != sgn) { - co = dk4ma_um_mul( - (dk4_um_t)30104UL, - dk4ma_um_sub( - dk4ma_um_mul((dk4_um_t)8UL, (dk4_um_t)isz, &er), - (dk4_um_t)1UL, - &er - ), - &er - ); - if ((dk4_um_t)0UL != (co % (dk4_um_t)100000UL)) { - co = co / (dk4_um_t)100000UL; - co++; - } else { - co = co / (dk4_um_t)100000UL; - } - co++; - if ((dk4_um_t)(SIZE_MAX) >= co) { - back = (size_t)co; - } else { - back = (size_t)co; - er.ec = DK4_E_MATH_OVERFLOW; - } - } else { - co = dk4ma_um_mul( - (dk4_um_t)30104UL, - dk4ma_um_mul((dk4_um_t)8UL, (dk4_um_t)isz, &er), - &er - ); - if ((dk4_um_t)0UL != (co % (dk4_um_t)100000UL)) { - co = co / (dk4_um_t)100000UL; - co++; - } else { - co = co / (dk4_um_t)100000UL; - } - if ((dk4_um_t)(SIZE_MAX) >= co) { - back = (size_t)co; - } else { - back = (size_t)co; - er.ec = DK4_E_MATH_OVERFLOW; - } - } - if (DK4_E_NONE != er.ec) { - if (0 != (isz % 2)) { isz++; } - back = 5 * (isz / 2); - if (0 != sgn) { back++; } - } -#endif - } else { - back = ((0 != sgn) ? 41 : 40); - } - } else { - back = ((0 != sgn) ? 21 : 20); - } - } else { - back = ((0 != sgn) ? 11 : 10); - } - } else { - back = ((0 != sgn) ? 6 : 5); - } - } else { - back = ((0 != sgn) ? 4 : 3); - } - return back; -} - |