// Copyright 2008 Dolphin Emulator Project
// Licensed under GPLv2+
// Refer to the license.txt file included.

#pragma once

#include "Common/CommonTypes.h"

struct ID3D10Blob;

namespace DX11
{

// use this class instead ID3D10Blob or ID3D11Blob whenever possible
class D3DBlob
{
public:
	// memory will be copied into an own buffer
	D3DBlob(unsigned int blob_size, const u8* init_data = nullptr);

	// d3dblob will be AddRef'd
	D3DBlob(ID3D10Blob* d3dblob);

	void AddRef();
	unsigned int Release();

	unsigned int Size() const;
	u8* Data();

private:
	~D3DBlob();

	unsigned int ref;
	unsigned int size;

	u8* data;
	ID3D10Blob* blob;
};

}  // namespace