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