Skip to content

Commit 7fb1963

Browse files
committed
enh: bcf: adds translate to Record so we don't need a writer
1 parent d743a34 commit 7fb1963

File tree

2 files changed

+13
-0
lines changed

2 files changed

+13
-0
lines changed

src/bcf/record.rs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,17 @@ impl Record {
200200
self.header.as_ref()
201201
}
202202

203+
/// Translate the record to the given header.
204+
pub fn translate(&mut self, dst_header: &mut Arc<HeaderView>) -> Result<()> {
205+
if unsafe { htslib::bcf_translate(dst_header.inner, self.header().inner, self.inner) } == 0
206+
{
207+
self.set_header(Arc::clone(dst_header));
208+
Ok(())
209+
} else {
210+
Err(Error::BcfTranslate)
211+
}
212+
}
213+
203214
/// Set the record header.
204215
pub(crate) fn set_header(&mut self, header: Arc<HeaderView>) {
205216
self.header = header;

src/errors.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,8 @@ pub enum Error {
135135
BcfRemoveAlleles,
136136
#[error("failed to render BCF record as string")]
137137
BcfToString,
138+
#[error("failed to translate BCF/VCF record")]
139+
BcfTranslate,
138140

139141
#[error("invalid compression level {level}")]
140142
BgzfInvalidCompressionLevel { level: i8 },

0 commit comments

Comments
 (0)