mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-07-08 02:10:35 +08:00
Renamed IntegerInfo to IntegerSpec, few minor naming fixes
This commit is contained in:
@@ -0,0 +1,12 @@
|
||||
/*
|
||||
* Copyright (C) 2014 Pavel Kirienko <pavel.kirienko@gmail.com>
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
namespace uavcan
|
||||
{
|
||||
|
||||
enum CastMode { CastModeSaturate, CastModeTruncate };
|
||||
|
||||
}
|
||||
+5
-5
@@ -8,7 +8,7 @@
|
||||
#include <limits>
|
||||
#include <uavcan/internal/util.hpp>
|
||||
#include <uavcan/internal/marshalling/scalar_codec.hpp>
|
||||
#include <uavcan/internal/marshalling/types.hpp>
|
||||
#include <uavcan/internal/marshalling/cast_mode.hpp>
|
||||
|
||||
namespace uavcan
|
||||
{
|
||||
@@ -16,7 +16,7 @@ namespace uavcan
|
||||
enum Signedness { SignednessUnsigned, SignednessSigned };
|
||||
|
||||
template <unsigned int BitLen_, Signedness Signedness, CastMode CastMode>
|
||||
class IntegerInfo
|
||||
class IntegerSpec
|
||||
{
|
||||
enum { IsSigned = Signedness == SignednessSigned };
|
||||
|
||||
@@ -32,9 +32,9 @@ public:
|
||||
ErrorNoSuchInteger>::Result>::Result>::Result>::Result StorageType;
|
||||
|
||||
private:
|
||||
typedef typename IntegerInfo<BitLen, SignednessUnsigned, CastMode>::StorageType UnsignedStorageType;
|
||||
typedef typename IntegerSpec<BitLen, SignednessUnsigned, CastMode>::StorageType UnsignedStorageType;
|
||||
|
||||
IntegerInfo() { }
|
||||
IntegerSpec() { }
|
||||
|
||||
struct ExactSizeLimits
|
||||
{
|
||||
@@ -98,6 +98,6 @@ public:
|
||||
};
|
||||
|
||||
template <CastMode CastMode>
|
||||
class IntegerInfo<1, SignednessSigned, CastMode>; // Invalid instantiation
|
||||
class IntegerSpec<1, SignednessSigned, CastMode>; // Invalid instantiation
|
||||
|
||||
}
|
||||
@@ -5,20 +5,24 @@
|
||||
#pragma once
|
||||
|
||||
#include <uavcan/internal/util.hpp>
|
||||
#include <uavcan/internal/marshalling/scalar_codec.hpp>
|
||||
#include <uavcan/internal/marshalling/integer_spec.hpp>
|
||||
|
||||
namespace uavcan
|
||||
{
|
||||
|
||||
enum CastMode { CastModeSaturate, CastModeTruncate };
|
||||
|
||||
template <typename T, typename Enable = void>
|
||||
struct AddStorageTypeImpl { typedef T StorageType; };
|
||||
struct StorageTypeImpl { typedef T StorageType; };
|
||||
|
||||
template <typename T>
|
||||
struct AddStorageTypeImpl<T, typename EnableIfType<typename T::StorageType>::Type> { };
|
||||
struct StorageTypeImpl<T, typename EnableIfType<typename T::StorageType>::Type>
|
||||
{
|
||||
typedef typename T::StorageType Type;
|
||||
};
|
||||
|
||||
template <typename T>
|
||||
struct AddStorageType : public T, public AddStorageTypeImpl<T> { };
|
||||
struct StorageType : public T
|
||||
{
|
||||
typedef typename StorageTypeImpl<T>::Type Type;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
+25
-24
@@ -3,24 +3,25 @@
|
||||
*/
|
||||
|
||||
#include <gtest/gtest.h>
|
||||
#include <uavcan/internal/marshalling/integer.hpp>
|
||||
#include <uavcan/internal/marshalling/integer_spec.hpp>
|
||||
#include <uavcan/internal/marshalling/types.hpp>
|
||||
|
||||
|
||||
TEST(Integer, Limits)
|
||||
{
|
||||
using uavcan::IntegerInfo;
|
||||
using uavcan::IntegerSpec;
|
||||
using uavcan::SignednessSigned;
|
||||
using uavcan::SignednessUnsigned;
|
||||
using uavcan::CastModeSaturate;
|
||||
using uavcan::CastModeTruncate;
|
||||
|
||||
typedef IntegerInfo<8, SignednessUnsigned, CastModeSaturate> UInt8;
|
||||
typedef IntegerInfo<4, SignednessSigned, CastModeTruncate> SInt4;
|
||||
typedef IntegerInfo<32, SignednessUnsigned, CastModeTruncate> UInt32;
|
||||
typedef IntegerInfo<40, SignednessUnsigned, CastModeSaturate> UInt40;
|
||||
typedef IntegerInfo<64, SignednessUnsigned, CastModeTruncate> UInt64;
|
||||
typedef IntegerInfo<64, SignednessSigned, CastModeSaturate> SInt64;
|
||||
typedef IntegerInfo<63, SignednessUnsigned, CastModeSaturate> UInt63;
|
||||
typedef IntegerSpec<8, SignednessUnsigned, CastModeSaturate> UInt8;
|
||||
typedef IntegerSpec<4, SignednessSigned, CastModeTruncate> SInt4;
|
||||
typedef IntegerSpec<32, SignednessUnsigned, CastModeTruncate> UInt32;
|
||||
typedef IntegerSpec<40, SignednessUnsigned, CastModeSaturate> UInt40;
|
||||
typedef IntegerSpec<64, SignednessUnsigned, CastModeTruncate> UInt64;
|
||||
typedef IntegerSpec<64, SignednessSigned, CastModeSaturate> SInt64;
|
||||
typedef IntegerSpec<63, SignednessUnsigned, CastModeSaturate> UInt63;
|
||||
|
||||
ASSERT_EQ(255, UInt8::max());
|
||||
ASSERT_EQ(0, UInt8::min());
|
||||
@@ -49,26 +50,26 @@ TEST(Integer, Limits)
|
||||
|
||||
TEST(Integer, Basic)
|
||||
{
|
||||
using uavcan::IntegerInfo;
|
||||
using uavcan::IntegerSpec;
|
||||
using uavcan::SignednessSigned;
|
||||
using uavcan::SignednessUnsigned;
|
||||
using uavcan::CastModeSaturate;
|
||||
using uavcan::CastModeTruncate;
|
||||
using uavcan::AddStorageType;
|
||||
using uavcan::StorageType;
|
||||
|
||||
uavcan::StaticTransferBuffer<100> buf;
|
||||
uavcan::BitStream bs_wr(buf);
|
||||
uavcan::ScalarCodec sc_wr(bs_wr);
|
||||
|
||||
typedef AddStorageType<IntegerInfo<8, SignednessUnsigned, CastModeSaturate> > UInt8S;
|
||||
typedef AddStorageType<IntegerInfo<4, SignednessSigned, CastModeTruncate> > SInt4T;
|
||||
typedef AddStorageType<IntegerInfo<32, SignednessUnsigned, CastModeTruncate> > UInt32T;
|
||||
typedef AddStorageType<IntegerInfo<40, SignednessUnsigned, CastModeSaturate> > UInt40S;
|
||||
typedef AddStorageType<IntegerInfo<64, SignednessUnsigned, CastModeTruncate> > UInt64T;
|
||||
typedef AddStorageType<IntegerInfo<58, SignednessSigned, CastModeSaturate> > SInt58S;
|
||||
typedef AddStorageType<IntegerInfo<63, SignednessUnsigned, CastModeSaturate> > UInt63S;
|
||||
typedef AddStorageType<IntegerInfo<10, SignednessSigned, CastModeSaturate> > SInt10S;
|
||||
typedef AddStorageType<IntegerInfo<1, SignednessUnsigned, CastModeSaturate> > UInt1S;
|
||||
typedef IntegerSpec<8, SignednessUnsigned, CastModeSaturate> UInt8S;
|
||||
typedef IntegerSpec<4, SignednessSigned, CastModeTruncate> SInt4T;
|
||||
typedef IntegerSpec<32, SignednessUnsigned, CastModeTruncate> UInt32T;
|
||||
typedef IntegerSpec<40, SignednessUnsigned, CastModeSaturate> UInt40S;
|
||||
typedef IntegerSpec<64, SignednessUnsigned, CastModeTruncate> UInt64T;
|
||||
typedef IntegerSpec<58, SignednessSigned, CastModeSaturate> SInt58S;
|
||||
typedef IntegerSpec<63, SignednessUnsigned, CastModeSaturate> UInt63S;
|
||||
typedef IntegerSpec<10, SignednessSigned, CastModeSaturate> SInt10S;
|
||||
typedef IntegerSpec<1, SignednessUnsigned, CastModeSaturate> UInt1S;
|
||||
|
||||
ASSERT_EQ(1, UInt8S::encode(UInt8S::StorageType(123), sc_wr));
|
||||
ASSERT_EQ(1, SInt4T::encode(SInt4T::StorageType(-0x44), sc_wr));
|
||||
@@ -85,10 +86,10 @@ TEST(Integer, Basic)
|
||||
uavcan::BitStream bs_rd(buf);
|
||||
uavcan::ScalarCodec sc_rd(bs_rd);
|
||||
|
||||
#define CHECK(Type, expected_value) \
|
||||
#define CHECK(IntType, expected_value) \
|
||||
do { \
|
||||
Type::StorageType var(Type::init()); \
|
||||
ASSERT_EQ(1, Type::decode(var, sc_rd)); \
|
||||
StorageType<IntType>::Type var(IntType::init()); \
|
||||
ASSERT_EQ(1, IntType::decode(var, sc_rd)); \
|
||||
ASSERT_EQ(expected_value, var); \
|
||||
} while (0)
|
||||
|
||||
@@ -104,6 +105,6 @@ TEST(Integer, Basic)
|
||||
|
||||
#undef CHECK
|
||||
|
||||
UInt1S::StorageType var;
|
||||
StorageType<UInt1S>::Type var;
|
||||
ASSERT_EQ(0, UInt1S::decode(var, sc_rd));
|
||||
}
|
||||
Reference in New Issue
Block a user