Skip to main content

buffa_types/generated/
google.protobuf.struct.__view.rs

1// @generated by buffa-codegen. DO NOT EDIT.
2// source: google/protobuf/struct.proto
3
4/// `Struct` represents a structured data value, consisting of fields
5/// which map to dynamically typed values. In some languages, `Struct`
6/// might be supported by a native representation. For example, in
7/// scripting languages like JS a struct is represented as an
8/// object. The details of that representation are described together
9/// with the proto support for the language.
10///
11/// The JSON representation for `Struct` is JSON object.
12#[derive(Clone, Debug, Default)]
13pub struct StructView<'a> {
14    /// Unordered map of dynamically typed values.
15    ///
16    /// Field 1: `fields` (map)
17    pub fields: ::buffa::MapView<
18        'a,
19        &'a str,
20        super::super::__buffa::view::ValueView<'a>,
21    >,
22    pub __buffa_unknown_fields: ::buffa::UnknownFieldsView<'a>,
23}
24impl<'a> StructView<'a> {
25    /// Decode from `buf`, enforcing a recursion depth limit for nested messages.
26    ///
27    /// Called by [`::buffa::MessageView::decode_view`] with [`::buffa::RECURSION_LIMIT`]
28    /// and by generated sub-message decode arms with `depth - 1`.
29    ///
30    /// **Not part of the public API.** Named with a leading underscore to
31    /// signal that it is for generated-code use only.
32    #[doc(hidden)]
33    pub fn _decode_depth(
34        buf: &'a [u8],
35        depth: u32,
36    ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
37        let mut view = Self::default();
38        view._merge_into_view(buf, depth)?;
39        ::core::result::Result::Ok(view)
40    }
41    /// Merge fields from `buf` into this view (proto merge semantics).
42    ///
43    /// Repeated fields append; singular fields last-wins; singular
44    /// MESSAGE fields merge recursively. Used by sub-message decode
45    /// arms when the same field appears multiple times on the wire.
46    ///
47    /// **Not part of the public API.**
48    #[doc(hidden)]
49    pub fn _merge_into_view(
50        &mut self,
51        buf: &'a [u8],
52        depth: u32,
53    ) -> ::core::result::Result<(), ::buffa::DecodeError> {
54        let _ = depth;
55        #[allow(unused_variables)]
56        let view = self;
57        let mut cur: &'a [u8] = buf;
58        while !cur.is_empty() {
59            let before_tag = cur;
60            let tag = ::buffa::encoding::Tag::decode(&mut cur)?;
61            match tag.field_number() {
62                1u32 => {
63                    if tag.wire_type() != ::buffa::encoding::WireType::LengthDelimited {
64                        return ::core::result::Result::Err(::buffa::DecodeError::WireTypeMismatch {
65                            field_number: 1u32,
66                            expected: 2u8,
67                            actual: tag.wire_type() as u8,
68                        });
69                    }
70                    let entry_bytes = ::buffa::types::borrow_bytes(&mut cur)?;
71                    let mut entry_cur: &'a [u8] = entry_bytes;
72                    let mut key = "";
73                    let mut val = ::core::default::Default::default();
74                    while !entry_cur.is_empty() {
75                        let entry_tag = ::buffa::encoding::Tag::decode(&mut entry_cur)?;
76                        match entry_tag.field_number() {
77                            1 => {
78                                if entry_tag.wire_type()
79                                    != ::buffa::encoding::WireType::LengthDelimited
80                                {
81                                    return ::core::result::Result::Err(::buffa::DecodeError::WireTypeMismatch {
82                                        field_number: entry_tag.field_number(),
83                                        expected: 2u8,
84                                        actual: entry_tag.wire_type() as u8,
85                                    });
86                                }
87                                key = ::buffa::types::borrow_str(&mut entry_cur)?;
88                            }
89                            2 => {
90                                if entry_tag.wire_type()
91                                    != ::buffa::encoding::WireType::LengthDelimited
92                                {
93                                    return ::core::result::Result::Err(::buffa::DecodeError::WireTypeMismatch {
94                                        field_number: entry_tag.field_number(),
95                                        expected: 2u8,
96                                        actual: entry_tag.wire_type() as u8,
97                                    });
98                                }
99                                if depth == 0 {
100                                    return Err(::buffa::DecodeError::RecursionLimitExceeded);
101                                }
102                                let sub = ::buffa::types::borrow_bytes(&mut entry_cur)?;
103                                val = super::super::__buffa::view::ValueView::_decode_depth(
104                                    sub,
105                                    depth - 1,
106                                )?;
107                            }
108                            _ => {
109                                ::buffa::encoding::skip_field_depth(
110                                    entry_tag,
111                                    &mut entry_cur,
112                                    depth,
113                                )?;
114                            }
115                        }
116                    }
117                    view.fields.push(key, val);
118                }
119                _ => {
120                    ::buffa::encoding::skip_field_depth(tag, &mut cur, depth)?;
121                    let span_len = before_tag.len() - cur.len();
122                    view.__buffa_unknown_fields.push_raw(&before_tag[..span_len]);
123                }
124            }
125        }
126        ::core::result::Result::Ok(())
127    }
128}
129impl<'a> ::buffa::MessageView<'a> for StructView<'a> {
130    type Owned = super::super::Struct;
131    fn decode_view(buf: &'a [u8]) -> ::core::result::Result<Self, ::buffa::DecodeError> {
132        Self::_decode_depth(buf, ::buffa::RECURSION_LIMIT)
133    }
134    fn decode_view_with_limit(
135        buf: &'a [u8],
136        depth: u32,
137    ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
138        Self::_decode_depth(buf, depth)
139    }
140    fn to_owned_message(&self) -> super::super::Struct {
141        self.to_owned_from_source(None)
142    }
143    #[allow(clippy::useless_conversion, clippy::needless_update)]
144    fn to_owned_from_source(
145        &self,
146        __buffa_src: ::core::option::Option<&::buffa::bytes::Bytes>,
147    ) -> super::super::Struct {
148        #[allow(unused_imports)]
149        use ::buffa::alloc::string::ToString as _;
150        let _ = __buffa_src;
151        super::super::Struct {
152            fields: self
153                .fields
154                .iter()
155                .map(|(k, v)| (k.to_string(), v.to_owned_from_source(__buffa_src)))
156                .collect(),
157            __buffa_unknown_fields: self
158                .__buffa_unknown_fields
159                .to_owned()
160                .unwrap_or_default()
161                .into(),
162            ..::core::default::Default::default()
163        }
164    }
165}
166impl<'a> ::buffa::ViewEncode<'a> for StructView<'a> {
167    #[allow(clippy::needless_borrow, clippy::let_and_return)]
168    fn compute_size(&self, __cache: &mut ::buffa::SizeCache) -> u32 {
169        #[allow(unused_imports)]
170        use ::buffa::Enumeration as _;
171        let mut size = 0u32;
172        #[allow(clippy::for_kv_map)]
173        for (k, v) in &self.fields {
174            let entry_size: u32 = 1u32 + ::buffa::types::string_encoded_len(k) as u32
175                + 1u32
176                + {
177                    let __slot = __cache.reserve();
178                    let inner = v.compute_size(__cache);
179                    __cache.set(__slot, inner);
180                    ::buffa::encoding::varint_len(inner as u64) as u32 + inner
181                };
182            size
183                += 1u32 + ::buffa::encoding::varint_len(entry_size as u64) as u32
184                    + entry_size;
185        }
186        size += self.__buffa_unknown_fields.encoded_len() as u32;
187        size
188    }
189    #[allow(clippy::needless_borrow)]
190    fn write_to(
191        &self,
192        __cache: &mut ::buffa::SizeCache,
193        buf: &mut impl ::buffa::bytes::BufMut,
194    ) {
195        #[allow(unused_imports)]
196        use ::buffa::Enumeration as _;
197        for (k, v) in &self.fields {
198            let __v_len = __cache.consume_next();
199            let entry_size: u32 = 1u32 + ::buffa::types::string_encoded_len(k) as u32
200                + 1u32
201                + (::buffa::encoding::varint_len(__v_len as u64) as u32 + __v_len);
202            ::buffa::encoding::Tag::new(
203                    1u32,
204                    ::buffa::encoding::WireType::LengthDelimited,
205                )
206                .encode(buf);
207            ::buffa::encoding::encode_varint(entry_size as u64, buf);
208            ::buffa::encoding::Tag::new(
209                    1u32,
210                    ::buffa::encoding::WireType::LengthDelimited,
211                )
212                .encode(buf);
213            ::buffa::types::encode_string(k, buf);
214            ::buffa::encoding::Tag::new(
215                    2u32,
216                    ::buffa::encoding::WireType::LengthDelimited,
217                )
218                .encode(buf);
219            ::buffa::encoding::encode_varint(__v_len as u64, buf);
220            v.write_to(__cache, buf);
221        }
222        self.__buffa_unknown_fields.write_to(buf);
223    }
224}
225impl<'v> ::buffa::DefaultViewInstance for StructView<'v> {
226    fn default_view_instance<'a>() -> &'a Self
227    where
228        Self: 'a,
229    {
230        static VALUE: ::buffa::__private::OnceBox<StructView<'static>> = ::buffa::__private::OnceBox::new();
231        VALUE
232            .get_or_init(|| ::buffa::alloc::boxed::Box::new(
233                <StructView<'static>>::default(),
234            ))
235    }
236}
237impl ::buffa::ViewReborrow for StructView<'static> {
238    type Reborrowed<'b> = StructView<'b>;
239    fn reborrow<'b>(this: &'b Self) -> &'b Self::Reborrowed<'b> {
240        this
241    }
242}
243/// `Value` represents a dynamically typed value which can be either
244/// null, a number, a string, a boolean, a recursive struct value, or a
245/// list of values. A producer of value is expected to set one of these
246/// variants. Absence of any variant indicates an error.
247///
248/// The JSON representation for `Value` is JSON value.
249#[derive(Clone, Debug, Default)]
250pub struct ValueView<'a> {
251    pub kind: ::core::option::Option<
252        super::super::__buffa::view::oneof::value::Kind<'a>,
253    >,
254    pub __buffa_unknown_fields: ::buffa::UnknownFieldsView<'a>,
255}
256impl<'a> ValueView<'a> {
257    /// Decode from `buf`, enforcing a recursion depth limit for nested messages.
258    ///
259    /// Called by [`::buffa::MessageView::decode_view`] with [`::buffa::RECURSION_LIMIT`]
260    /// and by generated sub-message decode arms with `depth - 1`.
261    ///
262    /// **Not part of the public API.** Named with a leading underscore to
263    /// signal that it is for generated-code use only.
264    #[doc(hidden)]
265    pub fn _decode_depth(
266        buf: &'a [u8],
267        depth: u32,
268    ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
269        let mut view = Self::default();
270        view._merge_into_view(buf, depth)?;
271        ::core::result::Result::Ok(view)
272    }
273    /// Merge fields from `buf` into this view (proto merge semantics).
274    ///
275    /// Repeated fields append; singular fields last-wins; singular
276    /// MESSAGE fields merge recursively. Used by sub-message decode
277    /// arms when the same field appears multiple times on the wire.
278    ///
279    /// **Not part of the public API.**
280    #[doc(hidden)]
281    pub fn _merge_into_view(
282        &mut self,
283        buf: &'a [u8],
284        depth: u32,
285    ) -> ::core::result::Result<(), ::buffa::DecodeError> {
286        let _ = depth;
287        #[allow(unused_variables)]
288        let view = self;
289        let mut cur: &'a [u8] = buf;
290        while !cur.is_empty() {
291            let before_tag = cur;
292            let tag = ::buffa::encoding::Tag::decode(&mut cur)?;
293            match tag.field_number() {
294                1u32 => {
295                    if tag.wire_type() != ::buffa::encoding::WireType::Varint {
296                        return ::core::result::Result::Err(::buffa::DecodeError::WireTypeMismatch {
297                            field_number: 1u32,
298                            expected: 0u8,
299                            actual: tag.wire_type() as u8,
300                        });
301                    }
302                    view.kind = Some(
303                        super::super::__buffa::view::oneof::value::Kind::NullValue(
304                            ::buffa::EnumValue::from(
305                                ::buffa::types::decode_int32(&mut cur)?,
306                            ),
307                        ),
308                    );
309                }
310                2u32 => {
311                    if tag.wire_type() != ::buffa::encoding::WireType::Fixed64 {
312                        return ::core::result::Result::Err(::buffa::DecodeError::WireTypeMismatch {
313                            field_number: 2u32,
314                            expected: 1u8,
315                            actual: tag.wire_type() as u8,
316                        });
317                    }
318                    view.kind = Some(
319                        super::super::__buffa::view::oneof::value::Kind::NumberValue(
320                            ::buffa::types::decode_double(&mut cur)?,
321                        ),
322                    );
323                }
324                3u32 => {
325                    if tag.wire_type() != ::buffa::encoding::WireType::LengthDelimited {
326                        return ::core::result::Result::Err(::buffa::DecodeError::WireTypeMismatch {
327                            field_number: 3u32,
328                            expected: 2u8,
329                            actual: tag.wire_type() as u8,
330                        });
331                    }
332                    view.kind = Some(
333                        super::super::__buffa::view::oneof::value::Kind::StringValue(
334                            ::buffa::types::borrow_str(&mut cur)?,
335                        ),
336                    );
337                }
338                4u32 => {
339                    if tag.wire_type() != ::buffa::encoding::WireType::Varint {
340                        return ::core::result::Result::Err(::buffa::DecodeError::WireTypeMismatch {
341                            field_number: 4u32,
342                            expected: 0u8,
343                            actual: tag.wire_type() as u8,
344                        });
345                    }
346                    view.kind = Some(
347                        super::super::__buffa::view::oneof::value::Kind::BoolValue(
348                            ::buffa::types::decode_bool(&mut cur)?,
349                        ),
350                    );
351                }
352                5u32 => {
353                    if tag.wire_type() != ::buffa::encoding::WireType::LengthDelimited {
354                        return ::core::result::Result::Err(::buffa::DecodeError::WireTypeMismatch {
355                            field_number: 5u32,
356                            expected: 2u8,
357                            actual: tag.wire_type() as u8,
358                        });
359                    }
360                    if depth == 0 {
361                        return Err(::buffa::DecodeError::RecursionLimitExceeded);
362                    }
363                    let sub = ::buffa::types::borrow_bytes(&mut cur)?;
364                    if let Some(
365                        super::super::__buffa::view::oneof::value::Kind::StructValue(
366                            ref mut existing,
367                        ),
368                    ) = view.kind
369                    {
370                        existing._merge_into_view(sub, depth - 1)?;
371                    } else {
372                        view.kind = Some(
373                            super::super::__buffa::view::oneof::value::Kind::StructValue(
374                                ::buffa::alloc::boxed::Box::new(
375                                    super::super::__buffa::view::StructView::_decode_depth(
376                                        sub,
377                                        depth - 1,
378                                    )?,
379                                ),
380                            ),
381                        );
382                    }
383                }
384                6u32 => {
385                    if tag.wire_type() != ::buffa::encoding::WireType::LengthDelimited {
386                        return ::core::result::Result::Err(::buffa::DecodeError::WireTypeMismatch {
387                            field_number: 6u32,
388                            expected: 2u8,
389                            actual: tag.wire_type() as u8,
390                        });
391                    }
392                    if depth == 0 {
393                        return Err(::buffa::DecodeError::RecursionLimitExceeded);
394                    }
395                    let sub = ::buffa::types::borrow_bytes(&mut cur)?;
396                    if let Some(
397                        super::super::__buffa::view::oneof::value::Kind::ListValue(
398                            ref mut existing,
399                        ),
400                    ) = view.kind
401                    {
402                        existing._merge_into_view(sub, depth - 1)?;
403                    } else {
404                        view.kind = Some(
405                            super::super::__buffa::view::oneof::value::Kind::ListValue(
406                                ::buffa::alloc::boxed::Box::new(
407                                    super::super::__buffa::view::ListValueView::_decode_depth(
408                                        sub,
409                                        depth - 1,
410                                    )?,
411                                ),
412                            ),
413                        );
414                    }
415                }
416                _ => {
417                    ::buffa::encoding::skip_field_depth(tag, &mut cur, depth)?;
418                    let span_len = before_tag.len() - cur.len();
419                    view.__buffa_unknown_fields.push_raw(&before_tag[..span_len]);
420                }
421            }
422        }
423        ::core::result::Result::Ok(())
424    }
425}
426impl<'a> ::buffa::MessageView<'a> for ValueView<'a> {
427    type Owned = super::super::Value;
428    fn decode_view(buf: &'a [u8]) -> ::core::result::Result<Self, ::buffa::DecodeError> {
429        Self::_decode_depth(buf, ::buffa::RECURSION_LIMIT)
430    }
431    fn decode_view_with_limit(
432        buf: &'a [u8],
433        depth: u32,
434    ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
435        Self::_decode_depth(buf, depth)
436    }
437    fn to_owned_message(&self) -> super::super::Value {
438        self.to_owned_from_source(None)
439    }
440    #[allow(clippy::useless_conversion, clippy::needless_update)]
441    fn to_owned_from_source(
442        &self,
443        __buffa_src: ::core::option::Option<&::buffa::bytes::Bytes>,
444    ) -> super::super::Value {
445        #[allow(unused_imports)]
446        use ::buffa::alloc::string::ToString as _;
447        let _ = __buffa_src;
448        super::super::Value {
449            kind: self
450                .kind
451                .as_ref()
452                .map(|v| match v {
453                    super::super::__buffa::view::oneof::value::Kind::NullValue(v) => {
454                        super::super::__buffa::oneof::value::Kind::NullValue(*v)
455                    }
456                    super::super::__buffa::view::oneof::value::Kind::NumberValue(v) => {
457                        super::super::__buffa::oneof::value::Kind::NumberValue(*v)
458                    }
459                    super::super::__buffa::view::oneof::value::Kind::StringValue(v) => {
460                        super::super::__buffa::oneof::value::Kind::StringValue(
461                            v.to_string(),
462                        )
463                    }
464                    super::super::__buffa::view::oneof::value::Kind::BoolValue(v) => {
465                        super::super::__buffa::oneof::value::Kind::BoolValue(*v)
466                    }
467                    super::super::__buffa::view::oneof::value::Kind::StructValue(v) => {
468                        super::super::__buffa::oneof::value::Kind::StructValue(
469                            ::buffa::alloc::boxed::Box::new(
470                                v.to_owned_from_source(__buffa_src),
471                            ),
472                        )
473                    }
474                    super::super::__buffa::view::oneof::value::Kind::ListValue(v) => {
475                        super::super::__buffa::oneof::value::Kind::ListValue(
476                            ::buffa::alloc::boxed::Box::new(
477                                v.to_owned_from_source(__buffa_src),
478                            ),
479                        )
480                    }
481                }),
482            __buffa_unknown_fields: self
483                .__buffa_unknown_fields
484                .to_owned()
485                .unwrap_or_default()
486                .into(),
487            ..::core::default::Default::default()
488        }
489    }
490}
491impl<'a> ::buffa::ViewEncode<'a> for ValueView<'a> {
492    #[allow(clippy::needless_borrow, clippy::let_and_return)]
493    fn compute_size(&self, __cache: &mut ::buffa::SizeCache) -> u32 {
494        #[allow(unused_imports)]
495        use ::buffa::Enumeration as _;
496        let mut size = 0u32;
497        if let ::core::option::Option::Some(ref v) = self.kind {
498            match v {
499                super::super::__buffa::view::oneof::value::Kind::NullValue(x) => {
500                    size += 1u32 + ::buffa::types::int32_encoded_len(x.to_i32()) as u32;
501                }
502                super::super::__buffa::view::oneof::value::Kind::NumberValue(_x) => {
503                    size += 1u32 + ::buffa::types::FIXED64_ENCODED_LEN as u32;
504                }
505                super::super::__buffa::view::oneof::value::Kind::StringValue(x) => {
506                    size += 1u32 + ::buffa::types::string_encoded_len(x) as u32;
507                }
508                super::super::__buffa::view::oneof::value::Kind::BoolValue(_x) => {
509                    size += 1u32 + ::buffa::types::BOOL_ENCODED_LEN as u32;
510                }
511                super::super::__buffa::view::oneof::value::Kind::StructValue(x) => {
512                    let __slot = __cache.reserve();
513                    let inner = x.compute_size(__cache);
514                    __cache.set(__slot, inner);
515                    size
516                        += 1u32 + ::buffa::encoding::varint_len(inner as u64) as u32
517                            + inner;
518                }
519                super::super::__buffa::view::oneof::value::Kind::ListValue(x) => {
520                    let __slot = __cache.reserve();
521                    let inner = x.compute_size(__cache);
522                    __cache.set(__slot, inner);
523                    size
524                        += 1u32 + ::buffa::encoding::varint_len(inner as u64) as u32
525                            + inner;
526                }
527            }
528        }
529        size += self.__buffa_unknown_fields.encoded_len() as u32;
530        size
531    }
532    #[allow(clippy::needless_borrow)]
533    fn write_to(
534        &self,
535        __cache: &mut ::buffa::SizeCache,
536        buf: &mut impl ::buffa::bytes::BufMut,
537    ) {
538        #[allow(unused_imports)]
539        use ::buffa::Enumeration as _;
540        if let ::core::option::Option::Some(ref v) = self.kind {
541            match v {
542                super::super::__buffa::view::oneof::value::Kind::NullValue(x) => {
543                    ::buffa::encoding::Tag::new(
544                            1u32,
545                            ::buffa::encoding::WireType::Varint,
546                        )
547                        .encode(buf);
548                    ::buffa::types::encode_int32(x.to_i32(), buf);
549                }
550                super::super::__buffa::view::oneof::value::Kind::NumberValue(x) => {
551                    ::buffa::encoding::Tag::new(
552                            2u32,
553                            ::buffa::encoding::WireType::Fixed64,
554                        )
555                        .encode(buf);
556                    ::buffa::types::encode_double(*x, buf);
557                }
558                super::super::__buffa::view::oneof::value::Kind::StringValue(x) => {
559                    ::buffa::encoding::Tag::new(
560                            3u32,
561                            ::buffa::encoding::WireType::LengthDelimited,
562                        )
563                        .encode(buf);
564                    ::buffa::types::encode_string(x, buf);
565                }
566                super::super::__buffa::view::oneof::value::Kind::BoolValue(x) => {
567                    ::buffa::encoding::Tag::new(
568                            4u32,
569                            ::buffa::encoding::WireType::Varint,
570                        )
571                        .encode(buf);
572                    ::buffa::types::encode_bool(*x, buf);
573                }
574                super::super::__buffa::view::oneof::value::Kind::StructValue(x) => {
575                    ::buffa::encoding::Tag::new(
576                            5u32,
577                            ::buffa::encoding::WireType::LengthDelimited,
578                        )
579                        .encode(buf);
580                    ::buffa::encoding::encode_varint(__cache.consume_next() as u64, buf);
581                    x.write_to(__cache, buf);
582                }
583                super::super::__buffa::view::oneof::value::Kind::ListValue(x) => {
584                    ::buffa::encoding::Tag::new(
585                            6u32,
586                            ::buffa::encoding::WireType::LengthDelimited,
587                        )
588                        .encode(buf);
589                    ::buffa::encoding::encode_varint(__cache.consume_next() as u64, buf);
590                    x.write_to(__cache, buf);
591                }
592            }
593        }
594        self.__buffa_unknown_fields.write_to(buf);
595    }
596}
597impl<'v> ::buffa::DefaultViewInstance for ValueView<'v> {
598    fn default_view_instance<'a>() -> &'a Self
599    where
600        Self: 'a,
601    {
602        static VALUE: ::buffa::__private::OnceBox<ValueView<'static>> = ::buffa::__private::OnceBox::new();
603        VALUE
604            .get_or_init(|| ::buffa::alloc::boxed::Box::new(
605                <ValueView<'static>>::default(),
606            ))
607    }
608}
609impl ::buffa::ViewReborrow for ValueView<'static> {
610    type Reborrowed<'b> = ValueView<'b>;
611    fn reborrow<'b>(this: &'b Self) -> &'b Self::Reborrowed<'b> {
612        this
613    }
614}
615/// `ListValue` is a wrapper around a repeated field of values.
616///
617/// The JSON representation for `ListValue` is JSON array.
618#[derive(Clone, Debug, Default)]
619pub struct ListValueView<'a> {
620    /// Repeated field of dynamically typed values.
621    ///
622    /// Field 1: `values`
623    pub values: ::buffa::RepeatedView<'a, super::super::__buffa::view::ValueView<'a>>,
624    pub __buffa_unknown_fields: ::buffa::UnknownFieldsView<'a>,
625}
626impl<'a> ListValueView<'a> {
627    /// Decode from `buf`, enforcing a recursion depth limit for nested messages.
628    ///
629    /// Called by [`::buffa::MessageView::decode_view`] with [`::buffa::RECURSION_LIMIT`]
630    /// and by generated sub-message decode arms with `depth - 1`.
631    ///
632    /// **Not part of the public API.** Named with a leading underscore to
633    /// signal that it is for generated-code use only.
634    #[doc(hidden)]
635    pub fn _decode_depth(
636        buf: &'a [u8],
637        depth: u32,
638    ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
639        let mut view = Self::default();
640        view._merge_into_view(buf, depth)?;
641        ::core::result::Result::Ok(view)
642    }
643    /// Merge fields from `buf` into this view (proto merge semantics).
644    ///
645    /// Repeated fields append; singular fields last-wins; singular
646    /// MESSAGE fields merge recursively. Used by sub-message decode
647    /// arms when the same field appears multiple times on the wire.
648    ///
649    /// **Not part of the public API.**
650    #[doc(hidden)]
651    pub fn _merge_into_view(
652        &mut self,
653        buf: &'a [u8],
654        depth: u32,
655    ) -> ::core::result::Result<(), ::buffa::DecodeError> {
656        let _ = depth;
657        #[allow(unused_variables)]
658        let view = self;
659        let mut cur: &'a [u8] = buf;
660        while !cur.is_empty() {
661            let before_tag = cur;
662            let tag = ::buffa::encoding::Tag::decode(&mut cur)?;
663            match tag.field_number() {
664                1u32 => {
665                    if tag.wire_type() != ::buffa::encoding::WireType::LengthDelimited {
666                        return ::core::result::Result::Err(::buffa::DecodeError::WireTypeMismatch {
667                            field_number: 1u32,
668                            expected: 2u8,
669                            actual: tag.wire_type() as u8,
670                        });
671                    }
672                    if depth == 0 {
673                        return Err(::buffa::DecodeError::RecursionLimitExceeded);
674                    }
675                    let sub = ::buffa::types::borrow_bytes(&mut cur)?;
676                    view.values
677                        .push(
678                            super::super::__buffa::view::ValueView::_decode_depth(
679                                sub,
680                                depth - 1,
681                            )?,
682                        );
683                }
684                _ => {
685                    ::buffa::encoding::skip_field_depth(tag, &mut cur, depth)?;
686                    let span_len = before_tag.len() - cur.len();
687                    view.__buffa_unknown_fields.push_raw(&before_tag[..span_len]);
688                }
689            }
690        }
691        ::core::result::Result::Ok(())
692    }
693}
694impl<'a> ::buffa::MessageView<'a> for ListValueView<'a> {
695    type Owned = super::super::ListValue;
696    fn decode_view(buf: &'a [u8]) -> ::core::result::Result<Self, ::buffa::DecodeError> {
697        Self::_decode_depth(buf, ::buffa::RECURSION_LIMIT)
698    }
699    fn decode_view_with_limit(
700        buf: &'a [u8],
701        depth: u32,
702    ) -> ::core::result::Result<Self, ::buffa::DecodeError> {
703        Self::_decode_depth(buf, depth)
704    }
705    fn to_owned_message(&self) -> super::super::ListValue {
706        self.to_owned_from_source(None)
707    }
708    #[allow(clippy::useless_conversion, clippy::needless_update)]
709    fn to_owned_from_source(
710        &self,
711        __buffa_src: ::core::option::Option<&::buffa::bytes::Bytes>,
712    ) -> super::super::ListValue {
713        #[allow(unused_imports)]
714        use ::buffa::alloc::string::ToString as _;
715        let _ = __buffa_src;
716        super::super::ListValue {
717            values: self
718                .values
719                .iter()
720                .map(|v| v.to_owned_from_source(__buffa_src))
721                .collect(),
722            __buffa_unknown_fields: self
723                .__buffa_unknown_fields
724                .to_owned()
725                .unwrap_or_default()
726                .into(),
727            ..::core::default::Default::default()
728        }
729    }
730}
731impl<'a> ::buffa::ViewEncode<'a> for ListValueView<'a> {
732    #[allow(clippy::needless_borrow, clippy::let_and_return)]
733    fn compute_size(&self, __cache: &mut ::buffa::SizeCache) -> u32 {
734        #[allow(unused_imports)]
735        use ::buffa::Enumeration as _;
736        let mut size = 0u32;
737        for v in &self.values {
738            let __slot = __cache.reserve();
739            let inner_size = v.compute_size(__cache);
740            __cache.set(__slot, inner_size);
741            size
742                += 1u32 + ::buffa::encoding::varint_len(inner_size as u64) as u32
743                    + inner_size;
744        }
745        size += self.__buffa_unknown_fields.encoded_len() as u32;
746        size
747    }
748    #[allow(clippy::needless_borrow)]
749    fn write_to(
750        &self,
751        __cache: &mut ::buffa::SizeCache,
752        buf: &mut impl ::buffa::bytes::BufMut,
753    ) {
754        #[allow(unused_imports)]
755        use ::buffa::Enumeration as _;
756        for v in &self.values {
757            ::buffa::encoding::Tag::new(
758                    1u32,
759                    ::buffa::encoding::WireType::LengthDelimited,
760                )
761                .encode(buf);
762            ::buffa::encoding::encode_varint(__cache.consume_next() as u64, buf);
763            v.write_to(__cache, buf);
764        }
765        self.__buffa_unknown_fields.write_to(buf);
766    }
767}
768impl<'v> ::buffa::DefaultViewInstance for ListValueView<'v> {
769    fn default_view_instance<'a>() -> &'a Self
770    where
771        Self: 'a,
772    {
773        static VALUE: ::buffa::__private::OnceBox<ListValueView<'static>> = ::buffa::__private::OnceBox::new();
774        VALUE
775            .get_or_init(|| ::buffa::alloc::boxed::Box::new(
776                <ListValueView<'static>>::default(),
777            ))
778    }
779}
780impl ::buffa::ViewReborrow for ListValueView<'static> {
781    type Reborrowed<'b> = ListValueView<'b>;
782    fn reborrow<'b>(this: &'b Self) -> &'b Self::Reborrowed<'b> {
783        this
784    }
785}