mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-04 00:16:51 +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>
|
||||
class DataRef : private DataRefImpl
|
||||
{
|
||||
static_assert(!DataRefTraits::is_array, "this is an array dataref");
|
||||
|
||||
public:
|
||||
//! Constructor
|
||||
DataRef() : DataRefImpl(DataRefTraits::name()) {}
|
||||
@@ -116,6 +118,8 @@ namespace XSwiftBus
|
||||
template<class DataRefTraits>
|
||||
class ArrayDataRef : private ArrayDataRefImpl
|
||||
{
|
||||
static_assert(DataRefTraits::is_array, "not an array dataref");
|
||||
|
||||
public:
|
||||
//! Constructor
|
||||
ArrayDataRef() : ArrayDataRefImpl(DataRefTraits::name(), DataRefTraits::size) {}
|
||||
@@ -147,6 +151,8 @@ namespace XSwiftBus
|
||||
template<class DataRefTraits>
|
||||
class StringDataRef
|
||||
{
|
||||
static_assert(DataRefTraits::is_array, "not an array dataref");
|
||||
|
||||
public:
|
||||
//! Constructor
|
||||
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
|
||||
|
||||
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}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
|
||||
|
||||
print <<"EOF";
|
||||
|
||||
Reference in New Issue
Block a user