C API allowing run-time loadable modules that extend or modify ICU functionality.
At ICU startup time, the environment variable "ICU_PLUGINS" will be 29 * queried for a directory name. If it is not set, the preprocessor symbol 30 * "DEFAULT_ICU_PLUGINS" will be checked for a default value.
Within the above-named directory, the file "icuplugins##.txt" will be 33 * opened, if present, where ## is the major+minor number of the currently 34 * running ICU (such as, 44 for ICU 4.4, thus icuplugins44.txt)
The configuration file has this format:
An example configuration file is, in its entirety:
Plugins are categorized as "high" or "low" level. Low level are those 63 * which must be run BEFORE high level plugins, and before any operations 64 * which cause ICU to be 'initialized'. If a plugin is low level but 65 * causes ICU to allocate memory or become initialized, that plugin is said 66 * to cause a 'level change'.
At load time, ICU first queries all plugins to determine their level, 69 * then loads all 'low' plugins first, and then loads all 'high' plugins. 70 * Plugins are otherwise loaded in the order listed in the configuration file.
The UPlugData* is an opaque pointer to the plugin-specific data, and is 89 * used in all other API calls.
The API contract is: