summaryrefslogtreecommitdiff
path: root/support/dktools/dk4a85e.ctr
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2020-10-12 03:04:00 +0000
committerNorbert Preining <norbert@preining.info>2020-10-12 03:04:00 +0000
commit0ce40abb18ec02ec6fd6bcc5f21612c88daa7578 (patch)
tree416289fe1448873fd8ca33051f50ad85bffa8aaa /support/dktools/dk4a85e.ctr
parentfdb18507cd80dc17f5a5256153d34668b4f4e61c (diff)
CTAN sync 202010120303
Diffstat (limited to 'support/dktools/dk4a85e.ctr')
-rw-r--r--support/dktools/dk4a85e.ctr394
1 files changed, 0 insertions, 394 deletions
diff --git a/support/dktools/dk4a85e.ctr b/support/dktools/dk4a85e.ctr
deleted file mode 100644
index f3e26669e5..0000000000
--- a/support/dktools/dk4a85e.ctr
+++ /dev/null
@@ -1,394 +0,0 @@
-%% options
-
-copyright owner = Dirk Krause
-copyright year = 2015-xxxx
-SPDX-License-Identifier: BSD-3-Clause
-
-
-
-%% header
-
-/** @file dk4a85e.h ASCII-85 encoder.
-
-First initialize the encoder using the dk4a85_enc_init().
-
-Now add the binary bytes one by one using the dk4a85_enc_add() function, as
-long as you have bytes available and the function returns DK4_EDSTM_ACCEPT
-or DK4_EDSTM_FINISHED.
-
-If the function returns DK4_EDSTM_ACCEPT, no further action is required,
-the byte was successfully stored in the internal data structures.
-
-If dk4a85_enc_add() returns DK4_EDSTM_FINISHED, a sequence of 4 binary
-bytes was processed successfully, a 1 character or 5 character sequence
-was produced. Use dk4a85_enc_output() to obtain the characters.
-
-Input data length is not necessarily a multiple of 4, so after feeding
-all binary bytes some values might still be stored in the encoder.
-Use dk4a85_enc_finish() to check whether an incomplete final sequence
-is available. If the function returns DK4_EDSTM_FINISHED, use
-dk4a85_enc_output() to obtain the text characters for the final bytes.
-
-*/
-
-#ifndef DK4CONF_H_INCLUDED
-#if DK4_BUILDING_DKTOOLS4
-#include "dk4conf.h"
-#else
-#include <dktools-4/dk4conf.h>
-#endif
-#endif
-
-#ifndef DK4ERROR_H_INCLUDED
-#if DK4_BUILDING_DKTOOLS4
-#include "dk4error.h"
-#else
-#include <dktools-4/dk4error.h>
-#endif
-#endif
-
-#ifndef DK4EDSTM_H_INCLUDED
-#if DK4_BUILDING_DKTOOLS4
-#include "dk4edstm.h"
-#else
-#include <dktools-4/dk4edstm.h>
-#endif
-#endif
-
-
-
-/** ASCII 85 encoder.
-*/
-typedef struct {
- char ob[6]; /**< Output bytes, 5 + finalizer */
- unsigned char ib[4]; /**< Input bytes to process. */
- size_t ci; /**< Index of current input byte. */
- size_t os; /**< Number of outupt bytes available */
- short az; /**< Allow z encoding */
-} dk4_a85_enc_t;
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/** Initialize ASCII 85 encoder before adding data.
- @param enc Encoder to initialize.
- @param az Flag: Allow 'z' output character.
- @param erp Error report, may be NULL.
-
- Error codes:
- - DK4_E_INVALID_ARGUMENTS if enc is NULL.
-*/
-void
-dk4a85_enc_init(dk4_a85_enc_t *enc, int az, dk4_er_t *erp);
-
-/** Add one byte to encoder.
- @param enc Encoder to use.
- @param input Input byte to add.
- @param erp Error report, may be NULL.
- @return Action to take, one from:
- - DK4_EDSTM_ACCEPT<br>
- if input was accepted, no further action necessary at the moment.
- - DK4_EDSTM_FINISHED<br>
- if a sequence of 4 input bytes was completed, use
- dk4a85_enc_output() to obtain the text characters.
- - DK4_EDSTM_ERROR<br>
- if an error occured.
-
- Error codes:
- - DK4_E_INVALID_ARGUMENTS if enc is NULL.
-*/
-int
-dk4a85_enc_add(dk4_a85_enc_t *enc, unsigned char input, dk4_er_t *erp);
-
-/** Check for incomplete sequence in state machine after processing
- all input bytes.
- @param enc Encoder to use.
- @param erp Error report, may be NULL.
- @return Action to take, one from:
- - DK4_EDSTM_ACCEPT<br>
- if there is no incomplete sequence in the state machine,
- no further action necessary.
- - DK4_EDSTM_FINISHED<br>
- if an incomplete final sequence is available, use
- dk4a85_enc_output() to obtain the text characters.
- - DK4_EDSTM_ERROR<br>
- if an error occured.
-
- Error codes:
- - DK4_E_INVALID_ARGUMENTS if enc is NULL.
-*/
-int
-dk4a85_enc_finish(dk4_a85_enc_t *enc, dk4_er_t *erp);
-
-/** Retrieve text sequence.
- @param dptr Address of destination pointer to set, should be
- initialized to NULL.
- @param szptr Address of size variable to set, should be
- initialized to 0.
- @param enc Encoder to use.
- @param erp Error report, may be NULL.
- @return 1 on success (text available), 0 otherwise.
-
- Error codes:
- - DK4_E_INVALID_ARGUMENTS if enc, dptr, or szptr is NULL.
-*/
-int
-dk4a85_enc_output(
- const char **dptr,
- size_t *szptr,
- dk4_a85_enc_t const *enc,
- dk4_er_t *erp
-);
-
-#ifdef __cplusplus
-}
-#endif
-
-%% module
-
-#include "dk4conf.h"
-
-#if DK4_HAVE_ASSERT_H
-#ifndef ASSERT_H_INCLUDED
-#include <assert.h>
-#define ASSERT_H_INCLUDED 1
-#endif
-#endif
-
-#include "dk4a85e.h"
-#include "dk4edstm.h"
-#include "dk4mem.h"
-
-
-
-$!trace-include
-
-
-
-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;
- $? "+ dk4a85_enc_finish"
-#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: {
- $? ". 1 input byte %02x", (int)(enc->ib[0])
- back = DK4_EDSTM_FINISHED;
- val = (((unsigned long)(enc->ib[0]) << 24) & 0xFF000000UL);
- $? ". val = %lu %lx", val, val
- v1 = val / dk4a85e_pow_85[0];
- enc->ob[0] = (char)33 + (char)v1;
- $? ". a1 = %lu", v1
- val = val % dk4a85e_pow_85[0];
- v1 = val / dk4a85e_pow_85[1];
- enc->ob[1] = (char)33 + (char)v1;
- $? ". a2 = %lu", v1
- enc->os = 2;
- enc->ci = 0;
- } break;
- case 2: {
- $? ". 2 input bytes %02x %02x", (int)(enc->ib[0]), (int)(enc->ib[1])
- back = DK4_EDSTM_FINISHED;
- val = (((unsigned long)(enc->ib[0]) << 24) & 0xFF000000UL)
- | (((unsigned long)(enc->ib[1]) << 16) & 0x00FF0000UL);
- $? ". val = %lu %lx", val, val
- v1 = val / dk4a85e_pow_85[0];
- enc->ob[0] = (char)33 + (char)v1;
- $? ". a1 = %lu", v1
- val = val % dk4a85e_pow_85[0];
- v1 = val / dk4a85e_pow_85[1];
- enc->ob[1] = (char)33 + (char)v1;
- $? ". a2 = %lu", v1
- val = val % dk4a85e_pow_85[1];
- v1 = val / dk4a85e_pow_85[2];
- enc->ob[2] = (char)33 + (char)v1;
- $? ". a3 = %lu", v1
- enc->os = 3;
- enc->ci = 0;
- } break;
- case 3: {
- $? ". 3 input bytes %02x %02x %02x", (int)(enc->ib[0]), (int)(enc->ib[1]), (int)(enc->ib[2])
- 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);
- $? ". val = %lu %lx", val, val
- v1 = val / dk4a85e_pow_85[0];
- enc->ob[0] = (char)33 + (char)v1;
- $? ". a1 = %lu", v1
- val = val % dk4a85e_pow_85[0];
- v1 = val / dk4a85e_pow_85[1];
- enc->ob[1] = (char)33 + (char)v1;
- $? ". a2 = %lu", v1
- val = val % dk4a85e_pow_85[1];
- v1 = val / dk4a85e_pow_85[2];
- enc->ob[2] = (char)33 + (char)v1;
- $? ". a3 = %lu", v1
- val = val % dk4a85e_pow_85[2];
- v1 = val / dk4a85e_pow_85[3];
- enc->ob[3] = (char)33 + (char)v1;
- $? ". a4 = %lu", v1
- enc->os = 4;
- enc->ci = 0;
- } break;
- default: {
- $? ". 4 input bytes %02x %02x %02x %02x", (int)(enc->ib[0]), (int)(enc->ib[1]), (int)(enc->ib[2]), (int)(enc->ib[3])
- 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);
- $? ". val = %lu %lx", val, val
- 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;
- $? ". a1 = %lu", v1
- val = val % dk4a85e_pow_85[0];
- v1 = val / dk4a85e_pow_85[1];
- enc->ob[1] = (char)33 + (char)v1;
- $? ". a2 = %lu", v1
- val = val % dk4a85e_pow_85[1];
- v1 = val / dk4a85e_pow_85[2];
- enc->ob[2] = (char)33 + (char)v1;
- $? ". a3 = %lu", v1
- val = val % dk4a85e_pow_85[2];
- v1 = val / dk4a85e_pow_85[3];
- enc->ob[3] = (char)33 + (char)v1;
- $? ". a4 = %lu", v1
- val = val % dk4a85e_pow_85[3];
- enc->ob[4] = (char)33 + (char)val;
- $? ". a5 = %lu", val
- enc->os = 5;
- }
- enc->ci = 0;
- } break;
- }
- }
- } else {
- dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS);
- } $? "- dk4a85_enc_finish"
- 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;
-}
-