Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions src/generate/device.rs
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,7 @@ pub fn render(
}

let p = p.name.to_sanitized_upper_case();
let id = Ident::new(&*p);
let id = Ident::from(&*p);
fields.push(quote! {
#[doc = #p]
pub #id: #id
Expand All @@ -166,9 +166,9 @@ pub fn render(
}

let take = match target {
Target::CortexM => Some(Ident::new("cortex_m")),
Target::Msp430 => Some(Ident::new("msp430")),
Target::RISCV => Some(Ident::new("riscv")),
Target::CortexM => Some(Ident::from("cortex_m")),
Target::Msp430 => Some(Ident::from("msp430")),
Target::RISCV => Some(Ident::from("riscv")),
Target::None => None,
}
.map(|krate| {
Expand Down
2 changes: 1 addition & 1 deletion src/generate/interrupt.rs
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ pub fn render(
}
pos += 1;

let name_uc = Ident::new(interrupt.name.to_sanitized_upper_case());
let name_uc = Ident::from(interrupt.name.to_sanitized_upper_case());
let description = format!(
"{} - {}",
interrupt.value,
Expand Down
38 changes: 19 additions & 19 deletions src/generate/peripheral.rs
Original file line number Diff line number Diff line change
Expand Up @@ -33,14 +33,14 @@ pub fn render(
return Ok(out);
}

let name_pc = Ident::new(&*p.name.to_sanitized_upper_case());
let name_pc = Ident::from(&*p.name.to_sanitized_upper_case());
let address = util::hex(p.base_address);
let description = util::respace(p.description.as_ref().unwrap_or(&p.name));
let derive_regs = p_derivedfrom.is_some() && p_original.registers.is_none();

let name_sc = Ident::new(&*p.name.to_sanitized_snake_case());
let name_sc = Ident::from(&*p.name.to_sanitized_snake_case());
let base = if derive_regs {
Ident::new(&*p_derivedfrom.unwrap().name.to_sanitized_snake_case())
Ident::from(&*p_derivedfrom.unwrap().name.to_sanitized_snake_case())
} else {
name_sc.clone()
};
Expand Down Expand Up @@ -450,7 +450,7 @@ fn register_or_cluster_block(
// Check if we need padding
let pad = region.offset - last_end;
if pad != 0 {
let name = Ident::new(format!("_reserved{}", i));
let name = Ident::from(format!("_reserved{}", i));
let pad = pad as usize;
fields.append(quote! {
#name : [u8; #pad],
Expand All @@ -469,7 +469,7 @@ fn register_or_cluster_block(

if is_region_a_union {
let name = &reg_block_field.field.ident;
let mut_name = Ident::new(format!("{}_mut", name.as_ref().unwrap()));
let mut_name = Ident::from(format!("{}_mut", name.as_ref().unwrap()));
let ty = &reg_block_field.field.ty;
let offset = reg_block_field.offset as usize;
have_accessors = true;
Expand All @@ -496,7 +496,7 @@ fn register_or_cluster_block(
});

reg_block_field.field.to_tokens(&mut region_fields);
Ident::new(",").to_tokens(&mut region_fields);
Ident::from(",").to_tokens(&mut region_fields);
}
}

Expand All @@ -515,7 +515,7 @@ fn register_or_cluster_block(
// name, along with the region number, falling back to
// the offset and end in case we couldn't figure out a
// nice identifier.
let name = Ident::new(format!("_reserved_{}_{}", i, region.compute_ident().unwrap_or_else(|| format!("{}_{}", region.offset, region.end))));
let name = Ident::from(format!("_reserved_{}_{}", i, region.compute_ident().unwrap_or_else(|| format!("{}_{}", region.offset, region.end))));
let pad = (region.end - region.offset) as usize;
fields.append(quote! {
#name: [u8; #pad],
Expand All @@ -524,7 +524,7 @@ fn register_or_cluster_block(
last_end = region.end;
}

let name = Ident::new(match name {
let name = Ident::from(match name {
Some(name) => name.to_sanitized_upper_case(),
None => "RegisterBlock".into(),
});
Expand Down Expand Up @@ -723,7 +723,7 @@ fn cluster_block(
}
.replace("[%s]", "")
.replace("%s", "");
let name_sc = Ident::new(&*mod_name.to_sanitized_snake_case());
let name_sc = Ident::from(&*mod_name.to_sanitized_snake_case());
let reg_block = register_or_cluster_block(&c.children, defaults, Some(&mod_name), nightly)?;

// Generate definition for each of the registers.
Expand Down Expand Up @@ -775,7 +775,7 @@ fn expand_svd_register(register: &Register, name: Option<&str>) -> Vec<syn::Fiel
syn::Path {
global: false,
segments: vec![syn::PathSegment {
ident: Ident::new(ident),
ident: Ident::from(ident),
parameters: syn::PathParameters::none(),
}],
},
Expand Down Expand Up @@ -814,7 +814,7 @@ fn expand_svd_register(register: &Register, name: Option<&str>) -> Vec<syn::Fiel
info.name.replace("%s", "")
};

let ident = Ident::new(nb_name.to_sanitized_snake_case());
let ident = Ident::from(nb_name.to_sanitized_snake_case());
let ty = name_to_ty(&ty_name, name);

out.push(syn::Field {
Expand Down Expand Up @@ -848,7 +848,7 @@ fn convert_svd_register(register: &Register, name: Option<&str>) -> syn::Field {
syn::Path {
global: false,
segments: vec![syn::PathSegment {
ident: Ident::new(ident),
ident: Ident::from(ident),
parameters: syn::PathParameters::none(),
}],
},
Expand All @@ -857,7 +857,7 @@ fn convert_svd_register(register: &Register, name: Option<&str>) -> syn::Field {

match register {
Register::Single(info) => syn::Field {
ident: Some(Ident::new(info.name.to_sanitized_snake_case())),
ident: Some(Ident::from(info.name.to_sanitized_snake_case())),
vis: syn::Visibility::Public,
attrs: vec![],
ty: name_to_ty(&info.name, name),
Expand All @@ -871,7 +871,7 @@ fn convert_svd_register(register: &Register, name: Option<&str>) -> syn::Field {
info.name.replace("%s", "")
};

let ident = Ident::new(nb_name.to_sanitized_snake_case());
let ident = Ident::from(nb_name.to_sanitized_snake_case());

let ty = syn::Ty::Array(
Box::new(name_to_ty(&nb_name, name)),
Expand Down Expand Up @@ -900,7 +900,7 @@ fn expand_svd_cluster(cluster: &Cluster) -> Vec<syn::Field> {
syn::Path {
global: false,
segments: vec![syn::PathSegment {
ident: Ident::new(name.to_sanitized_upper_case()),
ident: Ident::from(name.to_sanitized_upper_case()),
parameters: syn::PathParameters::none(),
}],
},
Expand Down Expand Up @@ -939,7 +939,7 @@ fn expand_svd_cluster(cluster: &Cluster) -> Vec<syn::Field> {
info.name.replace("%s", "")
};

let ident = Ident::new(name.to_sanitized_snake_case());
let ident = Ident::from(name.to_sanitized_snake_case());
let ty = name_to_ty(&ty_name);

out.push(syn::Field {
Expand All @@ -962,7 +962,7 @@ fn convert_svd_cluster(cluster: &Cluster) -> syn::Field {
syn::Path {
global: false,
segments: vec![syn::PathSegment {
ident: Ident::new(name.to_sanitized_upper_case()),
ident: Ident::from(name.to_sanitized_upper_case()),
parameters: syn::PathParameters::none(),
}],
},
Expand All @@ -971,7 +971,7 @@ fn convert_svd_cluster(cluster: &Cluster) -> syn::Field {

match cluster {
Cluster::Single(info) => syn::Field {
ident: Some(Ident::new(info.name.to_sanitized_snake_case())),
ident: Some(Ident::from(info.name.to_sanitized_snake_case())),
vis: syn::Visibility::Public,
attrs: vec![],
ty: name_to_ty(&info.name),
Expand All @@ -985,7 +985,7 @@ fn convert_svd_cluster(cluster: &Cluster) -> syn::Field {
info.name.replace("%s", "")
};

let ident = Ident::new(name.to_sanitized_snake_case());
let ident = Ident::from(name.to_sanitized_snake_case());

let ty = syn::Ty::Array(
Box::new(name_to_ty(&name)),
Expand Down
48 changes: 24 additions & 24 deletions src/generate/register.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@ pub fn render(
) -> Result<Vec<Tokens>> {
let access = util::access_of(register);
let name = util::name_of(register);
let name_pc = Ident::new(&*name.to_sanitized_upper_case());
let name_sc = Ident::new(&*name.to_sanitized_snake_case());
let name_pc = Ident::from(&*name.to_sanitized_upper_case());
let name_sc = Ident::from(&*name.to_sanitized_snake_case());
let rsize = register
.size
.or(defs.size)
Expand Down Expand Up @@ -228,14 +228,14 @@ pub fn fields(
let BitRange { offset, width, range_type: _ } = f.bit_range;
let sc = f.name.to_sanitized_snake_case();
let pc = f.name.to_sanitized_upper_case();
let pc_r = Ident::new(&*format!("{}R", pc));
let pc_w = Ident::new(&*format!("{}W", pc));
let _pc_w = Ident::new(&*format!("_{}W", pc));
let _sc = Ident::new(&*format!("_{}", sc));
let pc_r = Ident::from(&*format!("{}R", pc));
let pc_w = Ident::from(&*format!("{}W", pc));
let _pc_w = Ident::from(&*format!("_{}W", pc));
let _sc = Ident::from(&*format!("_{}", sc));
let bits = if width == 1 {
Ident::new("bit")
Ident::from("bit")
} else {
Ident::new("bits")
Ident::from("bits")
};
let mut description = if width == 1 {
format!("Bit {}", offset)
Expand All @@ -256,7 +256,7 @@ pub fn fields(
width,
access: f.access,
evs: &f.enumerated_values,
sc: Ident::new(&*sc),
sc: Ident::from(&*sc),
mask: util::hex((((1 as u64) << width) - 1) as u32),
name: &f.name,
offset: util::unsuffixed(u64::from(f.bit_range.offset)),
Expand Down Expand Up @@ -312,7 +312,7 @@ pub fn fields(
.filter(|field| field.name.to_lowercase() != "reserved")
.map(|ev| {
let sc =
Ident::new(&*ev.name.to_sanitized_snake_case());
Ident::from(&*ev.name.to_sanitized_snake_case());
let description = ev.description
.as_ref()
.map(|s| &**s)
Expand All @@ -325,7 +325,7 @@ pub fn fields(
Ok(Variant {
description,
sc,
pc: Ident::new(&*ev.name
pc: Ident::from(&*ev.name
.to_sanitized_upper_case()),
value,
})
Expand All @@ -335,22 +335,22 @@ pub fn fields(
let pc_r = &f.pc_r;
if let Some(base) = &base {
let pc = base.field.to_sanitized_upper_case();
let base_pc_r = Ident::new(&*format!("{}R", pc));
let base_pc_r = Ident::from(&*format!("{}R", pc));
let desc = format!("Possible values of the field `{}`", f.name,);

if let (Some(peripheral), Some(register)) = (&base.peripheral, &base.register) {
let pmod_ = peripheral.to_sanitized_snake_case();
let rmod_ = register.to_sanitized_snake_case();
let pmod_ = Ident::new(&*pmod_);
let rmod_ = Ident::new(&*rmod_);
let pmod_ = Ident::from(&*pmod_);
let rmod_ = Ident::from(&*rmod_);

mod_items.push(quote! {
#[doc = #desc]
pub type #pc_r = crate::#pmod_::#rmod_::#base_pc_r;
});
} else if let Some(register) = &base.register {
let mod_ = register.to_sanitized_snake_case();
let mod_ = Ident::new(&*mod_);
let mod_ = Ident::from(&*mod_);

mod_items.push(quote! {
#[doc = #desc]
Expand Down Expand Up @@ -485,9 +485,9 @@ pub fn fields(
let sc = &v.sc;

let is_variant = if sc.as_ref().starts_with('_') {
Ident::new(&*format!("is{}", sc))
Ident::from(&*format!("is{}", sc))
} else {
Ident::new(&*format!("is_{}", sc))
Ident::from(&*format!("is_{}", sc))
};

let doc = format!("Checks if the value of the field is `{}`", pc);
Expand Down Expand Up @@ -595,13 +595,13 @@ pub fn fields(

let base_pc_w = base.as_ref().map(|base| {
let pc = base.field.to_sanitized_upper_case();
let base_pc_w = Ident::new(&*format!("{}W", pc));
let base_pc_w = Ident::from(&*format!("{}W", pc));

if let (Some(peripheral), Some(register)) = (&base.peripheral, &base.register) {
let pmod_ = peripheral.to_sanitized_snake_case();
let rmod_ = register.to_sanitized_snake_case();
let pmod_ = Ident::new(&*pmod_);
let rmod_ = Ident::new(&*rmod_);
let pmod_ = Ident::from(&*pmod_);
let rmod_ = Ident::from(&*rmod_);

mod_items.push(quote! {
#[doc = #pc_w_doc]
Expand All @@ -614,7 +614,7 @@ pub fn fields(
}
} else if let Some(register) = &base.register {
let mod_ = register.to_sanitized_snake_case();
let mod_ = Ident::new(&*mod_);
let mod_ = Ident::from(&*mod_);

mod_items.push(quote! {
#[doc = #pc_w_doc]
Expand Down Expand Up @@ -654,9 +654,9 @@ pub fn fields(
.unwrap_or_else(|| {
format!("`{:b}`", value)
}),
pc: Ident::new(&*ev.name
pc: Ident::from(&*ev.name
.to_sanitized_upper_case()),
sc: Ident::new(&*ev.name
sc: Ident::from(&*ev.name
.to_sanitized_snake_case()),
value,
})
Expand Down Expand Up @@ -804,7 +804,7 @@ fn unsafety(write_constraint: Option<&WriteConstraint>, width: u32) -> Option<Id
// if a writeConstraint exists then respect it
None
}
_ => Some(Ident::new("unsafe")),
_ => Some(Ident::from("unsafe")),
}
}

Expand Down
24 changes: 12 additions & 12 deletions src/util.rs
Original file line number Diff line number Diff line change
Expand Up @@ -220,21 +220,21 @@ pub fn hex(n: u32) -> Tokens {
let mut t = Tokens::new();
let (h2, h1) = ((n >> 16) & 0xffff, n & 0xffff);
t.append(if h2 != 0 {
format!("0x{:04x}_{:04x}", h2, h1)
Ident::from(format!("0x{:04x}_{:04x}", h2, h1))
} else if h1 & 0xff00 != 0 {
format!("0x{:04x}", h1)
Ident::from(format!("0x{:04x}", h1))
} else if h1 != 0 {
format!("0x{:02x}", h1 & 0xff)
Ident::from(format!("0x{:02x}", h1 & 0xff))
} else {
String::from("0")
Ident::from("0")
});
t
}

pub fn hex_or_bool(n: u32, width: u32) -> Tokens {
if width == 1 {
let mut t = Tokens::new();
t.append(if n == 0 { "false" } else { "true" });
t.append(Ident::from(if n == 0 { "false" } else { "true" }));
t
} else {
hex(n)
Expand All @@ -244,14 +244,14 @@ pub fn hex_or_bool(n: u32, width: u32) -> Tokens {
/// Turns `n` into an unsuffixed token
pub fn unsuffixed(n: u64) -> Tokens {
let mut t = Tokens::new();
t.append(format!("{}", n));
t.append(Ident::from(format!("{}", n)));
t
}

pub fn unsuffixed_or_bool(n: u64, width: u32) -> Tokens {
if width == 1 {
let mut t = Tokens::new();
t.append(if n == 0 { "false" } else { "true" });
t.append(Ident::from(if n == 0 { "false" } else { "true" }));
t
} else {
unsuffixed(n)
Expand All @@ -266,11 +266,11 @@ pub trait U32Ext {
impl U32Ext for u32 {
fn to_ty(&self) -> Result<Ident> {
Ok(match *self {
1 => Ident::new("bool"),
2..=8 => Ident::new("u8"),
9..=16 => Ident::new("u16"),
17..=32 => Ident::new("u32"),
33..=64 => Ident::new("u64"),
1 => Ident::from("bool"),
2..=8 => Ident::from("u8"),
9..=16 => Ident::from("u16"),
17..=32 => Ident::from("u32"),
33..=64 => Ident::from("u64"),
_ => Err(format!(
"can't convert {} bits into a Rust integral type",
*self
Expand Down