/* 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: dk4a85e.ctr */ /** @file dk4a85e.c The dk4a85e module. */ #line 150 "dk4a85e.ctr" #include "dk4conf.h" #if DK4_HAVE_ASSERT_H #ifndef ASSERT_H_INCLUDED #include #define ASSERT_H_INCLUDED 1 #endif #endif #include "dk4a85e.h" #include "dk4edstm.h" #include "dk4mem.h" #line 167 "dk4a85e.ctr" static const unsigned long dk4a85e_pow_85[] = { (85UL * 85UL * 85UL * 85UL), (85UL * 85UL * 85UL), (85UL * 85UL), 85UL }; void dk4a85_enc_init(dk4_a85_enc_t *enc, int az, dk4_er_t *erp) { #if DK4_USE_ASSERT assert(NULL != enc); #endif if (NULL != enc) { DK4_MEMRES(enc, sizeof(dk4_a85_enc_t)); enc->ob[5] = '\0'; enc->ci = 0; enc->os = 0; enc->az = ((0 != az) ? 1 : 0); } else { dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } } int dk4a85_enc_add(dk4_a85_enc_t *enc, unsigned char input, dk4_er_t *erp) { unsigned long val; unsigned long v1; int back = DK4_EDSTM_ERROR; #if DK4_USE_ASSERT assert(NULL != enc); #endif if (NULL != enc) { back = DK4_EDSTM_ACCEPT; enc->ib[enc->ci] = input; enc->ci += 1; if (4 <= enc->ci) { back = DK4_EDSTM_FINISHED; val = (((unsigned long)(enc->ib[0]) << 24) & 0xFF000000UL) | (((unsigned long)(enc->ib[1]) << 16) & 0x00FF0000UL) | (((unsigned long)(enc->ib[2]) << 8) & 0x0000FF00UL) | (((unsigned long)(enc->ib[3]) ) & 0x000000FFUL); if ((0UL == val) && (0 != enc->az)) { enc->ob[0] = 'z'; enc->ob[1] = '\0'; enc->os = 1; } else { v1 = val / dk4a85e_pow_85[0]; enc->ob[0] = (char)33 + (char)v1; val = val % dk4a85e_pow_85[0]; v1 = val / dk4a85e_pow_85[1]; enc->ob[1] = (char)33 + (char)v1; val = val % dk4a85e_pow_85[1]; v1 = val / dk4a85e_pow_85[2]; enc->ob[2] = (char)33 + (char)v1; val = val % dk4a85e_pow_85[2]; v1 = val / dk4a85e_pow_85[3]; enc->ob[3] = (char)33 + (char)v1; val = val % dk4a85e_pow_85[3]; enc->ob[4] = (char)33 + (char)val; enc->os = 5; } enc->ci = 0; } } else { dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } return back; } int dk4a85_enc_finish(dk4_a85_enc_t *enc, dk4_er_t *erp) { unsigned long val; unsigned long v1; int back = DK4_EDSTM_ERROR; #line 254 "dk4a85e.ctr" #if DK4_USE_ASSERT assert(NULL != enc); #endif if (NULL != enc) { if (0 == enc->ci) { back = DK4_EDSTM_ACCEPT; enc->ob[0] = '\0'; enc->os = 0; } else { switch (enc->ci) { case 1: { #line 266 "dk4a85e.ctr" back = DK4_EDSTM_FINISHED; val = (((unsigned long)(enc->ib[0]) << 24) & 0xFF000000UL); #line 269 "dk4a85e.ctr" v1 = val / dk4a85e_pow_85[0]; enc->ob[0] = (char)33 + (char)v1; #line 272 "dk4a85e.ctr" val = val % dk4a85e_pow_85[0]; v1 = val / dk4a85e_pow_85[1]; enc->ob[1] = (char)33 + (char)v1; #line 276 "dk4a85e.ctr" enc->os = 2; enc->ci = 0; } break; case 2: { #line 281 "dk4a85e.ctr" back = DK4_EDSTM_FINISHED; val = (((unsigned long)(enc->ib[0]) << 24) & 0xFF000000UL) | (((unsigned long)(enc->ib[1]) << 16) & 0x00FF0000UL); #line 285 "dk4a85e.ctr" v1 = val / dk4a85e_pow_85[0]; enc->ob[0] = (char)33 + (char)v1; #line 288 "dk4a85e.ctr" val = val % dk4a85e_pow_85[0]; v1 = val / dk4a85e_pow_85[1]; enc->ob[1] = (char)33 + (char)v1; #line 292 "dk4a85e.ctr" val = val % dk4a85e_pow_85[1]; v1 = val / dk4a85e_pow_85[2]; enc->ob[2] = (char)33 + (char)v1; #line 296 "dk4a85e.ctr" enc->os = 3; enc->ci = 0; } break; case 3: { #line 301 "dk4a85e.ctr" back = DK4_EDSTM_FINISHED; val = (((unsigned long)(enc->ib[0]) << 24) & 0xFF000000UL) | (((unsigned long)(enc->ib[1]) << 16) & 0x00FF0000UL) | (((unsigned long)(enc->ib[2]) << 8) & 0x0000FF00UL); #line 306 "dk4a85e.ctr" v1 = val / dk4a85e_pow_85[0]; enc->ob[0] = (char)33 + (char)v1; #line 309 "dk4a85e.ctr" val = val % dk4a85e_pow_85[0]; v1 = val / dk4a85e_pow_85[1]; enc->ob[1] = (char)33 + (char)v1; #line 313 "dk4a85e.ctr" val = val % dk4a85e_pow_85[1]; v1 = val / dk4a85e_pow_85[2]; enc->ob[2] = (char)33 + (char)v1; #line 317 "dk4a85e.ctr" val = val % dk4a85e_pow_85[2]; v1 = val / dk4a85e_pow_85[3]; enc->ob[3] = (char)33 + (char)v1; #line 321 "dk4a85e.ctr" enc->os = 4; enc->ci = 0; } break; default: { #line 326 "dk4a85e.ctr" back = DK4_EDSTM_FINISHED; val = (((unsigned long)(enc->ib[0]) << 24) & 0xFF000000UL) | (((unsigned long)(enc->ib[1]) << 16) & 0x00FF0000UL) | (((unsigned long)(enc->ib[2]) << 8) & 0x0000FF00UL) | (((unsigned long)(enc->ib[3]) ) & 0x000000FFUL); #line 332 "dk4a85e.ctr" if ((0UL == val) && (0 != enc->az)) { enc->ob[0] = 'z'; enc->ob[1] = '\0'; enc->os = 1; } else { v1 = val / dk4a85e_pow_85[0]; enc->ob[0] = (char)33 + (char)v1; #line 340 "dk4a85e.ctr" val = val % dk4a85e_pow_85[0]; v1 = val / dk4a85e_pow_85[1]; enc->ob[1] = (char)33 + (char)v1; #line 344 "dk4a85e.ctr" val = val % dk4a85e_pow_85[1]; v1 = val / dk4a85e_pow_85[2]; enc->ob[2] = (char)33 + (char)v1; #line 348 "dk4a85e.ctr" val = val % dk4a85e_pow_85[2]; v1 = val / dk4a85e_pow_85[3]; enc->ob[3] = (char)33 + (char)v1; #line 352 "dk4a85e.ctr" val = val % dk4a85e_pow_85[3]; enc->ob[4] = (char)33 + (char)val; #line 355 "dk4a85e.ctr" enc->os = 5; } enc->ci = 0; } break; } } } else { dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } #line 364 "dk4a85e.ctr" return back; } int dk4a85_enc_output( const char **dptr, size_t *szptr, dk4_a85_enc_t const *enc, dk4_er_t *erp ) { int back = 0; #if DK4_USE_ASSERT assert(NULL != enc); assert(NULL != dptr); assert(NULL != szptr); #endif if ((NULL != dptr) && (NULL != szptr) && (NULL != enc)) { *dptr = &(enc->ob[0]); *szptr = enc->os; if (0 < enc->os) { back = 1; } } else { dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } return back; }