vortex_vector/listview/
scalar.rs1use crate::Scalar;
5use crate::ScalarOps;
6use crate::VectorMut;
7use crate::VectorOps;
8use crate::listview::ListViewVector;
9use vortex_mask::Mask;
10
11#[derive(Clone, Debug)]
15pub struct ListViewScalar(ListViewVector);
16
17impl ListViewScalar {
18 pub fn new(vector: ListViewVector) -> Self {
24 assert_eq!(vector.len(), 1);
25 Self(vector)
26 }
27
28 pub fn value(&self) -> &ListViewVector {
30 &self.0
31 }
32}
33
34impl ScalarOps for ListViewScalar {
35 fn is_valid(&self) -> bool {
36 self.0.validity().value(0)
37 }
38
39 fn mask_validity(&mut self, mask: bool) {
40 if !mask {
41 self.0.mask_validity(&Mask::new_false(1))
42 }
43 }
44
45 fn repeat(&self, _n: usize) -> VectorMut {
46 todo!()
47 }
48}
49
50impl From<ListViewScalar> for Scalar {
51 fn from(val: ListViewScalar) -> Self {
52 Scalar::List(val)
53 }
54}