1 //
2 // Copyright (c) 2009 Rutger ter Borg
3 //
4 // Distributed under the Boost Software License, Version 1.0.
5 // (See accompanying file LICENSE_1_0.txt or copy at
6 // http://www.boost.org/LICENSE_1_0.txt)
7 //
8 
9 #ifndef BOOST_NUMERIC_BINDINGS_BLAS_DETAIL_BLAS_OPTION_HPP
10 #define BOOST_NUMERIC_BINDINGS_BLAS_DETAIL_BLAS_OPTION_HPP
11 
12 #include <boost/mpl/char.hpp>
13 #include <boost/numeric/bindings/tag.hpp>
14 
15 namespace boost {
16 namespace numeric {
17 namespace bindings {
18 namespace blas {
19 namespace detail {
20 
21 template< typename Tag >
22 struct blas_option {};
23 
24 template<>
25 struct blas_option< tag::transpose >: mpl::char_< 'T' > {};
26 
27 template<>
28 struct blas_option< tag::no_transpose >: mpl::char_< 'N' > {};
29 
30 template<>
31 struct blas_option< tag::conjugate >: mpl::char_< 'C' > {};
32 
33 template<>
34 struct blas_option< tag::upper >: mpl::char_< 'U' > {};
35 
36 template<>
37 struct blas_option< tag::lower >: mpl::char_< 'L' > {};
38 
39 template<>
40 struct blas_option< tag::unit >: mpl::char_< 'U' > {};
41 
42 template<>
43 struct blas_option< tag::non_unit >: mpl::char_< 'N' > {};
44 
45 template<>
46 struct blas_option< tag::left >: mpl::char_< 'L' > {};
47 
48 template<>
49 struct blas_option< tag::right >: mpl::char_< 'R' > {};
50 
51 } // namespace detail
52 } // namespace blas
53 } // namespace bindings
54 } // namespace numeric
55 } // namespace boost
56 
57 #endif
58