From 8d461d793e3619f1e9e9eaa03dac668a10db5a33 Mon Sep 17 00:00:00 2001 From: Dmitry Kokorin Date: Wed, 16 Mar 2016 00:44:19 +0300 Subject: [PATCH] space_age: iteration 1, X-macros version --- cpp/space-age/space_age.cpp | 56 +++++++++++++------------------------ 1 file changed, 20 insertions(+), 36 deletions(-) diff --git a/cpp/space-age/space_age.cpp b/cpp/space-age/space_age.cpp index 1bad6c9..70780a8 100644 --- a/cpp/space-age/space_age.cpp +++ b/cpp/space-age/space_age.cpp @@ -2,6 +2,25 @@ namespace space_age { +#define PLANET_TABLE \ + X(on_mercury, 0.2408467) \ + X(on_venus, 0.61519726) \ + X(on_mars, 1.8808158) \ + X(on_jupiter, 11.862615) \ + X(on_saturn, 29.447498) \ + X(on_uranus, 84.016846) \ + X(on_neptune, 164.79132) + +#define X(a, b) \ + double space_age:: a () const \ + { \ + return on_earth() / b; \ + } + + PLANET_TABLE +#undef X + + space_age::space_age(double seconds) : seconds_(seconds) { @@ -12,44 +31,9 @@ double space_age::seconds() const return seconds_; } -double space_age::on_earth() const +double space_age::on_earth() const { return seconds() / 31557600; } -double space_age::on_mercury() const -{ - return on_earth() / 0.2408467; -} - -double space_age::on_venus() const -{ - return on_earth() / 0.61519726; -} - -double space_age::on_mars() const -{ - return on_earth() / 1.8808158; -} - -double space_age::on_jupiter() const -{ - return on_earth() / 11.862615; -} - -double space_age::on_saturn() const -{ - return on_earth() / 29.447498; -} - -double space_age::on_uranus() const -{ - return on_earth() / 84.016846; -} - -double space_age::on_neptune() const -{ - return on_earth() / 164.79132; -} - }