forked from google/flatbuffers
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
… (google#7964) Co-authored-by: Derek Bailey <[email protected]>
- Loading branch information
1 parent
64b3707
commit 7861585
Showing
13 changed files
with
1,329 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
namespace RustNamerTest; | ||
|
||
table FieldTable {} | ||
|
||
union FieldUnion { | ||
f :FieldTable (id: 0), | ||
} | ||
|
||
table RootTable { | ||
field42 :FieldUnion (id: 1); | ||
} | ||
|
||
table PlayerStatEvent {} | ||
table PlayerSpectate {} | ||
table PlayerInputChange {} | ||
|
||
union GameMessage | ||
{ | ||
PlayerStatEvent, | ||
PlayerSpectate, | ||
PlayerInputChange | ||
} | ||
|
||
table GameMessageWrapper | ||
{ | ||
Message:GameMessage; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
// Automatically generated by the Flatbuffers compiler. Do not modify. | ||
// @generated | ||
pub mod rust_namer_test { | ||
use super::*; | ||
mod field_union_generated; | ||
pub use self::field_union_generated::*; | ||
mod game_message_generated; | ||
pub use self::game_message_generated::*; | ||
mod field_table_generated; | ||
pub use self::field_table_generated::*; | ||
mod root_table_generated; | ||
pub use self::root_table_generated::*; | ||
mod player_stat_event_generated; | ||
pub use self::player_stat_event_generated::*; | ||
mod player_spectate_generated; | ||
pub use self::player_spectate_generated::*; | ||
mod player_input_change_generated; | ||
pub use self::player_input_change_generated::*; | ||
mod game_message_wrapper_generated; | ||
pub use self::game_message_wrapper_generated::*; | ||
} // rust_namer_test |
117 changes: 117 additions & 0 deletions
117
tests/rust_namer_test/rust_namer_test/field_table_generated.rs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,117 @@ | ||
// automatically generated by the FlatBuffers compiler, do not modify | ||
// @generated | ||
extern crate alloc; | ||
extern crate flatbuffers; | ||
use alloc::boxed::Box; | ||
use alloc::string::{String, ToString}; | ||
use alloc::vec::Vec; | ||
use core::mem; | ||
use core::cmp::Ordering; | ||
use self::flatbuffers::{EndianScalar, Follow}; | ||
use super::*; | ||
pub enum FieldTableOffset {} | ||
#[derive(Copy, Clone, PartialEq)] | ||
|
||
pub struct FieldTable<'a> { | ||
pub _tab: flatbuffers::Table<'a>, | ||
} | ||
|
||
impl<'a> flatbuffers::Follow<'a> for FieldTable<'a> { | ||
type Inner = FieldTable<'a>; | ||
#[inline] | ||
unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { | ||
Self { _tab: flatbuffers::Table::new(buf, loc) } | ||
} | ||
} | ||
|
||
impl<'a> FieldTable<'a> { | ||
|
||
pub const fn get_fully_qualified_name() -> &'static str { | ||
"RustNamerTest.FieldTable" | ||
} | ||
|
||
#[inline] | ||
pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self { | ||
FieldTable { _tab: table } | ||
} | ||
#[allow(unused_mut)] | ||
pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>( | ||
_fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>, | ||
_args: &'args FieldTableArgs | ||
) -> flatbuffers::WIPOffset<FieldTable<'bldr>> { | ||
let mut builder = FieldTableBuilder::new(_fbb); | ||
builder.finish() | ||
} | ||
|
||
pub fn unpack(&self) -> FieldTableT { | ||
FieldTableT { | ||
} | ||
} | ||
} | ||
|
||
impl flatbuffers::Verifiable for FieldTable<'_> { | ||
#[inline] | ||
fn run_verifier( | ||
v: &mut flatbuffers::Verifier, pos: usize | ||
) -> Result<(), flatbuffers::InvalidFlatbuffer> { | ||
use self::flatbuffers::Verifiable; | ||
v.visit_table(pos)? | ||
.finish(); | ||
Ok(()) | ||
} | ||
} | ||
pub struct FieldTableArgs { | ||
} | ||
impl<'a> Default for FieldTableArgs { | ||
#[inline] | ||
fn default() -> Self { | ||
FieldTableArgs { | ||
} | ||
} | ||
} | ||
|
||
pub struct FieldTableBuilder<'a: 'b, 'b> { | ||
fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>, | ||
start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>, | ||
} | ||
impl<'a: 'b, 'b> FieldTableBuilder<'a, 'b> { | ||
#[inline] | ||
pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> FieldTableBuilder<'a, 'b> { | ||
let start = _fbb.start_table(); | ||
FieldTableBuilder { | ||
fbb_: _fbb, | ||
start_: start, | ||
} | ||
} | ||
#[inline] | ||
pub fn finish(self) -> flatbuffers::WIPOffset<FieldTable<'a>> { | ||
let o = self.fbb_.end_table(self.start_); | ||
flatbuffers::WIPOffset::new(o.value()) | ||
} | ||
} | ||
|
||
impl core::fmt::Debug for FieldTable<'_> { | ||
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { | ||
let mut ds = f.debug_struct("FieldTable"); | ||
ds.finish() | ||
} | ||
} | ||
#[non_exhaustive] | ||
#[derive(Debug, Clone, PartialEq)] | ||
pub struct FieldTableT { | ||
} | ||
impl Default for FieldTableT { | ||
fn default() -> Self { | ||
Self { | ||
} | ||
} | ||
} | ||
impl FieldTableT { | ||
pub fn pack<'b>( | ||
&self, | ||
_fbb: &mut flatbuffers::FlatBufferBuilder<'b> | ||
) -> flatbuffers::WIPOffset<FieldTable<'b>> { | ||
FieldTable::create(_fbb, &FieldTableArgs{ | ||
}) | ||
} | ||
} |
145 changes: 145 additions & 0 deletions
145
tests/rust_namer_test/rust_namer_test/field_union_generated.rs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,145 @@ | ||
// automatically generated by the FlatBuffers compiler, do not modify | ||
// @generated | ||
extern crate alloc; | ||
extern crate flatbuffers; | ||
use alloc::boxed::Box; | ||
use alloc::string::{String, ToString}; | ||
use alloc::vec::Vec; | ||
use core::mem; | ||
use core::cmp::Ordering; | ||
use self::flatbuffers::{EndianScalar, Follow}; | ||
use super::*; | ||
#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")] | ||
pub const ENUM_MIN_FIELD_UNION: u8 = 0; | ||
#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")] | ||
pub const ENUM_MAX_FIELD_UNION: u8 = 1; | ||
#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")] | ||
#[allow(non_camel_case_types)] | ||
pub const ENUM_VALUES_FIELD_UNION: [FieldUnion; 2] = [ | ||
FieldUnion::NONE, | ||
FieldUnion::f, | ||
]; | ||
|
||
#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)] | ||
#[repr(transparent)] | ||
pub struct FieldUnion(pub u8); | ||
#[allow(non_upper_case_globals)] | ||
impl FieldUnion { | ||
pub const NONE: Self = Self(0); | ||
pub const f: Self = Self(1); | ||
|
||
pub const ENUM_MIN: u8 = 0; | ||
pub const ENUM_MAX: u8 = 1; | ||
pub const ENUM_VALUES: &'static [Self] = &[ | ||
Self::NONE, | ||
Self::f, | ||
]; | ||
/// Returns the variant's name or "" if unknown. | ||
pub fn variant_name(self) -> Option<&'static str> { | ||
match self { | ||
Self::NONE => Some("NONE"), | ||
Self::f => Some("f"), | ||
_ => None, | ||
} | ||
} | ||
} | ||
impl core::fmt::Debug for FieldUnion { | ||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result { | ||
if let Some(name) = self.variant_name() { | ||
f.write_str(name) | ||
} else { | ||
f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0)) | ||
} | ||
} | ||
} | ||
impl<'a> flatbuffers::Follow<'a> for FieldUnion { | ||
type Inner = Self; | ||
#[inline] | ||
unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { | ||
let b = flatbuffers::read_scalar_at::<u8>(buf, loc); | ||
Self(b) | ||
} | ||
} | ||
|
||
impl flatbuffers::Push for FieldUnion { | ||
type Output = FieldUnion; | ||
#[inline] | ||
unsafe fn push(&self, dst: &mut [u8], _written_len: usize) { | ||
flatbuffers::emplace_scalar::<u8>(dst, self.0); | ||
} | ||
} | ||
|
||
impl flatbuffers::EndianScalar for FieldUnion { | ||
type Scalar = u8; | ||
#[inline] | ||
fn to_little_endian(self) -> u8 { | ||
self.0.to_le() | ||
} | ||
#[inline] | ||
#[allow(clippy::wrong_self_convention)] | ||
fn from_little_endian(v: u8) -> Self { | ||
let b = u8::from_le(v); | ||
Self(b) | ||
} | ||
} | ||
|
||
impl<'a> flatbuffers::Verifiable for FieldUnion { | ||
#[inline] | ||
fn run_verifier( | ||
v: &mut flatbuffers::Verifier, pos: usize | ||
) -> Result<(), flatbuffers::InvalidFlatbuffer> { | ||
use self::flatbuffers::Verifiable; | ||
u8::run_verifier(v, pos) | ||
} | ||
} | ||
|
||
impl flatbuffers::SimpleToVerifyInSlice for FieldUnion {} | ||
pub struct FieldUnionUnionTableOffset {} | ||
|
||
#[allow(clippy::upper_case_acronyms)] | ||
#[non_exhaustive] | ||
#[derive(Debug, Clone, PartialEq)] | ||
pub enum FieldUnionT { | ||
NONE, | ||
F(Box<FieldTableT>), | ||
} | ||
impl Default for FieldUnionT { | ||
fn default() -> Self { | ||
Self::NONE | ||
} | ||
} | ||
impl FieldUnionT { | ||
pub fn field_union_type(&self) -> FieldUnion { | ||
match self { | ||
Self::NONE => FieldUnion::NONE, | ||
Self::F(_) => FieldUnion::f, | ||
} | ||
} | ||
pub fn pack(&self, fbb: &mut flatbuffers::FlatBufferBuilder) -> Option<flatbuffers::WIPOffset<flatbuffers::UnionWIPOffset>> { | ||
match self { | ||
Self::NONE => None, | ||
Self::F(v) => Some(v.pack(fbb).as_union_value()), | ||
} | ||
} | ||
/// If the union variant matches, return the owned FieldTableT, setting the union to NONE. | ||
pub fn take_f(&mut self) -> Option<Box<FieldTableT>> { | ||
if let Self::F(_) = self { | ||
let v = core::mem::replace(self, Self::NONE); | ||
if let Self::F(w) = v { | ||
Some(w) | ||
} else { | ||
unreachable!() | ||
} | ||
} else { | ||
None | ||
} | ||
} | ||
/// If the union variant matches, return a reference to the FieldTableT. | ||
pub fn as_f(&self) -> Option<&FieldTableT> { | ||
if let Self::F(v) = self { Some(v.as_ref()) } else { None } | ||
} | ||
/// If the union variant matches, return a mutable reference to the FieldTableT. | ||
pub fn as_f_mut(&mut self) -> Option<&mut FieldTableT> { | ||
if let Self::F(v) = self { Some(v.as_mut()) } else { None } | ||
} | ||
} |
Oops, something went wrong.