proj home

Files   Classes   Functions   Hierarchy  

processqueuebuild.h

Go to the documentation of this file.
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

Generated on Fri Mar 4 00:49:28 2011 for Chelton Evans Source by  doxygen 1.5.8