00001 #ifndef Impala_Core_Array_Trait_InOutSetVal_h 00002 #define Impala_Core_Array_Trait_InOutSetVal_h 00003 00004 #include "Core/Array/Pattern/Categories.h" 00005 00006 namespace Impala 00007 { 00008 namespace Core 00009 { 00010 namespace Array 00011 { 00012 namespace Trait 00013 { 00014 00015 00016 template<class ArrayT> 00017 class InOutSetVal 00018 { 00019 public: 00020 typedef Pattern::TagPixOpIn DirectionCategory; 00021 typedef Pattern::TagTransInVar TransVarianceCategory; 00022 typedef Pattern::Tag1Phase PhaseCategory; 00023 00024 typedef typename ArrayT::ArithType ArithT; 00025 00026 InOutSetVal(ArithT val) 00027 { 00028 mValue = val; 00029 } 00030 00031 const ArithT& 00032 DoIt() 00033 { 00034 return mValue; 00035 } 00036 00037 private: 00038 00039 ArithT mValue; 00040 }; 00041 00042 } // namespace Trait 00043 } // namespace Array 00044 } // namespace Core 00045 } // namespace Impala 00046 00047 #endif