summaryrefslogtreecommitdiff
path: root/support/dktools/dk4tspdk.ctr
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /support/dktools/dk4tspdk.ctr
Initial commit
Diffstat (limited to 'support/dktools/dk4tspdk.ctr')
-rw-r--r--support/dktools/dk4tspdk.ctr339
1 files changed, 339 insertions, 0 deletions
diff --git a/support/dktools/dk4tspdk.ctr b/support/dktools/dk4tspdk.ctr
new file mode 100644
index 0000000000..7ea2d7d7c4
--- /dev/null
+++ b/support/dktools/dk4tspdk.ctr
@@ -0,0 +1,339 @@
+%% options
+
+copyright owner = Dirk Krause
+copyright year = 2015-xxxx
+license = bsd
+
+
+
+%% header
+
+/** @file
+ Text stream processing for dkChar characters.
+
+ CRT on Windows: Optional.
+*/
+
+#ifndef DK4CONF_H_INCLUDED
+#include "dk4conf.h"
+#endif
+
+#ifndef DK4TYPES_H_INCLUDED
+#include "dk4types.h"
+#endif
+
+#ifndef DK4ERROR_H_INCLUDED
+#include "dk4error.h"
+#endif
+
+#if DK4_CHAR_SIZE > 1
+#if DK4_CHAR_SIZE > 2
+/* +++++ dkChar 4 bytes */
+
+#ifndef DK4TSP32_H_INCLUDED
+#include "dk4tsp32.h"
+#endif
+
+/** Handler function to process a single character.
+*/
+typedef dk4_c32_handler_t dk4_dk_handler_t;
+
+/** Handler function to process an input line.
+*/
+typedef dk4_c32_line_handler_t dk4_dk_line_handler_t;
+
+/** Text stream processor.
+*/
+typedef dk4_tsp32_t dk4_tspdk_t;
+
+/* ----- dkChar 4 bytes */
+#else
+/* +++++ dkChar 2 bytes */
+
+#ifndef DK4TSP16_H_INCLUDED
+#include "dk4tsp16.h"
+#endif
+
+/** Handler function to process a single character.
+*/
+typedef dk4_c16_handler_t dk4_dk_handler_t;
+
+/** Handler function to process an input line.
+*/
+typedef dk4_c16_line_handler_t dk4_dk_line_handler_t;
+
+/** Text stream processor.
+*/
+typedef dk4_tsp16_t dk4_tspdk_t;
+
+/* ----- dkChar 2 bytes */
+#endif
+#else
+/* +++++ dkChar 1 byte */
+
+#ifndef DK4TSP08_H_INCLUDED
+#include "dk4tsp08.h"
+#endif
+
+/** Handler function to process a single character.
+*/
+typedef dk4_c8_handler_t dk4_dk_handler_t;
+
+/** Handler function to process an input line.
+*/
+typedef dk4_c8_line_handler_t dk4_dk_line_handler_t;
+
+/** Text stream processor.
+*/
+typedef dk4_tsp08_t dk4_tspdk_t;
+
+/* ----- dkChar 1 byte */
+#endif
+
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/** Set up processor for char by char processing.
+ @param tsp Processor to set up.
+ @param obj Object to modify when processing input, may be NULL.
+ @param fct Handler function to call for each character.
+ @param pre Encoding required for processing.
+ @param eie Expected input encoding.
+ @param erp Error report, may be NULL.
+ @return 1 on success, 0 on error.
+*/
+int
+dk4tspdk_setup_char(
+ dk4_tspdk_t *tsp,
+ void *obj,
+ dk4_dk_handler_t *fct,
+ int pre,
+ int eie,
+ dk4_er_t *erp
+);
+
+/** Set up processor for line processing.
+ @param tsp Processor to set up.
+ @param obj Object to modify when processing input, may be NULL.
+ @param fct Handler function to invoke for each line.
+ @param inbuf Input line buffer.
+ @param szin Size of input line buffer.
+ @param pre Encoding required for processing.
+ @param eie Expected input encoding.
+ @param erp Error report, may be NULL.
+ @return 1 on success, 0 on error.
+*/
+int
+dk4tspdk_setup_line(
+ dk4_tspdk_t *tsp,
+ void *obj,
+ dk4_dk_line_handler_t *fct,
+ dkChar *inbuf,
+ size_t szin,
+ int pre,
+ int eie,
+ dk4_er_t *erp
+);
+
+/** Allow pass-through of UTF-8 encoded data.
+ @param tsp Text stream processor to set up.
+ @param fl Flag: Enable pass-through of UTF-8 encoded data.
+*/
+void
+dk4tspdk_enable_utf8_pass_through(dk4_tspdk_t *tsp, int fl);
+
+/** Add one single byte.
+ @param tsp Text stream processor.
+ @param inbyte Byte to process.
+ @return DK4_TSP_RES_OK if the character was processed
+ successfully,
+ DK4_TSP_RES_ERROR if there was an error but we can
+ continue,
+ DK4_TSP_RES_FATAL if there was a fatal error so we
+ should abort processing.
+*/
+int
+dk4tspdk_add_one_byte(
+ dk4_tspdk_t *tsp,
+ unsigned char inbyte
+);
+
+/** Add multiple bytes.
+ @param tsp Text stream processor.
+ @param buffer Buffer start address.
+ @param sz Number of bytes in buffer.
+ @return DK4_TSP_RES_OK if the character was processed
+ successfully,
+ DK4_TSP_RES_ERROR if there was an error but we can
+ continue,
+ DK4_TSP_RES_FATAL if there was a fatal error so we
+ should abort processing.
+*/
+int
+dk4tspdk_add_bytes(
+ dk4_tspdk_t *tsp,
+ const unsigned char *buffer,
+ size_t sz
+);
+
+/** Finish processing.
+ @param tsp Text stream processor.
+ @return DK4_TSP_RES_OK if processing was finished
+ successfully,
+ DK4_TSP_RES_ERROR if there was an error,
+ DK4_TSP_RES_FATAL if there was a fatal error.
+*/
+int
+dk4tspdk_finish(dk4_tspdk_t *tsp);
+
+/** Retrieve error reports for encoding/decoding and processing.
+ @param er_en Destination error report buffer for encoding/decoding.
+ @param er_pr Destination error report buffer for processing.
+ @param tsp Text stream processor to retrieve errors from.
+*/
+void
+dk4tspdk_get_errors(dk4_er_t *er_en, dk4_er_t *er_pr, dk4_tspdk_t *tsp);
+
+#ifdef __cplusplus
+}
+#endif
+
+%% module
+
+
+
+#include "dk4tspdk.h"
+
+
+
+int
+dk4tspdk_setup_char(
+ dk4_tspdk_t *tsp,
+ void *obj,
+ dk4_dk_handler_t *fct,
+ int pre,
+ int eie,
+ dk4_er_t *erp
+)
+{
+#if DK4_CHAR_SIZE > 1
+#if DK4_CHAR_SIZE > 2
+ return (dk4tsp32_setup_char(tsp, obj, fct, eie, erp));
+#else
+ return (dk4tsp16_setup_char(tsp, obj, fct, eie, erp));
+#endif
+#else
+ return (dk4tsp08_setup_char(tsp, obj, fct, pre, eie, erp));
+#endif
+}
+
+
+
+int
+dk4tspdk_setup_line(
+ dk4_tspdk_t *tsp,
+ void *obj,
+ dk4_dk_line_handler_t *fct,
+ dkChar *inbuf,
+ size_t szin,
+ int pre,
+ int eie,
+ dk4_er_t *erp
+)
+{
+#if DK4_CHAR_SIZE > 1
+#if DK4_CHAR_SIZE > 2
+ return (dk4tsp32_setup_line(tsp, obj, fct, inbuf, szin, eie, erp));
+#else
+ return (dk4tsp16_setup_line(tsp, obj, fct, inbuf, szin, eie, erp));
+#endif
+#else
+ return (dk4tsp08_setup_line(tsp, obj, fct, inbuf, szin, pre, eie, erp));
+#endif
+}
+
+
+
+int
+dk4tspdk_add_one_byte(
+ dk4_tspdk_t *tsp,
+ unsigned char inbyte
+)
+{
+#if DK4_CHAR_SIZE > 1
+#if DK4_CHAR_SIZE > 2
+ return (dk4tsp32_add_one_byte(tsp, inbyte));
+#else
+ return (dk4tsp16_add_one_byte(tsp, inbyte));
+#endif
+#else
+ return (dk4tsp08_add_one_byte(tsp, inbyte));
+#endif
+}
+
+
+
+int
+dk4tspdk_add_bytes(
+ dk4_tspdk_t *tsp,
+ const unsigned char *buffer,
+ size_t sz
+)
+{
+#if DK4_CHAR_SIZE > 1
+#if DK4_CHAR_SIZE > 2
+ return (dk4tsp32_add_bytes(tsp, buffer, sz));
+#else
+ return (dk4tsp16_add_bytes(tsp, buffer, sz));
+#endif
+#else
+ return (dk4tsp08_add_bytes(tsp, buffer, sz));
+#endif
+}
+
+
+
+int
+dk4tspdk_finish(dk4_tspdk_t *tsp)
+{
+#if DK4_CHAR_SIZE > 1
+#if DK4_CHAR_SIZE > 2
+ return (dk4tsp32_finish(tsp));
+#else
+ return (dk4tsp16_finish(tsp));
+#endif
+#else
+ return (dk4tsp08_finish(tsp));
+#endif
+}
+
+
+
+void
+dk4tspdk_get_errors(dk4_er_t *er_en, dk4_er_t *er_pr, dk4_tspdk_t *tsp)
+{
+#if DK4_CHAR_SIZE > 1
+#if DK4_CHAR_SIZE > 2
+ dk4tsp32_get_errors(er_en, er_pr, tsp);
+#else
+ dk4tsp16_get_errors(er_en, er_pr, tsp);
+#endif
+#else
+ dk4tsp08_get_errors(er_en, er_pr, tsp);
+#endif
+}
+
+
+
+void
+dk4tspdk_enable_utf8_pass_through(dk4_tspdk_t *tsp, int fl)
+{
+#if DK4_CHAR_SIZE == 1
+ dk4tsp08_enable_utf8_pass_through(tsp, fl);
+#endif
+}
+
+