mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-07-02 22:30:35 +08:00
Fixed array MaxBitLen
This commit is contained in:
@@ -21,6 +21,7 @@ template <unsigned int Size>
|
||||
class StaticArrayBase
|
||||
{
|
||||
public:
|
||||
enum { SizeBitLen = 0 };
|
||||
typedef unsigned int SizeType;
|
||||
SizeType size() const { return Size; }
|
||||
SizeType capacity() const { return Size; }
|
||||
@@ -85,6 +86,8 @@ protected:
|
||||
}
|
||||
|
||||
public:
|
||||
enum { SizeBitLen = RawSizeType::BitLen };
|
||||
|
||||
SizeType size() const
|
||||
{
|
||||
assert(size_ ? ((size_ - 1u) <= (MaxSize - 1u)) : 1); // -Werror=type-limits
|
||||
@@ -212,7 +215,7 @@ public:
|
||||
enum { IsDynamic = ArrayMode == ArrayModeDynamic };
|
||||
enum { MaxSize = MaxSize_ };
|
||||
enum { MinBitLen = IsDynamic ? 0 : (RawValueType::MinBitLen * MaxSize) };
|
||||
enum { MaxBitLen = RawValueType::MaxBitLen * MaxSize };
|
||||
enum { MaxBitLen = (RawValueType::MaxBitLen * MaxSize) + (IsDynamic ? Base::SizeBitLen : 0) };
|
||||
|
||||
static int encode(const SelfType& array, ScalarCodec& codec)
|
||||
{
|
||||
|
||||
@@ -99,6 +99,10 @@ TEST(Array, Basic)
|
||||
|
||||
ASSERT_EQ(1, A3::ValueType::C::RawValueType::BitLen);
|
||||
|
||||
ASSERT_EQ(8 * 4, A1::MaxBitLen);
|
||||
ASSERT_EQ(16 * 2, A2::MaxBitLen);
|
||||
ASSERT_EQ((8 + 16 + 5 + 3) * 2, A3::MaxBitLen);
|
||||
|
||||
/*
|
||||
* Zero initialization check
|
||||
*/
|
||||
@@ -249,6 +253,9 @@ TEST(Array, Dynamic)
|
||||
A a;
|
||||
B b;
|
||||
|
||||
ASSERT_EQ(3 + 5, A::MaxBitLen);
|
||||
ASSERT_EQ(8 + 255 * 8, B::MaxBitLen);
|
||||
|
||||
ASSERT_TRUE(a.empty());
|
||||
ASSERT_TRUE(b.empty());
|
||||
|
||||
|
||||
Reference in New Issue
Block a user