mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-23 05:45:35 +08:00
Ref T476 Static asserts to ensure array and non-array datarefs are used correctly.
This commit is contained in:
@@ -85,6 +85,8 @@ namespace XSwiftBus
|
|||||||
template<class DataRefTraits>
|
template<class DataRefTraits>
|
||||||
class DataRef : private DataRefImpl
|
class DataRef : private DataRefImpl
|
||||||
{
|
{
|
||||||
|
static_assert(!DataRefTraits::is_array, "this is an array dataref");
|
||||||
|
|
||||||
public:
|
public:
|
||||||
//! Constructor
|
//! Constructor
|
||||||
DataRef() : DataRefImpl(DataRefTraits::name()) {}
|
DataRef() : DataRefImpl(DataRefTraits::name()) {}
|
||||||
@@ -116,6 +118,8 @@ namespace XSwiftBus
|
|||||||
template<class DataRefTraits>
|
template<class DataRefTraits>
|
||||||
class ArrayDataRef : private ArrayDataRefImpl
|
class ArrayDataRef : private ArrayDataRefImpl
|
||||||
{
|
{
|
||||||
|
static_assert(DataRefTraits::is_array, "not an array dataref");
|
||||||
|
|
||||||
public:
|
public:
|
||||||
//! Constructor
|
//! Constructor
|
||||||
ArrayDataRef() : ArrayDataRefImpl(DataRefTraits::name(), DataRefTraits::size) {}
|
ArrayDataRef() : ArrayDataRefImpl(DataRefTraits::name(), DataRefTraits::size) {}
|
||||||
@@ -147,6 +151,8 @@ namespace XSwiftBus
|
|||||||
template<class DataRefTraits>
|
template<class DataRefTraits>
|
||||||
class StringDataRef
|
class StringDataRef
|
||||||
{
|
{
|
||||||
|
static_assert(DataRefTraits::is_array, "not an array dataref");
|
||||||
|
|
||||||
public:
|
public:
|
||||||
//! Constructor
|
//! Constructor
|
||||||
StringDataRef() : m_ref(XPLMFindDataRef(DataRefTraits::name()))
|
StringDataRef() : m_ref(XPLMFindDataRef(DataRefTraits::name()))
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -136,8 +136,15 @@ ${in}${indent}using type = $type;
|
|||||||
EOF
|
EOF
|
||||||
|
|
||||||
print <<"EOF" if defined $size;
|
print <<"EOF" if defined $size;
|
||||||
|
${in}${indent}//! Is an array dataref
|
||||||
|
${in}${indent}static constexpr bool is_array = true;
|
||||||
${in}${indent}//! Size of array dataref
|
${in}${indent}//! Size of array dataref
|
||||||
${in}${indent}static constexpr size_t size = $size;
|
${in}${indent}static constexpr size_t size = $size;
|
||||||
|
EOF
|
||||||
|
|
||||||
|
print <<"EOF" unless defined $size;
|
||||||
|
${in}${indent}//! Not an array dataref
|
||||||
|
${in}${indent}static constexpr bool is_array = false;
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
print <<"EOF";
|
print <<"EOF";
|
||||||
|
|||||||
Reference in New Issue
Block a user