1 //Copyright (c) 2008-2016 Emil Dotchevski and Reverge Studios, Inc.
2 
3 //Distributed under the Boost Software License, Version 1.0. (See accompanying
4 //file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
5 
6 #include <boost/qvm/mat_access.hpp>
7 #include "test_qvm_matrix.hpp"
8 
9 using namespace boost::qvm;
10 
11 template <int R,int C>
12 void
13 check_idx( test_qvm::matrix<M1,10,10> & m, float & (*f)( test_qvm::matrix<M1,10,10> & ) )
14     {
15     BOOST_TEST((&A<R,C>(m)==&m.a[R][C]));
16     BOOST_TEST((&f(m)==&m.a[R][C]));
17     }
18 
19 int
main()20 main()
21     {
22     test_qvm::matrix<M1,10,10> m;
23 #define CHECK_A(i,j) check_idx<i,j>(m,A##i##j);
24     CHECK_A(0,0);
25     CHECK_A(0,1);
26     CHECK_A(0,2);
27     CHECK_A(0,3);
28     CHECK_A(0,4);
29     CHECK_A(0,5);
30     CHECK_A(0,6);
31     CHECK_A(0,7);
32     CHECK_A(0,8);
33     CHECK_A(0,9);
34     CHECK_A(1,0);
35     CHECK_A(1,1);
36     CHECK_A(1,2);
37     CHECK_A(1,3);
38     CHECK_A(1,4);
39     CHECK_A(1,5);
40     CHECK_A(1,6);
41     CHECK_A(1,7);
42     CHECK_A(1,8);
43     CHECK_A(1,9);
44     CHECK_A(2,0);
45     CHECK_A(2,1);
46     CHECK_A(2,2);
47     CHECK_A(2,3);
48     CHECK_A(2,4);
49     CHECK_A(2,5);
50     CHECK_A(2,6);
51     CHECK_A(2,7);
52     CHECK_A(2,8);
53     CHECK_A(2,9);
54     CHECK_A(3,0);
55     CHECK_A(3,1);
56     CHECK_A(3,2);
57     CHECK_A(3,3);
58     CHECK_A(3,4);
59     CHECK_A(3,5);
60     CHECK_A(3,6);
61     CHECK_A(3,7);
62     CHECK_A(3,8);
63     CHECK_A(3,9);
64     CHECK_A(4,0);
65     CHECK_A(4,1);
66     CHECK_A(4,2);
67     CHECK_A(4,3);
68     CHECK_A(4,4);
69     CHECK_A(4,5);
70     CHECK_A(4,6);
71     CHECK_A(4,7);
72     CHECK_A(4,8);
73     CHECK_A(4,9);
74     CHECK_A(5,0);
75     CHECK_A(5,1);
76     CHECK_A(5,2);
77     CHECK_A(5,3);
78     CHECK_A(5,4);
79     CHECK_A(5,5);
80     CHECK_A(5,6);
81     CHECK_A(5,7);
82     CHECK_A(5,8);
83     CHECK_A(5,9);
84     CHECK_A(6,0);
85     CHECK_A(6,1);
86     CHECK_A(6,2);
87     CHECK_A(6,3);
88     CHECK_A(6,4);
89     CHECK_A(6,5);
90     CHECK_A(6,6);
91     CHECK_A(6,7);
92     CHECK_A(6,8);
93     CHECK_A(6,9);
94     CHECK_A(7,0);
95     CHECK_A(7,1);
96     CHECK_A(7,2);
97     CHECK_A(7,3);
98     CHECK_A(7,4);
99     CHECK_A(7,5);
100     CHECK_A(7,6);
101     CHECK_A(7,7);
102     CHECK_A(7,8);
103     CHECK_A(7,9);
104     CHECK_A(8,0);
105     CHECK_A(8,1);
106     CHECK_A(8,2);
107     CHECK_A(8,3);
108     CHECK_A(8,4);
109     CHECK_A(8,5);
110     CHECK_A(8,6);
111     CHECK_A(8,7);
112     CHECK_A(8,8);
113     CHECK_A(8,9);
114     CHECK_A(9,0);
115     CHECK_A(9,1);
116     CHECK_A(9,2);
117     CHECK_A(9,3);
118     CHECK_A(9,4);
119     CHECK_A(9,5);
120     CHECK_A(9,6);
121     CHECK_A(9,7);
122     CHECK_A(9,8);
123     CHECK_A(9,9);
124 #undef CHECK_A
125     return boost::report_errors();
126     }
127