Skip to content
Snippets Groups Projects
memory-faucet.h 1.09 KiB
Newer Older
  • Learn to ignore specific revisions
  • 数学の武士's avatar
    .
    数学の武士 committed
    #pragma once
    
    数学の武士's avatar
    数学の武士 committed
    #include "mf-utils.h"
    
    数学の武士's avatar
    .  
    数学の武士 committed
    
    
    数学の武士's avatar
    数学の武士 committed
    template< MemType mem = MemType::CPU, buf_choose_policy choose_type = buf_choose_policy::naive >
    class memory_pipe
    
    数学の武士's avatar
    .
    数学の武士 committed
    {
    
    数学の武士's avatar
    数学の武士 committed
    private:
    
        std::vector<buffer > buff_vec;
    
    数学の武士's avatar
    .  
    数学の武士 committed
    public:
    
    数学の武士's avatar
    数学の武士 committed
        memory_pipe(/* args */);
        ~memory_pipe();
    
    数学の武士's avatar
    .  
    数学の武士 committed
        void set_available(const int id);
    
        std::vector<buffer >& get_buff_vec();
    
    数学の武士's avatar
    .
    数学の武士 committed
    };
    
    class memory_faucet
    {
    private:
    
    数学の武士's avatar
    .  
    数学の武士 committed
        memory_faucet() = delete;
    
    数学の武士's avatar
    .
    数学の武士 committed
        memory_faucet(const memory_faucet&) = delete;
        memory_faucet& operator=(const memory_faucet&) = delete;
    
    public:
    
    数学の武士's avatar
    .  
    数学の武士 committed
    
    
    数学の武士's avatar
    数学の武士 committed
        template< MemType mem = MemType::CPU, buf_choose_policy choose_type = buf_choose_policy::naive >
        static memory_pipe<mem, choose_type>& get_faucet();
    
    数学の武士's avatar
    .
    数学の武士 committed
    };
    
    
    数学の武士's avatar
    数学の武士 committed
    template< MemType mem = MemType::CPU, buf_choose_policy choose_type = buf_choose_policy::naive >
    
    数学の武士's avatar
    .
    数学の武士 committed
    class memBuf
    {
    private:
        void* buf;
        int id;
        size_t size;
    
    public:
        memBuf(const size_t required_size);
    
    数学の武士's avatar
    数学の武士 committed
        memBuf();
    
    数学の武士's avatar
    .
    数学の武士 committed
        ~memBuf();
    
    数学の武士's avatar
    .  
    数学の武士 committed
        void* ptr();
    
    数学の武士's avatar
    .  
    数学の武士 committed
        void** ptr();
    
    数学の武士's avatar
    .  
    数学の武士 committed
        const void* ptr() const;
    
    数学の武士's avatar
    数学の武士 committed
        void free_memory();
    
    数学の武士's avatar
    数学の武士 committed
        int get_size() const;
    
        int get_id() const;
    
    数学の武士's avatar
    数学の武士 committed
        void get_memory(const size_t required_size);
    
    数学の武士's avatar
    .
    数学の武士 committed
    };