#ifndef CRASHREPORTSERVICES_H__
#define CRASHREPORTSERVICES_H__

#include "maxon/interface.h"

namespace maxon
{

class CrashReportServices
{
	friend class CrashReportProperty;

	MAXON_INTERFACE_NONVIRTUAL(CrashReportServices, MAXON_REFERENCE_STATIC, "net.maxon.interface.crashreportservices");
private:
	//----------------------------------------------------------------------------------------
	/// Creates a property that will appear in a crash log.
	/// @param[in] name								Crash property name.
	/// @param[in] value							Crash property value.
	/// @return												Crash property index (required to remove the property one the code block is left).
	//----------------------------------------------------------------------------------------
	static MAXON_METHOD Int32 CreateCrashReportProperty(const Char* name, const Char* value);

	//----------------------------------------------------------------------------------------
	/// Removes a crash property (usually called when a code block is left).
	/// @param[in] propertyIdx				Crash property index returned by CreateCrashProperty.
	//----------------------------------------------------------------------------------------
	static MAXON_METHOD void FreeCrashReportProperty(Int32 propertyIdx);

	//----------------------------------------------------------------------------------------
	/// Returns a pointer to an array with crash properties (used by the crash report).
	/// @param[in] osThread						OS specific thread identifier.
	/// @return												Pointer to an array with crash properties.
	//----------------------------------------------------------------------------------------
	static MAXON_METHOD void* GetCrashReportProperties(void* osThread);
};

// include autogenerated headerfile here
#include "crashreportservices1.hxx"
// include autogenerated headerfile here
#include "crashreportservices2.hxx"

} // namespace maxon

#endif // CRASHREPORTSERVICES_H__
