Browse Source

Trade: fix ambiguity when instantiating nullptr array MeshAttributeData.

pull/449/head
Vladimír Vondruš 6 years ago
parent
commit
dca9dc492d
  1. 3
      src/Magnum/Trade/MeshData.h
  2. 11
      src/Magnum/Trade/Test/MeshDataTest.cpp

3
src/Magnum/Trade/MeshData.h

@ -395,6 +395,9 @@ class MAGNUM_TRADE_EXPORT MeshAttributeData {
*/ */
explicit MeshAttributeData(MeshAttribute name, VertexFormat format, UnsignedShort arraySize, const Containers::StridedArrayView2D<const char>& data) noexcept; explicit MeshAttributeData(MeshAttribute name, VertexFormat format, UnsignedShort arraySize, const Containers::StridedArrayView2D<const char>& data) noexcept;
/** @overload */
explicit MeshAttributeData(MeshAttribute name, VertexFormat format, UnsignedShort arraySize, std::nullptr_t) noexcept: MeshAttributeData{name, format, arraySize, nullptr, nullptr} {}
/** /**
* @brief Constructor * @brief Constructor
* @param name Attribute name * @param name Attribute name

11
src/Magnum/Trade/Test/MeshDataTest.cpp

@ -72,6 +72,7 @@ struct MeshDataTest: TestSuite::Tester {
void constructArrayAttribute2DWrongSize(); void constructArrayAttribute2DWrongSize();
void constructArrayAttribute2DNonContiguous(); void constructArrayAttribute2DNonContiguous();
void constructArrayAttributeTypeErased(); void constructArrayAttributeTypeErased();
void constructArrayAttributeNullptr();
void constructArrayAttributeOffsetOnly(); void constructArrayAttributeOffsetOnly();
void constructArrayAttributeNotAllowed(); void constructArrayAttributeNotAllowed();
@ -231,6 +232,7 @@ MeshDataTest::MeshDataTest() {
&MeshDataTest::constructArrayAttribute2DWrongSize, &MeshDataTest::constructArrayAttribute2DWrongSize,
&MeshDataTest::constructArrayAttribute2DNonContiguous, &MeshDataTest::constructArrayAttribute2DNonContiguous,
&MeshDataTest::constructArrayAttributeTypeErased, &MeshDataTest::constructArrayAttributeTypeErased,
&MeshDataTest::constructArrayAttributeNullptr,
&MeshDataTest::constructArrayAttributeOffsetOnly, &MeshDataTest::constructArrayAttributeOffsetOnly,
&MeshDataTest::constructArrayAttributeNotAllowed}); &MeshDataTest::constructArrayAttributeNotAllowed});
@ -880,6 +882,15 @@ void MeshDataTest::constructArrayAttributeTypeErased() {
CORRADE_COMPARE(data.data().stride(), sizeof(Vector2)*4); CORRADE_COMPARE(data.data().stride(), sizeof(Vector2)*4);
} }
void MeshDataTest::constructArrayAttributeNullptr() {
MeshAttributeData positions{meshAttributeCustom(35), VertexFormat::Vector2, 4, nullptr};
CORRADE_VERIFY(!positions.isOffsetOnly());
CORRADE_COMPARE(positions.arraySize(), 4);
CORRADE_COMPARE(positions.name(), meshAttributeCustom(35));
CORRADE_COMPARE(positions.format(), VertexFormat::Vector2);
CORRADE_VERIFY(!positions.data().data());
}
void MeshDataTest::constructArrayAttributeOffsetOnly() { void MeshDataTest::constructArrayAttributeOffsetOnly() {
MeshAttributeData data{meshAttributeCustom(35), VertexFormat::Vector2, sizeof(Vector2), 3, sizeof(Vector2), 4}; MeshAttributeData data{meshAttributeCustom(35), VertexFormat::Vector2, sizeof(Vector2), 3, sizeof(Vector2), 4};
CORRADE_VERIFY(data.isOffsetOnly()); CORRADE_VERIFY(data.isOffsetOnly());

Loading…
Cancel
Save