src/smp/planner_utils/vertex_edge.h

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