v2-defs.h

Go to the documentation of this file.
00001 /*
00002  * Copyright (C) 2002 Roberto Micarelli
00003  *
00004  * This program is free software; you can redistribute it and/or modify
00005  * it under the terms of the GNU General Public License as published by
00006  * the Free Software Foundation; either version 2 of the License, or
00007  * (at your option) any later version.
00008  *
00009  * This program is distributed in the hope that it will be useful,
00010  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00011  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00012  * GNU General Public License for more details.
00013  *
00014  * You should have received a copy of the GNU General Public License
00015  * along with this program; if not, write to the Free Software
00016  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
00017  */
00018 
00019 /*
00020  * best view tabstop=4
00021  */
00022 
00023 #define _DGL_V2         1
00024 #undef  _DGL_V1
00025 
00026 /*
00027  * Define function names
00028  */
00029 
00030 #if defined(DGL_DEFINE_TREE_PROCS) || defined(DGL_DEFINE_FLAT_PROCS)
00031 /* sp-template */
00032 #undef DGL_SP_DIJKSTRA_FUNC
00033 #undef DGL_SPAN_DEPTHFIRST_SPANNING_FUNC
00034 #undef DGL_SPAN_MINIMUM_SPANNING_FUNC
00035 #undef _DGL_OUTEDGESET
00036 #undef _DGL_INEDGESET
00037 #undef _DGL_EDGE_TAILNODE
00038 #undef _DGL_EDGE_HEADNODE
00039 #endif
00040 
00041 /*
00042  * TREE version algorithms
00043  */
00044 #if defined(DGL_DEFINE_TREE_PROCS)
00045 /* sp-template */
00046 #define DGL_SP_DIJKSTRA_FUNC                            dgl_dijkstra_V2_TREE
00047 /* span-template */
00048 #define DGL_SPAN_DEPTHFIRST_SPANNING_FUNC       dgl_span_depthfirst_spanning_V2_TREE
00049 #define DGL_SPAN_MINIMUM_SPANNING_FUNC  dgl_span_minimum_spanning_V2_TREE
00050 /* portable actions */
00051 #define _DGL_OUTEDGESET(pg,pn)                  DGL_GET_NODE_OUTEDGESET_FUNC(pg,pn)
00052 #define _DGL_INEDGESET(pg,pn)                   DGL_GET_NODE_INEDGESET_FUNC(pg,pn)
00053 #define _DGL_EDGE_HEADNODE(pg,pl)                       DGL_GET_NODE_FUNC(pg, DGL_EDGE_HEADNODE_OFFSET(pl))
00054 #define _DGL_EDGE_TAILNODE(pg,pl)                       DGL_GET_NODE_FUNC(pg, DGL_EDGE_TAILNODE_OFFSET(pl))
00055 #endif
00056 
00057 /*
00058  * FLAT version algorithms
00059  */
00060 #if defined(DGL_DEFINE_FLAT_PROCS)
00061 /* sp-template */
00062 #define DGL_SP_DIJKSTRA_FUNC                            dgl_dijkstra_V2_FLAT
00063 /* span-template */
00064 #define DGL_SPAN_DEPTHFIRST_SPANNING_FUNC       dgl_span_depthfirst_spanning_V2_FLAT
00065 #define DGL_SPAN_MINIMUM_SPANNING_FUNC  dgl_span_minimum_spanning_V2_FLAT
00066 /* portable actions */
00067 #define _DGL_OUTEDGESET(pg,pn)                  DGL_EDGEBUFFER_SHIFT(pg, DGL_NODE_EDGESET_OFFSET(pn))
00068 #define _DGL_INEDGESET(pg,pn)                   ((dglInt32_t*)(DGL_EDGEBUFFER_SHIFT(pg, DGL_NODE_EDGESET_OFFSET(pn))) + \
00069                                                                                         *(dglInt32_t*)(DGL_EDGEBUFFER_SHIFT(pg, DGL_NODE_EDGESET_OFFSET(pn))) + 1)
00070 #define _DGL_EDGE_HEADNODE(pg,pl)                       DGL_NODEBUFFER_SHIFT(pg, DGL_EDGE_HEADNODE_OFFSET(pl))
00071 #define _DGL_EDGE_TAILNODE(pg,pl)                       DGL_NODEBUFFER_SHIFT(pg, DGL_EDGE_TAILNODE_OFFSET(pl))
00072 #endif
00073 
00074 
00075 
00076 
00077 #if !defined(DGL_DEFINE_TREE_PROCS) && !defined(DGL_DEFINE_FLAT_PROCS)
00078 
00079 /* sp-template */
00080 #define DGL_SP_CACHE_INITIALIZE_FUNC            dgl_sp_cache_initialize_V2
00081 #define DGL_SP_CACHE_RELEASE_FUNC                       dgl_sp_cache_release_V2
00082 #define DGL_SP_CACHE_REPORT_FUNC                        dgl_sp_cache_report_V2
00083 #define DGL_SP_CACHE_DISTANCE_FUNC              dgl_sp_cache_distance_V2
00084 
00085 /* nodemgmt-template */
00086 #define DGL_ADD_NODE_FUNC                                       dgl_add_node_V2
00087 #define DGL_DEL_NODE_OUTEDGE_FUNC                       dgl_del_node_outedge_V2
00088 #define DGL_DEL_NODE_INEDGE_FUNC                        dgl_del_node_inedge_V2
00089 #define DGL_DEL_NODE_FUNC                                       dgl_del_node_V2
00090 #define DGL_GET_NODE_FUNC                                       dgl_get_node_V2
00091 #define DGL_GET_NODE_OUTEDGESET_FUNC            dgl_getnode_outedgeset_V2
00092 #define DGL_GET_NODE_INEDGESET_FUNC             dgl_getnode_inedgeset_V2
00093 
00094 /* edgemgmt-template */
00095 #define DGL_ADD_EDGE_FUNC                                       dgl_add_edge_V2
00096 #define DGL_GET_EDGE_FUNC                                       dgl_get_edge_V2
00097 #define DGL_DEL_EDGE_FUNC                                       dgl_del_edge_V2
00098 
00099 /* misc-template */
00100 #define DGL_EDGE_T_INITIALIZE_FUNC              dgl_edge_t_initialize_V2
00101 #define DGL_EDGE_T_RELEASE_FUNC                 dgl_edge_t_release_V2
00102 #define DGL_EDGE_T_FIRST_FUNC                           dgl_edge_t_first_V2
00103 #define DGL_EDGE_T_NEXT_FUNC                            dgl_edge_t_next_V2
00104 #define DGL_NODE_T_INITIALIZE_FUNC              dgl_node_t_initialize_V2
00105 #define DGL_NODE_T_RELEASE_FUNC                 dgl_node_t_release_V2
00106 #define DGL_NODE_T_FIRST_FUNC                           dgl_node_t_first_V2
00107 #define DGL_NODE_T_NEXT_FUNC                            dgl_node_t_next_V2
00108 #define DGL_NODE_T_FIND_FUNC                            dgl_node_t_find_V2
00109 #define DGL_EDGESET_T_INITIALIZE_FUNC   dgl_edgeset_t_initialize_V2
00110 #define DGL_EDGESET_T_RELEASE_FUNC              dgl_edgeset_t_release_V2
00111 #define DGL_EDGESET_T_FIRST_FUNC                        dgl_edgeset_t_first_V2
00112 #define DGL_EDGESET_T_NEXT_FUNC                 dgl_edgeset_t_next_V2
00113 #define DGL_FLATTEN_FUNC                                        dgl_flatten_V2
00114 #define DGL_UNFLATTEN_FUNC                              dgl_unflatten_V2
00115 
00116 
00117 
00118 /*
00119  *
00120  */
00121 
00122 
00123 /* Node
00124  */
00125 #define DGL_NODE_ALLOC                                  DGL_NODE_ALLOC_v2
00126 #define DGL_NODE_SIZEOF                                 DGL_NODE_SIZEOF_v2
00127 #define DGL_NODE_WSIZE                                  DGL_NODE_WSIZE_v2
00128 #define DGL_NODE_STATUS                                 DGL_NODE_STATUS_v2
00129 #define DGL_NODE_ID                                             DGL_NODE_ID_v2
00130 #define DGL_NODE_ATTR_PTR                                       DGL_NODE_ATTR_PTR_v2
00131 #define DGL_NODE_EDGESET_OFFSET                 DGL_NODE_EDGESET_OFFSET_v2
00132 
00133 /* Edge
00134  */
00135 #define DGL_EDGE_ALLOC                                  DGL_EDGE_ALLOC_v2
00136 #define DGL_EDGE_SIZEOF                                 DGL_EDGE_SIZEOF_v2
00137 #define DGL_EDGE_WSIZE                                  DGL_EDGE_WSIZE_v2
00138 #define DGL_EDGE_STATUS                                 DGL_EDGE_STATUS_v2
00139 #define DGL_EDGE_COST                                           DGL_EDGE_COST_v2
00140 #define DGL_EDGE_ID                                             DGL_EDGE_ID_v2
00141 #define DGL_EDGE_ATTR_PTR                                       DGL_EDGE_ATTR_PTR_v2
00142 #define DGL_EDGE_HEADNODE_OFFSET                        DGL_EDGE_HEADNODE_OFFSET_v2
00143 #define DGL_EDGE_TAILNODE_OFFSET                        DGL_EDGE_TAILNODE_OFFSET_v2
00144 
00145 /* Edgeset
00146  */
00147 #define DGL_ILA_TOARR                                           DGL_ILA_TOARR_v2
00148 #define DGL_EDGESET_OFFSET                              DGL_EDGESET_OFFSET_v2
00149 #define DGL_EDGESET_EDGEARRAY_PTR               DGL_EDGESET_EDGEARRAY_PTR_v2
00150 #define DGL_EDGESET_EDGECOUNT                   DGL_EDGESET_EDGECOUNT_v2
00151 #define DGL_EDGESET_EDGE_PTR                            DGL_EDGESET_EDGE_PTR_v2
00152 #define DGL_EDGESET_ALLOC                               DGL_EDGESET_ALLOC_v2
00153 #define DGL_EDGESET_REALLOC                             DGL_EDGESET_REALLOC_v2
00154 #define DGL_EDGESET_SIZEOF                              DGL_EDGESET_SIZEOF_v2
00155 #define DGL_EDGESET_WSIZE                               DGL_EDGESET_WSIZE_v2
00156 
00157 /* Misc
00158  */
00159 #define DGL_NODEBUFFER_SHIFT                            DGL_NODEBUFFER_SHIFT_v2
00160 #define DGL_NODEBUFFER_OFFSET                           DGL_NODEBUFFER_OFFSET_v2
00161 #define DGL_EDGEBUFFER_SHIFT                            DGL_EDGEBUFFER_SHIFT_v2
00162 #define DGL_EDGEBUFFER_OFFSET                           DGL_EDGEBUFFER_OFFSET_v2
00163 
00164 #define DGL_FOREACH_NODE                                        DGL_FOREACH_NODE_v2
00165 #define DGL_FOREACH_EDGE                                        DGL_FOREACH_EDGE_v2
00166 
00167 
00168 /*
00169  * Tree-node portability
00170  */
00171 #define DGL_T_NODEITEM_TYPE                                     dglTreeNode2_s
00172 #define DGL_T_NODEITEM_NodePTR(p)                               ((p)->pv)
00173 #define DGL_T_NODEITEM_Set_NodePTR(p,ptr)               ((p)->pv=(ptr))
00174 #define DGL_T_NODEITEM_OutEdgesetPTR(p)         ((p)->pv2)
00175 #define DGL_T_NODEITEM_Set_OutEdgesetPTR(p,ptr) ((p)->pv2=(ptr))
00176 #define DGL_T_NODEITEM_InEdgesetPTR(p)          ((p)->pv3)
00177 #define DGL_T_NODEITEM_Set_InEdgesetPTR(p,ptr) ((p)->pv3=(ptr))
00178 #define DGL_T_NODEITEM_Compare                          dglTreeNode2Compare
00179 #define DGL_T_NODEITEM_Cancel                                   dglTreeNode2Cancel
00180 #define DGL_T_NODEITEM_Add                                      dglTreeNode2Add
00181 #define DGL_T_NODEITEM_Alloc                                    dglTreeNode2Alloc
00182 
00183 
00184 
00185 #endif

Generated on Sun Apr 6 17:32:44 2008 for GRASS by  doxygen 1.5.5