%% options copyright owner = Dirk Krause copyright year = 2015-xxxx SPDX-License-Identifier: BSD-3-Clause %% header /** @file dk4memcpl.h Copy memory within buffer from right to left. */ #ifndef DK4CONF_H_INCLUDED #if DK4_BUILDING_DKTOOLS4 #include "dk4conf.h" #else #include #endif #endif #ifndef DK4ERROR_H_INCLUDED #if DK4_BUILDING_DKTOOLS4 #include "dk4error.h" #else #include #endif #endif #ifdef __cplusplus extern "C" { #endif /** Copy memory from right to left. CRT on Windows: Not used. @param dst Destination buffer address. @param src Source buffer address. @param sz Number of bytes to copy. @param erp Error report, may be NULL. */ void dk4mem_cpy_to_left(void *dst, const void *src, size_t sz, dk4_er_t *erp); #ifdef __cplusplus } #endif %% module #include "dk4conf.h" #if DK4_HAVE_ASSERT_H #ifndef ASSERT_H_INCLUDED #include #define ASSERT_H_INCLUDED 1 #endif #endif #include "dk4memcpl.h" void dk4mem_cpy_to_left(void *dst, const void *src, size_t sz, dk4_er_t *erp) { unsigned char *dptr; const unsigned char *sptr; #if DK4_USE_ASSERT assert(NULL != dst); assert(NULL != src); assert(0 < sz); #endif if ((NULL != dst) && (NULL != src) && (0 < sz)) { dptr = (unsigned char *)dst; sptr = (const unsigned char *)src; while (0 < sz--) { *(dptr++) = *(sptr++); } } else { dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } }