/* 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: dk4mao8h.ctr */ /** @file dk4mao8h.c The dk4mao8h module. */ #line 83 "dk4mao8h.ctr" #include "dk4conf.h" #if DK4_HAVE_ASSERT_H #ifndef ASSERT_H_INCLUDED #include #define ASSERT_H_INCLUDED 1 #endif #endif #include "dk4mao8h.h" #include "dk4numco.h" #include "dk4error.h" #line 101 "dk4mao8h.ctr" int dk4ma_write_c8_hex_unsigned( char *dptr, size_t sz, dk4_um_t val, size_t padsz, dk4_er_t *erp ) { char buf[4*sizeof(dk4_um_t) + 16]; /* Buffer */ size_t used = 0; /* Number of used characters */ size_t i = 0; /* Copy buffer to destination */ int cc = 1; /* Flag: Can continue */ int err = 0; /* Flag: Error occued */ int back = 0; /* Function result */ #line 116 "dk4mao8h.ctr" #if DK4_USE_ASSERT assert(NULL != dptr); assert(0 < sz); #endif if (NULL != dptr) { *dptr = '\0'; } if (1 == padsz) { padsz = 2 * sizeof(dk4_um_t); } if ((NULL != dptr) && (0 < sz) && (padsz < sz)) { #line 123 "dk4mao8h.ctr" do { #line 124 "dk4mao8h.ctr" switch((int)(val % (dk4_um_t)16UL)) { case 0: { #line 126 "dk4mao8h.ctr" if(used < sizeof(buf)) { buf[used++] = '0'; } else { err = 1; } } break; case 1: { #line 129 "dk4mao8h.ctr" if(used < sizeof(buf)) { buf[used++] = '1'; } else { err = 1; } } break; case 2: { #line 132 "dk4mao8h.ctr" if(used < sizeof(buf)) { buf[used++] = '2'; } else { err = 1; } } break; case 3: { #line 135 "dk4mao8h.ctr" if(used < sizeof(buf)) { buf[used++] = '3'; } else { err = 1; } } break; case 4: { #line 138 "dk4mao8h.ctr" if(used < sizeof(buf)) { buf[used++] = '4'; } else { err = 1; } } break; case 5: { #line 141 "dk4mao8h.ctr" if(used < sizeof(buf)) { buf[used++] = '5'; } else { err = 1; } } break; case 6: { #line 144 "dk4mao8h.ctr" if(used < sizeof(buf)) { buf[used++] = '6'; } else { err = 1; } } break; case 7: { #line 147 "dk4mao8h.ctr" if(used < sizeof(buf)) { buf[used++] = '7'; } else { err = 1; } } break; case 8: { #line 150 "dk4mao8h.ctr" if(used < sizeof(buf)) { buf[used++] = '8'; } else { err = 1; } } break; case 9: { #line 153 "dk4mao8h.ctr" if(used < sizeof(buf)) { buf[used++] = '9'; } else { err = 1; } } break; case 10: { #line 156 "dk4mao8h.ctr" if(used < sizeof(buf)) { buf[used++] = 'A'; } else { err = 1; } } break; case 11: { #line 159 "dk4mao8h.ctr" if(used < sizeof(buf)) { buf[used++] = 'B'; } else { err = 1; } } break; case 12: { #line 162 "dk4mao8h.ctr" if(used < sizeof(buf)) { buf[used++] = 'C'; } else { err = 1; } } break; case 13: { #line 165 "dk4mao8h.ctr" if(used < sizeof(buf)) { buf[used++] = 'D'; } else { err = 1; } } break; case 14: { #line 168 "dk4mao8h.ctr" if(used < sizeof(buf)) { buf[used++] = 'E'; } else { err = 1; } } break; case 15: { #line 171 "dk4mao8h.ctr" if(used < sizeof(buf)) { buf[used++] = 'F'; } else { err = 1; } } break; } val = val / (dk4_um_t)16UL; if ((dk4_um_t)0UL == val) { cc = 0; } } while((1 == cc) && (0 == err)); if (0 == err) { #line 178 "dk4mao8h.ctr" if (used < sz) { #line 179 "dk4mao8h.ctr" if ((0 < padsz) && (used < padsz)) { #line 180 "dk4mao8h.ctr" for (i = 0; i < (padsz - used); i++) { dptr[i] = '0'; } for (i = 0; i < used; i++) { dptr[padsz - 1 - i] = buf[i]; } dptr[padsz] = '\0'; back = 1; } else { #line 189 "dk4mao8h.ctr" for (i = 0; i < used; i++) { dptr[i] = buf[used - 1 - i]; } dptr[used] = '\0'; back = 1; } } else { #line 196 "dk4mao8h.ctr" dk4error_set_simple_error_code(erp, DK4_E_BUFFER_TOO_SMALL); } } else { #line 199 "dk4mao8h.ctr" dk4error_set_simple_error_code(erp, DK4_E_BUG); } } else { #line 202 "dk4mao8h.ctr" dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } #line 205 "dk4mao8h.ctr" return back; } int dk4ma_write_c8_hex_signed( char *dptr, size_t sz, dk4_im_t val, size_t padsz, dk4_er_t *erp ) { return (dk4ma_write_c8_hex_unsigned(dptr, sz, (dk4_um_t)val, padsz, erp)); }