LeechCraft  0.6.70-18450-gabe19ee3b0
Modular cross-platform feature rich live environment.
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 
15 namespace 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 
std::shared_ptr< QtException_t > QtException_ptr
requires requires(Args &&... args)
Constructs the exception object with the given args.
const char * what() const noexcept override
Overrides base pure virtual.
A concurrent exception that plays nicely with Qt.
ConcurrentException()=default
Default-constructs the exception object.
Q_DECLARE_METATYPE(QVariantList *)
auto Tup2 &&tup2 noexcept
Definition: ctstringutils.h:68
QException QtException_t
ConcurrentException< T > * clone() const override
Constructs a copy of this object.