qtty-cpp
Header-only C++ wrapper for qtty
Loading...
Searching...
No Matches
demo.cpp
Go to the documentation of this file.
1
7#include <iostream>
8#include <iomanip>
9#include "qtty/qtty.hpp"
10
11using namespace qtty;
12
13int main() {
14 std::cout << "=== qtty-cpp Demo ===" << std::endl;
15 std::cout << "FFI ABI Version: " << abi_version() << "\n" << std::endl;
16
17 // Example 1: Basic construction and conversion
18 std::cout << "1. Distance Conversion:" << std::endl;
19 Meter distance(1500.0);
20 std::cout << " Distance: " << distance.value() << " m" << std::endl;
21
22 Kilometer km = distance.to<Kilometer>();
23 std::cout << " Distance: " << km.value() << " km" << std::endl;
24
25 // Example 2: Using literals
26 std::cout << "\n2. Using Literals:" << std::endl;
27 auto height = 10.5_m;
28 auto width = 5.0_m;
29 auto area_side = height + width;
30 std::cout << " Height: " << height.value() << " m" << std::endl;
31 std::cout << " Width: " << width.value() << " m" << std::endl;
32 std::cout << " Sum: " << area_side.value() << " m" << std::endl;
33
34 // Example 3: Velocity calculation
35 std::cout << "\n3. Velocity Calculation:" << std::endl;
36 auto car_distance = 100.0_km;
37 auto travel_time = 2.0_h;
38 auto speed = car_distance / travel_time;
39 std::cout << " Distance: " << car_distance.value() << " km" << std::endl;
40 std::cout << " Time: " << travel_time.value() << " h" << std::endl;
41 std::cout << " Speed: " << speed.value() << " km/h" << std::endl;
42
43 // Example 4: Angular conversions
44 std::cout << "\n4. Angular Conversions:" << std::endl;
45 auto angle_deg = 180.0_deg;
46 Radian angle_rad = angle_deg.to<Radian>();
47 std::cout << " Angle: " << angle_deg.value() << " degrees" << std::endl;
48 std::cout << std::setprecision(6);
49 std::cout << " Angle: " << angle_rad.value() << " radians" << std::endl;
50
51 // Example 5: Time conversions
52 std::cout << "\n5. Time Conversions:" << std::endl;
53 auto duration_seconds = 3665.0_s;
54 Hour duration_hours = duration_seconds.to<Hour>();
55 Minute duration_minutes = duration_seconds.to<Minute>();
56 std::cout << " Duration: " << duration_seconds.value() << " seconds" << std::endl;
57 std::cout << std::setprecision(4);
58 std::cout << " Duration: " << duration_hours.value() << " hours" << std::endl;
59 std::cout << std::setprecision(2);
60 std::cout << " Duration: " << duration_minutes.value() << " minutes" << std::endl;
61
62 // Example 6: Compound operations
63 std::cout << "\n6. Compound Operations:" << std::endl;
64 Meter total(100.0);
65 std::cout << " Initial: " << total.value() << " m" << std::endl;
66
67 total += 50.0_m;
68 std::cout << " After += 50m: " << total.value() << " m" << std::endl;
69
70 total *= 2.0;
71 std::cout << " After *= 2: " << total.value() << " m" << std::endl;
72
73 total /= 3.0;
74 std::cout << std::setprecision(2) << std::fixed;
75 std::cout << " After /= 3: " << total.value() << " m" << std::endl;
76
77 // Example 7: Comparisons
78 std::cout << "\n7. Comparisons:" << std::endl;
79 auto length1 = 10.0_m;
80 auto length2 = 5.0_m;
81 std::cout << " " << length1.value() << "m > " << length2.value() << "m? "
82 << (length1 > length2 ? "Yes" : "No") << std::endl;
83 std::cout << " " << length1.value() << "m == " << length2.value() << "m? "
84 << (length1 == length2 ? "Yes" : "No") << std::endl;
85
86 // Example 8: Absolute value and negation
87 std::cout << "\n8. Absolute Value and Negation:" << std::endl;
88 Meter negative(-42.5);
89 auto positive = negative.abs();
90 auto double_negative = -negative;
91 std::cout << " Original: " << negative.value() << " m" << std::endl;
92 std::cout << " Absolute: " << positive.value() << " m" << std::endl;
93 std::cout << " Negated: " << double_negative.value() << " m" << std::endl;
94
95 std::cout << "\n=== All examples completed successfully! ===" << std::endl;
96
97 return 0;
98}
Quantity abs() const
Definition ffi_core.hpp:288
constexpr double value() const
Definition ffi_core.hpp:152
Quantity< typename ExtractTag< TargetType >::type > to() const
Definition ffi_core.hpp:171
int main()
Definition demo.cpp:13
uint32_t abi_version()
Get the ABI version of the underlying qtty-ffi library.
Definition qtty.hpp:62
Main header for the qtty C++ wrapper library.