[pango/harfbuzz-ng] [HB] Use OffsetTo<> for Coverage



commit 2cb82da2cf865cdc05e23745ea07bff773eedc0b
Author: Behdad Esfahbod <behdad behdad org>
Date:   Sun May 17 00:22:37 2009 -0400

    [HB] Use OffsetTo<> for Coverage
---
 pango/opentype/hb-ot-layout-gdef-private.h |    1 +
 pango/opentype/hb-ot-layout-gsub-private.h |   55 +++++++++++-----------------
 pango/opentype/hb-ot-layout-open-private.h |   10 +-----
 3 files changed, 23 insertions(+), 43 deletions(-)

diff --git a/pango/opentype/hb-ot-layout-gdef-private.h b/pango/opentype/hb-ot-layout-gdef-private.h
index fdff435..f5de2b8 100644
--- a/pango/opentype/hb-ot-layout-gdef-private.h
+++ b/pango/opentype/hb-ot-layout-gdef-private.h
@@ -240,6 +240,7 @@ struct GDEF {
   inline bool has_attach_list () const { return attachList != 0; }
   inline bool has_lig_caret_list () const { return ligCaretList != 0; }
 
+  private:
   Fixed		version;		/* Version of the GDEF table--initially
 					 * 0x00010000 */
   OffsetTo<ClassDef>
diff --git a/pango/opentype/hb-ot-layout-gsub-private.h b/pango/opentype/hb-ot-layout-gsub-private.h
index 7e497f1..d84b3fc 100644
--- a/pango/opentype/hb-ot-layout-gsub-private.h
+++ b/pango/opentype/hb-ot-layout-gsub-private.h
@@ -34,12 +34,6 @@
 
 #include "harfbuzz-buffer-private.h" /* XXX */
 
-#define DEFINE_GET_GLYPH_COVERAGE(name) \
-  inline unsigned int get_##name (hb_codepoint_t glyph) const { \
-    const Coverage &c = get_coverage (); \
-    return c.get_coverage (glyph); \
-  }
-
 #define SUBTABLE_SUBSTITUTE_ARGS_DEF \
 	hb_ot_layout_t *layout, \
 	hb_buffer_t    *buffer, \
