graph.h: replace hardcoded values with an enum
Signed-off-by: Andrew Gregory <andrew.gregory.8@gmail.com>
This commit is contained in:
parent
13ec13c85e
commit
9c763a0d1b
3 changed files with 14 additions and 8 deletions
|
@ -130,7 +130,7 @@ static void dijkstra(alpm_list_t *vertices)
|
|||
for(i = vertices; i; i = i->next) {
|
||||
alpm_graph_t *v_i = i->data;
|
||||
|
||||
if(v_i->state == -1) {
|
||||
if(v_i->state == ALPM_GRAPH_STATE_PROCESSING) {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -142,7 +142,7 @@ static void dijkstra(alpm_list_t *vertices)
|
|||
break;
|
||||
}
|
||||
|
||||
v->state = -1;
|
||||
v->state = ALPM_GRAPH_STATE_PROCESSING;
|
||||
|
||||
v->childptr = v->children;
|
||||
while(v->childptr) {
|
||||
|
|
|
@ -194,16 +194,16 @@ alpm_list_t *_alpm_sortbydeps(alpm_handle_t *handle,
|
|||
vertex = vertices->data;
|
||||
while(vptr) {
|
||||
/* mark that we touched the vertex */
|
||||
vertex->state = -1;
|
||||
vertex->state = ALPM_GRAPH_STATE_PROCESSING;
|
||||
int found = 0;
|
||||
while(vertex->childptr && !found) {
|
||||
alpm_graph_t *nextchild = vertex->childptr->data;
|
||||
vertex->childptr = vertex->childptr->next;
|
||||
if(nextchild->state == 0) {
|
||||
if(nextchild->state == ALPM_GRAPH_STATE_UNPROCESSED) {
|
||||
found = 1;
|
||||
nextchild->parent = vertex;
|
||||
vertex = nextchild;
|
||||
} else if(nextchild->state == -1) {
|
||||
} else if(nextchild->state == ALPM_GRAPH_STATE_PROCESSING) {
|
||||
/* child is an ancestor of vertex */
|
||||
alpm_graph_t *transvertex = vertex;
|
||||
|
||||
|
@ -244,13 +244,13 @@ alpm_list_t *_alpm_sortbydeps(alpm_handle_t *handle,
|
|||
newtargs = alpm_list_add(newtargs, vertex->data);
|
||||
}
|
||||
/* mark that we've left this vertex */
|
||||
vertex->state = 1;
|
||||
vertex->state = ALPM_GRAPH_STATE_PROCESSED;
|
||||
vertex = vertex->parent;
|
||||
if(!vertex) {
|
||||
/* top level vertex reached, move to the next unprocessed vertex */
|
||||
for( vptr = vptr->next; vptr; vptr = vptr->next) {
|
||||
vertex = vptr->data;
|
||||
if(vertex->state == 0) {
|
||||
if(vertex->state == ALPM_GRAPH_STATE_UNPROCESSED) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -23,13 +23,19 @@
|
|||
|
||||
#include "alpm_list.h"
|
||||
|
||||
enum __alpm_graph_vertex_state {
|
||||
ALPM_GRAPH_STATE_UNPROCESSED,
|
||||
ALPM_GRAPH_STATE_PROCESSING,
|
||||
ALPM_GRAPH_STATE_PROCESSED
|
||||
};
|
||||
|
||||
typedef struct __alpm_graph_t {
|
||||
void *data;
|
||||
struct __alpm_graph_t *parent; /* where did we come from? */
|
||||
alpm_list_t *children;
|
||||
alpm_list_t *childptr; /* points to a child in children list */
|
||||
off_t weight; /* weight of the node */
|
||||
signed char state; /* 0: untouched, -1: entered, other: leaving time */
|
||||
enum __alpm_graph_vertex_state state;
|
||||
} alpm_graph_t;
|
||||
|
||||
alpm_graph_t *_alpm_graph_new(void);
|
||||
|
|
Loading…
Add table
Reference in a new issue