Revert "Imported Upstream version 1.2.7"
[platform/upstream/harfbuzz.git] / src / hb-ot-shape-complex-indic-private.hh
index 326b364..d8dfc65 100644 (file)
@@ -109,31 +109,27 @@ enum indic_syllabic_category_t {
 
   INDIC_SYLLABIC_CATEGORY_AVAGRAHA                     = OT_Symbol,
   INDIC_SYLLABIC_CATEGORY_BINDU                                = OT_SM,
-  INDIC_SYLLABIC_CATEGORY_BRAHMI_JOINING_NUMBER                = OT_PLACEHOLDER, /* Don't care. */
+  INDIC_SYLLABIC_CATEGORY_BRAHMI_JOINING_NUMBER                = OT_PLACEHOLDER, /* TODO */
   INDIC_SYLLABIC_CATEGORY_CANTILLATION_MARK            = OT_A,
   INDIC_SYLLABIC_CATEGORY_CONSONANT                    = OT_C,
   INDIC_SYLLABIC_CATEGORY_CONSONANT_DEAD               = OT_C,
   INDIC_SYLLABIC_CATEGORY_CONSONANT_FINAL              = OT_CM,
   INDIC_SYLLABIC_CATEGORY_CONSONANT_HEAD_LETTER                = OT_C,
-  INDIC_SYLLABIC_CATEGORY_CONSONANT_KILLER             = OT_M, /* U+17CD only. */
   INDIC_SYLLABIC_CATEGORY_CONSONANT_MEDIAL             = OT_CM,
   INDIC_SYLLABIC_CATEGORY_CONSONANT_PLACEHOLDER                = OT_PLACEHOLDER,
   INDIC_SYLLABIC_CATEGORY_CONSONANT_PRECEDING_REPHA    = OT_Repha,
-  INDIC_SYLLABIC_CATEGORY_CONSONANT_PREFIXED           = OT_X, /* Don't care. */
   INDIC_SYLLABIC_CATEGORY_CONSONANT_SUBJOINED          = OT_CM,
   INDIC_SYLLABIC_CATEGORY_CONSONANT_SUCCEEDING_REPHA   = OT_N,
-  INDIC_SYLLABIC_CATEGORY_CONSONANT_WITH_STACKER       = OT_Repha, /* TODO */
   INDIC_SYLLABIC_CATEGORY_GEMINATION_MARK              = OT_SM,
-  INDIC_SYLLABIC_CATEGORY_INVISIBLE_STACKER            = OT_Coeng,
+  INDIC_SYLLABIC_CATEGORY_INVISIBLE_STACKER            = OT_H, /* TODO */
   INDIC_SYLLABIC_CATEGORY_JOINER                       = OT_ZWJ,
   INDIC_SYLLABIC_CATEGORY_MODIFYING_LETTER             = OT_X,
   INDIC_SYLLABIC_CATEGORY_NON_JOINER                   = OT_ZWNJ,
   INDIC_SYLLABIC_CATEGORY_NUKTA                                = OT_N,
   INDIC_SYLLABIC_CATEGORY_NUMBER                       = OT_PLACEHOLDER,
-  INDIC_SYLLABIC_CATEGORY_NUMBER_JOINER                        = OT_PLACEHOLDER, /* Don't care. */
-  INDIC_SYLLABIC_CATEGORY_PURE_KILLER                  = OT_M, /* Is like a vowel matra. */
+  INDIC_SYLLABIC_CATEGORY_NUMBER_JOINER                        = OT_PLACEHOLDER, /* TODO */
+  INDIC_SYLLABIC_CATEGORY_PURE_KILLER                  = OT_H, /* TODO */
   INDIC_SYLLABIC_CATEGORY_REGISTER_SHIFTER             = OT_RS,
-  INDIC_SYLLABIC_CATEGORY_SYLLABLE_MODIFIER            = OT_M, /* Misc Khmer signs. */
   INDIC_SYLLABIC_CATEGORY_TONE_LETTER                  = OT_X,
   INDIC_SYLLABIC_CATEGORY_TONE_MARK                    = OT_N,
   INDIC_SYLLABIC_CATEGORY_VIRAMA                       = OT_H,
@@ -165,24 +161,20 @@ enum indic_matra_category_t {
   INDIC_MATRA_CATEGORY_VISUAL_ORDER_LEFT               = POS_PRE_M
 };
 
+/* Note: We use ASSERT_STATIC_EXPR_ZERO() instead of ASSERT_STATIC_EXPR() and the comma operation
+ * because gcc fails to optimize the latter and fills the table in at runtime. */
 #define INDIC_COMBINE_CATEGORIES(S,M) \
-  ( \
-    ASSERT_STATIC_EXPR_ZERO (S < 255 && M < 255) + \
-    ( S | \
-     ( \
-      ( \
-       S == INDIC_SYLLABIC_CATEGORY_CONSONANT_MEDIAL || \
-       S == INDIC_SYLLABIC_CATEGORY_GEMINATION_MARK || \
-       S == INDIC_SYLLABIC_CATEGORY_REGISTER_SHIFTER || \
-       S == INDIC_SYLLABIC_CATEGORY_CONSONANT_SUCCEEDING_REPHA || \
-       S == INDIC_SYLLABIC_CATEGORY_VIRAMA || \
-       S == INDIC_SYLLABIC_CATEGORY_VOWEL_DEPENDENT || \
-       false \
-       ? M : INDIC_MATRA_CATEGORY_NOT_APPLICABLE \
-      ) << 8 \
-     ) \
-    ) \
-   )
+  (ASSERT_STATIC_EXPR_ZERO (M == INDIC_MATRA_CATEGORY_NOT_APPLICABLE || \
+                           ( \
+                            S == INDIC_SYLLABIC_CATEGORY_CONSONANT_MEDIAL || \
+                            S == INDIC_SYLLABIC_CATEGORY_GEMINATION_MARK || \
+                            S == INDIC_SYLLABIC_CATEGORY_REGISTER_SHIFTER || \
+                            S == INDIC_SYLLABIC_CATEGORY_CONSONANT_SUCCEEDING_REPHA || \
+                            S == INDIC_SYLLABIC_CATEGORY_VIRAMA || \
+                            S == INDIC_SYLLABIC_CATEGORY_VOWEL_DEPENDENT || \
+                            false)) + \
+   ASSERT_STATIC_EXPR_ZERO (S < 255 && M < 255) + \
+   ((M << 8) | S))
 
 HB_INTERNAL INDIC_TABLE_ELEMENT_TYPE
 hb_indic_get_categories (hb_codepoint_t u);