[HarfBuzz] harfbuzz-ng: Branch 'master'

Behdad Esfahbod behdad at kemper.freedesktop.org
Wed Jul 11 15:01:43 PDT 2012


 src/hb-ot-layout-gpos-table.hh       |   16 ++++++----------
 src/hb-ot-layout-gsub-table.hh       |   24 ++++++++++--------------
 src/hb-ot-layout-gsubgpos-private.hh |   33 ++-------------------------------
 3 files changed, 18 insertions(+), 55 deletions(-)

New commits:
commit 6d08c7f1b3601095f9a12630045331dd0fe75380
Author: Behdad Esfahbod <behdad at behdad.org>
Date:   Wed Jul 11 18:01:27 2012 -0400

    Revert "Towards templatizing common Lookup types"
    
    This reverts commit 727135f3a9938c1ebd5b9f5015a46c7ccc8573c5.
    
    This is work-in-progress.  Didn't mean to push it out just yet.

diff --git a/src/hb-ot-layout-gpos-table.hh b/src/hb-ot-layout-gpos-table.hh
index fa22934..c8020d8 100644
--- a/src/hb-ot-layout-gpos-table.hh
+++ b/src/hb-ot-layout-gpos-table.hh
@@ -1268,7 +1268,7 @@ struct ChainContextPos : ChainContext
 };
 
 
