X-Git-Url: http://jsfdemo.indexdata.com/?a=blobdiff_plain;f=src%2Ficu_I18N.h;h=dab51fca2863d0015c8bac7fd309ee882ee67c9f;hb=8c04107cfb8985794d301b2c58a0b5c60723c487;hp=91c356ac2e764e33fbff0b8cc4747a5b19faeb63;hpb=b3356073151093f1f2267ee7bf75139f4d650d40;p=pazpar2-moved-to-github.git diff --git a/src/icu_I18N.h b/src/icu_I18N.h index 91c356a..dab51fc 100644 --- a/src/icu_I18N.h +++ b/src/icu_I18N.h @@ -1,31 +1,29 @@ -/* $Id: icu_I18N.h,v 1.14 2007-05-16 12:39:49 marc Exp $ - Copyright (c) 2006-2007, Index Data. +/* This file is part of Pazpar2. + Copyright (C) 2006-2008 Index Data - This file is part of Pazpar2. +Pazpar2 is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 2, or (at your option) any later +version. - Pazpar2 is free software; you can redistribute it and/or modify it under - the terms of the GNU General Public License as published by the Free - Software Foundation; either version 2, or (at your option) any later - version. +Pazpar2 is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. - Pazpar2 is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - You should have received a copy of the GNU General Public License - along with Pazpar2; see the file LICENSE. If not, write to the - Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ #ifndef ICU_I18NL_H #define ICU_I18NL_H -#ifdef HAVE_ICU - #include +#include +#include #include /* Basic ICU data types */ #include /* char names */ @@ -87,6 +85,22 @@ UErrorCode icu_utf16_to_utf8(struct icu_buf_utf8 * dest8, struct icu_buf_utf16 * src16, UErrorCode * status); +struct icu_casemap +{ + char locale[16]; + char action; +}; + +struct icu_casemap * icu_casemap_create(const char *locale, char action, + UErrorCode *status); + +void icu_casemap_destroy(struct icu_casemap * casemap); + +int icu_casemap_casemap(struct icu_casemap * casemap, + struct icu_buf_utf16 * dest16, + struct icu_buf_utf16 * src16, + UErrorCode *status); + int icu_utf16_casemap(struct icu_buf_utf16 * dest16, struct icu_buf_utf16 * src16, const char *locale, char action, @@ -165,12 +179,13 @@ struct icu_token } #endif + enum icu_chain_step_type { ICU_chain_step_type_none, // ICU_chain_step_type_display, // convert to utf8 display format - ICU_chain_step_type_norm, // convert to utf8 norm format - ICU_chain_step_type_sort, // convert to utf8 sort format - ICU_chain_step_type_charmap, // apply utf16 charmap + ICU_chain_step_type_index, // convert to utf8 index format + ICU_chain_step_type_sortkey, // convert to utf8 sortkey format + ICU_chain_step_type_casemap, // apply utf16 charmap ICU_chain_step_type_normalize, // apply utf16 normalization ICU_chain_step_type_tokenize // apply utf16 tokenization }; @@ -182,6 +197,7 @@ struct icu_chain_step // type and action object enum icu_chain_step_type type; union { + struct icu_casemap * casemap; struct icu_normalizer * normalizer; struct icu_tokenizer * tokenizer; } u; @@ -189,6 +205,7 @@ struct icu_chain_step struct icu_buf_utf16 * buf16; struct icu_chain_step * previous; int more_tokens; + int need_new_token; }; @@ -226,8 +243,13 @@ struct icu_chain struct icu_chain * icu_chain_create(const uint8_t * identifier, const uint8_t * locale); + void icu_chain_destroy(struct icu_chain * chain); +struct icu_chain * icu_chain_xml_config(xmlNode *xml_node, + UErrorCode * status); + + struct icu_chain_step * icu_chain_insert_step(struct icu_chain * chain, enum icu_chain_step_type type, const uint8_t * rule, @@ -257,5 +279,4 @@ const char * icu_chain_get_sort(struct icu_chain * chain); -#endif // HAVE_ICU #endif // ICU_I18NL_H