GRASS 8 Programmer's Manual
8.6.0dev(2026)-4bb960b182
Loading...
Searching...
No Matches
v2-defs.h
Go to the documentation of this file.
1
/*
2
* SPDX-FileCopyrightText: 2002 Roberto Micarelli
3
* SPDX-FileCopyrightText: GRASS Development Team
4
* SPDX-License-Identifier: GPL-2.0-or-later
5
*/
6
7
/*
8
* best view tabstop=4
9
*/
10
11
#define _DGL_V2 1
12
#undef _DGL_V1
13
14
/*
15
* Define function names
16
*/
17
18
#if defined(DGL_DEFINE_TREE_PROCS) || defined(DGL_DEFINE_FLAT_PROCS)
19
/* sp-template */
20
#undef DGL_SP_DIJKSTRA_FUNC
21
#undef DGL_SPAN_DEPTHFIRST_SPANNING_FUNC
22
#undef DGL_SPAN_MINIMUM_SPANNING_FUNC
23
#undef _DGL_OUTEDGESET
24
#undef _DGL_INEDGESET
25
#undef _DGL_EDGE_TAILNODE
26
#undef _DGL_EDGE_HEADNODE
27
#endif
28
29
/*
30
* TREE version algorithms
31
*/
32
#if defined(DGL_DEFINE_TREE_PROCS)
33
/* sp-template */
34
#define DGL_SP_DIJKSTRA_FUNC dgl_dijkstra_V2_TREE
35
/* span-template */
36
#define DGL_SPAN_DEPTHFIRST_SPANNING_FUNC dgl_span_depthfirst_spanning_V2_TREE
37
#define DGL_SPAN_MINIMUM_SPANNING_FUNC dgl_span_minimum_spanning_V2_TREE
38
/* portable actions */
39
#define _DGL_OUTEDGESET(pg, pn) DGL_GET_NODE_OUTEDGESET_FUNC(pg, pn)
40
#define _DGL_INEDGESET(pg, pn) DGL_GET_NODE_INEDGESET_FUNC(pg, pn)
41
#define _DGL_EDGE_HEADNODE(pg, pl) \
42
DGL_GET_NODE_FUNC(pg, DGL_EDGE_HEADNODE_OFFSET(pl))
43
#define _DGL_EDGE_TAILNODE(pg, pl) \
44
DGL_GET_NODE_FUNC(pg, DGL_EDGE_TAILNODE_OFFSET(pl))
45
#endif
46
47
/*
48
* FLAT version algorithms
49
*/
50
#if defined(DGL_DEFINE_FLAT_PROCS)
51
/* sp-template */
52
#define DGL_SP_DIJKSTRA_FUNC dgl_dijkstra_V2_FLAT
53
/* span-template */
54
#define DGL_SPAN_DEPTHFIRST_SPANNING_FUNC dgl_span_depthfirst_spanning_V2_FLAT
55
#define DGL_SPAN_MINIMUM_SPANNING_FUNC dgl_span_minimum_spanning_V2_FLAT
56
/* portable actions */
57
#define _DGL_OUTEDGESET(pg, pn) \
58
DGL_EDGEBUFFER_SHIFT(pg, DGL_NODE_EDGESET_OFFSET(pn))
59
#define _DGL_INEDGESET(pg, pn) \
60
((dglInt32_t *)(DGL_EDGEBUFFER_SHIFT(pg, DGL_NODE_EDGESET_OFFSET(pn))) + \
61
*(dglInt32_t *)(DGL_EDGEBUFFER_SHIFT(pg, DGL_NODE_EDGESET_OFFSET(pn))) + \
62
1)
63
#define _DGL_EDGE_HEADNODE(pg, pl) \
64
DGL_NODEBUFFER_SHIFT(pg, DGL_EDGE_HEADNODE_OFFSET(pl))
65
#define _DGL_EDGE_TAILNODE(pg, pl) \
66
DGL_NODEBUFFER_SHIFT(pg, DGL_EDGE_TAILNODE_OFFSET(pl))
67
#endif
68
69
#if !defined(DGL_DEFINE_TREE_PROCS) && !defined(DGL_DEFINE_FLAT_PROCS)
70
71
/* sp-template */
72
#define DGL_SP_CACHE_INITIALIZE_FUNC dgl_sp_cache_initialize_V2
73
#define DGL_SP_CACHE_RELEASE_FUNC dgl_sp_cache_release_V2
74
#define DGL_SP_CACHE_REPORT_FUNC dgl_sp_cache_report_V2
75
#define DGL_SP_CACHE_DISTANCE_FUNC dgl_sp_cache_distance_V2
76
77
/* nodemgmt-template */
78
#define DGL_ADD_NODE_FUNC dgl_add_node_V2
79
#define DGL_DEL_NODE_OUTEDGE_FUNC dgl_del_node_outedge_V2
80
#define DGL_DEL_NODE_INEDGE_FUNC dgl_del_node_inedge_V2
81
#define DGL_DEL_NODE_FUNC dgl_del_node_V2
82
#define DGL_GET_NODE_FUNC dgl_get_node_V2
83
#define DGL_GET_NODE_OUTEDGESET_FUNC dgl_getnode_outedgeset_V2
84
#define DGL_GET_NODE_INEDGESET_FUNC dgl_getnode_inedgeset_V2
85
86
/* edgemgmt-template */
87
#define DGL_ADD_EDGE_FUNC dgl_add_edge_V2
88
#define DGL_GET_EDGE_FUNC dgl_get_edge_V2
89
#define DGL_DEL_EDGE_FUNC dgl_del_edge_V2
90
91
/* misc-template */
92
#define DGL_EDGE_T_INITIALIZE_FUNC dgl_edge_t_initialize_V2
93
#define DGL_EDGE_T_RELEASE_FUNC dgl_edge_t_release_V2
94
#define DGL_EDGE_T_FIRST_FUNC dgl_edge_t_first_V2
95
#define DGL_EDGE_T_NEXT_FUNC dgl_edge_t_next_V2
96
#define DGL_NODE_T_INITIALIZE_FUNC dgl_node_t_initialize_V2
97
#define DGL_NODE_T_RELEASE_FUNC dgl_node_t_release_V2
98
#define DGL_NODE_T_FIRST_FUNC dgl_node_t_first_V2
99
#define DGL_NODE_T_NEXT_FUNC dgl_node_t_next_V2
100
#define DGL_NODE_T_FIND_FUNC dgl_node_t_find_V2
101
#define DGL_EDGESET_T_INITIALIZE_FUNC dgl_edgeset_t_initialize_V2
102
#define DGL_EDGESET_T_RELEASE_FUNC dgl_edgeset_t_release_V2
103
#define DGL_EDGESET_T_FIRST_FUNC dgl_edgeset_t_first_V2
104
#define DGL_EDGESET_T_NEXT_FUNC dgl_edgeset_t_next_V2
105
#define DGL_FLATTEN_FUNC dgl_flatten_V2
106
#define DGL_UNFLATTEN_FUNC dgl_unflatten_V2
107
108
/*
109
*
110
*/
111
112
/* Node
113
*/
114
#define DGL_NODE_ALLOC DGL_NODE_ALLOC_v2
115
#define DGL_NODE_SIZEOF DGL_NODE_SIZEOF_v2
116
#define DGL_NODE_WSIZE DGL_NODE_WSIZE_v2
117
#define DGL_NODE_STATUS DGL_NODE_STATUS_v2
118
#define DGL_NODE_ID DGL_NODE_ID_v2
119
#define DGL_NODE_ATTR_PTR DGL_NODE_ATTR_PTR_v2
120
#define DGL_NODE_EDGESET_OFFSET DGL_NODE_EDGESET_OFFSET_v2
121
122
/* Edge
123
*/
124
#define DGL_EDGE_ALLOC DGL_EDGE_ALLOC_v2
125
#define DGL_EDGE_SIZEOF DGL_EDGE_SIZEOF_v2
126
#define DGL_EDGE_WSIZE DGL_EDGE_WSIZE_v2
127
#define DGL_EDGE_STATUS DGL_EDGE_STATUS_v2
128
#define DGL_EDGE_COST DGL_EDGE_COST_v2
129
#define DGL_EDGE_ID DGL_EDGE_ID_v2
130
#define DGL_EDGE_ATTR_PTR DGL_EDGE_ATTR_PTR_v2
131
#define DGL_EDGE_HEADNODE_OFFSET DGL_EDGE_HEADNODE_OFFSET_v2
132
#define DGL_EDGE_TAILNODE_OFFSET DGL_EDGE_TAILNODE_OFFSET_v2
133
134
/* Edgeset
135
*/
136
#define DGL_ILA_TOARR DGL_ILA_TOARR_v2
137
#define DGL_EDGESET_OFFSET DGL_EDGESET_OFFSET_v2
138
#define DGL_EDGESET_EDGEARRAY_PTR DGL_EDGESET_EDGEARRAY_PTR_v2
139
#define DGL_EDGESET_EDGECOUNT DGL_EDGESET_EDGECOUNT_v2
140
#define DGL_EDGESET_EDGE_PTR DGL_EDGESET_EDGE_PTR_v2
141
#define DGL_EDGESET_ALLOC DGL_EDGESET_ALLOC_v2
142
#define DGL_EDGESET_REALLOC DGL_EDGESET_REALLOC_v2
143
#define DGL_EDGESET_SIZEOF DGL_EDGESET_SIZEOF_v2
144
#define DGL_EDGESET_WSIZE DGL_EDGESET_WSIZE_v2
145
146
/* Misc
147
*/
148
#define DGL_NODEBUFFER_SHIFT DGL_NODEBUFFER_SHIFT_v2
149
#define DGL_NODEBUFFER_OFFSET DGL_NODEBUFFER_OFFSET_v2
150
#define DGL_EDGEBUFFER_SHIFT DGL_EDGEBUFFER_SHIFT_v2
151
#define DGL_EDGEBUFFER_OFFSET DGL_EDGEBUFFER_OFFSET_v2
152
153
#define DGL_FOREACH_NODE DGL_FOREACH_NODE_v2
154
#define DGL_FOREACH_EDGE DGL_FOREACH_EDGE_v2
155
156
/*
157
* Tree-node portability
158
*/
159
#define DGL_T_NODEITEM_TYPE dglTreeNode2_s
160
#define DGL_T_NODEITEM_NodePTR(p) ((p)->pv)
161
#define DGL_T_NODEITEM_Set_NodePTR(p, ptr) ((p)->pv = (ptr))
162
#define DGL_T_NODEITEM_OutEdgesetPTR(p) ((p)->pv2)
163
#define DGL_T_NODEITEM_Set_OutEdgesetPTR(p, ptr) ((p)->pv2 = (ptr))
164
#define DGL_T_NODEITEM_InEdgesetPTR(p) ((p)->pv3)
165
#define DGL_T_NODEITEM_Set_InEdgesetPTR(p, ptr) ((p)->pv3 = (ptr))
166
#define DGL_T_NODEITEM_Compare dglTreeNode2Compare
167
#define DGL_T_NODEITEM_Cancel dglTreeNode2Cancel
168
#define DGL_T_NODEITEM_Add dglTreeNode2Add
169
#define DGL_T_NODEITEM_Alloc dglTreeNode2Alloc
170
171
#endif
lib
vector
dglib
v2-defs.h
Generated on Sun Sep 13 2026 06:57:51 for GRASS 8 Programmer's Manual by
1.9.8