diff --git a/src/hb-buffer.cc b/src/hb-buffer.cc index 144a68cdbc8171a5b55567dfb0e89721b52e5829..20de022c6b1a35ceb9730a3de2e4eaff1dbeb92e 100644 --- a/src/hb-buffer.cc +++ b/src/hb-buffer.cc @@ -37,7 +37,7 @@ #define HB_DEBUG_BUFFER (HB_DEBUG+0) #endif -#define _HB_BUFFER_UNICODE_FUNCS_DEFAULT _hb_unicode_funcs_default +#define _HB_BUFFER_UNICODE_FUNCS_DEFAULT (const_cast (&_hb_unicode_funcs_default)) #define _HB_BUFFER_PROPS_DEFAULT { HB_DIRECTION_INVALID, HB_SCRIPT_INVALID, HB_LANGUAGE_INVALID } /* Here is how the buffer works internally: diff --git a/src/hb-glib.cc b/src/hb-glib.cc index 33369b2c5f3b0b5b71933ab862968b521b4bd449..60f5259082977e32f3a254296bb509de27e8c08f 100644 --- a/src/hb-glib.cc +++ b/src/hb-glib.cc @@ -337,21 +337,22 @@ hb_glib_unicode_decompose (hb_unicode_funcs_t *ufuncs HB_UNUSED, } -hb_unicode_funcs_t * -hb_glib_get_unicode_funcs (void) -{ - static const hb_unicode_funcs_t _hb_glib_unicode_funcs = { - HB_OBJECT_HEADER_STATIC, +extern HB_INTERNAL const hb_unicode_funcs_t _hb_glib_unicode_funcs; +const hb_unicode_funcs_t _hb_glib_unicode_funcs = { + HB_OBJECT_HEADER_STATIC, - NULL, /* parent */ - TRUE, /* immutable */ - { + NULL, /* parent */ + TRUE, /* immutable */ + { #define HB_UNICODE_FUNC_IMPLEMENT(name) hb_glib_unicode_##name, - HB_UNICODE_FUNCS_IMPLEMENT_CALLBACKS + HB_UNICODE_FUNCS_IMPLEMENT_CALLBACKS #undef HB_UNICODE_FUNC_IMPLEMENT - } - }; + } +}; +hb_unicode_funcs_t * +hb_glib_get_unicode_funcs (void) +{ return const_cast (&_hb_glib_unicode_funcs); } diff --git a/src/hb-icu.cc b/src/hb-icu.cc index 78cbc1a9236bb02270c084c8bc46aed00aa1cb1c..01beb4aefb64a7a0329805d4d419bbc24bc4d7fc 100644 --- a/src/hb-icu.cc +++ b/src/hb-icu.cc @@ -269,21 +269,23 @@ hb_icu_unicode_decompose (hb_unicode_funcs_t *ufuncs HB_UNUSED, return ret; } -hb_unicode_funcs_t * -hb_icu_get_unicode_funcs (void) -{ - static const hb_unicode_funcs_t _hb_icu_unicode_funcs = { - HB_OBJECT_HEADER_STATIC, - NULL, /* parent */ - TRUE, /* immutable */ - { +extern HB_INTERNAL const hb_unicode_funcs_t _hb_icu_unicode_funcs; +const hb_unicode_funcs_t _hb_icu_unicode_funcs = { + HB_OBJECT_HEADER_STATIC, + + NULL, /* parent */ + TRUE, /* immutable */ + { #define HB_UNICODE_FUNC_IMPLEMENT(name) hb_icu_unicode_##name, - HB_UNICODE_FUNCS_IMPLEMENT_CALLBACKS + HB_UNICODE_FUNCS_IMPLEMENT_CALLBACKS #undef HB_UNICODE_FUNC_IMPLEMENT - } - }; + } +}; +hb_unicode_funcs_t * +hb_icu_get_unicode_funcs (void) +{ return const_cast (&_hb_icu_unicode_funcs); } diff --git a/src/hb-unicode-private.hh b/src/hb-unicode-private.hh index 9a900f5d60d81d217ee053db7e1e3944037e40f7..7f719c4581970ae6b8ebfc744b05bf834c48671f 100644 --- a/src/hb-unicode-private.hh +++ b/src/hb-unicode-private.hh @@ -91,14 +91,14 @@ struct _hb_unicode_funcs_t { #ifdef HAVE_GLIB -extern "C" hb_unicode_funcs_t * hb_glib_get_unicode_funcs (void); -#define _hb_unicode_funcs_default hb_glib_get_unicode_funcs () +extern HB_INTERNAL const hb_unicode_funcs_t _hb_glib_unicode_funcs; +#define _hb_unicode_funcs_default _hb_glib_unicode_funcs #elif defined(HAVE_ICU) -extern "C" hb_unicode_funcs_t * hb_icu_get_unicode_funcs (void); -#define _hb_unicode_funcs_default hb_icu_get_unicode_funcs () +extern HB_INTERNAL const hb_unicode_funcs_t _hb_icu_unicode_funcs; +#define _hb_unicode_funcs_default _hb_icu_unicode_funcs #else #define HB_UNICODE_FUNCS_NIL 1 -#define _hb_unicode_funcs_default hb_unicode_funcs_get_empty () +#define _hb_unicode_funcs_default _hb_unicode_funcs_nil #endif diff --git a/src/hb-unicode.cc b/src/hb-unicode.cc index b7a5f8de0d5a8e5a49e5afaa9c38f98f7bea90e7..e96c0cfb2c9a1ff0d93a98aa87525b0b4e31f227 100644 --- a/src/hb-unicode.cc +++ b/src/hb-unicode.cc @@ -103,7 +103,7 @@ hb_unicode_decompose_nil (hb_unicode_funcs_t *ufuncs HB_UNUSED, hb_unicode_funcs_t * hb_unicode_funcs_get_default (void) { - return _hb_unicode_funcs_default; + return const_cast (&_hb_unicode_funcs_default); } hb_unicode_funcs_t * @@ -130,21 +130,23 @@ hb_unicode_funcs_create (hb_unicode_funcs_t *parent) return ufuncs; } -hb_unicode_funcs_t * -hb_unicode_funcs_get_empty (void) -{ - static const hb_unicode_funcs_t _hb_unicode_funcs_nil = { - HB_OBJECT_HEADER_STATIC, - NULL, /* parent */ - TRUE, /* immutable */ - { +extern HB_INTERNAL const hb_unicode_funcs_t _hb_unicode_funcs_nil; +const hb_unicode_funcs_t _hb_unicode_funcs_nil = { + HB_OBJECT_HEADER_STATIC, + + NULL, /* parent */ + TRUE, /* immutable */ + { #define HB_UNICODE_FUNC_IMPLEMENT(name) hb_unicode_##name##_nil, - HB_UNICODE_FUNCS_IMPLEMENT_CALLBACKS + HB_UNICODE_FUNCS_IMPLEMENT_CALLBACKS #undef HB_UNICODE_FUNC_IMPLEMENT - } - }; + } +}; +hb_unicode_funcs_t * +hb_unicode_funcs_get_empty (void) +{ return const_cast (&_hb_unicode_funcs_nil); }