Working on cloning / thread safety for ICU stuff
[yaz-moved-to-github.git] / src / icu_transform.c
index a3d9e16..b7ae9c3 100644 (file)
@@ -19,6 +19,7 @@
 
 #include <yaz/log.h>
 
 
 #include <yaz/log.h>
 
+#include <assert.h>
 #include <string.h>
 #include <stdlib.h>
 #include <stdio.h>
 #include <string.h>
 #include <stdlib.h>
 #include <stdio.h>
@@ -32,6 +33,19 @@ struct icu_transform
     UTransliterator * trans;
 };
 
     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;
+    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)
 struct icu_transform * icu_transform_create(const char *id, char action,
                                             const char *rules, 
                                             UErrorCode *status)