diff options
author | Wojtek Kosior <wk@koszkonutek-tmp.pl.eu.org> | 2021-04-30 18:47:09 +0200 |
---|---|---|
committer | Wojtek Kosior <wk@koszkonutek-tmp.pl.eu.org> | 2021-04-30 18:47:09 +0200 |
commit | 35a201cc8ef0c3f5b2df88d2e528aabee1048348 (patch) | |
tree | 902dae955480e19f4498dbe4964619fc91d09b06 /libxml2-2.9.10/os400/libxmlrpg/encoding.rpgle | |
download | xml-backup-restore-master.tar.gz xml-backup-restore-master.zip |
Diffstat (limited to 'libxml2-2.9.10/os400/libxmlrpg/encoding.rpgle')
-rw-r--r-- | libxml2-2.9.10/os400/libxmlrpg/encoding.rpgle | 284 |
1 files changed, 284 insertions, 0 deletions
diff --git a/libxml2-2.9.10/os400/libxmlrpg/encoding.rpgle b/libxml2-2.9.10/os400/libxmlrpg/encoding.rpgle new file mode 100644 index 0000000..8153f3c --- /dev/null +++ b/libxml2-2.9.10/os400/libxmlrpg/encoding.rpgle @@ -0,0 +1,284 @@ + * Summary: interface for the encoding conversion functions + * Description: interface for the encoding conversion functions needed for + * XML basic encoding and iconv() support. + * + * Related specs are + * rfc2044 (UTF-8 and UTF-16) F. Yergeau Alis Technologies + * [ISO-10646] UTF-8 and UTF-16 in Annexes + * [ISO-8859-1] ISO Latin-1 characters codes. + * [UNICODE] The Unicode Consortium, "The Unicode Standard -- + * Worldwide Character Encoding -- Version 1.0", Addison- + * Wesley, Volume 1, 1991, Volume 2, 1992. UTF-8 is + * described in Unicode Technical Report #4. + * [US-ASCII] Coded Character Set--7-bit American Standard Code for + * Information Interchange, ANSI X3.4-1986. + * + * Copy: See Copyright for the status of this software. + * + * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. + + /if not defined(XML_CHAR_ENCODING_H__) + /define XML_CHAR_ENCODING_H__ + + /include "libxmlrpg/xmlversion" + /include "libxmlrpg/xmlTypesC" + + * xmlCharEncoding: + * + * Predefined values for some standard encodings. + * Libxml does not do beforehand translation on UTF8 and ISOLatinX. + * It also supports ASCII, ISO-8859-1, and UTF16 (LE and BE) by default. + * + * Anything else would have to be translated to UTF8 before being + * given to the parser itself. The BOM for UTF16 and the encoding + * declaration are looked at and a converter is looked for at that + * point. If not found the parser stops here as asked by the XML REC. A + * converter can be registered by the user + * xmlRegisterCharEncodingHandler but the current form doesn't allow + * stateful transcoding (a serious problem agreed !). If iconv has been + * found it will be used automatically and allow stateful transcoding, + * the simplest is then to be sure to enable iconv and to provide iconv + * libs for the encoding support needed. + * + * Note that the generic "UTF-16" is not a predefined value. Instead, only + * the specific UTF-16LE and UTF-16BE are present. + + d xmlCharEncoding... + d s based(######typedef######) + d like(xmlCenum) + d XML_CHAR_ENCODING_ERROR... No encoding detected + d c -1 + d XML_CHAR_ENCODING_NONE... No encoding detected + d c 0 + d XML_CHAR_ENCODING_UTF8... UTF-8 + d c 1 + d XML_CHAR_ENCODING_UTF16LE... UTF-16 little endian + d c 2 + d XML_CHAR_ENCODING_UTF16BE... UTF-16 big endian + d c 3 + d XML_CHAR_ENCODING_UCS4LE... UCS-4 little endian + d c 4 + d XML_CHAR_ENCODING_UCS4BE... UCS-4 big endian + d c 5 + d XML_CHAR_ENCODING_EBCDIC... EBCDIC uh! + d c 6 + d XML_CHAR_ENCODING_UCS4_2143... UCS-4 unusual order + d c 7 + d XML_CHAR_ENCODING_UCS4_3412... UCS-4 unusual order + d c 8 + d XML_CHAR_ENCODING_UCS2... UCS-2 + d c 9 + d XML_CHAR_ENCODING_8859_1... ISO-8859-1 ISOLatin1 + d c 10 + d XML_CHAR_ENCODING_8859_2... ISO-8859-2 ISOLatin2 + d c 11 + d XML_CHAR_ENCODING_8859_3... ISO-8859-3 + d c 12 + d XML_CHAR_ENCODING_8859_4... ISO-8859-4 + d c 13 + d XML_CHAR_ENCODING_8859_5... ISO-8859-5 + d c 14 + d XML_CHAR_ENCODING_8859_6... ISO-8859-6 + d c 15 + d XML_CHAR_ENCODING_8859_7... ISO-8859-7 + d c 16 + d XML_CHAR_ENCODING_8859_8... ISO-8859-8 + d c 17 + d XML_CHAR_ENCODING_8859_9... ISO-8859-9 + d c 18 + d XML_CHAR_ENCODING_2022_JP... ISO-2022-JP + d c 19 + d XML_CHAR_ENCODING_SHIFT_JIS... Shift_JIS + d c 20 + d XML_CHAR_ENCODING_EUC_JP... EUC-JP + d c 21 + d XML_CHAR_ENCODING_ASCII... Pure ASCII + d c 22 + + * xmlCharEncodingInputFunc: + * @out: a pointer to an array of bytes to store the UTF-8 result + * @outlen: the length of @out + * @in: a pointer to an array of chars in the original encoding + * @inlen: the length of @in + * + * Take a block of chars in the original encoding and try to convert + * it to an UTF-8 block of chars out. + * + * Returns the number of bytes written, -1 if lack of space, or -2 + * if the transcoding failed. + * The value of @inlen after return is the number of octets consumed + * if the return value is positive, else unpredictiable. + * The value of @outlen after return is the number of octets consumed. + + d xmlCharEncodingInputFunc... + d s * based(######typedef######) + d procptr + + * xmlCharEncodingOutputFunc: + * @out: a pointer to an array of bytes to store the result + * @outlen: the length of @out + * @in: a pointer to an array of UTF-8 chars + * @inlen: the length of @in + * + * Take a block of UTF-8 chars in and try to convert it to another + * encoding. + * Note: a first call designed to produce heading info is called with + * in = NULL. If stateful this should also initialize the encoder state. + * + * Returns the number of bytes written, -1 if lack of space, or -2 + * if the transcoding failed. + * The value of @inlen after return is the number of octets consumed + * if the return value is positive, else unpredictiable. + * The value of @outlen after return is the number of octets produced. + + d xmlCharEncodingOutputFunc... + d s * based(######typedef######) + d procptr + + * Block defining the handlers for non UTF-8 encodings. + * If iconv is supported, there are two extra fields. + + /if defined(LIBXML_ICU_ENABLED) + d uconv_t ds based(######typedef######) + d align qualified + d uconv * UConverter * + d utf8 * UConverter * + /endif + + d xmlCharEncodingHandlerPtr... + d s * based(######typedef######) + + d xmlCharEncodingHandler... + d ds based(xmlCharEncodingHandlerPtr) + d align qualified + d name * char * + d input like(xmlCharEncodingInputFunc) + d output like(xmlCharEncodingOutputFunc) + * + /if defined(LIBXML_ICONV_ENABLED) + d iconv_in * iconv_t + d iconv_out * iconv_t + /endif LIBXML_ICONV_ENABLED + * + /if defined(LIBXML_ICU_ENABLED) + d uconv_in * uconv_t * + d uconv_out * uconv_t * + /endif LIBXML_ICU_ENABLED + + /include "libxmlrpg/tree" + + * Interfaces for encoding handlers. + + d xmlInitCharEncodingHandlers... + d pr extproc( + d 'xmlInitCharEncodingHandlers') + + d xmlCleanupCharEncodingHandlers... + d pr extproc( + d 'xmlCleanupCharEncodingHandlers') + + d xmlRegisterCharEncodingHandler... + d pr extproc( + d 'xmlRegisterCharEncodingHandler') + d handler value like(xmlCharEncodingHandlerPtr) + + d xmlGetCharEncodingHandler... + d pr extproc('xmlGetCharEncodingHandler') + d like(xmlCharEncodingHandlerPtr) + d enc value like(xmlCharEncoding) + + d xmlFindCharEncodingHandler... + d pr extproc('xmlFindCharEncodingHandler') + d like(xmlCharEncodingHandlerPtr) + d name * value options(*string) const char * + + d xmlNewCharEncodingHandler... + d pr extproc('xmlNewCharEncodingHandler') + d like(xmlCharEncodingHandlerPtr) + d name * value options(*string) const char * + d input value like(xmlCharEncodingInputFunc) + d output value like(xmlCharEncodingOutputFunc) + + * Interfaces for encoding names and aliases. + + d xmlAddEncodingAlias... + d pr extproc('xmlAddEncodingAlias') + d like(xmlCint) + d name * value options(*string) const char * + d alias * value options(*string) const char * + + d xmlDelEncodingAlias... + d pr extproc('xmlDelEncodingAlias') + d like(xmlCint) + d alias * value options(*string) const char * + + d xmlGetEncodingAlias... + d pr * extproc('xmlGetEncodingAlias') const char * + d alias * value options(*string) const char * + + d xmlCleanupEncodingAliases... + d pr extproc('xmlCleanupEncodingAliases') + + d xmlParseCharEncoding... + d pr extproc('xmlParseCharEncoding') + d like(xmlCharEncoding) + d name * value options(*string) const char * + + d xmlGetCharEncodingName... + d pr * extproc('xmlGetCharEncodingName') const char * + d enc value like(xmlCharEncoding) + + * Interfaces directly used by the parsers. + + d xmlDetectCharEncoding... + d pr extproc('xmlDetectCharEncoding') + d like(xmlCharEncoding) + d in * value options(*string) const unsigned char* + d len value like(xmlCint) + + d xmlCharEncOutFunc... + d pr extproc('xmlCharEncOutFunc') + d like(xmlCint) + d handler likeds(xmlCharEncodingHandler) + d out value like(xmlBufferPtr) + d in value like(xmlBufferPtr) + + d xmlCharEncInFunc... + d pr extproc('xmlCharEncInFunc') + d like(xmlCint) + d handler likeds(xmlCharEncodingHandler) + d out value like(xmlBufferPtr) + d in value like(xmlBufferPtr) + + d xmlCharEncFirstLine... + d pr extproc('xmlCharEncFirstLine') + d like(xmlCint) + d handler likeds(xmlCharEncodingHandler) + d out value like(xmlBufferPtr) + d in value like(xmlBufferPtr) + + d xmlCharEncCloseFunc... + d pr extproc('xmlCharEncCloseFunc') + d like(xmlCint) + d handler likeds(xmlCharEncodingHandler) + + * Export a few useful functions + + /if defined(LIBXML_OUTPUT_ENABLED) + d UTF8Toisolat1 pr extproc('UTF8Toisolat1') + d like(xmlCint) + d out 65535 options(*varsize) unsigned char (*) + d outlen like(xmlCint) + d in * value options(*string) const unsigned char* + d inlen like(xmlCint) + + /endif LIBXML_OUTPUT_ENABLD + + d isolat1ToUTF8 pr extproc('isolat1ToUTF8') + d like(xmlCint) + d out 65535 options(*varsize) unsigned char (*) + d outlen like(xmlCint) + d in * value options(*string) const unsigned char* + d inlen like(xmlCint) + + /endif XML_CHAR_ENCODING_H |