CASA/c_clientlogin/xplatincl/unicode.h
2005-10-21 02:23:43 +00:00

1026 lines
41 KiB
C

/*--------------------------------------------------------------------------
%name: unicode.h %
%version: 15 %
%date_modified: Thu Feb 21 12:47:36 2002 %
$Copyright:
Copyright (c) 1989-1995 Novell, Inc. All Rights Reserved.
THIS WORK IS SUBJECT TO U.S. AND INTERNATIONAL COPYRIGHT LAWS AND
TREATIES. NO PART OF THIS WORK MAY BE USED, PRACTICED, PERFORMED
COPIED, DISTRIBUTED, REVISED, MODIFIED, TRANSLATED, ABRIDGED, CONDENSED,
EXPANDED, COLLECTED, COMPILED, LINKED, RECAST, TRANSFORMED OR ADAPTED
WITHOUT THE PRIOR WRITTEN CONSENT OF NOVELL, INC. ANY USE OR EXPLOITATION
OF THIS WORK WITHOUT AUTHORIZATION COULD SUBJECT THE PERPETRATOR TO
CRIMINAL AND CIVIL LIABILITY.$
--------------------------------------------------------------------------*/
#if !defined( UNICODE_H )
#define UNICODE_H
#include <stddef.h> /* size_t */
#ifndef _SIZE_T_DEFINED
#define _SIZE_T_DEFINED
# ifndef _SIZE_T
# define _SIZE_T
# ifndef __size_t
# define __size_t
typedef unsigned int size_t;
# endif
# endif
#endif
#ifdef N_PLAT_OS2
# define PN_API * N_API /* OS2 requires different declaration than MS */
#else
# define PN_API N_API *
#endif
#if !defined( NTYPES_H )
# include "ntypes.h"
#endif
#if !defined _CONVERT_H
/*
Data types
*/
#ifndef UNICODE_TYPE_DEFINED
#define UNICODE_TYPE_DEFINED
typedef unsigned short unicode; /* Unicode data must be 16 bits */
#endif
typedef unicode N_FAR * punicode;
typedef unicode N_FAR * N_FAR * ppunicode;
#define nwunisize(x) (sizeof(x)/sizeof(unicode))
/*
Converter handle
*/
typedef void *CONVERT;
typedef CONVERT N_FAR * pCONVERT;
#endif
/****************************************************************************/
/*
Type definitions for converter based APIs
*/
/*
IBM C/Set compiler requires "typedef nint (* N_API xxx)"
MSW and NLM platforms require "typedef nint (N_API * xxx)"
The PN_API symbol is defined to satisfy both situations.
*/
/*
Function called when non-mappable bytes are found
*/
typedef nint (PN_API NMBYTE)
(
pCONVERT byteUniHandle,/* Handle to Byte <-> Uni converter */
punicode output, /* Pointer to current output position*/
nuint outputLeft, /* Space left in output buffer */
pnuint outputUsed, /* Space used in output buffer */
nuint8 N_FAR * badInput, /* Pointer to unmappable bytes */
nuint badInputSize /* Size of unmappable input */
);
/*
Function called when non-mappable unicode characters are found
*/
typedef nint (PN_API NMUNI)
(
pCONVERT byteUniHandle,/* Handle to Byte <-> Uni converter */
pnuint8 output, /* Pointer to current output position*/
nuint outputLeft, /* Space left in output buffer */
pnuint outputUsed, /* Space used in output buffer */
unicode N_FAR * badInput, /* Ptr to unmappable unicode chars */
nuint badInputSize /* Size of unmappable input */
);
/*
Function called to scan for special byte input
*/
typedef pnuint8 (PN_API SCBYTE)
(
pCONVERT byteUniHandle,/* Handle to Byte <-> Uni converter */
nuint8 N_FAR * input, /* Input to scan for special bytes */
nint scanmax /* Maximum # of bytes to scan or -1 */
);
/*
Function called to scan for special Unicode input
*/
typedef punicode (PN_API SCUNI)
(
pCONVERT byteUniHandle,/* Handle to Byte <-> Uni converter */
unicode N_FAR * input, /* Input to scan for special chars */
nint scanmax /* Maximum # of bytes to scan or -1 */
);
/*
Function called to parse special byte input
*/
typedef nint (PN_API PRBYTE)
(
pCONVERT byteUniHandle,/* Handle to Byte <-> Uni converter */
punicode output, /* Buffer for Unicode output */
nuint outputleft, /* Space left in output buffer */
pnuint outputUsed, /* Space used in output buffer */
nuint8 N_FAR * input, /* Buffer containing byte input */
pnuint inputUsed /* Number of bytes of input used */
);
/*
Function called to parse special Unicode input
*/
typedef nint (PN_API PRUNI)
(
pCONVERT byteUniHandle,/* Handle to Byte <-> Uni converter */
pnuint8 output, /* Buffer for bytes output */
nuint outputLeft, /* Space left in output buffer */
pnuint outputUsed, /* Space used in output buffer */
unicode N_FAR * input, /* Buffer containing byte input */
pnuint inputUsed /* Number of Unicodes of input used */
);
/****************************************************************************/
/*
Macros used by and returned from converter based API calls
(i.e. NWUS*, NWUX*)
*/
/*
Novell-defined Unicode characters.
Consult with the Internationalization group before adding to this list.
*/
#define UNI_CHANGE_NAMESPACE 0xf8f4
#define UNI_PREVIOUS_DIR 0xf8f5
#define UNI_CURRENT_DIR 0xf8f6
#define UNI_PATH_SEPARATOR 0xF8F7
#define UNI_VOLUMENAME_ROOT 0xf8f8
#define UNI_VOLUME_ROOT 0xf8f9
#define UNI_NDS_ROOT 0xf8fa
#define UNI_WILD_QMARK 0xf8fb
#define UNI_WILD_ASTERISK 0xf8fc
#define UNI_WILD_AUG_QMARK 0xf8fd
#define UNI_WILD_AUG_ASTERISK 0xf8fe
#define UNI_WILD_AUG_PERIOD 0xf8ff
/*
Actions to take when an unmappable byte or uni character is encountered.
Used in SetNoMapAction call.
*/
#define NWU_UNCHANGED_ACTION -1 /* Leave action unchanged */
#define NWU_RETURN_ERROR 0 /* Return error code NWU_UNMAPPABLE_CHAR */
#define NWU_SUBSTITUTE 1 /* Use the current substitution character */
#define NWU_CALL_HANDLER 2 /* Call the no map handler function */
/*
Codes to enable the Scan and Parse handler functions.
Used in SetScanAction call.
*/
#define NWU_DISABLED 0 /* Disable Scan/Parse functions */
#define NWU_ENABLED 2 /* Enable Scan/Parse functions */
/*
Flags to pass to NWUXGetCaseConverter to specify whether to load
a converter which converts to upper, lower or title case.
*/
#define NWU_LOWER_CASE 0 /* Lower case */
#define NWU_UPPER_CASE 1 /* Upper case */
#define NWU_TITLE_CASE 2 /* Title case */
/*
Flags to pass to NWUXGetNormalizeConverter to specify whether to
load a converter which converts to pre-composed or de-composed
unicode characters.
*/
#define NWU_PRECOMPOSED 0 /* Precomposed */
#define NWU_DECOMPOSED 1 /* Decomposed */
/*
For use in SetByte/UniFunction calls
*/
#define NWU_UNCHANGED_FUNCTION ((void N_FAR *)-1)
#define NWU_RESET_TO_DEFAULT NULL
/*
Error codes. FFFFFDE0 to FFFFFDFF reserved for new unicode APIs.
*/
#define NWU_NO_CONVERTER -544 /* Default converter not loaded */
#define NWU_CONVERTER_NOT_FOUND -543 /* Converter file was not found */
#define NWU_TOO_MANY_FILES -542 /* Too many open files */
#define NWU_NO_PERMISSION -541 /* Access to file was denied */
#define NWU_OPEN_FAILED -540 /* File open failed */
#define NWU_READ_FAILED -539 /* File read failed */
#define NWU_OUT_OF_MEMORY -538 /* Insufficient memory */
#define NWU_CANT_LOAD_CONVERTER -537 /* Unable to load converter */
#define NWU_CONVERTER_CORRUPT -536 /* The converter is invalid */
#define NWU_NULL_HANDLE -535 /* Converter handle was NULL */
#define NWU_BAD_HANDLE -534 /* Converter handle is invalid */
#define NWU_HANDLE_MISMATCH -533 /* Handle doesn't match operation */
#define NWU_UNMAPPABLE_CHAR -532 /* Unmappable character found */
#define NWU_RANGE_ERROR -531 /* Invalid constant passed to fn */
#define NWU_BUFFER_FULL -530 /* Buffer too small for output */
#define NWU_INPUT_MAX -529 /* Processed max # of input chars */
#define UNI_PARSER_ERROR -528 /* Error from user-written parser */
#define NWU_OLD_CONVERTER_VERSION -527 /* Outdated converter DLL */
#define NWU_UNSUPPORTED_AUX_FUNCTION -526 /* Unsupported AUX function */
#define NWU_EMBEDDED_NULL -525 /* Embedded null in len spec string */
#define NWU_GET_CODE_PAGE_FAILED -524 /* Failed to get system cp or cc */
#define NWU_ILLEGAL_UTF8_CHARACTER -506 /* Cannot convert UTF8 char to Uni*/
#define NWU_INSUFFICIENT_BUFFER -500
/*
Error codes for translator based APIs (i.e. NW prefix)
*/
#define UNI_ALREADY_LOADED -489 /* Already loaded another country or code page */
#define UNI_FUTURE_OPCODE -490 /* Rule table has unimplimented rules*/
#define UNI_NO_SUCH_FILE -491 /* No such file or directory */
#define UNI_TOO_MANY_FILES -492 /* Too many files already open */
#define UNI_NO_PERMISSION -493 /* Permission denied on file open */
#define UNI_NO_MEMORY -494 /* Not enough memory */
#define UNI_LOAD_FAILED -495 /* NWLoadRuleTable failed, don't know why */
#define UNI_HANDLE_BAD -496 /* Rule table handle was bad */
#define UNI_HANDLE_MISMATCH -497 /* Rule table handle doesn't match operation*/
#define UNI_RULES_CORRUPT -498 /* Rule table is corrupt */
#define UNI_NO_DEFAULT -499 /* No default rule and no 'No map' character*/
#define UNI_INSUFFICIENT_BUFFER -500
#define UNI_OPEN_FAILED -501 /* Open failed in NWLoadRuleTable */
#define UNI_NO_LOAD_DIR -502 /* Load directory could not be determined */
#define UNI_BAD_FILE_HANDLE -503 /* File handle was bad */
#define UNI_READ_FAILED -504 /* File read of rule table failed */
#define UNI_TRANS_CORRUPT -505 /* Translator is corrupt */
#define UNI_ILLEGAL_UTF8_CHARACTER -506 /* Illegal UTF-8 character encountered */
#ifdef __cplusplus
extern "C" {
#endif
/****************************************************************************/
/*
Unicode converter prototypes - These APIs are preferred over the older
non-converter counterparts (i.e. NWUnicodeToLocal, NWLocalToUnicode, etc.)
*/
/*
These are the Standard API's
*/
N_EXTERN_LIBRARY(nint) NWUSStandardUnicodeInit
( /* Initialize standard converters */
void
);
N_EXTERN_LIBRARY(nint) NWUSStandardUnicodeOverride
( /* Replace standard converter. */
nuint codepage
);
N_EXTERN_LIBRARY(void) NWUSStandardUnicodeRelease
( /* Release the standard converters */
void
);
N_EXTERN_LIBRARY(nint) NWUSGetCodePage
( /* Get the native code page and country */
pnuint pCodePage,
pnuint pCountry
);
/* NOTE: The actualLength parameter returned by the conversion routines
does *not* include the null terminator.
*/
N_EXTERN_LIBRARY(nint) NWUSByteToUnicode
( /* Convert bytes to Unicode */
punicode unicodeOutput, /* Buffer for resulting Unicode */
nuint outputBufferLen,/* Length of output buffer. Or 0 */
const nuint8 N_FAR * byteInput, /* Buffer for input bytes */
pnuint actualLength /* Length of results in uni chars */
);
N_EXTERN_LIBRARY(nint) NWUSByteToUnicodePath
( /* Convert bytes to Unicode for file path */
punicode unicodeOutput, /* Buffer for resulting Unicode */
nuint outputBufferLen,/* Length of output buffer. Or 0 */
const nuint8 N_FAR * byteInput, /* Buffer for input bytes */
pnuint actualLength /* Length of results in uni chars */
);
N_EXTERN_LIBRARY(nint) NWUSLenByteToUnicode
( /* Convert bytes to Unicode */
punicode unicodeOutput, /* Buffer for resulting Unicode */
nuint outputBufferLen,/* Length of output buffer. Or 0 */
const nuint8 N_FAR * byteInput, /* Buffer for input bytes */
nint inLength, /* Input str length in bytes or -1 */
pnuint actualLength /* Length of results in uni chars */
);
N_EXTERN_LIBRARY(nint) NWUSLenByteToUnicodePath
( /* Convert bytes to Unicode for file path */
punicode unicodeOutput, /* Buffer for resulting Unicode */
nuint outputBufferLen,/* Length of output buffer. Or 0 */
const nuint8 N_FAR * byteInput, /* Buffer for input bytes */
nint inLength, /* Input str length in bytes or -1 */
pnuint actualLength /* Length of results in uni chars */
);
N_EXTERN_LIBRARY(nint) NWUSUnicodeToByte
( /* Convert Unicode to bytes */
pnuint8 byteOutput, /* Buffer for output bytes */
nuint outputBufferLen,/* Length of output buffer. Or 0 */
const unicode N_FAR * unicodeInput, /* Buffer for Unicode input */
pnuint actualLength /* Length of results in bytes */
);
N_EXTERN_LIBRARY(nint) NWUSUnicodeToBytePath
( /* Convert Unicode to bytes for file path */
pnuint8 byteOutput, /* Buffer for output bytes */
nuint outputBufferLen,/* Length of output buffer. Or 0 */
const unicode N_FAR * unicodeInput, /* Buffer for Unicode input */
pnuint actualLength /* Length of results in bytes */
);
N_EXTERN_LIBRARY(nint) NWUSUnicodeToUntermByte
( /* Convert Unicode to bytes */
pnuint8 byteOutput, /* Buffer for output bytes */
nuint outputBufferLen,/* Length of output buffer */
const unicode N_FAR * unicodeInput, /* Buffer for Unicode input */
pnuint actualLength /* Length of results in bytes */
);
N_EXTERN_LIBRARY(nint) NWUSUnicodeToUntermBytePath
( /* Convert Unicode to bytes for file path */
pnuint8 byteOutput, /* Buffer for output bytes */
nuint outputBufferLen,/* Length of output buffer */
const unicode N_FAR * unicodeInput, /* Buffer for Unicode input */
pnuint actualLength /* Length of results in bytes */
);
N_EXTERN_LIBRARY(nint) NWUSUnicodeToLowerCase
( /* Convert Unicode to lower case */
punicode lowerCaseOutput,/* Buffer for lower cased output */
nuint outputBufferLen,/* Length of output buffer. Or 0 */
const unicode N_FAR * unicodeInput, /* Buffer for Unicode input */
pnuint actualLength /* Length of results in uni chars */
);
N_EXTERN_LIBRARY(nint) NWUSUnicodeToUpperCase
( /* Convert Unicode to upper case */
punicode upperCaseOutput,/* Buffer for upper cased output */
nuint outputBufferLen,/* Length of output buffer. Or 0 */
const unicode N_FAR * unicodeInput, /* Buffer for Unicode input */
pnuint actualLength /* Length of results in uni chars */
);
/*
These are the Extended API's
*/
N_EXTERN_LIBRARY(nint) NWUXLoadByteUnicodeConverter
( /* Load a Byte <-> Unicode converter */
nuint codepage, /* Codepage number */
pCONVERT N_FAR * byteUniHandle /* Converter handle returned here */
);
N_EXTERN_LIBRARY(nint) NWUXLoadCaseConverter
( /* Load a Unicode -> Case converter */
nuint caseFlag, /* Want upper, lower or title casing? */
pCONVERT N_FAR * caseHandle /* Converter handle returned here */
);
N_EXTERN_LIBRARY(nint) NWUXLoadCollationConverter
( /* Load a Unicode -> Collation converter */
nuint countryCode, /* Country code for this locale */
pCONVERT N_FAR * collationHandle /* Converter handle returned here */
);
N_EXTERN_LIBRARY(nint) NWUXLoadNormalizeConverter
( /* Load a Unicode -> Normalized converter */
nuint preDeFlag, /* Want precomposed or decomposed flag?*/
pCONVERT N_FAR * normalizeHandle /* Converter handle returned here */
);
N_EXTERN_LIBRARY(nint) NWUXUnloadConverter
( /* Release a converter from memory */
pCONVERT converterHandle /* Handle to converter to be released */
);
N_EXTERN_LIBRARY(nint) NWUXByteToUnicode
( /* Convert bytes to Unicode */
pCONVERT byteUniHandle, /* Handle to Byte <-> Uni converter*/
punicode unicodeOutput, /* Buffer for resulting Unicode */
nuint outputBufferLen,/* Length of output buffer. Or 0 */
const nuint8 N_FAR * byteInput, /* Buffer for input bytes */
pnuint actualLength /* Length of results in uni chars */
);
N_EXTERN_LIBRARY(nint) NWUXByteToUnicodePath
( /* Convert bytes to Unicode for file path */
pCONVERT byteUniHandle, /* Handle to Byte <-> Uni converter*/
punicode unicodeOutput, /* Buffer for resulting Unicode */
nuint outputBufferLen,/* Length of output buffer. Or 0 */
const nuint8 N_FAR * byteInput, /* Buffer for input bytes */
pnuint actualLength /* Length of results in uni chars */
);
N_EXTERN_LIBRARY(nint) NWUXLenByteToUnicode
( /* Convert bytes to Unicode */
pCONVERT byteUniHandle, /* Handle to Byte <-> Uni converter*/
punicode unicodeOutput, /* Buffer for resulting Unicode */
nuint outputBufferLen,/* Length of output buffer */
const nuint8 N_FAR * byteInput, /* Buffer for input bytes */
nint inLength, /* Input str length in bytes or -1 */
pnuint actualLength /* Length of results in uni chars */
);
N_EXTERN_LIBRARY(nint) NWUXLenByteToUnicodePath
( /* Convert bytes to Unicode for file path */
pCONVERT byteUniHandle, /* Handle to Byte <-> Uni converter*/
punicode unicodeOutput, /* Buffer for resulting Unicode */
nuint outputBufferLen,/* Length of output buffer */
const nuint8 N_FAR * byteInput, /* Buffer for input bytes */
nint inLength, /* Input str length in bytes or -1 */
pnuint actualLength /* Length of results in uni chars */
);
N_EXTERN_LIBRARY(nint) NWUXUnicodeToByte
( /* Convert Unicode to bytes */
pCONVERT byteUniHandle, /* Handle to Byte <-> Uni converter*/
pnuint8 byteOutput, /* Buffer for output bytes */
nuint outputBufferLen,/* Length of output buffer */
const unicode N_FAR * unicodeInput, /* Buffer for Unicode input */
pnuint actualLength /* Length of results in bytes */
);
N_EXTERN_LIBRARY(nint) NWUXUnicodeToBytePath
( /* Convert Unicode to bytes for file path */
pCONVERT byteUniHandle, /* Handle to Byte <-> Uni converter*/
pnuint8 byteOutput, /* Buffer for output bytes */
nuint outputBufferLen,/* Length of output buffer. Or 0 */
const unicode N_FAR * unicodeInput, /* Buffer for Unicode input */
pnuint actualLength /* Length of results in bytes */
);
N_EXTERN_LIBRARY(nint) NWUXUnicodeToUntermByte
( /* Convert Unicode to bytes */
pCONVERT byteUniHandle, /* Handle to Byte <-> Uni converter*/
pnuint8 byteOutput, /* Buffer for output bytes */
nuint outputBufferLen,/* Length of output buffer */
const unicode N_FAR * unicodeInput, /* Buffer for Unicode input */
pnuint actualLength /* Length of results in bytes */
);
N_EXTERN_LIBRARY(nint) NWUXUnicodeToUntermBytePath
( /* Convert Unicode to bytes for file path */
pCONVERT byteUniHandle, /* Handle to Byte <-> Uni converter*/
pnuint8 byteOutput, /* Buffer for output bytes */
nuint outputBufferLen,/* Length of output buffer */
const unicode N_FAR * unicodeInput, /* Buffer for Unicode input */
pnuint actualLength /* Length of results in bytes */
);
N_EXTERN_LIBRARY(nint) NWUXUnicodeToCase
( /* Convert to upper, lower or title case */
pCONVERT caseHandle, /* Handle to converter */
punicode monocasedOutput,/* Buffer for output */
nuint outputBufferLen,/* Length of output buffer. Or 0 */
const unicode N_FAR * unicodeInput, /* Buffer for Unicode input */
pnuint actualLength /* Length of results in uni chars */
);
N_EXTERN_LIBRARY(nint) NWUXUnicodeToCollation
( /* Convert Unicode to Collation weights */
pCONVERT collationHandle, /* Handle to converter */
punicode collationWeights,/* Buffer for collation weights */
nuint outputBufferLen, /* Length of output buffer. Or 0 */
const unicode N_FAR * unicodeInput, /* Buffer for Unicode input */
pnuint actualLength /* Length of results in uni chars*/
);
N_EXTERN_LIBRARY(nint) NWUXUnicodeToNormalized
( /* Convert Unicode to normalized */
pCONVERT normalizeHandle, /* Handle to converter */
punicode normalizedOutput,/* Buffer for normalized output */
nuint outputBufferLen, /* Length of output buffer. Or 0 */
const unicode N_FAR * unicodeInput, /* Buffer for Unicode input */
pnuint actualLength /* Length of results in uni chars*/
);
N_EXTERN_LIBRARY(nint) NWUXGetCharSize
( /* Convert Unicode to bytes for file path */
pCONVERT byteUniHandle,/* Handle to Byte <-> Uni converter */
const nuint8 N_FAR * byteInput, /* Ptr to single or double-byte char */
pnuint pCharSize /* # bytes in character (1 or 2) */
);
N_EXTERN_LIBRARY(nint) NWUXSetNoMapAction
( /* Set action to be taken for no map chars */
pCONVERT byteUniHandle, /* Handle to a Byte <-> Unicode converter */
nint noMapByteAction, /* Action to take for unmappable bytes */
nint noMapUniAction /* Action to take for unmappable unicode */
);
N_EXTERN_LIBRARY(nint) NWUXGetNoMapAction
( /* Get action to be taken for no map chars */
pCONVERT byteUniHandle, /* Handle to a Byte <-> Unicode converter */
pnint noMapByteAction, /* Action to take for unmappable bytes */
pnint noMapUniAction /* Action to take for unmappable unicode */
);
N_EXTERN_LIBRARY(nint) NWUXSetScanAction
( /* Enable or disable scan/parse functions */
pCONVERT byteUniHandle, /* Handle to a Byte <-> Unicode converter */
nint scanByteAction, /* Set action for scan/parse byte functions */
nint scanUniAction /* Set action for scan/parse uni functions */
);
N_EXTERN_LIBRARY(nint) NWUXGetScanAction
( /* Get status of scan/parse functions */
pCONVERT byteUniHandle, /* Handle to a Byte <-> Unicode converter */
pnint scanByteAction, /* Status of scan/parse byte functions */
pnint scanUniAction /* Status of scan/parse uni functions */
);
N_EXTERN_LIBRARY(nint) NWUXSetSubByte
( /* Set substitution byte for converter */
pCONVERT byteUniHandle, /* Handle to a Byte <-> Unicode converter */
nuint8 substituteByte /* Byte to be substituted */
);
N_EXTERN_LIBRARY(nint) NWUXGetSubByte
( /* Get substitution byte for converter */
pCONVERT byteUniHandle, /* Handle to a Byte <-> Unicode converter */
pnuint8 substituteByte /* Substitution byte returned here */
);
N_EXTERN_LIBRARY(nint) NWUXSetSubUni
( /* Set substitute uni char for converter */
pCONVERT byteUniHandle, /* Handle to a Byte <-> Unicode converter */
unicode substituteUni /* Unicode character to be substituted */
);
N_EXTERN_LIBRARY(nint) NWUXGetSubUni
( /* Get substitute uni char for converter */
pCONVERT byteUniHandle, /* Handle to a Byte <-> Unicode converter */
punicode substituteUni /* Substitution unicode char returned here */
);
N_EXTERN_LIBRARY(nint) NWUXSetByteFunctions
( /* Set up unmappable byte handling */
pCONVERT byteUniHandle, /* Handle to a Byte <-> Unicode converter */
NMBYTE noMapByteFunc, /* Function called for unmappable bytes */
SCBYTE scanByteFunc, /* Byte scanning function */
PRBYTE parseByteFunc /* Byte parsing function */
);
N_EXTERN_LIBRARY(nint) NWUXGetByteFunctions
( /* Get unmappable byte handling functions */
pCONVERT byteUniHandle, /* Handle to a Byte <-> Unicode converter */
NMBYTE N_FAR *noMapByteFunc,/* Handler function returned here */
SCBYTE N_FAR *scanByteFunc, /* Byte scanning function */
PRBYTE N_FAR *parseByteFunc /* Byte parsing function */
);
N_EXTERN_LIBRARY(nint) NWUXSetUniFunctions
( /* Set up unmappable character handling */
pCONVERT byteUniHandle, /* Handle to a Byte <-> Unicode converter */
NMUNI noMapUniFunc, /* Function called for unmappable uni chars */
SCUNI scanUniFunc, /* Unicode scanning function */
PRUNI parseUniFunc /* Unicode parsing function */
);
N_EXTERN_LIBRARY(nint) NWUXGetUniFunctions
( /* Set up unmappable unicode char handling */
pCONVERT byteUniHandle, /* Handle to a Byte <-> Unicode converter */
NMUNI N_FAR *noMapUniFunc, /* Function called for unmappable uni chars */
SCUNI N_FAR *scanUniFunc, /* Unicode scan function */
PRUNI N_FAR *parseUniFunc /* Unicode parse function */
);
N_EXTERN_LIBRARY(nint) NWUXEnableOemEuro
(
pCONVERT convert /* Set up converter to use the NW OEM Euro */
);
N_EXTERN_LIBRARY(nint) NWUXResetConverter
(
pCONVERT convert /* Reset a converter to default state */
);
/****************************************************************************/
/*
Table based Unicode/Local text conversion APIs. The converter based
APIs are preferred over these.
*/
N_EXTERN_LIBRARY(nint) NWInitUnicodeTables
(
nint countryCode,
nint codePage
);
N_EXTERN_LIBRARY(NWRCODE) NWLSetPrimaryUnicodeSearchPath
(
const nstr N_FAR *strSearchPath
);
N_EXTERN_LIBRARY(nint) NWFreeUnicodeTables
(
void
);
N_EXTERN_LIBRARY(nint) NWLoadRuleTable
(
pnstr ruleTableName, /* Name of the rule table */
pnptr ruleHandle /* Where to put the rule table handle */
);
N_EXTERN_LIBRARY(nint) NWUnloadRuleTable
(
nptr ruleHandle /* Rule table handle */
);
#if defined N_PLAT_NLM
/* NWUSByteToUnicode or NWUXByteToUnicode are preferred */
N_EXTERN_LIBRARY(nint)
NWLocalToUnicode /* Convert local to Unicode */
(
nptr ruleHandle, /* Rule table handle */
punicode dest, /* Buffer for resulting Unicode */
nuint32 maxLen, /* Size of results buffer */
const void N_FAR * src, /* Buffer with source local code */
unicode noMap, /* No map character */
pnuint len, /* Number of unicode chars in output */
nuint32 allowNoMapFlag /* Flag indicating default map is allowable */
);
/* NWUSUnicodeToByte or NWUXUnicodeToByte are preferred */
N_EXTERN_LIBRARY(nint)
NWUnicodeToLocal /* Convert Unicode to local code */
(
nptr ruleHandle, /* Rule table handle */
nptr dest, /* Buffer for resulting local code */
nuint32 maxLen, /* Size of results buffer */
const unicode N_FAR * src, /* Buffer with source Unicode */
nuint8 noMap, /* No Map character */
pnuint len, /* Number of bytes in output */
nuint32 allowNoMapFlag /* Flag indicating default map is allowable */
);
#if !defined(EXCLUDE_UNICODE_NLM_COMPATIBILITY_MACROS)
#define NWLocalToUnicode(P1,P2,P3,P4,P5,P6) NWLocalToUnicode(P1,P2,P3,P4,P5,P6, 1)
#define NWUnicodeToLocal(P1,P2,P3,P4,P5,P6) NWUnicodeToLocal(P1,P2,P3,P4,P5,P6, 1)
#endif
/* If I could make size_t be nuint32 for N_PLAT_NLM all of the functions */
/* below here could be single sourced. */
#if 0
N_EXTERN_LIBRARY(nint)
NWUnicodeToCollation /* Convert Unicode to collation */
(
nptr ruleHandle, /* Rule table handle */
punicode dest, /* Buffer for resulting Unicode weights*/
nuint32 maxLen, /* Size of results buffer */
const unicode N_FAR * src, /* Buffer with source Unicode */
unicode noMap, /* No map character */
pnuint32 len /* Number of unicode chars in output */
);
N_EXTERN_LIBRARY(nint)
NWUnicodeCompare /* Compare two unicode characters */
(
nptr ruleHandle, /* Rule table handle */
unicode chr1, /* 1st character */
unicode chr2 /* 2nd character */
);
N_EXTERN_LIBRARY(nint)
NWUnicodeToMonocase /* Convert Unicode to collation */
(
nptr ruleHandle, /* Rule table handle */
punicode dest, /* Buffer for resulting Unicode weights*/
nuint32 maxLen, /* Size of results buffer */
const unicode N_FAR * src, /* Buffer with source Unicode */
pnuint32 len /* Number of unicode chars in output */
);
#endif
#else /* not N_PLAT_NLM */
/* NWUSByteToUnicode or NWUXByteToUnicode are preferred */
N_EXTERN_LIBRARY(nint)
NWLocalToUnicode /* Convert local to Unicode */
(
nptr ruleHandle, /* Rule table handle */
punicode dest, /* Buffer for resulting Unicode */
size_t maxLen, /* Size of results buffer */
const nuint8 N_FAR * src, /* Buffer with source local code */
unicode noMap, /* No map character */
size_t N_FAR * len /* Number of unicode chars in output */
);
/* NWUSUnicodeToByte or NWUXUnicodeToByte are preferred */
N_EXTERN_LIBRARY(nint)
NWUnicodeToLocal /* Convert Unicode to local code */
(
nptr ruleHandle, /* Rule table handle */
pnuint8 dest, /* Buffer for resulting local code */
size_t maxLen, /* Size of results buffer */
const unicode N_FAR * src, /* Buffer with source Unicode */
unsigned char noMap, /* No Map character */
size_t N_FAR * len /* Number of bytes in output */
);
#endif /* not N_PLAT_NLM */
N_EXTERN_LIBRARY(nint)
NWUnicodeToCollation /* Convert Unicode to collation */
(
nptr ruleHandle, /* Rule table handle */
punicode dest, /* Buffer for resulting Unicode weights*/
size_t maxLen, /* Size of results buffer */
const unicode N_FAR * src, /* Buffer with source Unicode */
unicode noMap, /* No map character */
size_t N_FAR * len /* Number of unicode chars in output */
);
N_EXTERN_LIBRARY(nint)
NWUnicodeCompare /* Compare two unicode characters */
(
nptr ruleHandle, /* Rule table handle */
unicode chr1, /* 1st character */
unicode chr2 /* 2nd character */
);
N_EXTERN_LIBRARY(nint)
NWUnicodeToMonocase /* Convert Unicode to collation */
(
nptr ruleHandle, /* Rule table handle */
punicode dest, /* Buffer for resulting Unicode weights*/
size_t maxLen, /* Size of results buffer */
const unicode N_FAR * src, /* Buffer with source Unicode */
size_t N_FAR * len /* Number of unicode chars in output */
);
/*
* Functions that work with XLate Tables
*/
#if defined N_PLAT_DOS && defined N_UNI_NEW_TABLES
# define N_UNI_LOAD_MONOCASE 0x0001
# define N_UNI_LOAD_COLLATION 0x0002
N_EXTERN_LIBRARY(nint) NWLInitXlateTables
(
nint codePage,
nflag8 flags
);
N_EXTERN_LIBRARY(nint) NWLFreeXlateTables
(
void
);
N_EXTERN_LIBRARY(nint) NWLLoadXlateTable
(
pnstr ruleTableName, /* Name of the rule table */
pnptr ruleHandle /* Where to put the rule table handle */
);
N_EXTERN_LIBRARY(nint) NWLUnloadXlateTable
(
const void N_FAR * ruleHandle /* Rule table handle */
);
# define NWInitUnicodeTables(CountryCode, CodePage) \
NWLInitXlateTables( \
CodePage, \
N_UNI_LOAD_MONOCASE | N_UNI_LOAD_COLLATION \
)
# define NWFreeUnicodeTables NWLFreeXlateTables
# define NWLoadRuleTable NWLLoadXlateTable
# define NWUnloadRuleTable NWLUnloadXlateTable
#endif
N_EXTERN_LIBRARY(nint) NWGetUnicodeToLocalHandle
(
pnptr handle
);
N_EXTERN_LIBRARY(nint) NWGetLocalToUnicodeHandle
(
pnptr handle
);
N_EXTERN_LIBRARY(nint) NWGetMonocaseHandle
(
pnptr handle
);
N_EXTERN_LIBRARY(nint) NWGetCollationHandle
(
pnptr handle
);
/****************************************************************************/
/*
Redefine these functions to use the new unicode API monocase routines.
*/
#ifdef N_PLAT_NLM
# define uniicmp(s1, s2) nwusuniicmp(s1, s2)
# define uninicmp(s1, s2, l) nwusuninicmp(s1, s2, l)
#endif
/*
Unicode string functions that work like those in string.h
*/
N_EXTERN_LIBRARY(punicode) unicat /* Corresponds to strcat */
(
punicode s1, /* Original string */
const unicode N_FAR * s2 /* String to be appended */
);
N_EXTERN_LIBRARY(punicode) unichr /* Corresponds to strchr */
(
const unicode N_FAR * s, /* String to be scanned */
unicode c /* Character to be found */
);
N_EXTERN_LIBRARY(punicode) unicpy /* Corresponds to strcpy */
(
punicode s1, /* Destination string */
const unicode N_FAR * s2 /* Source string */
);
N_EXTERN_LIBRARY(size_t) unicspn /* Corresponds to strcspn */
(
const unicode N_FAR * s1, /* String to be scanned */
const unicode N_FAR * s2 /* Character set */
);
N_EXTERN_LIBRARY(size_t) unilen /* Corresponds to strlen */
(
const unicode N_FAR * s /* String to determine length of */
);
N_EXTERN_LIBRARY(punicode) unincat /* Corresponds to strncat */
(
punicode s1, /* Original string */
const unicode N_FAR * s2, /* String to be appended */
size_t n /* Maximum characters to be appended */
);
N_EXTERN_LIBRARY(punicode) unincpy /* Corresponds to strncpy */
(
punicode s1, /* Destination string */
const unicode N_FAR * s2, /* Source string */
size_t n /* Maximum length */
);
N_EXTERN_LIBRARY(punicode) uninset /* Corresponds to strnset */
(
punicode s, /* String to be modified */
unicode c, /* Fill character */
size_t n /* Maximum length */
);
N_EXTERN_LIBRARY(punicode) unipbrk /* Corresponds to strpbrk */
(
const unicode N_FAR * s1, /* String to be scanned */
const unicode N_FAR * s2 /* Character set */
);
N_EXTERN_LIBRARY (punicode) unipcpy /* Corresponds to strpcpy */
(
punicode s1, /* Destination string */
const unicode N_FAR * s2 /* Source string */
);
N_EXTERN_LIBRARY(punicode) unirchr /* Corresponds to strrchr */
(
const unicode N_FAR * s, /* String to be scanned */
unicode c /* Character to be found */
);
N_EXTERN_LIBRARY(punicode) unirev /* Corresponds to strrev */
(
punicode s /* String to be reversed */
);
N_EXTERN_LIBRARY(punicode) uniset /* Corresponds to strset */
(
punicode s, /* String to modified */
unicode c /* Fill character */
);
N_EXTERN_LIBRARY(size_t) unispn /* Corresponds to strspn */
(
const unicode N_FAR * s1, /* String to be tested */
const unicode N_FAR * s2 /* Character set */
);
N_EXTERN_LIBRARY(punicode) unistr /* Corresponds to strstr */
(
const unicode N_FAR * s1, /* String to be scanned */
const unicode N_FAR * s2 /* String to be located */
);
N_EXTERN_LIBRARY(punicode) unitok /* Corresponds to strtok */
(
punicode s1, /* String to be parsed */
const unicode N_FAR * s2 /* Delimiter values */
);
N_EXTERN_LIBRARY(nint) uniicmp /* Corresponds to stricmp */
(
const unicode N_FAR * s1, /* 1st string to be compared */
const unicode N_FAR * s2 /* 2nd string to be compared */
);
N_EXTERN_LIBRARY(nint) uninicmp /* Corresponds to strnicmp */
(
const unicode N_FAR * s1, /* 1st string to be compared */
const unicode N_FAR * s2, /* 2nd string to be compared */
size_t len /* Maximum length */
);
N_EXTERN_LIBRARY(nint) unicmp /* Unicode compare */
(
const unicode N_FAR * s1,
const unicode N_FAR * s2
);
N_EXTERN_LIBRARY(nint) unincmp /* Unicode length compare */
(
const unicode N_FAR * s1,
const unicode N_FAR * s2,
size_t len
);
N_EXTERN_LIBRARY(size_t) unisize /* Corresponds to sizeof */
(
const unicode N_FAR * s
);
/*
* UTF-8 <--> Unicode Conversion APIS
*/
N_EXTERN_LIBRARY(nint) NWLUnicodeToUTF8
(
const unicode N_FAR * uniStr,
nuint maxSize,
pnuint8 utf8Str,
pnuint utf8Size
);
N_EXTERN_LIBRARY(nint) NWLUTF8ToUnicode
(
const nuint8 N_FAR * utf8Str,
nuint maxSize,
punicode uniStr,
pnuint uniSize,
ppnstr badSequence
);
N_EXTERN_LIBRARY(nint) NWLUTF8ToUnicodeSize
(
const nuint8 N_FAR * utf8Str,
pnuint size
);
N_EXTERN_LIBRARY(nuint) NWLUnicodeToUTF8Size
(
const unicode N_FAR * uniStr
);
#ifdef __cplusplus
}
#endif
#endif
/****************************************************************************/