m2.alobe/src/connexcomponent.h

70 lines
1.8 KiB
C

/* vim: set sw=4 ts=4 si et: */
#ifndef _ALOBE_CONNEX_COMPONENT_H
#define _ALOBE_CONNEX_COMPONENT_H
#include "nodeset.h"
typedef struct _ConnexComponentItem_t ConnexComponentItem_t;
typedef struct _ConnexComponentItem_t * ConnexComponentList_t;
struct _ConnexComponentItem_t {
NodeSetList_t list;
ConnexComponentItem_t * prev;
ConnexComponentItem_t * next;
};
/* List opts */
ConnexComponentList_t connexcomponentlist_create();
void connexcomponentlist_destroy(ConnexComponentList_t * list);
ConnexComponentItem_t * connexcomponentlist_find_item_with_node(
ConnexComponentList_t list,
nodeindex_t nodeidx);
ConnexComponentList_t connexcomponentlist_insert_edge(
ConnexComponentList_t list,
nodeindex_t node_one,
nodeindex_t node_two);
ConnexComponentList_t connexcomponentlist_append_component(
ConnexComponentList_t list,
ConnexComponentItem_t * item
);
ConnexComponentList_t connexcomponentlist_remove_component(
ConnexComponentList_t list,
ConnexComponentItem_t * item
);
void connexcomponentlist_display(ConnexComponentList_t list);
/* Item opts */
ConnexComponentItem_t * connexcomponentitem_create();
ConnexComponentItem_t * connexcomponentitem_create_from_node(
nodeindex_t node_idx
);
ConnexComponentItem_t * connexcomponentitem_create_from_merge(
ConnexComponentItem_t * item_one,
ConnexComponentItem_t * item_two
);
void connexcomponentitem_destroy(ConnexComponentItem_t * item);
void connexcomponentitem_display(ConnexComponentItem_t * item);
ConnexComponentList_t connexcomponentitem_insert_edge(
ConnexComponentList_t list,
nodeindex_t node_one,
nodeindex_t node_two);
bool connexcomponentitem_contains_node(
ConnexComponentItem_t * item,
nodeindex_t node_idx);
#endif