00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00014 #ifndef JOBCLEANER_H
00015 #ifndef VECTOR
00016 # include <vector>
00017 # define VECTOR
00018 #endif
00019 class JobC;
00020
00021 class JobCleaner
00022 {
00023 public:
00024 ~JobCleaner();
00025
00026 void Add(JobC* j);
00027 void Remove(JobC* j);
00028 void Reap();
00029
00030 static JobCleaner& Instance();
00031
00032 struct Cleaner {
00033 void ClassIsUsed() { };
00034 ~Cleaner() {
00035 if (JobCleaner::fInstance) {
00036 delete JobCleaner::fInstance;
00037 JobCleaner::fInstance = 0;
00038 }
00039 }
00040 };
00041 friend struct Cleaner;
00042
00043 private:
00044 JobCleaner();
00045
00046 static JobCleaner* fInstance;
00047 std::vector<JobC*> fJobCList;
00048 };
00049 #endif // JOBCLEANER_H
00050