EIntervalTree

EIntervalTree — A utility for calculating intervals and recurrances

Synopsis

#include <libedata-cal/libedata-cal.h>

#define             E_INTERVALTREE_DEBUG
struct              EIntervalTree;
struct              EIntervalTreeClass;
EIntervalTree *     e_intervaltree_new                  (void);
gboolean            e_intervaltree_insert               (EIntervalTree *tree,
                                                         time_t start,
                                                         time_t end,
                                                         ECalComponent *comp);
gboolean            e_intervaltree_remove               (EIntervalTree *tree,
                                                         const gchar *uid,
                                                         const gchar *rid);
GList *             e_intervaltree_search               (EIntervalTree *tree,
                                                         time_t start,
                                                         time_t end);
void                e_intervaltree_destroy              (EIntervalTree *tree);
void                e_intervaltree_dump                 (EIntervalTree *tree);

Description

Implementation of the interval node as described in Introduction to Algorithms book by Cormen et al, chapter 14.3.

Basically, the interval tree is the red-black tree, the node key is the start of the interval.

Details

E_INTERVALTREE_DEBUG

#define E_INTERVALTREE_DEBUG 1

struct EIntervalTree

struct EIntervalTree {
};

Contains only private data that should be read and manipulated using the functions below.

Since 2.32


struct EIntervalTreeClass

struct EIntervalTreeClass {
};

Class structure for the EIntervalTree class.

Since 2.32


e_intervaltree_new ()

EIntervalTree *     e_intervaltree_new                  (void);

Creates a new EIntervalTree.

Returns :

The newly-created EIntervalTree.

Since 2.32


e_intervaltree_insert ()

gboolean            e_intervaltree_insert               (EIntervalTree *tree,
                                                         time_t start,
                                                         time_t end,
                                                         ECalComponent *comp);

tree :

interval tree

start :

start of the interval

end :

end of the interval

comp :

Component

Since 2.32


e_intervaltree_remove ()

gboolean            e_intervaltree_remove               (EIntervalTree *tree,
                                                         const gchar *uid,
                                                         const gchar *rid);

tree :

an EIntervalTree

uid :

the uid of the component to remove

rid :

the recurrance id of the component to remove

Since 2.32


e_intervaltree_search ()

GList *             e_intervaltree_search               (EIntervalTree *tree,
                                                         time_t start,
                                                         time_t end);

tree :

interval tree

start :

start of the interval

end :

end of the interval

Returns :

list of nodes that overlaps given interval or NULL.

Since 2.32


e_intervaltree_destroy ()

void                e_intervaltree_destroy              (EIntervalTree *tree);

tree :

an EIntervalTree

Since 2.32


e_intervaltree_dump ()

void                e_intervaltree_dump                 (EIntervalTree *tree);