#include "array.hfa" trait ix( C &, E &, ztype(N) ) { E & ?[?]( C &, ptrdiff_t ); void __taglen( tag(C), tag(N) ); }; forall( ztype(Zn), ztype(S), Timmed &, Tbase & ) void __taglen( tag(arpk(Zn, S, Timmed, Tbase)), tag(Zn) ) {} forall( ztype( N ) ) void print1d_cstyle( array(float, N) & c ); forall( C &, ztype( N ) | ix( C, float, N ) ) void print1d( C & c ); forall( ztype( N ) ) void print1d_cstyle( array(float, N) & c ) { for( i; z(N) ) { printf("%.1f ", c[i]); } printf("\n"); } forall( C &, ztype( N ) | ix( C, float, N ) ) void print1d( C & c ) { for( i; z(N) ) { printf("%.1f ", c[i]); } printf("\n"); } void fill( array(float, Z(5), Z(7)) & a ) { for ( i; (ptrdiff_t) 5 ) { for ( j; 7 ) { a[[i,j]] = 1.0 * i + 0.1 * j; printf("%.1f ", a[[i,j]]); } printf("\n"); } printf("\n"); } int main() { array( float, Z(5), Z(7) ) a; fill(a); /* 0.0 0.1 0.2 0.3 0.4 0.5 0.6 1.0 1.1 1.2 1.3 1.4 1.5 1.6 2.0 2.1 2.2 2.3 2.4 2.5 2.6 3.0 3.1 3.2 3.3 3.4 3.5 3.6 4.0 4.1 4.2 4.3 4.4 4.5 4.6 */ print1d_cstyle( a[ 2 ] ); // 2.0 2.1 2.2 2.3 2.4 2.5 2.6 print1d( a[ 2 ] ); // 2.0 2.1 2.2 2.3 2.4 2.5 2.6 print1d( a[[ 2, all ]] ); // 2.0 2.1 2.2 2.3 2.4 2.5 2.6 print1d( a[[ all, 3 ]] ); // 0.3 1.3 2.3 3.3 4.3 print1d_cstyle( a[[ 2, all ]] ); #ifdef SHOWERR1 print1d_cstyle( a[[ all, 2 ]] ); // bad #endif }