ICU 76.1: common/unicode/icuplug.h Source File

ICU 76.1 76.1

icuplug.h
Go to the documentation of this file.
1// © 2016 and later: Unicode, Inc. and others.
2// License & terms of use: http://www.unicode.org/copyright.html
3/*
4******************************************************************************
5*
6* Copyright (C) 2009-2015, International Business Machines
7* Corporation and others. All Rights Reserved.
8*
9******************************************************************************
10*
11* FILE NAME : icuplug.h
12*
13* Date Name Description
14* 10/29/2009 sl New.
15******************************************************************************
16*/
17
107#ifndef ICUPLUG_H
108#define ICUPLUG_H
109
110#include "unicode/utypes.h"
111
112
113#if UCONFIG_ENABLE_PLUGINS || defined(U_IN_DOXYGEN)
114
115
116
117/* === Basic types === */
118
119#ifndef U_HIDE_INTERNAL_API
120struct UPlugData;
127 typedef struct UPlugData UPlugData;
128
136#define UPLUG_TOKEN 0x54762486
137
142#define UPLUG_NAME_MAX 100
143
144
151 typedef uint32_t UPlugTokenReturn;
152
157 typedef enum {
158 UPLUG_REASON_QUERY = 0,
159 UPLUG_REASON_LOAD = 1,
160 UPLUG_REASON_UNLOAD = 2,
165 UPLUG_REASON_COUNT
166} UPlugReason;
167
168
176 typedef enum {
177 UPLUG_LEVEL_INVALID = 0,
178 UPLUG_LEVEL_UNKNOWN = 1,
179 UPLUG_LEVEL_LOW = 2,
180 UPLUG_LEVEL_HIGH = 3,
185 UPLUG_LEVEL_COUNT
186} UPlugLevel;
187
199 typedef UPlugTokenReturn (U_EXPORT2 UPlugEntrypoint) (
200 UPlugData *plug,
201 UPlugReason reason,
202 UErrorCode *status);
203
204/* === Needed for Implementing === */
205
214 U_CAPI void U_EXPORT2
215uplug_setPlugNoUnload(UPlugData *plug, UBool dontUnload);
216
223 U_CAPI void U_EXPORT2
224uplug_setPlugLevel(UPlugData *plug, UPlugLevel level);
225
232 U_CAPI UPlugLevel U_EXPORT2
233uplug_getPlugLevel(UPlugData *plug);
234
242 U_CAPI UPlugLevel U_EXPORT2
243uplug_getCurrentLevel(void);
244
245
251 U_CAPI UErrorCode U_EXPORT2
252uplug_getPlugLoadStatus(UPlugData *plug);
253
260 U_CAPI void U_EXPORT2
261uplug_setPlugName(UPlugData *plug, const char *name);
262
269 U_CAPI const char * U_EXPORT2
270uplug_getPlugName(UPlugData *plug);
271
278 U_CAPI const char * U_EXPORT2
279uplug_getSymbolName(UPlugData *plug);
280
288 U_CAPI const char * U_EXPORT2
289uplug_getLibraryName(UPlugData *plug, UErrorCode *status);
290
298 U_CAPI void * U_EXPORT2
299uplug_getLibrary(UPlugData *plug);
300
307 U_CAPI void * U_EXPORT2
308uplug_getContext(UPlugData *plug);
309
316 U_CAPI void U_EXPORT2
317uplug_setContext(UPlugData *plug, void *context);
318
319
327 U_CAPI const char * U_EXPORT2
328uplug_getConfiguration(UPlugData *plug);
329
345 U_CAPI UPlugData* U_EXPORT2
346uplug_nextPlug(UPlugData *prior);
347
360 U_CAPI UPlugData* U_EXPORT2
361uplug_loadPlugFromEntrypoint(UPlugEntrypoint *entrypoint, const char *config, UErrorCode *status);
362
363
374 U_CAPI UPlugData* U_EXPORT2
375uplug_loadPlugFromLibrary(const char *libName, const char *sym, const char *config, UErrorCode *status);
376
384 U_CAPI void U_EXPORT2
385uplug_removePlug(UPlugData *plug, UErrorCode *status);
386#endif /* U_HIDE_INTERNAL_API */
387
388#endif /* UCONFIG_ENABLE_PLUGINS */
389
390#endif /* _ICUPLUG */
391
UPlugTokenReturn
uint32_t UPlugTokenReturn
Return value from a plugin entrypoint.
Definition icuplug.h:151
uplug_loadPlugFromLibrary
U_CAPI 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.
UPlugReason
UPlugReason
Reason code for the entrypoint's call.
Definition icuplug.h:157
UPLUG_REASON_COUNT
@ UPLUG_REASON_COUNT
Number of known reasons.
Definition icuplug.h:165
UPLUG_REASON_LOAD
@ UPLUG_REASON_LOAD
The plugin is being loaded.
Definition icuplug.h:159
UPLUG_REASON_UNLOAD
@ UPLUG_REASON_UNLOAD
The plugin is being unloaded.
Definition icuplug.h:160
UPLUG_REASON_QUERY
@ UPLUG_REASON_QUERY
The plugin is being queried for info.
Definition icuplug.h:158
uplug_getContext
U_CAPI void * uplug_getContext(UPlugData *plug)
Return the plugin-specific context data.
uplug_removePlug
U_CAPI void uplug_removePlug(UPlugData *plug, UErrorCode *status)
Remove a plugin.
uplug_setContext
U_CAPI void uplug_setContext(UPlugData *plug, void *context)
Set the plugin-specific context data.
uplug_getConfiguration
U_CAPI const char * uplug_getConfiguration(UPlugData *plug)
Get the configuration string, if available.
UPlugData
struct UPlugData UPlugData
Typedef for opaque structure passed to/from a plugin.
Definition icuplug.h:127
uplug_loadPlugFromEntrypoint
U_CAPI UPlugData * uplug_loadPlugFromEntrypoint(UPlugEntrypoint *entrypoint, const char *config, UErrorCode *status)
Inject a plugin as if it were loaded from a library.
uplug_setPlugName
U_CAPI void uplug_setPlugName(UPlugData *plug, const char *name)
Set the human-readable name of this plugin.
uplug_setPlugLevel
U_CAPI void uplug_setPlugLevel(UPlugData *plug, UPlugLevel level)
Set the level of this plugin.
uplug_getPlugName
U_CAPI const char * uplug_getPlugName(UPlugData *plug)
Get the human-readable name of this plugin.
uplug_getPlugLevel
U_CAPI UPlugLevel uplug_getPlugLevel(UPlugData *plug)
Get the level of this plugin.
uplug_getLibraryName
U_CAPI const char * uplug_getLibraryName(UPlugData *plug, UErrorCode *status)
Return the library name for this plugin, if known.
UPlugEntrypoint
UPlugTokenReturn UPlugEntrypoint(UPlugData *plug, UPlugReason reason, UErrorCode *status)
Entrypoint for an ICU plugin.
Definition icuplug.h:199
uplug_setPlugNoUnload
U_CAPI void uplug_setPlugNoUnload(UPlugData *plug, UBool dontUnload)
Request that this plugin not be unloaded at cleanup time.
uplug_getPlugLoadStatus
U_CAPI UErrorCode uplug_getPlugLoadStatus(UPlugData *plug)
Get plug load status.
uplug_getCurrentLevel
U_CAPI UPlugLevel uplug_getCurrentLevel(void)
Get the lowest level of plug which can currently load.
uplug_getSymbolName
U_CAPI const char * uplug_getSymbolName(UPlugData *plug)
Return the symbol name for this plugin, if known.
uplug_nextPlug
U_CAPI UPlugData * uplug_nextPlug(UPlugData *prior)
Return all currently installed plugins, from newest to oldest Usage Example:
UPlugLevel
UPlugLevel
Level of plugin loading INITIAL: UNKNOWN QUERY: INVALID -> { LOW | HIGH } ERR -> INVALID.
Definition icuplug.h:176
UPLUG_LEVEL_INVALID
@ UPLUG_LEVEL_INVALID
The plugin is invalid, hasn't called uplug_setLevel, or can't load.
Definition icuplug.h:177
UPLUG_LEVEL_COUNT
@ UPLUG_LEVEL_COUNT
Number of known levels.
Definition icuplug.h:185
UPLUG_LEVEL_UNKNOWN
@ UPLUG_LEVEL_UNKNOWN
The plugin is waiting to be installed.
Definition icuplug.h:178
UPLUG_LEVEL_HIGH
@ UPLUG_LEVEL_HIGH
The plugin can run at any time.
Definition icuplug.h:180
UPLUG_LEVEL_LOW
@ UPLUG_LEVEL_LOW
The plugin must be called before u_init completes.
Definition icuplug.h:179
uplug_getLibrary
U_CAPI void * uplug_getLibrary(UPlugData *plug)
Return the library used for this plugin, if known.
UBool
int8_t UBool
The ICU boolean type, a signed-byte integer.
Definition umachine.h:247
U_CAPI
#define U_CAPI
This is used to declare a function as a public ICU C API.
Definition umachine.h:110
utypes.h
Basic definitions for ICU, for both C and C++ APIs.
UErrorCode
UErrorCode
Standard ICU4C error code type, a substitute for exceptions.
Definition utypes.h:430