1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
crate::ix!();

/**
  | proxy to a class because of partial specialization
  | limitations for functions
  |
  */
pub struct ScaleImpl<T,Context,const FixedSize: i32> { 
    p_x: PhantomData<T>,
    p_y: PhantomData<Context>,
}

#[inline] pub fn scale_fixed_size<T, Context, const FixedSize: i32>(
    n:       i32,
    alpha:   f32,
    x:       *const T,
    y:       *mut T,
    context: *mut Context)  {
    todo!();
    /*
        detail::ScaleImpl<T, Context, FixedSize>()(N, alpha, x, y, context);
    */
}

impl<T,Context,const FixedSize: i32> ScaleImpl<T,Context,FixedSize> {
    
    #[inline] pub fn invoke(&mut self, 
        n:       i32,
        alpha:   f32,
        x:       *const T,
        y:       *mut T,
        context: *mut Context)  
    {
        match FixedSize {
            1 => {
                todo!();
                /*
                DCHECK_EQ(N, 1);
                *y = *x * alpha;
                */
            }
            _ => {
                scale(n as i64, alpha, x, y, context);
            }
        }
    }
}