[HB] Add hb_unicode_funcs_make_immutable()
This commit is contained in:
parent
af9e104028
commit
eb27ec0cef
|
@ -40,6 +40,8 @@ HB_BEGIN_DECLS
|
||||||
struct _hb_unicode_funcs_t {
|
struct _hb_unicode_funcs_t {
|
||||||
hb_reference_count_t ref_count;
|
hb_reference_count_t ref_count;
|
||||||
|
|
||||||
|
hb_bool_t immutable;
|
||||||
|
|
||||||
hb_unicode_get_general_category_func_t get_general_category;
|
hb_unicode_get_general_category_func_t get_general_category;
|
||||||
hb_unicode_get_combining_class_func_t get_combining_class;
|
hb_unicode_get_combining_class_func_t get_combining_class;
|
||||||
hb_unicode_get_mirroring_char_func_t get_mirroring_char;
|
hb_unicode_get_mirroring_char_func_t get_mirroring_char;
|
||||||
|
|
|
@ -41,6 +41,8 @@ static unsigned int hb_unicode_get_eastasian_width_nil (hb_codepoint_t unicode)
|
||||||
hb_unicode_funcs_t _hb_unicode_funcs_nil = {
|
hb_unicode_funcs_t _hb_unicode_funcs_nil = {
|
||||||
HB_REFERENCE_COUNT_INVALID, /* ref_count */
|
HB_REFERENCE_COUNT_INVALID, /* ref_count */
|
||||||
|
|
||||||
|
TRUE, /* immutable */
|
||||||
|
|
||||||
hb_unicode_get_general_category_nil,
|
hb_unicode_get_general_category_nil,
|
||||||
hb_unicode_get_combining_class_nil,
|
hb_unicode_get_combining_class_nil,
|
||||||
hb_unicode_get_mirroring_char_nil,
|
hb_unicode_get_mirroring_char_nil,
|
||||||
|
@ -92,16 +94,26 @@ hb_unicode_funcs_copy (hb_unicode_funcs_t *other_ufuncs)
|
||||||
|
|
||||||
*ufuncs = *other_ufuncs;
|
*ufuncs = *other_ufuncs;
|
||||||
HB_OBJECT_DO_INIT (ufuncs);
|
HB_OBJECT_DO_INIT (ufuncs);
|
||||||
|
ufuncs->immutable = FALSE;
|
||||||
|
|
||||||
return ufuncs;
|
return ufuncs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
hb_unicode_funcs_make_immutable (hb_unicode_funcs_t *ufuncs)
|
||||||
|
{
|
||||||
|
if (HB_OBJECT_IS_INERT (ufuncs))
|
||||||
|
return;
|
||||||
|
|
||||||
|
ufuncs->immutable = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
hb_unicode_funcs_set_mirroring_char_func (hb_unicode_funcs_t *ufuncs,
|
hb_unicode_funcs_set_mirroring_char_func (hb_unicode_funcs_t *ufuncs,
|
||||||
hb_unicode_get_mirroring_char_func_t mirroring_char_func)
|
hb_unicode_get_mirroring_char_func_t mirroring_char_func)
|
||||||
{
|
{
|
||||||
if (HB_OBJECT_IS_INERT (ufuncs))
|
if (ufuncs->immutable)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
ufuncs->get_mirroring_char = mirroring_char_func ? mirroring_char_func : hb_unicode_get_mirroring_char_nil;
|
ufuncs->get_mirroring_char = mirroring_char_func ? mirroring_char_func : hb_unicode_get_mirroring_char_nil;
|
||||||
|
@ -111,7 +123,7 @@ void
|
||||||
hb_unicode_funcs_set_general_category_func (hb_unicode_funcs_t *ufuncs,
|
hb_unicode_funcs_set_general_category_func (hb_unicode_funcs_t *ufuncs,
|
||||||
hb_unicode_get_general_category_func_t general_category_func)
|
hb_unicode_get_general_category_func_t general_category_func)
|
||||||
{
|
{
|
||||||
if (HB_OBJECT_IS_INERT (ufuncs))
|
if (ufuncs->immutable)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
ufuncs->get_general_category = general_category_func ? general_category_func : hb_unicode_get_general_category_nil;
|
ufuncs->get_general_category = general_category_func ? general_category_func : hb_unicode_get_general_category_nil;
|
||||||
|
@ -121,7 +133,7 @@ void
|
||||||
hb_unicode_funcs_set_script_func (hb_unicode_funcs_t *ufuncs,
|
hb_unicode_funcs_set_script_func (hb_unicode_funcs_t *ufuncs,
|
||||||
hb_unicode_get_script_func_t script_func)
|
hb_unicode_get_script_func_t script_func)
|
||||||
{
|
{
|
||||||
if (HB_OBJECT_IS_INERT (ufuncs))
|
if (ufuncs->immutable)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
ufuncs->get_script = script_func ? script_func : hb_unicode_get_script_nil;
|
ufuncs->get_script = script_func ? script_func : hb_unicode_get_script_nil;
|
||||||
|
@ -131,7 +143,7 @@ void
|
||||||
hb_unicode_funcs_set_combining_class_func (hb_unicode_funcs_t *ufuncs,
|
hb_unicode_funcs_set_combining_class_func (hb_unicode_funcs_t *ufuncs,
|
||||||
hb_unicode_get_combining_class_func_t combining_class_func)
|
hb_unicode_get_combining_class_func_t combining_class_func)
|
||||||
{
|
{
|
||||||
if (HB_OBJECT_IS_INERT (ufuncs))
|
if (ufuncs->immutable)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
ufuncs->get_combining_class = combining_class_func ? combining_class_func : hb_unicode_get_combining_class_nil;
|
ufuncs->get_combining_class = combining_class_func ? combining_class_func : hb_unicode_get_combining_class_nil;
|
||||||
|
@ -141,7 +153,7 @@ void
|
||||||
hb_unicode_funcs_set_eastasian_width_func (hb_unicode_funcs_t *ufuncs,
|
hb_unicode_funcs_set_eastasian_width_func (hb_unicode_funcs_t *ufuncs,
|
||||||
hb_unicode_get_eastasian_width_func_t eastasian_width_func)
|
hb_unicode_get_eastasian_width_func_t eastasian_width_func)
|
||||||
{
|
{
|
||||||
if (HB_OBJECT_IS_INERT (ufuncs))
|
if (ufuncs->immutable)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
ufuncs->get_eastasian_width = eastasian_width_func ? eastasian_width_func : hb_unicode_get_eastasian_width_nil;
|
ufuncs->get_eastasian_width = eastasian_width_func ? eastasian_width_func : hb_unicode_get_eastasian_width_nil;
|
||||||
|
|
|
@ -180,6 +180,8 @@ hb_unicode_funcs_destroy (hb_unicode_funcs_t *ufuncs);
|
||||||
hb_unicode_funcs_t *
|
hb_unicode_funcs_t *
|
||||||
hb_unicode_funcs_copy (hb_unicode_funcs_t *ufuncs);
|
hb_unicode_funcs_copy (hb_unicode_funcs_t *ufuncs);
|
||||||
|
|
||||||
|
void
|
||||||
|
hb_unicode_funcs_make_immutable (hb_unicode_funcs_t *ufuncs);
|
||||||
|
|
||||||
|
|
||||||
/* funcs */
|
/* funcs */
|
||||||
|
|
Loading…
Reference in New Issue