LeechCraft  0.6.70-18450-gabe19ee3b0
Modular cross-platform feature rich live environment.
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 
11 namespace LC::Util::detail
12 {
13  [[noreturn, gnu::cold, gnu::noinline]]
14  void NotifyCastError (const QObject *object, const char *target, const std::source_location& loc)
15  {
16  const QMessageLogger logger { loc.file_name (), static_cast<int> (loc.line ()), loc.function_name () };
17  logger.critical ("unable to cast %s to %s",
18  object ? object->metaObject ()->className () : "nullptr",
19  target);
20 
21  using namespace std::string_literals;
22  throw BadQObjectCast { "qobject_ref_cast failed at "s + loc.file_name () + ':' + std::to_string (loc.line ()) };
23  }
24 }
std::source_location loc
void NotifyCastError(const QObject *object, const char *target, const std::source_location &loc)