/usr/include/rheolef/undeterminated.h is in librheolef-dev 6.7-6.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 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 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | # ifndef _RHEO_UNDETERMINATED_H
# define _RHEO_UNDETERMINATED_H
///
/// This file is part of Rheolef.
///
/// Copyright (C) 2000-2009 Pierre Saramito <Pierre.Saramito@imag.fr>
///
/// Rheolef is free software; you can redistribute it and/or modify
/// it under the terms of the GNU General Public License as published by
/// the Free Software Foundation; either version 2 of the License, or
/// (at your option) any later version.
///
/// Rheolef is distributed in the hope that it will be useful,
/// but WITHOUT ANY WARRANTY; without even the implied warranty of
/// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
/// GNU General Public License for more details.
///
/// You should have received a copy of the GNU General Public License
/// along with Rheolef; if not, write to the Free Software
/// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
///
/// =========================================================================
#include "rheolef/point.h"
#include "rheolef/tensor.h"
#include "rheolef/tensor3.h"
#include "rheolef/tensor4.h"
#include "rheolef/promote.h"
namespace rheolef {
/// @brief helper for generic field value_type: T, point_basic<T> or tensor_basic<T>
template<class T>
struct undeterminated_basic {
typedef T scalar_type;
typedef T float_type;
};
template<class T> struct scalar_traits<undeterminated_basic<T> > { typedef T type; };
template<class T> struct float_traits<undeterminated_basic<T> > { typedef typename float_traits<T>::type type; };
template<class T> struct is_undeterminated : std::false_type {};
template<class T> struct is_undeterminated<undeterminated_basic<T> > : std::true_type {};
// promote: used to eliminate undeterminated_basic from generic expressions
template<class T1, class T2>
struct promote<undeterminated_basic<T1>, undeterminated_basic<T2> > {
typedef undeterminated_basic<typename promote<T1,T2>::type> type;
};
// scalar:
template<class T1, class T2>
struct promote<T1, undeterminated_basic<T2> > {
typedef typename promote<T1,T2>::type type;
};
template<class T1, class T2>
struct promote<undeterminated_basic<T1>, T2 > {
typedef typename promote<T1,T2>::type type;
};
#define _RHEOLEF_tensor_promote(tensor) \
template<class T1, class T2> \
struct promote<tensor##_basic<T1>, undeterminated_basic<T2> > { \
typedef tensor##_basic<typename promote<T1,T2>::type> type; \
}; \
template<class T1, class T2> \
struct promote<undeterminated_basic<T1>, tensor##_basic<T2> > { \
typedef tensor##_basic<typename promote<T1,T2>::type> type; \
}; \
template<class T1, class T2> \
struct promote<tensor##_basic<T1>, tensor##_basic<T2> > { \
typedef tensor##_basic<typename promote<T1,T2>::type> type; \
};
_RHEOLEF_tensor_promote(point)
_RHEOLEF_tensor_promote(tensor)
_RHEOLEF_tensor_promote(tensor3)
_RHEOLEF_tensor_promote(tensor4)
#undef _RHEOLEF_tensor_promote
} // namespace rheolef
#endif // _RHEO_UNDETERMINATED_H
|