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
00195 typedef UPlugTokenReturn (U_EXPORT2 UPlugEntrypoint) (
00196 UPlugData *plug,
00197 UPlugReason reason,
00198 UErrorCode *status);
00199
00200
00201
00210 U_CAPI void U_EXPORT2
00211 uplug_setPlugNoUnload(UPlugData *plug, UBool dontUnload);
00212
00219 U_CAPI void U_EXPORT2
00220 uplug_setPlugLevel(UPlugData *plug, UPlugLevel level);
00221
00228 U_CAPI UPlugLevel U_EXPORT2
00229 uplug_getPlugLevel(UPlugData *plug);
00230
00238 U_CAPI UPlugLevel U_EXPORT2
00239 uplug_getCurrentLevel(void);
00240
00241
00247 U_CAPI UErrorCode U_EXPORT2
00248 uplug_getPlugLoadStatus(UPlugData *plug);
00249
00256 U_CAPI void U_EXPORT2
00257 uplug_setPlugName(UPlugData *plug, const char *name);
00258
00265 U_CAPI const char * U_EXPORT2
00266 uplug_getPlugName(UPlugData *plug);
00267
00274 U_CAPI const char * U_EXPORT2
00275 uplug_getSymbolName(UPlugData *plug);
00276
00284 U_CAPI const char * U_EXPORT2
00285 uplug_getLibraryName(UPlugData *plug, UErrorCode *status);
00286
00294 U_CAPI void * U_EXPORT2
00295 uplug_getLibrary(UPlugData *plug);
00296
00303 U_CAPI void * U_EXPORT2
00304 uplug_getContext(UPlugData *plug);
00305
00312 U_CAPI void U_EXPORT2
00313 uplug_setContext(UPlugData *plug, void *context);
00314
00315
00323 U_CAPI const char * U_EXPORT2
00324 uplug_getConfiguration(UPlugData *plug);
00325
00341 U_CAPI UPlugData* U_EXPORT2
00342 uplug_nextPlug(UPlugData *prior);
00343
00356 U_CAPI UPlugData* U_EXPORT2
00357 uplug_loadPlugFromEntrypoint(UPlugEntrypoint *entrypoint, const char *config, UErrorCode *status);
00358
00359
00370 U_CAPI UPlugData* U_EXPORT2
00371 uplug_loadPlugFromLibrary(const char *libName, const char *sym, const char *config, UErrorCode *status);
00372
00380 U_CAPI void U_EXPORT2
00381 uplug_removePlug(UPlugData *plug, UErrorCode *status);
00382 #endif
00383
00384 #endif
00385
00386 #endif
00387