@@ -23,7 +23,8 @@ DataStyle(::Type{VF{S, Nv, A}}) where {S, Nv, A} =
2323DataColumnStyle (:: Type{VFStyle{Nv, A}} ) where {Nv, A} = VFStyle{Nv, A}
2424Data0DStyle (:: Type{VFStyle{Nv, A}} ) where {Nv, A} = DataFStyle{A}
2525
26- abstract type Data1DStyle{Ni} <: DataStyle end
26+ abstract type DataLevelStyle <: DataStyle end
27+ abstract type Data1DStyle{Ni} <: DataLevelStyle end
2728struct IFHStyle{Ni, A} <: Data1DStyle{Ni} end
2829DataStyle (:: Type{IFH{S, Ni, A}} ) where {S, Ni, A} =
2930 IFHStyle {Ni, parent_array_type(A)} ()
@@ -33,7 +34,7 @@ DataStyle(::Type{IHF{S, Ni, A}}) where {S, Ni, A} =
3334 IHFStyle {Ni, parent_array_type(A)} ()
3435Data0DStyle (:: Type{IHFStyle{Ni, A}} ) where {Ni, A} = DataFStyle{A}
3536
36- abstract type DataSlab1DStyle{Ni} <: DataStyle end
37+ abstract type DataSlab1DStyle{Ni} <: DataLevelStyle end
3738DataSlab1DStyle (:: Type{IFHStyle{Ni, A}} ) where {Ni, A} = IFStyle{Ni, A}
3839DataSlab1DStyle (:: Type{IHFStyle{Ni, A}} ) where {Ni, A} = IFStyle{Ni, A}
3940
@@ -42,13 +43,13 @@ DataStyle(::Type{IF{S, Ni, A}}) where {S, Ni, A} =
4243 IFStyle {Ni, parent_array_type(A)} ()
4344Data0DStyle (:: Type{IFStyle{Ni, A}} ) where {Ni, A} = DataFStyle{A}
4445
45- abstract type DataSlab2DStyle{Nij} <: DataStyle end
46+ abstract type DataSlab2DStyle{Nij} <: DataLevelStyle end
4647struct IJFStyle{Nij, A} <: DataSlab2DStyle{Nij} end
4748DataStyle (:: Type{IJF{S, Nij, A}} ) where {S, Nij, A} =
4849 IJFStyle {Nij, parent_array_type(A)} ()
4950Data0DStyle (:: Type{IJFStyle{Nij, A}} ) where {Nij, A} = DataFStyle{A}
5051
51- abstract type Data2DStyle{Nij} <: DataStyle end
52+ abstract type Data2DStyle{Nij} <: DataLevelStyle end
5253struct IJFHStyle{Nij, A} <: Data2DStyle{Nij} end
5354DataStyle (:: Type{IJFH{S, Nij, A}} ) where {S, Nij, A} =
5455 IJFHStyle {Nij, parent_array_type(A)} ()
@@ -67,6 +68,7 @@ DataStyle(::Type{VIFH{S, Nv, Ni, A}}) where {S, Nv, Ni, A} =
6768 VIFHStyle {Nv, Ni, parent_array_type(A)} ()
6869Data1DXStyle (:: Type{VIFHStyle{Nv, Ni, A}} ) where {Ni, Nv, A} =
6970 VIFHStyle{Nv, Ni, A}
71+ DataLevelStyle (:: Type{VIFHStyle{Nv, Ni, A}} ) where {Ni, Nv, A} = IFHStyle{Ni, A}
7072DataColumnStyle (:: Type{VIFHStyle{Nv, Ni, A}} ) where {Ni, Nv, A} = VFStyle{Nv, A}
7173DataSlab1DStyle (:: Type{VIFHStyle{Nv, Ni, A}} ) where {Ni, Nv, A} = IFStyle{Ni, A}
7274Data0DStyle (:: Type{VIFHStyle{Nv, Ni, A}} ) where {Nv, Ni, A} = DataFStyle{A}
@@ -76,6 +78,7 @@ DataStyle(::Type{VIHF{S, Nv, Ni, A}}) where {S, Nv, Ni, A} =
7678 VIHFStyle {Nv, Ni, parent_array_type(A)} ()
7779Data1DXStyle (:: Type{VIHFStyle{Nv, Ni, A}} ) where {Ni, Nv, A} =
7880 VIHFStyle{Nv, Ni, A}
81+ DataLevelStyle (:: Type{VIHFStyle{Nv, Ni, A}} ) where {Ni, Nv, A} = IHFStyle{Ni, A}
7982DataColumnStyle (:: Type{VIHFStyle{Nv, Ni, A}} ) where {Ni, Nv, A} = VFStyle{Nv, A}
8083DataSlab1DStyle (:: Type{VIHFStyle{Nv, Ni, A}} ) where {Ni, Nv, A} = IFStyle{Ni, A}
8184Data0DStyle (:: Type{VIHFStyle{Nv, Ni, A}} ) where {Nv, Ni, A} = DataFStyle{A}
@@ -86,6 +89,8 @@ DataStyle(::Type{VIJFH{S, Nv, Nij, A}}) where {S, Nv, Nij, A} =
8689 VIJFHStyle {Nv, Nij, parent_array_type(A)} ()
8790Data2DXStyle (:: Type{VIJFHStyle{Nv, Nij, A}} ) where {Nv, Nij, A} =
8891 VIJFHStyle{Nv, Nij, A}
92+ DataLevelStyle (:: Type{VIJFHStyle{Nv, Nij, A}} ) where {Nv, Nij, A} =
93+ IJFHStyle{Nij, A}
8994DataColumnStyle (:: Type{VIJFHStyle{Nv, Nij, A}} ) where {Nv, Nij, A} =
9095 VFStyle{Nv, A}
9196DataSlab2DStyle (:: Type{VIJFHStyle{Nv, Nij, A}} ) where {Nv, Nij, A} =
@@ -97,21 +102,18 @@ DataStyle(::Type{VIJHF{S, Nv, Nij, A}}) where {S, Nv, Nij, A} =
97102 VIJHFStyle {Nv, Nij, parent_array_type(A)} ()
98103Data2DXStyle (:: Type{VIJHFStyle{Nv, Nij, A}} ) where {Nv, Nij, A} =
99104 VIJHFStyle{Nv, Nij, A}
105+ DataLevelStyle (:: Type{VIJHFStyle{Nv, Nij, A}} ) where {Nv, Nij, A} =
106+ IJHFStyle{Nij, A}
100107DataColumnStyle (:: Type{VIJHFStyle{Nv, Nij, A}} ) where {Nv, Nij, A} =
101108 VFStyle{Nv, A}
102109DataSlab2DStyle (:: Type{VIJHFStyle{Nv, Nij, A}} ) where {Nv, Nij, A} =
103110 IJFStyle{Nij, A}
104111Data0DStyle (:: Type{VIJHFStyle{Nv, Nij, A}} ) where {Nv, Nij, A} = DataFStyle{A}
105112
106- const HorizontalDataStyle = Union{
107- Data1DStyle,
108- Data2DStyle,
109- DataSlab1DStyle,
110- DataSlab2DStyle,
111- Data1DXStyle,
112- Data2DXStyle,
113- }
114- DataColumnStyle (:: Type{Style} ) where {Style <: HorizontalDataStyle } =
113+ DataLevelStyle (:: Type{Style} ) where {Style <: DataLevelStyle } = Style
114+ DataLevelStyle (:: Type{Style} ) where {Style <: DataColumnStyle } =
115+ Data0DStyle (Style)
116+ DataColumnStyle (:: Type{Style} ) where {Style <: DataLevelStyle } =
115117 Data0DStyle (Style)
116118DataSlabStyle (:: Type{Style} ) where {Style <: Union{Data1DStyle, Data1DXStyle} } =
117119 DataSlab1DStyle (Style)
@@ -374,6 +376,23 @@ Base.@propagate_inbounds function slab(
374376 Base. Broadcast. Broadcasted {DataSlab2DStyle(DS)} (bc. f, _args, _axes)
375377end
376378
379+ Base. @propagate_inbounds function level (
380+ bc:: Base.Broadcast.Broadcasted{DS} ,
381+ inds... ,
382+ ) where {DS <: DataStyle }
383+ _args = level_args (bc. args, inds... )
384+ _axes = nothing
385+ bcc = Base. Broadcast. Broadcasted {DataLevelStyle(DS)} (bc. f, _args, _axes)
386+ Base. Broadcast. instantiate (bcc)
387+ end
388+
389+ @inline function level (
390+ bc:: Base.Broadcast.Broadcasted{DS} ,
391+ inds... ,
392+ ) where {DS <: DataLevelStyle }
393+ bc
394+ end
395+
377396Base. @propagate_inbounds function column (
378397 bc:: Base.Broadcast.Broadcasted{DS} ,
379398 inds... ,
0 commit comments