Skip to content

Commit 4b008de

Browse files
committed
make type_graph.nodes private and expose a .type_def method to get the type_def give an type_id
1 parent 40600f9 commit 4b008de

4 files changed

Lines changed: 19 additions & 13 deletions

File tree

codegen-java/src/lib.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ impl From<serde_json::Value> for Java {
6363
let mut unions = vec![];
6464

6565
// Determine root type
66-
if let Some(type_def) = type_graph.nodes.get(&type_graph.root) {
66+
if let Some(type_def) = type_graph.type_def(type_graph.root) {
6767
match type_def {
6868
TypeDef::Object(_) => {
6969
root = RootType::Extension(derive_type_name(
@@ -149,7 +149,7 @@ impl From<serde_json::Value> for Java {
149149
let mut vars: Vec<UnionMemberVar> = Vec::with_capacity(inner_type_ids.len());
150150
for inner_type_id in inner_type_ids {
151151
let type_name = derive_type_name(*inner_type_id, &type_graph, &name_registry);
152-
let var_name = match type_graph.nodes.get(inner_type_id) {
152+
let var_name = match type_graph.type_def(*inner_type_id) {
153153
Some(inner_type_def) => match inner_type_def {
154154
TypeDef::String => "strVal".into(),
155155
TypeDef::Integer => "intVal".into(),
@@ -203,7 +203,7 @@ fn derive_type_name(
203203
type_graph: &TypeGraph,
204204
name_registry: &NameRegistry,
205205
) -> String {
206-
match type_graph.nodes.get(&type_id) {
206+
match type_graph.type_def(type_id) {
207207
Some(type_def) => match type_def {
208208
TypeDef::String => "String".into(),
209209
TypeDef::Integer => "Long".into(),

codegen-rust/src/lib.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ impl From<serde_json::Value> for Rust {
5353
let mut structs = vec![];
5454
let mut enums = vec![];
5555

56-
if let Some(type_def) = type_graph.nodes.get(&type_graph.root) {
56+
if let Some(type_def) = type_graph.type_def(type_graph.root) {
5757
match type_def {
5858
TypeDef::Object(_) => {
5959
root = derive_type_name(
@@ -138,7 +138,7 @@ impl From<serde_json::Value> for Rust {
138138
type_id,
139139
&back_edges,
140140
);
141-
let variant_name = match type_graph.nodes.get(inner_type_id) {
141+
let variant_name = match type_graph.type_def(*inner_type_id) {
142142
Some(inner_type_def) => match inner_type_def {
143143
TypeDef::String => "String".into(),
144144
TypeDef::Integer => "Int".into(),
@@ -195,7 +195,7 @@ fn back_edges(type_graph: &TypeGraph) -> Vec<(TypeId, TypeId)> {
195195

196196
while let Some(type_id) = frontier.pop() {
197197
path.push(type_id);
198-
if let Some(type_def) = type_graph.nodes.get(&type_id) {
198+
if let Some(type_def) = type_graph.type_def(type_id) {
199199
let adj_type_ids: Box<dyn Iterator<Item = usize>> = match type_def {
200200
TypeDef::Object(object_fields) => Box::new(object_fields.iter().map(|f| f.type_id)),
201201
TypeDef::Union(inner_type_ids) => Box::new(inner_type_ids.into_iter().copied()),
@@ -227,7 +227,7 @@ fn derive_type_name(
227227
parent_type_id: TypeId,
228228
back_edges: &[(TypeId, TypeId)],
229229
) -> String {
230-
match type_graph.nodes.get(&type_id) {
230+
match type_graph.type_def(type_id) {
231231
Some(type_def) => match type_def {
232232
TypeDef::String => "String".into(),
233233
TypeDef::Integer => "isize".into(),

core/src/name_registry.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ impl<'type_graph> NameCollector<'type_graph> {
135135
}
136136
self.visited.insert(type_id);
137137

138-
if let Some(type_def) = self.type_graph.nodes.get(&type_id) {
138+
if let Some(type_def) = self.type_graph.type_def(type_id) {
139139
match type_def {
140140
TypeDef::Object(object_fields) => {
141141
for object_field in object_fields {
@@ -156,7 +156,7 @@ impl<'type_graph> NameCollector<'type_graph> {
156156
}
157157

158158
fn process_object_field(&mut self, object_field: &'type_graph ObjectField) {
159-
if let Some(object_field_type_def) = self.type_graph.nodes.get(&object_field.type_id) {
159+
if let Some(object_field_type_def) = self.type_graph.type_def(object_field.type_id) {
160160
match object_field_type_def {
161161
TypeDef::Object(nested_object_fields) => {
162162
let names = self.names.entry(object_field.type_id).or_default();
@@ -193,7 +193,7 @@ impl<'type_graph> NameCollector<'type_graph> {
193193
let mut visited = vec![];
194194
while !visited.contains(&type_id) {
195195
visited.push(type_id);
196-
if let Some(type_def) = self.type_graph.nodes.get(&type_id) {
196+
if let Some(type_def) = self.type_graph.type_def(type_id) {
197197
if let TypeDef::Array(inner_type_id) | TypeDef::Optional(inner_type_id) = type_def {
198198
type_id = *inner_type_id;
199199
}

core/src/type_graph.rs

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@ pub type TypeId = usize;
182182
#[derive(Debug, Clone)]
183183
pub struct TypeGraph {
184184
pub root: TypeId,
185-
pub nodes: BTreeMap<TypeId, TypeDef>,
185+
nodes: BTreeMap<TypeId, TypeDef>,
186186
}
187187

188188
/// Type definition node. Mirrors FieldType but uses [`TypeId`] references.
@@ -225,6 +225,12 @@ impl From<Schema> for TypeGraph {
225225
}
226226
}
227227

228+
impl TypeGraph {
229+
pub fn type_def(&self, type_id: TypeId) -> Option<&TypeDef> {
230+
self.nodes.get(&type_id)
231+
}
232+
}
233+
228234
pub struct TypeGraphIter<'type_graph> {
229235
type_graph: &'type_graph TypeGraph,
230236
frontier: VecDeque<TypeId>,
@@ -247,7 +253,7 @@ impl<'type_graph> Iterator for TypeGraphIter<'type_graph> {
247253
fn next(&mut self) -> Option<Self::Item> {
248254
while let Some(type_id) = self.frontier.pop_front() {
249255
if self.visited.insert(type_id) {
250-
if let Some(type_def) = self.type_graph.nodes.get(&type_id) {
256+
if let Some(type_def) = self.type_graph.type_def(type_id) {
251257
match type_def {
252258
TypeDef::Object(object_fields) => self
253259
.frontier
@@ -634,7 +640,7 @@ impl<'type_graph> CanonicalView<'type_graph> {
634640
}
635641
visited.insert(type_id);
636642

637-
if let Some(type_def) = self.type_graph.nodes.get(&type_id) {
643+
if let Some(type_def) = self.type_graph.type_def(type_id) {
638644
match type_def {
639645
TypeDef::String => write!(f, "str")?,
640646
TypeDef::Integer => write!(f, "int")?,

0 commit comments

Comments
 (0)