ast-experimental
Last change
on this file since 382467f was
a5e2682,
checked in by Michael Brooks <mlbrooks@…>, 2 years ago
|
Improve new-array subscripting to cover missing cases.
Missing cases include acknowledging a[0] and a[1] as required uses; therefore, give them
special overloads. Add comments to explain why.
Missing cases include test coverage of these overloads (where tests actually fail when an overload
is missing). Perhaps surprisingly, you need to use a lot of features at the same time for the need
for several overloads to obtain; make test coverage go there.
Also, switch thesis's demo of mutidimensional transposing/slicing to use (improved) libcfa ar
(pseudo-)trait, in place of former ix trait. Therefore, also port this demo to new array
syntax. (No changes to thesis discussion around this demo yet; these are still pending.) All
in, cause this thesis demo to be runnable again.
|
-
Property mode set to
100644
|
File size:
1.3 KB
|
Line | |
---|
1 | #include "array.hfa" |
---|
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 | forall( [N] ) |
---|
41 | void print1d_cstyle( array(float, N) & c ); |
---|
42 | |
---|
43 | forall( [N], C & | ar( C, float, N ) ) |
---|
44 | void print1d( C & c ); |
---|
45 | |
---|
46 | |
---|
47 | |
---|
48 | |
---|
49 | |
---|
50 | |
---|
51 | |
---|
52 | |
---|
53 | |
---|
54 | |
---|
55 | |
---|
56 | |
---|
57 | |
---|
58 | |
---|
59 | |
---|
60 | forall( [N] ) |
---|
61 | void print1d_cstyle( array(float, N) & c ) { |
---|
62 | for( i; N ) { |
---|
63 | printf("%.1f ", c[i]); |
---|
64 | } |
---|
65 | printf("\n"); |
---|
66 | } |
---|
67 | |
---|
68 | |
---|
69 | |
---|
70 | |
---|
71 | |
---|
72 | |
---|
73 | |
---|
74 | |
---|
75 | |
---|
76 | |
---|
77 | |
---|
78 | |
---|
79 | |
---|
80 | forall( [N], C & | ar( C, float, N ) ) |
---|
81 | void print1d( C & c ) { |
---|
82 | for( i; N ) { |
---|
83 | printf("%.1f ", c[i]); |
---|
84 | } |
---|
85 | printf("\n"); |
---|
86 | } |
---|
87 | |
---|
88 | |
---|
89 | |
---|
90 | |
---|
91 | |
---|
92 | |
---|
93 | |
---|
94 | |
---|
95 | |
---|
96 | |
---|
97 | |
---|
98 | |
---|
99 | |
---|
100 | |
---|
101 | void fill( array(float, 5, 7) & a ) { |
---|
102 | for ( i; (ptrdiff_t) 5 ) { |
---|
103 | for ( j; 7 ) { |
---|
104 | a[i,j] = 1.0 * i + 0.1 * j; |
---|
105 | printf("%.1f ", a[i,j]); |
---|
106 | } |
---|
107 | printf("\n"); |
---|
108 | } |
---|
109 | printf("\n"); |
---|
110 | } |
---|
111 | |
---|
112 | int main() { |
---|
113 | |
---|
114 | |
---|
115 | |
---|
116 | |
---|
117 | |
---|
118 | |
---|
119 | |
---|
120 | array( float, 5, 7 ) a; |
---|
121 | fill(a); |
---|
122 | /* |
---|
123 | 0.0 0.1 0.2 0.3 0.4 0.5 0.6 |
---|
124 | 1.0 1.1 1.2 1.3 1.4 1.5 1.6 |
---|
125 | 2.0 2.1 2.2 2.3 2.4 2.5 2.6 |
---|
126 | 3.0 3.1 3.2 3.3 3.4 3.5 3.6 |
---|
127 | 4.0 4.1 4.2 4.3 4.4 4.5 4.6 |
---|
128 | */ |
---|
129 | |
---|
130 | |
---|
131 | |
---|
132 | |
---|
133 | |
---|
134 | |
---|
135 | |
---|
136 | |
---|
137 | |
---|
138 | |
---|
139 | |
---|
140 | print1d_cstyle( a[ 2 ] ); // 2.0 2.1 2.2 2.3 2.4 2.5 2.6 |
---|
141 | |
---|
142 | |
---|
143 | |
---|
144 | |
---|
145 | print1d( a[ 2 ] ); // 2.0 2.1 2.2 2.3 2.4 2.5 2.6 |
---|
146 | |
---|
147 | |
---|
148 | |
---|
149 | |
---|
150 | print1d( a[ 2, all ] ); // 2.0 2.1 2.2 2.3 2.4 2.5 2.6 |
---|
151 | print1d( a[ all, 3 ] ); // 0.3 1.3 2.3 3.3 4.3 |
---|
152 | |
---|
153 | |
---|
154 | |
---|
155 | print1d_cstyle( a[ 2, all ] ); |
---|
156 | |
---|
157 | |
---|
158 | |
---|
159 | |
---|
160 | |
---|
161 | |
---|
162 | |
---|
163 | #ifdef SHOW_ERROR_1 |
---|
164 | |
---|
165 | print1d_cstyle( a[ all, 2 ] ); // bad |
---|
166 | |
---|
167 | #endif |
---|
168 | |
---|
169 | } |
---|
170 | |
---|
171 | |
---|
172 | |
---|
Note: See
TracBrowser
for help on using the repository browser.