diff options
author | Jon Trowbridge <trow@gnu.org> | 2001-06-05 20:59:02 +0000 |
---|---|---|
committer | Havoc Pennington <hp@src.gnome.org> | 2001-06-05 20:59:02 +0000 |
commit | 4d2b54ff8b3daff5ef6dfe41e24b69d51a80a022 (patch) | |
tree | 4180e9b65740909b4dc64df769a116279a258154 /gdate.c | |
parent | 96ba1917d82d1712677f2b7b3348b9e9fc231a98 (diff) | |
download | glib-4d2b54ff8b3daff5ef6dfe41e24b69d51a80a022.tar.gz |
Changed to take a const argument, and then to cast out const.
2001-06-01 Jon Trowbridge <trow@gnu.org>
* gdate.c (g_date_update_julian): Changed to take a const
argument, and then to cast out const.
(g_date_update_dmy): Changed to take a const argument, and then
cast out const.
(g_date_get_weekday): Changed argument to be const.
(g_date_get_month): Changed argument to be const.
(g_date_get_year): Changed argument to be const.
(g_date_get_day): Changed argument to be const.
(g_date_get_julian): Changed argument to be const.
(g_date_get_day_of_year): Changed argument to be const.
(g_date_get_monday_week_of_year): Changed argument to be const.
(g_date_get_sunday_week_of_year): Changed argument to be const.
(g_date_compare): Changed arguments to be const.
(g_date_to_struct_tm): Changed GDate argument to be const.
(g_date_strftime): Changed GDate argument to be const.
(g_date_clamp): Added. The equivalent of the CLAMP macro for
GDates.
(g_date_order): Added. Ensure that the first GDate argument
preceeds the second, swapping them if necessary.
(g_date_days_between): Added. Computes the (signed) number of days
between two dates.
Diffstat (limited to 'gdate.c')
-rw-r--r-- | gdate.c | 86 |
1 files changed, 69 insertions, 17 deletions
@@ -100,7 +100,7 @@ g_date_free (GDate *d) } gboolean -g_date_valid (GDate *d) +g_date_valid (const GDate *d) { g_return_val_if_fail (d != NULL, FALSE); @@ -167,8 +167,9 @@ g_date_valid_dmy (GDateDay d, * Jan 1, Year 1 */ static void -g_date_update_julian (GDate *d) +g_date_update_julian (const GDate *const_d) { + GDate *d = (GDate *) const_d; GDateYear year; gint index; @@ -201,8 +202,9 @@ g_date_update_julian (GDate *d) } static void -g_date_update_dmy (GDate *d) +g_date_update_dmy (const GDate *const_d) { + GDate *d = (GDate *) const_d; GDateYear y; GDateMonth m; GDateDay day; @@ -249,7 +251,7 @@ g_date_update_dmy (GDate *d) } GDateWeekday -g_date_get_weekday (GDate *d) +g_date_get_weekday (const GDate *d) { g_return_val_if_fail (d != NULL, G_DATE_BAD_WEEKDAY); g_return_val_if_fail (g_date_valid (d), G_DATE_BAD_WEEKDAY); @@ -264,7 +266,7 @@ g_date_get_weekday (GDate *d) } GDateMonth -g_date_get_month (GDate *d) +g_date_get_month (const GDate *d) { g_return_val_if_fail (d != NULL, G_DATE_BAD_MONTH); g_return_val_if_fail (g_date_valid (d), G_DATE_BAD_MONTH); @@ -279,7 +281,7 @@ g_date_get_month (GDate *d) } GDateYear -g_date_get_year (GDate *d) +g_date_get_year (const GDate *d) { g_return_val_if_fail (d != NULL, G_DATE_BAD_YEAR); g_return_val_if_fail (g_date_valid (d), G_DATE_BAD_YEAR); @@ -294,7 +296,7 @@ g_date_get_year (GDate *d) } GDateDay -g_date_get_day (GDate *d) +g_date_get_day (const GDate *d) { g_return_val_if_fail (d != NULL, G_DATE_BAD_DAY); g_return_val_if_fail (g_date_valid (d), G_DATE_BAD_DAY); @@ -309,7 +311,7 @@ g_date_get_day (GDate *d) } guint32 -g_date_get_julian (GDate *d) +g_date_get_julian (const GDate *d) { g_return_val_if_fail (d != NULL, G_DATE_BAD_JULIAN); g_return_val_if_fail (g_date_valid (d), G_DATE_BAD_JULIAN); @@ -324,7 +326,7 @@ g_date_get_julian (GDate *d) } guint -g_date_get_day_of_year (GDate *d) +g_date_get_day_of_year (const GDate *d) { gint index; @@ -343,7 +345,7 @@ g_date_get_day_of_year (GDate *d) } guint -g_date_get_monday_week_of_year (GDate *d) +g_date_get_monday_week_of_year (const GDate *d) { GDateWeekday wd; guint day; @@ -369,7 +371,7 @@ g_date_get_monday_week_of_year (GDate *d) } guint -g_date_get_sunday_week_of_year (GDate *d) +g_date_get_sunday_week_of_year (const GDate *d) { GDateWeekday wd; guint day; @@ -395,6 +397,19 @@ g_date_get_sunday_week_of_year (GDate *d) return ((day + wd)/7U + (wd == 0 ? 1 : 0)); } +gint +g_date_days_between (const GDate *d1, + const GDate *d2) +{ + g_return_val_if_fail (d1 != NULL, 0); + g_return_val_if_fail (d2 != NULL, 0); + + g_return_val_if_fail (g_date_valid (d1), 0); + g_return_val_if_fail (g_date_valid (d2), 0); + + return (gint)g_date_get_julian (d2) - (gint)g_date_get_julian (d1); +} + void g_date_clear (GDate *d, guint ndates) { @@ -919,7 +934,7 @@ g_date_set_julian (GDate *d, guint32 j) gboolean -g_date_is_first_of_month (GDate *d) +g_date_is_first_of_month (const GDate *d) { g_return_val_if_fail (d != NULL, FALSE); g_return_val_if_fail (g_date_valid (d), FALSE); @@ -935,7 +950,7 @@ g_date_is_first_of_month (GDate *d) } gboolean -g_date_is_last_of_month (GDate *d) +g_date_is_last_of_month (const GDate *d) { gint index; @@ -1184,8 +1199,8 @@ g_date_get_sunday_weeks_in_year (GDateYear year) } gint -g_date_compare (GDate *lhs, - GDate *rhs) +g_date_compare (const GDate *lhs, + const GDate *rhs) { g_return_val_if_fail (lhs != NULL, 0); g_return_val_if_fail (rhs != NULL, 0); @@ -1235,7 +1250,7 @@ g_date_compare (GDate *lhs, void -g_date_to_struct_tm (GDate *d, +g_date_to_struct_tm (const GDate *d, struct tm *tm) { GDateWeekday day; @@ -1273,11 +1288,48 @@ g_date_to_struct_tm (GDate *d, tm->tm_isdst = -1; /* -1 means "information not available" */ } +void +g_date_clamp (GDate *date, + const GDate *min_date, + const GDate *max_date) +{ + g_return_if_fail (date); + g_return_if_fail (g_date_valid (date)); + if (min_date != NULL) + g_return_if_fail (g_date_valid (min_date)); + if (max_date != NULL) + g_return_if_fail (g_date_valid (max_date)); + if (min_date != NULL && max_date != NULL) + g_return_if_fail (g_date_compare (min_date, max_date) <= 0); + + if (min_date && g_date_compare (date, min_date) < 0) + *date = *min_date; + + if (max_date && g_date_compare (max_date, date) < 0) + *date = *max_date; +} + +void +g_date_order (GDate *date1, + GDate *date2) +{ + g_return_if_fail (date1 != NULL); + g_return_if_fail (date2 != NULL); + g_return_if_fail (g_date_valid (date1)); + g_return_if_fail (g_date_valid (date2)); + + if (g_date_compare (date1, date2) == 1) { + GDate tmp = *date1; + *date1 = *date2; + *date2 = tmp; + } +} + gsize g_date_strftime (gchar *s, gsize slen, const gchar *format, - GDate *d) + const GDate *d) { struct tm tm; gsize retval; |