LeechCraft 0.6.70-19214-g121e5318a7
Modular cross-platform feature rich live environment.
Loading...
Searching...
No Matches
qobjectrefcast.cpp
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#include "qobjectrefcast.h"
10#include "logging.h"
11#include "demangle.h"
12
13namespace LC::Util::detail
14{
15 [[noreturn, gnu::cold, gnu::noinline]]
16 void NotifyCastError (const QObject *object, const char *target, const std::source_location& loc)
17 {
18 LogAt (loc).critical ("unable to cast %s to %s",
19 object ? object->metaObject ()->className () : "nullptr",
20 Demangle (target).toLatin1 ().constData ());
21
22 using namespace std::string_literals;
23 throw BadQObjectCast { "qobject_ref_cast failed at "s + loc.file_name () + ':' + std::to_string (loc.line ()) };
24 }
25}
void NotifyCastError(const QObject *object, const char *target, const std::source_location &loc)
QMessageLogger LogAt(std::source_location loc)
Definition logging.cpp:14
QString Demangle(const char *name)
Returns a human-readable form of a mangled symbol name.
Definition demangle.cpp:20