libpsynth 0.2.1
Functions
static_transform

Equivalent to std::transform. More...

Functions

template<typename Src , typename Dst , typename Op >
PSYNTH_FORCEINLINE Op psynth::sound::static_transform (Src &src, Dst &dst, Op op)
template<typename Src , typename Dst , typename Op >
PSYNTH_FORCEINLINE Op psynth::sound::static_transform (const Src &src, Dst &dst, Op op)
template<typename P2 , typename P3 , typename Dst , typename Op >
PSYNTH_FORCEINLINE Op psynth::sound::static_transform (P2 &p2, P3 &p3, Dst &dst, Op op)
template<typename P2 , typename P3 , typename Dst , typename Op >
PSYNTH_FORCEINLINE Op psynth::sound::static_transform (P2 &p2, const P3 &p3, Dst &dst, Op op)
template<typename P2 , typename P3 , typename Dst , typename Op >
PSYNTH_FORCEINLINE Op psynth::sound::static_transform (const P2 &p2, P3 &p3, Dst &dst, Op op)
template<typename P2 , typename P3 , typename Dst , typename Op >
PSYNTH_FORCEINLINE Op psynth::sound::static_transform (const P2 &p2, const P3 &p3, Dst &dst, Op op)

Detailed Description

Equivalent to std::transform.

Pairs the elements semanticall

Example: Write a generic function that adds two frames into a homogeneous result frame.

   template <typename Result>
   struct my_plus {
      template <typename T1, typename T2>
      Result operator()(T1 f1, T2 f2) const { return f1+f2; }
   };

   template <typename Frame1, typename Frame2, typename Frame3>
   void sum_samples(const Frame1& p1, const Frame2& p2, Frame3& result) {
       typedef typename sample_type<Frame3>::type result_sample_t;
       static_transform(p1,p2,result,my_plus<result_sample_t>());
   }

   rgb8_frame_t p1(1,2,3);
   bgr8_frame_t p2(3,2,1);
   rgb8_frame_t result;
   sum_samples(p1,p2,result);
   assert(result == rgb8_frame_t(2,4,6));

Function Documentation

template<typename Src , typename Dst , typename Op >
PSYNTH_FORCEINLINE Op psynth::sound::static_transform ( Src &  src,
Dst &  dst,
Op  op 
)
template<typename P2 , typename P3 , typename Dst , typename Op >
PSYNTH_FORCEINLINE Op psynth::sound::static_transform ( const P2 &  p2,
const P3 &  p3,
Dst &  dst,
Op  op 
)
template<typename P2 , typename P3 , typename Dst , typename Op >
PSYNTH_FORCEINLINE Op psynth::sound::static_transform ( const P2 &  p2,
P3 &  p3,
Dst &  dst,
Op  op 
)
template<typename P2 , typename P3 , typename Dst , typename Op >
PSYNTH_FORCEINLINE Op psynth::sound::static_transform ( P2 &  p2,
const P3 &  p3,
Dst &  dst,
Op  op 
)
template<typename P2 , typename P3 , typename Dst , typename Op >
PSYNTH_FORCEINLINE Op psynth::sound::static_transform ( P2 &  p2,
P3 &  p3,
Dst &  dst,
Op  op 
)
template<typename Src , typename Dst , typename Op >
PSYNTH_FORCEINLINE Op psynth::sound::static_transform ( const Src &  src,
Dst &  dst,
Op  op 
)