ICU 57.1 57.1
icuplug.h
Go to the documentation of this file.
1/*
2******************************************************************************
3*
4* Copyright (C) 2009-2015, International Business Machines
5* Corporation and others. All Rights Reserved.
6*
7******************************************************************************
8*
9* FILE NAME : icuplug.h
10*
11* Date Name Description
12* 10/29/2009 sl New.
13******************************************************************************
14*/
15
105#ifndef ICUPLUG_H
106#define ICUPLUG_H
107
108#include "unicode/utypes.h"
109
110
111#if UCONFIG_ENABLE_PLUGINS
112
113
114
115/* === Basic types === */
116
117#ifndef U_HIDE_INTERNAL_API
125struct UPlugData;
126typedef struct UPlugData UPlugData;
127
135#define UPLUG_TOKEN 0x54762486
136
141#define UPLUG_NAME_MAX 100
142
143
150typedef uint32_t UPlugTokenReturn;
151
156typedef enum {
162
163
171typedef enum {
178
187 UPlugData *plug,
188 UPlugReason reason,
189 UErrorCode *status);
190
191/* === Needed for Implementing === */
192
201U_INTERNAL void U_EXPORT2
202uplug_setPlugNoUnload(UPlugData *plug, UBool dontUnload);
203
210U_INTERNAL void U_EXPORT2
211uplug_setPlugLevel(UPlugData *plug, UPlugLevel level);
212
219U_INTERNAL UPlugLevel U_EXPORT2
220uplug_getPlugLevel(UPlugData *plug);
221
229U_INTERNAL UPlugLevel U_EXPORT2
231
232
238U_INTERNAL UErrorCode U_EXPORT2
239uplug_getPlugLoadStatus(UPlugData *plug);
240
247U_INTERNAL void U_EXPORT2
248uplug_setPlugName(UPlugData *plug, const char *name);
249
256U_INTERNAL const char * U_EXPORT2
257uplug_getPlugName(UPlugData *plug);
258
265U_INTERNAL const char * U_EXPORT2
266uplug_getSymbolName(UPlugData *plug);
267
275U_INTERNAL const char * U_EXPORT2
276uplug_getLibraryName(UPlugData *plug, UErrorCode *status);
277
285U_INTERNAL void * U_EXPORT2
286uplug_getLibrary(UPlugData *plug);
287
294U_INTERNAL void * U_EXPORT2
295uplug_getContext(UPlugData *plug);
296
303U_INTERNAL void U_EXPORT2
304uplug_setContext(UPlugData *plug, void *context);
305
306
314U_INTERNAL const char * U_EXPORT2
315uplug_getConfiguration(UPlugData *plug);
316
332U_INTERNAL UPlugData* U_EXPORT2
333uplug_nextPlug(UPlugData *prior);
334
347U_INTERNAL UPlugData* U_EXPORT2
348uplug_loadPlugFromEntrypoint(UPlugEntrypoint *entrypoint, const char *config, UErrorCode *status);
349
350
361U_INTERNAL UPlugData* U_EXPORT2
362uplug_loadPlugFromLibrary(const char *libName, const char *sym, const char *config, UErrorCode *status);
363
371U_INTERNAL void U_EXPORT2
372uplug_removePlug(UPlugData *plug, UErrorCode *status);
373#endif /* U_HIDE_INTERNAL_API */
374
375#endif /* UCONFIG_ENABLE_PLUGINS */
376
377#endif /* _ICUPLUG */
378
uint32_t UPlugTokenReturn
Return value from a plugin entrypoint.
Definition: icuplug.h:150
UErrorCode uplug_getPlugLoadStatus(UPlugData *plug)
Get plug load status.
void * uplug_getContext(UPlugData *plug)
Return the plugin-specific context data.
UPlugReason
Reason code for the entrypoint's call.
Definition: icuplug.h:156
@ UPLUG_REASON_COUNT
count of known reasons
Definition: icuplug.h:160
@ UPLUG_REASON_LOAD
The plugin is being loaded.
Definition: icuplug.h:158
@ UPLUG_REASON_UNLOAD
The plugin is being unloaded.
Definition: icuplug.h:159
@ UPLUG_REASON_QUERY
The plugin is being queried for info.
Definition: icuplug.h:157
UPlugData * uplug_nextPlug(UPlugData *prior)
Return all currently installed plugins, from newest to oldest Usage Example:
void uplug_setPlugNoUnload(UPlugData *plug, UBool dontUnload)
Request that this plugin not be unloaded at cleanup time.
const char * uplug_getSymbolName(UPlugData *plug)
Return the symbol name for this plugin, if known.
const char * uplug_getConfiguration(UPlugData *plug)
Get the configuration string, if available.
UPlugLevel uplug_getPlugLevel(UPlugData *plug)
Get the level of this plugin.
const char * uplug_getPlugName(UPlugData *plug)
Get the human-readable name of this plugin.
void uplug_setContext(UPlugData *plug, void *context)
Set the plugin-specific context data.
UPlugTokenReturn() UPlugEntrypoint(UPlugData *plug, UPlugReason reason, UErrorCode *status)
Entrypoint for an ICU plugin.
Definition: icuplug.h:186
void uplug_removePlug(UPlugData *plug, UErrorCode *status)
Remove a plugin.
UPlugData * uplug_loadPlugFromEntrypoint(UPlugEntrypoint *entrypoint, const char *config, UErrorCode *status)
Inject a plugin as if it were loaded from a library.
UPlugData * uplug_loadPlugFromLibrary(const char *libName, const char *sym, const char *config, UErrorCode *status)
Inject a plugin from a library, as if the information came from a config file.
const char * uplug_getLibraryName(UPlugData *plug, UErrorCode *status)
Return the library name for this plugin, if known.
void uplug_setPlugLevel(UPlugData *plug, UPlugLevel level)
Set the level of this plugin.
void uplug_setPlugName(UPlugData *plug, const char *name)
Set the human-readable name of this plugin.
UPlugLevel
Level of plugin loading INITIAL: UNKNOWN QUERY: INVALID -> { LOW | HIGH } ERR -> INVALID.
Definition: icuplug.h:171
@ UPLUG_LEVEL_INVALID
The plugin is invalid, hasn't called uplug_setLevel, or can't load.
Definition: icuplug.h:172
@ UPLUG_LEVEL_COUNT
count of known reasons
Definition: icuplug.h:176
@ UPLUG_LEVEL_UNKNOWN
The plugin is waiting to be installed.
Definition: icuplug.h:173
@ UPLUG_LEVEL_HIGH
The plugin can run at any time.
Definition: icuplug.h:175
@ UPLUG_LEVEL_LOW
The plugin must be called before u_init completes.
Definition: icuplug.h:174
void * uplug_getLibrary(UPlugData *plug)
Return the library used for this plugin, if known.
UPlugLevel uplug_getCurrentLevel(void)
Get the lowest level of plug which can currently load.
#define U_INTERNAL
This is used to declare a function as an internal ICU C API
Definition: umachine.h:117
int8_t UBool
The ICU boolean type.
Definition: umachine.h:234
Basic definitions for ICU, for both C and C++ APIs.
UErrorCode
Error code to replace exception handling, so that the code is compatible with all C++ compilers,...
Definition: utypes.h:476