28 #ifndef TYPE_COMPUTATIONS_H
29 #define TYPE_COMPUTATIONS_H
50 enum {
val = 666666 };
107 #if !defined(IPPL_USE_PARTIAL_SPECIALIZATION)
195 #if defined(IPPL_USE_PARTIAL_SPECIALIZATION)
197 template<
class T,
class Op,
int OpTag>
203 template<
class T,
class Op>
209 template<
class T,
class Op>
217 template<
int t,
int op>
224 template<
class T,
class Op>
276 #if defined(IPPL_USE_PARTIAL_SPECIALIZATION)
281 template<
class T1,
class T2,
class Op,
int op>
287 template<
class T1,
class T2,
class Op>
293 template<
class T1,
class T2,
class Op>
299 template<
class T1,
class T2,
bool lr>
300 struct PETE_ComputePromoteType
304 template<
class T1,
class T2>
305 struct PETE_ComputePromoteType<T1, T2, true>
310 template<
class T1,
class T2>
311 struct PETE_ComputePromoteType<T1, T2, false>
316 template<
class T1,
class T2,
int t1,
int t2>
317 struct PETE_ComputePromoteType2
320 PETE_ComputePromoteType<T1, T2, (t1 >= t2)>::
type type;
323 template<
class T1,
class T2,
class Op>
326 typedef typename PETE_ComputePromoteType2<T1, T2,
330 template<
class T1,
class T2,
class Op>
338 template<
int t1,
int t2,
int op>
343 (t1 >= t2 ? t1 : t2) :
348 template<
class T1,
class T2,
class Op>
375 #if defined(IPPL_USE_PARTIAL_SPECIALIZATION)
377 template<
class T1,
class T2,
class T3,
class Op>
385 template<
class T1,
class T2,
class T3,
class Op>
446 OpNot& operator=(
const OpNot &) {
return *
this; }
516 FnCos& operator=(
const FnCos &) {
return *
this; }
536 FnExp& operator=(
const FnExp &) {
return *
this; }
566 FnLog& operator=(
const FnLog &) {
return *
this; }
586 FnSin& operator=(
const FnSin &) {
return *
this; }
616 FnTan& operator=(
const FnTan &) {
return *
this; }
636 FnErf& operator=(
const FnErf &) {
return *
this; }
654 OpAdd& operator=(
const OpAdd &) {
return *
this; }
694 OpMod& operator=(
const OpMod &) {
return *
this; }
704 OpLT& operator=(
const OpLT &) {
return *
this; }
715 OpGT& operator=(
const OpGT &) {
return *
this; }
726 OpLE& operator=(
const OpLE &) {
return *
this; }
737 OpGE& operator=(
const OpGE &) {
return *
this; }
748 OpEQ& operator=(
const OpEQ &) {
return *
this; }
759 OpNE& operator=(
const OpNE &) {
return *
this; }
770 OpAnd& operator=(
const OpAnd &) {
return *
this; }
781 OpOr& operator=(
const OpOr &) {
return *
this; }
869 FnPow& operator=(
const FnPow &) {
return *
this; }
1035 #endif // TYPE_COMPUTATIONS_H
short short short short OpGE
short short short short short OpNE
const int PETE_BinaryUseLeftTag
const int PETE_BinaryPromoteTag
PETE_ComputeUnaryType< PETE_Type2Index< T >::val, Op::tag >::type type
const int PETE_BinaryUseRightTag
PETE_Index2Type<(op==PETE_UnaryPassThruTag?t:op)>::type type
PETE_ComputeBinaryType< PETE_Type2Index< T2 >::val, PETE_Type2Index< T3 >::val, Op::tag >::type type
const int PETE_UnaryPassThruTag
PETE_ComputeBinaryType< PETE_Type2Index< T1 >::val, PETE_Type2Index< T2 >::val, Op::tag >::type type
PETE_Index2Type<(op==PETE_BinaryPromoteTag?(t1 >=t2?t1:t2):(op==PETE_BinaryUseLeftTag?t1:(op==PETE_BinaryUseRightTag?t2:op)))>::type type