@@ -58,12 +52,10 @@ struct SingleSubstFormat1 {
   friend struct SingleSubst;
 
   private:
-  DEFINE_GET_ACCESSOR (Coverage, coverage, coverage);
-  DEFINE_GET_GLYPH_COVERAGE (glyph_coverage);
 
   inline bool single_substitute (hb_codepoint_t &glyph_id) const {
 
-    unsigned int index = get_glyph_coverage (glyph_id);
+    unsigned int index = (this+coverage) (glyph_id);
     if (NOT_COVERED == index)
       return false;
 
@@ -74,7 +66,8 @@ struct SingleSubstFormat1 {
 
   private:
   USHORT	substFormat;		/* Format identifier--format = 1 */
-  Offset	coverage;		/* Offset to Coverage table--from
+  OffsetTo<Coverage>
+		coverage;		/* Offset to Coverage table--from
 					 * beginning of Substitution table */
   SHORT		deltaGlyphID;		/* Add to original GlyphID to get
 					 * substitute GlyphID */
@@ -86,12 +79,10 @@ struct SingleSubstFormat2 {
   friend struct SingleSubst;
 
   private:
-  DEFINE_GET_ACCESSOR (Coverage, coverage, coverage);
-  DEFINE_GET_GLYPH_COVERAGE (glyph_coverage);
 
   inline bool single_substitute (hb_codepoint_t &glyph_id) const {
 
-    unsigned int index = get_glyph_coverage (glyph_id);
+    unsigned int index = (this+coverage) (glyph_id);
 
     if (index >= glyphCount)
       return false;
@@ -102,7 +93,8 @@ struct SingleSubstFormat2 {
 
   private:
   USHORT	substFormat;		/* Format identifier--format = 2 */
-  Offset	coverage;		/* Offset to Coverage table--from
+  OffsetTo<Coverage>
+		coverage;		/* Offset to Coverage table--from
 					 * beginning of Substitution table */
   USHORT	glyphCount;		/* Number of GlyphIDs in the Substitute
 					 * array */
@@ -209,8 +201,6 @@ struct MultipleSubstFormat1 {
   private:
   /* Sequence tables, in Coverage Index order */
   DEFINE_OFFSET_ARRAY_TYPE (Sequence, sequence, sequenceCount);
-  DEFINE_GET_ACCESSOR (Coverage, coverage, coverage);
-  DEFINE_GET_GLYPH_COVERAGE (glyph_coverage);
 
   inline bool substitute (SUBTABLE_SUBSTITUTE_ARGS_DEF) const {
 
@@ -220,7 +210,7 @@ struct MultipleSubstFormat1 {
 
     hb_codepoint_t glyph_id = IN_CURGLYPH ();
 
-    unsigned int index = get_glyph_coverage (glyph_id);
+    unsigned int index = (this+coverage) (glyph_id);
 
     const Sequence &seq = (*this)[index];
     return seq.substitute_sequence (SUBTABLE_SUBSTITUTE_ARGS, property);
@@ -228,7 +218,8 @@ struct MultipleSubstFormat1 {
 
   private:
   USHORT	substFormat;		/* Format identifier--format = 1 */
-  Offset	coverage;		/* Offset to Coverage table--from
+  OffsetTo<Coverage>
+		coverage;		/* Offset to Coverage table--from
 					 * beginning of Substitution table */
   USHORT	sequenceCount;		/* Number of Sequence table offsets in
 					 * the Sequence array */
@@ -281,8 +272,6 @@ struct AlternateSubstFormat1 {
   private:
   /* AlternateSet tables, in Coverage Index order */
   DEFINE_OFFSET_ARRAY_TYPE (AlternateSet, alternateSet, alternateSetCount);
-  DEFINE_GET_ACCESSOR (Coverage, coverage, coverage);
-  DEFINE_GET_GLYPH_COVERAGE (glyph_coverage);
 
   inline bool substitute (SUBTABLE_SUBSTITUTE_ARGS_DEF) const {
 
@@ -292,7 +281,7 @@ struct AlternateSubstFormat1 {
 
     hb_codepoint_t glyph_id = IN_CURGLYPH ();
 
-    unsigned int index = get_glyph_coverage (glyph_id);
+    unsigned int index = (this+coverage) (glyph_id);
 
     const AlternateSet &alt_set = (*this)[index];
 
@@ -326,7 +315,8 @@ struct AlternateSubstFormat1 {
 
   private:
   USHORT	substFormat;		/* Format identifier--format = 1 */
-  Offset	coverage;		/* Offset to Coverage table--from
+  OffsetTo<Coverage>
+		coverage;		/* Offset to Coverage table--from
 					 * beginning of Substitution table */
   USHORT	alternateSetCount;	/* Number of AlternateSet tables */
   Offset	alternateSet[];		/* Array of offsets to AlternateSet
@@ -475,8 +465,6 @@ struct LigatureSubstFormat1 {
   private:
   /* LigatureSet tables, in Coverage Index order */
   DEFINE_OFFSET_ARRAY_TYPE (LigatureSet, ligatureSet, ligSetCount);
-  DEFINE_GET_ACCESSOR (Coverage, coverage, coverage);
-  DEFINE_GET_GLYPH_COVERAGE (glyph_coverage);
 
   inline bool substitute (SUBTABLE_SUBSTITUTE_ARGS_DEF) const {
 
@@ -486,7 +474,7 @@ struct LigatureSubstFormat1 {
 
     hb_codepoint_t glyph_id = IN_CURGLYPH ();
 
-    unsigned int index = get_glyph_coverage (glyph_id);
+    unsigned int index = (this+coverage) (glyph_id);
 
     bool first_is_mark = (property == HB_OT_LAYOUT_GLYPH_CLASS_MARK ||
 			  property &  LookupFlag::MarkAttachmentType);
@@ -497,7 +485,8 @@ struct LigatureSubstFormat1 {
 
   private:
   USHORT	substFormat;		/* Format identifier--format = 1 */
-  Offset	coverage;		/* Offset to Coverage table--from
+  OffsetTo<Coverage>
+		coverage;		/* Offset to Coverage table--from
 					 * beginning of Substitution table */
   USHORT	ligSetCount;		/* Number of LigatureSet tables */
   Offset	ligatureSet[];		/* Array of offsets to LigatureSet
@@ -648,8 +637,6 @@ struct ContextSubstFormat1 {
   private:
   /* SubRuleSet tables, in Coverage Index order */
   DEFINE_OFFSET_ARRAY_TYPE (SubRuleSet, subRuleSet, subRuleSetCount);
-  DEFINE_GET_ACCESSOR (Coverage, coverage, coverage);
-  DEFINE_GET_GLYPH_COVERAGE (glyph_coverage);
 
   inline bool substitute (SUBTABLE_SUBSTITUTE_ARGS_DEF) const {
 
@@ -659,7 +646,7 @@ struct ContextSubstFormat1 {
 
     hb_codepoint_t glyph_id = IN_CURGLYPH ();
 
-    unsigned int index = get_glyph_coverage (glyph_id);
+    unsigned int index = (this+coverage) (glyph_id);
 
     const SubRuleSet &rule_set = (*this)[index];
     return rule_set.substitute (SUBTABLE_SUBSTITUTE_ARGS);
@@ -667,7 +654,8 @@ struct ContextSubstFormat1 {
 
   private:
   USHORT	substFormat;		/* Format identifier--format = 1 */
-  Offset	coverage;		/* Offset to Coverage table--from
+  OffsetTo<Coverage>
+		coverage;		/* Offset to Coverage table--from
 					 * beginning of Substitution table */
   USHORT	subRuleSetCount;	/* Number of SubRuleSet tables--must
 					 * equal GlyphCount in Coverage  table */
@@ -792,8 +780,6 @@ struct ContextSubstFormat2 {
   private:
   /* SubClassSet tables, in Coverage Index order */
   DEFINE_OFFSET_ARRAY_TYPE (SubClassSet, subClassSet, subClassSetCnt);
-  DEFINE_GET_ACCESSOR (Coverage, coverage, coverage);
-  DEFINE_GET_GLYPH_COVERAGE (glyph_coverage);
 
   inline bool substitute (SUBTABLE_SUBSTITUTE_ARGS_DEF) const {
 
@@ -803,7 +789,7 @@ struct ContextSubstFormat2 {
 
     hb_codepoint_t glyph_id = IN_CURGLYPH ();
 
-    unsigned int index = get_glyph_coverage (glyph_id);
+    unsigned int index = (this+coverage) (glyph_id);
 
     const SubClassSet &class_set = (*this)[index];
     return class_set.substitute_class (SUBTABLE_SUBSTITUTE_ARGS, this+classDef);
@@ -811,7 +797,8 @@ struct ContextSubstFormat2 {
 
   private:
   USHORT	substFormat;		/* Format identifier--format = 2 */
-  Offset	coverage;		/* Offset to Coverage table--from
+  OffsetTo<Coverage>
+		coverage;		/* Offset to Coverage table--from
 					 * beginning of Substitution table */
   OffsetTo<ClassDef>
 		classDef;		/* Offset to glyph ClassDef table--from
diff --git a/pango/opentype/hb-ot-layout-open-private.h b/pango/opentype/hb-ot-layout-open-private.h
index 9ef810b..f68e59f 100644
--- a/pango/opentype/hb-ot-layout-open-private.h
+++ b/pango/opentype/hb-ot-layout-open-private.h
@@ -69,7 +69,7 @@
   inline unsigned int get_len(void) const { return num; } \
 
 /* An array type is one that contains a variable number of objects
- * as its last item.  An array object is extended with len() and size()
+ * as its last item.  An array object is extended with get_len()
  * methods, as well as overloaded [] operator. */
 #define DEFINE_ARRAY_TYPE(Type, array, num) \
   DEFINE_INDEX_OPERATOR(Type, array, num) \
@@ -237,14 +237,6 @@ struct Null <Type> { \
   }
 
 
-#define DEFINE_GET_ACCESSOR(Type, name, Name) \
-  inline const Type& get_##name (void) const { \
-    if (HB_UNLIKELY (!Name)) return Null(Type); \
-    return *(const Type*)((const char*)this + Name); \
-  }
-
-
-
 
 /*
  *



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]