1
0
mirror of https://github.com/TomHarte/CLK.git synced 2025-07-25 13:24:23 +00:00

Further doubles down on construction syntax for type conversions.

This commit is contained in:
Thomas Harte
2020-05-09 23:00:39 -04:00
parent 3729bddb2a
commit 25996ce180
114 changed files with 737 additions and 737 deletions

View File

@@ -24,9 +24,9 @@ struct Time {
unsigned int length, clock_rate;
Time() : length(0), clock_rate(1) {}
Time(unsigned int unsigned_int_value) : length(unsigned_int_value), clock_rate(1) {}
Time(int int_value) : Time(static_cast<unsigned int>(int_value)) {}
Time(int int_value) : Time(unsigned(int_value)) {}
Time(unsigned int length, unsigned int clock_rate) : length(length), clock_rate(clock_rate) {}
Time(int length, int clock_rate) : Time(static_cast<unsigned int>(length), static_cast<unsigned int>(clock_rate)) {}
Time(int length, int clock_rate) : Time(unsigned(length), unsigned(clock_rate)) {}
Time(uint64_t length, uint64_t clock_rate) {
install_result(length, clock_rate);
}
@@ -48,27 +48,27 @@ struct Time {
@returns the floating point conversion of this @c Time. This will often be less precise.
*/
template <typename T> T get() const {
return static_cast<T>(length) / static_cast<T>(clock_rate);
return T(length) / T(clock_rate);
}
inline bool operator < (const Time &other) const {
return (uint64_t)other.clock_rate * (uint64_t)length < (uint64_t)clock_rate * (uint64_t)other.length;
return uint64_t(other.clock_rate) * uint64_t(length) < uint64_t(clock_rate) * uint64_t(other.length);
}
inline bool operator <= (const Time &other) const {
return (uint64_t)other.clock_rate * (uint64_t)length <= (uint64_t)clock_rate * (uint64_t)other.length;
return uint64_t(other.clock_rate) * uint64_t(length) <= uint64_t(clock_rate) * uint64_t(other.length);
}
inline bool operator > (const Time &other) const {
return (uint64_t)other.clock_rate * (uint64_t)length > (uint64_t)clock_rate * (uint64_t)other.length;
return uint64_t(other.clock_rate) * uint64_t(length) > uint64_t(clock_rate) * uint64_t(other.length);
}
inline bool operator >= (const Time &other) const {
return (uint64_t)other.clock_rate * (uint64_t)length >= (uint64_t)clock_rate * (uint64_t)other.length;
return uint64_t(other.clock_rate) * uint64_t(length) >= uint64_t(clock_rate) * uint64_t(other.length);
}
inline bool operator == (const Time &other) const {
return (uint64_t)other.clock_rate * (uint64_t)length == (uint64_t)clock_rate * (uint64_t)other.length;
return uint64_t(other.clock_rate) * uint64_t(length) == uint64_t(clock_rate) * uint64_t(other.length);
}
inline Time operator + (const Time &other) const {
@@ -77,11 +77,11 @@ struct Time {
uint64_t result_length;
uint64_t result_clock_rate;
if(clock_rate == other.clock_rate) {
result_length = (uint64_t)length + (uint64_t)other.length;
result_length = uint64_t(length) + uint64_t(other.length);
result_clock_rate = clock_rate;
} else {
result_length = (uint64_t)length * (uint64_t)other.clock_rate + (uint64_t)other.length * (uint64_t)clock_rate;
result_clock_rate = (uint64_t)clock_rate * (uint64_t)other.clock_rate;
result_length = uint64_t(length) * uint64_t(other.clock_rate) + uint64_t(other.length) * uint64_t(clock_rate);
result_clock_rate = uint64_t(clock_rate) * uint64_t(other.clock_rate);
}
return Time(result_length, result_clock_rate);
}
@@ -96,11 +96,11 @@ struct Time {
uint64_t result_length;
uint64_t result_clock_rate;
if(clock_rate == other.clock_rate) {
result_length = (uint64_t)length + (uint64_t)other.length;
result_clock_rate = (uint64_t)clock_rate;
result_length = uint64_t(length) + uint64_t(other.length);
result_clock_rate = uint64_t(clock_rate);
} else {
result_length = (uint64_t)length * (uint64_t)other.clock_rate + (uint64_t)other.length * (uint64_t)clock_rate;
result_clock_rate = (uint64_t)clock_rate * (uint64_t)other.clock_rate;
result_length = uint64_t(length) * uint64_t(other.clock_rate) + uint64_t(other.length) * uint64_t(clock_rate);
result_clock_rate = uint64_t(clock_rate) * uint64_t(other.clock_rate);
}
install_result(result_length, result_clock_rate);
return *this;
@@ -112,11 +112,11 @@ struct Time {
uint64_t result_length;
uint64_t result_clock_rate;
if(clock_rate == other.clock_rate) {
result_length = (uint64_t)length - (uint64_t)other.length;
result_length = uint64_t(length) - uint64_t(other.length);
result_clock_rate = clock_rate;
} else {
result_length = (uint64_t)length * (uint64_t)other.clock_rate - (uint64_t)other.length * (uint64_t)clock_rate;
result_clock_rate = (uint64_t)clock_rate * (uint64_t)other.clock_rate;
result_length = uint64_t(length) * uint64_t(other.clock_rate) - uint64_t(other.length) * uint64_t(clock_rate);
result_clock_rate = uint64_t(clock_rate) * uint64_t(other.clock_rate);
}
return Time(result_length, result_clock_rate);
}
@@ -127,64 +127,64 @@ struct Time {
uint64_t result_length;
uint64_t result_clock_rate;
if(clock_rate == other.clock_rate) {
result_length = (uint64_t)length - (uint64_t)other.length;
result_clock_rate = (uint64_t)clock_rate;
result_length = uint64_t(length) - uint64_t(other.length);
result_clock_rate = uint64_t(clock_rate);
} else {
result_length = (uint64_t)length * (uint64_t)other.clock_rate - (uint64_t)other.length * (uint64_t)clock_rate;
result_clock_rate = (uint64_t)clock_rate * (uint64_t)other.clock_rate;
result_length = uint64_t(length) * uint64_t(other.clock_rate) - uint64_t(other.length) * uint64_t(clock_rate);
result_clock_rate = uint64_t(clock_rate) * uint64_t(other.clock_rate);
}
install_result(result_length, result_clock_rate);
return *this;
}
inline Time operator * (const Time &other) const {
uint64_t result_length = (uint64_t)length * (uint64_t)other.length;
uint64_t result_clock_rate = (uint64_t)clock_rate * (uint64_t)other.clock_rate;
uint64_t result_length = uint64_t(length) * uint64_t(other.length);
uint64_t result_clock_rate = uint64_t(clock_rate) * uint64_t(other.clock_rate);
return Time(result_length, result_clock_rate);
}
inline Time &operator *= (const Time &other) {
uint64_t result_length = (uint64_t)length * (uint64_t)other.length;
uint64_t result_clock_rate = (uint64_t)clock_rate * (uint64_t)other.clock_rate;
uint64_t result_length = uint64_t(length) * uint64_t(other.length);
uint64_t result_clock_rate = uint64_t(clock_rate) * uint64_t(other.clock_rate);
install_result(result_length, result_clock_rate);
return *this;
}
inline Time operator * (unsigned int multiplier) const {
uint64_t result_length = (uint64_t)length * (uint64_t)multiplier;
uint64_t result_clock_rate = (uint64_t)clock_rate;
uint64_t result_length = uint64_t(length) * uint64_t(multiplier);
uint64_t result_clock_rate = uint64_t(clock_rate);
return Time(result_length, result_clock_rate);
}
inline Time &operator *= (unsigned int multiplier) {
uint64_t result_length = (uint64_t)length * (uint64_t)multiplier;
uint64_t result_clock_rate = (uint64_t)clock_rate;
uint64_t result_length = uint64_t(length) * uint64_t(multiplier);
uint64_t result_clock_rate = uint64_t(clock_rate);
install_result(result_length, result_clock_rate);
return *this;
}
inline Time operator / (const Time &other) const {
uint64_t result_length = (uint64_t)length * (uint64_t)other.clock_rate;
uint64_t result_clock_rate = (uint64_t)clock_rate * (uint64_t)other.length;
uint64_t result_length = uint64_t(length) * uint64_t(other.clock_rate);
uint64_t result_clock_rate = uint64_t(clock_rate) * uint64_t(other.length);
return Time(result_length, result_clock_rate);
}
inline Time &operator /= (const Time &other) {
uint64_t result_length = (uint64_t)length * (uint64_t)other.clock_rate;
uint64_t result_clock_rate = (uint64_t)clock_rate * (uint64_t)other.length;
uint64_t result_length = uint64_t(length) * uint64_t(other.clock_rate);
uint64_t result_clock_rate = uint64_t(clock_rate) * uint64_t(other.length);
install_result(result_length, result_clock_rate);
return *this;
}
inline Time operator / (unsigned int divisor) const {
uint64_t result_length = (uint64_t)length;
uint64_t result_clock_rate = (uint64_t)clock_rate * (uint64_t)divisor;
uint64_t result_length = uint64_t(length);
uint64_t result_clock_rate = uint64_t(clock_rate) * uint64_t(divisor);
return Time(result_length, result_clock_rate);
}
inline Time &operator /= (unsigned int divisor) {
uint64_t result_length = (uint64_t)length;
uint64_t result_clock_rate = (uint64_t)clock_rate * (uint64_t)divisor;
uint64_t result_length = uint64_t(length);
uint64_t result_clock_rate = uint64_t(clock_rate) * uint64_t(divisor);
install_result(result_length, result_clock_rate);
return *this;
}
@@ -206,8 +206,8 @@ struct Time {
private:
inline void install_result(uint64_t long_length, uint64_t long_clock_rate) {
if(long_length <= std::numeric_limits<unsigned int>::max() && long_clock_rate <= std::numeric_limits<unsigned int>::max()) {
length = static_cast<unsigned int>(long_length);
clock_rate = static_cast<unsigned int>(long_clock_rate);
length = unsigned(long_length);
clock_rate = unsigned(long_clock_rate);
return;
}
@@ -243,8 +243,8 @@ struct Time {
}
if(long_length <= std::numeric_limits<unsigned int>::max() && long_clock_rate <= std::numeric_limits<unsigned int>::max()) {
length = static_cast<unsigned int>(long_length);
clock_rate = static_cast<unsigned int>(long_clock_rate);
length = unsigned(long_length);
clock_rate = unsigned(long_clock_rate);
} else {
length = std::numeric_limits<unsigned int>::max();
clock_rate = 1u;