-struct ExtensionPos : Extension<struct GPOS>
+struct ExtensionPos : Extension
 {
   friend struct PosLookupSubTable;
 
@@ -1382,10 +1382,8 @@ struct PosLookupSubTable
 
 struct PosLookup : Lookup
 {
-  typedef struct PosLookupSubTable SubTable;
-
-  inline const SubTable& get_subtable (unsigned int i) const
-  { return this+CastR<OffsetArrayOf<SubTable> > (subTable)[i]; }
+  inline const PosLookupSubTable& get_subtable (unsigned int i) const
+  { return this+CastR<OffsetArrayOf<PosLookupSubTable> > (subTable)[i]; }
 
   inline bool apply_once (hb_apply_context_t *c) const
   {
@@ -1426,7 +1424,7 @@ struct PosLookup : Lookup
   inline bool sanitize (hb_sanitize_context_t *c) {
     TRACE_SANITIZE ();
     if (unlikely (!Lookup::sanitize (c))) return TRACE_RETURN (false);
-    OffsetArrayOf<SubTable> &list = CastR<OffsetArrayOf<SubTable> > (subTable);
+    OffsetArrayOf<PosLookupSubTable> &list = CastR<OffsetArrayOf<PosLookupSubTable> > (subTable);
     return TRACE_RETURN (list.sanitize (c, this, get_type ()));
   }
 };
@@ -1439,8 +1437,6 @@ typedef OffsetListOf<PosLookup> PosLookupList;
 
 struct GPOS : GSUBGPOS
 {
-  typedef struct PosLookup Lookup;
-
   static const hb_tag_t Tag	= HB_OT_TAG_GPOS;
 
   inline const PosLookup& get_lookup (unsigned int i) const
@@ -1549,10 +1545,10 @@ inline bool ExtensionPos::apply (hb_apply_context_t *c) const
 inline bool ExtensionPos::sanitize (hb_sanitize_context_t *c)
 {
   TRACE_SANITIZE ();
-  if (unlikely (!Extension<GPOS>::sanitize (c))) return TRACE_RETURN (false);
+  if (unlikely (!Extension::sanitize (c))) return TRACE_RETURN (false);
   unsigned int offset = get_offset ();
   if (unlikely (!offset)) return TRACE_RETURN (true);
-  return TRACE_RETURN (StructAtOffset<PosLookup::SubTable> (this, offset).sanitize (c, get_type ()));
+  return TRACE_RETURN (StructAtOffset<PosLookupSubTable> (this, offset).sanitize (c, get_type ()));
 }
 
 static inline bool position_lookup (hb_apply_context_t *c, unsigned int lookup_index)
diff --git a/src/hb-ot-layout-gsub-table.hh b/src/hb-ot-layout-gsub-table.hh
index 06a8488..f5f38cc 100644
--- a/src/hb-ot-layout-gsub-table.hh
+++ b/src/hb-ot-layout-gsub-table.hh
@@ -750,7 +750,7 @@ struct ChainContextSubst : ChainContext
 };
 
 
-struct ExtensionSubst : Extension<struct GSUB>
+struct ExtensionSubst : Extension
 {
   friend struct SubstLookupSubTable;
   friend struct SubstLookup;
@@ -1037,18 +1037,16 @@ struct SubstLookupSubTable
 
 struct SubstLookup : Lookup
 {
-  typedef struct SubstLookupSubTable SubTable;
-
-  inline const SubTable& get_subtable (unsigned int i) const
-  { return this+CastR<OffsetArrayOf<SubTable> > (subTable)[i]; }
+  inline const SubstLookupSubTable& get_subtable (unsigned int i) const
+  { return this+CastR<OffsetArrayOf<SubstLookupSubTable> > (subTable)[i]; }
 
   inline static bool lookup_type_is_reverse (unsigned int lookup_type)
-  { return lookup_type == SubTable::ReverseChainSingle; }
+  { return lookup_type == SubstLookupSubTable::ReverseChainSingle; }
 
   inline bool is_reverse (void) const
   {
     unsigned int type = get_type ();
-    if (unlikely (type == SubTable::Extension))
+    if (unlikely (type == SubstLookupSubTable::Extension))
       return CastR<ExtensionSubst> (get_subtable(0)).is_reverse ();
     return lookup_type_is_reverse (type);
   }
@@ -1089,7 +1087,7 @@ struct SubstLookup : Lookup
 
     /* TODO: For the most common case this can move out of the main
      * loop, but it's not a big deal for now. */
-    if (unlikely (lookup_type == SubTable::Extension))
+    if (unlikely (lookup_type == SubstLookupSubTable::Extension))
     {
       /* The spec says all subtables should have the same type.
        * This is specially important if one has a reverse type!
@@ -1157,7 +1155,7 @@ struct SubstLookup : Lookup
   inline bool sanitize (hb_sanitize_context_t *c) {
     TRACE_SANITIZE ();
     if (unlikely (!Lookup::sanitize (c))) return TRACE_RETURN (false);
-    OffsetArrayOf<SubTable> &list = CastR<OffsetArrayOf<SubTable> > (subTable);
+    OffsetArrayOf<SubstLookupSubTable> &list = CastR<OffsetArrayOf<SubstLookupSubTable> > (subTable);
     return TRACE_RETURN (list.sanitize (c, this, get_type ()));
   }
 };
@@ -1170,8 +1168,6 @@ typedef OffsetListOf<SubstLookup> SubstLookupList;
 
 struct GSUB : GSUBGPOS
 {
-  typedef struct SubstLookup Lookup;
-
   static const hb_tag_t Tag	= HB_OT_TAG_GSUB;
 
   inline const SubstLookup& get_lookup (unsigned int i) const
@@ -1242,16 +1238,16 @@ inline bool ExtensionSubst::apply (hb_apply_context_t *c) const
 inline bool ExtensionSubst::sanitize (hb_sanitize_context_t *c)
 {
   TRACE_SANITIZE ();
-  if (unlikely (!Extension<GSUB>::sanitize (c))) return TRACE_RETURN (false);
+  if (unlikely (!Extension::sanitize (c))) return TRACE_RETURN (false);
   unsigned int offset = get_offset ();
   if (unlikely (!offset)) return TRACE_RETURN (true);
-  return TRACE_RETURN (StructAtOffset<GSUB::Lookup::SubTable> (this, offset).sanitize (c, get_type ()));
+  return TRACE_RETURN (StructAtOffset<SubstLookupSubTable> (this, offset).sanitize (c, get_type ()));
 }
 
 inline bool ExtensionSubst::is_reverse (void) const
 {
   unsigned int type = get_type ();
-  if (unlikely (type == SubstLookup::SubTable::Extension))
+  if (unlikely (type == SubstLookupSubTable::Extension))
     return CastR<ExtensionSubst> (get_subtable()).is_reverse ();
   return SubstLookup::lookup_type_is_reverse (type);
 }
diff --git a/src/hb-ot-layout-gsubgpos-private.hh b/src/hb-ot-layout-gsubgpos-private.hh
index 0e9d08a..98d4e0a 100644
--- a/src/hb-ot-layout-gsubgpos-private.hh
+++ b/src/hb-ot-layout-gsubgpos-private.hh
@@ -298,27 +298,6 @@ static inline bool intersects_array (hb_closure_context_t *c,
 }
 
 
-struct match_glyph_t {
-  inline bool operator() (hb_codepoint_t glyph_id, const USHORT &value, const void *data)
-  {
-    return glyph_id == value;
-  }
-};
-struct match_class_t {
-  inline bool operator() (hb_codepoint_t glyph_id, const USHORT &value, const void *data)
-  {
-    const ClassDef &class_def = *reinterpret_cast<const ClassDef *>(data);
-    return class_def.get_class (glyph_id) == value;
-  }
-};
-struct match_coverage_t {
-  inline bool operator() (hb_codepoint_t glyph_id, const USHORT &value, const void *data)
-  {
-    const OffsetTo<Coverage> &coverage = (const OffsetTo<Coverage>&)value;
-    return (data+coverage).get_coverage (glyph_id) != NOT_COVERED;
-  }
-};
-
 static inline bool match_glyph (hb_codepoint_t glyph_id, const USHORT &value, const void *data HB_UNUSED)
 {
   return glyph_id == value;
@@ -335,7 +314,6 @@ static inline bool match_coverage (hb_codepoint_t glyph_id, const USHORT &value,
 }
 
 
-template <typename match_func_t>
 static inline bool match_input (hb_apply_context_t *c,
 				unsigned int count, /* Including the first glyph (not matched) */
 				const USHORT input[], /* Array of input values--start with second glyph */
@@ -362,7 +340,6 @@ static inline bool match_input (hb_apply_context_t *c,
   return true;
 }
 
-template <typename match_func_t>
 static inline bool match_backtrack (hb_apply_context_t *c,
 				    unsigned int count,
 				    const USHORT backtrack[],
@@ -385,7 +362,6 @@ static inline bool match_backtrack (hb_apply_context_t *c,
   return true;
 }
 
-template <typename match_func_t>
 static inline bool match_lookahead (hb_apply_context_t *c,
 				    unsigned int count,
 				    const USHORT lookahead[],
@@ -1286,12 +1262,9 @@ struct ChainContext
 };
 
 
-template <typename Table> struct Extension;
-
-template <typename Table>
 struct ExtensionFormat1
 {
-  friend struct Extension<Table>;
+  friend struct Extension;
 
   protected:
   inline unsigned int get_type (void) const { return extensionLookupType; }
@@ -1313,7 +1286,6 @@ struct ExtensionFormat1
   DEFINE_SIZE_STATIC (8);
 };
 
-template <typename Table>
 struct Extension
 {
   inline unsigned int get_type (void) const
@@ -1343,8 +1315,7 @@ struct Extension
   private:
   union {
   USHORT		format;		/* Format identifier */
-  ExtensionFormat1<Table>
-			format1;
+  ExtensionFormat1	format1;
   } u;
 };
 



More information about the HarfBuzz mailing list