Demonstrates the qtty-cpp quantity API.
Demonstrates the qtty-cpp quantity API.
#include <iostream>
#include <iomanip>
std::cout << "=== qtty-cpp Demo ===" << std::endl;
std::cout << "FFI ABI Version: " << abi_version() << "\n" << std::endl;
std::cout << "1. Distance Conversion:" << std::endl;
std::cout <<
" Distance: " << distance.
value() <<
" m" << std::endl;
std::cout <<
" Distance: " << km.
value() <<
" km" << std::endl;
std::cout << "\n2. Using Literals:" << std::endl;
auto height = 10.5_m;
auto width = 5.0_m;
auto area_side = height + width;
std::cout << " Height: " << height.value() << " m" << std::endl;
std::cout << " Width: " << width.value() << " m" << std::endl;
std::cout << " Sum: " << area_side.value() << " m" << std::endl;
std::cout << "\n3. Velocity Calculation:" << std::endl;
auto car_distance = 100.0_km;
auto travel_time = 2.0_h;
auto speed = car_distance / travel_time;
std::cout << " Distance: " << car_distance.value() << " km" << std::endl;
std::cout << " Time: " << travel_time.value() << " h" << std::endl;
std::cout << " Speed: " << speed.value() << " km/h" << std::endl;
std::cout << "\n4. Angular Conversions:" << std::endl;
auto angle_deg = 180.0_deg;
std::cout <<
" Angle: " << angle_deg.
value() <<
" degrees" << std::endl;
std::cout << std::setprecision(6);
std::cout <<
" Angle: " << angle_rad.
value() <<
" radians" << std::endl;
std::cout << "\n5. Time Conversions:" << std::endl;
auto duration_seconds = 3665.0_s;
Hour duration_hours = duration_seconds.
to<
Hour>();
std::cout <<
" Duration: " << duration_seconds.
value() <<
" seconds" << std::endl;
std::cout << std::setprecision(4);
std::cout <<
" Duration: " << duration_hours.
value() <<
" hours" << std::endl;
std::cout << std::setprecision(2);
std::cout << " Duration: " << duration_minutes.value() << " minutes" << std::endl;
std::cout << "\n6. Compound Operations:" << std::endl;
std::cout <<
" Initial: " << total.
value() <<
" m" << std::endl;
total += 50.0_m;
std::cout <<
" After += 50m: " << total.
value() <<
" m" << std::endl;
total *= 2.0;
std::cout <<
" After *= 2: " << total.
value() <<
" m" << std::endl;
total /= 3.0;
std::cout << std::setprecision(2) << std::fixed;
std::cout <<
" After /= 3: " << total.
value() <<
" m" << std::endl;
std::cout << "\n7. Comparisons:" << std::endl;
auto length1 = 10.0_m;
auto length2 = 5.0_m;
std::cout << " " << length1.value() << "m > " << length2.value() << "m? "
<< (length1 > length2 ? "Yes" : "No") << std::endl;
std::cout << " " << length1.value() << "m == " << length2.value() << "m? "
<< (length1 == length2 ? "Yes" : "No") << std::endl;
std::cout << "\n8. Absolute Value and Negation:" << std::endl;
auto positive = negative.
abs();
auto double_negative = -negative;
std::cout <<
" Original: " << negative.
value() <<
" m" << std::endl;
std::cout << " Absolute: " << positive.value() << " m" << std::endl;
std::cout << " Negated: " << double_negative.value() << " m" << std::endl;
std::cout << "\n=== All examples completed successfully! ===" << std::endl;
return 0;
}
constexpr double value() const
Quantity< typename ExtractTag< TargetType >::type > to() const
Main header for the qtty C++ wrapper library.