Skip to content

Commit 1e63cce

Browse files
committed
separate generic mod
1 parent d0c547f commit 1e63cce

File tree

6 files changed

+215
-231
lines changed

6 files changed

+215
-231
lines changed

Cargo.toml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,4 +40,7 @@ inflections = "1.1.0"
4040
log = { version = "~0.4", features = ["std"] }
4141
quote = "0.3.15"
4242
svd-parser = "0.7"
43-
syn = "0.11.11"
43+
44+
[dependencies.syn]
45+
version = "0.11.11"
46+
features = ["full"]

src/generate/device.rs

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,21 @@
1-
use quote::Tokens;
1+
use quote::{Tokens, ToTokens};
2+
use std::fs::File;
3+
use std::io::Write;
24
use crate::svd::Device;
35
use syn::Ident;
46

57
use crate::errors::*;
68
use crate::util::{self, ToSanitizedUpperCase};
79
use crate::Target;
810

9-
use crate::generate::{interrupt, peripheral, generic};
11+
use crate::generate::{interrupt, peripheral};
1012

1113
/// Whole device generation
1214
pub fn render(
1315
d: &Device,
1416
target: Target,
1517
nightly: bool,
18+
generic_mod: bool,
1619
device_x: &mut String,
1720
) -> Result<Vec<Tokens>> {
1821
let mut out = vec![];
@@ -136,7 +139,22 @@ pub fn render(
136139
}
137140
}
138141

139-
out.extend(generic::render()?);
142+
let generic_file = std::str::from_utf8(include_bytes!("generic.rs")).unwrap();
143+
if generic_mod {
144+
writeln!(File::create("generic.rs").unwrap(), "{}", generic_file).unwrap();
145+
} else {
146+
let mut tokens = Tokens::new();
147+
(syn::parse_crate(generic_file)?).to_tokens(&mut tokens);
148+
149+
out.push(quote! {
150+
#[allow(unused_imports)]
151+
use generic::*;
152+
///Common register and bit access and modify traits
153+
pub mod generic {
154+
#tokens
155+
}
156+
});
157+
}
140158

141159
for p in &d.peripherals {
142160
if target == Target::CortexM && core_peripherals.contains(&&*p.name.to_uppercase()) {

0 commit comments

Comments
 (0)