Logo Search packages:      
Sourcecode: icu version File versions

ucnv_err.h File Reference


Detailed Description

C UConverter predefined error callbacks.

Error Behaviour Functions

Defines some error behaviour functions called by ucnv_{from,to}Unicode These are provided as part of ICU and many are stable, but they can also be considered only as an example of what can be done with callbacks. You may of course write your own.

If you want to write your own, you may also find the functions from ucnv_cb.h useful when writing your own callbacks.

These functions, although public, should NEVER be called directly. They should be used as parameters to the ucnv_setFromUCallback and ucnv_setToUCallback functions, to set the behaviour of a converter when it encounters ILLEGAL/UNMAPPED/INVALID sequences.

usage example: 'STOP' doesn't need any context, but newContext could be set to something other than 'NULL' if needed. The available contexts in this header can modify the default behavior of the callback.

  UErrorCode err = U_ZERO_ERROR;
  UConverter *myConverter = ucnv_open("ibm-949", &err);
  const void *oldContext;
  UConverterFromUCallback oldAction;


  if (U_SUCCESS(err))
  {
      ucnv_setFromUCallBack(myConverter,
                       UCNV_FROM_U_CALLBACK_STOP,
                       NULL,
                       &oldAction,
                       &oldContext,
                       &status);
  }

The code above tells "myConverter" to stop when it encounters an ILLEGAL/TRUNCATED/INVALID sequences when it is used to convert from Unicode -> Codepage. The behavior from Codepage to Unicode is not changed, and ucnv_setToUCallBack would need to be called in order to change that behavior too.

Here is an example with a context:

  UErrorCode err = U_ZERO_ERROR;
  UConverter *myConverter = ucnv_open("ibm-949", &err);
  const void *oldContext;
  UConverterFromUCallback oldAction;


  if (U_SUCCESS(err))
  {
      ucnv_setToUCallBack(myConverter,
                       UCNV_TO_U_CALLBACK_SUBSTITUTE,
                       UCNV_SUB_STOP_ON_ILLEGAL,
                       &oldAction,
                       &oldContext,
                       &status);
  }

The code above tells "myConverter" to stop when it encounters an ILLEGAL/TRUNCATED/INVALID sequences when it is used to convert from Codepage -> Unicode. Any unmapped and legal characters will be substituted to be the default substitution character.

Definition in file ucnv_err.h.

#include "unicode/utypes.h"

Go to the source code of this file.

Classes

struct  UConverterFromUnicodeArgs
struct  UConverterToUnicodeArgs

Defines

#define UCNV_ESCAPE_C   "C"
#define UCNV_ESCAPE_CSS2   "S"
#define UCNV_ESCAPE_ICU   NULL
#define UCNV_ESCAPE_JAVA   "J"
#define UCNV_ESCAPE_UNICODE   "U"
#define UCNV_ESCAPE_XML_DEC   "D"
#define UCNV_ESCAPE_XML_HEX   "X"
#define UCNV_SKIP_STOP_ON_ILLEGAL   "i"
#define UCNV_SUB_STOP_ON_ILLEGAL   "i"

Typedefs

typedef struct UConverter UConverter

Enumerations

enum  UConverterCallbackReason {
  UCNV_UNASSIGNED = 0, UCNV_ILLEGAL = 1, UCNV_IRREGULAR = 2, UCNV_RESET = 3,
  UCNV_CLOSE = 4, UCNV_CLONE = 5
}

Functions

U_STABLE void U_EXPORT2 UCNV_FROM_U_CALLBACK_ESCAPE (const void *context, UConverterFromUnicodeArgs *fromUArgs, const UChar *codeUnits, int32_t length, UChar32 codePoint, UConverterCallbackReason reason, UErrorCode *err)
U_STABLE void U_EXPORT2 UCNV_FROM_U_CALLBACK_SKIP (const void *context, UConverterFromUnicodeArgs *fromUArgs, const UChar *codeUnits, int32_t length, UChar32 codePoint, UConverterCallbackReason reason, UErrorCode *err)
U_STABLE void U_EXPORT2 UCNV_FROM_U_CALLBACK_STOP (const void *context, UConverterFromUnicodeArgs *fromUArgs, const UChar *codeUnits, int32_t length, UChar32 codePoint, UConverterCallbackReason reason, UErrorCode *err)
U_STABLE void U_EXPORT2 UCNV_FROM_U_CALLBACK_SUBSTITUTE (const void *context, UConverterFromUnicodeArgs *fromUArgs, const UChar *codeUnits, int32_t length, UChar32 codePoint, UConverterCallbackReason reason, UErrorCode *err)
U_STABLE void U_EXPORT2 UCNV_TO_U_CALLBACK_ESCAPE (const void *context, UConverterToUnicodeArgs *toUArgs, const char *codeUnits, int32_t length, UConverterCallbackReason reason, UErrorCode *err)
U_STABLE void U_EXPORT2 UCNV_TO_U_CALLBACK_SKIP (const void *context, UConverterToUnicodeArgs *toUArgs, const char *codeUnits, int32_t length, UConverterCallbackReason reason, UErrorCode *err)
U_STABLE void U_EXPORT2 UCNV_TO_U_CALLBACK_STOP (const void *context, UConverterToUnicodeArgs *toUArgs, const char *codeUnits, int32_t length, UConverterCallbackReason reason, UErrorCode *err)
U_STABLE void U_EXPORT2 UCNV_TO_U_CALLBACK_SUBSTITUTE (const void *context, UConverterToUnicodeArgs *toUArgs, const char *codeUnits, int32_t length, UConverterCallbackReason reason, UErrorCode *err)


Generated by  Doxygen 1.6.0   Back to index