@node Macros @chapter Macros @file{} defines a small set of macros suitable for using a @code{#if} preprocessing directives. @table @code @item LIBRED_IS_TWILIGHT(const double) Evaluates to 1 if the given expression is between @math{-18.0} and 0.0 (this is, between @code{LIBRED_SOLAR_ELEVATION_ASTRONOMICAL_DUSK_DAWN} and @code{LIBRED_SOLAR_ELEVATION_SUNSET_SUNRISE}), inclusively, otherwise, this macro evaluates to 0. The input should be the Sun's apparent elevation, and the macro evaluates to 1 if it is currently twilight. The given expression is evaluted either once or twice, therefore, it must not have side-effects. @item LIBRED_IS_CIVIL_TWILIGHT(const double) Evaluates to 1 if the given expression is between @math{-6.0} and 0.0 (this is, between @code{LIBRED_SOLAR_ELEVATION_CIVIL_DUSK_DAWN} and @code{LIBRED_SOLAR_ELEVATION_SUNSET_SUNRISE}), inclusively, otherwise, this macro evaluates to 0. The input should be the Sun's apparent elevation, and the macro evaluates to 1 if it is currently civil twilight. The given expression is evaluted either once or twice, therefore, it must not have side-effects. @item LIBRED_IS_NAUTICAL_TWILIGHT(const double) Evaluates to 1 if the given expression is between @math{-12.0} and @math{-6.0} (this is, between @code{LIBRED_SOLAR_ELEVATION_NAUTICAL_DUSK_DAWN} and @code{LIBRED_SOLAR_ELEVATION_CIVIL_DUSK_DAWN}), inclusively, otherwise, this macro evaluates to 0. The input should be the Sun's apparent elevation, and the macro evaluates to 1 if it is currently nautical twilight. The given expression is evaluted either once or twice, therefore, it must not have side-effects. @item LIBRED_IS_ASTRONOMICAL_TWILIGHT(const double) Evaluates to 1 if the given expression is between @math{-18.0} and @math{-12.0} (this is, between @code{LIBRED_SOLAR_ELEVATION_ASTRONOMICAL_DUSK_DAWN} and @code{LIBRED_SOLAR_ELEVATION_NAUTICAL_DUSK_DAWN}), inclusively, otherwise, this macro evaluates to 0. The input should be the Sun's apparent elevation, and the macro evaluates to 1 if it is currently astronomical twilight. The given expression is evaluted either once or twice, therefore, it must not have side-effects. @end table