Top | ![]() |
![]() |
![]() |
![]() |
gboolean | (*GcalRangeTraverseFunc) () |
GcalRangeTree * | gcal_range_tree_new () |
GcalRangeTree * | gcal_range_tree_copy () |
GcalRangeTree * | gcal_range_tree_ref () |
void | gcal_range_tree_unref () |
void | gcal_range_tree_add_range () |
void | gcal_range_tree_remove_range () |
void | gcal_range_tree_traverse () |
GPtrArray * | gcal_range_tree_get_data_at_range () |
guint64 | gcal_range_tree_count_entries_at_range () |
GcalRangeTree is an augmented AVL tree implemented to be
able to handle ranges rather than point values. This tree
is used by GcalWeekGrid
to store events according to their
start and end minutes, and thus all the data structure was
optimized to handle a limited subset of values.
In the future, we may need to extend support for broader range values, and move away from guint16 in function params.
gboolean (*GcalRangeTraverseFunc) (guint16 start
,guint16 end
,gpointer data
,gpointer user_data
);
Function type to be called when traversing a GcalRangeTree.
GcalRangeTree *
gcal_range_tree_copy (GcalRangeTree *self
);
Copies self
into a new range tree.
GcalRangeTree *
gcal_range_tree_ref (GcalRangeTree *self
);
Increases the reference count of self
.
void
gcal_range_tree_unref (GcalRangeTree *self
);
Decreases the reference count of self
, and frees it when
if the reference count reaches zero.
void gcal_range_tree_add_range (GcalRangeTree *self
,guint16 start
,guint16 end
,gpointer data
);
Adds the range into self
, and attach data
do it. It is
possible to have multiple entries in the same interval,
in which case the interval will have a reference counting like
behavior.
void gcal_range_tree_remove_range (GcalRangeTree *self
,guint16 start
,guint16 end
,gpointer data
);
Removes (or decreases the reference count) of the given interval.
void gcal_range_tree_traverse (GcalRangeTree *self
,GTraverseType type
,GcalRangeTraverseFunc func
,gpointer user_data
);
Traverse self
calling func
according to the type
specified.
GPtrArray * gcal_range_tree_get_data_at_range (GcalRangeTree *self
,guint16 start
,guint16 end
);
Retrieves the data of every node between start
and end
.
guint64 gcal_range_tree_count_entries_at_range (GcalRangeTree *self
,guint16 start
,guint16 end
);
Counts the number of entries available in the given range.