00001 00016 // =================================================================== 00017 // Avoid multiple inclusion. 00018 #if !defined (_PAGE_REDUCED_READER_HH) 00019 #define _PAGE_REDUCED_READER_HH 00020 // =================================================================== 00021 00022 00023 00024 // =================================================================== 00025 // INCLUDES 00026 00027 #include <stdio.h> 00028 #include <stack.h> // For priority_queue, oddly enough. 00029 #include "Per_Task_Page_Reduced_Reader.hh" 00030 #include "Reference_Reader.hh" 00031 // =================================================================== 00032 00033 00034 00035 // =================================================================== 00036 // TYPES 00037 00040 typedef pair<task_ID_t, 00041 Per_Task_Page_Reduced_Reader*> task_reader_pair_t; 00042 00053 struct task_reader_greater_s { 00054 bool operator() (const task_reader_pair_t* const x, 00055 const task_reader_pair_t* const y) { 00056 return (x->second->next_cycle_timestamp() > 00057 y->second->next_cycle_timestamp()); 00058 } 00059 }; 00060 00063 typedef priority_queue<task_reader_pair_t*, 00064 vector<task_reader_pair_t*>, 00065 task_reader_greater_s> task_reader_pair_queue_t; 00066 // =================================================================== 00067 00068 00069 00070 // =================================================================== 00071 // CLASS DEFINITION 00072 00081 class Page_Reduced_Reader : public Reference_Reader { 00082 00083 public: // CONSTRUCTOR & DESTRUCTOR 00084 00096 Page_Reduced_Reader 00097 (const char* const reference_trace_directory_pathname); 00098 00105 virtual ~Page_Reduced_Reader (); 00106 00107 public: // VIRTUAL METHODS 00108 00121 virtual void read (reference_record_s* const reference_record); 00122 00123 protected: // DATA 00124 00134 task_reader_pair_queue_t task_reader_pair_queue; 00135 00136 }; // class Reference_Reader 00137 // =================================================================== 00138 00139 00140 00141 // =================================================================== 00142 #endif // _PAGE_REDUCED_READER_HH 00143 // ===================================================================