Files Classes Functions Hierarchy
00001 #ifndef PROCESSQUEUEBUILD_H 00002 #define PROCESSQUEUEBUILD_H 00003 00004 #include <makestate.h> 00005 00006 00011 template <typename CFC> 00012 class processqueuebuild 00013 { 00014 public: 00015 00017 makestate<CFC>& ms; 00018 00020 processqueuebuild( makestate<CFC>& ms_ ); 00021 00023 boolc add( stringc & filename ); 00024 00026 boolc operator ! () const; 00028 void operator ++ (); 00029 00030 }; 00031 00032 //--------------------------------------------------------- 00033 // Implementation 00034 00035 template <typename CFC> 00036 processqueuebuild<CFC>::processqueuebuild( makestate<CFC>& ms_ ) 00037 : ms(ms_) 00038 { 00039 ms.standardbuild(); 00040 00041 ms.proj.construct(ms.driver); 00042 00043 ms.evaldriver(); 00044 } 00045 00046 00047 template <typename CFC> 00048 boolc processqueuebuild<CFC>::add( stringc & filename ) 00049 { 00050 compilationfile* x = ms.proj.files[filename]; 00051 if (!x) 00052 return false; 00053 00054 ms.processqueueadd(x); 00055 return true; 00056 } 00057 00058 template <typename CFC> 00059 boolc processqueuebuild<CFC>::operator ! () const 00060 { 00061 return ! ms.processqueue.empty(); 00062 } 00063 00064 template <typename CFC> 00065 void processqueuebuild<CFC>::operator ++ () 00066 { 00067 assert( !ms.processqueue.empty() ); 00068 00069 compilationfile* x = ms.processqueue.front(); 00070 assert(x); 00071 00072 ms.processqueue.pop_front(); 00073 bool res = ms.processqueue2.remove(x->filename); 00074 assert(res); 00075 if (!res) 00076 return; 00077 00078 ms.processed.add(x); 00079 ms.eval(*x); 00080 } 00081 00082 00083 00084 #endif
1.5.8