#ifndef __CL_MEMORY_CLASS_H__
#define __CL_MEMORY_CLASS_H__

#ifdef __APPLE__
#include <OpenCL/opencl.h>
#else
#include <CL/cl.h>
#endif //__APPLE__
#include <vector>
#include <sstream>
#include "clErrorClass.h"

//! OpenCLのメモリを扱うクラス.
/*!  */
class clMemoryClass
{
private:
    std::vector<cl_mem>         memory;         //!< メモリオブジェクトの可変長配列
    std::vector<std::string>    memory_name;    //!< メモリオブジェクトの可変長配列
protected:
public:

//関数とか
private:
protected:
public:
    clMemoryClass();                // 変数の初期化など
    ~clMemoryClass();

    void            createMemory(cl_context context, cl_mem_flags flag, size_t memroy_size, void *mem_pointer,std::string mem_name) throw(clErrorClass);
    cl_mem          *getMemory(unsigned int index);
	cl_mem          *getMemory(std::string name) throw(clErrorClass);
	unsigned int    getMemoryIndex(std::string name) throw(clErrorClass);

};
#endif //__CL_MEMORY_CLASS_H__
