Skip to content

Commit

Permalink
cxx-qt-gen: use east const for getters and setters
Browse files Browse the repository at this point in the history
Otherwise when the T becomes a pointer the const can
be ambigious. Eg const T*& vs T* const&
  • Loading branch information
ahayzen-kdab committed Dec 19, 2022
1 parent c2385c9 commit 2c2be14
Show file tree
Hide file tree
Showing 16 changed files with 91 additions and 91 deletions.
4 changes: 2 additions & 2 deletions crates/cxx-qt-gen/src/generator/cpp/invokable.rs
Original file line number Diff line number Diff line change
Expand Up @@ -272,13 +272,13 @@ mod tests {
};
assert_str_eq!(
header,
"Q_INVOKABLE QColor opaqueInvokable(const QColor& param);"
"Q_INVOKABLE QColor opaqueInvokable(QColor const& param);"
);
assert_str_eq!(
source,
indoc! {r#"
QColor
MyObject::opaqueInvokable(const QColor& param)
MyObject::opaqueInvokable(QColor const& param)
{
const std::lock_guard<std::recursive_mutex> guard(*m_rustObjMutex);
return rust::cxxqtlib1::cxx_qt_convert<QColor, ::std::unique_ptr<QColor>>{}(m_rustObj->opaqueInvokableWrapper(*this, param));
Expand Down
6 changes: 3 additions & 3 deletions crates/cxx-qt-gen/src/generator/cpp/property/getter.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,17 +12,17 @@ use indoc::formatdoc;
pub fn generate(idents: &QPropertyName, qobject_ident: &str, cxx_ty: &CppType) -> CppFragment {
CppFragment::Pair {
header: format!(
"const {cxx_ty}& {ident_getter}() const;",
"{cxx_ty} const& {ident_getter}() const;",
cxx_ty = cxx_ty.as_cxx_ty(),
ident_getter = idents.getter.cpp
),
source: formatdoc!(
r#"
const {cxx_ty}&
{cxx_ty} const&
{qobject_ident}::{ident_getter}() const
{{
{rust_obj_guard}
return {convert}<const {cxx_ty}&, const {rust_ty}&>{{}}(m_rustObj->{ident_getter}(*this));
return {convert}<{cxx_ty} const&, {rust_ty} const&>{{}}(m_rustObj->{ident_getter}(*this));
}}
"#,
convert = CXX_QT_CONVERT,
Expand Down
36 changes: 18 additions & 18 deletions crates/cxx-qt-gen/src/generator/cpp/property/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -85,15 +85,15 @@ mod tests {
} else {
panic!("Expected pair!")
};
assert_str_eq!(header, "const qint32& getTrivialProperty() const;");
assert_str_eq!(header, "qint32 const& getTrivialProperty() const;");
assert_str_eq!(
source,
indoc! {r#"
const qint32&
qint32 const&
MyObject::getTrivialProperty() const
{
const std::lock_guard<std::recursive_mutex> guard(*m_rustObjMutex);
return rust::cxxqtlib1::cxx_qt_convert<const qint32&, const qint32&>{}(m_rustObj->getTrivialProperty(*this));
return rust::cxxqtlib1::cxx_qt_convert<qint32 const&, qint32 const&>{}(m_rustObj->getTrivialProperty(*this));
}
"#}
);
Expand All @@ -105,16 +105,16 @@ mod tests {
};
assert_str_eq!(
header,
"Q_SLOT void setTrivialProperty(const qint32& value);"
"Q_SLOT void setTrivialProperty(qint32 const& value);"
);
assert_str_eq!(
source,
indoc! {r#"
void
MyObject::setTrivialProperty(const qint32& value)
MyObject::setTrivialProperty(qint32 const& value)
{
const std::lock_guard<std::recursive_mutex> guard(*m_rustObjMutex);
m_rustObj->setTrivialProperty(*this, rust::cxxqtlib1::cxx_qt_convert<qint32, const qint32&>{}(value));
m_rustObj->setTrivialProperty(*this, rust::cxxqtlib1::cxx_qt_convert<qint32, qint32 const&>{}(value));
}
"#}
);
Expand All @@ -129,15 +129,15 @@ mod tests {
} else {
panic!("Expected pair!")
};
assert_str_eq!(header, "const QColor& getOpaqueProperty() const;");
assert_str_eq!(header, "QColor const& getOpaqueProperty() const;");
assert_str_eq!(
source,
indoc! {r#"
const QColor&
QColor const&
MyObject::getOpaqueProperty() const
{
const std::lock_guard<std::recursive_mutex> guard(*m_rustObjMutex);
return rust::cxxqtlib1::cxx_qt_convert<const QColor&, const ::std::unique_ptr<QColor>&>{}(m_rustObj->getOpaqueProperty(*this));
return rust::cxxqtlib1::cxx_qt_convert<QColor const&, ::std::unique_ptr<QColor> const&>{}(m_rustObj->getOpaqueProperty(*this));
}
"#}
);
Expand All @@ -149,16 +149,16 @@ mod tests {
};
assert_str_eq!(
header,
"Q_SLOT void setOpaqueProperty(const QColor& value);"
"Q_SLOT void setOpaqueProperty(QColor const& value);"
);
assert_str_eq!(
source,
indoc! {r#"
void
MyObject::setOpaqueProperty(const QColor& value)
MyObject::setOpaqueProperty(QColor const& value)
{
const std::lock_guard<std::recursive_mutex> guard(*m_rustObjMutex);
m_rustObj->setOpaqueProperty(*this, rust::cxxqtlib1::cxx_qt_convert<::std::unique_ptr<QColor>, const QColor&>{}(value));
m_rustObj->setOpaqueProperty(*this, rust::cxxqtlib1::cxx_qt_convert<::std::unique_ptr<QColor>, QColor const&>{}(value));
}
"#}
);
Expand Down Expand Up @@ -198,15 +198,15 @@ mod tests {
} else {
panic!("Expected pair!")
};
assert_str_eq!(header, "const A1& getMappedProperty() const;");
assert_str_eq!(header, "A1 const& getMappedProperty() const;");
assert_str_eq!(
source,
indoc! {r#"
const A1&
A1 const&
MyObject::getMappedProperty() const
{
const std::lock_guard<std::recursive_mutex> guard(*m_rustObjMutex);
return rust::cxxqtlib1::cxx_qt_convert<const A1&, const A1&>{}(m_rustObj->getMappedProperty(*this));
return rust::cxxqtlib1::cxx_qt_convert<A1 const&, A1 const&>{}(m_rustObj->getMappedProperty(*this));
}
"#}
);
Expand All @@ -216,15 +216,15 @@ mod tests {
} else {
panic!("Expected pair!")
};
assert_str_eq!(header, "Q_SLOT void setMappedProperty(const A1& value);");
assert_str_eq!(header, "Q_SLOT void setMappedProperty(A1 const& value);");
assert_str_eq!(
source,
indoc! {r#"
void
MyObject::setMappedProperty(const A1& value)
MyObject::setMappedProperty(A1 const& value)
{
const std::lock_guard<std::recursive_mutex> guard(*m_rustObjMutex);
m_rustObj->setMappedProperty(*this, rust::cxxqtlib1::cxx_qt_convert<A1, const A1&>{}(value));
m_rustObj->setMappedProperty(*this, rust::cxxqtlib1::cxx_qt_convert<A1, A1 const&>{}(value));
}
"#}
);
Expand Down
6 changes: 3 additions & 3 deletions crates/cxx-qt-gen/src/generator/cpp/property/setter.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,17 +12,17 @@ use indoc::formatdoc;
pub fn generate(idents: &QPropertyName, qobject_ident: &str, cxx_ty: &CppType) -> CppFragment {
CppFragment::Pair {
header: format!(
"Q_SLOT void {ident_setter}(const {cxx_ty}& value);",
"Q_SLOT void {ident_setter}({cxx_ty} const& value);",
cxx_ty = cxx_ty.as_cxx_ty(),
ident_setter = idents.setter.cpp,
),
source: formatdoc! {
r#"
void
{qobject_ident}::{ident_setter}(const {cxx_ty}& value)
{qobject_ident}::{ident_setter}({cxx_ty} const& value)
{{
{rust_obj_guard}
m_rustObj->{ident_setter}(*this, {convert}<{rust_ty}, const {cxx_ty}&>{{}}(value));
m_rustObj->{ident_setter}(*this, {convert}<{rust_ty}, {cxx_ty} const&>{{}}(value));
}}
"#,
convert = CXX_QT_CONVERT,
Expand Down
12 changes: 6 additions & 6 deletions crates/cxx-qt-gen/src/generator/cpp/types.rs
Original file line number Diff line number Diff line change
Expand Up @@ -72,8 +72,8 @@ fn to_cpp_string(ty: &Type, cxx_names_map: &BTreeMap<String, String>) -> Result<
Type::Reference(TypeReference {
mutability, elem, ..
}) => Ok(format!(
"{is_const}{ty}&",
is_const = if mutability.is_some() { "" } else { "const " },
"{ty}{is_const}&",
is_const = if mutability.is_some() { "" } else { " const" },
ty = to_cpp_string(elem, cxx_names_map)?
)),
_others => Err(Error::new(
Expand Down Expand Up @@ -271,7 +271,7 @@ mod tests {
let ty = tokens_to_syn(quote! { &QPoint });
assert_eq!(
to_cpp_string(&ty, &cxx_names_map_default()).unwrap(),
"const QPoint&"
"QPoint const&"
);
}

Expand Down Expand Up @@ -307,7 +307,7 @@ mod tests {
let ty = tokens_to_syn(quote! { &Vec<f64> });
assert_eq!(
to_cpp_string(&ty, &cxx_names_map_default()).unwrap(),
"const ::rust::Vec<double>&"
"::rust::Vec<double> const&"
);
}

Expand Down Expand Up @@ -339,7 +339,7 @@ mod tests {
let ty = tokens_to_syn(quote! { Pin<&T> });
assert_eq!(
to_cpp_string(&ty, &cxx_names_map_default()).unwrap(),
"const T&"
"T const&"
);
}

Expand All @@ -363,7 +363,7 @@ mod tests {
let ty = tokens_to_syn(quote! { Pin<&UniquePtr<T>> });
assert_eq!(
to_cpp_string(&ty, &cxx_names_map_default()).unwrap(),
"const ::std::unique_ptr<T>&"
"::std::unique_ptr<T> const&"
);
}

Expand Down
2 changes: 1 addition & 1 deletion crates/cxx-qt-gen/src/writer/cpp/header.rs
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ fn qobjects_header(generated: &GeneratedCppBlocks) -> Vec<String> {
public:
explicit {ident}(QObject* parent = nullptr);
~{ident}();
const {rust_ident}& unsafeRust() const;
{rust_ident} const& unsafeRust() const;
{rust_ident}& unsafeRustMut();
std::unique_ptr<{cxx_qt_thread_ident}> qtThread() const;
Expand Down
16 changes: 8 additions & 8 deletions crates/cxx-qt-gen/src/writer/cpp/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -268,7 +268,7 @@ mod tests {
public:
explicit MyObject(QObject* parent = nullptr);
~MyObject();
const MyObjectRust& unsafeRust() const;
MyObjectRust const& unsafeRust() const;
MyObjectRust& unsafeRustMut();
std::unique_ptr<MyObjectCxxQtThread> qtThread() const;
Expand Down Expand Up @@ -335,7 +335,7 @@ mod tests {
public:
explicit FirstObject(QObject* parent = nullptr);
~FirstObject();
const FirstObjectRust& unsafeRust() const;
FirstObjectRust const& unsafeRust() const;
FirstObjectRust& unsafeRustMut();
std::unique_ptr<FirstObjectCxxQtThread> qtThread() const;
Expand Down Expand Up @@ -369,7 +369,7 @@ mod tests {
public:
explicit SecondObject(QObject* parent = nullptr);
~SecondObject();
const SecondObjectRust& unsafeRust() const;
SecondObjectRust const& unsafeRust() const;
SecondObjectRust& unsafeRustMut();
std::unique_ptr<SecondObjectCxxQtThread> qtThread() const;
Expand Down Expand Up @@ -427,7 +427,7 @@ mod tests {
public:
explicit MyObject(QObject* parent = nullptr);
~MyObject();
const MyObjectRust& unsafeRust() const;
MyObjectRust const& unsafeRust() const;
MyObjectRust& unsafeRustMut();
std::unique_ptr<MyObjectCxxQtThread> qtThread() const;
Expand Down Expand Up @@ -481,7 +481,7 @@ mod tests {
m_cxxQtThreadObj->ptr = nullptr;
}
const MyObjectRust&
MyObjectRust const&
MyObject::unsafeRust() const
{
return *m_rustObj;
Expand Down Expand Up @@ -569,7 +569,7 @@ mod tests {
m_cxxQtThreadObj->ptr = nullptr;
}
const FirstObjectRust&
FirstObjectRust const&
FirstObject::unsafeRust() const
{
return *m_rustObj;
Expand Down Expand Up @@ -625,7 +625,7 @@ mod tests {
m_cxxQtThreadObj->ptr = nullptr;
}
const SecondObjectRust&
SecondObjectRust const&
SecondObject::unsafeRust() const
{
return *m_rustObj;
Expand Down Expand Up @@ -689,7 +689,7 @@ mod tests {
m_cxxQtThreadObj->ptr = nullptr;
}
const MyObjectRust&
MyObjectRust const&
MyObject::unsafeRust() const
{
return *m_rustObj;
Expand Down
2 changes: 1 addition & 1 deletion crates/cxx-qt-gen/src/writer/cpp/source.rs
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ fn qobjects_source(generated: &GeneratedCppBlocks) -> Vec<String> {
m_cxxQtThreadObj->ptr = nullptr;
}}
const {rust_ident}&
{rust_ident} const&
{ident}::unsafeRust() const
{{
return *m_rustObj;
Expand Down
6 changes: 3 additions & 3 deletions crates/cxx-qt-gen/test_outputs/invokables.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ MyObject::~MyObject()
m_cxxQtThreadObj->ptr = nullptr;
}

const MyObjectRust&
MyObjectRust const&
MyObject::unsafeRust() const
{
return *m_rustObj;
Expand Down Expand Up @@ -51,8 +51,8 @@ MyObject::invokableMutable()
}

void
MyObject::invokableParameters(const QColor& opaque,
const QPoint& trivial,
MyObject::invokableParameters(QColor const& opaque,
QPoint const& trivial,
qint32 primitive) const
{
const std::lock_guard<std::recursive_mutex> guard(*m_rustObjMutex);
Expand Down
6 changes: 3 additions & 3 deletions crates/cxx-qt-gen/test_outputs/invokables.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,15 +23,15 @@ class MyObject : public QObject
public:
explicit MyObject(QObject* parent = nullptr);
~MyObject();
const MyObjectRust& unsafeRust() const;
MyObjectRust const& unsafeRust() const;
MyObjectRust& unsafeRustMut();
std::unique_ptr<MyObjectCxxQtThread> qtThread() const;

public:
Q_INVOKABLE void invokable() const;
Q_INVOKABLE void invokableMutable();
Q_INVOKABLE void invokableParameters(const QColor& opaque,
const QPoint& trivial,
Q_INVOKABLE void invokableParameters(QColor const& opaque,
QPoint const& trivial,
qint32 primitive) const;
Q_INVOKABLE Value invokableReturnOpaque();
Q_INVOKABLE QPoint invokableReturnTrivial();
Expand Down
Loading

0 comments on commit 2c2be14

Please sign in to comment.