Skip to content

Commit daee112

Browse files
authored
Replace inferred literal types (#24)
Replace inferred types of literals with fundamental types.
1 parent a2660d2 commit daee112

File tree

5 files changed

+110
-81
lines changed

5 files changed

+110
-81
lines changed

src/FixedPoints/Details.h

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -135,17 +135,6 @@ namespace FIXED_POINTS_DETAILS
135135
IdentityMask(void) = delete;
136136
constexpr const static LeastUInt<0> Value = 0;
137137
};
138-
139-
using IntegerLiteral = decltype(0);
140-
using IntegerLiteralU = decltype(0U);
141-
using IntegerLiteralL = decltype(0L);
142-
using IntegerLiteralUL = decltype(0UL);
143-
using IntegerLiteralLL = decltype(0LL);
144-
using IntegerLiteralULL = decltype(0ULL);
145-
146-
using DecimalLiteral = decltype(0.0);
147-
using DecimalLiteralF = decltype(0.0F);
148-
using DecimalLiteralL = decltype(0.0L);
149138

150139
#if !defined(FIXED_POINTS_NO_RANDOM)
151140
template< typename T >

src/FixedPoints/SFixedBase.h

Lines changed: 41 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -47,32 +47,47 @@ namespace FIXED_POINTS_DETAILS
4747
constexpr SFixedBase(const RawType & value) : value(static_cast<InternalType>(value)) {}
4848

4949
public:
50-
constexpr SFixedBase(const IntegerLiteral & value)
51-
: value(static_cast<InternalType>(static_cast<LargerType<IntegerLiteral, InternalType> >(value) << Fraction)) {}
52-
53-
constexpr SFixedBase(const IntegerLiteralU & value)
54-
: value(static_cast<InternalType>(static_cast<LargerType<IntegerLiteralU, InternalType> >(value) << Fraction)) {}
55-
56-
constexpr SFixedBase(const IntegerLiteralL & value)
57-
: value(static_cast<InternalType>(static_cast<LargerType<IntegerLiteralL, InternalType> >(value) << Fraction)) {}
58-
59-
constexpr SFixedBase(const IntegerLiteralUL & value)
60-
: value(static_cast<InternalType>(static_cast<LargerType<IntegerLiteralUL, InternalType>>(value) << Fraction)) {}
61-
62-
constexpr SFixedBase(const IntegerLiteralLL & value)
63-
: value(static_cast<InternalType>(static_cast<LargerType<IntegerLiteralLL, InternalType>>(value) << Fraction)) {}
64-
65-
constexpr SFixedBase(const IntegerLiteralULL & value)
66-
: value(static_cast<InternalType>(static_cast<LargerType<IntegerLiteralULL, InternalType> >(value) << Fraction)) {}
67-
68-
constexpr SFixedBase(const DecimalLiteral & value)
69-
: value(static_cast<InternalType>(value * Scale)) {}
70-
71-
constexpr SFixedBase(const DecimalLiteralF & value)
72-
: value(static_cast<InternalType>(value * Scale)) {}
73-
74-
constexpr SFixedBase(const DecimalLiteralL & value)
75-
: value(static_cast<InternalType>(value * Scale)) {}
50+
constexpr SFixedBase(const char & value)
51+
: value(static_cast<InternalType>(static_cast< LargerType<char, InternalType> >(value) << Fraction)) {}
52+
53+
constexpr SFixedBase(const unsigned char & value)
54+
: value(static_cast<InternalType>(static_cast< LargerType<unsigned char, InternalType> >(value) << Fraction)) {}
55+
56+
constexpr SFixedBase(const signed char & value)
57+
: value(static_cast<InternalType>(static_cast< LargerType<signed char, InternalType> >(value) << Fraction)) {}
58+
59+
constexpr SFixedBase(const unsigned short int & value)
60+
: value(static_cast<InternalType>(static_cast< LargerType<unsigned short int, InternalType> >(value) << Fraction)) {}
61+
62+
constexpr SFixedBase(const signed short int & value)
63+
: value(static_cast<InternalType>(static_cast< LargerType<signed short int, InternalType> >(value) << Fraction)) {}
64+
65+
constexpr SFixedBase(const unsigned int & value)
66+
: value(static_cast<InternalType>(static_cast< LargerType<unsigned int, InternalType> >(value) << Fraction)) {}
67+
68+
constexpr SFixedBase(const signed int & value)
69+
: value(static_cast<InternalType>(static_cast< LargerType<signed int, InternalType> >(value) << Fraction)) {}
70+
71+
constexpr SFixedBase(const unsigned long int & value)
72+
: value(static_cast<InternalType>(static_cast< LargerType<unsigned long int, InternalType> >(value) << Fraction)) {}
73+
74+
constexpr SFixedBase(const signed long int & value)
75+
: value(static_cast<InternalType>(static_cast< LargerType<signed long int, InternalType> >(value) << Fraction)) {}
76+
77+
constexpr SFixedBase(const unsigned long long int & value)
78+
: value(static_cast<InternalType>(static_cast< LargerType<unsigned long long int, InternalType> >(value) << Fraction)) {}
79+
80+
constexpr SFixedBase(const signed long long int & value)
81+
: value(static_cast<InternalType>(static_cast< LargerType<signed long long int, InternalType> >(value) << Fraction)) {}
82+
83+
constexpr SFixedBase(const double & value)
84+
: value(static_cast<InternalType>(value * static_cast<double>(Scale))) {}
85+
86+
constexpr SFixedBase(const float & value)
87+
: value(static_cast<InternalType>(value * static_cast<float>(Scale))) {}
88+
89+
constexpr SFixedBase(const long double & value)
90+
: value(static_cast<InternalType>(value * static_cast<long double>(Scale))) {}
7691
};
7792
}
7893
FIXED_POINTS_END_NAMESPACE

