////////////////////////////////////////////////////////////////////////////
// LockHlpクラスのインプリメンテーション
// CTaEditDoc クラスのロックを行うためのヘルパー
////////////////////////////////////////////////////////////////////////////

#if !defined( TAGLOCKHLP_H_INCLUDED_ )
#define TAGLOCKHLP_H_INCLUDED_

#include "TaEditDoc.h"

// 占有ロック
class LockHlp_Occupation
{
public:
	// ドキュメントをロックする
	LockHlp_Occupation( const CTaEditDoc *p ) : pDoc( p )
	{
		id = p->GetOccupationID();
	};

	// ロックに成功していた場合は、ロックを解除する
	virtual ~LockHlp_Occupation()
	{
		if ( 0 != id ) pDoc->Unlock( id );
	};

	LOCK_ID GetID() const
	{
		return id;
	};

	bool IsFailt() const
	{
		return ( 0 == id );
	};

protected:
	const CTaEditDoc *pDoc;
	LOCK_ID id;
};

// 共有ロック
class LockHlp_Share
{
public:
	// ドキュメントに共有ロックをかける
	LockHlp_Share( const CTaEditDoc *p ) : pDoc( p )
	{
		id = p->GetShareID();
	};

	// ロックを解除する
	virtual ~LockHlp_Share(){
		if ( 0 != id ) pDoc->Unlock( id );
	};

	LOCK_ID GetID() const
	{
		return id;
	};

	bool IsFailt() const
	{
		return ( 0 == id );
	};
protected:
	const CTaEditDoc *pDoc;
	LOCK_ID id;
};


#endif // TAGLOCKHLP_H_INCLUDED_

