#pragma once

//! @file Mix/Graphics/IQuery.h
//! @brief クエリインターフェースインクルードファイル

#include "Mix/Graphics/IDeviceObject.h"

namespace Mix{ namespace Graphics{

	//! @class IQuery
	//! @brief クエリインターフェース
	class IQuery : public Mix::Graphics::IDeviceObject
	{
	protected:
		//! @brief デストラクタ
		virtual ~IQuery( void ){}

	public:
		//! @brief 開始を通知します
		virtual void Begin( void ) = 0;
		//! @brief 終了を通知します
		virtual void End( void ) = 0;

		//! @brief データを取得します
		//! @param[out] data 取得したデータの格納先
		//! @param[in] bFlush データ取得の問い合わせをフラッシュする場合は True
		//! @return 成功した場合は True を返します
		virtual Boolean GetData( UInt32& data, Boolean bFlush = True ) const = 0;

		//! @brief フォーマットを取得します
		//! @return フォーマットを表す Mix::Graphics::QUERY_FORMAT 列挙定数を返します
		virtual Mix::Graphics::QUERY_FORMAT GetFormat( void ) const = 0;
	};

}}
