LeechCraft 0.6.70-17335-ge406ffdcaf
Modular cross-platform feature rich live environment.
Loading...
Searching...
No Matches
concurrentexception.h
Go to the documentation of this file.
1/**********************************************************************
2 * LeechCraft - modular cross-platform feature rich internet client.
3 * Copyright (C) 2006-2014 Georg Rudoy
4 *
5 * Distributed under the Boost Software License, Version 1.0.
6 * (See accompanying file LICENSE or copy at https://www.boost.org/LICENSE_1_0.txt)
7 **********************************************************************/
8
9#pragma once
10
11#include <memory>
12#include <QFuture>
13#include <util/sll/newtype.h>
14
15namespace LC::Util
16{
17 using QtException_t = QException;
18
19 using QtException_ptr = std::shared_ptr<QtException_t>;
20
29 template<typename T>
31 , public T
32 {
33 public:
36 ConcurrentException () = default;
37
46 template<typename... Args>
47 requires requires (Args&&... args) { T { std::forward<Args> (args)... }; }
48 explicit ConcurrentException (Args&&... args)
49 : T { std::forward<Args> (args)... }
50 {
51 }
52
57 void raise () const override
58 {
59 throw ConcurrentException<T> { *this };
60 }
61
66 ConcurrentException<T>* clone () const override
67 {
68 return new ConcurrentException<T> { *this };
69 }
70
75 const char* what () const noexcept override
76 {
77 return T::what ();
78 }
79 };
80
82}
83
A concurrent exception that plays nicely with Qt.
ConcurrentException< T > * clone() const override
Constructs a copy of this object.
ConcurrentException()=default
Default-constructs the exception object.
const char * what() const noexcept override
Overrides base pure virtual.
void raise() const override
Rethrows an exception of exactly this type and state.
ConcurrentException(Args &&... args)
Constructs the exception object with the given args.
std::shared_ptr< QtException_t > QtException_ptr
QException QtException_t
Util::ConcurrentException< Util::NewType< std::exception, struct StdException > > ConcurrentStdException
Q_DECLARE_METATYPE(QVariantList *)