The m17n Library: Error Handling

# Error Handling
[MISC API]

Error handling of the m17n library. More...

## Enumerations
enum | MErrorCode { MERROR_NONE, MERROR_OBJECT, MERROR_SYMBOL, MERROR_MTEXT, MERROR_TEXTPROP, MERROR_CHAR, MERROR_CHARTABLE, MERROR_CHARSET, MERROR_CODING, MERROR_RANGE, MERROR_LANGUAGE, MERROR_LOCALE, MERROR_PLIST, MERROR_MISC, MERROR_WIN, MERROR_X, MERROR_FRAME, MERROR_FACE, MERROR_DRAW, MERROR_FLT, MERROR_FONT, MERROR_FONTSET, MERROR_FONT_OTF, MERROR_FONT_X, MERROR_FONT_FT, MERROR_IM, MERROR_DB, MERROR_IO, MERROR_DEBUG, MERROR_MEMORY, MERROR_GD, MERROR_MAX }
| Enumeration for error code of the m17n library. More...
## Variables
int | merror_code
| External variable to hold error code of the m17n library.
void(* | m17n_memory_full_handler )(enum MErrorCode err)
| Memory allocation error handler.

## Detailed Description

Error handling of the m17n library.

There are two types of errors that may happen in a function of the m17n library.

The first type is argument errors. When a library function is called with invalid arguments, it returns a value that indicates error and at the same time sets the external variable merror_code to a non-zero integer.

The second type is memory allocation errors. When the required amount of memory is not available on the system, m17n library functions call a function pointed to by the external variable `m17n_memory_full_handler`. The default value of the variable is a pointer to the default_error_handle() function, which just calls `exit()`.

## Enumeration Type Documentation

enum MErrorCode

Enumeration for error code of the m17n library.

Enumeration for error code of the m17n library.

When a library function is called with an invalid argument, it sets the external variable merror_code to one of these values. All the error codes are positive integers.

When a memory allocation error happens, the function pointed to by the external variable m17n_memory_full_handler is called with one of these values as an argument.

Enumerator:

  MERROR_NONE |
  MERROR_OBJECT |
  MERROR_SYMBOL |
  MERROR_MTEXT |
  MERROR_TEXTPROP |
  MERROR_CHAR |
  MERROR_CHARTABLE |
  MERROR_CHARSET |
  MERROR_CODING |
  MERROR_RANGE |
  MERROR_LANGUAGE |
  MERROR_LOCALE |
  MERROR_PLIST |
  MERROR_MISC |
  MERROR_WIN |
  MERROR_X |
  MERROR_FRAME |
  MERROR_FACE |
  MERROR_DRAW |
  MERROR_FLT |
  MERROR_FONT |
  MERROR_FONTSET |
  MERROR_FONT_OTF |
  MERROR_FONT_X |
  MERROR_FONT_FT |
  MERROR_IM |
  MERROR_DB |
  MERROR_IO |
  MERROR_DEBUG |
  MERROR_MEMORY |
  MERROR_GD |
  MERROR_MAX |

## Variable Documentation

int merror_code

External variable to hold error code of the m17n library.

The external variable merror_code holds an error code of the m17n library. When a library function is called with an invalid argument, it sets this variable to one of `enum` MErrorCode.

This variable initially has the value 0.

void(* m17n_memory_full_handler)(enum MErrorCode err)

Memory allocation error handler.

The external variable m17n_memory_full_handler holds a pointer to the function to call when a library function failed to allocate memory. err is one of `enum` MErrorCode indicating in which function the error occurred.

This variable initially points a function that simply calls the `exit` () function with err as an argument.

An application program that needs a different error handling can change this variable to point a proper function.