use crate::ascii_table::{AsciiFieldDefinition, AsciiRow};
use crate::bin_table::Value;
use std::sync::Arc;
#[derive(Debug, Clone)]
pub struct OwnedAsciiRow {
data: Vec<u8>,
field_definitions: Arc<Vec<AsciiFieldDefinition>>,
}
impl OwnedAsciiRow {
pub(crate) fn new(field_definitions: Arc<Vec<AsciiFieldDefinition>>, data: Vec<u8>) -> Self {
Self {
data,
field_definitions,
}
}
pub fn row(&self) -> AsciiRow<'_> {
AsciiRow::new(&self.field_definitions, &self.data)
}
pub fn get(&self, key: &str) -> crate::Result<Option<Value>> {
self.row().get(key)
}
pub fn get_at(&self, index: usize) -> crate::Result<Option<Value>> {
self.row().get_at(index)
}
pub fn field_definitions(&self) -> &[AsciiFieldDefinition] {
&self.field_definitions
}
}