[Qt] Statically assert reflected Qt enums

This commit is contained in:
Bruno de Oliveira Abinader
2016-04-28 18:24:59 +03:00
parent 1f5587b3ea
commit 9c5ed9c378
3 changed files with 60 additions and 45 deletions

View File

@@ -31,7 +31,8 @@ public:
};
enum ConstrainMode {
ConstrainHeightOnly = 0,
NoConstrain = 0,
ConstrainHeightOnly,
ConstrainWidthAndHeight
};
@@ -89,19 +90,19 @@ public:
// Reflects mbgl::MapChange.
enum MapChange {
MapChangeRegionWillChange = 0,
MapChangeRegionWillChangeAnimated = 1,
MapChangeRegionIsChanging = 2,
MapChangeRegionDidChange = 3,
MapChangeRegionDidChangeAnimated = 4,
MapChangeWillStartLoadingMap = 5,
MapChangeDidFinishLoadingMap = 6,
MapChangeDidFailLoadingMap = 7,
MapChangeWillStartRenderingFrame = 8,
MapChangeDidFinishRenderingFrame = 9,
MapChangeDidFinishRenderingFrameFullyRendered = 10,
MapChangeWillStartRenderingMap = 11,
MapChangeDidFinishRenderingMap = 12,
MapChangeDidFinishRenderingMapFullyRendered = 13
MapChangeRegionWillChangeAnimated,
MapChangeRegionIsChanging,
MapChangeRegionDidChange,
MapChangeRegionDidChangeAnimated,
MapChangeWillStartLoadingMap,
MapChangeDidFinishLoadingMap,
MapChangeDidFailLoadingMap,
MapChangeWillStartRenderingFrame,
MapChangeDidFinishRenderingFrame,
MapChangeDidFinishRenderingFrameFullyRendered,
MapChangeWillStartRenderingMap,
MapChangeDidFinishRenderingMap,
MapChangeDidFinishRenderingMapFullyRendered
};
QMapboxGL(QObject *parent = 0, const QMapboxGLSettings& = QMapboxGLSettings());

View File

