1 /*
  2  *   Copyright (c) 2009, Michael Lehn
  3  *
  4  *   All rights reserved.
  5  *
  6  *   Redistribution and use in source and binary forms, with or without
  7  *   modification, are permitted provided that the following conditions
  8  *   are met:
  9  *
 10  *   1) Redistributions of source code must retain the above copyright
 11  *      notice, this list of conditions and the following disclaimer.
 12  *   2) Redistributions in binary form must reproduce the above copyright
 13  *      notice, this list of conditions and the following disclaimer in
 14  *      the documentation and/or other materials provided with the
 15  *      distribution.
 16  *   3) Neither the name of the FLENS development group nor the names of
 17  *      its contributors may be used to endorse or promote products derived
 18  *      from this software without specific prior written permission.
 19  *
 20  *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 21  *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 22  *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 23  *   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 24  *   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 25  *   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 26  *   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 27  *   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 28  *   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 29  *   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 30  *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 31  */
 32 
 33 #ifndef FLENS_DEBUG_AUX_BASENAME_TCC
 34 #define FLENS_DEBUG_AUX_BASENAME_TCC 1
 35 
 36 #include <flens/matrixtypes/matrixtypes.h>
 37 #include <flens/vectortypes/vectortypes.h>
 38 
 39 namespace flens { namespace verbose {
 40 
 41 template <typename T>
 42 std::string
 43 basename(const T &var)
 44 {
 45     if (typeId(var)==std::string("Scalar")) {
 46         return "alpha";
 47     }
 48     if (typeId(var)==std::string("CxxScalar")) {
 49         return "c";
 50     }
 51     return "??";
 52 }
 53 
 54 template <typename I>
 55 std::string
 56 basename(const Matrix<I> &)
 57 {
 58     return "M";
 59 }
 60 
 61 template <typename I>
 62 std::string
 63 basename(const GeneralMatrix<I> &)
 64 {
 65     return "GM";
 66 }
 67 
 68 template <typename FS>
 69 std::string
 70 basename(const GeMatrix<FS> &)
 71 {
 72     return "A";
 73 }
 74 
 75 template <typename FS>
 76 std::string
 77 basename(const HeMatrix<FS> &)
 78 {
 79     return "H";
 80 }
 81 
 82 template <typename FS>
 83 std::string
 84 basename(const SyMatrix<FS> &)
 85 {
 86     return "S";
 87 }
 88 
 89 template <typename FS>
 90 std::string
 91 basename(const TrMatrix<FS> &)
 92 {
 93     return "T";
 94 }
 95 
 96 template <typename I>
 97 std::string
 98 basename(const Vector<I> &)
 99 {
100     return "v";
101 }
102 
103 template <typename A>
104 std::string
105 basename(const DenseVector<A> &)
106 {
107     return "x";
108 }
109 
110 } } // namespace verbose, namespace flens
111 
112 #endif // FLENS_DEBUG_AUX_BASENAME_TCC