/* 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: dk4error.ctr */ /** @file dk4error.c The dk4error module. */ #line 533 "dk4error.ctr" #include "dk4conf.h" #if DK4_ON_WINDOWS && (DK4_WIN_AVOID_CRT || DK4_WIN_DENY_CRT) #ifndef WINDOWS_H_INCLUDED #include #define WINDOWS_H_INCLUDED 1 #endif #endif #include "dk4types.h" #include "dk4error.h" #include "dk4mem.h" #if DK4_HAVE_STRING_H #ifndef STRING_H_INCLUDED #include #define STRING_H_INCLUDED 1 #endif #endif #line 557 "dk4error.ctr" void dk4error_init(dk4_er_t *erp) { #line 564 "dk4error.ctr" if (NULL != erp) { #if DK4_ON_WINDOWS /* +++ Windows */ #if DK4_WIN_AVOID_CRT || DK4_WIN_DENY_CRT ZeroMemory(erp, sizeof(dk4_er_t)); #else memset(erp, 0, sizeof(dk4_er_t)); #endif /* --- Windows */ #else /* +++ non-Windows */ #if DK4_HAVE_MEMSET memset(erp, 0, sizeof(dk4_er_t)); #else #if DK4_HAVE_BZERO bzero(erp, sizeof(dk4_er_t); #else { register char *ptr; register size_t sz; ptr = (char *)erp; sz = sizeof(dk4_er_t); while(sz--) { *(ptr++) = '\0'; } } #endif #endif /* --- non-Windows */ #endif erp->ec = DK4_E_NONE; } #line 594 "dk4error.ctr" } void dk4error_set_simple_error_code(dk4_er_t *erp, int ec) { if (NULL != erp) { if (DK4_E_NONE == erp->ec) { erp->ec = ec; } } } void dk4error_set_elsize_nelem(dk4_er_t *erp, int ec, size_t sz, size_t ne) { if (NULL != erp) { if (DK4_E_NONE == erp->ec) { erp->ec = ec; (erp->dt).mem.elsize = sz; (erp->dt).mem.nelem = ne; } } } void dk4error_set_idetails(dk4_er_t *erp, int ec, int errnval) { if (NULL != erp) { if (DK4_E_NONE == erp->ec) { erp->ec = ec; (erp->dt).iDetails1 = errnval; } } } void dk4error_set_ldetails(dk4_er_t *erp, int ec, long errnval) { if (NULL != erp) { if (DK4_E_NONE == erp->ec) { erp->ec = ec; (erp->dt).lDetails1 = errnval; } } } void dk4error_set_with_position( dk4_er_t *erp, int ec, dk4_um_t byteno, dk4_um_t lineno, dk4_um_t charno, dk4_um_t charinline ) { if (NULL != erp) { if (DK4_E_NONE == erp->ec) { erp->ec = ec; #line 663 "dk4error.ctr" #line 664 "dk4error.ctr" #line 665 "dk4error.ctr" #line 666 "dk4error.ctr" (erp->dt).fpos.byteno = byteno; (erp->dt).fpos.lineno = lineno; (erp->dt).fpos.charno = charno; (erp->dt).fpos.charinline = charinline; } } } void dk4error_copy(dk4_er_t *dptr, const dk4_er_t *sptr) { if ((NULL != dptr) && (NULL != sptr)) { if (DK4_E_NONE == dptr->ec) { #if DK4_ON_WINDOWS /* +++ Windows */ #if DK4_WIN_AVOID_CRT || DK4_WIN_DENY_CRT CopyMemory(dptr, sptr, sizeof(dk4_er_t)); #else memcpy(dptr, sptr, sizeof(dk4_er_t)); #endif /* --- Windows */ #else /* +++ non-Windows */ #if DK4_HAVE_MEMCPY memcpy(dptr, sptr, sizeof(dk4_er_t)); #else #if DK4_HAVE_BCOPY bcopy(sptr, dptr, sizeof(dk4_er_t)); #else register unsigned char *dp; /* Destination pointer */ register const unsigned char *sp; /* Source pointer */ register size_t xsz; /* Number remaining bytes */ dp = (unsigned char *)dptr; sp = (const unsigned char *)sptr; xsz = sizeof(dk4_er_t); while(0 < xsz--) { *(dp++) = *(sp++); } #endif #endif /* --- non-Windows */ #endif } } }