kDB: Knowledge DataBase
Loading...
Searching...
No Matches
Error.h
1#include <QtQml>
2
3#include <clog_qt>
4#include <cres_qt>
5
6namespace knowCore::Quick
7{
8 QQmlEngine* getEngine(const QObject* _object)
9 {
10 QQmlEngine* e = qmlEngine(_object);
11 if(e)
12 return e;
13 if(_object->parent())
14 return getEngine(_object->parent());
15 return nullptr;
16 }
17
18 template<typename... _Args>
19 void throwError(const QObject* _object, std::format_string<_Args...> __fmt, _Args&&... __args)
20 {
21 QString msg
22 = QString::fromStdString(std::vformat(__fmt.get(), std::make_format_args(__args...)));
23 QQmlEngine* e = getEngine(_object);
24 if(e)
25 {
26 e->throwError(msg);
27 }
28 else
29 {
30 clog_error("Failed to throw error: {}", msg);
31 }
32 }
33
34 template<typename _T_>
35 bool handleError(const QObject* _object, const cres_qresult<_T_>& _t)
36 {
37 if(_t.is_successful())
38 {
39 return true;
40 }
41 else
42 {
43 throwError(_object, "{}", _t.get_error());
44 return false;
45 }
46 }
47
48} // namespace knowCore::Quick