Skip to content

File var.h

File List > container > var.h

Go to the documentation of this file

#pragma once
//#include <muda/tools/version.h>
//#include <vector>
//#include <thrust/device_allocator.h>
//
//#include <thrust/detail/raw_pointer_cast.h>
//#include <thrust/fill.h>
//#include <thrust/copy.h>
//#include <muda/muda_def.h>
//#include <muda/buffer/var_view.h>
//#include <muda/viewer/dense.h>
//
//namespace muda
//{
//namespace details
//{
//    template <typename T, typename Allocator>
//    class VarBase
//    {
//      public:
//        //using T = int;
//        //using Allocator = thrust::device_allocator<int>;
//        using pointer       = typename Allocator::pointer;
//        using const_pointer = typename Allocator::const_pointer;
//
//        VarBase() MUDA_NOEXCEPT : m_data(Allocator().allocate(1)) {}
//
//        VarBase(const T& value) MUDA_NOEXCEPT : m_data(Allocator().allocate(1))
//        {
//            this->operator=(value);
//        }
//
//        ~VarBase() MUDA_NOEXCEPT { Allocator().deallocate(m_data, 1); }
//
//        pointer       data() { return m_data; }
//        const_pointer data() const { return m_data; }
//
//        // copy value from host to device
//        VarBase& operator=(const T& rhs)
//        {
//            thrust::fill_n(data(), 1, rhs);
//            return *this;
//        }
//
//        // copy value from device to host
//        operator T()
//        {
//            T t;
//            thrust::copy_n(data(), 1, &t);
//            return t;
//        }
//
//      private:
//        pointer m_data;
//    };
//}  // namespace details
//
//template <typename T>
//class DeviceVar : public details::VarBase<T, thrust::device_allocator<T>>
//{
//  public:
//    using Base = details::VarBase<T, thrust::device_allocator<T>>;
//    using Base::Base;
//    using Base::operator=;
//
//    const T* data() const { return thrust::raw_pointer_cast(Base::data()); }
//    T*       data() { return thrust::raw_pointer_cast(Base::data()); }
//
//    DeviceVar& operator=(DeviceVar<T> other)
//    {
//        view().copy_from(other.view());
//        return *this;
//    }
//
//    DeviceVar& operator=(VarView other)
//    {
//        view().copy_from(other);
//        return *this;
//    }
//
//    auto viewer() { return Dense<T>(this->data()); }
//    auto cviewer() const { return CDense<T>(this->data()); }
//    auto view() const { return VarView<T>{m_data}; }
//    operator VarView<T>() { return view(); }
//};
//}  // namespace muda

#include <muda/buffer/device_var.h>