diff options
Diffstat (limited to 'support/dktools/dk4maau32.ctr')
-rw-r--r-- | support/dktools/dk4maau32.ctr | 282 |
1 files changed, 0 insertions, 282 deletions
diff --git a/support/dktools/dk4maau32.ctr b/support/dktools/dk4maau32.ctr deleted file mode 100644 index 59d6e0d308..0000000000 --- a/support/dktools/dk4maau32.ctr +++ /dev/null @@ -1,282 +0,0 @@ -%% options - -copyright owner = Dirk Krause -copyright year = 2016-xxxx -SPDX-License-Identifier: BSD-3-Clause - - -%% header - -/** @file dk4maau32.h Operations on uint32_t data. - - CRT on Windows: Optional. -*/ - - -#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 - -#ifndef DK4ERROR_H_INCLUDED -#if DK4_BUILDING_DKTOOLS4 -#include "dk4error.h" -#else -#include <dktools-4/dk4error.h> -#endif -#endif - -#if DK4_HAVE_STDLIB_H -#ifndef DK4_STDLIB_H_INCLUDED -#include <stdlib.h> -#define DK4_STDLIB_H_INCLUDED 1 -#endif -#endif - -#if DK4_HAVE_SYS_TYPES_H -#ifndef DK4_SYS_TYPES_H_INCLUDED -#include <sys/types.h> -#define DK4_SYS_TYPES_H_INCLUDED 1 -#endif -#endif - -#if DK4_HAVE_STDINT_H -#ifndef DK4_STDINT_H_INCLUDED -#include <stdint.h> -#define DK4_STDINT_H_INCLUDED 1 -#endif -#endif - -#ifndef UINT32_MAX -#define UINT32_MAX ((uint32_t)4294967295UL) -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -/** Addition of uint32_t. - @param a Left operand. - @param b Right operand. - @param erp Error report, may be NULL. - @return Operation result. - - Error codes: - - DK4_E_INVALID_ARGUMENTS<br> - if a or b is out of range - - DK4_E_MATH_OVERFLOW<br> - if a mathematical overfow occured. -*/ -uint32_t -dk4ma_uint32_t_add(uint32_t a, uint32_t b, dk4_er_t *erp); - -/** Substraction of uint32_t. - @param a Left operand. - @param b Right operand. - @param erp Error report, may be NULL. - @return Operation result. - - Error codes: - - DK4_E_INVALID_ARGUMENTS<br> - if a or b is out of range - - DK4_E_MATH_OVERFLOW<br> - if a mathematical overfow occured. -*/ -uint32_t -dk4ma_uint32_t_sub(uint32_t a, uint32_t b, dk4_er_t *erp); - -/** Multiplication of uint32_t. - @param a Left operand. - @param b Right operand. - @param erp Error report, may be NULL. - @return Operation result. - - Error codes: - - DK4_E_INVALID_ARGUMENTS<br> - if a or b is out of range - - DK4_E_MATH_OVERFLOW<br> - if a mathematical overfow occured. -*/ -uint32_t -dk4ma_uint32_t_mul(uint32_t a, uint32_t b, dk4_er_t *erp); - -/** Division of uint32_t. - @param a Left operand. - @param b Right operand. - @param erp Error report, may be NULL. - @return Operation result. - - Error codes: - - DK4_E_INVALID_ARGUMENTS<br> - if a or b is out of range - - DK4_E_MATH_OVERFLOW<br> - if a mathematical overfow occured, - - DK4_E_MATH_DIVZERO<br> - if b is 0. -*/ -uint32_t -dk4ma_uint32_t_div(uint32_t a, uint32_t b, dk4_er_t *erp); - -/** Convert dk4_um_t value to uint32_t. - @param u Value to convert. - @param erp Error report, may be NULL. - @return Conversion result. - - Error codes: DK4_E_MATH_OVERFLOW. -*/ -uint32_t -dk4ma_uint32_from(dk4_um_t u, dk4_er_t *erp); - -/** Convert double to signed char. - @param d Value to convert. - @param erp Error report, may be NULL. - @return Conversion result. - - Error codes: DK4_E_OVERFLOW. -*/ -uint32_t -dk4ma_uint32_from_double(double d, dk4_er_t *erp); - -#ifdef __cplusplus -} -#endif - - -%% module - -#include "dk4conf.h" -#include "dk4maau32.h" - - - -$!trace-include - - - -uint32_t -dk4ma_uint32_t_add(uint32_t a, uint32_t b, dk4_er_t *erp) -{ - if (DK4_U32_MAX < a) { - dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); - goto finished; - } - if (DK4_U32_MAX < b) { - dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); - goto finished; - } - if ((DK4_U32_MAX - a) < b) { - dk4error_set_simple_error_code(erp, DK4_E_MATH_OVERFLOW); - } -finished: - return (a + b); -} - - - -uint32_t -dk4ma_uint32_t_sub(uint32_t a, uint32_t b, dk4_er_t *erp) -{ - if (DK4_U32_MAX < a) { - dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); - goto finished; - } - if (DK4_U32_MAX < b) { - dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); - goto finished; - } - if (b > a) { - dk4error_set_simple_error_code(erp, DK4_E_MATH_OVERFLOW); - } -finished: - return (a - b); -} - - - -uint32_t -dk4ma_uint32_t_mul(uint32_t a, uint32_t b, dk4_er_t *erp) -{ - if (DK4_U32_MAX < a) { - dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); - goto finished; - } - if (DK4_U32_MAX < b) { - dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); - goto finished; - } - if ((0L < a) && (0L < b)) { - if ((DK4_U32_MAX / a) < b) { - dk4error_set_simple_error_code(erp, DK4_E_MATH_OVERFLOW); - } - } -finished: - return (a * b); -} - - - -uint32_t -dk4ma_uint32_t_div(uint32_t a, uint32_t b, dk4_er_t *erp) -{ - uint32_t back = 0; - if (DK4_U32_MAX < a) { - dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); - goto finished; - } - if (DK4_U32_MAX < b) { - dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); - goto finished; - } -finished: - if (0L != b) { - back = a / b; - } else { - dk4error_set_simple_error_code(erp, DK4_E_MATH_DIVZERO); - } - return back; -} - - - -uint32_t -dk4ma_uint32_from(dk4_um_t u, dk4_er_t *erp) -{ - if ((dk4_um_t)(DK4_U32_MAX) < u) { - dk4error_set_simple_error_code(erp, DK4_E_MATH_OVERFLOW); - } - return ((uint32_t)u); -} - - - - -uint32_t -dk4ma_uint32_from_double(double d, dk4_er_t *erp) -{ - uint32_t back = 0UL; - if ((double)(DK4_U32_MAX) < d) { - dk4error_set_simple_error_code(erp, DK4_E_MATH_OVERFLOW); - back = DK4_U32_MAX; - } - else { - if (0.0 > d) { - dk4error_set_simple_error_code(erp,DK4_E_MATH_OVERFLOW); - } - else { - back = (uint32_t)d; - } - } - return back; -} - |