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 || defined(U_IN_DOXYGEN)
00114
00115
00116
00117
00118
00119 #ifndef U_HIDE_INTERNAL_API
00120 struct UPlugData;
00127 typedef struct UPlugData UPlugData;
00128
00136 #define UPLUG_TOKEN 0x54762486
00137
00142 #define UPLUG_NAME_MAX 100
00143
00144
00151 typedef uint32_t UPlugTokenReturn;
00152
00157 typedef enum {
00158 UPLUG_REASON_QUERY = 0,
00159 UPLUG_REASON_LOAD = 1,
00160 UPLUG_REASON_UNLOAD = 2,
00165 UPLUG_REASON_COUNT
00166 } UPlugReason;
00167
00168
00176 typedef enum {
00177 UPLUG_LEVEL_INVALID = 0,
00178 UPLUG_LEVEL_UNKNOWN = 1,
00179 UPLUG_LEVEL_LOW = 2,
00180 UPLUG_LEVEL_HIGH = 3,
00185 UPLUG_LEVEL_COUNT
00186 } UPlugLevel;
00187
00199 typedef UPlugTokenReturn (U_EXPORT2 UPlugEntrypoint) (
00200 UPlugData *plug,
00201 UPlugReason reason,
00202 UErrorCode *status);
00203
00204
00205
00214 U_CAPI void U_EXPORT2
00215 uplug_setPlugNoUnload(UPlugData *plug, UBool dontUnload);
00216
00223 U_CAPI void U_EXPORT2
00224 uplug_setPlugLevel(UPlugData *plug, UPlugLevel level);
00225
00232 U_CAPI UPlugLevel U_EXPORT2
00233 uplug_getPlugLevel(UPlugData *plug);
00234
00242 U_CAPI UPlugLevel U_EXPORT2
00243 uplug_getCurrentLevel(void);
00244
00245
00251 U_CAPI UErrorCode U_EXPORT2
00252 uplug_getPlugLoadStatus(UPlugData *plug);
00253
00260 U_CAPI void U_EXPORT2
00261 uplug_setPlugName(UPlugData *plug, const char *name);
00262
00269 U_CAPI const char * U_EXPORT2
00270 uplug_getPlugName(UPlugData *plug);
00271
00278 U_CAPI const char * U_EXPORT2
00279 uplug_getSymbolName(UPlugData *plug);
00280
00288 U_CAPI const char * U_EXPORT2
00289 uplug_getLibraryName(UPlugData *plug, UErrorCode *status);
00290
00298 U_CAPI void * U_EXPORT2
00299 uplug_getLibrary(UPlugData *plug);
00300
00307 U_CAPI void * U_EXPORT2
00308 uplug_getContext(UPlugData *plug);
00309
00316 U_CAPI void U_EXPORT2
00317 uplug_setContext(UPlugData *plug, void *context);
00318
00319
00327 U_CAPI const char * U_EXPORT2
00328 uplug_getConfiguration(UPlugData *plug);
00329
00345 U_CAPI UPlugData* U_EXPORT2
00346 uplug_nextPlug(UPlugData *prior);
00347
00360 U_CAPI UPlugData* U_EXPORT2
00361 uplug_loadPlugFromEntrypoint(UPlugEntrypoint *entrypoint, const char *config, UErrorCode *status);
00362
00363
00374 U_CAPI UPlugData* U_EXPORT2
00375 uplug_loadPlugFromLibrary(const char *libName, const char *sym, const char *config, UErrorCode *status);
00376
00384 U_CAPI void U_EXPORT2
00385 uplug_removePlug(UPlugData *plug, UErrorCode *status);
00386 #endif
00387
00388 #endif
00389
00390 #endif
00391