/* This file is part of the YAZ toolkit.
- * Copyright (C) 1995-2009 Index Data
+ * Copyright (C) 1995-2011 Index Data
* See the file LICENSE for details.
*/
#include <yaz/log.h>
+#include <assert.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
UTransliterator * trans;
};
+struct icu_transform *icu_transform_clone(struct icu_transform *old)
+{
+ struct icu_transform *transform
+ = (struct icu_transform *) xmalloc(sizeof(struct icu_transform));
+ UErrorCode status = U_ZERO_ERROR;
+ assert(old);
+ transform->action = old->action;
+ assert(old->trans);
+ transform->trans = utrans_clone(old->trans, &status);
+ assert(transform->trans);
+ return transform;
+}
+
struct icu_transform * icu_transform_create(const char *id, char action,
const char *rules,
UErrorCode *status)
if (id)
icu_utf16_from_utf8_cstr(id16, id, status);
+
if (rules)
icu_utf16_from_utf8_cstr(rules16, rules, status);
int icu_transform_trans(struct icu_transform * transform,
struct icu_buf_utf16 * dest16,
- struct icu_buf_utf16 * src16,
+ const struct icu_buf_utf16 * src16,
UErrorCode *status)
{
if (!transform || !transform->trans
utrans_transUChars (transform->trans,
dest16->utf16, &(dest16->utf16_len),
dest16->utf16_cap,
- 0, &(src16->utf16_len), status);
+ 0, &(dest16->utf16_len), status);
if (U_FAILURE(*status))
icu_buf_utf16_clear(dest16);