提交 305d2fbf 编写于 作者: B Behdad Esfahbod

Add HB_FALLTHROUGH

Borrowed from https://bugzilla.mozilla.org/show_bug.cgi?id=1215411
上级 6486e375
...@@ -756,7 +756,7 @@ initial_reordering_consonant_syllable (const hb_ot_shape_plan_t *plan, ...@@ -756,7 +756,7 @@ initial_reordering_consonant_syllable (const hb_ot_shape_plan_t *plan,
{ {
default: default:
assert (false); assert (false);
/* fallthrough */ HB_FALLTHROUGH;
case BASE_POS_LAST: case BASE_POS_LAST:
{ {
......
...@@ -139,7 +139,7 @@ thai_pua_shape (hb_codepoint_t u, thai_action_t action, hb_font_t *font) ...@@ -139,7 +139,7 @@ thai_pua_shape (hb_codepoint_t u, thai_action_t action, hb_font_t *font)
}; };
switch (action) { switch (action) {
default: assert (false); /* Fallthrough */ default: assert (false); HB_FALLTHROUGH;
case NOP: return u; case NOP: return u;
case SD: pua_mappings = SD_mappings; break; case SD: pua_mappings = SD_mappings; break;
case SDL: pua_mappings = SDL_mappings; break; case SDL: pua_mappings = SDL_mappings; break;
......
...@@ -224,7 +224,7 @@ position_mark (const hb_ot_shape_plan_t *plan, ...@@ -224,7 +224,7 @@ position_mark (const hb_ot_shape_plan_t *plan,
pos.x_offset += base_extents.x_bearing + base_extents.width - mark_extents.width / 2 - mark_extents.x_bearing; pos.x_offset += base_extents.x_bearing + base_extents.width - mark_extents.width / 2 - mark_extents.x_bearing;
break; break;
} }
/* Fall through */ HB_FALLTHROUGH;
default: default:
case HB_UNICODE_COMBINING_CLASS_ATTACHED_BELOW: case HB_UNICODE_COMBINING_CLASS_ATTACHED_BELOW:
...@@ -259,6 +259,7 @@ position_mark (const hb_ot_shape_plan_t *plan, ...@@ -259,6 +259,7 @@ position_mark (const hb_ot_shape_plan_t *plan,
case HB_UNICODE_COMBINING_CLASS_BELOW_RIGHT: case HB_UNICODE_COMBINING_CLASS_BELOW_RIGHT:
/* Add gap, fall-through. */ /* Add gap, fall-through. */
base_extents.height -= y_gap; base_extents.height -= y_gap;
HB_FALLTHROUGH;
case HB_UNICODE_COMBINING_CLASS_ATTACHED_BELOW_LEFT: case HB_UNICODE_COMBINING_CLASS_ATTACHED_BELOW_LEFT:
case HB_UNICODE_COMBINING_CLASS_ATTACHED_BELOW: case HB_UNICODE_COMBINING_CLASS_ATTACHED_BELOW:
...@@ -279,6 +280,7 @@ position_mark (const hb_ot_shape_plan_t *plan, ...@@ -279,6 +280,7 @@ position_mark (const hb_ot_shape_plan_t *plan,
/* Add gap, fall-through. */ /* Add gap, fall-through. */
base_extents.y_bearing += y_gap; base_extents.y_bearing += y_gap;
base_extents.height -= y_gap; base_extents.height -= y_gap;
HB_FALLTHROUGH;
case HB_UNICODE_COMBINING_CLASS_ATTACHED_ABOVE: case HB_UNICODE_COMBINING_CLASS_ATTACHED_ABOVE:
case HB_UNICODE_COMBINING_CLASS_ATTACHED_ABOVE_RIGHT: case HB_UNICODE_COMBINING_CLASS_ATTACHED_ABOVE_RIGHT:
......
...@@ -119,6 +119,36 @@ extern "C" void hb_free_impl(void *ptr); ...@@ -119,6 +119,36 @@ extern "C" void hb_free_impl(void *ptr);
#define HB_FUNC __func__ #define HB_FUNC __func__
#endif #endif
/*
* Borrowed from https://bugzilla.mozilla.org/show_bug.cgi?id=1215411
* HB_FALLTHROUGH is an annotation to suppress compiler warnings about switch
* cases that fall through without a break or return statement. HB_FALLTHROUGH
* is only needed on cases that have code:
*
* switch (foo) {
* case 1: // These cases have no code. No fallthrough annotations are needed.
* case 2:
* case 3:
* foo = 4; // This case has code, so a fallthrough annotation is needed:
* HB_FALLTHROUGH;
* default:
* return foo;
* }
*/
#if defined(__clang__) && __cplusplus >= 201103L
/* clang's fallthrough annotations are only available starting in C++11. */
# define HB_FALLTHROUGH [[clang::fallthrough]]
#elif defined(_MSC_VER)
/*
* MSVC's __fallthrough annotations are checked by /analyze (Code Analysis):
* https://msdn.microsoft.com/en-us/library/ms235402%28VS.80%29.aspx
*/
# include <sal.h>
# define HB_FALLTHROUGH __fallthrough
#else
# define HB_FALLTHROUGH /* FALLTHROUGH */
#endif
#if defined(_WIN32) || defined(__CYGWIN__) #if defined(_WIN32) || defined(__CYGWIN__)
/* We need Windows Vista for both Uniscribe backend and for /* We need Windows Vista for both Uniscribe backend and for
* MemoryBarrier. We don't support compiling on Windows XP, * MemoryBarrier. We don't support compiling on Windows XP,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册