Go to the documentation of this file.00001
00009 #ifndef _SMP_VERTEX_EDGE_H_
00010 #define _SMP_VERTEX_EDGE_H_
00011
00012 #include <smp/planner_utils/trajectory.h>
00013
00014 #include <list>
00015 using namespace std;
00016
00018
00026 #define _SMP_FAST_VERTEX_DELETE 1
00027
00028
00029 namespace smp {
00030
00031
00032 template< class typeparams > class vertex;
00033 template< class typeparams > class edge;
00034
00036
00045 template< class typeparams >
00046 class vertex {
00047
00048 typedef typename typeparams::state state_t;
00049 typedef typename typeparams::input input_t;
00050 typedef typename typeparams::vertex_data vertex_data_t;
00051 typedef typename typeparams::edge_data edge_data_t;
00052
00053 typedef edge<typeparams> edge_t;
00054 typedef vertex<typeparams> vertex_t;
00055
00056 public:
00057
00059
00063 vertex_data_t data;
00064
00066
00070 state_t *state;
00071
00073
00076 list<edge_t*> incoming_edges;
00077
00079
00082 list<edge_t*> outgoing_edges;
00083
00084 #if _SMP_FAST_VERTEX_DELETE
00085
00087
00092 typename list<vertex_t*>::iterator it_vertex_list;
00093 #endif
00094
00095 vertex ();
00096 ~vertex ();
00097 };
00098
00099
00101
00104 template< class typeparams >
00105 class edge {
00106
00107 typedef typename typeparams::state state_t;
00108 typedef typename typeparams::input input_t;
00109 typedef typename typeparams::vertex_data vertex_data_t;
00110 typedef typename typeparams::edge_data edge_data_t;
00111
00112 typedef trajectory<typeparams> trajectory_t;
00113
00114 typedef vertex<typeparams> vertex_t;
00115
00116
00117 public:
00118
00120
00124 edge_data_t data;
00125
00127
00131 trajectory_t *trajectory_edge;
00132
00134
00137 vertex_t *vertex_src;
00138
00140
00143 vertex_t *vertex_dst;
00144
00145 edge ();
00146 ~edge ();
00147 };
00148
00149
00150 }
00151
00152
00153 #endif