summaryrefslogtreecommitdiff
path: root/support/dktools/dk4rec18.ctr
diff options
context:
space:
mode:
Diffstat (limited to 'support/dktools/dk4rec18.ctr')
-rw-r--r--support/dktools/dk4rec18.ctr194
1 files changed, 0 insertions, 194 deletions
diff --git a/support/dktools/dk4rec18.ctr b/support/dktools/dk4rec18.ctr
deleted file mode 100644
index c20d2c4f03..0000000000
--- a/support/dktools/dk4rec18.ctr
+++ /dev/null
@@ -1,194 +0,0 @@
-%% options
-
-copyright owner = Dirk Krause
-copyright year = 2015-xxxx
-SPDX-License-Identifier: BSD-3-Clause
-
-
-%% header
-
-/** @file
- String recoding from 32 bit to UTF-8.
-
- CRT on Windows: Not used.
-*/
-
-#ifndef DK4CONF_H_INCLUDED
-#if DK4_BUILDING_DKTOOLS4
-#include "dk4conf.h"
-#else
-#include <dktools-4/dk4conf.h>
-#endif
-#endif
-
-#ifndef DK4TYPES_H_INCLUDED
-#if DK4_BUILDING_DKTOOLS4
-#include "dk4types.h"
-#else
-#include <dktools-4/dk4types.h>
-#endif
-#endif
-
-#ifndef DK4ERROR_H_INCLUDED
-#if DK4_BUILDING_DKTOOLS4
-#include "dk4error.h"
-#else
-#include <dktools-4/dk4error.h>
-#endif
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/** Recode string from 32 bit to UTF-8.
- @param dstb Destination buffer.
- @param szdstb Size of destination buffer (number of bytes).
- @param src Source string to convert.
- @param erp Error report, may be NULL.
- @return 1 on success, 0 on error.
-
- Error codes:
- - DK4_E_INVALID_ARGUMENTS<br>
- if src or dstb is NULL or szdstb is 0,
- - DK4_E_BUFFER_TOO_SMALL<br>
- if dstb is too small,
- - DK4_E_SYNTAX<br>
- with the number of successfully recoded characters in nelem if a
- non-recodable character was found.
-*/
-int
-dk4recode_c32_to_utf8(
- char *dstb, size_t szdstb, const dk4_c32_t *src, dk4_er_t *erp
-);
-
-/** Calculate required buffer size (including final 0x00 byte)
- for C32 to UTF-8 conversion.
- @param src C32 source string.
- @param erp Error report, may be NULL.
- @return Positive buffer size on success, 0 on error.
-
- Error codes:
- - DK4_E_INVALID_ARGUMENTS<br>
- if src or dstb is NULL or szdstb is 0,
- - DK4_E_SYNTAX<br>
- with the number of successfully recoded characters in nelem if a
- non-recodable character was found.
-*/
-size_t
-dk4recode_size_c32_to_utf8(const dk4_c32_t *src, dk4_er_t *erp);
-
-#ifdef __cplusplus
-}
-#endif
-
-%% module
-
-#include "dk4conf.h"
-#include "dk4rec18.h"
-#include "dk4mem.h"
-#include "dk4utf8.h"
-
-#if DK4_HAVE_ASSERT_H
-#ifndef ASSERT_H_INCLUDED
-#include <assert.h>
-#define ASSERT_H_INCLUDED 1
-#endif
-#endif
-
-
-$!trace-include
-
-
-
-size_t
-dk4recode_size_c32_to_utf8(const dk4_c32_t *src, dk4_er_t *erp)
-{
- dk4_er_t er;
- unsigned char buf[8];
- size_t sz;
- size_t rd = 0;
- size_t back = 0;
- dk4_c32_t c32 = dkC32(0);
-#if DK4_USE_ASSERT
- assert(NULL != src);
-#endif
- if (NULL != src) {
- dk4error_init(&er);
- while (dkC32(0) != (c32 = *(src++))) {
- sz = sizeof(buf);
- if (0 != dk4utf8_encode(buf, &sz, c32, &er)) {
- if ((SIZE_MAX - sz) >= back) {
- back += sz;
- rd++;
- } else {
- dk4error_set_simple_error_code(&er, DK4_E_MATH_OVERFLOW);
- }
- }
- }
- if (SIZE_MAX > back) {
- back++;
- } else {
- dk4error_set_simple_error_code(&er, DK4_E_MATH_OVERFLOW);
- }
- if (DK4_E_NONE != er.ec) {
- back = 0;
- dk4error_copy(erp, &er);
- }
- } else {
- dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS);
- }
- return back;
-}
-
-
-
-int
-dk4recode_c32_to_utf8(
- char *dstb, size_t szdstb, const dk4_c32_t *src, dk4_er_t *erp
-)
-{
- unsigned char buf[8];
- size_t sz;
- size_t rd = 0;
- size_t used = 0;
- dk4_c32_t c32 = dkC32(0);
- int back = 0;
-#if DK4_USE_ASSERT
- assert(NULL != dstb);
- assert(0 < szdstb);
- assert(NULL != src);
-#endif
- if ((NULL != dstb) && (0 < szdstb) && (NULL != src)) {
- back = 1;
- while((dkC32(0) != *src) && (1 == back) && (used < szdstb)) {
- c32 = *(src++);
- sz = sizeof(buf);
- if (0 != dk4utf8_encode(buf, &sz, c32, erp)) {
- if ((szdstb - used) > sz) {
- DK4_MEMCPY(&(dstb[used]),buf,sz);
- used += sz;
- } else {
- back = 0;
- dk4error_set_simple_error_code(erp, DK4_E_BUFFER_TOO_SMALL);
- }
- } else {
- back = 0;
- dk4error_set_elsize_nelem(erp, DK4_E_SYNTAX, 4, rd);
- }
- if (0 != back) { rd++; }
- }
- if (used < szdstb) {
- dstb[used] = '\0';
- } else {
- dstb[szdstb - 1] = '\0';
- back = 0;
- dk4error_set_simple_error_code(erp, DK4_E_BUFFER_TOO_SMALL);
- }
- } else {
- dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS);
- }
- return back;
-}
-
-