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/dk4mai8dbl.c | |
parent | fdb18507cd80dc17f5a5256153d34668b4f4e61c (diff) |
CTAN sync 202010120303
Diffstat (limited to 'support/dktools/dk4mai8dbl.c')
-rw-r--r-- | support/dktools/dk4mai8dbl.c | 229 |
1 files changed, 0 insertions, 229 deletions
diff --git a/support/dktools/dk4mai8dbl.c b/support/dktools/dk4mai8dbl.c deleted file mode 100644 index 42643e0e0f..0000000000 --- a/support/dktools/dk4mai8dbl.c +++ /dev/null @@ -1,229 +0,0 @@ -/* -Copyright (C) 2015-2020, Dirk Krause -SPDX-License-Identifier: BSD-3-Clause -*/ - -/* - WARNING: This file was generated by the dkct program (see - http://dktools.sourceforge.net/ for details). - Changes you make here will be lost if dkct is run again! - You should modify the original source and run dkct on it. - Original source: dk4mai8dbl.ctr -*/ - -/** @file dk4mai8dbl.c The dk4mai8dbl module. -*/ - - -#line 90 "dk4mai8dbl.ctr" - -#include "dk4conf.h" - -#if DK4_HAVE_ASSERT_H -#ifndef ASSERT_H_INCLUDED -#include <assert.h> -#define ASSERT_H_INCLUDED 1 -#endif -#endif - -#include "dk4mai8dbl.h" - -#include "dk4str8.h" - -#if DK4_HAVE_ERRNO_H -#ifndef ERRNO_H_INCLUDED -#include <errno.h> -#define ERRNO_H_INCLUDED 1 -#endif -#endif - -#if DK4_HAVE_LOCALE_H -#ifndef LOCALE_H_INCLUDED -#include <locale.h> -#define LOCALE_H_INCLUDED 1 -#endif -#endif - -#if DK4_HAVE_STDLIB_H -#ifndef STDLIB_H_INCLUDED -#include <stdlib.h> -#define STDLIB_H_INCLUDED 1 -#endif -#endif - -#if DK4_HAVE_MATH_H -#ifndef MATH_H_INCLUDED -#if DK4_ON_WINDOWS -#ifndef _USE_MATH_DEFINES -#define _USE_MATH_DEFINES 1 -#endif -#endif -#include <math.h> -#define MATH_H_INCLUDED 1 -#endif -#endif - - - -/** Default locale to use. -*/ -static const char locale_kw[] = { "C" }; - - - -/** Read double value from char string. - @param rp Address of result variable. - @param src String to process. - @param endptr Address of pointer variable. - A pointer to the first character not processed - is stored here. The function may also store - a NULL pointer here. - The pointer variable is probably left unchanged - on errors or if strtod() is not available on your - system (the sscanf() function is used as fallback). - @param atg Allow trailing garbage: - 0=no unprocessable trailing bytes allowed, - 1=trailing whitespaces allowed, - 2=any trailing characaters allowed. - @param erp Error report, may be NULL. - @return 1 on success, 0 on error. - - Error codes: - DK4_E_INVALID_ARGUMENTS if rp or src is NULL, - DK4_E_SYNTAX if there are unexpected characters in the - string, - DK4_E_MATH_OVERFLOW if a mathematical overflow occurs, - DK4_E_MATH_UNDERFLOW if a mathematical underflow occurs. -*/ - -static -int -dk4ma_internal_input_c8_double( - double *rp, - const char *src, - const char **endptr, - int atg, - dk4_er_t *erp -) -{ -#if DK4_HAVE_STRTOD || DK4_HAVE__STRTOD - double val = 0.0; - char *myend = NULL; - int back = 0; - int xerr = 0; -#if DK4_USE_ASSERT - assert(NULL != rp); - assert(NULL != src); -#endif - if ((NULL != rp) && (NULL != src)) { - errno = 0; -#if DK4_HAVE_STRTOD - val = strtod(src, &myend); -#else - val = _strtod(src, &myend); -#endif - xerr = errno; - if (NULL != endptr) { *endptr = myend; } - if (myend != src) { - switch (atg) { - case 2: { - back = 1; - } break; - case 1: { - if (NULL != dk4str8_start(myend, NULL)) { - dk4error_set_simple_error_code(erp, DK4_E_SYNTAX); - } else { - back = 1; - } - } break; - default: { - if ('\0' == *myend) { - back = 1; - } else { - dk4error_set_simple_error_code(erp, DK4_E_SYNTAX); - } - } break; - } - if (1 == back) { - if (ERANGE == xerr) { - if (HUGE_VAL == val) { - back = 0; - dk4error_set_simple_error_code(erp, DK4_E_MATH_OVERFLOW); - } - if ((-HUGE_VAL) == val) { - back = 0; - dk4error_set_simple_error_code(erp, DK4_E_MATH_OVERFLOW); - } - if (0.0 == val) { - back = 0; - dk4error_set_simple_error_code(erp, DK4_E_MATH_UNDERFLOW); - } - } - } - } else { - dk4error_set_simple_error_code(erp, DK4_E_SYNTAX); - } - if (1 == back) { - *rp = val; - } - } else { - dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); - } - return back; -#else -#if DK4_USE_PRINTF_SCANF - double val = 0.0; - int back = 0; -#if DK4_USE_ASSERT - assert(NULL != rp); - assert(NULL != src); -#endif - if ((NULL != rp) && (NULL != src)) { - if (1 == sscanf(src, "%lf", &val)) { - *rp = val; - back = 1; - } else { - dk4error_set_simple_error_code(erp, DK4_E_SYNTAX); - } - } else { - dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); - } - return back; -#else - dk4error_set_simple_error_code(erp, DK4_E_NOT_SUPPORTED); - return 0; -#endif -#endif -} - - - -int -dk4ma_input_c8_double( - double *rp, - const char *src, - const char **endptr, - int atg, - dk4_er_t *erp -) -{ -#if (DK4_HAVE_SETLOCALE) && defined(LC_NUMERIC) - char *oldloc = NULL; -#endif - int back = 0; -#if DK4_USE_ASSERT - assert(NULL != rp); - assert(NULL != src); -#endif -#if (DK4_HAVE_SETLOCALE) && defined(LC_NUMERIC) - oldloc = setlocale(LC_NUMERIC, NULL); - (void)setlocale(LC_NUMERIC, locale_kw); - back = dk4ma_internal_input_c8_double(rp, src, endptr, atg, erp); - (void)setlocale(LC_NUMERIC, oldloc); -#else - back = dk4ma_internal_input_c8_double(rp, src, endptr, atg, erp); -#endif - return back; -} - - |