Skip to content

Commit 2bdb769

Browse files
committed
cxx-qt-lib: use Qt's public logging API
1 parent 0ba210f commit 2bdb769

File tree

6 files changed

+211
-196
lines changed

6 files changed

+211
-196
lines changed

crates/cxx-qt-lib/include/core/qtlogging.h

Lines changed: 17 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -2,38 +2,31 @@
22
// SPDX-FileCopyrightText: 2025 Klarälvdalens Datakonsult AB, a KDAB Group company <[email protected]>
33
// clang-format on
44
// SPDX-FileContributor: Joshua Goins <[email protected]>
5+
// SPDX-FileContributor: Joshua Booth <[email protected]>
56
//
67
// SPDX-License-Identifier: MIT OR Apache-2.0
78
#pragma once
89

9-
#include "rust/cxx.h"
10-
#include <QDebug>
11-
#include <QtCore/qlogging.h>
12-
13-
QMessageLogContext
14-
construct_qmessagelogcontext(const char* fileName,
15-
int lineNumber,
16-
const char* functionName,
17-
const char* categoryName);
18-
19-
int
20-
qmessagelogcontext_line(const QMessageLogContext& context);
21-
22-
const char*
23-
qmessagelogcontext_file(const QMessageLogContext& context);
24-
25-
const char*
26-
qmessagelogcontext_function(const QMessageLogContext& context);
27-
28-
const char*
29-
qmessagelogcontext_category(const QMessageLogContext& context);
10+
#include <QtCore/QString>
3011

3112
// Define namespace otherwise we hit a GCC bug
3213
// https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56480
3314
namespace rust {
15+
namespace cxxqtlib1 {
16+
void
17+
q_debug(const char* fileName, int lineNumber, const QString& message);
18+
19+
void
20+
q_info(const char* fileName, int lineNumber, const QString& message);
21+
22+
void
23+
q_warning(const char* fileName, int lineNumber, const QString& message);
24+
25+
void
26+
q_critical(const char* fileName, int lineNumber, const QString& message);
3427

35-
template<>
36-
struct IsRelocatable<QMessageLogContext> : ::std::true_type
37-
{};
28+
void
29+
q_fatal(const char* fileName, int lineNumber, const QString& message);
3830

31+
}
3932
} // namespace rust

crates/cxx-qt-lib/src/core/mod.rs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -118,9 +118,7 @@ mod qvector;
118118
pub use qvector::{QVector, QVectorElement};
119119

120120
mod qtlogging;
121-
pub use qtlogging::{
122-
q_format_log_message, q_set_message_pattern, qt_message_output, QMessageLogContext, QtMsgType,
123-
};
121+
pub use qtlogging::{q_critical, q_debug, q_fatal, q_info, q_set_message_pattern, q_warning};
124122

125123
#[cxx::bridge]
126124
mod ffi {

crates/cxx-qt-lib/src/core/qtlogging.cpp

Lines changed: 36 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -2,56 +2,57 @@
22
// SPDX-FileCopyrightText: 2025 Klarälvdalens Datakonsult AB, a KDAB Group company <[email protected]>
33
// clang-format on
44
// SPDX-FileContributor: Joshua Goins <[email protected]>
5+
// SPDX-FileContributor: Joshua Booth <[email protected]>
56
//
67
// SPDX-License-Identifier: MIT OR Apache-2.0
78
#include "cxx-qt-lib/qtlogging.h"
89

9-
#include <cxx-qt-lib/assertion_utils.h>
10-
11-
// QMessageLogContext has three "const char*" members for line, category, etc
12-
// https://codebrowser.dev/qt5/qtbase/src/corelib/global/qlogging.h.html#QMessageLogContext
13-
assert_alignment_and_size(QMessageLogContext, {
14-
int version;
15-
int line;
16-
const char* file;
17-
const char* function;
18-
const char* category;
19-
});
20-
21-
static_assert(!::std::is_trivially_copy_assignable<QMessageLogContext>::value);
22-
static_assert(
23-
!::std::is_trivially_copy_constructible<QMessageLogContext>::value);
24-
static_assert(::std::is_trivially_destructible<QMessageLogContext>::value);
25-
26-
QMessageLogContext
27-
construct_qmessagelogcontext(const char* fileName,
28-
int lineNumber,
29-
const char* functionName,
30-
const char* categoryName)
10+
#include <QtCore/qlogging.h>
11+
12+
namespace rust {
13+
namespace cxxqtlib1 {
14+
15+
inline void
16+
log(QtMsgType type,
17+
const char* fileName,
18+
int lineNumber,
19+
const QString& message)
20+
{
21+
qt_message_output(
22+
type,
23+
QMessageLogContext(fileName, lineNumber, nullptr, "default"),
24+
message);
25+
}
26+
27+
void
28+
q_debug(const char* fileName, int lineNumber, const QString& message)
3129
{
32-
return QMessageLogContext(fileName, lineNumber, functionName, categoryName);
30+
log(QtMsgType::QtDebugMsg, fileName, lineNumber, message);
3331
}
3432

35-
int
36-
qmessagelogcontext_line(const QMessageLogContext& context)
33+
void
34+
q_info(const char* fileName, int lineNumber, const QString& message)
3735
{
38-
return context.line;
36+
log(QtMsgType::QtInfoMsg, fileName, lineNumber, message);
3937
}
4038

41-
const char*
42-
qmessagelogcontext_file(const QMessageLogContext& context)
39+
void
40+
q_warning(const char* fileName, int lineNumber, const QString& message)
4341
{
44-
return context.file;
42+
log(QtMsgType::QtWarningMsg, fileName, lineNumber, message);
4543
}
4644

47-
const char*
48-
qmessagelogcontext_function(const QMessageLogContext& context)
45+
void
46+
q_critical(const char* fileName, int lineNumber, const QString& message)
4947
{
50-
return context.function;
48+
log(QtMsgType::QtCriticalMsg, fileName, lineNumber, message);
5149
}
5250

53-
const char*
54-
qmessagelogcontext_category(const QMessageLogContext& context)
51+
void
52+
q_fatal(const char* fileName, int lineNumber, const QString& message)
5553
{
56-
return context.category;
54+
log(QtMsgType::QtFatalMsg, fileName, lineNumber, message);
55+
}
56+
57+
}
5758
}

0 commit comments

Comments
 (0)