Privacy
An open-source, flexible 3D physical simulation framework
tsort.c File Reference
#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <assert.h>

Go to the source code of this file.

Classes

struct  successor
 
struct  succ_cleanup_list
 
struct  item
 
struct  item_cleanup_list
 

Functions

static struct itemnew_item (unsigned long id)
 
static struct itemsearch_item (unsigned long id)
 
static void record_relation (struct item *j, struct item *k)
 
static int count_items (struct item *unused)
 
static int scan_zeros (struct item *k)
 
static int detect_loop (struct item *k)
 
static int recurse_tree (struct item *root_node, int(*action)(struct item *))
 
static void walk_tree (struct item *root_node, int(*action)(struct item *))
 
void add_relation (unsigned long id1, unsigned long id2)
 
int tsort (void)
 
unsigned long * get_sorted_ids (void)
 

Variables

static struct succ_cleanup_listsuccs_to_clean = NULL
 
static struct item_cleanup_listitems_to_clean = NULL
 
static struct itemhead = NULL
 
static struct itemzeros = NULL
 
static struct itemloop = NULL
 
static size_t n_ids = 0
 
static struct itemroot = NULL
 
static unsigned long * ids = NULL
 

Function Documentation

◆ add_relation()

void add_relation ( unsigned long  id1,
unsigned long  id2 
)

Definition at line 423 of file tsort.c.

◆ count_items()

static int count_items ( struct item unused)
static

Definition at line 275 of file tsort.c.

◆ detect_loop()

static int detect_loop ( struct item k)
static

Definition at line 318 of file tsort.c.

◆ get_sorted_ids()

unsigned long* get_sorted_ids ( void  )

Definition at line 518 of file tsort.c.

◆ new_item()

static struct item* new_item ( unsigned long  id)
static

Definition at line 80 of file tsort.c.

◆ record_relation()

static void record_relation ( struct item j,
struct item k 
)
static

Definition at line 253 of file tsort.c.

◆ recurse_tree()

static int recurse_tree ( struct item root_node,
int(*)(struct item *)  action 
)
static

Definition at line 394 of file tsort.c.

◆ scan_zeros()

static int scan_zeros ( struct item k)
static

Definition at line 283 of file tsort.c.

◆ search_item()

static struct item* search_item ( unsigned long  id)
static

Definition at line 110 of file tsort.c.

◆ tsort()

int tsort ( void  )

Definition at line 437 of file tsort.c.

◆ walk_tree()

static void walk_tree ( struct item root_node,
int(*)(struct item *)  action 
)
static

Definition at line 417 of file tsort.c.

Variable Documentation

◆ head

struct item* head = NULL
static

Definition at line 62 of file tsort.c.

◆ ids

unsigned long* ids = NULL
static

Definition at line 75 of file tsort.c.

◆ items_to_clean

struct item_cleanup_list* items_to_clean = NULL
static

Definition at line 59 of file tsort.c.

◆ loop

struct item* loop = NULL
static

Definition at line 68 of file tsort.c.

◆ n_ids

size_t n_ids = 0
static

Definition at line 71 of file tsort.c.

◆ root

struct item* root = NULL
static

Definition at line 73 of file tsort.c.

◆ succs_to_clean

struct succ_cleanup_list* succs_to_clean = NULL
static

Definition at line 41 of file tsort.c.

◆ zeros

struct item* zeros = NULL
static

Definition at line 65 of file tsort.c.