@@ -23,7 +23,8 @@ DataStyle(::Type{VF{S, Nv, A}}) where {S, Nv, A} =
23
23
DataColumnStyle (:: Type{VFStyle{Nv, A}} ) where {Nv, A} = VFStyle{Nv, A}
24
24
Data0DStyle (:: Type{VFStyle{Nv, A}} ) where {Nv, A} = DataFStyle{A}
25
25
26
- abstract type Data1DStyle{Ni} <: DataStyle end
26
+ abstract type DataLevelStyle <: DataStyle end
27
+ abstract type Data1DStyle{Ni} <: DataLevelStyle end
27
28
struct IFHStyle{Ni, A} <: Data1DStyle{Ni} end
28
29
DataStyle (:: Type{IFH{S, Ni, A}} ) where {S, Ni, A} =
29
30
IFHStyle {Ni, parent_array_type(A)} ()
@@ -33,7 +34,7 @@ DataStyle(::Type{IHF{S, Ni, A}}) where {S, Ni, A} =
33
34
IHFStyle {Ni, parent_array_type(A)} ()
34
35
Data0DStyle (:: Type{IHFStyle{Ni, A}} ) where {Ni, A} = DataFStyle{A}
35
36
36
- abstract type DataSlab1DStyle{Ni} <: DataStyle end
37
+ abstract type DataSlab1DStyle{Ni} <: DataLevelStyle end
37
38
DataSlab1DStyle (:: Type{IFHStyle{Ni, A}} ) where {Ni, A} = IFStyle{Ni, A}
38
39
DataSlab1DStyle (:: Type{IHFStyle{Ni, A}} ) where {Ni, A} = IFStyle{Ni, A}
39
40
@@ -42,13 +43,13 @@ DataStyle(::Type{IF{S, Ni, A}}) where {S, Ni, A} =
42
43
IFStyle {Ni, parent_array_type(A)} ()
43
44
Data0DStyle (:: Type{IFStyle{Ni, A}} ) where {Ni, A} = DataFStyle{A}
44
45
45
- abstract type DataSlab2DStyle{Nij} <: DataStyle end
46
+ abstract type DataSlab2DStyle{Nij} <: DataLevelStyle end
46
47
struct IJFStyle{Nij, A} <: DataSlab2DStyle{Nij} end
47
48
DataStyle (:: Type{IJF{S, Nij, A}} ) where {S, Nij, A} =
48
49
IJFStyle {Nij, parent_array_type(A)} ()
49
50
Data0DStyle (:: Type{IJFStyle{Nij, A}} ) where {Nij, A} = DataFStyle{A}
50
51
51
- abstract type Data2DStyle{Nij} <: DataStyle end
52
+ abstract type Data2DStyle{Nij} <: DataLevelStyle end
52
53
struct IJFHStyle{Nij, A} <: Data2DStyle{Nij} end
53
54
DataStyle (:: Type{IJFH{S, Nij, A}} ) where {S, Nij, A} =
54
55
IJFHStyle {Nij, parent_array_type(A)} ()
@@ -67,6 +68,7 @@ DataStyle(::Type{VIFH{S, Nv, Ni, A}}) where {S, Nv, Ni, A} =
67
68
VIFHStyle {Nv, Ni, parent_array_type(A)} ()
68
69
Data1DXStyle (:: Type{VIFHStyle{Nv, Ni, A}} ) where {Ni, Nv, A} =
69
70
VIFHStyle{Nv, Ni, A}
71
+ DataLevelStyle (:: Type{VIFHStyle{Nv, Ni, A}} ) where {Ni, Nv, A} = IFHStyle{Ni, A}
70
72
DataColumnStyle (:: Type{VIFHStyle{Nv, Ni, A}} ) where {Ni, Nv, A} = VFStyle{Nv, A}
71
73
DataSlab1DStyle (:: Type{VIFHStyle{Nv, Ni, A}} ) where {Ni, Nv, A} = IFStyle{Ni, A}
72
74
Data0DStyle (:: 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} =
76
78
VIHFStyle {Nv, Ni, parent_array_type(A)} ()
77
79
Data1DXStyle (:: Type{VIHFStyle{Nv, Ni, A}} ) where {Ni, Nv, A} =
78
80
VIHFStyle{Nv, Ni, A}
81
+ DataLevelStyle (:: Type{VIHFStyle{Nv, Ni, A}} ) where {Ni, Nv, A} = IHFStyle{Ni, A}
79
82
DataColumnStyle (:: Type{VIHFStyle{Nv, Ni, A}} ) where {Ni, Nv, A} = VFStyle{Nv, A}
80
83
DataSlab1DStyle (:: Type{VIHFStyle{Nv, Ni, A}} ) where {Ni, Nv, A} = IFStyle{Ni, A}
81
84
Data0DStyle (:: 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} =
86
89
VIJFHStyle {Nv, Nij, parent_array_type(A)} ()
87
90
Data2DXStyle (:: Type{VIJFHStyle{Nv, Nij, A}} ) where {Nv, Nij, A} =
88
91
VIJFHStyle{Nv, Nij, A}
92
+ DataLevelStyle (:: Type{VIJFHStyle{Nv, Nij, A}} ) where {Nv, Nij, A} =
93
+ IJFHStyle{Nij, A}
89
94
DataColumnStyle (:: Type{VIJFHStyle{Nv, Nij, A}} ) where {Nv, Nij, A} =
90
95
VFStyle{Nv, A}
91
96
DataSlab2DStyle (:: 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} =
97
102
VIJHFStyle {Nv, Nij, parent_array_type(A)} ()
98
103
Data2DXStyle (:: Type{VIJHFStyle{Nv, Nij, A}} ) where {Nv, Nij, A} =
99
104
VIJHFStyle{Nv, Nij, A}
105
+ DataLevelStyle (:: Type{VIJHFStyle{Nv, Nij, A}} ) where {Nv, Nij, A} =
106
+ IJHFStyle{Nij, A}
100
107
DataColumnStyle (:: Type{VIJHFStyle{Nv, Nij, A}} ) where {Nv, Nij, A} =
101
108
VFStyle{Nv, A}
102
109
DataSlab2DStyle (:: Type{VIJHFStyle{Nv, Nij, A}} ) where {Nv, Nij, A} =
103
110
IJFStyle{Nij, A}
104
111
Data0DStyle (:: Type{VIJHFStyle{Nv, Nij, A}} ) where {Nv, Nij, A} = DataFStyle{A}
105
112
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 } =
115
117
Data0DStyle (Style)
116
118
DataSlabStyle (:: Type{Style} ) where {Style <: Union{Data1DStyle, Data1DXStyle} } =
117
119
DataSlab1DStyle (Style)
@@ -374,6 +376,23 @@ Base.@propagate_inbounds function slab(
374
376
Base. Broadcast. Broadcasted {DataSlab2DStyle(DS)} (bc. f, _args, _axes)
375
377
end
376
378
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
+
377
396
Base. @propagate_inbounds function column (
378
397
bc:: Base.Broadcast.Broadcasted{DS} ,
379
398
inds... ,
0 commit comments