From 440e55a6af6a9c82623d9621cf291f08c47e8c1d Mon Sep 17 00:00:00 2001 From: David Tolnay Date: Fri, 22 Jul 2022 18:32:00 -0700 Subject: [PATCH] Factor out WIDTH_AT macro --- src/emitter.rs | 20 +------------------- src/macros.rs | 20 +++++++++++++++++++- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/src/emitter.rs b/src/emitter.rs index 6e016ff..1e60b5c 100644 --- a/src/emitter.rs +++ b/src/emitter.rs @@ -2500,25 +2500,7 @@ unsafe fn yaml_emitter_write_folded_scalar( { let mut k: libc::c_int = 0_i32; while IS_BREAK_AT!(string, k as isize) { - k += if *string.pointer.wrapping_offset(k as isize) as libc::c_int & 0x80_i32 - == 0_i32 - { - 1_i32 - } else if *string.pointer.wrapping_offset(k as isize) as libc::c_int & 0xe0_i32 - == 0xc0_i32 - { - 2_i32 - } else if *string.pointer.wrapping_offset(k as isize) as libc::c_int & 0xf0_i32 - == 0xe0_i32 - { - 3_i32 - } else if *string.pointer.wrapping_offset(k as isize) as libc::c_int & 0xf8_i32 - == 0xf0_i32 - { - 4_i32 - } else { - 0_i32 - }; + k += WIDTH_AT!(string, k as isize); } if !IS_BLANKZ_AT!(string, k) { if !(PUT_BREAK!(emitter)) { diff --git a/src/macros.rs b/src/macros.rs index bb757a5..6ca396b 100644 --- a/src/macros.rs +++ b/src/macros.rs @@ -351,7 +351,25 @@ macro_rules! IS_BLANKZ { } macro_rules! WIDTH_AT { - () => {}; // TODO + ($string:expr, $offset:expr) => { + if *$string.pointer.wrapping_offset($offset as isize) as libc::c_int & 0x80_i32 == 0_i32 { + 1_i32 + } else if *$string.pointer.wrapping_offset($offset as isize) as libc::c_int & 0xe0_i32 + == 0xc0_i32 + { + 2_i32 + } else if *$string.pointer.wrapping_offset($offset as isize) as libc::c_int & 0xf0_i32 + == 0xe0_i32 + { + 3_i32 + } else if *$string.pointer.wrapping_offset($offset as isize) as libc::c_int & 0xf8_i32 + == 0xf0_i32 + { + 4_i32 + } else { + 0_i32 + } + }; } macro_rules! WIDTH {