ProcessingKernel.hxx

Go to the documentation of this file.
00001 /*
00002  * Copyright (c) 2004 MUSIC TECHNOLOGY GROUP (MTG)
00003  *                         UNIVERSITAT POMPEU FABRA
00004  *
00005  *
00006  * This program is free software; you can redistribute it and/or modify
00007  * it under the terms of the GNU General Public License as published by
00008  * the Free Software Foundation; either version 2 of the License, or
00009  * (at your option) any later version.
00010  *
00011  * This program is distributed in the hope that it will be useful,
00012  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00013  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00014  * GNU General Public License for more details.
00015  *
00016  * You should have received a copy of the GNU General Public License
00017  * along with this program; if not, write to the Free Software
00018  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00019  *
00020  */
00021 
00022 #ifndef __PROCESSINGKERNEL__
00023 #define __PROCESSINGKERNEL__
00024 
00025 namespace CLAM
00026 {
00027 
00028 class Thread;
00029 
00030 class ProcessingKernel
00031 {
00032 
00033 public:
00034         ProcessingKernel();
00035 
00036         virtual ~ProcessingKernel() {}
00037 
00038 
00039         //MRJ: For some reason with Visual Studio 6.0 ( cl version 12.00.8168 )
00040         //     is not able to resolve the correct pointer for a derived class
00041         //     when accessing to a BaseClass::PureVirtualMethod implemented in
00042         //     the derived. Possible culprits:
00043         //          + Most surely, since the functor constructor is a virtual one
00044         //            through a tricky template function, *IS* possible that during
00045         //            some compile-time conversion, the compiler discards qualifiers
00046         //            over the reference to the derived class, thus producing a 
00047         //            "real pointer" (vcall) which seems to be some kind of compiler
00048         //            generated member pointer to identify pure virtual calls. Strange,
00049         //            huh?  Nonethless, this works right for patched Micro$oft compilers and
00050         //            gcc...
00051 
00052         virtual void ProcessingCleanup(){};
00053 
00054         virtual void ProcessingLoop(){};
00055 
00056         void AttachToThread( Thread& att_thread );
00057 
00058 protected:
00059 
00060         bool LoopCondition();
00061 
00062         virtual bool UserCondition();
00063 
00064         void Cancel();
00065 
00066 private:
00067         bool  mShouldRun;
00068 
00069 };
00070 
00071 }
00072 
00073 #endif // ProcessingKernel.hxx
00074 
Generated by  doxygen 1.6.3