ICU 73.2  73.2
icuplug.h
Go to the documentation of this file.
00001 // © 2016 and later: Unicode, Inc. and others.
00002 // License & terms of use: http://www.unicode.org/copyright.html
00003 /*
00004 ******************************************************************************
00005 *
00006 *   Copyright (C) 2009-2015, International Business Machines
00007 *   Corporation and others.  All Rights Reserved.
00008 *
00009 ******************************************************************************
00010 *
00011 *  FILE NAME : icuplug.h
00012 *
00013 *   Date         Name        Description
00014 *   10/29/2009   sl          New.
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 /* === Basic types === */
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 /* === Needed for Implementing === */
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  /* U_HIDE_INTERNAL_API */
00387 
00388 #endif /* UCONFIG_ENABLE_PLUGINS */
00389 
00390 #endif /* _ICUPLUG */
00391