Add HB_FALLTHROUGH
Borrowed from https://bugzilla.mozilla.org/show_bug.cgi?id=1215411
This commit is contained in:
parent
6486e37554
commit
305d2fbf5a
@ -756,7 +756,7 @@ initial_reordering_consonant_syllable (const hb_ot_shape_plan_t *plan,
|
||||
{
|
||||
default:
|
||||
assert (false);
|
||||
/* fallthrough */
|
||||
HB_FALLTHROUGH;
|
||||
|
||||
case BASE_POS_LAST:
|
||||
{
|
||||
|
@ -139,7 +139,7 @@ thai_pua_shape (hb_codepoint_t u, thai_action_t action, hb_font_t *font)
|
||||
};
|
||||
|
||||
switch (action) {
|
||||
default: assert (false); /* Fallthrough */
|
||||
default: assert (false); HB_FALLTHROUGH;
|
||||
case NOP: return u;
|
||||
case SD: pua_mappings = SD_mappings; break;
|
||||
case SDL: pua_mappings = SDL_mappings; break;
|
||||
|
@ -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;
|
||||
break;
|
||||
}
|
||||
/* Fall through */
|
||||
HB_FALLTHROUGH;
|
||||
|
||||
default:
|
||||
case HB_UNICODE_COMBINING_CLASS_ATTACHED_BELOW:
|
||||
@ -259,6 +259,7 @@ position_mark (const hb_ot_shape_plan_t *plan,
|
||||
case HB_UNICODE_COMBINING_CLASS_BELOW_RIGHT:
|
||||
/* Add gap, fall-through. */
|
||||
base_extents.height -= y_gap;
|
||||
HB_FALLTHROUGH;
|
||||
|
||||
case HB_UNICODE_COMBINING_CLASS_ATTACHED_BELOW_LEFT:
|
||||
case HB_UNICODE_COMBINING_CLASS_ATTACHED_BELOW:
|
||||
@ -279,6 +280,7 @@ position_mark (const hb_ot_shape_plan_t *plan,
|
||||
/* Add gap, fall-through. */
|
||||
base_extents.y_bearing += y_gap;
|
||||
base_extents.height -= y_gap;
|
||||
HB_FALLTHROUGH;
|
||||
|
||||
case HB_UNICODE_COMBINING_CLASS_ATTACHED_ABOVE:
|
||||
case HB_UNICODE_COMBINING_CLASS_ATTACHED_ABOVE_RIGHT:
|
||||
|
@ -119,6 +119,36 @@ extern "C" void hb_free_impl(void *ptr);
|
||||
#define HB_FUNC __func__
|
||||
#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__)
|
||||
/* We need Windows Vista for both Uniscribe backend and for
|
||||
* MemoryBarrier. We don't support compiling on Windows XP,
|
||||
|
Loading…
Reference in New Issue
Block a user