title
Graph Drawing Toolkit

An object-oriented C++ library for handling and drawing graphs

gdtnode_pq.h

Go to the documentation of this file.
00001 
00003 #ifndef __gdtnode_pq__
00004 #define __gdtnode_pq__
00005 
00006 #include "gdtp_queue.h"
00007 #include "gdtmap.h"
00008 
00009 namespace gdt {
00010 
00011 template <class P>
00012 class gdtnode_pq : public gdtp_queue<P,gdtnode>  {
00013 
00014         const undi_graph* g;    
00015         typedef gdtp_queue<P,gdtnode> base;
00016         gdtmap<gdtnode, pq_item> item;
00017 
00018 public:
00019  
00020         gdtnode_pq(const undi_graph& _g) : g(&_g), item(NULL) {}
00021         
00022         ~gdtnode_pq() { }
00023 
00024         void insert(gdtnode v, const P& p) {
00025                 pq_item it = base::insert(p,v); 
00026                 item[v] = it;
00027         }       
00028 
00029         const P& prio(gdtnode v) const  { return base::prio(v); }       
00030 
00031         bool member(gdtnode v) const { return (item[v] != NULL); }
00032 
00033         void decrease_p(gdtnode v, const P& p)  { base::decrease_p(p,v); }
00034         
00035         gdtnode find_min() const { return base::inf(base::find_min()); }
00036         
00037         void del(gdtnode v) { 
00038                 base::del_item(item[v]); 
00039                 item.undefine(v);
00040         }       
00041 
00042         gdtnode del_min()   
00043         { 
00044                 gdtnode v = find_min(); 
00045                 if (v) { base::del_min(); }
00046                 return v;
00047         }
00048 
00049         void get_nodes(gdtlist<gdtnode>& l) 
00050         { 
00051                 l.clear();
00052                 gdtnode v;
00053                 gdt::list_item it;
00054                 forall_items(it,*this) {
00055                         l.append(base::inf(it));
00056                 }
00057         }
00058 
00059         void clear() { 
00060                 base::clear();
00061                 item.clear();
00062         }                       
00063 
00064         const P& inf(gdtnode v) const {
00065                 return base::prio(item[v]);             
00066         }       
00067 
00068         void decrease_inf(gdtnode v, const P& x) { base::decrease_p(item[v], x); }
00069 };
00070 }
00071 
00072 #endif

Generated on Thu Jan 10 14:48:01 2008 for GDToolkit GAPI by  doxygen 1.5.3