src/FixedPoints/SFixedFreeFunctions.h

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -275,15 +275,20 @@ constexpr auto operator /(const SFixed<IntegerLeft, FractionLeft> & left, const
275275
}
276276

277277
#define OPERATORS( opType, op ) \
278-
opType##_OPERATOR( FIXED_POINTS_DETAILS::IntegerLiteral, op )\
279-
opType##_OPERATOR( FIXED_POINTS_DETAILS::IntegerLiteralU, op )\
280-
opType##_OPERATOR( FIXED_POINTS_DETAILS::IntegerLiteralL, op )\
281-
opType##_OPERATOR( FIXED_POINTS_DETAILS::IntegerLiteralUL, op )\
282-
opType##_OPERATOR( FIXED_POINTS_DETAILS::IntegerLiteralLL, op )\
283-
opType##_OPERATOR( FIXED_POINTS_DETAILS::IntegerLiteralULL, op )\
284-
opType##_OPERATOR( FIXED_POINTS_DETAILS::DecimalLiteral, op )\
285-
opType##_OPERATOR( FIXED_POINTS_DETAILS::DecimalLiteralF, op )\
286-
opType##_OPERATOR( FIXED_POINTS_DETAILS::DecimalLiteralL, op )
278+
opType##_OPERATOR( char, op )\
279+
opType##_OPERATOR( unsigned char, op )\
280+
opType##_OPERATOR( signed char, op )\
281+
opType##_OPERATOR( unsigned short int, op )\
282+
opType##_OPERATOR( signed short int, op )\
283+
opType##_OPERATOR( unsigned int, op )\
284+
opType##_OPERATOR( signed int, op )\
285+
opType##_OPERATOR( unsigned long int, op )\
286+
opType##_OPERATOR( signed long int, op )\
287+
opType##_OPERATOR( unsigned long long int, op )\
288+
opType##_OPERATOR( signed long long int, op )\
289+
opType##_OPERATOR( float, op )\
290+
opType##_OPERATOR( double, op )\
291+
opType##_OPERATOR( long double, op )
287292

288293
#define LOGIC_OPERATORS( op ) OPERATORS( LOGIC, op )
289294
#define ARITHMETIC_OPERATORS( op ) OPERATORS( ARITHMETIC, op )

src/FixedPoints/UFixedBase.h

Lines changed: 41 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -47,32 +47,47 @@ namespace FIXED_POINTS_DETAILS
4747
constexpr UFixedBase(const RawType & value) : value(static_cast<InternalType>(value)) {}
4848

