ABC: A System for Sequential Synthesis and Verification
 
Loading...
Searching...
No Matches
sparse.h
Go to the documentation of this file.
1/*
2 * Revision Control Information
3 *
4 * $Source$
5 * $Author$
6 * $Revision$
7 * $Date$
8 *
9 */
10#ifndef ABC__misc__espresso__sparse_h
11#define ABC__misc__espresso__sparse_h
12
13
15
16
17/*
18 * sparse.h -- sparse matrix package header file
19 */
20
22typedef struct sm_row_struct sm_row;
23typedef struct sm_col_struct sm_col;
25
26
27/*
28 * sparse matrix element
29 */
31 int row_num; /* row number of this element */
32 int col_num; /* column number of this element */
33 sm_element *next_row; /* next row in this column */
34 sm_element *prev_row; /* previous row in this column */
35 sm_element *next_col; /* next column in this row */
36 sm_element *prev_col; /* previous column in this row */
37 char *user_word; /* user-defined word */
38};
39
40
41/*
42 * row header
43 */
45 int row_num; /* the row number */
46 int length; /* number of elements in this row */
47 int flag; /* user-defined word */
48 sm_element *first_col; /* first element in this row */
49 sm_element *last_col; /* last element in this row */
50 sm_row *next_row; /* next row (in sm_matrix linked list) */
51 sm_row *prev_row; /* previous row (in sm_matrix linked list) */
52 char *user_word; /* user-defined word */
53};
54
55
56/*
57 * column header
58 */
60 int col_num; /* the column number */
61 int length; /* number of elements in this column */
62 int flag; /* user-defined word */
63 sm_element *first_row; /* first element in this column */
64 sm_element *last_row; /* last element in this column */
65 sm_col *next_col; /* next column (in sm_matrix linked list) */
66 sm_col *prev_col; /* prev column (in sm_matrix linked list) */
67 char *user_word; /* user-defined word */
68};
69
70
71/*
72 * A sparse matrix
73 */
75 sm_row **rows; /* pointer to row headers (by row #) */
76 int rows_size; /* alloc'ed size of above array */
77 sm_col **cols; /* pointer to column headers (by col #) */
78 int cols_size; /* alloc'ed size of above array */
79 sm_row *first_row; /* first row (linked list of all rows) */
80 sm_row *last_row; /* last row (linked list of all rows) */
81 int nrows; /* number of rows */
82 sm_col *first_col; /* first column (linked list of columns) */
83 sm_col *last_col; /* last column (linked list of columns) */
84 int ncols; /* number of columns */
85 char *user_word; /* user-defined word */
86};
87
88
89#define sm_get_col(A, colnum) \
90 (((colnum) >= 0 && (colnum) < (A)->cols_size) ? \
91 (A)->cols[colnum] : (sm_col *) 0)
92
93#define sm_get_row(A, rownum) \
94 (((rownum) >= 0 && (rownum) < (A)->rows_size) ? \
95 (A)->rows[rownum] : (sm_row *) 0)
96
97#define sm_foreach_row(A, prow) \
98 for(prow = A->first_row; prow != 0; prow = prow->next_row)
99
100#define sm_foreach_col(A, pcol) \
101 for(pcol = A->first_col; pcol != 0; pcol = pcol->next_col)
102
103#define sm_foreach_row_element(prow, p) \
104 for(p = prow->first_col; p != 0; p = p->next_col)
105
106#define sm_foreach_col_element(pcol, p) \
107 for(p = pcol->first_row; p != 0; p = p->next_row)
108
109#define sm_put(x, val) \
110 (x->user_word = (char *) val)
111
112#define sm_get(type, x) \
113 ((type) (x->user_word))
114
116extern void sm_free(), sm_delrow(), sm_delcol(), sm_resize();
117extern void sm_write(), sm_print(), sm_dump(), sm_cleanup();
118extern void sm_copy_row(), sm_copy_col();
124
130
136
138
139
140
142
143#endif
#define ABC_NAMESPACE_HEADER_END
#define ABC_NAMESPACE_HEADER_START
NAMESPACES ///.
typedefABC_NAMESPACE_HEADER_START struct sm_element_struct sm_element
Definition sparse.h:21
int sm_col_hash()
sm_col * sm_col_alloc()
int sm_col_compare()
void sm_copy_row()
int sm_row_dominance()
int sm_row_contains()
struct sm_col_struct sm_col
Definition sparse.h:23
sm_element * sm_col_find()
sm_matrix * sm_dup()
int sm_row_compare()
void sm_write()
void sm_delcol()
int sm_col_intersects()
void sm_print()
sm_row * sm_longest_row()
sm_element * sm_col_insert()
void sm_row_remove()
sm_element * sm_find()
void sm_cleanup()
Definition matrix.c:552
int sm_col_dominance()
void sm_col_print()
int sm_row_intersects()
int sm_block_partition()
void sm_remove_element()
int sm_read_compressed()
sm_col * sm_longest_col()
void sm_row_free()
sm_element * sm_row_insert()
void sm_resize()
sm_row * sm_row_alloc()
void sm_free()
sm_matrix * sm_alloc_size()
void sm_delrow()
void sm_copy_col()
sm_row * sm_row_and()
sm_col * sm_col_dup()
sm_matrix * sm_alloc()
sm_col * sm_col_and()
int sm_read()
void sm_dump()
void sm_remove()
struct sm_matrix_struct sm_matrix
Definition sparse.h:24
sm_element * sm_insert()
void sm_row_print()
int sm_col_contains()
struct sm_row_struct sm_row
Definition sparse.h:22
void sm_col_remove()
int sm_row_hash()
sm_row * sm_row_dup()
sm_element * sm_row_find()
void sm_col_free()
char * user_word
Definition sparse.h:67
sm_col * next_col
Definition sparse.h:65
int col_num
Definition sparse.h:60
sm_element * first_row
Definition sparse.h:63
sm_element * last_row
Definition sparse.h:64
sm_col * prev_col
Definition sparse.h:66
sm_element * next_col
Definition sparse.h:35
sm_element * prev_row
Definition sparse.h:34
sm_element * prev_col
Definition sparse.h:36
char * user_word
Definition sparse.h:37
sm_element * next_row
Definition sparse.h:33
sm_col * first_col
Definition sparse.h:82
sm_row * first_row
Definition sparse.h:79
char * user_word
Definition sparse.h:85
sm_row * last_row
Definition sparse.h:80
sm_col ** cols
Definition sparse.h:77
sm_row ** rows
Definition sparse.h:75
sm_col * last_col
Definition sparse.h:83
sm_element * first_col
Definition sparse.h:48
int row_num
Definition sparse.h:45
sm_row * prev_row
Definition sparse.h:51
char * user_word
Definition sparse.h:52
sm_element * last_col
Definition sparse.h:49
sm_row * next_row
Definition sparse.h:50