mirror of
https://github.com/ETLCPP/etl.git
synced 2026-11-09 22:59:47 +08:00
Minor layout changes
This commit is contained in:
parent
37efd986de
commit
23d248e0ac
@ -38,24 +38,24 @@ SOFTWARE.
|
||||
|
||||
namespace etl
|
||||
{
|
||||
//***************************************************************************
|
||||
/// Template to determine the largest type and size.
|
||||
//***************************************************************************
|
||||
/// Template to determine the largest type and size.
|
||||
/// Supports up to 16 types.
|
||||
/// Defines 'value_type' which is the type of the largest parameter.
|
||||
/// Defines 'size' which is the size of the largest parameter.
|
||||
/// Defines 'value_type' which is the type of the largest parameter.
|
||||
/// Defines 'size' which is the size of the largest parameter.
|
||||
///\ingroup largest
|
||||
//***************************************************************************
|
||||
template <typename T1, typename T2 = void, typename T3 = void, typename T4 = void,
|
||||
typename T5 = void, typename T6 = void, typename T7 = void, typename T8 = void,
|
||||
typename T9 = void, typename T10 = void, typename T11 = void, typename T12 = void,
|
||||
typename T13 = void, typename T14 = void, typename T15 = void, typename T16 = void>
|
||||
struct largest_type
|
||||
{
|
||||
private:
|
||||
//***************************************************************************
|
||||
template <typename T1, typename T2 = void, typename T3 = void, typename T4 = void,
|
||||
typename T5 = void, typename T6 = void, typename T7 = void, typename T8 = void,
|
||||
typename T9 = void, typename T10 = void, typename T11 = void, typename T12 = void,
|
||||
typename T13 = void, typename T14 = void, typename T15 = void, typename T16 = void>
|
||||
struct largest_type
|
||||
{
|
||||
private:
|
||||
|
||||
// Declaration.
|
||||
template <const bool Boolean, typename TrueType, typename FalseType>
|
||||
struct choose_type;
|
||||
template <const bool Boolean, typename TrueType, typename FalseType>
|
||||
struct choose_type;
|
||||
|
||||
// Specialisation for 'true'.
|
||||
// Defines 'type' as 'TrueType'.
|
||||
@ -65,49 +65,49 @@ namespace etl
|
||||
typedef TrueType type;
|
||||
};
|
||||
|
||||
// Specialisation for 'false'.
|
||||
// Specialisation for 'false'.
|
||||
// Defines 'type' as 'FalseType'.
|
||||
template <typename TrueType, typename FalseType>
|
||||
struct choose_type<false, TrueType, FalseType>
|
||||
{
|
||||
{
|
||||
typedef FalseType type;
|
||||
};
|
||||
};
|
||||
|
||||
public:
|
||||
public:
|
||||
|
||||
// Define 'largest_other' as 'largest_type' with all but the first parameter.
|
||||
typedef typename largest_type<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>::type largest_other;
|
||||
// Define 'largest_other' as 'largest_type' with all but the first parameter.
|
||||
typedef typename largest_type<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>::type largest_other;
|
||||
|
||||
// Set 'type' to be the largest of the first parameter and any of the others.
|
||||
// Set 'type' to be the largest of the first parameter and any of the others.
|
||||
// This is recursive.
|
||||
typedef typename choose_type<(sizeof(T1) > sizeof(largest_other)), // Boolean
|
||||
T1, // TrueType
|
||||
largest_other> // FalseType
|
||||
::type type; // The largest type of the two.
|
||||
T1, // TrueType
|
||||
largest_other> // FalseType
|
||||
::type type; // The largest type of the two.
|
||||
|
||||
// The size of the largest type.
|
||||
enum
|
||||
{
|
||||
size = sizeof(type)
|
||||
};
|
||||
};
|
||||
// The size of the largest type.
|
||||
enum
|
||||
{
|
||||
size = sizeof(type)
|
||||
};
|
||||
};
|
||||
|
||||
//***************************************************************************
|
||||
// Specialisation for one template parameter.
|
||||
//***************************************************************************
|
||||
template <typename T1>
|
||||
struct largest_type<T1, void, void, void,
|
||||
void, void, void, void,
|
||||
void, void, void, void,
|
||||
void, void, void, void>
|
||||
{
|
||||
typedef T1 type;
|
||||
// Specialisation for one template parameter.
|
||||
//***************************************************************************
|
||||
template <typename T1>
|
||||
struct largest_type<T1, void, void, void,
|
||||
void, void, void, void,
|
||||
void, void, void, void,
|
||||
void, void, void, void>
|
||||
{
|
||||
typedef T1 type;
|
||||
|
||||
enum
|
||||
{
|
||||
size = sizeof(type)
|
||||
};
|
||||
};
|
||||
enum
|
||||
{
|
||||
size = sizeof(type)
|
||||
};
|
||||
};
|
||||
|
||||
//***************************************************************************
|
||||
/// Template to determine the largest alignment.
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user