// @generated by the capnpc-rust plugin to the Cap'n Proto schema compiler.
// DO NOT EDIT.
// source: person.capnp

pub mod person {
    #[derive(Copy, Clone)]
    pub struct Owned(());
    impl ::capnp::introspect::Introspect for Owned {
        fn introspect() -> ::capnp::introspect::Type {
            ::capnp::introspect::TypeVariant::Struct(::capnp::introspect::RawBrandedStructSchema {
                generic: &_private::RAW_SCHEMA,
                field_types: _private::get_field_types,
                annotation_types: _private::get_annotation_types,
            })
            .into()
        }
    }
    impl ::capnp::traits::Owned for Owned {
        type Reader<'a> = Reader<'a>;
        type Builder<'a> = Builder<'a>;
    }
    impl ::capnp::traits::OwnedStruct for Owned {
        type Reader<'a> = Reader<'a>;
        type Builder<'a> = Builder<'a>;
    }
    impl ::capnp::traits::Pipelined for Owned {
        type Pipeline = Pipeline;
    }

    pub struct Reader<'a> {
        reader: ::capnp::private::layout::StructReader<'a>,
    }
    impl ::core::marker::Copy for Reader<'_> {}
    impl ::core::clone::Clone for Reader<'_> {
        fn clone(&self) -> Self {
            *self
        }
    }

    impl ::capnp::traits::HasTypeId for Reader<'_> {
        const TYPE_ID: u64 = _private::TYPE_ID;
    }
    impl<'a> ::core::convert::From<::capnp::private::layout::StructReader<'a>> for Reader<'a> {
        fn from(reader: ::capnp::private::layout::StructReader<'a>) -> Self {
            Self { reader }
        }
    }

    impl<'a> ::core::convert::From<Reader<'a>> for ::capnp::dynamic_value::Reader<'a> {
        fn from(reader: Reader<'a>) -> Self {
            Self::Struct(::capnp::dynamic_struct::Reader::new(
                reader.reader,
                ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema {
                    generic: &_private::RAW_SCHEMA,
                    field_types: _private::get_field_types,
                    annotation_types: _private::get_annotation_types,
                }),
            ))
        }
    }

    impl ::core::fmt::Debug for Reader<'_> {
        fn fmt(
            &self,
            f: &mut ::core::fmt::Formatter<'_>,
        ) -> ::core::result::Result<(), ::core::fmt::Error> {
            core::fmt::Debug::fmt(
                &::core::convert::Into::<::capnp::dynamic_value::Reader<'_>>::into(*self),
                f,
            )
        }
    }

    impl<'a> ::capnp::traits::FromPointerReader<'a> for Reader<'a> {
        fn get_from_pointer(
            reader: &::capnp::private::layout::PointerReader<'a>,
            default: ::core::option::Option<&'a [::capnp::Word]>,
        ) -> ::capnp::Result<Self> {
            ::core::result::Result::Ok(reader.get_struct(default)?.into())
        }
    }

    impl<'a> ::capnp::traits::IntoInternalStructReader<'a> for Reader<'a> {
        fn into_internal_struct_reader(self) -> ::capnp::private::layout::StructReader<'a> {
            self.reader
        }
    }

    impl<'a> ::capnp::traits::Imbue<'a> for Reader<'a> {
        fn imbue(&mut self, cap_table: &'a ::capnp::private::layout::CapTable) {
            self.reader
                .imbue(::capnp::private::layout::CapTableReader::Plain(cap_table))
        }
    }

    impl<'a> Reader<'a> {
        pub fn reborrow(&self) -> Reader<'_> {
            Self { ..*self }
        }

        pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
            self.reader.total_size()
        }
        #[inline]
        pub fn get_name(self) -> ::capnp::Result<::capnp::text::Reader<'a>> {
            ::capnp::traits::FromPointerReader::get_from_pointer(
                &self.reader.get_pointer_field(0),
                ::core::option::Option::None,
            )
        }
        #[inline]
        pub fn has_name(&self) -> bool {
            !self.reader.get_pointer_field(0).is_null()
        }
        #[inline]
        pub fn get_email(self) -> ::capnp::Result<::capnp::text::Reader<'a>> {
            ::capnp::traits::FromPointerReader::get_from_pointer(
                &self.reader.get_pointer_field(1),
                ::core::option::Option::None,
            )
        }
        #[inline]
        pub fn has_email(&self) -> bool {
            !self.reader.get_pointer_field(1).is_null()
        }
    }

    pub struct Builder<'a> {
        builder: ::capnp::private::layout::StructBuilder<'a>,
    }
    impl ::capnp::traits::HasStructSize for Builder<'_> {
        const STRUCT_SIZE: ::capnp::private::layout::StructSize =
            ::capnp::private::layout::StructSize {
                data: 0,
                pointers: 2,
            };
    }
    impl ::capnp::traits::HasTypeId for Builder<'_> {
        const TYPE_ID: u64 = _private::TYPE_ID;
    }
    impl<'a> ::core::convert::From<::capnp::private::layout::StructBuilder<'a>> for Builder<'a> {
        fn from(builder: ::capnp::private::layout::StructBuilder<'a>) -> Self {
            Self { builder }
        }
    }

    impl<'a> ::core::convert::From<Builder<'a>> for ::capnp::dynamic_value::Builder<'a> {
        fn from(builder: Builder<'a>) -> Self {
            Self::Struct(::capnp::dynamic_struct::Builder::new(
                builder.builder,
                ::capnp::schema::StructSchema::new(::capnp::introspect::RawBrandedStructSchema {
                    generic: &_private::RAW_SCHEMA,
                    field_types: _private::get_field_types,
                    annotation_types: _private::get_annotation_types,
                }),
            ))
        }
    }

    impl<'a> ::capnp::traits::ImbueMut<'a> for Builder<'a> {
        fn imbue_mut(&mut self, cap_table: &'a mut ::capnp::private::layout::CapTable) {
            self.builder
                .imbue(::capnp::private::layout::CapTableBuilder::Plain(cap_table))
        }
    }

    impl<'a> ::capnp::traits::FromPointerBuilder<'a> for Builder<'a> {
        fn init_pointer(builder: ::capnp::private::layout::PointerBuilder<'a>, _size: u32) -> Self {
            builder
                .init_struct(<Self as ::capnp::traits::HasStructSize>::STRUCT_SIZE)
                .into()
        }
        fn get_from_pointer(
            builder: ::capnp::private::layout::PointerBuilder<'a>,
            default: ::core::option::Option<&'a [::capnp::Word]>,
        ) -> ::capnp::Result<Self> {
            ::core::result::Result::Ok(
                builder
                    .get_struct(
                        <Self as ::capnp::traits::HasStructSize>::STRUCT_SIZE,
                        default,
                    )?
                    .into(),
            )
        }
    }

    impl ::capnp::traits::SetterInput<Owned> for Reader<'_> {
        fn set_pointer_builder(
            mut pointer: ::capnp::private::layout::PointerBuilder<'_>,
            value: Self,
            canonicalize: bool,
        ) -> ::capnp::Result<()> {
            pointer.set_struct(&value.reader, canonicalize)
        }
    }

    impl<'a> Builder<'a> {
        pub fn into_reader(self) -> Reader<'a> {
            self.builder.into_reader().into()
        }
        pub fn reborrow(&mut self) -> Builder<'_> {
            Builder {
                builder: self.builder.reborrow(),
            }
        }
        pub fn reborrow_as_reader(&self) -> Reader<'_> {
            self.builder.as_reader().into()
        }

        pub fn total_size(&self) -> ::capnp::Result<::capnp::MessageSize> {
            self.builder.as_reader().total_size()
        }
        #[inline]
        pub fn get_name(self) -> ::capnp::Result<::capnp::text::Builder<'a>> {
            ::capnp::traits::FromPointerBuilder::get_from_pointer(
                self.builder.get_pointer_field(0),
                ::core::option::Option::None,
            )
        }
        #[inline]
        pub fn set_name(&mut self, value: impl ::capnp::traits::SetterInput<::capnp::text::Owned>) {
            ::capnp::traits::SetterInput::set_pointer_builder(
                self.builder.reborrow().get_pointer_field(0),
                value,
                false,
            )
            .unwrap()
        }
        #[inline]
        pub fn init_name(self, size: u32) -> ::capnp::text::Builder<'a> {
            self.builder.get_pointer_field(0).init_text(size)
        }
        #[inline]
        pub fn has_name(&self) -> bool {
            !self.builder.is_pointer_field_null(0)
        }
        #[inline]
        pub fn get_email(self) -> ::capnp::Result<::capnp::text::Builder<'a>> {
            ::capnp::traits::FromPointerBuilder::get_from_pointer(
                self.builder.get_pointer_field(1),
                ::core::option::Option::None,
            )
        }
        #[inline]
        pub fn set_email(
            &mut self,
            value: impl ::capnp::traits::SetterInput<::capnp::text::Owned>,
        ) {
            ::capnp::traits::SetterInput::set_pointer_builder(
                self.builder.reborrow().get_pointer_field(1),
                value,
                false,
            )
            .unwrap()
        }
        #[inline]
        pub fn init_email(self, size: u32) -> ::capnp::text::Builder<'a> {
            self.builder.get_pointer_field(1).init_text(size)
        }
        #[inline]
        pub fn has_email(&self) -> bool {
            !self.builder.is_pointer_field_null(1)
        }
    }

    pub struct Pipeline {
        _typeless: ::capnp::any_pointer::Pipeline,
    }
    impl ::capnp::capability::FromTypelessPipeline for Pipeline {
        fn new(typeless: ::capnp::any_pointer::Pipeline) -> Self {
            Self {
                _typeless: typeless,
            }
        }
    }
    impl Pipeline {}
    mod _private {
        pub static ENCODED_NODE: [::capnp::Word; 48] = [
            ::capnp::word(0, 0, 0, 0, 6, 0, 6, 0),
            ::capnp::word(35, 104, 8, 169, 48, 81, 100, 175),
            ::capnp::word(13, 0, 0, 0, 1, 0, 0, 0),
            ::capnp::word(214, 248, 142, 255, 209, 194, 81, 155),
            ::capnp::word(2, 0, 7, 0, 0, 0, 0, 0),
            ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
            ::capnp::word(88, 0, 0, 0, 140, 0, 0, 0),
            ::capnp::word(21, 0, 0, 0, 162, 0, 0, 0),
            ::capnp::word(29, 0, 0, 0, 7, 0, 0, 0),
            ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
            ::capnp::word(25, 0, 0, 0, 119, 0, 0, 0),
            ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
            ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
            ::capnp::word(112, 101, 114, 115, 111, 110, 46, 99),
            ::capnp::word(97, 112, 110, 112, 58, 80, 101, 114),
            ::capnp::word(115, 111, 110, 0, 0, 0, 0, 0),
            ::capnp::word(0, 0, 0, 0, 1, 0, 1, 0),
            ::capnp::word(8, 0, 0, 0, 3, 0, 4, 0),
            ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
            ::capnp::word(0, 0, 1, 0, 0, 0, 0, 0),
            ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
            ::capnp::word(41, 0, 0, 0, 42, 0, 0, 0),
            ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
            ::capnp::word(36, 0, 0, 0, 3, 0, 1, 0),
            ::capnp::word(48, 0, 0, 0, 2, 0, 1, 0),
            ::capnp::word(1, 0, 0, 0, 1, 0, 0, 0),
            ::capnp::word(0, 0, 1, 0, 1, 0, 0, 0),
            ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
            ::capnp::word(45, 0, 0, 0, 50, 0, 0, 0),
            ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
            ::capnp::word(40, 0, 0, 0, 3, 0, 1, 0),
            ::capnp::word(52, 0, 0, 0, 2, 0, 1, 0),
            ::capnp::word(110, 97, 109, 101, 0, 0, 0, 0),
            ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0),
            ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
            ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
            ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
            ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0),
            ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
            ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
            ::capnp::word(101, 109, 97, 105, 108, 0, 0, 0),
            ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0),
            ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
            ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
            ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
            ::capnp::word(12, 0, 0, 0, 0, 0, 0, 0),
            ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
            ::capnp::word(0, 0, 0, 0, 0, 0, 0, 0),
        ];
        pub fn get_field_types(index: u16) -> ::capnp::introspect::Type {
            match index {
                0 => <::capnp::text::Owned as ::capnp::introspect::Introspect>::introspect(),
                1 => <::capnp::text::Owned as ::capnp::introspect::Introspect>::introspect(),
                _ => ::capnp::introspect::panic_invalid_field_index(index),
            }
        }
        pub fn get_annotation_types(
            child_index: Option<u16>,
            index: u32,
        ) -> ::capnp::introspect::Type {
            ::capnp::introspect::panic_invalid_annotation_indices(child_index, index)
        }
        pub static ARENA: ::capnp::private::arena::GeneratedCodeArena =
            ::capnp::private::arena::GeneratedCodeArena::new(&ENCODED_NODE);
        pub static RAW_SCHEMA: ::capnp::introspect::RawStructSchema =
            ::capnp::introspect::RawStructSchema::new(
                &ARENA,
                NONUNION_MEMBERS,
                MEMBERS_BY_DISCRIMINANT,
                MEMBERS_BY_NAME,
            );
        pub static NONUNION_MEMBERS: &[u16] = &[0, 1];
        pub static MEMBERS_BY_DISCRIMINANT: &[u16] = &[];
        pub static MEMBERS_BY_NAME: &[u16] = &[1, 0];
        pub const TYPE_ID: u64 = 0xaf64_5130_a908_6823;
    }
}
