aboutsummaryrefslogtreecommitdiff
path: root/converters/p5-Text-Bidi
diff options
context:
space:
mode:
authorJoe Marcus Clarke <marcus@FreeBSD.org>2009-08-22 23:11:18 +0000
committerJoe Marcus Clarke <marcus@FreeBSD.org>2009-08-22 23:11:18 +0000
commitf7893da6d0d06c756b12eead3b6e9e0bfa97acb9 (patch)
treed16b22b6ba2aa3d0f0213166f4fafd8cc9153a51 /converters/p5-Text-Bidi
parent122619cedeb1e517318f64078e9f076958edd817 (diff)
downloadports-f7893da6d0d06c756b12eead3b6e9e0bfa97acb9.tar.gz
ports-f7893da6d0d06c756b12eead3b6e9e0bfa97acb9.zip
Notes
Diffstat (limited to 'converters/p5-Text-Bidi')
-rw-r--r--converters/p5-Text-Bidi/files/patch-private.c3028
1 files changed, 3028 insertions, 0 deletions
diff --git a/converters/p5-Text-Bidi/files/patch-private.c b/converters/p5-Text-Bidi/files/patch-private.c
new file mode 100644
index 000000000000..eef69a82930c
--- /dev/null
+++ b/converters/p5-Text-Bidi/files/patch-private.c
@@ -0,0 +1,3028 @@
+--- private.c.orig 2009-08-22 19:09:43.000000000 -0400
++++ private.c 2009-08-22 19:09:46.000000000 -0400
+@@ -1,6 +1,6 @@
+ /* ----------------------------------------------------------------------------
+ * This file was automatically generated by SWIG (http://www.swig.org).
+- * Version 1.3.31
++ * Version 1.3.39
+ *
+ * This file is not intended to be easily readable and contains a number of
+ * coding conventions designed to improve portability and efficiency. Do not make
+@@ -10,6 +10,7 @@
+
+ #define SWIGPERL
+ #define SWIG_CASTRANK_MODE
++
+ /* -----------------------------------------------------------------------------
+ * This section contains generic SWIG labels for method/variable
+ * declarations/attributes, and other compiler dependent labels.
+@@ -17,14 +18,14 @@
+
+ /* template workaround for compilers that cannot correctly implement the C++ standard */
+ #ifndef SWIGTEMPLATEDISAMBIGUATOR
+-# if defined(__SUNPRO_CC)
+-# if (__SUNPRO_CC <= 0x560)
+-# define SWIGTEMPLATEDISAMBIGUATOR template
+-# else
+-# define SWIGTEMPLATEDISAMBIGUATOR
+-# endif
++# if defined(__SUNPRO_CC) && (__SUNPRO_CC <= 0x560)
++# define SWIGTEMPLATEDISAMBIGUATOR template
++# elif defined(__HP_aCC)
++/* Needed even with `aCC -AA' when `aCC -V' reports HP ANSI C++ B3910B A.03.55 */
++/* If we find a maximum version that requires this, the test would be __HP_aCC <= 35500 for A.03.55 */
++# define SWIGTEMPLATEDISAMBIGUATOR template
+ # else
+-# define SWIGTEMPLATEDISAMBIGUATOR
++# define SWIGTEMPLATEDISAMBIGUATOR
+ # endif
+ #endif
+
+@@ -52,6 +53,12 @@
+ # endif
+ #endif
+
++#ifndef SWIG_MSC_UNSUPPRESS_4505
++# if defined(_MSC_VER)
++# pragma warning(disable : 4505) /* unreferenced local function has been removed */
++# endif
++#endif
++
+ #ifndef SWIGUNUSEDPARM
+ # ifdef __cplusplus
+ # define SWIGUNUSEDPARM(p)
+@@ -107,16 +114,22 @@
+ # define _CRT_SECURE_NO_DEPRECATE
+ #endif
+
++/* Deal with Microsoft's attempt at deprecating methods in the standard C++ library */
++#if !defined(SWIG_NO_SCL_SECURE_NO_DEPRECATE) && defined(_MSC_VER) && !defined(_SCL_SECURE_NO_DEPRECATE)
++# define _SCL_SECURE_NO_DEPRECATE
++#endif
++
++
+ /* -----------------------------------------------------------------------------
+ * swigrun.swg
+ *
+- * This file contains generic CAPI SWIG runtime support for pointer
++ * This file contains generic C API SWIG runtime support for pointer
+ * type checking.
+ * ----------------------------------------------------------------------------- */
+
+ /* This should only be incremented when either the layout of swig_type_info changes,
+ or for whatever reason, the runtime changes incompatibly */
+-#define SWIG_RUNTIME_VERSION "3"
++#define SWIG_RUNTIME_VERSION "4"
+
+ /* define SWIG_TYPE_TABLE_NAME as "SWIG_TYPE_TABLE" */
+ #ifdef SWIG_TYPE_TABLE
+@@ -129,11 +142,11 @@
+
+ /*
+ You can use the SWIGRUNTIME and SWIGRUNTIMEINLINE macros for
+- creating a static or dynamic library from the swig runtime code.
+- In 99.9% of the cases, swig just needs to declare them as 'static'.
++ creating a static or dynamic library from the SWIG runtime code.
++ In 99.9% of the cases, SWIG just needs to declare them as 'static'.
+
+- But only do this if is strictly necessary, ie, if you have problems
+- with your compiler or so.
++ But only do this if strictly necessary, ie, if you have problems
++ with your compiler or suchlike.
+ */
+
+ #ifndef SWIGRUNTIME
+@@ -151,6 +164,7 @@
+
+ /* Flags for pointer conversions */
+ #define SWIG_POINTER_DISOWN 0x1
++#define SWIG_CAST_NEW_MEMORY 0x2
+
+ /* Flags for new pointer objects */
+ #define SWIG_POINTER_OWN 0x1
+@@ -159,14 +173,14 @@
+ /*
+ Flags/methods for returning states.
+
+- The swig conversion methods, as ConvertPtr, return and integer
++ The SWIG conversion methods, as ConvertPtr, return and integer
+ that tells if the conversion was successful or not. And if not,
+ an error code can be returned (see swigerrors.swg for the codes).
+
+ Use the following macros/flags to set or process the returning
+ states.
+
+- In old swig versions, you usually write code as:
++ In old versions of SWIG, code such as the following was usually written:
+
+ if (SWIG_ConvertPtr(obj,vptr,ty.flags) != -1) {
+ // success code
+@@ -174,7 +188,7 @@
+ //fail code
+ }
+
+- Now you can be more explicit as:
++ Now you can be more explicit:
+
+ int res = SWIG_ConvertPtr(obj,vptr,ty.flags);
+ if (SWIG_IsOK(res)) {
+@@ -183,7 +197,7 @@
+ // fail code
+ }
+
+- that seems to be the same, but now you can also do
++ which is the same really, but now you can also do
+
+ Type *ptr;
+ int res = SWIG_ConvertPtr(obj,(void **)(&ptr),ty.flags);
+@@ -201,7 +215,7 @@
+
+ I.e., now SWIG_ConvertPtr can return new objects and you can
+ identify the case and take care of the deallocation. Of course that
+- requires also to SWIG_ConvertPtr to return new result values, as
++ also requires SWIG_ConvertPtr to return new result values, such as
+
+ int SWIG_ConvertPtr(obj, ptr,...) {
+ if (<obj is ok>) {
+@@ -219,7 +233,7 @@
+
+ Of course, returning the plain '0(success)/-1(fail)' still works, but you can be
+ more explicit by returning SWIG_BADOBJ, SWIG_ERROR or any of the
+- swig errors code.
++ SWIG errors code.
+
+ Finally, if the SWIG_CASTRANK_MODE is enabled, the result code
+ allows to return the 'cast rank', for example, if you have this
+@@ -233,9 +247,8 @@
+ fooi(1) // cast rank '0'
+
+ just use the SWIG_AddCast()/SWIG_CheckState()
++*/
+
+-
+- */
+ #define SWIG_OK (0)
+ #define SWIG_ERROR (-1)
+ #define SWIG_IsOK(r) (r >= 0)
+@@ -260,7 +273,6 @@
+ #define SWIG_DelTmpMask(r) (SWIG_IsOK(r) ? (r & ~SWIG_TMPOBJMASK) : r)
+ #define SWIG_IsTmpObj(r) (SWIG_IsOK(r) && (r & SWIG_TMPOBJMASK))
+
+-
+ /* Cast-Rank Mode */
+ #if defined(SWIG_CASTRANK_MODE)
+ # ifndef SWIG_TypeRank
+@@ -283,18 +295,16 @@ SWIGINTERNINLINE int SWIG_CheckState(int
+ #endif
+
+
+-
+-
+ #include <string.h>
+
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+
+-typedef void *(*swig_converter_func)(void *);
++typedef void *(*swig_converter_func)(void *, int *);
+ typedef struct swig_type_info *(*swig_dycast_func)(void **);
+
+-/* Structure to store inforomation on one type */
++/* Structure to store information on one type */
+ typedef struct swig_type_info {
+ const char *name; /* mangled name of this type */
+ const char *str; /* human readable name of this type */
+@@ -339,7 +349,7 @@ SWIG_TypeNameComp(const char *f1, const
+ while ((*f2 == ' ') && (f2 != l2)) ++f2;
+ if (*f1 != *f2) return (*f1 > *f2) ? 1 : -1;
+ }
+- return (l1 - f1) - (l2 - f2);
++ return (int)((l1 - f1) - (l2 - f2));
+ }
+
+ /*
+@@ -381,48 +391,66 @@ SWIG_TypeCompare(const char *nb, const c
+ }
+
+
+-/* think of this as a c++ template<> or a scheme macro */
+-#define SWIG_TypeCheck_Template(comparison, ty) \
+- if (ty) { \
+- swig_cast_info *iter = ty->cast; \
+- while (iter) { \
+- if (comparison) { \
+- if (iter == ty->cast) return iter; \
+- /* Move iter to the top of the linked list */ \
+- iter->prev->next = iter->next; \
+- if (iter->next) \
+- iter->next->prev = iter->prev; \
+- iter->next = ty->cast; \
+- iter->prev = 0; \
+- if (ty->cast) ty->cast->prev = iter; \
+- ty->cast = iter; \
+- return iter; \
+- } \
+- iter = iter->next; \
+- } \
+- } \
+- return 0
+-
+ /*
+ Check the typename
+ */
+ SWIGRUNTIME swig_cast_info *
+ SWIG_TypeCheck(const char *c, swig_type_info *ty) {
+- SWIG_TypeCheck_Template(strcmp(iter->type->name, c) == 0, ty);
++ if (ty) {
++ swig_cast_info *iter = ty->cast;
++ while (iter) {
++ if (strcmp(iter->type->name, c) == 0) {
++ if (iter == ty->cast)
++ return iter;
++ /* Move iter to the top of the linked list */
++ iter->prev->next = iter->next;
++ if (iter->next)
++ iter->next->prev = iter->prev;
++ iter->next = ty->cast;
++ iter->prev = 0;
++ if (ty->cast) ty->cast->prev = iter;
++ ty->cast = iter;
++ return iter;
++ }
++ iter = iter->next;
++ }
++ }
++ return 0;
+ }
+
+-/* Same as previous function, except strcmp is replaced with a pointer comparison */
++/*
++ Identical to SWIG_TypeCheck, except strcmp is replaced with a pointer comparison
++*/
+ SWIGRUNTIME swig_cast_info *
+-SWIG_TypeCheckStruct(swig_type_info *from, swig_type_info *into) {
+- SWIG_TypeCheck_Template(iter->type == from, into);
++SWIG_TypeCheckStruct(swig_type_info *from, swig_type_info *ty) {
++ if (ty) {
++ swig_cast_info *iter = ty->cast;
++ while (iter) {
++ if (iter->type == from) {
++ if (iter == ty->cast)
++ return iter;
++ /* Move iter to the top of the linked list */
++ iter->prev->next = iter->next;
++ if (iter->next)
++ iter->next->prev = iter->prev;
++ iter->next = ty->cast;
++ iter->prev = 0;
++ if (ty->cast) ty->cast->prev = iter;
++ ty->cast = iter;
++ return iter;
++ }
++ iter = iter->next;
++ }
++ }
++ return 0;
+ }
+
+ /*
+ Cast a pointer up an inheritance hierarchy
+ */
+ SWIGRUNTIMEINLINE void *
+-SWIG_TypeCast(swig_cast_info *ty, void *ptr) {
+- return ((!ty) || (!ty->converter)) ? ptr : (*ty->converter)(ptr);
++SWIG_TypeCast(swig_cast_info *ty, void *ptr, int *newmemory) {
++ return ((!ty) || (!ty->converter)) ? ptr : (*ty->converter)(ptr, newmemory);
+ }
+
+ /*
+@@ -775,6 +803,10 @@ extern "C" {
+ # endif
+ #endif /* !INT2PTR */
+
++#ifndef SvPV_nolen
++# define SvPV_nolen(x) SvPV(x,PL_na)
++#endif
++
+ #ifndef get_sv
+ # define get_sv perl_get_sv
+ #endif
+@@ -923,6 +955,11 @@ extern "C" {
+
+ /* SWIG Perl macros */
+
++/* Macro to declare an XS function */
++#ifndef XSPROTO
++# define XSPROTO(name) void name(pTHX_ CV* cv)
++#endif
++
+ /* Macro to call an XS function */
+ #ifdef PERL_OBJECT
+ # define SWIG_CALLXS(_name) _name(cv,pPerl)
+@@ -934,51 +971,50 @@ extern "C" {
+ # endif
+ #endif
+
+-/* Note: SwigMagicFuncHack is a typedef used to get the C++ compiler to just shut up already */
+-
+ #ifdef PERL_OBJECT
+ #define MAGIC_PPERL CPerlObj *pPerl = (CPerlObj *) this;
+-typedef int (CPerlObj::*SwigMagicFunc)(SV *, MAGIC *);
+
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+-typedef int (CPerlObj::*SwigMagicFuncHack)(SV *, MAGIC *);
++typedef int (CPerlObj::*SwigMagicFunc)(SV *, MAGIC *);
+ #ifdef __cplusplus
+ }
+ #endif
+
+ #define SWIG_MAGIC(a,b) (SV *a, MAGIC *b)
+ #define SWIGCLASS_STATIC
+-#else
++
++#else /* PERL_OBJECT */
++
+ #define MAGIC_PPERL
+ #define SWIGCLASS_STATIC static SWIGUNUSED
++
+ #ifndef MULTIPLICITY
+ #define SWIG_MAGIC(a,b) (SV *a, MAGIC *b)
+-typedef int (*SwigMagicFunc)(SV *, MAGIC *);
+
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+-typedef int (*SwigMagicFuncHack)(SV *, MAGIC *);
++typedef int (*SwigMagicFunc)(SV *, MAGIC *);
+ #ifdef __cplusplus
+ }
+ #endif
+
++#else /* MULTIPLICITY */
+
+-#else
+ #define SWIG_MAGIC(a,b) (struct interpreter *interp, SV *a, MAGIC *b)
+-typedef int (*SwigMagicFunc)(struct interpreter *, SV *, MAGIC *);
++
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+-typedef int (*SwigMagicFuncHack)(struct interpreter *, SV *, MAGIC *);
++typedef int (*SwigMagicFunc)(struct interpreter *, SV *, MAGIC *);
+ #ifdef __cplusplus
+ }
+ #endif
+
+-#endif
+-#endif
++#endif /* MULTIPLICITY */
++#endif /* PERL_OBJECT */
+
+ /* Workaround for bug in perl 5.6.x croak and earlier */
+ #if (PERL_VERSION < 8)
+@@ -1045,13 +1081,32 @@ SWIG_Perl_TypeProxyName(const swig_type_
+ }
+ }
+
++/* Identical to SWIG_TypeCheck, except for strcmp comparison */
+ SWIGRUNTIME swig_cast_info *
+ SWIG_TypeProxyCheck(const char *c, swig_type_info *ty) {
+- SWIG_TypeCheck_Template(( (!iter->type->clientdata && (strcmp((char*)iter->type->name, c) == 0))
+- || (iter->type->clientdata && (strcmp((char*)iter->type->clientdata, c) == 0))), ty);
++ if (ty) {
++ swig_cast_info *iter = ty->cast;
++ while (iter) {
++ if ( (!iter->type->clientdata && (strcmp(iter->type->name, c) == 0)) ||
++ (iter->type->clientdata && (strcmp((char*)iter->type->clientdata, c) == 0)) ) {
++ if (iter == ty->cast)
++ return iter;
++ /* Move iter to the top of the linked list */
++ iter->prev->next = iter->next;
++ if (iter->next)
++ iter->next->prev = iter->prev;
++ iter->next = ty->cast;
++ iter->prev = 0;
++ if (ty->cast) ty->cast->prev = iter;
++ ty->cast = iter;
++ return iter;
++ }
++ iter = iter->next;
++ }
++ }
++ return 0;
+ }
+
+-
+ /* Function for getting a pointer value */
+
+ SWIGRUNTIME int
+@@ -1105,7 +1160,11 @@ SWIG_Perl_ConvertPtr(SWIG_MAYBE_PERL_OBJ
+ if (!tc) {
+ return SWIG_ERROR;
+ }
+- *ptr = SWIG_TypeCast(tc,voidptr);
++ {
++ int newmemory = 0;
++ *ptr = SWIG_TypeCast(tc,voidptr,&newmemory);
++ assert(!newmemory); /* newmemory handling not yet implemented */
++ }
+ } else {
+ *ptr = voidptr;
+ }
+@@ -1195,7 +1254,7 @@ SWIG_Perl_ConvertPacked(SWIG_MAYBE_PERL_
+ const char *c = 0;
+
+ if ((!obj) || (!SvOK(obj))) return SWIG_ERROR;
+- c = SvPV(obj, PL_na);
++ c = SvPV_nolen(obj);
+ /* Pointer values must start with leading underscore */
+ if (*c != '_') return SWIG_ERROR;
+ c++;
+@@ -1212,7 +1271,7 @@ SWIG_Perl_ConvertPacked(SWIG_MAYBE_PERL_
+ #define SWIG_croak(x) { SWIG_Error(SWIG_RuntimeError, x); SWIG_fail; }
+
+
+-typedef XS(SwigPerlWrapper);
++typedef XSPROTO(SwigPerlWrapper);
+ typedef SwigPerlWrapper *SwigPerlWrapperPtr;
+
+ /* Structure for command table */
+@@ -1265,8 +1324,8 @@ SWIGRUNTIME void _swig_create_magic(CPer
+ sv_magic(sv,sv,'U',(char *) name,strlen(name));
+ mg = mg_find(sv,'U');
+ mg->mg_virtual = (MGVTBL *) malloc(sizeof(MGVTBL));
+- mg->mg_virtual->svt_get = (SwigMagicFuncHack) get;
+- mg->mg_virtual->svt_set = (SwigMagicFuncHack) set;
++ mg->mg_virtual->svt_get = (SwigMagicFunc) get;
++ mg->mg_virtual->svt_set = (SwigMagicFunc) set;
+ mg->mg_virtual->svt_len = 0;
+ mg->mg_virtual->svt_clear = 0;
+ mg->mg_virtual->svt_free = 0;
+@@ -1280,7 +1339,7 @@ SWIG_Perl_GetModule(void) {
+
+ /* first check if pointer already created */
+ if (!type_pointer) {
+- pointer = get_sv("swig_runtime_data::type_pointer" SWIG_RUNTIME_VERSION SWIG_TYPE_TABLE_NAME, FALSE);
++ pointer = get_sv("swig_runtime_data::type_pointer" SWIG_RUNTIME_VERSION SWIG_TYPE_TABLE_NAME, FALSE | GV_ADDMULTI);
+ if (pointer && SvOK(pointer)) {
+ type_pointer = INT2PTR(swig_type_info **, SvIV(pointer));
+ }
+@@ -1294,7 +1353,7 @@ SWIG_Perl_SetModule(swig_module_info *mo
+ SV *pointer;
+
+ /* create a new pointer */
+- pointer = get_sv("swig_runtime_data::type_pointer" SWIG_RUNTIME_VERSION SWIG_TYPE_TABLE_NAME, TRUE);
++ pointer = get_sv("swig_runtime_data::type_pointer" SWIG_RUNTIME_VERSION SWIG_TYPE_TABLE_NAME, TRUE | GV_ADDMULTI);
+ sv_setiv(pointer, PTR2IV(module));
+ }
+
+@@ -1395,6 +1454,12 @@ SWIG_Perl_SetModule(swig_module_info *mo
+ #ifdef open
+ #undef open
+ #endif
++#ifdef readdir
++ #undef readdir
++#endif
++#ifdef bind
++ #undef bind
++#endif
+
+
+
+@@ -1407,8 +1472,8 @@ SWIG_Perl_SetModule(swig_module_info *mo
+ /* -------- TYPES TABLE (BEGIN) -------- */
+
+ #define SWIGTYPE_p_FriBidiCharSet swig_types[0]
+-#define SWIGTYPE_p_FriBidiRunType swig_types[1]
+-#define SWIGTYPE_p__FriBidiList swig_types[2]
++#define SWIGTYPE_p_FriBidiCharType swig_types[1]
++#define SWIGTYPE_p_FriBidiParType swig_types[2]
+ #define SWIGTYPE_p_char swig_types[3]
+ #define SWIGTYPE_p_int swig_types[4]
+ #define SWIGTYPE_p_short swig_types[5]
+@@ -1416,9 +1481,8 @@ SWIG_Perl_SetModule(swig_module_info *mo
+ #define SWIGTYPE_p_unsigned_char swig_types[7]
+ #define SWIGTYPE_p_unsigned_int swig_types[8]
+ #define SWIGTYPE_p_unsigned_short swig_types[9]
+-#define SWIGTYPE_p_void swig_types[10]
+-static swig_type_info *swig_types[12];
+-static swig_module_info swig_module = {swig_types, 11, 0, 0, 0, 0};
++static swig_type_info *swig_types[11];
++static swig_module_info swig_module = {swig_types, 10, 0, 0, 0, 0};
+ #define SWIG_TypeQuery(name) SWIG_TypeQueryModule(&swig_module, &swig_module, name)
+ #define SWIG_MangledTypeQuery(name) SWIG_MangledTypeQueryModule(&swig_module, &swig_module, name)
+
+@@ -1429,7 +1493,7 @@ static swig_module_info swig_module = {s
+ #define SWIG_name "Text::Bidi::privatec::boot_Text__Bidi__private"
+ #define SWIG_prefix "Text::Bidi::privatec::"
+
+-#define SWIGVERSION 0x010331
++#define SWIGVERSION 0x010339
+ #define SWIG_VERSION SWIGVERSION
+
+
+@@ -1455,7 +1519,7 @@ SWIGEXPORT void SWIG_init (CV *cv, CPerl
+ #define Newx(A,B,C) New(42,A,B,C)
+ #endif
+ #include <fribidi/fribidi.h>
+-FRIBIDI_API void log2vis ( /* input */
++void log2vis ( /* input */
+ FriBidiChar *str,
+ FriBidiStrIndex len,
+ /* output */
+@@ -1480,7 +1544,7 @@ SWIG_AsVal_double SWIG_PERL_DECL_ARGS_2(
+ if (val) *val = (double) SvIV(obj);
+ return SWIG_AddCast(SWIG_OK);
+ } else {
+- const char *nptr = SvPV(obj, PL_na);
++ const char *nptr = SvPV_nolen(obj);
+ if (nptr) {
+ char *endptr;
+ double v = strtod(nptr, &endptr);
+@@ -1551,10 +1615,12 @@ SWIG_AsVal_unsigned_SS_long SWIG_PERL_DE
+ }
+ } else {
+ int dispatch = 0;
+- const char *nptr = SvPV(obj, PL_na);
++ const char *nptr = SvPV_nolen(obj);
+ if (nptr) {
+ char *endptr;
+- unsigned long v = strtoul(nptr, &endptr,0);
++ unsigned long v;
++ errno = 0;
++ v = strtoul(nptr, &endptr,0);
+ if (errno == ERANGE) {
+ errno = 0;
+ return SWIG_OverflowError;
+@@ -1579,14 +1645,12 @@ SWIG_AsVal_unsigned_SS_long SWIG_PERL_DE
+
+
+ #include <limits.h>
+-#ifndef LLONG_MIN
+-# define LLONG_MIN LONG_LONG_MIN
+-#endif
+-#ifndef LLONG_MAX
+-# define LLONG_MAX LONG_LONG_MAX
+-#endif
+-#ifndef ULLONG_MAX
+-# define ULLONG_MAX ULONG_LONG_MAX
++#if !defined(SWIG_NO_LLONG_MAX)
++# if !defined(LLONG_MAX) && defined(__GNUC__) && defined (__LONG_LONG_MAX__)
++# define LLONG_MAX __LONG_LONG_MAX__
++# define LLONG_MIN (-LLONG_MAX - 1LL)
++# define ULLONG_MAX (LLONG_MAX * 2ULL + 1ULL)
++# endif
+ #endif
+
+
+@@ -1598,10 +1662,12 @@ SWIG_AsVal_long SWIG_PERL_DECL_ARGS_2(SV
+ return SWIG_OK;
+ } else {
+ int dispatch = 0;
+- const char *nptr = SvPV(obj, PL_na);
++ const char *nptr = SvPV_nolen(obj);
+ if (nptr) {
+ char *endptr;
+- long v = strtol(nptr, &endptr,0);
++ long v;
++ errno = 0;
++ v = strtol(nptr, &endptr,0);
+ if (errno == ERANGE) {
+ errno = 0;
+ return SWIG_OverflowError;
+@@ -1641,20 +1707,65 @@ SWIG_AsVal_int SWIG_PERL_DECL_ARGS_2(SV
+ }
+
+
++SWIGINTERN swig_type_info*
++SWIG_pchar_descriptor(void)
++{
++ static int init = 0;
++ static swig_type_info* info = 0;
++ if (!init) {
++ info = SWIG_TypeQuery("_p_char");
++ init = 1;
++ }
++ return info;
++}
++
++
++SWIGINTERN int
++SWIG_AsCharPtrAndSize(SV *obj, char** cptr, size_t* psize, int *alloc)
++{
++ if (SvMAGICAL(obj)) {
++ SV *tmp = sv_newmortal();
++ SvSetSV(tmp, obj);
++ obj = tmp;
++ }
++ if (SvPOK(obj)) {
++ STRLEN len = 0;
++ char *cstr = SvPV(obj, len);
++ size_t size = len + 1;
++ if (cptr) {
++ if (alloc) {
++ if (*alloc == SWIG_NEWOBJ) {
++ *cptr = (char *)memcpy((char *)malloc((size)*sizeof(char)), cstr, sizeof(char)*(size));
++ } else {
++ *cptr = cstr;
++ *alloc = SWIG_OLDOBJ;
++ }
++ }
++ }
++ if (psize) *psize = size;
++ return SWIG_OK;
++ } else {
++ swig_type_info* pchar_descriptor = SWIG_pchar_descriptor();
++ if (pchar_descriptor) {
++ char* vptr = 0;
++ if (SWIG_ConvertPtr(obj, (void**)&vptr, pchar_descriptor, 0) == SWIG_OK) {
++ if (cptr) *cptr = vptr;
++ if (psize) *psize = vptr ? (strlen(vptr) + 1) : 0;
++ if (alloc) *alloc = SWIG_OLDOBJ;
++ return SWIG_OK;
++ }
++ }
++ }
++ return SWIG_TypeError;
++}
++
++
+ SWIGINTERNINLINE SV *
+ SWIG_FromCharPtrAndSize(const char* carray, size_t size)
+ {
+ SV *obj = sv_newmortal();
+ if (carray) {
+- if (size && (carray[size - 1] == 0)) {
+- sv_setpv(obj, carray);
+- } else {
+- char *tmp = (char *)malloc((size + 1)*sizeof(char));
+- memcpy(tmp, carray, size);
+- tmp[size] = 0;
+- sv_setpv(obj, tmp);
+- free((char*)tmp);
+- }
++ sv_setpvn(obj, carray, size);
+ } else {
+ sv_setsv(obj, &PL_sv_undef);
+ }
+@@ -1702,6 +1813,13 @@ SWIG_AsVal_unsigned_SS_int SWIG_PERL_DEC
+
+
+ SWIGINTERNINLINE SV *
++SWIG_From_signed_SS_char SWIG_PERL_DECL_ARGS_1(signed char value)
++{
++ return SWIG_From_long SWIG_PERL_CALL_ARGS_1(value);
++}
++
++
++SWIGINTERNINLINE SV *
+ SWIG_From_unsigned_SS_long SWIG_PERL_DECL_ARGS_1(unsigned long value)
+ {
+ SV *obj = sv_newmortal();
+@@ -1710,59 +1828,38 @@ SWIG_From_unsigned_SS_long SWIG_PERL_DE
+ }
+
+
+-SWIGINTERN swig_type_info*
+-SWIG_pchar_descriptor(void)
+-{
+- static int init = 0;
+- static swig_type_info* info = 0;
+- if (!init) {
+- info = SWIG_TypeQuery("_p_char");
+- init = 1;
+- }
+- return info;
++SWIGINTERNINLINE SV *
++SWIG_From_unsigned_SS_char SWIG_PERL_DECL_ARGS_1(unsigned char value)
++{
++ return SWIG_From_unsigned_SS_long SWIG_PERL_CALL_ARGS_1(value);
+ }
+
+
+ SWIGINTERN int
+-SWIG_AsCharPtrAndSize(SV *obj, char** cptr, size_t* psize, int *alloc)
++SWIG_AsVal_unsigned_SS_char SWIG_PERL_DECL_ARGS_2(SV * obj, unsigned char *val)
+ {
+- if (SvPOK(obj)) {
+- STRLEN len = 0;
+- char *cstr = SvPV(obj, len);
+- size_t size = len + 1;
+- if (cptr) {
+- if (alloc) {
+- if (*alloc == SWIG_NEWOBJ) {
+- *cptr = (char *)memcpy((char *)malloc((size)*sizeof(char)), cstr, sizeof(char)*(size));
+- } else {
+- *cptr = cstr;
+- *alloc = SWIG_OLDOBJ;
+- }
+- }
+- }
+- if (psize) *psize = size;
+- return SWIG_OK;
+- } else {
+- swig_type_info* pchar_descriptor = SWIG_pchar_descriptor();
+- if (pchar_descriptor) {
+- char* vptr = 0;
+- if (SWIG_ConvertPtr(obj, (void**)&vptr, pchar_descriptor, 0) == SWIG_OK) {
+- if (cptr) *cptr = vptr;
+- if (psize) *psize = vptr ? (strlen(vptr) + 1) : 0;
+- if (alloc) *alloc = SWIG_OLDOBJ;
+- return SWIG_OK;
+- }
++ unsigned long v;
++ int res = SWIG_AsVal_unsigned_SS_long SWIG_PERL_CALL_ARGS_2(obj, &v);
++ if (SWIG_IsOK(res)) {
++ if ((v > UCHAR_MAX)) {
++ return SWIG_OverflowError;
++ } else {
++ if (val) *val = (unsigned char)(v);
+ }
+- }
+- return SWIG_TypeError;
++ }
++ return res;
+ }
+
+
+
+
++#ifdef __cplusplus
++extern "C" {
++#endif
++
+ #ifdef PERL_OBJECT
+-#define MAGIC_CLASS _wrap_Text::Bidi::private_var::
+-class _wrap_Text::Bidi::private_var : public CPerlObj {
++#define MAGIC_CLASS _wrap_Text__Bidi__private_var::
++class _wrap_Text__Bidi__private_var : public CPerlObj {
+ public:
+ #else
+ #define MAGIC_CLASS
+@@ -1772,9 +1869,28 @@ SWIGCLASS_STATIC int swig_magic_readonly
+ croak("Value is read-only.");
+ return 0;
+ }
+-SWIGCLASS_STATIC int _wrap_fribidi_prop_to_type_get(pTHX_ SV *sv, MAGIC *SWIGUNUSEDPARM(mg)) {
++SWIGCLASS_STATIC int _wrap_fribidi_unicode_version_set(pTHX_ SV* sv, MAGIC * SWIGUNUSEDPARM(mg)) {
++ MAGIC_PPERL
++ {
++ char *cptr = 0; size_t csize = 0; int alloc = SWIG_NEWOBJ;
++ int res = SWIG_AsCharPtrAndSize(sv, &cptr, &csize, &alloc);
++ if (!SWIG_IsOK(res)) {
++ SWIG_exception_fail(SWIG_ArgError(res), "in variable '""fribidi_unicode_version""' of type '""char const *""'");
++ }
++ if (alloc == SWIG_NEWOBJ) {
++ fribidi_unicode_version = cptr;
++ } else {
++ fribidi_unicode_version = csize ? (char const *)(char *)memcpy((char *)malloc((csize)*sizeof(char)), cptr, sizeof(char)*(csize)) : 0;
++ }
++ }
++fail:
++ return 1;
++}
++
++
++SWIGCLASS_STATIC int _wrap_fribidi_unicode_version_get(pTHX_ SV *sv, MAGIC *SWIGUNUSEDPARM(mg)) {
+ MAGIC_PPERL
+- sv_setiv(SvRV(sv),PTR2IV(fribidi_prop_to_type));
++ sv_setsv(sv,SWIG_FromCharPtr(fribidi_unicode_version)) ;
+ return 1;
+ }
+
+@@ -1786,6 +1902,10 @@ SWIGCLASS_STATIC int _wrap_fribidi_prop_
+ #endif
+
+ #ifdef __cplusplus
++}
++#endif
++
++#ifdef __cplusplus
+ extern "C" {
+ #endif
+ XS(_wrap_log2vis) {
+@@ -1814,7 +1934,7 @@ XS(_wrap_log2vis) {
+
+ temp4 = FRIBIDI_TYPE_ON;
+ arg4 = &temp4;
+- _global_wantarray = /*@SWIG:WANTARRAY@*/(GIMME_V == G_ARRAY)
++ _global_wantarray = /*@SWIG:swig/fribidi.i,33,WANTARRAY@*/(GIMME_V == G_ARRAY)
+ /*@SWIG@*/;
+
+ arg2 = 0;
+@@ -1839,7 +1959,7 @@ XS(_wrap_log2vis) {
+ *_global_p_len = (FriBidiStrIndex)(size1/sizeof(FriBidiChar));
+ arg1 = (FriBidiChar *)(buf1);
+ if (items > 1) {
+- if (!(SWIG_IsOK((res4 = SWIG_ConvertPtr(ST(1),SWIG_as_voidptrptr(&arg4),SWIGTYPE_p_int,0))))) {
++ if (!(SWIG_IsOK((res4 = SWIG_ConvertPtr(ST(1),SWIG_as_voidptrptr(&arg4),SWIGTYPE_p_FriBidiCharType,0))))) {
+ unsigned long val;
+ int ecode = SWIG_AsVal_unsigned_SS_long SWIG_PERL_CALL_ARGS_2(ST(1), &val);
+ if (!SWIG_IsOK(ecode)) {
+@@ -1862,10 +1982,10 @@ XS(_wrap_log2vis) {
+ }
+ _saved[0] = ST(1);
+ log2vis(arg1,arg2,arg3,arg4,arg5,arg6,arg7);
+-
++ ST(argvi) = sv_newmortal();
+ {
+- /*@SWIG:MXPUSHP@*/
+- /*@SWIG:XPUSHS@*/
++ /*@SWIG:swig/fribidi.i,53,MXPUSHP@*/
++ /*@SWIG:swig/fribidi.i,40,XPUSHS@*/
+ if (argvi >= items)
+ EXTEND(sp, 1);
+ ST(argvi) = sv_2mortal(newSVpvn((const char *)(arg3),(STRLEN)( (*_global_p_len) * sizeof(FriBidiChar))));
+@@ -1875,8 +1995,8 @@ XS(_wrap_log2vis) {
+ }
+ {
+ if (_global_wantarray) {
+- /*@SWIG:MXPUSHU@*/
+- /*@SWIG:XPUSHS@*/
++ /*@SWIG:swig/fribidi.i,48,MXPUSHU@*/
++ /*@SWIG:swig/fribidi.i,40,XPUSHS@*/
+ if (argvi >= items)
+ EXTEND(sp, 1);
+ ST(argvi) = sv_2mortal(newSVuv(*(arg4)));
+@@ -1887,14 +2007,14 @@ XS(_wrap_log2vis) {
+ }
+ {
+ if ( _global_wantarray )
+- /*@SWIG:MXPUSHUA@*/
++ /*@SWIG:swig/fribidi.i,63,MXPUSHUA@*/
+ {
+ AV* tempav = newAV();
+ int i;
+ for(i=0 ; i < (*_global_p_len) ; i++)
+ av_push(tempav, newSVuv(arg5[i]));
+- /*@SWIG:MXPUSHR@*/
+- /*@SWIG:XPUSHS@*/
++ /*@SWIG:swig/fribidi.i,58,MXPUSHR@*/
++ /*@SWIG:swig/fribidi.i,40,XPUSHS@*/
+ if (argvi >= items)
+ EXTEND(sp, 1);
+ ST(argvi) = sv_2mortal(newRV_noinc((SV *)tempav));
+@@ -1906,14 +2026,14 @@ XS(_wrap_log2vis) {
+ }
+ {
+ if ( _global_wantarray )
+- /*@SWIG:MXPUSHUA@*/
++ /*@SWIG:swig/fribidi.i,63,MXPUSHUA@*/
+ {
+ AV* tempav = newAV();
+ int i;
+ for(i=0 ; i < (*_global_p_len) ; i++)
+ av_push(tempav, newSVuv(arg6[i]));
+- /*@SWIG:MXPUSHR@*/
+- /*@SWIG:XPUSHS@*/
++ /*@SWIG:swig/fribidi.i,58,MXPUSHR@*/
++ /*@SWIG:swig/fribidi.i,40,XPUSHS@*/
+ if (argvi >= items)
+ EXTEND(sp, 1);
+ ST(argvi) = sv_2mortal(newRV_noinc((SV *)tempav));
+@@ -1925,14 +2045,14 @@ XS(_wrap_log2vis) {
+ }
+ {
+ if ( _global_wantarray )
+- /*@SWIG:MXPUSHUA@*/
++ /*@SWIG:swig/fribidi.i,63,MXPUSHUA@*/
+ {
+ AV* tempav = newAV();
+ int i;
+ for(i=0 ; i < (*_global_p_len) ; i++)
+ av_push(tempav, newSVuv(arg7[i]));
+- /*@SWIG:MXPUSHR@*/
+- /*@SWIG:XPUSHS@*/
++ /*@SWIG:swig/fribidi.i,58,MXPUSHR@*/
++ /*@SWIG:swig/fribidi.i,40,XPUSHS@*/
+ if (argvi >= items)
+ EXTEND(sp, 1);
+ ST(argvi) = sv_2mortal(newRV_noinc((SV *)tempav));
+@@ -1979,25 +2099,25 @@ XS(_wrap_log2vis) {
+ }
+
+
+-XS(_wrap_fribidi_wcwidth) {
++XS(_wrap_fribidi_get_bidi_type) {
+ {
+ FriBidiChar arg1 ;
+- int result;
+ unsigned int val1 ;
+ int ecode1 = 0 ;
+ int argvi = 0;
++ FriBidiCharType result;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+- SWIG_croak("Usage: fribidi_wcwidth(ch);");
++ SWIG_croak("Usage: fribidi_get_bidi_type(ch);");
+ }
+ ecode1 = SWIG_AsVal_unsigned_SS_int SWIG_PERL_CALL_ARGS_2(ST(0), &val1);
+ if (!SWIG_IsOK(ecode1)) {
+- SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "fribidi_wcwidth" "', argument " "1"" of type '" "FriBidiChar""'");
++ SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "fribidi_get_bidi_type" "', argument " "1"" of type '" "FriBidiChar""'");
+ }
+ arg1 = (FriBidiChar)(val1);
+- result = (int)fribidi_wcwidth(arg1);
+-
++ result = (FriBidiCharType)fribidi_get_bidi_type(arg1);
++ ST(argvi) = SWIG_From_int SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
+
+ XSRETURN(argvi);
+ fail:
+@@ -2007,14 +2127,16 @@ XS(_wrap_fribidi_wcwidth) {
+ }
+
+
+-XS(_wrap_fribidi_wcswidth) {
++XS(_wrap_fribidi_get_bidi_types) {
+ {
+ FriBidiChar *arg1 = (FriBidiChar *) 0 ;
+ FriBidiStrIndex arg2 ;
+- int result;
++ FriBidiCharType *arg3 = (FriBidiCharType *) 0 ;
+ char *buf1 = 0 ;
+ size_t size1 = 0 ;
+ FriBidiStrIndex *_global_p_len ;
++ void *argp3 = 0 ;
++ int res3 = 0 ;
+ int argvi = 0;
+ dXSARGS;
+
+@@ -2022,13 +2144,19 @@ XS(_wrap_fribidi_wcswidth) {
+ arg2 = 0;
+ _global_p_len = &arg2;
+
+- if ((items < 1) || (items > 1)) {
+- SWIG_croak("Usage: fribidi_wcswidth(str);");
++ if ((items < 2) || (items > 2)) {
++ SWIG_croak("Usage: fribidi_get_bidi_types(str,btypes);");
+ }
+ buf1 = SvPV(ST(0), size1);
+ *_global_p_len = (FriBidiStrIndex)(size1/sizeof(FriBidiChar));
+ arg1 = (FriBidiChar *)(buf1);
+- result = (int)fribidi_wcswidth((unsigned int const *)arg1,arg2);
++ res3 = SWIG_ConvertPtr(ST(1), &argp3,SWIGTYPE_p_FriBidiCharType, 0 | 0 );
++ if (!SWIG_IsOK(res3)) {
++ SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "fribidi_get_bidi_types" "', argument " "3"" of type '" "FriBidiCharType *""'");
++ }
++ arg3 = (FriBidiCharType *)(argp3);
++ fribidi_get_bidi_types((unsigned int const *)arg1,arg2,arg3);
++ ST(argvi) = sv_newmortal();
+
+
+
+@@ -2036,63 +2164,30 @@ XS(_wrap_fribidi_wcswidth) {
+ fail:
+
+
+- SWIG_croak_null();
+- }
+-}
+-
+-
+-XS(_wrap_fribidi_wcswidth_cjk) {
+- {
+- FriBidiChar *arg1 = (FriBidiChar *) 0 ;
+- FriBidiStrIndex arg2 ;
+- int result;
+- char *buf1 = 0 ;
+- size_t size1 = 0 ;
+- FriBidiStrIndex *_global_p_len ;
+- int argvi = 0;
+- dXSARGS;
+-
+-
+- arg2 = 0;
+- _global_p_len = &arg2;
+-
+- if ((items < 1) || (items > 1)) {
+- SWIG_croak("Usage: fribidi_wcswidth_cjk(str);");
+- }
+- buf1 = SvPV(ST(0), size1);
+- *_global_p_len = (FriBidiStrIndex)(size1/sizeof(FriBidiChar));
+- arg1 = (FriBidiChar *)(buf1);
+- result = (int)fribidi_wcswidth_cjk((unsigned int const *)arg1,arg2);
+-
+-
+-
+- XSRETURN(argvi);
+- fail:
+-
+
+ SWIG_croak_null();
+ }
+ }
+
+
+-XS(_wrap_fribidi_type_name) {
++XS(_wrap_fribidi_get_bidi_type_name) {
+ {
+ FriBidiCharType arg1 ;
+- char *result = 0 ;
+ int val1 ;
+ int ecode1 = 0 ;
+ int argvi = 0;
++ char *result = 0 ;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+- SWIG_croak("Usage: fribidi_type_name(c);");
++ SWIG_croak("Usage: fribidi_get_bidi_type_name(t);");
+ }
+ ecode1 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(0), &val1);
+ if (!SWIG_IsOK(ecode1)) {
+- SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "fribidi_type_name" "', argument " "1"" of type '" "FriBidiCharType""'");
++ SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "fribidi_get_bidi_type_name" "', argument " "1"" of type '" "FriBidiCharType""'");
+ }
+ arg1 = (FriBidiCharType)(val1);
+- result = (char *)fribidi_type_name(arg1);
++ result = (char *)fribidi_get_bidi_type_name(arg1);
+ ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
+
+ XSRETURN(argvi);
+@@ -2103,33 +2198,31 @@ XS(_wrap_fribidi_type_name) {
+ }
+
+
+-XS(_wrap_FriBidiRunType_length_set) {
++XS(_wrap_fribidi_get_par_direction) {
+ {
+- FriBidiRunType *arg1 = (FriBidiRunType *) 0 ;
++ FriBidiCharType *arg1 = (FriBidiCharType *) 0 ;
+ FriBidiStrIndex arg2 ;
+ void *argp1 = 0 ;
+ int res1 = 0 ;
+- int val2 ;
+- int ecode2 = 0 ;
++ FriBidiStrIndex *_global_p_len ;
+ int argvi = 0;
++ FriBidiParType result;
+ dXSARGS;
+
+- if ((items < 2) || (items > 2)) {
+- SWIG_croak("Usage: FriBidiRunType_length_set(self,length);");
++
++ arg2 = 0;
++ _global_p_len = &arg2;
++
++ if ((items < 1) || (items > 1)) {
++ SWIG_croak("Usage: fribidi_get_par_direction(bidi_types);");
+ }
+- res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_FriBidiRunType, 0 | 0 );
++ res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_FriBidiCharType, 0 | 0 );
+ if (!SWIG_IsOK(res1)) {
+- SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FriBidiRunType_length_set" "', argument " "1"" of type '" "FriBidiRunType *""'");
++ SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fribidi_get_par_direction" "', argument " "1"" of type '" "FriBidiCharType const *""'");
+ }
+- arg1 = (FriBidiRunType *)(argp1);
+- ecode2 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(1), &val2);
+- if (!SWIG_IsOK(ecode2)) {
+- SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "FriBidiRunType_length_set" "', argument " "2"" of type '" "FriBidiStrIndex""'");
+- }
+- arg2 = (FriBidiStrIndex)(val2);
+- if (arg1) (arg1)->length = arg2;
+-
+-
++ arg1 = (FriBidiCharType *)(argp1);
++ result = (FriBidiParType)fribidi_get_par_direction((enum FriBidiCharType const *)arg1,arg2);
++ ST(argvi) = SWIG_From_int SWIG_PERL_CALL_ARGS_1((int)(result)); argvi++ ;
+
+
+ XSRETURN(argvi);
+@@ -2141,89 +2234,189 @@ XS(_wrap_FriBidiRunType_length_set) {
+ }
+
+
+-XS(_wrap_FriBidiRunType_length_get) {
++XS(_wrap_fribidi_get_par_embedding_levels) {
+ {
+- FriBidiRunType *arg1 = (FriBidiRunType *) 0 ;
+- FriBidiStrIndex result;
++ FriBidiCharType *arg1 = (FriBidiCharType *) 0 ;
++ FriBidiStrIndex arg2 ;
++ FriBidiParType *arg3 = (FriBidiParType *) 0 ;
++ FriBidiLevel *arg4 = (FriBidiLevel *) 0 ;
+ void *argp1 = 0 ;
+ int res1 = 0 ;
++ FriBidiStrIndex *_global_p_len ;
++ void *argp3 = 0 ;
++ int res3 = 0 ;
++ void *argp4 = 0 ;
++ int res4 = 0 ;
+ int argvi = 0;
++ FriBidiLevel result;
+ dXSARGS;
+
+- if ((items < 1) || (items > 1)) {
+- SWIG_croak("Usage: FriBidiRunType_length_get(self);");
++
++ arg2 = 0;
++ _global_p_len = &arg2;
++
++ if ((items < 3) || (items > 3)) {
++ SWIG_croak("Usage: fribidi_get_par_embedding_levels(bidi_types,pbase_dir,embedding_levels);");
+ }
+- res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_FriBidiRunType, 0 | 0 );
++ res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_FriBidiCharType, 0 | 0 );
+ if (!SWIG_IsOK(res1)) {
+- SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FriBidiRunType_length_get" "', argument " "1"" of type '" "FriBidiRunType *""'");
++ SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fribidi_get_par_embedding_levels" "', argument " "1"" of type '" "FriBidiCharType const *""'");
+ }
+- arg1 = (FriBidiRunType *)(argp1);
+- result = (FriBidiStrIndex) ((arg1)->length);
++ arg1 = (FriBidiCharType *)(argp1);
++ res3 = SWIG_ConvertPtr(ST(1), &argp3,SWIGTYPE_p_FriBidiParType, 0 | 0 );
++ if (!SWIG_IsOK(res3)) {
++ SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "fribidi_get_par_embedding_levels" "', argument " "3"" of type '" "FriBidiParType *""'");
++ }
++ arg3 = (FriBidiParType *)(argp3);
++ res4 = SWIG_ConvertPtr(ST(2), &argp4,SWIGTYPE_p_signed_char, 0 | 0 );
++ if (!SWIG_IsOK(res4)) {
++ SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "fribidi_get_par_embedding_levels" "', argument " "4"" of type '" "FriBidiLevel *""'");
++ }
++ arg4 = (FriBidiLevel *)(argp4);
++ result = (FriBidiLevel)fribidi_get_par_embedding_levels((enum FriBidiCharType const *)arg1,arg2,arg3,arg4);
++ ST(argvi) = SWIG_From_signed_SS_char SWIG_PERL_CALL_ARGS_1((signed char)(result)); argvi++ ;
++
++
+
+
+ XSRETURN(argvi);
+ fail:
+
++
++
++
+ SWIG_croak_null();
+ }
+ }
+
+
+-XS(_wrap_FriBidiRunType_attribute_set) {
++XS(_wrap_fribidi_reorder_line) {
+ {
+- FriBidiRunType *arg1 = (FriBidiRunType *) 0 ;
+- void *arg2 = (void *) 0 ;
+- void *argp1 = 0 ;
+- int res1 = 0 ;
+- int res2 ;
+- int argvi = 0;
+- dXSARGS;
++ FriBidiFlags arg1 ;
++ FriBidiCharType *arg2 = (FriBidiCharType *) 0 ;
++ FriBidiStrIndex arg3 ;
++ FriBidiStrIndex arg4 ;
++ FriBidiParType arg5 ;
++ FriBidiLevel *arg6 = (FriBidiLevel *) 0 ;
++ FriBidiChar *arg7 = (FriBidiChar *) 0 ;
++ FriBidiStrIndex *arg8 = (FriBidiStrIndex *) 0 ;
++ unsigned int val1 ;
++ int ecode1 = 0 ;
++ void *argp2 = 0 ;
++ int res2 = 0 ;
++ FriBidiStrIndex *_global_p_len ;
++ int val4 ;
++ int ecode4 = 0 ;
++ int val5 ;
++ int ecode5 = 0 ;
++ void *argp6 = 0 ;
++ int res6 = 0 ;
++ FriBidiChar **temp7 ;
++ void *argp8 = 0 ;
++ int res8 = 0 ;
++ int argvi = 0;
++ FriBidiLevel result;
++ dXSARGS;
+
+- if ((items < 2) || (items > 2)) {
+- SWIG_croak("Usage: FriBidiRunType_attribute_set(self,attribute);");
+- }
+- res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_FriBidiRunType, 0 | 0 );
+- if (!SWIG_IsOK(res1)) {
+- SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FriBidiRunType_attribute_set" "', argument " "1"" of type '" "FriBidiRunType *""'");
++
++ arg3 = 0;
++ _global_p_len = &arg3;
++
++
++ temp7 = &arg7;
++
++ if ((items < 6) || (items > 6)) {
++ SWIG_croak("Usage: fribidi_reorder_line(flags,bidi_types,off,base_dir,embedding_levels,map);");
+ }
+- arg1 = (FriBidiRunType *)(argp1);
+- res2 = SWIG_ConvertPtr(ST(1),SWIG_as_voidptrptr(&arg2), 0, SWIG_POINTER_DISOWN);
++ ecode1 = SWIG_AsVal_unsigned_SS_int SWIG_PERL_CALL_ARGS_2(ST(0), &val1);
++ if (!SWIG_IsOK(ecode1)) {
++ SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "fribidi_reorder_line" "', argument " "1"" of type '" "FriBidiFlags""'");
++ }
++ arg1 = (FriBidiFlags)(val1);
++ res2 = SWIG_ConvertPtr(ST(1), &argp2,SWIGTYPE_p_FriBidiCharType, 0 | 0 );
+ if (!SWIG_IsOK(res2)) {
+- SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "FriBidiRunType_attribute_set" "', argument " "2"" of type '" "void *""'");
++ SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "fribidi_reorder_line" "', argument " "2"" of type '" "FriBidiCharType const *""'");
++ }
++ arg2 = (FriBidiCharType *)(argp2);
++ ecode4 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(2), &val4);
++ if (!SWIG_IsOK(ecode4)) {
++ SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "fribidi_reorder_line" "', argument " "4"" of type '" "FriBidiStrIndex""'");
++ }
++ arg4 = (FriBidiStrIndex)(val4);
++ ecode5 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(3), &val5);
++ if (!SWIG_IsOK(ecode5)) {
++ SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "fribidi_reorder_line" "', argument " "5"" of type '" "FriBidiParType""'");
++ }
++ arg5 = (FriBidiParType)(val5);
++ res6 = SWIG_ConvertPtr(ST(4), &argp6,SWIGTYPE_p_signed_char, 0 | 0 );
++ if (!SWIG_IsOK(res6)) {
++ SWIG_exception_fail(SWIG_ArgError(res6), "in method '" "fribidi_reorder_line" "', argument " "6"" of type '" "FriBidiLevel *""'");
++ }
++ arg6 = (FriBidiLevel *)(argp6);
++ res8 = SWIG_ConvertPtr(ST(5), &argp8,SWIGTYPE_p_int, 0 | 0 );
++ if (!SWIG_IsOK(res8)) {
++ SWIG_exception_fail(SWIG_ArgError(res8), "in method '" "fribidi_reorder_line" "', argument " "8"" of type '" "FriBidiStrIndex *""'");
++ }
++ arg8 = (FriBidiStrIndex *)(argp8);
++ Newx(*temp7, ((*_global_p_len) + 1), FriBidiChar);
++ result = (FriBidiLevel)fribidi_reorder_line(arg1,(enum FriBidiCharType const *)arg2,arg3,arg4,arg5,arg6,arg7,arg8);
++ ST(argvi) = SWIG_From_signed_SS_char SWIG_PERL_CALL_ARGS_1((signed char)(result)); argvi++ ;
++ {
++ /*@SWIG:swig/fribidi.i,53,MXPUSHP@*/
++ /*@SWIG:swig/fribidi.i,40,XPUSHS@*/
++ if (argvi >= items)
++ EXTEND(sp, 1);
++ ST(argvi) = sv_2mortal(newSVpvn((const char *)(arg7),(STRLEN)( (*_global_p_len) * sizeof(FriBidiChar))));
++ argvi++
++ /*@SWIG@*/
++ /*@SWIG@*/;
+ }
+- if (arg1) (arg1)->attribute = arg2;
+
+
+
+
++
++
++
++ if (arg7) Safefree(arg7);
++
++
+ XSRETURN(argvi);
+ fail:
+
+
++
++
++
++
++
++ if (arg7) Safefree(arg7);
++
++
+ SWIG_croak_null();
+ }
+ }
+
+
+-XS(_wrap_FriBidiRunType_attribute_get) {
++XS(_wrap_fribidi_get_joining_type) {
+ {
+- FriBidiRunType *arg1 = (FriBidiRunType *) 0 ;
+- void *result = 0 ;
+- void *argp1 = 0 ;
+- int res1 = 0 ;
++ FriBidiChar arg1 ;
++ unsigned int val1 ;
++ int ecode1 = 0 ;
+ int argvi = 0;
++ FriBidiJoiningType result;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+- SWIG_croak("Usage: FriBidiRunType_attribute_get(self);");
++ SWIG_croak("Usage: fribidi_get_joining_type(ch);");
+ }
+- res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_FriBidiRunType, 0 | 0 );
+- if (!SWIG_IsOK(res1)) {
+- SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FriBidiRunType_attribute_get" "', argument " "1"" of type '" "FriBidiRunType *""'");
+- }
+- arg1 = (FriBidiRunType *)(argp1);
+- result = (void *) ((arg1)->attribute);
+- ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_void, 0 | 0); argvi++ ;
++ ecode1 = SWIG_AsVal_unsigned_SS_int SWIG_PERL_CALL_ARGS_2(ST(0), &val1);
++ if (!SWIG_IsOK(ecode1)) {
++ SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "fribidi_get_joining_type" "', argument " "1"" of type '" "FriBidiChar""'");
++ }
++ arg1 = (FriBidiChar)(val1);
++ result = (FriBidiJoiningType)fribidi_get_joining_type(arg1);
++ ST(argvi) = SWIG_From_unsigned_SS_char SWIG_PERL_CALL_ARGS_1((unsigned char)(result)); argvi++ ;
+
+ XSRETURN(argvi);
+ fail:
+@@ -2233,43 +2426,68 @@ XS(_wrap_FriBidiRunType_attribute_get) {
+ }
+
+
+-XS(_wrap_new_FriBidiRunType) {
++XS(_wrap_fribidi_get_joining_types) {
+ {
+- FriBidiRunType *result = 0 ;
++ FriBidiChar *arg1 = (FriBidiChar *) 0 ;
++ FriBidiStrIndex arg2 ;
++ FriBidiJoiningType *arg3 = (FriBidiJoiningType *) 0 ;
++ char *buf1 = 0 ;
++ size_t size1 = 0 ;
++ FriBidiStrIndex *_global_p_len ;
++ void *argp3 = 0 ;
++ int res3 = 0 ;
+ int argvi = 0;
+ dXSARGS;
+
+- if ((items < 0) || (items > 0)) {
+- SWIG_croak("Usage: new_FriBidiRunType();");
++
++ arg2 = 0;
++ _global_p_len = &arg2;
++
++ if ((items < 2) || (items > 2)) {
++ SWIG_croak("Usage: fribidi_get_joining_types(str,jtypes);");
+ }
+- result = (FriBidiRunType *)(FriBidiRunType *) calloc(1, sizeof(FriBidiRunType));
+- ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_FriBidiRunType, SWIG_OWNER | SWIG_SHADOW); argvi++ ;
++ buf1 = SvPV(ST(0), size1);
++ *_global_p_len = (FriBidiStrIndex)(size1/sizeof(FriBidiChar));
++ arg1 = (FriBidiChar *)(buf1);
++ res3 = SWIG_ConvertPtr(ST(1), &argp3,SWIGTYPE_p_unsigned_char, 0 | 0 );
++ if (!SWIG_IsOK(res3)) {
++ SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "fribidi_get_joining_types" "', argument " "3"" of type '" "FriBidiJoiningType *""'");
++ }
++ arg3 = (FriBidiJoiningType *)(argp3);
++ fribidi_get_joining_types((unsigned int const *)arg1,arg2,arg3);
++ ST(argvi) = sv_newmortal();
++
++
++
+ XSRETURN(argvi);
+ fail:
++
++
++
+ SWIG_croak_null();
+ }
+ }
+
+
+-XS(_wrap_delete_FriBidiRunType) {
++XS(_wrap_fribidi_get_joining_type_name) {
+ {
+- FriBidiRunType *arg1 = (FriBidiRunType *) 0 ;
+- void *argp1 = 0 ;
+- int res1 = 0 ;
++ FriBidiJoiningType arg1 ;
++ unsigned char val1 ;
++ int ecode1 = 0 ;
+ int argvi = 0;
++ char *result = 0 ;
+ dXSARGS;
+
+ if ((items < 1) || (items > 1)) {
+- SWIG_croak("Usage: delete_FriBidiRunType(self);");
+- }
+- res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_FriBidiRunType, SWIG_POINTER_DISOWN | 0 );
+- if (!SWIG_IsOK(res1)) {
+- SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_FriBidiRunType" "', argument " "1"" of type '" "FriBidiRunType *""'");
++ SWIG_croak("Usage: fribidi_get_joining_type_name(j);");
+ }
+- arg1 = (FriBidiRunType *)(argp1);
+- free((char *) arg1);
+-
+-
++ ecode1 = SWIG_AsVal_unsigned_SS_char SWIG_PERL_CALL_ARGS_2(ST(0), &val1);
++ if (!SWIG_IsOK(ecode1)) {
++ SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "fribidi_get_joining_type_name" "', argument " "1"" of type '" "FriBidiJoiningType""'");
++ }
++ arg1 = (FriBidiJoiningType)(val1);
++ result = (char *)fribidi_get_joining_type_name(arg1);
++ ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
+
+ XSRETURN(argvi);
+ fail:
+@@ -2279,29 +2497,46 @@ XS(_wrap_delete_FriBidiRunType) {
+ }
+
+
+-XS(_wrap__FriBidiList_data_set) {
++XS(_wrap_fribidi_join_arabic) {
+ {
+- struct _FriBidiList *arg1 = (struct _FriBidiList *) 0 ;
+- void *arg2 = (void *) 0 ;
++ FriBidiCharType *arg1 = (FriBidiCharType *) 0 ;
++ FriBidiStrIndex arg2 ;
++ FriBidiLevel *arg3 = (FriBidiLevel *) 0 ;
++ FriBidiArabicProp *arg4 = (FriBidiArabicProp *) 0 ;
+ void *argp1 = 0 ;
+ int res1 = 0 ;
+- int res2 ;
++ FriBidiStrIndex *_global_p_len ;
++ void *argp3 = 0 ;
++ int res3 = 0 ;
++ void *argp4 = 0 ;
++ int res4 = 0 ;
+ int argvi = 0;
+ dXSARGS;
+
+- if ((items < 2) || (items > 2)) {
+- SWIG_croak("Usage: _FriBidiList_data_set(self,data);");
++
++ arg2 = 0;
++ _global_p_len = &arg2;
++
++ if ((items < 3) || (items > 3)) {
++ SWIG_croak("Usage: fribidi_join_arabic(bidi_types,embedding_levels,ar_props);");
+ }
+- res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p__FriBidiList, 0 | 0 );
++ res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_FriBidiCharType, 0 | 0 );
+ if (!SWIG_IsOK(res1)) {
+- SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "_FriBidiList_data_set" "', argument " "1"" of type '" "struct _FriBidiList *""'");
+- }
+- arg1 = (struct _FriBidiList *)(argp1);
+- res2 = SWIG_ConvertPtr(ST(1),SWIG_as_voidptrptr(&arg2), 0, SWIG_POINTER_DISOWN);
+- if (!SWIG_IsOK(res2)) {
+- SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "_FriBidiList_data_set" "', argument " "2"" of type '" "void *""'");
++ SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fribidi_join_arabic" "', argument " "1"" of type '" "FriBidiCharType const *""'");
+ }
+- if (arg1) (arg1)->data = arg2;
++ arg1 = (FriBidiCharType *)(argp1);
++ res3 = SWIG_ConvertPtr(ST(1), &argp3,SWIGTYPE_p_signed_char, 0 | 0 );
++ if (!SWIG_IsOK(res3)) {
++ SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "fribidi_join_arabic" "', argument " "3"" of type '" "FriBidiLevel const *""'");
++ }
++ arg3 = (FriBidiLevel *)(argp3);
++ res4 = SWIG_ConvertPtr(ST(2), &argp4,SWIGTYPE_p_unsigned_char, 0 | 0 );
++ if (!SWIG_IsOK(res4)) {
++ SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "fribidi_join_arabic" "', argument " "4"" of type '" "FriBidiArabicProp *""'");
++ }
++ arg4 = (FriBidiArabicProp *)(argp4);
++ fribidi_join_arabic((enum FriBidiCharType const *)arg1,arg2,(signed char const *)arg3,arg4);
++ ST(argvi) = sv_newmortal();
+
+
+
+@@ -2310,65 +2545,83 @@ XS(_wrap__FriBidiList_data_set) {
+ fail:
+
+
++
++
+ SWIG_croak_null();
+ }
+ }
+
+
+-XS(_wrap__FriBidiList_data_get) {
++XS(_wrap_fribidi_get_mirror_char) {
+ {
+- struct _FriBidiList *arg1 = (struct _FriBidiList *) 0 ;
+- void *result = 0 ;
+- void *argp1 = 0 ;
+- int res1 = 0 ;
++ FriBidiChar arg1 ;
++ FriBidiChar *arg2 = (FriBidiChar *) 0 ;
++ unsigned int val1 ;
++ int ecode1 = 0 ;
++ FriBidiChar temp2 ;
++ int res2 = SWIG_TMPOBJ ;
+ int argvi = 0;
++ fribidi_boolean result;
+ dXSARGS;
+
++ arg2 = &temp2;
+ if ((items < 1) || (items > 1)) {
+- SWIG_croak("Usage: _FriBidiList_data_get(self);");
++ SWIG_croak("Usage: fribidi_get_mirror_char(ch);");
+ }
+- res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p__FriBidiList, 0 | 0 );
+- if (!SWIG_IsOK(res1)) {
+- SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "_FriBidiList_data_get" "', argument " "1"" of type '" "struct _FriBidiList *""'");
++ ecode1 = SWIG_AsVal_unsigned_SS_int SWIG_PERL_CALL_ARGS_2(ST(0), &val1);
++ if (!SWIG_IsOK(ecode1)) {
++ SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "fribidi_get_mirror_char" "', argument " "1"" of type '" "FriBidiChar""'");
++ }
++ arg1 = (FriBidiChar)(val1);
++ result = (fribidi_boolean)fribidi_get_mirror_char(arg1,arg2);
++
++ if (SWIG_IsTmpObj(res2)) {
++ if (argvi >= items) EXTEND(sp,1); ST(argvi) = SWIG_From_unsigned_SS_long SWIG_PERL_CALL_ARGS_1((*arg2)); argvi++ ;
++ } else {
++ int new_flags = SWIG_IsNewObj(res2) ? (SWIG_POINTER_OWN | 0) : 0;
++ if (argvi >= items) EXTEND(sp,1); ST(argvi) = SWIG_NewPointerObj((void*)(arg2), SWIGTYPE_p_unsigned_int, new_flags); argvi++ ;
+ }
+- arg1 = (struct _FriBidiList *)(argp1);
+- result = (void *) ((arg1)->data);
+- ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_void, 0 | 0); argvi++ ;
++
+
+ XSRETURN(argvi);
+ fail:
+
++
+ SWIG_croak_null();
+ }
+ }
+
+
+-XS(_wrap__FriBidiList_next_set) {
++XS(_wrap_fribidi_shape_mirroring) {
+ {
+- struct _FriBidiList *arg1 = (struct _FriBidiList *) 0 ;
+- FriBidiList *arg2 = (FriBidiList *) 0 ;
++ FriBidiLevel *arg1 = (FriBidiLevel *) 0 ;
++ FriBidiStrIndex arg2 ;
++ FriBidiChar *arg3 = (FriBidiChar *) 0 ;
+ void *argp1 = 0 ;
+ int res1 = 0 ;
+- void *argp2 = 0 ;
+- int res2 = 0 ;
++ FriBidiStrIndex *_global_p_len ;
++ char *buf3 = 0 ;
++ size_t size3 = 0 ;
+ int argvi = 0;
+ dXSARGS;
+
++
++ arg2 = 0;
++ _global_p_len = &arg2;
++
+ if ((items < 2) || (items > 2)) {
+- SWIG_croak("Usage: _FriBidiList_next_set(self,next);");
++ SWIG_croak("Usage: fribidi_shape_mirroring(embedding_levels,str);");
+ }
+- res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p__FriBidiList, 0 | 0 );
++ res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_signed_char, 0 | 0 );
+ if (!SWIG_IsOK(res1)) {
+- SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "_FriBidiList_next_set" "', argument " "1"" of type '" "struct _FriBidiList *""'");
+- }
+- arg1 = (struct _FriBidiList *)(argp1);
+- res2 = SWIG_ConvertPtr(ST(1), &argp2,SWIGTYPE_p__FriBidiList, SWIG_POINTER_DISOWN | 0 );
+- if (!SWIG_IsOK(res2)) {
+- SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "_FriBidiList_next_set" "', argument " "2"" of type '" "FriBidiList *""'");
++ SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "fribidi_shape_mirroring" "', argument " "1"" of type '" "FriBidiLevel const *""'");
+ }
+- arg2 = (FriBidiList *)(argp2);
+- if (arg1) (arg1)->next = arg2;
+-
++ arg1 = (FriBidiLevel *)(argp1);
++ buf3 = SvPV(ST(1), size3);
++ *_global_p_len = (FriBidiStrIndex)(size3/sizeof(FriBidiChar));
++ arg3 = (FriBidiChar *)(buf3);
++ fribidi_shape_mirroring((signed char const *)arg1,arg2,arg3);
++ ST(argvi) = sv_newmortal();
+
+
+
+@@ -2376,64 +2629,59 @@ XS(_wrap__FriBidiList_next_set) {
+ fail:
+
+
+- SWIG_croak_null();
+- }
+-}
+-
+-
+-XS(_wrap__FriBidiList_next_get) {
+- {
+- struct _FriBidiList *arg1 = (struct _FriBidiList *) 0 ;
+- FriBidiList *result = 0 ;
+- void *argp1 = 0 ;
+- int res1 = 0 ;
+- int argvi = 0;
+- dXSARGS;
+-
+- if ((items < 1) || (items > 1)) {
+- SWIG_croak("Usage: _FriBidiList_next_get(self);");
+- }
+- res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p__FriBidiList, 0 | 0 );
+- if (!SWIG_IsOK(res1)) {
+- SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "_FriBidiList_next_get" "', argument " "1"" of type '" "struct _FriBidiList *""'");
+- }
+- arg1 = (struct _FriBidiList *)(argp1);
+- result = (FriBidiList *) ((arg1)->next);
+- ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p__FriBidiList, 0 | SWIG_SHADOW); argvi++ ;
+-
+- XSRETURN(argvi);
+- fail:
+
+ SWIG_croak_null();
+ }
+ }
+
+
+-XS(_wrap__FriBidiList_prev_set) {
++XS(_wrap_fribidi_shape_arabic) {
+ {
+- struct _FriBidiList *arg1 = (struct _FriBidiList *) 0 ;
+- FriBidiList *arg2 = (FriBidiList *) 0 ;
+- void *argp1 = 0 ;
+- int res1 = 0 ;
++ FriBidiFlags arg1 ;
++ FriBidiLevel *arg2 = (FriBidiLevel *) 0 ;
++ FriBidiStrIndex arg3 ;
++ FriBidiArabicProp *arg4 = (FriBidiArabicProp *) 0 ;
++ FriBidiChar *arg5 = (FriBidiChar *) 0 ;
++ unsigned int val1 ;
++ int ecode1 = 0 ;
+ void *argp2 = 0 ;
+ int res2 = 0 ;
++ FriBidiStrIndex *_global_p_len ;
++ void *argp4 = 0 ;
++ int res4 = 0 ;
++ char *buf5 = 0 ;
++ size_t size5 = 0 ;
+ int argvi = 0;
+ dXSARGS;
+
+- if ((items < 2) || (items > 2)) {
+- SWIG_croak("Usage: _FriBidiList_prev_set(self,prev);");
+- }
+- res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p__FriBidiList, 0 | 0 );
+- if (!SWIG_IsOK(res1)) {
+- SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "_FriBidiList_prev_set" "', argument " "1"" of type '" "struct _FriBidiList *""'");
++
++ arg3 = 0;
++ _global_p_len = &arg3;
++
++ if ((items < 4) || (items > 4)) {
++ SWIG_croak("Usage: fribidi_shape_arabic(flags,embedding_levels,ar_props,str);");
+ }
+- arg1 = (struct _FriBidiList *)(argp1);
+- res2 = SWIG_ConvertPtr(ST(1), &argp2,SWIGTYPE_p__FriBidiList, SWIG_POINTER_DISOWN | 0 );
++ ecode1 = SWIG_AsVal_unsigned_SS_int SWIG_PERL_CALL_ARGS_2(ST(0), &val1);
++ if (!SWIG_IsOK(ecode1)) {
++ SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "fribidi_shape_arabic" "', argument " "1"" of type '" "FriBidiFlags""'");
++ }
++ arg1 = (FriBidiFlags)(val1);
++ res2 = SWIG_ConvertPtr(ST(1), &argp2,SWIGTYPE_p_signed_char, 0 | 0 );
+ if (!SWIG_IsOK(res2)) {
+- SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "_FriBidiList_prev_set" "', argument " "2"" of type '" "FriBidiList *""'");
++ SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "fribidi_shape_arabic" "', argument " "2"" of type '" "FriBidiLevel const *""'");
+ }
+- arg2 = (FriBidiList *)(argp2);
+- if (arg1) (arg1)->prev = arg2;
++ arg2 = (FriBidiLevel *)(argp2);
++ res4 = SWIG_ConvertPtr(ST(2), &argp4,SWIGTYPE_p_unsigned_char, 0 | 0 );
++ if (!SWIG_IsOK(res4)) {
++ SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "fribidi_shape_arabic" "', argument " "4"" of type '" "FriBidiArabicProp *""'");
++ }
++ arg4 = (FriBidiArabicProp *)(argp4);
++ buf5 = SvPV(ST(3), size5);
++ *_global_p_len = (FriBidiStrIndex)(size5/sizeof(FriBidiChar));
++ arg5 = (FriBidiChar *)(buf5);
++ fribidi_shape_arabic(arg1,(signed char const *)arg2,arg3,arg4,arg5);
++ ST(argvi) = sv_newmortal();
++
+
+
+
+@@ -2442,92 +2690,83 @@ XS(_wrap__FriBidiList_prev_set) {
+ fail:
+
+
+- SWIG_croak_null();
+- }
+-}
+-
+-
+-XS(_wrap__FriBidiList_prev_get) {
+- {
+- struct _FriBidiList *arg1 = (struct _FriBidiList *) 0 ;
+- FriBidiList *result = 0 ;
+- void *argp1 = 0 ;
+- int res1 = 0 ;
+- int argvi = 0;
+- dXSARGS;
+
+- if ((items < 1) || (items > 1)) {
+- SWIG_croak("Usage: _FriBidiList_prev_get(self);");
+- }
+- res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p__FriBidiList, 0 | 0 );
+- if (!SWIG_IsOK(res1)) {
+- SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "_FriBidiList_prev_get" "', argument " "1"" of type '" "struct _FriBidiList *""'");
+- }
+- arg1 = (struct _FriBidiList *)(argp1);
+- result = (FriBidiList *) ((arg1)->prev);
+- ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p__FriBidiList, 0 | SWIG_SHADOW); argvi++ ;
+
+- XSRETURN(argvi);
+- fail:
+
+ SWIG_croak_null();
+ }
+ }
+
+
+-XS(_wrap_new__FriBidiList) {
++XS(_wrap_fribidi_shape) {
+ {
+- struct _FriBidiList *result = 0 ;
++ FriBidiFlags arg1 ;
++ FriBidiLevel *arg2 = (FriBidiLevel *) 0 ;
++ FriBidiStrIndex arg3 ;
++ FriBidiArabicProp *arg4 = (FriBidiArabicProp *) 0 ;
++ FriBidiChar *arg5 = (FriBidiChar *) 0 ;
++ unsigned int val1 ;
++ int ecode1 = 0 ;
++ void *argp2 = 0 ;
++ int res2 = 0 ;
++ FriBidiStrIndex *_global_p_len ;
++ void *argp4 = 0 ;
++ int res4 = 0 ;
++ char *buf5 = 0 ;
++ size_t size5 = 0 ;
+ int argvi = 0;
+ dXSARGS;
+
+- if ((items < 0) || (items > 0)) {
+- SWIG_croak("Usage: new__FriBidiList();");
+- }
+- result = (struct _FriBidiList *)(struct _FriBidiList *) calloc(1, sizeof(struct _FriBidiList));
+- ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p__FriBidiList, SWIG_OWNER | SWIG_SHADOW); argvi++ ;
+- XSRETURN(argvi);
+- fail:
+- SWIG_croak_null();
+- }
+-}
+-
+-
+-XS(_wrap_delete__FriBidiList) {
+- {
+- struct _FriBidiList *arg1 = (struct _FriBidiList *) 0 ;
+- void *argp1 = 0 ;
+- int res1 = 0 ;
+- int argvi = 0;
+- dXSARGS;
+
+- if ((items < 1) || (items > 1)) {
+- SWIG_croak("Usage: delete__FriBidiList(self);");
++ arg3 = 0;
++ _global_p_len = &arg3;
++
++ if ((items < 4) || (items > 4)) {
++ SWIG_croak("Usage: fribidi_shape(flags,embedding_levels,ar_props,str);");
+ }
+- res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p__FriBidiList, SWIG_POINTER_DISOWN | 0 );
+- if (!SWIG_IsOK(res1)) {
+- SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete__FriBidiList" "', argument " "1"" of type '" "struct _FriBidiList *""'");
++ ecode1 = SWIG_AsVal_unsigned_SS_int SWIG_PERL_CALL_ARGS_2(ST(0), &val1);
++ if (!SWIG_IsOK(ecode1)) {
++ SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "fribidi_shape" "', argument " "1"" of type '" "FriBidiFlags""'");
++ }
++ arg1 = (FriBidiFlags)(val1);
++ res2 = SWIG_ConvertPtr(ST(1), &argp2,SWIGTYPE_p_signed_char, 0 | 0 );
++ if (!SWIG_IsOK(res2)) {
++ SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "fribidi_shape" "', argument " "2"" of type '" "FriBidiLevel const *""'");
+ }
+- arg1 = (struct _FriBidiList *)(argp1);
+- free((char *) arg1);
++ arg2 = (FriBidiLevel *)(argp2);
++ res4 = SWIG_ConvertPtr(ST(2), &argp4,SWIGTYPE_p_unsigned_char, 0 | 0 );
++ if (!SWIG_IsOK(res4)) {
++ SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "fribidi_shape" "', argument " "4"" of type '" "FriBidiArabicProp *""'");
++ }
++ arg4 = (FriBidiArabicProp *)(argp4);
++ buf5 = SvPV(ST(3), size5);
++ *_global_p_len = (FriBidiStrIndex)(size5/sizeof(FriBidiChar));
++ arg5 = (FriBidiChar *)(buf5);
++ fribidi_shape(arg1,(signed char const *)arg2,arg3,arg4,arg5);
++ ST(argvi) = sv_newmortal();
++
++
+
+
+
+ XSRETURN(argvi);
+ fail:
+
++
++
++
++
+ SWIG_croak_null();
+ }
+ }
+
+
+-XS(_wrap_fribidi_log2vis_get_embedding_levels) {
++XS(_wrap_fribidi_log2vis_get_embedding_levels__SWIG_1) {
+ {
+ FriBidiChar *arg1 = (FriBidiChar *) 0 ;
+ FriBidiStrIndex arg2 ;
+ FriBidiCharType *arg3 = (FriBidiCharType *) 0 ;
+ FriBidiLevel *arg4 = (FriBidiLevel *) 0 ;
+- fribidi_boolean result;
+ FriBidiCharType temp3 ;
+ short _global_wantarray ;
+ char *buf1 = 0 ;
+@@ -2538,11 +2777,12 @@ XS(_wrap_fribidi_log2vis_get_embedding_l
+ FriBidiLevel **temp4 ;
+ int argvi = 0;
+ SV * _saved[1] ;
++ fribidi_boolean result;
+ dXSARGS;
+
+ temp3 = FRIBIDI_TYPE_ON;
+ arg3 = &temp3;
+- _global_wantarray = /*@SWIG:WANTARRAY@*/(GIMME_V == G_ARRAY)
++ _global_wantarray = /*@SWIG:swig/fribidi.i,33,WANTARRAY@*/(GIMME_V == G_ARRAY)
+ /*@SWIG@*/;
+
+ arg2 = 0;
+@@ -2558,7 +2798,7 @@ XS(_wrap_fribidi_log2vis_get_embedding_l
+ *_global_p_len = (FriBidiStrIndex)(size1/sizeof(FriBidiChar));
+ arg1 = (FriBidiChar *)(buf1);
+ if (items > 1) {
+- if (!(SWIG_IsOK((res3 = SWIG_ConvertPtr(ST(1),SWIG_as_voidptrptr(&arg3),SWIGTYPE_p_int,0))))) {
++ if (!(SWIG_IsOK((res3 = SWIG_ConvertPtr(ST(1),SWIG_as_voidptrptr(&arg3),SWIGTYPE_p_FriBidiCharType,0))))) {
+ unsigned long val;
+ int ecode = SWIG_AsVal_unsigned_SS_long SWIG_PERL_CALL_ARGS_2(ST(1), &val);
+ if (!SWIG_IsOK(ecode)) {
+@@ -2577,8 +2817,8 @@ XS(_wrap_fribidi_log2vis_get_embedding_l
+
+ {
+ if (_global_wantarray) {
+- /*@SWIG:MXPUSHU@*/
+- /*@SWIG:XPUSHS@*/
++ /*@SWIG:swig/fribidi.i,48,MXPUSHU@*/
++ /*@SWIG:swig/fribidi.i,40,XPUSHS@*/
+ if (argvi >= items)
+ EXTEND(sp, 1);
+ ST(argvi) = sv_2mortal(newSVuv(*(arg3)));
+@@ -2589,14 +2829,14 @@ XS(_wrap_fribidi_log2vis_get_embedding_l
+ }
+ {
+ if ( 1 )
+- /*@SWIG:MXPUSHUA@*/
++ /*@SWIG:swig/fribidi.i,63,MXPUSHUA@*/
+ {
+ AV* tempav = newAV();
+ int i;
+ for(i=0 ; i < (*_global_p_len) ; i++)
+ av_push(tempav, newSVuv(arg4[i]));
+- /*@SWIG:MXPUSHR@*/
+- /*@SWIG:XPUSHS@*/
++ /*@SWIG:swig/fribidi.i,58,MXPUSHR@*/
++ /*@SWIG:swig/fribidi.i,40,XPUSHS@*/
+ if (argvi >= items)
+ EXTEND(sp, 1);
+ ST(argvi) = sv_2mortal(newRV_noinc((SV *)tempav));
+@@ -2625,19 +2865,72 @@ XS(_wrap_fribidi_log2vis_get_embedding_l
+ }
+
+
+-XS(_wrap_fribidi_remove_bidi_marks) {
++XS(_wrap_fribidi_log2vis_get_embedding_levels) {
++ dXSARGS;
++
++ {
++ unsigned long _index = 0;
++ SWIG_TypeRank _rank = 0;
++ if ((items >= 1) && (items <= 2)) {
++ SWIG_TypeRank _ranki = 0;
++ SWIG_TypeRank _rankm = 0;
++ SWIG_TypeRank _pi = 1;
++ int _v = 0;
++ {
++ void *vptr = 0;
++ int res = SWIG_ConvertPtr(ST(0), &vptr, SWIGTYPE_p_unsigned_int, 0);
++ _v = SWIG_CheckState(res);
++ }
++ if (!_v) goto check_1;
++ _ranki += _v*_pi;
++ _rankm += _pi;
++ _pi *= SWIG_MAXCASTRANK;
++ if (items > 1) {
++ {
++ void *ptr = 0;
++ int res = SWIG_AsVal_unsigned_SS_long SWIG_PERL_CALL_ARGS_2(ST(1), 0);
++ _v = SWIG_CheckState(res);
++ if (!_v) {
++ _v = (SWIG_IsOK((res = SWIG_ConvertPtr(ST(1),SWIG_as_voidptrptr(&ptr),SWIGTYPE_p_FriBidiCharType,0))));
++ }
++ }
++ if (!_v) goto check_1;
++ _ranki += _v*_pi;
++ _rankm += _pi;
++ _pi *= SWIG_MAXCASTRANK;
++ }
++ if (!_index || (_ranki < _rank)) {
++ _rank = _ranki; _index = 1;
++ if (_rank == _rankm) goto dispatch;
++ }
++ }
++ check_1:
++
++ dispatch:
++ switch(_index) {
++ case 1:
++ ++PL_markstack_ptr; SWIG_CALLXS(_wrap_fribidi_log2vis_get_embedding_levels__SWIG_1); return;
++ }
++ }
++
++ croak("No matching function for overloaded 'fribidi_log2vis_get_embedding_levels'");
++ XSRETURN(0);
++}
++
++
++XS(_wrap_fribidi_remove_bidi_marks__SWIG_1) {
+ {
+ FriBidiChar *arg1 = (FriBidiChar *) 0 ;
+ FriBidiStrIndex arg2 ;
+ FriBidiStrIndex *arg3 = (FriBidiStrIndex *) 0 ;
+ FriBidiStrIndex *arg4 = (FriBidiStrIndex *) 0 ;
+ FriBidiLevel *arg5 = (FriBidiLevel *) 0 ;
+- FriBidiStrIndex result;
+ char *buf1 = 0 ;
+ size_t size1 = 0 ;
+ FriBidiStrIndex *_global_p_len ;
+ int argvi = 0;
+ SV * _saved[2] ;
++ FriBidiStrIndex result;
+ dXSARGS;
+
+
+@@ -2675,8 +2968,8 @@ XS(_wrap_fribidi_remove_bidi_marks) {
+ result = (FriBidiStrIndex)fribidi_remove_bidi_marks(arg1,arg2,arg3,arg4,arg5);
+
+ {
+- /*@SWIG:MXPUSHP@*/
+- /*@SWIG:XPUSHS@*/
++ /*@SWIG:swig/fribidi.i,53,MXPUSHP@*/
++ /*@SWIG:swig/fribidi.i,40,XPUSHS@*/
+ if (argvi >= items)
+ EXTEND(sp, 1);
+ ST(argvi) = sv_2mortal(newSVpvn((const char *)(arg1),(STRLEN)( (result) * sizeof(FriBidiChar))));
+@@ -2686,14 +2979,14 @@ XS(_wrap_fribidi_remove_bidi_marks) {
+ }
+ {
+ if ( arg4 )
+- /*@SWIG:MXPUSHUA@*/
++ /*@SWIG:swig/fribidi.i,63,MXPUSHUA@*/
+ {
+ AV* tempav = newAV();
+ int i;
+ for(i=0 ; i < result ; i++)
+ av_push(tempav, newSVuv(arg4[i]));
+- /*@SWIG:MXPUSHR@*/
+- /*@SWIG:XPUSHS@*/
++ /*@SWIG:swig/fribidi.i,58,MXPUSHR@*/
++ /*@SWIG:swig/fribidi.i,40,XPUSHS@*/
+ if (argvi >= items)
+ EXTEND(sp, 1);
+ ST(argvi) = sv_2mortal(newRV_noinc((SV *)tempav));
+@@ -2724,31 +3017,53 @@ XS(_wrap_fribidi_remove_bidi_marks) {
+ }
+
+
+-XS(_wrap_fribidi_get_type) {
++XS(_wrap_fribidi_remove_bidi_marks) {
++ dXSARGS;
++
+ {
+- FriBidiChar arg1 ;
+- FriBidiCharType result;
+- unsigned int val1 ;
+- int ecode1 = 0 ;
+- int argvi = 0;
+- dXSARGS;
+-
+- if ((items < 1) || (items > 1)) {
+- SWIG_croak("Usage: fribidi_get_type(uch);");
++ unsigned long _index = 0;
++ SWIG_TypeRank _rank = 0;
++ if ((items >= 1) && (items <= 2)) {
++ SWIG_TypeRank _ranki = 0;
++ SWIG_TypeRank _rankm = 0;
++ SWIG_TypeRank _pi = 1;
++ int _v = 0;
++ {
++ void *vptr = 0;
++ int res = SWIG_ConvertPtr(ST(0), &vptr, SWIGTYPE_p_unsigned_int, 0);
++ _v = SWIG_CheckState(res);
++ }
++ if (!_v) goto check_1;
++ _ranki += _v*_pi;
++ _rankm += _pi;
++ _pi *= SWIG_MAXCASTRANK;
++ if (items > 1) {
++ {
++ void *vptr = 0;
++ int res = SWIG_ConvertPtr(ST(1), &vptr, SWIGTYPE_p_int, 0);
++ _v = SWIG_CheckState(res);
++ }
++ if (!_v) goto check_1;
++ _ranki += _v*_pi;
++ _rankm += _pi;
++ _pi *= SWIG_MAXCASTRANK;
++ }
++ if (!_index || (_ranki < _rank)) {
++ _rank = _ranki; _index = 1;
++ if (_rank == _rankm) goto dispatch;
++ }
+ }
+- ecode1 = SWIG_AsVal_unsigned_SS_int SWIG_PERL_CALL_ARGS_2(ST(0), &val1);
+- if (!SWIG_IsOK(ecode1)) {
+- SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "fribidi_get_type" "', argument " "1"" of type '" "FriBidiChar""'");
+- }
+- arg1 = (FriBidiChar)(val1);
+- result = (FriBidiCharType)fribidi_get_type(arg1);
+-
++ check_1:
+
+- XSRETURN(argvi);
+- fail:
+-
+- SWIG_croak_null();
++ dispatch:
++ switch(_index) {
++ case 1:
++ ++PL_markstack_ptr; SWIG_CALLXS(_wrap_fribidi_remove_bidi_marks__SWIG_1); return;
++ }
+ }
++
++ croak("No matching function for overloaded 'fribidi_remove_bidi_marks'");
++ XSRETURN(0);
+ }
+
+
+@@ -2781,17 +3096,17 @@ XS(_wrap_fribidi_get_types) {
+ Newx(*temp3, ((*_global_p_len) + 1), FriBidiCharType);
+ }
+ fribidi_get_types(arg1,arg2,arg3);
+-
++ ST(argvi) = sv_newmortal();
+ {
+ if ( 1 )
+- /*@SWIG:MXPUSHUA@*/
++ /*@SWIG:swig/fribidi.i,63,MXPUSHUA@*/
+ {
+ AV* tempav = newAV();
+ int i;
+ for(i=0 ; i < (*_global_p_len) ; i++)
+ av_push(tempav, newSVuv(arg3[i]));
+- /*@SWIG:MXPUSHR@*/
+- /*@SWIG:XPUSHS@*/
++ /*@SWIG:swig/fribidi.i,58,MXPUSHR@*/
++ /*@SWIG:swig/fribidi.i,40,XPUSHS@*/
+ if (argvi >= items)
+ EXTEND(sp, 1);
+ ST(argvi) = sv_2mortal(newRV_noinc((SV *)tempav));
+@@ -2818,104 +3133,10 @@ XS(_wrap_fribidi_get_types) {
+ }
+
+
+-XS(_wrap_fribidi_get_mirror_char) {
+- {
+- FriBidiChar arg1 ;
+- FriBidiChar *arg2 = (FriBidiChar *) 0 ;
+- fribidi_boolean result;
+- unsigned int val1 ;
+- int ecode1 = 0 ;
+- FriBidiChar temp2 ;
+- int res2 = SWIG_TMPOBJ ;
+- int argvi = 0;
+- dXSARGS;
+-
+- arg2 = &temp2;
+- if ((items < 1) || (items > 1)) {
+- SWIG_croak("Usage: fribidi_get_mirror_char(ch);");
+- }
+- ecode1 = SWIG_AsVal_unsigned_SS_int SWIG_PERL_CALL_ARGS_2(ST(0), &val1);
+- if (!SWIG_IsOK(ecode1)) {
+- SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "fribidi_get_mirror_char" "', argument " "1"" of type '" "FriBidiChar""'");
+- }
+- arg1 = (FriBidiChar)(val1);
+- result = (fribidi_boolean)fribidi_get_mirror_char(arg1,arg2);
+-
+- if (SWIG_IsTmpObj(res2)) {
+- if (argvi >= items) EXTEND(sp,1); ST(argvi) = SWIG_From_unsigned_SS_long SWIG_PERL_CALL_ARGS_1((*arg2)); argvi++ ;
+- } else {
+- int new_flags = SWIG_IsNewObj(res2) ? (SWIG_POINTER_OWN | 0) : 0;
+- if (argvi >= items) EXTEND(sp,1); ST(argvi) = SWIG_NewPointerObj((void*)(arg2), SWIGTYPE_p_unsigned_int, new_flags); argvi++ ;
+- }
+-
+-
+- XSRETURN(argvi);
+- fail:
+-
+-
+- SWIG_croak_null();
+- }
+-}
+-
+-
+-XS(_wrap_fribidi_set_mirroring) {
+- {
+- fribidi_boolean arg1 ;
+- int val1 ;
+- int ecode1 = 0 ;
+- int argvi = 0;
+- dXSARGS;
+-
+- if ((items < 1) || (items > 1)) {
+- SWIG_croak("Usage: fribidi_set_mirroring(mirror);");
+- }
+- ecode1 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(0), &val1);
+- if (!SWIG_IsOK(ecode1)) {
+- SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "fribidi_set_mirroring" "', argument " "1"" of type '" "fribidi_boolean""'");
+- }
+- arg1 = (fribidi_boolean)(val1);
+- fribidi_set_mirroring(arg1);
+-
+-
+- XSRETURN(argvi);
+- fail:
+-
+- SWIG_croak_null();
+- }
+-}
+-
+-
+-XS(_wrap_fribidi_set_reorder_nsm) {
+- {
+- fribidi_boolean arg1 ;
+- int val1 ;
+- int ecode1 = 0 ;
+- int argvi = 0;
+- dXSARGS;
+-
+- if ((items < 1) || (items > 1)) {
+- SWIG_croak("Usage: fribidi_set_reorder_nsm(fribidi_boolean);");
+- }
+- ecode1 = SWIG_AsVal_int SWIG_PERL_CALL_ARGS_2(ST(0), &val1);
+- if (!SWIG_IsOK(ecode1)) {
+- SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "fribidi_set_reorder_nsm" "', argument " "1"" of type '" "fribidi_boolean""'");
+- }
+- arg1 = (fribidi_boolean)(val1);
+- fribidi_set_reorder_nsm(arg1);
+-
+-
+- XSRETURN(argvi);
+- fail:
+-
+- SWIG_croak_null();
+- }
+-}
+-
+-
+ XS(_wrap_fribidi_char_set_enter_cap_rtl) {
+ {
+- fribidi_boolean result;
+ int argvi = 0;
++ fribidi_boolean result;
+ dXSARGS;
+
+ if ((items < 0) || (items > 0)) {
+@@ -2935,12 +3156,12 @@ XS(_wrap_fribidi_cap_rtl_to_unicode) {
+ char *arg1 = (char *) 0 ;
+ FriBidiStrIndex arg2 ;
+ FriBidiChar *arg3 = (FriBidiChar *) 0 ;
+- int result;
+ char *buf1 = 0 ;
+ size_t size1 = 0 ;
+ FriBidiStrIndex *_global_p_len ;
+ FriBidiChar **temp3 ;
+ int argvi = 0;
++ int result;
+ dXSARGS;
+
+
+@@ -2960,8 +3181,8 @@ XS(_wrap_fribidi_cap_rtl_to_unicode) {
+ result = (int)fribidi_cap_rtl_to_unicode(arg1,arg2,arg3);
+
+ {
+- /*@SWIG:MXPUSHP@*/
+- /*@SWIG:XPUSHS@*/
++ /*@SWIG:swig/fribidi.i,53,MXPUSHP@*/
++ /*@SWIG:swig/fribidi.i,40,XPUSHS@*/
+ if (argvi >= items)
+ EXTEND(sp, 1);
+ ST(argvi) = sv_2mortal(newSVpvn((char *)(arg3),(STRLEN)( (result) * sizeof(FriBidiChar))));
+@@ -2989,12 +3210,12 @@ XS(_wrap_fribidi_unicode_to_cap_rtl) {
+ FriBidiChar *arg1 = (FriBidiChar *) 0 ;
+ FriBidiStrIndex arg2 ;
+ char *arg3 = (char *) 0 ;
+- int result;
+ char *buf1 = 0 ;
+ size_t size1 = 0 ;
+ FriBidiStrIndex *_global_p_len ;
+ char **temp3 ;
+ int argvi = 0;
++ int result;
+ dXSARGS;
+
+
+@@ -3014,8 +3235,8 @@ XS(_wrap_fribidi_unicode_to_cap_rtl) {
+ result = (int)fribidi_unicode_to_cap_rtl(arg1,arg2,arg3);
+
+ {
+- /*@SWIG:MXPUSHP@*/
+- /*@SWIG:XPUSHS@*/
++ /*@SWIG:swig/fribidi.i,53,MXPUSHP@*/
++ /*@SWIG:swig/fribidi.i,40,XPUSHS@*/
+ if (argvi >= items)
+ EXTEND(sp, 1);
+ ST(argvi) = sv_2mortal(newSVpvn((char *)(arg3),(STRLEN)( (result) * sizeof(char))));
+@@ -3044,21 +3265,20 @@ XS(_wrap_fribidi_unicode_to_cap_rtl) {
+ /* -------- TYPE CONVERSION AND EQUIVALENCE RULES (BEGIN) -------- */
+
+ static swig_type_info _swigt__p_FriBidiCharSet = {"_p_FriBidiCharSet", "enum FriBidiCharSet *|FriBidiCharSet *", 0, 0, (void*)0, 0};
+-static swig_type_info _swigt__p_FriBidiRunType = {"_p_FriBidiRunType", "FriBidiRunType *", 0, 0, (void*)"Text::Bidi::private::FriBidiRunType", 0};
+-static swig_type_info _swigt__p__FriBidiList = {"_p__FriBidiList", "_FriBidiList *", 0, 0, (void*)"Text::Bidi::private::_FriBidiList", 0};
+-static swig_type_info _swigt__p_char = {"_p_char", "char *|FriBidiPropCharType *", 0, 0, (void*)0, 0};
+-static swig_type_info _swigt__p_int = {"_p_int", "int *|FriBidiCharType *", 0, 0, (void*)0, 0};
+-static swig_type_info _swigt__p_short = {"_p_short", "short *|fribidi_int16 *", 0, 0, (void*)0, 0};
++static swig_type_info _swigt__p_FriBidiCharType = {"_p_FriBidiCharType", "enum FriBidiCharType *|FriBidiCharType *", 0, 0, (void*)0, 0};
++static swig_type_info _swigt__p_FriBidiParType = {"_p_FriBidiParType", "enum FriBidiParType *|FriBidiParType *", 0, 0, (void*)0, 0};
++static swig_type_info _swigt__p_char = {"_p_char", "char *", 0, 0, (void*)0, 0};
++static swig_type_info _swigt__p_int = {"_p_int", "int *|FriBidiStrIndex *|fribidi_int32 *|fribidi_boolean *", 0, 0, (void*)0, 0};
++static swig_type_info _swigt__p_short = {"_p_short", "fribidi_int16 *|short *", 0, 0, (void*)0, 0};
+ static swig_type_info _swigt__p_signed_char = {"_p_signed_char", "signed char *|FriBidiLevel *", 0, 0, (void*)0, 0};
+-static swig_type_info _swigt__p_unsigned_char = {"_p_unsigned_char", "unsigned char *|fribidi_uint8 *", 0, 0, (void*)0, 0};
+-static swig_type_info _swigt__p_unsigned_int = {"_p_unsigned_int", "unsigned int *|FriBidiChar *", 0, 0, (void*)0, 0};
+-static swig_type_info _swigt__p_unsigned_short = {"_p_unsigned_short", "unsigned short *|fribidi_uint16 *", 0, 0, (void*)0, 0};
+-static swig_type_info _swigt__p_void = {"_p_void", "void *", 0, 0, (void*)0, 0};
++static swig_type_info _swigt__p_unsigned_char = {"_p_unsigned_char", "FriBidiArabicProp *|unsigned char *|FriBidiJoiningType *|fribidi_uint8 *|fribidi_int8 *", 0, 0, (void*)0, 0};
++static swig_type_info _swigt__p_unsigned_int = {"_p_unsigned_int", "FriBidiChar *|fribidi_uint32 *|unsigned int *|FriBidiFlags *", 0, 0, (void*)0, 0};
++static swig_type_info _swigt__p_unsigned_short = {"_p_unsigned_short", "fribidi_uint16 *|unsigned short *", 0, 0, (void*)0, 0};
+
+ static swig_type_info *swig_type_initial[] = {
+ &_swigt__p_FriBidiCharSet,
+- &_swigt__p_FriBidiRunType,
+- &_swigt__p__FriBidiList,
++ &_swigt__p_FriBidiCharType,
++ &_swigt__p_FriBidiParType,
+ &_swigt__p_char,
+ &_swigt__p_int,
+ &_swigt__p_short,
+@@ -3066,12 +3286,11 @@ static swig_type_info *swig_type_initial
+ &_swigt__p_unsigned_char,
+ &_swigt__p_unsigned_int,
+ &_swigt__p_unsigned_short,
+- &_swigt__p_void,
+ };
+
+ static swig_cast_info _swigc__p_FriBidiCharSet[] = { {&_swigt__p_FriBidiCharSet, 0, 0, 0},{0, 0, 0, 0}};
+-static swig_cast_info _swigc__p_FriBidiRunType[] = { {&_swigt__p_FriBidiRunType, 0, 0, 0},{0, 0, 0, 0}};
+-static swig_cast_info _swigc__p__FriBidiList[] = { {&_swigt__p__FriBidiList, 0, 0, 0},{0, 0, 0, 0}};
++static swig_cast_info _swigc__p_FriBidiCharType[] = { {&_swigt__p_FriBidiCharType, 0, 0, 0},{0, 0, 0, 0}};
++static swig_cast_info _swigc__p_FriBidiParType[] = { {&_swigt__p_FriBidiParType, 0, 0, 0},{0, 0, 0, 0}};
+ static swig_cast_info _swigc__p_char[] = { {&_swigt__p_char, 0, 0, 0},{0, 0, 0, 0}};
+ static swig_cast_info _swigc__p_int[] = { {&_swigt__p_int, 0, 0, 0},{0, 0, 0, 0}};
+ static swig_cast_info _swigc__p_short[] = { {&_swigt__p_short, 0, 0, 0},{0, 0, 0, 0}};
+@@ -3079,12 +3298,11 @@ static swig_cast_info _swigc__p_signed_c
+ static swig_cast_info _swigc__p_unsigned_char[] = { {&_swigt__p_unsigned_char, 0, 0, 0},{0, 0, 0, 0}};
+ static swig_cast_info _swigc__p_unsigned_int[] = { {&_swigt__p_unsigned_int, 0, 0, 0},{0, 0, 0, 0}};
+ static swig_cast_info _swigc__p_unsigned_short[] = { {&_swigt__p_unsigned_short, 0, 0, 0},{0, 0, 0, 0}};
+-static swig_cast_info _swigc__p_void[] = { {&_swigt__p_void, 0, 0, 0},{0, 0, 0, 0}};
+
+ static swig_cast_info *swig_cast_initial[] = {
+ _swigc__p_FriBidiCharSet,
+- _swigc__p_FriBidiRunType,
+- _swigc__p__FriBidiList,
++ _swigc__p_FriBidiCharType,
++ _swigc__p_FriBidiParType,
+ _swigc__p_char,
+ _swigc__p_int,
+ _swigc__p_short,
+@@ -3092,7 +3310,6 @@ static swig_cast_info *swig_cast_initial
+ _swigc__p_unsigned_char,
+ _swigc__p_unsigned_int,
+ _swigc__p_unsigned_short,
+- _swigc__p_void,
+ };
+
+
+@@ -3105,36 +3322,28 @@ static swig_constant_info swig_constants
+ }
+ #endif
+ static swig_variable_info swig_variables[] = {
+- { "Text::Bidi::privatec::fribidi_prop_to_type", MAGIC_CLASS swig_magic_readonly, MAGIC_CLASS _wrap_fribidi_prop_to_type_get,&SWIGTYPE_p_int },
++ { "Text::Bidi::privatec::fribidi_unicode_version", MAGIC_CLASS _wrap_fribidi_unicode_version_set, MAGIC_CLASS _wrap_fribidi_unicode_version_get,0 },
+ {0,0,0,0}
+ };
+ static swig_command_info swig_commands[] = {
+ {"Text::Bidi::privatec::log2vis", _wrap_log2vis},
+-{"Text::Bidi::privatec::fribidi_wcwidth", _wrap_fribidi_wcwidth},
+-{"Text::Bidi::privatec::fribidi_wcswidth", _wrap_fribidi_wcswidth},
+-{"Text::Bidi::privatec::fribidi_wcswidth_cjk", _wrap_fribidi_wcswidth_cjk},
+-{"Text::Bidi::privatec::fribidi_type_name", _wrap_fribidi_type_name},
+-{"Text::Bidi::privatec::FriBidiRunType_length_set", _wrap_FriBidiRunType_length_set},
+-{"Text::Bidi::privatec::FriBidiRunType_length_get", _wrap_FriBidiRunType_length_get},
+-{"Text::Bidi::privatec::FriBidiRunType_attribute_set", _wrap_FriBidiRunType_attribute_set},
+-{"Text::Bidi::privatec::FriBidiRunType_attribute_get", _wrap_FriBidiRunType_attribute_get},
+-{"Text::Bidi::privatec::new_FriBidiRunType", _wrap_new_FriBidiRunType},
+-{"Text::Bidi::privatec::delete_FriBidiRunType", _wrap_delete_FriBidiRunType},
+-{"Text::Bidi::privatec::_FriBidiList_data_set", _wrap__FriBidiList_data_set},
+-{"Text::Bidi::privatec::_FriBidiList_data_get", _wrap__FriBidiList_data_get},
+-{"Text::Bidi::privatec::_FriBidiList_next_set", _wrap__FriBidiList_next_set},
+-{"Text::Bidi::privatec::_FriBidiList_next_get", _wrap__FriBidiList_next_get},
+-{"Text::Bidi::privatec::_FriBidiList_prev_set", _wrap__FriBidiList_prev_set},
+-{"Text::Bidi::privatec::_FriBidiList_prev_get", _wrap__FriBidiList_prev_get},
+-{"Text::Bidi::privatec::new__FriBidiList", _wrap_new__FriBidiList},
+-{"Text::Bidi::privatec::delete__FriBidiList", _wrap_delete__FriBidiList},
++{"Text::Bidi::privatec::fribidi_get_bidi_type", _wrap_fribidi_get_bidi_type},
++{"Text::Bidi::privatec::fribidi_get_bidi_types", _wrap_fribidi_get_bidi_types},
++{"Text::Bidi::privatec::fribidi_get_bidi_type_name", _wrap_fribidi_get_bidi_type_name},
++{"Text::Bidi::privatec::fribidi_get_par_direction", _wrap_fribidi_get_par_direction},
++{"Text::Bidi::privatec::fribidi_get_par_embedding_levels", _wrap_fribidi_get_par_embedding_levels},
++{"Text::Bidi::privatec::fribidi_reorder_line", _wrap_fribidi_reorder_line},
++{"Text::Bidi::privatec::fribidi_get_joining_type", _wrap_fribidi_get_joining_type},
++{"Text::Bidi::privatec::fribidi_get_joining_types", _wrap_fribidi_get_joining_types},
++{"Text::Bidi::privatec::fribidi_get_joining_type_name", _wrap_fribidi_get_joining_type_name},
++{"Text::Bidi::privatec::fribidi_join_arabic", _wrap_fribidi_join_arabic},
++{"Text::Bidi::privatec::fribidi_get_mirror_char", _wrap_fribidi_get_mirror_char},
++{"Text::Bidi::privatec::fribidi_shape_mirroring", _wrap_fribidi_shape_mirroring},
++{"Text::Bidi::privatec::fribidi_shape_arabic", _wrap_fribidi_shape_arabic},
++{"Text::Bidi::privatec::fribidi_shape", _wrap_fribidi_shape},
+ {"Text::Bidi::privatec::fribidi_log2vis_get_embedding_levels", _wrap_fribidi_log2vis_get_embedding_levels},
+ {"Text::Bidi::privatec::fribidi_remove_bidi_marks", _wrap_fribidi_remove_bidi_marks},
+-{"Text::Bidi::privatec::fribidi_get_type", _wrap_fribidi_get_type},
+ {"Text::Bidi::privatec::fribidi_get_types", _wrap_fribidi_get_types},
+-{"Text::Bidi::privatec::fribidi_get_mirror_char", _wrap_fribidi_get_mirror_char},
+-{"Text::Bidi::privatec::fribidi_set_mirroring", _wrap_fribidi_set_mirroring},
+-{"Text::Bidi::privatec::fribidi_set_reorder_nsm", _wrap_fribidi_set_reorder_nsm},
+ {"Text::Bidi::privatec::fribidi_char_set_enter_cap_rtl", _wrap_fribidi_char_set_enter_cap_rtl},
+ {"Text::Bidi::privatec::fribidi_cap_rtl_to_unicode", _wrap_fribidi_cap_rtl_to_unicode},
+ {"Text::Bidi::privatec::fribidi_unicode_to_cap_rtl", _wrap_fribidi_unicode_to_cap_rtl},
+@@ -3197,7 +3406,7 @@ SWIGRUNTIME void
+ SWIG_InitializeModule(void *clientdata) {
+ size_t i;
+ swig_module_info *module_head, *iter;
+- int found;
++ int found, init;
+
+ clientdata = clientdata;
+
+@@ -3207,6 +3416,9 @@ SWIG_InitializeModule(void *clientdata)
+ swig_module.type_initial = swig_type_initial;
+ swig_module.cast_initial = swig_cast_initial;
+ swig_module.next = &swig_module;
++ init = 1;
++ } else {
++ init = 0;
+ }
+
+ /* Try and load any already created modules */
+@@ -3235,6 +3447,12 @@ SWIG_InitializeModule(void *clientdata)
+ module_head->next = &swig_module;
+ }
+
++ /* When multiple interpeters are used, a module could have already been initialized in
++ a different interpreter, but not yet have a pointer in this interpreter.
++ In this case, we do not want to continue adding types... everything should be
++ set up already */
++ if (init == 0) return;
++
+ /* Now work on filling in swig_module.types */
+ #ifdef SWIGRUNTIME_DEBUG
+ printf("SWIG_InitializeModule: size %d\n", swig_module.size);
+@@ -3388,7 +3606,7 @@ XS(SWIG_init) {
+ /* Install variables */
+ for (i = 0; swig_variables[i].name; i++) {
+ SV *sv;
+- sv = get_sv((char*) swig_variables[i].name, TRUE | 0x2);
++ sv = get_sv((char*) swig_variables[i].name, TRUE | 0x2 | GV_ADDMULTI);
+ if (swig_variables[i].type) {
+ SWIG_MakePtr(sv,(void *)1, *swig_variables[i].type,0);
+ } else {
+@@ -3400,7 +3618,7 @@ XS(SWIG_init) {
+ /* Install constant */
+ for (i = 0; swig_constants[i].type; i++) {
+ SV *sv;
+- sv = get_sv((char*)swig_constants[i].name, TRUE | 0x2);
++ sv = get_sv((char*)swig_constants[i].name, TRUE | 0x2 | GV_ADDMULTI);
+ switch(swig_constants[i].type) {
+ case SWIG_INT:
+ sv_setiv(sv, (IV) swig_constants[i].lvalue);
+@@ -3423,331 +3641,459 @@ XS(SWIG_init) {
+ SvREADONLY_on(sv);
+ }
+
+- /*@SWIG:%set_constant@*/ do {
+- SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_UNICODE_VERSION", TRUE | 0x2);
+- sv_setsv(sv, SWIG_FromCharPtr("4.1.0"));
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_BIDI_NUM_TYPES", TRUE | 0x2 | GV_ADDMULTI);
++ sv_setsv(sv, SWIG_From_int SWIG_PERL_CALL_ARGS_1((int)(19)));
+ SvREADONLY_on(sv);
+ } while(0) /*@SWIG@*/;
+- /*@SWIG:%set_constant@*/ do {
+- SV *sv = get_sv((char*) SWIG_prefix "UNI_MAX_BIDI_LEVEL", TRUE | 0x2);
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_BIDI_MAX_EXPLICIT_LEVEL", TRUE | 0x2 | GV_ADDMULTI);
+ sv_setsv(sv, SWIG_From_int SWIG_PERL_CALL_ARGS_1((int)(61)));
+ SvREADONLY_on(sv);
+ } while(0) /*@SWIG@*/;
+- /*@SWIG:%set_constant@*/ do {
+- SV *sv = get_sv((char*) SWIG_prefix "UNI_LRM", TRUE | 0x2);
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_BIDI_MAX_RESOLVED_LEVELS", TRUE | 0x2 | GV_ADDMULTI);
++ sv_setsv(sv, SWIG_From_int SWIG_PERL_CALL_ARGS_1((int)(63)));
++ SvREADONLY_on(sv);
++ } while(0) /*@SWIG@*/;
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_CHAR_LRM", TRUE | 0x2 | GV_ADDMULTI);
+ sv_setsv(sv, SWIG_From_int SWIG_PERL_CALL_ARGS_1((int)(0x200E)));
+ SvREADONLY_on(sv);
+ } while(0) /*@SWIG@*/;
+- /*@SWIG:%set_constant@*/ do {
+- SV *sv = get_sv((char*) SWIG_prefix "UNI_RLM", TRUE | 0x2);
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_CHAR_RLM", TRUE | 0x2 | GV_ADDMULTI);
+ sv_setsv(sv, SWIG_From_int SWIG_PERL_CALL_ARGS_1((int)(0x200F)));
+ SvREADONLY_on(sv);
+ } while(0) /*@SWIG@*/;
+- /*@SWIG:%set_constant@*/ do {
+- SV *sv = get_sv((char*) SWIG_prefix "UNI_LRE", TRUE | 0x2);
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_CHAR_LRE", TRUE | 0x2 | GV_ADDMULTI);
+ sv_setsv(sv, SWIG_From_int SWIG_PERL_CALL_ARGS_1((int)(0x202A)));
+ SvREADONLY_on(sv);
+ } while(0) /*@SWIG@*/;
+- /*@SWIG:%set_constant@*/ do {
+- SV *sv = get_sv((char*) SWIG_prefix "UNI_RLE", TRUE | 0x2);
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_CHAR_RLE", TRUE | 0x2 | GV_ADDMULTI);
+ sv_setsv(sv, SWIG_From_int SWIG_PERL_CALL_ARGS_1((int)(0x202B)));
+ SvREADONLY_on(sv);
+ } while(0) /*@SWIG@*/;
+- /*@SWIG:%set_constant@*/ do {
+- SV *sv = get_sv((char*) SWIG_prefix "UNI_PDF", TRUE | 0x2);
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_CHAR_PDF", TRUE | 0x2 | GV_ADDMULTI);
+ sv_setsv(sv, SWIG_From_int SWIG_PERL_CALL_ARGS_1((int)(0x202C)));
+ SvREADONLY_on(sv);
+ } while(0) /*@SWIG@*/;
+- /*@SWIG:%set_constant@*/ do {
+- SV *sv = get_sv((char*) SWIG_prefix "UNI_LRO", TRUE | 0x2);
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_CHAR_LRO", TRUE | 0x2 | GV_ADDMULTI);
+ sv_setsv(sv, SWIG_From_int SWIG_PERL_CALL_ARGS_1((int)(0x202D)));
+ SvREADONLY_on(sv);
+ } while(0) /*@SWIG@*/;
+- /*@SWIG:%set_constant@*/ do {
+- SV *sv = get_sv((char*) SWIG_prefix "UNI_RLO", TRUE | 0x2);
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_CHAR_RLO", TRUE | 0x2 | GV_ADDMULTI);
+ sv_setsv(sv, SWIG_From_int SWIG_PERL_CALL_ARGS_1((int)(0x202E)));
+ SvREADONLY_on(sv);
+ } while(0) /*@SWIG@*/;
+- /*@SWIG:%set_constant@*/ do {
+- SV *sv = get_sv((char*) SWIG_prefix "UNI_LS", TRUE | 0x2);
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_CHAR_LS", TRUE | 0x2 | GV_ADDMULTI);
+ sv_setsv(sv, SWIG_From_int SWIG_PERL_CALL_ARGS_1((int)(0x2028)));
+ SvREADONLY_on(sv);
+ } while(0) /*@SWIG@*/;
+- /*@SWIG:%set_constant@*/ do {
+- SV *sv = get_sv((char*) SWIG_prefix "UNI_PS", TRUE | 0x2);
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_CHAR_PS", TRUE | 0x2 | GV_ADDMULTI);
+ sv_setsv(sv, SWIG_From_int SWIG_PERL_CALL_ARGS_1((int)(0x2029)));
+ SvREADONLY_on(sv);
+ } while(0) /*@SWIG@*/;
+- /*@SWIG:%set_constant@*/ do {
+- SV *sv = get_sv((char*) SWIG_prefix "UNI_ZWNJ", TRUE | 0x2);
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_CHAR_ZWNJ", TRUE | 0x2 | GV_ADDMULTI);
+ sv_setsv(sv, SWIG_From_int SWIG_PERL_CALL_ARGS_1((int)(0x200C)));
+ SvREADONLY_on(sv);
+ } while(0) /*@SWIG@*/;
+- /*@SWIG:%set_constant@*/ do {
+- SV *sv = get_sv((char*) SWIG_prefix "UNI_ZWJ", TRUE | 0x2);
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_CHAR_ZWJ", TRUE | 0x2 | GV_ADDMULTI);
+ sv_setsv(sv, SWIG_From_int SWIG_PERL_CALL_ARGS_1((int)(0x200D)));
+ SvREADONLY_on(sv);
+ } while(0) /*@SWIG@*/;
+- /*@SWIG:%set_constant@*/ do {
+- SV *sv = get_sv((char*) SWIG_prefix "UNI_HEBREW_ALEF", TRUE | 0x2);
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_CHAR_HEBREW_ALEF", TRUE | 0x2 | GV_ADDMULTI);
+ sv_setsv(sv, SWIG_From_int SWIG_PERL_CALL_ARGS_1((int)(0x05D0)));
+ SvREADONLY_on(sv);
+ } while(0) /*@SWIG@*/;
+- /*@SWIG:%set_constant@*/ do {
+- SV *sv = get_sv((char*) SWIG_prefix "UNI_ARABIC_ALEF", TRUE | 0x2);
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_CHAR_ARABIC_ALEF", TRUE | 0x2 | GV_ADDMULTI);
+ sv_setsv(sv, SWIG_From_int SWIG_PERL_CALL_ARGS_1((int)(0x0627)));
+ SvREADONLY_on(sv);
+ } while(0) /*@SWIG@*/;
+- /*@SWIG:%set_constant@*/ do {
+- SV *sv = get_sv((char*) SWIG_prefix "UNI_ARABIC_ZERO", TRUE | 0x2);
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_CHAR_ARABIC_ZERO", TRUE | 0x2 | GV_ADDMULTI);
+ sv_setsv(sv, SWIG_From_int SWIG_PERL_CALL_ARGS_1((int)(0x0660)));
+ SvREADONLY_on(sv);
+ } while(0) /*@SWIG@*/;
+- /*@SWIG:%set_constant@*/ do {
+- SV *sv = get_sv((char*) SWIG_prefix "UNI_FARSI_ZERO", TRUE | 0x2);
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_CHAR_PERSIAN_ZERO", TRUE | 0x2 | GV_ADDMULTI);
+ sv_setsv(sv, SWIG_From_int SWIG_PERL_CALL_ARGS_1((int)(0x06F0)));
+ SvREADONLY_on(sv);
+ } while(0) /*@SWIG@*/;
+- SWIG_TypeClientData(SWIGTYPE_p_FriBidiRunType, (void*) "Text::Bidi::private::FriBidiRunType");
+- SWIG_TypeClientData(SWIGTYPE_p__FriBidiList, (void*) "Text::Bidi::private::_FriBidiList");
+- /*@SWIG:%set_constant@*/ do {
+- SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_MASK_RTL", TRUE | 0x2);
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_CHAR_ZWNBSP", TRUE | 0x2 | GV_ADDMULTI);
++ sv_setsv(sv, SWIG_From_int SWIG_PERL_CALL_ARGS_1((int)(0xFEFF)));
++ SvREADONLY_on(sv);
++ } while(0) /*@SWIG@*/;
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_CHAR_FILL", TRUE | 0x2 | GV_ADDMULTI);
++ sv_setsv(sv, SWIG_From_int SWIG_PERL_CALL_ARGS_1((int)(0xFEFF)));
++ SvREADONLY_on(sv);
++ } while(0) /*@SWIG@*/;
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_FLAG_SHAPE_MIRRORING", TRUE | 0x2 | GV_ADDMULTI);
++ sv_setsv(sv, SWIG_From_int SWIG_PERL_CALL_ARGS_1((int)(0x00000001)));
++ SvREADONLY_on(sv);
++ } while(0) /*@SWIG@*/;
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_FLAG_REORDER_NSM", TRUE | 0x2 | GV_ADDMULTI);
++ sv_setsv(sv, SWIG_From_int SWIG_PERL_CALL_ARGS_1((int)(0x00000002)));
++ SvREADONLY_on(sv);
++ } while(0) /*@SWIG@*/;
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_FLAG_SHAPE_ARAB_PRES", TRUE | 0x2 | GV_ADDMULTI);
++ sv_setsv(sv, SWIG_From_int SWIG_PERL_CALL_ARGS_1((int)(0x00000100)));
++ SvREADONLY_on(sv);
++ } while(0) /*@SWIG@*/;
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_FLAG_SHAPE_ARAB_LIGA", TRUE | 0x2 | GV_ADDMULTI);
++ sv_setsv(sv, SWIG_From_int SWIG_PERL_CALL_ARGS_1((int)(0x00000200)));
++ SvREADONLY_on(sv);
++ } while(0) /*@SWIG@*/;
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_FLAG_SHAPE_ARAB_CONSOLE", TRUE | 0x2 | GV_ADDMULTI);
++ sv_setsv(sv, SWIG_From_int SWIG_PERL_CALL_ARGS_1((int)(0x00000400)));
++ SvREADONLY_on(sv);
++ } while(0) /*@SWIG@*/;
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_FLAG_REMOVE_BIDI", TRUE | 0x2 | GV_ADDMULTI);
++ sv_setsv(sv, SWIG_From_int SWIG_PERL_CALL_ARGS_1((int)(0x00010000)));
++ SvREADONLY_on(sv);
++ } while(0) /*@SWIG@*/;
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_FLAG_REMOVE_JOINING", TRUE | 0x2 | GV_ADDMULTI);
++ sv_setsv(sv, SWIG_From_int SWIG_PERL_CALL_ARGS_1((int)(0x00020000)));
++ SvREADONLY_on(sv);
++ } while(0) /*@SWIG@*/;
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_FLAG_REMOVE_SPECIALS", TRUE | 0x2 | GV_ADDMULTI);
++ sv_setsv(sv, SWIG_From_int SWIG_PERL_CALL_ARGS_1((int)(0x00040000)));
++ SvREADONLY_on(sv);
++ } while(0) /*@SWIG@*/;
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_FLAGS_DEFAULT", TRUE | 0x2 | GV_ADDMULTI);
++ sv_setsv(sv, SWIG_From_int SWIG_PERL_CALL_ARGS_1((int)((0x00000001|0x00000002|0x00040000))));
++ SvREADONLY_on(sv);
++ } while(0) /*@SWIG@*/;
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_FLAGS_ARABIC", TRUE | 0x2 | GV_ADDMULTI);
++ sv_setsv(sv, SWIG_From_int SWIG_PERL_CALL_ARGS_1((int)((0x00000100|0x00000200))));
++ SvREADONLY_on(sv);
++ } while(0) /*@SWIG@*/;
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_MASK_RTL", TRUE | 0x2 | GV_ADDMULTI);
+ sv_setsv(sv, SWIG_From_long SWIG_PERL_CALL_ARGS_1((long)(0x00000001L)));
+ SvREADONLY_on(sv);
+ } while(0) /*@SWIG@*/;
+- /*@SWIG:%set_constant@*/ do {
+- SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_MASK_ARABIC", TRUE | 0x2);
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_MASK_ARABIC", TRUE | 0x2 | GV_ADDMULTI);
+ sv_setsv(sv, SWIG_From_long SWIG_PERL_CALL_ARGS_1((long)(0x00000002L)));
+ SvREADONLY_on(sv);
+ } while(0) /*@SWIG@*/;
+- /*@SWIG:%set_constant@*/ do {
+- SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_MASK_STRONG", TRUE | 0x2);
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_MASK_STRONG", TRUE | 0x2 | GV_ADDMULTI);
+ sv_setsv(sv, SWIG_From_long SWIG_PERL_CALL_ARGS_1((long)(0x00000010L)));
+ SvREADONLY_on(sv);
+ } while(0) /*@SWIG@*/;
+- /*@SWIG:%set_constant@*/ do {
+- SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_MASK_WEAK", TRUE | 0x2);
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_MASK_WEAK", TRUE | 0x2 | GV_ADDMULTI);
+ sv_setsv(sv, SWIG_From_long SWIG_PERL_CALL_ARGS_1((long)(0x00000020L)));
+ SvREADONLY_on(sv);
+ } while(0) /*@SWIG@*/;
+- /*@SWIG:%set_constant@*/ do {
+- SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_MASK_NEUTRAL", TRUE | 0x2);
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_MASK_NEUTRAL", TRUE | 0x2 | GV_ADDMULTI);
+ sv_setsv(sv, SWIG_From_long SWIG_PERL_CALL_ARGS_1((long)(0x00000040L)));
+ SvREADONLY_on(sv);
+ } while(0) /*@SWIG@*/;
+- /*@SWIG:%set_constant@*/ do {
+- SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_MASK_SENTINEL", TRUE | 0x2);
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_MASK_SENTINEL", TRUE | 0x2 | GV_ADDMULTI);
+ sv_setsv(sv, SWIG_From_long SWIG_PERL_CALL_ARGS_1((long)(0x00000080L)));
+ SvREADONLY_on(sv);
+ } while(0) /*@SWIG@*/;
+- /*@SWIG:%set_constant@*/ do {
+- SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_MASK_LETTER", TRUE | 0x2);
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_MASK_LETTER", TRUE | 0x2 | GV_ADDMULTI);
+ sv_setsv(sv, SWIG_From_long SWIG_PERL_CALL_ARGS_1((long)(0x00000100L)));
+ SvREADONLY_on(sv);
+ } while(0) /*@SWIG@*/;
+- /*@SWIG:%set_constant@*/ do {
+- SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_MASK_NUMBER", TRUE | 0x2);
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_MASK_NUMBER", TRUE | 0x2 | GV_ADDMULTI);
+ sv_setsv(sv, SWIG_From_long SWIG_PERL_CALL_ARGS_1((long)(0x00000200L)));
+ SvREADONLY_on(sv);
+ } while(0) /*@SWIG@*/;
+- /*@SWIG:%set_constant@*/ do {
+- SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_MASK_NUMSEPTER", TRUE | 0x2);
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_MASK_NUMSEPTER", TRUE | 0x2 | GV_ADDMULTI);
+ sv_setsv(sv, SWIG_From_long SWIG_PERL_CALL_ARGS_1((long)(0x00000400L)));
+ SvREADONLY_on(sv);
+ } while(0) /*@SWIG@*/;
+- /*@SWIG:%set_constant@*/ do {
+- SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_MASK_SPACE", TRUE | 0x2);
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_MASK_SPACE", TRUE | 0x2 | GV_ADDMULTI);
+ sv_setsv(sv, SWIG_From_long SWIG_PERL_CALL_ARGS_1((long)(0x00000800L)));
+ SvREADONLY_on(sv);
+ } while(0) /*@SWIG@*/;
+- /*@SWIG:%set_constant@*/ do {
+- SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_MASK_EXPLICIT", TRUE | 0x2);
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_MASK_EXPLICIT", TRUE | 0x2 | GV_ADDMULTI);
+ sv_setsv(sv, SWIG_From_long SWIG_PERL_CALL_ARGS_1((long)(0x00001000L)));
+ SvREADONLY_on(sv);
+ } while(0) /*@SWIG@*/;
+- /*@SWIG:%set_constant@*/ do {
+- SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_MASK_SEPARATOR", TRUE | 0x2);
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_MASK_SEPARATOR", TRUE | 0x2 | GV_ADDMULTI);
+ sv_setsv(sv, SWIG_From_long SWIG_PERL_CALL_ARGS_1((long)(0x00002000L)));
+ SvREADONLY_on(sv);
+ } while(0) /*@SWIG@*/;
+- /*@SWIG:%set_constant@*/ do {
+- SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_MASK_OVERRIDE", TRUE | 0x2);
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_MASK_OVERRIDE", TRUE | 0x2 | GV_ADDMULTI);
+ sv_setsv(sv, SWIG_From_long SWIG_PERL_CALL_ARGS_1((long)(0x00004000L)));
+ SvREADONLY_on(sv);
+ } while(0) /*@SWIG@*/;
+- /*@SWIG:%set_constant@*/ do {
+- SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_MASK_ES", TRUE | 0x2);
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_MASK_ES", TRUE | 0x2 | GV_ADDMULTI);
+ sv_setsv(sv, SWIG_From_long SWIG_PERL_CALL_ARGS_1((long)(0x00010000L)));
+ SvREADONLY_on(sv);
+ } while(0) /*@SWIG@*/;
+- /*@SWIG:%set_constant@*/ do {
+- SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_MASK_ET", TRUE | 0x2);
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_MASK_ET", TRUE | 0x2 | GV_ADDMULTI);
+ sv_setsv(sv, SWIG_From_long SWIG_PERL_CALL_ARGS_1((long)(0x00020000L)));
+ SvREADONLY_on(sv);
+ } while(0) /*@SWIG@*/;
+- /*@SWIG:%set_constant@*/ do {
+- SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_MASK_CS", TRUE | 0x2);
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_MASK_CS", TRUE | 0x2 | GV_ADDMULTI);
+ sv_setsv(sv, SWIG_From_long SWIG_PERL_CALL_ARGS_1((long)(0x00040000L)));
+ SvREADONLY_on(sv);
+ } while(0) /*@SWIG@*/;
+- /*@SWIG:%set_constant@*/ do {
+- SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_MASK_NSM", TRUE | 0x2);
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_MASK_NSM", TRUE | 0x2 | GV_ADDMULTI);
+ sv_setsv(sv, SWIG_From_long SWIG_PERL_CALL_ARGS_1((long)(0x00080000L)));
+ SvREADONLY_on(sv);
+ } while(0) /*@SWIG@*/;
+- /*@SWIG:%set_constant@*/ do {
+- SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_MASK_BN", TRUE | 0x2);
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_MASK_BN", TRUE | 0x2 | GV_ADDMULTI);
+ sv_setsv(sv, SWIG_From_long SWIG_PERL_CALL_ARGS_1((long)(0x00100000L)));
+ SvREADONLY_on(sv);
+ } while(0) /*@SWIG@*/;
+- /*@SWIG:%set_constant@*/ do {
+- SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_MASK_BS", TRUE | 0x2);
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_MASK_BS", TRUE | 0x2 | GV_ADDMULTI);
+ sv_setsv(sv, SWIG_From_long SWIG_PERL_CALL_ARGS_1((long)(0x00200000L)));
+ SvREADONLY_on(sv);
+ } while(0) /*@SWIG@*/;
+- /*@SWIG:%set_constant@*/ do {
+- SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_MASK_SS", TRUE | 0x2);
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_MASK_SS", TRUE | 0x2 | GV_ADDMULTI);
+ sv_setsv(sv, SWIG_From_long SWIG_PERL_CALL_ARGS_1((long)(0x00400000L)));
+ SvREADONLY_on(sv);
+ } while(0) /*@SWIG@*/;
+- /*@SWIG:%set_constant@*/ do {
+- SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_MASK_WS", TRUE | 0x2);
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_MASK_WS", TRUE | 0x2 | GV_ADDMULTI);
+ sv_setsv(sv, SWIG_From_long SWIG_PERL_CALL_ARGS_1((long)(0x00800000L)));
+ SvREADONLY_on(sv);
+ } while(0) /*@SWIG@*/;
+- /*@SWIG:%set_constant@*/ do {
+- SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_TYPE_LTR", TRUE | 0x2);
+- sv_setsv(sv, SWIG_From_long SWIG_PERL_CALL_ARGS_1((long)((0x00000010L+0x00000100L))));
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_MASK_PRIVATE", TRUE | 0x2 | GV_ADDMULTI);
++ sv_setsv(sv, SWIG_From_long SWIG_PERL_CALL_ARGS_1((long)(0x01000000L)));
++ SvREADONLY_on(sv);
++ } while(0) /*@SWIG@*/;
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_TYPE_LTR_VAL", TRUE | 0x2 | GV_ADDMULTI);
++ sv_setsv(sv, SWIG_From_long SWIG_PERL_CALL_ARGS_1((long)((0x00000010L|0x00000100L))));
+ SvREADONLY_on(sv);
+ } while(0) /*@SWIG@*/;
+- /*@SWIG:%set_constant@*/ do {
+- SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_TYPE_RTL", TRUE | 0x2);
+- sv_setsv(sv, SWIG_From_long SWIG_PERL_CALL_ARGS_1((long)((0x00000010L+0x00000100L+0x00000001L))));
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_TYPE_RTL_VAL", TRUE | 0x2 | GV_ADDMULTI);
++ sv_setsv(sv, SWIG_From_long SWIG_PERL_CALL_ARGS_1((long)((0x00000010L|0x00000100L|0x00000001L))));
+ SvREADONLY_on(sv);
+ } while(0) /*@SWIG@*/;
+- /*@SWIG:%set_constant@*/ do {
+- SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_TYPE_AL", TRUE | 0x2);
+- sv_setsv(sv, SWIG_From_long SWIG_PERL_CALL_ARGS_1((long)((0x00000010L+0x00000100L+0x00000001L+0x00000002L))));
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_TYPE_AL_VAL", TRUE | 0x2 | GV_ADDMULTI);
++ sv_setsv(sv, SWIG_From_long SWIG_PERL_CALL_ARGS_1((long)((0x00000010L|0x00000100L|0x00000001L|0x00000002L))));
+ SvREADONLY_on(sv);
+ } while(0) /*@SWIG@*/;
+- /*@SWIG:%set_constant@*/ do {
+- SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_TYPE_LRE", TRUE | 0x2);
+- sv_setsv(sv, SWIG_From_long SWIG_PERL_CALL_ARGS_1((long)((0x00000010L+0x00001000L))));
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_TYPE_LRE_VAL", TRUE | 0x2 | GV_ADDMULTI);
++ sv_setsv(sv, SWIG_From_long SWIG_PERL_CALL_ARGS_1((long)((0x00000010L|0x00001000L))));
+ SvREADONLY_on(sv);
+ } while(0) /*@SWIG@*/;
+- /*@SWIG:%set_constant@*/ do {
+- SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_TYPE_RLE", TRUE | 0x2);
+- sv_setsv(sv, SWIG_From_long SWIG_PERL_CALL_ARGS_1((long)((0x00000010L+0x00001000L+0x00000001L))));
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_TYPE_RLE_VAL", TRUE | 0x2 | GV_ADDMULTI);
++ sv_setsv(sv, SWIG_From_long SWIG_PERL_CALL_ARGS_1((long)((0x00000010L|0x00001000L|0x00000001L))));
+ SvREADONLY_on(sv);
+ } while(0) /*@SWIG@*/;
+- /*@SWIG:%set_constant@*/ do {
+- SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_TYPE_LRO", TRUE | 0x2);
+- sv_setsv(sv, SWIG_From_long SWIG_PERL_CALL_ARGS_1((long)((0x00000010L+0x00001000L+0x00004000L))));
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_TYPE_LRO_VAL", TRUE | 0x2 | GV_ADDMULTI);
++ sv_setsv(sv, SWIG_From_long SWIG_PERL_CALL_ARGS_1((long)((0x00000010L|0x00001000L|0x00004000L))));
+ SvREADONLY_on(sv);
+ } while(0) /*@SWIG@*/;
+- /*@SWIG:%set_constant@*/ do {
+- SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_TYPE_RLO", TRUE | 0x2);
+- sv_setsv(sv, SWIG_From_long SWIG_PERL_CALL_ARGS_1((long)((0x00000010L+0x00001000L+0x00000001L+0x00004000L))));
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_TYPE_RLO_VAL", TRUE | 0x2 | GV_ADDMULTI);
++ sv_setsv(sv, SWIG_From_long SWIG_PERL_CALL_ARGS_1((long)((0x00000010L|0x00001000L|0x00000001L|0x00004000L))));
+ SvREADONLY_on(sv);
+ } while(0) /*@SWIG@*/;
+- /*@SWIG:%set_constant@*/ do {
+- SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_TYPE_PDF", TRUE | 0x2);
+- sv_setsv(sv, SWIG_From_long SWIG_PERL_CALL_ARGS_1((long)((0x00000020L+0x00001000L))));
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_TYPE_PDF_VAL", TRUE | 0x2 | GV_ADDMULTI);
++ sv_setsv(sv, SWIG_From_long SWIG_PERL_CALL_ARGS_1((long)((0x00000020L|0x00001000L))));
+ SvREADONLY_on(sv);
+ } while(0) /*@SWIG@*/;
+- /*@SWIG:%set_constant@*/ do {
+- SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_TYPE_EN", TRUE | 0x2);
+- sv_setsv(sv, SWIG_From_long SWIG_PERL_CALL_ARGS_1((long)((0x00000020L+0x00000200L))));
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_TYPE_EN_VAL", TRUE | 0x2 | GV_ADDMULTI);
++ sv_setsv(sv, SWIG_From_long SWIG_PERL_CALL_ARGS_1((long)((0x00000020L|0x00000200L))));
+ SvREADONLY_on(sv);
+ } while(0) /*@SWIG@*/;
+- /*@SWIG:%set_constant@*/ do {
+- SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_TYPE_AN", TRUE | 0x2);
+- sv_setsv(sv, SWIG_From_long SWIG_PERL_CALL_ARGS_1((long)((0x00000020L+0x00000200L+0x00000002L))));
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_TYPE_AN_VAL", TRUE | 0x2 | GV_ADDMULTI);
++ sv_setsv(sv, SWIG_From_long SWIG_PERL_CALL_ARGS_1((long)((0x00000020L|0x00000200L|0x00000002L))));
+ SvREADONLY_on(sv);
+ } while(0) /*@SWIG@*/;
+- /*@SWIG:%set_constant@*/ do {
+- SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_TYPE_ES", TRUE | 0x2);
+- sv_setsv(sv, SWIG_From_long SWIG_PERL_CALL_ARGS_1((long)((0x00000020L+0x00000400L+0x00010000L))));
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_TYPE_ES_VAL", TRUE | 0x2 | GV_ADDMULTI);
++ sv_setsv(sv, SWIG_From_long SWIG_PERL_CALL_ARGS_1((long)((0x00000020L|0x00000400L|0x00010000L))));
+ SvREADONLY_on(sv);
+ } while(0) /*@SWIG@*/;
+- /*@SWIG:%set_constant@*/ do {
+- SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_TYPE_ET", TRUE | 0x2);
+- sv_setsv(sv, SWIG_From_long SWIG_PERL_CALL_ARGS_1((long)((0x00000020L+0x00000400L+0x00020000L))));
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_TYPE_ET_VAL", TRUE | 0x2 | GV_ADDMULTI);
++ sv_setsv(sv, SWIG_From_long SWIG_PERL_CALL_ARGS_1((long)((0x00000020L|0x00000400L|0x00020000L))));
+ SvREADONLY_on(sv);
+ } while(0) /*@SWIG@*/;
+- /*@SWIG:%set_constant@*/ do {
+- SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_TYPE_CS", TRUE | 0x2);
+- sv_setsv(sv, SWIG_From_long SWIG_PERL_CALL_ARGS_1((long)((0x00000020L+0x00000400L+0x00040000L))));
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_TYPE_CS_VAL", TRUE | 0x2 | GV_ADDMULTI);
++ sv_setsv(sv, SWIG_From_long SWIG_PERL_CALL_ARGS_1((long)((0x00000020L|0x00000400L|0x00040000L))));
+ SvREADONLY_on(sv);
+ } while(0) /*@SWIG@*/;
+- /*@SWIG:%set_constant@*/ do {
+- SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_TYPE_NSM", TRUE | 0x2);
+- sv_setsv(sv, SWIG_From_long SWIG_PERL_CALL_ARGS_1((long)((0x00000020L+0x00080000L))));
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_TYPE_NSM_VAL", TRUE | 0x2 | GV_ADDMULTI);
++ sv_setsv(sv, SWIG_From_long SWIG_PERL_CALL_ARGS_1((long)((0x00000020L|0x00080000L))));
+ SvREADONLY_on(sv);
+ } while(0) /*@SWIG@*/;
+- /*@SWIG:%set_constant@*/ do {
+- SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_TYPE_BN", TRUE | 0x2);
+- sv_setsv(sv, SWIG_From_long SWIG_PERL_CALL_ARGS_1((long)((0x00000020L+0x00000800L+0x00100000L))));
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_TYPE_BN_VAL", TRUE | 0x2 | GV_ADDMULTI);
++ sv_setsv(sv, SWIG_From_long SWIG_PERL_CALL_ARGS_1((long)((0x00000020L|0x00000800L|0x00100000L))));
+ SvREADONLY_on(sv);
+ } while(0) /*@SWIG@*/;
+- /*@SWIG:%set_constant@*/ do {
+- SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_TYPE_BS", TRUE | 0x2);
+- sv_setsv(sv, SWIG_From_long SWIG_PERL_CALL_ARGS_1((long)((0x00000040L+0x00000800L+0x00002000L+0x00200000L))));
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_TYPE_BS_VAL", TRUE | 0x2 | GV_ADDMULTI);
++ sv_setsv(sv, SWIG_From_long SWIG_PERL_CALL_ARGS_1((long)((0x00000040L|0x00000800L|0x00002000L|0x00200000L))));
+ SvREADONLY_on(sv);
+ } while(0) /*@SWIG@*/;
+- /*@SWIG:%set_constant@*/ do {
+- SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_TYPE_SS", TRUE | 0x2);
+- sv_setsv(sv, SWIG_From_long SWIG_PERL_CALL_ARGS_1((long)((0x00000040L+0x00000800L+0x00002000L+0x00400000L))));
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_TYPE_SS_VAL", TRUE | 0x2 | GV_ADDMULTI);
++ sv_setsv(sv, SWIG_From_long SWIG_PERL_CALL_ARGS_1((long)((0x00000040L|0x00000800L|0x00002000L|0x00400000L))));
+ SvREADONLY_on(sv);
+ } while(0) /*@SWIG@*/;
+- /*@SWIG:%set_constant@*/ do {
+- SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_TYPE_WS", TRUE | 0x2);
+- sv_setsv(sv, SWIG_From_long SWIG_PERL_CALL_ARGS_1((long)((0x00000040L+0x00000800L+0x00800000L))));
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_TYPE_WS_VAL", TRUE | 0x2 | GV_ADDMULTI);
++ sv_setsv(sv, SWIG_From_long SWIG_PERL_CALL_ARGS_1((long)((0x00000040L|0x00000800L|0x00800000L))));
+ SvREADONLY_on(sv);
+ } while(0) /*@SWIG@*/;
+- /*@SWIG:%set_constant@*/ do {
+- SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_TYPE_ON", TRUE | 0x2);
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_TYPE_ON_VAL", TRUE | 0x2 | GV_ADDMULTI);
+ sv_setsv(sv, SWIG_From_long SWIG_PERL_CALL_ARGS_1((long)((0x00000040L))));
+ SvREADONLY_on(sv);
+ } while(0) /*@SWIG@*/;
+- /*@SWIG:%set_constant@*/ do {
+- SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_TYPE_L", TRUE | 0x2);
+- sv_setsv(sv, SWIG_From_long SWIG_PERL_CALL_ARGS_1((long)(((0x00000010L+0x00000100L)))));
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_TYPE_WLTR_VAL", TRUE | 0x2 | GV_ADDMULTI);
++ sv_setsv(sv, SWIG_From_long SWIG_PERL_CALL_ARGS_1((long)((0x00000020L))));
++ SvREADONLY_on(sv);
++ } while(0) /*@SWIG@*/;
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_TYPE_WRTL_VAL", TRUE | 0x2 | GV_ADDMULTI);
++ sv_setsv(sv, SWIG_From_long SWIG_PERL_CALL_ARGS_1((long)((0x00000020L|0x00000001L))));
+ SvREADONLY_on(sv);
+ } while(0) /*@SWIG@*/;
+- /*@SWIG:%set_constant@*/ do {
+- SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_TYPE_R", TRUE | 0x2);
+- sv_setsv(sv, SWIG_From_long SWIG_PERL_CALL_ARGS_1((long)(((0x00000010L+0x00000100L+0x00000001L)))));
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_TYPE_SENTINEL", TRUE | 0x2 | GV_ADDMULTI);
++ sv_setsv(sv, SWIG_From_long SWIG_PERL_CALL_ARGS_1((long)((0x00000080L))));
+ SvREADONLY_on(sv);
+ } while(0) /*@SWIG@*/;
+- /*@SWIG:%set_constant@*/ do {
+- SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_TYPE_N", TRUE | 0x2);
+- sv_setsv(sv, SWIG_From_long SWIG_PERL_CALL_ARGS_1((long)(((0x00000040L)))));
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_TYPE_PRIVATE", TRUE | 0x2 | GV_ADDMULTI);
++ sv_setsv(sv, SWIG_From_long SWIG_PERL_CALL_ARGS_1((long)((0x01000000L))));
+ SvREADONLY_on(sv);
+ } while(0) /*@SWIG@*/;
+- /*@SWIG:%set_constant@*/ do {
+- SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_TYPE_WL", TRUE | 0x2);
+- sv_setsv(sv, SWIG_From_long SWIG_PERL_CALL_ARGS_1((long)((0x00000020L))));
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "_FRIBIDI_TYPE_SENTINEL", TRUE | 0x2 | GV_ADDMULTI);
++ sv_setsv(sv, SWIG_From_int SWIG_PERL_CALL_ARGS_1((int)(_FRIBIDI_TYPE_SENTINEL)));
+ SvREADONLY_on(sv);
+ } while(0) /*@SWIG@*/;
+- /*@SWIG:%set_constant@*/ do {
+- SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_TYPE_WR", TRUE | 0x2);
+- sv_setsv(sv, SWIG_From_long SWIG_PERL_CALL_ARGS_1((long)((0x00000020L+0x00000001L))));
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "_FRIBIDI_PAR_SENTINEL", TRUE | 0x2 | GV_ADDMULTI);
++ sv_setsv(sv, SWIG_From_int SWIG_PERL_CALL_ARGS_1((int)(_FRIBIDI_PAR_SENTINEL)));
+ SvREADONLY_on(sv);
+ } while(0) /*@SWIG@*/;
+- /*@SWIG:%set_constant@*/ do {
+- SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_TYPE_SOT", TRUE | 0x2);
+- sv_setsv(sv, SWIG_From_long SWIG_PERL_CALL_ARGS_1((long)((0x00000080L))));
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_MASK_JOINS_RIGHT", TRUE | 0x2 | GV_ADDMULTI);
++ sv_setsv(sv, SWIG_From_int SWIG_PERL_CALL_ARGS_1((int)(0x01)));
++ SvREADONLY_on(sv);
++ } while(0) /*@SWIG@*/;
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_MASK_JOINS_LEFT", TRUE | 0x2 | GV_ADDMULTI);
++ sv_setsv(sv, SWIG_From_int SWIG_PERL_CALL_ARGS_1((int)(0x02)));
++ SvREADONLY_on(sv);
++ } while(0) /*@SWIG@*/;
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_MASK_ARAB_SHAPES", TRUE | 0x2 | GV_ADDMULTI);
++ sv_setsv(sv, SWIG_From_int SWIG_PERL_CALL_ARGS_1((int)(0x04)));
++ SvREADONLY_on(sv);
++ } while(0) /*@SWIG@*/;
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_MASK_TRANSPARENT", TRUE | 0x2 | GV_ADDMULTI);
++ sv_setsv(sv, SWIG_From_int SWIG_PERL_CALL_ARGS_1((int)(0x08)));
++ SvREADONLY_on(sv);
++ } while(0) /*@SWIG@*/;
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_MASK_IGNORED", TRUE | 0x2 | GV_ADDMULTI);
++ sv_setsv(sv, SWIG_From_int SWIG_PERL_CALL_ARGS_1((int)(0x10)));
++ SvREADONLY_on(sv);
++ } while(0) /*@SWIG@*/;
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_MASK_LIGATURED", TRUE | 0x2 | GV_ADDMULTI);
++ sv_setsv(sv, SWIG_From_int SWIG_PERL_CALL_ARGS_1((int)(0x20)));
++ SvREADONLY_on(sv);
++ } while(0) /*@SWIG@*/;
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_JOINING_TYPE_U_VAL", TRUE | 0x2 | GV_ADDMULTI);
++ sv_setsv(sv, SWIG_From_int SWIG_PERL_CALL_ARGS_1((int)((0))));
++ SvREADONLY_on(sv);
++ } while(0) /*@SWIG@*/;
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_JOINING_TYPE_R_VAL", TRUE | 0x2 | GV_ADDMULTI);
++ sv_setsv(sv, SWIG_From_int SWIG_PERL_CALL_ARGS_1((int)((0x01|0x04))));
++ SvREADONLY_on(sv);
++ } while(0) /*@SWIG@*/;
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_JOINING_TYPE_D_VAL", TRUE | 0x2 | GV_ADDMULTI);
++ sv_setsv(sv, SWIG_From_int SWIG_PERL_CALL_ARGS_1((int)((0x01|0x02|0x04))));
++ SvREADONLY_on(sv);
++ } while(0) /*@SWIG@*/;
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_JOINING_TYPE_C_VAL", TRUE | 0x2 | GV_ADDMULTI);
++ sv_setsv(sv, SWIG_From_int SWIG_PERL_CALL_ARGS_1((int)((0x01|0x02))));
++ SvREADONLY_on(sv);
++ } while(0) /*@SWIG@*/;
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_JOINING_TYPE_L_VAL", TRUE | 0x2 | GV_ADDMULTI);
++ sv_setsv(sv, SWIG_From_int SWIG_PERL_CALL_ARGS_1((int)((0x02|0x04))));
++ SvREADONLY_on(sv);
++ } while(0) /*@SWIG@*/;
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_JOINING_TYPE_T_VAL", TRUE | 0x2 | GV_ADDMULTI);
++ sv_setsv(sv, SWIG_From_int SWIG_PERL_CALL_ARGS_1((int)((0x08|0x04))));
+ SvREADONLY_on(sv);
+ } while(0) /*@SWIG@*/;
+- /*@SWIG:%set_constant@*/ do {
+- SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_TYPE_EOT", TRUE | 0x2);
+- sv_setsv(sv, SWIG_From_long SWIG_PERL_CALL_ARGS_1((long)((0x00000080L+0x00000001L))));
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_JOINING_TYPE_G_VAL", TRUE | 0x2 | GV_ADDMULTI);
++ sv_setsv(sv, SWIG_From_int SWIG_PERL_CALL_ARGS_1((int)((0x10))));
+ SvREADONLY_on(sv);
+ } while(0) /*@SWIG@*/;
+- /*@SWIG:%set_constant@*/ do {
+- SV *sv = get_sv((char*) SWIG_prefix "FRIBIDI_TYPES_COUNT", TRUE | 0x2);
+- sv_setsv(sv, SWIG_From_int SWIG_PERL_CALL_ARGS_1((int)(FRIBIDI_TYPES_COUNT)));
++ /*@SWIG:/usr/local/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
++ SV *sv = get_sv((char*) SWIG_prefix "_FRIBIDI_JOINING_TYPE_JUNK", TRUE | 0x2 | GV_ADDMULTI);
++ sv_setsv(sv, SWIG_From_int SWIG_PERL_CALL_ARGS_1((int)(_FRIBIDI_JOINING_TYPE_JUNK)));
+ SvREADONLY_on(sv);
+ } while(0) /*@SWIG@*/;
+ ST(0) = &PL_sv_yes;