Merge branch 'master' into stemming
authorDennis Schafroth <dennis@indexdata.com>
Mon, 8 Nov 2010 17:05:54 +0000 (18:05 +0100)
committerDennis Schafroth <dennis@indexdata.com>
Mon, 8 Nov 2010 17:05:54 +0000 (18:05 +0100)
Conflicts:
src/icu_chain.c

Merge minor ICU change and test changes.

Fix includes to include config.h.
Fix Makefile: Include stemmer in libyaz_icu.

1  2 
include/yaz/stemmer.h
src/Makefile.am
src/icu_chain.c
src/stemmer.c

index f5d23ab,0000000..6e51cae
mode 100644,000000..100644
--- /dev/null
@@@ -1,60 -1,0 +1,61 @@@
 +/* This file is part of the YAZ toolkit.
 + * Copyright (C) 1995-2010 Index Data.
 + * All rights reserved.
 + * Redistribution and use in source and binary forms, with or without
 + * modification, are permitted provided that the following conditions are met:
 + *
 + *     * Redistributions of source code must retain the above copyright
 + *       notice, this list of conditions and the following disclaimer.
 + *     * Redistributions in binary form must reproduce the above copyright
 + *       notice, this list of conditions and the following disclaimer in the
 + *       documentation and/or other materials provided with the distribution.
 + *     * Neither the name of Index Data nor the names of its contributors
 + *       may be used to endorse or promote products derived from this
 + *       software without specific prior written permission.
 + *
 + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY
 + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 + * DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY
 + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 + */
 +
 +/**
 + * \file stemming.h
 + * \brief Header for the stemming API. Simple wrapper to hide underlying implementation.
 + */
 +
 +#ifndef YAZ_STEMMER_H
 +#define YAZ_STEMMER_H
 +
 +#include <yaz/yconfig.h>
++#include <yaz/xmltypes.h>
 +#include <yaz/icu_I18N.h>
 +#include <yaz/log.h>
 +
 +#include <unicode/ustring.h>  /* some more string fcns*/
 +#include <unicode/uchar.h>    /* char names           */
 +
 +
 +YAZ_BEGIN_CDECL
 +
 +typedef struct yaz_stemmer_t *yaz_stemmer_p;
 +
 +YAZ_EXPORT
 +yaz_stemmer_p yaz_stemmer_create(const char *locale, const char *rule, UErrorCode *status);
 +
 +YAZ_EXPORT
 +yaz_stemmer_p yaz_stemmer_clone(yaz_stemmer_p stemmer);
 +
 +YAZ_EXPORT
 +void yaz_stemmer_stem(yaz_stemmer_p stemmer, struct icu_buf_utf16 *dst, struct icu_buf_utf16* src, UErrorCode *status);
 +
 +YAZ_EXPORT
 +void yaz_stemmer_destroy(yaz_stemmer_p stemmer);
 +
 +#endif
diff --cc src/Makefile.am
@@@ -115,7 -115,7 +115,7 @@@ libyaz_server_la_SOURCES = statserv.c s
  
  libyaz_server_la_LDFLAGS=-version-info $(YAZ_VERSION_INFO)
  
--libyaz_icu_la_SOURCES = icu_chain.c icu_utf16.c icu_utf8.c \
++libyaz_icu_la_SOURCES = icu_chain.c icu_utf16.c icu_utf8.c stemmer.c \
        icu_transform.c icu_casemap.c icu_tokenizer.c icu_sortkey.c
  libyaz_icu_la_LDFLAGS=-version-info $(YAZ_VERSION_INFO)
  
diff --cc src/icu_chain.c
  
  #include <yaz/icu_I18N.h>
  
 +#include <yaz/stemmer.h>
 +
  #include <yaz/log.h>
+ #include <yaz/nmem.h>
+ #include <yaz/nmem_xml.h>
  #include <string.h>
  #include <stdlib.h>
  #include <stdio.h>
@@@ -44,12 -42,11 +45,12 @@@ struct icu_chain_ste
      /* type and action object */
      enum icu_chain_step_type type;
      union {
-         struct icu_casemap   * casemap;
-         struct icu_transform * transform;
-         struct icu_tokenizer * tokenizer;
-         yaz_stemmer_p          stemmer;
 -      struct icu_casemap *casemap;
++      struct icu_casemap   *casemap;
+       struct icu_transform *transform;
+       struct icu_tokenizer *tokenizer;  
++        yaz_stemmer_p         stemmer;
      } u;
-     struct icu_chain_step * previous;
+     struct icu_chain_step *previous;
  };
  
  struct icu_chain
@@@ -278,9 -288,6 +301,9 @@@ struct icu_chain *icu_chain_xml_config(
          else if (!strcmp((const char *) node->name, "display"))
              step = icu_chain_insert_step(chain, ICU_chain_step_type_display, 
                                           (const uint8_t *) "", status);
 +        else if (!strcmp((const char *) node->name, "stemming"))
-             step = yaz_chain_insert_step(chain, YAZ_chain_step_type_stemming,
-                                          (const uint8_t *) xml_rule, status);
++            step = icu_chain_insert_step(chain, YAZ_chain_step_type_stemming,
++                                         (const uint8_t *) rule, status);
          else if (!strcmp((const char *) node->name, "normalize"))
          {
              yaz_log(YLOG_WARN, "Element %s is deprecated. "
diff --cc src/stemmer.c
index 5cb3267,0000000..b544ebc
mode 100644,000000..100644
--- /dev/null
@@@ -1,33 -1,0 +1,41 @@@
 +
 +
++#if HAVE_CONFIG_H
++#include "config.h"
++#endif
++
++#if YAZ_HAVE_ICU
++
++#include <yaz/yconfig.h>
 +
 +#include <yaz/stemmer.h>
 +
 +#include <unicode/ustring.h>  /* some more string fcns*/
 +#include <unicode/uchar.h>    /* char names           */
 +
 +struct yaz_stemmer_t
 +{
 +    int implementation;
 +    union {
 +        struct sb_stemmer *snowballer;
 +    };
 +};
 +
 +yaz_stemmer_p yaz_stemmer_create(const char *locale, const char *rule, UErrorCode *status) {
 +    return 0;
 +}
 +
 +yaz_stemmer_p yaz_stemmer_clone(yaz_stemmer_p stemmer) {
 +    return 0;
 +}
 +
 +void yaz_stemmer_stem(yaz_stemmer_p stemmer, struct icu_buf_utf16 *dst, struct icu_buf_utf16* src, UErrorCode *status) {
 +
 +}
 +
 +void yaz_stemmer_destroy(yaz_stemmer_p stemmer) {
 +
 +
 +}
 +
++#endif /* YAZ_HAVE_ICU */