Main Page | Class Hierarchy | Alphabetical List | Data Structures | File List | Data Fields | Globals

prioritylist.h

Go to the documentation of this file.
00001 #ifndef _PRIORITYLIST_H_
00002 #define _PRIORITYLIST_H_
00003 
00004 #include <map>
00005 
00006 #ifndef DOXYSKIP
00007 using namespace std;
00008 #endif
00009 
00011 template <class Rule>
00012 class PriorityPair : public pair<int,Rule*> {
00013  public:
00015   PriorityPair(int prioriry, Rule *rule) : pair<int,Rule*>(prioriry,rule) {};
00017   PriorityPair(Constant *prioriry, Rule *rule) : pair<int,Rule*>(prioriry->toInt(),rule) {
00018     delete prioriry;
00019   };
00020 };
00021 
00023 template <class Rule>
00024 class PriorityList : public multimap<int,Rule*>{
00025  public:
00026 
00028   ~PriorityList(){
00029     typename multimap<int,Rule*>::iterator rulesIt = begin();
00030     typename multimap<int,Rule*>::iterator rulesEnd = end();
00031     while (rulesIt!=rulesEnd){
00032       delete rulesIt->second;
00033       rulesIt++;
00034     };    
00035   };
00036 
00038   typename multimap<int,Rule*>::iterator insert(PriorityPair<Rule> *pair) {
00039     typename multimap<int,Rule*>::iterator it = multimap<int,Rule*>::insert(*pair);
00040     delete pair;
00041     return it;
00042   };
00043 
00045   typename multimap<int,Rule*>::iterator insert(const PriorityPair<Rule> &pair) {
00046     return multimap<int,Rule*>::insert(pair);
00047   };
00048 
00050   PriorityList* append(const PriorityList &toAppend){
00051     typename multimap<int,Rule*>::const_iterator it = toAppend.begin();
00052     typename multimap<int,Rule*>::const_iterator eit = toAppend.end();
00053     while (it!=eit){
00054       multimap<int,Rule*>::insert(*it);
00055       it++;
00056     };
00057     return this;
00058   };
00060   PriorityList* append(PriorityList *toAppend){
00061     append(*toAppend);
00062     toAppend->clear();
00063     delete toAppend;
00064     return this;
00065   };
00066 };
00067 
00068 #endif

Generated on Fri Nov 21 17:54:03 2003 for PHPX by doxygen 1.3.3