59 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
/*
 | 
						|
This file is part of Telegram Desktop,
 | 
						|
the official desktop application for the Telegram messaging service.
 | 
						|
 | 
						|
For license and copyright information please follow this link:
 | 
						|
https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
 | 
						|
*/
 | 
						|
#pragma once
 | 
						|
 | 
						|
namespace Core {
 | 
						|
class Launcher;
 | 
						|
} // namespace Core
 | 
						|
 | 
						|
namespace CrashReports {
 | 
						|
 | 
						|
QString PlatformString();
 | 
						|
 | 
						|
#ifndef DESKTOP_APP_DISABLE_CRASH_REPORTS
 | 
						|
 | 
						|
struct dump {
 | 
						|
	~dump();
 | 
						|
};
 | 
						|
const dump &operator<<(const dump &stream, const char *str);
 | 
						|
const dump &operator<<(const dump &stream, const wchar_t *str);
 | 
						|
const dump &operator<<(const dump &stream, int num);
 | 
						|
const dump &operator<<(const dump &stream, unsigned int num);
 | 
						|
const dump &operator<<(const dump &stream, unsigned long num);
 | 
						|
const dump &operator<<(const dump &stream, unsigned long long num);
 | 
						|
const dump &operator<<(const dump &stream, double num);
 | 
						|
 | 
						|
#endif // DESKTOP_APP_DISABLE_CRASH_REPORTS
 | 
						|
 | 
						|
enum Status {
 | 
						|
	CantOpen,
 | 
						|
	Started
 | 
						|
};
 | 
						|
// Open status or crash report dump.
 | 
						|
using StartResult = base::variant<Status, QByteArray>;
 | 
						|
StartResult Start();
 | 
						|
Status Restart(); // can be only CantOpen or Started
 | 
						|
void Finish();
 | 
						|
 | 
						|
void SetAnnotation(const std::string &key, const QString &value);
 | 
						|
void SetAnnotationHex(const std::string &key, const QString &value);
 | 
						|
inline void ClearAnnotation(const std::string &key) {
 | 
						|
	SetAnnotation(key, QString());
 | 
						|
}
 | 
						|
 | 
						|
// Remembers value pointer and tries to add the value to the crash report.
 | 
						|
// Attention! You should call clearCrashAnnotationRef(key) before destroying value.
 | 
						|
void SetAnnotationRef(const std::string &key, const QString *valuePtr);
 | 
						|
inline void ClearAnnotationRef(const std::string &key) {
 | 
						|
	SetAnnotationRef(key, nullptr);
 | 
						|
}
 | 
						|
 | 
						|
void StartCatching(not_null<Core::Launcher*> launcher);
 | 
						|
void FinishCatching();
 | 
						|
 | 
						|
} // namespace CrashReports
 |