4949
public:
50-
constexpr UFixedBase(const IntegerLiteral & value)
51-
: value(static_cast<InternalType>(static_cast< LargerType<IntegerLiteral, InternalType> >(value) << Fraction)) {}
52-
53-
constexpr UFixedBase(const IntegerLiteralU & value)
54-
: value(static_cast<InternalType>(static_cast< LargerType<IntegerLiteralU, InternalType> >(value) << Fraction)) {}
55-
56-
constexpr UFixedBase(const IntegerLiteralL & value)
57-
: value(static_cast<InternalType>(static_cast< LargerType<IntegerLiteralL, InternalType> >(value) << Fraction)) {}
58-
59-
constexpr UFixedBase(const IntegerLiteralUL & value)
60-
: value(static_cast<InternalType>(static_cast< LargerType<IntegerLiteralUL, InternalType>>(value) << Fraction)) {}
61-
62-
constexpr UFixedBase(const IntegerLiteralLL & value)
63-
: value(static_cast<InternalType>(static_cast< LargerType<IntegerLiteralLL, InternalType>>(value) << Fraction)) {}
64-
65-
constexpr UFixedBase(const IntegerLiteralULL & value)
66-
: value(static_cast<InternalType>(static_cast< LargerType<IntegerLiteralULL, InternalType> >(value) << Fraction)) {}
67-
68-
constexpr UFixedBase(const DecimalLiteral & value)
69-
: value(static_cast<InternalType>(value * Scale)) {}
70-
71-
constexpr UFixedBase(const DecimalLiteralF & value)
72-
: value(static_cast<InternalType>(value * Scale)) {}
73-
74-
constexpr UFixedBase(const DecimalLiteralL & value)
75-
: value(static_cast<InternalType>(value * Scale)) {}
50+
constexpr UFixedBase(const char & value)
51+
: value(static_cast<InternalType>(static_cast< LargerType<char, InternalType> >(value) << Fraction)) {}
52+
53+
constexpr UFixedBase(const unsigned char & value)
54+
: value(static_cast<InternalType>(static_cast< LargerType<unsigned char, InternalType> >(value) << Fraction)) {}
55+
56+
constexpr UFixedBase(const signed char & value)
57+
: value(static_cast<InternalType>(static_cast< LargerType<signed char, InternalType> >(value) << Fraction)) {}
58+
59+
constexpr UFixedBase(const unsigned short int & value)
60+
: value(static_cast<InternalType>(static_cast< LargerType<unsigned short int, InternalType> >(value) << Fraction)) {}
61+
62+
constexpr UFixedBase(const signed short int & value)
63+
: value(static_cast<InternalType>(static_cast< LargerType<signed short int, InternalType> >(value) << Fraction)) {}
64+
65+
constexpr UFixedBase(const unsigned int & value)
66+
: value(static_cast<InternalType>(static_cast< LargerType<unsigned int, InternalType> >(value) << Fraction)) {}
67+
68+
constexpr UFixedBase(const signed int & value)
69+
: value(static_cast<InternalType>(static_cast< LargerType<signed int, InternalType> >(value) << Fraction)) {}
70+
71+
constexpr UFixedBase(const unsigned long int & value)
72+
: value(static_cast<InternalType>(static_cast< LargerType<unsigned long int, InternalType> >(value) << Fraction)) {}
73+
74+
constexpr UFixedBase(const signed long int & value)
75+
: value(static_cast<InternalType>(static_cast< LargerType<signed long int, InternalType> >(value) << Fraction)) {}
76+
77+
constexpr UFixedBase(const unsigned long long int & value)
78+
: value(static_cast<InternalType>(static_cast< LargerType<unsigned long long int, InternalType> >(value) << Fraction)) {}
79+
80+
constexpr UFixedBase(const signed long long int & value)
81+
: value(static_cast<InternalType>(static_cast< LargerType<signed long long int, InternalType> >(value) << Fraction)) {}
82+
83+
constexpr UFixedBase(const double & value)
84+
: value(static_cast<InternalType>(value * static_cast<double>(Scale))) {}
85+
86+
constexpr UFixedBase(const float & value)
87+
: value(static_cast<InternalType>(value * static_cast<float>(Scale))) {}
88+
89+
constexpr UFixedBase(const long double & value)
90+
: value(static_cast<InternalType>(value * static_cast<long double>(Scale))) {}
7691
};
7792
}
7893
FIXED_POINTS_END_NAMESPACE

src/FixedPoints/UFixedFreeFunctions.h

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -275,15 +275,20 @@ constexpr auto operator /(const UFixed<IntegerLeft, FractionLeft> & left, const
275275
}
276276

277277
#define OPERATORS( opType, op ) \
278-
opType##_OPERATOR( FIXED_POINTS_DETAILS::IntegerLiteral, op )\
279-
opType##_OPERATOR( FIXED_POINTS_DETAILS::IntegerLiteralU, op )\
280-
opType##_OPERATOR( FIXED_POINTS_DETAILS::IntegerLiteralL, op )\
281-
opType##_OPERATOR( FIXED_POINTS_DETAILS::IntegerLiteralUL, op )\
282-
opType##_OPERATOR( FIXED_POINTS_DETAILS::IntegerLiteralLL, op )\
283-
opType##_OPERATOR( FIXED_POINTS_DETAILS::IntegerLiteralULL, op )\
284-
opType##_OPERATOR( FIXED_POINTS_DETAILS::DecimalLiteral, op )\
285-
opType##_OPERATOR( FIXED_POINTS_DETAILS::DecimalLiteralF, op )\
286-
opType##_OPERATOR( FIXED_POINTS_DETAILS::DecimalLiteralL, op )
278+
opType##_OPERATOR( char, op )\
279+
opType##_OPERATOR( unsigned char, op )\
280+
opType##_OPERATOR( signed char, op )\
281+
opType##_OPERATOR( unsigned short int, op )\
282+
opType##_OPERATOR( signed short int, op )\
283+
opType##_OPERATOR( unsigned int, op )\
284+
opType##_OPERATOR( signed int, op )\
285+
opType##_OPERATOR( unsigned long int, op )\
286+
opType##_OPERATOR( signed long int, op )\
287+
opType##_OPERATOR( unsigned long long int, op )\
288+
opType##_OPERATOR( signed long long int, op )\
289+
opType##_OPERATOR( float, op )\
290+
opType##_OPERATOR( double, op )\
291+
opType##_OPERATOR( long double, op )
287292

288293
#define LOGIC_OPERATORS( op ) OPERATORS( LOGIC, op )
289294
#define ARITHMETIC_OPERATORS( op ) OPERATORS( ARITHMETIC, op )

0 commit comments

Comments
 (0)