Skip to content

Commit 9cc649c

Browse files
committed
reuse buffers, misc
1 parent a4da53b commit 9cc649c

File tree

2 files changed

+12
-14
lines changed

2 files changed

+12
-14
lines changed

src/backend/muxml/formatters.rs

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ pub fn write_muxml2_note(
3030
buf: &mut impl std::fmt::Write, step: char, octave: u8, sharp: bool, chord: bool, dead: bool,
3131
properties: Option<&NoteProperties>,
3232
) -> Result<(), std::fmt::Error> {
33+
let mut nbuf = itoa::Buffer::new();
3334
buf.write_str("<note>\n")?;
3435
if chord {
3536
buf.write_str("<chord/>\n")?
@@ -41,8 +42,7 @@ pub fn write_muxml2_note(
4142
buf.write_str("<alter>1</alter>\n")?
4243
}
4344
buf.write_str("<octave>")?;
44-
let mut octave_buf = itoa::Buffer::new();
45-
buf.write_str(octave_buf.format(octave))?;
45+
buf.write_str(nbuf.format(octave))?;
4646
buf.write_str(
4747
r#"</octave>
4848
</pitch>
@@ -65,14 +65,14 @@ pub fn write_muxml2_note(
6565
buf.write_str(r#"<slur type=""#)?;
6666
buf.write_str(if slur.start { "start" } else { "stop" })?;
6767
buf.write_str(r#"" number=""#)?;
68-
buf.write_str(octave_buf.format(slur.number))?;
68+
buf.write_str(nbuf.format(slur.number))?;
6969
buf.write_str("\" />\n")?;
7070
}
7171
if let Some(slide) = slide {
7272
buf.write_str(r#"<slide type=""#)?;
7373
buf.write_str(if slide.start { "start" } else { "stop" })?;
7474
buf.write_str(r#"" number=""#)?;
75-
buf.write_str(octave_buf.format(slide.number))?;
75+
buf.write_str(nbuf.format(slide.number))?;
7676
buf.write_str("\" />\n")?;
7777
}
7878
if let Some(vibrato) = vibrato {
@@ -107,11 +107,9 @@ pub fn write_muxml2_measure_prelude(
107107
buf.write_str("<key><fifths>0</fifths></key>\n")?
108108
};
109109
buf.write_str("<time><beats>")?;
110-
let mut note_count_buf = Buffer::new();
111-
buf.write_str(note_count_buf.format(note_count))?;
110+
buf.write_str(nbuf.format(note_count))?;
112111
buf.write_str("</beats><beat-type>")?;
113-
let mut note_type_buf = Buffer::new();
114-
buf.write_str(note_type_buf.format(note_type))?;
112+
buf.write_str(nbuf.format(note_type))?;
115113
buf.write_str("</beat-type></time>\n")?;
116114
if first_measure {
117115
buf.write_str("<clef><sign>G</sign><line>2</line></clef>\n")?

src/parser/parser.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -95,8 +95,7 @@ pub fn parse<L: ParseLines>(lines: &L) -> ParseResult {
9595
let _part = span!(Level::DEBUG, "parsing part", ?range);
9696
let _part = _part.enter();
9797
r.offsets.push((part_first_line as u32, r.tick_stream.len() as u32));
98-
let mut part: [&str; 6] =
99-
array::from_fn(|i| part_first_line + i).map(|s| lines.get_line(s).trim()); // TODO: check if this is slow
98+
let mut part: [&str; 6] = array::from_fn(|i| lines.get_line(part_first_line + i).trim());
10099

101100
// The current tick in THIS PART
102101
let mut tick = 0;
@@ -106,17 +105,18 @@ pub fn parse<L: ParseLines>(lines: &L) -> ParseResult {
106105
r.error = Some(BackendError::invalid_string_name(part_first_line + line_idx));
107106
return r;
108107
};
108+
*line = rem;
109109
r.base_notes.push(string_name);
110-
let Ok((rem, _)) = super::char('|')(rem) else {
110+
let Some(l) = line.strip_prefix('|') else {
111111
r.error = Some(BackendError::invalid_string_name(part_first_line + line_idx));
112112
return r;
113113
};
114-
*line = rem;
115-
if !line.ends_with('|') {
114+
*line = l;
115+
let Some(l) = line.strip_suffix('|') else {
116116
r.error = Some(BackendError::no_closing_barline(part_first_line + line_idx));
117117
return r;
118118
};
119-
*line = &line[0..(line.len() - 1)];
119+
*line = l
120120
}
121121

122122
let mut tick_cnt_est = part[0].len();

0 commit comments

Comments
 (0)