range: Add API to check if range contains datetime

This will be used by next commits to make some code
more legible.
This commit is contained in:
Georges Basile Stavracas Neto
2023-08-11 15:13:44 -03:00
parent f8f2c10a8e
commit 7f57cfeb83
2 changed files with 34 additions and 0 deletions
+31
View File
@@ -508,3 +508,34 @@ gcal_range_to_string (GcalRange *self)
return g_strdup_printf ("[%s | %s)", start_string, end_string);
}
/**
* gcal_range_contains_datetime:
* @self: a #GcalRange
* @datetime: a #GDateTime
*
* Checks if @datetime is contained within @self.
*
* Returns: %TRUE is @datetime is within the range described
* by @self, %FALSE otherwise
*/
gboolean
gcal_range_contains_datetime (GcalRange *self,
GDateTime *datetime)
{
g_return_val_if_fail (self, FALSE);
g_return_val_if_fail (datetime, FALSE);
switch (self->range_type)
{
case GCAL_RANGE_DEFAULT:
return g_date_time_compare (datetime, self->range_start) >= 0 &&
g_date_time_compare (datetime, self->range_end) < 0;
case GCAL_RANGE_DATE_ONLY:
return gcal_date_time_compare_date (datetime, self->range_start) >= 0 &&
gcal_date_time_compare_date (datetime, self->range_end) <= 0;
default:
g_assert_not_reached ();
}
}
+3
View File
@@ -106,6 +106,9 @@ GcalRange* gcal_range_union (GcalRange
gchar* gcal_range_to_string (GcalRange *self);
gboolean gcal_range_contains_datetime (GcalRange *self,
GDateTime *datetime);
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GcalRange, gcal_range_unref)
G_END_DECLS