Skip to content

Commit 1e6943f

Browse files
committed
Update flatbuffers version
1 parent 62f0df9 commit 1e6943f

File tree

6 files changed

+70
-34
lines changed

6 files changed

+70
-34
lines changed

Cargo.lock

Lines changed: 19 additions & 19 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "rlbot_flatbuffers"
3-
version = "0.14.2"
3+
version = "0.14.3"
44
edition = "2024"
55
description = "A Python module implemented in Rust for serializing and deserializing RLBot's flatbuffers"
66
repository = "https://github.com/VirxEC/rlbot_flatbuffers_py"
@@ -20,7 +20,7 @@ crate-type = ["cdylib"]
2020
[dependencies]
2121
pyo3 = { version = "0.23.0", features = [] }
2222
serde = "1.0.217"
23-
flatbuffers = "=24.12.23"
23+
flatbuffers = "=25.2.10"
2424
# get-size appears to be unmaintained but it's too useful here
2525
# forked and updated deps
2626
get-size = { git = "https://github.com/VirxEC/get-size", branch = "update", features = ["derive"] }

codegen/enums.rs

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,23 @@ impl Generator for EnumBindGenerator {
266266
"#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default, GetSize)]\n",
267267
);
268268

269+
let start = contents.find("impl core::fmt::Debug for ").unwrap();
270+
let end = contents[start..].find("\n}").unwrap() + 3;
271+
contents.replace_range(start..start + end, "");
272+
273+
let start = contents.find(" pub fn variant_name").unwrap();
274+
let prev_line_start = contents[..start].rfind(";\n").unwrap();
275+
let end = contents[start..].find(" }\n").unwrap() + 7;
276+
contents.replace_range(prev_line_start + 1..start + end, "");
277+
278+
for val in ["ENUM_MIN", "ENUM_MAX", "ENUM_VALUES"] {
279+
let line_start = contents.find(&format!("\npub const {val}")).unwrap();
280+
let prev_line_start = contents[..line_start].rfind(";\n").unwrap();
281+
let line_end = contents[line_start..].find(";\n").unwrap();
282+
283+
contents.replace_range(prev_line_start..line_start + line_end, "");
284+
}
285+
269286
fs::write(path, contents).unwrap();
270287
}
271288

@@ -315,9 +332,10 @@ impl Generator for EnumBindGenerator {
315332
);
316333
}
317334

318-
write_str!(
335+
write_fmt!(
319336
self,
320-
" v => unreachable!(\"Unknown value: {v:?}\"),"
337+
" _ => Self::{},",
338+
self.types.last().unwrap().name.as_str()
321339
);
322340

323341
write_str!(self, " }");

codegen/main.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ impl PythonBindType {
6262

6363
pub const DEFAULT_OVERRIDES: [(&'static str, &'static str, &'static str); 1] =
6464
[("Color", "a", "255")];
65+
pub const FREELIST_TYPES: [(&'static str, usize); 0] = [];
6566

6667
fn new(path: &Path) -> Option<Self> {
6768
// get the filename without the extension

codegen/structs.rs

Lines changed: 27 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ pub struct StructBindGenerator {
5555
pub is_frozen: bool,
5656
is_no_set: bool,
5757
pub default_override: Option<(&'static str, &'static str)>,
58+
freelist_size: usize,
5859
}
5960

6061
macro_rules! write_str {
@@ -115,6 +116,17 @@ impl StructBindGenerator {
115116
}
116117
});
117118

119+
let freelist_size = PythonBindType::FREELIST_TYPES
120+
.iter()
121+
.find_map(|&(name, size)| {
122+
if name == struct_name.as_str() {
123+
Some(size)
124+
} else {
125+
None
126+
}
127+
})
128+
.unwrap_or_default();
129+
118130
Some(Self {
119131
filename,
120132
struct_name,
@@ -126,6 +138,7 @@ impl StructBindGenerator {
126138
is_frozen,
127139
is_no_set,
128140
default_override,
141+
freelist_size,
129142
})
130143
}
131144

@@ -940,16 +953,20 @@ impl Generator for StructBindGenerator {
940953
}
941954

942955
fn generate_definition(&mut self) {
943-
write_str!(
944-
self,
945-
if self.is_frozen {
946-
"#[pyclass(module = \"rlbot_flatbuffers\", subclass, get_all, frozen)]"
947-
} else if self.types.is_empty() {
948-
"#[pyclass(module = \"rlbot_flatbuffers\", subclass, frozen)]"
949-
} else {
950-
"#[pyclass(module = \"rlbot_flatbuffers\", subclass, get_all)]"
951-
}
952-
);
956+
let freelist_str = if self.freelist_size > 0 {
957+
Cow::Owned(format!(", freelist = {}", self.freelist_size))
958+
} else {
959+
Cow::Borrowed("")
960+
};
961+
962+
let pyclass_start_str = "#[pyclass(module = \"rlbot_flatbuffers\", subclass, ";
963+
if self.is_frozen {
964+
write_fmt!(self, "{pyclass_start_str}get_all, frozen{freelist_str})]");
965+
} else if self.types.is_empty() {
966+
write_fmt!(self, "{pyclass_start_str}frozen{freelist_str})]");
967+
} else {
968+
write_fmt!(self, "{pyclass_start_str}get_all{freelist_str})]");
969+
}
953970

954971
if self.types.is_empty() {
955972
write_str!(self, "#[derive(Default)]");

flatbuffers-schema

0 commit comments

Comments
 (0)