00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00107 #ifndef ICUPLUG_H
00108 #define ICUPLUG_H
00109
00110 #include "unicode/utypes.h"
00111
00112
00113 #if UCONFIG_ENABLE_PLUGINS
00114
00115
00116
00117
00118
00119 #ifndef U_HIDE_INTERNAL_API
00120
00127 struct UPlugData;
00128 typedef struct UPlugData UPlugData;
00129
00137 #define UPLUG_TOKEN 0x54762486
00138
00143 #define UPLUG_NAME_MAX 100
00144
00145
00152 typedef uint32_t UPlugTokenReturn;
00153
00158 typedef enum {
00159 UPLUG_REASON_QUERY = 0,
00160 UPLUG_REASON_LOAD = 1,
00161 UPLUG_REASON_UNLOAD = 2,
00166 UPLUG_REASON_COUNT
00167 } UPlugReason;
00168
00169
00177 typedef enum {
00178 UPLUG_LEVEL_INVALID = 0,
00179 UPLUG_LEVEL_UNKNOWN = 1,
00180 UPLUG_LEVEL_LOW = 2,
00181 UPLUG_LEVEL_HIGH = 3,
00186 UPLUG_LEVEL_COUNT
00187 } UPlugLevel;
00188
00196 typedef UPlugTokenReturn (U_EXPORT2 UPlugEntrypoint) (
00197 UPlugData *plug,
00198 UPlugReason reason,
00199 UErrorCode *status);
00200
00201
00202
00211 U_INTERNAL void U_EXPORT2
00212 uplug_setPlugNoUnload(UPlugData *plug, UBool dontUnload);
00213
00220 U_INTERNAL void U_EXPORT2
00221 uplug_setPlugLevel(UPlugData *plug, UPlugLevel level);
00222
00229 U_INTERNAL UPlugLevel U_EXPORT2
00230 uplug_getPlugLevel(UPlugData *plug);
00231
00239 U_INTERNAL UPlugLevel U_EXPORT2
00240 uplug_getCurrentLevel(void);
00241
00242
00248 U_INTERNAL UErrorCode U_EXPORT2
00249 uplug_getPlugLoadStatus(UPlugData *plug);
00250
00257 U_INTERNAL void U_EXPORT2
00258 uplug_setPlugName(UPlugData *plug, const char *name);
00259
00266 U_INTERNAL const char * U_EXPORT2
00267 uplug_getPlugName(UPlugData *plug);
00268
00275 U_INTERNAL const char * U_EXPORT2
00276 uplug_getSymbolName(UPlugData *plug);
00277
00285 U_INTERNAL const char * U_EXPORT2
00286 uplug_getLibraryName(UPlugData *plug, UErrorCode *status);
00287
00295 U_INTERNAL void * U_EXPORT2
00296 uplug_getLibrary(UPlugData *plug);
00297
00304 U_INTERNAL void * U_EXPORT2
00305 uplug_getContext(UPlugData *plug);
00306
00313 U_INTERNAL void U_EXPORT2
00314 uplug_setContext(UPlugData *plug, void *context);
00315
00316
00324 U_INTERNAL const char * U_EXPORT2
00325 uplug_getConfiguration(UPlugData *plug);
00326
00342 U_INTERNAL UPlugData* U_EXPORT2
00343 uplug_nextPlug(UPlugData *prior);
00344
00357 U_INTERNAL UPlugData* U_EXPORT2
00358 uplug_loadPlugFromEntrypoint(UPlugEntrypoint *entrypoint, const char *config, UErrorCode *status);
00359
00360
00371 U_INTERNAL UPlugData* U_EXPORT2
00372 uplug_loadPlugFromLibrary(const char *libName, const char *sym, const char *config, UErrorCode *status);
00373
00381 U_INTERNAL void U_EXPORT2
00382 uplug_removePlug(UPlugData *plug, UErrorCode *status);
00383 #endif
00384
00385 #endif
00386
00387 #endif
00388