/src/fluent-bit/lib/librdkafka-2.8.0/src/rdvarint.h
Line | Count | Source (jump to first uncovered line) |
1 | | /* |
2 | | * librdkafka - The Apache Kafka C/C++ library |
3 | | * |
4 | | * Copyright (c) 2016-2022, Magnus Edenhill |
5 | | * All rights reserved. |
6 | | * |
7 | | * Redistribution and use in source and binary forms, with or without |
8 | | * modification, are permitted provided that the following conditions are met: |
9 | | * |
10 | | * 1. Redistributions of source code must retain the above copyright notice, |
11 | | * this list of conditions and the following disclaimer. |
12 | | * 2. Redistributions in binary form must reproduce the above copyright notice, |
13 | | * this list of conditions and the following disclaimer in the documentation |
14 | | * and/or other materials provided with the distribution. |
15 | | * |
16 | | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
17 | | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
18 | | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
19 | | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE |
20 | | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
21 | | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
22 | | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
23 | | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
24 | | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
25 | | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
26 | | * POSSIBILITY OF SUCH DAMAGE. |
27 | | */ |
28 | | |
29 | | |
30 | | #ifndef _RDVARINT_H |
31 | | #define _RDVARINT_H |
32 | | |
33 | | #include "rd.h" |
34 | | #include "rdbuf.h" |
35 | | |
36 | | /** |
37 | | * @name signed varint zig-zag encoder/decoder |
38 | | * @{ |
39 | | * |
40 | | */ |
41 | | |
42 | | /** |
43 | | * @brief unsigned-varint encodes unsigned integer \p num into buffer |
44 | | * at \p dst of size \p dstsize. |
45 | | * @returns the number of bytes written to \p dst, or 0 if not enough space. |
46 | | */ |
47 | | |
48 | | static RD_INLINE RD_UNUSED size_t rd_uvarint_enc_u64(char *dst, |
49 | | size_t dstsize, |
50 | 0 | uint64_t num) { |
51 | 0 | size_t of = 0; |
52 | |
|
53 | 0 | do { |
54 | 0 | if (unlikely(of >= dstsize)) |
55 | 0 | return 0; /* Not enough space */ |
56 | | |
57 | 0 | dst[of++] = (num & 0x7f) | (num > 0x7f ? 0x80 : 0); |
58 | 0 | num >>= 7; |
59 | 0 | } while (num); |
60 | | |
61 | 0 | return of; |
62 | 0 | } Unexecuted instantiation: rdkafka.c:rd_uvarint_enc_u64 Unexecuted instantiation: rdkafka_assignor.c:rd_uvarint_enc_u64 Unexecuted instantiation: rdkafka_broker.c:rd_uvarint_enc_u64 Unexecuted instantiation: rdkafka_buf.c:rd_uvarint_enc_u64 Unexecuted instantiation: rdkafka_cgrp.c:rd_uvarint_enc_u64 Unexecuted instantiation: rdkafka_conf.c:rd_uvarint_enc_u64 Unexecuted instantiation: rdkafka_feature.c:rd_uvarint_enc_u64 Unexecuted instantiation: rdkafka_metadata.c:rd_uvarint_enc_u64 Unexecuted instantiation: rdkafka_metadata_cache.c:rd_uvarint_enc_u64 Unexecuted instantiation: rdkafka_msg.c:rd_uvarint_enc_u64 Unexecuted instantiation: rdkafka_offset.c:rd_uvarint_enc_u64 Unexecuted instantiation: rdkafka_op.c:rd_uvarint_enc_u64 Unexecuted instantiation: rdkafka_partition.c:rd_uvarint_enc_u64 Unexecuted instantiation: rdkafka_pattern.c:rd_uvarint_enc_u64 Unexecuted instantiation: rdkafka_queue.c:rd_uvarint_enc_u64 Unexecuted instantiation: rdkafka_range_assignor.c:rd_uvarint_enc_u64 Unexecuted instantiation: rdkafka_request.c:rd_uvarint_enc_u64 Unexecuted instantiation: rdkafka_roundrobin_assignor.c:rd_uvarint_enc_u64 Unexecuted instantiation: rdkafka_sasl.c:rd_uvarint_enc_u64 Unexecuted instantiation: rdkafka_sasl_plain.c:rd_uvarint_enc_u64 Unexecuted instantiation: rdkafka_sticky_assignor.c:rd_uvarint_enc_u64 Unexecuted instantiation: rdkafka_subscription.c:rd_uvarint_enc_u64 Unexecuted instantiation: rdkafka_assignment.c:rd_uvarint_enc_u64 Unexecuted instantiation: rdkafka_timer.c:rd_uvarint_enc_u64 Unexecuted instantiation: rdkafka_topic.c:rd_uvarint_enc_u64 Unexecuted instantiation: rdkafka_transport.c:rd_uvarint_enc_u64 Unexecuted instantiation: rdkafka_interceptor.c:rd_uvarint_enc_u64 Unexecuted instantiation: rdkafka_header.c:rd_uvarint_enc_u64 Unexecuted instantiation: rdkafka_admin.c:rd_uvarint_enc_u64 Unexecuted instantiation: rdkafka_aux.c:rd_uvarint_enc_u64 Unexecuted instantiation: rdkafka_background.c:rd_uvarint_enc_u64 Unexecuted instantiation: rdkafka_idempotence.c:rd_uvarint_enc_u64 Unexecuted instantiation: rdkafka_txnmgr.c:rd_uvarint_enc_u64 Unexecuted instantiation: rdkafka_cert.c:rd_uvarint_enc_u64 Unexecuted instantiation: rdkafka_coord.c:rd_uvarint_enc_u64 Unexecuted instantiation: rdkafka_mock.c:rd_uvarint_enc_u64 Unexecuted instantiation: rdkafka_mock_handlers.c:rd_uvarint_enc_u64 Unexecuted instantiation: rdkafka_mock_cgrp.c:rd_uvarint_enc_u64 Unexecuted instantiation: rdkafka_error.c:rd_uvarint_enc_u64 Unexecuted instantiation: rdkafka_fetcher.c:rd_uvarint_enc_u64 Unexecuted instantiation: rdkafka_telemetry.c:rd_uvarint_enc_u64 Unexecuted instantiation: rdkafka_telemetry_decode.c:rd_uvarint_enc_u64 Unexecuted instantiation: rdkafka_telemetry_encode.c:rd_uvarint_enc_u64 Unexecuted instantiation: rdunittest.c:rd_uvarint_enc_u64 Unexecuted instantiation: rdvarint.c:rd_uvarint_enc_u64 Unexecuted instantiation: snappy.c:rd_uvarint_enc_u64 Unexecuted instantiation: rdkafka_ssl.c:rd_uvarint_enc_u64 Unexecuted instantiation: rdkafka_plugin.c:rd_uvarint_enc_u64 Unexecuted instantiation: rdavl.c:rd_uvarint_enc_u64 Unexecuted instantiation: rdkafka_event.c:rd_uvarint_enc_u64 Unexecuted instantiation: rdkafka_lz4.c:rd_uvarint_enc_u64 Unexecuted instantiation: rdkafka_msgset_reader.c:rd_uvarint_enc_u64 Unexecuted instantiation: rdkafka_msgset_writer.c:rd_uvarint_enc_u64 Unexecuted instantiation: rdlog.c:rd_uvarint_enc_u64 |
63 | | |
64 | | /** |
65 | | * @brief encodes a signed integer using zig-zag encoding. |
66 | | * @sa rd_uvarint_enc_u64 |
67 | | */ |
68 | | static RD_INLINE RD_UNUSED size_t rd_uvarint_enc_i64(char *dst, |
69 | | size_t dstsize, |
70 | 0 | int64_t num) { |
71 | 0 | return rd_uvarint_enc_u64(dst, dstsize, (num << 1) ^ (num >> 63)); |
72 | 0 | } Unexecuted instantiation: rdkafka.c:rd_uvarint_enc_i64 Unexecuted instantiation: rdkafka_assignor.c:rd_uvarint_enc_i64 Unexecuted instantiation: rdkafka_broker.c:rd_uvarint_enc_i64 Unexecuted instantiation: rdkafka_buf.c:rd_uvarint_enc_i64 Unexecuted instantiation: rdkafka_cgrp.c:rd_uvarint_enc_i64 Unexecuted instantiation: rdkafka_conf.c:rd_uvarint_enc_i64 Unexecuted instantiation: rdkafka_feature.c:rd_uvarint_enc_i64 Unexecuted instantiation: rdkafka_metadata.c:rd_uvarint_enc_i64 Unexecuted instantiation: rdkafka_metadata_cache.c:rd_uvarint_enc_i64 Unexecuted instantiation: rdkafka_msg.c:rd_uvarint_enc_i64 Unexecuted instantiation: rdkafka_offset.c:rd_uvarint_enc_i64 Unexecuted instantiation: rdkafka_op.c:rd_uvarint_enc_i64 Unexecuted instantiation: rdkafka_partition.c:rd_uvarint_enc_i64 Unexecuted instantiation: rdkafka_pattern.c:rd_uvarint_enc_i64 Unexecuted instantiation: rdkafka_queue.c:rd_uvarint_enc_i64 Unexecuted instantiation: rdkafka_range_assignor.c:rd_uvarint_enc_i64 Unexecuted instantiation: rdkafka_request.c:rd_uvarint_enc_i64 Unexecuted instantiation: rdkafka_roundrobin_assignor.c:rd_uvarint_enc_i64 Unexecuted instantiation: rdkafka_sasl.c:rd_uvarint_enc_i64 Unexecuted instantiation: rdkafka_sasl_plain.c:rd_uvarint_enc_i64 Unexecuted instantiation: rdkafka_sticky_assignor.c:rd_uvarint_enc_i64 Unexecuted instantiation: rdkafka_subscription.c:rd_uvarint_enc_i64 Unexecuted instantiation: rdkafka_assignment.c:rd_uvarint_enc_i64 Unexecuted instantiation: rdkafka_timer.c:rd_uvarint_enc_i64 Unexecuted instantiation: rdkafka_topic.c:rd_uvarint_enc_i64 Unexecuted instantiation: rdkafka_transport.c:rd_uvarint_enc_i64 Unexecuted instantiation: rdkafka_interceptor.c:rd_uvarint_enc_i64 Unexecuted instantiation: rdkafka_header.c:rd_uvarint_enc_i64 Unexecuted instantiation: rdkafka_admin.c:rd_uvarint_enc_i64 Unexecuted instantiation: rdkafka_aux.c:rd_uvarint_enc_i64 Unexecuted instantiation: rdkafka_background.c:rd_uvarint_enc_i64 Unexecuted instantiation: rdkafka_idempotence.c:rd_uvarint_enc_i64 Unexecuted instantiation: rdkafka_txnmgr.c:rd_uvarint_enc_i64 Unexecuted instantiation: rdkafka_cert.c:rd_uvarint_enc_i64 Unexecuted instantiation: rdkafka_coord.c:rd_uvarint_enc_i64 Unexecuted instantiation: rdkafka_mock.c:rd_uvarint_enc_i64 Unexecuted instantiation: rdkafka_mock_handlers.c:rd_uvarint_enc_i64 Unexecuted instantiation: rdkafka_mock_cgrp.c:rd_uvarint_enc_i64 Unexecuted instantiation: rdkafka_error.c:rd_uvarint_enc_i64 Unexecuted instantiation: rdkafka_fetcher.c:rd_uvarint_enc_i64 Unexecuted instantiation: rdkafka_telemetry.c:rd_uvarint_enc_i64 Unexecuted instantiation: rdkafka_telemetry_decode.c:rd_uvarint_enc_i64 Unexecuted instantiation: rdkafka_telemetry_encode.c:rd_uvarint_enc_i64 Unexecuted instantiation: rdunittest.c:rd_uvarint_enc_i64 Unexecuted instantiation: rdvarint.c:rd_uvarint_enc_i64 Unexecuted instantiation: snappy.c:rd_uvarint_enc_i64 Unexecuted instantiation: rdkafka_ssl.c:rd_uvarint_enc_i64 Unexecuted instantiation: rdkafka_plugin.c:rd_uvarint_enc_i64 Unexecuted instantiation: rdavl.c:rd_uvarint_enc_i64 Unexecuted instantiation: rdkafka_event.c:rd_uvarint_enc_i64 Unexecuted instantiation: rdkafka_lz4.c:rd_uvarint_enc_i64 Unexecuted instantiation: rdkafka_msgset_reader.c:rd_uvarint_enc_i64 Unexecuted instantiation: rdkafka_msgset_writer.c:rd_uvarint_enc_i64 Unexecuted instantiation: rdlog.c:rd_uvarint_enc_i64 |
73 | | |
74 | | |
75 | | static RD_INLINE RD_UNUSED size_t rd_uvarint_enc_i32(char *dst, |
76 | | size_t dstsize, |
77 | 0 | int32_t num) { |
78 | 0 | return rd_uvarint_enc_i64(dst, dstsize, num); |
79 | 0 | } Unexecuted instantiation: rdkafka.c:rd_uvarint_enc_i32 Unexecuted instantiation: rdkafka_assignor.c:rd_uvarint_enc_i32 Unexecuted instantiation: rdkafka_broker.c:rd_uvarint_enc_i32 Unexecuted instantiation: rdkafka_buf.c:rd_uvarint_enc_i32 Unexecuted instantiation: rdkafka_cgrp.c:rd_uvarint_enc_i32 Unexecuted instantiation: rdkafka_conf.c:rd_uvarint_enc_i32 Unexecuted instantiation: rdkafka_feature.c:rd_uvarint_enc_i32 Unexecuted instantiation: rdkafka_metadata.c:rd_uvarint_enc_i32 Unexecuted instantiation: rdkafka_metadata_cache.c:rd_uvarint_enc_i32 Unexecuted instantiation: rdkafka_msg.c:rd_uvarint_enc_i32 Unexecuted instantiation: rdkafka_offset.c:rd_uvarint_enc_i32 Unexecuted instantiation: rdkafka_op.c:rd_uvarint_enc_i32 Unexecuted instantiation: rdkafka_partition.c:rd_uvarint_enc_i32 Unexecuted instantiation: rdkafka_pattern.c:rd_uvarint_enc_i32 Unexecuted instantiation: rdkafka_queue.c:rd_uvarint_enc_i32 Unexecuted instantiation: rdkafka_range_assignor.c:rd_uvarint_enc_i32 Unexecuted instantiation: rdkafka_request.c:rd_uvarint_enc_i32 Unexecuted instantiation: rdkafka_roundrobin_assignor.c:rd_uvarint_enc_i32 Unexecuted instantiation: rdkafka_sasl.c:rd_uvarint_enc_i32 Unexecuted instantiation: rdkafka_sasl_plain.c:rd_uvarint_enc_i32 Unexecuted instantiation: rdkafka_sticky_assignor.c:rd_uvarint_enc_i32 Unexecuted instantiation: rdkafka_subscription.c:rd_uvarint_enc_i32 Unexecuted instantiation: rdkafka_assignment.c:rd_uvarint_enc_i32 Unexecuted instantiation: rdkafka_timer.c:rd_uvarint_enc_i32 Unexecuted instantiation: rdkafka_topic.c:rd_uvarint_enc_i32 Unexecuted instantiation: rdkafka_transport.c:rd_uvarint_enc_i32 Unexecuted instantiation: rdkafka_interceptor.c:rd_uvarint_enc_i32 Unexecuted instantiation: rdkafka_header.c:rd_uvarint_enc_i32 Unexecuted instantiation: rdkafka_admin.c:rd_uvarint_enc_i32 Unexecuted instantiation: rdkafka_aux.c:rd_uvarint_enc_i32 Unexecuted instantiation: rdkafka_background.c:rd_uvarint_enc_i32 Unexecuted instantiation: rdkafka_idempotence.c:rd_uvarint_enc_i32 Unexecuted instantiation: rdkafka_txnmgr.c:rd_uvarint_enc_i32 Unexecuted instantiation: rdkafka_cert.c:rd_uvarint_enc_i32 Unexecuted instantiation: rdkafka_coord.c:rd_uvarint_enc_i32 Unexecuted instantiation: rdkafka_mock.c:rd_uvarint_enc_i32 Unexecuted instantiation: rdkafka_mock_handlers.c:rd_uvarint_enc_i32 Unexecuted instantiation: rdkafka_mock_cgrp.c:rd_uvarint_enc_i32 Unexecuted instantiation: rdkafka_error.c:rd_uvarint_enc_i32 Unexecuted instantiation: rdkafka_fetcher.c:rd_uvarint_enc_i32 Unexecuted instantiation: rdkafka_telemetry.c:rd_uvarint_enc_i32 Unexecuted instantiation: rdkafka_telemetry_decode.c:rd_uvarint_enc_i32 Unexecuted instantiation: rdkafka_telemetry_encode.c:rd_uvarint_enc_i32 Unexecuted instantiation: rdunittest.c:rd_uvarint_enc_i32 Unexecuted instantiation: rdvarint.c:rd_uvarint_enc_i32 Unexecuted instantiation: snappy.c:rd_uvarint_enc_i32 Unexecuted instantiation: rdkafka_ssl.c:rd_uvarint_enc_i32 Unexecuted instantiation: rdkafka_plugin.c:rd_uvarint_enc_i32 Unexecuted instantiation: rdavl.c:rd_uvarint_enc_i32 Unexecuted instantiation: rdkafka_event.c:rd_uvarint_enc_i32 Unexecuted instantiation: rdkafka_lz4.c:rd_uvarint_enc_i32 Unexecuted instantiation: rdkafka_msgset_reader.c:rd_uvarint_enc_i32 Unexecuted instantiation: rdkafka_msgset_writer.c:rd_uvarint_enc_i32 Unexecuted instantiation: rdlog.c:rd_uvarint_enc_i32 |
80 | | |
81 | | |
82 | | |
83 | | /** |
84 | | * @brief Use on return value from rd_uvarint_dec() to check if |
85 | | * decoded varint fit the size_t. |
86 | | * |
87 | | * @returns 1 on overflow, else 0. |
88 | | */ |
89 | | #define RD_UVARINT_OVERFLOW(DEC_RETVAL) (DEC_RETVAL > SIZE_MAX) |
90 | | |
91 | | /** |
92 | | * @returns 1 if there were not enough bytes to decode the varint, else 0. |
93 | | */ |
94 | | #define RD_UVARINT_UNDERFLOW(DEC_RETVAL) (DEC_RETVAL == 0) |
95 | | |
96 | | |
97 | | /** |
98 | | * @param DEC_RETVAL the return value from \c rd_uvarint_dec() |
99 | | * @returns 1 if varint decoding failed, else 0. |
100 | | * @warning \p DEC_RETVAL will be evaluated twice. |
101 | | */ |
102 | | #define RD_UVARINT_DEC_FAILED(DEC_RETVAL) \ |
103 | | (RD_UVARINT_UNDERFLOW(DEC_RETVAL) || RD_UVARINT_OVERFLOW(DEC_RETVAL)) |
104 | | |
105 | | |
106 | | /** |
107 | | * @brief Decodes the unsigned-varint in buffer \p src of size \p srcsize |
108 | | * and stores the decoded unsigned integer in \p nump. |
109 | | * |
110 | | * @remark Use RD_UVARINT_OVERFLOW(returnvalue) to check if the varint |
111 | | * could not fit \p nump, and RD_UVARINT_UNDERFLOW(returnvalue) to |
112 | | * check if there were not enough bytes available in \p src to |
113 | | * decode the full varint. |
114 | | * |
115 | | * @returns the number of bytes read from \p src. |
116 | | */ |
117 | | static RD_INLINE RD_UNUSED size_t rd_uvarint_dec(const char *src, |
118 | | size_t srcsize, |
119 | 0 | uint64_t *nump) { |
120 | 0 | size_t of = 0; |
121 | 0 | uint64_t num = 0; |
122 | 0 | int shift = 0; |
123 | |
|
124 | 0 | do { |
125 | 0 | if (unlikely(srcsize-- == 0)) |
126 | 0 | return 0; /* Underflow */ |
127 | 0 | num |= (uint64_t)(src[(int)of] & 0x7f) << shift; |
128 | 0 | shift += 7; |
129 | 0 | } while (src[(int)of++] & 0x80); |
130 | | |
131 | 0 | *nump = num; |
132 | 0 | return of; |
133 | 0 | } Unexecuted instantiation: rdkafka.c:rd_uvarint_dec Unexecuted instantiation: rdkafka_assignor.c:rd_uvarint_dec Unexecuted instantiation: rdkafka_broker.c:rd_uvarint_dec Unexecuted instantiation: rdkafka_buf.c:rd_uvarint_dec Unexecuted instantiation: rdkafka_cgrp.c:rd_uvarint_dec Unexecuted instantiation: rdkafka_conf.c:rd_uvarint_dec Unexecuted instantiation: rdkafka_feature.c:rd_uvarint_dec Unexecuted instantiation: rdkafka_metadata.c:rd_uvarint_dec Unexecuted instantiation: rdkafka_metadata_cache.c:rd_uvarint_dec Unexecuted instantiation: rdkafka_msg.c:rd_uvarint_dec Unexecuted instantiation: rdkafka_offset.c:rd_uvarint_dec Unexecuted instantiation: rdkafka_op.c:rd_uvarint_dec Unexecuted instantiation: rdkafka_partition.c:rd_uvarint_dec Unexecuted instantiation: rdkafka_pattern.c:rd_uvarint_dec Unexecuted instantiation: rdkafka_queue.c:rd_uvarint_dec Unexecuted instantiation: rdkafka_range_assignor.c:rd_uvarint_dec Unexecuted instantiation: rdkafka_request.c:rd_uvarint_dec Unexecuted instantiation: rdkafka_roundrobin_assignor.c:rd_uvarint_dec Unexecuted instantiation: rdkafka_sasl.c:rd_uvarint_dec Unexecuted instantiation: rdkafka_sasl_plain.c:rd_uvarint_dec Unexecuted instantiation: rdkafka_sticky_assignor.c:rd_uvarint_dec Unexecuted instantiation: rdkafka_subscription.c:rd_uvarint_dec Unexecuted instantiation: rdkafka_assignment.c:rd_uvarint_dec Unexecuted instantiation: rdkafka_timer.c:rd_uvarint_dec Unexecuted instantiation: rdkafka_topic.c:rd_uvarint_dec Unexecuted instantiation: rdkafka_transport.c:rd_uvarint_dec Unexecuted instantiation: rdkafka_interceptor.c:rd_uvarint_dec Unexecuted instantiation: rdkafka_header.c:rd_uvarint_dec Unexecuted instantiation: rdkafka_admin.c:rd_uvarint_dec Unexecuted instantiation: rdkafka_aux.c:rd_uvarint_dec Unexecuted instantiation: rdkafka_background.c:rd_uvarint_dec Unexecuted instantiation: rdkafka_idempotence.c:rd_uvarint_dec Unexecuted instantiation: rdkafka_txnmgr.c:rd_uvarint_dec Unexecuted instantiation: rdkafka_cert.c:rd_uvarint_dec Unexecuted instantiation: rdkafka_coord.c:rd_uvarint_dec Unexecuted instantiation: rdkafka_mock.c:rd_uvarint_dec Unexecuted instantiation: rdkafka_mock_handlers.c:rd_uvarint_dec Unexecuted instantiation: rdkafka_mock_cgrp.c:rd_uvarint_dec Unexecuted instantiation: rdkafka_error.c:rd_uvarint_dec Unexecuted instantiation: rdkafka_fetcher.c:rd_uvarint_dec Unexecuted instantiation: rdkafka_telemetry.c:rd_uvarint_dec Unexecuted instantiation: rdkafka_telemetry_decode.c:rd_uvarint_dec Unexecuted instantiation: rdkafka_telemetry_encode.c:rd_uvarint_dec Unexecuted instantiation: rdunittest.c:rd_uvarint_dec Unexecuted instantiation: rdvarint.c:rd_uvarint_dec Unexecuted instantiation: snappy.c:rd_uvarint_dec Unexecuted instantiation: rdkafka_ssl.c:rd_uvarint_dec Unexecuted instantiation: rdkafka_plugin.c:rd_uvarint_dec Unexecuted instantiation: rdavl.c:rd_uvarint_dec Unexecuted instantiation: rdkafka_event.c:rd_uvarint_dec Unexecuted instantiation: rdkafka_lz4.c:rd_uvarint_dec Unexecuted instantiation: rdkafka_msgset_reader.c:rd_uvarint_dec Unexecuted instantiation: rdkafka_msgset_writer.c:rd_uvarint_dec Unexecuted instantiation: rdlog.c:rd_uvarint_dec |
134 | | |
135 | | static RD_INLINE RD_UNUSED size_t rd_varint_dec_i64(const char *src, |
136 | | size_t srcsize, |
137 | 0 | int64_t *nump) { |
138 | 0 | uint64_t n; |
139 | 0 | size_t r; |
140 | |
|
141 | 0 | r = rd_uvarint_dec(src, srcsize, &n); |
142 | 0 | if (likely(!RD_UVARINT_DEC_FAILED(r))) |
143 | 0 | *nump = (int64_t)(n >> 1) ^ -(int64_t)(n & 1); |
144 | |
|
145 | 0 | return r; |
146 | 0 | } Unexecuted instantiation: rdkafka.c:rd_varint_dec_i64 Unexecuted instantiation: rdkafka_assignor.c:rd_varint_dec_i64 Unexecuted instantiation: rdkafka_broker.c:rd_varint_dec_i64 Unexecuted instantiation: rdkafka_buf.c:rd_varint_dec_i64 Unexecuted instantiation: rdkafka_cgrp.c:rd_varint_dec_i64 Unexecuted instantiation: rdkafka_conf.c:rd_varint_dec_i64 Unexecuted instantiation: rdkafka_feature.c:rd_varint_dec_i64 Unexecuted instantiation: rdkafka_metadata.c:rd_varint_dec_i64 Unexecuted instantiation: rdkafka_metadata_cache.c:rd_varint_dec_i64 Unexecuted instantiation: rdkafka_msg.c:rd_varint_dec_i64 Unexecuted instantiation: rdkafka_offset.c:rd_varint_dec_i64 Unexecuted instantiation: rdkafka_op.c:rd_varint_dec_i64 Unexecuted instantiation: rdkafka_partition.c:rd_varint_dec_i64 Unexecuted instantiation: rdkafka_pattern.c:rd_varint_dec_i64 Unexecuted instantiation: rdkafka_queue.c:rd_varint_dec_i64 Unexecuted instantiation: rdkafka_range_assignor.c:rd_varint_dec_i64 Unexecuted instantiation: rdkafka_request.c:rd_varint_dec_i64 Unexecuted instantiation: rdkafka_roundrobin_assignor.c:rd_varint_dec_i64 Unexecuted instantiation: rdkafka_sasl.c:rd_varint_dec_i64 Unexecuted instantiation: rdkafka_sasl_plain.c:rd_varint_dec_i64 Unexecuted instantiation: rdkafka_sticky_assignor.c:rd_varint_dec_i64 Unexecuted instantiation: rdkafka_subscription.c:rd_varint_dec_i64 Unexecuted instantiation: rdkafka_assignment.c:rd_varint_dec_i64 Unexecuted instantiation: rdkafka_timer.c:rd_varint_dec_i64 Unexecuted instantiation: rdkafka_topic.c:rd_varint_dec_i64 Unexecuted instantiation: rdkafka_transport.c:rd_varint_dec_i64 Unexecuted instantiation: rdkafka_interceptor.c:rd_varint_dec_i64 Unexecuted instantiation: rdkafka_header.c:rd_varint_dec_i64 Unexecuted instantiation: rdkafka_admin.c:rd_varint_dec_i64 Unexecuted instantiation: rdkafka_aux.c:rd_varint_dec_i64 Unexecuted instantiation: rdkafka_background.c:rd_varint_dec_i64 Unexecuted instantiation: rdkafka_idempotence.c:rd_varint_dec_i64 Unexecuted instantiation: rdkafka_txnmgr.c:rd_varint_dec_i64 Unexecuted instantiation: rdkafka_cert.c:rd_varint_dec_i64 Unexecuted instantiation: rdkafka_coord.c:rd_varint_dec_i64 Unexecuted instantiation: rdkafka_mock.c:rd_varint_dec_i64 Unexecuted instantiation: rdkafka_mock_handlers.c:rd_varint_dec_i64 Unexecuted instantiation: rdkafka_mock_cgrp.c:rd_varint_dec_i64 Unexecuted instantiation: rdkafka_error.c:rd_varint_dec_i64 Unexecuted instantiation: rdkafka_fetcher.c:rd_varint_dec_i64 Unexecuted instantiation: rdkafka_telemetry.c:rd_varint_dec_i64 Unexecuted instantiation: rdkafka_telemetry_decode.c:rd_varint_dec_i64 Unexecuted instantiation: rdkafka_telemetry_encode.c:rd_varint_dec_i64 Unexecuted instantiation: rdunittest.c:rd_varint_dec_i64 Unexecuted instantiation: rdvarint.c:rd_varint_dec_i64 Unexecuted instantiation: snappy.c:rd_varint_dec_i64 Unexecuted instantiation: rdkafka_ssl.c:rd_varint_dec_i64 Unexecuted instantiation: rdkafka_plugin.c:rd_varint_dec_i64 Unexecuted instantiation: rdavl.c:rd_varint_dec_i64 Unexecuted instantiation: rdkafka_event.c:rd_varint_dec_i64 Unexecuted instantiation: rdkafka_lz4.c:rd_varint_dec_i64 Unexecuted instantiation: rdkafka_msgset_reader.c:rd_varint_dec_i64 Unexecuted instantiation: rdkafka_msgset_writer.c:rd_varint_dec_i64 Unexecuted instantiation: rdlog.c:rd_varint_dec_i64 |
147 | | |
148 | | |
149 | | /** |
150 | | * @returns the maximum encoded size for a type |
151 | | */ |
152 | 0 | #define RD_UVARINT_ENC_SIZEOF(TYPE) (sizeof(TYPE) + 1 + (sizeof(TYPE) / 7)) |
153 | | |
154 | | /** |
155 | | * @returns the encoding size of the value 0 |
156 | | */ |
157 | 0 | #define RD_UVARINT_ENC_SIZE_0() ((size_t)1) |
158 | | |
159 | | |
160 | | int unittest_rdvarint(void); |
161 | | |
162 | | /**@}*/ |
163 | | |
164 | | |
165 | | #endif /* _RDVARINT_H */ |