@@ -1,6 +1,7 @@
#include <mbgl/gl/gl.hpp>
#include <mbgl/storage/network_status.hpp>
#include <mbgl/util/default_styles.hpp>
#include <mbgl/util/traits.hpp>
#include <QMapbox>
@@ -8,31 +9,20 @@
#include <QOpenGLContext>
#endif
// mbgl::MapMode
static_assert(mbgl::underlying_type(QMapbox::Online) == mbgl::underlying_type(mbgl::NetworkStatus::Status::Online), "error");
static_assert(mbgl::underlying_type(QMapbox::Offline) == mbgl::underlying_type(mbgl::NetworkStatus::Status::Offline), "error");
namespace QMapbox {
Q_DECL_EXPORT NetworkMode networkMode()
{
switch (mbgl::NetworkStatus::Get()) {
case mbgl::NetworkStatus::Status::Online:
return NetworkMode::Online;
case mbgl::NetworkStatus::Status::Offline:
return NetworkMode::Offline;
}
// Silence compile warnings, should never happen.
return NetworkMode::Online;
return static_cast<NetworkMode>(mbgl::NetworkStatus::Get());
}
Q_DECL_EXPORT void setNetworkMode(NetworkMode mode)
{
switch (mode) {
case Online:
mbgl::NetworkStatus::Set(mbgl::NetworkStatus::Status::Online);
break;
case Offline:
mbgl::NetworkStatus::Set(mbgl::NetworkStatus::Status::Offline);
break;
}
mbgl::NetworkStatus::Set(static_cast<mbgl::NetworkStatus::Status>(mode));
}
Q_DECL_EXPORT QList<QPair<QString, QString>>& defaultStyles()

View File

@@ -9,6 +9,7 @@
#include <mbgl/storage/network_status.hpp>
#include <mbgl/util/constants.hpp>
#include <mbgl/util/geo.hpp>
#include <mbgl/util/traits.hpp>
#include <mbgl/util/vec.hpp>
#include <QCoreApplication>
@@ -22,6 +23,41 @@
using namespace QMapbox;
// mbgl::MapMode
static_assert(mbgl::underlying_type(QMapboxGLSettings::ContinuousMap) == mbgl::underlying_type(mbgl::MapMode::Continuous), "error");
static_assert(mbgl::underlying_type(QMapboxGLSettings::StillMap) == mbgl::underlying_type(mbgl::MapMode::Still), "error");
// mbgl::GLContextMode
static_assert(mbgl::underlying_type(QMapboxGLSettings::UniqueGLContext) == mbgl::underlying_type(mbgl::GLContextMode::Unique), "error");
static_assert(mbgl::underlying_type(QMapboxGLSettings::SharedGLContext) == mbgl::underlying_type(mbgl::GLContextMode::Shared), "error");
// mbgl::ConstrainMode
static_assert(mbgl::underlying_type(QMapboxGLSettings::NoConstrain) == mbgl::underlying_type(mbgl::ConstrainMode::None), "error");
static_assert(mbgl::underlying_type(QMapboxGLSettings::ConstrainHeightOnly) == mbgl::underlying_type(mbgl::ConstrainMode::HeightOnly), "error");
static_assert(mbgl::underlying_type(QMapboxGLSettings::ConstrainWidthAndHeight) == mbgl::underlying_type(mbgl::ConstrainMode::WidthAndHeight), "error");
// mbgl::NorthOrientation
static_assert(mbgl::underlying_type(QMapboxGL::NorthUpwards) == mbgl::underlying_type(mbgl::NorthOrientation::Upwards), "error");
static_assert(mbgl::underlying_type(QMapboxGL::NorthRightwards) == mbgl::underlying_type(mbgl::NorthOrientation::Rightwards), "error");
static_assert(mbgl::underlying_type(QMapboxGL::NorthDownwards) == mbgl::underlying_type(mbgl::NorthOrientation::Downwards), "error");
static_assert(mbgl::underlying_type(QMapboxGL::NorthLeftwards) == mbgl::underlying_type(mbgl::NorthOrientation::Leftwards), "error");
// mbgl::MapChange
static_assert(mbgl::underlying_type(QMapboxGL::MapChangeRegionWillChange) == mbgl::underlying_type(mbgl::MapChangeRegionWillChange), "error");
static_assert(mbgl::underlying_type(QMapboxGL::MapChangeRegionWillChangeAnimated) == mbgl::underlying_type(mbgl::MapChangeRegionWillChangeAnimated), "error");
static_assert(mbgl::underlying_type(QMapboxGL::MapChangeRegionIsChanging) == mbgl::underlying_type(mbgl::MapChangeRegionIsChanging), "error");
static_assert(mbgl::underlying_type(QMapboxGL::MapChangeRegionDidChange) == mbgl::underlying_type(mbgl::MapChangeRegionDidChange), "error");
static_assert(mbgl::underlying_type(QMapboxGL::MapChangeRegionDidChangeAnimated) == mbgl::underlying_type(mbgl::MapChangeRegionDidChangeAnimated), "error");
static_assert(mbgl::underlying_type(QMapboxGL::MapChangeWillStartLoadingMap) == mbgl::underlying_type(mbgl::MapChangeWillStartLoadingMap), "error");
static_assert(mbgl::underlying_type(QMapboxGL::MapChangeDidFinishLoadingMap) == mbgl::underlying_type(mbgl::MapChangeDidFinishLoadingMap), "error");
static_assert(mbgl::underlying_type(QMapboxGL::MapChangeDidFailLoadingMap) == mbgl::underlying_type(mbgl::MapChangeDidFailLoadingMap), "error");
static_assert(mbgl::underlying_type(QMapboxGL::MapChangeWillStartRenderingFrame) == mbgl::underlying_type(mbgl::MapChangeWillStartRenderingFrame), "error");
static_assert(mbgl::underlying_type(QMapboxGL::MapChangeDidFinishRenderingFrame) == mbgl::underlying_type(mbgl::MapChangeDidFinishRenderingFrame), "error");
static_assert(mbgl::underlying_type(QMapboxGL::MapChangeDidFinishRenderingFrameFullyRendered) == mbgl::underlying_type(mbgl::MapChangeDidFinishRenderingFrameFullyRendered), "error");
static_assert(mbgl::underlying_type(QMapboxGL::MapChangeWillStartRenderingMap) == mbgl::underlying_type(mbgl::MapChangeWillStartRenderingMap), "error");
static_assert(mbgl::underlying_type(QMapboxGL::MapChangeDidFinishRenderingMap) == mbgl::underlying_type(mbgl::MapChangeDidFinishRenderingMap), "error");
static_assert(mbgl::underlying_type(QMapboxGL::MapChangeDidFinishRenderingMapFullyRendered) == mbgl::underlying_type(mbgl::MapChangeDidFinishRenderingMapFullyRendered), "error");
QMapboxGLSettings::QMapboxGLSettings()
: m_mapMode(QMapboxGLSettings::ContinuousMap)
, m_contextMode(QMapboxGLSettings::SharedGLContext)
@@ -257,24 +293,12 @@ void QMapboxGL::setPitch(double pitch_)
QMapboxGL::NorthOrientation QMapboxGL::northOrientation() const
{
using NO = mbgl::NorthOrientation;
switch (d_ptr->mapObj->getNorthOrientation()) {
case NO::Rightwards: return NorthRightwards;
case NO::Downwards: return NorthDownwards;
case NO::Leftwards: return NorthLeftwards;
default: return NorthUpwards;
}
return static_cast<QMapboxGL::NorthOrientation>(d_ptr->mapObj->getNorthOrientation());
}
void QMapboxGL::setNorthOrientation(NorthOrientation orientation)
{
using NO = mbgl::NorthOrientation;
switch (orientation) {
case NorthRightwards: d_ptr->mapObj->setNorthOrientation(NO::Rightwards); break;
case NorthDownwards: d_ptr->mapObj->setNorthOrientation(NO::Downwards); break;
case NorthLeftwards: d_ptr->mapObj->setNorthOrientation(NO::Leftwards); break;
default: d_ptr->mapObj->setNorthOrientation(NO::Upwards); break;
}
d_ptr->mapObj->setNorthOrientation(static_cast<mbgl::NorthOrientation>(orientation));
}
void QMapboxGL::setGestureInProgress(bool inProgress)