[HarfBuzz] harfbuzz: Branch 'master' - 4 commits
Behdad Esfahbod
behdad at kemper.freedesktop.org
Mon Nov 5 18:24:20 UTC 2018
src/hb-aat-layout.cc | 12 ++++++------
src/hb-atomic.hh | 3 +++
src/hb-common.cc | 6 +++---
src/hb-dsalgs.hh | 6 ++----
src/hb-face.cc | 2 +-
src/hb-graphite2.cc | 8 ++++----
src/hb-machinery.hh | 1 +
src/hb-null.hh | 18 ++++++------------
src/hb-ot-color.cc | 10 +++++-----
src/hb-ot-font.cc | 18 +++++++++---------
src/hb-ot-layout.cc | 2 +-
src/hb-ot-math.cc | 2 +-
src/hb-ot-name.cc | 2 +-
src/hb-ot-shape-complex-arabic.cc | 4 ++--
src/hb-ot-var.cc | 6 ++----
src/hb-shape-plan.cc | 2 +-
16 files changed, 48 insertions(+), 54 deletions(-)
New commits:
commit f6fc5574d3dae177a54b10195e0d1f368a74f768
Author: Behdad Esfahbod <behdad at behdad.org>
Date: Mon Nov 5 13:23:54 2018 -0500
Add pointer magic operators to hb_atomic_ptr_t
diff --git a/src/hb-atomic.hh b/src/hb-atomic.hh
index 697de19c..49c2809e 100644
--- a/src/hb-atomic.hh
+++ b/src/hb-atomic.hh
@@ -290,6 +290,9 @@ struct hb_atomic_ptr_t
inline T *get (void) const { return (T *) hb_atomic_ptr_impl_get ((void **) &v); }
inline bool cmpexch (const T *old, T *new_) const { return hb_atomic_ptr_impl_cmpexch ((void **) &v, (void *) old, (void *) new_); }
+ inline T * operator -> (void) const { return get (); }
+ template <typename C> inline operator C * (void) const { return get (); }
+
mutable T *v;
};
diff --git a/src/hb-common.cc b/src/hb-common.cc
index d7c1921f..37be8a34 100644
--- a/src/hb-common.cc
+++ b/src/hb-common.cc
@@ -281,7 +281,7 @@ static void
free_langs (void)
{
retry:
- hb_language_item_t *first_lang = langs.get ();
+ hb_language_item_t *first_lang = langs;
if (unlikely (!langs.cmpexch (first_lang, nullptr)))
goto retry;
@@ -298,7 +298,7 @@ static hb_language_item_t *
lang_find_or_insert (const char *key)
{
retry:
- hb_language_item_t *first_lang = langs.get ();
+ hb_language_item_t *first_lang = langs;
for (hb_language_item_t *lang = first_lang; lang; lang = lang->next)
if (*lang == key)
@@ -408,7 +408,7 @@ hb_language_get_default (void)
{
static hb_atomic_ptr_t <hb_language_t> default_language;
- hb_language_t language = default_language.get ();
+ hb_language_t language = default_language;
if (unlikely (language == HB_LANGUAGE_INVALID))
{
language = hb_language_from_string (setlocale (LC_CTYPE, nullptr), -1);
diff --git a/src/hb-face.cc b/src/hb-face.cc
index 50ab10e3..a0f8047f 100644
--- a/src/hb-face.cc
+++ b/src/hb-face.cc
@@ -263,7 +263,7 @@ hb_face_destroy (hb_face_t *face)
{
if (!hb_object_destroy (face)) return;
- for (hb_face_t::plan_node_t *node = face->shape_plans.get (); node; )
+ for (hb_face_t::plan_node_t *node = face->shape_plans; node; )
{
hb_face_t::plan_node_t *next = node->next;
hb_shape_plan_destroy (node->shape_plan);
diff --git a/src/hb-graphite2.cc b/src/hb-graphite2.cc
index 971241f9..24ee3d50 100644
--- a/src/hb-graphite2.cc
+++ b/src/hb-graphite2.cc
@@ -71,7 +71,7 @@ struct hb_graphite2_face_data_t
static const void *hb_graphite2_get_table (const void *data, unsigned int tag, size_t *len)
{
hb_graphite2_face_data_t *face_data = (hb_graphite2_face_data_t *) data;
- hb_graphite2_tablelist_t *tlist = face_data->tlist.get ();
+ hb_graphite2_tablelist_t *tlist = face_data->tlist;
hb_blob_t *blob = nullptr;
@@ -94,7 +94,7 @@ static const void *hb_graphite2_get_table (const void *data, unsigned int tag, s
p->tag = tag;
retry:
- hb_graphite2_tablelist_t *tlist = face_data->tlist.get ();
+ hb_graphite2_tablelist_t *tlist = face_data->tlist;
p->next = tlist;
if (unlikely (!face_data->tlist.cmpexch (tlist, p)))
@@ -110,7 +110,7 @@ retry:
static void hb_graphite2_release_table(const void *data, const void *table_buffer)
{
hb_graphite2_face_data_t *face_data = (hb_graphite2_face_data_t *) data;
- hb_graphite2_tablelist_t *tlist = face_data->tlist.get();
+ hb_graphite2_tablelist_t *tlist = face_data->tlist;
hb_graphite2_tablelist_t *prev = nullptr;
hb_graphite2_tablelist_t *curr = tlist;
@@ -164,7 +164,7 @@ _hb_graphite2_shaper_face_data_create (hb_face_t *face)
void
_hb_graphite2_shaper_face_data_destroy (hb_graphite2_face_data_t *data)
{
- hb_graphite2_tablelist_t *tlist = data->tlist.get ();
+ hb_graphite2_tablelist_t *tlist = data->tlist;
while (tlist)
{
diff --git a/src/hb-machinery.hh b/src/hb-machinery.hh
index 465bbb14..f58050da 100644
--- a/src/hb-machinery.hh
+++ b/src/hb-machinery.hh
@@ -795,6 +795,7 @@ struct hb_lazy_loader_t : hb_data_wrapper_t<Data, WheresData>
inline const Returned * operator -> (void) const { return get (); }
inline const Returned & operator * (void) const { return *get (); }
+ template <typename C> inline operator const C * (void) const { return get (); }
inline Data * get_data (void) const
{
diff --git a/src/hb-ot-shape-complex-arabic.cc b/src/hb-ot-shape-complex-arabic.cc
index 8e56dde3..50a52136 100644
--- a/src/hb-ot-shape-complex-arabic.cc
+++ b/src/hb-ot-shape-complex-arabic.cc
@@ -279,7 +279,7 @@ data_destroy_arabic (void *data)
{
arabic_shape_plan_t *arabic_plan = (arabic_shape_plan_t *) data;
- arabic_fallback_plan_destroy (arabic_plan->fallback_plan.get ());
+ arabic_fallback_plan_destroy (arabic_plan->fallback_plan);
free (data);
}
@@ -389,7 +389,7 @@ arabic_fallback_shape (const hb_ot_shape_plan_t *plan,
return;
retry:
- arabic_fallback_plan_t *fallback_plan = arabic_plan->fallback_plan.get ();
+ arabic_fallback_plan_t *fallback_plan = arabic_plan->fallback_plan;
if (unlikely (!fallback_plan))
{
/* This sucks. We need a font to build the fallback plan... */
diff --git a/src/hb-shape-plan.cc b/src/hb-shape-plan.cc
index 8d002f8a..f2f21019 100644
--- a/src/hb-shape-plan.cc
+++ b/src/hb-shape-plan.cc
@@ -532,7 +532,7 @@ hb_shape_plan_create_cached2 (hb_face_t *face,
retry:
- hb_face_t::plan_node_t *cached_plan_nodes = face->shape_plans.get ();
+ hb_face_t::plan_node_t *cached_plan_nodes = face->shape_plans;
/* Don't look for plan in the cache if there were variation coordinates XXX Fix me. */
if (!hb_coords_present (coords, num_coords))
commit f6e7cb51b13aabb447dc97a59602d65eb42edc4b
Author: Behdad Esfahbod <behdad at behdad.org>
Date: Mon Nov 5 13:23:07 2018 -0500
Fix const-confusion in hb_array_t as well
diff --git a/src/hb-dsalgs.hh b/src/hb-dsalgs.hh
index f2bff063..9ccd7f25 100644
--- a/src/hb-dsalgs.hh
+++ b/src/hb-dsalgs.hh
@@ -553,11 +553,9 @@ struct hb_array_t
inline unsigned int get_size (void) const { return len * sizeof (Type); }
- template <typename T> inline operator T * (void) { return arrayZ; }
- template <typename T> inline operator const T * (void) const { return arrayZ; }
+ template <typename T> inline operator T * (void) const { return arrayZ; }
- inline Type * operator & (void) { return arrayZ; }
- inline const Type * operator & (void) const { return arrayZ; }
+ inline Type * operator & (void) const { return arrayZ; }
inline hb_array_t<Type> sub_array (unsigned int start_offset, unsigned int seg_count) const
{
commit 0da22fb0ada8a54fc59739057f281a406a993212
Author: Behdad Esfahbod <behdad at behdad.org>
Date: Mon Nov 5 13:13:39 2018 -0500
[null] Tweak hb_nonnull_ptr_t some more
diff --git a/src/hb-null.hh b/src/hb-null.hh
index c91af163..25a24f05 100644
--- a/src/hb-null.hh
+++ b/src/hb-null.hh
@@ -114,20 +114,14 @@ struct hb_nonnull_ptr_t
inline hb_nonnull_ptr_t (T *v_ = nullptr) : v (v_) {}
inline T * operator = (T *v_) { return v = v_; }
- inline T * operator -> (void) { return get (); }
- inline const T * operator -> (void) const { return get (); }
- inline T & operator * (void) { return *get (); }
- inline const T & operator * (void) const { return *get (); }
- inline T ** operator & (void) { return &v; }
- inline const T ** operator & (void) const { return &v; }
- template <typename C> inline operator C * (void) { return get (); }
+ inline T * operator -> (void) const { return get (); }
+ inline T & operator * (void) const { return *get (); }
+ inline T ** operator & (void) const { return &v; }
+ /* Only auto-cast to const types. */
template <typename C> inline operator const C * (void) const { return get (); }
- inline operator char * (void) { return (char *) get (); }
inline operator const char * (void) const { return (const char *) get (); }
- inline T * get (void) { return v ? v : const_cast<T *> (&Null(T)); }
- inline const T * get (void) const { return v ? v : const_cast<T *> (&Null(T)); }
- inline T * get_raw (void) { return v; }
- inline const T * get_raw (void) const { return v; }
+ inline T * get (void) const { return v ? v : const_cast<T *> (&Null(T)); }
+ inline T * get_raw (void) const { return v; }
T *v;
};
commit 03348ce0051cfae7172ac0d09b83ed5f82fa842a
Author: Behdad Esfahbod <behdad at behdad.org>
Date: Mon Nov 5 12:59:32 2018 -0500
Minor
diff --git a/src/hb-aat-layout.cc b/src/hb-aat-layout.cc
index 80bf2d76..9e0eb92f 100644
--- a/src/hb-aat-layout.cc
+++ b/src/hb-aat-layout.cc
@@ -181,7 +181,7 @@ _get_mort (hb_face_t *face, hb_blob_t **blob = nullptr)
*blob = hb_blob_get_empty ();
return Null(AAT::mort);
}
- const AAT::mort& mort = *(hb_ot_face_data (face)->mort.get ());
+ const AAT::mort& mort = *(hb_ot_face_data (face)->mort);
if (blob)
*blob = hb_ot_face_data (face)->mort.get_blob ();
return mort;
@@ -195,7 +195,7 @@ _get_morx (hb_face_t *face, hb_blob_t **blob = nullptr)
*blob = hb_blob_get_empty ();
return Null(AAT::morx);
}
- const AAT::morx& morx = *(hb_ot_face_data (face)->morx.get ());
+ const AAT::morx& morx = *(hb_ot_face_data (face)->morx);
if (blob)
*blob = hb_ot_face_data (face)->morx.get_blob ();
return morx;
@@ -209,7 +209,7 @@ _get_kerx (hb_face_t *face, hb_blob_t **blob = nullptr)
*blob = hb_blob_get_empty ();
return Null(AAT::kerx);
}
- const AAT::kerx& kerx = *(hb_ot_face_data (face)->kerx.get ());
+ const AAT::kerx& kerx = *(hb_ot_face_data (face)->kerx);
if (blob)
*blob = hb_ot_face_data (face)->kerx.get_blob ();
return kerx;
@@ -223,7 +223,7 @@ _get_ankr (hb_face_t *face, hb_blob_t **blob = nullptr)
*blob = hb_blob_get_empty ();
return Null(AAT::ankr);
}
- const AAT::ankr& ankr = *(hb_ot_face_data (face)->ankr.get ());
+ const AAT::ankr& ankr = *(hb_ot_face_data (face)->ankr);
if (blob)
*blob = hb_ot_face_data (face)->ankr.get_blob ();
return ankr;
@@ -232,13 +232,13 @@ static inline const AAT::trak&
_get_trak (hb_face_t *face)
{
if (unlikely (!hb_ot_shaper_face_data_ensure (face))) return Null(AAT::trak);
- return *(hb_ot_face_data (face)->trak.get ());
+ return *(hb_ot_face_data (face)->trak);
}
static inline const AAT::ltag&
_get_ltag (hb_face_t *face)
{
if (unlikely (!hb_ot_shaper_face_data_ensure (face))) return Null(AAT::ltag);
- return *(hb_ot_face_data (face)->ltag.get ());
+ return *(hb_ot_face_data (face)->ltag);
}
diff --git a/src/hb-ot-color.cc b/src/hb-ot-color.cc
index b87ed56f..853f65dc 100644
--- a/src/hb-ot-color.cc
+++ b/src/hb-ot-color.cc
@@ -54,35 +54,35 @@ static inline const OT::COLR&
_get_colr (hb_face_t *face)
{
if (unlikely (!hb_ot_shaper_face_data_ensure (face))) return Null(OT::COLR);
- return *(hb_ot_face_data (face)->COLR.get ());
+ return *(hb_ot_face_data (face)->COLR);
}
static inline const OT::CBDT_accelerator_t&
_get_cbdt (hb_face_t *face)
{
if (unlikely (!hb_ot_shaper_face_data_ensure (face))) return Null(OT::CBDT_accelerator_t);
- return *(hb_ot_face_data (face)->CBDT.get ());
+ return *(hb_ot_face_data (face)->CBDT);
}
static inline const OT::CPAL&
_get_cpal (hb_face_t *face)
{
if (unlikely (!hb_ot_shaper_face_data_ensure (face))) return Null(OT::CPAL);
- return *(hb_ot_face_data (face)->CPAL.get ());
+ return *(hb_ot_face_data (face)->CPAL);
}
static inline const OT::sbix_accelerator_t&
_get_sbix (hb_face_t *face)
{
if (unlikely (!hb_ot_shaper_face_data_ensure (face))) return Null(OT::sbix_accelerator_t);
- return *(hb_ot_face_data (face)->sbix.get ());
+ return *(hb_ot_face_data (face)->sbix);
}
static inline const OT::SVG_accelerator_t&
_get_svg (hb_face_t *face)
{
if (unlikely (!hb_ot_shaper_face_data_ensure (face))) return Null(OT::SVG_accelerator_t);
- return *(hb_ot_face_data (face)->SVG.get ());
+ return *(hb_ot_face_data (face)->SVG);
}
diff --git a/src/hb-ot-font.cc b/src/hb-ot-font.cc
index 33a4388c..41bea140 100644
--- a/src/hb-ot-font.cc
+++ b/src/hb-ot-font.cc
@@ -62,7 +62,7 @@ hb_ot_get_nominal_glyph (hb_font_t *font HB_UNUSED,
void *user_data HB_UNUSED)
{
const hb_ot_face_data_t *ot_face = (const hb_ot_face_data_t *) font_data;
- return ot_face->cmap.get ()->get_nominal_glyph (unicode, glyph);
+ return ot_face->cmap->get_nominal_glyph (unicode, glyph);
}
static unsigned int
@@ -76,7 +76,7 @@ hb_ot_get_nominal_glyphs (hb_font_t *font HB_UNUSED,
void *user_data HB_UNUSED)
{
const hb_ot_face_data_t *ot_face = (const hb_ot_face_data_t *) font_data;
- const OT::cmap_accelerator_t &cmap = *ot_face->cmap.get ();
+ const OT::cmap_accelerator_t &cmap = *ot_face->cmap;
unsigned int done;
for (done = 0;
done < count && cmap.get_nominal_glyph (*first_unicode, first_glyph);
@@ -97,7 +97,7 @@ hb_ot_get_variation_glyph (hb_font_t *font HB_UNUSED,
void *user_data HB_UNUSED)
{
const hb_ot_face_data_t *ot_face = (const hb_ot_face_data_t *) font_data;
- return ot_face->cmap.get ()->get_variation_glyph (unicode, variation_selector, glyph);
+ return ot_face->cmap->get_variation_glyph (unicode, variation_selector, glyph);
}
static void
@@ -110,7 +110,7 @@ hb_ot_get_glyph_h_advances (hb_font_t* font, void* font_data,
void *user_data HB_UNUSED)
{
const hb_ot_face_data_t *ot_face = (const hb_ot_face_data_t *) font_data;
- const OT::hmtx_accelerator_t &hmtx = *ot_face->hmtx.get ();
+ const OT::hmtx_accelerator_t &hmtx = *ot_face->hmtx;
for (unsigned int i = 0; i < count; i++)
{
@@ -130,7 +130,7 @@ hb_ot_get_glyph_v_advances (hb_font_t* font, void* font_data,
void *user_data HB_UNUSED)
{
const hb_ot_face_data_t *ot_face = (const hb_ot_face_data_t *) font_data;
- const OT::vmtx_accelerator_t &vmtx = *ot_face->vmtx.get ();
+ const OT::vmtx_accelerator_t &vmtx = *ot_face->vmtx;
for (unsigned int i = 0; i < count; i++)
{
@@ -152,7 +152,7 @@ hb_ot_get_glyph_v_origin (hb_font_t *font,
*x = font->get_glyph_h_advance (glyph) / 2;
- const OT::VORG &VORG = *ot_face->VORG.get ();
+ const OT::VORG &VORG = *ot_face->VORG;
if (VORG.has_data ())
{
*y = font->em_scale_y (VORG.get_y_origin (glyph));
@@ -162,7 +162,7 @@ hb_ot_get_glyph_v_origin (hb_font_t *font,
hb_glyph_extents_t extents = {0};
if (ot_face->glyf->get_extents (glyph, &extents))
{
- const OT::vmtx_accelerator_t &vmtx = *ot_face->vmtx.get ();
+ const OT::vmtx_accelerator_t &vmtx = *ot_face->vmtx;
hb_position_t tsb = vmtx.get_side_bearing (glyph);
*y = font->em_scale_y (extents.y_bearing + tsb);
return true;
@@ -225,7 +225,7 @@ hb_ot_get_font_h_extents (hb_font_t *font,
void *user_data HB_UNUSED)
{
const hb_ot_face_data_t *ot_face = (const hb_ot_face_data_t *) font_data;
- const OT::hmtx_accelerator_t &hmtx = *ot_face->hmtx.get ();
+ const OT::hmtx_accelerator_t &hmtx = *ot_face->hmtx;
metrics->ascender = font->em_scale_y (hmtx.ascender);
metrics->descender = font->em_scale_y (hmtx.descender);
metrics->line_gap = font->em_scale_y (hmtx.line_gap);
@@ -240,7 +240,7 @@ hb_ot_get_font_v_extents (hb_font_t *font,
void *user_data HB_UNUSED)
{
const hb_ot_face_data_t *ot_face = (const hb_ot_face_data_t *) font_data;
- const OT::vmtx_accelerator_t &vmtx = *ot_face->vmtx.get ();
+ const OT::vmtx_accelerator_t &vmtx = *ot_face->vmtx;
metrics->ascender = font->em_scale_x (vmtx.ascender);
metrics->descender = font->em_scale_x (vmtx.descender);
metrics->line_gap = font->em_scale_x (vmtx.line_gap);
diff --git a/src/hb-ot-layout.cc b/src/hb-ot-layout.cc
index f1f09c76..fcdc79ee 100644
--- a/src/hb-ot-layout.cc
+++ b/src/hb-ot-layout.cc
@@ -62,7 +62,7 @@ _get_kern (hb_face_t *face, hb_blob_t **blob = nullptr)
*blob = hb_blob_get_empty ();
return Null(OT::kern);
}
- const OT::kern& kern = *(hb_ot_face_data (face)->kern.get ());
+ const OT::kern& kern = *(hb_ot_face_data (face)->kern);
if (blob)
*blob = hb_ot_face_data (face)->kern.get_blob ();
return kern;
diff --git a/src/hb-ot-math.cc b/src/hb-ot-math.cc
index 92c29480..3fb720b2 100644
--- a/src/hb-ot-math.cc
+++ b/src/hb-ot-math.cc
@@ -45,7 +45,7 @@ _get_math (hb_face_t *face)
{
if (unlikely (!hb_ot_shaper_face_data_ensure (face))) return Null(OT::MATH);
hb_ot_face_data_t * data = hb_ot_face_data (face);
- return *(data->MATH.get ());
+ return *(data->MATH);
}
/*
diff --git a/src/hb-ot-name.cc b/src/hb-ot-name.cc
index f5ac18d7..f2d1f0c2 100644
--- a/src/hb-ot-name.cc
+++ b/src/hb-ot-name.cc
@@ -46,7 +46,7 @@ static inline const OT::name_accelerator_t&
_get_name (hb_face_t *face)
{
if (unlikely (!hb_ot_shaper_face_data_ensure (face))) return Null(OT::name_accelerator_t);
- return *(hb_ot_face_data (face)->name.get ());
+ return *(hb_ot_face_data (face)->name);
}
/**
diff --git a/src/hb-ot-var.cc b/src/hb-ot-var.cc
index 64087be8..4363f85e 100644
--- a/src/hb-ot-var.cc
+++ b/src/hb-ot-var.cc
@@ -51,15 +51,13 @@ static inline const OT::fvar&
_get_fvar (hb_face_t *face)
{
if (unlikely (!hb_ot_shaper_face_data_ensure (face))) return Null(OT::fvar);
- hb_ot_face_data_t *layout = hb_ot_face_data (face);
- return *(layout->fvar.get ());
+ return *(hb_ot_face_data (face)->fvar);
}
static inline const OT::avar&
_get_avar (hb_face_t *face)
{
if (unlikely (!hb_ot_shaper_face_data_ensure (face))) return Null(OT::avar);
- hb_ot_face_data_t *layout = hb_ot_face_data (face);
- return *(layout->avar.get ());
+ return *(hb_ot_face_data (face)->avar);
}
/**
More information about the HarfBuzz
mailing list