00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00105 #ifndef ICUPLUG_H
00106 #define ICUPLUG_H
00107
00108 #include "unicode/utypes.h"
00109
00110
00111 #if UCONFIG_ENABLE_PLUGINS
00112
00113
00114
00115
00116
00117 #ifndef U_HIDE_INTERNAL_API
00118
00125 struct UPlugData;
00126 typedef struct UPlugData UPlugData;
00127
00135 #define UPLUG_TOKEN 0x54762486
00136
00141 #define UPLUG_NAME_MAX 100
00142
00143
00150 typedef uint32_t UPlugTokenReturn;
00151
00156 typedef enum {
00157 UPLUG_REASON_QUERY = 0,
00158 UPLUG_REASON_LOAD = 1,
00159 UPLUG_REASON_UNLOAD = 2,
00160 UPLUG_REASON_COUNT
00161 } UPlugReason;
00162
00163
00171 typedef enum {
00172 UPLUG_LEVEL_INVALID = 0,
00173 UPLUG_LEVEL_UNKNOWN = 1,
00174 UPLUG_LEVEL_LOW = 2,
00175 UPLUG_LEVEL_HIGH = 3,
00176 UPLUG_LEVEL_COUNT
00177 } UPlugLevel;
00178
00186 typedef UPlugTokenReturn (U_EXPORT2 UPlugEntrypoint) (
00187 UPlugData *plug,
00188 UPlugReason reason,
00189 UErrorCode *status);
00190
00191
00192
00201 U_INTERNAL void U_EXPORT2
00202 uplug_setPlugNoUnload(UPlugData *plug, UBool dontUnload);
00203
00210 U_INTERNAL void U_EXPORT2
00211 uplug_setPlugLevel(UPlugData *plug, UPlugLevel level);
00212
00219 U_INTERNAL UPlugLevel U_EXPORT2
00220 uplug_getPlugLevel(UPlugData *plug);
00221
00229 U_INTERNAL UPlugLevel U_EXPORT2
00230 uplug_getCurrentLevel(void);
00231
00232
00238 U_INTERNAL UErrorCode U_EXPORT2
00239 uplug_getPlugLoadStatus(UPlugData *plug);
00240
00247 U_INTERNAL void U_EXPORT2
00248 uplug_setPlugName(UPlugData *plug, const char *name);
00249
00256 U_INTERNAL const char * U_EXPORT2
00257 uplug_getPlugName(UPlugData *plug);
00258
00265 U_INTERNAL const char * U_EXPORT2
00266 uplug_getSymbolName(UPlugData *plug);
00267
00275 U_INTERNAL const char * U_EXPORT2
00276 uplug_getLibraryName(UPlugData *plug, UErrorCode *status);
00277
00285 U_INTERNAL void * U_EXPORT2
00286 uplug_getLibrary(UPlugData *plug);
00287
00294 U_INTERNAL void * U_EXPORT2
00295 uplug_getContext(UPlugData *plug);
00296
00303 U_INTERNAL void U_EXPORT2
00304 uplug_setContext(UPlugData *plug, void *context);
00305
00306
00314 U_INTERNAL const char * U_EXPORT2
00315 uplug_getConfiguration(UPlugData *plug);
00316
00332 U_INTERNAL UPlugData* U_EXPORT2
00333 uplug_nextPlug(UPlugData *prior);
00334
00347 U_INTERNAL UPlugData* U_EXPORT2
00348 uplug_loadPlugFromEntrypoint(UPlugEntrypoint *entrypoint, const char *config, UErrorCode *status);
00349
00350
00361 U_INTERNAL UPlugData* U_EXPORT2
00362 uplug_loadPlugFromLibrary(const char *libName, const char *sym, const char *config, UErrorCode *status);
00363
00371 U_INTERNAL void U_EXPORT2
00372 uplug_removePlug(UPlugData *plug, UErrorCode *status);
00373 #endif
00374
00375 #endif
00376
00377 #endif
00378