• Home
  • Raw
  • Download

Lines Matching +full:clz +full:- +full:optimizations

7 // To use that single file as a "foo.c"-like implementation, instead of a
8 // "foo.h"-like header, #define WUFFS_IMPLEMENTATION before #include'ing or
11 // Wuffs' C code is generated automatically, not hand-written. These warnings'
15 // __GNUC__, clang-cl (which mimics MSVC's cl.exe) does not.
18 #pragma GCC diagnostic ignored "-Wimplicit-fallthrough"
19 #pragma GCC diagnostic ignored "-Wmissing-field-initializers"
20 #pragma GCC diagnostic ignored "-Wunreachable-code"
21 #pragma GCC diagnostic ignored "-Wunused-function"
22 #pragma GCC diagnostic ignored "-Wunused-parameter"
24 #pragma GCC diagnostic ignored "-Wold-style-cast"
28 #pragma clang diagnostic ignored "-Wimplicit-fallthrough"
29 #pragma clang diagnostic ignored "-Wmissing-field-initializers"
30 #pragma clang diagnostic ignored "-Wunreachable-code"
31 #pragma clang diagnostic ignored "-Wunused-function"
32 #pragma clang diagnostic ignored "-Wunused-parameter"
34 #pragma clang diagnostic ignored "-Wold-style-cast"
44 // https://www.apache.org/licenses/LICENSE-2.0
63 // __GNUC__, clang-cl (which mimics MSVC's cl.exe) does not.
65 #warning "Wuffs' C++ code expects -std=c++11 or later"
71 // ---------------- Version
75 // middle 16 bits. The patch number is the low 16 bits. The pre-release label
77 // "1.2.3-beta+456.20181231") but not the uint64_t representation.
80 // non-empty denotes a developer preview, not a release version, and has no
83 // WUFFS_VERSION_BUILD_METADATA_XXX, if non-zero, are the number of commits and
87 // WUFFS_VERSION was overridden by "wuffs gen -version" based on revision
88 // adfd2965cc104f3de6cccaed5095721d042c1251 committed on 2022-01-18.
96 #define WUFFS_VERSION_STRING "0.3.0-beta.14+3273.20220118"
98 // ---------------- Configuration
102 #if defined(WUFFS_CONFIG__AVOID_CPU_ARCH) // (#if-chain ref AVOID_CPU_ARCH_0)
103 // No-op.
104 #else // (#if-chain ref AVOID_CPU_ARCH_0)
107 // __GNUC__, clang-cl (which mimics MSVC's cl.exe) does not.
114 #if defined(__GNUC__) // (#if-chain ref AVOID_CPU_ARCH_1)
117 // unaligned little-endian load/stores.
140 // X86_FAMILY means X86 (32-bit) or X86_64 (64-bit, obviously).
145 #elif defined(_MSC_VER) // (#if-chain ref AVOID_CPU_ARCH_1)
152 // That's not enough for X64 SIMD, with clang-cl, if we want to use
161 // X86_FAMILY means X86 (32-bit) or X86_64 (64-bit, obviously).
166 // clang-cl (which defines both __clang__ and _MSC_VER) supports
169 // For MSVC's cl.exe (unlike clang or gcc), SIMD capability is a compile-time
170 // property of the source file (e.g. a /arch:AVX or -mavx compiler flag), not
177 #endif // (#if-chain ref AVOID_CPU_ARCH_1)
178 #endif // (#if-chain ref AVOID_CPU_ARCH_0)
180 // --------
195 // ---------------- CPU Architecture
219 // - bit_AVX2 = (1 << 5) in wuffs_base__cpu_arch__have_x86_avx2()
222 // - bit_PCLMUL = (1 << 1) in wuffs_base__cpu_arch__have_x86_avx2()
223 // - bit_POPCNT = (1 << 23) in wuffs_base__cpu_arch__have_x86_avx2()
224 // - bit_SSE4_2 = (1 << 20) in wuffs_base__cpu_arch__have_x86_avx2()
227 // clang defines __GNUC__ and clang-cl defines _MSC_VER (but not __GNUC__). in wuffs_base__cpu_arch__have_x86_avx2()
265 // - bit_BMI2 = (1 << 8) in wuffs_base__cpu_arch__have_x86_bmi2()
268 // clang defines __GNUC__ and clang-cl defines _MSC_VER (but not __GNUC__). in wuffs_base__cpu_arch__have_x86_bmi2()
295 // - bit_PCLMUL = (1 << 1) in wuffs_base__cpu_arch__have_x86_sse42()
296 // - bit_POPCNT = (1 << 23) in wuffs_base__cpu_arch__have_x86_sse42()
297 // - bit_SSE4_2 = (1 << 20) in wuffs_base__cpu_arch__have_x86_sse42()
300 // clang defines __GNUC__ and clang-cl defines _MSC_VER (but not __GNUC__). in wuffs_base__cpu_arch__have_x86_sse42()
323 // ---------------- Fundamentals
326 // - converting a uint32_t to a size_t will never overflow.
327 // - converting a size_t to a uint64_t will never overflow.
335 // __GNUC__, clang-cl (which mimics MSVC's cl.exe) does not.
344 // --------
366 // --------
411 // --------
469 return (z->repr == NULL) || ((*z->repr != '$') && (*z->repr != '#')); in wuffs_base__status__is_complete()
474 return z->repr && (*z->repr == '#'); in wuffs_base__status__is_error()
479 return z->repr && (*z->repr != '$') && (*z->repr != '#'); in wuffs_base__status__is_note()
484 return z->repr == NULL; in wuffs_base__status__is_ok()
489 return z->repr && (*z->repr == '$'); in wuffs_base__status__is_suspension()
495 if (z->repr) { in wuffs_base__status__message()
496 if ((*z->repr == '$') || (*z->repr == '#') || (*z->repr == '@')) { in wuffs_base__status__message()
497 return z->repr + 1; in wuffs_base__status__message()
500 return z->repr; in wuffs_base__status__message()
537 // --------
541 // A result with all fields NULL or zero is as valid as a zero-valued T.
552 // --------
562 // --------
566 // unsigned 32-bit integer. ASCII letters are conventionally upper case.
573 // Wuffs' u32 values are big-endian ("JPEG" is 0x4A504547 not 0x4745504A) to
645 // Key-Value Pair.
648 // Key-Value Pair (Key).
651 // Key-Value Pair (Value).
663 // MPEG-1 Audio Layer III.
669 // Offset (2-Dimensional).
759 // --------
765 // --------
767 // Flicks are a unit of time. One flick (frame-tick) is 1 / 705_600_000 of a
774 // ---------------- Numeric Types
783 // inline attribute to guide optimizations such as inlining, to avoid the
784 // -Wunused-function warning, and we like to compile with -Wall -Werror.
866 // --------
871 return ((uint8_t)(x << n)) | ((uint8_t)(x >> (8 - n))); in wuffs_base__u8__rotate_left()
877 return ((uint8_t)(x >> n)) | ((uint8_t)(x << (8 - n))); in wuffs_base__u8__rotate_right()
883 return ((uint16_t)(x << n)) | ((uint16_t)(x >> (16 - n))); in wuffs_base__u16__rotate_left()
889 return ((uint16_t)(x >> n)) | ((uint16_t)(x << (16 - n))); in wuffs_base__u16__rotate_right()
895 return ((uint32_t)(x << n)) | ((uint32_t)(x >> (32 - n))); in wuffs_base__u32__rotate_left()
901 return ((uint32_t)(x >> n)) | ((uint32_t)(x << (32 - n))); in wuffs_base__u32__rotate_right()
907 return ((uint64_t)(x << n)) | ((uint64_t)(x >> (64 - n))); in wuffs_base__u64__rotate_left()
913 return ((uint64_t)(x >> n)) | ((uint64_t)(x << (64 - n))); in wuffs_base__u64__rotate_right()
916 // --------
918 // Saturating arithmetic (sat_add, sat_sub) branchless bit-twiddling algorithms
927 res |= (uint8_t)(-(res < x)); in wuffs_base__u8__sat_add()
933 uint8_t res = (uint8_t)(x - y); in wuffs_base__u8__sat_sub()
934 res &= (uint8_t)(-(res <= x)); in wuffs_base__u8__sat_sub()
941 res |= (uint16_t)(-(res < x)); in wuffs_base__u16__sat_add()
947 uint16_t res = (uint16_t)(x - y); in wuffs_base__u16__sat_sub()
948 res &= (uint16_t)(-(res <= x)); in wuffs_base__u16__sat_sub()
955 res |= (uint32_t)(-(res < x)); in wuffs_base__u32__sat_add()
961 uint32_t res = (uint32_t)(x - y); in wuffs_base__u32__sat_sub()
962 res &= (uint32_t)(-(res <= x)); in wuffs_base__u32__sat_sub()
969 res |= (uint64_t)(-(res < x)); in wuffs_base__u64__sat_add()
975 uint64_t res = (uint64_t)(x - y); in wuffs_base__u64__sat_sub()
976 res &= (uint64_t)(-(res <= x)); in wuffs_base__u64__sat_sub()
980 // --------
987 // wuffs_base__multiply_u64 returns x*y as a 128-bit value.
1016 // --------
1019 // __GNUC__, clang-cl (which mimics MSVC's cl.exe) does not.
1066 // --------
1172 // --------
1328 // --------
1394 // ---------------- Slices and Tables
1396 // WUFFS_BASE__SLICE is a 1-dimensional buffer.
1407 // WUFFS_BASE__TABLE is a 2-dimensional buffer.
1599 return wuffs_base__make_slice_u8(s.ptr + i, ((size_t)(s.len - i))); in wuffs_base__slice_u8__subslice_i()
1623 return wuffs_base__make_slice_u8(s.ptr + i, ((size_t)(j - i))); in wuffs_base__slice_u8__subslice_ij()
1640 ((size_t)(jx - ix)), // in wuffs_base__table_u8__subtable_ij()
1641 ((size_t)(jy - iy)), // in wuffs_base__table_u8__subtable_ij()
1648 // by the 1-dimensional span that backs a 2-dimensional table. This counts the
1660 // Now consider the sub-table of that from (2, 1) inclusive to (8, 4) exclusive.
1683 return ((height - 1) * stride) + width; in wuffs_base__table__flattened_length()
1686 // ---------------- Magic Numbers
1695 // It returns zero if nothing matches its hard-coded list of 'magic numbers'.
1712 // For modular builds that divide the base module into sub-modules, using this
1713 // function requires the WUFFS_CONFIG__MODULE__BASE__MAGIC sub-module, not just
1719 // ---------------- Ranges and Rects
1721 // See https://github.com/google/wuffs/blob/main/doc/note/ranges-and-rects.md
1758 return r->min_incl > r->max_incl; in wuffs_base__range_ii_u32__is_empty()
1764 return (r->min_incl == s.min_incl && r->max_incl == s.max_incl) || in wuffs_base__range_ii_u32__equals()
1773 t.min_incl = wuffs_base__u32__max(r->min_incl, s.min_incl); in wuffs_base__range_ii_u32__intersect()
1774 t.max_incl = wuffs_base__u32__min(r->max_incl, s.max_incl); in wuffs_base__range_ii_u32__intersect()
1788 t.min_incl = wuffs_base__u32__min(r->min_incl, s.min_incl); in wuffs_base__range_ii_u32__unite()
1789 t.max_incl = wuffs_base__u32__max(r->max_incl, s.max_incl); in wuffs_base__range_ii_u32__unite()
1796 return (r->min_incl <= x) && (x <= r->max_incl); in wuffs_base__range_ii_u32__contains()
1840 // --------
1878 return r->min_incl >= r->max_excl; in wuffs_base__range_ie_u32__is_empty()
1884 return (r->min_incl == s.min_incl && r->max_excl == s.max_excl) || in wuffs_base__range_ie_u32__equals()
1893 t.min_incl = wuffs_base__u32__max(r->min_incl, s.min_incl); in wuffs_base__range_ie_u32__intersect()
1894 t.max_excl = wuffs_base__u32__min(r->max_excl, s.max_excl); in wuffs_base__range_ie_u32__intersect()
1908 t.min_incl = wuffs_base__u32__min(r->min_incl, s.min_incl); in wuffs_base__range_ie_u32__unite()
1909 t.max_excl = wuffs_base__u32__max(r->max_excl, s.max_excl); in wuffs_base__range_ie_u32__unite()
1916 return (r->min_incl <= x) && (x < r->max_excl); in wuffs_base__range_ie_u32__contains()
1928 return wuffs_base__u32__sat_sub(r->max_excl, r->min_incl); in wuffs_base__range_ie_u32__length()
1970 // --------
2007 return r->min_incl > r->max_incl; in wuffs_base__range_ii_u64__is_empty()
2013 return (r->min_incl == s.min_incl && r->max_incl == s.max_incl) || in wuffs_base__range_ii_u64__equals()
2022 t.min_incl = wuffs_base__u64__max(r->min_incl, s.min_incl); in wuffs_base__range_ii_u64__intersect()
2023 t.max_incl = wuffs_base__u64__min(r->max_incl, s.max_incl); in wuffs_base__range_ii_u64__intersect()
2037 t.min_incl = wuffs_base__u64__min(r->min_incl, s.min_incl); in wuffs_base__range_ii_u64__unite()
2038 t.max_incl = wuffs_base__u64__max(r->max_incl, s.max_incl); in wuffs_base__range_ii_u64__unite()
2045 return (r->min_incl <= x) && (x <= r->max_incl); in wuffs_base__range_ii_u64__contains()
2089 // --------
2127 return r->min_incl >= r->max_excl; in wuffs_base__range_ie_u64__is_empty()
2133 return (r->min_incl == s.min_incl && r->max_excl == s.max_excl) || in wuffs_base__range_ie_u64__equals()
2142 t.min_incl = wuffs_base__u64__max(r->min_incl, s.min_incl); in wuffs_base__range_ie_u64__intersect()
2143 t.max_excl = wuffs_base__u64__min(r->max_excl, s.max_excl); in wuffs_base__range_ie_u64__intersect()
2157 t.min_incl = wuffs_base__u64__min(r->min_incl, s.min_incl); in wuffs_base__range_ie_u64__unite()
2158 t.max_excl = wuffs_base__u64__max(r->max_excl, s.max_excl); in wuffs_base__range_ie_u64__unite()
2165 return (r->min_incl <= x) && (x < r->max_excl); in wuffs_base__range_ie_u64__contains()
2177 return wuffs_base__u64__sat_sub(r->max_excl, r->min_incl); in wuffs_base__range_ie_u64__length()
2219 // --------
2265 return (r->min_incl_x > r->max_incl_x) || (r->min_incl_y > r->max_incl_y); in wuffs_base__rect_ii_u32__is_empty()
2271 return (r->min_incl_x == s.min_incl_x && r->min_incl_y == s.min_incl_y && in wuffs_base__rect_ii_u32__equals()
2272 r->max_incl_x == s.max_incl_x && r->max_incl_y == s.max_incl_y) || in wuffs_base__rect_ii_u32__equals()
2281 t.min_incl_x = wuffs_base__u32__max(r->min_incl_x, s.min_incl_x); in wuffs_base__rect_ii_u32__intersect()
2282 t.min_incl_y = wuffs_base__u32__max(r->min_incl_y, s.min_incl_y); in wuffs_base__rect_ii_u32__intersect()
2283 t.max_incl_x = wuffs_base__u32__min(r->max_incl_x, s.max_incl_x); in wuffs_base__rect_ii_u32__intersect()
2284 t.max_incl_y = wuffs_base__u32__min(r->max_incl_y, s.max_incl_y); in wuffs_base__rect_ii_u32__intersect()
2298 t.min_incl_x = wuffs_base__u32__min(r->min_incl_x, s.min_incl_x); in wuffs_base__rect_ii_u32__unite()
2299 t.min_incl_y = wuffs_base__u32__min(r->min_incl_y, s.min_incl_y); in wuffs_base__rect_ii_u32__unite()
2300 t.max_incl_x = wuffs_base__u32__max(r->max_incl_x, s.max_incl_x); in wuffs_base__rect_ii_u32__unite()
2301 t.max_incl_y = wuffs_base__u32__max(r->max_incl_y, s.max_incl_y); in wuffs_base__rect_ii_u32__unite()
2309 return (r->min_incl_x <= x) && (x <= r->max_incl_x) && (r->min_incl_y <= y) && in wuffs_base__rect_ii_u32__contains()
2310 (y <= r->max_incl_y); in wuffs_base__rect_ii_u32__contains()
2354 // --------
2402 return (r->min_incl_x >= r->max_excl_x) || (r->min_incl_y >= r->max_excl_y); in wuffs_base__rect_ie_u32__is_empty()
2408 return (r->min_incl_x == s.min_incl_x && r->min_incl_y == s.min_incl_y && in wuffs_base__rect_ie_u32__equals()
2409 r->max_excl_x == s.max_excl_x && r->max_excl_y == s.max_excl_y) || in wuffs_base__rect_ie_u32__equals()
2418 t.min_incl_x = wuffs_base__u32__max(r->min_incl_x, s.min_incl_x); in wuffs_base__rect_ie_u32__intersect()
2419 t.min_incl_y = wuffs_base__u32__max(r->min_incl_y, s.min_incl_y); in wuffs_base__rect_ie_u32__intersect()
2420 t.max_excl_x = wuffs_base__u32__min(r->max_excl_x, s.max_excl_x); in wuffs_base__rect_ie_u32__intersect()
2421 t.max_excl_y = wuffs_base__u32__min(r->max_excl_y, s.max_excl_y); in wuffs_base__rect_ie_u32__intersect()
2435 t.min_incl_x = wuffs_base__u32__min(r->min_incl_x, s.min_incl_x); in wuffs_base__rect_ie_u32__unite()
2436 t.min_incl_y = wuffs_base__u32__min(r->min_incl_y, s.min_incl_y); in wuffs_base__rect_ie_u32__unite()
2437 t.max_excl_x = wuffs_base__u32__max(r->max_excl_x, s.max_excl_x); in wuffs_base__rect_ie_u32__unite()
2438 t.max_excl_y = wuffs_base__u32__max(r->max_excl_y, s.max_excl_y); in wuffs_base__rect_ie_u32__unite()
2446 return (r->min_incl_x <= x) && (x < r->max_excl_x) && (r->min_incl_y <= y) && in wuffs_base__rect_ie_u32__contains()
2447 (y < r->max_excl_y); in wuffs_base__rect_ie_u32__contains()
2459 return wuffs_base__u32__sat_sub(r->max_excl_x, r->min_incl_x); in wuffs_base__rect_ie_u32__width()
2464 return wuffs_base__u32__sat_sub(r->max_excl_y, r->min_incl_y); in wuffs_base__rect_ie_u32__height()
2511 // ---------------- More Information
2517 // convention](/doc/note/base38-and-fourcc.md). The other fields' semantics
2576 m->flavor = flavor; in wuffs_base__more_information__set()
2577 m->w = w; in wuffs_base__more_information__set()
2578 m->x = x; in wuffs_base__more_information__set()
2579 m->y = y; in wuffs_base__more_information__set()
2580 m->z = z; in wuffs_base__more_information__set()
2586 return m->w; in wuffs_base__more_information__io_redirect__fourcc()
2593 ret.min_incl = m->y; in wuffs_base__more_information__io_redirect__range()
2594 ret.max_excl = m->z; in wuffs_base__more_information__io_redirect__range()
2601 return m->x; in wuffs_base__more_information__io_seek__position()
2607 return m->w; in wuffs_base__more_information__metadata__fourcc()
2616 ret.min_incl = m->y; in wuffs_base__more_information__metadata__range()
2617 ret.max_excl = m->z; in wuffs_base__more_information__metadata__range()
2625 ret.min_incl = m->y; in wuffs_base__more_information__metadata_raw_passthrough__range()
2626 ret.max_excl = m->z; in wuffs_base__more_information__metadata_raw_passthrough__range()
2642 // - ETC__CHRM__WHITE_X 31270
2643 // - ETC__CHRM__WHITE_Y 32900
2644 // - ETC__CHRM__RED_X 64000
2645 // - ETC__CHRM__RED_Y 33000
2646 // - ETC__CHRM__GREEN_X 30000
2647 // - ETC__CHRM__GREEN_Y 60000
2648 // - ETC__CHRM__BLUE_X 15000
2649 // - ETC__CHRM__BLUE_Y 6000
2652 // https://ciechanow.ski/color-spaces/#chromaticity-and-white-point-coordinates
2661 // - LSB MSB in wuffs_base__more_information__metadata_parsed__chrm()
2662 // - x: wx wx wx wy wy wy rx rx in wuffs_base__more_information__metadata_parsed__chrm()
2663 // - y: rx ry ry ry gx gx gx gy in wuffs_base__more_information__metadata_parsed__chrm()
2664 // - z: gy gy bx bx bx by by by in wuffs_base__more_information__metadata_parsed__chrm()
2668 u = ((uint32_t)(m->x >> 0)); in wuffs_base__more_information__metadata_parsed__chrm()
2671 u = ((uint32_t)(m->x >> 24)); in wuffs_base__more_information__metadata_parsed__chrm()
2674 u = ((uint32_t)((m->x >> 48) | (m->y << 16))); in wuffs_base__more_information__metadata_parsed__chrm()
2677 u = ((uint32_t)(m->y >> 8)); in wuffs_base__more_information__metadata_parsed__chrm()
2680 u = ((uint32_t)(m->y >> 32)); in wuffs_base__more_information__metadata_parsed__chrm()
2683 u = ((uint32_t)((m->y >> 56) | (m->z << 8))); in wuffs_base__more_information__metadata_parsed__chrm()
2686 u = ((uint32_t)(m->z >> 16)); in wuffs_base__more_information__metadata_parsed__chrm()
2689 u = ((uint32_t)(m->z >> 40)); in wuffs_base__more_information__metadata_parsed__chrm()
2692 // The left-right shifts sign-extend from 24-bit to 32-bit integers. in wuffs_base__more_information__metadata_parsed__chrm()
2702 return ((uint32_t)(m->x)); in wuffs_base__more_information__metadata_parsed__gama()
2715 return m->x & 3; in wuffs_base__more_information__metadata_parsed__srgb()
2777 // ---------------- I/O
2779 // See (/doc/note/io-input-output.md).
2790 // wuffs_base__io_buffer is a 1-dimensional buffer (a pointer and length) plus
2913 if (buf->data.ptr) { in wuffs_base__io_buffer__is_valid()
2914 return (buf->meta.ri <= buf->meta.wi) && (buf->meta.wi <= buf->data.len); in wuffs_base__io_buffer__is_valid()
2916 return (buf->meta.ri == 0) && (buf->meta.wi == 0) && (buf->data.len == 0); in wuffs_base__io_buffer__is_valid()
2926 if (!buf || (buf->meta.ri == 0)) { in wuffs_base__io_buffer__compact()
2929 buf->meta.pos = wuffs_base__u64__sat_add(buf->meta.pos, buf->meta.ri); in wuffs_base__io_buffer__compact()
2930 size_t n = buf->meta.wi - buf->meta.ri; in wuffs_base__io_buffer__compact()
2932 memmove(buf->data.ptr, buf->data.ptr + buf->meta.ri, n); in wuffs_base__io_buffer__compact()
2934 buf->meta.wi = n; in wuffs_base__io_buffer__compact()
2935 buf->meta.ri = 0; in wuffs_base__io_buffer__compact()
2941 return buf ? wuffs_base__u64__sat_add(buf->meta.pos, buf->meta.ri) : 0; in wuffs_base__io_buffer__reader_io_position()
2946 return buf ? buf->meta.wi - buf->meta.ri : 0; in wuffs_base__io_buffer__reader_length()
2951 return buf ? (buf->data.ptr + buf->meta.ri) : NULL; in wuffs_base__io_buffer__reader_pointer()
2956 return buf ? wuffs_base__u64__sat_add(buf->meta.pos, buf->meta.ri) : 0; in wuffs_base__io_buffer__reader_position()
2961 return buf ? wuffs_base__make_slice_u8(buf->data.ptr + buf->meta.ri, in wuffs_base__io_buffer__reader_slice()
2962 buf->meta.wi - buf->meta.ri) in wuffs_base__io_buffer__reader_slice()
2969 return buf ? wuffs_base__u64__sat_add(buf->meta.pos, buf->meta.wi) : 0; in wuffs_base__io_buffer__writer_io_position()
2974 return buf ? buf->data.len - buf->meta.wi : 0; in wuffs_base__io_buffer__writer_length()
2979 return buf ? (buf->data.ptr + buf->meta.wi) : NULL; in wuffs_base__io_buffer__writer_pointer()
2984 return buf ? wuffs_base__u64__sat_add(buf->meta.pos, buf->meta.wi) : 0; in wuffs_base__io_buffer__writer_position()
2989 return buf ? wuffs_base__make_slice_u8(buf->data.ptr + buf->meta.wi, in wuffs_base__io_buffer__writer_slice()
2990 buf->data.len - buf->meta.wi) in wuffs_base__io_buffer__writer_slice()
3058 // ---------------- Tokens
3087 // --------
3102 // --------
3113 // --------
3119 // COMMENT_ANY is a bit-wise or of COMMENT_BLOCK AND COMMENT_LINE.
3122 // --------
3133 // --------
3139 // CHAIN_ETC means that decoding the entire token chain forms a UTF-8 or ASCII
3141 // Unicode (UTF-8) strings from byte strings. MUST means that the the token
3145 // When a CHAIN_ETC_UTF_8 bit is set, the parser must ensure that non-ASCII
3146 // code points (with multi-byte UTF-8 encodings) do not straddle token
3147 // boundaries. Checking UTF-8 validity can inspect each token separately.
3149 // The lack of any particular bit is conservative: it is valid for all-ASCII
3150 // strings, in a single- or multi-token chain, to have none of these bits set.
3163 // Post-processing may further transform those D destination bytes (e.g. treat
3180 // --------
3187 // --------
3191 // - WUFFS_BASE__TOKEN__VBD__NUMBER__CONTENT_FLOATING_POINT.
3192 // - WUFFS_BASE__TOKEN__VBD__NUMBER__CONTENT_INTEGER_SIGNED.
3193 // - WUFFS_BASE__TOKEN__VBD__NUMBER__CONTENT_INTEGER_UNSIGNED.
3195 // For a source string of "+123" or "-0x9A", only the first two are valid.
3208 // "300", which are big-endian, little-endian or text. For binary formats, the
3210 // e.g. u16 little-endian vs u32 little-endian.
3217 // --------
3219 // wuffs_base__token__value returns the token's high 46 bits, sign-extended. A
3220 // negative value means an extended token, non-negative means a simple token.
3223 return ((int64_t)(t->repr)) >> WUFFS_BASE__TOKEN__VALUE__SHIFT; in wuffs_base__token__value()
3230 return (~(int64_t)(t->repr)) >> WUFFS_BASE__TOKEN__VALUE_EXTENSION__SHIFT; in wuffs_base__token__value_extension()
3237 return ((int64_t)(t->repr)) >> WUFFS_BASE__TOKEN__VALUE_MAJOR__SHIFT; in wuffs_base__token__value_major()
3244 return ((int64_t)(t->repr)) >> WUFFS_BASE__TOKEN__VALUE_BASE_CATEGORY__SHIFT; in wuffs_base__token__value_base_category()
3249 return (t->repr >> WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) & 0x1FFFFFF; in wuffs_base__token__value_minor()
3254 return (t->repr >> WUFFS_BASE__TOKEN__VALUE_BASE_DETAIL__SHIFT) & 0x1FFFFF; in wuffs_base__token__value_base_detail()
3260 // The VBD is 21 bits in the middle of t->repr. Left shift the high (64 - 21 in wuffs_base__token__value_base_detail__sign_extended()
3261 // - ETC__SHIFT) bits off, then right shift (sign-extending) back down. in wuffs_base__token__value_base_detail__sign_extended()
3262 uint64_t u = t->repr << (43 - WUFFS_BASE__TOKEN__VALUE_BASE_DETAIL__SHIFT); in wuffs_base__token__value_base_detail__sign_extended()
3268 return t->repr & 0x10000; in wuffs_base__token__continued()
3273 return (t->repr >> WUFFS_BASE__TOKEN__LENGTH__SHIFT) & 0xFFFF; in wuffs_base__token__length()
3325 // --------
3345 // --------
3356 // wuffs_base__token_buffer is a 1-dimensional buffer (a pointer and length)
3450 if (buf->data.ptr) { in wuffs_base__token_buffer__is_valid()
3451 return (buf->meta.ri <= buf->meta.wi) && (buf->meta.wi <= buf->data.len); in wuffs_base__token_buffer__is_valid()
3453 return (buf->meta.ri == 0) && (buf->meta.wi == 0) && (buf->data.len == 0); in wuffs_base__token_buffer__is_valid()
3463 if (!buf || (buf->meta.ri == 0)) { in wuffs_base__token_buffer__compact()
3466 buf->meta.pos = wuffs_base__u64__sat_add(buf->meta.pos, buf->meta.ri); in wuffs_base__token_buffer__compact()
3467 size_t n = buf->meta.wi - buf->meta.ri; in wuffs_base__token_buffer__compact()
3469 memmove(buf->data.ptr, buf->data.ptr + buf->meta.ri, in wuffs_base__token_buffer__compact()
3472 buf->meta.wi = n; in wuffs_base__token_buffer__compact()
3473 buf->meta.ri = 0; in wuffs_base__token_buffer__compact()
3478 return buf ? buf->meta.wi - buf->meta.ri : 0; in wuffs_base__token_buffer__reader_length()
3483 return buf ? (buf->data.ptr + buf->meta.ri) : NULL; in wuffs_base__token_buffer__reader_pointer()
3488 return buf ? wuffs_base__make_slice_token(buf->data.ptr + buf->meta.ri, in wuffs_base__token_buffer__reader_slice()
3489 buf->meta.wi - buf->meta.ri) in wuffs_base__token_buffer__reader_slice()
3496 return buf ? wuffs_base__u64__sat_add(buf->meta.pos, buf->meta.ri) : 0; in wuffs_base__token_buffer__reader_token_position()
3501 return buf ? buf->data.len - buf->meta.wi : 0; in wuffs_base__token_buffer__writer_length()
3506 return buf ? (buf->data.ptr + buf->meta.wi) : NULL; in wuffs_base__token_buffer__writer_pointer()
3511 return buf ? wuffs_base__make_slice_token(buf->data.ptr + buf->meta.wi, in wuffs_base__token_buffer__writer_slice()
3512 buf->data.len - buf->meta.wi) in wuffs_base__token_buffer__writer_slice()
3519 return buf ? wuffs_base__u64__sat_add(buf->meta.pos, buf->meta.wi) : 0; in wuffs_base__token_buffer__writer_token_position()
3576 // ---------------- Memory Allocation
3581 // wuffs_base__malloc_slice_uxx wraps calling a malloc-like function, except
3635 // ---------------- Images
3679 // Work in 16-bit color. in wuffs_base__color_u32_argb_premul__as__color_u8_gray()
3688 // shift by 24, not just by 16, because the return value is 8-bit color, not in wuffs_base__color_u32_argb_premul__as__color_u8_gray()
3689 // 16-bit color. in wuffs_base__color_u32_argb_premul__as__color_u8_gray()
3697 // Work in 16-bit color. in wuffs_base__color_u32_argb_premul__as__color_u16_gray()
3711 // from non-premultiplied alpha to premultiplied alpha.
3716 // from 8-bit to 16-bit color. Shifting right by 8 undoes that. in wuffs_base__color_u32_argb_nonpremul__as__color_u32_argb_premul()
3719 // arguably slightly more accurate) results. For example, given 8-bit blue in wuffs_base__color_u32_argb_nonpremul__as__color_u32_argb_premul()
3722 // - ((0x80 * 0x81 ) / 0xFF ) = 0x40 = 0x40 in wuffs_base__color_u32_argb_nonpremul__as__color_u32_argb_premul()
3723 // - ((0x8080 * 0x8181) / 0xFFFF) >> 8 = 0x4101 >> 8 = 0x41 in wuffs_base__color_u32_argb_nonpremul__as__color_u32_argb_premul()
3738 // from premultiplied alpha to non-premultiplied alpha.
3761 // from 4x16LE non-premultiplied alpha to 4x8 premultiplied alpha.
3779 // from 4x8 premultiplied alpha to 4x16LE non-premultiplied alpha.
3822 // --------
3827 // accounting for transparency. It encompasses the Porter-Duff compositing
3834 // --------
3850 // --------
3863 // See https://github.com/google/wuffs/blob/main/doc/note/pixel-formats.md
3890 // Common 8-bit-depth pixel formats. This list is not exhaustive; not all valid
3939 return f->repr != 0; in wuffs_base__pixel_format__is_valid()
3946 if (((f->repr >> 16) & 0x03) != 0) { in wuffs_base__pixel_format__bits_per_pixel()
3949 return wuffs_base__pixel_format__bits_per_channel[0x0F & (f->repr >> 0)] + in wuffs_base__pixel_format__bits_per_pixel()
3950 wuffs_base__pixel_format__bits_per_channel[0x0F & (f->repr >> 4)] + in wuffs_base__pixel_format__bits_per_pixel()
3951 wuffs_base__pixel_format__bits_per_channel[0x0F & (f->repr >> 8)] + in wuffs_base__pixel_format__bits_per_pixel()
3952 wuffs_base__pixel_format__bits_per_channel[0x0F & (f->repr >> 12)]; in wuffs_base__pixel_format__bits_per_pixel()
3957 return ((f->repr >> 18) & 0x01) == 0; in wuffs_base__pixel_format__is_direct()
3962 return ((f->repr >> 18) & 0x01) != 0; in wuffs_base__pixel_format__is_indexed()
3967 return ((f->repr >> 16) & 0x03) == 0; in wuffs_base__pixel_format__is_interleaved()
3972 return ((f->repr >> 16) & 0x03) != 0; in wuffs_base__pixel_format__is_planar()
3977 return ((f->repr >> 16) & 0x03) + 1; in wuffs_base__pixel_format__num_planes()
3982 return (wuffs_base__pixel_alpha_transparency)((f->repr >> 24) & 0x03); in wuffs_base__pixel_format__transparency()
4029 // --------
4034 // See https://github.com/google/wuffs/blob/main/doc/note/pixel-subsampling.md
4070 return (s->repr >> shift) & 0x03; in wuffs_base__pixel_subsampling__bias_x()
4078 return ((s->repr >> shift) & 0x03) + 1; in wuffs_base__pixel_subsampling__denominator_x()
4085 return (s->repr >> shift) & 0x03; in wuffs_base__pixel_subsampling__bias_y()
4093 return ((s->repr >> shift) & 0x03) + 1; in wuffs_base__pixel_subsampling__denominator_y()
4120 // --------
4173 c->private_impl.pixfmt.repr = pixfmt_repr; in wuffs_base__pixel_config__set()
4174 c->private_impl.pixsub.repr = pixsub_repr; in wuffs_base__pixel_config__set()
4175 c->private_impl.width = width; in wuffs_base__pixel_config__set()
4176 c->private_impl.height = height; in wuffs_base__pixel_config__set()
4181 c->private_impl.pixfmt.repr = 0; in wuffs_base__pixel_config__set()
4182 c->private_impl.pixsub.repr = 0; in wuffs_base__pixel_config__set()
4183 c->private_impl.width = 0; in wuffs_base__pixel_config__set()
4184 c->private_impl.height = 0; in wuffs_base__pixel_config__set()
4190 c->private_impl.pixfmt.repr = 0; in wuffs_base__pixel_config__invalidate()
4191 c->private_impl.pixsub.repr = 0; in wuffs_base__pixel_config__invalidate()
4192 c->private_impl.width = 0; in wuffs_base__pixel_config__invalidate()
4193 c->private_impl.height = 0; in wuffs_base__pixel_config__invalidate()
4199 return c && c->private_impl.pixfmt.repr; in wuffs_base__pixel_config__is_valid()
4204 return c ? c->private_impl.pixfmt : wuffs_base__make_pixel_format(0); in wuffs_base__pixel_config__pixel_format()
4209 return c ? c->private_impl.pixsub : wuffs_base__make_pixel_subsampling(0); in wuffs_base__pixel_config__pixel_subsampling()
4218 ret.max_excl_x = c->private_impl.width; in wuffs_base__pixel_config__bounds()
4219 ret.max_excl_y = c->private_impl.height; in wuffs_base__pixel_config__bounds()
4233 return c ? c->private_impl.width : 0; in wuffs_base__pixel_config__width()
4238 return c ? c->private_impl.height : 0; in wuffs_base__pixel_config__height()
4249 if (wuffs_base__pixel_format__is_planar(&c->private_impl.pixfmt)) { in wuffs_base__pixel_config__pixbuf_len()
4254 wuffs_base__pixel_format__bits_per_pixel(&c->private_impl.pixfmt); in wuffs_base__pixel_config__pixbuf_len()
4256 // TODO: support fraction-of-byte pixels, e.g. 1 bit per pixel? in wuffs_base__pixel_config__pixbuf_len()
4262 ((uint64_t)c->private_impl.width) * ((uint64_t)c->private_impl.height); in wuffs_base__pixel_config__pixbuf_len()
4268 if (wuffs_base__pixel_format__is_indexed(&c->private_impl.pixfmt)) { in wuffs_base__pixel_config__pixbuf_len()
4270 (UINT64_MAX - WUFFS_BASE__PIXEL_FORMAT__INDEXED__PALETTE_BYTE_LENGTH)) { in wuffs_base__pixel_config__pixbuf_len()
4331 // --------
4380 c->pixcfg.private_impl.pixfmt.repr = pixfmt_repr; in wuffs_base__image_config__set()
4381 c->pixcfg.private_impl.pixsub.repr = pixsub_repr; in wuffs_base__image_config__set()
4382 c->pixcfg.private_impl.width = width; in wuffs_base__image_config__set()
4383 c->pixcfg.private_impl.height = height; in wuffs_base__image_config__set()
4384 c->private_impl.first_frame_io_position = first_frame_io_position; in wuffs_base__image_config__set()
4385 c->private_impl.first_frame_is_opaque = first_frame_is_opaque; in wuffs_base__image_config__set()
4389 c->pixcfg.private_impl.pixfmt.repr = 0; in wuffs_base__image_config__set()
4390 c->pixcfg.private_impl.pixsub.repr = 0; in wuffs_base__image_config__set()
4391 c->pixcfg.private_impl.width = 0; in wuffs_base__image_config__set()
4392 c->pixcfg.private_impl.height = 0; in wuffs_base__image_config__set()
4393 c->private_impl.first_frame_io_position = 0; in wuffs_base__image_config__set()
4394 c->private_impl.first_frame_is_opaque = 0; in wuffs_base__image_config__set()
4400 c->pixcfg.private_impl.pixfmt.repr = 0; in wuffs_base__image_config__invalidate()
4401 c->pixcfg.private_impl.pixsub.repr = 0; in wuffs_base__image_config__invalidate()
4402 c->pixcfg.private_impl.width = 0; in wuffs_base__image_config__invalidate()
4403 c->pixcfg.private_impl.height = 0; in wuffs_base__image_config__invalidate()
4404 c->private_impl.first_frame_io_position = 0; in wuffs_base__image_config__invalidate()
4405 c->private_impl.first_frame_is_opaque = 0; in wuffs_base__image_config__invalidate()
4411 return c && wuffs_base__pixel_config__is_valid(&(c->pixcfg)); in wuffs_base__image_config__is_valid()
4417 return c ? c->private_impl.first_frame_io_position : 0; in wuffs_base__image_config__first_frame_io_position()
4423 return c ? c->private_impl.first_frame_is_opaque : false; in wuffs_base__image_config__first_frame_is_opaque()
4461 // --------
4465 // - None means to draw the next frame on top of this one.
4466 // - Restore Background means to clear the frame's dirty rectangle to "the
4469 // - Restore Previous means to undo the current frame, so that the next frame
4479 // --------
4546 c->private_impl.bounds = bounds; in wuffs_base__frame_config__set()
4547 c->private_impl.duration = duration; in wuffs_base__frame_config__set()
4548 c->private_impl.index = index; in wuffs_base__frame_config__set()
4549 c->private_impl.io_position = io_position; in wuffs_base__frame_config__set()
4550 c->private_impl.disposal = disposal; in wuffs_base__frame_config__set()
4551 c->private_impl.opaque_within_bounds = opaque_within_bounds; in wuffs_base__frame_config__set()
4552 c->private_impl.overwrite_instead_of_blend = overwrite_instead_of_blend; in wuffs_base__frame_config__set()
4553 c->private_impl.background_color = background_color; in wuffs_base__frame_config__set()
4559 return c->private_impl.bounds; in wuffs_base__frame_config__bounds()
4572 return c ? wuffs_base__rect_ie_u32__width(&c->private_impl.bounds) : 0; in wuffs_base__frame_config__width()
4577 return c ? wuffs_base__rect_ie_u32__height(&c->private_impl.bounds) : 0; in wuffs_base__frame_config__height()
4581 // this frame. Zero means to display forever - a still (non-animated) image.
4584 return c ? c->private_impl.duration : 0; in wuffs_base__frame_config__duration()
4591 return c ? c->private_impl.index : 0; in wuffs_base__frame_config__index()
4598 return c ? c->private_impl.io_position : 0; in wuffs_base__frame_config__io_position()
4605 return c ? c->private_impl.disposal : 0; in wuffs_base__frame_config__disposal()
4622 return c && c->private_impl.opaque_within_bounds; in wuffs_base__frame_config__opaque_within_bounds()
4636 return c && c->private_impl.overwrite_instead_of_blend; in wuffs_base__frame_config__overwrite_instead_of_blend()
4641 return c ? c->private_impl.background_color : 0; in wuffs_base__frame_config__background_color()
4713 // --------
4775 wuffs_base__pixel_format__is_planar(&pixcfg->private_impl.pixfmt)) { in wuffs_base__pixel_buffer__set_interleaved()
4778 if (wuffs_base__pixel_format__is_indexed(&pixcfg->private_impl.pixfmt) && in wuffs_base__pixel_buffer__set_interleaved()
4785 wuffs_base__pixel_format__bits_per_pixel(&pixcfg->private_impl.pixfmt); in wuffs_base__pixel_buffer__set_interleaved()
4787 // TODO: support fraction-of-byte pixels, e.g. 1 bit per pixel? in wuffs_base__pixel_buffer__set_interleaved()
4793 ((uint64_t)pixcfg->private_impl.width) * bytes_per_pixel; in wuffs_base__pixel_buffer__set_interleaved()
4795 (pixcfg->private_impl.height > primary_memory.height)) { in wuffs_base__pixel_buffer__set_interleaved()
4799 pb->pixcfg = *pixcfg; in wuffs_base__pixel_buffer__set_interleaved()
4800 pb->private_impl.planes[0] = primary_memory; in wuffs_base__pixel_buffer__set_interleaved()
4801 if (wuffs_base__pixel_format__is_indexed(&pixcfg->private_impl.pixfmt)) { in wuffs_base__pixel_buffer__set_interleaved()
4803 &pb->private_impl in wuffs_base__pixel_buffer__set_interleaved()
4805 tab->ptr = palette_memory.ptr; in wuffs_base__pixel_buffer__set_interleaved()
4806 tab->width = WUFFS_BASE__PIXEL_FORMAT__INDEXED__PALETTE_BYTE_LENGTH; in wuffs_base__pixel_buffer__set_interleaved()
4807 tab->height = 1; in wuffs_base__pixel_buffer__set_interleaved()
4808 tab->stride = WUFFS_BASE__PIXEL_FORMAT__INDEXED__PALETTE_BYTE_LENGTH; in wuffs_base__pixel_buffer__set_interleaved()
4824 if (wuffs_base__pixel_format__is_planar(&pixcfg->private_impl.pixfmt)) { in wuffs_base__pixel_buffer__set_from_slice()
4829 wuffs_base__pixel_format__bits_per_pixel(&pixcfg->private_impl.pixfmt); in wuffs_base__pixel_buffer__set_from_slice()
4831 // TODO: support fraction-of-byte pixels, e.g. 1 bit per pixel? in wuffs_base__pixel_buffer__set_from_slice()
4838 if (wuffs_base__pixel_format__is_indexed(&pixcfg->private_impl.pixfmt)) { in wuffs_base__pixel_buffer__set_from_slice()
4849 &pb->private_impl in wuffs_base__pixel_buffer__set_from_slice()
4851 tab->ptr = ptr; in wuffs_base__pixel_buffer__set_from_slice()
4852 tab->width = WUFFS_BASE__PIXEL_FORMAT__INDEXED__PALETTE_BYTE_LENGTH; in wuffs_base__pixel_buffer__set_from_slice()
4853 tab->height = 1; in wuffs_base__pixel_buffer__set_from_slice()
4854 tab->stride = WUFFS_BASE__PIXEL_FORMAT__INDEXED__PALETTE_BYTE_LENGTH; in wuffs_base__pixel_buffer__set_from_slice()
4856 len -= WUFFS_BASE__PIXEL_FORMAT__INDEXED__PALETTE_BYTE_LENGTH; in wuffs_base__pixel_buffer__set_from_slice()
4859 uint64_t wh = ((uint64_t)pixcfg->private_impl.width) * in wuffs_base__pixel_buffer__set_from_slice()
4860 ((uint64_t)pixcfg->private_impl.height); in wuffs_base__pixel_buffer__set_from_slice()
4861 size_t width = (size_t)(pixcfg->private_impl.width); in wuffs_base__pixel_buffer__set_from_slice()
4873 pb->pixcfg = *pixcfg; in wuffs_base__pixel_buffer__set_from_slice()
4874 wuffs_base__table_u8* tab = &pb->private_impl.planes[0]; in wuffs_base__pixel_buffer__set_from_slice()
4875 tab->ptr = ptr; in wuffs_base__pixel_buffer__set_from_slice()
4876 tab->width = width; in wuffs_base__pixel_buffer__set_from_slice()
4877 tab->height = pixcfg->private_impl.height; in wuffs_base__pixel_buffer__set_from_slice()
4878 tab->stride = width; in wuffs_base__pixel_buffer__set_from_slice()
4893 wuffs_base__pixel_format__is_indexed(&pixcfg->private_impl.pixfmt) || in wuffs_base__pixel_buffer__set_from_table()
4894 wuffs_base__pixel_format__is_planar(&pixcfg->private_impl.pixfmt)) { in wuffs_base__pixel_buffer__set_from_table()
4898 wuffs_base__pixel_format__bits_per_pixel(&pixcfg->private_impl.pixfmt); in wuffs_base__pixel_buffer__set_from_table()
4900 // TODO: support fraction-of-byte pixels, e.g. 1 bit per pixel? in wuffs_base__pixel_buffer__set_from_table()
4906 ((uint64_t)pixcfg->private_impl.width) * bytes_per_pixel; in wuffs_base__pixel_buffer__set_from_table()
4908 (pixcfg->private_impl.height > primary_memory.height)) { in wuffs_base__pixel_buffer__set_from_table()
4912 pb->pixcfg = *pixcfg; in wuffs_base__pixel_buffer__set_from_table()
4913 pb->private_impl.planes[0] = primary_memory; in wuffs_base__pixel_buffer__set_from_table()
4918 // non-empty, it will have length
4923 wuffs_base__pixel_format__is_indexed(&pb->pixcfg.private_impl.pixfmt)) { in wuffs_base__pixel_buffer__palette()
4925 &pb->private_impl in wuffs_base__pixel_buffer__palette()
4927 if ((tab->width == in wuffs_base__pixel_buffer__palette()
4929 (tab->height == 1)) { in wuffs_base__pixel_buffer__palette()
4931 tab->ptr, WUFFS_BASE__PIXEL_FORMAT__INDEXED__PALETTE_BYTE_LENGTH); in wuffs_base__pixel_buffer__palette()
4941 wuffs_base__pixel_format__is_indexed(&pb->pixcfg.private_impl.pixfmt)) { in wuffs_base__pixel_buffer__palette_or_else()
4943 &pb->private_impl in wuffs_base__pixel_buffer__palette_or_else()
4945 if ((tab->width == in wuffs_base__pixel_buffer__palette_or_else()
4947 (tab->height == 1)) { in wuffs_base__pixel_buffer__palette_or_else()
4949 tab->ptr, WUFFS_BASE__PIXEL_FORMAT__INDEXED__PALETTE_BYTE_LENGTH); in wuffs_base__pixel_buffer__palette_or_else()
4958 return pb->pixcfg.private_impl.pixfmt; in wuffs_base__pixel_buffer__pixel_format()
4966 return pb->private_impl.planes[p]; in wuffs_base__pixel_buffer__plane()
5070 // --------
5088 // --------
5097 // Applying this function on a per-pixel basis will not produce whole-of-image
5105 // --------
5150 // For modular builds that divide the base module into sub-modules, using this
5151 // function requires the WUFFS_CONFIG__MODULE__BASE__PIXCONV sub-module, not
5164 // For modular builds that divide the base module into sub-modules, using this
5165 // function requires the WUFFS_CONFIG__MODULE__BASE__PIXCONV sub-module, not
5197 // ---------------- String Conversions
5215 // "1,5" and not "1.5" as one-and-a-half.
5224 // would lead to infinite or Not-a-Number floating point values. By default,
5228 // "1e999" that would overflow double-precision floating point.
5231 // --------
5246 // "+" for non-negative numbers: "+0" and "+12.3" instead of "0" and "12.3".
5250 // one-and-a-half as "1,5" instead of "1.5".
5261 // is preferred over "5e-01" but "5e-09" is preferred over "0.000000005".
5267 // the same double-precision floating point number.
5269 // For example, double-precision cannot distinguish between 0.3 and
5277 // ---------------- IEEE 754 Floating Point
5281 // - 16-bit: 1 sign bit, 5 exponent bits, 10 explicit significand bits.
5282 // - 32-bit: 1 sign bit, 8 exponent bits, 23 explicit significand bits.
5283 // - 64-bit: 1 sign bit, 11 exponent bits, 52 explicit significand bits.
5286 // - +1.0 and 0x3C00, 0x3F80_0000 or 0x3FF0_0000_0000_0000.
5287 // - +5.5 and 0x4580, 0x40B0_0000 or 0x4016_0000_0000_0000.
5288 // - -inf and 0xFC00, 0xFF80_0000 or 0xFFF0_0000_0000_0000.
5293 // (closer-to-zero) finite numbers. For example, 1048576.0 is a perfectly valid
5295 // the largest finite f16 number. Truncating a f64-typed value d to f32 does
5296 // not always produce the same result as the C-style cast ((float)d), as
5300 // no loss, even though there a multiple NaN representations so that round-
5301 // tripping a f64-typed NaN may produce a different 64 bits. Nonetheless, the
5304 // See https://en.wikipedia.org/wiki/Double-precision_floating-point_format
5341 exp += 1008; // 1008 = 1023 - 15, the difference in biases. in wuffs_base__ieee_754_bit_representation__from_u16_to_f64()
5342 } else if (man != 0) { // Subnormal but non-zero. in wuffs_base__ieee_754_bit_representation__from_u16_to_f64()
5343 uint32_t clz = wuffs_base__count_leading_zeroes_u64(man); in wuffs_base__ieee_754_bit_representation__from_u16_to_f64() local
5344 exp = 1062 - clz; // 1062 = 1008 + 64 - 10. in wuffs_base__ieee_754_bit_representation__from_u16_to_f64()
5345 man = 0x3FF & (man << (clz - 53)); in wuffs_base__ieee_754_bit_representation__from_u16_to_f64()
5377 // ---------------- Parsing and Rendering Numbers
5385 // s is "0.3", which double-precision floating point cannot represent exactly.
5392 // - Errors are returned in-band (in a result type), not out-of-band (errno).
5393 // - It takes a slice (a pointer and length), not a NUL-terminated C string.
5394 // - It does not take an optional endptr argument. It does not allow a partial
5396 // - It does not allow whitespace, leading or otherwise.
5397 // - It does not allow hexadecimal floating point numbers.
5398 // - It is not affected by i18n / l10n settings such as environment variables.
5401 // - Allows "inf", "+Infinity" and "-NAN", case insensitive. Similarly,
5402 // without an explicit opt-out, it would successfully parse "1e999" as
5403 // infinity, even though it overflows double-precision floating point.
5404 // - Rejects underscores. With an explicit opt-in, "_3.141_592" would
5406 // - Rejects unnecessary leading zeroes: "00", "0644" and "00.7".
5407 // - Uses a dot '1.5' instead of a comma '1,5' for the decimal separator.
5409 // For modular builds that divide the base module into sub-modules, using this
5410 // function requires the WUFFS_CONFIG__MODULE__BASE__FLOATCONV sub-module, not
5416 // s contains the bytes "-123" then it will return the int64_t -123.
5422 // integer, not an unsigned integer. It also allows a leading '+' or '-'.
5424 // For modular builds that divide the base module into sub-modules, using this
5425 // function requires the WUFFS_CONFIG__MODULE__BASE__INTCONV sub-module, not
5437 // - Errors are returned in-band (in a result type), not out-of-band (errno).
5438 // - It takes a slice (a pointer and length), not a NUL-terminated C string.
5439 // - It does not take an optional endptr argument. It does not allow a partial
5441 // - It does not allow whitespace, leading or otherwise.
5442 // - It does not allow a leading '+' or '-'.
5443 // - It does not take a base argument (e.g. base 10 vs base 16). Instead, it
5448 // - It is not affected by i18n / l10n settings such as environment variables.
5451 // - Rejects underscores. With an explicit opt-in, "__0D_1_002" would
5453 // rejected inside the optional 2-byte opening "0d" or "0X" that denotes
5454 // base-10 or base-16.
5455 // - Rejects unnecessary leading zeroes: "00" and "0644".
5457 // For modular builds that divide the base module into sub-modules, using this
5458 // function requires the WUFFS_CONFIG__MODULE__BASE__INTCONV sub-module, not
5463 // --------
5466 // "-9223372036854775808" and "+9223372036854775807", INT64_MIN and INT64_MAX.
5478 // - "%e" means the WUFFS_BASE__RENDER_NUMBER_FXX__EXPONENT_PRESENT option.
5479 // - "%f" means the WUFFS_BASE__RENDER_NUMBER_FXX__EXPONENT_ABSENT option.
5480 // - "%g" means neither or both bits are set.
5484 // - for "%e" and "%f" it is the number of digits after the decimal separator,
5485 // - for "%g" it is the number of significant digits (and trailing zeroes are
5494 // similar to Go's strconv.FormatFloat with a negative (i.e. non-sensical)
5498 // WUFFS_BASE__RENDER_NUMBER_XXX__LEADING_PLUS_SIGN option is set) or "-Inf".
5500 // For modular builds that divide the base module into sub-modules, using this
5501 // function requires the WUFFS_CONFIG__MODULE__BASE__FLOATCONV sub-module, not
5516 // For modular builds that divide the base module into sub-modules, using this
5517 // function requires the WUFFS_CONFIG__MODULE__BASE__INTCONV sub-module, not
5531 // For modular builds that divide the base module into sub-modules, using this
5532 // function requires the WUFFS_CONFIG__MODULE__BASE__INTCONV sub-module, not
5539 // ---------------- Base-16
5548 // It assumes that the src bytes are two hexadecimal digits (0-9, A-F, a-f),
5552 // For modular builds that divide the base module into sub-modules, using this
5553 // function requires the WUFFS_CONFIG__MODULE__BASE__INTCONV sub-module, not
5565 // digits (0-9, A-F, a-f), repeated. It may write nonsense bytes if not,
5568 // For modular builds that divide the base module into sub-modules, using this
5569 // function requires the WUFFS_CONFIG__MODULE__BASE__INTCONV sub-module, not
5580 // For modular builds that divide the base module into sub-modules, using this
5581 // function requires the WUFFS_CONFIG__MODULE__BASE__INTCONV sub-module, not
5592 // For modular builds that divide the base module into sub-modules, using this
5593 // function requires the WUFFS_CONFIG__MODULE__BASE__INTCONV sub-module, not
5601 // ---------------- Base-64
5607 // WUFFS_BASE__BASE_64__DECODE_ALLOW_PADDING means that, when decoding base-64,
5615 // WUFFS_BASE__BASE_64__ENCODE_EMIT_PADDING means that, when encoding base-64,
5620 // WUFFS_BASE__BASE_64__URL_ALPHABET means that, for base-64, the URL-friendly
5621 // and file-name-friendly alphabet be used, as per RFC 4648 section 5. When
5625 // wuffs_base__base_64__decode transforms base-64 encoded bytes from src to
5631 // For modular builds that divide the base module into sub-modules, using this
5632 // function requires the WUFFS_CONFIG__MODULE__BASE__INTCONV sub-module, not
5640 // wuffs_base__base_64__encode transforms arbitrary bytes from src to base-64
5643 // For modular builds that divide the base module into sub-modules, using this
5644 // function requires the WUFFS_CONFIG__MODULE__BASE__INTCONV sub-module, not
5652 // ---------------- Unicode and UTF-8
5677 // --------
5704 uint32_t cp = o->code_point; in wuffs_base__utf_8__next__output__is_valid()
5705 switch (o->byte_length) { in wuffs_base__utf_8__next__output__is_valid()
5730 // --------
5732 // wuffs_base__utf_8__encode writes the UTF-8 encoding of code_point to s and
5739 // For modular builds that divide the base module into sub-modules, using this
5740 // function requires the WUFFS_CONFIG__MODULE__BASE__UTF8 sub-module, not just
5745 // wuffs_base__utf_8__next returns the next UTF-8 code point (and that code
5746 // point's byte length) at the start of the read-only slice (s_ptr, s_len).
5750 // - If s is empty then it returns {.code_point=0, .byte_length=0}.
5751 // - If s is non-empty and starts with invalid UTF-8 then it returns
5758 // - (output.code_point <= WUFFS_BASE__UNICODE_CODE_POINT__MAX_INCL).
5759 // - (output.byte_length <= s_len).
5761 // If s is a sub-slice of a larger slice of valid UTF-8, but that sub-slice
5762 // boundary occurs in the middle of a multi-byte UTF-8 encoding of a single
5764 // caller's responsibility to split on or otherwise manage UTF-8 boundaries.
5766 // For modular builds that divide the base module into sub-modules, using this
5767 // function requires the WUFFS_CONFIG__MODULE__BASE__UTF8 sub-module, not just
5775 // For modular builds that divide the base module into sub-modules, using this
5776 // function requires the WUFFS_CONFIG__MODULE__BASE__UTF8 sub-module, not just
5782 // sub-slice s[..n] is valid UTF-8, where s is the read-only slice (s_ptr,
5785 // In particular, it returns s_len if and only if all of s is valid UTF-8.
5787 // If s is a sub-slice of a larger slice of valid UTF-8, but that sub-slice
5788 // boundary occurs in the middle of a multi-byte UTF-8 encoding of a single
5790 // caller's responsibility to split on or otherwise manage UTF-8 boundaries.
5792 // For modular builds that divide the base module into sub-modules, using this
5793 // function requires the WUFFS_CONFIG__MODULE__BASE__UTF8 sub-module, not just
5799 // sub-slice s[..n] is valid ASCII, where s is the read-only slice (s_ptr,
5805 // For modular builds that divide the base module into sub-modules, using this
5806 // function requires the WUFFS_CONFIG__MODULE__BASE__UTF8 sub-module, not just
5811 // ---------------- Interface Declarations.
5813 // For modular builds that divide the base module into sub-modules, using these
5814 // functions require the WUFFS_CONFIG__MODULE__BASE__INTERFACES sub-module, not
5817 // --------
5878 // --------
6099 // --------
6177 // --------
6255 // ----------------
6261 // ---------------- Status Codes
6263 // ---------------- Public Consts
6265 // ---------------- Struct Declarations
6273 // ---------------- Public Initializer Prototypes
6291 // ---------------- Allocs
6294 // memory allocation fails. If they return non-NULL, there is no need to call
6307 // ---------------- Upcasts
6315 // ---------------- Public Function Prototypes
6332 // ---------------- Struct Definitions
6384 // size and field layout is not part of the public, stable, memory-safe API.
6386 // call wuffs_foo__bar__baz methods (which all take a "this"-like pointer as
6392 // can write "bar->baz(etc)" instead of "wuffs_foo__bar__baz(bar, etc)".
6443 // ---------------- Status Codes
6449 // ---------------- Public Consts
6453 // ---------------- Struct Declarations
6461 // ---------------- Public Initializer Prototypes
6479 // ---------------- Allocs
6482 // memory allocation fails. If they return non-NULL, there is no need to call
6495 // ---------------- Upcasts
6503 // ---------------- Public Function Prototypes
6575 // ---------------- Struct Definitions
6668 // size and field layout is not part of the public, stable, memory-safe API.
6670 // call wuffs_foo__bar__baz methods (which all take a "this"-like pointer as
6676 // can write "bar->baz(etc)" instead of "wuffs_foo__bar__baz(bar, etc)".
6792 // ---------------- Status Codes
6797 // ---------------- Public Consts
6817 // ---------------- Struct Declarations
6825 // ---------------- Public Initializer Prototypes
6843 // ---------------- Allocs
6846 // memory allocation fails. If they return non-NULL, there is no need to call
6859 // ---------------- Upcasts
6867 // ---------------- Public Function Prototypes
6890 // ---------------- Struct Definitions
6952 // size and field layout is not part of the public, stable, memory-safe API.
6954 // call wuffs_foo__bar__baz methods (which all take a "this"-like pointer as
6960 // can write "bar->baz(etc)" instead of "wuffs_foo__bar__baz(bar, etc)".
7018 // ---------------- Status Codes
7020 // ---------------- Public Consts
7022 // ---------------- Struct Declarations
7030 // ---------------- Public Initializer Prototypes
7048 // ---------------- Allocs
7051 // memory allocation fails. If they return non-NULL, there is no need to call
7064 // ---------------- Upcasts
7072 // ---------------- Public Function Prototypes
7089 // ---------------- Struct Definitions
7140 // size and field layout is not part of the public, stable, memory-safe API.
7142 // call wuffs_foo__bar__baz methods (which all take a "this"-like pointer as
7148 // can write "bar->baz(etc)" instead of "wuffs_foo__bar__baz(bar, etc)".
7199 // ---------------- Status Codes
7215 // ---------------- Public Consts
7219 // ---------------- Struct Declarations
7227 // ---------------- Public Initializer Prototypes
7245 // ---------------- Allocs
7248 // memory allocation fails. If they return non-NULL, there is no need to call
7261 // ---------------- Upcasts
7269 // ---------------- Public Function Prototypes
7297 // ---------------- Struct Definitions
7400 // size and field layout is not part of the public, stable, memory-safe API.
7402 // call wuffs_foo__bar__baz methods (which all take a "this"-like pointer as
7408 // can write "bar->baz(etc)" instead of "wuffs_foo__bar__baz(bar, etc)".
7472 // ---------------- Status Codes
7476 // ---------------- Public Consts
7480 // ---------------- Struct Declarations
7488 // ---------------- Public Initializer Prototypes
7506 // ---------------- Allocs
7509 // memory allocation fails. If they return non-NULL, there is no need to call
7522 // ---------------- Upcasts
7530 // ---------------- Public Function Prototypes
7562 // ---------------- Struct Definitions
7630 // size and field layout is not part of the public, stable, memory-safe API.
7632 // call wuffs_foo__bar__baz methods (which all take a "this"-like pointer as
7638 // can write "bar->baz(etc)" instead of "wuffs_foo__bar__baz(bar, etc)".
7707 // ---------------- Status Codes
7716 // ---------------- Public Consts
7734 // ---------------- Struct Declarations
7742 // ---------------- Public Initializer Prototypes
7760 // ---------------- Allocs
7763 // memory allocation fails. If they return non-NULL, there is no need to call
7776 // ---------------- Upcasts
7784 // ---------------- Public Function Prototypes
7856 // ---------------- Struct Definitions
8008 // size and field layout is not part of the public, stable, memory-safe API.
8010 // call wuffs_foo__bar__baz methods (which all take a "this"-like pointer as
8016 // can write "bar->baz(etc)" instead of "wuffs_foo__bar__baz(bar, etc)".
8132 // ---------------- Status Codes
8139 // ---------------- Public Consts
8143 // ---------------- Struct Declarations
8151 // ---------------- Public Initializer Prototypes
8169 // ---------------- Allocs
8172 // memory allocation fails. If they return non-NULL, there is no need to call
8185 // ---------------- Upcasts
8193 // ---------------- Public Function Prototypes
8216 // ---------------- Struct Definitions
8278 // size and field layout is not part of the public, stable, memory-safe API.
8280 // call wuffs_foo__bar__baz methods (which all take a "this"-like pointer as
8286 // can write "bar->baz(etc)" instead of "wuffs_foo__bar__baz(bar, etc)".
8344 // ---------------- Status Codes
8355 // ---------------- Public Consts
8405 // ---------------- Struct Declarations
8413 // ---------------- Public Initializer Prototypes
8431 // ---------------- Allocs
8434 // memory allocation fails. If they return non-NULL, there is no need to call
8447 // ---------------- Upcasts
8455 // ---------------- Public Function Prototypes
8478 // ---------------- Struct Definitions
8549 // size and field layout is not part of the public, stable, memory-safe API.
8551 // call wuffs_foo__bar__baz methods (which all take a "this"-like pointer as
8557 // can write "bar->baz(etc)" instead of "wuffs_foo__bar__baz(bar, etc)".
8615 // ---------------- Status Codes
8620 // ---------------- Public Consts
8624 // ---------------- Struct Declarations
8632 // ---------------- Public Initializer Prototypes
8650 // ---------------- Allocs
8653 // memory allocation fails. If they return non-NULL, there is no need to call
8666 // ---------------- Upcasts
8674 // ---------------- Public Function Prototypes
8746 // ---------------- Struct Definitions
8809 // size and field layout is not part of the public, stable, memory-safe API.
8811 // call wuffs_foo__bar__baz methods (which all take a "this"-like pointer as
8817 // can write "bar->baz(etc)" instead of "wuffs_foo__bar__baz(bar, etc)".
8933 // ---------------- Status Codes
8942 // ---------------- Public Consts
8948 // ---------------- Struct Declarations
8956 // ---------------- Public Initializer Prototypes
8974 // ---------------- Allocs
8977 // memory allocation fails. If they return non-NULL, there is no need to call
8990 // ---------------- Upcasts
8998 // ---------------- Public Function Prototypes
9030 // ---------------- Struct Definitions
9097 // size and field layout is not part of the public, stable, memory-safe API.
9099 // call wuffs_foo__bar__baz methods (which all take a "this"-like pointer as
9105 // can write "bar->baz(etc)" instead of "wuffs_foo__bar__baz(bar, etc)".
9174 // ---------------- Status Codes
9186 // ---------------- Public Consts
9192 // ---------------- Struct Declarations
9200 // ---------------- Public Initializer Prototypes
9218 // ---------------- Allocs
9221 // memory allocation fails. If they return non-NULL, there is no need to call
9234 // ---------------- Upcasts
9242 // ---------------- Public Function Prototypes
9314 // ---------------- Struct Definitions
9518 // size and field layout is not part of the public, stable, memory-safe API.
9520 // call wuffs_foo__bar__baz methods (which all take a "this"-like pointer as
9526 // can write "bar->baz(etc)" instead of "wuffs_foo__bar__baz(bar, etc)".
9642 // ---------------- Status Codes
9648 // ---------------- Public Consts
9652 // ---------------- Struct Declarations
9660 // ---------------- Public Initializer Prototypes
9678 // ---------------- Allocs
9681 // memory allocation fails. If they return non-NULL, there is no need to call
9694 // ---------------- Upcasts
9702 // ---------------- Public Function Prototypes
9774 // ---------------- Struct Definitions
9863 // size and field layout is not part of the public, stable, memory-safe API.
9865 // call wuffs_foo__bar__baz methods (which all take a "this"-like pointer as
9871 // can write "bar->baz(etc)" instead of "wuffs_foo__bar__baz(bar, etc)".
9987 // ---------------- Status Codes
9991 // ---------------- Public Consts
9995 // ---------------- Struct Declarations
10003 // ---------------- Public Initializer Prototypes
10021 // ---------------- Allocs
10024 // memory allocation fails. If they return non-NULL, there is no need to call
10037 // ---------------- Upcasts
10045 // ---------------- Public Function Prototypes
10117 // ---------------- Struct Definitions
10186 // size and field layout is not part of the public, stable, memory-safe API.
10188 // call wuffs_foo__bar__baz methods (which all take a "this"-like pointer as
10194 // can write "bar->baz(etc)" instead of "wuffs_foo__bar__baz(bar, etc)".
10312 // ---------------- Auxiliary - Base
10315 // https://github.com/google/wuffs/blob/main/doc/note/auxiliary-code.md
10329 // nullptr, since calling free(nullptr) is a no-op.
10334 // --------
10344 // It contains an IOBuffer-typed field whose reader side provides access to
10346 // allocated but not-yet-written-to slack space. For Go programmers, this slack
10357 // - m_buf.meta.wi is roughly analogous to a Go slice's length.
10358 // - m_buf.data.len is roughly analogous to a Go slice's capacity. It is
10363 // bytes referenced by that pointer-length pair (e.g. compactions).
10391 // --------
10401 // --------
10420 // --------
10422 // MemoryInput is an Input that reads from an in-memory source.
10441 // --------
10447 // ---------------- Auxiliary - CBOR
10480 // - WUFFS_BASE__TOKEN__VBD__STRUCTURE__FROM_NONE
10481 // - WUFFS_BASE__TOKEN__VBD__STRUCTURE__FROM_LIST
10482 // - WUFFS_BASE__TOKEN__VBD__STRUCTURE__FROM_DICT
10484 // - WUFFS_BASE__TOKEN__VBD__STRUCTURE__TO_NONE
10485 // - WUFFS_BASE__TOKEN__VBD__STRUCTURE__TO_LIST
10486 // - WUFFS_BASE__TOKEN__VBD__STRUCTURE__TO_DICT
10496 // as DecodeCbor may then de-allocate the backing array.
10498 // The default Done implementation is a no-op.
10505 // - It provides a home for the DefaultValue static method, for Foo callers
10507 // - It provides the "Bar" name at Foo call sites, which can help self-
10509 // - It provides some type safety against accidentally transposing or omitting
10510 // adjacent fundamentally-numeric-typed optional arguments.
10523 // DecodeCbor calls callbacks based on the CBOR-formatted data in input.
10526 // the number of bytes consumed. On failure, error_message is non-empty and
10536 // ---------------- Auxiliary - Image
10560 // It may return early - the third callback might not be invoked if the second
10561 // one fails - but the final callback (Done) is always invoked.
10566 // de-allocated when mem_owner goes out of scope and is destroyed.
10578 // de-allocated when mem_owner goes out of scope and is destroyed.
10611 // - WUFFS_BASE__FOURCC__BMP
10612 // - WUFFS_BASE__FOURCC__GIF
10613 // - WUFFS_BASE__FOURCC__NIE
10614 // - WUFFS_BASE__FOURCC__PNG
10615 // - WUFFS_BASE__FOURCC__TGA
10616 // - WUFFS_BASE__FOURCC__WBMP
10623 // - WUFFS_BASE__MORE_INFORMATION__FLAVOR__METADATA_RAW_PASSTHROUGH
10624 // - WUFFS_BASE__MORE_INFORMATION__FLAVOR__METADATA_PARSED
10640 // - WUFFS_BASE__PIXEL_FORMAT__BGR_565
10641 // - WUFFS_BASE__PIXEL_FORMAT__BGR
10642 // - WUFFS_BASE__PIXEL_FORMAT__BGRA_NONPREMUL
10643 // - WUFFS_BASE__PIXEL_FORMAT__BGRA_NONPREMUL_4X16LE
10644 // - WUFFS_BASE__PIXEL_FORMAT__BGRA_PREMUL
10645 // - WUFFS_BASE__PIXEL_FORMAT__RGBA_NONPREMUL
10646 // - WUFFS_BASE__PIXEL_FORMAT__RGBA_PREMUL
10687 // was successful), or a no-op unique_ptr otherwise. Like any unique_ptr,
10691 // as DecodeImage may then de-allocate the backing array.
10693 // The default Done implementation is a no-op, other than running the
10715 // - It provides a home for the DefaultValue static method, for Foo callers
10717 // - It provides the "Bar" name at Foo call sites, which can help self-
10719 // - It provides some type safety against accidentally transposing or omitting
10720 // adjacent fundamentally-numeric-typed optional arguments.
10753 // Key-Value Pair.
10756 // HandleMetadata callback, the raw argument contains UTF-8 strings.
10760 // Offset (2-Dimensional).
10826 // - On total success, the error_message is empty and pixbuf.pixcfg.is_valid()
10828 // - On partial success (e.g. the input file was truncated but we are still
10829 // able to decode some of the pixels), error_message is non-empty but
10832 // - On failure, the error_message is non_empty and pixbuf.pixcfg.is_valid()
10843 // - WUFFS_BASE__PIXEL_BLEND__SRC
10844 // - WUFFS_BASE__PIXEL_BLEND__SRC_OVER
10856 // width or height is greater than max_incl_dimension or if any opted-in (via
10874 // ---------------- Auxiliary - JSON
10903 // - WUFFS_BASE__TOKEN__VBD__STRUCTURE__FROM_NONE
10904 // - WUFFS_BASE__TOKEN__VBD__STRUCTURE__FROM_LIST
10905 // - WUFFS_BASE__TOKEN__VBD__STRUCTURE__FROM_DICT
10907 // - WUFFS_BASE__TOKEN__VBD__STRUCTURE__TO_NONE
10908 // - WUFFS_BASE__TOKEN__VBD__STRUCTURE__TO_LIST
10909 // - WUFFS_BASE__TOKEN__VBD__STRUCTURE__TO_DICT
10921 // as DecodeJson may then de-allocate the backing array.
10923 // The default Done implementation is a no-op.
10933 // - It provides a home for the DefaultValue static method, for Foo callers
10935 // - It provides the "Bar" name at Foo call sites, which can help self-
10937 // - It provides some type safety against accidentally transposing or omitting
10938 // adjacent fundamentally-numeric-typed optional arguments.
10961 // DecodeJson calls callbacks based on the JSON-formatted data in input.
10964 // the number of bytes consumed. On failure, error_message is non-empty and
10969 // run for the input's sub-node that matches the query. DecodeJson_NoMatch is
10970 // returned if no matching sub-node was found. The empty query matches the
10974 // but only the first match for each '/'-separated fragment is followed.
10993 // ---------------- Fundamentals
10999 // Its (non-zero) value is arbitrary, based on md5sum("wuffs").
11002 // WUFFS_BASE__DISABLED is a magic number to indicate that a non-recoverable
11005 // Its (non-zero) value is arbitrary, based on md5sum("disabled").
11014 // so that clang-format doesn't get confused by the unusual "case"s.
11031 // __GNUC__, clang-cl (which mimics MSVC's cl.exe) does not.
11040 // --------
11055 // --------
11057 // wuffs_base__iterate_total_advance returns the exclusive pointer-offset at
11059 // iteration's sub-slice has length iter_len and are placed iter_advance apart.
11062 // smaller than iter_len, in which case the sub-slices will overlap.
11091 size_t n = total_len - iter_len; in wuffs_base__iterate_total_advance()
11097 // ---------------- Numeric Types
11109 // --------
11151 // ---------------- Slices and Tables
11166 s.ptr += ((uint64_t)(s.len)) - up_to; in wuffs_base__slice_u8__suffix()
11176 // slice) is valid and results in a no-op.
11187 // --------
11197 // ---------------- Slices and Tables (Utility)
11201 // ---------------- Ranges and Rects
11205 return r->min_incl; in wuffs_base__range_ii_u32__get_min_incl()
11210 return r->max_incl; in wuffs_base__range_ii_u32__get_max_incl()
11215 return r->min_incl; in wuffs_base__range_ie_u32__get_min_incl()
11220 return r->max_excl; in wuffs_base__range_ie_u32__get_max_excl()
11225 return r->min_incl; in wuffs_base__range_ii_u64__get_min_incl()
11230 return r->max_incl; in wuffs_base__range_ii_u64__get_max_incl()
11235 return r->min_incl; in wuffs_base__range_ie_u64__get_min_incl()
11240 return r->max_excl; in wuffs_base__range_ie_u64__get_max_excl()
11243 // ---------------- Ranges and Rects (Utility)
11258 // ---------------- I/O
11263 return index - mark; in wuffs_base__io__count_since()
11272 #pragma GCC diagnostic ignored "-Wcast-qual"
11278 ((size_t)(index - mark))); in wuffs_base__io__since()
11286 // --------
11292 if (((uint64_t)(*ptr_io2_r - iop_r)) > limit) { in wuffs_base__io_reader__limit()
11307 if (n > ((size_t)(io2_r - iop_r))) { in wuffs_base__io_reader__limited_copy_u32_to_slice()
11308 n = (size_t)(io2_r - iop_r); in wuffs_base__io_reader__limited_copy_u32_to_slice()
11318 // start with the given prefix (up to 7 bytes long). It is peek-like, not
11319 // read-like, in that there are no side-effects.
11323 // The high 56 bits of a hold the prefix itself, in little-endian order. The
11325 // 16..=23, etc. The high (8 * (7 - n)) bits are ignored.
11328 // - 0 means success.
11329 // - 1 means inconclusive, equivalent to "$short read".
11330 // - 2 means failure.
11338 if ((io2_r - iop_r) >= 8) { in wuffs_base__io_reader__match7()
11340 uint32_t shift = 8 * (8 - n); in wuffs_base__io_reader__match7()
11343 for (; n > 0; n--) { in wuffs_base__io_reader__match7()
11345 return (r && r->meta.closed) ? 2 : 1; in wuffs_base__io_reader__match7()
11363 b->data = data; in wuffs_base__io_reader__set()
11364 b->meta.wi = data.len; in wuffs_base__io_reader__set()
11365 b->meta.ri = 0; in wuffs_base__io_reader__set()
11366 b->meta.pos = history_position; in wuffs_base__io_reader__set()
11367 b->meta.closed = false; in wuffs_base__io_reader__set()
11377 // --------
11385 if (n > ((size_t)(io2_w - iop_w))) { in wuffs_base__io_writer__copy_from_slice()
11386 n = (size_t)(io2_w - iop_w); in wuffs_base__io_writer__copy_from_slice()
11399 if (((uint64_t)(*ptr_io2_w - iop_w)) > limit) { in wuffs_base__io_writer__limit()
11414 if ((size_t)(p - io0_w) < (size_t)(distance)) { in wuffs_base__io_writer__limited_copy_u32_from_history()
11417 uint8_t* q = p - distance; in wuffs_base__io_writer__limited_copy_u32_from_history()
11418 size_t n = (size_t)(io2_w - p); in wuffs_base__io_writer__limited_copy_u32_from_history()
11432 for (; n >= 3; n -= 3) { in wuffs_base__io_writer__limited_copy_u32_from_history()
11437 for (; n; n--) { in wuffs_base__io_writer__limited_copy_u32_from_history()
11446 // stronger pre-conditions.
11449 // - length <= (io2_w - *ptr_iop_w)
11450 // - distance >= 1
11451 // - distance <= (*ptr_iop_w - io0_w)
11459 uint8_t* q = p - distance; in wuffs_base__io_writer__limited_copy_u32_from_history_fast()
11461 for (; n >= 3; n -= 3) { in wuffs_base__io_writer__limited_copy_u32_from_history_fast()
11466 for (; n; n--) { in wuffs_base__io_writer__limited_copy_u32_from_history_fast()
11484 // - (length + 8) <= (io2_w - *ptr_iop_w)
11485 // - distance == 1
11486 // - distance <= (*ptr_iop_w - io0_w)
11495 uint64_t x = p[-1]; in wuffs_base__io_writer__limited_copy_u32_from_history_8_byte_chunks_distance_1_fast()
11507 n -= 8; in wuffs_base__io_writer__limited_copy_u32_from_history_8_byte_chunks_distance_1_fast()
11524 // - (length + 8) <= (io2_w - *ptr_iop_w)
11525 // - distance >= 8
11526 // - distance <= (*ptr_iop_w - io0_w)
11535 uint8_t* q = p - distance; in wuffs_base__io_writer__limited_copy_u32_from_history_8_byte_chunks_fast()
11545 n -= 8; in wuffs_base__io_writer__limited_copy_u32_from_history_8_byte_chunks_fast()
11559 if (n > ((size_t)(io2_w - iop_w))) { in wuffs_base__io_writer__limited_copy_u32_from_reader()
11560 n = (size_t)(io2_w - iop_w); in wuffs_base__io_writer__limited_copy_u32_from_reader()
11563 if (n > ((size_t)(io2_r - iop_r))) { in wuffs_base__io_writer__limited_copy_u32_from_reader()
11564 n = (size_t)(io2_r - iop_r); in wuffs_base__io_writer__limited_copy_u32_from_reader()
11584 if (n > ((size_t)(io2_w - iop_w))) { in wuffs_base__io_writer__limited_copy_u32_from_slice()
11585 n = (size_t)(io2_w - iop_w); in wuffs_base__io_writer__limited_copy_u32_from_slice()
11602 b->data = data; in wuffs_base__io_writer__set()
11603 b->meta.wi = 0; in wuffs_base__io_writer__set()
11604 b->meta.ri = 0; in wuffs_base__io_writer__set()
11605 b->meta.pos = history_position; in wuffs_base__io_writer__set()
11606 b->meta.closed = false; in wuffs_base__io_writer__set()
11616 // ---------------- I/O (Utility)
11621 // ---------------- Tokens
11623 // ---------------- Tokens (Utility)
11625 // ---------------- Memory Allocation
11627 // ---------------- Images
11653 // ---------------- Images (Utility)
11657 // ---------------- String Conversions
11659 // ---------------- Unicode and UTF-8
11661 // ----------------
11758 // ---------------- Interface Definitions.
11768 if (self->private_impl.magic != WUFFS_BASE__MAGIC) { in wuffs_base__hasher_u32__set_quirk_enabled()
11772 const wuffs_base__vtable* v = &self->private_impl.first_vtable; in wuffs_base__hasher_u32__set_quirk_enabled()
11775 if (v->vtable_name == wuffs_base__hasher_u32__vtable_name) { in wuffs_base__hasher_u32__set_quirk_enabled()
11777 (const wuffs_base__hasher_u32__func_ptrs*)(v->function_pointers); in wuffs_base__hasher_u32__set_quirk_enabled()
11778 return (*func_ptrs->set_quirk_enabled)(self, a_quirk, a_enabled); in wuffs_base__hasher_u32__set_quirk_enabled()
11779 } else if (v->vtable_name == NULL) { in wuffs_base__hasher_u32__set_quirk_enabled()
11795 if (self->private_impl.magic != WUFFS_BASE__MAGIC) { in wuffs_base__hasher_u32__update_u32()
11799 const wuffs_base__vtable* v = &self->private_impl.first_vtable; in wuffs_base__hasher_u32__update_u32()
11802 if (v->vtable_name == wuffs_base__hasher_u32__vtable_name) { in wuffs_base__hasher_u32__update_u32()
11804 (const wuffs_base__hasher_u32__func_ptrs*)(v->function_pointers); in wuffs_base__hasher_u32__update_u32()
11805 return (*func_ptrs->update_u32)(self, a_x); in wuffs_base__hasher_u32__update_u32()
11806 } else if (v->vtable_name == NULL) { in wuffs_base__hasher_u32__update_u32()
11815 // --------
11828 if (self->private_impl.magic != WUFFS_BASE__MAGIC) { in wuffs_base__image_decoder__decode_frame()
11830 (self->private_impl.magic == WUFFS_BASE__DISABLED) in wuffs_base__image_decoder__decode_frame()
11835 const wuffs_base__vtable* v = &self->private_impl.first_vtable; in wuffs_base__image_decoder__decode_frame()
11838 if (v->vtable_name == wuffs_base__image_decoder__vtable_name) { in wuffs_base__image_decoder__decode_frame()
11840 (const wuffs_base__image_decoder__func_ptrs*)(v->function_pointers); in wuffs_base__image_decoder__decode_frame()
11841 return (*func_ptrs->decode_frame)(self, a_dst, a_src, a_blend, a_workbuf, a_opts); in wuffs_base__image_decoder__decode_frame()
11842 } else if (v->vtable_name == NULL) { in wuffs_base__image_decoder__decode_frame()
11859 if (self->private_impl.magic != WUFFS_BASE__MAGIC) { in wuffs_base__image_decoder__decode_frame_config()
11861 (self->private_impl.magic == WUFFS_BASE__DISABLED) in wuffs_base__image_decoder__decode_frame_config()
11866 const wuffs_base__vtable* v = &self->private_impl.first_vtable; in wuffs_base__image_decoder__decode_frame_config()
11869 if (v->vtable_name == wuffs_base__image_decoder__vtable_name) { in wuffs_base__image_decoder__decode_frame_config()
11871 (const wuffs_base__image_decoder__func_ptrs*)(v->function_pointers); in wuffs_base__image_decoder__decode_frame_config()
11872 return (*func_ptrs->decode_frame_config)(self, a_dst, a_src); in wuffs_base__image_decoder__decode_frame_config()
11873 } else if (v->vtable_name == NULL) { in wuffs_base__image_decoder__decode_frame_config()
11890 if (self->private_impl.magic != WUFFS_BASE__MAGIC) { in wuffs_base__image_decoder__decode_image_config()
11892 (self->private_impl.magic == WUFFS_BASE__DISABLED) in wuffs_base__image_decoder__decode_image_config()
11897 const wuffs_base__vtable* v = &self->private_impl.first_vtable; in wuffs_base__image_decoder__decode_image_config()
11900 if (v->vtable_name == wuffs_base__image_decoder__vtable_name) { in wuffs_base__image_decoder__decode_image_config()
11902 (const wuffs_base__image_decoder__func_ptrs*)(v->function_pointers); in wuffs_base__image_decoder__decode_image_config()
11903 return (*func_ptrs->decode_image_config)(self, a_dst, a_src); in wuffs_base__image_decoder__decode_image_config()
11904 } else if (v->vtable_name == NULL) { in wuffs_base__image_decoder__decode_image_config()
11919 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) && in wuffs_base__image_decoder__frame_dirty_rect()
11920 (self->private_impl.magic != WUFFS_BASE__DISABLED)) { in wuffs_base__image_decoder__frame_dirty_rect()
11924 const wuffs_base__vtable* v = &self->private_impl.first_vtable; in wuffs_base__image_decoder__frame_dirty_rect()
11927 if (v->vtable_name == wuffs_base__image_decoder__vtable_name) { in wuffs_base__image_decoder__frame_dirty_rect()
11929 (const wuffs_base__image_decoder__func_ptrs*)(v->function_pointers); in wuffs_base__image_decoder__frame_dirty_rect()
11930 return (*func_ptrs->frame_dirty_rect)(self); in wuffs_base__image_decoder__frame_dirty_rect()
11931 } else if (v->vtable_name == NULL) { in wuffs_base__image_decoder__frame_dirty_rect()
11946 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) && in wuffs_base__image_decoder__num_animation_loops()
11947 (self->private_impl.magic != WUFFS_BASE__DISABLED)) { in wuffs_base__image_decoder__num_animation_loops()
11951 const wuffs_base__vtable* v = &self->private_impl.first_vtable; in wuffs_base__image_decoder__num_animation_loops()
11954 if (v->vtable_name == wuffs_base__image_decoder__vtable_name) { in wuffs_base__image_decoder__num_animation_loops()
11956 (const wuffs_base__image_decoder__func_ptrs*)(v->function_pointers); in wuffs_base__image_decoder__num_animation_loops()
11957 return (*func_ptrs->num_animation_loops)(self); in wuffs_base__image_decoder__num_animation_loops()
11958 } else if (v->vtable_name == NULL) { in wuffs_base__image_decoder__num_animation_loops()
11973 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) && in wuffs_base__image_decoder__num_decoded_frame_configs()
11974 (self->private_impl.magic != WUFFS_BASE__DISABLED)) { in wuffs_base__image_decoder__num_decoded_frame_configs()
11978 const wuffs_base__vtable* v = &self->private_impl.first_vtable; in wuffs_base__image_decoder__num_decoded_frame_configs()
11981 if (v->vtable_name == wuffs_base__image_decoder__vtable_name) { in wuffs_base__image_decoder__num_decoded_frame_configs()
11983 (const wuffs_base__image_decoder__func_ptrs*)(v->function_pointers); in wuffs_base__image_decoder__num_decoded_frame_configs()
11984 return (*func_ptrs->num_decoded_frame_configs)(self); in wuffs_base__image_decoder__num_decoded_frame_configs()
11985 } else if (v->vtable_name == NULL) { in wuffs_base__image_decoder__num_decoded_frame_configs()
12000 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) && in wuffs_base__image_decoder__num_decoded_frames()
12001 (self->private_impl.magic != WUFFS_BASE__DISABLED)) { in wuffs_base__image_decoder__num_decoded_frames()
12005 const wuffs_base__vtable* v = &self->private_impl.first_vtable; in wuffs_base__image_decoder__num_decoded_frames()
12008 if (v->vtable_name == wuffs_base__image_decoder__vtable_name) { in wuffs_base__image_decoder__num_decoded_frames()
12010 (const wuffs_base__image_decoder__func_ptrs*)(v->function_pointers); in wuffs_base__image_decoder__num_decoded_frames()
12011 return (*func_ptrs->num_decoded_frames)(self); in wuffs_base__image_decoder__num_decoded_frames()
12012 } else if (v->vtable_name == NULL) { in wuffs_base__image_decoder__num_decoded_frames()
12029 if (self->private_impl.magic != WUFFS_BASE__MAGIC) { in wuffs_base__image_decoder__restart_frame()
12031 (self->private_impl.magic == WUFFS_BASE__DISABLED) in wuffs_base__image_decoder__restart_frame()
12036 const wuffs_base__vtable* v = &self->private_impl.first_vtable; in wuffs_base__image_decoder__restart_frame()
12039 if (v->vtable_name == wuffs_base__image_decoder__vtable_name) { in wuffs_base__image_decoder__restart_frame()
12041 (const wuffs_base__image_decoder__func_ptrs*)(v->function_pointers); in wuffs_base__image_decoder__restart_frame()
12042 return (*func_ptrs->restart_frame)(self, a_index, a_io_position); in wuffs_base__image_decoder__restart_frame()
12043 } else if (v->vtable_name == NULL) { in wuffs_base__image_decoder__restart_frame()
12060 if (self->private_impl.magic != WUFFS_BASE__MAGIC) { in wuffs_base__image_decoder__set_quirk_enabled()
12064 const wuffs_base__vtable* v = &self->private_impl.first_vtable; in wuffs_base__image_decoder__set_quirk_enabled()
12067 if (v->vtable_name == wuffs_base__image_decoder__vtable_name) { in wuffs_base__image_decoder__set_quirk_enabled()
12069 (const wuffs_base__image_decoder__func_ptrs*)(v->function_pointers); in wuffs_base__image_decoder__set_quirk_enabled()
12070 return (*func_ptrs->set_quirk_enabled)(self, a_quirk, a_enabled); in wuffs_base__image_decoder__set_quirk_enabled()
12071 } else if (v->vtable_name == NULL) { in wuffs_base__image_decoder__set_quirk_enabled()
12088 if (self->private_impl.magic != WUFFS_BASE__MAGIC) { in wuffs_base__image_decoder__set_report_metadata()
12092 const wuffs_base__vtable* v = &self->private_impl.first_vtable; in wuffs_base__image_decoder__set_report_metadata()
12095 if (v->vtable_name == wuffs_base__image_decoder__vtable_name) { in wuffs_base__image_decoder__set_report_metadata()
12097 (const wuffs_base__image_decoder__func_ptrs*)(v->function_pointers); in wuffs_base__image_decoder__set_report_metadata()
12098 return (*func_ptrs->set_report_metadata)(self, a_fourcc, a_report); in wuffs_base__image_decoder__set_report_metadata()
12099 } else if (v->vtable_name == NULL) { in wuffs_base__image_decoder__set_report_metadata()
12117 if (self->private_impl.magic != WUFFS_BASE__MAGIC) { in wuffs_base__image_decoder__tell_me_more()
12119 (self->private_impl.magic == WUFFS_BASE__DISABLED) in wuffs_base__image_decoder__tell_me_more()
12124 const wuffs_base__vtable* v = &self->private_impl.first_vtable; in wuffs_base__image_decoder__tell_me_more()
12127 if (v->vtable_name == wuffs_base__image_decoder__vtable_name) { in wuffs_base__image_decoder__tell_me_more()
12129 (const wuffs_base__image_decoder__func_ptrs*)(v->function_pointers); in wuffs_base__image_decoder__tell_me_more()
12130 return (*func_ptrs->tell_me_more)(self, a_dst, a_minfo, a_src); in wuffs_base__image_decoder__tell_me_more()
12131 } else if (v->vtable_name == NULL) { in wuffs_base__image_decoder__tell_me_more()
12146 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) && in wuffs_base__image_decoder__workbuf_len()
12147 (self->private_impl.magic != WUFFS_BASE__DISABLED)) { in wuffs_base__image_decoder__workbuf_len()
12151 const wuffs_base__vtable* v = &self->private_impl.first_vtable; in wuffs_base__image_decoder__workbuf_len()
12154 if (v->vtable_name == wuffs_base__image_decoder__vtable_name) { in wuffs_base__image_decoder__workbuf_len()
12156 (const wuffs_base__image_decoder__func_ptrs*)(v->function_pointers); in wuffs_base__image_decoder__workbuf_len()
12157 return (*func_ptrs->workbuf_len)(self); in wuffs_base__image_decoder__workbuf_len()
12158 } else if (v->vtable_name == NULL) { in wuffs_base__image_decoder__workbuf_len()
12167 // --------
12177 if (self->private_impl.magic != WUFFS_BASE__MAGIC) { in wuffs_base__io_transformer__set_quirk_enabled()
12181 const wuffs_base__vtable* v = &self->private_impl.first_vtable; in wuffs_base__io_transformer__set_quirk_enabled()
12184 if (v->vtable_name == wuffs_base__io_transformer__vtable_name) { in wuffs_base__io_transformer__set_quirk_enabled()
12186 (const wuffs_base__io_transformer__func_ptrs*)(v->function_pointers); in wuffs_base__io_transformer__set_quirk_enabled()
12187 return (*func_ptrs->set_quirk_enabled)(self, a_quirk, a_enabled); in wuffs_base__io_transformer__set_quirk_enabled()
12188 } else if (v->vtable_name == NULL) { in wuffs_base__io_transformer__set_quirk_enabled()
12206 if (self->private_impl.magic != WUFFS_BASE__MAGIC) { in wuffs_base__io_transformer__transform_io()
12208 (self->private_impl.magic == WUFFS_BASE__DISABLED) in wuffs_base__io_transformer__transform_io()
12213 const wuffs_base__vtable* v = &self->private_impl.first_vtable; in wuffs_base__io_transformer__transform_io()
12216 if (v->vtable_name == wuffs_base__io_transformer__vtable_name) { in wuffs_base__io_transformer__transform_io()
12218 (const wuffs_base__io_transformer__func_ptrs*)(v->function_pointers); in wuffs_base__io_transformer__transform_io()
12219 return (*func_ptrs->transform_io)(self, a_dst, a_src, a_workbuf); in wuffs_base__io_transformer__transform_io()
12220 } else if (v->vtable_name == NULL) { in wuffs_base__io_transformer__transform_io()
12235 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) && in wuffs_base__io_transformer__workbuf_len()
12236 (self->private_impl.magic != WUFFS_BASE__DISABLED)) { in wuffs_base__io_transformer__workbuf_len()
12240 const wuffs_base__vtable* v = &self->private_impl.first_vtable; in wuffs_base__io_transformer__workbuf_len()
12243 if (v->vtable_name == wuffs_base__io_transformer__vtable_name) { in wuffs_base__io_transformer__workbuf_len()
12245 (const wuffs_base__io_transformer__func_ptrs*)(v->function_pointers); in wuffs_base__io_transformer__workbuf_len()
12246 return (*func_ptrs->workbuf_len)(self); in wuffs_base__io_transformer__workbuf_len()
12247 } else if (v->vtable_name == NULL) { in wuffs_base__io_transformer__workbuf_len()
12256 // --------
12267 if (self->private_impl.magic != WUFFS_BASE__MAGIC) { in wuffs_base__token_decoder__decode_tokens()
12269 (self->private_impl.magic == WUFFS_BASE__DISABLED) in wuffs_base__token_decoder__decode_tokens()
12274 const wuffs_base__vtable* v = &self->private_impl.first_vtable; in wuffs_base__token_decoder__decode_tokens()
12277 if (v->vtable_name == wuffs_base__token_decoder__vtable_name) { in wuffs_base__token_decoder__decode_tokens()
12279 (const wuffs_base__token_decoder__func_ptrs*)(v->function_pointers); in wuffs_base__token_decoder__decode_tokens()
12280 return (*func_ptrs->decode_tokens)(self, a_dst, a_src, a_workbuf); in wuffs_base__token_decoder__decode_tokens()
12281 } else if (v->vtable_name == NULL) { in wuffs_base__token_decoder__decode_tokens()
12298 if (self->private_impl.magic != WUFFS_BASE__MAGIC) { in wuffs_base__token_decoder__set_quirk_enabled()
12302 const wuffs_base__vtable* v = &self->private_impl.first_vtable; in wuffs_base__token_decoder__set_quirk_enabled()
12305 if (v->vtable_name == wuffs_base__token_decoder__vtable_name) { in wuffs_base__token_decoder__set_quirk_enabled()
12307 (const wuffs_base__token_decoder__func_ptrs*)(v->function_pointers); in wuffs_base__token_decoder__set_quirk_enabled()
12308 return (*func_ptrs->set_quirk_enabled)(self, a_quirk, a_enabled); in wuffs_base__token_decoder__set_quirk_enabled()
12309 } else if (v->vtable_name == NULL) { in wuffs_base__token_decoder__set_quirk_enabled()
12324 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) && in wuffs_base__token_decoder__workbuf_len()
12325 (self->private_impl.magic != WUFFS_BASE__DISABLED)) { in wuffs_base__token_decoder__workbuf_len()
12329 const wuffs_base__vtable* v = &self->private_impl.first_vtable; in wuffs_base__token_decoder__workbuf_len()
12332 if (v->vtable_name == wuffs_base__token_decoder__vtable_name) { in wuffs_base__token_decoder__workbuf_len()
12334 (const wuffs_base__token_decoder__func_ptrs*)(v->function_pointers); in wuffs_base__token_decoder__workbuf_len()
12335 return (*func_ptrs->workbuf_len)(self); in wuffs_base__token_decoder__workbuf_len()
12336 } else if (v->vtable_name == NULL) { in wuffs_base__token_decoder__workbuf_len()
12352 // ---------------- IEEE 754 Floating Point
12355 // script/print-hpd-left-shift.go. That script has an optional -comments flag,
12365 // 3-length string to a 4-length string means that 1 new digit was added (and
12368 // Shifting by i can add either N or N-1 new digits, depending on whether the
12374 // - ("1" << 4) is "16", which adds 1 new digit.
12375 // - ("5678" << 4) is "90848", which adds 1 new digit.
12376 // - ("624" << 4) is "9984", which adds 1 new digit.
12377 // - ("62498" << 4) is "999968", which adds 1 new digit.
12378 // - ("625" << 4) is "10000", which adds 2 new digits.
12379 // - ("625001" << 4) is "10000016", which adds 2 new digits.
12380 // - ("7008" << 4) is "112128", which adds 2 new digits.
12381 // - ("99" << 4) is "1584", which adds 2 new digits.
12385 // - etc__hpd_left_shift[4] is 0x1006 = (2 << 11) | 0x0006.
12386 // - etc__hpd_left_shift[5] is 0x1009 = (? << 11) | 0x0009.
12465 // --------
12468 // approximations to the powers of 10, ranging from 1e-307 to 1e+288 inclusive,
12469 // as 596 pairs of uint64_t values (a 128-bit mantissa).
12472 // the base-10 exponent) that is the base-2 exponent, biased by a magic
12474 // for IEEE 754 double-precision floating point. 191 is ((3 * 64) - 1) and
12476 // multiples-of-64-bit mantissas.
12478 // For example, the third row holds the approximation to 1e-305:
12479 // 0xE0B62E29_29ABA83C_331ACDAB_FE94DE87 * (2 ** (0x0049 - 0x04BE))
12482 // 0x9C400000_00000000_00000000_00000000 * (2 ** (0x044C - 0x04BE))
12485 // 0xED63A231_D4C4FB27_4CA7AAA8_63EE4BDD * (2 ** (0x0520 - 0x04BE))
12487 // This table was generated by by script/print-mpb-powers-of-10.go
12490 {0xA5D3B6D479F8E056, 0x8FD0C16206306BAB}, // 1e-307
12491 {0x8F48A4899877186C, 0xB3C4F1BA87BC8696}, // 1e-306
12492 {0x331ACDABFE94DE87, 0xE0B62E2929ABA83C}, // 1e-305
12493 {0x9FF0C08B7F1D0B14, 0x8C71DCD9BA0B4925}, // 1e-304
12494 {0x07ECF0AE5EE44DD9, 0xAF8E5410288E1B6F}, // 1e-303
12495 {0xC9E82CD9F69D6150, 0xDB71E91432B1A24A}, // 1e-302
12496 {0xBE311C083A225CD2, 0x892731AC9FAF056E}, // 1e-301
12497 {0x6DBD630A48AAF406, 0xAB70FE17C79AC6CA}, // 1e-300
12498 {0x092CBBCCDAD5B108, 0xD64D3D9DB981787D}, // 1e-299
12499 {0x25BBF56008C58EA5, 0x85F0468293F0EB4E}, // 1e-298
12500 {0xAF2AF2B80AF6F24E, 0xA76C582338ED2621}, // 1e-297
12501 {0x1AF5AF660DB4AEE1, 0xD1476E2C07286FAA}, // 1e-296
12502 {0x50D98D9FC890ED4D, 0x82CCA4DB847945CA}, // 1e-295
12503 {0xE50FF107BAB528A0, 0xA37FCE126597973C}, // 1e-294
12504 {0x1E53ED49A96272C8, 0xCC5FC196FEFD7D0C}, // 1e-293
12505 {0x25E8E89C13BB0F7A, 0xFF77B1FCBEBCDC4F}, // 1e-292
12506 {0x77B191618C54E9AC, 0x9FAACF3DF73609B1}, // 1e-291
12507 {0xD59DF5B9EF6A2417, 0xC795830D75038C1D}, // 1e-290
12508 {0x4B0573286B44AD1D, 0xF97AE3D0D2446F25}, // 1e-289
12509 {0x4EE367F9430AEC32, 0x9BECCE62836AC577}, // 1e-288
12510 {0x229C41F793CDA73F, 0xC2E801FB244576D5}, // 1e-287
12511 {0x6B43527578C1110F, 0xF3A20279ED56D48A}, // 1e-286
12512 {0x830A13896B78AAA9, 0x9845418C345644D6}, // 1e-285
12513 {0x23CC986BC656D553, 0xBE5691EF416BD60C}, // 1e-284
12514 {0x2CBFBE86B7EC8AA8, 0xEDEC366B11C6CB8F}, // 1e-283
12515 {0x7BF7D71432F3D6A9, 0x94B3A202EB1C3F39}, // 1e-282
12516 {0xDAF5CCD93FB0CC53, 0xB9E08A83A5E34F07}, // 1e-281
12517 {0xD1B3400F8F9CFF68, 0xE858AD248F5C22C9}, // 1e-280
12518 {0x23100809B9C21FA1, 0x91376C36D99995BE}, // 1e-279
12519 {0xABD40A0C2832A78A, 0xB58547448FFFFB2D}, // 1e-278
12520 {0x16C90C8F323F516C, 0xE2E69915B3FFF9F9}, // 1e-277
12521 {0xAE3DA7D97F6792E3, 0x8DD01FAD907FFC3B}, // 1e-276
12522 {0x99CD11CFDF41779C, 0xB1442798F49FFB4A}, // 1e-275
12523 {0x40405643D711D583, 0xDD95317F31C7FA1D}, // 1e-274
12524 {0x482835EA666B2572, 0x8A7D3EEF7F1CFC52}, // 1e-273
12525 {0xDA3243650005EECF, 0xAD1C8EAB5EE43B66}, // 1e-272
12526 {0x90BED43E40076A82, 0xD863B256369D4A40}, // 1e-271
12527 {0x5A7744A6E804A291, 0x873E4F75E2224E68}, // 1e-270
12528 {0x711515D0A205CB36, 0xA90DE3535AAAE202}, // 1e-269
12529 {0x0D5A5B44CA873E03, 0xD3515C2831559A83}, // 1e-268
12530 {0xE858790AFE9486C2, 0x8412D9991ED58091}, // 1e-267
12531 {0x626E974DBE39A872, 0xA5178FFF668AE0B6}, // 1e-266
12532 {0xFB0A3D212DC8128F, 0xCE5D73FF402D98E3}, // 1e-265
12533 {0x7CE66634BC9D0B99, 0x80FA687F881C7F8E}, // 1e-264
12534 {0x1C1FFFC1EBC44E80, 0xA139029F6A239F72}, // 1e-263
12535 {0xA327FFB266B56220, 0xC987434744AC874E}, // 1e-262
12536 {0x4BF1FF9F0062BAA8, 0xFBE9141915D7A922}, // 1e-261
12537 {0x6F773FC3603DB4A9, 0x9D71AC8FADA6C9B5}, // 1e-260
12538 {0xCB550FB4384D21D3, 0xC4CE17B399107C22}, // 1e-259
12539 {0x7E2A53A146606A48, 0xF6019DA07F549B2B}, // 1e-258
12540 {0x2EDA7444CBFC426D, 0x99C102844F94E0FB}, // 1e-257
12541 {0xFA911155FEFB5308, 0xC0314325637A1939}, // 1e-256
12542 {0x793555AB7EBA27CA, 0xF03D93EEBC589F88}, // 1e-255
12543 {0x4BC1558B2F3458DE, 0x96267C7535B763B5}, // 1e-254
12544 {0x9EB1AAEDFB016F16, 0xBBB01B9283253CA2}, // 1e-253
12545 {0x465E15A979C1CADC, 0xEA9C227723EE8BCB}, // 1e-252
12546 {0x0BFACD89EC191EC9, 0x92A1958A7675175F}, // 1e-251
12547 {0xCEF980EC671F667B, 0xB749FAED14125D36}, // 1e-250
12548 {0x82B7E12780E7401A, 0xE51C79A85916F484}, // 1e-249
12549 {0xD1B2ECB8B0908810, 0x8F31CC0937AE58D2}, // 1e-248
12550 {0x861FA7E6DCB4AA15, 0xB2FE3F0B8599EF07}, // 1e-247
12551 {0x67A791E093E1D49A, 0xDFBDCECE67006AC9}, // 1e-246
12552 {0xE0C8BB2C5C6D24E0, 0x8BD6A141006042BD}, // 1e-245
12553 {0x58FAE9F773886E18, 0xAECC49914078536D}, // 1e-244
12554 {0xAF39A475506A899E, 0xDA7F5BF590966848}, // 1e-243
12555 {0x6D8406C952429603, 0x888F99797A5E012D}, // 1e-242
12556 {0xC8E5087BA6D33B83, 0xAAB37FD7D8F58178}, // 1e-241
12557 {0xFB1E4A9A90880A64, 0xD5605FCDCF32E1D6}, // 1e-240
12558 {0x5CF2EEA09A55067F, 0x855C3BE0A17FCD26}, // 1e-239
12559 {0xF42FAA48C0EA481E, 0xA6B34AD8C9DFC06F}, // 1e-238
12560 {0xF13B94DAF124DA26, 0xD0601D8EFC57B08B}, // 1e-237
12561 {0x76C53D08D6B70858, 0x823C12795DB6CE57}, // 1e-236
12562 {0x54768C4B0C64CA6E, 0xA2CB1717B52481ED}, // 1e-235
12563 {0xA9942F5DCF7DFD09, 0xCB7DDCDDA26DA268}, // 1e-234
12564 {0xD3F93B35435D7C4C, 0xFE5D54150B090B02}, // 1e-233
12565 {0xC47BC5014A1A6DAF, 0x9EFA548D26E5A6E1}, // 1e-232
12566 {0x359AB6419CA1091B, 0xC6B8E9B0709F109A}, // 1e-231
12567 {0xC30163D203C94B62, 0xF867241C8CC6D4C0}, // 1e-230
12568 {0x79E0DE63425DCF1D, 0x9B407691D7FC44F8}, // 1e-229
12569 {0x985915FC12F542E4, 0xC21094364DFB5636}, // 1e-228
12570 {0x3E6F5B7B17B2939D, 0xF294B943E17A2BC4}, // 1e-227
12571 {0xA705992CEECF9C42, 0x979CF3CA6CEC5B5A}, // 1e-226
12572 {0x50C6FF782A838353, 0xBD8430BD08277231}, // 1e-225
12573 {0xA4F8BF5635246428, 0xECE53CEC4A314EBD}, // 1e-224
12574 {0x871B7795E136BE99, 0x940F4613AE5ED136}, // 1e-223
12575 {0x28E2557B59846E3F, 0xB913179899F68584}, // 1e-222
12576 {0x331AEADA2FE589CF, 0xE757DD7EC07426E5}, // 1e-221
12577 {0x3FF0D2C85DEF7621, 0x9096EA6F3848984F}, // 1e-220
12578 {0x0FED077A756B53A9, 0xB4BCA50B065ABE63}, // 1e-219
12579 {0xD3E8495912C62894, 0xE1EBCE4DC7F16DFB}, // 1e-218
12580 {0x64712DD7ABBBD95C, 0x8D3360F09CF6E4BD}, // 1e-217
12581 {0xBD8D794D96AACFB3, 0xB080392CC4349DEC}, // 1e-216
12582 {0xECF0D7A0FC5583A0, 0xDCA04777F541C567}, // 1e-215
12583 {0xF41686C49DB57244, 0x89E42CAAF9491B60}, // 1e-214
12584 {0x311C2875C522CED5, 0xAC5D37D5B79B6239}, // 1e-213
12585 {0x7D633293366B828B, 0xD77485CB25823AC7}, // 1e-212
12586 {0xAE5DFF9C02033197, 0x86A8D39EF77164BC}, // 1e-211
12587 {0xD9F57F830283FDFC, 0xA8530886B54DBDEB}, // 1e-210
12588 {0xD072DF63C324FD7B, 0xD267CAA862A12D66}, // 1e-209
12589 {0x4247CB9E59F71E6D, 0x8380DEA93DA4BC60}, // 1e-208
12590 {0x52D9BE85F074E608, 0xA46116538D0DEB78}, // 1e-207
12591 {0x67902E276C921F8B, 0xCD795BE870516656}, // 1e-206
12592 {0x00BA1CD8A3DB53B6, 0x806BD9714632DFF6}, // 1e-205
12593 {0x80E8A40ECCD228A4, 0xA086CFCD97BF97F3}, // 1e-204
12594 {0x6122CD128006B2CD, 0xC8A883C0FDAF7DF0}, // 1e-203
12595 {0x796B805720085F81, 0xFAD2A4B13D1B5D6C}, // 1e-202
12596 {0xCBE3303674053BB0, 0x9CC3A6EEC6311A63}, // 1e-201
12597 {0xBEDBFC4411068A9C, 0xC3F490AA77BD60FC}, // 1e-200
12598 {0xEE92FB5515482D44, 0xF4F1B4D515ACB93B}, // 1e-199
12599 {0x751BDD152D4D1C4A, 0x991711052D8BF3C5}, // 1e-198
12600 {0xD262D45A78A0635D, 0xBF5CD54678EEF0B6}, // 1e-197
12601 {0x86FB897116C87C34, 0xEF340A98172AACE4}, // 1e-196
12602 {0xD45D35E6AE3D4DA0, 0x9580869F0E7AAC0E}, // 1e-195
12603 {0x8974836059CCA109, 0xBAE0A846D2195712}, // 1e-194
12604 {0x2BD1A438703FC94B, 0xE998D258869FACD7}, // 1e-193
12605 {0x7B6306A34627DDCF, 0x91FF83775423CC06}, // 1e-192
12606 {0x1A3BC84C17B1D542, 0xB67F6455292CBF08}, // 1e-191
12607 {0x20CABA5F1D9E4A93, 0xE41F3D6A7377EECA}, // 1e-190
12608 {0x547EB47B7282EE9C, 0x8E938662882AF53E}, // 1e-189
12609 {0xE99E619A4F23AA43, 0xB23867FB2A35B28D}, // 1e-188
12610 {0x6405FA00E2EC94D4, 0xDEC681F9F4C31F31}, // 1e-187
12611 {0xDE83BC408DD3DD04, 0x8B3C113C38F9F37E}, // 1e-186
12612 {0x9624AB50B148D445, 0xAE0B158B4738705E}, // 1e-185
12613 {0x3BADD624DD9B0957, 0xD98DDAEE19068C76}, // 1e-184
12614 {0xE54CA5D70A80E5D6, 0x87F8A8D4CFA417C9}, // 1e-183
12615 {0x5E9FCF4CCD211F4C, 0xA9F6D30A038D1DBC}, // 1e-182
12616 {0x7647C3200069671F, 0xD47487CC8470652B}, // 1e-181
12617 {0x29ECD9F40041E073, 0x84C8D4DFD2C63F3B}, // 1e-180
12618 {0xF468107100525890, 0xA5FB0A17C777CF09}, // 1e-179
12619 {0x7182148D4066EEB4, 0xCF79CC9DB955C2CC}, // 1e-178
12620 {0xC6F14CD848405530, 0x81AC1FE293D599BF}, // 1e-177
12621 {0xB8ADA00E5A506A7C, 0xA21727DB38CB002F}, // 1e-176
12622 {0xA6D90811F0E4851C, 0xCA9CF1D206FDC03B}, // 1e-175
12623 {0x908F4A166D1DA663, 0xFD442E4688BD304A}, // 1e-174
12624 {0x9A598E4E043287FE, 0x9E4A9CEC15763E2E}, // 1e-173
12625 {0x40EFF1E1853F29FD, 0xC5DD44271AD3CDBA}, // 1e-172
12626 {0xD12BEE59E68EF47C, 0xF7549530E188C128}, // 1e-171
12627 {0x82BB74F8301958CE, 0x9A94DD3E8CF578B9}, // 1e-170
12628 {0xE36A52363C1FAF01, 0xC13A148E3032D6E7}, // 1e-169
12629 {0xDC44E6C3CB279AC1, 0xF18899B1BC3F8CA1}, // 1e-168
12630 {0x29AB103A5EF8C0B9, 0x96F5600F15A7B7E5}, // 1e-167
12631 {0x7415D448F6B6F0E7, 0xBCB2B812DB11A5DE}, // 1e-166
12632 {0x111B495B3464AD21, 0xEBDF661791D60F56}, // 1e-165
12633 {0xCAB10DD900BEEC34, 0x936B9FCEBB25C995}, // 1e-164
12634 {0x3D5D514F40EEA742, 0xB84687C269EF3BFB}, // 1e-163
12635 {0x0CB4A5A3112A5112, 0xE65829B3046B0AFA}, // 1e-162
12636 {0x47F0E785EABA72AB, 0x8FF71A0FE2C2E6DC}, // 1e-161
12637 {0x59ED216765690F56, 0xB3F4E093DB73A093}, // 1e-160
12638 {0x306869C13EC3532C, 0xE0F218B8D25088B8}, // 1e-159
12639 {0x1E414218C73A13FB, 0x8C974F7383725573}, // 1e-158
12640 {0xE5D1929EF90898FA, 0xAFBD2350644EEACF}, // 1e-157
12641 {0xDF45F746B74ABF39, 0xDBAC6C247D62A583}, // 1e-156
12642 {0x6B8BBA8C328EB783, 0x894BC396CE5DA772}, // 1e-155
12643 {0x066EA92F3F326564, 0xAB9EB47C81F5114F}, // 1e-154
12644 {0xC80A537B0EFEFEBD, 0xD686619BA27255A2}, // 1e-153
12645 {0xBD06742CE95F5F36, 0x8613FD0145877585}, // 1e-152
12646 {0x2C48113823B73704, 0xA798FC4196E952E7}, // 1e-151
12647 {0xF75A15862CA504C5, 0xD17F3B51FCA3A7A0}, // 1e-150
12648 {0x9A984D73DBE722FB, 0x82EF85133DE648C4}, // 1e-149
12649 {0xC13E60D0D2E0EBBA, 0xA3AB66580D5FDAF5}, // 1e-148
12650 {0x318DF905079926A8, 0xCC963FEE10B7D1B3}, // 1e-147
12651 {0xFDF17746497F7052, 0xFFBBCFE994E5C61F}, // 1e-146
12652 {0xFEB6EA8BEDEFA633, 0x9FD561F1FD0F9BD3}, // 1e-145
12653 {0xFE64A52EE96B8FC0, 0xC7CABA6E7C5382C8}, // 1e-144
12654 {0x3DFDCE7AA3C673B0, 0xF9BD690A1B68637B}, // 1e-143
12655 {0x06BEA10CA65C084E, 0x9C1661A651213E2D}, // 1e-142
12656 {0x486E494FCFF30A62, 0xC31BFA0FE5698DB8}, // 1e-141
12657 {0x5A89DBA3C3EFCCFA, 0xF3E2F893DEC3F126}, // 1e-140
12658 {0xF89629465A75E01C, 0x986DDB5C6B3A76B7}, // 1e-139
12659 {0xF6BBB397F1135823, 0xBE89523386091465}, // 1e-138
12660 {0x746AA07DED582E2C, 0xEE2BA6C0678B597F}, // 1e-137
12661 {0xA8C2A44EB4571CDC, 0x94DB483840B717EF}, // 1e-136
12662 {0x92F34D62616CE413, 0xBA121A4650E4DDEB}, // 1e-135
12663 {0x77B020BAF9C81D17, 0xE896A0D7E51E1566}, // 1e-134
12664 {0x0ACE1474DC1D122E, 0x915E2486EF32CD60}, // 1e-133
12665 {0x0D819992132456BA, 0xB5B5ADA8AAFF80B8}, // 1e-132
12666 {0x10E1FFF697ED6C69, 0xE3231912D5BF60E6}, // 1e-131
12667 {0xCA8D3FFA1EF463C1, 0x8DF5EFABC5979C8F}, // 1e-130
12668 {0xBD308FF8A6B17CB2, 0xB1736B96B6FD83B3}, // 1e-129
12669 {0xAC7CB3F6D05DDBDE, 0xDDD0467C64BCE4A0}, // 1e-128
12670 {0x6BCDF07A423AA96B, 0x8AA22C0DBEF60EE4}, // 1e-127
12671 {0x86C16C98D2C953C6, 0xAD4AB7112EB3929D}, // 1e-126
12672 {0xE871C7BF077BA8B7, 0xD89D64D57A607744}, // 1e-125
12673 {0x11471CD764AD4972, 0x87625F056C7C4A8B}, // 1e-124
12674 {0xD598E40D3DD89BCF, 0xA93AF6C6C79B5D2D}, // 1e-123
12675 {0x4AFF1D108D4EC2C3, 0xD389B47879823479}, // 1e-122
12676 {0xCEDF722A585139BA, 0x843610CB4BF160CB}, // 1e-121
12677 {0xC2974EB4EE658828, 0xA54394FE1EEDB8FE}, // 1e-120
12678 {0x733D226229FEEA32, 0xCE947A3DA6A9273E}, // 1e-119
12679 {0x0806357D5A3F525F, 0x811CCC668829B887}, // 1e-118
12680 {0xCA07C2DCB0CF26F7, 0xA163FF802A3426A8}, // 1e-117
12681 {0xFC89B393DD02F0B5, 0xC9BCFF6034C13052}, // 1e-116
12682 {0xBBAC2078D443ACE2, 0xFC2C3F3841F17C67}, // 1e-115
12683 {0xD54B944B84AA4C0D, 0x9D9BA7832936EDC0}, // 1e-114
12684 {0x0A9E795E65D4DF11, 0xC5029163F384A931}, // 1e-113
12685 {0x4D4617B5FF4A16D5, 0xF64335BCF065D37D}, // 1e-112
12686 {0x504BCED1BF8E4E45, 0x99EA0196163FA42E}, // 1e-111
12687 {0xE45EC2862F71E1D6, 0xC06481FB9BCF8D39}, // 1e-110
12688 {0x5D767327BB4E5A4C, 0xF07DA27A82C37088}, // 1e-109
12689 {0x3A6A07F8D510F86F, 0x964E858C91BA2655}, // 1e-108
12690 {0x890489F70A55368B, 0xBBE226EFB628AFEA}, // 1e-107
12691 {0x2B45AC74CCEA842E, 0xEADAB0ABA3B2DBE5}, // 1e-106
12692 {0x3B0B8BC90012929D, 0x92C8AE6B464FC96F}, // 1e-105
12693 {0x09CE6EBB40173744, 0xB77ADA0617E3BBCB}, // 1e-104
12694 {0xCC420A6A101D0515, 0xE55990879DDCAABD}, // 1e-103
12695 {0x9FA946824A12232D, 0x8F57FA54C2A9EAB6}, // 1e-102
12696 {0x47939822DC96ABF9, 0xB32DF8E9F3546564}, // 1e-101
12697 {0x59787E2B93BC56F7, 0xDFF9772470297EBD}, // 1e-100
12698 {0x57EB4EDB3C55B65A, 0x8BFBEA76C619EF36}, // 1e-99
12699 {0xEDE622920B6B23F1, 0xAEFAE51477A06B03}, // 1e-98
12700 {0xE95FAB368E45ECED, 0xDAB99E59958885C4}, // 1e-97
12701 {0x11DBCB0218EBB414, 0x88B402F7FD75539B}, // 1e-96
12702 {0xD652BDC29F26A119, 0xAAE103B5FCD2A881}, // 1e-95
12703 {0x4BE76D3346F0495F, 0xD59944A37C0752A2}, // 1e-94
12704 {0x6F70A4400C562DDB, 0x857FCAE62D8493A5}, // 1e-93
12705 {0xCB4CCD500F6BB952, 0xA6DFBD9FB8E5B88E}, // 1e-92
12706 {0x7E2000A41346A7A7, 0xD097AD07A71F26B2}, // 1e-91
12707 {0x8ED400668C0C28C8, 0x825ECC24C873782F}, // 1e-90
12708 {0x728900802F0F32FA, 0xA2F67F2DFA90563B}, // 1e-89
12709 {0x4F2B40A03AD2FFB9, 0xCBB41EF979346BCA}, // 1e-88
12710 {0xE2F610C84987BFA8, 0xFEA126B7D78186BC}, // 1e-87
12711 {0x0DD9CA7D2DF4D7C9, 0x9F24B832E6B0F436}, // 1e-86
12712 {0x91503D1C79720DBB, 0xC6EDE63FA05D3143}, // 1e-85
12713 {0x75A44C6397CE912A, 0xF8A95FCF88747D94}, // 1e-84
12714 {0xC986AFBE3EE11ABA, 0x9B69DBE1B548CE7C}, // 1e-83
12715 {0xFBE85BADCE996168, 0xC24452DA229B021B}, // 1e-82
12716 {0xFAE27299423FB9C3, 0xF2D56790AB41C2A2}, // 1e-81
12717 {0xDCCD879FC967D41A, 0x97C560BA6B0919A5}, // 1e-80
12718 {0x5400E987BBC1C920, 0xBDB6B8E905CB600F}, // 1e-79
12719 {0x290123E9AAB23B68, 0xED246723473E3813}, // 1e-78
12720 {0xF9A0B6720AAF6521, 0x9436C0760C86E30B}, // 1e-77
12721 {0xF808E40E8D5B3E69, 0xB94470938FA89BCE}, // 1e-76
12722 {0xB60B1D1230B20E04, 0xE7958CB87392C2C2}, // 1e-75
12723 {0xB1C6F22B5E6F48C2, 0x90BD77F3483BB9B9}, // 1e-74
12724 {0x1E38AEB6360B1AF3, 0xB4ECD5F01A4AA828}, // 1e-73
12725 {0x25C6DA63C38DE1B0, 0xE2280B6C20DD5232}, // 1e-72
12726 {0x579C487E5A38AD0E, 0x8D590723948A535F}, // 1e-71
12727 {0x2D835A9DF0C6D851, 0xB0AF48EC79ACE837}, // 1e-70
12728 {0xF8E431456CF88E65, 0xDCDB1B2798182244}, // 1e-69
12729 {0x1B8E9ECB641B58FF, 0x8A08F0F8BF0F156B}, // 1e-68
12730 {0xE272467E3D222F3F, 0xAC8B2D36EED2DAC5}, // 1e-67
12731 {0x5B0ED81DCC6ABB0F, 0xD7ADF884AA879177}, // 1e-66
12732 {0x98E947129FC2B4E9, 0x86CCBB52EA94BAEA}, // 1e-65
12733 {0x3F2398D747B36224, 0xA87FEA27A539E9A5}, // 1e-64
12734 {0x8EEC7F0D19A03AAD, 0xD29FE4B18E88640E}, // 1e-63
12735 {0x1953CF68300424AC, 0x83A3EEEEF9153E89}, // 1e-62
12736 {0x5FA8C3423C052DD7, 0xA48CEAAAB75A8E2B}, // 1e-61
12737 {0x3792F412CB06794D, 0xCDB02555653131B6}, // 1e-60
12738 {0xE2BBD88BBEE40BD0, 0x808E17555F3EBF11}, // 1e-59
12739 {0x5B6ACEAEAE9D0EC4, 0xA0B19D2AB70E6ED6}, // 1e-58
12740 {0xF245825A5A445275, 0xC8DE047564D20A8B}, // 1e-57
12741 {0xEED6E2F0F0D56712, 0xFB158592BE068D2E}, // 1e-56
12742 {0x55464DD69685606B, 0x9CED737BB6C4183D}, // 1e-55
12743 {0xAA97E14C3C26B886, 0xC428D05AA4751E4C}, // 1e-54
12744 {0xD53DD99F4B3066A8, 0xF53304714D9265DF}, // 1e-53
12745 {0xE546A8038EFE4029, 0x993FE2C6D07B7FAB}, // 1e-52
12746 {0xDE98520472BDD033, 0xBF8FDB78849A5F96}, // 1e-51
12747 {0x963E66858F6D4440, 0xEF73D256A5C0F77C}, // 1e-50
12748 {0xDDE7001379A44AA8, 0x95A8637627989AAD}, // 1e-49
12749 {0x5560C018580D5D52, 0xBB127C53B17EC159}, // 1e-48
12750 {0xAAB8F01E6E10B4A6, 0xE9D71B689DDE71AF}, // 1e-47
12751 {0xCAB3961304CA70E8, 0x9226712162AB070D}, // 1e-46
12752 {0x3D607B97C5FD0D22, 0xB6B00D69BB55C8D1}, // 1e-45
12753 {0x8CB89A7DB77C506A, 0xE45C10C42A2B3B05}, // 1e-44
12754 {0x77F3608E92ADB242, 0x8EB98A7A9A5B04E3}, // 1e-43
12755 {0x55F038B237591ED3, 0xB267ED1940F1C61C}, // 1e-42
12756 {0x6B6C46DEC52F6688, 0xDF01E85F912E37A3}, // 1e-41
12757 {0x2323AC4B3B3DA015, 0x8B61313BBABCE2C6}, // 1e-40
12758 {0xABEC975E0A0D081A, 0xAE397D8AA96C1B77}, // 1e-39
12759 {0x96E7BD358C904A21, 0xD9C7DCED53C72255}, // 1e-38
12760 {0x7E50D64177DA2E54, 0x881CEA14545C7575}, // 1e-37
12761 {0xDDE50BD1D5D0B9E9, 0xAA242499697392D2}, // 1e-36
12762 {0x955E4EC64B44E864, 0xD4AD2DBFC3D07787}, // 1e-35
12763 {0xBD5AF13BEF0B113E, 0x84EC3C97DA624AB4}, // 1e-34
12764 {0xECB1AD8AEACDD58E, 0xA6274BBDD0FADD61}, // 1e-33
12765 {0x67DE18EDA5814AF2, 0xCFB11EAD453994BA}, // 1e-32
12766 {0x80EACF948770CED7, 0x81CEB32C4B43FCF4}, // 1e-31
12767 {0xA1258379A94D028D, 0xA2425FF75E14FC31}, // 1e-30
12768 {0x096EE45813A04330, 0xCAD2F7F5359A3B3E}, // 1e-29
12769 {0x8BCA9D6E188853FC, 0xFD87B5F28300CA0D}, // 1e-28
12770 {0x775EA264CF55347D, 0x9E74D1B791E07E48}, // 1e-27
12771 {0x95364AFE032A819D, 0xC612062576589DDA}, // 1e-26
12772 {0x3A83DDBD83F52204, 0xF79687AED3EEC551}, // 1e-25
12773 {0xC4926A9672793542, 0x9ABE14CD44753B52}, // 1e-24
12774 {0x75B7053C0F178293, 0xC16D9A0095928A27}, // 1e-23
12775 {0x5324C68B12DD6338, 0xF1C90080BAF72CB1}, // 1e-22
12776 {0xD3F6FC16EBCA5E03, 0x971DA05074DA7BEE}, // 1e-21
12777 {0x88F4BB1CA6BCF584, 0xBCE5086492111AEA}, // 1e-20
12778 {0x2B31E9E3D06C32E5, 0xEC1E4A7DB69561A5}, // 1e-19
12779 {0x3AFF322E62439FCF, 0x9392EE8E921D5D07}, // 1e-18
12780 {0x09BEFEB9FAD487C2, 0xB877AA3236A4B449}, // 1e-17
12781 {0x4C2EBE687989A9B3, 0xE69594BEC44DE15B}, // 1e-16
12782 {0x0F9D37014BF60A10, 0x901D7CF73AB0ACD9}, // 1e-15
12783 {0x538484C19EF38C94, 0xB424DC35095CD80F}, // 1e-14
12784 {0x2865A5F206B06FB9, 0xE12E13424BB40E13}, // 1e-13
12785 {0xF93F87B7442E45D3, 0x8CBCCC096F5088CB}, // 1e-12
12786 {0xF78F69A51539D748, 0xAFEBFF0BCB24AAFE}, // 1e-11
12787 {0xB573440E5A884D1B, 0xDBE6FECEBDEDD5BE}, // 1e-10
12788 {0x31680A88F8953030, 0x89705F4136B4A597}, // 1e-9
12789 {0xFDC20D2B36BA7C3D, 0xABCC77118461CEFC}, // 1e-8
12790 {0x3D32907604691B4C, 0xD6BF94D5E57A42BC}, // 1e-7
12791 {0xA63F9A49C2C1B10F, 0x8637BD05AF6C69B5}, // 1e-6
12792 {0x0FCF80DC33721D53, 0xA7C5AC471B478423}, // 1e-5
12793 {0xD3C36113404EA4A8, 0xD1B71758E219652B}, // 1e-4
12794 {0x645A1CAC083126E9, 0x83126E978D4FDF3B}, // 1e-3
12795 {0x3D70A3D70A3D70A3, 0xA3D70A3D70A3D70A}, // 1e-2
12796 {0xCCCCCCCCCCCCCCCC, 0xCCCCCCCCCCCCCCCC}, // 1e-1
13095 // ---------------- IEEE 754 Floating Point
13117 // bits of ret.value so that the 10-bit mantissa is non-zero. in wuffs_base__ieee_754_bit_representation__from_f64_to_u16_truncate()
13136 // Convert from a 53-bit mantissa (after realizing the implicit bit) to a in wuffs_base__ieee_754_bit_representation__from_f64_to_u16_truncate()
13137 // 10-bit mantissa and then adjust for the exponent. in wuffs_base__ieee_754_bit_representation__from_f64_to_u16_truncate()
13139 uint32_t shift = ((uint32_t)(1051 - exp)); // 1051 = 0x3F0 + 53 - 10. in wuffs_base__ieee_754_bit_representation__from_f64_to_u16_truncate()
13149 // Re-bias from 1023 to 15 and shift above f16's 10 mantissa bits. in wuffs_base__ieee_754_bit_representation__from_f64_to_u16_truncate()
13150 exp = (exp - 1008) << 10; // 1008 = 1023 - 15 = 0x3FF - 0xF. in wuffs_base__ieee_754_bit_representation__from_f64_to_u16_truncate()
13152 // Convert from a 52-bit mantissa (excluding the implicit bit) to a 10-bit in wuffs_base__ieee_754_bit_representation__from_f64_to_u16_truncate()
13154 // any of the bottom 42 bits are non-zero. in wuffs_base__ieee_754_bit_representation__from_f64_to_u16_truncate()
13181 // bits of ret.value so that the 23-bit mantissa is non-zero. in wuffs_base__ieee_754_bit_representation__from_f64_to_u32_truncate()
13200 // Convert from a 53-bit mantissa (after realizing the implicit bit) to a in wuffs_base__ieee_754_bit_representation__from_f64_to_u32_truncate()
13201 // 23-bit mantissa and then adjust for the exponent. in wuffs_base__ieee_754_bit_representation__from_f64_to_u32_truncate()
13203 uint32_t shift = ((uint32_t)(926 - exp)); // 926 = 0x380 + 53 - 23. in wuffs_base__ieee_754_bit_representation__from_f64_to_u32_truncate()
13213 // Re-bias from 1023 to 127 and shift above f32's 23 mantissa bits. in wuffs_base__ieee_754_bit_representation__from_f64_to_u32_truncate()
13214 exp = (exp - 896) << 23; // 896 = 1023 - 127 = 0x3FF - 0x7F. in wuffs_base__ieee_754_bit_representation__from_f64_to_u32_truncate()
13216 // Convert from a 52-bit mantissa (excluding the implicit bit) to a 23-bit in wuffs_base__ieee_754_bit_representation__from_f64_to_u32_truncate()
13218 // any of the bottom 29 bits are non-zero. in wuffs_base__ieee_754_bit_representation__from_f64_to_u32_truncate()
13225 // --------
13242 // from IEEE 754 double-precision floating point, where the largest and
13243 // smallest positive, finite values are approximately 1.8e+308 and 4.9e-324.
13244 // HPD exponents above +2047 mean infinity, below -2047 mean zero. The ±2047
13249 // digits[.. num_digits] are the number's digits in big-endian order. The
13258 // - A decimal_point of -2 means ".00789"
13259 // - A decimal_point of -1 means ".0789"
13260 // - A decimal_point of +0 means ".789"
13261 // - A decimal_point of +1 means "7.89"
13262 // - A decimal_point of +2 means "78.9"
13263 // - A decimal_point of +3 means "789."
13264 // - A decimal_point of +4 means "7890."
13265 // - A decimal_point of +5 means "78900."
13268 // infinity, lower than -2047 means zero.
13274 // least one of those extra digits are non-zero. The existence of long-tail
13287 // zeroes from the h->digits[.. h->num_digits] slice. They have no benefit,
13288 // since we explicitly track h->decimal_point.
13291 // - h is non-NULL.
13295 while ((h->num_digits > 0) && (h->digits[h->num_digits - 1] == 0)) { in wuffs_base__private_implementation__high_prec_dec__trim()
13296 h->num_digits--; in wuffs_base__private_implementation__high_prec_dec__trim()
13304 // - h is non-NULL.
13312 // Set h->digits. in wuffs_base__private_implementation__high_prec_dec__assign()
13314 // Calculate the digits, working right-to-left. After we determine n (how in wuffs_base__private_implementation__high_prec_dec__assign()
13315 // many digits there are), copy from buf to h->digits. in wuffs_base__private_implementation__high_prec_dec__assign()
13320 // that can we always copy 20 bytes: the slice buf[(20-n) .. (40-n)]. in wuffs_base__private_implementation__high_prec_dec__assign()
13325 x -= remaining * 10; in wuffs_base__private_implementation__high_prec_dec__assign()
13326 ptr--; in wuffs_base__private_implementation__high_prec_dec__assign()
13331 memcpy(h->digits, ptr, 20); in wuffs_base__private_implementation__high_prec_dec__assign()
13335 h->num_digits = n; in wuffs_base__private_implementation__high_prec_dec__assign()
13336 h->decimal_point = (int32_t)n; in wuffs_base__private_implementation__high_prec_dec__assign()
13337 h->negative = negative; in wuffs_base__private_implementation__high_prec_dec__assign()
13338 h->truncated = false; in wuffs_base__private_implementation__high_prec_dec__assign()
13350 h->num_digits = 0; in wuffs_base__private_implementation__high_prec_dec__parse()
13351 h->decimal_point = 0; in wuffs_base__private_implementation__high_prec_dec__parse()
13352 h->negative = false; in wuffs_base__private_implementation__high_prec_dec__parse()
13353 h->truncated = false; in wuffs_base__private_implementation__high_prec_dec__parse()
13372 } else if (*p == '-') { in wuffs_base__private_implementation__high_prec_dec__parse()
13373 h->negative = true; in wuffs_base__private_implementation__high_prec_dec__parse()
13390 // limb in this if-else chain: in wuffs_base__private_implementation__high_prec_dec__parse()
13391 // - "0.789" in wuffs_base__private_implementation__high_prec_dec__parse()
13392 // - "1002.789" in wuffs_base__private_implementation__high_prec_dec__parse()
13393 // - ".789" in wuffs_base__private_implementation__high_prec_dec__parse()
13394 // - Other (invalid input). in wuffs_base__private_implementation__high_prec_dec__parse()
13426 h->digits[nd++] = (uint8_t)(*p - '0'); in wuffs_base__private_implementation__high_prec_dec__parse()
13436 h->digits[nd++] = (uint8_t)(*p - '0'); in wuffs_base__private_implementation__high_prec_dec__parse()
13439 // Long-tail non-zeroes set the truncated bit. in wuffs_base__private_implementation__high_prec_dec__parse()
13440 h->truncated = true; in wuffs_base__private_implementation__high_prec_dec__parse()
13476 dp--; in wuffs_base__private_implementation__high_prec_dec__parse()
13479 h->digits[nd++] = (uint8_t)(*p - '0'); in wuffs_base__private_implementation__high_prec_dec__parse()
13483 h->digits[nd++] = (uint8_t)(*p - '0'); in wuffs_base__private_implementation__high_prec_dec__parse()
13485 // Long-tail non-zeroes set the truncated bit. in wuffs_base__private_implementation__high_prec_dec__parse()
13486 h->truncated = true; in wuffs_base__private_implementation__high_prec_dec__parse()
13512 } else if (*p == '-') { in wuffs_base__private_implementation__high_prec_dec__parse()
13513 exp_sign = -1; in wuffs_base__private_implementation__high_prec_dec__parse()
13525 // No-op. in wuffs_base__private_implementation__high_prec_dec__parse()
13529 exp = (10 * exp) + ((int32_t)(*p - '0')); in wuffs_base__private_implementation__high_prec_dec__parse()
13545 h->num_digits = nd; in wuffs_base__private_implementation__high_prec_dec__parse()
13550 h->decimal_point = 0; in wuffs_base__private_implementation__high_prec_dec__parse()
13552 -WUFFS_BASE__PRIVATE_IMPLEMENTATION__HPD__DECIMAL_POINT__RANGE) { in wuffs_base__private_implementation__high_prec_dec__parse()
13553 h->decimal_point = in wuffs_base__private_implementation__high_prec_dec__parse()
13554 -WUFFS_BASE__PRIVATE_IMPLEMENTATION__HPD__DECIMAL_POINT__RANGE - 1; in wuffs_base__private_implementation__high_prec_dec__parse()
13557 h->decimal_point = in wuffs_base__private_implementation__high_prec_dec__parse()
13560 h->decimal_point = dp; in wuffs_base__private_implementation__high_prec_dec__parse()
13566 // --------
13569 // returns the number of additional decimal digits when left-shifting by shift.
13590 uint32_t n = pow5_b - pow5_a; in wuffs_base__private_implementation__high_prec_dec__lshift_num_new_digits()
13592 if (i >= h->num_digits) { in wuffs_base__private_implementation__high_prec_dec__lshift_num_new_digits()
13593 return num_new_digits - 1; in wuffs_base__private_implementation__high_prec_dec__lshift_num_new_digits()
13594 } else if (h->digits[i] == pow5[i]) { in wuffs_base__private_implementation__high_prec_dec__lshift_num_new_digits()
13596 } else if (h->digits[i] < pow5[i]) { in wuffs_base__private_implementation__high_prec_dec__lshift_num_new_digits()
13597 return num_new_digits - 1; in wuffs_base__private_implementation__high_prec_dec__lshift_num_new_digits()
13605 // --------
13608 // the integral (non-fractional) part of h, provided that it is 18 or fewer
13610 // - (1 << 53) is 9007199254740992, which has 16 decimal digits.
13611 // - (1 << 56) is 72057594037927936, which has 17 decimal digits.
13612 // - (1 << 59) is 576460752303423488, which has 18 decimal digits.
13613 // - (1 << 63) is 9223372036854775808, which has 19 decimal digits.
13616 // That integral part is rounded-to-even: rounding 7.5 or 8.5 both give 8.
13618 // h's negative bit is ignored: rounding -8.6 returns 9.
13624 if ((h->num_digits == 0) || (h->decimal_point < 0)) { in wuffs_base__private_implementation__high_prec_dec__rounded_integer()
13626 } else if (h->decimal_point > 18) { in wuffs_base__private_implementation__high_prec_dec__rounded_integer()
13630 uint32_t dp = (uint32_t)(h->decimal_point); in wuffs_base__private_implementation__high_prec_dec__rounded_integer()
13634 n = (10 * n) + ((i < h->num_digits) ? h->digits[i] : 0); in wuffs_base__private_implementation__high_prec_dec__rounded_integer()
13638 if (dp < h->num_digits) { in wuffs_base__private_implementation__high_prec_dec__rounded_integer()
13639 round_up = h->digits[dp] >= 5; in wuffs_base__private_implementation__high_prec_dec__rounded_integer()
13640 if ((h->digits[dp] == 5) && (dp + 1 == h->num_digits)) { in wuffs_base__private_implementation__high_prec_dec__rounded_integer()
13643 round_up = h->truncated || // in wuffs_base__private_implementation__high_prec_dec__rounded_integer()
13644 ((dp > 0) && (1 & h->digits[dp - 1])); in wuffs_base__private_implementation__high_prec_dec__rounded_integer()
13658 // - h is non-NULL.
13659 // - h->decimal_point is "not extreme".
13660 // - shift is non-zero.
13661 // - shift is "a small shift".
13675 // does not need to be "small": zero is a no-op, positive means left shift and
13682 if (h->num_digits == 0) { in wuffs_base__private_implementation__high_prec_dec__small_lshift()
13688 uint32_t rx = h->num_digits - 1; // Read index. in wuffs_base__private_implementation__high_prec_dec__small_lshift()
13689 uint32_t wx = h->num_digits - 1 + num_new_digits; // Write index. in wuffs_base__private_implementation__high_prec_dec__small_lshift()
13694 n += ((uint64_t)(h->digits[rx])) << shift; in wuffs_base__private_implementation__high_prec_dec__small_lshift()
13696 uint64_t rem = n - (10 * quo); in wuffs_base__private_implementation__high_prec_dec__small_lshift()
13698 h->digits[wx] = (uint8_t)rem; in wuffs_base__private_implementation__high_prec_dec__small_lshift()
13700 h->truncated = true; in wuffs_base__private_implementation__high_prec_dec__small_lshift()
13703 wx--; in wuffs_base__private_implementation__high_prec_dec__small_lshift()
13704 rx--; in wuffs_base__private_implementation__high_prec_dec__small_lshift()
13710 uint64_t rem = n - (10 * quo); in wuffs_base__private_implementation__high_prec_dec__small_lshift()
13712 h->digits[wx] = (uint8_t)rem; in wuffs_base__private_implementation__high_prec_dec__small_lshift()
13714 h->truncated = true; in wuffs_base__private_implementation__high_prec_dec__small_lshift()
13717 wx--; in wuffs_base__private_implementation__high_prec_dec__small_lshift()
13721 h->num_digits += num_new_digits; in wuffs_base__private_implementation__high_prec_dec__small_lshift()
13722 if (h->num_digits > in wuffs_base__private_implementation__high_prec_dec__small_lshift()
13724 h->num_digits = WUFFS_BASE__PRIVATE_IMPLEMENTATION__HPD__DIGITS_PRECISION; in wuffs_base__private_implementation__high_prec_dec__small_lshift()
13726 h->decimal_point += (int32_t)num_new_digits; in wuffs_base__private_implementation__high_prec_dec__small_lshift()
13740 if (rx < h->num_digits) { in wuffs_base__private_implementation__high_prec_dec__small_rshift()
13742 n = (10 * n) + h->digits[rx++]; in wuffs_base__private_implementation__high_prec_dec__small_rshift()
13755 h->decimal_point -= ((int32_t)(rx - 1)); in wuffs_base__private_implementation__high_prec_dec__small_rshift()
13756 if (h->decimal_point < in wuffs_base__private_implementation__high_prec_dec__small_rshift()
13757 -WUFFS_BASE__PRIVATE_IMPLEMENTATION__HPD__DECIMAL_POINT__RANGE) { in wuffs_base__private_implementation__high_prec_dec__small_rshift()
13759 h->num_digits = 0; in wuffs_base__private_implementation__high_prec_dec__small_rshift()
13760 h->decimal_point = 0; in wuffs_base__private_implementation__high_prec_dec__small_rshift()
13761 h->truncated = false; in wuffs_base__private_implementation__high_prec_dec__small_rshift()
13766 uint64_t mask = (((uint64_t)(1)) << shift) - 1; in wuffs_base__private_implementation__high_prec_dec__small_rshift()
13767 while (rx < h->num_digits) { in wuffs_base__private_implementation__high_prec_dec__small_rshift()
13769 n = (10 * (n & mask)) + h->digits[rx++]; in wuffs_base__private_implementation__high_prec_dec__small_rshift()
13770 h->digits[wx++] = new_digit; in wuffs_base__private_implementation__high_prec_dec__small_rshift()
13778 h->digits[wx++] = new_digit; in wuffs_base__private_implementation__high_prec_dec__small_rshift()
13780 h->truncated = true; in wuffs_base__private_implementation__high_prec_dec__small_rshift()
13785 h->num_digits = wx; in wuffs_base__private_implementation__high_prec_dec__small_rshift()
13797 shift -= WUFFS_BASE__PRIVATE_IMPLEMENTATION__HPD__SHIFT__MAX_INCL; in wuffs_base__private_implementation__high_prec_dec__lshift()
13802 while (shift < -WUFFS_BASE__PRIVATE_IMPLEMENTATION__HPD__SHIFT__MAX_INCL) { in wuffs_base__private_implementation__high_prec_dec__lshift()
13808 h, ((uint32_t)(-shift))); in wuffs_base__private_implementation__high_prec_dec__lshift()
13812 // --------
13822 // - h is non-NULL.
13823 // - h->decimal_point is "not extreme".
13832 if ((n < 0) || (h->num_digits <= (uint32_t)n)) { in wuffs_base__private_implementation__high_prec_dec__round_down()
13835 h->num_digits = (uint32_t)(n); in wuffs_base__private_implementation__high_prec_dec__round_down()
13843 if ((n < 0) || (h->num_digits <= (uint32_t)n)) { in wuffs_base__private_implementation__high_prec_dec__round_up()
13847 for (n--; n >= 0; n--) { in wuffs_base__private_implementation__high_prec_dec__round_up()
13848 if (h->digits[n] < 9) { in wuffs_base__private_implementation__high_prec_dec__round_up()
13849 h->digits[n]++; in wuffs_base__private_implementation__high_prec_dec__round_up()
13850 h->num_digits = (uint32_t)(n + 1); in wuffs_base__private_implementation__high_prec_dec__round_up()
13856 h->digits[0] = 1; in wuffs_base__private_implementation__high_prec_dec__round_up()
13857 h->num_digits = 1; in wuffs_base__private_implementation__high_prec_dec__round_up()
13858 h->decimal_point++; in wuffs_base__private_implementation__high_prec_dec__round_up()
13865 if ((n < 0) || (h->num_digits <= (uint32_t)n)) { in wuffs_base__private_implementation__high_prec_dec__round_nearest()
13868 bool up = h->digits[n] >= 5; in wuffs_base__private_implementation__high_prec_dec__round_nearest()
13869 if ((h->digits[n] == 5) && ((n + 1) == ((int32_t)(h->num_digits)))) { in wuffs_base__private_implementation__high_prec_dec__round_nearest()
13870 up = h->truncated || // in wuffs_base__private_implementation__high_prec_dec__round_nearest()
13871 ((n > 0) && ((h->digits[n - 1] & 1) != 0)); in wuffs_base__private_implementation__high_prec_dec__round_nearest()
13890 // also the number in h): the number (mantissa * (2 ** (exp2 - 52))). in wuffs_base__private_implementation__high_prec_dec__round_just_enough()
13894 ((exp2 < 53) && (h->decimal_point >= ((int32_t)(h->num_digits))))) { in wuffs_base__private_implementation__high_prec_dec__round_just_enough()
13898 // The smallest normal f has an exp2 of -1022 and a mantissa of (1 << 52). in wuffs_base__private_implementation__high_prec_dec__round_just_enough()
13900 static const int32_t min_incl_normal_exp2 = -1022; in wuffs_base__private_implementation__high_prec_dec__round_just_enough()
13905 // ((mantissa + 0) * (2 ** ( exp2 - 52))) in wuffs_base__private_implementation__high_prec_dec__round_just_enough()
13908 // ((mantissa - 1) * (2 ** ( exp2 - 52))) in wuffs_base__private_implementation__high_prec_dec__round_just_enough()
13909 // unless (mantissa - 1) drops the (1 << 52) bit and exp2 is not the in wuffs_base__private_implementation__high_prec_dec__round_just_enough()
13911 // ((l_mantissa) * (2 ** (l_exp2 - 52))) in wuffs_base__private_implementation__high_prec_dec__round_just_enough()
13914 // (((2 * l_mantissa) + 1) * (2 ** (l_exp2 - 53))) in wuffs_base__private_implementation__high_prec_dec__round_just_enough()
13916 uint64_t l_mantissa = mantissa - 1; in wuffs_base__private_implementation__high_prec_dec__round_just_enough()
13918 l_exp2 = exp2 - 1; in wuffs_base__private_implementation__high_prec_dec__round_just_enough()
13919 l_mantissa = (2 * mantissa) - 1; in wuffs_base__private_implementation__high_prec_dec__round_just_enough()
13925 l_exp2 - 53); in wuffs_base__private_implementation__high_prec_dec__round_just_enough()
13928 // ((mantissa + 0) * (2 ** (exp2 - 52))) in wuffs_base__private_implementation__high_prec_dec__round_just_enough()
13931 // ((mantissa + 1) * (2 ** (exp2 - 52))) in wuffs_base__private_implementation__high_prec_dec__round_just_enough()
13934 // (((2 * mantissa) + 1) * (2 ** (exp2 - 53))) in wuffs_base__private_implementation__high_prec_dec__round_just_enough()
13938 wuffs_base__private_implementation__high_prec_dec__lshift(&upper, exp2 - 53); in wuffs_base__private_implementation__high_prec_dec__round_just_enough()
13941 // mantissa is even, so that IEEE round-to-even would round to the original in wuffs_base__private_implementation__high_prec_dec__round_just_enough()
13947 // - When -1, the digits of h and upper are the same so far. in wuffs_base__private_implementation__high_prec_dec__round_just_enough()
13948 // - When +0, we saw a difference of 1 between h and upper on a previous in wuffs_base__private_implementation__high_prec_dec__round_just_enough()
13951 // - When +1, the difference is greater than 1 and we know that rounding up in wuffs_base__private_implementation__high_prec_dec__round_just_enough()
13955 // state (-1, +0 or +1) isn't important, other than their order. in wuffs_base__private_implementation__high_prec_dec__round_just_enough()
13956 int upper_delta = -1; in wuffs_base__private_implementation__high_prec_dec__round_just_enough()
13966 // 0 and iterate li and hi starting from either 0 or -1. in wuffs_base__private_implementation__high_prec_dec__round_just_enough()
13970 int32_t hi = ui - upper.decimal_point + h->decimal_point; in wuffs_base__private_implementation__high_prec_dec__round_just_enough()
13971 if (hi >= ((int32_t)(h->num_digits))) { in wuffs_base__private_implementation__high_prec_dec__round_just_enough()
13974 uint8_t hd = (((uint32_t)hi) < h->num_digits) ? h->digits[hi] : 0; in wuffs_base__private_implementation__high_prec_dec__round_just_enough()
13977 int32_t li = ui - upper.decimal_point + lower.decimal_point; in wuffs_base__private_implementation__high_prec_dec__round_just_enough()
14038 // --------
14041 // the IEEE 754 double-precision value for an exact mantissa and base-10
14043 // - when parsing "12345.678e+02", man is 12345678 and exp10 is -1.
14044 // - when parsing "-12", man is 12 and exp10 is 0. Processing the leading
14047 // On success, it returns a non-negative int64_t such that the low 63 bits hold
14048 // the 11-bit exponent and 52-bit mantissa.
14054 // https://lemire.me/blog/2020/03/10/fast-float-parsing-in-practice/
14056 // https://nigeltao.github.io/blog/2020/eisel-lemire.html
14059 // - man is non-zero.
14060 // - exp10 is in the range [-307 ..= 288], the same range of the
14065 // range [1e-307 ..= 1.85e+307]. This is entirely within the range of normal
14066 // (neither subnormal nor non-finite) f64 values: DBL_MIN and DBL_MAX are
14072 // Look up the (possibly truncated) base-2 representation of (10 ** exp10). in wuffs_base__private_implementation__parse_number_f64_eisel_lemire()
14073 // The look-up table was constructed so that it is already normalized: the in wuffs_base__private_implementation__parse_number_f64_eisel_lemire()
14079 // non-zero bit exists. in wuffs_base__private_implementation__parse_number_f64_eisel_lemire()
14080 uint32_t clz = wuffs_base__count_leading_zeroes_u64(man); in wuffs_base__private_implementation__parse_number_f64_eisel_lemire() local
14081 man <<= clz; in wuffs_base__private_implementation__parse_number_f64_eisel_lemire()
14083 // Calculate the return value's base-2 exponent. We might tweak it by ±1 in wuffs_base__private_implementation__parse_number_f64_eisel_lemire()
14085 // converting from power-of-10 to power-of-2, and adjusting by clz. in wuffs_base__private_implementation__parse_number_f64_eisel_lemire()
14088 // - 1087 = 1023 + 64. The 1023 is the f64 exponent bias. The 64 is because in wuffs_base__private_implementation__parse_number_f64_eisel_lemire()
14089 // the look-up table uses 64-bit mantissas. in wuffs_base__private_implementation__parse_number_f64_eisel_lemire()
14090 // - 217706 is such that the ratio 217706 / 65536 ≈ 3.321930 is close enough in wuffs_base__private_implementation__parse_number_f64_eisel_lemire()
14092 // - 65536 = 1<<16 is arbitrary but a power of 2, so division is a shift. in wuffs_base__private_implementation__parse_number_f64_eisel_lemire()
14094 // Equality of the linearly-scaled value and the actual power-of-2, over the in wuffs_base__private_implementation__parse_number_f64_eisel_lemire()
14096 // script/print-mpb-powers-of-10.go in wuffs_base__private_implementation__parse_number_f64_eisel_lemire()
14098 ((uint64_t)(((217706 * exp10) >> 16) + 1087)) - ((uint64_t)clz); in wuffs_base__private_implementation__parse_number_f64_eisel_lemire()
14101 // least (1<<63), so the 128-bit product must be at least (1<<126). The high in wuffs_base__private_implementation__parse_number_f64_eisel_lemire()
14111 // Before we shift right by at least 9 bits, recall that the look-up table in wuffs_base__private_implementation__parse_number_f64_eisel_lemire()
14114 // add a further (man * 1) to the 128-bit product, which overflows the lower in wuffs_base__private_implementation__parse_number_f64_eisel_lemire()
14115 // 64-bit limb if ((x_lo + man) < man). in wuffs_base__private_implementation__parse_number_f64_eisel_lemire()
14118 // by at least 9 bits, that carried 1 can be ignored unless the higher 64-bit in wuffs_base__private_implementation__parse_number_f64_eisel_lemire()
14121 // For example, parsing "9999999999999999999" will take the if-true branch in wuffs_base__private_implementation__parse_number_f64_eisel_lemire()
14123 // - x_hi = 0x4563918244F3FFFF in wuffs_base__private_implementation__parse_number_f64_eisel_lemire()
14124 // - x_lo = 0x8000000000000000 in wuffs_base__private_implementation__parse_number_f64_eisel_lemire()
14125 // - man = 0x8AC7230489E7FFFF in wuffs_base__private_implementation__parse_number_f64_eisel_lemire()
14128 // a "low resolution" 64-bit mantissa. Now use a "high resolution" 128-bit in wuffs_base__private_implementation__parse_number_f64_eisel_lemire()
14135 // Merge the 128-bit x and 128-bit y, which overlap by 64 bits, to in wuffs_base__private_implementation__parse_number_f64_eisel_lemire()
14136 // calculate the 192-bit product of the 64-bit man by the 128-bit e. in wuffs_base__private_implementation__parse_number_f64_eisel_lemire()
14137 // As we exit this if-block, we only care about the high 128 bits in wuffs_base__private_implementation__parse_number_f64_eisel_lemire()
14138 // (merged_hi and merged_lo) of that 192-bit product. in wuffs_base__private_implementation__parse_number_f64_eisel_lemire()
14140 // For example, parsing "1.234e-45" will take the if-true branch here, in wuffs_base__private_implementation__parse_number_f64_eisel_lemire()
14142 // - x_hi = 0x70B7E3696DB29FFF in wuffs_base__private_implementation__parse_number_f64_eisel_lemire()
14143 // - x_lo = 0xE040000000000000 in wuffs_base__private_implementation__parse_number_f64_eisel_lemire()
14144 // - y_hi = 0x33718BBEAB0E0D7A in wuffs_base__private_implementation__parse_number_f64_eisel_lemire()
14145 // - y_lo = 0xA880000000000000 in wuffs_base__private_implementation__parse_number_f64_eisel_lemire()
14157 // This three-part check is similar to the two-part check that guarded the in wuffs_base__private_implementation__parse_number_f64_eisel_lemire()
14161 // For example, parsing "5.9604644775390625e-8" will take the if-true in wuffs_base__private_implementation__parse_number_f64_eisel_lemire()
14163 // - merged_hi = 0x7FFFFFFFFFFFFFFF in wuffs_base__private_implementation__parse_number_f64_eisel_lemire()
14164 // - merged_lo = 0xFFFFFFFFFFFFFFFF in wuffs_base__private_implementation__parse_number_f64_eisel_lemire()
14165 // - y_lo = 0x4DB3FFC120988200 in wuffs_base__private_implementation__parse_number_f64_eisel_lemire()
14166 // - man = 0xD3C21BCECCEDA100 in wuffs_base__private_implementation__parse_number_f64_eisel_lemire()
14169 return -1; in wuffs_base__private_implementation__parse_number_f64_eisel_lemire()
14172 // Replace the 128-bit x with merged. in wuffs_base__private_implementation__parse_number_f64_eisel_lemire()
14181 // Having bit 53 on (and higher bits off) means that ret_mantissa is a 54-bit in wuffs_base__private_implementation__parse_number_f64_eisel_lemire()
14185 ret_exp2 -= 1 ^ msb; in wuffs_base__private_implementation__parse_number_f64_eisel_lemire()
14187 // IEEE 754 rounds to-nearest with ties rounded to-even. Rounding to-even can in wuffs_base__private_implementation__parse_number_f64_eisel_lemire()
14188 // be tricky. If we're half-way between two exactly representable numbers in wuffs_base__private_implementation__parse_number_f64_eisel_lemire()
14195 // For example, parsing "1e+23" will take the if-true branch here, since: in wuffs_base__private_implementation__parse_number_f64_eisel_lemire()
14196 // - x_hi = 0x54B40B1F852BDA00 in wuffs_base__private_implementation__parse_number_f64_eisel_lemire()
14197 // - ret_mantissa = 0x002A5A058FC295ED in wuffs_base__private_implementation__parse_number_f64_eisel_lemire()
14199 return -1; in wuffs_base__private_implementation__parse_number_f64_eisel_lemire()
14202 // If we're not halfway then it's rounding to-nearest. Starting with a 54-bit in wuffs_base__private_implementation__parse_number_f64_eisel_lemire()
14204 // it was on or off, shifting right by one then produces a 53-bit number. If in wuffs_base__private_implementation__parse_number_f64_eisel_lemire()
14214 // For example, parsing "7.2057594037927933e+16" will take the if-true in wuffs_base__private_implementation__parse_number_f64_eisel_lemire()
14216 // - x_hi = 0x7FFFFFFFFFFFFE80 in wuffs_base__private_implementation__parse_number_f64_eisel_lemire()
14217 // - ret_mantissa = 0x0020000000000000 in wuffs_base__private_implementation__parse_number_f64_eisel_lemire()
14223 // Starting with a 53-bit number, IEEE 754 double-precision normal numbers in wuffs_base__private_implementation__parse_number_f64_eisel_lemire()
14231 // --------
14256 } else if (*p == '-') { in wuffs_base__private_implementation__parse_number_f64_special()
14273 if (((q - p) < 3) || // in wuffs_base__private_implementation__parse_number_f64_special()
14282 } else if (((q - p) < 5) || // in wuffs_base__private_implementation__parse_number_f64_special()
14299 if (((q - p) < 3) || // in wuffs_base__private_implementation__parse_number_f64_special()
14354 // finite f64 values are approximately 1.8e+308 and 4.9e-324. in wuffs_base__private_implementation__high_prec_dec__to_f64()
14355 if ((h->num_digits == 0) || (h->decimal_point < -326)) { in wuffs_base__private_implementation__high_prec_dec__to_f64()
14357 } else if (h->decimal_point > 310) { in wuffs_base__private_implementation__high_prec_dec__to_f64()
14361 // Try the fast Eisel-Lemire algorithm again. Calculating the (man, exp10) in wuffs_base__private_implementation__high_prec_dec__to_f64()
14366 if (h->num_digits <= 19) { in wuffs_base__private_implementation__high_prec_dec__to_f64()
14369 for (i = 0; i < h->num_digits; i++) { in wuffs_base__private_implementation__high_prec_dec__to_f64()
14370 man = (10 * man) + h->digits[i]; in wuffs_base__private_implementation__high_prec_dec__to_f64()
14372 int32_t exp10 = h->decimal_point - ((int32_t)(h->num_digits)); in wuffs_base__private_implementation__high_prec_dec__to_f64()
14373 if ((man != 0) && (-307 <= exp10) && (exp10 <= 288)) { in wuffs_base__private_implementation__high_prec_dec__to_f64()
14381 ((uint64_t)r) | (((uint64_t)(h->negative)) << 63)); in wuffs_base__private_implementation__high_prec_dec__to_f64()
14387 // When Eisel-Lemire fails, fall back to Simple Decimal Conversion. See in wuffs_base__private_implementation__high_prec_dec__to_f64()
14388 // https://nigeltao.github.io/blog/2020/parse-number-f64-simple.html in wuffs_base__private_implementation__high_prec_dec__to_f64()
14391 // our exponent (in base-2). First we shift right, possibly a little too in wuffs_base__private_implementation__high_prec_dec__to_f64()
14393 const int32_t f64_bias = -1023; in wuffs_base__private_implementation__high_prec_dec__to_f64()
14395 while (h->decimal_point > 0) { in wuffs_base__private_implementation__high_prec_dec__to_f64()
14396 uint32_t n = (uint32_t)(+h->decimal_point); in wuffs_base__private_implementation__high_prec_dec__to_f64()
14403 if (h->decimal_point < in wuffs_base__private_implementation__high_prec_dec__to_f64()
14404 -WUFFS_BASE__PRIVATE_IMPLEMENTATION__HPD__DECIMAL_POINT__RANGE) { in wuffs_base__private_implementation__high_prec_dec__to_f64()
14410 while (h->decimal_point <= 0) { in wuffs_base__private_implementation__high_prec_dec__to_f64()
14412 if (h->decimal_point == 0) { in wuffs_base__private_implementation__high_prec_dec__to_f64()
14413 if (h->digits[0] >= 5) { in wuffs_base__private_implementation__high_prec_dec__to_f64()
14416 shift = (h->digits[0] < 2) ? 2 : 1; in wuffs_base__private_implementation__high_prec_dec__to_f64()
14418 uint32_t n = (uint32_t)(-h->decimal_point); in wuffs_base__private_implementation__high_prec_dec__to_f64()
14425 if (h->decimal_point > in wuffs_base__private_implementation__high_prec_dec__to_f64()
14429 exp2 -= (int32_t)shift; in wuffs_base__private_implementation__high_prec_dec__to_f64()
14433 exp2--; in wuffs_base__private_implementation__high_prec_dec__to_f64()
14437 uint32_t n = (uint32_t)((f64_bias + 1) - exp2); in wuffs_base__private_implementation__high_prec_dec__to_f64()
14446 if ((exp2 - f64_bias) >= 0x07FF) { // (1 << 11) - 1. in wuffs_base__private_implementation__high_prec_dec__to_f64()
14450 // Extract 53 bits for the mantissa (in base-2). in wuffs_base__private_implementation__high_prec_dec__to_f64()
14455 // Rounding might have added one bit. If so, shift and re-check overflow. in wuffs_base__private_implementation__high_prec_dec__to_f64()
14459 if ((exp2 - f64_bias) >= 0x07FF) { // (1 << 11) - 1. in wuffs_base__private_implementation__high_prec_dec__to_f64()
14471 (uint64_t)((exp2 - f64_bias) & 0x07FF); // (1 << 11) - 1. in wuffs_base__private_implementation__high_prec_dec__to_f64()
14472 uint64_t bits = (man2 & 0x000FFFFFFFFFFFFF) | // (1 << 52) - 1. in wuffs_base__private_implementation__high_prec_dec__to_f64()
14474 (h->negative ? 0x8000000000000000 : 0); // (1 << 63). in wuffs_base__private_implementation__high_prec_dec__to_f64()
14484 uint64_t bits = h->negative ? 0x8000000000000000 : 0; in wuffs_base__private_implementation__high_prec_dec__to_f64()
14501 uint64_t bits = h->negative ? 0xFFF0000000000000 : 0x7FF0000000000000; in wuffs_base__private_implementation__high_prec_dec__to_f64()
14518 // losslessly by a uint64_t mantissa "dddddd" and an int32_t base-10 in wuffs_base__parse_number_f64()
14524 // here is base-10, not base-2. in wuffs_base__parse_number_f64()
14527 // Eisel-Lemire algorithm. If not, or if Eisel-Lemire fails, parsing s with in wuffs_base__parse_number_f64()
14530 // † "Printing Floating-Point Numbers Quickly and Accurately with Integers" in wuffs_base__parse_number_f64()
14531 // (https://www.cs.tufts.edu/~nr/cs257/archive/florian-loitsch/printf.pdf). in wuffs_base__parse_number_f64()
14533 // https://github.com/google/double-conversion in wuffs_base__parse_number_f64()
14536 // Provided that s isn't extremely long, work on a NUL-terminated copy of in wuffs_base__parse_number_f64()
14550 // optional plus sign, but the "script/process-json-numbers.c with -p" in wuffs_base__parse_number_f64()
14553 bool negative = (*p == '-'); in wuffs_base__parse_number_f64()
14563 // it must be a single '0'. If it starts with a non-zero decimal digit, it in wuffs_base__parse_number_f64()
14576 man = ((uint8_t)(*p - '0')); in wuffs_base__parse_number_f64()
14579 man = (10 * man) + ((uint8_t)(*p - '0')); in wuffs_base__parse_number_f64()
14597 man = (10 * man) + ((uint8_t)(*p - '0')); in wuffs_base__parse_number_f64()
14600 man = (10 * man) + ((uint8_t)(*p - '0')); in wuffs_base__parse_number_f64()
14602 exp10 = ((int32_t)(first_after_separator_ptr - p)); in wuffs_base__parse_number_f64()
14606 // - for an input of "314159", digit_count is 6. in wuffs_base__parse_number_f64()
14607 // - for an input of "3.14159", digit_count is 7. in wuffs_base__parse_number_f64()
14609 // This is off-by-one if there is a decimal separator. That's OK for now. in wuffs_base__parse_number_f64()
14610 // We'll correct for that later. The "script/process-json-numbers.c with in wuffs_base__parse_number_f64()
14611 // -p" benchmark is noticably slower if we try to correct for that now. in wuffs_base__parse_number_f64()
14612 uint32_t digit_count = (uint32_t)(p - start_of_digits_ptr); in wuffs_base__parse_number_f64()
14618 if (*p == '-') { in wuffs_base__parse_number_f64()
14620 exp_sign = -1; in wuffs_base__parse_number_f64()
14627 int32_t exp_num = ((uint8_t)(*p - '0')); in wuffs_base__parse_number_f64()
14630 // again, the "script/process-json-numbers.c with -p" benchmark is in wuffs_base__parse_number_f64()
14633 exp_num = (10 * exp_num) + ((uint8_t)(*p - '0')); in wuffs_base__parse_number_f64()
14637 exp_num = (10 * exp_num) + ((uint8_t)(*p - '0')); in wuffs_base__parse_number_f64()
14644 exp_num = (10 * exp_num) + ((uint8_t)(*p - '0')); in wuffs_base__parse_number_f64()
14660 // - (1 << 63) is 9223372036854775808, which has 19 decimal digits. in wuffs_base__parse_number_f64()
14661 // - (1 << 64) is 18446744073709551616, which has 20 decimal digits. in wuffs_base__parse_number_f64()
14662 // - 19 nines, 9999999999999999999, is 0x8AC7230489E7FFFF, which has 64 in wuffs_base__parse_number_f64()
14664 // - 20 nines, 99999999999999999999, is 0x56BC75E2D630FFFFF, which has 67 in wuffs_base__parse_number_f64()
14667 // Even if we have more than 19 pseudo-digits, it's not yet definitely an in wuffs_base__parse_number_f64()
14668 // overflow. Recall that digit_count might be off-by-one (too large) if in wuffs_base__parse_number_f64()
14669 // there's a decimal separator. It will also over-report the number of in wuffs_base__parse_number_f64()
14672 // We adjust by the number of leading '0's and '.'s and re-compare to 19. in wuffs_base__parse_number_f64()
14674 // "script/process-json-numbers.c with -p" benchmark. in wuffs_base__parse_number_f64()
14678 digit_count -= (uint32_t)(q - start_of_digits_ptr); in wuffs_base__parse_number_f64()
14685 // preconditions include that exp10 is in the range [-307 ..= 288]. in wuffs_base__parse_number_f64()
14686 if ((exp10 < -307) || (288 < exp10)) { in wuffs_base__parse_number_f64()
14691 // don't need to run the Eisel-Lemire algorithm. in wuffs_base__parse_number_f64()
14692 if ((-22 <= exp10) && (exp10 <= 22) && ((man >> 53) == 0)) { in wuffs_base__parse_number_f64()
14697 d /= wuffs_base__private_implementation__f64_powers_of_10[-exp10]; in wuffs_base__parse_number_f64()
14701 ret.value = negative ? -d : +d; in wuffs_base__parse_number_f64()
14706 // preconditions include that man is non-zero. Parsing "0" should be caught in wuffs_base__parse_number_f64()
14712 // Our man and exp10 are in range. Run the Eisel-Lemire algorithm. in wuffs_base__parse_number_f64()
14741 // --------
14751 wuffs_base__poke_u32le__no_bounds_check(dst.ptr, 0x666E492D); // '-Inf'le. in wuffs_base__private_implementation__render_inf()
14785 size_t n = (h->negative || in wuffs_base__private_implementation__high_prec_dec__render_exponent_absent()
14789 if (h->decimal_point <= 0) { in wuffs_base__private_implementation__high_prec_dec__render_exponent_absent()
14792 n += (size_t)(h->decimal_point); in wuffs_base__private_implementation__high_prec_dec__render_exponent_absent()
14803 // Align-left or align-right. in wuffs_base__private_implementation__high_prec_dec__render_exponent_absent()
14805 ? &dst.ptr[dst.len - n] in wuffs_base__private_implementation__high_prec_dec__render_exponent_absent()
14809 if (h->negative) { in wuffs_base__private_implementation__high_prec_dec__render_exponent_absent()
14810 *ptr++ = '-'; in wuffs_base__private_implementation__high_prec_dec__render_exponent_absent()
14816 if (h->decimal_point <= 0) { in wuffs_base__private_implementation__high_prec_dec__render_exponent_absent()
14820 wuffs_base__u32__min(h->num_digits, (uint32_t)(h->decimal_point)); in wuffs_base__private_implementation__high_prec_dec__render_exponent_absent()
14823 *ptr++ = (uint8_t)('0' | h->digits[i]); in wuffs_base__private_implementation__high_prec_dec__render_exponent_absent()
14825 for (; i < (uint32_t)(h->decimal_point); i++) { in wuffs_base__private_implementation__high_prec_dec__render_exponent_absent()
14838 uint32_t j = ((uint32_t)(h->decimal_point)) + i; in wuffs_base__private_implementation__high_prec_dec__render_exponent_absent()
14839 *ptr++ = (uint8_t)('0' | ((j < h->num_digits) ? h->digits[j] : 0)); in wuffs_base__private_implementation__high_prec_dec__render_exponent_absent()
14853 if (h->num_digits > 0) { in wuffs_base__private_implementation__high_prec_dec__render_exponent_present()
14854 exp = h->decimal_point - 1; in wuffs_base__private_implementation__high_prec_dec__render_exponent_present()
14858 exp = -exp; in wuffs_base__private_implementation__high_prec_dec__render_exponent_present()
14861 size_t n = (h->negative || in wuffs_base__private_implementation__high_prec_dec__render_exponent_present()
14875 // Align-left or align-right. in wuffs_base__private_implementation__high_prec_dec__render_exponent_present()
14877 ? &dst.ptr[dst.len - n] in wuffs_base__private_implementation__high_prec_dec__render_exponent_present()
14881 if (h->negative) { in wuffs_base__private_implementation__high_prec_dec__render_exponent_present()
14882 *ptr++ = '-'; in wuffs_base__private_implementation__high_prec_dec__render_exponent_present()
14888 if (h->num_digits > 0) { in wuffs_base__private_implementation__high_prec_dec__render_exponent_present()
14889 *ptr++ = (uint8_t)('0' | h->digits[0]); in wuffs_base__private_implementation__high_prec_dec__render_exponent_present()
14901 uint32_t j = wuffs_base__u32__min(h->num_digits, precision + 1); in wuffs_base__private_implementation__high_prec_dec__render_exponent_present()
14903 *ptr++ = (uint8_t)('0' | h->digits[i]); in wuffs_base__private_implementation__high_prec_dec__render_exponent_present()
14912 *ptr++ = negative_exp ? '-' : '+'; in wuffs_base__private_implementation__high_prec_dec__render_exponent_present()
14921 exp -= e * 100; in wuffs_base__private_implementation__high_prec_dec__render_exponent_present()
14935 // Decompose x (64 bits) into negativity (1 bit), base-2 exponent (11 bits in wuffs_base__render_number_f64()
14936 // with a -1023 bias) and mantissa (52 bits). in wuffs_base__render_number_f64()
14950 exp2 = -1022; in wuffs_base__render_number_f64()
14952 exp2 -= 1023; in wuffs_base__render_number_f64()
14966 &h, exp2 - 52); // 52 mantissa bits. in wuffs_base__render_number_f64()
14976 int32_t p = ((int32_t)(h.num_digits)) - h.decimal_point; in wuffs_base__render_number_f64()
14989 precision = (h.num_digits > 0) ? (h.num_digits - 1) : 0; in wuffs_base__render_number_f64()
15021 int32_t e = h.decimal_point - 1; in wuffs_base__render_number_f64()
15022 if ((e < -4) || (e_threshold <= e)) { in wuffs_base__render_number_f64()
15025 dst, &h, (p > 0) ? (p - 1) : 0, options); in wuffs_base__render_number_f64()
15033 precision = ((uint32_t)(wuffs_base__i32__max(0, p - h.decimal_point))); in wuffs_base__render_number_f64()
15045 // ---------------- Integer
15059 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, // 0x30 ..= 0x37. '0'-'7'.
15060 0x88, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x38 ..= 0x3F. '8'-'9'.
15101 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, // 0x30 ..= 0x37. '0'-'7'.
15102 0x88, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x38 ..= 0x3F. '8'-'9'.
15104 0x00, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x00, // 0x40 ..= 0x47. 'A'-'F'.
15108 0x00, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x00, // 0x60 ..= 0x67. 'a'-'f'.
15139 // --------
15154 } else if (*p == '-') { in wuffs_base__parse_number_i64()
15163 wuffs_base__make_slice_u8(p, (size_t)(q - p)), options); in wuffs_base__parse_number_i64()
15173 ret.value = -(int64_t)(r.value); in wuffs_base__parse_number_i64()
15359 // --------
15399 ptr -= 2; in wuffs_base__private_implementation__render_number_u64()
15405 ptr -= 1; in wuffs_base__private_implementation__render_number_u64()
15411 ptr -= 2; in wuffs_base__private_implementation__render_number_u64()
15417 ptr -= 1; in wuffs_base__private_implementation__render_number_u64()
15418 ptr[0] = '-'; in wuffs_base__private_implementation__render_number_u64()
15420 ptr -= 1; in wuffs_base__private_implementation__render_number_u64()
15424 size_t n = sizeof(buf) - ((size_t)(ptr - &buf[0])); in wuffs_base__private_implementation__render_number_u64()
15429 ? (dst.len - n) in wuffs_base__private_implementation__render_number_u64()
15456 // ---------------- Base-16
15484 while (n--) { in wuffs_base__base_16__decode2()
15522 while (n--) { in wuffs_base__base_16__decode4()
15558 while (n--) { in wuffs_base__base_16__encode2()
15595 while (n--) { in wuffs_base__base_16__encode4()
15610 // ---------------- Base-64
15612 // The two base-64 alphabets, std and url, differ only in the last two codes.
15613 // - std: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
15614 // - url: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"
15726 // --------
15775 s_len -= 4; in wuffs_base__base_64__decode()
15780 d_len -= 3; in wuffs_base__base_64__decode()
15841 o.num_dst = (size_t)(d_ptr - dst.ptr); in wuffs_base__base_64__decode()
15842 o.num_src = (size_t)(s_ptr - src.ptr); in wuffs_base__base_64__decode()
15868 s_len -= 3; in wuffs_base__base_64__encode()
15873 d_len -= 4; in wuffs_base__base_64__encode()
15924 o.num_dst = (size_t)(d_ptr - dst.ptr); in wuffs_base__base_64__encode()
15925 o.num_src = (size_t)(s_ptr - src.ptr); in wuffs_base__base_64__encode()
15936 // ---------------- Magic Numbers
15945 // - https://docs.fileformat.com/image/ico/
15950 // Allow-list for the Image Type field. in wuffs_base__magic_number_guess_fourcc__maybe_ico()
15952 return prefix_closed ? 0 : -1; in wuffs_base__magic_number_guess_fourcc__maybe_ico()
15966 return prefix_closed ? 0 : -1; in wuffs_base__magic_number_guess_fourcc__maybe_ico()
15973 return prefix_closed ? 0 : -1; in wuffs_base__magic_number_guess_fourcc__maybe_ico()
15990 // - https://docs.fileformat.com/image/tga/
15991 // - https://www.dca.fee.unicamp.br/~martino/disciplinas/ea978/tgaffs.pdf
15996 // Allow-list for the Image Type field. in wuffs_base__magic_number_guess_fourcc__maybe_tga()
15998 return prefix_closed ? 0 : -1; in wuffs_base__magic_number_guess_fourcc__maybe_tga()
16014 // Allow-list for the Color Map Entry Size field (if the Color Map Type field in wuffs_base__magic_number_guess_fourcc__maybe_tga()
16015 // is non-zero) or else all the Color Map fields should be zero. in wuffs_base__magic_number_guess_fourcc__maybe_tga()
16017 return prefix_closed ? 0 : -1; in wuffs_base__magic_number_guess_fourcc__maybe_tga()
16033 // Allow-list for the Pixel Depth field. in wuffs_base__magic_number_guess_fourcc__maybe_tga()
16035 return prefix_closed ? 0 : -1; in wuffs_base__magic_number_guess_fourcc__maybe_tga()
16056 // - the magic/Magdir tables under https://github.com/file/file in wuffs_base__magic_number_guess_fourcc()
16057 // - the MIME Sniffing algorithm at https://mimesniff.spec.whatwg.org/ in wuffs_base__magic_number_guess_fourcc()
16061 // value starts with the length-minus-1 of the 'magic number'. in wuffs_base__magic_number_guess_fourcc()
16072 {-0x30302020, "\x01\x00\x00"}, // '00 'be in wuffs_base__magic_number_guess_fourcc()
16075 {+0x54494646, "\x03\x49\x49\x2A\x00"}, // TIFF (little-endian) in wuffs_base__magic_number_guess_fourcc()
16076 {+0x54494646, "\x03\x4D\x4D\x00\x2A"}, // TIFF (big-endian) in wuffs_base__magic_number_guess_fourcc()
16077 {-0x52494646, "\x03\x52\x49\x46\x46"}, // RIFF in wuffs_base__magic_number_guess_fourcc()
16086 return prefix_closed ? 0 : -1; in wuffs_base__magic_number_guess_fourcc()
16108 size_t pre_remaining_len = prefix_data.len - 1; in wuffs_base__magic_number_guess_fourcc()
16111 return prefix_closed ? 0 : -1; in wuffs_base__magic_number_guess_fourcc()
16121 return prefix_closed ? 0 : -1; in wuffs_base__magic_number_guess_fourcc()
16132 fourcc = -fourcc; in wuffs_base__magic_number_guess_fourcc()
16136 return prefix_closed ? 0 : -1; in wuffs_base__magic_number_guess_fourcc()
16160 return prefix_closed ? 0 : -1; in wuffs_base__magic_number_guess_fourcc()
16164 // Roughly speaking, this could be a non-degenerate (non-0-width and in wuffs_base__magic_number_guess_fourcc()
16165 // non-0-height) WBMP image. in wuffs_base__magic_number_guess_fourcc()
16181 // ---------------- Pixel Swizzler
16208 // --------
16214 if (!pb || (x >= pb->pixcfg.private_impl.width) || in wuffs_base__pixel_buffer__color_u32_at()
16215 (y >= pb->pixcfg.private_impl.height)) { in wuffs_base__pixel_buffer__color_u32_at()
16219 if (wuffs_base__pixel_format__is_planar(&pb->pixcfg.private_impl.pixfmt)) { in wuffs_base__pixel_buffer__color_u32_at()
16224 size_t stride = pb->private_impl.planes[0].stride; in wuffs_base__pixel_buffer__color_u32_at()
16225 const uint8_t* row = pb->private_impl.planes[0].ptr + (stride * ((size_t)y)); in wuffs_base__pixel_buffer__color_u32_at()
16227 switch (pb->pixcfg.private_impl.pixfmt.repr) { in wuffs_base__pixel_buffer__color_u32_at()
16234 uint8_t* palette = pb->private_impl.planes[3].ptr; in wuffs_base__pixel_buffer__color_u32_at()
16249 uint8_t* palette = pb->private_impl.planes[3].ptr; in wuffs_base__pixel_buffer__color_u32_at()
16297 // --------
16308 if ((x >= pb->pixcfg.private_impl.width) || in wuffs_base__pixel_buffer__set_color_u32_at()
16309 (y >= pb->pixcfg.private_impl.height)) { in wuffs_base__pixel_buffer__set_color_u32_at()
16313 if (wuffs_base__pixel_format__is_planar(&pb->pixcfg.private_impl.pixfmt)) { in wuffs_base__pixel_buffer__set_color_u32_at()
16318 size_t stride = pb->private_impl.planes[0].stride; in wuffs_base__pixel_buffer__set_color_u32_at()
16319 uint8_t* row = pb->private_impl.planes[0].ptr + (stride * ((size_t)y)); in wuffs_base__pixel_buffer__set_color_u32_at()
16321 switch (pb->pixcfg.private_impl.pixfmt.repr) { in wuffs_base__pixel_buffer__set_color_u32_at()
16351 pb->pixcfg.private_impl.pixfmt, color)); in wuffs_base__pixel_buffer__set_color_u32_at()
16399 // --------
16406 size_t stride = pb->private_impl.planes[0].stride; in wuffs_base__pixel_buffer__set_color_u32_fill_rect__xx()
16410 pb->private_impl.planes[0].ptr + (stride * ((size_t)rect.min_incl_y)); in wuffs_base__pixel_buffer__set_color_u32_fill_rect__xx()
16413 for (n = ((size_t)width) * ((size_t)height); n > 0; n--) { in wuffs_base__pixel_buffer__set_color_u32_fill_rect__xx()
16422 uint8_t* ptr = pb->private_impl.planes[0].ptr + (stride * ((size_t)y)) + in wuffs_base__pixel_buffer__set_color_u32_fill_rect__xx()
16425 for (n = width; n > 0; n--) { in wuffs_base__pixel_buffer__set_color_u32_fill_rect__xx()
16437 size_t stride = pb->private_impl.planes[0].stride; in wuffs_base__pixel_buffer__set_color_u32_fill_rect__xxx()
16441 pb->private_impl.planes[0].ptr + (stride * ((size_t)rect.min_incl_y)); in wuffs_base__pixel_buffer__set_color_u32_fill_rect__xxx()
16444 for (n = ((size_t)width) * ((size_t)height); n > 0; n--) { in wuffs_base__pixel_buffer__set_color_u32_fill_rect__xxx()
16453 uint8_t* ptr = pb->private_impl.planes[0].ptr + (stride * ((size_t)y)) + in wuffs_base__pixel_buffer__set_color_u32_fill_rect__xxx()
16456 for (n = width; n > 0; n--) { in wuffs_base__pixel_buffer__set_color_u32_fill_rect__xxx()
16468 size_t stride = pb->private_impl.planes[0].stride; in wuffs_base__pixel_buffer__set_color_u32_fill_rect__xxxx()
16472 pb->private_impl.planes[0].ptr + (stride * ((size_t)rect.min_incl_y)); in wuffs_base__pixel_buffer__set_color_u32_fill_rect__xxxx()
16475 for (n = ((size_t)width) * ((size_t)height); n > 0; n--) { in wuffs_base__pixel_buffer__set_color_u32_fill_rect__xxxx()
16484 uint8_t* ptr = pb->private_impl.planes[0].ptr + (stride * ((size_t)y)) + in wuffs_base__pixel_buffer__set_color_u32_fill_rect__xxxx()
16487 for (n = width; n > 0; n--) { in wuffs_base__pixel_buffer__set_color_u32_fill_rect__xxxx()
16499 size_t stride = pb->private_impl.planes[0].stride; in wuffs_base__pixel_buffer__set_color_u32_fill_rect__xxxxxxxx()
16503 pb->private_impl.planes[0].ptr + (stride * ((size_t)rect.min_incl_y)); in wuffs_base__pixel_buffer__set_color_u32_fill_rect__xxxxxxxx()
16506 for (n = ((size_t)width) * ((size_t)height); n > 0; n--) { in wuffs_base__pixel_buffer__set_color_u32_fill_rect__xxxxxxxx()
16515 uint8_t* ptr = pb->private_impl.planes[0].ptr + (stride * ((size_t)y)) + in wuffs_base__pixel_buffer__set_color_u32_fill_rect__xxxxxxxx()
16518 for (n = width; n > 0; n--) { in wuffs_base__pixel_buffer__set_color_u32_fill_rect__xxxxxxxx()
16536 wuffs_base__pixel_config__bounds(&pb->pixcfg); in wuffs_base__pixel_buffer__set_color_u32_fill_rect()
16541 if (wuffs_base__pixel_format__is_planar(&pb->pixcfg.private_impl.pixfmt)) { in wuffs_base__pixel_buffer__set_color_u32_fill_rect()
16546 switch (pb->pixcfg.private_impl.pixfmt.repr) { in wuffs_base__pixel_buffer__set_color_u32_fill_rect()
16602 // --------
16616 // Work in 16-bit color. in wuffs_base__pixel_palette__closest_element()
16631 // Work in 16-bit color. in wuffs_base__pixel_palette__closest_element()
16646 pb -= cb; in wuffs_base__pixel_palette__closest_element()
16647 pg -= cg; in wuffs_base__pixel_palette__closest_element()
16648 pr -= cr; in wuffs_base__pixel_palette__closest_element()
16649 pa -= ca; in wuffs_base__pixel_palette__closest_element()
16664 // --------
16669 // Extract 16-bit color components. in wuffs_base__composite_nonpremul_nonpremul_u32_axxx()
16693 // Calculate the inverse of the src-alpha: how much of the dst to keep. in wuffs_base__composite_nonpremul_nonpremul_u32_axxx()
16694 uint32_t ia = 0xFFFF - sa; in wuffs_base__composite_nonpremul_nonpremul_u32_axxx()
16709 // Convert from 16-bit color to 8-bit color. in wuffs_base__composite_nonpremul_nonpremul_u32_axxx()
16746 // Calculate the inverse of the src-alpha: how much of the dst to keep. in wuffs_base__composite_nonpremul_nonpremul_u64_axxx()
16747 uint64_t ia = 0xFFFF - sa; in wuffs_base__composite_nonpremul_nonpremul_u64_axxx()
16769 // Extract 16-bit color components. in wuffs_base__composite_nonpremul_premul_u32_axxx()
16784 // Calculate the inverse of the src-alpha: how much of the dst to keep. in wuffs_base__composite_nonpremul_premul_u32_axxx()
16785 uint32_t ia = 0xFFFF - sa; in wuffs_base__composite_nonpremul_premul_u32_axxx()
16800 // Convert from 16-bit color to 8-bit color. in wuffs_base__composite_nonpremul_premul_u32_axxx()
16828 // Calculate the inverse of the src-alpha: how much of the dst to keep. in wuffs_base__composite_nonpremul_premul_u64_axxx()
16829 uint64_t ia = 0xFFFF - sa; in wuffs_base__composite_nonpremul_premul_u64_axxx()
16851 // Extract 16-bit color components. in wuffs_base__composite_premul_nonpremul_u32_axxx()
16861 // Calculate the inverse of the src-alpha: how much of the dst to keep. in wuffs_base__composite_premul_nonpremul_u32_axxx()
16862 uint32_t ia = 0xFFFF - sa; in wuffs_base__composite_premul_nonpremul_u32_axxx()
16870 // Convert from 16-bit color to 8-bit color. in wuffs_base__composite_premul_nonpremul_u32_axxx()
16893 // Calculate the inverse of the src-alpha: how much of the dst to keep. in wuffs_base__composite_premul_nonpremul_u64_axxx()
16894 uint64_t ia = 0xFFFF - sa; in wuffs_base__composite_premul_nonpremul_u64_axxx()
16909 // Extract 16-bit color components. in wuffs_base__composite_premul_premul_u32_axxx()
16919 // Calculate the inverse of the src-alpha: how much of the dst to keep. in wuffs_base__composite_premul_premul_u32_axxx()
16920 uint32_t ia = 0xFFFF - sa; in wuffs_base__composite_premul_premul_u32_axxx()
16928 // Convert from 16-bit color to 8-bit color. in wuffs_base__composite_premul_premul_u32_axxx()
16938 // --------
16951 while (n--) { in wuffs_base__pixel_swizzler__squash_align4_bgr_565_8888()
16957 uint32_t b5 = 0x1F & (argb >> (8 - 5)); in wuffs_base__pixel_swizzler__squash_align4_bgr_565_8888()
16958 uint32_t g6 = 0x3F & (argb >> (16 - 6)); in wuffs_base__pixel_swizzler__squash_align4_bgr_565_8888()
16959 uint32_t r5 = 0x1F & (argb >> (24 - 5)); in wuffs_base__pixel_swizzler__squash_align4_bgr_565_8888()
16969 // --------
16983 while (n--) { in wuffs_base__pixel_swizzler__swap_rgb_bgr()
16996 // ‼ WUFFS MULTI-FILE SECTION +x86_sse42
17024 n -= 4; in wuffs_base__pixel_swizzler__swap_rgbx_bgrx__sse42()
17027 while (n--) { in wuffs_base__pixel_swizzler__swap_rgbx_bgrx__sse42()
17042 // ‼ WUFFS MULTI-FILE SECTION -x86_sse42
17056 while (n--) { in wuffs_base__pixel_swizzler__swap_rgbx_bgrx()
17071 // --------
17151 // --------
17178 n -= 1; in wuffs_base__pixel_swizzler__bgr_565__bgr()
17209 n -= 1; in wuffs_base__pixel_swizzler__bgr_565__bgrx()
17241 n -= 1; in wuffs_base__pixel_swizzler__bgr_565__bgra_nonpremul__src()
17273 n -= 1; in wuffs_base__pixel_swizzler__bgr_565__bgra_nonpremul_4x16le__src()
17297 // Extract 16-bit color components. in wuffs_base__pixel_swizzler__bgr_565__bgra_nonpremul__src_over()
17303 // Convert from 565 color to 16-bit color. in wuffs_base__pixel_swizzler__bgr_565__bgra_nonpremul__src_over()
17312 // Calculate the inverse of the src-alpha: how much of the dst to keep. in wuffs_base__pixel_swizzler__bgr_565__bgra_nonpremul__src_over()
17313 uint32_t ia = 0xFFFF - sa; in wuffs_base__pixel_swizzler__bgr_565__bgra_nonpremul__src_over()
17320 // Convert from 16-bit color to 565 color and combine the components. in wuffs_base__pixel_swizzler__bgr_565__bgra_nonpremul__src_over()
17329 n -= 1; in wuffs_base__pixel_swizzler__bgr_565__bgra_nonpremul__src_over()
17353 // Extract 16-bit color components. in wuffs_base__pixel_swizzler__bgr_565__bgra_nonpremul_4x16le__src_over()
17359 // Convert from 565 color to 16-bit color. in wuffs_base__pixel_swizzler__bgr_565__bgra_nonpremul_4x16le__src_over()
17368 // Calculate the inverse of the src-alpha: how much of the dst to keep. in wuffs_base__pixel_swizzler__bgr_565__bgra_nonpremul_4x16le__src_over()
17369 uint32_t ia = 0xFFFF - sa; in wuffs_base__pixel_swizzler__bgr_565__bgra_nonpremul_4x16le__src_over()
17376 // Convert from 16-bit color to 565 color and combine the components. in wuffs_base__pixel_swizzler__bgr_565__bgra_nonpremul_4x16le__src_over()
17385 n -= 1; in wuffs_base__pixel_swizzler__bgr_565__bgra_nonpremul_4x16le__src_over()
17414 n -= 1; in wuffs_base__pixel_swizzler__bgr_565__bgra_premul__src()
17438 // Extract 16-bit color components. in wuffs_base__pixel_swizzler__bgr_565__bgra_premul__src_over()
17444 // Convert from 565 color to 16-bit color. in wuffs_base__pixel_swizzler__bgr_565__bgra_premul__src_over()
17453 // Calculate the inverse of the src-alpha: how much of the dst to keep. in wuffs_base__pixel_swizzler__bgr_565__bgra_premul__src_over()
17454 uint32_t ia = 0xFFFF - sa; in wuffs_base__pixel_swizzler__bgr_565__bgra_premul__src_over()
17461 // Convert from 16-bit color to 565 color and combine the components. in wuffs_base__pixel_swizzler__bgr_565__bgra_premul__src_over()
17470 n -= 1; in wuffs_base__pixel_swizzler__bgr_565__bgra_premul__src_over()
17501 n -= 1; in wuffs_base__pixel_swizzler__bgr_565__rgb()
17534 n -= 1; in wuffs_base__pixel_swizzler__bgr_565__rgba_nonpremul__src()
17558 // Extract 16-bit color components. in wuffs_base__pixel_swizzler__bgr_565__rgba_nonpremul__src_over()
17564 // Convert from 565 color to 16-bit color. in wuffs_base__pixel_swizzler__bgr_565__rgba_nonpremul__src_over()
17573 // Calculate the inverse of the src-alpha: how much of the dst to keep. in wuffs_base__pixel_swizzler__bgr_565__rgba_nonpremul__src_over()
17574 uint32_t ia = 0xFFFF - sa; in wuffs_base__pixel_swizzler__bgr_565__rgba_nonpremul__src_over()
17581 // Convert from 16-bit color to 565 color and combine the components. in wuffs_base__pixel_swizzler__bgr_565__rgba_nonpremul__src_over()
17590 n -= 1; in wuffs_base__pixel_swizzler__bgr_565__rgba_nonpremul__src_over()
17621 n -= 1; in wuffs_base__pixel_swizzler__bgr_565__rgba_premul__src()
17645 // Extract 16-bit color components. in wuffs_base__pixel_swizzler__bgr_565__rgba_premul__src_over()
17651 // Convert from 565 color to 16-bit color. in wuffs_base__pixel_swizzler__bgr_565__rgba_premul__src_over()
17660 // Calculate the inverse of the src-alpha: how much of the dst to keep. in wuffs_base__pixel_swizzler__bgr_565__rgba_premul__src_over()
17661 uint32_t ia = 0xFFFF - sa; in wuffs_base__pixel_swizzler__bgr_565__rgba_premul__src_over()
17668 // Convert from 16-bit color to 565 color and combine the components. in wuffs_base__pixel_swizzler__bgr_565__rgba_premul__src_over()
17677 n -= 1; in wuffs_base__pixel_swizzler__bgr_565__rgba_premul__src_over()
17706 n -= 1; in wuffs_base__pixel_swizzler__bgr_565__y()
17736 n -= 1; in wuffs_base__pixel_swizzler__bgr_565__y_16be()
17777 n -= loop_unroll_count; in wuffs_base__pixel_swizzler__bgr_565__index__src()
17787 n -= 1; in wuffs_base__pixel_swizzler__bgr_565__index__src()
17825 n -= 1; in wuffs_base__pixel_swizzler__bgr_565__index_bgra_nonpremul__src_over()
17860 n -= 1; in wuffs_base__pixel_swizzler__bgr_565__index_binary_alpha__src_over()
17866 // --------
17891 n -= 1; in wuffs_base__pixel_swizzler__bgr__bgr_565()
17921 n -= 1; in wuffs_base__pixel_swizzler__bgr__bgra_nonpremul__src()
17952 n -= 1; in wuffs_base__pixel_swizzler__bgr__bgra_nonpremul_4x16le__src()
17976 // Extract 16-bit color components. in wuffs_base__pixel_swizzler__bgr__bgra_nonpremul__src_over()
17985 // Calculate the inverse of the src-alpha: how much of the dst to keep. in wuffs_base__pixel_swizzler__bgr__bgra_nonpremul__src_over()
17986 uint32_t ia = 0xFFFF - sa; in wuffs_base__pixel_swizzler__bgr__bgra_nonpremul__src_over()
17993 // Convert from 16-bit color to 8-bit color. in wuffs_base__pixel_swizzler__bgr__bgra_nonpremul__src_over()
18000 n -= 1; in wuffs_base__pixel_swizzler__bgr__bgra_nonpremul__src_over()
18024 // Extract 16-bit color components. in wuffs_base__pixel_swizzler__bgr__bgra_nonpremul_4x16le__src_over()
18033 // Calculate the inverse of the src-alpha: how much of the dst to keep. in wuffs_base__pixel_swizzler__bgr__bgra_nonpremul_4x16le__src_over()
18034 uint32_t ia = 0xFFFF - sa; in wuffs_base__pixel_swizzler__bgr__bgra_nonpremul_4x16le__src_over()
18041 // Convert from 16-bit color to 8-bit color. in wuffs_base__pixel_swizzler__bgr__bgra_nonpremul_4x16le__src_over()
18048 n -= 1; in wuffs_base__pixel_swizzler__bgr__bgra_nonpremul_4x16le__src_over()
18078 n -= 1; in wuffs_base__pixel_swizzler__bgr__bgra_premul__src()
18099 // Extract 16-bit color components. in wuffs_base__pixel_swizzler__bgr__bgra_premul__src_over()
18108 // Calculate the inverse of the src-alpha: how much of the dst to keep. in wuffs_base__pixel_swizzler__bgr__bgra_premul__src_over()
18109 uint32_t ia = 0xFFFF - sa; in wuffs_base__pixel_swizzler__bgr__bgra_premul__src_over()
18116 // Convert from 16-bit color to 8-bit color. in wuffs_base__pixel_swizzler__bgr__bgra_premul__src_over()
18123 n -= 1; in wuffs_base__pixel_swizzler__bgr__bgra_premul__src_over()
18153 n -= 1; in wuffs_base__pixel_swizzler__bgr__rgba_nonpremul__src()
18177 // Extract 16-bit color components. in wuffs_base__pixel_swizzler__bgr__rgba_nonpremul__src_over()
18186 // Calculate the inverse of the src-alpha: how much of the dst to keep. in wuffs_base__pixel_swizzler__bgr__rgba_nonpremul__src_over()
18187 uint32_t ia = 0xFFFF - sa; in wuffs_base__pixel_swizzler__bgr__rgba_nonpremul__src_over()
18194 // Convert from 16-bit color to 8-bit color. in wuffs_base__pixel_swizzler__bgr__rgba_nonpremul__src_over()
18201 n -= 1; in wuffs_base__pixel_swizzler__bgr__rgba_nonpremul__src_over()
18231 n -= 1; in wuffs_base__pixel_swizzler__bgr__rgba_premul__src()
18252 // Extract 16-bit color components. in wuffs_base__pixel_swizzler__bgr__rgba_premul__src_over()
18261 // Calculate the inverse of the src-alpha: how much of the dst to keep. in wuffs_base__pixel_swizzler__bgr__rgba_premul__src_over()
18262 uint32_t ia = 0xFFFF - sa; in wuffs_base__pixel_swizzler__bgr__rgba_premul__src_over()
18269 // Convert from 16-bit color to 8-bit color. in wuffs_base__pixel_swizzler__bgr__rgba_premul__src_over()
18276 n -= 1; in wuffs_base__pixel_swizzler__bgr__rgba_premul__src_over()
18282 // --------
18308 n -= 1; in wuffs_base__pixel_swizzler__bgra_nonpremul__bgra_nonpremul__src_over()
18336 n -= 1; in wuffs_base__pixel_swizzler__bgra_nonpremul__bgra_nonpremul_4x16le__src()
18367 n -= 1; in wuffs_base__pixel_swizzler__bgra_nonpremul__bgra_nonpremul_4x16le__src_over()
18396 n -= 1; in wuffs_base__pixel_swizzler__bgra_nonpremul__bgra_premul__src()
18425 n -= 1; in wuffs_base__pixel_swizzler__bgra_nonpremul__bgra_premul__src_over()
18461 n -= 1; in wuffs_base__pixel_swizzler__bgra_nonpremul__index_bgra_nonpremul__src_over()
18492 n -= 1; in wuffs_base__pixel_swizzler__bgra_nonpremul__rgba_nonpremul__src_over()
18522 n -= 1; in wuffs_base__pixel_swizzler__bgra_nonpremul__rgba_premul__src()
18552 n -= 1; in wuffs_base__pixel_swizzler__bgra_nonpremul__rgba_premul__src_over()
18558 // --------
18591 n -= 1; in wuffs_base__pixel_swizzler__bgra_nonpremul_4x16le__bgra_nonpremul__src()
18621 n -= 1; in wuffs_base__pixel_swizzler__bgra_nonpremul_4x16le__bgra_nonpremul__src_over()
18650 n -= 1; in wuffs_base__pixel_swizzler__bgra_nonpremul_4x16le__bgra_nonpremul_4x16le__src_over()
18678 n -= 1; in wuffs_base__pixel_swizzler__bgra_nonpremul_4x16le__bgra_premul__src()
18707 n -= 1; in wuffs_base__pixel_swizzler__bgra_nonpremul_4x16le__bgra_premul__src_over()
18741 n -= 1; in wuffs_base__pixel_swizzler__bgra_nonpremul_4x16le__index_bgra_nonpremul__src_over()
18778 n -= 1; in wuffs_base__pixel_swizzler__bgra_nonpremul_4x16le__rgba_nonpremul__src()
18809 n -= 1; in wuffs_base__pixel_swizzler__bgra_nonpremul_4x16le__rgba_nonpremul__src_over()
18838 n -= 1; in wuffs_base__pixel_swizzler__bgra_nonpremul_4x16le__rgba_premul__src()
18868 n -= 1; in wuffs_base__pixel_swizzler__bgra_nonpremul_4x16le__rgba_premul__src_over()
18873 // --------
18900 n -= 1; in wuffs_base__pixel_swizzler__bgra_premul__bgra_nonpremul__src()
18931 n -= 1; in wuffs_base__pixel_swizzler__bgra_premul__bgra_nonpremul_4x16le__src()
18962 n -= 1; in wuffs_base__pixel_swizzler__bgra_premul__bgra_nonpremul__src_over()
18996 n -= 1; in wuffs_base__pixel_swizzler__bgra_premul__bgra_nonpremul_4x16le__src_over()
19027 n -= 1; in wuffs_base__pixel_swizzler__bgra_premul__bgra_premul__src_over()
19062 n -= 1; in wuffs_base__pixel_swizzler__bgra_premul__index_bgra_nonpremul__src_over()
19094 n -= 1; in wuffs_base__pixel_swizzler__bgra_premul__rgba_nonpremul__src()
19126 n -= 1; in wuffs_base__pixel_swizzler__bgra_premul__rgba_nonpremul__src_over()
19159 n -= 1; in wuffs_base__pixel_swizzler__bgra_premul__rgba_nonpremul_4x16le__src()
19194 n -= 1; in wuffs_base__pixel_swizzler__bgra_premul__rgba_nonpremul_4x16le__src_over()
19224 n -= 1; in wuffs_base__pixel_swizzler__bgra_premul__rgba_premul__src_over()
19230 // --------
19255 n -= 1; in wuffs_base__pixel_swizzler__bgrw__bgr()
19284 n -= 1; in wuffs_base__pixel_swizzler__bgrw__bgr_565()
19313 n -= 1; in wuffs_base__pixel_swizzler__bgrw__bgrx()
19319 // ‼ WUFFS MULTI-FILE SECTION +x86_sse42
19340 __m128i or_ff = _mm_set_epi8(-0x01, +0x00, +0x00, +0x00, // in wuffs_base__pixel_swizzler__bgrw__rgb__sse42()
19341 -0x01, +0x00, +0x00, +0x00, // in wuffs_base__pixel_swizzler__bgrw__rgb__sse42()
19342 -0x01, +0x00, +0x00, +0x00, // in wuffs_base__pixel_swizzler__bgrw__rgb__sse42()
19343 -0x01, +0x00, +0x00, +0x00); in wuffs_base__pixel_swizzler__bgrw__rgb__sse42()
19354 n -= 4; in wuffs_base__pixel_swizzler__bgrw__rgb__sse42()
19368 n -= 1; in wuffs_base__pixel_swizzler__bgrw__rgb__sse42()
19374 // ‼ WUFFS MULTI-FILE SECTION -x86_sse42
19401 n -= 1; in wuffs_base__pixel_swizzler__bgrw__rgb()
19434 n -= 1; in wuffs_base__pixel_swizzler__bgrw__rgbx()
19440 // --------
19471 n -= 1; in wuffs_base__pixel_swizzler__bgrw_4x16le__bgr()
19500 n -= 1; in wuffs_base__pixel_swizzler__bgrw_4x16le__bgr_565()
19535 n -= 1; in wuffs_base__pixel_swizzler__bgrw_4x16le__bgrx()
19570 n -= 1; in wuffs_base__pixel_swizzler__bgrw_4x16le__rgb()
19576 // --------
19600 n -= 1; in wuffs_base__pixel_swizzler__rgba_nonpremul__bgra_nonpremul_4x16le__src()
19632 n -= 1; in wuffs_base__pixel_swizzler__rgba_nonpremul__bgra_nonpremul_4x16le__src_over()
19638 // --------
19665 n -= 1; in wuffs_base__pixel_swizzler__rgbw__bgr_565()
19671 // --------
19693 // ">=", the last 4-byte store could write past the end of the dst slice. in wuffs_base__pixel_swizzler__xxx__index__src()
19695 // Each 4-byte store writes one too many bytes, but a subsequent store in wuffs_base__pixel_swizzler__xxx__index__src()
19697 // store, whether a 4-byte store in this loop or a 1-byte store in the in wuffs_base__pixel_swizzler__xxx__index__src()
19715 n -= loop_unroll_count; in wuffs_base__pixel_swizzler__xxx__index__src()
19725 n -= 1; in wuffs_base__pixel_swizzler__xxx__index__src()
19761 n -= 1; in wuffs_base__pixel_swizzler__xxx__index_bgra_nonpremul__src_over()
19811 n -= loop_unroll_count; in wuffs_base__pixel_swizzler__xxx__index_binary_alpha__src_over()
19823 n -= 1; in wuffs_base__pixel_swizzler__xxx__index_binary_alpha__src_over()
19851 n -= 1; in wuffs_base__pixel_swizzler__xxx__xxxx()
19880 n -= 1; in wuffs_base__pixel_swizzler__xxx__y()
19910 n -= 1; in wuffs_base__pixel_swizzler__xxx__y_16be()
19916 // --------
19953 n -= loop_unroll_count; in wuffs_base__pixel_swizzler__xxxx__index__src()
19963 n -= 1; in wuffs_base__pixel_swizzler__xxxx__index__src()
20013 n -= loop_unroll_count; in wuffs_base__pixel_swizzler__xxxx__index_binary_alpha__src_over()
20025 n -= 1; in wuffs_base__pixel_swizzler__xxxx__index_binary_alpha__src_over()
20031 // ‼ WUFFS MULTI-FILE SECTION +x86_sse42
20051 __m128i or_ff = _mm_set_epi8(-0x01, +0x00, +0x00, +0x00, // in wuffs_base__pixel_swizzler__xxxx__y__sse42()
20052 -0x01, +0x00, +0x00, +0x00, // in wuffs_base__pixel_swizzler__xxxx__y__sse42()
20053 -0x01, +0x00, +0x00, +0x00, // in wuffs_base__pixel_swizzler__xxxx__y__sse42()
20054 -0x01, +0x00, +0x00, +0x00); in wuffs_base__pixel_swizzler__xxxx__y__sse42()
20065 n -= 4; in wuffs_base__pixel_swizzler__xxxx__y__sse42()
20074 n -= 1; in wuffs_base__pixel_swizzler__xxxx__y__sse42()
20080 // ‼ WUFFS MULTI-FILE SECTION -x86_sse42
20101 n -= 1; in wuffs_base__pixel_swizzler__xxxx__y()
20127 n -= 1; in wuffs_base__pixel_swizzler__xxxx__y_16be()
20133 // --------
20160 n -= 1; in wuffs_base__pixel_swizzler__xxxxxxxx__index__src()
20194 n -= 1; in wuffs_base__pixel_swizzler__xxxxxxxx__index_binary_alpha__src_over()
20219 n -= 1; in wuffs_base__pixel_swizzler__xxxxxxxx__y()
20247 n -= 1; in wuffs_base__pixel_swizzler__xxxxxxxx__y_16be()
20253 // --------
20273 n -= 1; in wuffs_base__pixel_swizzler__y__y_16be()
20301 n -= 1; in wuffs_base__pixel_swizzler__y_16le__y_16be()
20307 // --------
20340 // --------
21268 // --------
21280 p->private_impl.func = NULL; in wuffs_base__pixel_swizzler__prepare()
21281 p->private_impl.transparent_black_func = NULL; in wuffs_base__pixel_swizzler__prepare()
21282 p->private_impl.dst_pixfmt_bytes_per_pixel = 0; in wuffs_base__pixel_swizzler__prepare()
21283 p->private_impl.src_pixfmt_bytes_per_pixel = 0; in wuffs_base__pixel_swizzler__prepare()
21386 p->private_impl.func = func; in wuffs_base__pixel_swizzler__prepare()
21387 p->private_impl.transparent_black_func = transparent_black_func; in wuffs_base__pixel_swizzler__prepare()
21388 p->private_impl.dst_pixfmt_bytes_per_pixel = dst_pixfmt_bits_per_pixel / 8; in wuffs_base__pixel_swizzler__prepare()
21389 p->private_impl.src_pixfmt_bytes_per_pixel = src_pixfmt_bits_per_pixel / 8; in wuffs_base__pixel_swizzler__prepare()
21402 if (p && p->private_impl.func) { in wuffs_base__pixel_swizzler__limited_swizzle_u32_interleaved_from_reader()
21406 ((uint64_t)p->private_impl.src_pixfmt_bytes_per_pixel), in wuffs_base__pixel_swizzler__limited_swizzle_u32_interleaved_from_reader()
21407 ((uint64_t)(io2_r - iop_r))); in wuffs_base__pixel_swizzler__limited_swizzle_u32_interleaved_from_reader()
21409 (*p->private_impl.func)(dst.ptr, dst.len, dst_palette.ptr, in wuffs_base__pixel_swizzler__limited_swizzle_u32_interleaved_from_reader()
21411 *ptr_iop_r += n * p->private_impl.src_pixfmt_bytes_per_pixel; in wuffs_base__pixel_swizzler__limited_swizzle_u32_interleaved_from_reader()
21424 if (p && p->private_impl.func) { in wuffs_base__pixel_swizzler__swizzle_interleaved_from_reader()
21426 uint64_t src_len = ((uint64_t)(io2_r - iop_r)); in wuffs_base__pixel_swizzler__swizzle_interleaved_from_reader()
21428 (*p->private_impl.func)(dst.ptr, dst.len, dst_palette.ptr, in wuffs_base__pixel_swizzler__swizzle_interleaved_from_reader()
21430 *ptr_iop_r += n * p->private_impl.src_pixfmt_bytes_per_pixel; in wuffs_base__pixel_swizzler__swizzle_interleaved_from_reader()
21442 if (p && p->private_impl.func) { in wuffs_base__pixel_swizzler__swizzle_interleaved_from_slice()
21443 return (*p->private_impl.func)(dst.ptr, dst.len, dst_palette.ptr, in wuffs_base__pixel_swizzler__swizzle_interleaved_from_slice()
21455 if (p && p->private_impl.transparent_black_func) { in wuffs_base__pixel_swizzler__swizzle_interleaved_transparent_black()
21456 return (*p->private_impl.transparent_black_func)( in wuffs_base__pixel_swizzler__swizzle_interleaved_transparent_black()
21458 p->private_impl.dst_pixfmt_bytes_per_pixel); in wuffs_base__pixel_swizzler__swizzle_interleaved_transparent_black()
21470 // ---------------- Unicode and UTF-8
21509 // UTF-8 encoded code point, based on the encoding's initial byte.
21510 // - 0x00 is 1-byte UTF-8 (ASCII).
21511 // - 0x01 is the start of 2-byte UTF-8.
21512 // - 0x02 is the start of 3-byte UTF-8.
21513 // - 0x03 is the start of 4-byte UTF-8.
21514 // - 0x40 is a UTF-8 tail byte.
21515 // - 0x80 is invalid UTF-8.
21517 // RFC 3629 (UTF-8) gives this grammar for valid UTF-8:
21518 // UTF8-1 = %x00-7F
21519 // UTF8-2 = %xC2-DF UTF8-tail
21520 // UTF8-3 = %xE0 %xA0-BF UTF8-tail / %xE1-EC 2( UTF8-tail ) /
21521 // %xED %x80-9F UTF8-tail / %xEE-EF 2( UTF8-tail )
21522 // UTF8-4 = %xF0 %x90-BF 2( UTF8-tail ) / %xF1-F3 3( UTF8-tail ) /
21523 // %xF4 %x80-8F 2( UTF8-tail )
21524 // UTF8-tail = %x80-BF
21628 const uint8_t* ptr = &s_ptr[s_len - 1]; in wuffs_base__utf_8__next_from_end()
21633 const uint8_t* too_far = &s_ptr[(s_len > 4) ? (s_len - 4) : 0]; in wuffs_base__utf_8__next_from_end()
21636 ptr--; in wuffs_base__utf_8__next_from_end()
21657 // TODO: possibly optimize the all-ASCII case (4 or 8 bytes at a time). in wuffs_base__utf_8__longest_valid_prefix()
21668 s_len -= o.byte_length; in wuffs_base__utf_8__longest_valid_prefix()
21670 return original_len - s_len; in wuffs_base__utf_8__longest_valid_prefix()
21681 return (size_t)(p - original_ptr); in wuffs_base__ascii__longest_valid_prefix()
21694 // ---------------- Status Codes Implementations
21696 // ---------------- Private Consts
21698 // ---------------- Private Initializer Prototypes
21700 // ---------------- Private Function Prototypes
21726 // ---------------- VTables
21737 // ---------------- Initializer Implementations
21757 // The whole point of this if-check is to detect an uninitialized *self. in wuffs_adler32__hasher__initialize()
21758 // We disable the warning on GCC. Clang-5.0 does not have this warning. in wuffs_adler32__hasher__initialize()
21761 #pragma GCC diagnostic ignored "-Wmaybe-uninitialized" in wuffs_adler32__hasher__initialize()
21763 if (self->private_impl.magic != 0) { in wuffs_adler32__hasher__initialize()
21774 memset(&(self->private_impl), 0, sizeof(self->private_impl)); in wuffs_adler32__hasher__initialize()
21778 self->private_impl.choosy_up = &wuffs_adler32__hasher__up__choosy_default; in wuffs_adler32__hasher__initialize()
21780 self->private_impl.magic = WUFFS_BASE__MAGIC; in wuffs_adler32__hasher__initialize()
21781 self->private_impl.vtable_for__wuffs_base__hasher_u32.vtable_name = in wuffs_adler32__hasher__initialize()
21783 self->private_impl.vtable_for__wuffs_base__hasher_u32.function_pointers = in wuffs_adler32__hasher__initialize()
21808 // ---------------- Function Implementations
21810 // -------- func adler32.hasher.set_quirk_enabled
21820 // -------- func adler32.hasher.update_u32
21829 if (self->private_impl.magic != WUFFS_BASE__MAGIC) { in wuffs_adler32__hasher__update_u32()
21833 if ( ! self->private_impl.f_started) { in wuffs_adler32__hasher__update_u32()
21834 self->private_impl.f_started = true; in wuffs_adler32__hasher__update_u32()
21835 self->private_impl.f_state = 1; in wuffs_adler32__hasher__update_u32()
21836 self->private_impl.choosy_up = ( in wuffs_adler32__hasher__update_u32()
21843 self->private_impl.choosy_up); in wuffs_adler32__hasher__update_u32()
21846 return self->private_impl.f_state; in wuffs_adler32__hasher__update_u32()
21849 // -------- func adler32.hasher.up
21855 return (*self->private_impl.choosy_up)(self, a_x); in wuffs_adler32__hasher__up()
21867 v_s1 = ((self->private_impl.f_state) & 0xFFFF); in wuffs_adler32__hasher__up__choosy_default()
21868 v_s2 = ((self->private_impl.f_state) >> (32 - (16))); in wuffs_adler32__hasher__up__choosy_default()
21879 uint8_t* i_end0_p = v_p.ptr + (((i_slice_p.len - (size_t)(v_p.ptr - i_slice_p.ptr)) / 8) * 8); in wuffs_adler32__hasher__up__choosy_default()
21919 self->private_impl.f_state = (((v_s2 & 65535) << 16) | (v_s1 & 65535)); in wuffs_adler32__hasher__up__choosy_default()
21923 // ‼ WUFFS MULTI-FILE SECTION +arm_neon
21924 // -------- func adler32.hasher.up_arm_neon
21949 v_s1 = ((self->private_impl.f_state) & 0xFFFF); in wuffs_adler32__hasher__up_arm_neon()
21950 v_s2 = ((self->private_impl.f_state) >> (32 - (16))); in wuffs_adler32__hasher__up_arm_neon()
21976 … uint8_t* i_end0_p = v_p.ptr + (((i_slice_p.len - (size_t)(v_p.ptr - i_slice_p.ptr)) / 32) * 32); in wuffs_adler32__hasher__up_arm_neon()
22033 self->private_impl.f_state = (((v_s2 & 65535) << 16) | (v_s1 & 65535)); in wuffs_adler32__hasher__up_arm_neon()
22037 // ‼ WUFFS MULTI-FILE SECTION -arm_neon
22039 // ‼ WUFFS MULTI-FILE SECTION +x86_sse42
22040 // -------- func adler32.hasher.up_x86_sse42
22069 v_s1 = ((self->private_impl.f_state) & 0xFFFF); in wuffs_adler32__hasher__up_x86_sse42()
22070 v_s2 = ((self->private_impl.f_state) >> (32 - (16))); in wuffs_adler32__hasher__up_x86_sse42()
22086 … uint8_t* i_end0_p = v_p.ptr + (((i_slice_p.len - (size_t)(v_p.ptr - i_slice_p.ptr)) / 32) * 32); in wuffs_adler32__hasher__up_x86_sse42()
22125 self->private_impl.f_state = (((v_s2 & 65535) << 16) | (v_s1 & 65535)); in wuffs_adler32__hasher__up_x86_sse42()
22129 // ‼ WUFFS MULTI-FILE SECTION -x86_sse42
22135 // ---------------- Status Codes Implementations
22142 // ---------------- Private Consts
22172 // ---------------- Private Initializer Prototypes
22174 // ---------------- Private Function Prototypes
22209 // ---------------- VTables
22245 // ---------------- Initializer Implementations
22265 // The whole point of this if-check is to detect an uninitialized *self. in wuffs_bmp__decoder__initialize()
22266 // We disable the warning on GCC. Clang-5.0 does not have this warning. in wuffs_bmp__decoder__initialize()
22269 #pragma GCC diagnostic ignored "-Wmaybe-uninitialized" in wuffs_bmp__decoder__initialize()
22271 if (self->private_impl.magic != 0) { in wuffs_bmp__decoder__initialize()
22282 memset(&(self->private_impl), 0, sizeof(self->private_impl)); in wuffs_bmp__decoder__initialize()
22286 self->private_impl.magic = WUFFS_BASE__MAGIC; in wuffs_bmp__decoder__initialize()
22287 self->private_impl.vtable_for__wuffs_base__image_decoder.vtable_name = in wuffs_bmp__decoder__initialize()
22289 self->private_impl.vtable_for__wuffs_base__image_decoder.function_pointers = in wuffs_bmp__decoder__initialize()
22314 // ---------------- Function Implementations
22316 // -------- func bmp.decoder.set_quirk_enabled
22326 // -------- func bmp.decoder.decode_image_config
22336 if (self->private_impl.magic != WUFFS_BASE__MAGIC) { in wuffs_bmp__decoder__decode_image_config()
22338 (self->private_impl.magic == WUFFS_BASE__DISABLED) in wuffs_bmp__decoder__decode_image_config()
22343 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_bmp__decoder__decode_image_config()
22346 if ((self->private_impl.active_coroutine != 0) && in wuffs_bmp__decoder__decode_image_config()
22347 (self->private_impl.active_coroutine != 1)) { in wuffs_bmp__decoder__decode_image_config()
22348 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_bmp__decoder__decode_image_config()
22351 self->private_impl.active_coroutine = 0; in wuffs_bmp__decoder__decode_image_config()
22366 io0_a_src = a_src->data.ptr; in wuffs_bmp__decoder__decode_image_config()
22367 io1_a_src = io0_a_src + a_src->meta.ri; in wuffs_bmp__decoder__decode_image_config()
22369 io2_a_src = io0_a_src + a_src->meta.wi; in wuffs_bmp__decoder__decode_image_config()
22372 uint32_t coro_susp_point = self->private_impl.p_decode_image_config[0]; in wuffs_bmp__decoder__decode_image_config()
22376 … if ((self->private_impl.f_call_sequence != 0) || (self->private_impl.f_io_redirect_fourcc == 1)) { in wuffs_bmp__decoder__decode_image_config()
22379 } else if (self->private_impl.f_io_redirect_fourcc != 0) { in wuffs_bmp__decoder__decode_image_config()
22386 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 2)) { in wuffs_bmp__decoder__decode_image_config()
22390 self->private_data.s_decode_image_config[0].scratch = 0; in wuffs_bmp__decoder__decode_image_config()
22397 uint64_t* scratch = &self->private_data.s_decode_image_config[0].scratch; in wuffs_bmp__decoder__decode_image_config()
22416 self->private_data.s_decode_image_config[0].scratch = 8; in wuffs_bmp__decoder__decode_image_config()
22418 if (self->private_data.s_decode_image_config[0].scratch > ((uint64_t)(io2_a_src - iop_a_src))) { in wuffs_bmp__decoder__decode_image_config()
22419 self->private_data.s_decode_image_config[0].scratch -= ((uint64_t)(io2_a_src - iop_a_src)); in wuffs_bmp__decoder__decode_image_config()
22424 iop_a_src += self->private_data.s_decode_image_config[0].scratch; in wuffs_bmp__decoder__decode_image_config()
22428 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 4)) { in wuffs_bmp__decoder__decode_image_config()
22432 self->private_data.s_decode_image_config[0].scratch = 0; in wuffs_bmp__decoder__decode_image_config()
22439 uint64_t* scratch = &self->private_data.s_decode_image_config[0].scratch; in wuffs_bmp__decoder__decode_image_config()
22452 self->private_impl.f_padding = t_1; in wuffs_bmp__decoder__decode_image_config()
22454 if (self->private_impl.f_padding < 14) { in wuffs_bmp__decoder__decode_image_config()
22458 self->private_impl.f_padding -= 14; in wuffs_bmp__decoder__decode_image_config()
22459->private_impl.f_io_redirect_pos = wuffs_base__u64__sat_add(((uint64_t)(self->private_impl.f_paddi… in wuffs_bmp__decoder__decode_image_config()
22463 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 4)) { in wuffs_bmp__decoder__decode_image_config()
22467 self->private_data.s_decode_image_config[0].scratch = 0; in wuffs_bmp__decoder__decode_image_config()
22474 uint64_t* scratch = &self->private_data.s_decode_image_config[0].scratch; in wuffs_bmp__decoder__decode_image_config()
22487 self->private_impl.f_bitmap_info_len = t_2; in wuffs_bmp__decoder__decode_image_config()
22489 if (self->private_impl.f_padding < self->private_impl.f_bitmap_info_len) { in wuffs_bmp__decoder__decode_image_config()
22493 self->private_impl.f_padding -= self->private_impl.f_bitmap_info_len; in wuffs_bmp__decoder__decode_image_config()
22494 if (self->private_impl.f_bitmap_info_len == 12) { in wuffs_bmp__decoder__decode_image_config()
22498 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 2)) { in wuffs_bmp__decoder__decode_image_config()
22502 self->private_data.s_decode_image_config[0].scratch = 0; in wuffs_bmp__decoder__decode_image_config()
22509 uint64_t* scratch = &self->private_data.s_decode_image_config[0].scratch; in wuffs_bmp__decoder__decode_image_config()
22522 self->private_impl.f_width = t_3; in wuffs_bmp__decoder__decode_image_config()
22527 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 2)) { in wuffs_bmp__decoder__decode_image_config()
22531 self->private_data.s_decode_image_config[0].scratch = 0; in wuffs_bmp__decoder__decode_image_config()
22538 uint64_t* scratch = &self->private_data.s_decode_image_config[0].scratch; in wuffs_bmp__decoder__decode_image_config()
22551 self->private_impl.f_height = t_4; in wuffs_bmp__decoder__decode_image_config()
22556 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 2)) { in wuffs_bmp__decoder__decode_image_config()
22560 self->private_data.s_decode_image_config[0].scratch = 0; in wuffs_bmp__decoder__decode_image_config()
22567 uint64_t* scratch = &self->private_data.s_decode_image_config[0].scratch; in wuffs_bmp__decoder__decode_image_config()
22589 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 2)) { in wuffs_bmp__decoder__decode_image_config()
22593 self->private_data.s_decode_image_config[0].scratch = 0; in wuffs_bmp__decoder__decode_image_config()
22600 uint64_t* scratch = &self->private_data.s_decode_image_config[0].scratch; in wuffs_bmp__decoder__decode_image_config()
22613 self->private_impl.f_bits_per_pixel = t_6; in wuffs_bmp__decoder__decode_image_config()
22615 } else if (self->private_impl.f_bitmap_info_len == 16) { in wuffs_bmp__decoder__decode_image_config()
22619 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 4)) { in wuffs_bmp__decoder__decode_image_config()
22623 self->private_data.s_decode_image_config[0].scratch = 0; in wuffs_bmp__decoder__decode_image_config()
22630 uint64_t* scratch = &self->private_data.s_decode_image_config[0].scratch; in wuffs_bmp__decoder__decode_image_config()
22649 self->private_impl.f_width = v_width; in wuffs_bmp__decoder__decode_image_config()
22653 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 4)) { in wuffs_bmp__decoder__decode_image_config()
22657 self->private_data.s_decode_image_config[0].scratch = 0; in wuffs_bmp__decoder__decode_image_config()
22664 uint64_t* scratch = &self->private_data.s_decode_image_config[0].scratch; in wuffs_bmp__decoder__decode_image_config()
22683 self->private_impl.f_height = v_height; in wuffs_bmp__decoder__decode_image_config()
22687 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 2)) { in wuffs_bmp__decoder__decode_image_config()
22691 self->private_data.s_decode_image_config[0].scratch = 0; in wuffs_bmp__decoder__decode_image_config()
22698 uint64_t* scratch = &self->private_data.s_decode_image_config[0].scratch; in wuffs_bmp__decoder__decode_image_config()
22720 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 2)) { in wuffs_bmp__decoder__decode_image_config()
22724 self->private_data.s_decode_image_config[0].scratch = 0; in wuffs_bmp__decoder__decode_image_config()
22731 uint64_t* scratch = &self->private_data.s_decode_image_config[0].scratch; in wuffs_bmp__decoder__decode_image_config()
22744 self->private_impl.f_bits_per_pixel = t_10; in wuffs_bmp__decoder__decode_image_config()
22750 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 4)) { in wuffs_bmp__decoder__decode_image_config()
22754 self->private_data.s_decode_image_config[0].scratch = 0; in wuffs_bmp__decoder__decode_image_config()
22761 uint64_t* scratch = &self->private_data.s_decode_image_config[0].scratch; in wuffs_bmp__decoder__decode_image_config()
22780 self->private_impl.f_width = v_width; in wuffs_bmp__decoder__decode_image_config()
22784 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 4)) { in wuffs_bmp__decoder__decode_image_config()
22788 self->private_data.s_decode_image_config[0].scratch = 0; in wuffs_bmp__decoder__decode_image_config()
22795 uint64_t* scratch = &self->private_data.s_decode_image_config[0].scratch; in wuffs_bmp__decoder__decode_image_config()
22814 self->private_impl.f_height = (((uint32_t)(0 - v_height)) & 2147483647); in wuffs_bmp__decoder__decode_image_config()
22815 self->private_impl.f_top_down = true; in wuffs_bmp__decoder__decode_image_config()
22817 self->private_impl.f_height = v_height; in wuffs_bmp__decoder__decode_image_config()
22822 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 2)) { in wuffs_bmp__decoder__decode_image_config()
22826 self->private_data.s_decode_image_config[0].scratch = 0; in wuffs_bmp__decoder__decode_image_config()
22833 uint64_t* scratch = &self->private_data.s_decode_image_config[0].scratch; in wuffs_bmp__decoder__decode_image_config()
22855 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 2)) { in wuffs_bmp__decoder__decode_image_config()
22859 self->private_data.s_decode_image_config[0].scratch = 0; in wuffs_bmp__decoder__decode_image_config()
22866 uint64_t* scratch = &self->private_data.s_decode_image_config[0].scratch; in wuffs_bmp__decoder__decode_image_config()
22879 self->private_impl.f_bits_per_pixel = t_14; in wuffs_bmp__decoder__decode_image_config()
22884 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 4)) { in wuffs_bmp__decoder__decode_image_config()
22888 self->private_data.s_decode_image_config[0].scratch = 0; in wuffs_bmp__decoder__decode_image_config()
22895 uint64_t* scratch = &self->private_data.s_decode_image_config[0].scratch; in wuffs_bmp__decoder__decode_image_config()
22908 self->private_impl.f_compression = t_15; in wuffs_bmp__decoder__decode_image_config()
22910 if (self->private_impl.f_bits_per_pixel == 0) { in wuffs_bmp__decoder__decode_image_config()
22911 if (self->private_impl.f_compression == 4) { in wuffs_bmp__decoder__decode_image_config()
22912 self->private_impl.f_io_redirect_fourcc = 1246774599; in wuffs_bmp__decoder__decode_image_config()
22915 } else if (self->private_impl.f_compression == 5) { in wuffs_bmp__decoder__decode_image_config()
22916 self->private_impl.f_io_redirect_fourcc = 1347307296; in wuffs_bmp__decoder__decode_image_config()
22923 self->private_data.s_decode_image_config[0].scratch = 20; in wuffs_bmp__decoder__decode_image_config()
22925 … if (self->private_data.s_decode_image_config[0].scratch > ((uint64_t)(io2_a_src - iop_a_src))) { in wuffs_bmp__decoder__decode_image_config()
22926 self->private_data.s_decode_image_config[0].scratch -= ((uint64_t)(io2_a_src - iop_a_src)); in wuffs_bmp__decoder__decode_image_config()
22931 iop_a_src += self->private_data.s_decode_image_config[0].scratch; in wuffs_bmp__decoder__decode_image_config()
22932 if (self->private_impl.f_bitmap_info_len == 40) { in wuffs_bmp__decoder__decode_image_config()
22933 if (self->private_impl.f_bits_per_pixel >= 16) { in wuffs_bmp__decoder__decode_image_config()
22934 if (self->private_impl.f_padding >= 16) { in wuffs_bmp__decoder__decode_image_config()
22935 self->private_impl.f_bitmap_info_len = 56; in wuffs_bmp__decoder__decode_image_config()
22936 self->private_impl.f_padding -= 16; in wuffs_bmp__decoder__decode_image_config()
22937 } else if (self->private_impl.f_padding >= 12) { in wuffs_bmp__decoder__decode_image_config()
22938 self->private_impl.f_bitmap_info_len = 52; in wuffs_bmp__decoder__decode_image_config()
22939 self->private_impl.f_padding -= 12; in wuffs_bmp__decoder__decode_image_config()
22942 } else if ((self->private_impl.f_bitmap_info_len != 52) && in wuffs_bmp__decoder__decode_image_config()
22943 (self->private_impl.f_bitmap_info_len != 56) && in wuffs_bmp__decoder__decode_image_config()
22944 (self->private_impl.f_bitmap_info_len != 64) && in wuffs_bmp__decoder__decode_image_config()
22945 (self->private_impl.f_bitmap_info_len != 108) && in wuffs_bmp__decoder__decode_image_config()
22946 (self->private_impl.f_bitmap_info_len != 124)) { in wuffs_bmp__decoder__decode_image_config()
22950 if (self->private_impl.f_compression == 6) { in wuffs_bmp__decoder__decode_image_config()
22951 self->private_impl.f_compression = 3; in wuffs_bmp__decoder__decode_image_config()
22953 if (self->private_impl.f_compression == 3) { in wuffs_bmp__decoder__decode_image_config()
22954 if (self->private_impl.f_bitmap_info_len >= 52) { in wuffs_bmp__decoder__decode_image_config()
22958 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 4)) { in wuffs_bmp__decoder__decode_image_config()
22962 self->private_data.s_decode_image_config[0].scratch = 0; in wuffs_bmp__decoder__decode_image_config()
22969 uint64_t* scratch = &self->private_data.s_decode_image_config[0].scratch; in wuffs_bmp__decoder__decode_image_config()
22982 self->private_impl.f_channel_masks[2] = t_16; in wuffs_bmp__decoder__decode_image_config()
22987 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 4)) { in wuffs_bmp__decoder__decode_image_config()
22991 self->private_data.s_decode_image_config[0].scratch = 0; in wuffs_bmp__decoder__decode_image_config()
22998 uint64_t* scratch = &self->private_data.s_decode_image_config[0].scratch; in wuffs_bmp__decoder__decode_image_config()
23011 self->private_impl.f_channel_masks[1] = t_17; in wuffs_bmp__decoder__decode_image_config()
23016 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 4)) { in wuffs_bmp__decoder__decode_image_config()
23020 self->private_data.s_decode_image_config[0].scratch = 0; in wuffs_bmp__decoder__decode_image_config()
23027 uint64_t* scratch = &self->private_data.s_decode_image_config[0].scratch; in wuffs_bmp__decoder__decode_image_config()
23040 self->private_impl.f_channel_masks[0] = t_18; in wuffs_bmp__decoder__decode_image_config()
23042 if (self->private_impl.f_bitmap_info_len >= 56) { in wuffs_bmp__decoder__decode_image_config()
23046 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 4)) { in wuffs_bmp__decoder__decode_image_config()
23050 self->private_data.s_decode_image_config[0].scratch = 0; in wuffs_bmp__decoder__decode_image_config()
23057 uint64_t* scratch = &self->private_data.s_decode_image_config[0].scratch; in wuffs_bmp__decoder__decode_image_config()
23070 self->private_impl.f_channel_masks[3] = t_19; in wuffs_bmp__decoder__decode_image_config()
23072 …self->private_data.s_decode_image_config[0].scratch = ((uint32_t)(self->private_impl.f_bitmap_info… in wuffs_bmp__decoder__decode_image_config()
23074 … if (self->private_data.s_decode_image_config[0].scratch > ((uint64_t)(io2_a_src - iop_a_src))) { in wuffs_bmp__decoder__decode_image_config()
23075 … self->private_data.s_decode_image_config[0].scratch -= ((uint64_t)(io2_a_src - iop_a_src)); in wuffs_bmp__decoder__decode_image_config()
23080 iop_a_src += self->private_data.s_decode_image_config[0].scratch; in wuffs_bmp__decoder__decode_image_config()
23082 …if ((self->private_impl.f_channel_masks[0] == 255) && (self->private_impl.f_channel_masks[1] == 65… in wuffs_bmp__decoder__decode_image_config()
23083 if (self->private_impl.f_bits_per_pixel == 24) { in wuffs_bmp__decoder__decode_image_config()
23084 self->private_impl.f_compression = 0; in wuffs_bmp__decoder__decode_image_config()
23085 } else if (self->private_impl.f_bits_per_pixel == 32) { in wuffs_bmp__decoder__decode_image_config()
23086 …if ((self->private_impl.f_channel_masks[3] == 0) || (self->private_impl.f_channel_masks[3] == 4278… in wuffs_bmp__decoder__decode_image_config()
23087 self->private_impl.f_compression = 0; in wuffs_bmp__decoder__decode_image_config()
23097 } else if (self->private_impl.f_bitmap_info_len >= 40) { in wuffs_bmp__decoder__decode_image_config()
23098 … self->private_data.s_decode_image_config[0].scratch = (self->private_impl.f_bitmap_info_len - 40); in wuffs_bmp__decoder__decode_image_config()
23100 … if (self->private_data.s_decode_image_config[0].scratch > ((uint64_t)(io2_a_src - iop_a_src))) { in wuffs_bmp__decoder__decode_image_config()
23101 … self->private_data.s_decode_image_config[0].scratch -= ((uint64_t)(io2_a_src - iop_a_src)); in wuffs_bmp__decoder__decode_image_config()
23106 iop_a_src += self->private_data.s_decode_image_config[0].scratch; in wuffs_bmp__decoder__decode_image_config()
23112 if (self->private_impl.f_compression != 3) { in wuffs_bmp__decoder__decode_image_config()
23113 if (self->private_impl.f_bits_per_pixel < 16) { in wuffs_bmp__decoder__decode_image_config()
23115 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_bmp__decoder__decode_image_config()
23120 iop_a_src = a_src->data.ptr + a_src->meta.ri; in wuffs_bmp__decoder__decode_image_config()
23127 if (self->private_impl.f_compression == 0) { in wuffs_bmp__decoder__decode_image_config()
23128 …if ((self->private_impl.f_bits_per_pixel == 1) || (self->private_impl.f_bits_per_pixel == 2) || (s… in wuffs_bmp__decoder__decode_image_config()
23129 self->private_impl.f_src_pixfmt = 2198077448; in wuffs_bmp__decoder__decode_image_config()
23130 self->private_impl.f_compression = 256; in wuffs_bmp__decoder__decode_image_config()
23131 } else if (self->private_impl.f_bits_per_pixel == 8) { in wuffs_bmp__decoder__decode_image_config()
23132 self->private_impl.f_src_pixfmt = 2198077448; in wuffs_bmp__decoder__decode_image_config()
23133 } else if (self->private_impl.f_bits_per_pixel == 16) { in wuffs_bmp__decoder__decode_image_config()
23134 self->private_impl.f_compression = 3; in wuffs_bmp__decoder__decode_image_config()
23135 self->private_impl.f_channel_masks[0] = 31; in wuffs_bmp__decoder__decode_image_config()
23136 self->private_impl.f_channel_masks[1] = 992; in wuffs_bmp__decoder__decode_image_config()
23137 self->private_impl.f_channel_masks[2] = 31744; in wuffs_bmp__decoder__decode_image_config()
23138 self->private_impl.f_channel_masks[3] = 0; in wuffs_bmp__decoder__decode_image_config()
23144 self->private_impl.f_src_pixfmt = 2164308923; in wuffs_bmp__decoder__decode_image_config()
23145 } else if (self->private_impl.f_bits_per_pixel == 24) { in wuffs_bmp__decoder__decode_image_config()
23146 self->private_impl.f_src_pixfmt = 2147485832; in wuffs_bmp__decoder__decode_image_config()
23147 } else if (self->private_impl.f_bits_per_pixel == 32) { in wuffs_bmp__decoder__decode_image_config()
23148 if (self->private_impl.f_channel_masks[3] == 0) { in wuffs_bmp__decoder__decode_image_config()
23149 self->private_impl.f_src_pixfmt = 2415954056; in wuffs_bmp__decoder__decode_image_config()
23151 self->private_impl.f_src_pixfmt = 2164295816; in wuffs_bmp__decoder__decode_image_config()
23157 } else if (self->private_impl.f_compression == 1) { in wuffs_bmp__decoder__decode_image_config()
23158 if (self->private_impl.f_bits_per_pixel == 8) { in wuffs_bmp__decoder__decode_image_config()
23159 self->private_impl.f_src_pixfmt = 2198077448; in wuffs_bmp__decoder__decode_image_config()
23164 } else if (self->private_impl.f_compression == 2) { in wuffs_bmp__decoder__decode_image_config()
23165 if (self->private_impl.f_bits_per_pixel == 4) { in wuffs_bmp__decoder__decode_image_config()
23166 self->private_impl.f_src_pixfmt = 2198077448; in wuffs_bmp__decoder__decode_image_config()
23171 } else if (self->private_impl.f_compression == 3) { in wuffs_bmp__decoder__decode_image_config()
23172 … if ((self->private_impl.f_bits_per_pixel == 16) || (self->private_impl.f_bits_per_pixel == 32)) { in wuffs_bmp__decoder__decode_image_config()
23173 self->private_impl.f_src_pixfmt = 2164308923; in wuffs_bmp__decoder__decode_image_config()
23182 …if (((self->private_impl.f_bitmap_info_len < 40) || (self->private_impl.f_bitmap_info_len == 64)) … in wuffs_bmp__decoder__decode_image_config()
23183 (self->private_impl.f_bits_per_pixel != 1) && in wuffs_bmp__decoder__decode_image_config()
23184 (self->private_impl.f_bits_per_pixel != 4) && in wuffs_bmp__decoder__decode_image_config()
23185 (self->private_impl.f_bits_per_pixel != 8) && in wuffs_bmp__decoder__decode_image_config()
23186 (self->private_impl.f_bits_per_pixel != 24)) { in wuffs_bmp__decoder__decode_image_config()
23190 if (self->private_impl.f_bits_per_pixel == 1) { in wuffs_bmp__decoder__decode_image_config()
23191 …v_byte_width = ((self->private_impl.f_width >> 3) + (((self->private_impl.f_width & 7) + 7) >> 3)); in wuffs_bmp__decoder__decode_image_config()
23192 self->private_impl.f_pad_per_row = ((4 - (v_byte_width & 3)) & 3); in wuffs_bmp__decoder__decode_image_config()
23193 } else if (self->private_impl.f_bits_per_pixel == 2) { in wuffs_bmp__decoder__decode_image_config()
23194 …v_byte_width = ((self->private_impl.f_width >> 2) + (((self->private_impl.f_width & 3) + 3) >> 2)); in wuffs_bmp__decoder__decode_image_config()
23195 self->private_impl.f_pad_per_row = ((4 - (v_byte_width & 3)) & 3); in wuffs_bmp__decoder__decode_image_config()
23196 } else if (self->private_impl.f_bits_per_pixel == 4) { in wuffs_bmp__decoder__decode_image_config()
23197 v_byte_width = ((self->private_impl.f_width >> 1) + (self->private_impl.f_width & 1)); in wuffs_bmp__decoder__decode_image_config()
23198 self->private_impl.f_pad_per_row = ((4 - (v_byte_width & 3)) & 3); in wuffs_bmp__decoder__decode_image_config()
23199 } else if (self->private_impl.f_bits_per_pixel == 8) { in wuffs_bmp__decoder__decode_image_config()
23200 self->private_impl.f_pad_per_row = ((4 - (self->private_impl.f_width & 3)) & 3); in wuffs_bmp__decoder__decode_image_config()
23201 } else if (self->private_impl.f_bits_per_pixel == 16) { in wuffs_bmp__decoder__decode_image_config()
23202 self->private_impl.f_pad_per_row = ((self->private_impl.f_width & 1) * 2); in wuffs_bmp__decoder__decode_image_config()
23203 } else if (self->private_impl.f_bits_per_pixel == 24) { in wuffs_bmp__decoder__decode_image_config()
23204 self->private_impl.f_pad_per_row = (self->private_impl.f_width & 3); in wuffs_bmp__decoder__decode_image_config()
23205 } else if (self->private_impl.f_bits_per_pixel == 32) { in wuffs_bmp__decoder__decode_image_config()
23206 self->private_impl.f_pad_per_row = 0; in wuffs_bmp__decoder__decode_image_config()
23208 …self->private_impl.f_frame_config_io_position = wuffs_base__u64__sat_add((a_src ? a_src->meta.pos … in wuffs_bmp__decoder__decode_image_config()
23211 if ((self->private_impl.f_channel_num_bits[0] > 8) || in wuffs_bmp__decoder__decode_image_config()
23212 (self->private_impl.f_channel_num_bits[1] > 8) || in wuffs_bmp__decoder__decode_image_config()
23213 (self->private_impl.f_channel_num_bits[2] > 8) || in wuffs_bmp__decoder__decode_image_config()
23214 (self->private_impl.f_channel_num_bits[3] > 8)) { in wuffs_bmp__decoder__decode_image_config()
23221 self->private_impl.f_width, in wuffs_bmp__decoder__decode_image_config()
23222 self->private_impl.f_height, in wuffs_bmp__decoder__decode_image_config()
23223 self->private_impl.f_frame_config_io_position, in wuffs_bmp__decoder__decode_image_config()
23224 (self->private_impl.f_channel_masks[3] == 0)); in wuffs_bmp__decoder__decode_image_config()
23226 self->private_impl.f_call_sequence = 3; in wuffs_bmp__decoder__decode_image_config()
23229 self->private_impl.p_decode_image_config[0] = 0; in wuffs_bmp__decoder__decode_image_config()
23235 …self->private_impl.p_decode_image_config[0] = wuffs_base__status__is_suspension(&status) ? coro_su… in wuffs_bmp__decoder__decode_image_config()
23236 self->private_impl.active_coroutine = wuffs_base__status__is_suspension(&status) ? 1 : 0; in wuffs_bmp__decoder__decode_image_config()
23241 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_bmp__decoder__decode_image_config()
23245 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_bmp__decoder__decode_image_config()
23250 // -------- func bmp.decoder.decode_frame_config
23260 if (self->private_impl.magic != WUFFS_BASE__MAGIC) { in wuffs_bmp__decoder__decode_frame_config()
23262 (self->private_impl.magic == WUFFS_BASE__DISABLED) in wuffs_bmp__decoder__decode_frame_config()
23267 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_bmp__decoder__decode_frame_config()
23270 if ((self->private_impl.active_coroutine != 0) && in wuffs_bmp__decoder__decode_frame_config()
23271 (self->private_impl.active_coroutine != 2)) { in wuffs_bmp__decoder__decode_frame_config()
23272 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_bmp__decoder__decode_frame_config()
23275 self->private_impl.active_coroutine = 0; in wuffs_bmp__decoder__decode_frame_config()
23283 io0_a_src = a_src->data.ptr; in wuffs_bmp__decoder__decode_frame_config()
23284 io1_a_src = io0_a_src + a_src->meta.ri; in wuffs_bmp__decoder__decode_frame_config()
23286 io2_a_src = io0_a_src + a_src->meta.wi; in wuffs_bmp__decoder__decode_frame_config()
23289 uint32_t coro_susp_point = self->private_impl.p_decode_frame_config[0]; in wuffs_bmp__decoder__decode_frame_config()
23293 if (self->private_impl.f_call_sequence < 3) { in wuffs_bmp__decoder__decode_frame_config()
23295 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_bmp__decoder__decode_frame_config()
23300 iop_a_src = a_src->data.ptr + a_src->meta.ri; in wuffs_bmp__decoder__decode_frame_config()
23305 } else if (self->private_impl.f_call_sequence == 3) { in wuffs_bmp__decoder__decode_frame_config()
23306 …if (self->private_impl.f_frame_config_io_position != wuffs_base__u64__sat_add((a_src ? a_src->meta… in wuffs_bmp__decoder__decode_frame_config()
23310 } else if (self->private_impl.f_call_sequence == 4) { in wuffs_bmp__decoder__decode_frame_config()
23311 self->private_impl.f_call_sequence = 255; in wuffs_bmp__decoder__decode_frame_config()
23324 self->private_impl.f_width, in wuffs_bmp__decoder__decode_frame_config()
23325 self->private_impl.f_height), in wuffs_bmp__decoder__decode_frame_config()
23328 self->private_impl.f_frame_config_io_position, in wuffs_bmp__decoder__decode_frame_config()
23334 self->private_impl.f_call_sequence = 4; in wuffs_bmp__decoder__decode_frame_config()
23337 self->private_impl.p_decode_frame_config[0] = 0; in wuffs_bmp__decoder__decode_frame_config()
23343 …self->private_impl.p_decode_frame_config[0] = wuffs_base__status__is_suspension(&status) ? coro_su… in wuffs_bmp__decoder__decode_frame_config()
23344 self->private_impl.active_coroutine = wuffs_base__status__is_suspension(&status) ? 2 : 0; in wuffs_bmp__decoder__decode_frame_config()
23349 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_bmp__decoder__decode_frame_config()
23353 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_bmp__decoder__decode_frame_config()
23358 // -------- func bmp.decoder.decode_frame
23371 if (self->private_impl.magic != WUFFS_BASE__MAGIC) { in wuffs_bmp__decoder__decode_frame()
23373 (self->private_impl.magic == WUFFS_BASE__DISABLED) in wuffs_bmp__decoder__decode_frame()
23378 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_bmp__decoder__decode_frame()
23381 if ((self->private_impl.active_coroutine != 0) && in wuffs_bmp__decoder__decode_frame()
23382 (self->private_impl.active_coroutine != 3)) { in wuffs_bmp__decoder__decode_frame()
23383 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_bmp__decoder__decode_frame()
23386 self->private_impl.active_coroutine = 0; in wuffs_bmp__decoder__decode_frame()
23396 io0_a_src = a_src->data.ptr; in wuffs_bmp__decoder__decode_frame()
23397 io1_a_src = io0_a_src + a_src->meta.ri; in wuffs_bmp__decoder__decode_frame()
23399 io2_a_src = io0_a_src + a_src->meta.wi; in wuffs_bmp__decoder__decode_frame()
23402 uint32_t coro_susp_point = self->private_impl.p_decode_frame[0]; in wuffs_bmp__decoder__decode_frame()
23404 v_status = self->private_data.s_decode_frame[0].v_status; in wuffs_bmp__decoder__decode_frame()
23409 if (self->private_impl.f_call_sequence < 4) { in wuffs_bmp__decoder__decode_frame()
23411 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_bmp__decoder__decode_frame()
23416 iop_a_src = a_src->data.ptr + a_src->meta.ri; in wuffs_bmp__decoder__decode_frame()
23421 } else if (self->private_impl.f_call_sequence == 4) { in wuffs_bmp__decoder__decode_frame()
23426 self->private_data.s_decode_frame[0].scratch = self->private_impl.f_padding; in wuffs_bmp__decoder__decode_frame()
23428 if (self->private_data.s_decode_frame[0].scratch > ((uint64_t)(io2_a_src - iop_a_src))) { in wuffs_bmp__decoder__decode_frame()
23429 self->private_data.s_decode_frame[0].scratch -= ((uint64_t)(io2_a_src - iop_a_src)); in wuffs_bmp__decoder__decode_frame()
23434 iop_a_src += self->private_data.s_decode_frame[0].scratch; in wuffs_bmp__decoder__decode_frame()
23435 if ((self->private_impl.f_width > 0) && (self->private_impl.f_height > 0)) { in wuffs_bmp__decoder__decode_frame()
23436 self->private_impl.f_dst_x = 0; in wuffs_bmp__decoder__decode_frame()
23437 if (self->private_impl.f_top_down) { in wuffs_bmp__decoder__decode_frame()
23438 self->private_impl.f_dst_y = 0; in wuffs_bmp__decoder__decode_frame()
23439 self->private_impl.f_dst_y_inc = 1; in wuffs_bmp__decoder__decode_frame()
23441 self->private_impl.f_dst_y = ((uint32_t)(self->private_impl.f_height - 1)); in wuffs_bmp__decoder__decode_frame()
23442 self->private_impl.f_dst_y_inc = 4294967295; in wuffs_bmp__decoder__decode_frame()
23444 v_status = wuffs_base__pixel_swizzler__prepare(&self->private_impl.f_swizzler, in wuffs_bmp__decoder__decode_frame()
23446 …wuffs_base__pixel_buffer__palette_or_else(a_dst, wuffs_base__make_slice_u8((self->private_data.f_s… in wuffs_bmp__decoder__decode_frame()
23447 wuffs_base__utility__make_pixel_format(self->private_impl.f_src_pixfmt), in wuffs_bmp__decoder__decode_frame()
23448 wuffs_base__make_slice_u8(self->private_data.f_src_palette, 1024), in wuffs_bmp__decoder__decode_frame()
23461 if (self->private_impl.f_compression == 0) { in wuffs_bmp__decoder__decode_frame()
23463 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_bmp__decoder__decode_frame()
23467 iop_a_src = a_src->data.ptr + a_src->meta.ri; in wuffs_bmp__decoder__decode_frame()
23469 } else if (self->private_impl.f_compression < 3) { in wuffs_bmp__decoder__decode_frame()
23471 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_bmp__decoder__decode_frame()
23475 iop_a_src = a_src->data.ptr + a_src->meta.ri; in wuffs_bmp__decoder__decode_frame()
23477 } else if (self->private_impl.f_compression == 3) { in wuffs_bmp__decoder__decode_frame()
23479 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_bmp__decoder__decode_frame()
23483 iop_a_src = a_src->data.ptr + a_src->meta.ri; in wuffs_bmp__decoder__decode_frame()
23487 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_bmp__decoder__decode_frame()
23491 iop_a_src = a_src->data.ptr + a_src->meta.ri; in wuffs_bmp__decoder__decode_frame()
23510 self->private_data.s_decode_frame[0].scratch = self->private_impl.f_pending_pad; in wuffs_bmp__decoder__decode_frame()
23512 if (self->private_data.s_decode_frame[0].scratch > ((uint64_t)(io2_a_src - iop_a_src))) { in wuffs_bmp__decoder__decode_frame()
23513 self->private_data.s_decode_frame[0].scratch -= ((uint64_t)(io2_a_src - iop_a_src)); in wuffs_bmp__decoder__decode_frame()
23518 iop_a_src += self->private_data.s_decode_frame[0].scratch; in wuffs_bmp__decoder__decode_frame()
23519 self->private_impl.f_pending_pad = 0; in wuffs_bmp__decoder__decode_frame()
23521 self->private_impl.f_call_sequence = 255; in wuffs_bmp__decoder__decode_frame()
23524 self->private_impl.p_decode_frame[0] = 0; in wuffs_bmp__decoder__decode_frame()
23530 …self->private_impl.p_decode_frame[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_poin… in wuffs_bmp__decoder__decode_frame()
23531 self->private_impl.active_coroutine = wuffs_base__status__is_suspension(&status) ? 3 : 0; in wuffs_bmp__decoder__decode_frame()
23532 self->private_data.s_decode_frame[0].v_status = v_status; in wuffs_bmp__decoder__decode_frame()
23537 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_bmp__decoder__decode_frame()
23541 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_bmp__decoder__decode_frame()
23546 // -------- func bmp.decoder.swizzle_none
23570 io0_a_src = a_src->data.ptr; in wuffs_bmp__decoder__swizzle_none()
23571 io1_a_src = io0_a_src + a_src->meta.ri; in wuffs_bmp__decoder__swizzle_none()
23573 io2_a_src = io0_a_src + a_src->meta.wi; in wuffs_bmp__decoder__swizzle_none()
23583 v_dst_bytes_per_row = (((uint64_t)(self->private_impl.f_width)) * v_dst_bytes_per_pixel); in wuffs_bmp__decoder__swizzle_none()
23584 …v_dst_palette = wuffs_base__pixel_buffer__palette_or_else(a_dst, wuffs_base__make_slice_u8((self->… in wuffs_bmp__decoder__swizzle_none()
23588 while (self->private_impl.f_pending_pad > 0) { in wuffs_bmp__decoder__swizzle_none()
23589 if (((uint64_t)(io2_a_src - iop_a_src)) <= 0) { in wuffs_bmp__decoder__swizzle_none()
23593 self->private_impl.f_pending_pad -= 1; in wuffs_bmp__decoder__swizzle_none()
23598 if (self->private_impl.f_dst_x == self->private_impl.f_width) { in wuffs_bmp__decoder__swizzle_none()
23599 self->private_impl.f_dst_x = 0; in wuffs_bmp__decoder__swizzle_none()
23600 self->private_impl.f_dst_y += self->private_impl.f_dst_y_inc; in wuffs_bmp__decoder__swizzle_none()
23601 if (self->private_impl.f_dst_y >= self->private_impl.f_height) { in wuffs_bmp__decoder__swizzle_none()
23602 if (self->private_impl.f_height > 0) { in wuffs_bmp__decoder__swizzle_none()
23603 self->private_impl.f_pending_pad = self->private_impl.f_pad_per_row; in wuffs_bmp__decoder__swizzle_none()
23606 } else if (self->private_impl.f_pad_per_row != 0) { in wuffs_bmp__decoder__swizzle_none()
23607 self->private_impl.f_pending_pad = self->private_impl.f_pad_per_row; in wuffs_bmp__decoder__swizzle_none()
23611 v_dst = wuffs_base__table_u8__row_u32(v_tab, self->private_impl.f_dst_y); in wuffs_bmp__decoder__swizzle_none()
23615 v_i = (((uint64_t)(self->private_impl.f_dst_x)) * v_dst_bytes_per_pixel); in wuffs_bmp__decoder__swizzle_none()
23620 &self->private_impl.f_swizzler, in wuffs_bmp__decoder__swizzle_none()
23629 … wuffs_base__u32__sat_add_indirect(&self->private_impl.f_dst_x, ((uint32_t)((v_n & 4294967295)))); in wuffs_bmp__decoder__swizzle_none()
23640 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_bmp__decoder__swizzle_none()
23646 // -------- func bmp.decoder.swizzle_rle
23677 io0_a_src = a_src->data.ptr; in wuffs_bmp__decoder__swizzle_rle()
23678 io1_a_src = io0_a_src + a_src->meta.ri; in wuffs_bmp__decoder__swizzle_rle()
23680 io2_a_src = io0_a_src + a_src->meta.wi; in wuffs_bmp__decoder__swizzle_rle()
23690 v_dst_bytes_per_row = (((uint64_t)(self->private_impl.f_width)) * v_dst_bytes_per_pixel); in wuffs_bmp__decoder__swizzle_rle()
23691 …v_dst_palette = wuffs_base__pixel_buffer__palette_or_else(a_dst, wuffs_base__make_slice_u8((self->… in wuffs_bmp__decoder__swizzle_rle()
23693 v_rle_state = self->private_impl.f_rle_state; in wuffs_bmp__decoder__swizzle_rle()
23696 v_row = wuffs_base__table_u8__row_u32(v_tab, self->private_impl.f_dst_y); in wuffs_bmp__decoder__swizzle_rle()
23702 v_i = (((uint64_t)(self->private_impl.f_dst_x)) * v_dst_bytes_per_pixel); in wuffs_bmp__decoder__swizzle_rle()
23712 if (((uint64_t)(io2_a_src - iop_a_src)) < 1) { in wuffs_bmp__decoder__swizzle_rle()
23721 self->private_impl.f_rle_length = ((uint32_t)(v_code)); in wuffs_bmp__decoder__swizzle_rle()
23725 if (((uint64_t)(io2_a_src - iop_a_src)) < 1) { in wuffs_bmp__decoder__swizzle_rle()
23730 if (self->private_impl.f_bits_per_pixel == 8) { in wuffs_bmp__decoder__swizzle_rle()
23732 while (v_p0 < self->private_impl.f_rle_length) { in wuffs_bmp__decoder__swizzle_rle()
23733 self->private_data.f_scratch[v_p0] = v_code; in wuffs_bmp__decoder__swizzle_rle()
23740 while (v_p0 < self->private_impl.f_rle_length) { in wuffs_bmp__decoder__swizzle_rle()
23741 self->private_data.f_scratch[(v_p0 + 0)] = v_indexes[0]; in wuffs_bmp__decoder__swizzle_rle()
23742 self->private_data.f_scratch[(v_p0 + 1)] = v_indexes[1]; in wuffs_bmp__decoder__swizzle_rle()
23746 …f->private_impl.f_swizzler, v_dst, v_dst_palette, wuffs_base__slice_u8__subslice_j(wuffs_base__mak… in wuffs_bmp__decoder__swizzle_rle()
23747 … wuffs_base__u32__sat_add_indirect(&self->private_impl.f_dst_x, self->private_impl.f_rle_length); in wuffs_bmp__decoder__swizzle_rle()
23751 if (((uint64_t)(io2_a_src - iop_a_src)) < 1) { in wuffs_bmp__decoder__swizzle_rle()
23757 if ((self->private_impl.f_dst_y >= self->private_impl.f_height) && (v_code == 0)) { in wuffs_bmp__decoder__swizzle_rle()
23761 …wuffs_base__pixel_swizzler__swizzle_interleaved_transparent_black(&self->private_impl.f_swizzler, … in wuffs_bmp__decoder__swizzle_rle()
23762 self->private_impl.f_dst_x = 0; in wuffs_bmp__decoder__swizzle_rle()
23763 self->private_impl.f_dst_y += self->private_impl.f_dst_y_inc; in wuffs_bmp__decoder__swizzle_rle()
23773 self->private_impl.f_rle_length = ((uint32_t)(v_code)); in wuffs_bmp__decoder__swizzle_rle()
23774 …self->private_impl.f_rle_padded = ((self->private_impl.f_bits_per_pixel == 8) && ((v_code & 1) != … in wuffs_bmp__decoder__swizzle_rle()
23778 if (self->private_impl.f_bits_per_pixel == 8) { in wuffs_bmp__decoder__swizzle_rle()
23780 &self->private_impl.f_swizzler, in wuffs_bmp__decoder__swizzle_rle()
23781 self->private_impl.f_rle_length, in wuffs_bmp__decoder__swizzle_rle()
23786 … wuffs_base__u32__sat_add_indirect(&self->private_impl.f_dst_x, ((uint32_t)((v_n & 4294967295)))); in wuffs_bmp__decoder__swizzle_rle()
23787 …wuffs_base__u32__sat_sub_indirect(&self->private_impl.f_rle_length, ((uint32_t)((v_n & 4294967295)… in wuffs_bmp__decoder__swizzle_rle()
23789 v_chunk_count = ((self->private_impl.f_rle_length + 3) / 4); in wuffs_bmp__decoder__swizzle_rle()
23791 while ((v_chunk_count > 0) && (((uint64_t)(io2_a_src - iop_a_src)) >= 2)) { in wuffs_bmp__decoder__swizzle_rle()
23794 self->private_data.f_scratch[(v_p0 + 0)] = ((uint8_t)((15 & (v_chunk_bits >> 12)))); in wuffs_bmp__decoder__swizzle_rle()
23795 self->private_data.f_scratch[(v_p0 + 1)] = ((uint8_t)((15 & (v_chunk_bits >> 8)))); in wuffs_bmp__decoder__swizzle_rle()
23796 self->private_data.f_scratch[(v_p0 + 2)] = ((uint8_t)((15 & (v_chunk_bits >> 4)))); in wuffs_bmp__decoder__swizzle_rle()
23797 self->private_data.f_scratch[(v_p0 + 3)] = ((uint8_t)((15 & (v_chunk_bits >> 0)))); in wuffs_bmp__decoder__swizzle_rle()
23799 v_chunk_count -= 1; in wuffs_bmp__decoder__swizzle_rle()
23801 v_p0 = wuffs_base__u32__min(v_p0, self->private_impl.f_rle_length); in wuffs_bmp__decoder__swizzle_rle()
23802 …ved_from_slice(&self->private_impl.f_swizzler, v_dst, v_dst_palette, wuffs_base__slice_u8__subslic… in wuffs_bmp__decoder__swizzle_rle()
23803 wuffs_base__u32__sat_add_indirect(&self->private_impl.f_dst_x, v_p0); in wuffs_bmp__decoder__swizzle_rle()
23804 wuffs_base__u32__sat_sub_indirect(&self->private_impl.f_rle_length, v_p0); in wuffs_bmp__decoder__swizzle_rle()
23806 if (self->private_impl.f_rle_length > 0) { in wuffs_bmp__decoder__swizzle_rle()
23809 if (self->private_impl.f_rle_padded) { in wuffs_bmp__decoder__swizzle_rle()
23810 if (((uint64_t)(io2_a_src - iop_a_src)) < 1) { in wuffs_bmp__decoder__swizzle_rle()
23814 self->private_impl.f_rle_padded = false; in wuffs_bmp__decoder__swizzle_rle()
23819 if (((uint64_t)(io2_a_src - iop_a_src)) < 1) { in wuffs_bmp__decoder__swizzle_rle()
23822 self->private_impl.f_rle_delta_x = wuffs_base__peek_u8be__no_bounds_check(iop_a_src); in wuffs_bmp__decoder__swizzle_rle()
23827 if (((uint64_t)(io2_a_src - iop_a_src)) < 1) { in wuffs_bmp__decoder__swizzle_rle()
23832 if (self->private_impl.f_rle_delta_x > 0) { in wuffs_bmp__decoder__swizzle_rle()
23833 …swizzle_interleaved_transparent_black(&self->private_impl.f_swizzler, v_dst, v_dst_palette, ((uint… in wuffs_bmp__decoder__swizzle_rle()
23834 …wuffs_base__u32__sat_add_indirect(&self->private_impl.f_dst_x, ((uint32_t)(self->private_impl.f_rl… in wuffs_bmp__decoder__swizzle_rle()
23835 self->private_impl.f_rle_delta_x = 0; in wuffs_bmp__decoder__swizzle_rle()
23836 if (self->private_impl.f_dst_x > self->private_impl.f_width) { in wuffs_bmp__decoder__swizzle_rle()
23844 #pragma GCC diagnostic ignored "-Wconversion" in wuffs_bmp__decoder__swizzle_rle()
23846 v_code -= 1; in wuffs_bmp__decoder__swizzle_rle()
23851 self->private_impl.f_dst_y += self->private_impl.f_dst_y_inc; in wuffs_bmp__decoder__swizzle_rle()
23852 if (self->private_impl.f_dst_y >= self->private_impl.f_height) { in wuffs_bmp__decoder__swizzle_rle()
23856 v_row = wuffs_base__table_u8__row_u32(v_tab, self->private_impl.f_dst_y); in wuffs_bmp__decoder__swizzle_rle()
23861 …swizzle_interleaved_transparent_black(&self->private_impl.f_swizzler, v_row, v_dst_palette, ((uint… in wuffs_bmp__decoder__swizzle_rle()
23864 …wuffs_base__pixel_swizzler__swizzle_interleaved_transparent_black(&self->private_impl.f_swizzler, … in wuffs_bmp__decoder__swizzle_rle()
23867 #pragma GCC diagnostic ignored "-Wconversion" in wuffs_bmp__decoder__swizzle_rle()
23869 v_code -= 1; in wuffs_bmp__decoder__swizzle_rle()
23881 self->private_impl.f_rle_state = v_rle_state; in wuffs_bmp__decoder__swizzle_rle()
23887 while (self->private_impl.f_dst_y < self->private_impl.f_height) { in wuffs_bmp__decoder__swizzle_rle()
23888 v_row = wuffs_base__table_u8__row_u32(v_tab, self->private_impl.f_dst_y); in wuffs_bmp__decoder__swizzle_rle()
23892 …wuffs_base__pixel_swizzler__swizzle_interleaved_transparent_black(&self->private_impl.f_swizzler, … in wuffs_bmp__decoder__swizzle_rle()
23893 self->private_impl.f_dst_y += self->private_impl.f_dst_y_inc; in wuffs_bmp__decoder__swizzle_rle()
23902 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_bmp__decoder__swizzle_rle()
23908 // -------- func bmp.decoder.swizzle_bitfields
23939 io0_a_src = a_src->data.ptr; in wuffs_bmp__decoder__swizzle_bitfields()
23940 io1_a_src = io0_a_src + a_src->meta.ri; in wuffs_bmp__decoder__swizzle_bitfields()
23942 io2_a_src = io0_a_src + a_src->meta.wi; in wuffs_bmp__decoder__swizzle_bitfields()
23952 v_dst_bytes_per_row = (((uint64_t)(self->private_impl.f_width)) * v_dst_bytes_per_pixel); in wuffs_bmp__decoder__swizzle_bitfields()
23953 …v_dst_palette = wuffs_base__pixel_buffer__palette_or_else(a_dst, wuffs_base__make_slice_u8((self->… in wuffs_bmp__decoder__swizzle_bitfields()
23957 while (self->private_impl.f_pending_pad > 0) { in wuffs_bmp__decoder__swizzle_bitfields()
23958 if (((uint64_t)(io2_a_src - iop_a_src)) <= 0) { in wuffs_bmp__decoder__swizzle_bitfields()
23962 self->private_impl.f_pending_pad -= 1; in wuffs_bmp__decoder__swizzle_bitfields()
23967 if (self->private_impl.f_dst_x == self->private_impl.f_width) { in wuffs_bmp__decoder__swizzle_bitfields()
23968 self->private_impl.f_dst_x = 0; in wuffs_bmp__decoder__swizzle_bitfields()
23969 self->private_impl.f_dst_y += self->private_impl.f_dst_y_inc; in wuffs_bmp__decoder__swizzle_bitfields()
23970 if (self->private_impl.f_dst_y >= self->private_impl.f_height) { in wuffs_bmp__decoder__swizzle_bitfields()
23971 if (self->private_impl.f_height > 0) { in wuffs_bmp__decoder__swizzle_bitfields()
23972 self->private_impl.f_pending_pad = self->private_impl.f_pad_per_row; in wuffs_bmp__decoder__swizzle_bitfields()
23975 } else if (self->private_impl.f_pad_per_row != 0) { in wuffs_bmp__decoder__swizzle_bitfields()
23976 self->private_impl.f_pending_pad = self->private_impl.f_pad_per_row; in wuffs_bmp__decoder__swizzle_bitfields()
23980 v_p1_temp = ((uint32_t)(self->private_impl.f_width - self->private_impl.f_dst_x)); in wuffs_bmp__decoder__swizzle_bitfields()
23984 if (self->private_impl.f_bits_per_pixel == 16) { in wuffs_bmp__decoder__swizzle_bitfields()
23985 if (((uint64_t)(io2_a_src - iop_a_src)) < 2) { in wuffs_bmp__decoder__swizzle_bitfields()
23991 if (((uint64_t)(io2_a_src - iop_a_src)) < 4) { in wuffs_bmp__decoder__swizzle_bitfields()
23999 if (self->private_impl.f_channel_num_bits[v_channel] == 0) { in wuffs_bmp__decoder__swizzle_bitfields()
24000 self->private_data.f_scratch[((8 * v_p0) + (2 * v_channel) + 0)] = 255; in wuffs_bmp__decoder__swizzle_bitfields()
24001 self->private_data.f_scratch[((8 * v_p0) + (2 * v_channel) + 1)] = 255; in wuffs_bmp__decoder__swizzle_bitfields()
24003 …v_c = ((v_c32 & self->private_impl.f_channel_masks[v_channel]) >> self->private_impl.f_channel_shi… in wuffs_bmp__decoder__swizzle_bitfields()
24004 v_num_bits = ((uint32_t)(self->private_impl.f_channel_num_bits[v_channel])); in wuffs_bmp__decoder__swizzle_bitfields()
24009 v_c >>= (v_num_bits - 16); in wuffs_bmp__decoder__swizzle_bitfields()
24010 …self->private_data.f_scratch[((8 * v_p0) + (2 * v_channel) + 0)] = ((uint8_t)((255 & (v_c >> 0)))); in wuffs_bmp__decoder__swizzle_bitfields()
24011 …self->private_data.f_scratch[((8 * v_p0) + (2 * v_channel) + 1)] = ((uint8_t)((255 & (v_c >> 8)))); in wuffs_bmp__decoder__swizzle_bitfields()
24018 v_dst = wuffs_base__table_u8__row_u32(v_tab, self->private_impl.f_dst_y); in wuffs_bmp__decoder__swizzle_bitfields()
24022 v_i = (((uint64_t)(self->private_impl.f_dst_x)) * v_dst_bytes_per_pixel); in wuffs_bmp__decoder__swizzle_bitfields()
24026->private_impl.f_swizzler, wuffs_base__slice_u8__subslice_i(v_dst, v_i), v_dst_palette, wuffs_base… in wuffs_bmp__decoder__swizzle_bitfields()
24031 … wuffs_base__u32__sat_add_indirect(&self->private_impl.f_dst_x, ((uint32_t)((v_n & 4294967295)))); in wuffs_bmp__decoder__swizzle_bitfields()
24042 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_bmp__decoder__swizzle_bitfields()
24048 // -------- func bmp.decoder.swizzle_low_bit_depth
24075 io0_a_src = a_src->data.ptr; in wuffs_bmp__decoder__swizzle_low_bit_depth()
24076 io1_a_src = io0_a_src + a_src->meta.ri; in wuffs_bmp__decoder__swizzle_low_bit_depth()
24078 io2_a_src = io0_a_src + a_src->meta.wi; in wuffs_bmp__decoder__swizzle_low_bit_depth()
24088 v_dst_bytes_per_row = (((uint64_t)(self->private_impl.f_width)) * v_dst_bytes_per_pixel); in wuffs_bmp__decoder__swizzle_low_bit_depth()
24089 …v_dst_palette = wuffs_base__pixel_buffer__palette_or_else(a_dst, wuffs_base__make_slice_u8((self->… in wuffs_bmp__decoder__swizzle_low_bit_depth()
24093 if (self->private_impl.f_dst_x == self->private_impl.f_width) { in wuffs_bmp__decoder__swizzle_low_bit_depth()
24094 self->private_impl.f_dst_x = 0; in wuffs_bmp__decoder__swizzle_low_bit_depth()
24095 self->private_impl.f_dst_y += self->private_impl.f_dst_y_inc; in wuffs_bmp__decoder__swizzle_low_bit_depth()
24096 if (self->private_impl.f_dst_y >= self->private_impl.f_height) { in wuffs_bmp__decoder__swizzle_low_bit_depth()
24100 v_dst = wuffs_base__table_u8__row_u32(v_tab, self->private_impl.f_dst_y); in wuffs_bmp__decoder__swizzle_low_bit_depth()
24104 v_i = (((uint64_t)(self->private_impl.f_dst_x)) * v_dst_bytes_per_pixel); in wuffs_bmp__decoder__swizzle_low_bit_depth()
24110 if (self->private_impl.f_bits_per_pixel == 1) { in wuffs_bmp__decoder__swizzle_low_bit_depth()
24111 …v_chunk_count = ((wuffs_base__u32__sat_sub(self->private_impl.f_width, self->private_impl.f_dst_x)… in wuffs_bmp__decoder__swizzle_low_bit_depth()
24113 while ((v_chunk_count > 0) && (((uint64_t)(io2_a_src - iop_a_src)) >= 4)) { in wuffs_bmp__decoder__swizzle_low_bit_depth()
24116 self->private_data.f_scratch[(v_p0 + 0)] = ((uint8_t)((1 & (v_chunk_bits >> 31)))); in wuffs_bmp__decoder__swizzle_low_bit_depth()
24117 self->private_data.f_scratch[(v_p0 + 1)] = ((uint8_t)((1 & (v_chunk_bits >> 30)))); in wuffs_bmp__decoder__swizzle_low_bit_depth()
24118 self->private_data.f_scratch[(v_p0 + 2)] = ((uint8_t)((1 & (v_chunk_bits >> 29)))); in wuffs_bmp__decoder__swizzle_low_bit_depth()
24119 self->private_data.f_scratch[(v_p0 + 3)] = ((uint8_t)((1 & (v_chunk_bits >> 28)))); in wuffs_bmp__decoder__swizzle_low_bit_depth()
24120 self->private_data.f_scratch[(v_p0 + 4)] = ((uint8_t)((1 & (v_chunk_bits >> 27)))); in wuffs_bmp__decoder__swizzle_low_bit_depth()
24121 self->private_data.f_scratch[(v_p0 + 5)] = ((uint8_t)((1 & (v_chunk_bits >> 26)))); in wuffs_bmp__decoder__swizzle_low_bit_depth()
24122 self->private_data.f_scratch[(v_p0 + 6)] = ((uint8_t)((1 & (v_chunk_bits >> 25)))); in wuffs_bmp__decoder__swizzle_low_bit_depth()
24123 self->private_data.f_scratch[(v_p0 + 7)] = ((uint8_t)((1 & (v_chunk_bits >> 24)))); in wuffs_bmp__decoder__swizzle_low_bit_depth()
24124 self->private_data.f_scratch[(v_p0 + 8)] = ((uint8_t)((1 & (v_chunk_bits >> 23)))); in wuffs_bmp__decoder__swizzle_low_bit_depth()
24125 self->private_data.f_scratch[(v_p0 + 9)] = ((uint8_t)((1 & (v_chunk_bits >> 22)))); in wuffs_bmp__decoder__swizzle_low_bit_depth()
24126 self->private_data.f_scratch[(v_p0 + 10)] = ((uint8_t)((1 & (v_chunk_bits >> 21)))); in wuffs_bmp__decoder__swizzle_low_bit_depth()
24127 self->private_data.f_scratch[(v_p0 + 11)] = ((uint8_t)((1 & (v_chunk_bits >> 20)))); in wuffs_bmp__decoder__swizzle_low_bit_depth()
24128 self->private_data.f_scratch[(v_p0 + 12)] = ((uint8_t)((1 & (v_chunk_bits >> 19)))); in wuffs_bmp__decoder__swizzle_low_bit_depth()
24129 self->private_data.f_scratch[(v_p0 + 13)] = ((uint8_t)((1 & (v_chunk_bits >> 18)))); in wuffs_bmp__decoder__swizzle_low_bit_depth()
24130 self->private_data.f_scratch[(v_p0 + 14)] = ((uint8_t)((1 & (v_chunk_bits >> 17)))); in wuffs_bmp__decoder__swizzle_low_bit_depth()
24131 self->private_data.f_scratch[(v_p0 + 15)] = ((uint8_t)((1 & (v_chunk_bits >> 16)))); in wuffs_bmp__decoder__swizzle_low_bit_depth()
24132 self->private_data.f_scratch[(v_p0 + 16)] = ((uint8_t)((1 & (v_chunk_bits >> 15)))); in wuffs_bmp__decoder__swizzle_low_bit_depth()
24133 self->private_data.f_scratch[(v_p0 + 17)] = ((uint8_t)((1 & (v_chunk_bits >> 14)))); in wuffs_bmp__decoder__swizzle_low_bit_depth()
24134 self->private_data.f_scratch[(v_p0 + 18)] = ((uint8_t)((1 & (v_chunk_bits >> 13)))); in wuffs_bmp__decoder__swizzle_low_bit_depth()
24135 self->private_data.f_scratch[(v_p0 + 19)] = ((uint8_t)((1 & (v_chunk_bits >> 12)))); in wuffs_bmp__decoder__swizzle_low_bit_depth()
24136 self->private_data.f_scratch[(v_p0 + 20)] = ((uint8_t)((1 & (v_chunk_bits >> 11)))); in wuffs_bmp__decoder__swizzle_low_bit_depth()
24137 self->private_data.f_scratch[(v_p0 + 21)] = ((uint8_t)((1 & (v_chunk_bits >> 10)))); in wuffs_bmp__decoder__swizzle_low_bit_depth()
24138 self->private_data.f_scratch[(v_p0 + 22)] = ((uint8_t)((1 & (v_chunk_bits >> 9)))); in wuffs_bmp__decoder__swizzle_low_bit_depth()
24139 self->private_data.f_scratch[(v_p0 + 23)] = ((uint8_t)((1 & (v_chunk_bits >> 8)))); in wuffs_bmp__decoder__swizzle_low_bit_depth()
24140 self->private_data.f_scratch[(v_p0 + 24)] = ((uint8_t)((1 & (v_chunk_bits >> 7)))); in wuffs_bmp__decoder__swizzle_low_bit_depth()
24141 self->private_data.f_scratch[(v_p0 + 25)] = ((uint8_t)((1 & (v_chunk_bits >> 6)))); in wuffs_bmp__decoder__swizzle_low_bit_depth()
24142 self->private_data.f_scratch[(v_p0 + 26)] = ((uint8_t)((1 & (v_chunk_bits >> 5)))); in wuffs_bmp__decoder__swizzle_low_bit_depth()
24143 self->private_data.f_scratch[(v_p0 + 27)] = ((uint8_t)((1 & (v_chunk_bits >> 4)))); in wuffs_bmp__decoder__swizzle_low_bit_depth()
24144 self->private_data.f_scratch[(v_p0 + 28)] = ((uint8_t)((1 & (v_chunk_bits >> 3)))); in wuffs_bmp__decoder__swizzle_low_bit_depth()
24145 self->private_data.f_scratch[(v_p0 + 29)] = ((uint8_t)((1 & (v_chunk_bits >> 2)))); in wuffs_bmp__decoder__swizzle_low_bit_depth()
24146 self->private_data.f_scratch[(v_p0 + 30)] = ((uint8_t)((1 & (v_chunk_bits >> 1)))); in wuffs_bmp__decoder__swizzle_low_bit_depth()
24147 self->private_data.f_scratch[(v_p0 + 31)] = ((uint8_t)((1 & (v_chunk_bits >> 0)))); in wuffs_bmp__decoder__swizzle_low_bit_depth()
24149 v_chunk_count -= 1; in wuffs_bmp__decoder__swizzle_low_bit_depth()
24151 } else if (self->private_impl.f_bits_per_pixel == 2) { in wuffs_bmp__decoder__swizzle_low_bit_depth()
24152 …v_chunk_count = ((wuffs_base__u32__sat_sub(self->private_impl.f_width, self->private_impl.f_dst_x)… in wuffs_bmp__decoder__swizzle_low_bit_depth()
24154 while ((v_chunk_count > 0) && (((uint64_t)(io2_a_src - iop_a_src)) >= 4)) { in wuffs_bmp__decoder__swizzle_low_bit_depth()
24157 self->private_data.f_scratch[(v_p0 + 0)] = ((uint8_t)((3 & (v_chunk_bits >> 30)))); in wuffs_bmp__decoder__swizzle_low_bit_depth()
24158 self->private_data.f_scratch[(v_p0 + 1)] = ((uint8_t)((3 & (v_chunk_bits >> 28)))); in wuffs_bmp__decoder__swizzle_low_bit_depth()
24159 self->private_data.f_scratch[(v_p0 + 2)] = ((uint8_t)((3 & (v_chunk_bits >> 26)))); in wuffs_bmp__decoder__swizzle_low_bit_depth()
24160 self->private_data.f_scratch[(v_p0 + 3)] = ((uint8_t)((3 & (v_chunk_bits >> 24)))); in wuffs_bmp__decoder__swizzle_low_bit_depth()
24161 self->private_data.f_scratch[(v_p0 + 4)] = ((uint8_t)((3 & (v_chunk_bits >> 22)))); in wuffs_bmp__decoder__swizzle_low_bit_depth()
24162 self->private_data.f_scratch[(v_p0 + 5)] = ((uint8_t)((3 & (v_chunk_bits >> 20)))); in wuffs_bmp__decoder__swizzle_low_bit_depth()
24163 self->private_data.f_scratch[(v_p0 + 6)] = ((uint8_t)((3 & (v_chunk_bits >> 18)))); in wuffs_bmp__decoder__swizzle_low_bit_depth()
24164 self->private_data.f_scratch[(v_p0 + 7)] = ((uint8_t)((3 & (v_chunk_bits >> 16)))); in wuffs_bmp__decoder__swizzle_low_bit_depth()
24165 self->private_data.f_scratch[(v_p0 + 8)] = ((uint8_t)((3 & (v_chunk_bits >> 14)))); in wuffs_bmp__decoder__swizzle_low_bit_depth()
24166 self->private_data.f_scratch[(v_p0 + 9)] = ((uint8_t)((3 & (v_chunk_bits >> 12)))); in wuffs_bmp__decoder__swizzle_low_bit_depth()
24167 self->private_data.f_scratch[(v_p0 + 10)] = ((uint8_t)((3 & (v_chunk_bits >> 10)))); in wuffs_bmp__decoder__swizzle_low_bit_depth()
24168 self->private_data.f_scratch[(v_p0 + 11)] = ((uint8_t)((3 & (v_chunk_bits >> 8)))); in wuffs_bmp__decoder__swizzle_low_bit_depth()
24169 self->private_data.f_scratch[(v_p0 + 12)] = ((uint8_t)((3 & (v_chunk_bits >> 6)))); in wuffs_bmp__decoder__swizzle_low_bit_depth()
24170 self->private_data.f_scratch[(v_p0 + 13)] = ((uint8_t)((3 & (v_chunk_bits >> 4)))); in wuffs_bmp__decoder__swizzle_low_bit_depth()
24171 self->private_data.f_scratch[(v_p0 + 14)] = ((uint8_t)((3 & (v_chunk_bits >> 2)))); in wuffs_bmp__decoder__swizzle_low_bit_depth()
24172 self->private_data.f_scratch[(v_p0 + 15)] = ((uint8_t)((3 & (v_chunk_bits >> 0)))); in wuffs_bmp__decoder__swizzle_low_bit_depth()
24174 v_chunk_count -= 1; in wuffs_bmp__decoder__swizzle_low_bit_depth()
24176 } else if (self->private_impl.f_bits_per_pixel == 4) { in wuffs_bmp__decoder__swizzle_low_bit_depth()
24177 …v_chunk_count = ((wuffs_base__u32__sat_sub(self->private_impl.f_width, self->private_impl.f_dst_x)… in wuffs_bmp__decoder__swizzle_low_bit_depth()
24179 while ((v_chunk_count > 0) && (((uint64_t)(io2_a_src - iop_a_src)) >= 4)) { in wuffs_bmp__decoder__swizzle_low_bit_depth()
24182 self->private_data.f_scratch[(v_p0 + 0)] = ((uint8_t)((15 & (v_chunk_bits >> 28)))); in wuffs_bmp__decoder__swizzle_low_bit_depth()
24183 self->private_data.f_scratch[(v_p0 + 1)] = ((uint8_t)((15 & (v_chunk_bits >> 24)))); in wuffs_bmp__decoder__swizzle_low_bit_depth()
24184 self->private_data.f_scratch[(v_p0 + 2)] = ((uint8_t)((15 & (v_chunk_bits >> 20)))); in wuffs_bmp__decoder__swizzle_low_bit_depth()
24185 self->private_data.f_scratch[(v_p0 + 3)] = ((uint8_t)((15 & (v_chunk_bits >> 16)))); in wuffs_bmp__decoder__swizzle_low_bit_depth()
24186 self->private_data.f_scratch[(v_p0 + 4)] = ((uint8_t)((15 & (v_chunk_bits >> 12)))); in wuffs_bmp__decoder__swizzle_low_bit_depth()
24187 self->private_data.f_scratch[(v_p0 + 5)] = ((uint8_t)((15 & (v_chunk_bits >> 8)))); in wuffs_bmp__decoder__swizzle_low_bit_depth()
24188 self->private_data.f_scratch[(v_p0 + 6)] = ((uint8_t)((15 & (v_chunk_bits >> 4)))); in wuffs_bmp__decoder__swizzle_low_bit_depth()
24189 self->private_data.f_scratch[(v_p0 + 7)] = ((uint8_t)((15 & (v_chunk_bits >> 0)))); in wuffs_bmp__decoder__swizzle_low_bit_depth()
24191 v_chunk_count -= 1; in wuffs_bmp__decoder__swizzle_low_bit_depth()
24194 …v_p0 = wuffs_base__u32__min(v_p0, wuffs_base__u32__sat_sub(self->private_impl.f_width, self->priva… in wuffs_bmp__decoder__swizzle_low_bit_depth()
24195 …ved_from_slice(&self->private_impl.f_swizzler, v_dst, v_dst_palette, wuffs_base__slice_u8__subslic… in wuffs_bmp__decoder__swizzle_low_bit_depth()
24200 … wuffs_base__u32__sat_add_indirect(&self->private_impl.f_dst_x, ((uint32_t)((v_n & 4294967295)))); in wuffs_bmp__decoder__swizzle_low_bit_depth()
24210 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_bmp__decoder__swizzle_low_bit_depth()
24216 // -------- func bmp.decoder.frame_dirty_rect
24224 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) && in wuffs_bmp__decoder__frame_dirty_rect()
24225 (self->private_impl.magic != WUFFS_BASE__DISABLED)) { in wuffs_bmp__decoder__frame_dirty_rect()
24232 self->private_impl.f_width, in wuffs_bmp__decoder__frame_dirty_rect()
24233 self->private_impl.f_height); in wuffs_bmp__decoder__frame_dirty_rect()
24236 // -------- func bmp.decoder.num_animation_loops
24244 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) && in wuffs_bmp__decoder__num_animation_loops()
24245 (self->private_impl.magic != WUFFS_BASE__DISABLED)) { in wuffs_bmp__decoder__num_animation_loops()
24252 // -------- func bmp.decoder.num_decoded_frame_configs
24260 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) && in wuffs_bmp__decoder__num_decoded_frame_configs()
24261 (self->private_impl.magic != WUFFS_BASE__DISABLED)) { in wuffs_bmp__decoder__num_decoded_frame_configs()
24265 if (self->private_impl.f_call_sequence > 3) { in wuffs_bmp__decoder__num_decoded_frame_configs()
24271 // -------- func bmp.decoder.num_decoded_frames
24279 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) && in wuffs_bmp__decoder__num_decoded_frames()
24280 (self->private_impl.magic != WUFFS_BASE__DISABLED)) { in wuffs_bmp__decoder__num_decoded_frames()
24284 if (self->private_impl.f_call_sequence > 4) { in wuffs_bmp__decoder__num_decoded_frames()
24290 // -------- func bmp.decoder.restart_frame
24300 if (self->private_impl.magic != WUFFS_BASE__MAGIC) { in wuffs_bmp__decoder__restart_frame()
24302 (self->private_impl.magic == WUFFS_BASE__DISABLED) in wuffs_bmp__decoder__restart_frame()
24307 if (self->private_impl.f_call_sequence < 3) { in wuffs_bmp__decoder__restart_frame()
24313 self->private_impl.f_call_sequence = 3; in wuffs_bmp__decoder__restart_frame()
24314 self->private_impl.f_frame_config_io_position = a_io_position; in wuffs_bmp__decoder__restart_frame()
24318 // -------- func bmp.decoder.set_report_metadata
24328 // -------- func bmp.decoder.tell_me_more
24339 if (self->private_impl.magic != WUFFS_BASE__MAGIC) { in wuffs_bmp__decoder__tell_me_more()
24341 (self->private_impl.magic == WUFFS_BASE__DISABLED) in wuffs_bmp__decoder__tell_me_more()
24346 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_bmp__decoder__tell_me_more()
24349 if ((self->private_impl.active_coroutine != 0) && in wuffs_bmp__decoder__tell_me_more()
24350 (self->private_impl.active_coroutine != 4)) { in wuffs_bmp__decoder__tell_me_more()
24351 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_bmp__decoder__tell_me_more()
24354 self->private_impl.active_coroutine = 0; in wuffs_bmp__decoder__tell_me_more()
24357 if (self->private_impl.f_io_redirect_fourcc <= 1) { in wuffs_bmp__decoder__tell_me_more()
24364 self->private_impl.f_io_redirect_fourcc, in wuffs_bmp__decoder__tell_me_more()
24366 self->private_impl.f_io_redirect_pos, in wuffs_bmp__decoder__tell_me_more()
24369 self->private_impl.f_io_redirect_fourcc = 1; in wuffs_bmp__decoder__tell_me_more()
24376 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_bmp__decoder__tell_me_more()
24381 // -------- func bmp.decoder.workbuf_len
24389 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) && in wuffs_bmp__decoder__workbuf_len()
24390 (self->private_impl.magic != WUFFS_BASE__DISABLED)) { in wuffs_bmp__decoder__workbuf_len()
24397 // -------- func bmp.decoder.read_palette
24413 io0_a_src = a_src->data.ptr; in wuffs_bmp__decoder__read_palette()
24414 io1_a_src = io0_a_src + a_src->meta.ri; in wuffs_bmp__decoder__read_palette()
24416 io2_a_src = io0_a_src + a_src->meta.wi; in wuffs_bmp__decoder__read_palette()
24419 uint32_t coro_susp_point = self->private_impl.p_read_palette[0]; in wuffs_bmp__decoder__read_palette()
24421 v_i = self->private_data.s_read_palette[0].v_i; in wuffs_bmp__decoder__read_palette()
24426 if (self->private_impl.f_bitmap_info_len == 12) { in wuffs_bmp__decoder__read_palette()
24427 while ((v_i < 256) && (self->private_impl.f_padding >= 3)) { in wuffs_bmp__decoder__read_palette()
24428 self->private_impl.f_padding -= 3; in wuffs_bmp__decoder__read_palette()
24432 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 3)) { in wuffs_bmp__decoder__read_palette()
24436 self->private_data.s_read_palette[0].scratch = 0; in wuffs_bmp__decoder__read_palette()
24443 uint64_t* scratch = &self->private_data.s_read_palette[0].scratch; in wuffs_bmp__decoder__read_palette()
24459 self->private_data.f_src_palette[((4 * v_i) + 0)] = ((uint8_t)(((v_argb >> 0) & 255))); in wuffs_bmp__decoder__read_palette()
24460 self->private_data.f_src_palette[((4 * v_i) + 1)] = ((uint8_t)(((v_argb >> 8) & 255))); in wuffs_bmp__decoder__read_palette()
24461 self->private_data.f_src_palette[((4 * v_i) + 2)] = ((uint8_t)(((v_argb >> 16) & 255))); in wuffs_bmp__decoder__read_palette()
24462 self->private_data.f_src_palette[((4 * v_i) + 3)] = ((uint8_t)(((v_argb >> 24) & 255))); in wuffs_bmp__decoder__read_palette()
24466 while ((v_i < 256) && (self->private_impl.f_padding >= 4)) { in wuffs_bmp__decoder__read_palette()
24467 self->private_impl.f_padding -= 4; in wuffs_bmp__decoder__read_palette()
24471 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 4)) { in wuffs_bmp__decoder__read_palette()
24475 self->private_data.s_read_palette[0].scratch = 0; in wuffs_bmp__decoder__read_palette()
24482 uint64_t* scratch = &self->private_data.s_read_palette[0].scratch; in wuffs_bmp__decoder__read_palette()
24498 self->private_data.f_src_palette[((4 * v_i) + 0)] = ((uint8_t)(((v_argb >> 0) & 255))); in wuffs_bmp__decoder__read_palette()
24499 self->private_data.f_src_palette[((4 * v_i) + 1)] = ((uint8_t)(((v_argb >> 8) & 255))); in wuffs_bmp__decoder__read_palette()
24500 self->private_data.f_src_palette[((4 * v_i) + 2)] = ((uint8_t)(((v_argb >> 16) & 255))); in wuffs_bmp__decoder__read_palette()
24501 self->private_data.f_src_palette[((4 * v_i) + 3)] = ((uint8_t)(((v_argb >> 24) & 255))); in wuffs_bmp__decoder__read_palette()
24506 self->private_data.f_src_palette[((4 * v_i) + 0)] = 0; in wuffs_bmp__decoder__read_palette()
24507 self->private_data.f_src_palette[((4 * v_i) + 1)] = 0; in wuffs_bmp__decoder__read_palette()
24508 self->private_data.f_src_palette[((4 * v_i) + 2)] = 0; in wuffs_bmp__decoder__read_palette()
24509 self->private_data.f_src_palette[((4 * v_i) + 3)] = 255; in wuffs_bmp__decoder__read_palette()
24515 self->private_impl.p_read_palette[0] = 0; in wuffs_bmp__decoder__read_palette()
24521 …self->private_impl.p_read_palette[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_poin… in wuffs_bmp__decoder__read_palette()
24522 self->private_data.s_read_palette[0].v_i = v_i; in wuffs_bmp__decoder__read_palette()
24527 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_bmp__decoder__read_palette()
24533 // -------- func bmp.decoder.process_masks
24545 v_mask = self->private_impl.f_channel_masks[v_i]; in wuffs_bmp__decoder__process_masks()
24552 self->private_impl.f_channel_shifts[v_i] = ((uint8_t)((v_n & 31))); in wuffs_bmp__decoder__process_masks()
24562 self->private_impl.f_channel_num_bits[v_i] = ((uint8_t)(v_n)); in wuffs_bmp__decoder__process_masks()
24581 // ---------------- Status Codes Implementations
24588 // ---------------- Private Consts
24603 // ---------------- Private Initializer Prototypes
24605 // ---------------- Private Function Prototypes
24607 // ---------------- VTables
24621 // ---------------- Initializer Implementations
24641 // The whole point of this if-check is to detect an uninitialized *self. in wuffs_cbor__decoder__initialize()
24642 // We disable the warning on GCC. Clang-5.0 does not have this warning. in wuffs_cbor__decoder__initialize()
24645 #pragma GCC diagnostic ignored "-Wmaybe-uninitialized" in wuffs_cbor__decoder__initialize()
24647 if (self->private_impl.magic != 0) { in wuffs_cbor__decoder__initialize()
24658 memset(&(self->private_impl), 0, sizeof(self->private_impl)); in wuffs_cbor__decoder__initialize()
24662 self->private_impl.magic = WUFFS_BASE__MAGIC; in wuffs_cbor__decoder__initialize()
24663 self->private_impl.vtable_for__wuffs_base__token_decoder.vtable_name = in wuffs_cbor__decoder__initialize()
24665 self->private_impl.vtable_for__wuffs_base__token_decoder.function_pointers = in wuffs_cbor__decoder__initialize()
24690 // ---------------- Function Implementations
24692 // -------- func cbor.decoder.set_quirk_enabled
24702 // -------- func cbor.decoder.workbuf_len
24710 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) && in wuffs_cbor__decoder__workbuf_len()
24711 (self->private_impl.magic != WUFFS_BASE__DISABLED)) { in wuffs_cbor__decoder__workbuf_len()
24718 // -------- func cbor.decoder.decode_tokens
24729 if (self->private_impl.magic != WUFFS_BASE__MAGIC) { in wuffs_cbor__decoder__decode_tokens()
24731 (self->private_impl.magic == WUFFS_BASE__DISABLED) in wuffs_cbor__decoder__decode_tokens()
24736 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_cbor__decoder__decode_tokens()
24739 if ((self->private_impl.active_coroutine != 0) && in wuffs_cbor__decoder__decode_tokens()
24740 (self->private_impl.active_coroutine != 1)) { in wuffs_cbor__decoder__decode_tokens()
24741 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_cbor__decoder__decode_tokens()
24744 self->private_impl.active_coroutine = 0; in wuffs_cbor__decoder__decode_tokens()
24768 io0_a_dst = a_dst->data.ptr; in wuffs_cbor__decoder__decode_tokens()
24769 io1_a_dst = io0_a_dst + a_dst->meta.wi; in wuffs_cbor__decoder__decode_tokens()
24771 io2_a_dst = io0_a_dst + a_dst->data.len; in wuffs_cbor__decoder__decode_tokens()
24772 if (a_dst->meta.closed) { in wuffs_cbor__decoder__decode_tokens()
24781 io0_a_src = a_src->data.ptr; in wuffs_cbor__decoder__decode_tokens()
24782 io1_a_src = io0_a_src + a_src->meta.ri; in wuffs_cbor__decoder__decode_tokens()
24784 io2_a_src = io0_a_src + a_src->meta.wi; in wuffs_cbor__decoder__decode_tokens()
24787 uint32_t coro_susp_point = self->private_impl.p_decode_tokens[0]; in wuffs_cbor__decoder__decode_tokens()
24789 v_string_length = self->private_data.s_decode_tokens[0].v_string_length; in wuffs_cbor__decoder__decode_tokens()
24790 v_depth = self->private_data.s_decode_tokens[0].v_depth; in wuffs_cbor__decoder__decode_tokens()
24791 v_token_length = self->private_data.s_decode_tokens[0].v_token_length; in wuffs_cbor__decoder__decode_tokens()
24792 v_tagged = self->private_data.s_decode_tokens[0].v_tagged; in wuffs_cbor__decoder__decode_tokens()
24793 …v_indefinite_string_major_type = self->private_data.s_decode_tokens[0].v_indefinite_string_major_t… in wuffs_cbor__decoder__decode_tokens()
24798 if (self->private_impl.f_end_of_data) { in wuffs_cbor__decoder__decode_tokens()
24806 if (((uint64_t)(io2_a_dst - iop_a_dst)) <= 1) { in wuffs_cbor__decoder__decode_tokens()
24811 if (((uint64_t)(io2_a_src - iop_a_src)) <= 0) { in wuffs_cbor__decoder__decode_tokens()
24812 if (a_src && a_src->meta.closed) { in wuffs_cbor__decoder__decode_tokens()
24845 if (((uint64_t)(io2_a_src - iop_a_src)) >= 1) { in wuffs_cbor__decoder__decode_tokens()
24851 if (((uint64_t)(io2_a_src - iop_a_src)) >= 2) { in wuffs_cbor__decoder__decode_tokens()
24857 if (((uint64_t)(io2_a_src - iop_a_src)) >= 4) { in wuffs_cbor__decoder__decode_tokens()
24863 if (((uint64_t)(io2_a_src - iop_a_src)) >= 8) { in wuffs_cbor__decoder__decode_tokens()
24873 iop_a_src--; in wuffs_cbor__decoder__decode_tokens()
24874 if (a_src && a_src->meta.closed) { in wuffs_cbor__decoder__decode_tokens()
24908 …(((uint64_t)((12582912 | (2097151 - ((uint32_t)((v_string_length & 65535))))))) << WUFFS_BASE__TOK… in wuffs_cbor__decoder__decode_tokens()
24914 …(((uint64_t)((12582912 | (2097151 - ((uint32_t)((v_string_length >> 46))))))) << WUFFS_BASE__TOKEN… in wuffs_cbor__decoder__decode_tokens()
24918 …(~((18446744073709551615u - v_string_length) & 70368744177663) << WUFFS_BASE__TOKEN__VALUE_EXTENSI… in wuffs_cbor__decoder__decode_tokens()
24955 if (((uint64_t)(io2_a_dst - iop_a_dst)) <= 0) { in wuffs_cbor__decoder__decode_tokens()
24960 v_n64 = wuffs_base__u64__min(v_string_length, ((uint64_t)(io2_a_src - iop_a_src))); in wuffs_cbor__decoder__decode_tokens()
24965 if (a_src && a_src->meta.closed) { in wuffs_cbor__decoder__decode_tokens()
24973 if (((uint64_t)(io2_a_src - iop_a_src)) < ((uint64_t)(v_token_length))) { in wuffs_cbor__decoder__decode_tokens()
24977 v_string_length -= ((uint64_t)(v_token_length)); in wuffs_cbor__decoder__decode_tokens()
25021 if (((uint64_t)(io2_a_dst - iop_a_dst)) <= 0) { in wuffs_cbor__decoder__decode_tokens()
25028 ((size_t)(wuffs_base__u64__min(((uint64_t)(io2_a_src - iop_a_src)), v_n64)))))); in wuffs_cbor__decoder__decode_tokens()
25031 if ((a_src && a_src->meta.closed) || (((uint64_t)(io2_a_src - iop_a_src)) >= 4)) { in wuffs_cbor__decoder__decode_tokens()
25039 if (((uint64_t)(io2_a_src - iop_a_src)) < ((uint64_t)(v_token_length))) { in wuffs_cbor__decoder__decode_tokens()
25043 v_string_length -= ((uint64_t)(v_token_length)); in wuffs_cbor__decoder__decode_tokens()
25066 iop_a_src--; in wuffs_cbor__decoder__decode_tokens()
25067 v_token_length -= 1; in wuffs_cbor__decoder__decode_tokens()
25075 v_stack_byte = ((v_depth - 1) / 16); in wuffs_cbor__decoder__decode_tokens()
25076 v_stack_bit = (((v_depth - 1) & 15) * 2); in wuffs_cbor__decoder__decode_tokens()
25077 … if (0 == (self->private_data.f_stack[v_stack_byte] & (((uint32_t)(1)) << v_stack_bit))) { in wuffs_cbor__decoder__decode_tokens()
25096 … self->private_data.f_stack[v_stack_byte] &= (4294967295 ^ (((uint32_t)(3)) << v_stack_bit)); in wuffs_cbor__decoder__decode_tokens()
25097 self->private_data.f_container_num_remaining[v_depth] = v_string_length; in wuffs_cbor__decoder__decode_tokens()
25107 iop_a_src--; in wuffs_cbor__decoder__decode_tokens()
25108 v_token_length -= 1; in wuffs_cbor__decoder__decode_tokens()
25116 v_stack_byte = ((v_depth - 1) / 16); in wuffs_cbor__decoder__decode_tokens()
25117 v_stack_bit = (((v_depth - 1) & 15) * 2); in wuffs_cbor__decoder__decode_tokens()
25118 … if (0 == (self->private_data.f_stack[v_stack_byte] & (((uint32_t)(1)) << v_stack_bit))) { in wuffs_cbor__decoder__decode_tokens()
25137 self->private_data.f_stack[v_stack_byte] |= (((uint32_t)(3)) << v_stack_bit); in wuffs_cbor__decoder__decode_tokens()
25138 self->private_data.f_container_num_remaining[v_depth] = v_string_length; in wuffs_cbor__decoder__decode_tokens()
25181 iop_a_src--; in wuffs_cbor__decoder__decode_tokens()
25198 v_depth -= 1; in wuffs_cbor__decoder__decode_tokens()
25199 if (self->private_data.f_container_num_remaining[v_depth] != 0) { in wuffs_cbor__decoder__decode_tokens()
25204 v_stack_val = (3 & (self->private_data.f_stack[v_stack_byte] >> v_stack_bit)); in wuffs_cbor__decoder__decode_tokens()
25216 v_stack_byte = ((v_depth - 1) / 16); in wuffs_cbor__decoder__decode_tokens()
25217 v_stack_bit = (((v_depth - 1) & 15) * 2); in wuffs_cbor__decoder__decode_tokens()
25218 … if (0 == (self->private_data.f_stack[v_stack_byte] & (((uint32_t)(1)) << v_stack_bit))) { in wuffs_cbor__decoder__decode_tokens()
25234 iop_a_src--; in wuffs_cbor__decoder__decode_tokens()
25244 v_stack_byte = ((v_depth - 1) / 16); in wuffs_cbor__decoder__decode_tokens()
25245 v_stack_bit = (((v_depth - 1) & 15) * 2); in wuffs_cbor__decoder__decode_tokens()
25246 self->private_data.f_stack[v_stack_byte] ^= (((uint32_t)(1)) << (v_stack_bit + 1)); in wuffs_cbor__decoder__decode_tokens()
25247 if (1 == (3 & (self->private_data.f_stack[v_stack_byte] >> v_stack_bit))) { in wuffs_cbor__decoder__decode_tokens()
25250 if (self->private_data.f_container_num_remaining[(v_depth - 1)] <= 0) { in wuffs_cbor__decoder__decode_tokens()
25253 self->private_data.f_container_num_remaining[(v_depth - 1)] -= 1; in wuffs_cbor__decoder__decode_tokens()
25254 if (self->private_data.f_container_num_remaining[(v_depth - 1)] > 0) { in wuffs_cbor__decoder__decode_tokens()
25258 while (((uint64_t)(io2_a_dst - iop_a_dst)) <= 0) { in wuffs_cbor__decoder__decode_tokens()
25263 v_depth -= 1; in wuffs_cbor__decoder__decode_tokens()
25266 if (0 == (self->private_data.f_stack[v_stack_byte] & (((uint32_t)(1)) << v_stack_bit))) { in wuffs_cbor__decoder__decode_tokens()
25274 v_stack_byte = ((v_depth - 1) / 16); in wuffs_cbor__decoder__decode_tokens()
25275 v_stack_bit = (((v_depth - 1) & 15) * 2); in wuffs_cbor__decoder__decode_tokens()
25276 if (0 == (self->private_data.f_stack[v_stack_byte] & (((uint32_t)(1)) << v_stack_bit))) { in wuffs_cbor__decoder__decode_tokens()
25289 self->private_impl.f_end_of_data = true; in wuffs_cbor__decoder__decode_tokens()
25292 self->private_impl.p_decode_tokens[0] = 0; in wuffs_cbor__decoder__decode_tokens()
25298 …self->private_impl.p_decode_tokens[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_poi… in wuffs_cbor__decoder__decode_tokens()
25299 self->private_impl.active_coroutine = wuffs_base__status__is_suspension(&status) ? 1 : 0; in wuffs_cbor__decoder__decode_tokens()
25300 self->private_data.s_decode_tokens[0].v_string_length = v_string_length; in wuffs_cbor__decoder__decode_tokens()
25301 self->private_data.s_decode_tokens[0].v_depth = v_depth; in wuffs_cbor__decoder__decode_tokens()
25302 self->private_data.s_decode_tokens[0].v_token_length = v_token_length; in wuffs_cbor__decoder__decode_tokens()
25303 self->private_data.s_decode_tokens[0].v_tagged = v_tagged; in wuffs_cbor__decoder__decode_tokens()
25304 …self->private_data.s_decode_tokens[0].v_indefinite_string_major_type = v_indefinite_string_major_t… in wuffs_cbor__decoder__decode_tokens()
25309 a_dst->meta.wi = ((size_t)(iop_a_dst - a_dst->data.ptr)); in wuffs_cbor__decoder__decode_tokens()
25312 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_cbor__decoder__decode_tokens()
25316 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_cbor__decoder__decode_tokens()
25325 // ---------------- Status Codes Implementations
25327 // ---------------- Private Consts
25887 // ---------------- Private Initializer Prototypes
25889 // ---------------- Private Function Prototypes
25922 // ---------------- VTables
25933 // ---------------- Initializer Implementations
25953 // The whole point of this if-check is to detect an uninitialized *self. in wuffs_crc32__ieee_hasher__initialize()
25954 // We disable the warning on GCC. Clang-5.0 does not have this warning. in wuffs_crc32__ieee_hasher__initialize()
25957 #pragma GCC diagnostic ignored "-Wmaybe-uninitialized" in wuffs_crc32__ieee_hasher__initialize()
25959 if (self->private_impl.magic != 0) { in wuffs_crc32__ieee_hasher__initialize()
25970 memset(&(self->private_impl), 0, sizeof(self->private_impl)); in wuffs_crc32__ieee_hasher__initialize()
25974 self->private_impl.choosy_up = &wuffs_crc32__ieee_hasher__up__choosy_default; in wuffs_crc32__ieee_hasher__initialize()
25976 self->private_impl.magic = WUFFS_BASE__MAGIC; in wuffs_crc32__ieee_hasher__initialize()
25977 self->private_impl.vtable_for__wuffs_base__hasher_u32.vtable_name = in wuffs_crc32__ieee_hasher__initialize()
25979 self->private_impl.vtable_for__wuffs_base__hasher_u32.function_pointers = in wuffs_crc32__ieee_hasher__initialize()
26004 // ---------------- Function Implementations
26006 // -------- func crc32.ieee_hasher.set_quirk_enabled
26016 // -------- func crc32.ieee_hasher.update_u32
26025 if (self->private_impl.magic != WUFFS_BASE__MAGIC) { in wuffs_crc32__ieee_hasher__update_u32()
26029 if (self->private_impl.f_state == 0) { in wuffs_crc32__ieee_hasher__update_u32()
26030 self->private_impl.choosy_up = ( in wuffs_crc32__ieee_hasher__update_u32()
26040 self->private_impl.choosy_up); in wuffs_crc32__ieee_hasher__update_u32()
26043 return self->private_impl.f_state; in wuffs_crc32__ieee_hasher__update_u32()
26046 // -------- func crc32.ieee_hasher.up
26052 return (*self->private_impl.choosy_up)(self, a_x); in wuffs_crc32__ieee_hasher__up()
26062 v_s = (4294967295 ^ self->private_impl.f_state); in wuffs_crc32__ieee_hasher__up__choosy_default()
26067 uint8_t* i_end0_p = v_p.ptr + (((i_slice_p.len - (size_t)(v_p.ptr - i_slice_p.ptr)) / 32) * 32); in wuffs_crc32__ieee_hasher__up__choosy_default()
26113 uint8_t* i_end1_p = v_p.ptr + (((i_slice_p.len - (size_t)(v_p.ptr - i_slice_p.ptr)) / 16) * 16); in wuffs_crc32__ieee_hasher__up__choosy_default()
26145 self->private_impl.f_state = (4294967295 ^ v_s); in wuffs_crc32__ieee_hasher__up__choosy_default()
26149 // ‼ WUFFS MULTI-FILE SECTION +arm_crc32
26150 // -------- func crc32.ieee_hasher.up_arm_crc32
26160 v_s = (4294967295 ^ self->private_impl.f_state); in wuffs_crc32__ieee_hasher__up_arm_crc32()
26169 … uint8_t* i_end0_p = v_p.ptr + (((i_slice_p.len - (size_t)(v_p.ptr - i_slice_p.ptr)) / 128) * 128); in wuffs_crc32__ieee_hasher__up_arm_crc32()
26205 uint8_t* i_end1_p = v_p.ptr + (((i_slice_p.len - (size_t)(v_p.ptr - i_slice_p.ptr)) / 8) * 8); in wuffs_crc32__ieee_hasher__up_arm_crc32()
26218 self->private_impl.f_state = (4294967295 ^ v_s); in wuffs_crc32__ieee_hasher__up_arm_crc32()
26222 // ‼ WUFFS MULTI-FILE SECTION -arm_crc32
26224 // ‼ WUFFS MULTI-FILE SECTION +x86_avx2
26225 // -------- func crc32.ieee_hasher.up_x86_avx2
26246 v_s = (4294967295 ^ self->private_impl.f_state); in wuffs_crc32__ieee_hasher__up_x86_avx2()
26263 self->private_impl.f_state = (4294967295 ^ v_s); in wuffs_crc32__ieee_hasher__up_x86_avx2()
26276 uint8_t* i_end0_p = v_p.ptr + (((i_slice_p.len - (size_t)(v_p.ptr - i_slice_p.ptr)) / 64) * 64); in wuffs_crc32__ieee_hasher__up_x86_avx2()
26337 self->private_impl.f_state = (4294967295 ^ v_s); in wuffs_crc32__ieee_hasher__up_x86_avx2()
26341 // ‼ WUFFS MULTI-FILE SECTION -x86_avx2
26343 // ‼ WUFFS MULTI-FILE SECTION +x86_sse42
26344 // -------- func crc32.ieee_hasher.up_x86_sse42
26365 v_s = (4294967295 ^ self->private_impl.f_state); in wuffs_crc32__ieee_hasher__up_x86_sse42()
26382 self->private_impl.f_state = (4294967295 ^ v_s); in wuffs_crc32__ieee_hasher__up_x86_sse42()
26395 uint8_t* i_end0_p = v_p.ptr + (((i_slice_p.len - (size_t)(v_p.ptr - i_slice_p.ptr)) / 64) * 64); in wuffs_crc32__ieee_hasher__up_x86_sse42()
26456 self->private_impl.f_state = (4294967295 ^ v_s); in wuffs_crc32__ieee_hasher__up_x86_sse42()
26460 // ‼ WUFFS MULTI-FILE SECTION -x86_sse42
26466 // ---------------- Status Codes Implementations
26468 …eflate__error__bad_huffman_code_over_subscribed[] = "#deflate: bad Huffman code (over-subscribed)";
26469 …late__error__bad_huffman_code_under_subscribed[] = "#deflate: bad Huffman code (under-subscribed)";
26479 const char wuffs_deflate__error__missing_end_of_block_code[] = "#deflate: missing end-of-block code…
26486 // ---------------- Private Consts
26551 // ---------------- Private Initializer Prototypes
26553 // ---------------- Private Function Prototypes
26616 // ---------------- VTables
26630 // ---------------- Initializer Implementations
26650 // The whole point of this if-check is to detect an uninitialized *self. in wuffs_deflate__decoder__initialize()
26651 // We disable the warning on GCC. Clang-5.0 does not have this warning. in wuffs_deflate__decoder__initialize()
26654 #pragma GCC diagnostic ignored "-Wmaybe-uninitialized" in wuffs_deflate__decoder__initialize()
26656 if (self->private_impl.magic != 0) { in wuffs_deflate__decoder__initialize()
26667 memset(&(self->private_impl), 0, sizeof(self->private_impl)); in wuffs_deflate__decoder__initialize()
26671 …self->private_impl.choosy_decode_huffman_fast64 = &wuffs_deflate__decoder__decode_huffman_fast64__… in wuffs_deflate__decoder__initialize()
26673 self->private_impl.magic = WUFFS_BASE__MAGIC; in wuffs_deflate__decoder__initialize()
26674 self->private_impl.vtable_for__wuffs_base__io_transformer.vtable_name = in wuffs_deflate__decoder__initialize()
26676 self->private_impl.vtable_for__wuffs_base__io_transformer.function_pointers = in wuffs_deflate__decoder__initialize()
26701 // ---------------- Function Implementations
26703 // -------- func deflate.decoder.add_history
26712 if (self->private_impl.magic != WUFFS_BASE__MAGIC) { in wuffs_deflate__decoder__add_history()
26723 …wuffs_base__slice_u8__copy_from_slice(wuffs_base__make_slice_u8(self->private_data.f_history, 3276… in wuffs_deflate__decoder__add_history()
26724 self->private_impl.f_history_index = 32768; in wuffs_deflate__decoder__add_history()
26726 …ase__slice_u8__subslice_i(wuffs_base__make_slice_u8(self->private_data.f_history, 32768), (self->p… in wuffs_deflate__decoder__add_history()
26729 …v_n_copied = wuffs_base__slice_u8__copy_from_slice(wuffs_base__make_slice_u8(self->private_data.f_… in wuffs_deflate__decoder__add_history()
26730 self->private_impl.f_history_index = (((uint32_t)((v_n_copied & 32767))) + 32768); in wuffs_deflate__decoder__add_history()
26733 if (self->private_impl.f_history_index >= 32768) { in wuffs_deflate__decoder__add_history()
26736 …self->private_impl.f_history_index = ((self->private_impl.f_history_index & 32767) + ((uint32_t)((… in wuffs_deflate__decoder__add_history()
26739 …om_slice(wuffs_base__make_slice_u8((self->private_data.f_history) + 32768, 257), wuffs_base__make_… in wuffs_deflate__decoder__add_history()
26743 // -------- func deflate.decoder.set_quirk_enabled
26753 // -------- func deflate.decoder.workbuf_len
26761 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) && in wuffs_deflate__decoder__workbuf_len()
26762 (self->private_impl.magic != WUFFS_BASE__DISABLED)) { in wuffs_deflate__decoder__workbuf_len()
26769 // -------- func deflate.decoder.transform_io
26780 if (self->private_impl.magic != WUFFS_BASE__MAGIC) { in wuffs_deflate__decoder__transform_io()
26782 (self->private_impl.magic == WUFFS_BASE__DISABLED) in wuffs_deflate__decoder__transform_io()
26787 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_deflate__decoder__transform_io()
26790 if ((self->private_impl.active_coroutine != 0) && in wuffs_deflate__decoder__transform_io()
26791 (self->private_impl.active_coroutine != 1)) { in wuffs_deflate__decoder__transform_io()
26792 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_deflate__decoder__transform_io()
26795 self->private_impl.active_coroutine = 0; in wuffs_deflate__decoder__transform_io()
26806 io0_a_dst = a_dst->data.ptr; in wuffs_deflate__decoder__transform_io()
26807 io1_a_dst = io0_a_dst + a_dst->meta.wi; in wuffs_deflate__decoder__transform_io()
26809 io2_a_dst = io0_a_dst + a_dst->data.len; in wuffs_deflate__decoder__transform_io()
26810 if (a_dst->meta.closed) { in wuffs_deflate__decoder__transform_io()
26815 uint32_t coro_susp_point = self->private_impl.p_transform_io[0]; in wuffs_deflate__decoder__transform_io()
26819 self->private_impl.choosy_decode_huffman_fast64 = ( in wuffs_deflate__decoder__transform_io()
26823 self->private_impl.choosy_decode_huffman_fast64); in wuffs_deflate__decoder__transform_io()
26825 v_mark = ((uint64_t)(iop_a_dst - io0_a_dst)); in wuffs_deflate__decoder__transform_io()
26828 a_dst->meta.wi = ((size_t)(iop_a_dst - a_dst->data.ptr)); in wuffs_deflate__decoder__transform_io()
26833 iop_a_dst = a_dst->data.ptr + a_dst->meta.wi; in wuffs_deflate__decoder__transform_io()
26846 …4__sat_add_indirect(&self->private_impl.f_transformed_history_count, wuffs_base__io__count_since(v… in wuffs_deflate__decoder__transform_io()
26847 …oder__add_history(self, wuffs_base__io__since(v_mark, ((uint64_t)(iop_a_dst - io0_a_dst)), io0_a_d… in wuffs_deflate__decoder__transform_io()
26853 self->private_impl.p_transform_io[0] = 0; in wuffs_deflate__decoder__transform_io()
26859 …self->private_impl.p_transform_io[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_poin… in wuffs_deflate__decoder__transform_io()
26860 self->private_impl.active_coroutine = wuffs_base__status__is_suspension(&status) ? 1 : 0; in wuffs_deflate__decoder__transform_io()
26865 a_dst->meta.wi = ((size_t)(iop_a_dst - a_dst->data.ptr)); in wuffs_deflate__decoder__transform_io()
26869 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_deflate__decoder__transform_io()
26874 // -------- func deflate.decoder.decode_blocks
26893 io0_a_src = a_src->data.ptr; in wuffs_deflate__decoder__decode_blocks()
26894 io1_a_src = io0_a_src + a_src->meta.ri; in wuffs_deflate__decoder__decode_blocks()
26896 io2_a_src = io0_a_src + a_src->meta.wi; in wuffs_deflate__decoder__decode_blocks()
26899 uint32_t coro_susp_point = self->private_impl.p_decode_blocks[0]; in wuffs_deflate__decoder__decode_blocks()
26901 v_final = self->private_data.s_decode_blocks[0].v_final; in wuffs_deflate__decoder__decode_blocks()
26908 while (self->private_impl.f_n_bits < 3) { in wuffs_deflate__decoder__decode_blocks()
26918 self->private_impl.f_bits |= (v_b0 << (self->private_impl.f_n_bits & 3)); in wuffs_deflate__decoder__decode_blocks()
26919 self->private_impl.f_n_bits = ((self->private_impl.f_n_bits & 3) + 8); in wuffs_deflate__decoder__decode_blocks()
26921 v_final = (self->private_impl.f_bits & 1); in wuffs_deflate__decoder__decode_blocks()
26922 v_type = ((self->private_impl.f_bits >> 1) & 3); in wuffs_deflate__decoder__decode_blocks()
26923 self->private_impl.f_bits >>= 3; in wuffs_deflate__decoder__decode_blocks()
26924 self->private_impl.f_n_bits -= 3; in wuffs_deflate__decoder__decode_blocks()
26927 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_deflate__decoder__decode_blocks()
26932 iop_a_src = a_src->data.ptr + a_src->meta.ri; in wuffs_deflate__decoder__decode_blocks()
26952 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_deflate__decoder__decode_blocks()
26957 iop_a_src = a_src->data.ptr + a_src->meta.ri; in wuffs_deflate__decoder__decode_blocks()
26966 self->private_impl.f_end_of_block = false; in wuffs_deflate__decoder__decode_blocks()
26970 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_deflate__decoder__decode_blocks()
26974 iop_a_src = a_src->data.ptr + a_src->meta.ri; in wuffs_deflate__decoder__decode_blocks()
26978 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_deflate__decoder__decode_blocks()
26982 iop_a_src = a_src->data.ptr + a_src->meta.ri; in wuffs_deflate__decoder__decode_blocks()
26989 if (self->private_impl.f_end_of_block) { in wuffs_deflate__decoder__decode_blocks()
26993 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_deflate__decoder__decode_blocks()
26998 iop_a_src = a_src->data.ptr + a_src->meta.ri; in wuffs_deflate__decoder__decode_blocks()
27003 if (self->private_impl.f_end_of_block) { in wuffs_deflate__decoder__decode_blocks()
27010 self->private_impl.p_decode_blocks[0] = 0; in wuffs_deflate__decoder__decode_blocks()
27016 …self->private_impl.p_decode_blocks[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_poi… in wuffs_deflate__decoder__decode_blocks()
27017 self->private_data.s_decode_blocks[0].v_final = v_final; in wuffs_deflate__decoder__decode_blocks()
27022 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_deflate__decoder__decode_blocks()
27028 // -------- func deflate.decoder.decode_uncompressed
27045 io0_a_dst = a_dst->data.ptr; in wuffs_deflate__decoder__decode_uncompressed()
27046 io1_a_dst = io0_a_dst + a_dst->meta.wi; in wuffs_deflate__decoder__decode_uncompressed()
27048 io2_a_dst = io0_a_dst + a_dst->data.len; in wuffs_deflate__decoder__decode_uncompressed()
27049 if (a_dst->meta.closed) { in wuffs_deflate__decoder__decode_uncompressed()
27058 io0_a_src = a_src->data.ptr; in wuffs_deflate__decoder__decode_uncompressed()
27059 io1_a_src = io0_a_src + a_src->meta.ri; in wuffs_deflate__decoder__decode_uncompressed()
27061 io2_a_src = io0_a_src + a_src->meta.wi; in wuffs_deflate__decoder__decode_uncompressed()
27064 uint32_t coro_susp_point = self->private_impl.p_decode_uncompressed[0]; in wuffs_deflate__decoder__decode_uncompressed()
27066 v_length = self->private_data.s_decode_uncompressed[0].v_length; in wuffs_deflate__decoder__decode_uncompressed()
27071 …if ((self->private_impl.f_n_bits >= 8) || ((self->private_impl.f_bits >> (self->private_impl.f_n_b… in wuffs_deflate__decoder__decode_uncompressed()
27075 self->private_impl.f_n_bits = 0; in wuffs_deflate__decoder__decode_uncompressed()
27076 self->private_impl.f_bits = 0; in wuffs_deflate__decoder__decode_uncompressed()
27080 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 4)) { in wuffs_deflate__decoder__decode_uncompressed()
27084 self->private_data.s_decode_uncompressed[0].scratch = 0; in wuffs_deflate__decoder__decode_uncompressed()
27091 uint64_t* scratch = &self->private_data.s_decode_uncompressed[0].scratch; in wuffs_deflate__decoder__decode_uncompressed()
27106 if ((((v_length) & 0xFFFF) + ((v_length) >> (32 - (16)))) != 65535) { in wuffs_deflate__decoder__decode_uncompressed()
27118 v_length -= v_n_copied; in wuffs_deflate__decoder__decode_uncompressed()
27119 if (((uint64_t)(io2_a_dst - iop_a_dst)) == 0) { in wuffs_deflate__decoder__decode_uncompressed()
27129 self->private_impl.p_decode_uncompressed[0] = 0; in wuffs_deflate__decoder__decode_uncompressed()
27135 …self->private_impl.p_decode_uncompressed[0] = wuffs_base__status__is_suspension(&status) ? coro_su… in wuffs_deflate__decoder__decode_uncompressed()
27136 self->private_data.s_decode_uncompressed[0].v_length = v_length; in wuffs_deflate__decoder__decode_uncompressed()
27141 a_dst->meta.wi = ((size_t)(iop_a_dst - a_dst->data.ptr)); in wuffs_deflate__decoder__decode_uncompressed()
27144 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_deflate__decoder__decode_uncompressed()
27150 // -------- func deflate.decoder.init_fixed_huffman
27159 self->private_data.f_code_lengths[v_i] = 8; in wuffs_deflate__decoder__init_fixed_huffman()
27163 self->private_data.f_code_lengths[v_i] = 9; in wuffs_deflate__decoder__init_fixed_huffman()
27167 self->private_data.f_code_lengths[v_i] = 7; in wuffs_deflate__decoder__init_fixed_huffman()
27171 self->private_data.f_code_lengths[v_i] = 8; in wuffs_deflate__decoder__init_fixed_huffman()
27175 self->private_data.f_code_lengths[v_i] = 5; in wuffs_deflate__decoder__init_fixed_huffman()
27197 // -------- func deflate.decoder.init_dynamic_huffman
27228 io0_a_src = a_src->data.ptr; in wuffs_deflate__decoder__init_dynamic_huffman()
27229 io1_a_src = io0_a_src + a_src->meta.ri; in wuffs_deflate__decoder__init_dynamic_huffman()
27231 io2_a_src = io0_a_src + a_src->meta.wi; in wuffs_deflate__decoder__init_dynamic_huffman()
27234 uint32_t coro_susp_point = self->private_impl.p_init_dynamic_huffman[0]; in wuffs_deflate__decoder__init_dynamic_huffman()
27236 v_bits = self->private_data.s_init_dynamic_huffman[0].v_bits; in wuffs_deflate__decoder__init_dynamic_huffman()
27237 v_n_bits = self->private_data.s_init_dynamic_huffman[0].v_n_bits; in wuffs_deflate__decoder__init_dynamic_huffman()
27238 v_n_lit = self->private_data.s_init_dynamic_huffman[0].v_n_lit; in wuffs_deflate__decoder__init_dynamic_huffman()
27239 v_n_dist = self->private_data.s_init_dynamic_huffman[0].v_n_dist; in wuffs_deflate__decoder__init_dynamic_huffman()
27240 v_n_clen = self->private_data.s_init_dynamic_huffman[0].v_n_clen; in wuffs_deflate__decoder__init_dynamic_huffman()
27241 v_i = self->private_data.s_init_dynamic_huffman[0].v_i; in wuffs_deflate__decoder__init_dynamic_huffman()
27242 v_mask = self->private_data.s_init_dynamic_huffman[0].v_mask; in wuffs_deflate__decoder__init_dynamic_huffman()
27243 v_table_entry = self->private_data.s_init_dynamic_huffman[0].v_table_entry; in wuffs_deflate__decoder__init_dynamic_huffman()
27244 v_n_extra_bits = self->private_data.s_init_dynamic_huffman[0].v_n_extra_bits; in wuffs_deflate__decoder__init_dynamic_huffman()
27245 v_rep_symbol = self->private_data.s_init_dynamic_huffman[0].v_rep_symbol; in wuffs_deflate__decoder__init_dynamic_huffman()
27246 v_rep_count = self->private_data.s_init_dynamic_huffman[0].v_rep_count; in wuffs_deflate__decoder__init_dynamic_huffman()
27251 v_bits = self->private_impl.f_bits; in wuffs_deflate__decoder__init_dynamic_huffman()
27252 v_n_bits = self->private_impl.f_n_bits; in wuffs_deflate__decoder__init_dynamic_huffman()
27280 v_n_bits -= 14; in wuffs_deflate__decoder__init_dynamic_huffman()
27296 self->private_data.f_code_lengths[WUFFS_DEFLATE__CODE_ORDER[v_i]] = ((uint8_t)((v_bits & 7))); in wuffs_deflate__decoder__init_dynamic_huffman()
27298 v_n_bits -= 3; in wuffs_deflate__decoder__init_dynamic_huffman()
27302 self->private_data.f_code_lengths[WUFFS_DEFLATE__CODE_ORDER[v_i]] = 0; in wuffs_deflate__decoder__init_dynamic_huffman()
27314 v_mask = ((((uint32_t)(1)) << self->private_impl.f_n_huffs_bits[0]) - 1); in wuffs_deflate__decoder__init_dynamic_huffman()
27319 v_table_entry = self->private_data.f_huffs[0][(v_bits & v_mask)]; in wuffs_deflate__decoder__init_dynamic_huffman()
27323 v_n_bits -= v_table_entry_n_bits; in wuffs_deflate__decoder__init_dynamic_huffman()
27345 self->private_data.f_code_lengths[v_i] = ((uint8_t)(v_table_entry)); in wuffs_deflate__decoder__init_dynamic_huffman()
27358 v_rep_symbol = (self->private_data.f_code_lengths[(v_i - 1)] & 15); in wuffs_deflate__decoder__init_dynamic_huffman()
27387 v_n_bits -= v_n_extra_bits; in wuffs_deflate__decoder__init_dynamic_huffman()
27393 self->private_data.f_code_lengths[v_i] = v_rep_symbol; in wuffs_deflate__decoder__init_dynamic_huffman()
27395 v_rep_count -= 1; in wuffs_deflate__decoder__init_dynamic_huffman()
27402 if (self->private_data.f_code_lengths[256] == 0) { in wuffs_deflate__decoder__init_dynamic_huffman()
27424 self->private_impl.f_bits = v_bits; in wuffs_deflate__decoder__init_dynamic_huffman()
27425 self->private_impl.f_n_bits = v_n_bits; in wuffs_deflate__decoder__init_dynamic_huffman()
27429 self->private_impl.p_init_dynamic_huffman[0] = 0; in wuffs_deflate__decoder__init_dynamic_huffman()
27435 …self->private_impl.p_init_dynamic_huffman[0] = wuffs_base__status__is_suspension(&status) ? coro_s… in wuffs_deflate__decoder__init_dynamic_huffman()
27436 self->private_data.s_init_dynamic_huffman[0].v_bits = v_bits; in wuffs_deflate__decoder__init_dynamic_huffman()
27437 self->private_data.s_init_dynamic_huffman[0].v_n_bits = v_n_bits; in wuffs_deflate__decoder__init_dynamic_huffman()
27438 self->private_data.s_init_dynamic_huffman[0].v_n_lit = v_n_lit; in wuffs_deflate__decoder__init_dynamic_huffman()
27439 self->private_data.s_init_dynamic_huffman[0].v_n_dist = v_n_dist; in wuffs_deflate__decoder__init_dynamic_huffman()
27440 self->private_data.s_init_dynamic_huffman[0].v_n_clen = v_n_clen; in wuffs_deflate__decoder__init_dynamic_huffman()
27441 self->private_data.s_init_dynamic_huffman[0].v_i = v_i; in wuffs_deflate__decoder__init_dynamic_huffman()
27442 self->private_data.s_init_dynamic_huffman[0].v_mask = v_mask; in wuffs_deflate__decoder__init_dynamic_huffman()
27443 self->private_data.s_init_dynamic_huffman[0].v_table_entry = v_table_entry; in wuffs_deflate__decoder__init_dynamic_huffman()
27444 self->private_data.s_init_dynamic_huffman[0].v_n_extra_bits = v_n_extra_bits; in wuffs_deflate__decoder__init_dynamic_huffman()
27445 self->private_data.s_init_dynamic_huffman[0].v_rep_symbol = v_rep_symbol; in wuffs_deflate__decoder__init_dynamic_huffman()
27446 self->private_data.s_init_dynamic_huffman[0].v_rep_count = v_rep_count; in wuffs_deflate__decoder__init_dynamic_huffman()
27451 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_deflate__decoder__init_dynamic_huffman()
27457 // -------- func deflate.decoder.init_huff
27493 if (v_counts[(self->private_data.f_code_lengths[v_i] & 15)] >= 320) { in wuffs_deflate__decoder__init_huff()
27498 #pragma GCC diagnostic ignored "-Wconversion" in wuffs_deflate__decoder__init_huff()
27500 v_counts[(self->private_data.f_code_lengths[v_i] & 15)] += 1; in wuffs_deflate__decoder__init_huff()
27519 v_remaining -= ((uint32_t)(v_counts[v_i])); in wuffs_deflate__decoder__init_huff()
27526 if (self->private_data.f_code_lengths[(a_n_codes0 + v_i)] == 1) { in wuffs_deflate__decoder__init_huff()
27527 self->private_impl.f_n_huffs_bits[1] = 1; in wuffs_deflate__decoder__init_huff()
27528 self->private_data.f_huffs[1][0] = (WUFFS_DEFLATE__DCODE_MAGIC_NUMBERS[v_i] | 1); in wuffs_deflate__decoder__init_huff()
27529 self->private_data.f_huffs[1][1] = (WUFFS_DEFLATE__DCODE_MAGIC_NUMBERS[31] | 1); in wuffs_deflate__decoder__init_huff()
27541 if (v_n_symbols > (320 - v_count)) { in wuffs_deflate__decoder__init_huff()
27555 if (self->private_data.f_code_lengths[v_i] != 0) { in wuffs_deflate__decoder__init_huff()
27556 if (v_offsets[(self->private_data.f_code_lengths[v_i] & 15)] >= 320) { in wuffs_deflate__decoder__init_huff()
27559 …v_symbols[v_offsets[(self->private_data.f_code_lengths[v_i] & 15)]] = ((uint16_t)((v_i - a_n_codes… in wuffs_deflate__decoder__init_huff()
27562 #pragma GCC diagnostic ignored "-Wconversion" in wuffs_deflate__decoder__init_huff()
27564 v_offsets[(self->private_data.f_code_lengths[v_i] & 15)] += 1; in wuffs_deflate__decoder__init_huff()
27590 v_max_cl -= 1; in wuffs_deflate__decoder__init_huff()
27594 self->private_impl.f_n_huffs_bits[a_which] = v_max_cl; in wuffs_deflate__decoder__init_huff()
27596 self->private_impl.f_n_huffs_bits[a_which] = 9; in wuffs_deflate__decoder__init_huff()
27609 …v_prev_cl = ((uint32_t)((self->private_data.f_code_lengths[(a_n_codes0 + ((uint32_t)(v_symbols[0])… in wuffs_deflate__decoder__init_huff()
27620 …v_cl = ((uint32_t)((self->private_data.f_code_lengths[(a_n_codes0 + ((uint32_t)(v_symbols[v_i])))]… in wuffs_deflate__decoder__init_huff()
27622 v_code <<= (v_cl - v_prev_cl); in wuffs_deflate__decoder__init_huff()
27630 v_cl -= 9; in wuffs_deflate__decoder__init_huff()
27641 v_remaining -= ((uint32_t)(v_counts[v_j])); in wuffs_deflate__decoder__init_huff()
27652 v_j -= 9; in wuffs_deflate__decoder__init_huff()
27660 … self->private_data.f_huffs[a_which][v_redirect_key] = (268435465 | (v_top << 8) | (v_j << 4)); in wuffs_deflate__decoder__init_huff()
27668 #pragma GCC diagnostic ignored "-Wconversion" in wuffs_deflate__decoder__init_huff()
27670 v_counts[v_prev_cl] -= 1; in wuffs_deflate__decoder__init_huff()
27675 v_reversed_key >>= (9 - v_cl); in wuffs_deflate__decoder__init_huff()
27682 v_symbol -= a_base_symbol; in wuffs_deflate__decoder__init_huff()
27694 v_high_bits -= v_delta; in wuffs_deflate__decoder__init_huff()
27698 … self->private_data.f_huffs[a_which][(v_top + ((v_high_bits | v_reversed_key) & 511))] = v_value; in wuffs_deflate__decoder__init_huff()
27713 // ‼ WUFFS MULTI-FILE SECTION +x86_bmi2
27714 // -------- func deflate.decoder.decode_huffman_bmi2
27744 io0_a_dst = a_dst->data.ptr; in wuffs_deflate__decoder__decode_huffman_bmi2()
27745 io1_a_dst = io0_a_dst + a_dst->meta.wi; in wuffs_deflate__decoder__decode_huffman_bmi2()
27747 io2_a_dst = io0_a_dst + a_dst->data.len; in wuffs_deflate__decoder__decode_huffman_bmi2()
27748 if (a_dst->meta.closed) { in wuffs_deflate__decoder__decode_huffman_bmi2()
27757 io0_a_src = a_src->data.ptr; in wuffs_deflate__decoder__decode_huffman_bmi2()
27758 io1_a_src = io0_a_src + a_src->meta.ri; in wuffs_deflate__decoder__decode_huffman_bmi2()
27760 io2_a_src = io0_a_src + a_src->meta.wi; in wuffs_deflate__decoder__decode_huffman_bmi2()
27763 …if ((self->private_impl.f_n_bits >= 8) || ((self->private_impl.f_bits >> (self->private_impl.f_n_b… in wuffs_deflate__decoder__decode_huffman_bmi2()
27767 v_bits = ((uint64_t)(self->private_impl.f_bits)); in wuffs_deflate__decoder__decode_huffman_bmi2()
27768 v_n_bits = self->private_impl.f_n_bits; in wuffs_deflate__decoder__decode_huffman_bmi2()
27769 v_lmask = ((((uint64_t)(1)) << self->private_impl.f_n_huffs_bits[0]) - 1); in wuffs_deflate__decoder__decode_huffman_bmi2()
27770 v_dmask = ((((uint64_t)(1)) << self->private_impl.f_n_huffs_bits[1]) - 1); in wuffs_deflate__decoder__decode_huffman_bmi2()
27771 if (self->private_impl.f_transformed_history_count < (a_dst ? a_dst->meta.pos : 0)) { in wuffs_deflate__decoder__decode_huffman_bmi2()
27775 …v_hdist_adjustment = ((uint32_t)(((self->private_impl.f_transformed_history_count - (a_dst ? a_dst in wuffs_deflate__decoder__decode_huffman_bmi2()
27777 …while ((((uint64_t)(io2_a_dst - iop_a_dst)) >= 266) && (((uint64_t)(io2_a_src - iop_a_src)) >= 8))… in wuffs_deflate__decoder__decode_huffman_bmi2()
27779 iop_a_src += ((63 - (v_n_bits & 63)) >> 3); in wuffs_deflate__decoder__decode_huffman_bmi2()
27781 v_table_entry = self->private_data.f_huffs[0][(v_bits & v_lmask)]; in wuffs_deflate__decoder__decode_huffman_bmi2()
27784 v_n_bits -= v_table_entry_n_bits; in wuffs_deflate__decoder__decode_huffman_bmi2()
27790 self->private_impl.f_end_of_block = true; in wuffs_deflate__decoder__decode_huffman_bmi2()
27794 v_redir_mask = ((((uint32_t)(1)) << ((v_table_entry >> 4) & 15)) - 1); in wuffs_deflate__decoder__decode_huffman_bmi2()
27795 …v_table_entry = self->private_data.f_huffs[0][((v_redir_top + (((uint32_t)((v_bits & 4294967295)))… in wuffs_deflate__decoder__decode_huffman_bmi2()
27798 v_n_bits -= v_table_entry_n_bits; in wuffs_deflate__decoder__decode_huffman_bmi2()
27804 self->private_impl.f_end_of_block = true; in wuffs_deflate__decoder__decode_huffman_bmi2()
27828 v_n_bits -= v_table_entry_n_bits; in wuffs_deflate__decoder__decode_huffman_bmi2()
27830 v_table_entry = self->private_data.f_huffs[1][(v_bits & v_dmask)]; in wuffs_deflate__decoder__decode_huffman_bmi2()
27833 v_n_bits -= v_table_entry_n_bits; in wuffs_deflate__decoder__decode_huffman_bmi2()
27836 v_redir_mask = ((((uint32_t)(1)) << ((v_table_entry >> 4) & 15)) - 1); in wuffs_deflate__decoder__decode_huffman_bmi2()
27837 …v_table_entry = self->private_data.f_huffs[1][((v_redir_top + (((uint32_t)((v_bits & 4294967295)))… in wuffs_deflate__decoder__decode_huffman_bmi2()
27840 v_n_bits -= v_table_entry_n_bits; in wuffs_deflate__decoder__decode_huffman_bmi2()
27854 v_n_bits -= v_table_entry_n_bits; in wuffs_deflate__decoder__decode_huffman_bmi2()
27856 if (((uint64_t)((v_dist_minus_1 + 1))) > ((uint64_t)(iop_a_dst - io0_a_dst))) { in wuffs_deflate__decoder__decode_huffman_bmi2()
27858 …v_hdist = ((uint32_t)((((uint64_t)((v_dist_minus_1 + 1))) - ((uint64_t)(iop_a_dst - io0_a_dst))))); in wuffs_deflate__decoder__decode_huffman_bmi2()
27860 v_length -= v_hdist; in wuffs_deflate__decoder__decode_huffman_bmi2()
27867 if (self->private_impl.f_history_index < v_hdist) { in wuffs_deflate__decoder__decode_huffman_bmi2()
27872 …ubslice_i(wuffs_base__make_slice_u8(self->private_data.f_history, 33025), ((self->private_impl.f_h… in wuffs_deflate__decoder__decode_huffman_bmi2()
27876 …_a_dst - io0_a_dst))) || (((uint64_t)(v_length)) > ((uint64_t)(io2_a_dst - iop_a_dst))) || (((uint… in wuffs_deflate__decoder__decode_huffman_bmi2()
27901 v_n_bits -= 8; in wuffs_deflate__decoder__decode_huffman_bmi2()
27903 iop_a_src--; in wuffs_deflate__decoder__decode_huffman_bmi2()
27909 self->private_impl.f_bits = ((uint32_t)((v_bits & ((((uint64_t)(1)) << v_n_bits) - 1)))); in wuffs_deflate__decoder__decode_huffman_bmi2()
27910 self->private_impl.f_n_bits = v_n_bits; in wuffs_deflate__decoder__decode_huffman_bmi2()
27911 …if ((self->private_impl.f_n_bits >= 8) || ((self->private_impl.f_bits >> self->private_impl.f_n_bi… in wuffs_deflate__decoder__decode_huffman_bmi2()
27918 a_dst->meta.wi = ((size_t)(iop_a_dst - a_dst->data.ptr)); in wuffs_deflate__decoder__decode_huffman_bmi2()
27921 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_deflate__decoder__decode_huffman_bmi2()
27927 // ‼ WUFFS MULTI-FILE SECTION -x86_bmi2
27929 // -------- func deflate.decoder.decode_huffman_fast32
27957 io0_a_dst = a_dst->data.ptr; in wuffs_deflate__decoder__decode_huffman_fast32()
27958 io1_a_dst = io0_a_dst + a_dst->meta.wi; in wuffs_deflate__decoder__decode_huffman_fast32()
27960 io2_a_dst = io0_a_dst + a_dst->data.len; in wuffs_deflate__decoder__decode_huffman_fast32()
27961 if (a_dst->meta.closed) { in wuffs_deflate__decoder__decode_huffman_fast32()
27970 io0_a_src = a_src->data.ptr; in wuffs_deflate__decoder__decode_huffman_fast32()
27971 io1_a_src = io0_a_src + a_src->meta.ri; in wuffs_deflate__decoder__decode_huffman_fast32()
27973 io2_a_src = io0_a_src + a_src->meta.wi; in wuffs_deflate__decoder__decode_huffman_fast32()
27976 …if ((self->private_impl.f_n_bits >= 8) || ((self->private_impl.f_bits >> (self->private_impl.f_n_b… in wuffs_deflate__decoder__decode_huffman_fast32()
27980 v_bits = self->private_impl.f_bits; in wuffs_deflate__decoder__decode_huffman_fast32()
27981 v_n_bits = self->private_impl.f_n_bits; in wuffs_deflate__decoder__decode_huffman_fast32()
27982 v_lmask = ((((uint32_t)(1)) << self->private_impl.f_n_huffs_bits[0]) - 1); in wuffs_deflate__decoder__decode_huffman_fast32()
27983 v_dmask = ((((uint32_t)(1)) << self->private_impl.f_n_huffs_bits[1]) - 1); in wuffs_deflate__decoder__decode_huffman_fast32()
27984 if (self->private_impl.f_transformed_history_count < (a_dst ? a_dst->meta.pos : 0)) { in wuffs_deflate__decoder__decode_huffman_fast32()
27988 …v_hdist_adjustment = ((uint32_t)(((self->private_impl.f_transformed_history_count - (a_dst ? a_dst in wuffs_deflate__decoder__decode_huffman_fast32()
27990 …while ((((uint64_t)(io2_a_dst - iop_a_dst)) >= 266) && (((uint64_t)(io2_a_src - iop_a_src)) >= 12)… in wuffs_deflate__decoder__decode_huffman_fast32()
28000 v_table_entry = self->private_data.f_huffs[0][(v_bits & v_lmask)]; in wuffs_deflate__decoder__decode_huffman_fast32()
28003 v_n_bits -= v_table_entry_n_bits; in wuffs_deflate__decoder__decode_huffman_fast32()
28009 self->private_impl.f_end_of_block = true; in wuffs_deflate__decoder__decode_huffman_fast32()
28022 v_redir_mask = ((((uint32_t)(1)) << ((v_table_entry >> 4) & 15)) - 1); in wuffs_deflate__decoder__decode_huffman_fast32()
28023 … v_table_entry = self->private_data.f_huffs[0][((v_redir_top + (v_bits & v_redir_mask)) & 1023)]; in wuffs_deflate__decoder__decode_huffman_fast32()
28026 v_n_bits -= v_table_entry_n_bits; in wuffs_deflate__decoder__decode_huffman_fast32()
28032 self->private_impl.f_end_of_block = true; in wuffs_deflate__decoder__decode_huffman_fast32()
28065 v_n_bits -= v_table_entry_n_bits; in wuffs_deflate__decoder__decode_huffman_fast32()
28077 v_table_entry = self->private_data.f_huffs[1][(v_bits & v_dmask)]; in wuffs_deflate__decoder__decode_huffman_fast32()
28080 v_n_bits -= v_table_entry_n_bits; in wuffs_deflate__decoder__decode_huffman_fast32()
28092 v_redir_mask = ((((uint32_t)(1)) << ((v_table_entry >> 4) & 15)) - 1); in wuffs_deflate__decoder__decode_huffman_fast32()
28093 … v_table_entry = self->private_data.f_huffs[1][((v_redir_top + (v_bits & v_redir_mask)) & 1023)]; in wuffs_deflate__decoder__decode_huffman_fast32()
28096 v_n_bits -= v_table_entry_n_bits; in wuffs_deflate__decoder__decode_huffman_fast32()
28119 v_n_bits -= v_table_entry_n_bits; in wuffs_deflate__decoder__decode_huffman_fast32()
28121 if (((uint64_t)((v_dist_minus_1 + 1))) > ((uint64_t)(iop_a_dst - io0_a_dst))) { in wuffs_deflate__decoder__decode_huffman_fast32()
28123 …v_hdist = ((uint32_t)((((uint64_t)((v_dist_minus_1 + 1))) - ((uint64_t)(iop_a_dst - io0_a_dst))))); in wuffs_deflate__decoder__decode_huffman_fast32()
28125 v_length -= v_hdist; in wuffs_deflate__decoder__decode_huffman_fast32()
28132 if (self->private_impl.f_history_index < v_hdist) { in wuffs_deflate__decoder__decode_huffman_fast32()
28137 …ubslice_i(wuffs_base__make_slice_u8(self->private_data.f_history, 33025), ((self->private_impl.f_h… in wuffs_deflate__decoder__decode_huffman_fast32()
28141 …_a_dst - io0_a_dst))) || (((uint64_t)(v_length)) > ((uint64_t)(io2_a_dst - iop_a_dst))) || (((uint… in wuffs_deflate__decoder__decode_huffman_fast32()
28159 v_n_bits -= 8; in wuffs_deflate__decoder__decode_huffman_fast32()
28161 iop_a_src--; in wuffs_deflate__decoder__decode_huffman_fast32()
28167 self->private_impl.f_bits = (v_bits & ((((uint32_t)(1)) << v_n_bits) - 1)); in wuffs_deflate__decoder__decode_huffman_fast32()
28168 self->private_impl.f_n_bits = v_n_bits; in wuffs_deflate__decoder__decode_huffman_fast32()
28169 …if ((self->private_impl.f_n_bits >= 8) || ((self->private_impl.f_bits >> self->private_impl.f_n_bi… in wuffs_deflate__decoder__decode_huffman_fast32()
28176 a_dst->meta.wi = ((size_t)(iop_a_dst - a_dst->data.ptr)); in wuffs_deflate__decoder__decode_huffman_fast32()
28179 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_deflate__decoder__decode_huffman_fast32()
28185 // -------- func deflate.decoder.decode_huffman_fast64
28192 return (*self->private_impl.choosy_decode_huffman_fast64)(self, a_dst, a_src); in wuffs_deflate__decoder__decode_huffman_fast64()
28221 io0_a_dst = a_dst->data.ptr; in wuffs_deflate__decoder__decode_huffman_fast64__choosy_default()
28222 io1_a_dst = io0_a_dst + a_dst->meta.wi; in wuffs_deflate__decoder__decode_huffman_fast64__choosy_default()
28224 io2_a_dst = io0_a_dst + a_dst->data.len; in wuffs_deflate__decoder__decode_huffman_fast64__choosy_default()
28225 if (a_dst->meta.closed) { in wuffs_deflate__decoder__decode_huffman_fast64__choosy_default()
28234 io0_a_src = a_src->data.ptr; in wuffs_deflate__decoder__decode_huffman_fast64__choosy_default()
28235 io1_a_src = io0_a_src + a_src->meta.ri; in wuffs_deflate__decoder__decode_huffman_fast64__choosy_default()
28237 io2_a_src = io0_a_src + a_src->meta.wi; in wuffs_deflate__decoder__decode_huffman_fast64__choosy_default()
28240 …if ((self->private_impl.f_n_bits >= 8) || ((self->private_impl.f_bits >> (self->private_impl.f_n_b… in wuffs_deflate__decoder__decode_huffman_fast64__choosy_default()
28244 v_bits = ((uint64_t)(self->private_impl.f_bits)); in wuffs_deflate__decoder__decode_huffman_fast64__choosy_default()
28245 v_n_bits = self->private_impl.f_n_bits; in wuffs_deflate__decoder__decode_huffman_fast64__choosy_default()
28246 v_lmask = ((((uint64_t)(1)) << self->private_impl.f_n_huffs_bits[0]) - 1); in wuffs_deflate__decoder__decode_huffman_fast64__choosy_default()
28247 v_dmask = ((((uint64_t)(1)) << self->private_impl.f_n_huffs_bits[1]) - 1); in wuffs_deflate__decoder__decode_huffman_fast64__choosy_default()
28248 if (self->private_impl.f_transformed_history_count < (a_dst ? a_dst->meta.pos : 0)) { in wuffs_deflate__decoder__decode_huffman_fast64__choosy_default()
28252 …v_hdist_adjustment = ((uint32_t)(((self->private_impl.f_transformed_history_count - (a_dst ? a_dst in wuffs_deflate__decoder__decode_huffman_fast64__choosy_default()
28254 …while ((((uint64_t)(io2_a_dst - iop_a_dst)) >= 266) && (((uint64_t)(io2_a_src - iop_a_src)) >= 8))… in wuffs_deflate__decoder__decode_huffman_fast64__choosy_default()
28256 iop_a_src += ((63 - (v_n_bits & 63)) >> 3); in wuffs_deflate__decoder__decode_huffman_fast64__choosy_default()
28258 v_table_entry = self->private_data.f_huffs[0][(v_bits & v_lmask)]; in wuffs_deflate__decoder__decode_huffman_fast64__choosy_default()
28261 v_n_bits -= v_table_entry_n_bits; in wuffs_deflate__decoder__decode_huffman_fast64__choosy_default()
28267 self->private_impl.f_end_of_block = true; in wuffs_deflate__decoder__decode_huffman_fast64__choosy_default()
28271 v_redir_mask = ((((uint32_t)(1)) << ((v_table_entry >> 4) & 15)) - 1); in wuffs_deflate__decoder__decode_huffman_fast64__choosy_default()
28272 …v_table_entry = self->private_data.f_huffs[0][((v_redir_top + (((uint32_t)((v_bits & 4294967295)))… in wuffs_deflate__decoder__decode_huffman_fast64__choosy_default()
28275 v_n_bits -= v_table_entry_n_bits; in wuffs_deflate__decoder__decode_huffman_fast64__choosy_default()
28281 self->private_impl.f_end_of_block = true; in wuffs_deflate__decoder__decode_huffman_fast64__choosy_default()
28305 v_n_bits -= v_table_entry_n_bits; in wuffs_deflate__decoder__decode_huffman_fast64__choosy_default()
28307 v_table_entry = self->private_data.f_huffs[1][(v_bits & v_dmask)]; in wuffs_deflate__decoder__decode_huffman_fast64__choosy_default()
28310 v_n_bits -= v_table_entry_n_bits; in wuffs_deflate__decoder__decode_huffman_fast64__choosy_default()
28313 v_redir_mask = ((((uint32_t)(1)) << ((v_table_entry >> 4) & 15)) - 1); in wuffs_deflate__decoder__decode_huffman_fast64__choosy_default()
28314 …v_table_entry = self->private_data.f_huffs[1][((v_redir_top + (((uint32_t)((v_bits & 4294967295)))… in wuffs_deflate__decoder__decode_huffman_fast64__choosy_default()
28317 v_n_bits -= v_table_entry_n_bits; in wuffs_deflate__decoder__decode_huffman_fast64__choosy_default()
28331 v_n_bits -= v_table_entry_n_bits; in wuffs_deflate__decoder__decode_huffman_fast64__choosy_default()
28333 if (((uint64_t)((v_dist_minus_1 + 1))) > ((uint64_t)(iop_a_dst - io0_a_dst))) { in wuffs_deflate__decoder__decode_huffman_fast64__choosy_default()
28335 …v_hdist = ((uint32_t)((((uint64_t)((v_dist_minus_1 + 1))) - ((uint64_t)(iop_a_dst - io0_a_dst))))); in wuffs_deflate__decoder__decode_huffman_fast64__choosy_default()
28337 v_length -= v_hdist; in wuffs_deflate__decoder__decode_huffman_fast64__choosy_default()
28344 if (self->private_impl.f_history_index < v_hdist) { in wuffs_deflate__decoder__decode_huffman_fast64__choosy_default()
28349 …ubslice_i(wuffs_base__make_slice_u8(self->private_data.f_history, 33025), ((self->private_impl.f_h… in wuffs_deflate__decoder__decode_huffman_fast64__choosy_default()
28353 …_a_dst - io0_a_dst))) || (((uint64_t)(v_length)) > ((uint64_t)(io2_a_dst - iop_a_dst))) || (((uint… in wuffs_deflate__decoder__decode_huffman_fast64__choosy_default()
28378 v_n_bits -= 8; in wuffs_deflate__decoder__decode_huffman_fast64__choosy_default()
28380 iop_a_src--; in wuffs_deflate__decoder__decode_huffman_fast64__choosy_default()
28386 self->private_impl.f_bits = ((uint32_t)((v_bits & ((((uint64_t)(1)) << v_n_bits) - 1)))); in wuffs_deflate__decoder__decode_huffman_fast64__choosy_default()
28387 self->private_impl.f_n_bits = v_n_bits; in wuffs_deflate__decoder__decode_huffman_fast64__choosy_default()
28388 …if ((self->private_impl.f_n_bits >= 8) || ((self->private_impl.f_bits >> self->private_impl.f_n_bi… in wuffs_deflate__decoder__decode_huffman_fast64__choosy_default()
28395 a_dst->meta.wi = ((size_t)(iop_a_dst - a_dst->data.ptr)); in wuffs_deflate__decoder__decode_huffman_fast64__choosy_default()
28398 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_deflate__decoder__decode_huffman_fast64__choosy_default()
28404 // -------- func deflate.decoder.decode_huffman_slow
28438 io0_a_dst = a_dst->data.ptr; in wuffs_deflate__decoder__decode_huffman_slow()
28439 io1_a_dst = io0_a_dst + a_dst->meta.wi; in wuffs_deflate__decoder__decode_huffman_slow()
28441 io2_a_dst = io0_a_dst + a_dst->data.len; in wuffs_deflate__decoder__decode_huffman_slow()
28442 if (a_dst->meta.closed) { in wuffs_deflate__decoder__decode_huffman_slow()
28451 io0_a_src = a_src->data.ptr; in wuffs_deflate__decoder__decode_huffman_slow()
28452 io1_a_src = io0_a_src + a_src->meta.ri; in wuffs_deflate__decoder__decode_huffman_slow()
28454 io2_a_src = io0_a_src + a_src->meta.wi; in wuffs_deflate__decoder__decode_huffman_slow()
28457 uint32_t coro_susp_point = self->private_impl.p_decode_huffman_slow[0]; in wuffs_deflate__decoder__decode_huffman_slow()
28459 v_bits = self->private_data.s_decode_huffman_slow[0].v_bits; in wuffs_deflate__decoder__decode_huffman_slow()
28460 v_n_bits = self->private_data.s_decode_huffman_slow[0].v_n_bits; in wuffs_deflate__decoder__decode_huffman_slow()
28461 v_table_entry = self->private_data.s_decode_huffman_slow[0].v_table_entry; in wuffs_deflate__decoder__decode_huffman_slow()
28462 v_table_entry_n_bits = self->private_data.s_decode_huffman_slow[0].v_table_entry_n_bits; in wuffs_deflate__decoder__decode_huffman_slow()
28463 v_lmask = self->private_data.s_decode_huffman_slow[0].v_lmask; in wuffs_deflate__decoder__decode_huffman_slow()
28464 v_dmask = self->private_data.s_decode_huffman_slow[0].v_dmask; in wuffs_deflate__decoder__decode_huffman_slow()
28465 v_redir_top = self->private_data.s_decode_huffman_slow[0].v_redir_top; in wuffs_deflate__decoder__decode_huffman_slow()
28466 v_redir_mask = self->private_data.s_decode_huffman_slow[0].v_redir_mask; in wuffs_deflate__decoder__decode_huffman_slow()
28467 v_length = self->private_data.s_decode_huffman_slow[0].v_length; in wuffs_deflate__decoder__decode_huffman_slow()
28468 v_dist_minus_1 = self->private_data.s_decode_huffman_slow[0].v_dist_minus_1; in wuffs_deflate__decoder__decode_huffman_slow()
28469 v_hlen = self->private_data.s_decode_huffman_slow[0].v_hlen; in wuffs_deflate__decoder__decode_huffman_slow()
28474 …if ((self->private_impl.f_n_bits >= 8) || ((self->private_impl.f_bits >> (self->private_impl.f_n_b… in wuffs_deflate__decoder__decode_huffman_slow()
28478 v_bits = self->private_impl.f_bits; in wuffs_deflate__decoder__decode_huffman_slow()
28479 v_n_bits = self->private_impl.f_n_bits; in wuffs_deflate__decoder__decode_huffman_slow()
28480 v_lmask = ((((uint32_t)(1)) << self->private_impl.f_n_huffs_bits[0]) - 1); in wuffs_deflate__decoder__decode_huffman_slow()
28481 v_dmask = ((((uint32_t)(1)) << self->private_impl.f_n_huffs_bits[1]) - 1); in wuffs_deflate__decoder__decode_huffman_slow()
28483 while ( ! (self->private_impl.p_decode_huffman_slow[0] != 0)) { in wuffs_deflate__decoder__decode_huffman_slow()
28485 v_table_entry = self->private_data.f_huffs[0][(v_bits & v_lmask)]; in wuffs_deflate__decoder__decode_huffman_slow()
28489 v_n_bits -= v_table_entry_n_bits; in wuffs_deflate__decoder__decode_huffman_slow()
28506 … self->private_data.s_decode_huffman_slow[0].scratch = ((uint8_t)(((v_table_entry >> 8) & 255))); in wuffs_deflate__decoder__decode_huffman_slow()
28512 *iop_a_dst++ = ((uint8_t)(self->private_data.s_decode_huffman_slow[0].scratch)); in wuffs_deflate__decoder__decode_huffman_slow()
28516 self->private_impl.f_end_of_block = true; in wuffs_deflate__decoder__decode_huffman_slow()
28520 v_redir_mask = ((((uint32_t)(1)) << ((v_table_entry >> 4) & 15)) - 1); in wuffs_deflate__decoder__decode_huffman_slow()
28522 … v_table_entry = self->private_data.f_huffs[0][((v_redir_top + (v_bits & v_redir_mask)) & 1023)]; in wuffs_deflate__decoder__decode_huffman_slow()
28526 v_n_bits -= v_table_entry_n_bits; in wuffs_deflate__decoder__decode_huffman_slow()
28543 … self->private_data.s_decode_huffman_slow[0].scratch = ((uint8_t)(((v_table_entry >> 8) & 255))); in wuffs_deflate__decoder__decode_huffman_slow()
28549 *iop_a_dst++ = ((uint8_t)(self->private_data.s_decode_huffman_slow[0].scratch)); in wuffs_deflate__decoder__decode_huffman_slow()
28553 self->private_impl.f_end_of_block = true; in wuffs_deflate__decoder__decode_huffman_slow()
28590 v_n_bits -= v_table_entry_n_bits; in wuffs_deflate__decoder__decode_huffman_slow()
28593 v_table_entry = self->private_data.f_huffs[1][(v_bits & v_dmask)]; in wuffs_deflate__decoder__decode_huffman_slow()
28597 v_n_bits -= v_table_entry_n_bits; in wuffs_deflate__decoder__decode_huffman_slow()
28615 v_redir_mask = ((((uint32_t)(1)) << ((v_table_entry >> 4) & 15)) - 1); in wuffs_deflate__decoder__decode_huffman_slow()
28617 … v_table_entry = self->private_data.f_huffs[1][((v_redir_top + (v_bits & v_redir_mask)) & 1023)]; in wuffs_deflate__decoder__decode_huffman_slow()
28621 v_n_bits -= v_table_entry_n_bits; in wuffs_deflate__decoder__decode_huffman_slow()
28664 v_n_bits -= v_table_entry_n_bits; in wuffs_deflate__decoder__decode_huffman_slow()
28668 if (((uint64_t)((v_dist_minus_1 + 1))) > ((uint64_t)(iop_a_dst - io0_a_dst))) { in wuffs_deflate__decoder__decode_huffman_slow()
28669 …v_hdist = ((uint32_t)((((uint64_t)((v_dist_minus_1 + 1))) - ((uint64_t)(iop_a_dst - io0_a_dst))))); in wuffs_deflate__decoder__decode_huffman_slow()
28675 …v_hdist += ((uint32_t)((((uint64_t)(self->private_impl.f_transformed_history_count - (a_dst ? a_ds… in wuffs_deflate__decoder__decode_huffman_slow()
28676 if (self->private_impl.f_history_index < v_hdist) { in wuffs_deflate__decoder__decode_huffman_slow()
28681 …ubslice_i(wuffs_base__make_slice_u8(self->private_data.f_history, 33025), ((self->private_impl.f_h… in wuffs_deflate__decoder__decode_huffman_slow()
28683 v_length -= v_n_copied; in wuffs_deflate__decoder__decode_huffman_slow()
28688 v_length -= v_hlen; in wuffs_deflate__decoder__decode_huffman_slow()
28698 v_length -= v_n_copied; in wuffs_deflate__decoder__decode_huffman_slow()
28704 self->private_impl.f_bits = v_bits; in wuffs_deflate__decoder__decode_huffman_slow()
28705 self->private_impl.f_n_bits = v_n_bits; in wuffs_deflate__decoder__decode_huffman_slow()
28706 …if ((self->private_impl.f_n_bits >= 8) || ((self->private_impl.f_bits >> (self->private_impl.f_n_b… in wuffs_deflate__decoder__decode_huffman_slow()
28712 self->private_impl.p_decode_huffman_slow[0] = 0; in wuffs_deflate__decoder__decode_huffman_slow()
28718 …self->private_impl.p_decode_huffman_slow[0] = wuffs_base__status__is_suspension(&status) ? coro_su… in wuffs_deflate__decoder__decode_huffman_slow()
28719 self->private_data.s_decode_huffman_slow[0].v_bits = v_bits; in wuffs_deflate__decoder__decode_huffman_slow()
28720 self->private_data.s_decode_huffman_slow[0].v_n_bits = v_n_bits; in wuffs_deflate__decoder__decode_huffman_slow()
28721 self->private_data.s_decode_huffman_slow[0].v_table_entry = v_table_entry; in wuffs_deflate__decoder__decode_huffman_slow()
28722 self->private_data.s_decode_huffman_slow[0].v_table_entry_n_bits = v_table_entry_n_bits; in wuffs_deflate__decoder__decode_huffman_slow()
28723 self->private_data.s_decode_huffman_slow[0].v_lmask = v_lmask; in wuffs_deflate__decoder__decode_huffman_slow()
28724 self->private_data.s_decode_huffman_slow[0].v_dmask = v_dmask; in wuffs_deflate__decoder__decode_huffman_slow()
28725 self->private_data.s_decode_huffman_slow[0].v_redir_top = v_redir_top; in wuffs_deflate__decoder__decode_huffman_slow()
28726 self->private_data.s_decode_huffman_slow[0].v_redir_mask = v_redir_mask; in wuffs_deflate__decoder__decode_huffman_slow()
28727 self->private_data.s_decode_huffman_slow[0].v_length = v_length; in wuffs_deflate__decoder__decode_huffman_slow()
28728 self->private_data.s_decode_huffman_slow[0].v_dist_minus_1 = v_dist_minus_1; in wuffs_deflate__decoder__decode_huffman_slow()
28729 self->private_data.s_decode_huffman_slow[0].v_hlen = v_hlen; in wuffs_deflate__decoder__decode_huffman_slow()
28734 a_dst->meta.wi = ((size_t)(iop_a_dst - a_dst->data.ptr)); in wuffs_deflate__decoder__decode_huffman_slow()
28737 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_deflate__decoder__decode_huffman_slow()
28747 // ---------------- Status Codes Implementations
28752 // ---------------- Private Consts
28754 // ---------------- Private Initializer Prototypes
28756 // ---------------- Private Function Prototypes
28768 // ---------------- VTables
28782 // ---------------- Initializer Implementations
28802 // The whole point of this if-check is to detect an uninitialized *self. in wuffs_lzw__decoder__initialize()
28803 // We disable the warning on GCC. Clang-5.0 does not have this warning. in wuffs_lzw__decoder__initialize()
28806 #pragma GCC diagnostic ignored "-Wmaybe-uninitialized" in wuffs_lzw__decoder__initialize()
28808 if (self->private_impl.magic != 0) { in wuffs_lzw__decoder__initialize()
28819 memset(&(self->private_impl), 0, sizeof(self->private_impl)); in wuffs_lzw__decoder__initialize()
28823 self->private_impl.magic = WUFFS_BASE__MAGIC; in wuffs_lzw__decoder__initialize()
28824 self->private_impl.vtable_for__wuffs_base__io_transformer.vtable_name = in wuffs_lzw__decoder__initialize()
28826 self->private_impl.vtable_for__wuffs_base__io_transformer.function_pointers = in wuffs_lzw__decoder__initialize()
28851 // ---------------- Function Implementations
28853 // -------- func lzw.decoder.set_quirk_enabled
28863 // -------- func lzw.decoder.set_literal_width
28872 if (self->private_impl.magic != WUFFS_BASE__MAGIC) { in wuffs_lzw__decoder__set_literal_width()
28876 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_lzw__decoder__set_literal_width()
28880 self->private_impl.f_set_literal_width_arg = (a_lw + 1); in wuffs_lzw__decoder__set_literal_width()
28884 // -------- func lzw.decoder.workbuf_len
28892 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) && in wuffs_lzw__decoder__workbuf_len()
28893 (self->private_impl.magic != WUFFS_BASE__DISABLED)) { in wuffs_lzw__decoder__workbuf_len()
28900 // -------- func lzw.decoder.transform_io
28911 if (self->private_impl.magic != WUFFS_BASE__MAGIC) { in wuffs_lzw__decoder__transform_io()
28913 (self->private_impl.magic == WUFFS_BASE__DISABLED) in wuffs_lzw__decoder__transform_io()
28918 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_lzw__decoder__transform_io()
28921 if ((self->private_impl.active_coroutine != 0) && in wuffs_lzw__decoder__transform_io()
28922 (self->private_impl.active_coroutine != 1)) { in wuffs_lzw__decoder__transform_io()
28923 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_lzw__decoder__transform_io()
28926 self->private_impl.active_coroutine = 0; in wuffs_lzw__decoder__transform_io()
28931 uint32_t coro_susp_point = self->private_impl.p_transform_io[0]; in wuffs_lzw__decoder__transform_io()
28935 self->private_impl.f_literal_width = 8; in wuffs_lzw__decoder__transform_io()
28936 if (self->private_impl.f_set_literal_width_arg > 0) { in wuffs_lzw__decoder__transform_io()
28937 self->private_impl.f_literal_width = (self->private_impl.f_set_literal_width_arg - 1); in wuffs_lzw__decoder__transform_io()
28939 self->private_impl.f_clear_code = (((uint32_t)(1)) << self->private_impl.f_literal_width); in wuffs_lzw__decoder__transform_io()
28940 self->private_impl.f_end_code = (self->private_impl.f_clear_code + 1); in wuffs_lzw__decoder__transform_io()
28941 self->private_impl.f_save_code = self->private_impl.f_end_code; in wuffs_lzw__decoder__transform_io()
28942 self->private_impl.f_prev_code = self->private_impl.f_end_code; in wuffs_lzw__decoder__transform_io()
28943 self->private_impl.f_width = (self->private_impl.f_literal_width + 1); in wuffs_lzw__decoder__transform_io()
28944 self->private_impl.f_bits = 0; in wuffs_lzw__decoder__transform_io()
28945 self->private_impl.f_n_bits = 0; in wuffs_lzw__decoder__transform_io()
28946 self->private_impl.f_output_ri = 0; in wuffs_lzw__decoder__transform_io()
28947 self->private_impl.f_output_wi = 0; in wuffs_lzw__decoder__transform_io()
28949 while (v_i < self->private_impl.f_clear_code) { in wuffs_lzw__decoder__transform_io()
28950 self->private_data.f_lm1s[v_i] = 0; in wuffs_lzw__decoder__transform_io()
28951 self->private_data.f_suffixes[v_i][0] = ((uint8_t)(v_i)); in wuffs_lzw__decoder__transform_io()
28957 if (self->private_impl.f_output_wi > 0) { in wuffs_lzw__decoder__transform_io()
28964 if (self->private_impl.f_read_from_return_value == 0) { in wuffs_lzw__decoder__transform_io()
28966 } else if (self->private_impl.f_read_from_return_value == 1) { in wuffs_lzw__decoder__transform_io()
28968 } else if (self->private_impl.f_read_from_return_value == 2) { in wuffs_lzw__decoder__transform_io()
28971 } else if (self->private_impl.f_read_from_return_value == 3) { in wuffs_lzw__decoder__transform_io()
28982 self->private_impl.p_transform_io[0] = 0; in wuffs_lzw__decoder__transform_io()
28988 …self->private_impl.p_transform_io[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_poin… in wuffs_lzw__decoder__transform_io()
28989 self->private_impl.active_coroutine = wuffs_base__status__is_suspension(&status) ? 1 : 0; in wuffs_lzw__decoder__transform_io()
28994 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_lzw__decoder__transform_io()
28999 // -------- func lzw.decoder.read_from
29026 io0_a_src = a_src->data.ptr; in wuffs_lzw__decoder__read_from()
29027 io1_a_src = io0_a_src + a_src->meta.ri; in wuffs_lzw__decoder__read_from()
29029 io2_a_src = io0_a_src + a_src->meta.wi; in wuffs_lzw__decoder__read_from()
29032 v_clear_code = self->private_impl.f_clear_code; in wuffs_lzw__decoder__read_from()
29033 v_end_code = self->private_impl.f_end_code; in wuffs_lzw__decoder__read_from()
29034 v_save_code = self->private_impl.f_save_code; in wuffs_lzw__decoder__read_from()
29035 v_prev_code = self->private_impl.f_prev_code; in wuffs_lzw__decoder__read_from()
29036 v_width = self->private_impl.f_width; in wuffs_lzw__decoder__read_from()
29037 v_bits = self->private_impl.f_bits; in wuffs_lzw__decoder__read_from()
29038 v_n_bits = self->private_impl.f_n_bits; in wuffs_lzw__decoder__read_from()
29039 v_output_wi = self->private_impl.f_output_wi; in wuffs_lzw__decoder__read_from()
29042 if (((uint64_t)(io2_a_src - iop_a_src)) >= 4) { in wuffs_lzw__decoder__read_from()
29044 iop_a_src += ((31 - v_n_bits) >> 3); in wuffs_lzw__decoder__read_from()
29046 } else if (((uint64_t)(io2_a_src - iop_a_src)) <= 0) { in wuffs_lzw__decoder__read_from()
29047 self->private_impl.f_read_from_return_value = 2; in wuffs_lzw__decoder__read_from()
29054 } else if (((uint64_t)(io2_a_src - iop_a_src)) <= 0) { in wuffs_lzw__decoder__read_from()
29055 self->private_impl.f_read_from_return_value = 2; in wuffs_lzw__decoder__read_from()
29062 self->private_impl.f_read_from_return_value = 4; in wuffs_lzw__decoder__read_from()
29070 v_n_bits -= v_width; in wuffs_lzw__decoder__read_from()
29072 self->private_data.f_output[v_output_wi] = ((uint8_t)(v_code)); in wuffs_lzw__decoder__read_from()
29075 v_lm1_a = (((uint16_t)(self->private_data.f_lm1s[v_prev_code] + 1)) & 4095); in wuffs_lzw__decoder__read_from()
29076 self->private_data.f_lm1s[v_save_code] = v_lm1_a; in wuffs_lzw__decoder__read_from()
29078 self->private_impl.f_prefixes[v_save_code] = self->private_impl.f_prefixes[v_prev_code]; in wuffs_lzw__decoder__read_from()
29079 …memcpy(self->private_data.f_suffixes[v_save_code],self->private_data.f_suffixes[v_prev_code], size… in wuffs_lzw__decoder__read_from()
29080 self->private_data.f_suffixes[v_save_code][(v_lm1_a % 8)] = ((uint8_t)(v_code)); in wuffs_lzw__decoder__read_from()
29082 self->private_impl.f_prefixes[v_save_code] = ((uint16_t)(v_prev_code)); in wuffs_lzw__decoder__read_from()
29083 self->private_data.f_suffixes[v_save_code][0] = ((uint8_t)(v_code)); in wuffs_lzw__decoder__read_from()
29093 self->private_impl.f_read_from_return_value = 0; in wuffs_lzw__decoder__read_from()
29098 v_width = (self->private_impl.f_literal_width + 1); in wuffs_lzw__decoder__read_from()
29104 v_o = ((v_output_wi + (((uint32_t)(self->private_data.f_lm1s[v_c])) & 4294967288)) & 8191); in wuffs_lzw__decoder__read_from()
29105 v_output_wi = ((v_output_wi + 1 + ((uint32_t)(self->private_data.f_lm1s[v_c]))) & 8191); in wuffs_lzw__decoder__read_from()
29106 v_steps = (((uint32_t)(self->private_data.f_lm1s[v_c])) >> 3); in wuffs_lzw__decoder__read_from()
29108 memcpy((self->private_data.f_output)+(v_o), (self->private_data.f_suffixes[v_c]), 8); in wuffs_lzw__decoder__read_from()
29112 v_steps -= 1; in wuffs_lzw__decoder__read_from()
29113 v_o = (((uint32_t)(v_o - 8)) & 8191); in wuffs_lzw__decoder__read_from()
29114 v_c = ((uint32_t)(self->private_impl.f_prefixes[v_c])); in wuffs_lzw__decoder__read_from()
29117 v_first_byte = self->private_data.f_suffixes[v_c][0]; in wuffs_lzw__decoder__read_from()
29119 self->private_data.f_output[v_output_wi] = v_first_byte; in wuffs_lzw__decoder__read_from()
29123 v_lm1_b = (((uint16_t)(self->private_data.f_lm1s[v_prev_code] + 1)) & 4095); in wuffs_lzw__decoder__read_from()
29124 self->private_data.f_lm1s[v_save_code] = v_lm1_b; in wuffs_lzw__decoder__read_from()
29126 self->private_impl.f_prefixes[v_save_code] = self->private_impl.f_prefixes[v_prev_code]; in wuffs_lzw__decoder__read_from()
29127 …memcpy(self->private_data.f_suffixes[v_save_code],self->private_data.f_suffixes[v_prev_code], size… in wuffs_lzw__decoder__read_from()
29128 self->private_data.f_suffixes[v_save_code][(v_lm1_b % 8)] = v_first_byte; in wuffs_lzw__decoder__read_from()
29130 self->private_impl.f_prefixes[v_save_code] = ((uint16_t)(v_prev_code)); in wuffs_lzw__decoder__read_from()
29131 self->private_data.f_suffixes[v_save_code][0] = ((uint8_t)(v_first_byte)); in wuffs_lzw__decoder__read_from()
29140 self->private_impl.f_read_from_return_value = 3; in wuffs_lzw__decoder__read_from()
29144 self->private_impl.f_read_from_return_value = 1; in wuffs_lzw__decoder__read_from()
29149 if (self->private_impl.f_read_from_return_value != 2) { in wuffs_lzw__decoder__read_from()
29151 v_n_bits -= 8; in wuffs_lzw__decoder__read_from()
29153 iop_a_src--; in wuffs_lzw__decoder__read_from()
29155 self->private_impl.f_read_from_return_value = 4; in wuffs_lzw__decoder__read_from()
29161 self->private_impl.f_save_code = v_save_code; in wuffs_lzw__decoder__read_from()
29162 self->private_impl.f_prev_code = v_prev_code; in wuffs_lzw__decoder__read_from()
29163 self->private_impl.f_width = v_width; in wuffs_lzw__decoder__read_from()
29164 self->private_impl.f_bits = v_bits; in wuffs_lzw__decoder__read_from()
29165 self->private_impl.f_n_bits = v_n_bits; in wuffs_lzw__decoder__read_from()
29166 self->private_impl.f_output_wi = v_output_wi; in wuffs_lzw__decoder__read_from()
29168 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_lzw__decoder__read_from()
29174 // -------- func lzw.decoder.write_to
29190 io0_a_dst = a_dst->data.ptr; in wuffs_lzw__decoder__write_to()
29191 io1_a_dst = io0_a_dst + a_dst->meta.wi; in wuffs_lzw__decoder__write_to()
29193 io2_a_dst = io0_a_dst + a_dst->data.len; in wuffs_lzw__decoder__write_to()
29194 if (a_dst->meta.closed) { in wuffs_lzw__decoder__write_to()
29199 uint32_t coro_susp_point = self->private_impl.p_write_to[0]; in wuffs_lzw__decoder__write_to()
29203 while (self->private_impl.f_output_wi > 0) { in wuffs_lzw__decoder__write_to()
29204 if (self->private_impl.f_output_ri > self->private_impl.f_output_wi) { in wuffs_lzw__decoder__write_to()
29208 v_s = wuffs_base__slice_u8__subslice_ij(wuffs_base__make_slice_u8(self->private_data.f_output, in wuffs_lzw__decoder__write_to()
29210 self->private_impl.f_output_ri, in wuffs_lzw__decoder__write_to()
29211 self->private_impl.f_output_wi); in wuffs_lzw__decoder__write_to()
29214 self->private_impl.f_output_ri = 0; in wuffs_lzw__decoder__write_to()
29215 self->private_impl.f_output_wi = 0; in wuffs_lzw__decoder__write_to()
29219 …self->private_impl.f_output_ri = (((uint32_t)(self->private_impl.f_output_ri + ((uint32_t)((v_n & … in wuffs_lzw__decoder__write_to()
29225 self->private_impl.p_write_to[0] = 0; in wuffs_lzw__decoder__write_to()
29231 …self->private_impl.p_write_to[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_point : … in wuffs_lzw__decoder__write_to()
29236 a_dst->meta.wi = ((size_t)(iop_a_dst - a_dst->data.ptr)); in wuffs_lzw__decoder__write_to()
29242 // -------- func lzw.decoder.flush
29250 if (self->private_impl.magic != WUFFS_BASE__MAGIC) { in wuffs_lzw__decoder__flush()
29256 if (self->private_impl.f_output_ri <= self->private_impl.f_output_wi) { in wuffs_lzw__decoder__flush()
29257 v_s = wuffs_base__slice_u8__subslice_ij(wuffs_base__make_slice_u8(self->private_data.f_output, in wuffs_lzw__decoder__flush()
29259 self->private_impl.f_output_ri, in wuffs_lzw__decoder__flush()
29260 self->private_impl.f_output_wi); in wuffs_lzw__decoder__flush()
29262 self->private_impl.f_output_ri = 0; in wuffs_lzw__decoder__flush()
29263 self->private_impl.f_output_wi = 0; in wuffs_lzw__decoder__flush()
29271 // ---------------- Status Codes Implementations
29281 // ---------------- Private Consts
29326 // ---------------- Private Initializer Prototypes
29328 // ---------------- Private Function Prototypes
29399 // ---------------- VTables
29435 // ---------------- Initializer Implementations
29455 // The whole point of this if-check is to detect an uninitialized *self. in wuffs_gif__decoder__initialize()
29456 // We disable the warning on GCC. Clang-5.0 does not have this warning. in wuffs_gif__decoder__initialize()
29459 #pragma GCC diagnostic ignored "-Wmaybe-uninitialized" in wuffs_gif__decoder__initialize()
29461 if (self->private_impl.magic != 0) { in wuffs_gif__decoder__initialize()
29472 memset(&(self->private_impl), 0, sizeof(self->private_impl)); in wuffs_gif__decoder__initialize()
29478 &self->private_data.f_lzw, sizeof(self->private_data.f_lzw), WUFFS_VERSION, options); in wuffs_gif__decoder__initialize()
29483 self->private_impl.magic = WUFFS_BASE__MAGIC; in wuffs_gif__decoder__initialize()
29484 self->private_impl.vtable_for__wuffs_base__image_decoder.vtable_name = in wuffs_gif__decoder__initialize()
29486 self->private_impl.vtable_for__wuffs_base__image_decoder.function_pointers = in wuffs_gif__decoder__initialize()
29511 // ---------------- Function Implementations
29513 // -------- func gif.decoder.set_quirk_enabled
29523 if (self->private_impl.magic != WUFFS_BASE__MAGIC) { in wuffs_gif__decoder__set_quirk_enabled()
29527 if ((self->private_impl.f_call_sequence == 0) && (a_quirk >= 1041635328)) { in wuffs_gif__decoder__set_quirk_enabled()
29528 a_quirk -= 1041635328; in wuffs_gif__decoder__set_quirk_enabled()
29530 self->private_impl.f_quirks[a_quirk] = a_enabled; in wuffs_gif__decoder__set_quirk_enabled()
29536 // -------- func gif.decoder.decode_image_config
29546 if (self->private_impl.magic != WUFFS_BASE__MAGIC) { in wuffs_gif__decoder__decode_image_config()
29548 (self->private_impl.magic == WUFFS_BASE__DISABLED) in wuffs_gif__decoder__decode_image_config()
29553 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_gif__decoder__decode_image_config()
29556 if ((self->private_impl.active_coroutine != 0) && in wuffs_gif__decoder__decode_image_config()
29557 (self->private_impl.active_coroutine != 1)) { in wuffs_gif__decoder__decode_image_config()
29558 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_gif__decoder__decode_image_config()
29561 self->private_impl.active_coroutine = 0; in wuffs_gif__decoder__decode_image_config()
29566 uint32_t coro_susp_point = self->private_impl.p_decode_image_config[0]; in wuffs_gif__decoder__decode_image_config()
29570 if (self->private_impl.f_call_sequence == 0) { in wuffs_gif__decoder__decode_image_config()
29581 } else if (self->private_impl.f_call_sequence != 2) { in wuffs_gif__decoder__decode_image_config()
29590 v_ffio = ! self->private_impl.f_gc_has_transparent_index; in wuffs_gif__decoder__decode_image_config()
29591 if ( ! self->private_impl.f_quirks[2]) { in wuffs_gif__decoder__decode_image_config()
29593 (self->private_impl.f_frame_rect_x0 == 0) && in wuffs_gif__decoder__decode_image_config()
29594 (self->private_impl.f_frame_rect_y0 == 0) && in wuffs_gif__decoder__decode_image_config()
29595 (self->private_impl.f_frame_rect_x1 == self->private_impl.f_width) && in wuffs_gif__decoder__decode_image_config()
29596 (self->private_impl.f_frame_rect_y1 == self->private_impl.f_height)); in wuffs_gif__decoder__decode_image_config()
29598 self->private_impl.f_black_color_u32_argb_premul = 4278190080; in wuffs_gif__decoder__decode_image_config()
29600 if (self->private_impl.f_background_color_u32_argb_premul == 77) { in wuffs_gif__decoder__decode_image_config()
29601 …self->private_impl.f_background_color_u32_argb_premul = self->private_impl.f_black_color_u32_argb_… in wuffs_gif__decoder__decode_image_config()
29608 self->private_impl.f_width, in wuffs_gif__decoder__decode_image_config()
29609 self->private_impl.f_height, in wuffs_gif__decoder__decode_image_config()
29610 self->private_impl.f_frame_config_io_position, in wuffs_gif__decoder__decode_image_config()
29613 self->private_impl.f_call_sequence = 3; in wuffs_gif__decoder__decode_image_config()
29617 self->private_impl.p_decode_image_config[0] = 0; in wuffs_gif__decoder__decode_image_config()
29623 …self->private_impl.p_decode_image_config[0] = wuffs_base__status__is_suspension(&status) ? coro_su… in wuffs_gif__decoder__decode_image_config()
29624 self->private_impl.active_coroutine = wuffs_base__status__is_suspension(&status) ? 1 : 0; in wuffs_gif__decoder__decode_image_config()
29629 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_gif__decoder__decode_image_config()
29634 // -------- func gif.decoder.set_report_metadata
29644 if (self->private_impl.magic != WUFFS_BASE__MAGIC) { in wuffs_gif__decoder__set_report_metadata()
29649 self->private_impl.f_report_metadata_iccp = a_report; in wuffs_gif__decoder__set_report_metadata()
29651 self->private_impl.f_report_metadata_xmp = a_report; in wuffs_gif__decoder__set_report_metadata()
29656 // -------- func gif.decoder.tell_me_more
29667 if (self->private_impl.magic != WUFFS_BASE__MAGIC) { in wuffs_gif__decoder__tell_me_more()
29669 (self->private_impl.magic == WUFFS_BASE__DISABLED) in wuffs_gif__decoder__tell_me_more()
29674 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_gif__decoder__tell_me_more()
29677 if ((self->private_impl.active_coroutine != 0) && in wuffs_gif__decoder__tell_me_more()
29678 (self->private_impl.active_coroutine != 2)) { in wuffs_gif__decoder__tell_me_more()
29679 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_gif__decoder__tell_me_more()
29682 self->private_impl.active_coroutine = 0; in wuffs_gif__decoder__tell_me_more()
29692 io0_a_src = a_src->data.ptr; in wuffs_gif__decoder__tell_me_more()
29693 io1_a_src = io0_a_src + a_src->meta.ri; in wuffs_gif__decoder__tell_me_more()
29695 io2_a_src = io0_a_src + a_src->meta.wi; in wuffs_gif__decoder__tell_me_more()
29698 uint32_t coro_susp_point = self->private_impl.p_tell_me_more[0]; in wuffs_gif__decoder__tell_me_more()
29702 if (self->private_impl.f_call_sequence != 1) { in wuffs_gif__decoder__tell_me_more()
29706 if (self->private_impl.f_metadata_fourcc == 0) { in wuffs_gif__decoder__tell_me_more()
29713 …if (wuffs_base__u64__sat_add((a_src ? a_src->meta.pos : 0), ((uint64_t)(iop_a_src - io0_a_src))) !… in wuffs_gif__decoder__tell_me_more()
29718 self->private_impl.f_metadata_io_position, in wuffs_gif__decoder__tell_me_more()
29726 if (((uint64_t)(io2_a_src - iop_a_src)) <= 0) { in wuffs_gif__decoder__tell_me_more()
29747 if (self->private_impl.f_metadata_fourcc == 1481461792) { in wuffs_gif__decoder__tell_me_more()
29752 …self->private_impl.f_metadata_io_position = wuffs_base__u64__sat_add(wuffs_base__u64__sat_add((a_s… in wuffs_gif__decoder__tell_me_more()
29756 self->private_impl.f_metadata_fourcc, in wuffs_gif__decoder__tell_me_more()
29758 … wuffs_base__u64__sat_add((a_src ? a_src->meta.pos : 0), ((uint64_t)(iop_a_src - io0_a_src))), in wuffs_gif__decoder__tell_me_more()
29759 self->private_impl.f_metadata_io_position); in wuffs_gif__decoder__tell_me_more()
29768 self->private_impl.f_metadata_fourcc, in wuffs_gif__decoder__tell_me_more()
29770 self->private_impl.f_metadata_io_position, in wuffs_gif__decoder__tell_me_more()
29771 self->private_impl.f_metadata_io_position); in wuffs_gif__decoder__tell_me_more()
29773 self->private_impl.f_call_sequence = 2; in wuffs_gif__decoder__tell_me_more()
29774 self->private_impl.f_metadata_fourcc = 0; in wuffs_gif__decoder__tell_me_more()
29775 self->private_impl.f_metadata_io_position = 0; in wuffs_gif__decoder__tell_me_more()
29780 self->private_impl.p_tell_me_more[0] = 0; in wuffs_gif__decoder__tell_me_more()
29786 …self->private_impl.p_tell_me_more[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_poin… in wuffs_gif__decoder__tell_me_more()
29787 self->private_impl.active_coroutine = wuffs_base__status__is_suspension(&status) ? 2 : 0; in wuffs_gif__decoder__tell_me_more()
29792 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_gif__decoder__tell_me_more()
29796 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_gif__decoder__tell_me_more()
29801 // -------- func gif.decoder.num_animation_loops
29809 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) && in wuffs_gif__decoder__num_animation_loops()
29810 (self->private_impl.magic != WUFFS_BASE__DISABLED)) { in wuffs_gif__decoder__num_animation_loops()
29814 if (self->private_impl.f_seen_num_animation_loops_value) { in wuffs_gif__decoder__num_animation_loops()
29815 return self->private_impl.f_num_animation_loops_value; in wuffs_gif__decoder__num_animation_loops()
29817 if (self->private_impl.f_num_decoded_frame_configs_value > 1) { in wuffs_gif__decoder__num_animation_loops()
29823 // -------- func gif.decoder.num_decoded_frame_configs
29831 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) && in wuffs_gif__decoder__num_decoded_frame_configs()
29832 (self->private_impl.magic != WUFFS_BASE__DISABLED)) { in wuffs_gif__decoder__num_decoded_frame_configs()
29836 return self->private_impl.f_num_decoded_frame_configs_value; in wuffs_gif__decoder__num_decoded_frame_configs()
29839 // -------- func gif.decoder.num_decoded_frames
29847 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) && in wuffs_gif__decoder__num_decoded_frames()
29848 (self->private_impl.magic != WUFFS_BASE__DISABLED)) { in wuffs_gif__decoder__num_decoded_frames()
29852 return self->private_impl.f_num_decoded_frames_value; in wuffs_gif__decoder__num_decoded_frames()
29855 // -------- func gif.decoder.frame_dirty_rect
29863 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) && in wuffs_gif__decoder__frame_dirty_rect()
29864 (self->private_impl.magic != WUFFS_BASE__DISABLED)) { in wuffs_gif__decoder__frame_dirty_rect()
29869 wuffs_base__u32__min(self->private_impl.f_frame_rect_x0, self->private_impl.f_width), in wuffs_gif__decoder__frame_dirty_rect()
29870 wuffs_base__u32__min(self->private_impl.f_frame_rect_y0, self->private_impl.f_height), in wuffs_gif__decoder__frame_dirty_rect()
29871 wuffs_base__u32__min(self->private_impl.f_frame_rect_x1, self->private_impl.f_width), in wuffs_gif__decoder__frame_dirty_rect()
29872 wuffs_base__u32__min(self->private_impl.f_dirty_max_excl_y, self->private_impl.f_height)); in wuffs_gif__decoder__frame_dirty_rect()
29875 // -------- func gif.decoder.workbuf_len
29883 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) && in wuffs_gif__decoder__workbuf_len()
29884 (self->private_impl.magic != WUFFS_BASE__DISABLED)) { in wuffs_gif__decoder__workbuf_len()
29891 // -------- func gif.decoder.restart_frame
29901 if (self->private_impl.magic != WUFFS_BASE__MAGIC) { in wuffs_gif__decoder__restart_frame()
29903 (self->private_impl.magic == WUFFS_BASE__DISABLED) in wuffs_gif__decoder__restart_frame()
29908 if (self->private_impl.f_call_sequence < 3) { in wuffs_gif__decoder__restart_frame()
29911 self->private_impl.f_delayed_num_decoded_frames = false; in wuffs_gif__decoder__restart_frame()
29912 self->private_impl.f_end_of_data = false; in wuffs_gif__decoder__restart_frame()
29913 self->private_impl.f_restarted = true; in wuffs_gif__decoder__restart_frame()
29914 self->private_impl.f_frame_config_io_position = a_io_position; in wuffs_gif__decoder__restart_frame()
29915 self->private_impl.f_num_decoded_frame_configs_value = a_index; in wuffs_gif__decoder__restart_frame()
29916 self->private_impl.f_num_decoded_frames_value = a_index; in wuffs_gif__decoder__restart_frame()
29921 // -------- func gif.decoder.decode_frame_config
29931 if (self->private_impl.magic != WUFFS_BASE__MAGIC) { in wuffs_gif__decoder__decode_frame_config()
29933 (self->private_impl.magic == WUFFS_BASE__DISABLED) in wuffs_gif__decoder__decode_frame_config()
29938 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_gif__decoder__decode_frame_config()
29941 if ((self->private_impl.active_coroutine != 0) && in wuffs_gif__decoder__decode_frame_config()
29942 (self->private_impl.active_coroutine != 3)) { in wuffs_gif__decoder__decode_frame_config()
29943 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_gif__decoder__decode_frame_config()
29946 self->private_impl.active_coroutine = 0; in wuffs_gif__decoder__decode_frame_config()
29957 io0_a_src = a_src->data.ptr; in wuffs_gif__decoder__decode_frame_config()
29958 io1_a_src = io0_a_src + a_src->meta.ri; in wuffs_gif__decoder__decode_frame_config()
29960 io2_a_src = io0_a_src + a_src->meta.wi; in wuffs_gif__decoder__decode_frame_config()
29963 uint32_t coro_susp_point = self->private_impl.p_decode_frame_config[0]; in wuffs_gif__decoder__decode_frame_config()
29965 v_background_color = self->private_data.s_decode_frame_config[0].v_background_color; in wuffs_gif__decoder__decode_frame_config()
29970 self->private_impl.f_ignore_metadata = true; in wuffs_gif__decoder__decode_frame_config()
29971 self->private_impl.f_dirty_max_excl_y = 0; in wuffs_gif__decoder__decode_frame_config()
29972 if ( ! self->private_impl.f_end_of_data) { in wuffs_gif__decoder__decode_frame_config()
29973 if (self->private_impl.f_call_sequence == 0) { in wuffs_gif__decoder__decode_frame_config()
29975 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_gif__decoder__decode_frame_config()
29980 iop_a_src = a_src->data.ptr + a_src->meta.ri; in wuffs_gif__decoder__decode_frame_config()
29985 } else if (self->private_impl.f_call_sequence != 3) { in wuffs_gif__decoder__decode_frame_config()
29986 if (self->private_impl.f_call_sequence == 4) { in wuffs_gif__decoder__decode_frame_config()
29988 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_gif__decoder__decode_frame_config()
29993 iop_a_src = a_src->data.ptr + a_src->meta.ri; in wuffs_gif__decoder__decode_frame_config()
30000 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_gif__decoder__decode_frame_config()
30005 iop_a_src = a_src->data.ptr + a_src->meta.ri; in wuffs_gif__decoder__decode_frame_config()
30012 if (self->private_impl.f_end_of_data) { in wuffs_gif__decoder__decode_frame_config()
30016 v_background_color = self->private_impl.f_black_color_u32_argb_premul; in wuffs_gif__decoder__decode_frame_config()
30017 if ( ! self->private_impl.f_gc_has_transparent_index) { in wuffs_gif__decoder__decode_frame_config()
30018 v_background_color = self->private_impl.f_background_color_u32_argb_premul; in wuffs_gif__decoder__decode_frame_config()
30019 …if (self->private_impl.f_quirks[1] && (self->private_impl.f_num_decoded_frame_configs_value == 0))… in wuffs_gif__decoder__decode_frame_config()
30020 while (((uint64_t)(io2_a_src - iop_a_src)) <= 0) { in wuffs_gif__decoder__decode_frame_config()
30026 v_background_color = self->private_impl.f_black_color_u32_argb_premul; in wuffs_gif__decoder__decode_frame_config()
30034 wuffs_base__u32__min(self->private_impl.f_frame_rect_x0, self->private_impl.f_width), in wuffs_gif__decoder__decode_frame_config()
30035 wuffs_base__u32__min(self->private_impl.f_frame_rect_y0, self->private_impl.f_height), in wuffs_gif__decoder__decode_frame_config()
30036 wuffs_base__u32__min(self->private_impl.f_frame_rect_x1, self->private_impl.f_width), in wuffs_gif__decoder__decode_frame_config()
30037 wuffs_base__u32__min(self->private_impl.f_frame_rect_y1, self->private_impl.f_height)), in wuffs_gif__decoder__decode_frame_config()
30038 ((wuffs_base__flicks)(self->private_impl.f_gc_duration)), in wuffs_gif__decoder__decode_frame_config()
30039 self->private_impl.f_num_decoded_frame_configs_value, in wuffs_gif__decoder__decode_frame_config()
30040 self->private_impl.f_frame_config_io_position, in wuffs_gif__decoder__decode_frame_config()
30041 self->private_impl.f_gc_disposal, in wuffs_gif__decoder__decode_frame_config()
30042 ! self->private_impl.f_gc_has_transparent_index, in wuffs_gif__decoder__decode_frame_config()
30046 wuffs_base__u64__sat_add_indirect(&self->private_impl.f_num_decoded_frame_configs_value, 1); in wuffs_gif__decoder__decode_frame_config()
30047 self->private_impl.f_call_sequence = 4; in wuffs_gif__decoder__decode_frame_config()
30050 self->private_impl.p_decode_frame_config[0] = 0; in wuffs_gif__decoder__decode_frame_config()
30056 …self->private_impl.p_decode_frame_config[0] = wuffs_base__status__is_suspension(&status) ? coro_su… in wuffs_gif__decoder__decode_frame_config()
30057 self->private_impl.active_coroutine = wuffs_base__status__is_suspension(&status) ? 3 : 0; in wuffs_gif__decoder__decode_frame_config()
30058 self->private_data.s_decode_frame_config[0].v_background_color = v_background_color; in wuffs_gif__decoder__decode_frame_config()
30063 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_gif__decoder__decode_frame_config()
30067 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_gif__decoder__decode_frame_config()
30072 // -------- func gif.decoder.skip_frame
30088 io0_a_src = a_src->data.ptr; in wuffs_gif__decoder__skip_frame()
30089 io1_a_src = io0_a_src + a_src->meta.ri; in wuffs_gif__decoder__skip_frame()
30091 io2_a_src = io0_a_src + a_src->meta.wi; in wuffs_gif__decoder__skip_frame()
30094 uint32_t coro_susp_point = self->private_impl.p_skip_frame[0]; in wuffs_gif__decoder__skip_frame()
30108 self->private_data.s_skip_frame[0].scratch = (((uint32_t)(3)) << (1 + (v_flags & 7))); in wuffs_gif__decoder__skip_frame()
30110 if (self->private_data.s_skip_frame[0].scratch > ((uint64_t)(io2_a_src - iop_a_src))) { in wuffs_gif__decoder__skip_frame()
30111 self->private_data.s_skip_frame[0].scratch -= ((uint64_t)(io2_a_src - iop_a_src)); in wuffs_gif__decoder__skip_frame()
30116 iop_a_src += self->private_data.s_skip_frame[0].scratch; in wuffs_gif__decoder__skip_frame()
30132 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_gif__decoder__skip_frame()
30137 iop_a_src = a_src->data.ptr + a_src->meta.ri; in wuffs_gif__decoder__skip_frame()
30142 if (self->private_impl.f_quirks[0]) { in wuffs_gif__decoder__skip_frame()
30143 self->private_impl.f_delayed_num_decoded_frames = true; in wuffs_gif__decoder__skip_frame()
30145 wuffs_base__u64__sat_add_indirect(&self->private_impl.f_num_decoded_frames_value, 1); in wuffs_gif__decoder__skip_frame()
30151 self->private_impl.p_skip_frame[0] = 0; in wuffs_gif__decoder__skip_frame()
30157 …self->private_impl.p_skip_frame[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_point … in wuffs_gif__decoder__skip_frame()
30162 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_gif__decoder__skip_frame()
30168 // -------- func gif.decoder.decode_frame
30181 if (self->private_impl.magic != WUFFS_BASE__MAGIC) { in wuffs_gif__decoder__decode_frame()
30183 (self->private_impl.magic == WUFFS_BASE__DISABLED) in wuffs_gif__decoder__decode_frame()
30188 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_gif__decoder__decode_frame()
30191 if ((self->private_impl.active_coroutine != 0) && in wuffs_gif__decoder__decode_frame()
30192 (self->private_impl.active_coroutine != 4)) { in wuffs_gif__decoder__decode_frame()
30193 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_gif__decoder__decode_frame()
30196 self->private_impl.active_coroutine = 0; in wuffs_gif__decoder__decode_frame()
30199 uint32_t coro_susp_point = self->private_impl.p_decode_frame[0]; in wuffs_gif__decoder__decode_frame()
30203 self->private_impl.f_ignore_metadata = true; in wuffs_gif__decoder__decode_frame()
30204 if (self->private_impl.f_call_sequence != 4) { in wuffs_gif__decoder__decode_frame()
30211->private_impl.f_quirks[5] && ((self->private_impl.f_frame_rect_x0 == self->private_impl.f_frame_r… in wuffs_gif__decoder__decode_frame()
30225 wuffs_base__u64__sat_add_indirect(&self->private_impl.f_num_decoded_frames_value, 1); in wuffs_gif__decoder__decode_frame()
30230 self->private_impl.p_decode_frame[0] = 0; in wuffs_gif__decoder__decode_frame()
30236 …self->private_impl.p_decode_frame[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_poin… in wuffs_gif__decoder__decode_frame()
30237 self->private_impl.active_coroutine = wuffs_base__status__is_suspension(&status) ? 4 : 0; in wuffs_gif__decoder__decode_frame()
30242 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_gif__decoder__decode_frame()
30247 // -------- func gif.decoder.reset_gc
30252 self->private_impl.f_call_sequence = 5; in wuffs_gif__decoder__reset_gc()
30253 self->private_impl.f_gc_has_transparent_index = false; in wuffs_gif__decoder__reset_gc()
30254 self->private_impl.f_gc_transparent_index = 0; in wuffs_gif__decoder__reset_gc()
30255 self->private_impl.f_gc_disposal = 0; in wuffs_gif__decoder__reset_gc()
30256 self->private_impl.f_gc_duration = 0; in wuffs_gif__decoder__reset_gc()
30260 // -------- func gif.decoder.decode_up_to_id_part1
30275 io0_a_src = a_src->data.ptr; in wuffs_gif__decoder__decode_up_to_id_part1()
30276 io1_a_src = io0_a_src + a_src->meta.ri; in wuffs_gif__decoder__decode_up_to_id_part1()
30278 io2_a_src = io0_a_src + a_src->meta.wi; in wuffs_gif__decoder__decode_up_to_id_part1()
30281 uint32_t coro_susp_point = self->private_impl.p_decode_up_to_id_part1[0]; in wuffs_gif__decoder__decode_up_to_id_part1()
30285 if ( ! self->private_impl.f_restarted) { in wuffs_gif__decoder__decode_up_to_id_part1()
30286 if (self->private_impl.f_call_sequence != 2) { in wuffs_gif__decoder__decode_up_to_id_part1()
30287 …self->private_impl.f_frame_config_io_position = wuffs_base__u64__sat_add((a_src ? a_src->meta.pos … in wuffs_gif__decoder__decode_up_to_id_part1()
30289 … else if (self->private_impl.f_frame_config_io_position != wuffs_base__u64__sat_add((a_src ? a_src in wuffs_gif__decoder__decode_up_to_id_part1()
30293 self->private_impl.f_restarted = false; in wuffs_gif__decoder__decode_up_to_id_part1()
30307 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_gif__decoder__decode_up_to_id_part1()
30312 iop_a_src = a_src->data.ptr + a_src->meta.ri; in wuffs_gif__decoder__decode_up_to_id_part1()
30318 if (self->private_impl.f_delayed_num_decoded_frames) { in wuffs_gif__decoder__decode_up_to_id_part1()
30319 self->private_impl.f_delayed_num_decoded_frames = false; in wuffs_gif__decoder__decode_up_to_id_part1()
30320 wuffs_base__u64__sat_add_indirect(&self->private_impl.f_num_decoded_frames_value, 1); in wuffs_gif__decoder__decode_up_to_id_part1()
30323 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_gif__decoder__decode_up_to_id_part1()
30328 iop_a_src = a_src->data.ptr + a_src->meta.ri; in wuffs_gif__decoder__decode_up_to_id_part1()
30335 if (self->private_impl.f_delayed_num_decoded_frames) { in wuffs_gif__decoder__decode_up_to_id_part1()
30336 self->private_impl.f_delayed_num_decoded_frames = false; in wuffs_gif__decoder__decode_up_to_id_part1()
30337 wuffs_base__u64__sat_add_indirect(&self->private_impl.f_num_decoded_frames_value, 1); in wuffs_gif__decoder__decode_up_to_id_part1()
30339 self->private_impl.f_end_of_data = true; in wuffs_gif__decoder__decode_up_to_id_part1()
30347 self->private_impl.p_decode_up_to_id_part1[0] = 0; in wuffs_gif__decoder__decode_up_to_id_part1()
30353 …self->private_impl.p_decode_up_to_id_part1[0] = wuffs_base__status__is_suspension(&status) ? coro_… in wuffs_gif__decoder__decode_up_to_id_part1()
30358 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_gif__decoder__decode_up_to_id_part1()
30364 // -------- func gif.decoder.decode_header
30380 io0_a_src = a_src->data.ptr; in wuffs_gif__decoder__decode_header()
30381 io1_a_src = io0_a_src + a_src->meta.ri; in wuffs_gif__decoder__decode_header()
30383 io2_a_src = io0_a_src + a_src->meta.wi; in wuffs_gif__decoder__decode_header()
30386 uint32_t coro_susp_point = self->private_impl.p_decode_header[0]; in wuffs_gif__decoder__decode_header()
30388 memcpy(v_c, self->private_data.s_decode_header[0].v_c, sizeof(v_c)); in wuffs_gif__decoder__decode_header()
30389 v_i = self->private_data.s_decode_header[0].v_i; in wuffs_gif__decoder__decode_header()
30418 self->private_impl.p_decode_header[0] = 0; in wuffs_gif__decoder__decode_header()
30424 …self->private_impl.p_decode_header[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_poi… in wuffs_gif__decoder__decode_header()
30425 memcpy(self->private_data.s_decode_header[0].v_c, v_c, sizeof(v_c)); in wuffs_gif__decoder__decode_header()
30426 self->private_data.s_decode_header[0].v_i = v_i; in wuffs_gif__decoder__decode_header()
30431 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_gif__decoder__decode_header()
30437 // -------- func gif.decoder.decode_lsd
30457 io0_a_src = a_src->data.ptr; in wuffs_gif__decoder__decode_lsd()
30458 io1_a_src = io0_a_src + a_src->meta.ri; in wuffs_gif__decoder__decode_lsd()
30460 io2_a_src = io0_a_src + a_src->meta.wi; in wuffs_gif__decoder__decode_lsd()
30463 uint32_t coro_susp_point = self->private_impl.p_decode_lsd[0]; in wuffs_gif__decoder__decode_lsd()
30465 v_flags = self->private_data.s_decode_lsd[0].v_flags; in wuffs_gif__decoder__decode_lsd()
30466 v_background_color_index = self->private_data.s_decode_lsd[0].v_background_color_index; in wuffs_gif__decoder__decode_lsd()
30467 v_num_palette_entries = self->private_data.s_decode_lsd[0].v_num_palette_entries; in wuffs_gif__decoder__decode_lsd()
30468 v_i = self->private_data.s_decode_lsd[0].v_i; in wuffs_gif__decoder__decode_lsd()
30476 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 2)) { in wuffs_gif__decoder__decode_lsd()
30480 self->private_data.s_decode_lsd[0].scratch = 0; in wuffs_gif__decoder__decode_lsd()
30487 uint64_t* scratch = &self->private_data.s_decode_lsd[0].scratch; in wuffs_gif__decoder__decode_lsd()
30500 self->private_impl.f_width = t_0; in wuffs_gif__decoder__decode_lsd()
30505 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 2)) { in wuffs_gif__decoder__decode_lsd()
30509 self->private_data.s_decode_lsd[0].scratch = 0; in wuffs_gif__decoder__decode_lsd()
30516 uint64_t* scratch = &self->private_data.s_decode_lsd[0].scratch; in wuffs_gif__decoder__decode_lsd()
30529 self->private_impl.f_height = t_1; in wuffs_gif__decoder__decode_lsd()
30556 self->private_impl.f_has_global_palette = ((v_flags & 128) != 0); in wuffs_gif__decoder__decode_lsd()
30557 if (self->private_impl.f_has_global_palette) { in wuffs_gif__decoder__decode_lsd()
30563 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 3)) { in wuffs_gif__decoder__decode_lsd()
30567 self->private_data.s_decode_lsd[0].scratch = 0; in wuffs_gif__decoder__decode_lsd()
30574 uint64_t* scratch = &self->private_data.s_decode_lsd[0].scratch; in wuffs_gif__decoder__decode_lsd()
30578 *scratch |= ((uint64_t)(*iop_a_src++)) << (56 - num_bits_4); in wuffs_gif__decoder__decode_lsd()
30590 self->private_data.f_palettes[0][((4 * v_i) + 0)] = ((uint8_t)(((v_argb >> 0) & 255))); in wuffs_gif__decoder__decode_lsd()
30591 self->private_data.f_palettes[0][((4 * v_i) + 1)] = ((uint8_t)(((v_argb >> 8) & 255))); in wuffs_gif__decoder__decode_lsd()
30592 self->private_data.f_palettes[0][((4 * v_i) + 2)] = ((uint8_t)(((v_argb >> 16) & 255))); in wuffs_gif__decoder__decode_lsd()
30593 self->private_data.f_palettes[0][((4 * v_i) + 3)] = ((uint8_t)(((v_argb >> 24) & 255))); in wuffs_gif__decoder__decode_lsd()
30596 if (self->private_impl.f_quirks[2]) { in wuffs_gif__decoder__decode_lsd()
30599 …self->private_impl.f_background_color_u32_argb_premul = ((((uint32_t)(self->private_data.f_palette… in wuffs_gif__decoder__decode_lsd()
30600 (((uint32_t)(self->private_data.f_palettes[0][(v_j + 1)])) << 8) | in wuffs_gif__decoder__decode_lsd()
30601 (((uint32_t)(self->private_data.f_palettes[0][(v_j + 2)])) << 16) | in wuffs_gif__decoder__decode_lsd()
30602 (((uint32_t)(self->private_data.f_palettes[0][(v_j + 3)])) << 24)); in wuffs_gif__decoder__decode_lsd()
30604 self->private_impl.f_background_color_u32_argb_premul = 77; in wuffs_gif__decoder__decode_lsd()
30609 self->private_data.f_palettes[0][((4 * v_i) + 0)] = 0; in wuffs_gif__decoder__decode_lsd()
30610 self->private_data.f_palettes[0][((4 * v_i) + 1)] = 0; in wuffs_gif__decoder__decode_lsd()
30611 self->private_data.f_palettes[0][((4 * v_i) + 2)] = 0; in wuffs_gif__decoder__decode_lsd()
30612 self->private_data.f_palettes[0][((4 * v_i) + 3)] = 255; in wuffs_gif__decoder__decode_lsd()
30618 self->private_impl.p_decode_lsd[0] = 0; in wuffs_gif__decoder__decode_lsd()
30624 …self->private_impl.p_decode_lsd[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_point … in wuffs_gif__decoder__decode_lsd()
30625 self->private_data.s_decode_lsd[0].v_flags = v_flags; in wuffs_gif__decoder__decode_lsd()
30626 self->private_data.s_decode_lsd[0].v_background_color_index = v_background_color_index; in wuffs_gif__decoder__decode_lsd()
30627 self->private_data.s_decode_lsd[0].v_num_palette_entries = v_num_palette_entries; in wuffs_gif__decoder__decode_lsd()
30628 self->private_data.s_decode_lsd[0].v_i = v_i; in wuffs_gif__decoder__decode_lsd()
30633 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_gif__decoder__decode_lsd()
30639 // -------- func gif.decoder.decode_extension
30654 io0_a_src = a_src->data.ptr; in wuffs_gif__decoder__decode_extension()
30655 io1_a_src = io0_a_src + a_src->meta.ri; in wuffs_gif__decoder__decode_extension()
30657 io2_a_src = io0_a_src + a_src->meta.wi; in wuffs_gif__decoder__decode_extension()
30660 uint32_t coro_susp_point = self->private_impl.p_decode_extension[0]; in wuffs_gif__decoder__decode_extension()
30675 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_gif__decoder__decode_extension()
30680 iop_a_src = a_src->data.ptr + a_src->meta.ri; in wuffs_gif__decoder__decode_extension()
30689 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_gif__decoder__decode_extension()
30694 iop_a_src = a_src->data.ptr + a_src->meta.ri; in wuffs_gif__decoder__decode_extension()
30703 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_gif__decoder__decode_extension()
30708 iop_a_src = a_src->data.ptr + a_src->meta.ri; in wuffs_gif__decoder__decode_extension()
30715 self->private_impl.p_decode_extension[0] = 0; in wuffs_gif__decoder__decode_extension()
30721 …self->private_impl.p_decode_extension[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_… in wuffs_gif__decoder__decode_extension()
30726 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_gif__decoder__decode_extension()
30732 // -------- func gif.decoder.skip_blocks
30747 io0_a_src = a_src->data.ptr; in wuffs_gif__decoder__skip_blocks()
30748 io1_a_src = io0_a_src + a_src->meta.ri; in wuffs_gif__decoder__skip_blocks()
30750 io2_a_src = io0_a_src + a_src->meta.wi; in wuffs_gif__decoder__skip_blocks()
30753 uint32_t coro_susp_point = self->private_impl.p_skip_blocks[0]; in wuffs_gif__decoder__skip_blocks()
30771 self->private_data.s_skip_blocks[0].scratch = ((uint32_t)(v_block_size)); in wuffs_gif__decoder__skip_blocks()
30773 if (self->private_data.s_skip_blocks[0].scratch > ((uint64_t)(io2_a_src - iop_a_src))) { in wuffs_gif__decoder__skip_blocks()
30774 self->private_data.s_skip_blocks[0].scratch -= ((uint64_t)(io2_a_src - iop_a_src)); in wuffs_gif__decoder__skip_blocks()
30779 iop_a_src += self->private_data.s_skip_blocks[0].scratch; in wuffs_gif__decoder__skip_blocks()
30783 self->private_impl.p_skip_blocks[0] = 0; in wuffs_gif__decoder__skip_blocks()
30789 …self->private_impl.p_skip_blocks[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_point… in wuffs_gif__decoder__skip_blocks()
30794 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_gif__decoder__skip_blocks()
30800 // -------- func gif.decoder.decode_ae
30820 io0_a_src = a_src->data.ptr; in wuffs_gif__decoder__decode_ae()
30821 io1_a_src = io0_a_src + a_src->meta.ri; in wuffs_gif__decoder__decode_ae()
30823 io2_a_src = io0_a_src + a_src->meta.wi; in wuffs_gif__decoder__decode_ae()
30826 uint32_t coro_susp_point = self->private_impl.p_decode_ae[0]; in wuffs_gif__decoder__decode_ae()
30828 v_block_size = self->private_data.s_decode_ae[0].v_block_size; in wuffs_gif__decoder__decode_ae()
30829 v_is_animexts = self->private_data.s_decode_ae[0].v_is_animexts; in wuffs_gif__decoder__decode_ae()
30830 v_is_netscape = self->private_data.s_decode_ae[0].v_is_netscape; in wuffs_gif__decoder__decode_ae()
30831 v_is_iccp = self->private_data.s_decode_ae[0].v_is_iccp; in wuffs_gif__decoder__decode_ae()
30832 v_is_xmp = self->private_data.s_decode_ae[0].v_is_xmp; in wuffs_gif__decoder__decode_ae()
30838 if (self->private_impl.f_metadata_fourcc != 0) { in wuffs_gif__decoder__decode_ae()
30856 self->private_data.s_decode_ae[0].scratch = ((uint32_t)(v_block_size)); in wuffs_gif__decoder__decode_ae()
30858 if (self->private_data.s_decode_ae[0].scratch > ((uint64_t)(io2_a_src - iop_a_src))) { in wuffs_gif__decoder__decode_ae()
30859 self->private_data.s_decode_ae[0].scratch -= ((uint64_t)(io2_a_src - iop_a_src)); in wuffs_gif__decoder__decode_ae()
30864 iop_a_src += self->private_data.s_decode_ae[0].scratch; in wuffs_gif__decoder__decode_ae()
30888 #pragma GCC diagnostic ignored "-Wconversion" in wuffs_gif__decoder__decode_ae()
30906 self->private_data.s_decode_ae[0].scratch = ((uint32_t)(v_block_size)); in wuffs_gif__decoder__decode_ae()
30908 if (self->private_data.s_decode_ae[0].scratch > ((uint64_t)(io2_a_src - iop_a_src))) { in wuffs_gif__decoder__decode_ae()
30909 self->private_data.s_decode_ae[0].scratch -= ((uint64_t)(io2_a_src - iop_a_src)); in wuffs_gif__decoder__decode_ae()
30914 iop_a_src += self->private_data.s_decode_ae[0].scratch; in wuffs_gif__decoder__decode_ae()
30927 self->private_data.s_decode_ae[0].scratch = 2; in wuffs_gif__decoder__decode_ae()
30929 if (self->private_data.s_decode_ae[0].scratch > ((uint64_t)(io2_a_src - iop_a_src))) { in wuffs_gif__decoder__decode_ae()
30930 self->private_data.s_decode_ae[0].scratch -= ((uint64_t)(io2_a_src - iop_a_src)); in wuffs_gif__decoder__decode_ae()
30935 iop_a_src += self->private_data.s_decode_ae[0].scratch; in wuffs_gif__decoder__decode_ae()
30941 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 2)) { in wuffs_gif__decoder__decode_ae()
30945 self->private_data.s_decode_ae[0].scratch = 0; in wuffs_gif__decoder__decode_ae()
30952 uint64_t* scratch = &self->private_data.s_decode_ae[0].scratch; in wuffs_gif__decoder__decode_ae()
30965 self->private_impl.f_num_animation_loops_value = t_4; in wuffs_gif__decoder__decode_ae()
30967 self->private_impl.f_seen_num_animation_loops_value = true; in wuffs_gif__decoder__decode_ae()
30968 …if ((0 < self->private_impl.f_num_animation_loops_value) && (self->private_impl.f_num_animation_lo… in wuffs_gif__decoder__decode_ae()
30969 self->private_impl.f_num_animation_loops_value += 1; in wuffs_gif__decoder__decode_ae()
30971 } else if (self->private_impl.f_ignore_metadata) { in wuffs_gif__decoder__decode_ae()
30972 } else if (v_is_iccp && self->private_impl.f_report_metadata_iccp) { in wuffs_gif__decoder__decode_ae()
30973 self->private_impl.f_metadata_fourcc = 1229144912; in wuffs_gif__decoder__decode_ae()
30974 …self->private_impl.f_metadata_io_position = wuffs_base__u64__sat_add((a_src ? a_src->meta.pos : 0)… in wuffs_gif__decoder__decode_ae()
30975 self->private_impl.f_call_sequence = 1; in wuffs_gif__decoder__decode_ae()
30978 } else if (v_is_xmp && self->private_impl.f_report_metadata_xmp) { in wuffs_gif__decoder__decode_ae()
30979 self->private_impl.f_metadata_fourcc = 1481461792; in wuffs_gif__decoder__decode_ae()
30980 …self->private_impl.f_metadata_io_position = wuffs_base__u64__sat_add((a_src ? a_src->meta.pos : 0)… in wuffs_gif__decoder__decode_ae()
30981 self->private_impl.f_call_sequence = 1; in wuffs_gif__decoder__decode_ae()
30989 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_gif__decoder__decode_ae()
30994 iop_a_src = a_src->data.ptr + a_src->meta.ri; in wuffs_gif__decoder__decode_ae()
31001 self->private_impl.p_decode_ae[0] = 0; in wuffs_gif__decoder__decode_ae()
31007 …self->private_impl.p_decode_ae[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_point :… in wuffs_gif__decoder__decode_ae()
31008 self->private_data.s_decode_ae[0].v_block_size = v_block_size; in wuffs_gif__decoder__decode_ae()
31009 self->private_data.s_decode_ae[0].v_is_animexts = v_is_animexts; in wuffs_gif__decoder__decode_ae()
31010 self->private_data.s_decode_ae[0].v_is_netscape = v_is_netscape; in wuffs_gif__decoder__decode_ae()
31011 self->private_data.s_decode_ae[0].v_is_iccp = v_is_iccp; in wuffs_gif__decoder__decode_ae()
31012 self->private_data.s_decode_ae[0].v_is_xmp = v_is_xmp; in wuffs_gif__decoder__decode_ae()
31017 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_gif__decoder__decode_ae()
31023 // -------- func gif.decoder.decode_gc
31040 io0_a_src = a_src->data.ptr; in wuffs_gif__decoder__decode_gc()
31041 io1_a_src = io0_a_src + a_src->meta.ri; in wuffs_gif__decoder__decode_gc()
31043 io2_a_src = io0_a_src + a_src->meta.wi; in wuffs_gif__decoder__decode_gc()
31046 uint32_t coro_susp_point = self->private_impl.p_decode_gc[0]; in wuffs_gif__decoder__decode_gc()
31072 self->private_impl.f_gc_has_transparent_index = ((v_flags & 1) != 0); in wuffs_gif__decoder__decode_gc()
31075 self->private_impl.f_gc_disposal = 1; in wuffs_gif__decoder__decode_gc()
31077 self->private_impl.f_gc_disposal = 2; in wuffs_gif__decoder__decode_gc()
31079 self->private_impl.f_gc_disposal = 0; in wuffs_gif__decoder__decode_gc()
31084 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 2)) { in wuffs_gif__decoder__decode_gc()
31088 self->private_data.s_decode_gc[0].scratch = 0; in wuffs_gif__decoder__decode_gc()
31095 uint64_t* scratch = &self->private_data.s_decode_gc[0].scratch; in wuffs_gif__decoder__decode_gc()
31110 self->private_impl.f_gc_duration = (((uint64_t)(v_gc_duration_centiseconds)) * 7056000); in wuffs_gif__decoder__decode_gc()
31118 self->private_impl.f_gc_transparent_index = t_3; in wuffs_gif__decoder__decode_gc()
31136 self->private_impl.p_decode_gc[0] = 0; in wuffs_gif__decoder__decode_gc()
31142 …self->private_impl.p_decode_gc[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_point :… in wuffs_gif__decoder__decode_gc()
31147 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_gif__decoder__decode_gc()
31153 // -------- func gif.decoder.decode_id_part0
31166 io0_a_src = a_src->data.ptr; in wuffs_gif__decoder__decode_id_part0()
31167 io1_a_src = io0_a_src + a_src->meta.ri; in wuffs_gif__decoder__decode_id_part0()
31169 io2_a_src = io0_a_src + a_src->meta.wi; in wuffs_gif__decoder__decode_id_part0()
31172 uint32_t coro_susp_point = self->private_impl.p_decode_id_part0[0]; in wuffs_gif__decoder__decode_id_part0()
31179 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 2)) { in wuffs_gif__decoder__decode_id_part0()
31183 self->private_data.s_decode_id_part0[0].scratch = 0; in wuffs_gif__decoder__decode_id_part0()
31190 uint64_t* scratch = &self->private_data.s_decode_id_part0[0].scratch; in wuffs_gif__decoder__decode_id_part0()
31203 self->private_impl.f_frame_rect_x0 = t_0; in wuffs_gif__decoder__decode_id_part0()
31208 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 2)) { in wuffs_gif__decoder__decode_id_part0()
31212 self->private_data.s_decode_id_part0[0].scratch = 0; in wuffs_gif__decoder__decode_id_part0()
31219 uint64_t* scratch = &self->private_data.s_decode_id_part0[0].scratch; in wuffs_gif__decoder__decode_id_part0()
31232 self->private_impl.f_frame_rect_y0 = t_1; in wuffs_gif__decoder__decode_id_part0()
31237 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 2)) { in wuffs_gif__decoder__decode_id_part0()
31241 self->private_data.s_decode_id_part0[0].scratch = 0; in wuffs_gif__decoder__decode_id_part0()
31248 uint64_t* scratch = &self->private_data.s_decode_id_part0[0].scratch; in wuffs_gif__decoder__decode_id_part0()
31261 self->private_impl.f_frame_rect_x1 = t_2; in wuffs_gif__decoder__decode_id_part0()
31263 self->private_impl.f_frame_rect_x1 += self->private_impl.f_frame_rect_x0; in wuffs_gif__decoder__decode_id_part0()
31267 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 2)) { in wuffs_gif__decoder__decode_id_part0()
31271 self->private_data.s_decode_id_part0[0].scratch = 0; in wuffs_gif__decoder__decode_id_part0()
31278 uint64_t* scratch = &self->private_data.s_decode_id_part0[0].scratch; in wuffs_gif__decoder__decode_id_part0()
31291 self->private_impl.f_frame_rect_y1 = t_3; in wuffs_gif__decoder__decode_id_part0()
31293 self->private_impl.f_frame_rect_y1 += self->private_impl.f_frame_rect_y0; in wuffs_gif__decoder__decode_id_part0()
31294 self->private_impl.f_dst_x = self->private_impl.f_frame_rect_x0; in wuffs_gif__decoder__decode_id_part0()
31295 self->private_impl.f_dst_y = self->private_impl.f_frame_rect_y0; in wuffs_gif__decoder__decode_id_part0()
31296 if ((self->private_impl.f_call_sequence == 0) && ! self->private_impl.f_quirks[4]) { in wuffs_gif__decoder__decode_id_part0()
31297 …self->private_impl.f_width = wuffs_base__u32__max(self->private_impl.f_width, self->private_impl.f… in wuffs_gif__decoder__decode_id_part0()
31298 …self->private_impl.f_height = wuffs_base__u32__max(self->private_impl.f_height, self->private_impl… in wuffs_gif__decoder__decode_id_part0()
31303 self->private_impl.p_decode_id_part0[0] = 0; in wuffs_gif__decoder__decode_id_part0()
31309 …self->private_impl.p_decode_id_part0[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_p… in wuffs_gif__decoder__decode_id_part0()
31314 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_gif__decoder__decode_id_part0()
31320 // -------- func gif.decoder.decode_id_part1
31343 io0_a_src = a_src->data.ptr; in wuffs_gif__decoder__decode_id_part1()
31344 io1_a_src = io0_a_src + a_src->meta.ri; in wuffs_gif__decoder__decode_id_part1()
31346 io2_a_src = io0_a_src + a_src->meta.wi; in wuffs_gif__decoder__decode_id_part1()
31349 uint32_t coro_susp_point = self->private_impl.p_decode_id_part1[0]; in wuffs_gif__decoder__decode_id_part1()
31351 v_which_palette = self->private_data.s_decode_id_part1[0].v_which_palette; in wuffs_gif__decoder__decode_id_part1()
31352 v_num_palette_entries = self->private_data.s_decode_id_part1[0].v_num_palette_entries; in wuffs_gif__decoder__decode_id_part1()
31353 v_i = self->private_data.s_decode_id_part1[0].v_i; in wuffs_gif__decoder__decode_id_part1()
31368 self->private_impl.f_interlace = 4; in wuffs_gif__decoder__decode_id_part1()
31370 self->private_impl.f_interlace = 0; in wuffs_gif__decoder__decode_id_part1()
31380 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 3)) { in wuffs_gif__decoder__decode_id_part1()
31384 self->private_data.s_decode_id_part1[0].scratch = 0; in wuffs_gif__decoder__decode_id_part1()
31391 uint64_t* scratch = &self->private_data.s_decode_id_part1[0].scratch; in wuffs_gif__decoder__decode_id_part1()
31395 *scratch |= ((uint64_t)(*iop_a_src++)) << (56 - num_bits_1); in wuffs_gif__decoder__decode_id_part1()
31407 self->private_data.f_palettes[1][((4 * v_i) + 0)] = ((uint8_t)(((v_argb >> 0) & 255))); in wuffs_gif__decoder__decode_id_part1()
31408 self->private_data.f_palettes[1][((4 * v_i) + 1)] = ((uint8_t)(((v_argb >> 8) & 255))); in wuffs_gif__decoder__decode_id_part1()
31409 self->private_data.f_palettes[1][((4 * v_i) + 2)] = ((uint8_t)(((v_argb >> 16) & 255))); in wuffs_gif__decoder__decode_id_part1()
31410 self->private_data.f_palettes[1][((4 * v_i) + 3)] = ((uint8_t)(((v_argb >> 24) & 255))); in wuffs_gif__decoder__decode_id_part1()
31414 self->private_data.f_palettes[1][((4 * v_i) + 0)] = 0; in wuffs_gif__decoder__decode_id_part1()
31415 self->private_data.f_palettes[1][((4 * v_i) + 1)] = 0; in wuffs_gif__decoder__decode_id_part1()
31416 self->private_data.f_palettes[1][((4 * v_i) + 2)] = 0; in wuffs_gif__decoder__decode_id_part1()
31417 self->private_data.f_palettes[1][((4 * v_i) + 3)] = 255; in wuffs_gif__decoder__decode_id_part1()
31420 } else if (self->private_impl.f_quirks[6] && ! self->private_impl.f_has_global_palette) { in wuffs_gif__decoder__decode_id_part1()
31423 } else if (self->private_impl.f_gc_has_transparent_index) { in wuffs_gif__decoder__decode_id_part1()
31424 …_from_slice(wuffs_base__make_slice_u8(self->private_data.f_palettes[1], 1024), wuffs_base__make_sl… in wuffs_gif__decoder__decode_id_part1()
31428 if (self->private_impl.f_gc_has_transparent_index) { in wuffs_gif__decoder__decode_id_part1()
31429 …self->private_data.f_palettes[1][((4 * ((uint32_t)(self->private_impl.f_gc_transparent_index))) + … in wuffs_gif__decoder__decode_id_part1()
31430 …self->private_data.f_palettes[1][((4 * ((uint32_t)(self->private_impl.f_gc_transparent_index))) + … in wuffs_gif__decoder__decode_id_part1()
31431 …self->private_data.f_palettes[1][((4 * ((uint32_t)(self->private_impl.f_gc_transparent_index))) + … in wuffs_gif__decoder__decode_id_part1()
31432 …self->private_data.f_palettes[1][((4 * ((uint32_t)(self->private_impl.f_gc_transparent_index))) + … in wuffs_gif__decoder__decode_id_part1()
31434 v_status = wuffs_base__pixel_swizzler__prepare(&self->private_impl.f_swizzler, in wuffs_gif__decoder__decode_id_part1()
31436 …wuffs_base__pixel_buffer__palette_or_else(a_dst, wuffs_base__make_slice_u8(self->private_data.f_ds… in wuffs_gif__decoder__decode_id_part1()
31438 wuffs_base__make_slice_u8(self->private_data.f_palettes[v_which_palette], 1024), in wuffs_gif__decoder__decode_id_part1()
31450 if (self->private_impl.f_previous_lzw_decode_ended_abruptly) { in wuffs_gif__decoder__decode_id_part1()
31451 wuffs_base__ignore_status(wuffs_lzw__decoder__initialize(&self->private_data.f_lzw, in wuffs_gif__decoder__decode_id_part1()
31467 wuffs_lzw__decoder__set_literal_width(&self->private_data.f_lzw, ((uint32_t)(v_lw))); in wuffs_gif__decoder__decode_id_part1()
31468 self->private_impl.f_previous_lzw_decode_ended_abruptly = true; in wuffs_gif__decoder__decode_id_part1()
31471 self->private_impl.p_decode_id_part1[0] = 0; in wuffs_gif__decoder__decode_id_part1()
31477 …self->private_impl.p_decode_id_part1[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_p… in wuffs_gif__decoder__decode_id_part1()
31478 self->private_data.s_decode_id_part1[0].v_which_palette = v_which_palette; in wuffs_gif__decoder__decode_id_part1()
31479 self->private_data.s_decode_id_part1[0].v_num_palette_entries = v_num_palette_entries; in wuffs_gif__decoder__decode_id_part1()
31480 self->private_data.s_decode_id_part1[0].v_i = v_i; in wuffs_gif__decoder__decode_id_part1()
31485 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_gif__decoder__decode_id_part1()
31491 // -------- func gif.decoder.decode_id_part2
31523 io0_a_src = a_src->data.ptr; in wuffs_gif__decoder__decode_id_part2()
31524 io1_a_src = io0_a_src + a_src->meta.ri; in wuffs_gif__decoder__decode_id_part2()
31526 io2_a_src = io0_a_src + a_src->meta.wi; in wuffs_gif__decoder__decode_id_part2()
31529 uint32_t coro_susp_point = self->private_impl.p_decode_id_part2[0]; in wuffs_gif__decoder__decode_id_part2()
31531 v_block_size = self->private_data.s_decode_id_part2[0].v_block_size; in wuffs_gif__decoder__decode_id_part2()
31532 v_need_block_size = self->private_data.s_decode_id_part2[0].v_need_block_size; in wuffs_gif__decoder__decode_id_part2()
31533 v_lzw_status = self->private_data.s_decode_id_part2[0].v_lzw_status; in wuffs_gif__decoder__decode_id_part2()
31556 while (((uint64_t)(io2_a_src - iop_a_src)) == 0) { in wuffs_gif__decoder__decode_id_part2()
31560 if (self->private_impl.f_compressed_ri == self->private_impl.f_compressed_wi) { in wuffs_gif__decoder__decode_id_part2()
31561 self->private_impl.f_compressed_ri = 0; in wuffs_gif__decoder__decode_id_part2()
31562 self->private_impl.f_compressed_wi = 0; in wuffs_gif__decoder__decode_id_part2()
31564 while (self->private_impl.f_compressed_wi <= 3841) { in wuffs_gif__decoder__decode_id_part2()
31565 v_n_compressed = wuffs_base__u64__min(v_block_size, ((uint64_t)(io2_a_src - iop_a_src))); in wuffs_gif__decoder__decode_id_part2()
31570 …ase__slice_u8__subslice_i(wuffs_base__make_slice_u8(self->private_data.f_compressed, 4096), self->… in wuffs_gif__decoder__decode_id_part2()
31571 … wuffs_base__u64__sat_add_indirect(&self->private_impl.f_compressed_wi, ((uint64_t)(v_n_copied))); in wuffs_gif__decoder__decode_id_part2()
31576 if (((uint64_t)(io2_a_src - iop_a_src)) <= 0) { in wuffs_gif__decoder__decode_id_part2()
31586 …if ((self->private_impl.f_compressed_ri > self->private_impl.f_compressed_wi) || (self->private_im… in wuffs_gif__decoder__decode_id_part2()
31602 … wuffs_base__slice_u8__subslice_ij(wuffs_base__make_slice_u8(self->private_data.f_compressed, in wuffs_gif__decoder__decode_id_part2()
31604 self->private_impl.f_compressed_ri, in wuffs_gif__decoder__decode_id_part2()
31605 self->private_impl.f_compressed_wi), in wuffs_gif__decoder__decode_id_part2()
31607 v_mark = ((uint64_t)(iop_v_r - io0_v_r)); in wuffs_gif__decoder__decode_id_part2()
31609 u_r.meta.ri = ((size_t)(iop_v_r - u_r.data.ptr)); in wuffs_gif__decoder__decode_id_part2()
31610 …wuffs_base__status t_1 = wuffs_lzw__decoder__transform_io(&self->private_data.f_lzw, &empty_io_buf… in wuffs_gif__decoder__decode_id_part2()
31614 …ase__u64__sat_add_indirect(&self->private_impl.f_compressed_ri, wuffs_base__io__count_since(v_mark… in wuffs_gif__decoder__decode_id_part2()
31621 v_uncompressed = wuffs_lzw__decoder__flush(&self->private_data.f_lzw); in wuffs_gif__decoder__decode_id_part2()
31630 self->private_impl.f_previous_lzw_decode_ended_abruptly = false; in wuffs_gif__decoder__decode_id_part2()
31632 self->private_data.s_decode_id_part2[0].scratch = ((uint32_t)(v_block_size)); in wuffs_gif__decoder__decode_id_part2()
31634 … if (self->private_data.s_decode_id_part2[0].scratch > ((uint64_t)(io2_a_src - iop_a_src))) { in wuffs_gif__decoder__decode_id_part2()
31635 … self->private_data.s_decode_id_part2[0].scratch -= ((uint64_t)(io2_a_src - iop_a_src)); in wuffs_gif__decoder__decode_id_part2()
31640 iop_a_src += self->private_data.s_decode_id_part2[0].scratch; in wuffs_gif__decoder__decode_id_part2()
31642 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_gif__decoder__decode_id_part2()
31647 iop_a_src = a_src->data.ptr + a_src->meta.ri; in wuffs_gif__decoder__decode_id_part2()
31658 …} else if (self->private_impl.f_quirks[3] && (self->private_impl.f_dst_y >= self->private_impl.f_f… in wuffs_gif__decoder__decode_id_part2()
31660 self->private_data.s_decode_id_part2[0].scratch = ((uint32_t)(v_block_size)); in wuffs_gif__decoder__decode_id_part2()
31662 … if (self->private_data.s_decode_id_part2[0].scratch > ((uint64_t)(io2_a_src - iop_a_src))) { in wuffs_gif__decoder__decode_id_part2()
31663 … self->private_data.s_decode_id_part2[0].scratch -= ((uint64_t)(io2_a_src - iop_a_src)); in wuffs_gif__decoder__decode_id_part2()
31668 iop_a_src += self->private_data.s_decode_id_part2[0].scratch; in wuffs_gif__decoder__decode_id_part2()
31670 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_gif__decoder__decode_id_part2()
31675 iop_a_src = a_src->data.ptr + a_src->meta.ri; in wuffs_gif__decoder__decode_id_part2()
31694 self->private_impl.f_compressed_ri = 0; in wuffs_gif__decoder__decode_id_part2()
31695 self->private_impl.f_compressed_wi = 0; in wuffs_gif__decoder__decode_id_part2()
31696->private_impl.f_dst_y < self->private_impl.f_frame_rect_y1) && (self->private_impl.f_frame_rect_x… in wuffs_gif__decoder__decode_id_part2()
31702 self->private_impl.p_decode_id_part2[0] = 0; in wuffs_gif__decoder__decode_id_part2()
31708 …self->private_impl.p_decode_id_part2[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_p… in wuffs_gif__decoder__decode_id_part2()
31709 self->private_data.s_decode_id_part2[0].v_block_size = v_block_size; in wuffs_gif__decoder__decode_id_part2()
31710 self->private_data.s_decode_id_part2[0].v_need_block_size = v_need_block_size; in wuffs_gif__decoder__decode_id_part2()
31711 self->private_data.s_decode_id_part2[0].v_lzw_status = v_lzw_status; in wuffs_gif__decoder__decode_id_part2()
31716 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_gif__decoder__decode_id_part2()
31722 // -------- func gif.decoder.copy_to_image_buffer
31751 v_width_in_bytes = (((uint64_t)(self->private_impl.f_width)) * ((uint64_t)(v_bytes_per_pixel))); in wuffs_gif__decoder__copy_to_image_buffer()
31756 if (self->private_impl.f_dst_y >= self->private_impl.f_frame_rect_y1) { in wuffs_gif__decoder__copy_to_image_buffer()
31757 if (self->private_impl.f_quirks[3]) { in wuffs_gif__decoder__copy_to_image_buffer()
31762 v_dst = wuffs_base__table_u8__row_u32(v_tab, self->private_impl.f_dst_y); in wuffs_gif__decoder__copy_to_image_buffer()
31763 if (self->private_impl.f_dst_y >= self->private_impl.f_height) { in wuffs_gif__decoder__copy_to_image_buffer()
31768 v_i = (((uint64_t)(self->private_impl.f_dst_x)) * ((uint64_t)(v_bytes_per_pixel))); in wuffs_gif__decoder__copy_to_image_buffer()
31770 v_j = (((uint64_t)(self->private_impl.f_frame_rect_x1)) * ((uint64_t)(v_bytes_per_pixel))); in wuffs_gif__decoder__copy_to_image_buffer()
31776 …izzler__swizzle_interleaved_from_slice(&self->private_impl.f_swizzler, v_dst, wuffs_base__make_sli… in wuffs_gif__decoder__copy_to_image_buffer()
31778 … wuffs_base__u32__sat_add_indirect(&self->private_impl.f_dst_x, ((uint32_t)((v_n & 4294967295)))); in wuffs_gif__decoder__copy_to_image_buffer()
31779 …self->private_impl.f_dirty_max_excl_y = wuffs_base__u32__max(self->private_impl.f_dirty_max_excl_y… in wuffs_gif__decoder__copy_to_image_buffer()
31781 if (self->private_impl.f_frame_rect_x1 <= self->private_impl.f_dst_x) { in wuffs_gif__decoder__copy_to_image_buffer()
31782 self->private_impl.f_dst_x = self->private_impl.f_frame_rect_x0; in wuffs_gif__decoder__copy_to_image_buffer()
31783 if (self->private_impl.f_interlace == 0) { in wuffs_gif__decoder__copy_to_image_buffer()
31784 wuffs_base__u32__sat_add_indirect(&self->private_impl.f_dst_y, 1); in wuffs_gif__decoder__copy_to_image_buffer()
31787 …if ((self->private_impl.f_num_decoded_frames_value == 0) && ! self->private_impl.f_gc_has_transpa… in wuffs_gif__decoder__copy_to_image_buffer()
31788 v_replicate_src = wuffs_base__table_u8__row_u32(v_tab, self->private_impl.f_dst_y); in wuffs_gif__decoder__copy_to_image_buffer()
31789 v_replicate_y0 = wuffs_base__u32__sat_add(self->private_impl.f_dst_y, 1); in wuffs_gif__decoder__copy_to_image_buffer()
31790 …plicate_y1 = wuffs_base__u32__sat_add(self->private_impl.f_dst_y, ((uint32_t)(WUFFS_GIF__INTERLACE… in wuffs_gif__decoder__copy_to_image_buffer()
31791 v_replicate_y1 = wuffs_base__u32__min(v_replicate_y1, self->private_impl.f_frame_rect_y1); in wuffs_gif__decoder__copy_to_image_buffer()
31797 …self->private_impl.f_dirty_max_excl_y = wuffs_base__u32__max(self->private_impl.f_dirty_max_excl_y… in wuffs_gif__decoder__copy_to_image_buffer()
31799 …wuffs_base__u32__sat_add_indirect(&self->private_impl.f_dst_y, ((uint32_t)(WUFFS_GIF__INTERLACE_DE… in wuffs_gif__decoder__copy_to_image_buffer()
31800 …while ((self->private_impl.f_interlace > 0) && (self->private_impl.f_dst_y >= self->private_impl.f… in wuffs_gif__decoder__copy_to_image_buffer()
31803 #pragma GCC diagnostic ignored "-Wconversion" in wuffs_gif__decoder__copy_to_image_buffer()
31805 self->private_impl.f_interlace -= 1; in wuffs_gif__decoder__copy_to_image_buffer()
31809 …self->private_impl.f_dst_y = wuffs_base__u32__sat_add(self->private_impl.f_frame_rect_y0, WUFFS_GI… in wuffs_gif__decoder__copy_to_image_buffer()
31818 v_n = ((uint64_t)((self->private_impl.f_frame_rect_x1 - self->private_impl.f_dst_x))); in wuffs_gif__decoder__copy_to_image_buffer()
31819 v_n = wuffs_base__u64__min(v_n, (((uint64_t)(a_src.len)) - v_src_ri)); in wuffs_gif__decoder__copy_to_image_buffer()
31821 … wuffs_base__u32__sat_add_indirect(&self->private_impl.f_dst_x, ((uint32_t)((v_n & 4294967295)))); in wuffs_gif__decoder__copy_to_image_buffer()
31822 if (self->private_impl.f_frame_rect_x1 <= self->private_impl.f_dst_x) { in wuffs_gif__decoder__copy_to_image_buffer()
31823 self->private_impl.f_dst_x = self->private_impl.f_frame_rect_x0; in wuffs_gif__decoder__copy_to_image_buffer()
31824 …wuffs_base__u32__sat_add_indirect(&self->private_impl.f_dst_y, ((uint32_t)(WUFFS_GIF__INTERLACE_DE… in wuffs_gif__decoder__copy_to_image_buffer()
31825 …while ((self->private_impl.f_interlace > 0) && (self->private_impl.f_dst_y >= self->private_impl.f… in wuffs_gif__decoder__copy_to_image_buffer()
31828 #pragma GCC diagnostic ignored "-Wconversion" in wuffs_gif__decoder__copy_to_image_buffer()
31830 self->private_impl.f_interlace -= 1; in wuffs_gif__decoder__copy_to_image_buffer()
31834 …self->private_impl.f_dst_y = wuffs_base__u32__sat_add(self->private_impl.f_frame_rect_y0, WUFFS_GI… in wuffs_gif__decoder__copy_to_image_buffer()
31851 // ---------------- Status Codes Implementations
31858 // ---------------- Private Consts
31860 // ---------------- Private Initializer Prototypes
31862 // ---------------- Private Function Prototypes
31864 // ---------------- VTables
31878 // ---------------- Initializer Implementations
31898 // The whole point of this if-check is to detect an uninitialized *self. in wuffs_gzip__decoder__initialize()
31899 // We disable the warning on GCC. Clang-5.0 does not have this warning. in wuffs_gzip__decoder__initialize()
31902 #pragma GCC diagnostic ignored "-Wmaybe-uninitialized" in wuffs_gzip__decoder__initialize()
31904 if (self->private_impl.magic != 0) { in wuffs_gzip__decoder__initialize()
31915 memset(&(self->private_impl), 0, sizeof(self->private_impl)); in wuffs_gzip__decoder__initialize()
31921 … &self->private_data.f_checksum, sizeof(self->private_data.f_checksum), WUFFS_VERSION, options); in wuffs_gzip__decoder__initialize()
31928 &self->private_data.f_flate, sizeof(self->private_data.f_flate), WUFFS_VERSION, options); in wuffs_gzip__decoder__initialize()
31933 self->private_impl.magic = WUFFS_BASE__MAGIC; in wuffs_gzip__decoder__initialize()
31934 self->private_impl.vtable_for__wuffs_base__io_transformer.vtable_name = in wuffs_gzip__decoder__initialize()
31936 self->private_impl.vtable_for__wuffs_base__io_transformer.function_pointers = in wuffs_gzip__decoder__initialize()
31961 // ---------------- Function Implementations
31963 // -------- func gzip.decoder.set_quirk_enabled
31973 if (self->private_impl.magic != WUFFS_BASE__MAGIC) { in wuffs_gzip__decoder__set_quirk_enabled()
31978 self->private_impl.f_ignore_checksum = a_enabled; in wuffs_gzip__decoder__set_quirk_enabled()
31983 // -------- func gzip.decoder.workbuf_len
31991 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) && in wuffs_gzip__decoder__workbuf_len()
31992 (self->private_impl.magic != WUFFS_BASE__DISABLED)) { in wuffs_gzip__decoder__workbuf_len()
31999 // -------- func gzip.decoder.transform_io
32010 if (self->private_impl.magic != WUFFS_BASE__MAGIC) { in wuffs_gzip__decoder__transform_io()
32012 (self->private_impl.magic == WUFFS_BASE__DISABLED) in wuffs_gzip__decoder__transform_io()
32017 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_gzip__decoder__transform_io()
32020 if ((self->private_impl.active_coroutine != 0) && in wuffs_gzip__decoder__transform_io()
32021 (self->private_impl.active_coroutine != 1)) { in wuffs_gzip__decoder__transform_io()
32022 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_gzip__decoder__transform_io()
32025 self->private_impl.active_coroutine = 0; in wuffs_gzip__decoder__transform_io()
32043 io0_a_dst = a_dst->data.ptr; in wuffs_gzip__decoder__transform_io()
32044 io1_a_dst = io0_a_dst + a_dst->meta.wi; in wuffs_gzip__decoder__transform_io()
32046 io2_a_dst = io0_a_dst + a_dst->data.len; in wuffs_gzip__decoder__transform_io()
32047 if (a_dst->meta.closed) { in wuffs_gzip__decoder__transform_io()
32056 io0_a_src = a_src->data.ptr; in wuffs_gzip__decoder__transform_io()
32057 io1_a_src = io0_a_src + a_src->meta.ri; in wuffs_gzip__decoder__transform_io()
32059 io2_a_src = io0_a_src + a_src->meta.wi; in wuffs_gzip__decoder__transform_io()
32062 uint32_t coro_susp_point = self->private_impl.p_transform_io[0]; in wuffs_gzip__decoder__transform_io()
32064 v_flags = self->private_data.s_transform_io[0].v_flags; in wuffs_gzip__decoder__transform_io()
32065 v_checksum_got = self->private_data.s_transform_io[0].v_checksum_got; in wuffs_gzip__decoder__transform_io()
32066 v_decoded_length_got = self->private_data.s_transform_io[0].v_decoded_length_got; in wuffs_gzip__decoder__transform_io()
32067 v_checksum_want = self->private_data.s_transform_io[0].v_checksum_want; in wuffs_gzip__decoder__transform_io()
32120 self->private_data.s_transform_io[0].scratch = 6; in wuffs_gzip__decoder__transform_io()
32122 if (self->private_data.s_transform_io[0].scratch > ((uint64_t)(io2_a_src - iop_a_src))) { in wuffs_gzip__decoder__transform_io()
32123 self->private_data.s_transform_io[0].scratch -= ((uint64_t)(io2_a_src - iop_a_src)); in wuffs_gzip__decoder__transform_io()
32128 iop_a_src += self->private_data.s_transform_io[0].scratch; in wuffs_gzip__decoder__transform_io()
32133 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 2)) { in wuffs_gzip__decoder__transform_io()
32137 self->private_data.s_transform_io[0].scratch = 0; in wuffs_gzip__decoder__transform_io()
32144 uint64_t* scratch = &self->private_data.s_transform_io[0].scratch; in wuffs_gzip__decoder__transform_io()
32159 self->private_data.s_transform_io[0].scratch = ((uint32_t)(v_xlen)); in wuffs_gzip__decoder__transform_io()
32161 if (self->private_data.s_transform_io[0].scratch > ((uint64_t)(io2_a_src - iop_a_src))) { in wuffs_gzip__decoder__transform_io()
32162 self->private_data.s_transform_io[0].scratch -= ((uint64_t)(io2_a_src - iop_a_src)); in wuffs_gzip__decoder__transform_io()
32167 iop_a_src += self->private_data.s_transform_io[0].scratch; in wuffs_gzip__decoder__transform_io()
32204 self->private_data.s_transform_io[0].scratch = 2; in wuffs_gzip__decoder__transform_io()
32206 if (self->private_data.s_transform_io[0].scratch > ((uint64_t)(io2_a_src - iop_a_src))) { in wuffs_gzip__decoder__transform_io()
32207 self->private_data.s_transform_io[0].scratch -= ((uint64_t)(io2_a_src - iop_a_src)); in wuffs_gzip__decoder__transform_io()
32212 iop_a_src += self->private_data.s_transform_io[0].scratch; in wuffs_gzip__decoder__transform_io()
32219 v_mark = ((uint64_t)(iop_a_dst - io0_a_dst)); in wuffs_gzip__decoder__transform_io()
32222 a_dst->meta.wi = ((size_t)(iop_a_dst - a_dst->data.ptr)); in wuffs_gzip__decoder__transform_io()
32225 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_gzip__decoder__transform_io()
32227 …wuffs_base__status t_7 = wuffs_deflate__decoder__transform_io(&self->private_data.f_flate, a_dst, … in wuffs_gzip__decoder__transform_io()
32230 iop_a_dst = a_dst->data.ptr + a_dst->meta.wi; in wuffs_gzip__decoder__transform_io()
32233 iop_a_src = a_src->data.ptr + a_src->meta.ri; in wuffs_gzip__decoder__transform_io()
32236 if ( ! self->private_impl.f_ignore_checksum) { in wuffs_gzip__decoder__transform_io()
32237 …crc32__ieee_hasher__update_u32(&self->private_data.f_checksum, wuffs_base__io__since(v_mark, ((uin… in wuffs_gzip__decoder__transform_io()
32238 …t += ((uint32_t)((wuffs_base__io__count_since(v_mark, ((uint64_t)(iop_a_dst - io0_a_dst))) & 42949… in wuffs_gzip__decoder__transform_io()
32250 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 4)) { in wuffs_gzip__decoder__transform_io()
32254 self->private_data.s_transform_io[0].scratch = 0; in wuffs_gzip__decoder__transform_io()
32261 uint64_t* scratch = &self->private_data.s_transform_io[0].scratch; in wuffs_gzip__decoder__transform_io()
32279 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 4)) { in wuffs_gzip__decoder__transform_io()
32283 self->private_data.s_transform_io[0].scratch = 0; in wuffs_gzip__decoder__transform_io()
32290 uint64_t* scratch = &self->private_data.s_transform_io[0].scratch; in wuffs_gzip__decoder__transform_io()
32305 …if ( ! self->private_impl.f_ignore_checksum && ((v_checksum_got != v_checksum_want) || (v_decoded_… in wuffs_gzip__decoder__transform_io()
32311 self->private_impl.p_transform_io[0] = 0; in wuffs_gzip__decoder__transform_io()
32317 …self->private_impl.p_transform_io[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_poin… in wuffs_gzip__decoder__transform_io()
32318 self->private_impl.active_coroutine = wuffs_base__status__is_suspension(&status) ? 1 : 0; in wuffs_gzip__decoder__transform_io()
32319 self->private_data.s_transform_io[0].v_flags = v_flags; in wuffs_gzip__decoder__transform_io()
32320 self->private_data.s_transform_io[0].v_checksum_got = v_checksum_got; in wuffs_gzip__decoder__transform_io()
32321 self->private_data.s_transform_io[0].v_decoded_length_got = v_decoded_length_got; in wuffs_gzip__decoder__transform_io()
32322 self->private_data.s_transform_io[0].v_checksum_want = v_checksum_want; in wuffs_gzip__decoder__transform_io()
32327 a_dst->meta.wi = ((size_t)(iop_a_dst - a_dst->data.ptr)); in wuffs_gzip__decoder__transform_io()
32330 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_gzip__decoder__transform_io()
32334 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_gzip__decoder__transform_io()
32343 // ---------------- Status Codes Implementations
32346 const char wuffs_json__error__bad_utf_8[] = "#json: bad UTF-8";
32347 const char wuffs_json__error__bad_backslash_escape[] = "#json: bad backslash-escape";
32349 const char wuffs_json__error__bad_new_line_in_a_string[] = "#json: bad new-line in a string";
32355 // ---------------- Private Consts
32595 // ---------------- Private Initializer Prototypes
32597 // ---------------- Private Function Prototypes
32634 // ---------------- VTables
32648 // ---------------- Initializer Implementations
32668 // The whole point of this if-check is to detect an uninitialized *self. in wuffs_json__decoder__initialize()
32669 // We disable the warning on GCC. Clang-5.0 does not have this warning. in wuffs_json__decoder__initialize()
32672 #pragma GCC diagnostic ignored "-Wmaybe-uninitialized" in wuffs_json__decoder__initialize()
32674 if (self->private_impl.magic != 0) { in wuffs_json__decoder__initialize()
32685 memset(&(self->private_impl), 0, sizeof(self->private_impl)); in wuffs_json__decoder__initialize()
32689 self->private_impl.magic = WUFFS_BASE__MAGIC; in wuffs_json__decoder__initialize()
32690 self->private_impl.vtable_for__wuffs_base__token_decoder.vtable_name = in wuffs_json__decoder__initialize()
32692 self->private_impl.vtable_for__wuffs_base__token_decoder.function_pointers = in wuffs_json__decoder__initialize()
32717 // ---------------- Function Implementations
32719 // -------- func json.decoder.set_quirk_enabled
32729 if (self->private_impl.magic != WUFFS_BASE__MAGIC) { in wuffs_json__decoder__set_quirk_enabled()
32734 a_quirk -= 1225364480; in wuffs_json__decoder__set_quirk_enabled()
32736 self->private_impl.f_quirks[a_quirk] = a_enabled; in wuffs_json__decoder__set_quirk_enabled()
32742 // -------- func json.decoder.workbuf_len
32750 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) && in wuffs_json__decoder__workbuf_len()
32751 (self->private_impl.magic != WUFFS_BASE__DISABLED)) { in wuffs_json__decoder__workbuf_len()
32758 // -------- func json.decoder.decode_tokens
32769 if (self->private_impl.magic != WUFFS_BASE__MAGIC) { in wuffs_json__decoder__decode_tokens()
32771 (self->private_impl.magic == WUFFS_BASE__DISABLED) in wuffs_json__decoder__decode_tokens()
32776 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_json__decoder__decode_tokens()
32779 if ((self->private_impl.active_coroutine != 0) && in wuffs_json__decoder__decode_tokens()
32780 (self->private_impl.active_coroutine != 1)) { in wuffs_json__decoder__decode_tokens()
32781 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_json__decoder__decode_tokens()
32784 self->private_impl.active_coroutine = 0; in wuffs_json__decoder__decode_tokens()
32820 io0_a_dst = a_dst->data.ptr; in wuffs_json__decoder__decode_tokens()
32821 io1_a_dst = io0_a_dst + a_dst->meta.wi; in wuffs_json__decoder__decode_tokens()
32823 io2_a_dst = io0_a_dst + a_dst->data.len; in wuffs_json__decoder__decode_tokens()
32824 if (a_dst->meta.closed) { in wuffs_json__decoder__decode_tokens()
32833 io0_a_src = a_src->data.ptr; in wuffs_json__decoder__decode_tokens()
32834 io1_a_src = io0_a_src + a_src->meta.ri; in wuffs_json__decoder__decode_tokens()
32836 io2_a_src = io0_a_src + a_src->meta.wi; in wuffs_json__decoder__decode_tokens()
32839 uint32_t coro_susp_point = self->private_impl.p_decode_tokens[0]; in wuffs_json__decoder__decode_tokens()
32841 v_depth = self->private_data.s_decode_tokens[0].v_depth; in wuffs_json__decoder__decode_tokens()
32842 v_expect = self->private_data.s_decode_tokens[0].v_expect; in wuffs_json__decoder__decode_tokens()
32843 v_expect_after_value = self->private_data.s_decode_tokens[0].v_expect_after_value; in wuffs_json__decoder__decode_tokens()
32848 if (self->private_impl.f_end_of_data) { in wuffs_json__decoder__decode_tokens()
32852 if (self->private_impl.f_quirks[18]) { in wuffs_json__decoder__decode_tokens()
32853 …if (self->private_impl.f_quirks[11] || self->private_impl.f_quirks[12] || self->private_impl.f_qui… in wuffs_json__decoder__decode_tokens()
32858 if (self->private_impl.f_quirks[15] || self->private_impl.f_quirks[16]) { in wuffs_json__decoder__decode_tokens()
32860 a_dst->meta.wi = ((size_t)(iop_a_dst - a_dst->data.ptr)); in wuffs_json__decoder__decode_tokens()
32863 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_json__decoder__decode_tokens()
32868 iop_a_dst = a_dst->data.ptr + a_dst->meta.wi; in wuffs_json__decoder__decode_tokens()
32871 iop_a_src = a_src->data.ptr + a_src->meta.ri; in wuffs_json__decoder__decode_tokens()
32881 if (((uint64_t)(io2_a_dst - iop_a_dst)) <= 0) { in wuffs_json__decoder__decode_tokens()
32890 if (((uint64_t)(io2_a_src - iop_a_src)) <= 0) { in wuffs_json__decoder__decode_tokens()
32897 if (a_src && a_src->meta.closed) { in wuffs_json__decoder__decode_tokens()
32927 if (((uint64_t)(io2_a_dst - iop_a_dst)) <= 0) { in wuffs_json__decoder__decode_tokens()
32943 if (((uint64_t)(io2_a_dst - iop_a_dst)) <= 0) { in wuffs_json__decoder__decode_tokens()
32951 if (((uint64_t)(io2_a_src - iop_a_src)) <= 0) { in wuffs_json__decoder__decode_tokens()
32959 if (a_src && a_src->meta.closed) { in wuffs_json__decoder__decode_tokens()
32968 while (((uint64_t)(io2_a_src - iop_a_src)) > 4) { in wuffs_json__decoder__decode_tokens()
33018 if (((uint64_t)(io2_a_dst - iop_a_dst)) <= 0) { in wuffs_json__decoder__decode_tokens()
33022 if (((uint64_t)(io2_a_src - iop_a_src)) < 2) { in wuffs_json__decoder__decode_tokens()
33023 if (a_src && a_src->meta.closed) { in wuffs_json__decoder__decode_tokens()
33043 … if (self->private_impl.f_quirks[WUFFS_JSON__LUT_QUIRKY_BACKSLASHES_QUIRKS[(v_backslash & 7)]]) { in wuffs_json__decoder__decode_tokens()
33052 if (((uint64_t)(io2_a_src - iop_a_src)) < 6) { in wuffs_json__decoder__decode_tokens()
33053 if (a_src && a_src->meta.closed) { in wuffs_json__decoder__decode_tokens()
33088 if (((uint64_t)(io2_a_src - iop_a_src)) < 12) { in wuffs_json__decoder__decode_tokens()
33089 if (a_src && a_src->meta.closed) { in wuffs_json__decoder__decode_tokens()
33090 if (self->private_impl.f_quirks[20]) { in wuffs_json__decoder__decode_tokens()
33114 v_uni4_high_surrogate = (65536 + ((v_uni4_value - 55296) << 10)); in wuffs_json__decoder__decode_tokens()
33132 v_uni4_value -= 56320; in wuffs_json__decoder__decode_tokens()
33141 if (self->private_impl.f_quirks[20]) { in wuffs_json__decoder__decode_tokens()
33142 if (((uint64_t)(io2_a_src - iop_a_src)) < 6) { in wuffs_json__decoder__decode_tokens()
33153 } else if ((v_c == 85) && self->private_impl.f_quirks[2]) { in wuffs_json__decoder__decode_tokens()
33154 if (((uint64_t)(io2_a_src - iop_a_src)) < 10) { in wuffs_json__decoder__decode_tokens()
33155 if (a_src && a_src->meta.closed) { in wuffs_json__decoder__decode_tokens()
33200 } else if (self->private_impl.f_quirks[20]) { in wuffs_json__decoder__decode_tokens()
33208 } else if ((v_c == 120) && self->private_impl.f_quirks[9]) { in wuffs_json__decoder__decode_tokens()
33209 if (((uint64_t)(io2_a_src - iop_a_src)) < 4) { in wuffs_json__decoder__decode_tokens()
33210 if (a_src && a_src->meta.closed) { in wuffs_json__decoder__decode_tokens()
33242 if (((uint64_t)(io2_a_src - iop_a_src)) < 2) { in wuffs_json__decoder__decode_tokens()
33249 if (((uint64_t)(io2_a_dst - iop_a_dst)) <= 0) { in wuffs_json__decoder__decode_tokens()
33253 if (a_src && a_src->meta.closed) { in wuffs_json__decoder__decode_tokens()
33254 if (self->private_impl.f_quirks[20]) { in wuffs_json__decoder__decode_tokens()
33287 if (((uint64_t)(io2_a_src - iop_a_src)) < 3) { in wuffs_json__decoder__decode_tokens()
33294 if (((uint64_t)(io2_a_dst - iop_a_dst)) <= 0) { in wuffs_json__decoder__decode_tokens()
33298 if (a_src && a_src->meta.closed) { in wuffs_json__decoder__decode_tokens()
33299 if (self->private_impl.f_quirks[20]) { in wuffs_json__decoder__decode_tokens()
33334 if (((uint64_t)(io2_a_src - iop_a_src)) < 4) { in wuffs_json__decoder__decode_tokens()
33341 if (((uint64_t)(io2_a_dst - iop_a_dst)) <= 0) { in wuffs_json__decoder__decode_tokens()
33345 if (a_src && a_src->meta.closed) { in wuffs_json__decoder__decode_tokens()
33346 if (self->private_impl.f_quirks[20]) { in wuffs_json__decoder__decode_tokens()
33390 if (((uint64_t)(io2_a_dst - iop_a_dst)) <= 0) { in wuffs_json__decoder__decode_tokens()
33395 if (self->private_impl.f_quirks[0]) { in wuffs_json__decoder__decode_tokens()
33410 if (self->private_impl.f_quirks[20]) { in wuffs_json__decoder__decode_tokens()
33425 if (((uint64_t)(io2_a_src - iop_a_src)) <= 0) { in wuffs_json__decoder__decode_tokens()
33426 if (a_src && a_src->meta.closed) { in wuffs_json__decoder__decode_tokens()
33434 if (((uint64_t)(io2_a_dst - iop_a_dst)) <= 0) { in wuffs_json__decoder__decode_tokens()
33457 if (self->private_impl.f_quirks[13]) { in wuffs_json__decoder__decode_tokens()
33463 if (self->private_impl.f_quirks[13]) { in wuffs_json__decoder__decode_tokens()
33480 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_json__decoder__decode_tokens()
33484 iop_a_src = a_src->data.ptr + a_src->meta.ri; in wuffs_json__decoder__decode_tokens()
33499 v_number_length -= 1; in wuffs_json__decoder__decode_tokens()
33501 iop_a_src--; in wuffs_json__decoder__decode_tokens()
33508 if (self->private_impl.f_quirks[14]) { in wuffs_json__decoder__decode_tokens()
33510 a_dst->meta.wi = ((size_t)(iop_a_dst - a_dst->data.ptr)); in wuffs_json__decoder__decode_tokens()
33513 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_json__decoder__decode_tokens()
33518 iop_a_dst = a_dst->data.ptr + a_dst->meta.wi; in wuffs_json__decoder__decode_tokens()
33521 iop_a_src = a_src->data.ptr + a_src->meta.ri; in wuffs_json__decoder__decode_tokens()
33536 while (((uint64_t)(io2_a_dst - iop_a_dst)) <= 0) { in wuffs_json__decoder__decode_tokens()
33558 self->private_data.f_stack[v_stack_byte] |= (((uint32_t)(1)) << v_stack_bit); in wuffs_json__decoder__decode_tokens()
33575 v_depth -= 1; in wuffs_json__decoder__decode_tokens()
33576 v_stack_byte = ((v_depth - 1) / 32); in wuffs_json__decoder__decode_tokens()
33577 v_stack_bit = ((v_depth - 1) & 31); in wuffs_json__decoder__decode_tokens()
33578 if (0 == (self->private_data.f_stack[v_stack_byte] & (((uint32_t)(1)) << v_stack_bit))) { in wuffs_json__decoder__decode_tokens()
33606 … self->private_data.f_stack[v_stack_byte] &= (4294967295 ^ (((uint32_t)(1)) << v_stack_bit)); in wuffs_json__decoder__decode_tokens()
33623 v_depth -= 1; in wuffs_json__decoder__decode_tokens()
33624 v_stack_byte = ((v_depth - 1) / 32); in wuffs_json__decoder__decode_tokens()
33625 v_stack_bit = ((v_depth - 1) & 31); in wuffs_json__decoder__decode_tokens()
33626 if (0 == (self->private_data.f_stack[v_stack_byte] & (((uint32_t)(1)) << v_stack_bit))) { in wuffs_json__decoder__decode_tokens()
33646 if (((uint64_t)(io2_a_src - iop_a_src)) < 5) { in wuffs_json__decoder__decode_tokens()
33663 if (((uint64_t)(io2_a_src - iop_a_src)) < 4) { in wuffs_json__decoder__decode_tokens()
33680 if (((uint64_t)(io2_a_src - iop_a_src)) < 4) { in wuffs_json__decoder__decode_tokens()
33691 if (self->private_impl.f_quirks[14]) { in wuffs_json__decoder__decode_tokens()
33693 a_dst->meta.wi = ((size_t)(iop_a_dst - a_dst->data.ptr)); in wuffs_json__decoder__decode_tokens()
33696 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_json__decoder__decode_tokens()
33701 iop_a_dst = a_dst->data.ptr + a_dst->meta.wi; in wuffs_json__decoder__decode_tokens()
33704 iop_a_src = a_src->data.ptr + a_src->meta.ri; in wuffs_json__decoder__decode_tokens()
33712 if (self->private_impl.f_quirks[11] || self->private_impl.f_quirks[12]) { in wuffs_json__decoder__decode_tokens()
33714 a_dst->meta.wi = ((size_t)(iop_a_dst - a_dst->data.ptr)); in wuffs_json__decoder__decode_tokens()
33717 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_json__decoder__decode_tokens()
33722 iop_a_dst = a_dst->data.ptr + a_dst->meta.wi; in wuffs_json__decoder__decode_tokens()
33725 iop_a_src = a_src->data.ptr + a_src->meta.ri; in wuffs_json__decoder__decode_tokens()
33730 if (self->private_impl.f_comment_type > 0) { in wuffs_json__decoder__decode_tokens()
33745 if (self->private_impl.f_quirks[17] || self->private_impl.f_quirks[18]) { in wuffs_json__decoder__decode_tokens()
33747 a_dst->meta.wi = ((size_t)(iop_a_dst - a_dst->data.ptr)); in wuffs_json__decoder__decode_tokens()
33750 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_json__decoder__decode_tokens()
33755 iop_a_dst = a_dst->data.ptr + a_dst->meta.wi; in wuffs_json__decoder__decode_tokens()
33758 iop_a_src = a_src->data.ptr + a_src->meta.ri; in wuffs_json__decoder__decode_tokens()
33764 self->private_impl.f_end_of_data = true; in wuffs_json__decoder__decode_tokens()
33767 self->private_impl.p_decode_tokens[0] = 0; in wuffs_json__decoder__decode_tokens()
33773 …self->private_impl.p_decode_tokens[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_poi… in wuffs_json__decoder__decode_tokens()
33774 self->private_impl.active_coroutine = wuffs_base__status__is_suspension(&status) ? 1 : 0; in wuffs_json__decoder__decode_tokens()
33775 self->private_data.s_decode_tokens[0].v_depth = v_depth; in wuffs_json__decoder__decode_tokens()
33776 self->private_data.s_decode_tokens[0].v_expect = v_expect; in wuffs_json__decoder__decode_tokens()
33777 self->private_data.s_decode_tokens[0].v_expect_after_value = v_expect_after_value; in wuffs_json__decoder__decode_tokens()
33782 a_dst->meta.wi = ((size_t)(iop_a_dst - a_dst->data.ptr)); in wuffs_json__decoder__decode_tokens()
33785 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_json__decoder__decode_tokens()
33789 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_json__decoder__decode_tokens()
33794 // -------- func json.decoder.decode_number
33809 io0_a_src = a_src->data.ptr; in wuffs_json__decoder__decode_number()
33810 io1_a_src = io0_a_src + a_src->meta.ri; in wuffs_json__decoder__decode_number()
33812 io2_a_src = io0_a_src + a_src->meta.wi; in wuffs_json__decoder__decode_number()
33817 if (((uint64_t)(io2_a_src - iop_a_src)) <= 0) { in wuffs_json__decoder__decode_number()
33818 if ( ! (a_src && a_src->meta.closed)) { in wuffs_json__decoder__decode_number()
33828 if (((uint64_t)(io2_a_src - iop_a_src)) <= 0) { in wuffs_json__decoder__decode_number()
33829 if ( ! (a_src && a_src->meta.closed)) { in wuffs_json__decoder__decode_number()
33842 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_json__decoder__decode_number()
33846 iop_a_src = a_src->data.ptr + a_src->meta.ri; in wuffs_json__decoder__decode_number()
33852 if (((uint64_t)(io2_a_src - iop_a_src)) <= 0) { in wuffs_json__decoder__decode_number()
33853 if ( ! (a_src && a_src->meta.closed)) { in wuffs_json__decoder__decode_number()
33869 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_json__decoder__decode_number()
33873 iop_a_src = a_src->data.ptr + a_src->meta.ri; in wuffs_json__decoder__decode_number()
33878 if (((uint64_t)(io2_a_src - iop_a_src)) <= 0) { in wuffs_json__decoder__decode_number()
33879 if ( ! (a_src && a_src->meta.closed)) { in wuffs_json__decoder__decode_number()
33896 if (((uint64_t)(io2_a_src - iop_a_src)) <= 0) { in wuffs_json__decoder__decode_number()
33897 if ( ! (a_src && a_src->meta.closed)) { in wuffs_json__decoder__decode_number()
33914 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_json__decoder__decode_number()
33918 iop_a_src = a_src->data.ptr + a_src->meta.ri; in wuffs_json__decoder__decode_number()
33924 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_json__decoder__decode_number()
33929 // -------- func json.decoder.decode_digits
33944 io0_a_src = a_src->data.ptr; in wuffs_json__decoder__decode_digits()
33945 io1_a_src = io0_a_src + a_src->meta.ri; in wuffs_json__decoder__decode_digits()
33947 io2_a_src = io0_a_src + a_src->meta.wi; in wuffs_json__decoder__decode_digits()
33952 if (((uint64_t)(io2_a_src - iop_a_src)) <= 0) { in wuffs_json__decoder__decode_digits()
33953 if ( ! (a_src && a_src->meta.closed)) { in wuffs_json__decoder__decode_digits()
33974 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_json__decoder__decode_digits()
33979 // -------- func json.decoder.decode_leading
33996 io0_a_dst = a_dst->data.ptr; in wuffs_json__decoder__decode_leading()
33997 io1_a_dst = io0_a_dst + a_dst->meta.wi; in wuffs_json__decoder__decode_leading()
33999 io2_a_dst = io0_a_dst + a_dst->data.len; in wuffs_json__decoder__decode_leading()
34000 if (a_dst->meta.closed) { in wuffs_json__decoder__decode_leading()
34009 io0_a_src = a_src->data.ptr; in wuffs_json__decoder__decode_leading()
34010 io1_a_src = io0_a_src + a_src->meta.ri; in wuffs_json__decoder__decode_leading()
34012 io2_a_src = io0_a_src + a_src->meta.wi; in wuffs_json__decoder__decode_leading()
34015 uint32_t coro_susp_point = self->private_impl.p_decode_leading[0]; in wuffs_json__decoder__decode_leading()
34019 self->private_impl.f_allow_leading_ars = self->private_impl.f_quirks[15]; in wuffs_json__decoder__decode_leading()
34020 self->private_impl.f_allow_leading_ubom = self->private_impl.f_quirks[16]; in wuffs_json__decoder__decode_leading()
34022 while (self->private_impl.f_allow_leading_ars || self->private_impl.f_allow_leading_ubom) { in wuffs_json__decoder__decode_leading()
34023 if (((uint64_t)(io2_a_dst - iop_a_dst)) <= 0) { in wuffs_json__decoder__decode_leading()
34028 if (((uint64_t)(io2_a_src - iop_a_src)) <= 0) { in wuffs_json__decoder__decode_leading()
34029 if (a_src && a_src->meta.closed) { in wuffs_json__decoder__decode_leading()
34037 if ((v_c == 30) && self->private_impl.f_allow_leading_ars) { in wuffs_json__decoder__decode_leading()
34038 self->private_impl.f_allow_leading_ars = false; in wuffs_json__decoder__decode_leading()
34044 } else if ((v_c == 239) && self->private_impl.f_allow_leading_ubom) { in wuffs_json__decoder__decode_leading()
34045 if (((uint64_t)(io2_a_src - iop_a_src)) < 3) { in wuffs_json__decoder__decode_leading()
34046 if (a_src && a_src->meta.closed) { in wuffs_json__decoder__decode_leading()
34055 self->private_impl.f_allow_leading_ubom = false; in wuffs_json__decoder__decode_leading()
34068 self->private_impl.p_decode_leading[0] = 0; in wuffs_json__decoder__decode_leading()
34074 …self->private_impl.p_decode_leading[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_po… in wuffs_json__decoder__decode_leading()
34079 a_dst->meta.wi = ((size_t)(iop_a_dst - a_dst->data.ptr)); in wuffs_json__decoder__decode_leading()
34082 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_json__decoder__decode_leading()
34088 // -------- func json.decoder.decode_comment
34106 io0_a_dst = a_dst->data.ptr; in wuffs_json__decoder__decode_comment()
34107 io1_a_dst = io0_a_dst + a_dst->meta.wi; in wuffs_json__decoder__decode_comment()
34109 io2_a_dst = io0_a_dst + a_dst->data.len; in wuffs_json__decoder__decode_comment()
34110 if (a_dst->meta.closed) { in wuffs_json__decoder__decode_comment()
34119 io0_a_src = a_src->data.ptr; in wuffs_json__decoder__decode_comment()
34120 io1_a_src = io0_a_src + a_src->meta.ri; in wuffs_json__decoder__decode_comment()
34122 io2_a_src = io0_a_src + a_src->meta.wi; in wuffs_json__decoder__decode_comment()
34125 uint32_t coro_susp_point = self->private_impl.p_decode_comment[0]; in wuffs_json__decoder__decode_comment()
34129 self->private_impl.f_comment_type = 0; in wuffs_json__decoder__decode_comment()
34131 … while ((((uint64_t)(io2_a_dst - iop_a_dst)) <= 0) || (((uint64_t)(io2_a_src - iop_a_src)) <= 1)) { in wuffs_json__decoder__decode_comment()
34132 if (((uint64_t)(io2_a_dst - iop_a_dst)) <= 0) { in wuffs_json__decoder__decode_comment()
34137 if (a_src && a_src->meta.closed) { in wuffs_json__decoder__decode_comment()
34145 if ((v_c2 == 10799) && self->private_impl.f_quirks[11]) { in wuffs_json__decoder__decode_comment()
34150 if (((uint64_t)(io2_a_dst - iop_a_dst)) <= 0) { in wuffs_json__decoder__decode_comment()
34157 if (((uint64_t)(io2_a_src - iop_a_src)) <= 1) { in wuffs_json__decoder__decode_comment()
34164 if (a_src && a_src->meta.closed) { in wuffs_json__decoder__decode_comment()
34179 self->private_impl.f_comment_type = 1; in wuffs_json__decoder__decode_comment()
34195 } else if ((v_c2 == 12079) && self->private_impl.f_quirks[12]) { in wuffs_json__decoder__decode_comment()
34200 if (((uint64_t)(io2_a_dst - iop_a_dst)) <= 0) { in wuffs_json__decoder__decode_comment()
34207 if (((uint64_t)(io2_a_src - iop_a_src)) <= 0) { in wuffs_json__decoder__decode_comment()
34208 if (a_src && a_src->meta.closed) { in wuffs_json__decoder__decode_comment()
34212 self->private_impl.f_comment_type = 2; in wuffs_json__decoder__decode_comment()
34231 self->private_impl.f_comment_type = 2; in wuffs_json__decoder__decode_comment()
34250 self->private_impl.p_decode_comment[0] = 0; in wuffs_json__decoder__decode_comment()
34256 …self->private_impl.p_decode_comment[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_po… in wuffs_json__decoder__decode_comment()
34261 a_dst->meta.wi = ((size_t)(iop_a_dst - a_dst->data.ptr)); in wuffs_json__decoder__decode_comment()
34264 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_json__decoder__decode_comment()
34270 // -------- func json.decoder.decode_inf_nan
34287 io0_a_dst = a_dst->data.ptr; in wuffs_json__decoder__decode_inf_nan()
34288 io1_a_dst = io0_a_dst + a_dst->meta.wi; in wuffs_json__decoder__decode_inf_nan()
34290 io2_a_dst = io0_a_dst + a_dst->data.len; in wuffs_json__decoder__decode_inf_nan()
34291 if (a_dst->meta.closed) { in wuffs_json__decoder__decode_inf_nan()
34300 io0_a_src = a_src->data.ptr; in wuffs_json__decoder__decode_inf_nan()
34301 io1_a_src = io0_a_src + a_src->meta.ri; in wuffs_json__decoder__decode_inf_nan()
34303 io2_a_src = io0_a_src + a_src->meta.wi; in wuffs_json__decoder__decode_inf_nan()
34306 uint32_t coro_susp_point = self->private_impl.p_decode_inf_nan[0]; in wuffs_json__decoder__decode_inf_nan()
34308 v_neg = self->private_data.s_decode_inf_nan[0].v_neg; in wuffs_json__decoder__decode_inf_nan()
34315 if (((uint64_t)(io2_a_dst - iop_a_dst)) <= 0) { in wuffs_json__decoder__decode_inf_nan()
34320 if (((uint64_t)(io2_a_src - iop_a_src)) <= 2) { in wuffs_json__decoder__decode_inf_nan()
34321 if (a_src && a_src->meta.closed) { in wuffs_json__decoder__decode_inf_nan()
34331 if (((uint64_t)(io2_a_src - iop_a_src)) > 7) { in wuffs_json__decoder__decode_inf_nan()
34340 } else if ( ! (a_src && a_src->meta.closed)) { in wuffs_json__decoder__decode_inf_nan()
34366 if (((uint64_t)(io2_a_src - iop_a_src)) <= 3) { in wuffs_json__decoder__decode_inf_nan()
34367 if (a_src && a_src->meta.closed) { in wuffs_json__decoder__decode_inf_nan()
34377 if (((uint64_t)(io2_a_src - iop_a_src)) > 8) { in wuffs_json__decoder__decode_inf_nan()
34386 } else if ( ! (a_src && a_src->meta.closed)) { in wuffs_json__decoder__decode_inf_nan()
34410 self->private_impl.p_decode_inf_nan[0] = 0; in wuffs_json__decoder__decode_inf_nan()
34416 …self->private_impl.p_decode_inf_nan[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_po… in wuffs_json__decoder__decode_inf_nan()
34417 self->private_data.s_decode_inf_nan[0].v_neg = v_neg; in wuffs_json__decoder__decode_inf_nan()
34422 a_dst->meta.wi = ((size_t)(iop_a_dst - a_dst->data.ptr)); in wuffs_json__decoder__decode_inf_nan()
34425 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_json__decoder__decode_inf_nan()
34431 // -------- func json.decoder.decode_trailer
34448 io0_a_dst = a_dst->data.ptr; in wuffs_json__decoder__decode_trailer()
34449 io1_a_dst = io0_a_dst + a_dst->meta.wi; in wuffs_json__decoder__decode_trailer()
34451 io2_a_dst = io0_a_dst + a_dst->data.len; in wuffs_json__decoder__decode_trailer()
34452 if (a_dst->meta.closed) { in wuffs_json__decoder__decode_trailer()
34461 io0_a_src = a_src->data.ptr; in wuffs_json__decoder__decode_trailer()
34462 io1_a_src = io0_a_src + a_src->meta.ri; in wuffs_json__decoder__decode_trailer()
34464 io2_a_src = io0_a_src + a_src->meta.wi; in wuffs_json__decoder__decode_trailer()
34467 uint32_t coro_susp_point = self->private_impl.p_decode_trailer[0]; in wuffs_json__decoder__decode_trailer()
34471 if (self->private_impl.f_quirks[18]) { in wuffs_json__decoder__decode_trailer()
34472 self->private_impl.f_trailer_stop = 10; in wuffs_json__decoder__decode_trailer()
34474 self->private_impl.f_trailer_stop = 0; in wuffs_json__decoder__decode_trailer()
34478 if (((uint64_t)(io2_a_dst - iop_a_dst)) <= 0) { in wuffs_json__decoder__decode_trailer()
34485 if (((uint64_t)(io2_a_src - iop_a_src)) <= 0) { in wuffs_json__decoder__decode_trailer()
34492 if (a_src && a_src->meta.closed) { in wuffs_json__decoder__decode_trailer()
34508 if (self->private_impl.f_trailer_stop > 0) { in wuffs_json__decoder__decode_trailer()
34513 a_dst->meta.wi = ((size_t)(iop_a_dst - a_dst->data.ptr)); in wuffs_json__decoder__decode_trailer()
34516 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_json__decoder__decode_trailer()
34521 iop_a_dst = a_dst->data.ptr + a_dst->meta.wi; in wuffs_json__decoder__decode_trailer()
34524 iop_a_src = a_src->data.ptr + a_src->meta.ri; in wuffs_json__decoder__decode_trailer()
34531 if (self->private_impl.f_comment_type > 0) { in wuffs_json__decoder__decode_trailer()
34538 if ((v_whitespace_length >= 65534) || (v_c == self->private_impl.f_trailer_stop)) { in wuffs_json__decoder__decode_trailer()
34543 if (v_c == self->private_impl.f_trailer_stop) { in wuffs_json__decoder__decode_trailer()
34555 self->private_impl.p_decode_trailer[0] = 0; in wuffs_json__decoder__decode_trailer()
34561 …self->private_impl.p_decode_trailer[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_po… in wuffs_json__decoder__decode_trailer()
34566 a_dst->meta.wi = ((size_t)(iop_a_dst - a_dst->data.ptr)); in wuffs_json__decoder__decode_trailer()
34569 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_json__decoder__decode_trailer()
34579 // ---------------- Status Codes Implementations
34585 // ---------------- Private Consts
34587 // ---------------- Private Initializer Prototypes
34589 // ---------------- Private Function Prototypes
34597 // ---------------- VTables
34633 // ---------------- Initializer Implementations
34653 // The whole point of this if-check is to detect an uninitialized *self. in wuffs_nie__decoder__initialize()
34654 // We disable the warning on GCC. Clang-5.0 does not have this warning. in wuffs_nie__decoder__initialize()
34657 #pragma GCC diagnostic ignored "-Wmaybe-uninitialized" in wuffs_nie__decoder__initialize()
34659 if (self->private_impl.magic != 0) { in wuffs_nie__decoder__initialize()
34670 memset(&(self->private_impl), 0, sizeof(self->private_impl)); in wuffs_nie__decoder__initialize()
34674 self->private_impl.magic = WUFFS_BASE__MAGIC; in wuffs_nie__decoder__initialize()
34675 self->private_impl.vtable_for__wuffs_base__image_decoder.vtable_name = in wuffs_nie__decoder__initialize()
34677 self->private_impl.vtable_for__wuffs_base__image_decoder.function_pointers = in wuffs_nie__decoder__initialize()
34702 // ---------------- Function Implementations
34704 // -------- func nie.decoder.set_quirk_enabled
34714 // -------- func nie.decoder.decode_image_config
34724 if (self->private_impl.magic != WUFFS_BASE__MAGIC) { in wuffs_nie__decoder__decode_image_config()
34726 (self->private_impl.magic == WUFFS_BASE__DISABLED) in wuffs_nie__decoder__decode_image_config()
34731 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_nie__decoder__decode_image_config()
34734 if ((self->private_impl.active_coroutine != 0) && in wuffs_nie__decoder__decode_image_config()
34735 (self->private_impl.active_coroutine != 1)) { in wuffs_nie__decoder__decode_image_config()
34736 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_nie__decoder__decode_image_config()
34739 self->private_impl.active_coroutine = 0; in wuffs_nie__decoder__decode_image_config()
34749 io0_a_src = a_src->data.ptr; in wuffs_nie__decoder__decode_image_config()
34750 io1_a_src = io0_a_src + a_src->meta.ri; in wuffs_nie__decoder__decode_image_config()
34752 io2_a_src = io0_a_src + a_src->meta.wi; in wuffs_nie__decoder__decode_image_config()
34755 uint32_t coro_susp_point = self->private_impl.p_decode_image_config[0]; in wuffs_nie__decoder__decode_image_config()
34759 if (self->private_impl.f_call_sequence != 0) { in wuffs_nie__decoder__decode_image_config()
34766 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 4)) { in wuffs_nie__decoder__decode_image_config()
34770 self->private_data.s_decode_image_config[0].scratch = 0; in wuffs_nie__decoder__decode_image_config()
34777 uint64_t* scratch = &self->private_data.s_decode_image_config[0].scratch; in wuffs_nie__decoder__decode_image_config()
34799 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 4)) { in wuffs_nie__decoder__decode_image_config()
34803 self->private_data.s_decode_image_config[0].scratch = 0; in wuffs_nie__decoder__decode_image_config()
34810 uint64_t* scratch = &self->private_data.s_decode_image_config[0].scratch; in wuffs_nie__decoder__decode_image_config()
34826 self->private_impl.f_pixfmt = 2164295816; in wuffs_nie__decoder__decode_image_config()
34828 self->private_impl.f_pixfmt = 2164308923; in wuffs_nie__decoder__decode_image_config()
34842 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 4)) { in wuffs_nie__decoder__decode_image_config()
34846 self->private_data.s_decode_image_config[0].scratch = 0; in wuffs_nie__decoder__decode_image_config()
34853 uint64_t* scratch = &self->private_data.s_decode_image_config[0].scratch; in wuffs_nie__decoder__decode_image_config()
34872 self->private_impl.f_width = v_a; in wuffs_nie__decoder__decode_image_config()
34876 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 4)) { in wuffs_nie__decoder__decode_image_config()
34880 self->private_data.s_decode_image_config[0].scratch = 0; in wuffs_nie__decoder__decode_image_config()
34887 uint64_t* scratch = &self->private_data.s_decode_image_config[0].scratch; in wuffs_nie__decoder__decode_image_config()
34906 self->private_impl.f_height = v_a; in wuffs_nie__decoder__decode_image_config()
34910 self->private_impl.f_pixfmt, in wuffs_nie__decoder__decode_image_config()
34912 self->private_impl.f_width, in wuffs_nie__decoder__decode_image_config()
34913 self->private_impl.f_height, in wuffs_nie__decoder__decode_image_config()
34917 self->private_impl.f_call_sequence = 3; in wuffs_nie__decoder__decode_image_config()
34921 self->private_impl.p_decode_image_config[0] = 0; in wuffs_nie__decoder__decode_image_config()
34927 …self->private_impl.p_decode_image_config[0] = wuffs_base__status__is_suspension(&status) ? coro_su… in wuffs_nie__decoder__decode_image_config()
34928 self->private_impl.active_coroutine = wuffs_base__status__is_suspension(&status) ? 1 : 0; in wuffs_nie__decoder__decode_image_config()
34933 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_nie__decoder__decode_image_config()
34937 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_nie__decoder__decode_image_config()
34942 // -------- func nie.decoder.decode_frame_config
34952 if (self->private_impl.magic != WUFFS_BASE__MAGIC) { in wuffs_nie__decoder__decode_frame_config()
34954 (self->private_impl.magic == WUFFS_BASE__DISABLED) in wuffs_nie__decoder__decode_frame_config()
34959 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_nie__decoder__decode_frame_config()
34962 if ((self->private_impl.active_coroutine != 0) && in wuffs_nie__decoder__decode_frame_config()
34963 (self->private_impl.active_coroutine != 2)) { in wuffs_nie__decoder__decode_frame_config()
34964 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_nie__decoder__decode_frame_config()
34967 self->private_impl.active_coroutine = 0; in wuffs_nie__decoder__decode_frame_config()
34975 io0_a_src = a_src->data.ptr; in wuffs_nie__decoder__decode_frame_config()
34976 io1_a_src = io0_a_src + a_src->meta.ri; in wuffs_nie__decoder__decode_frame_config()
34978 io2_a_src = io0_a_src + a_src->meta.wi; in wuffs_nie__decoder__decode_frame_config()
34981 uint32_t coro_susp_point = self->private_impl.p_decode_frame_config[0]; in wuffs_nie__decoder__decode_frame_config()
34985 if (self->private_impl.f_call_sequence < 3) { in wuffs_nie__decoder__decode_frame_config()
34987 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_nie__decoder__decode_frame_config()
34992 iop_a_src = a_src->data.ptr + a_src->meta.ri; in wuffs_nie__decoder__decode_frame_config()
34997 } else if (self->private_impl.f_call_sequence == 3) { in wuffs_nie__decoder__decode_frame_config()
34998 …if (16 != wuffs_base__u64__sat_add((a_src ? a_src->meta.pos : 0), ((uint64_t)(iop_a_src - io0_a_sr… in wuffs_nie__decoder__decode_frame_config()
35002 } else if (self->private_impl.f_call_sequence == 4) { in wuffs_nie__decoder__decode_frame_config()
35003 self->private_impl.f_call_sequence = 255; in wuffs_nie__decoder__decode_frame_config()
35016 self->private_impl.f_width, in wuffs_nie__decoder__decode_frame_config()
35017 self->private_impl.f_height), in wuffs_nie__decoder__decode_frame_config()
35026 self->private_impl.f_call_sequence = 4; in wuffs_nie__decoder__decode_frame_config()
35029 self->private_impl.p_decode_frame_config[0] = 0; in wuffs_nie__decoder__decode_frame_config()
35035 …self->private_impl.p_decode_frame_config[0] = wuffs_base__status__is_suspension(&status) ? coro_su… in wuffs_nie__decoder__decode_frame_config()
35036 self->private_impl.active_coroutine = wuffs_base__status__is_suspension(&status) ? 2 : 0; in wuffs_nie__decoder__decode_frame_config()
35041 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_nie__decoder__decode_frame_config()
35045 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_nie__decoder__decode_frame_config()
35050 // -------- func nie.decoder.decode_frame
35063 if (self->private_impl.magic != WUFFS_BASE__MAGIC) { in wuffs_nie__decoder__decode_frame()
35065 (self->private_impl.magic == WUFFS_BASE__DISABLED) in wuffs_nie__decoder__decode_frame()
35070 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_nie__decoder__decode_frame()
35073 if ((self->private_impl.active_coroutine != 0) && in wuffs_nie__decoder__decode_frame()
35074 (self->private_impl.active_coroutine != 3)) { in wuffs_nie__decoder__decode_frame()
35075 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_nie__decoder__decode_frame()
35078 self->private_impl.active_coroutine = 0; in wuffs_nie__decoder__decode_frame()
35083 uint32_t coro_susp_point = self->private_impl.p_decode_frame[0]; in wuffs_nie__decoder__decode_frame()
35087 if (self->private_impl.f_call_sequence < 4) { in wuffs_nie__decoder__decode_frame()
35093 } else if (self->private_impl.f_call_sequence == 4) { in wuffs_nie__decoder__decode_frame()
35098 self->private_impl.f_dst_x = 0; in wuffs_nie__decoder__decode_frame()
35099 self->private_impl.f_dst_y = 0; in wuffs_nie__decoder__decode_frame()
35100 v_status = wuffs_base__pixel_swizzler__prepare(&self->private_impl.f_swizzler, in wuffs_nie__decoder__decode_frame()
35103 wuffs_base__utility__make_pixel_format(self->private_impl.f_pixfmt), in wuffs_nie__decoder__decode_frame()
35134 self->private_impl.f_call_sequence = 255; in wuffs_nie__decoder__decode_frame()
35137 self->private_impl.p_decode_frame[0] = 0; in wuffs_nie__decoder__decode_frame()
35143 …self->private_impl.p_decode_frame[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_poin… in wuffs_nie__decoder__decode_frame()
35144 self->private_impl.active_coroutine = wuffs_base__status__is_suspension(&status) ? 3 : 0; in wuffs_nie__decoder__decode_frame()
35149 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_nie__decoder__decode_frame()
35154 // -------- func nie.decoder.swizzle
35177 io0_a_src = a_src->data.ptr; in wuffs_nie__decoder__swizzle()
35178 io1_a_src = io0_a_src + a_src->meta.ri; in wuffs_nie__decoder__swizzle()
35180 io2_a_src = io0_a_src + a_src->meta.wi; in wuffs_nie__decoder__swizzle()
35190 v_dst_bytes_per_row = (((uint64_t)(self->private_impl.f_width)) * v_dst_bytes_per_pixel); in wuffs_nie__decoder__swizzle()
35194 if (self->private_impl.f_dst_x == self->private_impl.f_width) { in wuffs_nie__decoder__swizzle()
35195 self->private_impl.f_dst_x = 0; in wuffs_nie__decoder__swizzle()
35196 self->private_impl.f_dst_y += 1; in wuffs_nie__decoder__swizzle()
35197 if (self->private_impl.f_dst_y >= self->private_impl.f_height) { in wuffs_nie__decoder__swizzle()
35201 v_dst = wuffs_base__table_u8__row_u32(v_tab, self->private_impl.f_dst_y); in wuffs_nie__decoder__swizzle()
35205 v_i = (((uint64_t)(self->private_impl.f_dst_x)) * v_dst_bytes_per_pixel); in wuffs_nie__decoder__swizzle()
35210 &self->private_impl.f_swizzler, in wuffs_nie__decoder__swizzle()
35219 … wuffs_base__u32__sat_add_indirect(&self->private_impl.f_dst_x, ((uint32_t)((v_n & 4294967295)))); in wuffs_nie__decoder__swizzle()
35229 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_nie__decoder__swizzle()
35235 // -------- func nie.decoder.frame_dirty_rect
35243 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) && in wuffs_nie__decoder__frame_dirty_rect()
35244 (self->private_impl.magic != WUFFS_BASE__DISABLED)) { in wuffs_nie__decoder__frame_dirty_rect()
35251 self->private_impl.f_width, in wuffs_nie__decoder__frame_dirty_rect()
35252 self->private_impl.f_height); in wuffs_nie__decoder__frame_dirty_rect()
35255 // -------- func nie.decoder.num_animation_loops
35263 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) && in wuffs_nie__decoder__num_animation_loops()
35264 (self->private_impl.magic != WUFFS_BASE__DISABLED)) { in wuffs_nie__decoder__num_animation_loops()
35271 // -------- func nie.decoder.num_decoded_frame_configs
35279 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) && in wuffs_nie__decoder__num_decoded_frame_configs()
35280 (self->private_impl.magic != WUFFS_BASE__DISABLED)) { in wuffs_nie__decoder__num_decoded_frame_configs()
35284 if (self->private_impl.f_call_sequence > 3) { in wuffs_nie__decoder__num_decoded_frame_configs()
35290 // -------- func nie.decoder.num_decoded_frames
35298 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) && in wuffs_nie__decoder__num_decoded_frames()
35299 (self->private_impl.magic != WUFFS_BASE__DISABLED)) { in wuffs_nie__decoder__num_decoded_frames()
35303 if (self->private_impl.f_call_sequence > 4) { in wuffs_nie__decoder__num_decoded_frames()
35309 // -------- func nie.decoder.restart_frame
35319 if (self->private_impl.magic != WUFFS_BASE__MAGIC) { in wuffs_nie__decoder__restart_frame()
35321 (self->private_impl.magic == WUFFS_BASE__DISABLED) in wuffs_nie__decoder__restart_frame()
35326 if (self->private_impl.f_call_sequence < 3) { in wuffs_nie__decoder__restart_frame()
35332 self->private_impl.f_call_sequence = 3; in wuffs_nie__decoder__restart_frame()
35336 // -------- func nie.decoder.set_report_metadata
35346 // -------- func nie.decoder.tell_me_more
35357 if (self->private_impl.magic != WUFFS_BASE__MAGIC) { in wuffs_nie__decoder__tell_me_more()
35359 (self->private_impl.magic == WUFFS_BASE__DISABLED) in wuffs_nie__decoder__tell_me_more()
35364 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_nie__decoder__tell_me_more()
35367 if ((self->private_impl.active_coroutine != 0) && in wuffs_nie__decoder__tell_me_more()
35368 (self->private_impl.active_coroutine != 4)) { in wuffs_nie__decoder__tell_me_more()
35369 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_nie__decoder__tell_me_more()
35372 self->private_impl.active_coroutine = 0; in wuffs_nie__decoder__tell_me_more()
35383 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_nie__decoder__tell_me_more()
35388 // -------- func nie.decoder.workbuf_len
35396 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) && in wuffs_nie__decoder__workbuf_len()
35397 (self->private_impl.magic != WUFFS_BASE__DISABLED)) { in wuffs_nie__decoder__workbuf_len()
35408 // ---------------- Status Codes Implementations
35417 // ---------------- Private Consts
35423 // ---------------- Private Initializer Prototypes
35425 // ---------------- Private Function Prototypes
35427 // ---------------- VTables
35441 // ---------------- Initializer Implementations
35461 // The whole point of this if-check is to detect an uninitialized *self. in wuffs_zlib__decoder__initialize()
35462 // We disable the warning on GCC. Clang-5.0 does not have this warning. in wuffs_zlib__decoder__initialize()
35465 #pragma GCC diagnostic ignored "-Wmaybe-uninitialized" in wuffs_zlib__decoder__initialize()
35467 if (self->private_impl.magic != 0) { in wuffs_zlib__decoder__initialize()
35478 memset(&(self->private_impl), 0, sizeof(self->private_impl)); in wuffs_zlib__decoder__initialize()
35484 … &self->private_data.f_checksum, sizeof(self->private_data.f_checksum), WUFFS_VERSION, options); in wuffs_zlib__decoder__initialize()
35491 …&self->private_data.f_dict_id_hasher, sizeof(self->private_data.f_dict_id_hasher), WUFFS_VERSION, … in wuffs_zlib__decoder__initialize()
35498 &self->private_data.f_flate, sizeof(self->private_data.f_flate), WUFFS_VERSION, options); in wuffs_zlib__decoder__initialize()
35503 self->private_impl.magic = WUFFS_BASE__MAGIC; in wuffs_zlib__decoder__initialize()
35504 self->private_impl.vtable_for__wuffs_base__io_transformer.vtable_name = in wuffs_zlib__decoder__initialize()
35506 self->private_impl.vtable_for__wuffs_base__io_transformer.function_pointers = in wuffs_zlib__decoder__initialize()
35531 // ---------------- Function Implementations
35533 // -------- func zlib.decoder.dictionary_id
35541 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) && in wuffs_zlib__decoder__dictionary_id()
35542 (self->private_impl.magic != WUFFS_BASE__DISABLED)) { in wuffs_zlib__decoder__dictionary_id()
35546 return self->private_impl.f_dict_id_want; in wuffs_zlib__decoder__dictionary_id()
35549 // -------- func zlib.decoder.add_dictionary
35558 if (self->private_impl.magic != WUFFS_BASE__MAGIC) { in wuffs_zlib__decoder__add_dictionary()
35562 if (self->private_impl.f_header_complete) { in wuffs_zlib__decoder__add_dictionary()
35563 self->private_impl.f_bad_call_sequence = true; in wuffs_zlib__decoder__add_dictionary()
35565 …self->private_impl.f_dict_id_got = wuffs_adler32__hasher__update_u32(&self->private_data.f_dict_id… in wuffs_zlib__decoder__add_dictionary()
35566 wuffs_deflate__decoder__add_history(&self->private_data.f_flate, a_dict); in wuffs_zlib__decoder__add_dictionary()
35568 self->private_impl.f_got_dictionary = true; in wuffs_zlib__decoder__add_dictionary()
35572 // -------- func zlib.decoder.set_quirk_enabled
35582 if (self->private_impl.magic != WUFFS_BASE__MAGIC) { in wuffs_zlib__decoder__set_quirk_enabled()
35586 if (self->private_impl.f_header_complete) { in wuffs_zlib__decoder__set_quirk_enabled()
35587 self->private_impl.f_bad_call_sequence = true; in wuffs_zlib__decoder__set_quirk_enabled()
35589 self->private_impl.f_ignore_checksum = a_enabled; in wuffs_zlib__decoder__set_quirk_enabled()
35591 a_quirk -= 2113790976; in wuffs_zlib__decoder__set_quirk_enabled()
35593 self->private_impl.f_quirks[a_quirk] = a_enabled; in wuffs_zlib__decoder__set_quirk_enabled()
35599 // -------- func zlib.decoder.workbuf_len
35607 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) && in wuffs_zlib__decoder__workbuf_len()
35608 (self->private_impl.magic != WUFFS_BASE__DISABLED)) { in wuffs_zlib__decoder__workbuf_len()
35615 // -------- func zlib.decoder.transform_io
35626 if (self->private_impl.magic != WUFFS_BASE__MAGIC) { in wuffs_zlib__decoder__transform_io()
35628 (self->private_impl.magic == WUFFS_BASE__DISABLED) in wuffs_zlib__decoder__transform_io()
35633 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_zlib__decoder__transform_io()
35636 if ((self->private_impl.active_coroutine != 0) && in wuffs_zlib__decoder__transform_io()
35637 (self->private_impl.active_coroutine != 1)) { in wuffs_zlib__decoder__transform_io()
35638 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_zlib__decoder__transform_io()
35641 self->private_impl.active_coroutine = 0; in wuffs_zlib__decoder__transform_io()
35655 io0_a_dst = a_dst->data.ptr; in wuffs_zlib__decoder__transform_io()
35656 io1_a_dst = io0_a_dst + a_dst->meta.wi; in wuffs_zlib__decoder__transform_io()
35658 io2_a_dst = io0_a_dst + a_dst->data.len; in wuffs_zlib__decoder__transform_io()
35659 if (a_dst->meta.closed) { in wuffs_zlib__decoder__transform_io()
35668 io0_a_src = a_src->data.ptr; in wuffs_zlib__decoder__transform_io()
35669 io1_a_src = io0_a_src + a_src->meta.ri; in wuffs_zlib__decoder__transform_io()
35671 io2_a_src = io0_a_src + a_src->meta.wi; in wuffs_zlib__decoder__transform_io()
35674 uint32_t coro_susp_point = self->private_impl.p_transform_io[0]; in wuffs_zlib__decoder__transform_io()
35676 v_checksum_got = self->private_data.s_transform_io[0].v_checksum_got; in wuffs_zlib__decoder__transform_io()
35681 if (self->private_impl.f_bad_call_sequence) { in wuffs_zlib__decoder__transform_io()
35684 } else if (self->private_impl.f_quirks[0]) { in wuffs_zlib__decoder__transform_io()
35685 } else if ( ! self->private_impl.f_want_dictionary) { in wuffs_zlib__decoder__transform_io()
35689 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 2)) { in wuffs_zlib__decoder__transform_io()
35693 self->private_data.s_transform_io[0].scratch = 0; in wuffs_zlib__decoder__transform_io()
35700 uint64_t* scratch = &self->private_data.s_transform_io[0].scratch; in wuffs_zlib__decoder__transform_io()
35704 *scratch |= ((uint64_t)(*iop_a_src++)) << (56 - num_bits_0); in wuffs_zlib__decoder__transform_io()
35727 self->private_impl.f_want_dictionary = ((v_x & 32) != 0); in wuffs_zlib__decoder__transform_io()
35728 if (self->private_impl.f_want_dictionary) { in wuffs_zlib__decoder__transform_io()
35729 self->private_impl.f_dict_id_got = 1; in wuffs_zlib__decoder__transform_io()
35733 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 4)) { in wuffs_zlib__decoder__transform_io()
35737 self->private_data.s_transform_io[0].scratch = 0; in wuffs_zlib__decoder__transform_io()
35744 uint64_t* scratch = &self->private_data.s_transform_io[0].scratch; in wuffs_zlib__decoder__transform_io()
35748 *scratch |= ((uint64_t)(*iop_a_src++)) << (56 - num_bits_1); in wuffs_zlib__decoder__transform_io()
35757 self->private_impl.f_dict_id_want = t_1; in wuffs_zlib__decoder__transform_io()
35761 } else if (self->private_impl.f_got_dictionary) { in wuffs_zlib__decoder__transform_io()
35765 } else if (self->private_impl.f_dict_id_got != self->private_impl.f_dict_id_want) { in wuffs_zlib__decoder__transform_io()
35766 if (self->private_impl.f_got_dictionary) { in wuffs_zlib__decoder__transform_io()
35773 self->private_impl.f_header_complete = true; in wuffs_zlib__decoder__transform_io()
35775 v_mark = ((uint64_t)(iop_a_dst - io0_a_dst)); in wuffs_zlib__decoder__transform_io()
35778 a_dst->meta.wi = ((size_t)(iop_a_dst - a_dst->data.ptr)); in wuffs_zlib__decoder__transform_io()
35781 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_zlib__decoder__transform_io()
35783 …wuffs_base__status t_2 = wuffs_deflate__decoder__transform_io(&self->private_data.f_flate, a_dst, … in wuffs_zlib__decoder__transform_io()
35786 iop_a_dst = a_dst->data.ptr + a_dst->meta.wi; in wuffs_zlib__decoder__transform_io()
35789 iop_a_src = a_src->data.ptr + a_src->meta.ri; in wuffs_zlib__decoder__transform_io()
35792 if ( ! self->private_impl.f_ignore_checksum && ! self->private_impl.f_quirks[0]) { in wuffs_zlib__decoder__transform_io()
35793 …fs_adler32__hasher__update_u32(&self->private_data.f_checksum, wuffs_base__io__since(v_mark, ((uin… in wuffs_zlib__decoder__transform_io()
35802 if ( ! self->private_impl.f_quirks[0]) { in wuffs_zlib__decoder__transform_io()
35806 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 4)) { in wuffs_zlib__decoder__transform_io()
35810 self->private_data.s_transform_io[0].scratch = 0; in wuffs_zlib__decoder__transform_io()
35817 uint64_t* scratch = &self->private_data.s_transform_io[0].scratch; in wuffs_zlib__decoder__transform_io()
35821 *scratch |= ((uint64_t)(*iop_a_src++)) << (56 - num_bits_3); in wuffs_zlib__decoder__transform_io()
35832 if ( ! self->private_impl.f_ignore_checksum && (v_checksum_got != v_checksum_want)) { in wuffs_zlib__decoder__transform_io()
35839 self->private_impl.p_transform_io[0] = 0; in wuffs_zlib__decoder__transform_io()
35845 …self->private_impl.p_transform_io[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_poin… in wuffs_zlib__decoder__transform_io()
35846 self->private_impl.active_coroutine = wuffs_base__status__is_suspension(&status) ? 1 : 0; in wuffs_zlib__decoder__transform_io()
35847 self->private_data.s_transform_io[0].v_checksum_got = v_checksum_got; in wuffs_zlib__decoder__transform_io()
35852 a_dst->meta.wi = ((size_t)(iop_a_dst - a_dst->data.ptr)); in wuffs_zlib__decoder__transform_io()
35855 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_zlib__decoder__transform_io()
35859 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_zlib__decoder__transform_io()
35868 // ---------------- Status Codes Implementations
35875 const char wuffs_png__error__bad_text_chunk_not_latin_1[] = "#png: bad text chunk (not Latin-1)";
35885 // ---------------- Private Consts
35961 // ---------------- Private Initializer Prototypes
35963 // ---------------- Private Function Prototypes
36198 // ---------------- VTables
36234 // ---------------- Initializer Implementations
36254 // The whole point of this if-check is to detect an uninitialized *self. in wuffs_png__decoder__initialize()
36255 // We disable the warning on GCC. Clang-5.0 does not have this warning. in wuffs_png__decoder__initialize()
36258 #pragma GCC diagnostic ignored "-Wmaybe-uninitialized" in wuffs_png__decoder__initialize()
36260 if (self->private_impl.magic != 0) { in wuffs_png__decoder__initialize()
36271 memset(&(self->private_impl), 0, sizeof(self->private_impl)); in wuffs_png__decoder__initialize()
36275 self->private_impl.choosy_filter_1 = &wuffs_png__decoder__filter_1__choosy_default; in wuffs_png__decoder__initialize()
36276 self->private_impl.choosy_filter_3 = &wuffs_png__decoder__filter_3__choosy_default; in wuffs_png__decoder__initialize()
36277 self->private_impl.choosy_filter_4 = &wuffs_png__decoder__filter_4__choosy_default; in wuffs_png__decoder__initialize()
36278 …self->private_impl.choosy_filter_and_swizzle = &wuffs_png__decoder__filter_and_swizzle__choosy_def… in wuffs_png__decoder__initialize()
36282 &self->private_data.f_crc32, sizeof(self->private_data.f_crc32), WUFFS_VERSION, options); in wuffs_png__decoder__initialize()
36289 &self->private_data.f_zlib, sizeof(self->private_data.f_zlib), WUFFS_VERSION, options); in wuffs_png__decoder__initialize()
36294 self->private_impl.magic = WUFFS_BASE__MAGIC; in wuffs_png__decoder__initialize()
36295 self->private_impl.vtable_for__wuffs_base__image_decoder.vtable_name = in wuffs_png__decoder__initialize()
36297 self->private_impl.vtable_for__wuffs_base__image_decoder.function_pointers = in wuffs_png__decoder__initialize()
36322 // ---------------- Function Implementations
36324 // ‼ WUFFS MULTI-FILE SECTION +arm_neon
36325 // -------- func png.decoder.filter_1_distance_4_arm_neon
36340 …uint8_t* i_end0_curr = v_curr.ptr + (((i_slice_curr.len - (size_t)(v_curr.ptr - i_slice_curr.ptr))… in wuffs_png__decoder__filter_1_distance_4_arm_neon()
36354 …uint8_t* i_end1_curr = v_curr.ptr + (((i_slice_curr.len - (size_t)(v_curr.ptr - i_slice_curr.ptr))… in wuffs_png__decoder__filter_1_distance_4_arm_neon()
36367 // ‼ WUFFS MULTI-FILE SECTION -arm_neon
36369 // ‼ WUFFS MULTI-FILE SECTION +arm_neon
36370 // -------- func png.decoder.filter_3_distance_4_arm_neon
36389 …uint8_t* i_end0_curr = v_curr.ptr + (((i_slice_curr.len - (size_t)(v_curr.ptr - i_slice_curr.ptr))… in wuffs_png__decoder__filter_3_distance_4_arm_neon()
36403 …uint8_t* i_end1_curr = v_curr.ptr + (((i_slice_curr.len - (size_t)(v_curr.ptr - i_slice_curr.ptr))… in wuffs_png__decoder__filter_3_distance_4_arm_neon()
36422 …uint8_t* i_end0_curr = v_curr.ptr + (((i_slice_curr.len - (size_t)(v_curr.ptr - i_slice_curr.ptr))… in wuffs_png__decoder__filter_3_distance_4_arm_neon()
36441 …uint8_t* i_end1_curr = v_curr.ptr + (((i_slice_curr.len - (size_t)(v_curr.ptr - i_slice_curr.ptr))… in wuffs_png__decoder__filter_3_distance_4_arm_neon()
36458 // ‼ WUFFS MULTI-FILE SECTION -arm_neon
36460 // ‼ WUFFS MULTI-FILE SECTION +arm_neon
36461 // -------- func png.decoder.filter_4_distance_3_arm_neon
36493 …v_curr.ptr + wuffs_base__iterate_total_advance((i_slice_curr.len - (size_t)(v_curr.ptr - i_slice_c… in wuffs_png__decoder__filter_4_distance_3_arm_neon()
36532 …v_curr.ptr + wuffs_base__iterate_total_advance((i_slice_curr.len - (size_t)(v_curr.ptr - i_slice_c… in wuffs_png__decoder__filter_4_distance_3_arm_neon()
36554 …uint8_t* i_end2_curr = v_curr.ptr + (((i_slice_curr.len - (size_t)(v_curr.ptr - i_slice_curr.ptr))… in wuffs_png__decoder__filter_4_distance_3_arm_neon()
36578 // ‼ WUFFS MULTI-FILE SECTION -arm_neon
36580 // ‼ WUFFS MULTI-FILE SECTION +arm_neon
36581 // -------- func png.decoder.filter_4_distance_4_arm_neon
36613 …uint8_t* i_end0_curr = v_curr.ptr + (((i_slice_curr.len - (size_t)(v_curr.ptr - i_slice_curr.ptr))… in wuffs_png__decoder__filter_4_distance_4_arm_neon()
36652 …uint8_t* i_end1_curr = v_curr.ptr + (((i_slice_curr.len - (size_t)(v_curr.ptr - i_slice_curr.ptr))… in wuffs_png__decoder__filter_4_distance_4_arm_neon()
36678 // ‼ WUFFS MULTI-FILE SECTION -arm_neon
36680 // -------- func png.decoder.filter_1
36686 return (*self->private_impl.choosy_filter_1)(self, a_curr); in wuffs_png__decoder__filter_1()
36698 v_filter_distance = ((uint64_t)(self->private_impl.f_filter_distance)); in wuffs_png__decoder__filter_1__choosy_default()
36713 // -------- func png.decoder.filter_1_distance_3_fallback
36728 …uint8_t* i_end0_curr = v_curr.ptr + (((i_slice_curr.len - (size_t)(v_curr.ptr - i_slice_curr.ptr))… in wuffs_png__decoder__filter_1_distance_3_fallback()
36746 …uint8_t* i_end1_curr = v_curr.ptr + (((i_slice_curr.len - (size_t)(v_curr.ptr - i_slice_curr.ptr))… in wuffs_png__decoder__filter_1_distance_3_fallback()
36761 // -------- func png.decoder.filter_1_distance_4_fallback
36777 …uint8_t* i_end0_curr = v_curr.ptr + (((i_slice_curr.len - (size_t)(v_curr.ptr - i_slice_curr.ptr))… in wuffs_png__decoder__filter_1_distance_4_fallback()
36794 // -------- func png.decoder.filter_2
36813 // -------- func png.decoder.filter_3
36820 return (*self->private_impl.choosy_filter_3)(self, a_curr, a_prev); in wuffs_png__decoder__filter_3()
36832 v_filter_distance = ((uint64_t)(self->private_impl.f_filter_distance)); in wuffs_png__decoder__filter_3__choosy_default()
36836 a_curr.ptr[v_i] = ((uint8_t)(a_curr.ptr[v_i] + (a_curr.ptr[(v_i - v_filter_distance)] / 2))); in wuffs_png__decoder__filter_3__choosy_default()
36848 …a_curr.ptr[v_i] = ((uint8_t)(a_curr.ptr[v_i] + ((uint8_t)(((((uint32_t)(a_curr.ptr[(v_i - v_filter… in wuffs_png__decoder__filter_3__choosy_default()
36855 // -------- func png.decoder.filter_3_distance_3_fallback
36873 …uint8_t* i_end0_curr = v_curr.ptr + (((i_slice_curr.len - (size_t)(v_curr.ptr - i_slice_curr.ptr))… in wuffs_png__decoder__filter_3_distance_3_fallback()
36891 …uint8_t* i_end1_curr = v_curr.ptr + (((i_slice_curr.len - (size_t)(v_curr.ptr - i_slice_curr.ptr))… in wuffs_png__decoder__filter_3_distance_3_fallback()
36912 …uint8_t* i_end0_curr = v_curr.ptr + (((i_slice_curr.len - (size_t)(v_curr.ptr - i_slice_curr.ptr))… in wuffs_png__decoder__filter_3_distance_3_fallback()
36933 …uint8_t* i_end1_curr = v_curr.ptr + (((i_slice_curr.len - (size_t)(v_curr.ptr - i_slice_curr.ptr))… in wuffs_png__decoder__filter_3_distance_3_fallback()
36951 // -------- func png.decoder.filter_3_distance_4_fallback
36970 …uint8_t* i_end0_curr = v_curr.ptr + (((i_slice_curr.len - (size_t)(v_curr.ptr - i_slice_curr.ptr))… in wuffs_png__decoder__filter_3_distance_4_fallback()
36993 …uint8_t* i_end0_curr = v_curr.ptr + (((i_slice_curr.len - (size_t)(v_curr.ptr - i_slice_curr.ptr))… in wuffs_png__decoder__filter_3_distance_4_fallback()
37013 // -------- func png.decoder.filter_4
37020 return (*self->private_impl.choosy_filter_4)(self, a_curr, a_prev); in wuffs_png__decoder__filter_4()
37039 v_filter_distance = ((uint64_t)(self->private_impl.f_filter_distance)); in wuffs_png__decoder__filter_4__choosy_default()
37048 v_fa = ((uint32_t)(a_curr.ptr[(v_i - v_filter_distance)])); in wuffs_png__decoder__filter_4__choosy_default()
37050 v_fc = ((uint32_t)(a_prev.ptr[(v_i - v_filter_distance)])); in wuffs_png__decoder__filter_4__choosy_default()
37051 v_pp = ((uint32_t)(((uint32_t)(v_fa + v_fb)) - v_fc)); in wuffs_png__decoder__filter_4__choosy_default()
37052 v_pa = ((uint32_t)(v_pp - v_fa)); in wuffs_png__decoder__filter_4__choosy_default()
37054 v_pa = ((uint32_t)(0 - v_pa)); in wuffs_png__decoder__filter_4__choosy_default()
37056 v_pb = ((uint32_t)(v_pp - v_fb)); in wuffs_png__decoder__filter_4__choosy_default()
37058 v_pb = ((uint32_t)(0 - v_pb)); in wuffs_png__decoder__filter_4__choosy_default()
37060 v_pc = ((uint32_t)(v_pp - v_fc)); in wuffs_png__decoder__filter_4__choosy_default()
37062 v_pc = ((uint32_t)(0 - v_pc)); in wuffs_png__decoder__filter_4__choosy_default()
37076 // -------- func png.decoder.filter_4_distance_3_fallback
37115 …uint8_t* i_end0_curr = v_curr.ptr + (((i_slice_curr.len - (size_t)(v_curr.ptr - i_slice_curr.ptr))… in wuffs_png__decoder__filter_4_distance_3_fallback()
37118 v_pp0 = ((uint32_t)(((uint32_t)(v_fa0 + v_fb0)) - v_fc0)); in wuffs_png__decoder__filter_4_distance_3_fallback()
37119 v_pa0 = ((uint32_t)(v_pp0 - v_fa0)); in wuffs_png__decoder__filter_4_distance_3_fallback()
37121 v_pa0 = ((uint32_t)(0 - v_pa0)); in wuffs_png__decoder__filter_4_distance_3_fallback()
37123 v_pb0 = ((uint32_t)(v_pp0 - v_fb0)); in wuffs_png__decoder__filter_4_distance_3_fallback()
37125 v_pb0 = ((uint32_t)(0 - v_pb0)); in wuffs_png__decoder__filter_4_distance_3_fallback()
37127 v_pc0 = ((uint32_t)(v_pp0 - v_fc0)); in wuffs_png__decoder__filter_4_distance_3_fallback()
37129 v_pc0 = ((uint32_t)(0 - v_pc0)); in wuffs_png__decoder__filter_4_distance_3_fallback()
37141 v_pp1 = ((uint32_t)(((uint32_t)(v_fa1 + v_fb1)) - v_fc1)); in wuffs_png__decoder__filter_4_distance_3_fallback()
37142 v_pa1 = ((uint32_t)(v_pp1 - v_fa1)); in wuffs_png__decoder__filter_4_distance_3_fallback()
37144 v_pa1 = ((uint32_t)(0 - v_pa1)); in wuffs_png__decoder__filter_4_distance_3_fallback()
37146 v_pb1 = ((uint32_t)(v_pp1 - v_fb1)); in wuffs_png__decoder__filter_4_distance_3_fallback()
37148 v_pb1 = ((uint32_t)(0 - v_pb1)); in wuffs_png__decoder__filter_4_distance_3_fallback()
37150 v_pc1 = ((uint32_t)(v_pp1 - v_fc1)); in wuffs_png__decoder__filter_4_distance_3_fallback()
37152 v_pc1 = ((uint32_t)(0 - v_pc1)); in wuffs_png__decoder__filter_4_distance_3_fallback()
37164 v_pp2 = ((uint32_t)(((uint32_t)(v_fa2 + v_fb2)) - v_fc2)); in wuffs_png__decoder__filter_4_distance_3_fallback()
37165 v_pa2 = ((uint32_t)(v_pp2 - v_fa2)); in wuffs_png__decoder__filter_4_distance_3_fallback()
37167 v_pa2 = ((uint32_t)(0 - v_pa2)); in wuffs_png__decoder__filter_4_distance_3_fallback()
37169 v_pb2 = ((uint32_t)(v_pp2 - v_fb2)); in wuffs_png__decoder__filter_4_distance_3_fallback()
37171 v_pb2 = ((uint32_t)(0 - v_pb2)); in wuffs_png__decoder__filter_4_distance_3_fallback()
37173 v_pc2 = ((uint32_t)(v_pp2 - v_fc2)); in wuffs_png__decoder__filter_4_distance_3_fallback()
37175 v_pc2 = ((uint32_t)(0 - v_pc2)); in wuffs_png__decoder__filter_4_distance_3_fallback()
37195 // -------- func png.decoder.filter_4_distance_4_fallback
37241 …uint8_t* i_end0_curr = v_curr.ptr + (((i_slice_curr.len - (size_t)(v_curr.ptr - i_slice_curr.ptr))… in wuffs_png__decoder__filter_4_distance_4_fallback()
37244 v_pp0 = ((uint32_t)(((uint32_t)(v_fa0 + v_fb0)) - v_fc0)); in wuffs_png__decoder__filter_4_distance_4_fallback()
37245 v_pa0 = ((uint32_t)(v_pp0 - v_fa0)); in wuffs_png__decoder__filter_4_distance_4_fallback()
37247 v_pa0 = ((uint32_t)(0 - v_pa0)); in wuffs_png__decoder__filter_4_distance_4_fallback()
37249 v_pb0 = ((uint32_t)(v_pp0 - v_fb0)); in wuffs_png__decoder__filter_4_distance_4_fallback()
37251 v_pb0 = ((uint32_t)(0 - v_pb0)); in wuffs_png__decoder__filter_4_distance_4_fallback()
37253 v_pc0 = ((uint32_t)(v_pp0 - v_fc0)); in wuffs_png__decoder__filter_4_distance_4_fallback()
37255 v_pc0 = ((uint32_t)(0 - v_pc0)); in wuffs_png__decoder__filter_4_distance_4_fallback()
37267 v_pp1 = ((uint32_t)(((uint32_t)(v_fa1 + v_fb1)) - v_fc1)); in wuffs_png__decoder__filter_4_distance_4_fallback()
37268 v_pa1 = ((uint32_t)(v_pp1 - v_fa1)); in wuffs_png__decoder__filter_4_distance_4_fallback()
37270 v_pa1 = ((uint32_t)(0 - v_pa1)); in wuffs_png__decoder__filter_4_distance_4_fallback()
37272 v_pb1 = ((uint32_t)(v_pp1 - v_fb1)); in wuffs_png__decoder__filter_4_distance_4_fallback()
37274 v_pb1 = ((uint32_t)(0 - v_pb1)); in wuffs_png__decoder__filter_4_distance_4_fallback()
37276 v_pc1 = ((uint32_t)(v_pp1 - v_fc1)); in wuffs_png__decoder__filter_4_distance_4_fallback()
37278 v_pc1 = ((uint32_t)(0 - v_pc1)); in wuffs_png__decoder__filter_4_distance_4_fallback()
37290 v_pp2 = ((uint32_t)(((uint32_t)(v_fa2 + v_fb2)) - v_fc2)); in wuffs_png__decoder__filter_4_distance_4_fallback()
37291 v_pa2 = ((uint32_t)(v_pp2 - v_fa2)); in wuffs_png__decoder__filter_4_distance_4_fallback()
37293 v_pa2 = ((uint32_t)(0 - v_pa2)); in wuffs_png__decoder__filter_4_distance_4_fallback()
37295 v_pb2 = ((uint32_t)(v_pp2 - v_fb2)); in wuffs_png__decoder__filter_4_distance_4_fallback()
37297 v_pb2 = ((uint32_t)(0 - v_pb2)); in wuffs_png__decoder__filter_4_distance_4_fallback()
37299 v_pc2 = ((uint32_t)(v_pp2 - v_fc2)); in wuffs_png__decoder__filter_4_distance_4_fallback()
37301 v_pc2 = ((uint32_t)(0 - v_pc2)); in wuffs_png__decoder__filter_4_distance_4_fallback()
37313 v_pp3 = ((uint32_t)(((uint32_t)(v_fa3 + v_fb3)) - v_fc3)); in wuffs_png__decoder__filter_4_distance_4_fallback()
37314 v_pa3 = ((uint32_t)(v_pp3 - v_fa3)); in wuffs_png__decoder__filter_4_distance_4_fallback()
37316 v_pa3 = ((uint32_t)(0 - v_pa3)); in wuffs_png__decoder__filter_4_distance_4_fallback()
37318 v_pb3 = ((uint32_t)(v_pp3 - v_fb3)); in wuffs_png__decoder__filter_4_distance_4_fallback()
37320 v_pb3 = ((uint32_t)(0 - v_pb3)); in wuffs_png__decoder__filter_4_distance_4_fallback()
37322 v_pc3 = ((uint32_t)(v_pp3 - v_fc3)); in wuffs_png__decoder__filter_4_distance_4_fallback()
37324 v_pc3 = ((uint32_t)(0 - v_pc3)); in wuffs_png__decoder__filter_4_distance_4_fallback()
37344 // ‼ WUFFS MULTI-FILE SECTION +x86_sse42
37345 // -------- func png.decoder.filter_1_distance_4_x86_sse42
37361 …uint8_t* i_end0_curr = v_curr.ptr + (((i_slice_curr.len - (size_t)(v_curr.ptr - i_slice_curr.ptr))… in wuffs_png__decoder__filter_1_distance_4_x86_sse42()
37375 …uint8_t* i_end1_curr = v_curr.ptr + (((i_slice_curr.len - (size_t)(v_curr.ptr - i_slice_curr.ptr))… in wuffs_png__decoder__filter_1_distance_4_x86_sse42()
37388 // ‼ WUFFS MULTI-FILE SECTION -x86_sse42
37390 // ‼ WUFFS MULTI-FILE SECTION +x86_sse42
37391 // -------- func png.decoder.filter_3_distance_4_x86_sse42
37414 …uint8_t* i_end0_curr = v_curr.ptr + (((i_slice_curr.len - (size_t)(v_curr.ptr - i_slice_curr.ptr))… in wuffs_png__decoder__filter_3_distance_4_x86_sse42()
37430 …uint8_t* i_end1_curr = v_curr.ptr + (((i_slice_curr.len - (size_t)(v_curr.ptr - i_slice_curr.ptr))… in wuffs_png__decoder__filter_3_distance_4_x86_sse42()
37451 …uint8_t* i_end0_curr = v_curr.ptr + (((i_slice_curr.len - (size_t)(v_curr.ptr - i_slice_curr.ptr))… in wuffs_png__decoder__filter_3_distance_4_x86_sse42()
37474 …uint8_t* i_end1_curr = v_curr.ptr + (((i_slice_curr.len - (size_t)(v_curr.ptr - i_slice_curr.ptr))… in wuffs_png__decoder__filter_3_distance_4_x86_sse42()
37493 // ‼ WUFFS MULTI-FILE SECTION -x86_sse42
37495 // ‼ WUFFS MULTI-FILE SECTION +x86_sse42
37496 // -------- func png.decoder.filter_4_distance_3_x86_sse42
37526 …v_curr.ptr + wuffs_base__iterate_total_advance((i_slice_curr.len - (size_t)(v_curr.ptr - i_slice_c… in wuffs_png__decoder__filter_4_distance_3_x86_sse42()
37569 …v_curr.ptr + wuffs_base__iterate_total_advance((i_slice_curr.len - (size_t)(v_curr.ptr - i_slice_c… in wuffs_png__decoder__filter_4_distance_3_x86_sse42()
37593 …uint8_t* i_end2_curr = v_curr.ptr + (((i_slice_curr.len - (size_t)(v_curr.ptr - i_slice_curr.ptr))… in wuffs_png__decoder__filter_4_distance_3_x86_sse42()
37619 // ‼ WUFFS MULTI-FILE SECTION -x86_sse42
37621 // ‼ WUFFS MULTI-FILE SECTION +x86_sse42
37622 // -------- func png.decoder.filter_4_distance_4_x86_sse42
37652 …uint8_t* i_end0_curr = v_curr.ptr + (((i_slice_curr.len - (size_t)(v_curr.ptr - i_slice_curr.ptr))… in wuffs_png__decoder__filter_4_distance_4_x86_sse42()
37695 …uint8_t* i_end1_curr = v_curr.ptr + (((i_slice_curr.len - (size_t)(v_curr.ptr - i_slice_curr.ptr))… in wuffs_png__decoder__filter_4_distance_4_x86_sse42()
37723 // ‼ WUFFS MULTI-FILE SECTION -x86_sse42
37725 // -------- func png.decoder.set_quirk_enabled
37735 if (self->private_impl.magic != WUFFS_BASE__MAGIC) { in wuffs_png__decoder__set_quirk_enabled()
37740 self->private_impl.f_ignore_checksum = a_enabled; in wuffs_png__decoder__set_quirk_enabled()
37741 wuffs_zlib__decoder__set_quirk_enabled(&self->private_data.f_zlib, a_quirk, a_enabled); in wuffs_png__decoder__set_quirk_enabled()
37746 // -------- func png.decoder.decode_image_config
37756 if (self->private_impl.magic != WUFFS_BASE__MAGIC) { in wuffs_png__decoder__decode_image_config()
37758 (self->private_impl.magic == WUFFS_BASE__DISABLED) in wuffs_png__decoder__decode_image_config()
37763 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_png__decoder__decode_image_config()
37766 if ((self->private_impl.active_coroutine != 0) && in wuffs_png__decoder__decode_image_config()
37767 (self->private_impl.active_coroutine != 1)) { in wuffs_png__decoder__decode_image_config()
37768 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_png__decoder__decode_image_config()
37771 self->private_impl.active_coroutine = 0; in wuffs_png__decoder__decode_image_config()
37785 io0_a_src = a_src->data.ptr; in wuffs_png__decoder__decode_image_config()
37786 io1_a_src = io0_a_src + a_src->meta.ri; in wuffs_png__decoder__decode_image_config()
37788 io2_a_src = io0_a_src + a_src->meta.wi; in wuffs_png__decoder__decode_image_config()
37791 uint32_t coro_susp_point = self->private_impl.p_decode_image_config[0]; in wuffs_png__decoder__decode_image_config()
37793 v_checksum_have = self->private_data.s_decode_image_config[0].v_checksum_have; in wuffs_png__decoder__decode_image_config()
37798 if (self->private_impl.f_call_sequence == 2) { in wuffs_png__decoder__decode_image_config()
37799 if (self->private_impl.f_metadata_fourcc != 0) { in wuffs_png__decoder__decode_image_config()
37800 self->private_impl.f_call_sequence = 1; in wuffs_png__decoder__decode_image_config()
37804 } else if (self->private_impl.f_call_sequence != 0) { in wuffs_png__decoder__decode_image_config()
37811 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 8)) { in wuffs_png__decoder__decode_image_config()
37815 self->private_data.s_decode_image_config[0].scratch = 0; in wuffs_png__decoder__decode_image_config()
37822 uint64_t* scratch = &self->private_data.s_decode_image_config[0].scratch; in wuffs_png__decoder__decode_image_config()
37844 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 8)) { in wuffs_png__decoder__decode_image_config()
37848 self->private_data.s_decode_image_config[0].scratch = 0; in wuffs_png__decoder__decode_image_config()
37855 uint64_t* scratch = &self->private_data.s_decode_image_config[0].scratch; in wuffs_png__decoder__decode_image_config()
37874 self->private_impl.f_chunk_type_array[0] = 73; in wuffs_png__decoder__decode_image_config()
37875 self->private_impl.f_chunk_type_array[1] = 72; in wuffs_png__decoder__decode_image_config()
37876 self->private_impl.f_chunk_type_array[2] = 68; in wuffs_png__decoder__decode_image_config()
37877 self->private_impl.f_chunk_type_array[3] = 82; in wuffs_png__decoder__decode_image_config()
37878 wuffs_base__ignore_status(wuffs_crc32__ieee_hasher__initialize(&self->private_data.f_crc32, in wuffs_png__decoder__decode_image_config()
37880 …wuffs_crc32__ieee_hasher__update_u32(&self->private_data.f_crc32, wuffs_base__make_slice_u8(self->… in wuffs_png__decoder__decode_image_config()
37882 v_mark = ((uint64_t)(iop_a_src - io0_a_src)); in wuffs_png__decoder__decode_image_config()
37885 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_png__decoder__decode_image_config()
37890 iop_a_src = a_src->data.ptr + a_src->meta.ri; in wuffs_png__decoder__decode_image_config()
37893 if ( ! self->private_impl.f_ignore_checksum) { in wuffs_png__decoder__decode_image_config()
37894 …s_crc32__ieee_hasher__update_u32(&self->private_data.f_crc32, wuffs_base__io__since(v_mark, ((uint… in wuffs_png__decoder__decode_image_config()
37906 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 4)) { in wuffs_png__decoder__decode_image_config()
37910 self->private_data.s_decode_image_config[0].scratch = 0; in wuffs_png__decoder__decode_image_config()
37917 uint64_t* scratch = &self->private_data.s_decode_image_config[0].scratch; in wuffs_png__decoder__decode_image_config()
37921 *scratch |= ((uint64_t)(*iop_a_src++)) << (56 - num_bits_3); in wuffs_png__decoder__decode_image_config()
37932 if ( ! self->private_impl.f_ignore_checksum && (v_checksum_have != v_checksum_want)) { in wuffs_png__decoder__decode_image_config()
37938 while (((uint64_t)(io2_a_src - iop_a_src)) < 8) { in wuffs_png__decoder__decode_image_config()
37939 if (a_src && a_src->meta.closed) { in wuffs_png__decoder__decode_image_config()
37946 self->private_impl.f_chunk_length = wuffs_base__peek_u32be__no_bounds_check(iop_a_src); in wuffs_png__decoder__decode_image_config()
37947 …self->private_impl.f_chunk_type = ((uint32_t)((wuffs_base__peek_u64le__no_bounds_check(iop_a_src) … in wuffs_png__decoder__decode_image_config()
37948 if (self->private_impl.f_chunk_type == 1413563465) { in wuffs_png__decoder__decode_image_config()
37949 if ( ! self->private_impl.f_seen_actl || self->private_impl.f_seen_fctl) { in wuffs_png__decoder__decode_image_config()
37952 self->private_impl.f_seen_idat = true; in wuffs_png__decoder__decode_image_config()
37953 } else if (self->private_impl.f_chunk_type == 1413571686) { in wuffs_png__decoder__decode_image_config()
37954 if (self->private_impl.f_seen_idat && self->private_impl.f_seen_fctl) { in wuffs_png__decoder__decode_image_config()
37961 … if ( ! self->private_impl.f_ignore_checksum && ((self->private_impl.f_chunk_type & 32) == 0)) { in wuffs_png__decoder__decode_image_config()
37962 …self->private_impl.f_chunk_type_array[0] = ((uint8_t)(((self->private_impl.f_chunk_type >> 0) & 25… in wuffs_png__decoder__decode_image_config()
37963 …self->private_impl.f_chunk_type_array[1] = ((uint8_t)(((self->private_impl.f_chunk_type >> 8) & 25… in wuffs_png__decoder__decode_image_config()
37964 …self->private_impl.f_chunk_type_array[2] = ((uint8_t)(((self->private_impl.f_chunk_type >> 16) & 2… in wuffs_png__decoder__decode_image_config()
37965 …self->private_impl.f_chunk_type_array[3] = ((uint8_t)(((self->private_impl.f_chunk_type >> 24) & 2… in wuffs_png__decoder__decode_image_config()
37966 wuffs_base__ignore_status(wuffs_crc32__ieee_hasher__initialize(&self->private_data.f_crc32, in wuffs_png__decoder__decode_image_config()
37968 …wuffs_crc32__ieee_hasher__update_u32(&self->private_data.f_crc32, wuffs_base__make_slice_u8(self->… in wuffs_png__decoder__decode_image_config()
37971 v_mark = ((uint64_t)(iop_a_src - io0_a_src)); in wuffs_png__decoder__decode_image_config()
37974 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_png__decoder__decode_image_config()
37979 iop_a_src = a_src->data.ptr + a_src->meta.ri; in wuffs_png__decoder__decode_image_config()
37982 … if ( ! self->private_impl.f_ignore_checksum && ((self->private_impl.f_chunk_type & 32) == 0)) { in wuffs_png__decoder__decode_image_config()
37983 …s_crc32__ieee_hasher__update_u32(&self->private_data.f_crc32, wuffs_base__io__since(v_mark, ((uint… in wuffs_png__decoder__decode_image_config()
37992 if (self->private_impl.f_metadata_fourcc != 0) { in wuffs_png__decoder__decode_image_config()
37993 self->private_impl.f_call_sequence = 1; in wuffs_png__decoder__decode_image_config()
38000 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 4)) { in wuffs_png__decoder__decode_image_config()
38004 self->private_data.s_decode_image_config[0].scratch = 0; in wuffs_png__decoder__decode_image_config()
38011 uint64_t* scratch = &self->private_data.s_decode_image_config[0].scratch; in wuffs_png__decoder__decode_image_config()
38015 *scratch |= ((uint64_t)(*iop_a_src++)) << (56 - num_bits_5); in wuffs_png__decoder__decode_image_config()
38026 …if ( ! self->private_impl.f_ignore_checksum && ((self->private_impl.f_chunk_type & 32) == 0) && (v… in wuffs_png__decoder__decode_image_config()
38032 if ((self->private_impl.f_color_type == 3) && ! self->private_impl.f_seen_plte) { in wuffs_png__decoder__decode_image_config()
38036 …self->private_impl.f_frame_config_io_position = wuffs_base__u64__sat_add((a_src ? a_src->meta.pos … in wuffs_png__decoder__decode_image_config()
38037 self->private_impl.f_first_config_io_position = self->private_impl.f_frame_config_io_position; in wuffs_png__decoder__decode_image_config()
38041 self->private_impl.f_dst_pixfmt, in wuffs_png__decoder__decode_image_config()
38043 self->private_impl.f_width, in wuffs_png__decoder__decode_image_config()
38044 self->private_impl.f_height, in wuffs_png__decoder__decode_image_config()
38045 self->private_impl.f_first_config_io_position, in wuffs_png__decoder__decode_image_config()
38046 ((self->private_impl.f_color_type <= 3) && ! self->private_impl.f_seen_trns)); in wuffs_png__decoder__decode_image_config()
38048 if ( ! self->private_impl.f_seen_actl) { in wuffs_png__decoder__decode_image_config()
38049 self->private_impl.f_num_animation_frames_value = 1; in wuffs_png__decoder__decode_image_config()
38050 self->private_impl.f_first_rect_x0 = 0; in wuffs_png__decoder__decode_image_config()
38051 self->private_impl.f_first_rect_y0 = 0; in wuffs_png__decoder__decode_image_config()
38052 self->private_impl.f_first_rect_x1 = self->private_impl.f_width; in wuffs_png__decoder__decode_image_config()
38053 self->private_impl.f_first_rect_y1 = self->private_impl.f_height; in wuffs_png__decoder__decode_image_config()
38054 self->private_impl.f_first_duration = 0; in wuffs_png__decoder__decode_image_config()
38055 self->private_impl.f_first_disposal = 0; in wuffs_png__decoder__decode_image_config()
38056 self->private_impl.f_first_overwrite_instead_of_blend = false; in wuffs_png__decoder__decode_image_config()
38058 self->private_impl.f_call_sequence = 3; in wuffs_png__decoder__decode_image_config()
38061 self->private_impl.p_decode_image_config[0] = 0; in wuffs_png__decoder__decode_image_config()
38067 …self->private_impl.p_decode_image_config[0] = wuffs_base__status__is_suspension(&status) ? coro_su… in wuffs_png__decoder__decode_image_config()
38068 self->private_impl.active_coroutine = wuffs_base__status__is_suspension(&status) ? 1 : 0; in wuffs_png__decoder__decode_image_config()
38069 self->private_data.s_decode_image_config[0].v_checksum_have = v_checksum_have; in wuffs_png__decoder__decode_image_config()
38074 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_png__decoder__decode_image_config()
38078 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_png__decoder__decode_image_config()
38083 // -------- func png.decoder.decode_ihdr
38099 io0_a_src = a_src->data.ptr; in wuffs_png__decoder__decode_ihdr()
38100 io1_a_src = io0_a_src + a_src->meta.ri; in wuffs_png__decoder__decode_ihdr()
38102 io2_a_src = io0_a_src + a_src->meta.wi; in wuffs_png__decoder__decode_ihdr()
38105 uint32_t coro_susp_point = self->private_impl.p_decode_ihdr[0]; in wuffs_png__decoder__decode_ihdr()
38112 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 4)) { in wuffs_png__decoder__decode_ihdr()
38116 self->private_data.s_decode_ihdr[0].scratch = 0; in wuffs_png__decoder__decode_ihdr()
38123 uint64_t* scratch = &self->private_data.s_decode_ihdr[0].scratch; in wuffs_png__decoder__decode_ihdr()
38127 *scratch |= ((uint64_t)(*iop_a_src++)) << (56 - num_bits_0); in wuffs_png__decoder__decode_ihdr()
38145 self->private_impl.f_width = v_a32; in wuffs_png__decoder__decode_ihdr()
38149 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 4)) { in wuffs_png__decoder__decode_ihdr()
38153 self->private_data.s_decode_ihdr[0].scratch = 0; in wuffs_png__decoder__decode_ihdr()
38160 uint64_t* scratch = &self->private_data.s_decode_ihdr[0].scratch; in wuffs_png__decoder__decode_ihdr()
38164 *scratch |= ((uint64_t)(*iop_a_src++)) << (56 - num_bits_1); in wuffs_png__decoder__decode_ihdr()
38182 self->private_impl.f_height = v_a32; in wuffs_png__decoder__decode_ihdr()
38196 self->private_impl.f_depth = v_a8; in wuffs_png__decoder__decode_ihdr()
38210 self->private_impl.f_color_type = v_a8; in wuffs_png__decoder__decode_ihdr()
38247 self->private_impl.f_interlace_pass = 0; in wuffs_png__decoder__decode_ihdr()
38249 self->private_impl.f_interlace_pass = 1; in wuffs_png__decoder__decode_ihdr()
38250 self->private_impl.choosy_filter_and_swizzle = ( in wuffs_png__decoder__decode_ihdr()
38256 self->private_impl.f_filter_distance = 0; in wuffs_png__decoder__decode_ihdr()
38258 if (self->private_impl.f_filter_distance == 0) { in wuffs_png__decoder__decode_ihdr()
38262 …elf->private_impl.f_overall_workbuf_length = (((uint64_t)(self->private_impl.f_height)) * (1 + wuf… in wuffs_png__decoder__decode_ihdr()
38267 self->private_impl.p_decode_ihdr[0] = 0; in wuffs_png__decoder__decode_ihdr()
38273 …self->private_impl.p_decode_ihdr[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_point… in wuffs_png__decoder__decode_ihdr()
38278 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_png__decoder__decode_ihdr()
38284 // -------- func png.decoder.assign_filter_distance
38289 if (self->private_impl.f_depth < 8) { in wuffs_png__decoder__assign_filter_distance()
38290 …if ((self->private_impl.f_depth != 1) && (self->private_impl.f_depth != 2) && (self->private_impl.… in wuffs_png__decoder__assign_filter_distance()
38292 } else if (self->private_impl.f_color_type == 0) { in wuffs_png__decoder__assign_filter_distance()
38293 self->private_impl.f_dst_pixfmt = 536870920; in wuffs_png__decoder__assign_filter_distance()
38294 self->private_impl.f_src_pixfmt = 536870920; in wuffs_png__decoder__assign_filter_distance()
38295 } else if (self->private_impl.f_color_type == 3) { in wuffs_png__decoder__assign_filter_distance()
38296 self->private_impl.f_dst_pixfmt = 2198077448; in wuffs_png__decoder__assign_filter_distance()
38297 self->private_impl.f_src_pixfmt = 2198077448; in wuffs_png__decoder__assign_filter_distance()
38301 self->private_impl.f_filter_distance = 1; in wuffs_png__decoder__assign_filter_distance()
38302 self->private_impl.choosy_filter_and_swizzle = ( in wuffs_png__decoder__assign_filter_distance()
38304 } else if (self->private_impl.f_color_type == 0) { in wuffs_png__decoder__assign_filter_distance()
38305 if (self->private_impl.f_depth == 8) { in wuffs_png__decoder__assign_filter_distance()
38306 self->private_impl.f_dst_pixfmt = 536870920; in wuffs_png__decoder__assign_filter_distance()
38307 self->private_impl.f_src_pixfmt = 536870920; in wuffs_png__decoder__assign_filter_distance()
38308 self->private_impl.f_filter_distance = 1; in wuffs_png__decoder__assign_filter_distance()
38309 } else if (self->private_impl.f_depth == 16) { in wuffs_png__decoder__assign_filter_distance()
38310 if (self->private_impl.f_interlace_pass == 0) { in wuffs_png__decoder__assign_filter_distance()
38311 self->private_impl.f_dst_pixfmt = 536870923; in wuffs_png__decoder__assign_filter_distance()
38312 self->private_impl.f_src_pixfmt = 537919499; in wuffs_png__decoder__assign_filter_distance()
38314 self->private_impl.f_dst_pixfmt = 2164308923; in wuffs_png__decoder__assign_filter_distance()
38315 self->private_impl.f_src_pixfmt = 2164308923; in wuffs_png__decoder__assign_filter_distance()
38317 self->private_impl.f_filter_distance = 2; in wuffs_png__decoder__assign_filter_distance()
38319 } else if (self->private_impl.f_color_type == 2) { in wuffs_png__decoder__assign_filter_distance()
38320 if (self->private_impl.f_depth == 8) { in wuffs_png__decoder__assign_filter_distance()
38321 self->private_impl.f_dst_pixfmt = 2147485832; in wuffs_png__decoder__assign_filter_distance()
38322 self->private_impl.f_src_pixfmt = 2684356744; in wuffs_png__decoder__assign_filter_distance()
38323 self->private_impl.f_filter_distance = 3; in wuffs_png__decoder__assign_filter_distance()
38324 } else if (self->private_impl.f_depth == 16) { in wuffs_png__decoder__assign_filter_distance()
38325 self->private_impl.f_dst_pixfmt = 2164308923; in wuffs_png__decoder__assign_filter_distance()
38326 self->private_impl.f_src_pixfmt = 2164308923; in wuffs_png__decoder__assign_filter_distance()
38327 self->private_impl.f_filter_distance = 6; in wuffs_png__decoder__assign_filter_distance()
38328 self->private_impl.choosy_filter_and_swizzle = ( in wuffs_png__decoder__assign_filter_distance()
38331 } else if (self->private_impl.f_color_type == 3) { in wuffs_png__decoder__assign_filter_distance()
38332 if (self->private_impl.f_depth == 8) { in wuffs_png__decoder__assign_filter_distance()
38333 self->private_impl.f_dst_pixfmt = 2198077448; in wuffs_png__decoder__assign_filter_distance()
38334 self->private_impl.f_src_pixfmt = 2198077448; in wuffs_png__decoder__assign_filter_distance()
38335 self->private_impl.f_filter_distance = 1; in wuffs_png__decoder__assign_filter_distance()
38337 } else if (self->private_impl.f_color_type == 4) { in wuffs_png__decoder__assign_filter_distance()
38338 if (self->private_impl.f_depth == 8) { in wuffs_png__decoder__assign_filter_distance()
38339 self->private_impl.f_dst_pixfmt = 2164295816; in wuffs_png__decoder__assign_filter_distance()
38340 self->private_impl.f_src_pixfmt = 2164295816; in wuffs_png__decoder__assign_filter_distance()
38341 self->private_impl.f_filter_distance = 2; in wuffs_png__decoder__assign_filter_distance()
38342 self->private_impl.choosy_filter_and_swizzle = ( in wuffs_png__decoder__assign_filter_distance()
38344 } else if (self->private_impl.f_depth == 16) { in wuffs_png__decoder__assign_filter_distance()
38345 self->private_impl.f_dst_pixfmt = 2164308923; in wuffs_png__decoder__assign_filter_distance()
38346 self->private_impl.f_src_pixfmt = 2164308923; in wuffs_png__decoder__assign_filter_distance()
38347 self->private_impl.f_filter_distance = 4; in wuffs_png__decoder__assign_filter_distance()
38348 self->private_impl.choosy_filter_and_swizzle = ( in wuffs_png__decoder__assign_filter_distance()
38351 } else if (self->private_impl.f_color_type == 6) { in wuffs_png__decoder__assign_filter_distance()
38352 if (self->private_impl.f_depth == 8) { in wuffs_png__decoder__assign_filter_distance()
38353 self->private_impl.f_dst_pixfmt = 2164295816; in wuffs_png__decoder__assign_filter_distance()
38354 self->private_impl.f_src_pixfmt = 2701166728; in wuffs_png__decoder__assign_filter_distance()
38355 self->private_impl.f_filter_distance = 4; in wuffs_png__decoder__assign_filter_distance()
38356 } else if (self->private_impl.f_depth == 16) { in wuffs_png__decoder__assign_filter_distance()
38357 self->private_impl.f_dst_pixfmt = 2164308923; in wuffs_png__decoder__assign_filter_distance()
38358 self->private_impl.f_src_pixfmt = 2164308923; in wuffs_png__decoder__assign_filter_distance()
38359 self->private_impl.f_filter_distance = 8; in wuffs_png__decoder__assign_filter_distance()
38360 self->private_impl.choosy_filter_and_swizzle = ( in wuffs_png__decoder__assign_filter_distance()
38367 // -------- func png.decoder.calculate_bytes_per_row
38375 if (self->private_impl.f_depth == 1) { in wuffs_png__decoder__calculate_bytes_per_row()
38377 } else if (self->private_impl.f_depth == 2) { in wuffs_png__decoder__calculate_bytes_per_row()
38379 } else if (self->private_impl.f_depth == 4) { in wuffs_png__decoder__calculate_bytes_per_row()
38382 v_bytes_per_channel = ((uint64_t)((self->private_impl.f_depth >> 3))); in wuffs_png__decoder__calculate_bytes_per_row()
38383 …return (((uint64_t)(a_width)) * v_bytes_per_channel * ((uint64_t)(WUFFS_PNG__NUM_CHANNELS[self->pr… in wuffs_png__decoder__calculate_bytes_per_row()
38386 // -------- func png.decoder.choose_filter_implementations
38391 if (self->private_impl.f_filter_distance == 3) { in wuffs_png__decoder__choose_filter_implementations()
38392 self->private_impl.choosy_filter_1 = ( in wuffs_png__decoder__choose_filter_implementations()
38394 self->private_impl.choosy_filter_3 = ( in wuffs_png__decoder__choose_filter_implementations()
38396 self->private_impl.choosy_filter_4 = ( in wuffs_png__decoder__choose_filter_implementations()
38404 } else if (self->private_impl.f_filter_distance == 4) { in wuffs_png__decoder__choose_filter_implementations()
38405 self->private_impl.choosy_filter_1 = ( in wuffs_png__decoder__choose_filter_implementations()
38413 self->private_impl.choosy_filter_3 = ( in wuffs_png__decoder__choose_filter_implementations()
38421 self->private_impl.choosy_filter_4 = ( in wuffs_png__decoder__choose_filter_implementations()
38433 // -------- func png.decoder.decode_other_chunk
38446 io0_a_src = a_src->data.ptr; in wuffs_png__decoder__decode_other_chunk()
38447 io1_a_src = io0_a_src + a_src->meta.ri; in wuffs_png__decoder__decode_other_chunk()
38449 io2_a_src = io0_a_src + a_src->meta.wi; in wuffs_png__decoder__decode_other_chunk()
38452 uint32_t coro_susp_point = self->private_impl.p_decode_other_chunk[0]; in wuffs_png__decoder__decode_other_chunk()
38456 if (self->private_impl.f_chunk_type == 1163152464) { in wuffs_png__decoder__decode_other_chunk()
38457 if (self->private_impl.f_seen_plte) { in wuffs_png__decoder__decode_other_chunk()
38460 } else if (self->private_impl.f_color_type == 3) { in wuffs_png__decoder__decode_other_chunk()
38462 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_png__decoder__decode_other_chunk()
38467 iop_a_src = a_src->data.ptr + a_src->meta.ri; in wuffs_png__decoder__decode_other_chunk()
38472 } else if ((self->private_impl.f_color_type == 2) || (self->private_impl.f_color_type == 6)) { in wuffs_png__decoder__decode_other_chunk()
38477 self->private_impl.f_seen_plte = true; in wuffs_png__decoder__decode_other_chunk()
38478 } else if ((self->private_impl.f_chunk_type & 32) == 0) { in wuffs_png__decoder__decode_other_chunk()
38479 if (self->private_impl.f_chunk_type != 1413563465) { in wuffs_png__decoder__decode_other_chunk()
38483 } else if (self->private_impl.f_chunk_type == 1280598881) { in wuffs_png__decoder__decode_other_chunk()
38484 if (self->private_impl.f_seen_actl) { in wuffs_png__decoder__decode_other_chunk()
38489 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_png__decoder__decode_other_chunk()
38494 iop_a_src = a_src->data.ptr + a_src->meta.ri; in wuffs_png__decoder__decode_other_chunk()
38499 self->private_impl.f_seen_actl = true; in wuffs_png__decoder__decode_other_chunk()
38500 } else if (self->private_impl.f_chunk_type == 1297238115) { in wuffs_png__decoder__decode_other_chunk()
38501 if (self->private_impl.f_report_metadata_chrm) { in wuffs_png__decoder__decode_other_chunk()
38502 if (self->private_impl.f_seen_chrm) { in wuffs_png__decoder__decode_other_chunk()
38507 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_png__decoder__decode_other_chunk()
38512 iop_a_src = a_src->data.ptr + a_src->meta.ri; in wuffs_png__decoder__decode_other_chunk()
38517 self->private_impl.f_seen_chrm = true; in wuffs_png__decoder__decode_other_chunk()
38519 } else if (self->private_impl.f_chunk_type == 1716082789) { in wuffs_png__decoder__decode_other_chunk()
38520 if (self->private_impl.f_report_metadata_exif) { in wuffs_png__decoder__decode_other_chunk()
38521 if (self->private_impl.f_seen_exif) { in wuffs_png__decoder__decode_other_chunk()
38526 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_png__decoder__decode_other_chunk()
38531 iop_a_src = a_src->data.ptr + a_src->meta.ri; in wuffs_png__decoder__decode_other_chunk()
38536 self->private_impl.f_seen_exif = true; in wuffs_png__decoder__decode_other_chunk()
38538 } else if (self->private_impl.f_chunk_type == 1280598886) { in wuffs_png__decoder__decode_other_chunk()
38539 if (self->private_impl.f_seen_fctl) { in wuffs_png__decoder__decode_other_chunk()
38544 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_png__decoder__decode_other_chunk()
38549 iop_a_src = a_src->data.ptr + a_src->meta.ri; in wuffs_png__decoder__decode_other_chunk()
38554 self->private_impl.f_seen_fctl = true; in wuffs_png__decoder__decode_other_chunk()
38555 } else if (self->private_impl.f_chunk_type == 1095582055) { in wuffs_png__decoder__decode_other_chunk()
38556 if (self->private_impl.f_report_metadata_gama) { in wuffs_png__decoder__decode_other_chunk()
38557 if (self->private_impl.f_seen_gama) { in wuffs_png__decoder__decode_other_chunk()
38562 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_png__decoder__decode_other_chunk()
38567 iop_a_src = a_src->data.ptr + a_src->meta.ri; in wuffs_png__decoder__decode_other_chunk()
38572 self->private_impl.f_seen_gama = true; in wuffs_png__decoder__decode_other_chunk()
38574 } else if (self->private_impl.f_chunk_type == 1346585449) { in wuffs_png__decoder__decode_other_chunk()
38575 if (self->private_impl.f_report_metadata_iccp) { in wuffs_png__decoder__decode_other_chunk()
38576 if (self->private_impl.f_seen_iccp) { in wuffs_png__decoder__decode_other_chunk()
38581 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_png__decoder__decode_other_chunk()
38586 iop_a_src = a_src->data.ptr + a_src->meta.ri; in wuffs_png__decoder__decode_other_chunk()
38591 self->private_impl.f_seen_iccp = true; in wuffs_png__decoder__decode_other_chunk()
38593 } else if (self->private_impl.f_chunk_type == 1111970419) { in wuffs_png__decoder__decode_other_chunk()
38594 if (self->private_impl.f_report_metadata_srgb) { in wuffs_png__decoder__decode_other_chunk()
38595 if (self->private_impl.f_seen_srgb) { in wuffs_png__decoder__decode_other_chunk()
38600 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_png__decoder__decode_other_chunk()
38605 iop_a_src = a_src->data.ptr + a_src->meta.ri; in wuffs_png__decoder__decode_other_chunk()
38610 self->private_impl.f_seen_srgb = true; in wuffs_png__decoder__decode_other_chunk()
38612 } else if (self->private_impl.f_chunk_type == 1397641844) { in wuffs_png__decoder__decode_other_chunk()
38613 …if (self->private_impl.f_seen_trns || (self->private_impl.f_color_type > 3) || ((self->private_imp… in wuffs_png__decoder__decode_other_chunk()
38618 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_png__decoder__decode_other_chunk()
38623 iop_a_src = a_src->data.ptr + a_src->meta.ri; in wuffs_png__decoder__decode_other_chunk()
38628 self->private_impl.f_seen_trns = true; in wuffs_png__decoder__decode_other_chunk()
38629 …} else if ((self->private_impl.f_chunk_type == 1951945833) || (self->private_impl.f_chunk_type == … in wuffs_png__decoder__decode_other_chunk()
38630 if (self->private_impl.f_report_metadata_kvp) { in wuffs_png__decoder__decode_other_chunk()
38631 self->private_impl.f_metadata_flavor = 4; in wuffs_png__decoder__decode_other_chunk()
38632 self->private_impl.f_metadata_fourcc = 1263947851; in wuffs_png__decoder__decode_other_chunk()
38633 self->private_impl.f_metadata_x = 0; in wuffs_png__decoder__decode_other_chunk()
38634 self->private_impl.f_metadata_y = 0; in wuffs_png__decoder__decode_other_chunk()
38635 self->private_impl.f_metadata_z = 0; in wuffs_png__decoder__decode_other_chunk()
38638 if (self->private_impl.f_metadata_fourcc == 0) { in wuffs_png__decoder__decode_other_chunk()
38639 self->private_data.s_decode_other_chunk[0].scratch = self->private_impl.f_chunk_length; in wuffs_png__decoder__decode_other_chunk()
38641 … if (self->private_data.s_decode_other_chunk[0].scratch > ((uint64_t)(io2_a_src - iop_a_src))) { in wuffs_png__decoder__decode_other_chunk()
38642 self->private_data.s_decode_other_chunk[0].scratch -= ((uint64_t)(io2_a_src - iop_a_src)); in wuffs_png__decoder__decode_other_chunk()
38647 iop_a_src += self->private_data.s_decode_other_chunk[0].scratch; in wuffs_png__decoder__decode_other_chunk()
38652 self->private_impl.p_decode_other_chunk[0] = 0; in wuffs_png__decoder__decode_other_chunk()
38658 …self->private_impl.p_decode_other_chunk[0] = wuffs_base__status__is_suspension(&status) ? coro_sus… in wuffs_png__decoder__decode_other_chunk()
38663 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_png__decoder__decode_other_chunk()
38669 // -------- func png.decoder.decode_actl
38682 io0_a_src = a_src->data.ptr; in wuffs_png__decoder__decode_actl()
38683 io1_a_src = io0_a_src + a_src->meta.ri; in wuffs_png__decoder__decode_actl()
38685 io2_a_src = io0_a_src + a_src->meta.wi; in wuffs_png__decoder__decode_actl()
38688 uint32_t coro_susp_point = self->private_impl.p_decode_actl[0]; in wuffs_png__decoder__decode_actl()
38692 if (self->private_impl.f_chunk_length != 8) { in wuffs_png__decoder__decode_actl()
38695 } else if (self->private_impl.f_interlace_pass > 0) { in wuffs_png__decoder__decode_actl()
38699 self->private_impl.f_chunk_length = 0; in wuffs_png__decoder__decode_actl()
38703 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 4)) { in wuffs_png__decoder__decode_actl()
38707 self->private_data.s_decode_actl[0].scratch = 0; in wuffs_png__decoder__decode_actl()
38714 uint64_t* scratch = &self->private_data.s_decode_actl[0].scratch; in wuffs_png__decoder__decode_actl()
38718 *scratch |= ((uint64_t)(*iop_a_src++)) << (56 - num_bits_0); in wuffs_png__decoder__decode_actl()
38727 self->private_impl.f_num_animation_frames_value = t_0; in wuffs_png__decoder__decode_actl()
38729 if (self->private_impl.f_num_animation_frames_value == 0) { in wuffs_png__decoder__decode_actl()
38736 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 4)) { in wuffs_png__decoder__decode_actl()
38740 self->private_data.s_decode_actl[0].scratch = 0; in wuffs_png__decoder__decode_actl()
38747 uint64_t* scratch = &self->private_data.s_decode_actl[0].scratch; in wuffs_png__decoder__decode_actl()
38751 *scratch |= ((uint64_t)(*iop_a_src++)) << (56 - num_bits_1); in wuffs_png__decoder__decode_actl()
38760 self->private_impl.f_num_animation_loops_value = t_1; in wuffs_png__decoder__decode_actl()
38765 self->private_impl.p_decode_actl[0] = 0; in wuffs_png__decoder__decode_actl()
38771 …self->private_impl.p_decode_actl[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_point… in wuffs_png__decoder__decode_actl()
38776 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_png__decoder__decode_actl()
38782 // -------- func png.decoder.decode_chrm
38797 io0_a_src = a_src->data.ptr; in wuffs_png__decoder__decode_chrm()
38798 io1_a_src = io0_a_src + a_src->meta.ri; in wuffs_png__decoder__decode_chrm()
38800 io2_a_src = io0_a_src + a_src->meta.wi; in wuffs_png__decoder__decode_chrm()
38803 uint32_t coro_susp_point = self->private_impl.p_decode_chrm[0]; in wuffs_png__decoder__decode_chrm()
38807 if (self->private_impl.f_chunk_length != 32) { in wuffs_png__decoder__decode_chrm()
38811 self->private_impl.f_chunk_length = 0; in wuffs_png__decoder__decode_chrm()
38812 self->private_impl.f_metadata_flavor = 5; in wuffs_png__decoder__decode_chrm()
38813 self->private_impl.f_metadata_fourcc = 1128813133; in wuffs_png__decoder__decode_chrm()
38814 self->private_impl.f_metadata_x = 0; in wuffs_png__decoder__decode_chrm()
38815 self->private_impl.f_metadata_y = 0; in wuffs_png__decoder__decode_chrm()
38816 self->private_impl.f_metadata_z = 0; in wuffs_png__decoder__decode_chrm()
38820 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 4)) { in wuffs_png__decoder__decode_chrm()
38824 self->private_data.s_decode_chrm[0].scratch = 0; in wuffs_png__decoder__decode_chrm()
38831 uint64_t* scratch = &self->private_data.s_decode_chrm[0].scratch; in wuffs_png__decoder__decode_chrm()
38835 *scratch |= ((uint64_t)(*iop_a_src++)) << (56 - num_bits_0); in wuffs_png__decoder__decode_chrm()
38846 self->private_impl.f_metadata_x |= ((16777215 & v_u) << 0); in wuffs_png__decoder__decode_chrm()
38850 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 4)) { in wuffs_png__decoder__decode_chrm()
38854 self->private_data.s_decode_chrm[0].scratch = 0; in wuffs_png__decoder__decode_chrm()
38861 uint64_t* scratch = &self->private_data.s_decode_chrm[0].scratch; in wuffs_png__decoder__decode_chrm()
38865 *scratch |= ((uint64_t)(*iop_a_src++)) << (56 - num_bits_1); in wuffs_png__decoder__decode_chrm()
38876 self->private_impl.f_metadata_x |= ((16777215 & v_u) << 24); in wuffs_png__decoder__decode_chrm()
38880 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 4)) { in wuffs_png__decoder__decode_chrm()
38884 self->private_data.s_decode_chrm[0].scratch = 0; in wuffs_png__decoder__decode_chrm()
38891 uint64_t* scratch = &self->private_data.s_decode_chrm[0].scratch; in wuffs_png__decoder__decode_chrm()
38895 *scratch |= ((uint64_t)(*iop_a_src++)) << (56 - num_bits_2); in wuffs_png__decoder__decode_chrm()
38906 self->private_impl.f_metadata_x |= ((uint64_t)((16777215 & v_u) << 48)); in wuffs_png__decoder__decode_chrm()
38907 self->private_impl.f_metadata_y |= ((16777215 & v_u) >> 16); in wuffs_png__decoder__decode_chrm()
38911 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 4)) { in wuffs_png__decoder__decode_chrm()
38915 self->private_data.s_decode_chrm[0].scratch = 0; in wuffs_png__decoder__decode_chrm()
38922 uint64_t* scratch = &self->private_data.s_decode_chrm[0].scratch; in wuffs_png__decoder__decode_chrm()
38926 *scratch |= ((uint64_t)(*iop_a_src++)) << (56 - num_bits_3); in wuffs_png__decoder__decode_chrm()
38937 self->private_impl.f_metadata_y |= ((16777215 & v_u) << 8); in wuffs_png__decoder__decode_chrm()
38941 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 4)) { in wuffs_png__decoder__decode_chrm()
38945 self->private_data.s_decode_chrm[0].scratch = 0; in wuffs_png__decoder__decode_chrm()
38952 uint64_t* scratch = &self->private_data.s_decode_chrm[0].scratch; in wuffs_png__decoder__decode_chrm()
38956 *scratch |= ((uint64_t)(*iop_a_src++)) << (56 - num_bits_4); in wuffs_png__decoder__decode_chrm()
38967 self->private_impl.f_metadata_y |= ((16777215 & v_u) << 32); in wuffs_png__decoder__decode_chrm()
38971 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 4)) { in wuffs_png__decoder__decode_chrm()
38975 self->private_data.s_decode_chrm[0].scratch = 0; in wuffs_png__decoder__decode_chrm()
38982 uint64_t* scratch = &self->private_data.s_decode_chrm[0].scratch; in wuffs_png__decoder__decode_chrm()
38986 *scratch |= ((uint64_t)(*iop_a_src++)) << (56 - num_bits_5); in wuffs_png__decoder__decode_chrm()
38997 self->private_impl.f_metadata_y |= ((uint64_t)((16777215 & v_u) << 56)); in wuffs_png__decoder__decode_chrm()
38998 self->private_impl.f_metadata_z |= ((16777215 & v_u) >> 8); in wuffs_png__decoder__decode_chrm()
39002 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 4)) { in wuffs_png__decoder__decode_chrm()
39006 self->private_data.s_decode_chrm[0].scratch = 0; in wuffs_png__decoder__decode_chrm()
39013 uint64_t* scratch = &self->private_data.s_decode_chrm[0].scratch; in wuffs_png__decoder__decode_chrm()
39017 *scratch |= ((uint64_t)(*iop_a_src++)) << (56 - num_bits_6); in wuffs_png__decoder__decode_chrm()
39028 self->private_impl.f_metadata_z |= ((16777215 & v_u) << 16); in wuffs_png__decoder__decode_chrm()
39032 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 4)) { in wuffs_png__decoder__decode_chrm()
39036 self->private_data.s_decode_chrm[0].scratch = 0; in wuffs_png__decoder__decode_chrm()
39043 uint64_t* scratch = &self->private_data.s_decode_chrm[0].scratch; in wuffs_png__decoder__decode_chrm()
39047 *scratch |= ((uint64_t)(*iop_a_src++)) << (56 - num_bits_7); in wuffs_png__decoder__decode_chrm()
39058 self->private_impl.f_metadata_z |= ((16777215 & v_u) << 40); in wuffs_png__decoder__decode_chrm()
39062 self->private_impl.p_decode_chrm[0] = 0; in wuffs_png__decoder__decode_chrm()
39068 …self->private_impl.p_decode_chrm[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_point… in wuffs_png__decoder__decode_chrm()
39073 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_png__decoder__decode_chrm()
39079 // -------- func png.decoder.decode_exif
39092 io0_a_src = a_src->data.ptr; in wuffs_png__decoder__decode_exif()
39093 io1_a_src = io0_a_src + a_src->meta.ri; in wuffs_png__decoder__decode_exif()
39095 io2_a_src = io0_a_src + a_src->meta.wi; in wuffs_png__decoder__decode_exif()
39098 if (self->private_impl.f_chunk_length < 4) { in wuffs_png__decoder__decode_exif()
39102 self->private_impl.f_metadata_flavor = 3; in wuffs_png__decoder__decode_exif()
39103 self->private_impl.f_metadata_fourcc = 1163413830; in wuffs_png__decoder__decode_exif()
39104 self->private_impl.f_metadata_x = 0; in wuffs_png__decoder__decode_exif()
39105 …self->private_impl.f_metadata_y = wuffs_base__u64__sat_add((a_src ? a_src->meta.pos : 0), ((uint64… in wuffs_png__decoder__decode_exif()
39106 …self->private_impl.f_metadata_z = wuffs_base__u64__sat_add(self->private_impl.f_metadata_y, ((uint… in wuffs_png__decoder__decode_exif()
39107 self->private_impl.f_chunk_length = 0; in wuffs_png__decoder__decode_exif()
39114 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_png__decoder__decode_exif()
39120 // -------- func png.decoder.decode_fctl
39138 io0_a_src = a_src->data.ptr; in wuffs_png__decoder__decode_fctl()
39139 io1_a_src = io0_a_src + a_src->meta.ri; in wuffs_png__decoder__decode_fctl()
39141 io2_a_src = io0_a_src + a_src->meta.wi; in wuffs_png__decoder__decode_fctl()
39144 uint32_t coro_susp_point = self->private_impl.p_decode_fctl[0]; in wuffs_png__decoder__decode_fctl()
39146 v_x0 = self->private_data.s_decode_fctl[0].v_x0; in wuffs_png__decoder__decode_fctl()
39147 v_x1 = self->private_data.s_decode_fctl[0].v_x1; in wuffs_png__decoder__decode_fctl()
39148 v_y1 = self->private_data.s_decode_fctl[0].v_y1; in wuffs_png__decoder__decode_fctl()
39153 if (self->private_impl.f_chunk_length != 26) { in wuffs_png__decoder__decode_fctl()
39157 self->private_impl.f_chunk_length = 0; in wuffs_png__decoder__decode_fctl()
39161 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 4)) { in wuffs_png__decoder__decode_fctl()
39165 self->private_data.s_decode_fctl[0].scratch = 0; in wuffs_png__decoder__decode_fctl()
39172 uint64_t* scratch = &self->private_data.s_decode_fctl[0].scratch; in wuffs_png__decoder__decode_fctl()
39176 *scratch |= ((uint64_t)(*iop_a_src++)) << (56 - num_bits_0); in wuffs_png__decoder__decode_fctl()
39187 if (v_x0 != self->private_impl.f_next_animation_seq_num) { in wuffs_png__decoder__decode_fctl()
39190 } else if (self->private_impl.f_next_animation_seq_num >= 4294967295) { in wuffs_png__decoder__decode_fctl()
39194 self->private_impl.f_next_animation_seq_num += 1; in wuffs_png__decoder__decode_fctl()
39198 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 4)) { in wuffs_png__decoder__decode_fctl()
39202 self->private_data.s_decode_fctl[0].scratch = 0; in wuffs_png__decoder__decode_fctl()
39209 uint64_t* scratch = &self->private_data.s_decode_fctl[0].scratch; in wuffs_png__decoder__decode_fctl()
39213 *scratch |= ((uint64_t)(*iop_a_src++)) << (56 - num_bits_1); in wuffs_png__decoder__decode_fctl()
39227 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 4)) { in wuffs_png__decoder__decode_fctl()
39231 self->private_data.s_decode_fctl[0].scratch = 0; in wuffs_png__decoder__decode_fctl()
39238 uint64_t* scratch = &self->private_data.s_decode_fctl[0].scratch; in wuffs_png__decoder__decode_fctl()
39242 *scratch |= ((uint64_t)(*iop_a_src++)) << (56 - num_bits_2); in wuffs_png__decoder__decode_fctl()
39256 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 4)) { in wuffs_png__decoder__decode_fctl()
39260 self->private_data.s_decode_fctl[0].scratch = 0; in wuffs_png__decoder__decode_fctl()
39267 uint64_t* scratch = &self->private_data.s_decode_fctl[0].scratch; in wuffs_png__decoder__decode_fctl()
39271 *scratch |= ((uint64_t)(*iop_a_src++)) << (56 - num_bits_3); in wuffs_png__decoder__decode_fctl()
39285 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 4)) { in wuffs_png__decoder__decode_fctl()
39289 self->private_data.s_decode_fctl[0].scratch = 0; in wuffs_png__decoder__decode_fctl()
39296 uint64_t* scratch = &self->private_data.s_decode_fctl[0].scratch; in wuffs_png__decoder__decode_fctl()
39300 *scratch |= ((uint64_t)(*iop_a_src++)) << (56 - num_bits_4); in wuffs_png__decoder__decode_fctl()
39314 (v_x0 > self->private_impl.f_width) || in wuffs_png__decoder__decode_fctl()
39315 (v_x1 > self->private_impl.f_width) || in wuffs_png__decoder__decode_fctl()
39317 (v_y0 > self->private_impl.f_height) || in wuffs_png__decoder__decode_fctl()
39318 (v_y1 > self->private_impl.f_height)) { in wuffs_png__decoder__decode_fctl()
39322 self->private_impl.f_frame_rect_x0 = v_x0; in wuffs_png__decoder__decode_fctl()
39323 self->private_impl.f_frame_rect_y0 = v_y0; in wuffs_png__decoder__decode_fctl()
39324 self->private_impl.f_frame_rect_x1 = v_x1; in wuffs_png__decoder__decode_fctl()
39325 self->private_impl.f_frame_rect_y1 = v_y1; in wuffs_png__decoder__decode_fctl()
39329 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 2)) { in wuffs_png__decoder__decode_fctl()
39333 self->private_data.s_decode_fctl[0].scratch = 0; in wuffs_png__decoder__decode_fctl()
39340 uint64_t* scratch = &self->private_data.s_decode_fctl[0].scratch; in wuffs_png__decoder__decode_fctl()
39344 *scratch |= ((uint64_t)(*iop_a_src++)) << (56 - num_bits_5); in wuffs_png__decoder__decode_fctl()
39358 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 2)) { in wuffs_png__decoder__decode_fctl()
39362 self->private_data.s_decode_fctl[0].scratch = 0; in wuffs_png__decoder__decode_fctl()
39369 uint64_t* scratch = &self->private_data.s_decode_fctl[0].scratch; in wuffs_png__decoder__decode_fctl()
39373 *scratch |= ((uint64_t)(*iop_a_src++)) << (56 - num_bits_6); in wuffs_png__decoder__decode_fctl()
39385 self->private_impl.f_frame_duration = (((uint64_t)(v_x0)) * 7056000); in wuffs_png__decoder__decode_fctl()
39387 self->private_impl.f_frame_duration = ((((uint64_t)(v_x0)) * 705600000) / ((uint64_t)(v_x1))); in wuffs_png__decoder__decode_fctl()
39399 self->private_impl.f_frame_disposal = 0; in wuffs_png__decoder__decode_fctl()
39401 self->private_impl.f_frame_disposal = 1; in wuffs_png__decoder__decode_fctl()
39403 self->private_impl.f_frame_disposal = 2; in wuffs_png__decoder__decode_fctl()
39418 self->private_impl.f_frame_overwrite_instead_of_blend = true; in wuffs_png__decoder__decode_fctl()
39420 self->private_impl.f_frame_overwrite_instead_of_blend = false; in wuffs_png__decoder__decode_fctl()
39425 if (self->private_impl.f_num_decoded_frame_configs_value == 0) { in wuffs_png__decoder__decode_fctl()
39426 self->private_impl.f_first_rect_x0 = self->private_impl.f_frame_rect_x0; in wuffs_png__decoder__decode_fctl()
39427 self->private_impl.f_first_rect_y0 = self->private_impl.f_frame_rect_y0; in wuffs_png__decoder__decode_fctl()
39428 self->private_impl.f_first_rect_x1 = self->private_impl.f_frame_rect_x1; in wuffs_png__decoder__decode_fctl()
39429 self->private_impl.f_first_rect_y1 = self->private_impl.f_frame_rect_y1; in wuffs_png__decoder__decode_fctl()
39430 self->private_impl.f_first_duration = self->private_impl.f_frame_duration; in wuffs_png__decoder__decode_fctl()
39431 self->private_impl.f_first_disposal = self->private_impl.f_frame_disposal; in wuffs_png__decoder__decode_fctl()
39432 …self->private_impl.f_first_overwrite_instead_of_blend = self->private_impl.f_frame_overwrite_inste… in wuffs_png__decoder__decode_fctl()
39437 self->private_impl.p_decode_fctl[0] = 0; in wuffs_png__decoder__decode_fctl()
39443 …self->private_impl.p_decode_fctl[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_point… in wuffs_png__decoder__decode_fctl()
39444 self->private_data.s_decode_fctl[0].v_x0 = v_x0; in wuffs_png__decoder__decode_fctl()
39445 self->private_data.s_decode_fctl[0].v_x1 = v_x1; in wuffs_png__decoder__decode_fctl()
39446 self->private_data.s_decode_fctl[0].v_y1 = v_y1; in wuffs_png__decoder__decode_fctl()
39451 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_png__decoder__decode_fctl()
39457 // -------- func png.decoder.decode_gama
39470 io0_a_src = a_src->data.ptr; in wuffs_png__decoder__decode_gama()
39471 io1_a_src = io0_a_src + a_src->meta.ri; in wuffs_png__decoder__decode_gama()
39473 io2_a_src = io0_a_src + a_src->meta.wi; in wuffs_png__decoder__decode_gama()
39476 uint32_t coro_susp_point = self->private_impl.p_decode_gama[0]; in wuffs_png__decoder__decode_gama()
39480 if (self->private_impl.f_chunk_length != 4) { in wuffs_png__decoder__decode_gama()
39484 self->private_impl.f_chunk_length = 0; in wuffs_png__decoder__decode_gama()
39485 self->private_impl.f_metadata_flavor = 5; in wuffs_png__decoder__decode_gama()
39486 self->private_impl.f_metadata_fourcc = 1195461953; in wuffs_png__decoder__decode_gama()
39490 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 4)) { in wuffs_png__decoder__decode_gama()
39494 self->private_data.s_decode_gama[0].scratch = 0; in wuffs_png__decoder__decode_gama()
39501 uint64_t* scratch = &self->private_data.s_decode_gama[0].scratch; in wuffs_png__decoder__decode_gama()
39505 *scratch |= ((uint64_t)(*iop_a_src++)) << (56 - num_bits_0); in wuffs_png__decoder__decode_gama()
39514 self->private_impl.f_metadata_x = t_0; in wuffs_png__decoder__decode_gama()
39516 self->private_impl.f_metadata_y = 0; in wuffs_png__decoder__decode_gama()
39517 self->private_impl.f_metadata_z = 0; in wuffs_png__decoder__decode_gama()
39521 self->private_impl.p_decode_gama[0] = 0; in wuffs_png__decoder__decode_gama()
39527 …self->private_impl.p_decode_gama[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_point… in wuffs_png__decoder__decode_gama()
39532 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_png__decoder__decode_gama()
39538 // -------- func png.decoder.decode_iccp
39553 io0_a_src = a_src->data.ptr; in wuffs_png__decoder__decode_iccp()
39554 io1_a_src = io0_a_src + a_src->meta.ri; in wuffs_png__decoder__decode_iccp()
39556 io2_a_src = io0_a_src + a_src->meta.wi; in wuffs_png__decoder__decode_iccp()
39559 uint32_t coro_susp_point = self->private_impl.p_decode_iccp[0]; in wuffs_png__decoder__decode_iccp()
39564 if (self->private_impl.f_chunk_length <= 0) { in wuffs_png__decoder__decode_iccp()
39568 self->private_impl.f_chunk_length -= 1; in wuffs_png__decoder__decode_iccp()
39583 if (self->private_impl.f_chunk_length <= 0) { in wuffs_png__decoder__decode_iccp()
39587 self->private_impl.f_chunk_length -= 1; in wuffs_png__decoder__decode_iccp()
39601 self->private_impl.f_metadata_is_zlib_compressed = true; in wuffs_png__decoder__decode_iccp()
39602 self->private_impl.f_metadata_flavor = 4; in wuffs_png__decoder__decode_iccp()
39603 self->private_impl.f_metadata_fourcc = 1229144912; in wuffs_png__decoder__decode_iccp()
39604 self->private_impl.f_metadata_x = 0; in wuffs_png__decoder__decode_iccp()
39605 self->private_impl.f_metadata_y = 0; in wuffs_png__decoder__decode_iccp()
39606 self->private_impl.f_metadata_z = 0; in wuffs_png__decoder__decode_iccp()
39610 self->private_impl.p_decode_iccp[0] = 0; in wuffs_png__decoder__decode_iccp()
39616 …self->private_impl.p_decode_iccp[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_point… in wuffs_png__decoder__decode_iccp()
39621 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_png__decoder__decode_iccp()
39627 // -------- func png.decoder.decode_plte
39644 io0_a_src = a_src->data.ptr; in wuffs_png__decoder__decode_plte()
39645 io1_a_src = io0_a_src + a_src->meta.ri; in wuffs_png__decoder__decode_plte()
39647 io2_a_src = io0_a_src + a_src->meta.wi; in wuffs_png__decoder__decode_plte()
39650 uint32_t coro_susp_point = self->private_impl.p_decode_plte[0]; in wuffs_png__decoder__decode_plte()
39652 v_num_entries = self->private_data.s_decode_plte[0].v_num_entries; in wuffs_png__decoder__decode_plte()
39653 v_i = self->private_data.s_decode_plte[0].v_i; in wuffs_png__decoder__decode_plte()
39658 … if ((self->private_impl.f_chunk_length > 768) || ((self->private_impl.f_chunk_length % 3) != 0)) { in wuffs_png__decoder__decode_plte()
39662 v_num_entries = (((uint32_t)(self->private_impl.f_chunk_length)) / 3); in wuffs_png__decoder__decode_plte()
39663 self->private_impl.f_chunk_length = 0; in wuffs_png__decoder__decode_plte()
39668 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 3)) { in wuffs_png__decoder__decode_plte()
39672 self->private_data.s_decode_plte[0].scratch = 0; in wuffs_png__decoder__decode_plte()
39679 uint64_t* scratch = &self->private_data.s_decode_plte[0].scratch; in wuffs_png__decoder__decode_plte()
39683 *scratch |= ((uint64_t)(*iop_a_src++)) << (56 - num_bits_0); in wuffs_png__decoder__decode_plte()
39695 self->private_data.f_src_palette[((4 * v_i) + 0)] = ((uint8_t)(((v_argb >> 0) & 255))); in wuffs_png__decoder__decode_plte()
39696 self->private_data.f_src_palette[((4 * v_i) + 1)] = ((uint8_t)(((v_argb >> 8) & 255))); in wuffs_png__decoder__decode_plte()
39697 self->private_data.f_src_palette[((4 * v_i) + 2)] = ((uint8_t)(((v_argb >> 16) & 255))); in wuffs_png__decoder__decode_plte()
39698 self->private_data.f_src_palette[((4 * v_i) + 3)] = ((uint8_t)(((v_argb >> 24) & 255))); in wuffs_png__decoder__decode_plte()
39702 self->private_data.f_src_palette[((4 * v_i) + 0)] = 0; in wuffs_png__decoder__decode_plte()
39703 self->private_data.f_src_palette[((4 * v_i) + 1)] = 0; in wuffs_png__decoder__decode_plte()
39704 self->private_data.f_src_palette[((4 * v_i) + 2)] = 0; in wuffs_png__decoder__decode_plte()
39705 self->private_data.f_src_palette[((4 * v_i) + 3)] = 255; in wuffs_png__decoder__decode_plte()
39711 self->private_impl.p_decode_plte[0] = 0; in wuffs_png__decoder__decode_plte()
39717 …self->private_impl.p_decode_plte[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_point… in wuffs_png__decoder__decode_plte()
39718 self->private_data.s_decode_plte[0].v_num_entries = v_num_entries; in wuffs_png__decoder__decode_plte()
39719 self->private_data.s_decode_plte[0].v_i = v_i; in wuffs_png__decoder__decode_plte()
39724 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_png__decoder__decode_plte()
39730 // -------- func png.decoder.decode_srgb
39743 io0_a_src = a_src->data.ptr; in wuffs_png__decoder__decode_srgb()
39744 io1_a_src = io0_a_src + a_src->meta.ri; in wuffs_png__decoder__decode_srgb()
39746 io2_a_src = io0_a_src + a_src->meta.wi; in wuffs_png__decoder__decode_srgb()
39749 uint32_t coro_susp_point = self->private_impl.p_decode_srgb[0]; in wuffs_png__decoder__decode_srgb()
39753 if (self->private_impl.f_chunk_length != 1) { in wuffs_png__decoder__decode_srgb()
39757 self->private_impl.f_chunk_length = 0; in wuffs_png__decoder__decode_srgb()
39758 self->private_impl.f_metadata_flavor = 5; in wuffs_png__decoder__decode_srgb()
39759 self->private_impl.f_metadata_fourcc = 1397901122; in wuffs_png__decoder__decode_srgb()
39767 self->private_impl.f_metadata_x = t_0; in wuffs_png__decoder__decode_srgb()
39769 self->private_impl.f_metadata_y = 0; in wuffs_png__decoder__decode_srgb()
39770 self->private_impl.f_metadata_z = 0; in wuffs_png__decoder__decode_srgb()
39774 self->private_impl.p_decode_srgb[0] = 0; in wuffs_png__decoder__decode_srgb()
39780 …self->private_impl.p_decode_srgb[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_point… in wuffs_png__decoder__decode_srgb()
39785 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_png__decoder__decode_srgb()
39791 // -------- func png.decoder.decode_trns
39808 io0_a_src = a_src->data.ptr; in wuffs_png__decoder__decode_trns()
39809 io1_a_src = io0_a_src + a_src->meta.ri; in wuffs_png__decoder__decode_trns()
39811 io2_a_src = io0_a_src + a_src->meta.wi; in wuffs_png__decoder__decode_trns()
39814 uint32_t coro_susp_point = self->private_impl.p_decode_trns[0]; in wuffs_png__decoder__decode_trns()
39816 v_i = self->private_data.s_decode_trns[0].v_i; in wuffs_png__decoder__decode_trns()
39817 v_n = self->private_data.s_decode_trns[0].v_n; in wuffs_png__decoder__decode_trns()
39822 if (self->private_impl.f_color_type == 0) { in wuffs_png__decoder__decode_trns()
39823 self->private_impl.choosy_filter_and_swizzle = ( in wuffs_png__decoder__decode_trns()
39825 if (self->private_impl.f_depth <= 8) { in wuffs_png__decoder__decode_trns()
39826 self->private_impl.f_dst_pixfmt = 2164295816; in wuffs_png__decoder__decode_trns()
39827 self->private_impl.f_src_pixfmt = 2164295816; in wuffs_png__decoder__decode_trns()
39829 self->private_impl.f_dst_pixfmt = 2164308923; in wuffs_png__decoder__decode_trns()
39830 self->private_impl.f_src_pixfmt = 2164308923; in wuffs_png__decoder__decode_trns()
39832 if (self->private_impl.f_chunk_length != 2) { in wuffs_png__decoder__decode_trns()
39836 self->private_impl.f_chunk_length = 0; in wuffs_png__decoder__decode_trns()
39840 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 2)) { in wuffs_png__decoder__decode_trns()
39844 self->private_data.s_decode_trns[0].scratch = 0; in wuffs_png__decoder__decode_trns()
39851 uint64_t* scratch = &self->private_data.s_decode_trns[0].scratch; in wuffs_png__decoder__decode_trns()
39855 *scratch |= ((uint64_t)(*iop_a_src++)) << (56 - num_bits_0); in wuffs_png__decoder__decode_trns()
39866 if (self->private_impl.f_depth <= 1) { in wuffs_png__decoder__decode_trns()
39867 self->private_impl.f_remap_transparency = (((v_u & 1) * 16777215) | 4278190080); in wuffs_png__decoder__decode_trns()
39868 } else if (self->private_impl.f_depth <= 2) { in wuffs_png__decoder__decode_trns()
39869 self->private_impl.f_remap_transparency = (((v_u & 3) * 5592405) | 4278190080); in wuffs_png__decoder__decode_trns()
39870 } else if (self->private_impl.f_depth <= 4) { in wuffs_png__decoder__decode_trns()
39871 self->private_impl.f_remap_transparency = (((v_u & 15) * 1118481) | 4278190080); in wuffs_png__decoder__decode_trns()
39872 } else if (self->private_impl.f_depth <= 8) { in wuffs_png__decoder__decode_trns()
39873 self->private_impl.f_remap_transparency = (((v_u & 255) * 65793) | 4278190080); in wuffs_png__decoder__decode_trns()
39875 self->private_impl.f_remap_transparency = ((v_u * 4295032833) | 18446462598732840960u); in wuffs_png__decoder__decode_trns()
39877 } else if (self->private_impl.f_color_type == 2) { in wuffs_png__decoder__decode_trns()
39878 self->private_impl.choosy_filter_and_swizzle = ( in wuffs_png__decoder__decode_trns()
39880 if (self->private_impl.f_depth <= 8) { in wuffs_png__decoder__decode_trns()
39881 self->private_impl.f_dst_pixfmt = 2164295816; in wuffs_png__decoder__decode_trns()
39882 self->private_impl.f_src_pixfmt = 2164295816; in wuffs_png__decoder__decode_trns()
39884 self->private_impl.f_dst_pixfmt = 2164308923; in wuffs_png__decoder__decode_trns()
39885 self->private_impl.f_src_pixfmt = 2164308923; in wuffs_png__decoder__decode_trns()
39887 if (self->private_impl.f_chunk_length != 6) { in wuffs_png__decoder__decode_trns()
39891 self->private_impl.f_chunk_length = 0; in wuffs_png__decoder__decode_trns()
39895 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 6)) { in wuffs_png__decoder__decode_trns()
39899 self->private_data.s_decode_trns[0].scratch = 0; in wuffs_png__decoder__decode_trns()
39906 uint64_t* scratch = &self->private_data.s_decode_trns[0].scratch; in wuffs_png__decoder__decode_trns()
39910 *scratch |= ((uint64_t)(*iop_a_src++)) << (56 - num_bits_1); in wuffs_png__decoder__decode_trns()
39921 if (self->private_impl.f_depth <= 8) { in wuffs_png__decoder__decode_trns()
39922 self->private_impl.f_remap_transparency = ((255 & (v_u >> 0)) | in wuffs_png__decoder__decode_trns()
39927 self->private_impl.f_remap_transparency = (v_u | 18446462598732840960u); in wuffs_png__decoder__decode_trns()
39929 } else if (self->private_impl.f_color_type == 3) { in wuffs_png__decoder__decode_trns()
39930 self->private_impl.f_dst_pixfmt = 2164523016; in wuffs_png__decoder__decode_trns()
39931 self->private_impl.f_src_pixfmt = 2164523016; in wuffs_png__decoder__decode_trns()
39932 if (self->private_impl.f_chunk_length > 256) { in wuffs_png__decoder__decode_trns()
39936 v_n = ((uint32_t)(self->private_impl.f_chunk_length)); in wuffs_png__decoder__decode_trns()
39937 self->private_impl.f_chunk_length = 0; in wuffs_png__decoder__decode_trns()
39946 self->private_data.f_src_palette[((4 * v_i) + 3)] = t_2; in wuffs_png__decoder__decode_trns()
39957 self->private_impl.p_decode_trns[0] = 0; in wuffs_png__decoder__decode_trns()
39963 …self->private_impl.p_decode_trns[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_point… in wuffs_png__decoder__decode_trns()
39964 self->private_data.s_decode_trns[0].v_i = v_i; in wuffs_png__decoder__decode_trns()
39965 self->private_data.s_decode_trns[0].v_n = v_n; in wuffs_png__decoder__decode_trns()
39970 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_png__decoder__decode_trns()
39976 // -------- func png.decoder.decode_frame_config
39986 if (self->private_impl.magic != WUFFS_BASE__MAGIC) { in wuffs_png__decoder__decode_frame_config()
39988 (self->private_impl.magic == WUFFS_BASE__DISABLED) in wuffs_png__decoder__decode_frame_config()
39993 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_png__decoder__decode_frame_config()
39996 if ((self->private_impl.active_coroutine != 0) && in wuffs_png__decoder__decode_frame_config()
39997 (self->private_impl.active_coroutine != 2)) { in wuffs_png__decoder__decode_frame_config()
39998 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_png__decoder__decode_frame_config()
40001 self->private_impl.active_coroutine = 0; in wuffs_png__decoder__decode_frame_config()
40009 io0_a_src = a_src->data.ptr; in wuffs_png__decoder__decode_frame_config()
40010 io1_a_src = io0_a_src + a_src->meta.ri; in wuffs_png__decoder__decode_frame_config()
40012 io2_a_src = io0_a_src + a_src->meta.wi; in wuffs_png__decoder__decode_frame_config()
40015 uint32_t coro_susp_point = self->private_impl.p_decode_frame_config[0]; in wuffs_png__decoder__decode_frame_config()
40019 if (self->private_impl.f_call_sequence == 255) { in wuffs_png__decoder__decode_frame_config()
40022 } else if (self->private_impl.f_call_sequence < 3) { in wuffs_png__decoder__decode_frame_config()
40024 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_png__decoder__decode_frame_config()
40029 iop_a_src = a_src->data.ptr + a_src->meta.ri; in wuffs_png__decoder__decode_frame_config()
40034 } else if (self->private_impl.f_call_sequence == 3) { in wuffs_png__decoder__decode_frame_config()
40035 …if (self->private_impl.f_frame_config_io_position != wuffs_base__u64__sat_add((a_src ? a_src->meta… in wuffs_png__decoder__decode_frame_config()
40039 } else if (self->private_impl.f_call_sequence == 4) { in wuffs_png__decoder__decode_frame_config()
40041 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_png__decoder__decode_frame_config()
40046 iop_a_src = a_src->data.ptr + a_src->meta.ri; in wuffs_png__decoder__decode_frame_config()
40051 if (self->private_impl.f_call_sequence == 255) { in wuffs_png__decoder__decode_frame_config()
40056 if (self->private_impl.f_num_decoded_frame_configs_value == 0) { in wuffs_png__decoder__decode_frame_config()
40057 self->private_impl.f_frame_rect_x0 = self->private_impl.f_first_rect_x0; in wuffs_png__decoder__decode_frame_config()
40058 self->private_impl.f_frame_rect_y0 = self->private_impl.f_first_rect_y0; in wuffs_png__decoder__decode_frame_config()
40059 self->private_impl.f_frame_rect_x1 = self->private_impl.f_first_rect_x1; in wuffs_png__decoder__decode_frame_config()
40060 self->private_impl.f_frame_rect_y1 = self->private_impl.f_first_rect_y1; in wuffs_png__decoder__decode_frame_config()
40061 self->private_impl.f_frame_config_io_position = self->private_impl.f_first_config_io_position; in wuffs_png__decoder__decode_frame_config()
40062 self->private_impl.f_frame_duration = self->private_impl.f_first_duration; in wuffs_png__decoder__decode_frame_config()
40063 self->private_impl.f_frame_disposal = self->private_impl.f_first_disposal; in wuffs_png__decoder__decode_frame_config()
40064 …self->private_impl.f_frame_overwrite_instead_of_blend = self->private_impl.f_first_overwrite_inste… in wuffs_png__decoder__decode_frame_config()
40070 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 4)) { in wuffs_png__decoder__decode_frame_config()
40074 self->private_data.s_decode_frame_config[0].scratch = 0; in wuffs_png__decoder__decode_frame_config()
40081 uint64_t* scratch = &self->private_data.s_decode_frame_config[0].scratch; in wuffs_png__decoder__decode_frame_config()
40085 *scratch |= ((uint64_t)(*iop_a_src++)) << (56 - num_bits_0); in wuffs_png__decoder__decode_frame_config()
40094 self->private_impl.f_chunk_length = t_0; in wuffs_png__decoder__decode_frame_config()
40099 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 4)) { in wuffs_png__decoder__decode_frame_config()
40103 self->private_data.s_decode_frame_config[0].scratch = 0; in wuffs_png__decoder__decode_frame_config()
40110 uint64_t* scratch = &self->private_data.s_decode_frame_config[0].scratch; in wuffs_png__decoder__decode_frame_config()
40123 self->private_impl.f_chunk_type = t_1; in wuffs_png__decoder__decode_frame_config()
40125 if (self->private_impl.f_chunk_type == 1413571686) { in wuffs_png__decoder__decode_frame_config()
40128 } else if (self->private_impl.f_chunk_type == 1280598886) { in wuffs_png__decoder__decode_frame_config()
40129 …f->private_impl.f_frame_config_io_position = ((uint64_t)(wuffs_base__u64__sat_add((a_src ? a_src->… in wuffs_png__decoder__decode_frame_config()
40131 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_png__decoder__decode_frame_config()
40136 iop_a_src = a_src->data.ptr + a_src->meta.ri; in wuffs_png__decoder__decode_frame_config()
40141 self->private_data.s_decode_frame_config[0].scratch = 4; in wuffs_png__decoder__decode_frame_config()
40143 … if (self->private_data.s_decode_frame_config[0].scratch > ((uint64_t)(io2_a_src - iop_a_src))) { in wuffs_png__decoder__decode_frame_config()
40144 … self->private_data.s_decode_frame_config[0].scratch -= ((uint64_t)(io2_a_src - iop_a_src)); in wuffs_png__decoder__decode_frame_config()
40149 iop_a_src += self->private_data.s_decode_frame_config[0].scratch; in wuffs_png__decoder__decode_frame_config()
40152 …self->private_data.s_decode_frame_config[0].scratch = (((uint64_t)(self->private_impl.f_chunk_leng… in wuffs_png__decoder__decode_frame_config()
40154 … if (self->private_data.s_decode_frame_config[0].scratch > ((uint64_t)(io2_a_src - iop_a_src))) { in wuffs_png__decoder__decode_frame_config()
40155 … self->private_data.s_decode_frame_config[0].scratch -= ((uint64_t)(io2_a_src - iop_a_src)); in wuffs_png__decoder__decode_frame_config()
40160 iop_a_src += self->private_data.s_decode_frame_config[0].scratch; in wuffs_png__decoder__decode_frame_config()
40161 self->private_impl.f_chunk_length = 0; in wuffs_png__decoder__decode_frame_config()
40169 self->private_impl.f_frame_rect_x0, in wuffs_png__decoder__decode_frame_config()
40170 self->private_impl.f_frame_rect_y0, in wuffs_png__decoder__decode_frame_config()
40171 self->private_impl.f_frame_rect_x1, in wuffs_png__decoder__decode_frame_config()
40172 self->private_impl.f_frame_rect_y1), in wuffs_png__decoder__decode_frame_config()
40173 ((wuffs_base__flicks)(self->private_impl.f_frame_duration)), in wuffs_png__decoder__decode_frame_config()
40174 ((uint64_t)(self->private_impl.f_num_decoded_frame_configs_value)), in wuffs_png__decoder__decode_frame_config()
40175 self->private_impl.f_frame_config_io_position, in wuffs_png__decoder__decode_frame_config()
40176 self->private_impl.f_frame_disposal, in wuffs_png__decoder__decode_frame_config()
40177 ((self->private_impl.f_color_type <= 3) && ! self->private_impl.f_seen_trns), in wuffs_png__decoder__decode_frame_config()
40178 self->private_impl.f_frame_overwrite_instead_of_blend, in wuffs_png__decoder__decode_frame_config()
40181 wuffs_base__u32__sat_add_indirect(&self->private_impl.f_num_decoded_frame_configs_value, 1); in wuffs_png__decoder__decode_frame_config()
40182 self->private_impl.f_call_sequence = 4; in wuffs_png__decoder__decode_frame_config()
40185 self->private_impl.p_decode_frame_config[0] = 0; in wuffs_png__decoder__decode_frame_config()
40191 …self->private_impl.p_decode_frame_config[0] = wuffs_base__status__is_suspension(&status) ? coro_su… in wuffs_png__decoder__decode_frame_config()
40192 self->private_impl.active_coroutine = wuffs_base__status__is_suspension(&status) ? 2 : 0; in wuffs_png__decoder__decode_frame_config()
40197 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_png__decoder__decode_frame_config()
40201 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_png__decoder__decode_frame_config()
40206 // -------- func png.decoder.skip_frame
40221 io0_a_src = a_src->data.ptr; in wuffs_png__decoder__skip_frame()
40222 io1_a_src = io0_a_src + a_src->meta.ri; in wuffs_png__decoder__skip_frame()
40224 io2_a_src = io0_a_src + a_src->meta.wi; in wuffs_png__decoder__skip_frame()
40227 uint32_t coro_susp_point = self->private_impl.p_skip_frame[0]; in wuffs_png__decoder__skip_frame()
40231 self->private_impl.f_chunk_type_array[0] = 0; in wuffs_png__decoder__skip_frame()
40232 self->private_impl.f_chunk_type_array[1] = 0; in wuffs_png__decoder__skip_frame()
40233 self->private_impl.f_chunk_type_array[2] = 0; in wuffs_png__decoder__skip_frame()
40234 self->private_impl.f_chunk_type_array[3] = 0; in wuffs_png__decoder__skip_frame()
40237 while (((uint64_t)(io2_a_src - iop_a_src)) < 8) { in wuffs_png__decoder__skip_frame()
40238 if (a_src && a_src->meta.closed) { in wuffs_png__decoder__skip_frame()
40245 self->private_impl.f_chunk_length = wuffs_base__peek_u32be__no_bounds_check(iop_a_src); in wuffs_png__decoder__skip_frame()
40246 …self->private_impl.f_chunk_type = ((uint32_t)((wuffs_base__peek_u64le__no_bounds_check(iop_a_src) … in wuffs_png__decoder__skip_frame()
40247 if (self->private_impl.f_chunk_type == 1413563465) { in wuffs_png__decoder__skip_frame()
40248 if (self->private_impl.f_chunk_type_array[0] == 102) { in wuffs_png__decoder__skip_frame()
40252 self->private_impl.f_chunk_type_array[0] = 73; in wuffs_png__decoder__skip_frame()
40253 self->private_impl.f_chunk_type_array[1] = 68; in wuffs_png__decoder__skip_frame()
40254 self->private_impl.f_chunk_type_array[2] = 65; in wuffs_png__decoder__skip_frame()
40255 self->private_impl.f_chunk_type_array[3] = 84; in wuffs_png__decoder__skip_frame()
40256 } else if (self->private_impl.f_chunk_type == 1413571686) { in wuffs_png__decoder__skip_frame()
40257 if (self->private_impl.f_chunk_type_array[0] == 73) { in wuffs_png__decoder__skip_frame()
40261 self->private_impl.f_chunk_type_array[0] = 102; in wuffs_png__decoder__skip_frame()
40262 self->private_impl.f_chunk_type_array[1] = 100; in wuffs_png__decoder__skip_frame()
40263 self->private_impl.f_chunk_type_array[2] = 65; in wuffs_png__decoder__skip_frame()
40264 self->private_impl.f_chunk_type_array[3] = 84; in wuffs_png__decoder__skip_frame()
40265 if (self->private_impl.f_chunk_length < 4) { in wuffs_png__decoder__skip_frame()
40269 self->private_impl.f_chunk_length -= 4; in wuffs_png__decoder__skip_frame()
40274 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 4)) { in wuffs_png__decoder__skip_frame()
40278 self->private_data.s_skip_frame[0].scratch = 0; in wuffs_png__decoder__skip_frame()
40285 uint64_t* scratch = &self->private_data.s_skip_frame[0].scratch; in wuffs_png__decoder__skip_frame()
40289 *scratch |= ((uint64_t)(*iop_a_src++)) << (56 - num_bits_0); in wuffs_png__decoder__skip_frame()
40300 if (v_seq_num != self->private_impl.f_next_animation_seq_num) { in wuffs_png__decoder__skip_frame()
40303 } else if (self->private_impl.f_next_animation_seq_num >= 4294967295) { in wuffs_png__decoder__skip_frame()
40307 self->private_impl.f_next_animation_seq_num += 1; in wuffs_png__decoder__skip_frame()
40308 …self->private_data.s_skip_frame[0].scratch = (((uint64_t)(self->private_impl.f_chunk_length)) + 4); in wuffs_png__decoder__skip_frame()
40310 if (self->private_data.s_skip_frame[0].scratch > ((uint64_t)(io2_a_src - iop_a_src))) { in wuffs_png__decoder__skip_frame()
40311 self->private_data.s_skip_frame[0].scratch -= ((uint64_t)(io2_a_src - iop_a_src)); in wuffs_png__decoder__skip_frame()
40316 iop_a_src += self->private_data.s_skip_frame[0].scratch; in wuffs_png__decoder__skip_frame()
40317 self->private_impl.f_chunk_length = 0; in wuffs_png__decoder__skip_frame()
40319 } else if (self->private_impl.f_chunk_type_array[0] != 0) { in wuffs_png__decoder__skip_frame()
40321 } else if (self->private_impl.f_chunk_type == 1280598886) { in wuffs_png__decoder__skip_frame()
40325 …self->private_data.s_skip_frame[0].scratch = (((uint64_t)(self->private_impl.f_chunk_length)) + 12… in wuffs_png__decoder__skip_frame()
40327 if (self->private_data.s_skip_frame[0].scratch > ((uint64_t)(io2_a_src - iop_a_src))) { in wuffs_png__decoder__skip_frame()
40328 self->private_data.s_skip_frame[0].scratch -= ((uint64_t)(io2_a_src - iop_a_src)); in wuffs_png__decoder__skip_frame()
40333 iop_a_src += self->private_data.s_skip_frame[0].scratch; in wuffs_png__decoder__skip_frame()
40334 self->private_impl.f_chunk_length = 0; in wuffs_png__decoder__skip_frame()
40337 wuffs_base__u32__sat_add_indirect(&self->private_impl.f_num_decoded_frames_value, 1); in wuffs_png__decoder__skip_frame()
40338 …if (self->private_impl.f_num_decoded_frames_value < self->private_impl.f_num_animation_frames_valu… in wuffs_png__decoder__skip_frame()
40339 self->private_impl.f_call_sequence = 5; in wuffs_png__decoder__skip_frame()
40341 self->private_impl.f_call_sequence = 255; in wuffs_png__decoder__skip_frame()
40345 self->private_impl.p_skip_frame[0] = 0; in wuffs_png__decoder__skip_frame()
40351 …self->private_impl.p_skip_frame[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_point … in wuffs_png__decoder__skip_frame()
40356 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_png__decoder__skip_frame()
40362 // -------- func png.decoder.decode_frame
40375 if (self->private_impl.magic != WUFFS_BASE__MAGIC) { in wuffs_png__decoder__decode_frame()
40377 (self->private_impl.magic == WUFFS_BASE__DISABLED) in wuffs_png__decoder__decode_frame()
40382 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_png__decoder__decode_frame()
40385 if ((self->private_impl.active_coroutine != 0) && in wuffs_png__decoder__decode_frame()
40386 (self->private_impl.active_coroutine != 3)) { in wuffs_png__decoder__decode_frame()
40387 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_png__decoder__decode_frame()
40390 self->private_impl.active_coroutine = 0; in wuffs_png__decoder__decode_frame()
40403 io0_a_src = a_src->data.ptr; in wuffs_png__decoder__decode_frame()
40404 io1_a_src = io0_a_src + a_src->meta.ri; in wuffs_png__decoder__decode_frame()
40406 io2_a_src = io0_a_src + a_src->meta.wi; in wuffs_png__decoder__decode_frame()
40409 uint32_t coro_susp_point = self->private_impl.p_decode_frame[0]; in wuffs_png__decoder__decode_frame()
40413 if (self->private_impl.f_call_sequence == 255) { in wuffs_png__decoder__decode_frame()
40416 } else if (self->private_impl.f_call_sequence != 4) { in wuffs_png__decoder__decode_frame()
40418 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_png__decoder__decode_frame()
40423 iop_a_src = a_src->data.ptr + a_src->meta.ri; in wuffs_png__decoder__decode_frame()
40430 while (((uint64_t)(io2_a_src - iop_a_src)) < 8) { in wuffs_png__decoder__decode_frame()
40431 if (a_src && a_src->meta.closed) { in wuffs_png__decoder__decode_frame()
40438 self->private_impl.f_chunk_length = wuffs_base__peek_u32be__no_bounds_check(iop_a_src); in wuffs_png__decoder__decode_frame()
40439 …self->private_impl.f_chunk_type = ((uint32_t)((wuffs_base__peek_u64le__no_bounds_check(iop_a_src) … in wuffs_png__decoder__decode_frame()
40440 if (self->private_impl.f_chunk_type == 1413563465) { in wuffs_png__decoder__decode_frame()
40441 self->private_impl.f_chunk_type_array[0] = 73; in wuffs_png__decoder__decode_frame()
40442 self->private_impl.f_chunk_type_array[1] = 68; in wuffs_png__decoder__decode_frame()
40443 self->private_impl.f_chunk_type_array[2] = 65; in wuffs_png__decoder__decode_frame()
40444 self->private_impl.f_chunk_type_array[3] = 84; in wuffs_png__decoder__decode_frame()
40446 if ( ! self->private_impl.f_ignore_checksum) { in wuffs_png__decoder__decode_frame()
40447 … wuffs_base__ignore_status(wuffs_crc32__ieee_hasher__initialize(&self->private_data.f_crc32, in wuffs_png__decoder__decode_frame()
40449 …wuffs_crc32__ieee_hasher__update_u32(&self->private_data.f_crc32, wuffs_base__make_slice_u8(self->… in wuffs_png__decoder__decode_frame()
40452 } else if (self->private_impl.f_chunk_type == 1413571686) { in wuffs_png__decoder__decode_frame()
40453 self->private_impl.f_chunk_type_array[0] = 102; in wuffs_png__decoder__decode_frame()
40454 self->private_impl.f_chunk_type_array[1] = 100; in wuffs_png__decoder__decode_frame()
40455 self->private_impl.f_chunk_type_array[2] = 65; in wuffs_png__decoder__decode_frame()
40456 self->private_impl.f_chunk_type_array[3] = 84; in wuffs_png__decoder__decode_frame()
40457 if (self->private_impl.f_chunk_length < 4) { in wuffs_png__decoder__decode_frame()
40461 self->private_impl.f_chunk_length -= 4; in wuffs_png__decoder__decode_frame()
40466 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 4)) { in wuffs_png__decoder__decode_frame()
40470 self->private_data.s_decode_frame[0].scratch = 0; in wuffs_png__decoder__decode_frame()
40477 uint64_t* scratch = &self->private_data.s_decode_frame[0].scratch; in wuffs_png__decoder__decode_frame()
40481 *scratch |= ((uint64_t)(*iop_a_src++)) << (56 - num_bits_0); in wuffs_png__decoder__decode_frame()
40492 if (v_seq_num != self->private_impl.f_next_animation_seq_num) { in wuffs_png__decoder__decode_frame()
40495 } else if (self->private_impl.f_next_animation_seq_num >= 4294967295) { in wuffs_png__decoder__decode_frame()
40499 self->private_impl.f_next_animation_seq_num += 1; in wuffs_png__decoder__decode_frame()
40501 } else if (self->private_impl.f_chunk_type == 1280598886) { in wuffs_png__decoder__decode_frame()
40505 …self->private_data.s_decode_frame[0].scratch = (((uint64_t)(self->private_impl.f_chunk_length)) + … in wuffs_png__decoder__decode_frame()
40507 if (self->private_data.s_decode_frame[0].scratch > ((uint64_t)(io2_a_src - iop_a_src))) { in wuffs_png__decoder__decode_frame()
40508 self->private_data.s_decode_frame[0].scratch -= ((uint64_t)(io2_a_src - iop_a_src)); in wuffs_png__decoder__decode_frame()
40513 iop_a_src += self->private_data.s_decode_frame[0].scratch; in wuffs_png__decoder__decode_frame()
40514 self->private_impl.f_chunk_length = 0; in wuffs_png__decoder__decode_frame()
40517 if (self->private_impl.f_zlib_is_dirty) { in wuffs_png__decoder__decode_frame()
40518 wuffs_base__ignore_status(wuffs_zlib__decoder__initialize(&self->private_data.f_zlib, in wuffs_png__decoder__decode_frame()
40520 if (self->private_impl.f_ignore_checksum) { in wuffs_png__decoder__decode_frame()
40521 wuffs_zlib__decoder__set_quirk_enabled(&self->private_data.f_zlib, 1, true); in wuffs_png__decoder__decode_frame()
40524 self->private_impl.f_zlib_is_dirty = true; in wuffs_png__decoder__decode_frame()
40525 v_status = wuffs_base__pixel_swizzler__prepare(&self->private_impl.f_swizzler, in wuffs_png__decoder__decode_frame()
40527 …wuffs_base__pixel_buffer__palette_or_else(a_dst, wuffs_base__make_slice_u8(self->private_data.f_ds… in wuffs_png__decoder__decode_frame()
40528 wuffs_base__utility__make_pixel_format(self->private_impl.f_src_pixfmt), in wuffs_png__decoder__decode_frame()
40529 wuffs_base__make_slice_u8(self->private_data.f_src_palette, 1024), in wuffs_png__decoder__decode_frame()
40541 self->private_impl.f_workbuf_hist_pos_base = 0; in wuffs_png__decoder__decode_frame()
40543 if (self->private_impl.f_chunk_type_array[0] == 73) { in wuffs_png__decoder__decode_frame()
40544 …WUFFS_PNG__INTERLACING[self->private_impl.f_interlace_pass][1])) + self->private_impl.f_width) >> … in wuffs_png__decoder__decode_frame()
40545 …UFFS_PNG__INTERLACING[self->private_impl.f_interlace_pass][4])) + self->private_impl.f_height) >> … in wuffs_png__decoder__decode_frame()
40547 …v_pass_width = (16777215 & ((uint32_t)(self->private_impl.f_frame_rect_x1 - self->private_impl.f_f… in wuffs_png__decoder__decode_frame()
40548 …v_pass_height = (16777215 & ((uint32_t)(self->private_impl.f_frame_rect_y1 - self->private_impl.f_… in wuffs_png__decoder__decode_frame()
40551 …self->private_impl.f_pass_bytes_per_row = wuffs_png__decoder__calculate_bytes_per_row(self, v_pass… in wuffs_png__decoder__decode_frame()
40552 …self->private_impl.f_pass_workbuf_length = (((uint64_t)(v_pass_height)) * (1 + self->private_impl.… in wuffs_png__decoder__decode_frame()
40554 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_png__decoder__decode_frame()
40559 iop_a_src = a_src->data.ptr + a_src->meta.ri; in wuffs_png__decoder__decode_frame()
40575 self->private_impl.f_workbuf_hist_pos_base += self->private_impl.f_pass_workbuf_length; in wuffs_png__decoder__decode_frame()
40577 … if ((self->private_impl.f_interlace_pass == 0) || (self->private_impl.f_interlace_pass >= 7)) { in wuffs_png__decoder__decode_frame()
40582 #pragma GCC diagnostic ignored "-Wconversion" in wuffs_png__decoder__decode_frame()
40584 self->private_impl.f_interlace_pass += 1; in wuffs_png__decoder__decode_frame()
40590 wuffs_base__u32__sat_add_indirect(&self->private_impl.f_num_decoded_frames_value, 1); in wuffs_png__decoder__decode_frame()
40591 …if (self->private_impl.f_num_decoded_frames_value < self->private_impl.f_num_animation_frames_valu… in wuffs_png__decoder__decode_frame()
40592 self->private_impl.f_call_sequence = 5; in wuffs_png__decoder__decode_frame()
40594 self->private_impl.f_call_sequence = 255; in wuffs_png__decoder__decode_frame()
40598 self->private_impl.p_decode_frame[0] = 0; in wuffs_png__decoder__decode_frame()
40604 …self->private_impl.p_decode_frame[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_poin… in wuffs_png__decoder__decode_frame()
40605 self->private_impl.active_coroutine = wuffs_base__status__is_suspension(&status) ? 3 : 0; in wuffs_png__decoder__decode_frame()
40610 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_png__decoder__decode_frame()
40614 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_png__decoder__decode_frame()
40619 // -------- func png.decoder.decode_pass
40646 io0_a_src = a_src->data.ptr; in wuffs_png__decoder__decode_pass()
40647 io1_a_src = io0_a_src + a_src->meta.ri; in wuffs_png__decoder__decode_pass()
40649 io2_a_src = io0_a_src + a_src->meta.wi; in wuffs_png__decoder__decode_pass()
40652 uint32_t coro_susp_point = self->private_impl.p_decode_pass[0]; in wuffs_png__decoder__decode_pass()
40656 self->private_impl.f_workbuf_wi = 0; in wuffs_png__decoder__decode_pass()
40659 …if ((self->private_impl.f_workbuf_wi > self->private_impl.f_pass_workbuf_length) || (self->private… in wuffs_png__decoder__decode_pass()
40676 self->private_impl.f_workbuf_wi, in wuffs_png__decoder__decode_pass()
40677 self->private_impl.f_pass_workbuf_length), in wuffs_png__decoder__decode_pass()
40678 … ((uint64_t)(self->private_impl.f_workbuf_hist_pos_base + self->private_impl.f_workbuf_wi))); in wuffs_png__decoder__decode_pass()
40682 ((uint64_t)(self->private_impl.f_chunk_length))); in wuffs_png__decoder__decode_pass()
40684 a_src->meta.wi = ((size_t)(io2_a_src - a_src->data.ptr)); in wuffs_png__decoder__decode_pass()
40686 v_w_mark = ((uint64_t)(iop_v_w - io0_v_w)); in wuffs_png__decoder__decode_pass()
40687 v_r_mark = ((uint64_t)(iop_a_src - io0_a_src)); in wuffs_png__decoder__decode_pass()
40689 u_w.meta.wi = ((size_t)(iop_v_w - u_w.data.ptr)); in wuffs_png__decoder__decode_pass()
40691 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_png__decoder__decode_pass()
40693 …wuffs_base__status t_0 = wuffs_zlib__decoder__transform_io(&self->private_data.f_zlib, v_w, a_src,… in wuffs_png__decoder__decode_pass()
40697 iop_a_src = a_src->data.ptr + a_src->meta.ri; in wuffs_png__decoder__decode_pass()
40700 if ( ! self->private_impl.f_ignore_checksum) { in wuffs_png__decoder__decode_pass()
40701 …_crc32__ieee_hasher__update_u32(&self->private_data.f_crc32, wuffs_base__io__since(v_r_mark, ((uin… in wuffs_png__decoder__decode_pass()
40703 …__sat_sub_indirect(&self->private_impl.f_chunk_length, ((uint32_t)((wuffs_base__io__count_since(v_… in wuffs_png__decoder__decode_pass()
40704 …ase__u64__sat_add_indirect(&self->private_impl.f_workbuf_wi, wuffs_base__io__count_since(v_w_mark,… in wuffs_png__decoder__decode_pass()
40707 a_src->meta.wi = ((size_t)(io2_a_src - a_src->data.ptr)); in wuffs_png__decoder__decode_pass()
40717 if (self->private_impl.f_chunk_length > 0) { in wuffs_png__decoder__decode_pass()
40724 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 4)) { in wuffs_png__decoder__decode_pass()
40728 self->private_data.s_decode_pass[0].scratch = 0; in wuffs_png__decoder__decode_pass()
40735 uint64_t* scratch = &self->private_data.s_decode_pass[0].scratch; in wuffs_png__decoder__decode_pass()
40739 *scratch |= ((uint64_t)(*iop_a_src++)) << (56 - num_bits_1); in wuffs_png__decoder__decode_pass()
40750 … if ( ! self->private_impl.f_ignore_checksum && (self->private_impl.f_chunk_type_array[0] == 73)) { in wuffs_png__decoder__decode_pass()
40751 …v_checksum_have = wuffs_crc32__ieee_hasher__update_u32(&self->private_data.f_crc32, wuffs_base__ut… in wuffs_png__decoder__decode_pass()
40759 … if ((1 <= self->private_impl.f_interlace_pass) && (self->private_impl.f_interlace_pass <= 6)) { in wuffs_png__decoder__decode_pass()
40773 } else if (self->private_impl.f_chunk_length == 0) { in wuffs_png__decoder__decode_pass()
40777 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 4)) { in wuffs_png__decoder__decode_pass()
40781 self->private_data.s_decode_pass[0].scratch = 0; in wuffs_png__decoder__decode_pass()
40788 uint64_t* scratch = &self->private_data.s_decode_pass[0].scratch; in wuffs_png__decoder__decode_pass()
40792 *scratch |= ((uint64_t)(*iop_a_src++)) << (56 - num_bits_2); in wuffs_png__decoder__decode_pass()
40803 … if ( ! self->private_impl.f_ignore_checksum && (self->private_impl.f_chunk_type_array[0] == 73)) { in wuffs_png__decoder__decode_pass()
40804 …v_checksum_have = wuffs_crc32__ieee_hasher__update_u32(&self->private_data.f_crc32, wuffs_base__ut… in wuffs_png__decoder__decode_pass()
40813 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 4)) { in wuffs_png__decoder__decode_pass()
40817 self->private_data.s_decode_pass[0].scratch = 0; in wuffs_png__decoder__decode_pass()
40824 uint64_t* scratch = &self->private_data.s_decode_pass[0].scratch; in wuffs_png__decoder__decode_pass()
40828 *scratch |= ((uint64_t)(*iop_a_src++)) << (56 - num_bits_3); in wuffs_png__decoder__decode_pass()
40837 self->private_impl.f_chunk_length = t_3; in wuffs_png__decoder__decode_pass()
40842 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 4)) { in wuffs_png__decoder__decode_pass()
40846 self->private_data.s_decode_pass[0].scratch = 0; in wuffs_png__decoder__decode_pass()
40853 uint64_t* scratch = &self->private_data.s_decode_pass[0].scratch; in wuffs_png__decoder__decode_pass()
40866 self->private_impl.f_chunk_type = t_4; in wuffs_png__decoder__decode_pass()
40868 if (self->private_impl.f_chunk_type_array[0] == 73) { in wuffs_png__decoder__decode_pass()
40869 if (self->private_impl.f_chunk_type != 1413563465) { in wuffs_png__decoder__decode_pass()
40873 if ( ! self->private_impl.f_ignore_checksum) { in wuffs_png__decoder__decode_pass()
40874 … wuffs_base__ignore_status(wuffs_crc32__ieee_hasher__initialize(&self->private_data.f_crc32, in wuffs_png__decoder__decode_pass()
40876 …wuffs_crc32__ieee_hasher__update_u32(&self->private_data.f_crc32, wuffs_base__make_slice_u8(self->… in wuffs_png__decoder__decode_pass()
40879 … if ((self->private_impl.f_chunk_type != 1413571686) || (self->private_impl.f_chunk_length < 4)) { in wuffs_png__decoder__decode_pass()
40883 self->private_impl.f_chunk_length -= 4; in wuffs_png__decoder__decode_pass()
40887 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 4)) { in wuffs_png__decoder__decode_pass()
40891 self->private_data.s_decode_pass[0].scratch = 0; in wuffs_png__decoder__decode_pass()
40898 uint64_t* scratch = &self->private_data.s_decode_pass[0].scratch; in wuffs_png__decoder__decode_pass()
40902 *scratch |= ((uint64_t)(*iop_a_src++)) << (56 - num_bits_5); in wuffs_png__decoder__decode_pass()
40913 if (v_seq_num != self->private_impl.f_next_animation_seq_num) { in wuffs_png__decoder__decode_pass()
40916 } else if (self->private_impl.f_next_animation_seq_num >= 4294967295) { in wuffs_png__decoder__decode_pass()
40920 self->private_impl.f_next_animation_seq_num += 1; in wuffs_png__decoder__decode_pass()
40923 } else if (((uint64_t)(io2_a_src - iop_a_src)) > 0) { in wuffs_png__decoder__decode_pass()
40931 if (self->private_impl.f_workbuf_wi != self->private_impl.f_pass_workbuf_length) { in wuffs_png__decoder__decode_pass()
40941 self->private_impl.p_decode_pass[0] = 0; in wuffs_png__decoder__decode_pass()
40947 …self->private_impl.p_decode_pass[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_point… in wuffs_png__decoder__decode_pass()
40952 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_png__decoder__decode_pass()
40958 // -------- func png.decoder.frame_dirty_rect
40966 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) && in wuffs_png__decoder__frame_dirty_rect()
40967 (self->private_impl.magic != WUFFS_BASE__DISABLED)) { in wuffs_png__decoder__frame_dirty_rect()
40972 self->private_impl.f_frame_rect_x0, in wuffs_png__decoder__frame_dirty_rect()
40973 self->private_impl.f_frame_rect_y0, in wuffs_png__decoder__frame_dirty_rect()
40974 self->private_impl.f_frame_rect_x1, in wuffs_png__decoder__frame_dirty_rect()
40975 self->private_impl.f_frame_rect_y1); in wuffs_png__decoder__frame_dirty_rect()
40978 // -------- func png.decoder.num_animation_loops
40986 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) && in wuffs_png__decoder__num_animation_loops()
40987 (self->private_impl.magic != WUFFS_BASE__DISABLED)) { in wuffs_png__decoder__num_animation_loops()
40991 return self->private_impl.f_num_animation_loops_value; in wuffs_png__decoder__num_animation_loops()
40994 // -------- func png.decoder.num_decoded_frame_configs
41002 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) && in wuffs_png__decoder__num_decoded_frame_configs()
41003 (self->private_impl.magic != WUFFS_BASE__DISABLED)) { in wuffs_png__decoder__num_decoded_frame_configs()
41007 return ((uint64_t)(self->private_impl.f_num_decoded_frame_configs_value)); in wuffs_png__decoder__num_decoded_frame_configs()
41010 // -------- func png.decoder.num_decoded_frames
41018 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) && in wuffs_png__decoder__num_decoded_frames()
41019 (self->private_impl.magic != WUFFS_BASE__DISABLED)) { in wuffs_png__decoder__num_decoded_frames()
41023 return ((uint64_t)(self->private_impl.f_num_decoded_frames_value)); in wuffs_png__decoder__num_decoded_frames()
41026 // -------- func png.decoder.restart_frame
41036 if (self->private_impl.magic != WUFFS_BASE__MAGIC) { in wuffs_png__decoder__restart_frame()
41038 (self->private_impl.magic == WUFFS_BASE__DISABLED) in wuffs_png__decoder__restart_frame()
41043 if (self->private_impl.f_call_sequence < 3) { in wuffs_png__decoder__restart_frame()
41045 … ((a_index >= ((uint64_t)(self->private_impl.f_num_animation_frames_value))) || ((a_index == 0) &&… in wuffs_png__decoder__restart_frame()
41048 self->private_impl.f_call_sequence = 3; in wuffs_png__decoder__restart_frame()
41049 if (self->private_impl.f_interlace_pass >= 1) { in wuffs_png__decoder__restart_frame()
41050 self->private_impl.f_interlace_pass = 1; in wuffs_png__decoder__restart_frame()
41052 self->private_impl.f_frame_config_io_position = a_io_position; in wuffs_png__decoder__restart_frame()
41053 self->private_impl.f_num_decoded_frame_configs_value = ((uint32_t)((a_index & 4294967295))); in wuffs_png__decoder__restart_frame()
41054 …self->private_impl.f_num_decoded_frames_value = self->private_impl.f_num_decoded_frame_configs_val… in wuffs_png__decoder__restart_frame()
41058 // -------- func png.decoder.set_report_metadata
41068 if (self->private_impl.magic != WUFFS_BASE__MAGIC) { in wuffs_png__decoder__set_report_metadata()
41073 self->private_impl.f_report_metadata_chrm = a_report; in wuffs_png__decoder__set_report_metadata()
41075 self->private_impl.f_report_metadata_exif = a_report; in wuffs_png__decoder__set_report_metadata()
41077 self->private_impl.f_report_metadata_gama = a_report; in wuffs_png__decoder__set_report_metadata()
41079 self->private_impl.f_report_metadata_iccp = a_report; in wuffs_png__decoder__set_report_metadata()
41081 self->private_impl.f_report_metadata_kvp = a_report; in wuffs_png__decoder__set_report_metadata()
41083 self->private_impl.f_report_metadata_srgb = a_report; in wuffs_png__decoder__set_report_metadata()
41088 // -------- func png.decoder.tell_me_more
41099 if (self->private_impl.magic != WUFFS_BASE__MAGIC) { in wuffs_png__decoder__tell_me_more()
41101 (self->private_impl.magic == WUFFS_BASE__DISABLED) in wuffs_png__decoder__tell_me_more()
41106 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_png__decoder__tell_me_more()
41109 if ((self->private_impl.active_coroutine != 0) && in wuffs_png__decoder__tell_me_more()
41110 (self->private_impl.active_coroutine != 4)) { in wuffs_png__decoder__tell_me_more()
41111 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_png__decoder__tell_me_more()
41114 self->private_impl.active_coroutine = 0; in wuffs_png__decoder__tell_me_more()
41135 io0_a_dst = a_dst->data.ptr; in wuffs_png__decoder__tell_me_more()
41136 io1_a_dst = io0_a_dst + a_dst->meta.wi; in wuffs_png__decoder__tell_me_more()
41138 io2_a_dst = io0_a_dst + a_dst->data.len; in wuffs_png__decoder__tell_me_more()
41139 if (a_dst->meta.closed) { in wuffs_png__decoder__tell_me_more()
41148 io0_a_src = a_src->data.ptr; in wuffs_png__decoder__tell_me_more()
41149 io1_a_src = io0_a_src + a_src->meta.ri; in wuffs_png__decoder__tell_me_more()
41151 io2_a_src = io0_a_src + a_src->meta.wi; in wuffs_png__decoder__tell_me_more()
41154 uint32_t coro_susp_point = self->private_impl.p_tell_me_more[0]; in wuffs_png__decoder__tell_me_more()
41156 v_zlib_status = self->private_data.s_tell_me_more[0].v_zlib_status; in wuffs_png__decoder__tell_me_more()
41161 if (self->private_impl.f_call_sequence != 1) { in wuffs_png__decoder__tell_me_more()
41165 if (self->private_impl.f_metadata_fourcc == 0) { in wuffs_png__decoder__tell_me_more()
41170 if (self->private_impl.f_metadata_flavor == 3) { in wuffs_png__decoder__tell_me_more()
41172 …if (wuffs_base__u64__sat_add((a_src ? a_src->meta.pos : 0), ((uint64_t)(iop_a_src - io0_a_src))) !… in wuffs_png__decoder__tell_me_more()
41177 self->private_impl.f_metadata_flavor, in wuffs_png__decoder__tell_me_more()
41178 self->private_impl.f_metadata_fourcc, in wuffs_png__decoder__tell_me_more()
41179 self->private_impl.f_metadata_x, in wuffs_png__decoder__tell_me_more()
41180 self->private_impl.f_metadata_y, in wuffs_png__decoder__tell_me_more()
41181 self->private_impl.f_metadata_z); in wuffs_png__decoder__tell_me_more()
41183 if (self->private_impl.f_metadata_y >= self->private_impl.f_metadata_z) { in wuffs_png__decoder__tell_me_more()
41186 self->private_impl.f_metadata_y = self->private_impl.f_metadata_z; in wuffs_png__decoder__tell_me_more()
41191 if (self->private_impl.f_metadata_is_zlib_compressed) { in wuffs_png__decoder__tell_me_more()
41192 if (self->private_impl.f_zlib_is_dirty) { in wuffs_png__decoder__tell_me_more()
41193 wuffs_base__ignore_status(wuffs_zlib__decoder__initialize(&self->private_data.f_zlib, in wuffs_png__decoder__tell_me_more()
41195 if (self->private_impl.f_ignore_checksum) { in wuffs_png__decoder__tell_me_more()
41196 wuffs_zlib__decoder__set_quirk_enabled(&self->private_data.f_zlib, 1, true); in wuffs_png__decoder__tell_me_more()
41199 self->private_impl.f_zlib_is_dirty = true; in wuffs_png__decoder__tell_me_more()
41200 self->private_impl.f_ztxt_hist_pos = 0; in wuffs_png__decoder__tell_me_more()
41206 self->private_impl.f_metadata_flavor, in wuffs_png__decoder__tell_me_more()
41207 self->private_impl.f_metadata_fourcc, in wuffs_png__decoder__tell_me_more()
41208 self->private_impl.f_metadata_x, in wuffs_png__decoder__tell_me_more()
41209 self->private_impl.f_metadata_y, in wuffs_png__decoder__tell_me_more()
41210 self->private_impl.f_metadata_z); in wuffs_png__decoder__tell_me_more()
41212 if (self->private_impl.f_metadata_flavor != 4) { in wuffs_png__decoder__tell_me_more()
41215 if (self->private_impl.f_metadata_is_zlib_compressed) { in wuffs_png__decoder__tell_me_more()
41216 if (self->private_impl.f_chunk_type == 1346585449) { in wuffs_png__decoder__tell_me_more()
41220 ((uint64_t)(self->private_impl.f_chunk_length))); in wuffs_png__decoder__tell_me_more()
41222 a_src->meta.wi = ((size_t)(io2_a_src - a_src->data.ptr)); in wuffs_png__decoder__tell_me_more()
41224 v_r_mark = ((uint64_t)(iop_a_src - io0_a_src)); in wuffs_png__decoder__tell_me_more()
41227 a_dst->meta.wi = ((size_t)(iop_a_dst - a_dst->data.ptr)); in wuffs_png__decoder__tell_me_more()
41230 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_png__decoder__tell_me_more()
41232 …wuffs_base__status t_0 = wuffs_zlib__decoder__transform_io(&self->private_data.f_zlib, a_dst, a_sr… in wuffs_png__decoder__tell_me_more()
41235 iop_a_dst = a_dst->data.ptr + a_dst->meta.wi; in wuffs_png__decoder__tell_me_more()
41238 iop_a_src = a_src->data.ptr + a_src->meta.ri; in wuffs_png__decoder__tell_me_more()
41241 …__sat_sub_indirect(&self->private_impl.f_chunk_length, ((uint32_t)((wuffs_base__io__count_since(v_… in wuffs_png__decoder__tell_me_more()
41244 a_src->meta.wi = ((size_t)(io2_a_src - a_src->data.ptr)); in wuffs_png__decoder__tell_me_more()
41248 self->private_impl.f_metadata_is_zlib_compressed = false; in wuffs_png__decoder__tell_me_more()
41262 } else if (self->private_impl.f_chunk_type == 1951945833) { in wuffs_png__decoder__tell_me_more()
41266 ((uint64_t)(self->private_impl.f_chunk_length))); in wuffs_png__decoder__tell_me_more()
41268 a_src->meta.wi = ((size_t)(io2_a_src - a_src->data.ptr)); in wuffs_png__decoder__tell_me_more()
41270 v_r_mark = ((uint64_t)(iop_a_src - io0_a_src)); in wuffs_png__decoder__tell_me_more()
41273 a_dst->meta.wi = ((size_t)(iop_a_dst - a_dst->data.ptr)); in wuffs_png__decoder__tell_me_more()
41276 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_png__decoder__tell_me_more()
41278 …wuffs_base__status t_1 = wuffs_zlib__decoder__transform_io(&self->private_data.f_zlib, a_dst, a_sr… in wuffs_png__decoder__tell_me_more()
41281 iop_a_dst = a_dst->data.ptr + a_dst->meta.wi; in wuffs_png__decoder__tell_me_more()
41284 iop_a_src = a_src->data.ptr + a_src->meta.ri; in wuffs_png__decoder__tell_me_more()
41287 …__sat_sub_indirect(&self->private_impl.f_chunk_length, ((uint32_t)((wuffs_base__io__count_since(v_… in wuffs_png__decoder__tell_me_more()
41290 a_src->meta.wi = ((size_t)(io2_a_src - a_src->data.ptr)); in wuffs_png__decoder__tell_me_more()
41294 self->private_impl.f_metadata_is_zlib_compressed = false; in wuffs_png__decoder__tell_me_more()
41308 } else if (self->private_impl.f_chunk_type == 1951945850) { in wuffs_png__decoder__tell_me_more()
41309 if (self->private_impl.f_ztxt_ri == self->private_impl.f_ztxt_wi) { in wuffs_png__decoder__tell_me_more()
41322 wuffs_base__make_slice_u8(self->private_data.f_dst_palette, 1024), in wuffs_png__decoder__tell_me_more()
41323 self->private_impl.f_ztxt_hist_pos); in wuffs_png__decoder__tell_me_more()
41327 ((uint64_t)(self->private_impl.f_chunk_length))); in wuffs_png__decoder__tell_me_more()
41329 a_src->meta.wi = ((size_t)(io2_a_src - a_src->data.ptr)); in wuffs_png__decoder__tell_me_more()
41331 v_w_mark = ((uint64_t)(iop_v_w - io0_v_w)); in wuffs_png__decoder__tell_me_more()
41332 v_r_mark = ((uint64_t)(iop_a_src - io0_a_src)); in wuffs_png__decoder__tell_me_more()
41334 u_w.meta.wi = ((size_t)(iop_v_w - u_w.data.ptr)); in wuffs_png__decoder__tell_me_more()
41336 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_png__decoder__tell_me_more()
41338 …wuffs_base__status t_2 = wuffs_zlib__decoder__transform_io(&self->private_data.f_zlib, v_w, a_src,… in wuffs_png__decoder__tell_me_more()
41342 iop_a_src = a_src->data.ptr + a_src->meta.ri; in wuffs_png__decoder__tell_me_more()
41345 …__sat_sub_indirect(&self->private_impl.f_chunk_length, ((uint32_t)((wuffs_base__io__count_since(v_… in wuffs_png__decoder__tell_me_more()
41346 … v_num_written = wuffs_base__io__count_since(v_w_mark, ((uint64_t)(iop_v_w - io0_v_w))); in wuffs_png__decoder__tell_me_more()
41349 a_src->meta.wi = ((size_t)(io2_a_src - a_src->data.ptr)); in wuffs_png__decoder__tell_me_more()
41362 self->private_impl.f_ztxt_ri = 0; in wuffs_png__decoder__tell_me_more()
41363 self->private_impl.f_ztxt_wi = ((uint32_t)(v_num_written)); in wuffs_png__decoder__tell_me_more()
41364 wuffs_base__u64__sat_add_indirect(&self->private_impl.f_ztxt_hist_pos, v_num_written); in wuffs_png__decoder__tell_me_more()
41366 while (self->private_impl.f_ztxt_ri < self->private_impl.f_ztxt_wi) { in wuffs_png__decoder__tell_me_more()
41367 … v_c2 = WUFFS_PNG__LATIN_1[self->private_data.f_dst_palette[self->private_impl.f_ztxt_ri]]; in wuffs_png__decoder__tell_me_more()
41372 if (((uint64_t)(io2_a_dst - iop_a_dst)) <= 0) { in wuffs_png__decoder__tell_me_more()
41378 self->private_impl.f_ztxt_ri += 1; in wuffs_png__decoder__tell_me_more()
41381 if (((uint64_t)(io2_a_dst - iop_a_dst)) <= 1) { in wuffs_png__decoder__tell_me_more()
41387 self->private_impl.f_ztxt_ri += 1; in wuffs_png__decoder__tell_me_more()
41392 self->private_impl.f_metadata_is_zlib_compressed = false; in wuffs_png__decoder__tell_me_more()
41411 …} else if ((self->private_impl.f_chunk_type == 1951945833) && (self->private_impl.f_metadata_fourc… in wuffs_png__decoder__tell_me_more()
41413 if (self->private_impl.f_chunk_length <= 0) { in wuffs_png__decoder__tell_me_more()
41415 } else if (((uint64_t)(io2_a_src - iop_a_src)) <= 0) { in wuffs_png__decoder__tell_me_more()
41419 } else if (((uint64_t)(io2_a_dst - iop_a_dst)) <= 0) { in wuffs_png__decoder__tell_me_more()
41424 self->private_impl.f_chunk_length -= 1; in wuffs_png__decoder__tell_me_more()
41431 if (self->private_impl.f_chunk_length <= 0) { in wuffs_png__decoder__tell_me_more()
41432 if (self->private_impl.f_metadata_fourcc == 1263947851) { in wuffs_png__decoder__tell_me_more()
41437 } else if (((uint64_t)(io2_a_src - iop_a_src)) <= 0) { in wuffs_png__decoder__tell_me_more()
41444 self->private_impl.f_chunk_length -= 1; in wuffs_png__decoder__tell_me_more()
41453 if (((uint64_t)(io2_a_dst - iop_a_dst)) <= 0) { in wuffs_png__decoder__tell_me_more()
41459 self->private_impl.f_chunk_length -= 1; in wuffs_png__decoder__tell_me_more()
41463 if (((uint64_t)(io2_a_dst - iop_a_dst)) <= 1) { in wuffs_png__decoder__tell_me_more()
41469 self->private_impl.f_chunk_length -= 1; in wuffs_png__decoder__tell_me_more()
41477 if (self->private_impl.f_metadata_fourcc == 1263947851) { in wuffs_png__decoder__tell_me_more()
41478 self->private_impl.f_metadata_fourcc = 1263947862; in wuffs_png__decoder__tell_me_more()
41479 if (self->private_impl.f_chunk_type == 1951945833) { in wuffs_png__decoder__tell_me_more()
41480 if (self->private_impl.f_chunk_length <= 1) { in wuffs_png__decoder__tell_me_more()
41484 self->private_impl.f_chunk_length -= 2; in wuffs_png__decoder__tell_me_more()
41495 self->private_impl.f_metadata_is_zlib_compressed = false; in wuffs_png__decoder__tell_me_more()
41497 self->private_impl.f_metadata_is_zlib_compressed = true; in wuffs_png__decoder__tell_me_more()
41511 if ((v_c != 0) && self->private_impl.f_metadata_is_zlib_compressed) { in wuffs_png__decoder__tell_me_more()
41515 self->private_impl.f_metadata_fourcc -= 2; in wuffs_png__decoder__tell_me_more()
41516 while (self->private_impl.f_metadata_fourcc != 1263947862) { in wuffs_png__decoder__tell_me_more()
41517 self->private_impl.f_metadata_fourcc += 1; in wuffs_png__decoder__tell_me_more()
41519 if (self->private_impl.f_chunk_length <= 0) { in wuffs_png__decoder__tell_me_more()
41523 self->private_impl.f_chunk_length -= 1; in wuffs_png__decoder__tell_me_more()
41539 } else if (self->private_impl.f_chunk_type == 1951945850) { in wuffs_png__decoder__tell_me_more()
41540 if (self->private_impl.f_chunk_length <= 0) { in wuffs_png__decoder__tell_me_more()
41544 self->private_impl.f_chunk_length -= 1; in wuffs_png__decoder__tell_me_more()
41558 self->private_impl.f_metadata_is_zlib_compressed = true; in wuffs_png__decoder__tell_me_more()
41560 self->private_impl.f_call_sequence = 2; in wuffs_png__decoder__tell_me_more()
41567 if (self->private_impl.f_chunk_length != 0) { in wuffs_png__decoder__tell_me_more()
41571 self->private_data.s_tell_me_more[0].scratch = 4; in wuffs_png__decoder__tell_me_more()
41573 if (self->private_data.s_tell_me_more[0].scratch > ((uint64_t)(io2_a_src - iop_a_src))) { in wuffs_png__decoder__tell_me_more()
41574 self->private_data.s_tell_me_more[0].scratch -= ((uint64_t)(io2_a_src - iop_a_src)); in wuffs_png__decoder__tell_me_more()
41579 iop_a_src += self->private_data.s_tell_me_more[0].scratch; in wuffs_png__decoder__tell_me_more()
41580 self->private_impl.f_metadata_flavor = 0; in wuffs_png__decoder__tell_me_more()
41581 self->private_impl.f_metadata_fourcc = 0; in wuffs_png__decoder__tell_me_more()
41582 self->private_impl.f_metadata_x = 0; in wuffs_png__decoder__tell_me_more()
41583 self->private_impl.f_metadata_y = 0; in wuffs_png__decoder__tell_me_more()
41584 self->private_impl.f_metadata_z = 0; in wuffs_png__decoder__tell_me_more()
41585 self->private_impl.f_call_sequence = 2; in wuffs_png__decoder__tell_me_more()
41590 self->private_impl.p_tell_me_more[0] = 0; in wuffs_png__decoder__tell_me_more()
41596 …self->private_impl.p_tell_me_more[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_poin… in wuffs_png__decoder__tell_me_more()
41597 self->private_impl.active_coroutine = wuffs_base__status__is_suspension(&status) ? 4 : 0; in wuffs_png__decoder__tell_me_more()
41598 self->private_data.s_tell_me_more[0].v_zlib_status = v_zlib_status; in wuffs_png__decoder__tell_me_more()
41603 a_dst->meta.wi = ((size_t)(iop_a_dst - a_dst->data.ptr)); in wuffs_png__decoder__tell_me_more()
41606 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_png__decoder__tell_me_more()
41610 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_png__decoder__tell_me_more()
41615 // -------- func png.decoder.workbuf_len
41623 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) && in wuffs_png__decoder__workbuf_len()
41624 (self->private_impl.magic != WUFFS_BASE__DISABLED)) { in wuffs_png__decoder__workbuf_len()
41628 …return wuffs_base__utility__make_range_ii_u64(self->private_impl.f_overall_workbuf_length, self->p… in wuffs_png__decoder__workbuf_len()
41631 // -------- func png.decoder.filter_and_swizzle
41638 return (*self->private_impl.choosy_filter_and_swizzle)(self, a_dst, a_workbuf); in wuffs_png__decoder__filter_and_swizzle()
41665 v_dst_bytes_per_row0 = (((uint64_t)(self->private_impl.f_frame_rect_x0)) * v_dst_bytes_per_pixel); in wuffs_png__decoder__filter_and_swizzle__choosy_default()
41666 v_dst_bytes_per_row1 = (((uint64_t)(self->private_impl.f_frame_rect_x1)) * v_dst_bytes_per_pixel); in wuffs_png__decoder__filter_and_swizzle__choosy_default()
41667 …v_dst_palette = wuffs_base__pixel_buffer__palette_or_else(a_dst, wuffs_base__make_slice_u8(self->p… in wuffs_png__decoder__filter_and_swizzle__choosy_default()
41689 v_y = self->private_impl.f_frame_rect_y0; in wuffs_png__decoder__filter_and_swizzle__choosy_default()
41690 while (v_y < self->private_impl.f_frame_rect_y1) { in wuffs_png__decoder__filter_and_swizzle__choosy_default()
41697 if (self->private_impl.f_pass_bytes_per_row > ((uint64_t)(a_workbuf.len))) { in wuffs_png__decoder__filter_and_swizzle__choosy_default()
41700 … v_curr_row = wuffs_base__slice_u8__subslice_j(a_workbuf, self->private_impl.f_pass_bytes_per_row); in wuffs_png__decoder__filter_and_swizzle__choosy_default()
41701 … a_workbuf = wuffs_base__slice_u8__subslice_i(a_workbuf, self->private_impl.f_pass_bytes_per_row); in wuffs_png__decoder__filter_and_swizzle__choosy_default()
41714 …wuffs_base__pixel_swizzler__swizzle_interleaved_from_slice(&self->private_impl.f_swizzler, v_dst, … in wuffs_png__decoder__filter_and_swizzle__choosy_default()
41721 // -------- func png.decoder.filter_and_swizzle_tricky
41755 v_dst_bytes_per_row1 = (((uint64_t)(self->private_impl.f_frame_rect_x1)) * v_dst_bytes_per_pixel); in wuffs_png__decoder__filter_and_swizzle_tricky()
41756 …v_dst_palette = wuffs_base__pixel_buffer__palette_or_else(a_dst, wuffs_base__make_slice_u8(self->p… in wuffs_png__decoder__filter_and_swizzle_tricky()
41759 if (self->private_impl.f_depth >= 8) { in wuffs_png__decoder__filter_and_swizzle_tricky()
41760 …r_pixel = (((uint64_t)(WUFFS_PNG__NUM_CHANNELS[self->private_impl.f_color_type])) * ((uint64_t)((s… in wuffs_png__decoder__filter_and_swizzle_tricky()
41762 if (self->private_impl.f_chunk_type_array[0] == 73) { in wuffs_png__decoder__filter_and_swizzle_tricky()
41763 v_y = ((uint32_t)(WUFFS_PNG__INTERLACING[self->private_impl.f_interlace_pass][5])); in wuffs_png__decoder__filter_and_swizzle_tricky()
41765 v_y = self->private_impl.f_frame_rect_y0; in wuffs_png__decoder__filter_and_swizzle_tricky()
41767 while (v_y < self->private_impl.f_frame_rect_y1) { in wuffs_png__decoder__filter_and_swizzle_tricky()
41777 if (self->private_impl.f_pass_bytes_per_row > ((uint64_t)(a_workbuf.len))) { in wuffs_png__decoder__filter_and_swizzle_tricky()
41780 … v_curr_row = wuffs_base__slice_u8__subslice_j(a_workbuf, self->private_impl.f_pass_bytes_per_row); in wuffs_png__decoder__filter_and_swizzle_tricky()
41781 … a_workbuf = wuffs_base__slice_u8__subslice_i(a_workbuf, self->private_impl.f_pass_bytes_per_row); in wuffs_png__decoder__filter_and_swizzle_tricky()
41795 if (self->private_impl.f_chunk_type_array[0] == 73) { in wuffs_png__decoder__filter_and_swizzle_tricky()
41796 v_x = ((uint32_t)(WUFFS_PNG__INTERLACING[self->private_impl.f_interlace_pass][2])); in wuffs_png__decoder__filter_and_swizzle_tricky()
41798 v_x = self->private_impl.f_frame_rect_x0; in wuffs_png__decoder__filter_and_swizzle_tricky()
41800 if (self->private_impl.f_depth == 8) { in wuffs_png__decoder__filter_and_swizzle_tricky()
41801 while (v_x < self->private_impl.f_frame_rect_x1) { in wuffs_png__decoder__filter_and_swizzle_tricky()
41804 if (self->private_impl.f_color_type == 4) { in wuffs_png__decoder__filter_and_swizzle_tricky()
41811 …wuffs_base__pixel_swizzler__swizzle_interleaved_from_slice(&self->private_impl.f_swizzler, wuffs_b… in wuffs_png__decoder__filter_and_swizzle_tricky()
41813 } else if (((uint32_t)((self->private_impl.f_remap_transparency & 4294967295))) != 0) { in wuffs_png__decoder__filter_and_swizzle_tricky()
41814 if (self->private_impl.f_color_type == 0) { in wuffs_png__decoder__filter_and_swizzle_tricky()
41821 …if (((uint32_t)((self->private_impl.f_remap_transparency & 4294967295))) == ((((uint32_t)(v_bits_u… in wuffs_png__decoder__filter_and_swizzle_tricky()
41830 …wuffs_base__pixel_swizzler__swizzle_interleaved_from_slice(&self->private_impl.f_swizzler, wuffs_b… in wuffs_png__decoder__filter_and_swizzle_tricky()
41839 …if (((uint32_t)((self->private_impl.f_remap_transparency & 4294967295))) == ((((uint32_t)(v_bits_u… in wuffs_png__decoder__filter_and_swizzle_tricky()
41848 …wuffs_base__pixel_swizzler__swizzle_interleaved_from_slice(&self->private_impl.f_swizzler, wuffs_b… in wuffs_png__decoder__filter_and_swizzle_tricky()
41852 …wuffs_base__pixel_swizzler__swizzle_interleaved_from_slice(&self->private_impl.f_swizzler, wuffs_b… in wuffs_png__decoder__filter_and_swizzle_tricky()
41856 v_x += (((uint32_t)(1)) << WUFFS_PNG__INTERLACING[self->private_impl.f_interlace_pass][0]); in wuffs_png__decoder__filter_and_swizzle_tricky()
41858 } else if (self->private_impl.f_depth < 8) { in wuffs_png__decoder__filter_and_swizzle_tricky()
41860 if (self->private_impl.f_color_type == 0) { in wuffs_png__decoder__filter_and_swizzle_tricky()
41861 v_multiplier = WUFFS_PNG__LOW_BIT_DEPTH_MULTIPLIERS[self->private_impl.f_depth]; in wuffs_png__decoder__filter_and_swizzle_tricky()
41863 v_shift = ((8 - self->private_impl.f_depth) & 7); in wuffs_png__decoder__filter_and_swizzle_tricky()
41865 while (v_x < self->private_impl.f_frame_rect_x1) { in wuffs_png__decoder__filter_and_swizzle_tricky()
41869 v_packs_remaining = WUFFS_PNG__LOW_BIT_DEPTH_NUM_PACKS[self->private_impl.f_depth]; in wuffs_png__decoder__filter_and_swizzle_tricky()
41874 v_bits_packed = ((uint8_t)(v_bits_packed << self->private_impl.f_depth)); in wuffs_png__decoder__filter_and_swizzle_tricky()
41875 v_packs_remaining = ((uint8_t)(v_packs_remaining - 1)); in wuffs_png__decoder__filter_and_swizzle_tricky()
41876 if (((uint32_t)((self->private_impl.f_remap_transparency & 4294967295))) != 0) { in wuffs_png__decoder__filter_and_swizzle_tricky()
41880 …if (((uint32_t)((self->private_impl.f_remap_transparency & 4294967295))) == ((((uint32_t)(v_bits_u… in wuffs_png__decoder__filter_and_swizzle_tricky()
41889 …wuffs_base__pixel_swizzler__swizzle_interleaved_from_slice(&self->private_impl.f_swizzler, wuffs_b… in wuffs_png__decoder__filter_and_swizzle_tricky()
41891 …wuffs_base__pixel_swizzler__swizzle_interleaved_from_slice(&self->private_impl.f_swizzler, wuffs_b… in wuffs_png__decoder__filter_and_swizzle_tricky()
41894 v_x += (((uint32_t)(1)) << WUFFS_PNG__INTERLACING[self->private_impl.f_interlace_pass][0]); in wuffs_png__decoder__filter_and_swizzle_tricky()
41897 while (v_x < self->private_impl.f_frame_rect_x1) { in wuffs_png__decoder__filter_and_swizzle_tricky()
41900 if (self->private_impl.f_color_type == 0) { in wuffs_png__decoder__filter_and_swizzle_tricky()
41911 … if (self->private_impl.f_remap_transparency == ((((uint64_t)(v_bits_unpacked[0])) << 0) | in wuffs_png__decoder__filter_and_swizzle_tricky()
41929 } else if (self->private_impl.f_color_type == 2) { in wuffs_png__decoder__filter_and_swizzle_tricky()
41940 … if (self->private_impl.f_remap_transparency == ((((uint64_t)(v_bits_unpacked[0])) << 0) | in wuffs_png__decoder__filter_and_swizzle_tricky()
41958 } else if (self->private_impl.f_color_type == 4) { in wuffs_png__decoder__filter_and_swizzle_tricky()
41983 …wuffs_base__pixel_swizzler__swizzle_interleaved_from_slice(&self->private_impl.f_swizzler, wuffs_b… in wuffs_png__decoder__filter_and_swizzle_tricky()
41985 v_x += (((uint32_t)(1)) << WUFFS_PNG__INTERLACING[self->private_impl.f_interlace_pass][0]); in wuffs_png__decoder__filter_and_swizzle_tricky()
41989 v_y += (((uint32_t)(1)) << WUFFS_PNG__INTERLACING[self->private_impl.f_interlace_pass][3]); in wuffs_png__decoder__filter_and_swizzle_tricky()
41998 // ---------------- Status Codes Implementations
42004 // ---------------- Private Consts
42006 // ---------------- Private Initializer Prototypes
42008 // ---------------- Private Function Prototypes
42010 // ---------------- VTables
42046 // ---------------- Initializer Implementations
42066 // The whole point of this if-check is to detect an uninitialized *self. in wuffs_tga__decoder__initialize()
42067 // We disable the warning on GCC. Clang-5.0 does not have this warning. in wuffs_tga__decoder__initialize()
42070 #pragma GCC diagnostic ignored "-Wmaybe-uninitialized" in wuffs_tga__decoder__initialize()
42072 if (self->private_impl.magic != 0) { in wuffs_tga__decoder__initialize()
42083 memset(&(self->private_impl), 0, sizeof(self->private_impl)); in wuffs_tga__decoder__initialize()
42087 self->private_impl.magic = WUFFS_BASE__MAGIC; in wuffs_tga__decoder__initialize()
42088 self->private_impl.vtable_for__wuffs_base__image_decoder.vtable_name = in wuffs_tga__decoder__initialize()
42090 self->private_impl.vtable_for__wuffs_base__image_decoder.function_pointers = in wuffs_tga__decoder__initialize()
42115 // ---------------- Function Implementations
42117 // -------- func tga.decoder.set_quirk_enabled
42127 // -------- func tga.decoder.decode_image_config
42137 if (self->private_impl.magic != WUFFS_BASE__MAGIC) { in wuffs_tga__decoder__decode_image_config()
42139 (self->private_impl.magic == WUFFS_BASE__DISABLED) in wuffs_tga__decoder__decode_image_config()
42144 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_tga__decoder__decode_image_config()
42147 if ((self->private_impl.active_coroutine != 0) && in wuffs_tga__decoder__decode_image_config()
42148 (self->private_impl.active_coroutine != 1)) { in wuffs_tga__decoder__decode_image_config()
42149 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_tga__decoder__decode_image_config()
42152 self->private_impl.active_coroutine = 0; in wuffs_tga__decoder__decode_image_config()
42164 io0_a_src = a_src->data.ptr; in wuffs_tga__decoder__decode_image_config()
42165 io1_a_src = io0_a_src + a_src->meta.ri; in wuffs_tga__decoder__decode_image_config()
42167 io2_a_src = io0_a_src + a_src->meta.wi; in wuffs_tga__decoder__decode_image_config()
42170 uint32_t coro_susp_point = self->private_impl.p_decode_image_config[0]; in wuffs_tga__decoder__decode_image_config()
42172 v_i = self->private_data.s_decode_image_config[0].v_i; in wuffs_tga__decoder__decode_image_config()
42177 if (self->private_impl.f_call_sequence != 0) { in wuffs_tga__decoder__decode_image_config()
42188 self->private_impl.f_header_id_length = t_0; in wuffs_tga__decoder__decode_image_config()
42197 self->private_impl.f_header_color_map_type = t_1; in wuffs_tga__decoder__decode_image_config()
42199 if (self->private_impl.f_header_color_map_type > 1) { in wuffs_tga__decoder__decode_image_config()
42210 self->private_impl.f_header_image_type = t_2; in wuffs_tga__decoder__decode_image_config()
42212 if ((self->private_impl.f_header_image_type == 1) || in wuffs_tga__decoder__decode_image_config()
42213 (self->private_impl.f_header_image_type == 2) || in wuffs_tga__decoder__decode_image_config()
42214 (self->private_impl.f_header_image_type == 3) || in wuffs_tga__decoder__decode_image_config()
42215 (self->private_impl.f_header_image_type == 9) || in wuffs_tga__decoder__decode_image_config()
42216 (self->private_impl.f_header_image_type == 10) || in wuffs_tga__decoder__decode_image_config()
42217 (self->private_impl.f_header_image_type == 11)) { in wuffs_tga__decoder__decode_image_config()
42225 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 2)) { in wuffs_tga__decoder__decode_image_config()
42229 self->private_data.s_decode_image_config[0].scratch = 0; in wuffs_tga__decoder__decode_image_config()
42236 uint64_t* scratch = &self->private_data.s_decode_image_config[0].scratch; in wuffs_tga__decoder__decode_image_config()
42249 self->private_impl.f_header_color_map_first_entry_index = t_3; in wuffs_tga__decoder__decode_image_config()
42254 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 2)) { in wuffs_tga__decoder__decode_image_config()
42258 self->private_data.s_decode_image_config[0].scratch = 0; in wuffs_tga__decoder__decode_image_config()
42265 uint64_t* scratch = &self->private_data.s_decode_image_config[0].scratch; in wuffs_tga__decoder__decode_image_config()
42278 self->private_impl.f_header_color_map_length = t_4; in wuffs_tga__decoder__decode_image_config()
42287 self->private_impl.f_header_color_map_entry_size = t_5; in wuffs_tga__decoder__decode_image_config()
42289 if (self->private_impl.f_header_color_map_type != 0) { in wuffs_tga__decoder__decode_image_config()
42290 …if ((self->private_impl.f_header_color_map_first_entry_index != 0) || (self->private_impl.f_header… in wuffs_tga__decoder__decode_image_config()
42293 } else if ((self->private_impl.f_header_color_map_entry_size != 15) && in wuffs_tga__decoder__decode_image_config()
42294 (self->private_impl.f_header_color_map_entry_size != 16) && in wuffs_tga__decoder__decode_image_config()
42295 (self->private_impl.f_header_color_map_entry_size != 24) && in wuffs_tga__decoder__decode_image_config()
42296 (self->private_impl.f_header_color_map_entry_size != 32)) { in wuffs_tga__decoder__decode_image_config()
42301 …if ((self->private_impl.f_header_color_map_first_entry_index != 0) || (self->private_impl.f_header… in wuffs_tga__decoder__decode_image_config()
42306 self->private_data.s_decode_image_config[0].scratch = 4; in wuffs_tga__decoder__decode_image_config()
42308 if (self->private_data.s_decode_image_config[0].scratch > ((uint64_t)(io2_a_src - iop_a_src))) { in wuffs_tga__decoder__decode_image_config()
42309 self->private_data.s_decode_image_config[0].scratch -= ((uint64_t)(io2_a_src - iop_a_src)); in wuffs_tga__decoder__decode_image_config()
42314 iop_a_src += self->private_data.s_decode_image_config[0].scratch; in wuffs_tga__decoder__decode_image_config()
42318 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 2)) { in wuffs_tga__decoder__decode_image_config()
42322 self->private_data.s_decode_image_config[0].scratch = 0; in wuffs_tga__decoder__decode_image_config()
42329 uint64_t* scratch = &self->private_data.s_decode_image_config[0].scratch; in wuffs_tga__decoder__decode_image_config()
42342 self->private_impl.f_width = t_6; in wuffs_tga__decoder__decode_image_config()
42347 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 2)) { in wuffs_tga__decoder__decode_image_config()
42351 self->private_data.s_decode_image_config[0].scratch = 0; in wuffs_tga__decoder__decode_image_config()
42358 uint64_t* scratch = &self->private_data.s_decode_image_config[0].scratch; in wuffs_tga__decoder__decode_image_config()
42371 self->private_impl.f_height = t_7; in wuffs_tga__decoder__decode_image_config()
42380 self->private_impl.f_header_pixel_depth = t_8; in wuffs_tga__decoder__decode_image_config()
42382 if ((self->private_impl.f_header_pixel_depth != 1) && in wuffs_tga__decoder__decode_image_config()
42383 (self->private_impl.f_header_pixel_depth != 8) && in wuffs_tga__decoder__decode_image_config()
42384 (self->private_impl.f_header_pixel_depth != 15) && in wuffs_tga__decoder__decode_image_config()
42385 (self->private_impl.f_header_pixel_depth != 16) && in wuffs_tga__decoder__decode_image_config()
42386 (self->private_impl.f_header_pixel_depth != 24) && in wuffs_tga__decoder__decode_image_config()
42387 (self->private_impl.f_header_pixel_depth != 32)) { in wuffs_tga__decoder__decode_image_config()
42391 if ((self->private_impl.f_header_image_type | 8) == 9) { in wuffs_tga__decoder__decode_image_config()
42392 self->private_impl.f_scratch_bytes_per_pixel = 1; in wuffs_tga__decoder__decode_image_config()
42393 self->private_impl.f_src_bytes_per_pixel = 1; in wuffs_tga__decoder__decode_image_config()
42394 self->private_impl.f_src_pixfmt = 2164523016; in wuffs_tga__decoder__decode_image_config()
42395 …self->private_impl.f_opaque = ((self->private_impl.f_header_color_map_entry_size == 15) || (self->… in wuffs_tga__decoder__decode_image_config()
42396 } else if ((self->private_impl.f_header_image_type | 8) == 10) { in wuffs_tga__decoder__decode_image_config()
42397 …if ((self->private_impl.f_header_pixel_depth == 15) || (self->private_impl.f_header_pixel_depth ==… in wuffs_tga__decoder__decode_image_config()
42398 self->private_impl.f_scratch_bytes_per_pixel = 4; in wuffs_tga__decoder__decode_image_config()
42399 self->private_impl.f_src_bytes_per_pixel = 0; in wuffs_tga__decoder__decode_image_config()
42400 self->private_impl.f_src_pixfmt = 2164295816; in wuffs_tga__decoder__decode_image_config()
42401 } else if (self->private_impl.f_header_pixel_depth == 24) { in wuffs_tga__decoder__decode_image_config()
42402 self->private_impl.f_scratch_bytes_per_pixel = 3; in wuffs_tga__decoder__decode_image_config()
42403 self->private_impl.f_src_bytes_per_pixel = 3; in wuffs_tga__decoder__decode_image_config()
42404 self->private_impl.f_src_pixfmt = 2147485832; in wuffs_tga__decoder__decode_image_config()
42405 self->private_impl.f_opaque = true; in wuffs_tga__decoder__decode_image_config()
42406 } else if (self->private_impl.f_header_pixel_depth == 32) { in wuffs_tga__decoder__decode_image_config()
42407 self->private_impl.f_scratch_bytes_per_pixel = 4; in wuffs_tga__decoder__decode_image_config()
42408 self->private_impl.f_src_bytes_per_pixel = 4; in wuffs_tga__decoder__decode_image_config()
42409 self->private_impl.f_src_pixfmt = 2164295816; in wuffs_tga__decoder__decode_image_config()
42415 if (self->private_impl.f_header_pixel_depth == 8) { in wuffs_tga__decoder__decode_image_config()
42416 self->private_impl.f_scratch_bytes_per_pixel = 1; in wuffs_tga__decoder__decode_image_config()
42417 self->private_impl.f_src_bytes_per_pixel = 1; in wuffs_tga__decoder__decode_image_config()
42418 self->private_impl.f_src_pixfmt = 536870920; in wuffs_tga__decoder__decode_image_config()
42419 self->private_impl.f_opaque = true; in wuffs_tga__decoder__decode_image_config()
42432 self->private_impl.f_header_image_descriptor = t_9; in wuffs_tga__decoder__decode_image_config()
42434 if ((self->private_impl.f_header_image_descriptor & 16) != 0) { in wuffs_tga__decoder__decode_image_config()
42438 …self->private_data.s_decode_image_config[0].scratch = ((uint32_t)(self->private_impl.f_header_id_l… in wuffs_tga__decoder__decode_image_config()
42440 if (self->private_data.s_decode_image_config[0].scratch > ((uint64_t)(io2_a_src - iop_a_src))) { in wuffs_tga__decoder__decode_image_config()
42441 self->private_data.s_decode_image_config[0].scratch -= ((uint64_t)(io2_a_src - iop_a_src)); in wuffs_tga__decoder__decode_image_config()
42446 iop_a_src += self->private_data.s_decode_image_config[0].scratch; in wuffs_tga__decoder__decode_image_config()
42447 if (self->private_impl.f_header_color_map_type != 0) { in wuffs_tga__decoder__decode_image_config()
42448 while (v_i < ((uint32_t)(self->private_impl.f_header_color_map_length))) { in wuffs_tga__decoder__decode_image_config()
42449 if (self->private_impl.f_header_color_map_entry_size == 24) { in wuffs_tga__decoder__decode_image_config()
42453 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 3)) { in wuffs_tga__decoder__decode_image_config()
42457 self->private_data.s_decode_image_config[0].scratch = 0; in wuffs_tga__decoder__decode_image_config()
42464 uint64_t* scratch = &self->private_data.s_decode_image_config[0].scratch; in wuffs_tga__decoder__decode_image_config()
42479 … self->private_data.f_src_palette[(((v_i & 255) * 4) + 0)] = ((uint8_t)(((v_c >> 0) & 255))); in wuffs_tga__decoder__decode_image_config()
42480 … self->private_data.f_src_palette[(((v_i & 255) * 4) + 1)] = ((uint8_t)(((v_c >> 8) & 255))); in wuffs_tga__decoder__decode_image_config()
42481 … self->private_data.f_src_palette[(((v_i & 255) * 4) + 2)] = ((uint8_t)(((v_c >> 16) & 255))); in wuffs_tga__decoder__decode_image_config()
42482 self->private_data.f_src_palette[(((v_i & 255) * 4) + 3)] = 255; in wuffs_tga__decoder__decode_image_config()
42483 } else if (self->private_impl.f_header_color_map_entry_size == 32) { in wuffs_tga__decoder__decode_image_config()
42487 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 4)) { in wuffs_tga__decoder__decode_image_config()
42491 self->private_data.s_decode_image_config[0].scratch = 0; in wuffs_tga__decoder__decode_image_config()
42498 uint64_t* scratch = &self->private_data.s_decode_image_config[0].scratch; in wuffs_tga__decoder__decode_image_config()
42513 … self->private_data.f_src_palette[(((v_i & 255) * 4) + 0)] = ((uint8_t)(((v_c >> 0) & 255))); in wuffs_tga__decoder__decode_image_config()
42514 … self->private_data.f_src_palette[(((v_i & 255) * 4) + 1)] = ((uint8_t)(((v_c >> 8) & 255))); in wuffs_tga__decoder__decode_image_config()
42515 … self->private_data.f_src_palette[(((v_i & 255) * 4) + 2)] = ((uint8_t)(((v_c >> 16) & 255))); in wuffs_tga__decoder__decode_image_config()
42516 … self->private_data.f_src_palette[(((v_i & 255) * 4) + 3)] = ((uint8_t)(((v_c >> 24) & 255))); in wuffs_tga__decoder__decode_image_config()
42521 if (WUFFS_BASE__LIKELY(io2_a_src - iop_a_src >= 2)) { in wuffs_tga__decoder__decode_image_config()
42525 self->private_data.s_decode_image_config[0].scratch = 0; in wuffs_tga__decoder__decode_image_config()
42532 uint64_t* scratch = &self->private_data.s_decode_image_config[0].scratch; in wuffs_tga__decoder__decode_image_config()
42548 …self->private_data.f_src_palette[(((v_i & 255) * 4) + 0)] = ((uint8_t)(((v_c5 << 3) | (v_c5 >> 2))… in wuffs_tga__decoder__decode_image_config()
42550 …self->private_data.f_src_palette[(((v_i & 255) * 4) + 1)] = ((uint8_t)(((v_c5 << 3) | (v_c5 >> 2))… in wuffs_tga__decoder__decode_image_config()
42552 …self->private_data.f_src_palette[(((v_i & 255) * 4) + 2)] = ((uint8_t)(((v_c5 << 3) | (v_c5 >> 2))… in wuffs_tga__decoder__decode_image_config()
42553 self->private_data.f_src_palette[(((v_i & 255) * 4) + 3)] = 255; in wuffs_tga__decoder__decode_image_config()
42558 self->private_data.f_src_palette[((v_i * 4) + 0)] = 0; in wuffs_tga__decoder__decode_image_config()
42559 self->private_data.f_src_palette[((v_i * 4) + 1)] = 0; in wuffs_tga__decoder__decode_image_config()
42560 self->private_data.f_src_palette[((v_i * 4) + 2)] = 0; in wuffs_tga__decoder__decode_image_config()
42561 self->private_data.f_src_palette[((v_i * 4) + 3)] = 255; in wuffs_tga__decoder__decode_image_config()
42565 …self->private_impl.f_frame_config_io_position = wuffs_base__u64__sat_add((a_src ? a_src->meta.pos … in wuffs_tga__decoder__decode_image_config()
42569 self->private_impl.f_src_pixfmt, in wuffs_tga__decoder__decode_image_config()
42571 self->private_impl.f_width, in wuffs_tga__decoder__decode_image_config()
42572 self->private_impl.f_height, in wuffs_tga__decoder__decode_image_config()
42573 self->private_impl.f_frame_config_io_position, in wuffs_tga__decoder__decode_image_config()
42574 self->private_impl.f_opaque); in wuffs_tga__decoder__decode_image_config()
42576 self->private_impl.f_call_sequence = 3; in wuffs_tga__decoder__decode_image_config()
42580 self->private_impl.p_decode_image_config[0] = 0; in wuffs_tga__decoder__decode_image_config()
42586 …self->private_impl.p_decode_image_config[0] = wuffs_base__status__is_suspension(&status) ? coro_su… in wuffs_tga__decoder__decode_image_config()
42587 self->private_impl.active_coroutine = wuffs_base__status__is_suspension(&status) ? 1 : 0; in wuffs_tga__decoder__decode_image_config()
42588 self->private_data.s_decode_image_config[0].v_i = v_i; in wuffs_tga__decoder__decode_image_config()
42593 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_tga__decoder__decode_image_config()
42597 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_tga__decoder__decode_image_config()
42602 // -------- func tga.decoder.decode_frame_config
42612 if (self->private_impl.magic != WUFFS_BASE__MAGIC) { in wuffs_tga__decoder__decode_frame_config()
42614 (self->private_impl.magic == WUFFS_BASE__DISABLED) in wuffs_tga__decoder__decode_frame_config()
42619 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_tga__decoder__decode_frame_config()
42622 if ((self->private_impl.active_coroutine != 0) && in wuffs_tga__decoder__decode_frame_config()
42623 (self->private_impl.active_coroutine != 2)) { in wuffs_tga__decoder__decode_frame_config()
42624 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_tga__decoder__decode_frame_config()
42627 self->private_impl.active_coroutine = 0; in wuffs_tga__decoder__decode_frame_config()
42635 io0_a_src = a_src->data.ptr; in wuffs_tga__decoder__decode_frame_config()
42636 io1_a_src = io0_a_src + a_src->meta.ri; in wuffs_tga__decoder__decode_frame_config()
42638 io2_a_src = io0_a_src + a_src->meta.wi; in wuffs_tga__decoder__decode_frame_config()
42641 uint32_t coro_susp_point = self->private_impl.p_decode_frame_config[0]; in wuffs_tga__decoder__decode_frame_config()
42645 if (self->private_impl.f_call_sequence < 3) { in wuffs_tga__decoder__decode_frame_config()
42647 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_tga__decoder__decode_frame_config()
42652 iop_a_src = a_src->data.ptr + a_src->meta.ri; in wuffs_tga__decoder__decode_frame_config()
42657 } else if (self->private_impl.f_call_sequence == 3) { in wuffs_tga__decoder__decode_frame_config()
42658 …if (self->private_impl.f_frame_config_io_position != wuffs_base__u64__sat_add((a_src ? a_src->meta… in wuffs_tga__decoder__decode_frame_config()
42662 } else if (self->private_impl.f_call_sequence == 4) { in wuffs_tga__decoder__decode_frame_config()
42663 self->private_impl.f_call_sequence = 255; in wuffs_tga__decoder__decode_frame_config()
42676 self->private_impl.f_width, in wuffs_tga__decoder__decode_frame_config()
42677 self->private_impl.f_height), in wuffs_tga__decoder__decode_frame_config()
42680 self->private_impl.f_frame_config_io_position, in wuffs_tga__decoder__decode_frame_config()
42682 self->private_impl.f_opaque, in wuffs_tga__decoder__decode_frame_config()
42686 self->private_impl.f_call_sequence = 4; in wuffs_tga__decoder__decode_frame_config()
42689 self->private_impl.p_decode_frame_config[0] = 0; in wuffs_tga__decoder__decode_frame_config()
42695 …self->private_impl.p_decode_frame_config[0] = wuffs_base__status__is_suspension(&status) ? coro_su… in wuffs_tga__decoder__decode_frame_config()
42696 self->private_impl.active_coroutine = wuffs_base__status__is_suspension(&status) ? 2 : 0; in wuffs_tga__decoder__decode_frame_config()
42701 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_tga__decoder__decode_frame_config()
42705 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_tga__decoder__decode_frame_config()
42710 // -------- func tga.decoder.decode_frame
42723 if (self->private_impl.magic != WUFFS_BASE__MAGIC) { in wuffs_tga__decoder__decode_frame()
42725 (self->private_impl.magic == WUFFS_BASE__DISABLED) in wuffs_tga__decoder__decode_frame()
42730 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_tga__decoder__decode_frame()
42733 if ((self->private_impl.active_coroutine != 0) && in wuffs_tga__decoder__decode_frame()
42734 (self->private_impl.active_coroutine != 3)) { in wuffs_tga__decoder__decode_frame()
42735 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_tga__decoder__decode_frame()
42738 self->private_impl.active_coroutine = 0; in wuffs_tga__decoder__decode_frame()
42767 io0_a_src = a_src->data.ptr; in wuffs_tga__decoder__decode_frame()
42768 io1_a_src = io0_a_src + a_src->meta.ri; in wuffs_tga__decoder__decode_frame()
42770 io2_a_src = io0_a_src + a_src->meta.wi; in wuffs_tga__decoder__decode_frame()
42773 uint32_t coro_susp_point = self->private_impl.p_decode_frame[0]; in wuffs_tga__decoder__decode_frame()
42775 v_dst_bytes_per_pixel = self->private_data.s_decode_frame[0].v_dst_bytes_per_pixel; in wuffs_tga__decoder__decode_frame()
42776 v_dst_x = self->private_data.s_decode_frame[0].v_dst_x; in wuffs_tga__decoder__decode_frame()
42777 v_dst_y = self->private_data.s_decode_frame[0].v_dst_y; in wuffs_tga__decoder__decode_frame()
42778 v_mark = self->private_data.s_decode_frame[0].v_mark; in wuffs_tga__decoder__decode_frame()
42779 v_num_pixels32 = self->private_data.s_decode_frame[0].v_num_pixels32; in wuffs_tga__decoder__decode_frame()
42780 v_lit_length = self->private_data.s_decode_frame[0].v_lit_length; in wuffs_tga__decoder__decode_frame()
42781 v_run_length = self->private_data.s_decode_frame[0].v_run_length; in wuffs_tga__decoder__decode_frame()
42782 v_num_dst_bytes = self->private_data.s_decode_frame[0].v_num_dst_bytes; in wuffs_tga__decoder__decode_frame()
42787 if (self->private_impl.f_call_sequence < 4) { in wuffs_tga__decoder__decode_frame()
42789 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_tga__decoder__decode_frame()
42794 iop_a_src = a_src->data.ptr + a_src->meta.ri; in wuffs_tga__decoder__decode_frame()
42799 } else if (self->private_impl.f_call_sequence == 4) { in wuffs_tga__decoder__decode_frame()
42804 if (self->private_impl.f_header_color_map_type != 0) { in wuffs_tga__decoder__decode_frame()
42805 v_src_palette = wuffs_base__make_slice_u8(self->private_data.f_src_palette, 1024); in wuffs_tga__decoder__decode_frame()
42807 v_status = wuffs_base__pixel_swizzler__prepare(&self->private_impl.f_swizzler, in wuffs_tga__decoder__decode_frame()
42809 …wuffs_base__pixel_buffer__palette_or_else(a_dst, wuffs_base__make_slice_u8(self->private_data.f_ds… in wuffs_tga__decoder__decode_frame()
42810 wuffs_base__utility__make_pixel_format(self->private_impl.f_src_pixfmt), in wuffs_tga__decoder__decode_frame()
42830 if ((self->private_impl.f_header_image_descriptor & 32) == 0) { in wuffs_tga__decoder__decode_frame()
42831 v_dst_y = ((uint32_t)(self->private_impl.f_height - 1)); in wuffs_tga__decoder__decode_frame()
42833 if ((self->private_impl.f_header_image_type & 8) == 0) { in wuffs_tga__decoder__decode_frame()
42834 v_lit_length = self->private_impl.f_width; in wuffs_tga__decoder__decode_frame()
42839 …fs_base__pixel_buffer__palette_or_else(a_dst, wuffs_base__make_slice_u8(self->private_data.f_dst_p… in wuffs_tga__decoder__decode_frame()
42840 while (v_dst_y < self->private_impl.f_height) { in wuffs_tga__decoder__decode_frame()
42848 while (v_dst_x < self->private_impl.f_width) { in wuffs_tga__decoder__decode_frame()
42849 if (self->private_impl.f_src_bytes_per_pixel > 0) { in wuffs_tga__decoder__decode_frame()
42851 v_mark = ((uint64_t)(iop_a_src - io0_a_src)); in wuffs_tga__decoder__decode_frame()
42852 …v_num_pixels64 = (((uint64_t)(io2_a_src - iop_a_src)) / ((uint64_t)(self->private_impl.f_src_bytes… in wuffs_tga__decoder__decode_frame()
42855 v_num_src_bytes = (v_num_pixels32 * self->private_impl.f_src_bytes_per_pixel); in wuffs_tga__decoder__decode_frame()
42856 self->private_data.s_decode_frame[0].scratch = v_num_src_bytes; in wuffs_tga__decoder__decode_frame()
42858 … if (self->private_data.s_decode_frame[0].scratch > ((uint64_t)(io2_a_src - iop_a_src))) { in wuffs_tga__decoder__decode_frame()
42859 self->private_data.s_decode_frame[0].scratch -= ((uint64_t)(io2_a_src - iop_a_src)); in wuffs_tga__decoder__decode_frame()
42864 iop_a_src += self->private_data.s_decode_frame[0].scratch; in wuffs_tga__decoder__decode_frame()
42865 …erleaved_from_slice(&self->private_impl.f_swizzler, v_dst, v_dst_palette, wuffs_base__io__since(v_… in wuffs_tga__decoder__decode_frame()
42872 v_lit_length = (((uint32_t)(v_lit_length - v_num_pixels32)) & 65535); in wuffs_tga__decoder__decode_frame()
42879 v_run_length -= 1; in wuffs_tga__decoder__decode_frame()
42880 …elf->private_impl.f_swizzler, v_dst, v_dst_palette, wuffs_base__slice_u8__subslice_j(wuffs_base__m… in wuffs_tga__decoder__decode_frame()
42886 if (((uint64_t)(io2_a_src - iop_a_src)) <= 0) { in wuffs_tga__decoder__decode_frame()
42894 if ((v_lit_length + v_dst_x) > self->private_impl.f_width) { in wuffs_tga__decoder__decode_frame()
42899 if (self->private_impl.f_src_bytes_per_pixel == 1) { in wuffs_tga__decoder__decode_frame()
42900 if (((uint64_t)(io2_a_src - iop_a_src)) < 2) { in wuffs_tga__decoder__decode_frame()
42907 … self->private_data.f_scratch[0] = wuffs_base__peek_u8be__no_bounds_check(iop_a_src); in wuffs_tga__decoder__decode_frame()
42909 } else if (self->private_impl.f_src_bytes_per_pixel == 3) { in wuffs_tga__decoder__decode_frame()
42910 if (((uint64_t)(io2_a_src - iop_a_src)) < 4) { in wuffs_tga__decoder__decode_frame()
42917 … self->private_data.f_scratch[0] = wuffs_base__peek_u8be__no_bounds_check(iop_a_src); in wuffs_tga__decoder__decode_frame()
42919 … self->private_data.f_scratch[1] = wuffs_base__peek_u8be__no_bounds_check(iop_a_src); in wuffs_tga__decoder__decode_frame()
42921 … self->private_data.f_scratch[2] = wuffs_base__peek_u8be__no_bounds_check(iop_a_src); in wuffs_tga__decoder__decode_frame()
42924 if (((uint64_t)(io2_a_src - iop_a_src)) < 5) { in wuffs_tga__decoder__decode_frame()
42931 … self->private_data.f_scratch[0] = wuffs_base__peek_u8be__no_bounds_check(iop_a_src); in wuffs_tga__decoder__decode_frame()
42933 … self->private_data.f_scratch[1] = wuffs_base__peek_u8be__no_bounds_check(iop_a_src); in wuffs_tga__decoder__decode_frame()
42935 … self->private_data.f_scratch[2] = wuffs_base__peek_u8be__no_bounds_check(iop_a_src); in wuffs_tga__decoder__decode_frame()
42937 … self->private_data.f_scratch[3] = wuffs_base__peek_u8be__no_bounds_check(iop_a_src); in wuffs_tga__decoder__decode_frame()
42940 if ((v_run_length + v_dst_x) > self->private_impl.f_width) { in wuffs_tga__decoder__decode_frame()
42948 if (((uint64_t)(io2_a_src - iop_a_src)) < 2) { in wuffs_tga__decoder__decode_frame()
42956 self->private_data.f_scratch[0] = ((uint8_t)(((v_c5 << 3) | (v_c5 >> 2)))); in wuffs_tga__decoder__decode_frame()
42958 self->private_data.f_scratch[1] = ((uint8_t)(((v_c5 << 3) | (v_c5 >> 2)))); in wuffs_tga__decoder__decode_frame()
42960 self->private_data.f_scratch[2] = ((uint8_t)(((v_c5 << 3) | (v_c5 >> 2)))); in wuffs_tga__decoder__decode_frame()
42961 self->private_data.f_scratch[3] = 255; in wuffs_tga__decoder__decode_frame()
42962 …swizzle_interleaved_from_slice(&self->private_impl.f_swizzler, v_dst, v_dst_palette, wuffs_base__m… in wuffs_tga__decoder__decode_frame()
42967 v_lit_length -= 1; in wuffs_tga__decoder__decode_frame()
42969 v_run_length -= 1; in wuffs_tga__decoder__decode_frame()
42970 …elf->private_impl.f_swizzler, v_dst, v_dst_palette, wuffs_base__slice_u8__subslice_j(wuffs_base__m… in wuffs_tga__decoder__decode_frame()
42976 if (((uint64_t)(io2_a_src - iop_a_src)) <= 0) { in wuffs_tga__decoder__decode_frame()
42984 if ((v_lit_length + v_dst_x) > self->private_impl.f_width) { in wuffs_tga__decoder__decode_frame()
42989 if (((uint64_t)(io2_a_src - iop_a_src)) < 3) { in wuffs_tga__decoder__decode_frame()
42999 self->private_data.f_scratch[0] = ((uint8_t)(((v_c5 << 3) | (v_c5 >> 2)))); in wuffs_tga__decoder__decode_frame()
43001 self->private_data.f_scratch[1] = ((uint8_t)(((v_c5 << 3) | (v_c5 >> 2)))); in wuffs_tga__decoder__decode_frame()
43003 self->private_data.f_scratch[2] = ((uint8_t)(((v_c5 << 3) | (v_c5 >> 2)))); in wuffs_tga__decoder__decode_frame()
43004 self->private_data.f_scratch[3] = 255; in wuffs_tga__decoder__decode_frame()
43005 if ((v_run_length + v_dst_x) > self->private_impl.f_width) { in wuffs_tga__decoder__decode_frame()
43014 if ((self->private_impl.f_header_image_descriptor & 32) == 0) { in wuffs_tga__decoder__decode_frame()
43015 v_dst_y -= 1; in wuffs_tga__decoder__decode_frame()
43019 if ((self->private_impl.f_header_image_type & 8) == 0) { in wuffs_tga__decoder__decode_frame()
43020 v_lit_length = self->private_impl.f_width; in wuffs_tga__decoder__decode_frame()
43026 self->private_impl.f_call_sequence = 255; in wuffs_tga__decoder__decode_frame()
43029 self->private_impl.p_decode_frame[0] = 0; in wuffs_tga__decoder__decode_frame()
43035 …self->private_impl.p_decode_frame[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_poin… in wuffs_tga__decoder__decode_frame()
43036 self->private_impl.active_coroutine = wuffs_base__status__is_suspension(&status) ? 3 : 0; in wuffs_tga__decoder__decode_frame()
43037 self->private_data.s_decode_frame[0].v_dst_bytes_per_pixel = v_dst_bytes_per_pixel; in wuffs_tga__decoder__decode_frame()
43038 self->private_data.s_decode_frame[0].v_dst_x = v_dst_x; in wuffs_tga__decoder__decode_frame()
43039 self->private_data.s_decode_frame[0].v_dst_y = v_dst_y; in wuffs_tga__decoder__decode_frame()
43040 self->private_data.s_decode_frame[0].v_mark = v_mark; in wuffs_tga__decoder__decode_frame()
43041 self->private_data.s_decode_frame[0].v_num_pixels32 = v_num_pixels32; in wuffs_tga__decoder__decode_frame()
43042 self->private_data.s_decode_frame[0].v_lit_length = v_lit_length; in wuffs_tga__decoder__decode_frame()
43043 self->private_data.s_decode_frame[0].v_run_length = v_run_length; in wuffs_tga__decoder__decode_frame()
43044 self->private_data.s_decode_frame[0].v_num_dst_bytes = v_num_dst_bytes; in wuffs_tga__decoder__decode_frame()
43049 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_tga__decoder__decode_frame()
43053 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_tga__decoder__decode_frame()
43058 // -------- func tga.decoder.frame_dirty_rect
43066 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) && in wuffs_tga__decoder__frame_dirty_rect()
43067 (self->private_impl.magic != WUFFS_BASE__DISABLED)) { in wuffs_tga__decoder__frame_dirty_rect()
43074 self->private_impl.f_width, in wuffs_tga__decoder__frame_dirty_rect()
43075 self->private_impl.f_height); in wuffs_tga__decoder__frame_dirty_rect()
43078 // -------- func tga.decoder.num_animation_loops
43086 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) && in wuffs_tga__decoder__num_animation_loops()
43087 (self->private_impl.magic != WUFFS_BASE__DISABLED)) { in wuffs_tga__decoder__num_animation_loops()
43094 // -------- func tga.decoder.num_decoded_frame_configs
43102 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) && in wuffs_tga__decoder__num_decoded_frame_configs()
43103 (self->private_impl.magic != WUFFS_BASE__DISABLED)) { in wuffs_tga__decoder__num_decoded_frame_configs()
43107 if (self->private_impl.f_call_sequence > 3) { in wuffs_tga__decoder__num_decoded_frame_configs()
43113 // -------- func tga.decoder.num_decoded_frames
43121 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) && in wuffs_tga__decoder__num_decoded_frames()
43122 (self->private_impl.magic != WUFFS_BASE__DISABLED)) { in wuffs_tga__decoder__num_decoded_frames()
43126 if (self->private_impl.f_call_sequence > 4) { in wuffs_tga__decoder__num_decoded_frames()
43132 // -------- func tga.decoder.restart_frame
43142 if (self->private_impl.magic != WUFFS_BASE__MAGIC) { in wuffs_tga__decoder__restart_frame()
43144 (self->private_impl.magic == WUFFS_BASE__DISABLED) in wuffs_tga__decoder__restart_frame()
43149 if (self->private_impl.f_call_sequence < 3) { in wuffs_tga__decoder__restart_frame()
43155 self->private_impl.f_call_sequence = 3; in wuffs_tga__decoder__restart_frame()
43156 self->private_impl.f_frame_config_io_position = a_io_position; in wuffs_tga__decoder__restart_frame()
43160 // -------- func tga.decoder.set_report_metadata
43170 // -------- func tga.decoder.tell_me_more
43181 if (self->private_impl.magic != WUFFS_BASE__MAGIC) { in wuffs_tga__decoder__tell_me_more()
43183 (self->private_impl.magic == WUFFS_BASE__DISABLED) in wuffs_tga__decoder__tell_me_more()
43188 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_tga__decoder__tell_me_more()
43191 if ((self->private_impl.active_coroutine != 0) && in wuffs_tga__decoder__tell_me_more()
43192 (self->private_impl.active_coroutine != 4)) { in wuffs_tga__decoder__tell_me_more()
43193 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_tga__decoder__tell_me_more()
43196 self->private_impl.active_coroutine = 0; in wuffs_tga__decoder__tell_me_more()
43207 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_tga__decoder__tell_me_more()
43212 // -------- func tga.decoder.workbuf_len
43220 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) && in wuffs_tga__decoder__workbuf_len()
43221 (self->private_impl.magic != WUFFS_BASE__DISABLED)) { in wuffs_tga__decoder__workbuf_len()
43232 // ---------------- Status Codes Implementations
43236 // ---------------- Private Consts
43238 // ---------------- Private Initializer Prototypes
43240 // ---------------- Private Function Prototypes
43242 // ---------------- VTables
43278 // ---------------- Initializer Implementations
43298 // The whole point of this if-check is to detect an uninitialized *self. in wuffs_wbmp__decoder__initialize()
43299 // We disable the warning on GCC. Clang-5.0 does not have this warning. in wuffs_wbmp__decoder__initialize()
43302 #pragma GCC diagnostic ignored "-Wmaybe-uninitialized" in wuffs_wbmp__decoder__initialize()
43304 if (self->private_impl.magic != 0) { in wuffs_wbmp__decoder__initialize()
43315 memset(&(self->private_impl), 0, sizeof(self->private_impl)); in wuffs_wbmp__decoder__initialize()
43319 self->private_impl.magic = WUFFS_BASE__MAGIC; in wuffs_wbmp__decoder__initialize()
43320 self->private_impl.vtable_for__wuffs_base__image_decoder.vtable_name = in wuffs_wbmp__decoder__initialize()
43322 self->private_impl.vtable_for__wuffs_base__image_decoder.function_pointers = in wuffs_wbmp__decoder__initialize()
43347 // ---------------- Function Implementations
43349 // -------- func wbmp.decoder.set_quirk_enabled
43359 // -------- func wbmp.decoder.decode_image_config
43369 if (self->private_impl.magic != WUFFS_BASE__MAGIC) { in wuffs_wbmp__decoder__decode_image_config()
43371 (self->private_impl.magic == WUFFS_BASE__DISABLED) in wuffs_wbmp__decoder__decode_image_config()
43376 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_wbmp__decoder__decode_image_config()
43379 if ((self->private_impl.active_coroutine != 0) && in wuffs_wbmp__decoder__decode_image_config()
43380 (self->private_impl.active_coroutine != 1)) { in wuffs_wbmp__decoder__decode_image_config()
43381 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_wbmp__decoder__decode_image_config()
43384 self->private_impl.active_coroutine = 0; in wuffs_wbmp__decoder__decode_image_config()
43397 io0_a_src = a_src->data.ptr; in wuffs_wbmp__decoder__decode_image_config()
43398 io1_a_src = io0_a_src + a_src->meta.ri; in wuffs_wbmp__decoder__decode_image_config()
43400 io2_a_src = io0_a_src + a_src->meta.wi; in wuffs_wbmp__decoder__decode_image_config()
43403 uint32_t coro_susp_point = self->private_impl.p_decode_image_config[0]; in wuffs_wbmp__decoder__decode_image_config()
43405 v_i = self->private_data.s_decode_image_config[0].v_i; in wuffs_wbmp__decoder__decode_image_config()
43406 v_x32 = self->private_data.s_decode_image_config[0].v_x32; in wuffs_wbmp__decoder__decode_image_config()
43411 if (self->private_impl.f_call_sequence != 0) { in wuffs_wbmp__decoder__decode_image_config()
43458 self->private_impl.f_width = v_x32; in wuffs_wbmp__decoder__decode_image_config()
43460 self->private_impl.f_height = v_x32; in wuffs_wbmp__decoder__decode_image_config()
43464 …self->private_impl.f_frame_config_io_position = wuffs_base__u64__sat_add((a_src ? a_src->meta.pos … in wuffs_wbmp__decoder__decode_image_config()
43470 self->private_impl.f_width, in wuffs_wbmp__decoder__decode_image_config()
43471 self->private_impl.f_height, in wuffs_wbmp__decoder__decode_image_config()
43472 self->private_impl.f_frame_config_io_position, in wuffs_wbmp__decoder__decode_image_config()
43475 self->private_impl.f_call_sequence = 3; in wuffs_wbmp__decoder__decode_image_config()
43479 self->private_impl.p_decode_image_config[0] = 0; in wuffs_wbmp__decoder__decode_image_config()
43485 …self->private_impl.p_decode_image_config[0] = wuffs_base__status__is_suspension(&status) ? coro_su… in wuffs_wbmp__decoder__decode_image_config()
43486 self->private_impl.active_coroutine = wuffs_base__status__is_suspension(&status) ? 1 : 0; in wuffs_wbmp__decoder__decode_image_config()
43487 self->private_data.s_decode_image_config[0].v_i = v_i; in wuffs_wbmp__decoder__decode_image_config()
43488 self->private_data.s_decode_image_config[0].v_x32 = v_x32; in wuffs_wbmp__decoder__decode_image_config()
43493 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_wbmp__decoder__decode_image_config()
43497 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_wbmp__decoder__decode_image_config()
43502 // -------- func wbmp.decoder.decode_frame_config
43512 if (self->private_impl.magic != WUFFS_BASE__MAGIC) { in wuffs_wbmp__decoder__decode_frame_config()
43514 (self->private_impl.magic == WUFFS_BASE__DISABLED) in wuffs_wbmp__decoder__decode_frame_config()
43519 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_wbmp__decoder__decode_frame_config()
43522 if ((self->private_impl.active_coroutine != 0) && in wuffs_wbmp__decoder__decode_frame_config()
43523 (self->private_impl.active_coroutine != 2)) { in wuffs_wbmp__decoder__decode_frame_config()
43524 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_wbmp__decoder__decode_frame_config()
43527 self->private_impl.active_coroutine = 0; in wuffs_wbmp__decoder__decode_frame_config()
43535 io0_a_src = a_src->data.ptr; in wuffs_wbmp__decoder__decode_frame_config()
43536 io1_a_src = io0_a_src + a_src->meta.ri; in wuffs_wbmp__decoder__decode_frame_config()
43538 io2_a_src = io0_a_src + a_src->meta.wi; in wuffs_wbmp__decoder__decode_frame_config()
43541 uint32_t coro_susp_point = self->private_impl.p_decode_frame_config[0]; in wuffs_wbmp__decoder__decode_frame_config()
43545 if (self->private_impl.f_call_sequence < 3) { in wuffs_wbmp__decoder__decode_frame_config()
43547 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_wbmp__decoder__decode_frame_config()
43552 iop_a_src = a_src->data.ptr + a_src->meta.ri; in wuffs_wbmp__decoder__decode_frame_config()
43557 } else if (self->private_impl.f_call_sequence == 3) { in wuffs_wbmp__decoder__decode_frame_config()
43558 …if (self->private_impl.f_frame_config_io_position != wuffs_base__u64__sat_add((a_src ? a_src->meta… in wuffs_wbmp__decoder__decode_frame_config()
43562 } else if (self->private_impl.f_call_sequence == 4) { in wuffs_wbmp__decoder__decode_frame_config()
43563 self->private_impl.f_call_sequence = 255; in wuffs_wbmp__decoder__decode_frame_config()
43576 self->private_impl.f_width, in wuffs_wbmp__decoder__decode_frame_config()
43577 self->private_impl.f_height), in wuffs_wbmp__decoder__decode_frame_config()
43580 self->private_impl.f_frame_config_io_position, in wuffs_wbmp__decoder__decode_frame_config()
43586 self->private_impl.f_call_sequence = 4; in wuffs_wbmp__decoder__decode_frame_config()
43589 self->private_impl.p_decode_frame_config[0] = 0; in wuffs_wbmp__decoder__decode_frame_config()
43595 …self->private_impl.p_decode_frame_config[0] = wuffs_base__status__is_suspension(&status) ? coro_su… in wuffs_wbmp__decoder__decode_frame_config()
43596 self->private_impl.active_coroutine = wuffs_base__status__is_suspension(&status) ? 2 : 0; in wuffs_wbmp__decoder__decode_frame_config()
43601 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_wbmp__decoder__decode_frame_config()
43605 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_wbmp__decoder__decode_frame_config()
43610 // -------- func wbmp.decoder.decode_frame
43623 if (self->private_impl.magic != WUFFS_BASE__MAGIC) { in wuffs_wbmp__decoder__decode_frame()
43625 (self->private_impl.magic == WUFFS_BASE__DISABLED) in wuffs_wbmp__decoder__decode_frame()
43630 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_wbmp__decoder__decode_frame()
43633 if ((self->private_impl.active_coroutine != 0) && in wuffs_wbmp__decoder__decode_frame()
43634 (self->private_impl.active_coroutine != 3)) { in wuffs_wbmp__decoder__decode_frame()
43635 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_wbmp__decoder__decode_frame()
43638 self->private_impl.active_coroutine = 0; in wuffs_wbmp__decoder__decode_frame()
43658 io0_a_src = a_src->data.ptr; in wuffs_wbmp__decoder__decode_frame()
43659 io1_a_src = io0_a_src + a_src->meta.ri; in wuffs_wbmp__decoder__decode_frame()
43661 io2_a_src = io0_a_src + a_src->meta.wi; in wuffs_wbmp__decoder__decode_frame()
43664 uint32_t coro_susp_point = self->private_impl.p_decode_frame[0]; in wuffs_wbmp__decoder__decode_frame()
43666 v_dst_bytes_per_pixel = self->private_data.s_decode_frame[0].v_dst_bytes_per_pixel; in wuffs_wbmp__decoder__decode_frame()
43667 v_dst_x = self->private_data.s_decode_frame[0].v_dst_x; in wuffs_wbmp__decoder__decode_frame()
43668 v_dst_y = self->private_data.s_decode_frame[0].v_dst_y; in wuffs_wbmp__decoder__decode_frame()
43669 memcpy(v_src, self->private_data.s_decode_frame[0].v_src, sizeof(v_src)); in wuffs_wbmp__decoder__decode_frame()
43670 v_c = self->private_data.s_decode_frame[0].v_c; in wuffs_wbmp__decoder__decode_frame()
43675 if (self->private_impl.f_call_sequence < 4) { in wuffs_wbmp__decoder__decode_frame()
43677 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_wbmp__decoder__decode_frame()
43682 iop_a_src = a_src->data.ptr + a_src->meta.ri; in wuffs_wbmp__decoder__decode_frame()
43687 } else if (self->private_impl.f_call_sequence == 4) { in wuffs_wbmp__decoder__decode_frame()
43692 v_status = wuffs_base__pixel_swizzler__prepare(&self->private_impl.f_swizzler, in wuffs_wbmp__decoder__decode_frame()
43715 if (self->private_impl.f_width > 0) { in wuffs_wbmp__decoder__decode_frame()
43717 while (v_dst_y < self->private_impl.f_height) { in wuffs_wbmp__decoder__decode_frame()
43720 while (v_dst_x < self->private_impl.f_width) { in wuffs_wbmp__decoder__decode_frame()
43722 while (((uint64_t)(io2_a_src - iop_a_src)) <= 0) { in wuffs_wbmp__decoder__decode_frame()
43741 …wuffs_base__pixel_swizzler__swizzle_interleaved_from_slice(&self->private_impl.f_swizzler, v_dst, … in wuffs_wbmp__decoder__decode_frame()
43750 self->private_impl.f_call_sequence = 255; in wuffs_wbmp__decoder__decode_frame()
43753 self->private_impl.p_decode_frame[0] = 0; in wuffs_wbmp__decoder__decode_frame()
43759 …self->private_impl.p_decode_frame[0] = wuffs_base__status__is_suspension(&status) ? coro_susp_poin… in wuffs_wbmp__decoder__decode_frame()
43760 self->private_impl.active_coroutine = wuffs_base__status__is_suspension(&status) ? 3 : 0; in wuffs_wbmp__decoder__decode_frame()
43761 self->private_data.s_decode_frame[0].v_dst_bytes_per_pixel = v_dst_bytes_per_pixel; in wuffs_wbmp__decoder__decode_frame()
43762 self->private_data.s_decode_frame[0].v_dst_x = v_dst_x; in wuffs_wbmp__decoder__decode_frame()
43763 self->private_data.s_decode_frame[0].v_dst_y = v_dst_y; in wuffs_wbmp__decoder__decode_frame()
43764 memcpy(self->private_data.s_decode_frame[0].v_src, v_src, sizeof(v_src)); in wuffs_wbmp__decoder__decode_frame()
43765 self->private_data.s_decode_frame[0].v_c = v_c; in wuffs_wbmp__decoder__decode_frame()
43770 a_src->meta.ri = ((size_t)(iop_a_src - a_src->data.ptr)); in wuffs_wbmp__decoder__decode_frame()
43774 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_wbmp__decoder__decode_frame()
43779 // -------- func wbmp.decoder.frame_dirty_rect
43787 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) && in wuffs_wbmp__decoder__frame_dirty_rect()
43788 (self->private_impl.magic != WUFFS_BASE__DISABLED)) { in wuffs_wbmp__decoder__frame_dirty_rect()
43795 self->private_impl.f_width, in wuffs_wbmp__decoder__frame_dirty_rect()
43796 self->private_impl.f_height); in wuffs_wbmp__decoder__frame_dirty_rect()
43799 // -------- func wbmp.decoder.num_animation_loops
43807 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) && in wuffs_wbmp__decoder__num_animation_loops()
43808 (self->private_impl.magic != WUFFS_BASE__DISABLED)) { in wuffs_wbmp__decoder__num_animation_loops()
43815 // -------- func wbmp.decoder.num_decoded_frame_configs
43823 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) && in wuffs_wbmp__decoder__num_decoded_frame_configs()
43824 (self->private_impl.magic != WUFFS_BASE__DISABLED)) { in wuffs_wbmp__decoder__num_decoded_frame_configs()
43828 if (self->private_impl.f_call_sequence > 3) { in wuffs_wbmp__decoder__num_decoded_frame_configs()
43834 // -------- func wbmp.decoder.num_decoded_frames
43842 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) && in wuffs_wbmp__decoder__num_decoded_frames()
43843 (self->private_impl.magic != WUFFS_BASE__DISABLED)) { in wuffs_wbmp__decoder__num_decoded_frames()
43847 if (self->private_impl.f_call_sequence > 4) { in wuffs_wbmp__decoder__num_decoded_frames()
43853 // -------- func wbmp.decoder.restart_frame
43863 if (self->private_impl.magic != WUFFS_BASE__MAGIC) { in wuffs_wbmp__decoder__restart_frame()
43865 (self->private_impl.magic == WUFFS_BASE__DISABLED) in wuffs_wbmp__decoder__restart_frame()
43870 if (self->private_impl.f_call_sequence < 3) { in wuffs_wbmp__decoder__restart_frame()
43876 self->private_impl.f_call_sequence = 3; in wuffs_wbmp__decoder__restart_frame()
43877 self->private_impl.f_frame_config_io_position = a_io_position; in wuffs_wbmp__decoder__restart_frame()
43881 // -------- func wbmp.decoder.set_report_metadata
43891 // -------- func wbmp.decoder.tell_me_more
43902 if (self->private_impl.magic != WUFFS_BASE__MAGIC) { in wuffs_wbmp__decoder__tell_me_more()
43904 (self->private_impl.magic == WUFFS_BASE__DISABLED) in wuffs_wbmp__decoder__tell_me_more()
43909 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_wbmp__decoder__tell_me_more()
43912 if ((self->private_impl.active_coroutine != 0) && in wuffs_wbmp__decoder__tell_me_more()
43913 (self->private_impl.active_coroutine != 4)) { in wuffs_wbmp__decoder__tell_me_more()
43914 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_wbmp__decoder__tell_me_more()
43917 self->private_impl.active_coroutine = 0; in wuffs_wbmp__decoder__tell_me_more()
43928 self->private_impl.magic = WUFFS_BASE__DISABLED; in wuffs_wbmp__decoder__tell_me_more()
43933 // -------- func wbmp.decoder.workbuf_len
43941 if ((self->private_impl.magic != WUFFS_BASE__MAGIC) && in wuffs_wbmp__decoder__workbuf_len()
43942 (self->private_impl.magic != WUFFS_BASE__DISABLED)) { in wuffs_wbmp__decoder__workbuf_len()
43953 // ---------------- Auxiliary - Base
43956 // https://github.com/google/wuffs/blob/main/doc/note/auxiliary-code.md
43964 // --------
44006 // - (x == max_incl)
44009 // - (x == max_incl) or (x is a power of 2)
44010 // - (x >= 4096)
44029 // --------
44038 // --------
44048 } else if (dst->meta.closed) { in CopyIn()
44051 dst->compact(); in CopyIn()
44052 size_t n = fread(dst->writer_pointer(), 1, dst->writer_length(), m_f); in CopyIn()
44053 dst->meta.wi += n; in CopyIn()
44054 dst->meta.closed = feof(m_f); in CopyIn()
44062 // --------
44082 } else if (dst->meta.closed) { in CopyIn()
44084 } else if (wuffs_base__slice_u8__overlaps(dst->data, m_io.data)) { in CopyIn()
44089 dst->compact(); in CopyIn()
44090 size_t nd = dst->writer_length(); in CopyIn()
44093 memcpy(dst->writer_pointer(), m_io.reader_pointer(), n); in CopyIn()
44095 dst->meta.wi += n; in CopyIn()
44096 dst->meta.closed = m_io.reader_length() == 0; in CopyIn()
44101 // --------
44115 // after existing fields or, if re-ordering fields, make sure that you update
44133 uint64_t relative_position = absolute_position - io_buf.reader_position(); in AdvanceIOBufferTo()
44187 if (num_to_copy > (raw.m_max_incl - raw.m_buf.meta.wi)) { in HandleMetadata()
44190 } else if (num_to_copy > (raw.m_buf.data.len - raw.m_buf.meta.wi)) { in HandleMetadata()
44218 num_to_copy -= n; in HandleMetadata()
44268 // ---------------- Auxiliary - CBOR
44313 // https://nigeltao.github.io/blog/2020/jsonptr.html#the-cursor-index in DecodeCbor()
44319 // Prepare the low-level CBOR decoder. in DecodeCbor()
44326 dec->set_quirk_enabled(quirks.repr.ptr[i], true); in DecodeCbor()
44354 // No-op. in DecodeCbor()
44362 } else if (cursor_index != io_buf->meta.ri) { in DecodeCbor()
44366 } else if (io_buf->meta.closed) { in DecodeCbor()
44371 io_buf->compact(); in DecodeCbor()
44372 if (io_buf->meta.wi >= io_buf->data.len) { in DecodeCbor()
44377 cursor_index = io_buf->meta.ri; in DecodeCbor()
44390 tok_status = dec->decode_tokens(&tok_buf, io_buf, work_buf); in DecodeCbor()
44393 (io_buf->meta.ri > io_buf->meta.wi) || in DecodeCbor()
44394 (io_buf->meta.wi > io_buf->data.len)) { in DecodeCbor()
44403 if ((io_buf->meta.ri < cursor_index) || in DecodeCbor()
44404 ((io_buf->meta.ri - cursor_index) < token_len)) { in DecodeCbor()
44409 uint8_t* token_ptr = io_buf->data.ptr + cursor_index; in DecodeCbor()
44465 depth--; in DecodeCbor()
44476 // No-op. in DecodeCbor()
44620 wuffs_base__u64__sat_add(io_buf->meta.pos, cursor_index)); in DecodeCbor()
44630 // ---------------- Auxiliary - Image
44698 dec->set_quirk_enabled(WUFFS_BASE__QUIRK_IGNORE_CHECKSUM, true); in SelectDecoder()
44857 // --------
44890 return static_cast<DecodeImageCallbacks*>(self)->HandleMetadata(*minfo, raw); in DIHM1()
44944 // one-shot-calling callbacks.SelectDecoder. There is no mechanism in DecodeImage0()
44960 image_decoder->tell_me_more(&empty, &minfo, &io_buf); in DecodeImage0()
44993 image_decoder->set_quirk_enabled(quirks.ptr[i], true); in DecodeImage0()
44999 image_decoder->set_report_metadata(WUFFS_BASE__FOURCC__CHRM, true); in DecodeImage0()
45002 image_decoder->set_report_metadata(WUFFS_BASE__FOURCC__EXIF, true); in DecodeImage0()
45005 image_decoder->set_report_metadata(WUFFS_BASE__FOURCC__GAMA, true); in DecodeImage0()
45008 image_decoder->set_report_metadata(WUFFS_BASE__FOURCC__ICCP, true); in DecodeImage0()
45011 image_decoder->set_report_metadata(WUFFS_BASE__FOURCC__KVP, true); in DecodeImage0()
45014 image_decoder->set_report_metadata(WUFFS_BASE__FOURCC__SRGB, true); in DecodeImage0()
45017 image_decoder->set_report_metadata(WUFFS_BASE__FOURCC__XMP, true); in DecodeImage0()
45024 image_decoder->decode_image_config(&image_config, &io_buf); in DecodeImage0()
45096 wuffs_base__range_ii_u64 workbuf_len = image_decoder->workbuf_len(); in DecodeImage0()
45109 image_decoder->decode_frame_config(&frame_config, &io_buf); in DecodeImage0()
45135 image_decoder->decode_frame(&pixel_buffer, &io_buf, pixel_blend, in DecodeImage0()
45192 // ---------------- Auxiliary - JSON
45236 // --------
45248 } else if (cursor_index != io_buf->meta.ri) { \
45252 } else if (io_buf->meta.closed) { \
45257 io_buf->compact(); \
45258 if (io_buf->meta.wi >= io_buf->data.len) { \
45263 cursor_index = io_buf->meta.ri; \
45270 dec->decode_tokens(&tok_buf, io_buf, wuffs_base__empty_slice_u8()); \
45273 (io_buf->meta.ri > io_buf->meta.wi) || \
45274 (io_buf->meta.wi > io_buf->data.len)) { \
45282 if ((io_buf->meta.ri < cursor_index) || \
45283 ((io_buf->meta.ri - cursor_index) < token_len)) { \
45288 uint8_t* token_ptr = io_buf->data.ptr + cursor_index; \
45292 // --------
45352 // --------
45404 // No-op. in DecodeJson_WalkJsonPointerFragment()
45454 skip_depth--; in DecodeJson_WalkJsonPointerFragment()
45493 skip_depth--; in DecodeJson_WalkJsonPointerFragment()
45499 remaining--; in DecodeJson_WalkJsonPointerFragment()
45518 tok_buf.meta.ri--; in DecodeJson_WalkJsonPointerFragment()
45519 cursor_index -= static_cast<size_t>(token_len); in DecodeJson_WalkJsonPointerFragment()
45536 // --------
45553 // https://nigeltao.github.io/blog/2020/jsonptr.html#the-cursor-index in DecodeJson()
45559 // Prepare the low-level JSON decoder. in DecodeJson()
45571 dec->set_quirk_enabled(quirks.repr.ptr[i], true); in DecodeJson()
45584 dec->decode_tokens(&tok_buf, io_buf, wuffs_base__empty_slice_u8()); in DecodeJson()
45638 depth--; in DecodeJson()
45649 // No-op. in DecodeJson()
45746 // pointed-to JSON value (for a non-empty json_pointer query). In the in DecodeJson()
45767 wuffs_base__u64__sat_add(io_buf->meta.pos, cursor_index)); in DecodeJson()