00001 #ifndef Impala_Core_Array_MakeFromValue_h
00002 #define Impala_Core_Array_MakeFromValue_h
00003
00004 #include "Core/Array/Trait/InOutSetVal.h"
00005 #include "Core/Array/Pattern/PatInOutOp.h"
00006 #include "Core/Array/Array2dTem.h"
00007
00008 namespace Impala
00009 {
00010 namespace Core
00011 {
00012 namespace Array
00013 {
00014
00015
00016 template<class ArrayT>
00017 inline ArrayT*
00018 MakeFromValue(typename ArrayT::ArithType value, int cw, int ch, int bw = 0,
00019 int bh = 0)
00020 {
00021 ArrayT* dst = ArrayCreate<ArrayT>(cw, ch, bw, bh);
00022 Trait::InOutSetVal<ArrayT> inout(value);
00023 Pattern::PatInOutOp(dst, inout);
00024 return dst;
00025 }
00026
00027 template<class ArrayT>
00028 inline void
00029 MakeFromValue2(ArrayT*& dst, typename ArrayT::ArithType value)
00030 {
00031 Trait::InOutSetVal<ArrayT> inout(value);
00032 Pattern::PatInOutOp(dst, inout);
00033 }
00034
00035 }
00036 }
00037 }
00038
00039 #endif