コード例 #1
0
ファイル: traits.hpp プロジェクト: fsheikh/openvsip
  static ptr_type offset(ptr_type ptr, index_type i)
  {
    switch (ptr.format())
    {
      case array: return ptr_type(ptr.template as<array>() + i);
      case interleaved_complex:
	return ptr_type(ptr.template as<interleaved_complex>() + 2*i);
      case split_complex:
      {
	std::pair<T*,T*> p = ptr.template as<split_complex>();
	return ptr_type(p.first + i, p.second + i);
      }
      default: assert(0);
    }
  }
コード例 #2
0
ファイル: traits.hpp プロジェクト: fsheikh/openvsip
  static void put(ptr_type ptr, index_type i, value_type v)
  {
    switch (ptr.format())
    {
      case array:
	*ptr.template as<array>() = v;
	break;
      case interleaved_complex:
	*reinterpret_cast<value_type*>(ptr.template as<interleaved_complex>()) = v;
	break;
      case split_complex:
      {
	std::pair<T const*,T const*> p = ptr.template as<split_complex>();
	p.first = v.real();
	p.second = v.imag();
	break;
      }
      default: assert(0);
    }
  }