diff options
Diffstat (limited to 'src/librcc.h')
-rw-r--r-- | src/librcc.h | 75 |
1 files changed, 59 insertions, 16 deletions
diff --git a/src/librcc.h b/src/librcc.h index 87ded50..2032330 100644 --- a/src/librcc.h +++ b/src/librcc.h @@ -19,10 +19,11 @@ /* ID's */ -typedef char rcc_language_id; -typedef char rcc_alias_id; -typedef char rcc_charset_id; -typedef char rcc_engine_id; +typedef unsigned char rcc_language_id; +typedef unsigned char rcc_alias_id; +typedef unsigned char rcc_charset_id; +typedef unsigned char rcc_autocharset_id; +typedef unsigned char rcc_engine_id; typedef int rcc_class_id; @@ -63,7 +64,7 @@ typedef rcc_charset rcc_charset_list[RCC_MAX_CHARSETS+1]; /* Engines */ typedef void *rcc_engine_internal; typedef rcc_engine_internal (*rcc_engine_init_function)(rcc_engine_context ctx); -typedef rcc_charset_id (*rcc_engine_function)(rcc_engine_context ctx, const char *buf, int len); +typedef rcc_autocharset_id (*rcc_engine_function)(rcc_engine_context ctx, const char *buf, int len); typedef void (*rcc_engine_free_function)(rcc_engine_context ctx); struct rcc_engine_t { @@ -117,12 +118,16 @@ struct rcc_class_default_charset_t { }; typedef const struct rcc_class_default_charset_t rcc_class_default_charset; +#define RCC_CLASS_FLAG_CONST 0x01 +#define RCC_CLASS_FLAG_SKIP_SAVELOAD 0x02 + struct rcc_class_t { const char *name; const rcc_class_type class_type; const char *defvalue; /* locale variable name or parrent name or multibyte charset */ rcc_class_default_charset *defcharset; const char *fullname; + const unsigned long flags; }; typedef const struct rcc_class_t rcc_class; typedef rcc_class_ptr rcc_class_list[RCC_MAX_CLASSES+1]; @@ -197,10 +202,10 @@ rcc_option_value rccGetOptionValueByName(rcc_option option, const char *name); const char *rccConfigGetEngineName(rcc_language_config config, rcc_engine_id engine_id); const char *rccConfigGetCharsetName(rcc_language_config config, rcc_charset_id charset_id); -const char *rccConfigGetAutoCharsetName(rcc_language_config config, rcc_charset_id charset_id); +const char *rccConfigGetAutoCharsetName(rcc_language_config config, rcc_autocharset_id charset_id); rcc_engine_id rccConfigGetEngineByName(rcc_language_config config, const char *name); rcc_charset_id rccConfigGetCharsetByName(rcc_language_config config, const char *name); -rcc_charset_id rccConfigGetAutoCharsetByName(rcc_language_config config, const char *name); +rcc_autocharset_id rccConfigGetAutoCharsetByName(rcc_language_config config, const char *name); rcc_language_config rccCheckConfig(rcc_context ctx, rcc_language_id language_id); rcc_language_config rccGetConfig(rcc_context ctx, rcc_language_id language_id); @@ -226,11 +231,11 @@ rcc_charset_id rccConfigGetLocaleCharset(rcc_language_config config, const char /* curconfig.c */ const char *rccGetEngineName(rcc_context ctx, rcc_engine_id engine_id); const char *rccGetCharsetName(rcc_context ctx, rcc_charset_id charset_id); -const char *rccGetAutoCharsetName(rcc_context ctx, rcc_charset_id charset_id); +const char *rccGetAutoCharsetName(rcc_context ctx, rcc_autocharset_id charset_id); rcc_engine_id rccGetEngineByName(rcc_context ctx, const char *name); rcc_charset_id rccGetCharsetByName(rcc_context ctx, const char *name); -rcc_charset_id rccGetAutoCharsetByName(rcc_context ctx, const char *name); +rcc_autocharset_id rccGetAutoCharsetByName(rcc_context ctx, const char *name); rcc_engine_id rccGetSelectedEngine(rcc_context ctx); const char *rccGetSelectedEngineName(rcc_context ctx); @@ -265,16 +270,17 @@ rcc_class_ptr *rccGetClassList(rcc_context ctx); *******************************************************************************/ /* string.c */ typedef char *rcc_string; +typedef const char *rcc_const_string; size_t rccStringCheck(const char *str); size_t rccStringSizedCheck(const char *str, size_t len); -rcc_language_id rccStringGetLanguage(const rcc_string str); -const char *rccStringGetString(const rcc_string str); -char *rccStringExtractString(const rcc_string str); +rcc_language_id rccStringGetLanguage(rcc_const_string str); +const char *rccStringGetString(rcc_const_string str); +char *rccStringExtractString(rcc_const_string str); const char *rccGetString(const char *str); -const char *rccSizedGetString(const char *str, size_t len, size_t *rlen); +const char *rccSizedGetString(const char *str, size_t len); int rccStringCmp(const char *str1, const char *str2); int rccStringNCmp(const char *str1, const char *str2, size_t n); @@ -292,11 +298,28 @@ void rccIConvClose(rcc_iconv icnv); size_t rccIConvRecode(rcc_iconv icnv, char *outbuf, size_t outsize, const char *buf, size_t size); /* recode.c */ -rcc_string rccFrom(rcc_context ctx, rcc_class_id class_id, const char *buf, size_t len, size_t *rlen); -char *rccTo(rcc_context ctx, rcc_class_id class_id, const rcc_string buf, size_t len, size_t *rlen); -char *rccRecode(rcc_context ctx, rcc_class_id from, rcc_class_id to, const char *buf, size_t len, size_t *rlen); +rcc_string rccSizedFrom(rcc_context ctx, rcc_class_id class_id, const char *buf, size_t len); +char *rccSizedTo(rcc_context ctx, rcc_class_id class_id, const rcc_string buf, size_t *rlen); +char *rccSizedRecode(rcc_context ctx, rcc_class_id from, rcc_class_id to, const char *buf, size_t len, size_t *rlen); char *rccFS(rcc_context ctx, rcc_class_id from, rcc_class_id to, const char *fspath, const char *path, const char *filename); +rcc_string rccSizedFromCharset(rcc_context ctx, const char *charset, const char *buf, size_t len); +char *rccSizedToCharset(rcc_context ctx, const char *charset, const rcc_string buf, size_t *rlen); +char *rccSizedRecodeToCharset(rcc_context ctx, rcc_class_id class_id, const char *charset, const rcc_string buf, size_t len, size_t *rlen); +char *rccSizedRecodeFromCharset(rcc_context ctx, rcc_class_id class_id, const char *charset, const char *buf, size_t len, size_t *rlen); +char *rccSizedRecodeCharsets(rcc_context ctx, const char *from, const char *to, const char *buf, size_t len, size_t *rlen); + + +#define rccFrom(ctx, class_id, buf) rccSizedFrom(ctx, class_id, buf, 0) +#define rccTo(ctx, class_id, buf) rccSizedTo(ctx, class_id, buf, NULL) +#define rccRecode(ctx, from, to, buf) rccSizedRecode(ctx, from, to, buf, 0, NULL) + +#define rccFromCharset(ctx, charset, buf) rccSizedFromCharset(ctx, charset, buf, 0) +#define rccToCharset(ctx, charset, buf) rccSizedToCharset(ctx, charset, buf, NULL) +#define rccRecodeToCharset(ctx, class_id, charset, buf) rccSizedRecodeToCharset(ctx, class_id, charset, buf, 0, NULL) +#define rccRecodeFromCharset(ctx, class_id, charset, buf) rccSizedRecodeFromCharset(ctx, class_id, charset, buf, 0, NULL) +#define rccRecodeCharsets(ctx, from, to, buf) rccSizedRecodeCharsets(ctx, from, to, buf, 0, NULL) + /******************************************************************************* ******************************** Options *************************************** *******************************************************************************/ @@ -318,6 +341,26 @@ rcc_engine_internal rccEngineGetInternal(rcc_engine_context ctx); rcc_language *rccEngineGetLanguage(rcc_engine_context ctx); rcc_context rccEngineGetRccContext(rcc_engine_context ctx); +/******************************************************************************* +**************************** Configuration ************************************* +*******************************************************************************/ + +#define RCC_CC_FLAG_HAVE_BERKLEY_DB 0x01 +#define RCC_CC_FLAG_HAVE_DYNAMIC_ENGINES 0x02 +#define RCC_CC_FLAG_HAVE_ENCA 0x04 +#define RCC_CC_FLAG_HAVE_RCD 0x08 +struct rcc_compiled_configuration_t { + unsigned long flags; +}; +typedef struct rcc_compiled_configuration_t rcc_compiled_configuration_s; +typedef const struct rcc_compiled_configuration_t *rcc_compiled_configuration; + +rcc_compiled_configuration rccGetCompiledConfiguration(); + +int rccLocaleGetClassByName(const char *locale); +int rccLocaleGetLanguage(char *result, const char *lv, unsigned int n); +int rccLocaleGetCharset(char *result, const char *lv, unsigned int n); + #ifdef __cplusplus } #endif |