1// automatically generated by the FlatBuffers compiler, do not modify
2// @generated
3extern crate alloc;
4extern crate flatbuffers;
5use alloc::boxed::Box;
6use alloc::string::{String, ToString};
7use alloc::vec::Vec;
8use core::mem;
9use core::cmp::Ordering;
10use self::flatbuffers::{EndianScalar, Follow};
11use super::*;
12// struct Ability, aligned to 4
13#[repr(transparent)]
14#[derive(Clone, Copy, PartialEq)]
15pub struct Ability(pub [u8; 8]);
16impl Default for Ability {
17 fn default() -> Self {
18 Self([0; 8])
19 }
20}
21impl core::fmt::Debug for Ability {
22 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
23 f.debug_struct("Ability")
24 .field("id", &self.id())
25 .field("distance", &self.distance())
26 .finish()
27 }
28}
29
30impl flatbuffers::SimpleToVerifyInSlice for Ability {}
31impl<'a> flatbuffers::Follow<'a> for Ability {
32 type Inner = &'a Ability;
33 #[inline]
34 unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
35 <&'a Ability>::follow(buf, loc)
36 }
37}
38impl<'a> flatbuffers::Follow<'a> for &'a Ability {
39 type Inner = &'a Ability;
40 #[inline]
41 unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
42 flatbuffers::follow_cast_ref::<Ability>(buf, loc)
43 }
44}
45impl<'b> flatbuffers::Push for Ability {
46 type Output = Ability;
47 #[inline]
48 unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
49 let src = ::core::slice::from_raw_parts(self as *const Ability as *const u8, Self::size());
50 dst.copy_from_slice(src);
51 }
52}
53
54impl<'a> flatbuffers::Verifiable for Ability {
55 #[inline]
56 fn run_verifier(
57 v: &mut flatbuffers::Verifier, pos: usize
58 ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
59 use self::flatbuffers::Verifiable;
60 v.in_buffer::<Self>(pos)
61 }
62}
63
64impl<'a> Ability {
65 #[allow(clippy::too_many_arguments)]
66 pub fn new(
67 id: u32,
68 distance: u32,
69 ) -> Self {
70 let mut s = Self([0; 8]);
71 s.set_id(id);
72 s.set_distance(distance);
73 s
74 }
75
76 pub const fn get_fully_qualified_name() -> &'static str {
77 "MyGame.Example.Ability"
78 }
79
80 pub fn id(&self) -> u32 {
81 let mut mem = core::mem::MaybeUninit::<<u32 as EndianScalar>::Scalar>::uninit();
82 // Safety:
83 // Created from a valid Table for this object
84 // Which contains a valid value in this slot
85 EndianScalar::from_little_endian(unsafe {
86 core::ptr::copy_nonoverlapping(
87 self.0[0..].as_ptr(),
88 mem.as_mut_ptr() as *mut u8,
89 core::mem::size_of::<<u32 as EndianScalar>::Scalar>(),
90 );
91 mem.assume_init()
92 })
93 }
94
95 pub fn set_id(&mut self, x: u32) {
96 let x_le = x.to_little_endian();
97 // Safety:
98 // Created from a valid Table for this object
99 // Which contains a valid value in this slot
100 unsafe {
101 core::ptr::copy_nonoverlapping(
102 &x_le as *const _ as *const u8,
103 self.0[0..].as_mut_ptr(),
104 core::mem::size_of::<<u32 as EndianScalar>::Scalar>(),
105 );
106 }
107 }
108
109 #[inline]
110 pub fn key_compare_less_than(&self, o: &Ability) -> bool {
111 self.id() < o.id()
112 }
113
114 #[inline]
115 pub fn key_compare_with_value(&self, val: u32) -> ::core::cmp::Ordering {
116 let key = self.id();
117 key.cmp(&val)
118 }
119 pub fn distance(&self) -> u32 {
120 let mut mem = core::mem::MaybeUninit::<<u32 as EndianScalar>::Scalar>::uninit();
121 // Safety:
122 // Created from a valid Table for this object
123 // Which contains a valid value in this slot
124 EndianScalar::from_little_endian(unsafe {
125 core::ptr::copy_nonoverlapping(
126 self.0[4..].as_ptr(),
127 mem.as_mut_ptr() as *mut u8,
128 core::mem::size_of::<<u32 as EndianScalar>::Scalar>(),
129 );
130 mem.assume_init()
131 })
132 }
133
134 pub fn set_distance(&mut self, x: u32) {
135 let x_le = x.to_little_endian();
136 // Safety:
137 // Created from a valid Table for this object
138 // Which contains a valid value in this slot
139 unsafe {
140 core::ptr::copy_nonoverlapping(
141 &x_le as *const _ as *const u8,
142 self.0[4..].as_mut_ptr(),
143 core::mem::size_of::<<u32 as EndianScalar>::Scalar>(),
144 );
145 }
146 }
147
148 pub fn unpack(&self) -> AbilityT {
149 AbilityT {
150 id: self.id(),
151 distance: self.distance(),
152 }
153 }
154}
155
156#[derive(Debug, Clone, PartialEq, Default)]
157pub struct AbilityT {
158 pub id: u32,
159 pub distance: u32,
160}
161impl AbilityT {
162 pub fn pack(&self) -> Ability {
163 Ability::new(
164 self.id,
165 self.distance,
166 )
167 }
168}
169
View as plain text