/********************************************************************/
/* Copyright (c) 2019 System fugen G.K. and Yuzi Mizuno          */
/* All rights reserved.                                             */
/********************************************************************/
/********************************************************************/
// GLCrashHandler.h
#pragma once

/// @class CGLCrashHandler Misc/CGLCrashHandler
/// Win32 アプリでよくやる「落ちたときにクラッシュレポートを送る」機能を実装するクラス。
class CGLCrashHandler
{
	LPTOP_LEVEL_EXCEPTION_FILTER m_pfnHandler;

public:
	/// The default constructor.
	///
	/// Save the default unhandled exception handler.
	CGLCrashHandler();

	/// The destructor.
	///
	/// Restore the unhandled exception handler.
	~CGLCrashHandler();

private:
	static LONG WINAPI CustomUnhandledExceptionFilter(PEXCEPTION_POINTERS pExceptionPointers);

	// Copy constructor and assignment operator must be disabled.

	CGLCrashHandler(const CGLCrashHandler& other);
	CGLCrashHandler& operator=(const CGLCrashHandler& other);
};
